TWI781588B - 包含用於控制流向終止的模式特定結束分支之設備、系統及方法 - Google Patents
包含用於控制流向終止的模式特定結束分支之設備、系統及方法 Download PDFInfo
- Publication number
- TWI781588B TWI781588B TW110113557A TW110113557A TWI781588B TW I781588 B TWI781588 B TW I781588B TW 110113557 A TW110113557 A TW 110113557A TW 110113557 A TW110113557 A TW 110113557A TW I781588 B TWI781588 B TW I781588B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- execution
- ctt
- mode
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 63
- 230000015654 memory Effects 0.000 claims description 112
- 230000004044 response Effects 0.000 claims description 20
- 230000001629 suppression Effects 0.000 claims description 10
- 239000000700 radioactive tracer Substances 0.000 claims description 5
- 238000012546 transfer Methods 0.000 abstract description 113
- 238000012545 processing Methods 0.000 abstract description 77
- 230000007704 transition Effects 0.000 abstract description 9
- 238000007667 floating Methods 0.000 description 32
- 238000003860 storage Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 24
- 239000000872 buffer Substances 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 230000005291 magnetic effect Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 101710092886 Integrator complex subunit 3 Proteins 0.000 description 5
- 102100025254 Neurogenic locus notch homolog protein 4 Human genes 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000009849 deactivation Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008676 import Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000003826 tablet Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 241000761456 Nops Species 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 108010020615 nociceptin receptor Proteins 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Telephone Function (AREA)
- Retry When Errors Occur (AREA)
- Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
Abstract
一種處理器包括執行單元;及處理邏輯,操作地耦接至執行單元,處理邏輯用以:輸入第一執行狀態;及回應於執行控制轉移指令而轉換至第二執行狀態。回應於執行控制轉移指令之目標指令,處理邏輯回應於目標指令而進一步轉換至第一執行狀態,目標指令為控制轉移指令之執行後,與處理邏輯之模式相同模式之控制轉移終止指令;以及回應於目標指令而引發執行異常,目標指令為控制轉移指令之執行後,與處理邏輯之模式不同模式之控制轉移終止指令。
Description
本發明係關於一種用於控制流向終止的模式特定結束分支。
返回導向編程(ROP)為電腦安全開發技術,其中攻擊者使用軟體控制攻擊而執行機器指令之攻擊者挑選序列。該些指令叢集典型地基於現有程式碼內之程式設計師希望或不希望返回(RET)指令而終止。希望或不希望RET指令將執行轉移至堆疊上之攻擊者挑選返回位址,並允許攻擊者經由程式碼保持執行控制,並將執行指向指令之下一挑選序列集,而達成攻擊者意圖。攻擊者挑選指令序列之叢集稱為小程式。
通常,執行之小程式僅包括若干組合語言指令,其後為RET指令,其已可實施良好定義之攻擊作業。藉由一起改變該些小程式組,使得來自小程式之RET指令達到下一小程式等,惡意軟體作者可執行複雜演算法而未將任何碼注入程式。於RET中終止之若干該些指令
可於編譯於程式或程式庫中之函數中發現。
因而,ROP技術包含使用類似堆疊緩衝器溢流之弱點,傳遞具有一組指標之鏈式序列的酬載至小程式,及傳遞參數至程式之資料記憶體。開發亦覆寫脆弱函數之返回位址,其係用以實施堆疊緩衝器溢流而指向序列中之第一小程式。當脆弱函數執行RET指令時,控制便轉移至第一小程式而非函數呼叫程式。小程式接著可消耗來自堆疊酬載之一或更多資料元件。使用此開發類型,惡意軟體作者可藉由致使控制轉移至程式中非程式設計師希望之位置(例如至指令中間),而改變程式之控制流向。
ROP攻擊技術可使用x86指令集架構(ISA)之各式特性:可變長度及未對齊指令編碼;大及密之ISA編碼;堆疊保持控制及資料資訊;以及單一位元組運算元RET指令。目前抵抗該等攻擊之技術無效並具有各式缺點。
100:部分
108:編譯器
110、940:解碼單元
115、806、845:CTT邏輯
116:CTT狀態機器
120、820、962:執行單元
130、840、954:止用單元
135:CTT異常邏輯
138:回饋路徑
140:缺失處理程序
200:狀態機器
210:閒置狀態
220:WAIT__FOR_ENDBRANCH狀態
230:DELIVER_EXECUTION_EXCEPTION作業
240:WAIT_FOR_ENDRET狀態
300、310、400、500、550:方法
301、302、304、306、308、312、315、320、330、335、340、345、350、360、410、420、430、435、440、450、460、510、515、520、525、530、535、540、555、560、570、575、580、585、590:方塊
600:組態暫存器
605:致能欄位
610:舊有致能欄位
615:抑制欄位
620:追蹤欄位
625:保留欄位
750:碼段
760:第一CTT呼叫堆疊框
762:第二CTT呼叫堆疊框
765:第一舊有呼叫堆疊框
766:第二舊有呼叫堆疊框
770:CTT致能應用影像
775:第一CTT致能程式庫
780:堆積/堆疊
785:舊有程式庫
790:第二CTT致能程式庫
800、900、1174a、1174b、1184a、1184b:處理器核心
801:提取單元
803:指令快取記憶體
805、1028:指令解碼器
809:整合電壓調節器
810、930:前端單元
815:亂序(OOO)引擎
822:算術邏輯單元(ALU)
830:暫存器檔案
835:延伸暫存器檔案
850:快取記憶體
902:提取級
904:長度解碼級
906:解碼級
908:配置級
910:更名級
912:排程級
914:暫存器讀取/記憶體讀取級
916:執行級
918:寫回/記憶體寫入級
922:異常處置級
924:提交級
932:分支預測單元
934:指令快取記憶體單元
936:指令翻譯後備緩衝器(TLB)
938:指令提取單元
950:執行引擎單元
952:更名/配置器單元
956:排程器單元
958:實體暫存器檔案單元
960:執行叢集
964:記憶體存取單元
970:記憶體單元
972:資料TLB單元
974:資料快取記憶體單元(DCU)
976、1410:2級(L2)快取記憶體單元
980:資料預提取器
990:處理器管線
1000、1270、1280:處理器
1001:循序前端
1002:快速排程器
1003:亂序執行引擎
1004:緩慢/一般浮點排程器
1006:簡單浮點排程器
1008:整數暫存器檔案
1010:浮點暫存器檔案
1011:執行方塊
1012、1014:位址產生單元(AGU)
1016、1018:快速ALU
1020:緩慢ALU
1022:浮點ALU
1024:浮點移動單元
1026:指令預取器
1030:追蹤快取記憶體
1032:微碼ROM
1034:微運算佇列
1100:多處理器系統
1114、1214:I/O裝置
1116:第一匯流排
1118:匯流排橋接器
1120:第二匯流排
1122:鍵盤及/或滑鼠
1124:音頻I/O
1127:通訊裝置
1128:儲存單元
1130:指令/碼及資料
1132、1134、1232、1234:記憶體
1138:高性能圖形電路
1139:高性能圖形介面
1150、1152、1154:點對點(P-P)介面
1170:第一處理器
1172、1182:整合記憶體控制器單元(IMC)
1176、1178、1186、1188、1194、1198、1276、1278、1286、1288、1294、1298:點對點介面電路
1180:第二處理器
1190、1290:晶片組
1192、1196、1296:介面
1200:第三系統
1215:舊有I/O裝置
1272、1282:I/O控制邏輯
1300、1400:系統晶片
1302:互連單元
1302A-N、1406、1407:核心
1304A-N:快取記憶體單元
1306:共用快取記憶體單元
1308:整合圖形邏輯
1310:系統代理器單元
1314:整合記憶體控制器單元
1316:匯流排控制器單元
1317:應用處理器
1320:媒體處理器
1324:圖像處理器
1326:音頻處理器
1328:視訊處理器
1330:靜態隨機存取記憶體(SRAM)單元
1332:直接記憶體存取(DMA)單元
1340:顯示單元
1408:快取記憶體控制
1409:匯流排介面單元
1411:互連
1415:圖形處理單元
1420:視訊編解碼器
1425:視訊介面
1430:用戶身份模組(SIM)
1437:啟動ROM
1440:SDRAM控制器
1445:快閃記憶體控制器
1450:周邊控制
1455:電力控制
1460:動態隨機存取記憶體
1465:快閃記憶體
1470:藍牙模組
1475:3G數據機
1480:全球定位系統
1485:Wi-Fi
1500:運算系統
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位元)多位元組運算碼,可執行為無作業。因此,CTT指令以對程式影響最小之性能及能量實施此強制。因而,CTT ISA延伸可減輕程式中意外小程式之執行。
間接呼叫或跳躍係指間接運算元。在一類型間接呼叫或跳躍中,間接運算元可為間接目的地位址,其提
供將實施呼叫或跳躍之指令位址。在另一類型間接呼叫或跳躍中,間接運算元可為處理器暫存器,其提供將實施呼叫或跳躍之指令位址。在若干狀況下,當編譯器產生間接跳躍及呼叫(並由此返回),及已具有經產生而確保間接呼叫或跳躍(或返回)之目標限制為編譯時已知之目標之小子集之碼時,編譯器不需於控制轉移終止點附加(或發出)CTT指令。例如,對查找或切換狀態表示而言,編譯器知道可能目標之數量,並運算可能目標之碼的位址。當間接跳躍或呼叫係間接運算元為暫存器之類型時,未於控制轉移終止點發出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位元模式解碼時,此位元組串解碼為下列指令序列:
然而,當以64位元模式解碼時,此相同位元組串解碼為下列指令序列:
因而,若以上位元組串為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指令可由4位元組運算碼代表,其相應於未存在於目前x86 ISA中之運算碼值。除此運算碼,可無該指令之其餘編碼,因為該指令執行為執行邏輯內之無作業。同樣地,無來源運算元、目的地運算
元或與指令結合之中間值的識別。
圖1依據本揭露之實施例,為處理器之部分100之方塊圖。如圖1中所示,處理器之部分100包括管線之處理器的各式部分,諸如循序或亂序處理器。編譯器108可將指令編譯為機器可讀取碼,文中亦稱為特定ISA之一或更多程式之巨集指令。如同所示,來自編譯器108之指令提供至解碼單元110,其將指令解碼為例如一或更多較小指令,諸如微運算(μop)。
依據本揭露之實施例,解碼單元110可包括CTT邏輯115(文中亦簡稱為處理邏輯)。CTT邏輯115可分析匯入指令,並判定任何特定指令是否與控制轉移相關聯。若然,CTT邏輯115可判定控制轉移指令是否包括特定子碼(諸如預定義前綴或後綴運算碼),指出無小程式創建威脅。CTT邏輯可結合某狀態資訊,具一或更多微運算。此狀態資訊表示狀態機器116(由CTT邏輯115實施)之狀態,其係藉由至少某些控制轉移及控制轉移終止指令之解碼而修改。若指令未與控制轉移相關聯,則不同狀態可與一或更多微運算結合。
當匯入控制轉移指令缺少子碼時,CTT邏輯115可將狀態機器116從閒置狀態轉換至特定等候狀態。此外,為反映此等候狀態,特定編碼可與從匯入控制轉移指令解碼之一或更多微運算結合。當下一匯入指令為緊接控制轉移指令之控制轉移終止(CTT)指令時,狀態機器116可返回至閒置狀態,並結合特定編碼與解碼之一或更
多微運算。如將討論的,當控制轉移指令未緊接適當模式之CTT指令時,CTT邏輯115可引發執行異常或將缺失微運算插入處理器管線(且狀態機器可保留在等候狀態)。
當匯入控制轉移指令包含子碼時,CTT邏輯115可將狀態機器116置放或保持於閒置狀態。此外,因缺少ENDBRANCH指令(因為子碼),將無CTT指令追蹤。此外,當狀態機器116處於閒置狀態且匯入指令未與控制轉移(或終止)相關時,閒置狀態資訊之編碼可與一或更多微運算相關聯,而指出狀態機器116保持處於閒置狀態。
因此,解碼單元110輸出微運算串流及結合之狀態資訊,以指出CTT邏輯115內狀態機器116之狀態。該些微運算及狀態資訊可提供至執行單元120,其可包括各類型單元包括算術邏輯單元(ALU)、浮點單元等,其執行由微運算串流指出之操作。在實施例中,CTT指令可僅控制狀態機器200中之狀態轉換,且在處理器之執行邏輯中,該些指令執行NOP,且未致使程式語意改變。
其次,執行微運算之結果提供至止用單元130,經組配而判定特定作業是否順利實施,並於順利實施時止用微運算。若微運算未順利實施,止用單元130可引發失敗或異常,發生不欲狀況做為執行結果。在亂序處理器中,止用單元130可進一步操作而重排序指令,其可
以任何順序執行,回復程式順序。當微運算適當止用時,微運算可提供至處理器之進一步部分,諸如記憶體子系統。
進一步參照圖1,止用單元130包括CTT異常邏輯135,其可經組配以判定相對於控制轉移指令是否發生適當行為。更具體地,如文中所描述,當止用從控制轉移指令解碼之特定微運算未緊接適當CTT微運算時,CTT異常邏輯135可操作而引發執行異常。在實施例中,此判定可至少部分依據插入之缺失微運算及與從解碼單元110離開之微運算通訊之狀態資訊。若檢測到CTT缺失微運算,便引發執行異常,並傳遞至缺失處理程序140,其可依據特定處理程序採去各式動作,以解決缺失行為。因而,在實施例中,當下一微運算於控制轉移微運算並非適當CTT微運算之後呈現而止用時,止用單元130可回應於此CTT缺失微運算而傳遞缺失級執行異常(例如一般保護缺失),使得微運算不止用。
仍參照圖1,若發生錯誤預測,且微運算依據正確分支而重新執行,止用單元130可經由回饋路徑138與解碼單元110通訊,因而提供將採取之適當分支或其他碼流向的指示。此外,狀態機器回復信號可經由回饋路徑138傳遞,使得CTT邏輯115之狀態機器116可置入適當狀態,而反映程式流向中之改變。換言之,當缺失微運算呈現於錯誤預測路徑中時,因此錯誤預測而未引發執行異常,因此,狀態機器回復信號可致使狀態機器116從等候
狀態回至閒置狀態(或保留在等候狀態),亦指出最後成功指令止用,使得解碼單元110可解碼正確分支之指令。
圖2依據本揭露之實施例,為狀態機器200之方塊圖。狀態機器200可相應於圖1之CTT狀態機器116,或處理器之部分100的其他處理邏輯。狀態機器200於閒置狀態210展開作業,期間狀態機器係於處理器重置後,由CTT邏輯115置放。
當若干其他指令或間接呼叫或JMP指令解碼時,其包括某子碼(諸如3EH或其他運算碼),狀態機器可保持在閒置狀態210。子碼可包括於前綴、後綴或呼叫或JMP指令內某處(例如在標頭),其發信號至解碼單元110通知,狀態機器200未追蹤呼叫或JMP指令,且未攜帶增加小程式產生之風險。以下表1為子碼以此方式運作之範例,使得不追蹤呼叫或JMP指令。
在本範例中,在表1頂部之C碼係由編譯器108翻譯為序列,以下顯示為C程式。此處,在位址400a8f之碼為從編譯器發出之非追蹤(子碼)跳躍。此處,編譯器108可安全地發出非追蹤間接跳躍,因為編譯器已清理位址400a82及400a85之跳躍位置,以確保跳躍目標位於界限內,且用於跳躍目標之偏移已知在編譯時間。以此方式,在CALL或JMP指令後,編譯器108可避免在例如位址400aaa及400ab6之目標發出ENDBRANCH64(endbr64)指令。
當缺少子碼之間接CALL或JMP指令解碼(或任一遠CALL或JMP或CALL或存取記憶體之JMP解碼)時,狀態機器輸入WAIT_FOR_ENDBRANCH狀態220。當解碼之下一指令並非適當作業模式之ENDBRANCH指令時(例如32位元或相容性模式之ENDBRANCH32及64位元模式之ENDBRANCH64),則
狀態機器200實施DELIVER_EXECUTION_EXCEPTION作業230,其亦可致使產生缺失微運算(且狀態機器200可保留在WAIT_FOR_ENDBRANCH狀態220)。相反地,當控制轉移指令後將解碼之下一指令為適當模式之ENDBRANCH指令時,狀態機器200轉換回至閒置狀態210。
顯示為WAIT_FOR_ENDBRANCH狀態220內之迴旋之INT3為一指令,用以調用狀態機器200之除錯器。當在間接CALL或JMP之目標遭遇INT3指令時,狀態機器保持在WAIT_FOR_ENDBRANCH狀態220。此支援除錯器產生中斷點。除錯器在程式中建立中斷點之方式為在除錯器希望結束INT3指令處之位址取代碼位元組。此提供針對除錯器之控制。除錯器接著可檢查程式狀態,接著返回由INT3取代之原始碼位元組,並於該位址重新展開程式執行。當除錯器重新展開程式時,藉由保持程式之狀態為WAIT_FOR_ENDBRANCH,硬體驗證除錯器是否置回ENDBRANCH之碼位元組(最初以INT3取代)。
當RET指令解碼時,狀態機器200可判定RET指令是否包括表示RET指令之目標為有效及安全之子碼。請注意,在若干指令架構中,若RET指令未存取記憶體來判定目標位址(例如無小程式產生之威脅),則不一定要檢查子碼。當RET指令包括子碼時,狀態機器200可保留在閒置狀態。否則,當RET指令缺少子碼時,狀態機器可輸入WAIT_FOR_ENDRET狀態240。
當解碼之下一指令並非適當模式之ENDRET指令時(例如32位元或相容性模式之ENDRET32及64位元模式之ENDRET64),狀態機器200實施DELIVER_EXECUTION_EXCEPTION作業230。當解碼之下一指令為適當模式之ENDRET指令時,狀態機器200轉換回至閒置狀態210。
狀態機器200因而強制下列規則:在RET指令之目標的指令必須為適當模式之ENDRET指令,且在間接CALL或間接JMP指令之目標的指令必須為適當模式之ENDBRANCH指令。當違反規則時,違反指令(在RET或CALL/JMP指令之目標的指令)失效,且避免由止用單元130止用。
因而,藉由將ENDBRANCH32或ENDBRANCH64及ENDRET32或ENDRET64置於程式中有效控制轉移位置,程式設計師或編譯器可避免發生意外的控制轉移。此ENDBRANCH及ENDRET指令之配置如以下表2中描繪,做為範例:
在本範例中,在表2頂部的C碼由編譯器翻譯為C程式以下所示指令序列。編譯器108將ENDBRANCH64指令置放為次常式foo及主程式中之第一指令,且ENDRET64指令係置於CALL指令後至次常式foo。因而,在程式中現在有3個有效控制轉移點。具體地,在主程式之執行中,執行呼叫指令(call *%rdx),致使控制轉移次常式foo,程式中之第一指令為ENDBRANCH64指令,使得發生有效控制轉移,且CTT
狀態機器因而從閒置狀態前進至WAIT_FOR_ENDBRANCH狀態,並回復至閒置狀態,未引發故障。
類似地,在次常式foo之結尾,執行返回指令(RETQ),因而致使控制轉移至主程式中呼叫指令後之第一指令。此處,指令為ENDRET64指令,同樣地發生有效控制轉移。在此狀況下,CTT狀態機器從閒置狀態前進至WAIT_FOR_ENDRET狀態,之後回復至閒置狀態,未引發故障。
因而,依據本揭露之實施例,使用CTT處理邏輯,導入限制可使用ENDRET32(或ENDRET64)前之ROP小程式,有效地排除指令序列用做ROP小程式之可能性。同樣地,實現顯著減少可從程式庫收穫之小程式的數量,且在剩餘小程式暴露之功能性方面,該等小程式之品質顯著下降,而更難執行ROP攻擊。
圖3A為方法300之流程圖,其中編譯器判定是否添加預定義子碼至高階程式語言之控制轉移指令。方法可始自執行高階程式語言編譯器之處理裝置接收關鍵字清單,用於識別將翻譯為控制轉移命令之程式語言述語,供執行非追蹤模式(301)。關鍵字可包括控制結構述語或查找表,例如其中目的地位址於編譯時是已知的。
方法300可接著判定程式語言述語是否包括來自關鍵字清單之關鍵字(302)。回應於判定程式語言述語包括來自關鍵字清單之關鍵字,方法可接著將程式語言
述語翻譯為具有預定義子碼之控制轉移指令,預定義子碼指示處理器勿追蹤控制轉移指令(304)。回應於判定程式語言述語未包括來自關鍵字清單之關鍵字,方法可接著將程式語言述語翻譯為可追蹤控制轉移指令(306),並發出結束分支指令以依循可追蹤控制轉移指令(308)。
圖3B依據本揭露之實施例,為方法310之流程圖,用於非追蹤控制轉移及模式特定控制流向終止。方法310可由編譯器及處理器實施,包括控制轉移終止(CTT)狀態機器(例如解碼單元之處理邏輯)。方法300可判定控制轉移指令是否需存取記憶體而判定間接呼叫、跳躍或返回(控制轉移)指令之目標指令的位址(312)。方法310亦可判定編譯器是否於編譯時運算控制轉移指令之目標指令(330)。當方塊312中答案為否及/或方塊330中答案為是時,編譯器可添加子碼(諸如前綴或後綴)至控制轉移指令(315)。狀態機器接著可置於或保持於閒置狀態(320),供控制轉移指令於解碼後,回應於檢測控制轉移指令中之子碼。
當方塊312中答案為是及/或方塊330中答案為否時,編譯器可如之前編譯程式指令,如指示地將CTT指令添加於控制轉移指令之後(335)。方法310接著可於解碼期間判定控制轉移指令之後是否為CTT指令(340)。若否,如圖2之步驟230,處理邏輯引發執行異常或產生缺失微運算(360)。若方塊340之答案為是,則方法接著判定CTT指令是否與控制轉移指令執行
後之處理邏輯相同模式(例如是否為32位元模式或64位元模式)(345)。當方塊345之答案為是時,處理邏輯可將狀態機器置於或保持於閒置狀態(350),相應於圖2中之狀態210。當方塊345之答案為否時,如關於圖2之步驟230所討論,處理邏輯引發執行異常或產生缺失微運算(360)。處理器接著可回應於執行異常或缺失而採取適當動作。在一實施例中,經由處理器之部分100之管線,一接收缺失微運算,止用單元130可發送執行異常至缺失處理程序140。
圖4依據本揭露之另一實施例,為另一方法400之流程圖,用於模式特定控制流向終止。方法400可由止用單元之邏輯實施,而處置基於CTT之止用作業。方法400可始自判定與等候狀態結合之控制轉移微指令(微運算)(來自CTT狀態機器)之後是否為CTT微運算(410)。當答案為否時,方法便產生缺失並將缺失發送至缺失處理程序(450)。當答案為是時,方法400可進一步判定CTT微運算是否與機器之目前模式相同(420),例如是否為32位元或64位元模式。當方塊420之答案為是時,邏輯可止用CTT微運算(430),發信號至狀態機器而將狀態移至閒置(435),並進一步實施止用作業(440)。當方塊420之答案為否時,邏輯可產生及發送執行異常至缺失處理程序(450)。邏輯亦可保持目標微運算處於作用執行,例如未止用目標微運算(其可屬於小程式),取決於解決執行異常之缺失處理程
序(460)。
圖5A依據本揭露之實施例,為控制轉移管理之方法500之流程圖。如同所示,如文中所描述,方法500可由包括控制轉移終止(CTT)狀態機器之處理器實施。請注意,圖5A中所示作業關於狀態機器作業,用於控制轉移相關指令。對其他指令而言,若狀態機器目前處於閒置狀態,則狀態機器保留處於閒置狀態。方法500可始自判定是否接收回饋信號而更新CTT狀態機器(510)。在實施例中,可從止用單元或缺失處理程序接收回饋信號,而致使狀態機器之狀態轉換至特定狀態,例如因錯誤預測(如來自止用單元)或回應於解決缺失(如來自缺失處理程序)。若接收該回饋信號,則控制傳遞至方塊515,其中狀態機器基於經由回饋信號傳遞之狀態而更新。
從該些狀況,控制接著傳遞至方塊520,其中指示已發生間接控制轉移指令,諸如呼叫、跳躍或返回(假定解碼單元已解碼該指令)。同樣地,控制傳遞至方塊525,其中可發生狀態機器轉換為等候狀態。
仍參照圖5A,方法500可進一步判定是否接收正確模式之控制轉移終止指令之指示(530)。若然,控制傳遞至方塊535,其中狀態機器進入閒置狀態,因為依據控制轉移指令後之適當CTT指令,發生有效控制轉移。
相反地,當方法500判定下一解碼之指令並非
CTT指令,或為CTT指令但不匹配機器之目前模式,控制便傳遞至方塊540,其中控制轉移終止缺失指令可插入處理器管線。此處請注意,狀態機器之狀態未改變而保留在選擇之等候狀態。在實施例中,缺失指令為微運算,行經處理器管線,若經選擇而止用,止用單元致使缺失致能基於OS之缺失處理程序執行,而判定缺失原因並採取適當動作。
圖5B依據本揭露之實施例,為控制轉移管理之其他方法550之流程圖。方法550可至少部分由止用單元之邏輯實施,而處置基於CTT之止用作業。如同所示,方法550始自止用特定微指令(微運算),並儲存與微運算結合之CTT狀態(555)。在實施例中,資訊可儲存於止用單元之特定儲存裝置中,諸如重排序緩衝器條目。如以下將進一步討論,此狀態可用於錯誤預測發生之帳況。其次,方法550判定錯誤預測是否發生。若然,控制傳遞至方塊570,其中可獲得呈現於重排序緩衝器枝條目中之關於最後有效止用為運算之資訊,並回送至(解碼單元之)CTT邏輯,而致能更新狀態機器之狀態為適當狀態。可持續進一步典型止用作業(575)。
仍參照圖5B,當接收缺失微運算時(580),控制傳遞至方塊585,其中呼叫可發布至缺失處理程序。關於範例,可執行基於OS之缺失處理程序。關於部分缺失處理程序,當缺失係因CTT缺失微運算時,可致能基於督導程式之CTT狀態機器,並用以存取使用者模式
CTT狀態機器之狀態,而判定缺失原因,並因此動作。關於範例,目標微運算(即非CTT目標微運算)可避免止用並可實施適當修正機構。或者,缺失處理程序可採取任何其他動作。因為部分該等作業,缺失處理程序可致使使用者模式CTT狀態機器設定為適當狀態。在缺失處理程序完成後,回應於缺失處理程序之控制,可恢復止用作業(590)。
基於施行有效控制轉移位置之CTT指令,軟體檢查可置於該些指令之後,以使用類似堆疊高頻噪音之技術進一步檢查有效控制轉移。堆疊高頻噪音用以檢測堆疊緩衝溢流。此可藉由於返回位址輸入函數之前將隨機數置放堆疊上,及從函數返回前檢查隨機數而予實施。CTT邏輯115於程式中提供強位置,以添加額外檢查用於檢測緩衝溢流。若無CTT邏輯,則該些檢查可略過。因此,由於需於結束分支呼叫函數且未越過結束分支而跳過檢查,CTT邏輯可確保不略過該些檢查。對以上討論之範例而言,參照表3:
在以上範例中,因而在程式中存在一地方(在ENDRET32後),其中將置放該檢查。若無CTT處理邏輯,軟體可未有效地檢查全部地方,其可用做小程式,因為該些小程式可為有效指令中間位元組序列外之工藝。
使用CTT指令之程式的執行可由編譯器實施。在實施例中,即時(JIT)編譯器或普通(cc)編譯器可實施CTT指令之儀器。另一方面,該儀器可藉由使用二進位覆寫工具覆寫程式二進位以插入CTT指令,從應用二進位重建控制流向圖,而予實施。若二進位之來源不可用於重新編譯,則可使用二進位覆寫技術。該等二進位覆寫亦可由使用該等工具之反惡意軟體實施。
在若干狀況下,以CTT儀器編譯之應用及程式庫可與未以CTT儀器編譯之程式庫合併,諸如非CTT儀表化程式庫,文中稱為「舊有程式庫」。
為支援具舊有程式庫之持續作業,實施例可提供額外指令。在一該實施例中,抑制指令(文中稱為DISCTT指令)可用以抑制CTT狀態機器,使得其停留在閒置狀態,而非分別轉換至間接CALL/JMP或RET上之WAIT_FOR_ENDBRANCH或WAIT_FOR_ENDRET狀態。此外,此指令於通用暫存器中,在指令發布時返回CTT抑制之狀態。文中稱為ENCTT指令之致能指令用以移除CTT狀態機器之抑制,其係由DISCTT指令置於定位使得狀態機器強制施行CTT規則。此外,此指令在指令發布時返回CTT抑制之狀態。
使用DISCTT及ENCTT指令可致能用於作業系統之程序。若作業系統未允許程式停用CTT,則DISCTT指令執行如NOP,且不抑制CTT。
以下表4描繪於程式中使用DISCTT及ENCTT指令,以實施舊有交互工作。
返回CTT之先前狀態做為DISCTT指令之結果,允許支援呼叫鏈如下:
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功能性之目前狀態,如SCPPRESSED,因其已被CTT_function1抑制。當控制從legacy_function2返回至CTT_function2時,並非未抑制CTT功能性,因為當其被調用時已被抑制。當控制返回至CTT_function1時,其使用ENCTT指令而未
抑制CTT功能性,因其已被該函數抑制。
回應於ENCTT指令而返回CTT之先前狀態,允許非CTT致能程式庫/應用呼叫CTT致能程式庫函數,若當函數被呼叫時即被抑制,則在其返回至呼叫者而展開執行及抑制CTT功能性之前未抑制CTT。
如以下表5中所描繪:
圖6依據本揭露之實施例,為組態暫存器之方塊圖。如圖6中所示,組態暫存器600可包括各式欄位,
儲存狀態值用於實施CTT功能性。在實施例中,可提供二該等組態暫存器,且每一暫存器與特定作業模式結合。換言之,一組態暫存器可用以控制使用者模式之CTT作業(例如環3),同時第二組態暫存器可用以控制督導程式模式之CTT功能性(例如3以下各環)。
在所示實施例中,組態暫存器600包括致能欄位605,儲存致能指標以指出CTT是否致能用於特權等級。舊有致能欄位610可用以儲存指標以指出是否致能舊有交互工作。抑制欄位615可用以儲存抑制指標以指出是否抑制CTT缺失及追蹤。追蹤欄位620可用以儲存CTT狀態機器之值。在實施例中,追蹤欄位可為3位元,其中0之值可表示閒置狀態,1之值可表示WAIT_FOR_ENDRET32狀態,2之值可表示WAIT_FOR_ENDRET64狀態,3之值可表示WAIT_FOR_ENDBRANCH32狀態,及4之值可表示WAIT_FOR_ENDBRANCH64狀態。保留欄位625可用於各式延伸。其他欄位可呈現於圖4中具體所示之其他實施例中。
現在參照圖7A,顯示用於碼執行之呼叫堆疊框之方塊圖,其交錯CTT致能碼及無CTT致能功能性之舊有碼。如圖7中所示,碼段750包括第一CTT呼叫堆疊框760及第二CTT呼叫堆疊框762,其依次呼叫舊有呼叫堆疊框765。因而,在呼叫舊有呼叫堆疊框時,回應於DISCTT指令,CTT功能性停用。因而,此時針對第一舊
有呼叫堆疊框765及第二舊有呼叫堆疊框766停用CTT功能性而展開執行。請注意,隨著呼叫之函數返回,在返回至呼叫堆疊框762時,ENCTT指令重新致能CTT功能性之執行。
同樣地,圖7A顯示範例,其中第一轉移至舊有碼抑制CTT,為安全理由其係使用間接CALL/JMP指令(非RET)實施。一旦CTT由DISCTT指令抑制,後續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致使返回至抑制點,同樣地,經由ENCTT指令而未抑制CTT。請注
意,當設定致能CTT控制邏輯之指標的舊有交互工作,及針對非ENDBRANCH指令發生間接控制轉移(即跳躍或呼叫)時,可進入舊有交互工作。
若程式設計師了解交互工作,則DISCTT及ENCTT指令可由程式設計師置於程式中,及/或當程式靜態地鏈接至舊有程式庫時,DISCTT及ENCTT指令可由編譯器/鏈接器置於程式中。
當動態鏈接至程式庫時,載入器或反惡意軟體可由應用及程式庫之間插入蹦床函數,其中蹦床函數使用DISCTT及ENCTT指令。例如,針對動態鏈接至CTT致能應用之舊有程式庫中之函數的呼叫,通過蹦床函數,其抑制CTT並接著呼叫舊有程式庫函數。舊有程式庫函數返回至蹦床函數,其未抑制CTT並返回至CTT致能應用。
實施例可供反惡意軟體使用,以包覆非CTT致能二進位。此外,反惡意軟體可限制使用小程式,與使用中CTT一樣,其可於程式中發現。實施例特定可應用於移動及其他可攜式低電力系統,其中僅軟體技術減輕ROP(類似覆寫二進位,藉由使用功能上等同,但更大、更複雜序列,而移除RET之全部狀況),一般導致更大二進位並增加程式之執行時間,藉此不適於行動應用,其主要考量電力效率。
圖8依據本揭露之一實施例,為處理器核心800之方塊圖。如圖8中所示,處理器核心800可為多級
管線亂序處理器。核心800可支援一或更多指令集(例如x86指令集(具已添加新版本之若干延伸);加州森尼維爾市MIPS科技公司之MIPS指令集;加州森尼維爾市ARM公司之ARM指令集(具諸如NEON之可選其餘延伸))。應理解的是核心800可支援多執行緒處理(執行二或更多並列作業或執行緒組),並可以各類方式進行,包括劃時多執行緒處理、同步多執行緒處理(其中單一實體核心提供每一執行緒之邏輯核心,實體核心係同步多執行緒處理)、或其組合(例如劃時提取及解碼,以及之後同步多執行緒處理,諸如Intel®超執行緒處理技術)。
包括核心800之處理器可為通用處理器,諸如CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、XscaleTM或StrongARMTM處理器,其可來自Intel公司。另一方面,處理器可來自另一公司,諸如來自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。
來自執行單元之結果可提供至止用單元840,包括重排序緩衝器(ROB)。ROB可包括各式陣列及邏輯,以接收與將執行之指令相關之資訊。此資訊接著由止用單元840檢查,以判定指令是否可有效止用且結果資料
傳遞至處理器之架構狀態,或是否發生一或更多異常而避免指令適當止用。當然,止用單元840可處置與止用結合之其他作業。此處,對止用作業而言,止用單元840之CTT邏輯845可儲存基於匯入指令接收之CTT狀態機器狀態,並回應於錯誤預測而將此資訊饋送回CTT狀態機器。
圖9A為方塊圖,描繪處理器核心900之微架構,其可併入圖1之處理器,或執行圖2之狀態機器200(或CTT處理邏輯)。具體地,依據揭露之至少一實施例,處理器核心900描繪將包括於處理器中之循序架構核心及暫存器更名邏輯、亂序發布/執行邏輯。可由處理器核心900實施之攜帶額外位元之錯誤修正碼之實施例。
處理器核心900包括耦接至執行引擎單元950之前端單元930,二者耦接至記憶體單元970。處理器核心900可包括精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。關於另一選項,處理器核心900可包括專用核心,諸如網路或通訊核心、壓縮引擎、圖形核心等。在一實施例中,處理器核心900可為多核心處理器或可為多處理器系統之一部分。
前端單元930包括分支預測單元932,耦接至指令快取記憶體單元934,其耦接至指令翻譯後備緩衝器(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®超執行緒處理技術)。
雖然在亂序執行之脈絡下描述暫存器更名,應理解的是暫存器更名可用於循序架構。雖然描繪之處理器之實施例亦包括個別指令及資料快取記憶體單元,及共用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從記憶體提取指令,並饋送至指令解碼器1028,接著進行解碼或解譯。例如,在一實施例中,解碼器解碼接收之指令為機器可執行之一或更多作業,稱為「微指令」或「微運算」。在其他實施例中,解碼器剖析指令為運算碼及相應資料及控制欄位,依據一實施例,由微架構使用而實施作業。在一實施例中,追蹤快取記憶體1030採取解碼之微運算,並組合為程式有序序列或微運算佇列1034中之跡線供執行。當追蹤快取記憶體1030經歷複雜指令時,微碼ROM(或RAM)1032可提供完成作業所需之微運算。
若干指令被轉換為單一微運算,反之,其他指令則需要若干微運算以完成完整作業。在一實施例中,若完成指令需四個微運算,解碼器1028存取微碼ROM 1032而實施指令。對一實施例而言,指令可被解碼為小量微運算供在指令解碼器1028處理。在另一實施例中,指令可儲存於微碼ROM 1032內,且完成作業需若干微運算。追
蹤快取記憶體1030係指輸入點可程控邏輯陣列(PLA),以判定正確微指令指標,用於讀取微碼序列而從微碼ROM 1032完成依據一實施例之一或更多指令。在微碼ROM 1032完成指令之定序微運算後,機器之前端1001恢復從追蹤快取記憶體1030提取微運算。
指令準備執行處為亂序執行引擎1003。亂序執行邏輯具有若干緩衝器以平順及重新排序指令流向,隨其下流管線及排程執行而優化性能。配置器邏輯配置每一微運算所需機器緩衝器及資源,以便執行。暫存器更名邏輯更名邏輯暫存器至暫存器檔案中之條目。配置器亦配置每一微運算之條目於二微運算佇列之一,一用於記憶體作業及一用於非記憶體作業,在指令排程器之前:記憶體排程器、快速排程器1002、緩慢/一般浮點排程器1004、及簡單浮點排程器1006。微運算排程器1002、1004、1006依據其相依輸入暫存器運算元來源之準備狀態及完成其作業之微運算所需執行資源之可用性,判定微運算何時備妥執行。一實施例之快速排程器1002可依每一半主時鐘週期排程,同時其他排程器僅可依每一主處理器時鐘週期排程。排程器仲裁調度埠而排程執行之微運算。
執行方塊1011中,暫存器檔案1008、1010位於排程器1002、1004、1006及執行單元1012、1014、1016、1018、1020、1022、1024之間。個別暫存器檔案1008、1010分別用於整數及浮點作業。一實施例之每一暫存器檔案1008、1010亦包括旁通網路,可將未寫入暫
存器檔案之剛完成結果旁通或運送至新相依微運算。整數暫存器檔案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、浮點移動單元1024。對一實施例而言,浮點執行方塊1022、1024執行浮點、MMX、SIMD及SSE或其他作業。一實施例之浮點ALU 1022包括64位元x 64位元浮點除法器,執行除法、平方根及餘數微運算。對本揭露之實施例而言,包含浮點值之指令可以浮點硬體處置。
在一實施例中,ALU作業前進至高速ALU執行單元1016、1018。一實施例之快速ALU 1016、1018可以一半時鐘週期之有效延遲執行快速作業。對一實施例而言,大部分複雜整數作業前進至緩慢ALU 1020,因為緩慢ALU 1020包括整數執行硬體進行長延遲類型作業,諸如乘法器、移位、旗標邏輯、及分支處理。記憶體載入/
儲存作業係由AGU 1012、1014執行。對一實施例而言,在64位元資料運算元上實施整數作業之脈絡中,描述整數ALU 1016、1018、1020。在替代實施例中,可實施ALU 1016、1018、1020以支援各類資料位元,包括16、32、128、256等。類似地,可實施浮點單元1022、1024以支援具有各式寬度位元之若干運算元。對一實施例而言,浮點單元1022、1024可於結合IMD及多媒體指令之128位元寬緊縮資料運算元上操作。
在一實施例中,微運算排程器1002、1004、1006於母載入結束執行之前調度相依作業。因為微運算於處理器1000中推測地排程及執行,處理器1000亦包括邏輯以處置記憶體誤失。若資料快取記憶體中資料載入誤失,管線中可存在相依作業,留下具暫時不正確資料之排程器。重播機構追蹤及重新執行使用不正確資料之指令。僅相依作業需重播,並允許完成獨立者。處理器之一實施例之排程器及重播機構亦經設計而捕捉文字組串比較作業之指令序列。
依據一實施例,處理器1000亦包括邏輯,以於固態記憶體裝置中實施壓縮/解壓縮優化。在一實施例中,處理器1000之執行方塊1011可包括MCU 115,以依據文中之描述於固態記憶體裝置中實施壓縮/解壓縮優化。
「暫存器」用詞可指機載處理器儲存裝置位置,其用做部分指令以識別運算元。換言之,暫存器可為
來自處理器外部(從程式設計師觀點)之可使用者。然而,實施例之暫存器不應侷限於特定類型電路。而是,實施例之暫存器可儲存及提供資料,並實施文中所描述之功能。文中所描述之暫存器可使用任何數量不同技術由處理器內之電路實施,諸如專用實體暫存器,其係使用暫存器更名、專用及動態配置之實體暫存器組合等,而動態配置之實體暫存器。在一實施例中,整數暫存器儲存32位元整數資料。一實施例之暫存器檔案亦包含緊縮資料之8多媒體SIMD暫存器。
對文中討論而言,暫存器係理解為資料暫存器,經設計而保持緊縮資料,諸如以加州聖克拉拉市Intel公司MMX技術致能之微處理器中64位元寬MMXTM暫存器(在若干狀況下亦稱為「mm」暫存器)。該些MMX暫存器可用於整數及浮點形式,可以伴隨SIMD及SSE指令之緊縮資料元件操作。類似地,關於SSE2、SSE3、SSE4、或更先進版本(一般稱為「SSE.x」)技術之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可耦接至第一匯流排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為示例系統晶片(SoC)1300,其可包括一或更多核心1302。膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(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 CoreTM之處理器、先進微裝置公司(AMD)處理器、基於MIPS之處理器、基於ARM之處理器設計,或其用戶,以及其授權或採購商。核心1406及1407耦接至快取記憶體控制1408,其與匯流排介面單元1409及L2快取記憶體1410結合而與SOC1400之其他零件通訊。互連1411包括晶片上互連,諸如IOSF、AMBA、或以上討論之其他互連,其可實施描述之
揭露的一或更多方面。
互連1411提供通訊通道至其他組件,諸如用戶身份模組(SIM)1430,而與SIM卡、啟動ROM 1437介接,保持啟動碼供核心1406及1407執行,以初始化及啟動SoC 1400;SDRAM控制器1440,與外部記憶體(例如DRAM 1460)介接;快閃記憶體控制器1445,與非揮發性記憶體(例如快閃記憶體1465)介接;周邊控制1450(例如序列周邊介面),與周邊裝置介接;視訊編解碼器1420及視訊介面1425,顯示及接收輸入(例如觸控致能輸入);GPU 1415,實施圖形相關運算等。任何該些介面可結合文中所描述之實施例的觀點。
此外,系統描繪用於通訊之周邊裝置,諸如藍牙模組1470、3G數據機1475、GPS 1480、及Wi-Fi 1485。請注意,如上述,UE包括用於通訊之無線電。結果,可非全部包括該些周邊通訊模組。然而,在UE中,應包括外部通訊之無線電的若干形式。
圖15描繪運算系統1500之範例形式中機器之圖示代表,其內可執行一組指令致使機器實施文中所討論之任何一或更多方法。在替代實施例中,機器可連接(例如以網路連接)至LAN、內部網路、外部網路、或網際網路中之其他機器。機器可於客戶-伺服器網路中伺服器或客戶裝置之容量中操作,或做為同級架構(或分佈)網路中同級機器。機器可為個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、行動電話、網路設
備、伺服器、網路路由器、開關或橋接器、或可執行指明機器將採取之動作之一組指令(序列)的任何機器。此外,雖然僅描繪單一機器,「機器」用詞亦將包括任何機器集合,其個別或聯合執行一組(或多組)指令,以實施文中所討論之任何一或更多方法。執行圖1之處理器之實施例可於運算系統1500中實施,或為其一部分。
運算系統1500包括處理裝置1502、主記憶體1504(例如快閃記憶體、動態隨機存取記憶體(DRAM)(諸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、靜態記憶體1506(例如快閃記憶體、靜態隨機存取記憶體(SRAM)等)、及資料儲存裝置1516,其經由匯流排1508而相互通訊。
處理裝置1502代表一或更多通用處理裝置,諸如微處理器、中央處理單元等。更具體地,處理裝置可微複雜指令集運算(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、或實施其他指令集之處理器、或實施指令集組合之處理器。處理裝置1502亦可為一或更多專用處理裝置,諸如專用積體電路(ASIC)、場可程控閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器等。在一實施例中,處理裝置1502可包括一或更多處理器核心。處理裝置1502經組配以執行處理邏輯或指令1526,用於實施文中討論之作業。
在一實施例中,處理裝置1502可為圖1之處
理器。另一方面,運算系統1500可包括文中所描述之其他組件。應理解的是核心可支援多執行緒處理(執行二或更多並列作業或執行緒組),並可以各類方式進行,包括劃時多執行緒處理、同步多執行緒處理(其中單一實體核心提供每一執行緒之邏輯核心,實體核心係同步多執行緒處理)、或其組合(例如劃時提取及解碼,以及之後同步多執行緒處理,諸如Intel®超執行緒處理技術)。
運算系統1500可進一步包括網路介面裝置1518,通訊地耦接至網路1519。運算系統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)回應於執行控制轉移指令之目標指令:i)回應於目標指令而轉換至第一執行狀態,目標指令為控制轉移指令之執行後,與處理邏輯之模式相同模式之控制轉移終止指令;以及ii)回應於目標指令而引發執行異常,目標指令為控制轉移指令之執行後,與處理邏輯之模式不同模式之控制轉移終止指令。
在範例2中,範例1之處理器,其中,目標指令為32位元指令,且控制轉移指令後,處理邏輯之模式為64位元。
在範例3中,範例1之處理器,其中,目標指令為64位元指令,且控制轉移指令後,處理邏輯之模式為32位元。
在範例4中,範例1之處理器,其中,控制轉移指令為間接呼叫或跳躍指令,且控制轉移終止指令為結束分支指令。
在範例5中,範例1之處理器,其中,控制轉移指令為返回指令,且控制轉移終止指令為ENDRET指令。
在範例6中,範例1之處理器,其中,控制轉移終止指令為模式特定多位元組運算碼,可執行為無作業。
在範例7中,範例1之處理器,其中,第一執行狀態包含閒置狀態,且其中,第二執行狀態包含等候狀態。
各式實施例可具有上述結構特徵之不同組合。例如,亦可關於文中所描述之方法或程序實施上述運算系統之全部可選特徵,且特定範例可用於一或更多實施例中任何地方。
範例8為一種處理器,包含:1)解碼單元,依據第一模式或第二模式而解碼指令,取決於指令之模
式,2)其中,解碼單元包括處理邏輯,回應於下一指令而引發執行異常,在控制轉移指令後,當控制轉移指令之執行後,處理邏輯之模式為第一模式時,解碼為第二模式之控制轉移終止指令,其中,控制轉移終止指令為模式特定多位元組運算碼,可執行為無作業。
在範例9中,範例8之處理器,其中,第一模式為32位元,且第二模式為64位元。
在範例10中,範例8之處理器,其中,第一模式為64位元,且第二模式為32位元。
在範例11中,範例8之處理器,其中,控制轉移指令為間接呼叫或跳躍指令,且控制轉移終止指令為終止分支指令。
在範例12中,範例8之處理器,其中,控制轉移指令為返回指令,且控制轉移終止指令為ENDRET指令。
在範例13中,範例8之處理器,進一步包含1)執行管線,其中,解碼單元進一步用以:a)將控制轉移指令解碼為微運算;b)回應於檢測控制轉移終止指令之執行後,控制轉移指令及處理邏輯之模式間之模式中之衝突,而產生缺失微運算;以及c)將微運算及缺失微運算饋入執行管線。
各式實施例可具有上述結構特徵之不同組合。例如,亦可關於文中所描述之方法或程序實施上述運算系統之全部可選特徵,且特定範例可用於一或更多實施例中
任何地方。
範例14為一種系統,包含:1)提取單元,用以提取第一模式及第二模式之指令;2)解碼單元,用以解碼指令,解碼單元回應於控制轉移指令,而進一步用以將控制轉移指令解碼為第一微運算;3)執行單元,操作地耦接至解碼單元,並用以執行來自解碼之指令之微運算;以及4)止用單元,用以止用第一微運算,止用單元包括處理邏輯,當第一微運算為第二模式之控制轉移終止微指令而止用下一微指令時,引發執行異常,當第一微運算之執行後,處理邏輯之模式為第一模式。
在範例15中,範例14之系統,其中,控制轉移終止微指令係從可執行為無作業之模式特定多位元組運算碼產生。
在範例16中,範例14之系統,其中,第一模式為32位元,且第二模式為64位元。
在範例17中,範例14之系統,其中,第一模式為64位元,且第二模式為32位元。
在範例18中,範例14之系統,其中,處理邏輯進一步結合第一狀態,與從控制轉移指令解碼之第一微運算,而表示處理邏輯處於等候狀態。
在範例19中,範例18之系統,其中,解碼單元進一步結合第二狀態,與從第二控制轉移指令解碼之第二微運算,其後為第二控制轉移指令之執行後,與處理邏輯之模式相同模式之控制轉移終止指令,其中,第二狀態
表示處理邏輯處於閒置狀態。
在範例20中,範例14之系統,其中,止用單元回應於錯誤預測,而進一步傳遞最後止用之微指令及與最後止用之微指令結合之處理邏輯之最後狀態至解碼單元,且其中,解碼單元鑒於最後狀態而進一步更新處理邏輯之狀態。
雖然已關於有限數量實施例描述本揭露,熟悉本技藝之人士將理解許多修改及變化。希望申請專利範圍涵蓋全部該等修改及變化,而落入本揭露之真實精神及範圍內。
在文中之描述中,提出許多特定細節,諸如特定類型處理器及系統組態、特定硬體結構、特定架構及微架構細節、特定暫存器組態、特定指令類型、特定系統組件、特定測量/高度、特定處理器管線級及作業等範例,以便提供本揭露之徹底了解。然而,對熟悉本技藝之人士而言,將理解的是,實現本揭露不需採用該些特定細節。在其他狀況下,未詳細描述熟知組件或方法,諸如特定及替代處理器架構、描述之演算法之特定邏輯電路/碼、特定韌體碼、特定互連作業、特定邏輯組態、特定製造技術及材料、特定編譯器實施、碼之演算法之特定表示、特定斷電及閘控技術/邏輯及電腦系統之其他特定作業細節,以便避免不必要地混淆本揭露。
實施例係參照特定積體電路中固態記憶體裝置中之壓縮/解壓縮優化描述,諸如運算平台或微處理器
中。實施例亦可應用於其他類型積體電路及可程控邏輯裝置。例如,揭露之實施例不侷限於桌上型電腦系統或可攜式電腦,諸如Intel® UltrabooksTM電腦,且亦可用於其他裝置中,諸如手持式裝置、平板電腦、其他薄型筆記型電腦、系統晶片(SoC)裝置、及嵌入式應用。手持式裝置之若干範例包括行動電話、網際網路協定裝置、數位相機、個人數位助理(PDA)、及手持式PC。嵌入式應用典型地包括微控制器、數位信號處理器(DSP)、系統晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)開關、或可實施以下提及之功能及作業的任何其他系統。描述之系統可為任何種類之電腦或嵌入式系統。揭露之實施例尤其可用於低階裝置,如可穿戴裝置(例如手錶)、電子植入物、感測及控制基礎結構裝置、控制器、監督控制及資料獲取(SCADA)系統等。再者,文中所描述之設備、方法、及系統不侷限於實體運算裝置,亦可關於節能及效率之軟體優化。如以下描述中顯而易見的,文中所描述之方法、設備、及系統之實施例(不論係參照硬體、韌體、軟體、或其組合,均對於「綠色技術」至關重要)進一步基於性能考量而均衡。
儘管文中實施例係參照處理器描述,其他實施例可應用於其他類型積體電路及邏輯裝置。本揭露之實施例的類似技術及學說可施加於可獲益自更高管線傳輸量及改進性能之其他類型電路或半導體裝置。本揭露之實施例的學說可應用於實施資料操作之任何處理器或機器。然
而,本揭露不侷限於實施512位元、256位元、128位元、64位元、32位元、或16位元資料作業之處理器或機器,其可施加於實施資料操作或管理之任何處理器及機器。此外,文中之描述提供範例,且附圖為描繪而顯示各式範例。然而,該些範例不應以限制意義解譯,因其僅希望提供本揭露之實施例之範例,而非提供本揭露之實施例之全部可能實施的詳細清單。
儘管以下範例描述指令處置及執行單元及邏輯電路之脈絡中分佈,本揭露之其他實施例可藉由儲存於機器可讀取有形媒體上之資料或指令完成,當資料或指令由機器實施時,致使機器實施符合本揭露之至少一實施例之功能。在一實施例中,與本揭露之實施例結合之功能係於機器可執行指令中體現。指令可用以致使以指令程控之通用或專用處理器實施本揭露之步驟。本揭露之實施例可提供做為電腦程式產品或軟體,依據本揭露之實施例,其可包括機器或電腦可讀取媒體,具有儲存於其上之指令,可用以程控電腦(或其他電子裝置),而實施一或更多作業。另一方面,本揭露之實施例之作業可藉由特定硬體組件實施,其包含實施作業之固定功能邏輯,或藉由程控之電腦組件及固定功能硬體組件之任何組合實施。
用以程控邏輯而實施揭露之實施例的指令可儲存於系統之記憶體內,諸如DRAM、快取記憶體、快閃記憶體、或其他儲存裝置。此外,指令可經由網路或藉由其他電腦可讀取媒體分佈。因而,機器可讀取媒體可包括以
機器(例如電腦)可讀取之形式儲存或傳輸資訊之任何機構,但不侷限於軟碟、光碟、光碟唯讀記憶體(CD-ROM)、及磁性光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除程控唯讀記憶體(EPROM)、電可抹除程控唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或用於透過網際網路且經由電、光、聲或其他傳播信號形式(例如載波、紅外線信號、數位信號等)傳輸資訊之有形機器可讀取儲存裝置。因此,電腦可讀取媒體包括適於以機器(例如電腦)可讀取形式儲存或傳輸電子指令或資訊之任何類型有形機器可讀取媒體。
設計可通過各式階段,從創建至仿真至加工。代表設計之資料可以若干方式代表設計。首先,如在仿真中有用的,可使用硬體描述語言或另一功能描述語言代表硬體。此外,具邏輯及/或電晶體閘極之電路級模型可以若干程度設計程序生產。此外,在若干階段,大部分設計達到代表硬體模型中各式裝置之實體配置的資料級。若使用傳統半導體加工技術,代表硬體模型之資料可為指明用以生產積體電路之遮罩之不同遮罩層上,各式特徵存在與否之資料。在設計之任何代表中,資料可以任何形式儲存於機器可讀取媒體中。諸如碟片之記憶體或磁性或光學儲存裝置可為機器可讀取媒體,儲存經由調變之光或電波傳輸之資訊,或產生光或電波以傳輸該資訊。當指標攜帶碼或設計之電載波傳輸時,在某種程度上實施電信號之複製、緩衝、或重傳,便實施新複製。因而,通訊提供者或
網路提供者可至少暫時將物件儲存於有形機器可讀取媒體上,諸如編碼為載波之資訊,體現本揭露之實施例之技術。
如文中使用之模組,係指硬體、軟體、及/或韌體之任何組合。關於範例,模組包括諸如微控制器之硬體,與非暫態媒體結合而儲存碼,經調適而由微控制器執行。因此,在一實施例中,參照模組係指硬體,其特定經組配而識別及/或執行保持在非暫態媒體上之碼。此外,在另一實施例中,模組之使用係指包括碼之非暫態媒體,其係特定經調適而供微控制器執行,以實施預定作業。且如可推斷地,在又另一實施例中,模組用詞(在本範例中)可指微控制器及非暫態媒體之組合。通常模組界限被描繪為個別共同改變及可能重疊。例如,第一及第二模組可共用硬體、軟體、韌體、或其組合,同時可能保持若干獨立硬體、軟體、或韌體。在一實施例中,使用邏輯用詞包括硬體,諸如電晶體、暫存器、或其他硬體,諸如可程控邏輯裝置。
在一實施例中,使用「經組配而」用語係指配置、放在一起、製造、提供銷售、進口及/或設計設備、硬體、邏輯、或元件,而實施指配或確定任務。在本範例中,若經設計、耦接、及/或互連以實施指配指配任務,則未操作之設備或其元件仍「經組配而」實施該指配任務。關於純粹描繪範例,邏輯閘可於作業期間提供0或1。但邏輯閘「經組配而」提供致能信號至時鐘,未包括
可提供1或0之每一可能邏輯閘。而是,邏輯閘於作業期間以若干方式耦接1或0輸出而致能時鐘。請注意,再次使用「經組配而」用詞不需作業,而是聚焦於設備、硬體、及/或元件之潛在狀態,其中在潛在狀態,設備、硬體、及/或元件經設計而於設備、硬體、及/或元件操作時,實施特定任務。
此外,在一實施例中,使用「以」、「可」、及/或「可操作而」用語係指若干設備、邏輯、硬體、及/或元件係以致能以特定方式使用設備、邏輯、硬體、及/或元件的方式設計。請注意,在一實施例中,如上述使用「以」、「可」、或「可操作而」係指設備、邏輯、硬體、及/或元件之潛在狀態,其中設備、邏輯、硬體、及/或元件未操作,但係以致能以特定方式使用設備的方式設計。
如文中所使用,值包括數量、狀態、邏輯狀態、或二進位邏輯狀態之任何已知代表。通常,邏輯位準或邏輯值之使用亦稱為1及0,其簡單地代表二進位邏輯狀態。例如,1係指高邏輯位準及0係指低邏輯位準。在一實施例中,諸如電晶體或快閃記憶胞之儲存單元可保持單一邏輯值或多邏輯值。然而,電腦系統中已使用其他代表值。例如,十進位數10亦可代表為二進位值1010及十六進位字母A。因此,值包括可保持於電腦系統中之資訊的任何代表。
再者,狀態可由值或部分值代表。關於範例,
諸如邏輯1之第一值可代表預設或最初狀態,同時諸如邏輯0之第二值可代表非預設狀態。此外,在一實施例中,重置或設定用詞係分別指預設更新值或狀態。例如,預設值可能包括高邏輯值,即重置,同時更新值可能包括低邏輯值,即設定。請注意,值之任何組合可用以代表任何數量狀態。
以上提出之方法、硬體、軟體、韌體或碼之實施例可經由儲存於機器可存取、機器可讀取、電腦可存取、或電腦可讀取媒體上之指令或碼實施,其可由處理元件執行。非暫態機器可存取/可讀取媒體包括任何機構,其以諸如電腦或電子系統之機器可讀取之形式提供(即儲存及/或傳輸)資訊。例如,非暫態機器可存取媒體包括隨機存取記憶體(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電儲存裝置;光儲存裝置;聲儲存裝置;用於保持從暫態(傳播)信號(例如載波、紅外線信號、數位信號)接收之資訊的其他形式儲存裝置等;其係從可由其接收資訊之非暫態媒體區分。
用以程控邏輯以實施揭露之實施例的指令可儲存於系統中之記憶體內,諸如DRAM、快取記憶體、快閃記憶體、或其他儲存裝置。此外,指令可經由網路或藉由其他電腦可讀取媒體分佈。因而,機器可讀取媒體可包括用於以機器(例如電腦)可讀取之形式儲存或傳輸資訊之任何機構,但不侷限於軟碟、光碟、光碟唯讀記憶體
(CD-ROM)、及磁性光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除程控唯讀記憶體(EPROM)、電可抹除程控唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或用於透過網際網路且經由電、光、聲或其他傳播信號形式(例如載波、紅外線信號、數位信號等)傳輸資訊之有形機器可讀取儲存裝置。因此,電腦可讀取媒體包括適於以機器(例如電腦)可讀取形式儲存或傳輸電子指令或資訊之任何類型有形機器可讀取媒體。
本說明書通篇參照之「一實施例」或「實施例」意即結合實施例描述之特定部件、結構、或特性係包括於本揭露之至少一實施例中。因而,在本說明書中各處出現之「在一實施例中」或「在實施例中」用語不一定均指相同實施例。此外,特定部件、結構、或特性可以任何合適方式組合於一或更多實施例中。
在上述說明書中,已參照特定示例實施例提供詳細描述。然而,顯而易見的是可實施各式修改及改變,而未偏離如申請專利範圍提出之揭露的廣泛精神及範圍。因此,說明書及圖式將以描繪而非限制的方式看待。此外,上述實施例及其他示例語言之使用不一定係指相同實施例或相同範例,但可指不同及個別實施例,以及可能相同實施例。
若干部分詳細描述係以電腦記憶體內資料位元上,作業之演算法及符號代表呈現。該些演算法描述及代
表係供熟悉資料處理技藝之人士使用,而最有效地向熟悉本技藝之其他人士傳達其作業之內容。演算法此處及通常設想為作業之自我一致序列,導致所欲結果。作業為需實體數量之實體操作者。一般而言,雖然不一定,該些數量係採電或磁信號之形式,可儲存、轉移、組合、比較及操縱。主要為共同使用之原因,已證明方便而稱該些信號為位元、值、元件、符號、字元、用詞、數量等。文中所描述之方塊可為硬體、軟體、韌體或其組合。
然而,需注意的是全部及類似用詞將與適當實體數量結合,並僅為施加於該些數量之方便標記。除非特別指明,否則由以上討論,顯然將理解的是描述通篇,利用諸如「定義」、「接收」、「判定」、「發布」、「鏈接」、「相關」、「獲得」、「鑑別」、「禁止」、「執行」、「請求」、「通訊」等用詞之討論,係指運算系統或類似電子運算裝置之動作及程序,其將代表為運算系統之暫存器及記憶體內之實體(例如電子)數量的資料操縱及轉換為類似地代表為運算系統記憶體或暫存器或其他該資訊儲存裝置、傳輸或顯示裝置內實體數量之其他資料。
文中使用之「範例」或「示例」字詞表示做為範例、實例或描繪。文中描述為「範例」或「示例」之觀點或設計不一定解譯為較佳或有利於其他觀點或設計。而是使用「範例」或「示例」字詞係希望以具體方式呈現概念。如本申請案中使用,「或」用詞係希望表示包括「或」,而非排除「或」。即,除非特別指明,或從上下
文清晰可見,「X包括A或B」係希望表示任何自然包括之排列。即,若X包括A,X包括B,或X包括A及B二者,則「X包括A或B」滿足任何上述狀況。此外,除非特別指明,或從上下文清晰指向單數形式,本申請案及申請項中使用冠詞,一般應解譯為表示「一或更多」。再者,除非特別指明,通篇中使用「實施例」或「一實施例」或「實施」或「一實施」用詞,並不希望表示相同實施例或實施。而且,如文中使用之「第一」、「第二」、「第三」、「第四」等用詞係表示為標記,以區別不同元件,不一定依據其數值指配而具有順序意義。
200:狀態機器
210:閒置狀態
220:WAIT__FOR_ENDBRANCH狀態
230:DELIVER_EXECUTION_EXCEPTION作業
240:WAIT_FOR_ENDRET狀態
Claims (12)
- 一種用於控制流向終止的設備,包含:解碼器電路,用於解碼第一信號指令,該第一信號指令用於包括運算碼以指示64位元模式中的間接分支執行將被終止;以及硬體追蹤器,耦合至該解碼器電路,該硬體追蹤器用於回應該解碼器電路在64位元模式中解碼該第一信號指令,而終止64位元間接分支,且設定追蹤器狀態至閒置且抑制指示欄位並未被抑制,且回應於該解碼器電路在32位元模式中解碼該第一信號指令,而引發執行異常,其中,該解碼器電路用於解碼第二信號指令,該第二信號指令用於包括運算碼以指示32位元模式中的間接分支執行將被終止及該硬體追蹤器耦合至該解碼器電路,該硬體追蹤器用於終止32位元間接分支,且設定該追蹤器狀態至閒置且該抑制指示欄位並未被抑制。
- 如請求項1的設備,其中該硬體追蹤器用於包括獨立追蹤器用於使用者模式及督導模式。
- 如請求項1的設備,更包含暫存器,以儲存是否支援該第一信號指令的指示。
- 如請求項3的設備,其中當該暫存器指示不支援該第一信號指令時,該第一信號指令被視為無操作。
- 一種用於控制流向終止的系統,包含:記憶體,用於儲存複數個指令;以及 處理器,耦合至該記憶體,該處理器包括:解碼器電路,用於解碼第一信號指令,該第一信號指令用於包括運算碼以指示64位元模式中的間接分支執行將被終止;以及硬體追蹤器,耦合至該解碼器電路,該硬體追蹤器用於回應該解碼器電路在64位元模式中解碼該第一信號指令,而終止64位元間接分支,且設定追蹤器狀態至閒置且抑制指示欄位並未被抑制,且回應於該解碼器電路在32位元模式中解碼該第一信號指令,而引發執行異常,其中,該解碼器電路用於解碼第二信號指令,該第二信號指令用於包括運算碼以指示32位元模式中的間接分支執行將被終止及該硬體追蹤器耦合至該解碼器電路,該硬體追蹤器用於終止32位元間接分支,且設定該追蹤器狀態至閒置且該抑制指示欄位並未被抑制。
- 如請求項5之系統,其中該硬體追蹤器用於包括獨立追蹤器用於使用者模式及督導模式。
- 如請求項5之系統,更包含暫存器,以儲存是否支援該第一信號指令的指示。
- 如請求項7之系統,其中當該暫存器指示不支援該第一信號指令時,該第一信號指令被視為無操作。
- 一種用於控制流向終止的方法,包含:解碼第一信號指令,該第一信號指令用於包括運 算碼以指示64位元模式中的間接分支執行將被終止;以及回應於在64位元模式中解碼該第一信號指令,終止64位元間接分支,設定追蹤器狀態至閒置,且設定抑制指示欄位並未被抑制;以及回應於在32位元模式中解碼該第一信號指令,而引發執行異常,其中,解碼第二信號指令,該第二信號指令用於包括運算碼以指示32位元模式中的間接分支執行將被終止,且回應於解碼該第二信號指令,終止64位元間接分支,設定該追蹤器狀態至閒置,且設定該抑制指示欄位並未被抑制。
- 如請求項9之方法,其中使用獨立追蹤器用於使用者模式及督導模式。
- 如請求項9之方法,更包含在暫存器中儲存是否支援該第一信號指令的指示。
- 如請求項11之方法,當該暫存器指示不支援該第一信號指令時,該第一信號指令被視為無操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/998,367 US20170185400A1 (en) | 2015-12-23 | 2015-12-23 | Mode-specific endbranch for control flow termination |
US14/998,367 | 2015-12-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202138997A TW202138997A (zh) | 2021-10-16 |
TWI781588B true TWI781588B (zh) | 2022-10-21 |
Family
ID=59086564
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105138282A TWI724065B (zh) | 2015-12-23 | 2016-11-22 | 包含用於控制流向終止的模式特定結束分支之處理器及系統 |
TW110113557A TWI781588B (zh) | 2015-12-23 | 2016-11-22 | 包含用於控制流向終止的模式特定結束分支之設備、系統及方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105138282A TWI724065B (zh) | 2015-12-23 | 2016-11-22 | 包含用於控制流向終止的模式特定結束分支之處理器及系統 |
Country Status (3)
Country | Link |
---|---|
US (3) | US20170185400A1 (zh) |
TW (2) | TWI724065B (zh) |
WO (1) | WO2017112317A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170185400A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Mode-specific endbranch for control flow termination |
US10503626B2 (en) * | 2018-01-29 | 2019-12-10 | Oracle International Corporation | Hybrid instrumentation framework for multicore low power processors |
US11922271B1 (en) * | 2020-05-15 | 2024-03-05 | Scandit Ag | Virtual screen standby mode for mobile device camera |
CN112631661B (zh) * | 2020-12-16 | 2024-04-02 | 中国电子信息产业集团有限公司 | 程序安全管控方法、装置、设备及存储介质 |
US20220207148A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Hardening branch hardware against speculation vulnerabilities |
US11914497B2 (en) * | 2022-03-31 | 2024-02-27 | Arm Limited | Profiling |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154366A1 (en) * | 2000-02-15 | 2003-08-14 | Michael Chow | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
TW200907809A (en) * | 2007-04-19 | 2009-02-16 | Transitive co ltd | Apparatus and method for handling exception signals in a computing system |
US20140156972A1 (en) * | 2012-11-30 | 2014-06-05 | Vedyvas Shanbhogue | Control Transfer Termination Instructions Of An Instruction Set Architecture (ISA) |
TW201439900A (zh) * | 2012-12-07 | 2014-10-16 | Nvidia Corp | 用於提前執行操作的指令分類 |
Family Cites Families (65)
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 |
US5479616A (en) * | 1992-04-03 | 1995-12-26 | Cyrix Corporation | Exception handling for prefetched instruction bytes using valid bits to identify instructions that will cause an exception |
US5326721A (en) | 1992-05-01 | 1994-07-05 | Texas Instruments Incorporated | Method of fabricating high-dielectric constant oxides on semiconductors using a GE buffer layer |
US6178495B1 (en) * | 1998-04-30 | 2001-01-23 | International Business Machines Corporation | Processor E-unit to I-unit interface instruction modification with E-unit opcode computer logic in the unit |
US6925552B2 (en) * | 2001-06-19 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Method and system with multiple exception handlers in a processor |
US7240186B2 (en) * | 2001-07-16 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | System and method to avoid resource contention in the presence of exceptions |
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 | セイコーエプソン株式会社 | 情報処理装置及び電子機器 |
JP4447471B2 (ja) * | 2002-11-18 | 2010-04-07 | エイアールエム リミテッド | 安全処理システムにおける例外タイプ |
GB0226905D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Exception tyres within a secure processing system |
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 |
GB2417798A (en) * | 2004-09-02 | 2006-03-08 | Hewlett Packard Development Co | Tracking variable values during program execution |
US7752427B2 (en) | 2005-12-09 | 2010-07-06 | Atmel Corporation | Stack underflow debug with sticky base |
CA2647772C (en) * | 2006-03-30 | 2014-07-22 | Finmeccanica S.P.A. | System for extending bi-directional satellite radio communications in tunnels |
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 |
DE602007006215D1 (de) * | 2006-09-06 | 2010-06-10 | Silicon Hive Bv | Datenverarbeitungsschaltung mit mehreren anweisungchaltung und scheduling-verfahren für eine solche datenschaltung |
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 |
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 |
US9098608B2 (en) | 2011-10-28 | 2015-08-04 | Elwha Llc | Processor configured to allocate resources using an entitlement vector |
US8955111B2 (en) | 2011-09-24 | 2015-02-10 | Elwha Llc | Instruction set adapted for security risk monitoring |
US8813085B2 (en) | 2011-07-19 | 2014-08-19 | Elwha Llc | Scheduling threads based on priority utilizing entitlement vectors, weight and usage level |
US9460290B2 (en) | 2011-07-19 | 2016-10-04 | Elwha Llc | Conditional security response using taint vector monitoring |
US9798873B2 (en) | 2011-08-04 | 2017-10-24 | Elwha Llc | Processor operable to ensure code integrity |
US9558034B2 (en) | 2011-07-19 | 2017-01-31 | Elwha Llc | Entitlement vector for managing resource allocation |
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 |
US8943313B2 (en) | 2011-07-19 | 2015-01-27 | Elwha Llc | Fine-grained security in federated data sets |
US9443085B2 (en) | 2011-07-19 | 2016-09-13 | Elwha Llc | Intrusion detection using taint accumulation |
US9170843B2 (en) | 2011-09-24 | 2015-10-27 | Elwha Llc | Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement |
US20130024676A1 (en) | 2011-07-19 | 2013-01-24 | Glew Andrew F | Control flow integrity |
US20150128262A1 (en) | 2011-10-28 | 2015-05-07 | Andrew F. Glew | Taint vector locations and granularity |
DE102011110151B4 (de) * | 2011-08-16 | 2018-07-26 | Texas Instruments Deutschland Gmbh | Halbleitervorrichtung und Verfahren zum Betreiben einer Pipeline-Ausgleichseinrichtung in einer Halbleitervorrichtung |
US9298900B2 (en) | 2011-09-24 | 2016-03-29 | Elwha Llc | Behavioral fingerprinting via inferred personal relation |
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 |
US20130159217A1 (en) | 2011-09-24 | 2013-06-20 | Elwha LLC, a limited liability corporation of the State of Delaware | Environmentally-responsive behavioral fingerprinting |
US8688980B2 (en) | 2011-09-24 | 2014-04-01 | Elwha Llc | Trust verification schema based transaction authorization |
US20130133054A1 (en) | 2011-09-24 | 2013-05-23 | Marc E. Davis | Relationship Based Trust Verification Schema |
US9825967B2 (en) | 2011-09-24 | 2017-11-21 | Elwha Llc | Behavioral fingerprinting via social networking interaction |
US9015860B2 (en) | 2011-09-24 | 2015-04-21 | Elwha Llc | Behavioral fingerprinting via derived personal relation |
US8555077B2 (en) | 2011-11-23 | 2013-10-08 | Elwha Llc | Determining device identity using a behavioral fingerprint |
US20130191887A1 (en) | 2011-10-13 | 2013-07-25 | Marc E. Davis | Social network based trust verification Schema |
US9348985B2 (en) | 2011-11-23 | 2016-05-24 | Elwha Llc | Behavioral fingerprint controlled automatic task determination |
US9621404B2 (en) | 2011-09-24 | 2017-04-11 | Elwha Llc | Behavioral fingerprinting with social networking |
US9083687B2 (en) | 2011-09-24 | 2015-07-14 | Elwha Llc | Multi-device 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 |
US9729549B2 (en) | 2011-09-24 | 2017-08-08 | Elwha Llc | Behavioral fingerprinting with adaptive development |
US8713704B2 (en) | 2011-09-24 | 2014-04-29 | Elwha Llc | Behavioral fingerprint based authentication |
US8869241B2 (en) | 2011-09-24 | 2014-10-21 | Elwha Llc | Network acquired behavioral fingerprint for authentication |
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 |
WO2014005067A1 (en) | 2012-06-29 | 2014-01-03 | Elwha Llc | Behavioral fingerprinting with retail monitoring |
US9990202B2 (en) * | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
US9213807B2 (en) * | 2013-09-04 | 2015-12-15 | Raytheon Cyber Products, Llc | Detection of code injection attacks |
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 |
US20170185400A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Mode-specific endbranch for control flow termination |
US10719319B2 (en) * | 2017-12-29 | 2020-07-21 | Intel Corporation | Fine grained control flow enforcement to mitigate malicious call/jump oriented programming |
-
2015
- 2015-12-23 US US14/998,367 patent/US20170185400A1/en not_active Abandoned
-
2016
- 2016-11-22 TW TW105138282A patent/TWI724065B/zh active
- 2016-11-22 TW TW110113557A patent/TWI781588B/zh active
- 2016-11-23 WO PCT/US2016/063671 patent/WO2017112317A1/en active Application Filing
-
2020
- 2020-01-13 US US16/741,498 patent/US11099847B2/en active Active
-
2021
- 2021-08-17 US US17/404,890 patent/US11650818B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154366A1 (en) * | 2000-02-15 | 2003-08-14 | Michael Chow | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
TW200907809A (en) * | 2007-04-19 | 2009-02-16 | Transitive co ltd | Apparatus and method for handling exception signals in a computing system |
US20140156972A1 (en) * | 2012-11-30 | 2014-06-05 | Vedyvas Shanbhogue | Control Transfer Termination Instructions Of An Instruction Set Architecture (ISA) |
TW201439900A (zh) * | 2012-12-07 | 2014-10-16 | Nvidia Corp | 用於提前執行操作的指令分類 |
Also Published As
Publication number | Publication date |
---|---|
US20200225950A1 (en) | 2020-07-16 |
TWI724065B (zh) | 2021-04-11 |
WO2017112317A1 (en) | 2017-06-29 |
US11650818B2 (en) | 2023-05-16 |
US20220019432A1 (en) | 2022-01-20 |
TW201732561A (zh) | 2017-09-16 |
US11099847B2 (en) | 2021-08-24 |
TW202138997A (zh) | 2021-10-16 |
US20170185400A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11762982B2 (en) | Processor extensions to protect stacks during ring transitions | |
TWI781588B (zh) | 包含用於控制流向終止的模式特定結束分支之設備、系統及方法 | |
US9395993B2 (en) | Execution-aware memory protection | |
CN111124498A (zh) | 用于推测执行侧信道缓解的装置和方法 | |
US10049057B2 (en) | Instruction and logic for secure instruction execution pipeline | |
US9971702B1 (en) | Nested exception handling | |
CN109643293B (zh) | 检测总线上锁条件并且避免总线锁 | |
US10228956B2 (en) | Supporting binary translation alias detection in an out-of-order processor | |
US10585798B2 (en) | Tracking cache line consumption | |
CN113490924A (zh) | 用于运行时处理器验证的ept和影子页表之间的动态切换 | |
US20230092268A1 (en) | Branch type logging in last branch registers | |
CN111353157A (zh) | 限制不受信任软件对加密密钥的使用 | |
TWI729033B (zh) | 控制轉移強制執行中的非追蹤控制轉移的方法及處理器 | |
US9256497B2 (en) | Checkpoints associated with an out of order architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |