TW201723804A - 安全模指數處理器、方法、系統、及指令 - Google Patents

安全模指數處理器、方法、系統、及指令 Download PDF

Info

Publication number
TW201723804A
TW201723804A TW105126393A TW105126393A TW201723804A TW 201723804 A TW201723804 A TW 201723804A TW 105126393 A TW105126393 A TW 105126393A TW 105126393 A TW105126393 A TW 105126393A TW 201723804 A TW201723804 A TW 201723804A
Authority
TW
Taiwan
Prior art keywords
program
input information
instruction
processor
misleading
Prior art date
Application number
TW105126393A
Other languages
English (en)
Other versions
TWI706321B (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 TW201723804A publication Critical patent/TW201723804A/zh
Application granted granted Critical
Publication of TWI706321B publication Critical patent/TWI706321B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一態樣之處理器包括解碼單元,用以解碼具有程式誤導輸入資訊指令之模指數。具有程式誤導輸入資訊指令之該模指數係用以指示複數個源運算元,其係用以儲存用於模指數運算之輸入資訊。將要被儲存在該複數個源運算元中之該輸入資訊之至少若干者將要被程式誤導。執行單元與該解碼單元耦接。回應於具有程式誤導輸入資訊指令之該模指數,該執行單元係用以儲存模指數結果於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指示。揭露其他處理器、方法、系統、及指令。

Description

安全模指數處理器、方法、系統、及指令
本文所述實施例一般相關於處理器。特別係,本文所述之實施例一般相關於在處理器中執行模指數。
廣泛地使用加密技術以幫助保護資料及/或通訊之機密性及完整性。兩種廣泛使用之加密技術類型為對稱金鑰加密技術及非對稱或公用金鑰加密技術。
對稱金鑰加密技術使用單一類型之金鑰。該同一金鑰被使用於加密資料及用於解密資料兩者。另外,該同一金鑰被使用於產生數位簽章及用於驗證該數位簽章兩者。
相對而言,公用金鑰加密技術使用兩個不同類型之金鑰。該等金鑰之一係秘密或私用,然而該另一金鑰為非秘密且反而係公用地可用。所謂公用及私用金鑰係使用於不同互補目的。舉例而言,公用金鑰可被使用於加密資料,然而私用金鑰可被使用於將該加密資料解密。作為另一例子,私用金鑰可被使用於產生數位簽章,然而公用金鑰可 被使用於驗證該數位簽章。
公用金鑰加密技術係被廣泛使用。舉例而言,公用金鑰加密技術係廣泛使用於各種網際網路標準或協定,舉例而言,諸如安全插座層(SSL)、傳送層保全(TLS)、網際網路協定保全(IPsec)、安全/多功能網際網路超郵件(S/MIME)、良好之私密性(PGP)及GNU隱私防護(GPG)。
一般而言,當此類標準或協定被採用於網際網路及/或其他通訊通道時,初始階段一般涉及建立通道之保全、交換加密金鑰、及驗證認證。可使用各種公用金鑰演算法。一種公用金鑰演算法為Diffie-Hellman金鑰交換演算法,其有時被引用為Diffie-Hellman,或甚至精簡為D-H。Diffie-Hellman演算法被廣泛地使用於透過公用通道安全地交換秘密加密金鑰。另一公用金鑰演算法係數位簽章演算法(DSA)演算法。DSA係廣泛地用於提供數位簽章。仍另一公用金鑰演算法係RSA演算法(其命名取自其著作者Rivest、Shamir、Adleman)。RSA係廣泛地用於安全地交換秘密加密金鑰以及用以提供數位簽章。
100‧‧‧處理器
102‧‧‧具有程式誤導輸入資訊指令之模指數
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧秘密
110‧‧‧去程式誤導單元
112‧‧‧模指數單元
114‧‧‧記憶體
116‧‧‧源運算元
118‧‧‧輸入資訊
120‧‧‧程式誤導輸入資訊
122‧‧‧模指數結果
124‧‧‧暫存器
230‧‧‧方法
231‧‧‧方塊
232‧‧‧方塊
335‧‧‧方法
336‧‧‧方塊
337‧‧‧方塊
338‧‧‧方塊
339‧‧‧方塊
340‧‧‧方塊
402‧‧‧具有程式誤導輸入資訊指令之模指數
442‧‧‧運算碼
444‧‧‧第一源運算元指示欄位
446‧‧‧第二源運算元指示欄位
448‧‧‧第三源/目的地運算元指示欄位
450‧‧‧運算元大小指示欄位
452‧‧‧一或多運算元程式誤導指示欄位
550A‧‧‧底數運算元大小指示欄位
550B‧‧‧三倍運算元大小指示欄位
554‧‧‧立即數
556‧‧‧運算元程式誤導指示欄位
606‧‧‧執行單元
608‧‧‧秘密加密金鑰
610‧‧‧解密單元
612‧‧‧模指數單元
616‧‧‧儲存位置
620‧‧‧加密模指數輸入資訊
660‧‧‧解密模指數輸入資訊
662‧‧‧軟體
706‧‧‧執行單元
708‧‧‧不同組的秘密模指數輸入資訊
710‧‧‧模指數輸入資訊判定單元
712‧‧‧模指數單元
716‧‧‧儲存位置
720‧‧‧模指數輸入資訊指示器
760‧‧‧秘密模指數輸入資訊
762‧‧‧軟體
806‧‧‧執行單元
808‧‧‧秘密
810‧‧‧模指數輸入資訊去程式誤導及鑑別單元
812‧‧‧模指數單元
816‧‧‧儲存位置
820‧‧‧可鑑別程式誤導輸入資訊
860‧‧‧經鑑別去程式誤導模指數輸入資訊
862‧‧‧軟體
864‧‧‧錯誤
900‧‧‧管線
902‧‧‧提取級
904‧‧‧長度解碼級
906‧‧‧解碼級
908‧‧‧分配級
910‧‧‧更名級
912‧‧‧排程級
914‧‧‧暫存器讀取/記憶體讀取級
916‧‧‧執行級
918‧‧‧寫回/記憶體寫入級
922‧‧‧異常處理級
924‧‧‧提交級
930‧‧‧前端單元
932‧‧‧分支預測單元
934‧‧‧指令快取單元
936‧‧‧指令轉譯旁視緩衝器
938‧‧‧指令提取單元
940‧‧‧解碼單元
950‧‧‧執行引擎單元
952‧‧‧更名/分配器單元
954‧‧‧退役單元
956‧‧‧排程器單元
958‧‧‧實體暫存器檔案單元
960‧‧‧執行叢集
962‧‧‧執行單元
964‧‧‧記憶體存取單元
970‧‧‧記憶體單元
972‧‧‧資料TLB單元
974‧‧‧資料快取單元
976‧‧‧層級2(L2)快取單元
990‧‧‧核心
1000‧‧‧指令解碼器
1002‧‧‧互連網路
1004‧‧‧層級2(L2)快取之本地子集
1006‧‧‧L1快取
1006A‧‧‧L1資料快取
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧向量暫存器
1020‧‧‧拌和單元
1022A‧‧‧數字轉換單元
1022B‧‧‧數字轉換單元
1024‧‧‧複製單元
1026‧‧‧寫入遮罩暫存器
1028‧‧‧16位元寬ALU
1100‧‧‧處理器
1102A-N‧‧‧核心
1106‧‧‧共享快取單元
1108‧‧‧專用邏輯
1110‧‧‧系統代理單元
1112‧‧‧環狀為基互連單元
1114‧‧‧整合記憶體控制器單元
1116‧‧‧匯流排控制器單元
1200‧‧‧系統
1210‧‧‧處理器
1215‧‧‧處理器
1220‧‧‧控制器集線器
1240‧‧‧記憶體
1245‧‧‧共處理器
1250‧‧‧輸入/輸出集線器
1260‧‧‧輸入/輸出
1290‧‧‧圖形記憶體控制器集線器
1295‧‧‧連接
1300‧‧‧系統
1314‧‧‧I/O裝置
1315‧‧‧處理器
1316‧‧‧第一匯流排
1318‧‧‧匯流排橋接器
1320‧‧‧第二匯流排
1324‧‧‧音訊I/O
1327‧‧‧通訊裝置
1328‧‧‧儲存單元
1330‧‧‧碼及資料
1332‧‧‧記憶體
1334‧‧‧記憶體
1338‧‧‧共處理器
1339‧‧‧高效能介面
1350‧‧‧點對點互連
1352‧‧‧點對點介面
1354‧‧‧點對點介面
1370‧‧‧第一處理器
1372‧‧‧整合記憶體控制器單元
1376‧‧‧點對點介面電路
1378‧‧‧點對點介面電路
1380‧‧‧第二處理器
1382‧‧‧整合記憶體控制器單元
1386‧‧‧點對點介面電路
1388‧‧‧點對點介面電路
1390‧‧‧晶片組
1394‧‧‧點對點介面電路
1396‧‧‧介面
1398‧‧‧點對點介面電路
1400‧‧‧系統
1414‧‧‧I/O裝置
1415‧‧‧舊有I/O裝置
1500‧‧‧系統單晶片
1502‧‧‧互連單元
1510‧‧‧應用處理器
1520‧‧‧共處理器
1530‧‧‧靜態隨機存取記憶體(SRAM)單元
1532‧‧‧直接記憶體存取(DMA)單元
1540‧‧‧顯示器單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進制碼
1608‧‧‧替代指令集編譯器
1610‧‧‧替代指令集二進制碼
1612‧‧‧指令轉換器
1614‧‧‧不具有x86指令集核心之處理器
1616‧‧‧具有至少一個x86指令集核心之處理器
藉由參考以下說明與所附圖式將能最佳地瞭解本發明,該等圖式係被使用以說明實施例。在圖式中:圖1係可操作以執行具有程式誤導輸入資訊指令之模指數的實施例的處理器之實施例的方塊圖。
圖2係執行具有程式誤導輸入資訊指令之模指數的實 施例的方法之實施例的方塊流程圖。
圖3係以蒙哥馬利縮減(Montgomery reduction)執行具有程式誤導輸入資訊指令之模指數的實施例的方法之詳細例示性實施例的方塊流程圖。
圖4係具有程式誤導輸入資訊指令之模指數的例示性實施例的方塊圖。
圖5係立即數的例示性實施例的方塊圖。
圖6係適當執行單元的第一實施例的方塊圖。
圖7係適當執行單元的第二實施例的方塊圖。
圖8係適當執行單元的第三實施例的方塊圖。
圖9A係說明依序管線之實施例及暫存器更名失序發出/執行管線之實施例的方塊圖。
圖9B係包括前端單元耦接到執行引擎單元且兩者耦接到記憶體單元的處理器核心之實施例的方塊圖。
圖10A係連同其到晶粒上互連網路之連接且具有其層級2(L2)快取之本地子集的單一處理器核心之實施例的方塊圖。
圖10B係圖10A之處理器核心的部分的擴展圖之實施例的方塊圖。
圖11係可能具有多於一個核心、可能具有整合記憶體控制器、及可能具有整合圖形的處理器之實施例的方塊圖。
圖12係計算機架構之第一實施例的方塊圖。
圖13係計算機架構之第二實施例的方塊圖。
圖14係計算機架構之第三實施例的方塊圖。
圖15係計算機架構之第四實施例的方塊圖。
圖16係使用軟體指令轉換器以將源指令集中的二進制指令轉換成目標指令集中的二進制指令的方塊圖,根據本發明之實施例。
【發明內容及實施方式】
本文所揭示為模指數指令、用以執行指令之處理器、當處理或執行指令時由處理器執行之方法、及結合一或多處理器以處理或執行指令之系統。在若干實施例中,模指數指令可被使用以執行模指數,連同各種不同公用金鑰加密技術演算法(例如,諸如RSA、DSA及Diffie-Hellman演算法)。在此類公用金鑰加密技術演算法中,當透過網際網路及/或其他通訊鏈路建立安全對話(例如,連同安全對話建立、認證簽章、及認證驗證等)時,趨向於重度使用模指數。在其他實施例中,本文揭示之模指數指令可被使用以執行模指數,連同各種其他計算機實作演算法及/或通訊相關演算法及/或資料處理演算法。本發明之範疇不限於此些模指數指令之任何已知使用,其反而係可由在該領域具有通常知識者所使用於各種不同目地之通用指令。
在以下說明中,數種特定細節被陳述(例如,特定指令運算、用於實作模指數之特定演算法、特定資料格式、特定處理器組態、特定微架構細節、特定運算之序列 等)。然而,實施例可被操作而不具有此些特定細節。在其他情況中,已知電路、結構及技術並未被詳細顯示以避免模糊對本說明之理解。
初始地,對模指數之扼要說明可係具有幫助的。模指數可被表示為方程式1所述者:R=BE mod N 方程式1
根據此表示式,模指數結果(R)相等於底數(B)之指數升到指數(E)並以模數(N)為模而所得之餘數。指數涉及將底數(B)提高到指數(E)之次方。作為實例,若指數為正整數,則該指數可代表將指數個數量的底數相乘在一起(例如,B*B*B*B...執行指數的數量次)。接著,該指數之結果可被除以模數(N)以決定餘數R。
一般而言在許多應用中,底數、指數、及/或模數之一或多者可代表相對大之整數(例如,一般係大於約256位元,且通常甚至更大)。舉例而言,在RSA、DSA、及Diffie-Hellman之許多實作中,針對底數、指數、及模數之各者為至少各為512位元、至少各為1024位元、或甚至更大之正整數並非係稀有的。此外,使用整數之大小可潛在地隨時間推移而遞增,以為了幫助提供附加保全。據此,提供此類模指數計算通常係趨向計算密集且耗時。在一態樣中,本文揭示之模指數指令可趨向幫助加速該模指數計算,其可幫助改善效能。
此外,在若干實施例中,模指數指令可係具有程式誤導輸入資訊指令之模指數及/或可具有程式誤導輸入資 訊。此些指令可幫助改善模指數計算之機密性或保全性。普遍而言,且特別係當使用於公用金鑰加密應用時,模指數計算可基於秘密、私用、或機密資訊。在一說明性實例中,在RSA被使用於記號處理(sign process)(其通常在網際網路伺服器上執行)之情況中,指數(E)係不應被揭露之秘密或私用值。在其他應用中,不同及/或附加資訊可潛在地係秘密或私用,舉例而言,諸如底數(B)、指數(E)、模數(N)、從模數計算出之參數(例如,縮減常數)、或其他資訊之任意組合。
然而,一挑戰在於模指數之傳統軟體實作並未充分地保護此類秘密或私用資訊。舉例而言,此類秘密或私用資訊一般係可讀取或另外對至少若干軟體為可存取。然而,所有軟體,甚至包括最高度特權的系統層級軟體(例如,虛擬機器監控程式(VMM)、作業系統(OS)、基本輸入/輸出系統(BIOS)、或類似者),可能潛在地被損毀(例如,在特權惡意軟體之情況下)且因此可能不是全然可信的。若軟體被損毀且可以讀取秘密或私用資訊,則可能至少部分被危及與公用金鑰加密演算法相關之預定保全。在若干情況中,此可能是很巨大的問題。作為一實例,在若干情況中秘密金鑰可能係極度有價值的(例如,比在單一對話中所保護之資料更具有價值的)。作為另一實例,在OpenSSL Heartbleed易損性方面,由於OpenSSL中的程式錯誤(bug),應為可信任網路伺服器之任何私用金鑰由於記憶體緩衝溢出而可能潛在地被偷竊。這可能允許網路伺 服器被充分地冒充,以使得客戶無從得知其正在與真實網路伺服器或假冒網路伺服器通訊與否。若沒有私用金鑰被偷竊的軌跡或證據,則為了要達到真正地安全,潛在地非常大量之伺服器要收回並產生新認證,其一般趨向為極具挑戰性的。
有利地,本文揭示之具有程式誤導輸入資訊指令之模指數的程式誤導資訊可幫助顯著地加強秘密或機密資訊之保護(例如,到模指數計算之資訊輸入)。在若干實施例中,可能無法由即便最高特權系統層級軟體(例如,VMM、OS、BIOS等)來存取或至少無法讀取程式誤導資訊。將資訊程式誤導之各種不同適當方法將進一步討論如下。此可被使用以幫助增加各種公用金鑰加密技術演算法之保全,以及各種其他用途。
圖1係可操作以執行具有程式誤導輸入資訊指令之模指數102的實施例的處理器100之實施例的方塊圖。在若干實施例中,處理器可為通用處理器(例如,使用於桌上型、膝上型、或其他種計算機類型之通用微處理器或中央處理單元(CPU))。替代地,該處理器可能為專用處理器。適當專用處理器之實例包括,但未限於,加密處理器、通訊處理器、網路處理器、共處理器、嵌入式處理器、數位訊號處理器(DSP)、及控制器(例如,微控制器)。該處理器可具有各種複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、極長指令字(VLIW)架構、混合架構、其他類型的架構、或具有不同架構之組合(例如,不同核心可 能具有不同架構)之任意者。
在操作期間,處理器可接收具有程式誤導輸入資訊指令之模指數102。舉例而言,該指令可能是預提取、提取、或另外從記憶體透過匯流排或其他互連而接收。該指令可代表巨指令、組合語言指令、機械碼指令、或其他指令或處理器之指令集的控制訊號。
處理器包括解碼單元或解碼器104。解碼單元可接收並解碼具有程式誤導輸入資訊指令之模指數102。解碼單元可輸出相對較低層級指令或控制訊號(例如,微指令、微運算、微碼進入點、經解碼指令或控制訊號等),其反映、代表、及/或導出自相對較高階具有程式誤導輸入資訊指令之模指數。在若干實施例中,解碼單元可包括一或多輸入結構(例如,埠、互連、介面)以接收指令、耦接至其之指令辨識與解碼邏輯以辨識及解碼該指令、及一或多耦接至其之輸出結構(例如,埠、互連、介面)以輸出較低階指令或控制訊號。解碼單元可使用各種不同機制來實作,該等機制包括,但未限於,微碼唯讀記憶體(ROM)、查找表、硬體實作、可編程邏輯陣列(PLA)、及其他適用以實作解碼單元之機制。
在若干實施例中,取代將具有程式誤導輸入資訊指令之模指數直接提供給解碼單元、指令仿真器、轉譯器、變形器、編譯器、或其他可以可選地使用之指令轉換模組。各種類型之指令轉換模組可被於軟體、硬體、韌體、或其組合中。在若干實施例中,指令轉換模組可能設置於處理 器外部,舉例而言,諸如在獨立晶粒上及/或記憶體中(例如,靜態、動態、或執行時間仿真模組)。作為實例,指令轉換模組可接收具有程式誤導輸入資訊指令之模指數,其可能係第一指令集,且可能仿真、轉譯、變形、解譯、或另外轉換該具有程式誤導輸入資訊指令之模指數成一或多對應中間指令或控制訊號,其可能係第二不同指令集。一或多中間指令或第二指令集之控制訊號可被提供到解碼單元(例如,解碼單元104),其可將上述者解碼成一或多可由處理器之本機硬體(例如,一或多執行單元)執行之較低階指令或控制訊號。
在若干實施例中,具有程式誤導輸入資訊指令之模指數102可明確地指定(例如,透過一或多欄位或位元之集合)、或另外指示(例如,隱晦地指示)複數個源運算元116之儲存位置。源運算元可被使用以儲存用於模指數運算或與指令相關之計算的輸入資訊118。在若干實施例中,指令亦可明確地指定或另外指示目的地儲存位置,其中模指數結果122將回應於該指令及/或作為該指令之結果而被儲存。作為一實例,指令可具有源及/或目的地運算元欄位,以指定或另外指示針對此些運算元之儲存位置。替代地,針對此些運算元之一或多者的儲存位置可選地對指令為暗示地(例如,對指令之運算碼(opcode)為暗示),以取代被明確地指明。
如顯示,在部署及/或使用期間處理器100可被可操作地耦接(若另外通訊)於記憶體114。應注意,本發明之 實施例關於處理器本身,其能夠或可操作地與記憶體耦接及互動,但其尚未與記憶體耦接。如顯示,在若干實施例中,源運算元116、及其中將儲存模指數結果之目的地儲存位置可以可選地為記憶體中的位置。作為實例,在若干實施例中,指令可以可選地指定或另外指示暫存器(在處理器的暫存器124之集合中),其可儲存針對此些運算元在記憶體中位置之位址或其他指標。替代地,一或多緊縮(packed)資料暫存器、處理器之專用流緩衝器中的位置、或其他儲存位置可被可選地使用於此些源及/或目的地運算元之一或多者。此外,雖然於圖式中被顯示為獨立以利於說明,但在若干實施例中,使用於源運算元(例如,用於底數)之同一儲存位置可選地被重複使用為用以儲存模指數結果之目的地儲存位置。舉例而言,指令可明確地指定用以指示記憶體中用來儲存源運算元的位置之位址,且其對處理器係隱含或固有地(例如,基於指令之運算碼)為其中於記憶體中之同一位置被使用於目的地儲存位置。
暫存器124可代表晶粒上儲存位置,其可操作以儲存資料。在一態樣中,暫存器124可以可選地為32位元或64位元通用暫存器。暫存器可代表架構上可視或對軟體及/或程式設計師可視的架構暫存器,及/或由處理器之指令集之指令所指示並用以識別運算元的暫存器。此些架構暫存器對比於在給定微架構中的其他非架構暫存器(例如,暫時暫存器、重排序緩衝器、退役暫存器等)。在不同微架構中可以不同方式實作暫存器,且不限定於任何特 定類型之設計。適當類型的暫存器之實例包括,但未限於,專用實體暫存器、使用暫存器更名之動態分配實體暫存器、及其組合。
再次參照回圖1,各種不同類型之輸入資訊118,包括程式誤導輸入資訊120,適用於不同實施例。在若干實施例中,輸入資訊可包括底數、指數、模數、從模數預先計算出之一或多參數(例如,一或多縮減常數)、或其各種組合。如將進一步於以下討論,用於模指數之各種縮減演算法(例如,蒙哥馬利縮減、巴雷特縮減(Barrett reduction)等)界定縮減常數,其通常導出自模數及/或潛在地自其他輸入參數,以幫助簡化模指數之實作。一般而言,足夠允許模指數計算以被執行的任何組合之輸入資訊可選地可被使用於不同實施例中。
此外,此類輸入資訊118之任意者,包括潛在無其任何者或潛在其所有者或任何中間層級,可選地被提供作為程式誤導輸入資訊120以幫助提供期望用於特定實作之任何額外量的保全。作為一實例,若基於模指數計算而導出之秘密金鑰目標在於被使用以保護其不被考慮為足夠秘密之資訊及/或值得由程式誤導所提供之額外保護(例如,如針對由程式設計師執行之特定實作所判定),則無任何輸入資訊被可選地程式誤導。取而代之地,潛在所有增強效能可藉由省略用以解密或另外將此類程式誤導資訊去程式誤導(de-obfuscate)之運算來達成。作為另一實例,若基於模指數計算而導出之秘密金鑰目標在於被使用以保護其被 考慮為足夠秘密之資訊及/或值得由程式誤導所提供之額外保護(例如,如針對由程式設計師執行之特定實作所判定),則從至少若干個到所有的輸入資訊(例如,架構可編程或組態部分)可選地被程式誤導。舉例而言,在一實施例中,程式誤導輸入資訊可選地包括程式誤導底數、程式誤導指數、及程式誤導模數、或其任意組合。
在若干實施例中,指令有彈性地指定或指示輸入資訊之一或多部分是否被程式誤導。舉例而言,指令之一或多位元的一可編程或可組態集合可指示指數是否被程式誤導;指令之一或多位元的另一可編程或可組態集合可指示底數是否被程式誤導;而指令之一或多位元的仍另一可編程或可組態集合可指示模數是否被程式誤導。在其他實施例中,指令可隱晦地指示(例如,其針對運算碼可能為固定)輸入資訊之一或多部分是否被程式誤導。舉例而言,對第一指令之第一運算碼可能為暗示僅第一部分(例如,指數)被程式誤導;對第二不同指令之第二不同運算碼可能為暗示僅第二不同部分(例如,模數)被程式誤導;且對第三仍不同指令之第三仍不同運算碼可能為暗示多個部分(例如,所有的底數、指數、及模數)被程式誤導。此類方法之組合亦可被使用。舉例而言,對運算碼可能為暗示地,第一部分(例如,指數)被程式誤導,且指令之一或多位元的集合可指示第二部分(例如,模數)是否被程式誤導。此些方法之各種不同組合被考慮。
廣泛種類之不同類型的程式誤導輸入資訊120適用於 不同實施例。程式誤導輸入資訊並非實際輸入到模指數計算中的輸入資訊本身。舉例而言,程式誤導指數(E*)並非實際輸入到模指數計算中的指數(E)。取而代之,程式誤導指數(E*)可代表程式誤導值,其可能被去程式誤導以判定實際輸入到模指數計算中的指數(E)。在各種實施例中,程式誤導輸入資訊可包括廣泛種類之不同類型之加密、極複雜、經修改、或另外程式誤導輸入資訊之任意者,從其若不具有困難度、極端困難度、計算不實用性、或不可行性之一(根據目標針對特定實作之特定層級的增強保全)則無法判定實際輸入資訊,除非已知秘密(例如,秘密108)。秘密(例如,秘密108)可能對處理器係已知,但其無法由軟體(例如,即便最高特權系統層級軟體)來存取或至少無法讀取。
參照回圖1,執行單元106係與解碼單元104耦接,且在若干實施例中係與暫存器124(例如,假設指向源運算元之指標係儲存在暫存器中)耦接。當部署於系統中時,在若干實施例中,執行單元可能係可操作以與記憶體114(例如,在源運算元儲存於其中的前提上用以接收源運算元)耦接。執行單元可接收一或多解碼或另外轉換指令或控制訊號,其代表及/或導出自具有程式誤導輸入資訊指令之模指數102。執行單元亦可接收輸入資訊118用於模指數運算,包括任何可選程式誤導輸入資訊120。在若干實施例中,其可選地有至少若干程式誤導輸入資訊,雖然本發明之範疇並非如此限制。
如顯示,執行單元可包括秘密108、與秘密耦接之去程式誤導單元110、及與去程式誤導單元耦接之模指數單元112。如上述,秘密對執行單元及/或處理器為可用,但對軟體(例如,甚至最特權層級系統軟體)而言其為無法存取或至少無法讀取的。在若干實施例中,去程式誤導單元及/或執行單元及/或處理器可係可操作以回應於及/或作為具有程式誤導輸入資訊指令之模指數之結果(例如,回應於指令或從指令解碼之控制訊號),以使用秘密以將程式誤導輸入資訊120去程式誤導。實際輸入資訊之去程式誤導及/或產生可全然於處理器的侷限(confine)之中執行,以使得實際輸入資訊永遠無法由軟體讀取。在若干實施例中,去程式誤導單元回應於指令為可選地可操作,以當去程式誤導運算並未成功時發訊一錯誤。舉例而言,在若干實施例中,程式誤導輸入資訊可包括鑑別或完整性檢查資訊,其可使用於判定去程式誤導運算是否提供可鑑別輸入資訊及/或具有完整性之輸入資訊。在一態樣中,此類失敗去程式誤導可能導致將被發訊之錯誤及/或可能導致指令之進一步執行被停止(例如,以避免模指數結果免於被產生及儲存)。
本文中秘密及去程式誤導將被廣泛地解譯成基於廣泛種類之不同類型之資訊、邏輯、或資訊及邏輯之組合的任意者,從其可自程式誤導輸入資訊判定實際輸入資訊;但若缺乏其則假設不具有至少困難度或極端困難度則無法自程式誤導輸入資訊判定實際輸入資訊。在若干實施例中, 程式誤導輸入資訊可代表其可代表秘密加密金鑰之加密輸入資訊及秘密,該秘密加密金鑰可被儲存及/或產生於晶粒上,且可被使用以將加密輸入資訊解密以判定實際輸入資訊。在其他實施例中,秘密可代表可以特定方式(例如,根據加密或數學演算法)與程式誤導輸入資訊組合以判定實際輸入資訊之資訊。
在其他實施例中,秘密可代表可以特定方式(例如,根據加密、數學、或邏輯轉換)使用以修改或轉換程式誤導輸入資訊以判定實際輸入資訊之資訊及/或邏輯。在進一步實施例中,秘密可代表實際輸入資訊,其本身儲存成在處理器上之秘密,其當程式誤導輸入資訊具有特定需要的值或通過測試或準則時可被選擇並使用。在另外其他實施例中,秘密可代表資訊及/或邏輯,其可操作並以秘密方式修改該程式誤導輸入資訊以決定實際輸入資訊。在若干實施例中,秘密可包括稍早軟體儲存於處理器之中但稍後軟體藉由其無法讀取的資訊及/或稍早軟體組態於處理器中但無法由稍後軟體讀取或重新組態之邏輯,雖然本發明之範疇並未限制於此。替代地,秘密可代表其他類型之秘密晶粒上資訊及/或秘密晶粒上邏輯,其可被使用以將程式誤導輸入資訊去程式誤導。此些方法之各種組合亦一般係適用的。應瞭解此些僅是一些說明性實例。於本文中它處討論之其他方法亦適用。此外,仍有其他方法對於熟悉該技術領域者為明顯的,且其具有本揭示之優勢。
模指數單元112為可操作以從輸入資訊之完整集合 (例如,包括任何去程式誤導輸入資訊)產生模指數結果122。在若干實施例中,模指數結果可能產生於執行單元與具有程式誤導輸入資訊指令之相同單一模指數的效能之侷限內。一潛在優勢在於此可能有助於避免暴露加密處理部分或中間結果,其可能潛在地被分析以揭露應為秘密之資訊(例如,前文所述各種類型之程式誤導輸入資訊的任意者)。反之,在許多實施例中,所有此類中間結果可保持於模指數單元及/或執行單元106及/或處理器之中,以取代被儲存於架構可視暫存器或記憶體位置中。一旦產生模指數結果,執行單元可操作以回應於及/或作為指令之結果,用以儲存模指數結果於由指令指示之目的地儲存位置中(例如,於記憶體中的位置)。通常,在許多公用金鑰加密技術用途之情況下,模指數結果可儲存於未加密且非程式誤導格式中,因為其通常要由一般軟體處理。
有利地,藉由提供程式誤導輸入資訊而非實際輸入資訊給處理器,軟體(例如,甚至特權惡意軟體)可能無法直接讀取實際輸入資訊,且可能以至少困難度而不能夠判定實際輸入資訊,或在若干實施例中為極度困難度(例如,根據目標針對特定實作之特定層級的增強保全)。舉例而言,當連同公用金鑰加密技術一起使用時,此可有助於保護秘密或私用資訊(例如,私用金鑰)及/或另外幫助增加保全。
執行單元及/或處理器可包括特定或特別邏輯(例如,電晶體、積體電路、或潛在與韌體(例如,儲存於非揮發 性記憶體中的指令)組合之其他硬體),其可操作以回應於及/或作為指令之結果(例如,回應於指令或解碼自其之控制訊號)而執行具有程式誤導輸入資訊指令之模指數及/或儲存模指數結果。作為實例,執行單元可包括微碼引擎、狀態機器、或類似者以執行模指數之運算。在若干實施例中,執行單元可包括一或多輸入結構(例如,埠、互連、介面)以接收輸入資訊及/或程式誤導輸入資訊、耦接至其之電路或邏輯以接收及處理該接收資訊並產生模指數結果、及一或多耦接至其之輸出結構(例如,埠、互連、介面)以輸出模指數結果。
為了避免模糊本說明,相對簡單處理器被顯示及描述。然而,處理器可選地包括其他處理器組件。舉例而言,各種不同實施例可包括針對圖9-11之任意者所顯示及描述之組件的各種不同組合及組態。處理器之所有組件可被耦接在一起以允許其如所期望地運算。
圖2係執行具有程式誤導輸入資訊指令之模指數的實施例的方法230之實施例的方塊流程圖。在各種實施例中,方法可由處理器、指令處理設備、或其他數位邏輯裝置執行。在若干實施例中,方法230可藉由及/或於圖1的處理器100之中執行。本文針對處理器100所述之組件、特徵、及特定可選細節亦可選地適用於方法230。替代地,方法230可藉由及/或於不同處理器或設備之中執行。此外,處理器100可執行不同於方法230之方法。
該方法包括,於方塊231,接收具有程式誤導輸入資 訊指令之模指數。在各種態樣中,該指令可在處理器或其一部分(例如,指令提取單元、解碼單元、匯流排介面單元等)被接收。在各種態樣中,指令可接收自處理器外及/或晶粒外之源(例如,從記憶體、互連等);或接收自處理器上及/或晶粒上之源(例如,從指令快取、指令佇列等)。
具有程式誤導輸入資訊指令之該模指數可指定或另外指示複數個源運算元(例如,在記憶體中的複數個位置),其儲存用於模指數運算之輸入資訊。在若干實施例中,輸入資訊可包括足夠用以針對給定方法提供所有需要輸入的底數、指數、模數、從模數預計算出之一或多參數(例如,一或多縮減常數)、或其各種組合。在若干實施例中,輸入資訊之至少若干者(例如,前述輸入資訊之任意者)可選地被程式誤導,雖然此並非必需。該程式誤導輸入資訊可與本文它處所述者相同或類似。
於方塊232,可回應於及/或作為具有程式誤導輸入資訊之模指數的結果而儲存模指數結果。模指數結果可被儲存於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指定或另外指示。
所說明方法涉及架構運算(例如,從軟體角度而言為可視)。在其他實施例中,該方法可選地包括一或多微架構運算。作為實例,該指令可被提取、解碼、失序排程,源運算元可被存取,執行單元可執行微架構運算以實作該指令等。在若干實施例中,用以實作指令之微架構運算可選地包括針對圖3或6-8之任意者所述及顯示之任意者, 包括針對其所述及之變體。可選地執行之一例示性運算係用以將該程式誤導輸入資訊去程式誤導。此可選地包括本文它處所討論之去程式誤導方法之任意者的運算。
一般而言,完全執行模指數可佔據相對大量之循環(例如,從上千到上萬或取決於運算元大小為甚至更多)。由於將運算元去程式誤導所需之計算,完全執行具有程式誤導輸入資訊指令之模指數可甚至佔據更多的循環。
部分由於相對大量之循環,指令之執行有時可能在完成之前被中斷。在若干實施例中,一或多種可能預防措施可選地被採取,以幫助確保部分或中間狀態(其可能潛在地被分析以判定秘密資訊)不會變成可由軟體讀取的。
在若干實施例中,在執行該指令期間回應於中斷,該執行單元可能係可操作以停止執行模指數計算及/或該指令、將中斷時(或左右)計算出之當前中間狀態加密、及將該加密中間狀態儲存在儲存位置中(例如,記憶體中的位置)。作為實例,可以處理器之秘密金鑰將中間狀態加密,該處理器之秘密金鑰無法由軟體讀取。在中斷被解決之後,加密中間狀態可被擷取、解密、及該演算法可使用所取回之中間狀態來繼續開始。在其他實施例中,在執行該指令期間回應於中斷,該執行單元可能係可操作以停止執行模指數計算及/或該指令、及將中斷時(或左右)計算出之當前中間狀態儲存於無法由軟體讀取的處理器之晶粒上儲存中(例如,非架構上可視儲存)。在其他實施例中,在執行該指令期間回應於中斷,該執行單元可能係可操作以 停止執行模指數計算及/或該指令、及將中斷時(或左右)計算出之當前中間狀態丟棄。此些方法之任意者可選地使用於圖1之處理器100及/或圖2之方法230中。
為了進一步說明特定概念,針對模指數考慮少數可能實作演算法係有幫助的。一個可能用於實作模指數之演算法(不具有任何特別所謂縮減方法)顯示於以下虛擬碼:
如所示,指數可由其獨立位元(ei)代表,其中ei為從e0到e1023之範圍內。初始地,值A可被設定為等於一。接著,值A可在迴圈的1024次迭代之每次迭代期間更新。特別地,在1024次迭代之各次之中,值A可被更新為等於將其平方後以N為模所得之值(亦即,A=A2 modulo N)。針對1024次迭代之每一次,當針對迴圈之對應指數位元(亦即,ei)被設為二進制一時(亦即,當ei=1時),值A進一步被更新為等於將其與底數(B)相乘後以N為模所得之值(亦即,A=A*B modulo N)。否則,當針對迴圈之對應指數位元(亦即,ei)被清除成(cleared to)二進制零時(亦即,當ei=0時),不執行此運算。在迴圈結束處,A之值被回傳作為模指數之結果。
依照需求可選地使用此用於實作模指數之演算法。然 而,通常此演算法之實作趨向為緩慢的。作為一例子,於迴圈之迭代中執行的模數運算一般趨向為緩慢以實作的。代表性地,以類除法運算來實作此些運算,至少相較於其他類型之像是乘法的運算,該等類除法運算通常需要花相對長時間來計算。此外,需要在迴圈之各迭代之中執行此類模數運算,其中可能存在很多的迭代(例如,在此實例中為1024,或在其他情況中甚至為更多)。據此,雖然根據若干實施例本演算法適用於實作模指數,但可能渴望以使用運用特殊模組化縮減方案之模指數演算法以為了達到較快之執行。
圖3係以蒙哥馬利縮減(Montgomery reduction)執行具有程式誤導輸入資訊指令之模指數的實施例的詳細方法335之例示性實施例的方塊流程圖。在各種實施例中,方法可由處理器、指令處理設備、或其他數位邏輯裝置執行。在若干實施例中,方法335可藉由及/或於圖1的處理器100之中執行。本文針對處理器100所述之組件、特徵、及特定可選細節亦可選地適用於方法335。替代地,方法335可藉由及/或於不同處理器或設備之中執行。此外,處理器100可執行不同於方法335之方法。
該方法包括,於方塊336,接收具有程式誤導輸入資訊指令之模指數。該指令可指定或另外指示一或多源運算元,其儲存代表至少足夠輸入到蒙哥馬利縮減演算法的可選地程式誤導底數(B)、可選地程式誤導指數(E)、可選地程式誤導模數(N)、可選地使用於蒙哥馬利縮減中的一或 多可選程式誤導縮減常數、或其任意組合。實施例考慮將此類範圍包括從完全沒有到全部都有的輸入資訊之任意組合程式誤導。
接著在方塊337,任意可選程式誤導輸入資訊(前提為針對特定實施例有存在任何程式誤導輸入資訊的情況下)可被去程式誤導。可使用本文它處所述的方法及/或方式之任意者來執行去程式誤導。
接著在方塊338,可計算出所需要蒙哥馬利縮減的縮減常數之任意者,前提為其未已被提供為由源運算元提供的輸入資訊中的預計算縮減常數。替代地,縮減常數之一或多者可選地被提供作為由源運算元提供的輸入資訊中的預計算常數。此可幫助避免需要於指令之執行的侷限之中計算此些縮減常數。在若干使用1024位元運算元之實施例中,方法可使用兩個縮減常數(R2及U),其藉由蒙哥馬利縮減界定成模數(N)之函式,如方程式2及3所示:R2=22048 modulo N 方程式2
U=-N-1 modulo (264) 方程式3
接下來在方塊339,可使用運用縮減常數R2及U之蒙哥馬利縮減執行模指數計算。作為實例,此可如以下虛擬碼所示一般執行:
在以上虛擬碼中:(1)數字X及Y之蒙哥馬利乘法可代表(X*Y* R-1)mod N;(2)數字X之蒙哥馬利平方可代表(X*X* R-1)mod N;(3)數字X之蒙哥馬利縮減可代表(X* R-1)mod N。
指數可再次由其獨立位元(ei)代表,其中在此1204位元之指數的特定實例中ei為從e0到e1023之範圍內。初始地,蒙哥馬利乘法可被執行以藉由將底數乘以常數R2來計算B'值(亦即,B’=Montgomery-multiplication(B,R2))。接著,值A可被設定為等於B'。接著,可選態樣被實作,其中指數(E)中最高有效設定位元的索引(X)被識別,且接著僅針對計數器(i)之值而可選地執行迴圈,該計數器之值在從(X-1)到零的範圍內。換言之,取代執行迴圈之最大數量迭代(例如,1024次迭代),對應於較指數(E)中最高有效設定位元更有效之空白位元的迭代可選地被省略。此有助於改善一些情況之效能,但其係可選而非必需的。取而代之地,若有需要,則迴圈之最大數量迭代 (例如,1024次迭代)可選地被執行。
接著,值A可在迴圈之每次迭代期間更新。特別地,在各次迭代之中,值A可被更新為等於將其蒙哥馬利平方。應注意,相對於以上所述之非蒙哥馬利實作,無須執行類除法運算且從而改善效能。針對各次迭代,當針對迴圈之對應指數位元(亦即,ei)被設為二進制一時(亦即,當ei=1時),值A進一步被更新為等於其與B'值之蒙哥馬利乘法。否則,當針對迴圈之對應指數位元(亦即,ei)被清除成(cleared to)二進制零時(亦即,當ei=0時),不執行此運算。應再次注意,相對於以上所述之非蒙哥馬利實作,無須執行類除法運算且從而改善效能。在迴圈結束處,對最終值A執行蒙哥馬利縮減。此代表模指數結果。
再次參照圖3,在方塊340,藉由蒙哥馬利縮減所計算出來之模指數結果可被儲存於由指令所指示之目的地儲存位置中。本文它處所述之目的地儲存位置之任意者為適當的。
前述方法僅代表一個以蒙哥馬利縮減執行具有程式誤導輸入資訊指令之模指數的方法之說明性例示實施例。其他方法亦被考慮且對於熟悉該技術領域者為明顯的,及其具有本揭示之優勢。舉例而言,所說明方法係基於1024位元之底數、指數、及模數,雖然在其他實施例中,該底數、指數、及模數可具有各種其他為二的次方之大小,範圍橫跨好幾數量級(例如,可在從256位元到16,384位元之層級的範圍內)。作為另一實例,所說明方法是基於文字層級(word-level)蒙哥馬利縮減演算法,其使用64位元 之文字大小,雖然在其他實施例中可選地使用32位元或其他的文字大小。此外,該方法以相對簡單之型態被說明,但運算可被可選地加入及/或移除自該方法。此外,運算之特定順序為非必需,反而特定運算可選地被執行於其他順序中及/或被重疊。
一具有程式誤導輸入資訊之適當模指數的特定例示性實施例,命名為MODEXP_LOCKED1,被說明於以下之虛擬碼之中。
常數U如下(其亦可使用於本文之其他蒙哥馬利縮減運算中)而使用於蒙哥馬利縮減運算之中:
MODEXP_LOCKED1指令可明確地指定或隱晦地指示第一暫存器(R1),舉例而言第一64位元通用暫存器,其係用於儲存有效位址、指標、或記憶體中位置之其他指示,該記憶體中位置係用以儲存具有程式誤導模數之第一源運算元(Src1)。該指令亦可明確地指定或隱晦地指示第二暫存器(R2),舉例而言第二64位元通用暫存器,其係用於儲存有效位址、指標、或記憶體中位置之其他指示,該記憶體中位置係用以儲存具有程式誤導指數之第二源運算元(Src2)。該指令亦可明確地指定或隱晦地指示第三暫存器(R3),舉例而言第三64位元通用暫存器,其係用於儲存有效位址、指標、或記憶體中位置之其他指示,該記憶體中位置係用以儲存初始具有程式誤導底數之源-目的地運算元(SrcDst),且在完成指令時作用為目的地儲存位 置,在其中將儲存模指數結果。替代地,用於指示本文它處所揭示之源及/或目的地運算元的各種其他方式之任意者反而可選地被使用。
在此實施例中,所有底數、指數、及模數被程式誤導。替代地在其他實施例中,任一或多包括底數、指數、及模數之任何組合者可選地被程式誤導。該指令可控制或另外導致執行單元將程式誤導底數、指數、及模數去程式誤導。本文它處所提及之去程式誤導方法之任意者係適當的(例如,以下針對圖6-8所述的方法之一)。作為一說明性實例,執行單元可使用秘密處理器加密金鑰將經加密的輸入資訊解密。假設當去程式誤導之任意者失敗時,錯誤被可選地發訊。
在此實施例中,由於蒙哥馬利縮減常數未透過源運算元被提供作為輸入,故指令可控制或另外導致執行單元計算蒙哥馬利縮減常數。特定地,常數R2與U可被計算於指令之執行之中。代表性地,此些常數可對每個模指數運算/指令被預計算出來一次。接著,指令可控制或另外導致執行單元運用該縮減常數來執行模指數計算之蒙哥馬利縮減。最終地,回應於該指令,執行單元可將模指數結果儲存在目的地儲存位置中(例如,在此情況中,儲存在SrcDst中)。
另一具有程式誤導輸入資訊之適當模指數的特定例示性實施例,命名為MODEXP_LOCKED2,被說明於以下之虛擬碼之中。
MODEXP_LOCKED2指令相似於MODEXP_LOCKED1指令。以上針對MODEXP_LOCKED1指令提及之討論及變體亦可選地適用於MODEXP_LOCKED2指令。然而一差異在於MODEXP_LOCKED2指令透過源運算元提供縮減常數R2及U作為輸入(例如,作為預計算常數)。在所說明實施例中,縮減常數可選地串連(concatenate)(例如,藉由符號∥所示),或另外連同模數一起被提供,雖然此並非必需。縮減常數係可從模數導出,故將彼者保留在同一源運算元中是有好處的。然而,在其他實施例中,縮減 常數可由其他源運算元及/或多個源運算元提供。由於縮減常數被提供作為輸入,故執行單元無須計算此些縮減常數作為指令之運算的部分。取而代之地,若縮減常數被程式誤導,其可被去程式誤導,如針對其它輸入參數一般。在若干實施例中,若模數被程式誤導,則縮減常數亦可能被程式誤導;然而若模數並未被程式誤導,則縮減常數可能未被程式誤導。
針對模指數之另一適當縮減演算法之實例為巴雷特縮減。其他實施例係關於相似於圖3所示之方法,除了使用巴雷特縮減常數處,且巴雷特縮減演算法被使用以執行模指數。在若干實施例中,方法可使用縮減常數,其藉由巴雷特縮減界定成模數(N)之函式,如方程式4所示:1. U=floor(22048/N) 方程式4
巴雷特縮減可使用如以下虛擬碼所示之縮減常數:
針對1024位元模數之縮減本身可如下執行:
2個數字X及Y之巴雷特乘法可被執行為Barrett-reduction(X*Y,N,U)。針對平方運算,此亦可能相似地被執行。應注意此某方面而言相似於兩數字之蒙哥馬利乘法,其可如同兩數字之一般乘法被執行,其後跟隨蒙哥馬利縮減。
巴雷特縮減與前述蒙哥馬利縮減具有某些程度之相似性。為避免模糊本說明,主要將不同或附加特徵描述而不重複所有相似特徵及可選變體。然而,應被理解針對蒙哥馬利縮減所論及之特徵及可選變體亦可選地適用於巴雷特縮減,除非有另行指明,或除非另外係呈清楚明顯的(例如,除非其與巴雷特縮減不相容)。
仍另一具有程式誤導輸入資訊之適當模指數的特定例示性實施例,命名為MODEXP_LOCKED3,與以上針對 MODEXP_LOCKED1所顯示的相同,除了使用巴雷特縮減常數及計算以取代蒙哥馬利縮減常數及計算。仍進一步具有程式誤導輸入資訊之適當模指數的特定例示性實施例,命名為MODEXP_LOCKED4,與以上針對MODEXP_LOCKED2所顯示的相同,除了使用巴雷特縮減常數及計算以取代蒙哥馬利縮減常數及計算。
圖4係具有程式誤導輸入資訊指令之模指數402的例示性實施例的方塊圖。該指令包括操作碼或運算碼442。運算碼可代表複數個位元、或一或多欄位,其可運算以識別將被執行之指令及/或運算(例如,具有程式誤導輸入資訊運算之模指數)。
指令亦包括第一源運算元指示欄位444、第二源運算元指示欄位446、及第三源/目的地運算元指示欄位448。此些源指示欄位可被使用以指定或另外指示針對用以提供輸入參數及/或可選地程式誤導輸入參數之源運算元的源儲存位置。作為實例,此些欄位之各者可包括位元以指定暫存器之位址、記憶體位置、或其他用於相關運算元之儲存位置。在其他實施例中,可使用更少或更多的源及/或目的地指示欄位。舉例而言,輸入資訊可選地被提供於單一較大記憶體位置中。作為另一實例,此些儲存位置之一或多者可選地對指令(例如,運算碼)係暗示的或固有的,以取代被明確指定。進一步若有需求的,附加獨立目的地指示欄位可選地被使用以取代使第三欄位為源/目的地指示欄位。
在若干實施例中,指令亦可選地具有運算元大小指示欄位450。運算元大小指示欄位可允許源運算元之大小被指定或指示。此有助於提供將被使用的有彈性或可變、及架構上可編程或可組態之大小固定運算元。在若干實施例中,單一大小欄位可被使用以指定或另外指示單一大小用於所有的源運算元,雖然本發明之範疇並未如此限制。在若干實施例中,為了提供相對高層級之彈性,指令可允許運算元大小被組態成在約256位元到約16,000位元的範圍內,雖然本發明之範疇並未限制於任何已知大小。替代地,固定大小運算元可選地被使用,若有需要,則運算元大小指示欄位可選地被省略。作為實例,固定足夠大的運算元大小可選地被使用以容納預期被使用於特定實作的運算元大小,且任何未被較小運算元佔據之未使用位元可選地以零被填滿。
在若干實施例中,指令亦可選地具有一或多運算元程式誤導指示欄位452。該一或多運算元程式誤導指示欄位之各者可被使用以指示對應運算元是否被可選地程式誤導。作為實例,在若干實施例中,可能有第一運算元程式誤導指示欄位或一或多位元之集合以指示第一運算元(例如,將被使用以儲存底數)是否被程式誤導;可能有第二運算元程式誤導指示欄位或一或多位元之集合以指示第二運算元(例如,將被使用以儲存指數)是否被程式誤導;及可能有第三運算元程式誤導指示欄位或一或多位元之集合以指示第三運算元(例如,將被使用以儲存模數)是否被程 式誤導。替代地,指令之運算碼可選地修復哪個被程式誤導之運算元(例如,底數、指數、及模數的運算元)。舉例而言,不同運算碼指令可選地被提供用於底數、指數、及模數被程式誤導;底數、指數、及模數被全部被調變;及底數、指數、及模數全部沒有被調變(僅列出幾個例子)之不同組合。有利地,此有助於允許程式設計師組態或指定哪個運算元要被程式誤導,以令希望為安全之運算元可係安全的,而令未希望係安全之其他運算元不須被去程式誤導。作為一實例,在若干演算法中,諸如DSA及Diffie-Hellman,一些運算元為公用,諸如模數(例如,NIST發表之質數)。在Diffie-Hellman階段1中,底數亦被發表或為公用,而在階段2中其需要係秘密或私用。在若干情況中,可藉由不將公用的資訊程式誤導及不需要將其去程式誤導而達到較佳效能。
此僅係適當指令之一個說明性實例。替代實施例可包括所說明欄位之子集及/或可添加附加欄位。欄位之所說明配置並非必需,該等欄位反而是可以各種方式重新配置。此外,欄位之各者可能由相鄰位元之集合組成、或可能包括非相鄰或獨立位元,其邏輯性地代表該欄位。
圖5係立即數554的例示性實施例的方塊圖,該立即數554具有運算元大小指示欄位550之例示性實施例及運算元程式誤導指示欄位556之例示性實施例。在此實施例中,立即數係8位元立即數,雖然可選地可使用較大或較小之立即數。
立即數之位元[3:0]表示底數運算元大小指示欄位550A。替代地,較少或較多位元可被使用以表示底數運算元大小,潛在地作為來自最小運算元大小之偏移。立即數之位元[7]表示三倍運算元大小指示欄位550B。底數運算元大小指示欄位及三倍運算元大小指示欄位一起或共同地表示運算元大小指示欄位以指示運算元之大小為數種不同可能大小之任一者。在若干實施例中,底數運算元大小指示欄位可指定用於運算元之底數大小,且三倍運算元大小指示欄位可指示該底數大小是否被乘以三以判定運算元之大小。作為實例,在一實作中,位元[3:0]可被向左移位一位元以判定該底數大小,且若位元[7]被設定成二進制一時將底數大小乘以三。否則,若位元[7]被清除成二進制零時,底數大小可被使用作不具三倍大小之運算元大小。三倍運算元大小指示欄位之一潛在優勢在於一些用途涉及不是二的次方之運算元大小,而涉及是二的次方之三倍的運算元大小。三倍運算元大小指示欄位允許藉由此類三的次方之便利定標。
立即數之位元[6:4]表示三個運算元程式誤導指示欄位556。此些欄位之各者可被使用以指示三個源運算元之不同對應者是否被程式誤導。作為一說明性實例,位元[6]可對應於源運算元以儲存模數;位元[5]可對應於源運算元以儲存指數;及位元[4]可對應於源運算元以儲存底數。替代地,此些位元可以不同的方式被分配給底數、指數、及模數。位元[6:4]之各者的一個值(例如,二進制 一)可指示對應源運算元被程式誤導,而另一值(例如,二進制零)可指示對應源運算元並未被程式誤導。此類每個運算元程式誤導指示欄位之一潛在優勢係增強彈性(enhanced flexibility)。舉例而言,若干使用可能具有指數、模數、及底數之給定一者作為秘密,而其他使用可能具有相同給定一者作為公用或私用,且對應運算元程式誤導指示欄位可允許程式設計師以將該給定者程式誤導或是不將其程式誤導,以達到更多保全或避免不必要且傾向降低效能之去程式誤導。
進一步具有程式誤導輸入資訊之適當模指數的特定例示性實施例,命名為MODEXP_LOCKED5,被說明於以下之虛擬碼之中。
MODEXP_LOCKED5指令相似於MODEXP_LOCKED1。以上針對MODEXP_LOCKED1指令提及之討論及變體亦可選地適用於MODEXP_LOCKED5指令。然而一差別在於MODEXP_LOCKED5指令允許源運算元(Src1、Src2、及SrcDst)之各者被可選地程式誤導(例如,可編程組態)。僅有此些程式誤導參數需要被去程式誤導。
仍另一具有程式誤導輸入資訊之適當模指數的特定例示性實施例,命名為MODEXP_LOCKED6,與以上針對MODEXP_LOCKED3所顯示的相同,除了其使用與MODEXP_LOCKED5指令相同的立即數及程式誤導組態性。進一步具有程式誤導輸入資訊之適當模指數的特定例示性實施例,命名為MODEXP_LOCKED7,與以上針對MODEXP_LOCKED4所顯示的相同,除了其使用與MODEXP_LOCKED5指令相同的立即數及程式誤導組態性。
圖6係可操作以回應於具有加密輸入資訊指令之模指數將來自加密模指數輸入資訊620之實際模指數輸入資訊 660解密的執行單元606之實施例的方塊圖。該加密輸入資訊為程式誤導輸入資訊之實例。加密輸入資訊係儲存於儲存位置616(例如,暫存器或記憶體位置),其可被指令指定或另外指示。執行單元包括解密單元610。執行單元及/或解密單元可被耦接以接收加密輸入資訊。解密單元及/或執行單元亦可被耦接以接收秘密加密金鑰608。秘密加密金鑰對解密單元及/或執行單元為可存取且可用,但對軟體662(例如,甚至最高特權系統軟體)而言其為無法存取或至少無法讀取的。在若干實施例中,初始地秘密加密金鑰可已被軟體寫入或儲存於處理器中,但接續地軟體662可能無法讀取其。在所說明實施例中,秘密加密金鑰為執行單元之部分。在其他實施例中,秘密加密金鑰可取而代之地分離自執行單元,但與執行單元及/或解密單元(例如,儲存在處理器金鑰庫之中)耦接。
解密單元可接收秘密加密金鑰且可操作以使用該秘密加密金鑰將加密輸入資訊解密成解密輸入資訊660。在該技術領域中已知的各種不同解密演算法係適當的,舉例而言,該等解密演算法包括先進加密標準(AES)、資料加密標準(DES)、三倍DES(3DES)、維斯特密碼(RC4)、及其他方塊/流密碼。模指數單元612係與解密單元耦接,且可接收該解密輸入資訊。模指數單元可使用該解密輸入資訊用以計算模指數結果,如本文中它處所述一般。有利地,使用於模指數計算中的實際輸入資訊660可藉由執行單元及/或其處理器回應於指令而產生,但此實際輸入資 訊可能永遠無法常駐於處理器之架構暫存器、或記憶體位置、或任何其他架構上可視儲存位置、或另外可由軟體662讀取之可讀取媒體中。
圖7係可操作以回應於具有程式誤導輸入資訊指令之模指數從模指數輸入資訊指示器720判定秘密模指數輸入資訊760的執行單元706之實施例的方塊圖。該輸入資訊指示器為程式誤導輸入資訊之實例。指示器廣泛地代表可被使用以選擇、識別、或另外指示秘密實際輸入資訊之集合的各式各樣不同類型之資訊或值之任意者。指示器可被儲存於儲存位置716(例如,暫存器或記憶體位置),其可被指令指定或另外指示。
執行單元包括模指數輸入資訊判定單元710,其亦於本文中簡單地被參照為判定單元。執行單元及/或判定單元可被耦接以接收輸入資訊指示器。判定單元及/或執行單元亦可耦接至不同組的秘密模指數輸入資訊708。該不同的秘密模指數輸入資訊集表示一秘密,其對判定單元及/或執行單元為可存取且可用,但對軟體762(例如,甚至最高特權系統軟體)而言其為無法存取或無法用的。在所說明實施例中,該不同的秘密輸入資訊集為執行單元之部分。在其他實施例中,該不同的秘密輸入資訊集可取而代之地分離自執行單元,但與執行單元及/或解密單元耦接。判定單元710可操作以使用指示器720來從不同的秘密輸入資訊708集判定或獲得秘密輸入資訊760之集合。
在不同實施例中,判定單元可以不同方式使用指示器 以判定秘密輸入資訊。在若干實施例中,不同的秘密輸入資訊集可被排序程列表、表格、陣列、或其他順序配置。指示器可代表索引、偏移、數字、或其他指示器以選擇或指示秘密輸入資訊之特定集合。舉例而言,值8之指示器可在陣列之八個條目中選擇秘密輸入資訊。在其他實施例中,指示器可能係識別符。不同的秘密輸入資訊集可不必要以任何特定順序配置。然而,不同的秘密輸入資訊集之各者可具有不同對應特別識別符。舉例而言,第一集可具有識別符「00000000」;第二集可具有識別符「00000010」;第三集可具有識別符「01000000」;且依此類推。識別符可匹配到秘密輸入資訊之集合的識別符,以為了選擇或指示秘密輸入資訊之集合。此些僅是一些說明性實例。其他使用指示器以判定輸入資訊之秘密集合的方法被考慮且對於熟悉該技術領域者為明顯的,及其具有本揭示之優勢。
模指數單元712係與判定單元710耦接,且可接收該秘密輸入資訊760。模指數單元可使用該秘密輸入資訊用以計算模指數結果,如本文中它處所述一般。有利地,秘密輸入資訊可藉由執行單元及/或其處理器回應於指令而產生,但可能永遠無法由軟體762讀取。
圖8係可操作以回應於具有程式誤導輸入資訊指令之模指數從可鑑別程式誤導輸入資訊820判定去程式誤導及經鑑別模指數輸入資訊860的執行單元806之實施例的方塊圖。可鑑別程式誤導輸入資訊係儲存於儲存位置816(例 如,暫存器或記憶體位置),其可被指令指定或另外指示。輸入資訊除了被程式誤導亦係可鑑別的。在若干實施例中,此類鑑別可藉由將附加位元(例如,鑑別或完整性檢查位元)加到程式誤導輸入資訊來達成。
執行單元包括模指數輸入資訊去程式誤導及鑑別單元810。此單元亦於本文中被簡單地參照為去程式誤導及鑑別單元。執行單元及/或去程式誤導及鑑別單元可被耦接以接收可鑑別程式誤導輸入資訊。去程式誤導及鑑別單元及/或執行單元亦可能被耦接到秘密808,其對軟體862(例如,甚至最特權系統軟體)而言為無法存取或至少無法讀取的。在所說明實施例中,秘密為執行單元之部分。在其他實施例中,該秘密可取而代之地分離自執行單元,但與執行單元及/或解密單元耦接。
去程式誤導及鑑別單元可能係可操作以使用秘密及可鑑別程式誤導輸入資訊以獲得該經鑑別去程式誤導輸入資訊860。可如本文它處所述來執行去程式誤導。在若干實施例中,可鑑別程式誤導輸入資訊可包括加密及可鑑別輸入資訊。作為實例,在若干實施例中,其中包括執行單元之處理器可具有編碼金鑰指令於其指令集之中。處理器可執行編碼金鑰指令以產生可鑑別程式誤導輸入資訊,其包括程式誤導輸入資訊加上附加鑑別或完整性檢查資訊。替代地,金鑰繞回演算法可選地被使用以提供可鑑別及程式誤導輸入資訊。去程式誤導及鑑別單元可使用秘密或隱藏加密金鑰而可操作以解密及鑑別此類資訊。
若所產生的去程式誤導輸入資訊並非所期待的及/或與鑑別資訊不一致時,則鑑別會失敗。在若干實施例中,在此類失敗鑑別之情況中,執行單元接著會發訊錯誤864。舉例而言,錯誤可能被遞送到軟體(例如,作業系統之錯誤處理程序)。在此類情況中,處理器可停止執行該指令而不儲存輸出。
模指數單元812係與去程式誤導及鑑別單元810耦接,且可接收該經鑑別去程式誤導輸入資訊860。模指數單元可使用該經鑑別去程式誤導輸入資訊用以計算模指數結果,如本文中它處所述一般。有利地,可連同程式誤導一起使用鑑別或完整性檢查。
其他實施例相關於不指示程式誤導輸入資訊且不具有將輸入資訊程式誤導及去程式誤導之能力的模指數指令。此些指令相似於本文揭示之其他模指數指令,例外處在於,取代指示程式誤導輸入資訊,此些指令僅能夠指示非程式誤導輸入資訊。非程式誤導輸入資訊可能係本文它處提及之任意者(例如,實際使用以執行模指數之底數、指數、及模數)。可能沒有將輸入資訊解密或另外去程式誤導之需要,因為其未被程式誤導且可直接被使用於模指數計算中。撇開此類程式誤導/去程式誤導差別,指令可能另外具有與本文揭示其他模指數指令相似或相同的特徵及變體。代表性地,此類指令可被使用於特定實作中,其中將輸入資訊程式誤導可能係不必要或足夠重要的。舉例而言,此可能係其中加密金鑰為短命之情況(例如,僅被使 用於一或少數個加密),其中將被加密之資料並非足夠重要以將該程式誤導適當化,其中該指令係用於非加密模指數等。在此類情況中,將輸入資訊程式誤導可能係具有較少好處的,而藉由避免需要執行去程式誤導,一般可獲得效能之若干增加。
例示性核心架構、處理器、及計算機架構
針對不同目的,可以不同方式且在不同處理器中實作處理器核心。舉例而言,此類核心之實作包括:1)目標用於通用計算的通用依序核心;2)目標用於通用計算的高效能通用失序核心;3)目標主要用於圖形及/或科學(通量)計算的專用核心。不同處理器之實作包括:1)CPU包括目標用於通用計算的一或多通用依序核心及/或目標用於通用計算的一或多通用失序核心;及2)共處理器包括目標主要用於圖形及/或科學(通量)的一或多專用核心。此類不同處理器導致不同計算機系統架構,其包括:1)在分離自CPU的晶片上的共處理器;2)在與CPU同一封裝中的獨立晶粒上的共處理器;3)在與CPU同一晶粒上的共處理器(在該情況中,此類共處理器有時被稱作專用邏輯,諸如整合圖形及/或科學(通量)邏輯、或專用核心);及4)包括在與所述CPU同一晶粒上的系統單晶片(有時被稱作應用核心或應用處理器)、上述共處理器、及附加功能性。接下來說明例示性核心架構,並隨後接著例示性處理器及計算機架構之說明。
例示性核心架構 依序及失序核心方塊圖
圖9A係說明根據本發明之實施例的例示性依序管線及例示性暫存器更名、失序發出/執行管線兩者的方塊圖。圖9B係說明根據本發明之實施例將被包括於處理器中的例示性依序架構核心之實施例及例示性暫存器更名、失序發出/執行架構核心兩者的方塊圖。圖9A-B中的實線框說明依序管線及依序核心,而虛線框之選擇性添加說明暫存器更名、失序發出/執行管線及核心。有鑒於依序態樣為失序態樣之子集,故失序態樣將被討論。
在圖9A中,處理器管線900包括提取級902、長度解碼級904、解碼級906、分配級908、更名級910、排程(亦知為調度(dispatch)或發出(issue))級912、暫存器讀取/記憶體讀取級914、執行級916、寫回/記憶體寫入級918、異常處理級922、及提交級924。
圖9B顯示處理器核心990包括耦接到執行引擎單元950之前端單元930,且兩者皆耦接到記憶體單元970。核心990可係精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。仍作為另一選項,核心990可係專用核心,舉例而言,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、或圖形核心等。
前端單元930包括耦接到指令快取單元934之分支預測單元932,該指令快取單元934耦接到指令轉譯旁視緩 衝器(TLB)936,其耦接到指令提取單元938,其耦接到解碼單元940。解碼單元940(或解碼器)可解碼指令,並產生一或多微運算、微碼進入點、微指令、其他指令、或其他控制訊號(其解碼自、或其另外反映、或導出自原始指令)作為輸出。可使用各種不同機制來實作解碼單元940。適當機制之實例包括,但未限於,查找表、硬體實作、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心990包括微碼ROM或針對特定巨指令儲存微碼之其他媒體(例如,在解碼單元940中或另外在前端單元930之中)。解碼單元940係耦接到執行引擎單元950中的更名/分配器單元952。
執行引擎單元950包括耦接到退役單元954及一或多排程器單元956之集合的更名/分配器單元952。排程器單元956代表任何數量之不同排程器,包括保留站、中央指令窗等。排程器單元956係耦接到實體暫存器檔案單元958。實體暫存器檔案單元958之各者代表一或多實體暫存器檔案,其不同者儲存一或多不同之資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其係下一個將被執行指令的位址之指令指標)等。在一實施例中,實體暫存器檔案單元958包含向量暫存器單元、寫入遮罩暫存器單元,及純量暫存器單元。此些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元958係由退役單元954重疊,以說明各種其中暫存器更名及失序執 行可被實作的方法(例如,使用重排序緩衝器及退役暫存器檔案;使用未來檔案、歷史緩衝器、及退役暫存器檔案;使用暫存器對照表及暫存器池;等)。退役單元954及實體暫存器檔案單元958係耦接到執行叢集960。執行叢集960包括一或多執行單元962之集合及一或多記憶體存取單元964之集合。執行單元962可對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各種運算(例如,移位、加法、減法、乘法)。雖然若干實施例可包括數種專用於特定功能或功能組之執行單元,但其他實施例可包括都執行所有功能之僅一個執行單元或多個執行單元。排程器單元956、實體暫存器檔案單元958、及執行叢集960被顯示為可能係複數個,此係因為特定實施例建立獨立管線用於特定類型之資料/運算(例如,其各具有其自身排程器單元、實體暫存器檔案單元、及/或執行叢集之純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線-且在獨立記憶體存取管線之情形中,特定實施例被實作,其中僅此管線之執行叢集具有記憶體存取單元964)。應理解在使用獨立管線處,此類管線之一或多者可係失序發出/執行且剩餘者係依序。
記憶體存取單元964之該集合係耦接到記憶體單元970,其可包括耦接到層級2(L2)快取單元976的耦接到資料快取單元974的資料TLB單元972。在一例示性實施例中,記憶體存取單元964可包括載入單元、儲存位址單 元、及儲存資料單元,其各者係耦接到記憶體單元970中的資料TLB單元972。指令快取單元934可進一步耦接到記憶體單元970中的層級2(L2)快取單元976。L2快取單元976係耦接到一或多其他層級之快取並最後耦接到主記憶體。
作為實例,例示性暫存器更名、失序發出/執行核心架構可如下實作管線900:1)指令提取938執行提取及長度解碼級902及904;2)解碼單元940執行解碼級906;3)更名/分配器單元952執行分配級908及更名級910;4)排程器單元956執行排程級912;5)實體暫存器檔案單元958及記憶體單元970執行暫存器讀取/記憶體讀取級914;執行叢集960執行執行級916;6)記憶體單元970及實體暫存器檔案單元958執行寫回/記憶體寫入級918;7)各種單元可涉及異常處理級922;及8)退役單元954及實體暫存器檔案單元958執行提交級924。
核心990可支援一或多指令集(例如,x86指令集(具有較新版本已加入之若干擴充);加州桑尼維爾的MIPS Technologies之MIPS指令集;加州桑尼維爾的ARM Holdings之ARM指令集(具有諸如NEON之可選額外擴充)),包括本文所述之指令。在一實施例中,核心990包括邏輯用以支援緊縮資料指令集擴充(例如,AVX1、AVX2),從而允許被許多多媒體應用使用之該等運算將被執行使用緊縮資料。
應瞭解,核心可支援多執行緒(執行二或更多平行組之運算或執行緒),且可以各種方法來達成上述運算,該等方法包括時間切割多執行緒、同時多執行緒(其中單一實體核心提供邏輯核心給實體核心正同時執行多執行緒的執行緒之各者)、或其組合(時間切割提取及解碼及之後的同時多執行緒,諸如在Intel®Hyperthreading技術中一般)。
儘管暫存器更名在失序執行之上下文中被論及,但應瞭解暫存器更名可用於依序架構中。雖然所說明之該處理器的實施例亦包括獨立指令及資料快取單元934/974及共享L2快取單元976,但替代實施例可具有單一內部快取用於指令及資料兩者,舉例而言,諸如層級1(L1)內部快取、或多層級之內部快取。在若干實施例中,系統可包括內部快取及外部快取之組合,該外部快取在核心及/或處理器之外部。替代地,所有的快取可在核心及/或處理器之外部。
特定例示性依序核心架構
圖10A-B說明更特定例示性依序核心架構之方塊圖,其核心為晶片中許多邏輯方塊之一(包括同一類型及/或不同類型之其他核心)。邏輯方塊透過高頻寬互連網路(例如,環狀網路)與若干固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯(取決於應用而定)通訊。
圖10A係連同其到晶粒上互連網路1002之連接且具 有其層級2(L2)快取之本地子集1004的單一處理器核心的方塊圖,根據本發明之實施例。在一實施例中,指令解碼器1000支援具有緊縮資料指令集擴充的x86指令集。L1快取1006允許到快取記憶體之低潛時存取進到純量及向量單元中。然而在一實施例中(為簡化設計),純量單元1008及向量單元1010使用獨立暫存器集(個別地,純量暫存器1012及向量暫存器1014),且在彼者之間傳送的資料被寫入到記憶體並接著自層級1(L1)快取1006讀取回來,本發明之替代實施例可使用不同方法(例如,使用單一暫存器集或包括允許資料在不被寫入與讀取回來的前提下在兩個暫存器檔案之間傳送的通訊路徑)。
L2快取之本地子集1004為總體L2快取之部分,其被分成獨立本地子集係每處理器核心有一個。各處理器核心具有到L2快取1004之其本身本地子集的直接存取路徑。藉由處理器核心讀取之資料被儲存在其L2快取子集1004中,且可被快速地存取,其平行於其他處理器核心存取其自身本地L2快取子集。藉由處理器核心寫入之資料被儲存在其L2快取子集1004中,且若有必要則自其他子集清除。環狀網路確保針對共享資料之一致性。環狀網路為雙向以允許諸如處理器核心、L2快取及其他邏輯方塊之代理(agent)用以與晶片之中的彼此通訊。各環狀資料路徑係每方向1012位元寬。
圖10B係根據發明之實施例的圖10A中處理器核心的部分的擴展圖。圖10B包括L1快取1004之L1資料快 取1006A部分,以及包括更多相關於向量單元1010及向量暫存器1014之細節。明確地,向量單元1010係16位元寬向量處理單元(VPU)(參見16位元寬ALU 1028),其執行整數、單精度浮點、及雙精度符點指令之一或多者。VPU支援使用拌和單元1020將暫存器輸入拌和、使用數字轉換單元1022A-B之數字轉換、及使用複製單元1024對記憶體輸入之複製。寫入遮罩暫存器1026允許判定(predicate)結果向量寫入。
具有整合記憶體控制器及圖形之處理器
圖11係根據本發明之實施例可能具有多於一個核心、可能具有整合記憶體控制器、及可能具有整合圖形的處理器1100的方塊圖。圖11之實線框說明具有單一核心1102A、系統代理1110、一或多匯流排控制器單元1116的集合之處理器1100,而虛線框之可選添加性說明具有多核心1102A-N、系統代理單元1110中的一或多整合記憶體控制器單元1114的集合、及專用邏輯1108之替代處理器1100。
因此,處理器1100之不同實作包括:1)具有係整合圖形及/或科學(通量)邏輯的專用邏輯1108之CPU(其可包括一或多核心),且核心1102A-N係一或多通用核心(例如,通用依序核心、通用失序核心、或兩者之組合);2)具有係大數量主要目標用於圖形及/或科學(通量)的專用核心的核心1102A-N之共處理器;及3)具有係大數量通用 依序核心的核心1102A-N之共處理器。因此,處理器1100可係通用處理器、共處理器或專用處理器,舉例而言,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量許多整合核心(MIC)共處理器(包括30或更多核心)、嵌入式處理器或相似者。該處理器可被實作在一或多晶片上。使用舉例而言諸如BiCMOS、CMOS、或NMOS之數種製程技術之任意者,處理器1100可係一或多基板之一部分及/或可被實作在一或多基板上。
記憶體階層包括核心內之一或多層級之快取、一組或一或多共享快取單元1106、及耦接到整合記憶體控制器單元1114之集合的外部記憶體(未示出)。共享快取單元1106之集合可包括一或多中階快取,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其他層級之快取、最後階快取(LLC)、及/或其組合。雖然在一實施例中,環狀為基互連單元1112將整合圖形邏輯1108、共享快取單元1106之集合、及系統代理單元1110/整合記憶體控制器單元1114互連,替代實施例可使用任意數量之已知技術來將此類單元互連。在一實施例中,一致性被保持於一或多快取單元1106及核心1102-A-N之間。
在若干實施例中,核心1102A-N之一或多者能夠執行多執行緒。系統代理1110包括該些協調及運算核心1102A-N之組件。系統代理單元1110可例如包括功率控制單元(PCU)及顯示器單元。PCU可係或可包括用於調節 核心1102A-N和整合圖形邏輯1108之功率狀態所需之邏輯及組件。顯示器單元係用於驅動一或多外部連接顯示器。
就架構指令集而言核心1102A-N可係同質或異質;亦即,核心1102A-N之二或更多者可能能夠執行相同指令集,而它者可能僅能夠執行該指令集之子集或不同指令集。
例示性計算機架構
圖12-21係例示性計算機架構之方塊圖。針對下述者在該技術領域中已知的其他系統設計及組態亦適用,下述者包括:膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其他電子裝置。普遍而言,能夠結合本文揭示之處理器及/或其他執行邏輯的廣大種類之系統或電子裝置亦屬適當。
現在參照圖12,所顯示為依據本發明之一實施例的系統1200之方塊圖。系統1200可包括一或多處理器1210、1215,其耦接到控制器集線器1220。在一實施例中,控制器集線器1220包括圖形記憶體控制器集線器(GMCH)1290及輸入/輸出集線器(IOH)1250(其可能在獨立晶片上);GMCH 1290包括記憶體及圖形控制器,且與 其耦接到記憶體1240及共處理器1245;IOH 1250將輸入/輸出(I/O)裝置1260耦接到GMCH 1290。替代地,記憶體及圖形控制器之一或兩者係整合於處理器(如本文所述)之中,記憶體1240及共處理器1245係直接地耦接到處理器1210,且控制器集線器1220與IOH 1250在單一晶片中。
附加處理器1215之可選性係以虛線標記於圖12中。各處理器1210、1215可包括本文所述處理核心之一或多者,且可能係處理器1100之某版本。
記憶體1240舉例而言,可係動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1220經由諸如諸如前端匯流排(FSB)之多落點匯流排、諸如QuickPath互連(QPI)之點對點介面、或類似連接1295而與處理器1210、1215通訊。
在一實施例中,共處理器1245係專用處理器,舉例而言,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或相似者。在一實施例中,控制器集線器1220可包括整合圖形加速器。
在包括架構、微架構、熱、功耗特徵等類似者之優點度量頻譜方面,實體資源1210、1215之間可具有各種不同之差異。
在一實施例中,處理器1210執行控制一般類型資料處理運算之指令。嵌入於指令之內的可能係共處理器指 令。處理器1210認出此些共處理器指令為應由附接共處理器1245所執行之類型。據此,處理器1210對共處理器匯流排或其他互連發出此些共處理器指令(或代表共處理器指令之控制訊號)到共處理器1245。共處理器1245接收並執行所接收到的共處理器指令。
現在參照圖13,所顯示為依據本發明之實施例的第一較特定例示性系統1300之方塊圖。如圖13所示,多處理器系統1300係點對點互連系統,且包括經由點對點互連1350耦接之第一處理器1370及第二處理器1380。處理器1370及1380之各者可能係處理器1100之某版本。在本發明之一實施例中,處理器1370及1380個別係處理器1210及1215,而共處理器1338係共處理器1245。在另一實施例中,處理器1370及1380個別係處理器1210及共處理器1245。
處理器1370及1380被顯示為個別包括整合記憶體控制器(IMC)單元1372及1382。處理器1370亦包括匯流排控制器單元點對點(P-P)介面1376及1378作為其一部分;相似地,第二處理器1380包括P-P介面1386及1388。處理器1370、1380可使用點對點(P-P)介面電路1378、1388經由點對點(P-P)介面1350來交換資訊。如圖13所示,IMC 1372及1382將處理器耦接到個別記憶體,亦即記憶體1332及記憶體1334,其可係局部地附接到個別處理器的主記憶體之部分。
處理器1370、1380可各使用點對點介面電路1376、 1394、1386、1398經由獨立P-P介面1352、1354來與晶片組1390交換資訊。晶片組1390可選地經由高效能介面1339而與共處理器1338交換資訊。在一實施例中,共處理器1338係專用處理器,舉例而言,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或相似者。
共享快取(未示出)可被包括在任一處理器中或在兩處理器外部,仍經由P-P互連而與處理器連接,以在假設處理器被置於低功率模式之情況下,可使得任一或兩個處理器之局部快取資訊被儲存在共享快取中。
晶片組1390可經由介面1396而被耦接到第一匯流排1316。在一實施例中,第一匯流排1316可係週邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或其他第三世代I/O互連匯流排之匯流排,雖然本發明之範圍並未如此限制。
如於圖13中所顯示,各種I/O裝置1314可連同匯流排橋接器1318而被耦接到第一匯流排1316,該匯流排橋接器1318可將第一匯流排1316耦接到第二匯流排1320。在一實施例中,一或多附加處理器1315耦接到第一匯流排1316,該附加處理器諸如共處理器、高通量MIC處理器、GPGPU、加速器(例如,諸如圖形加速器或數位訊號處理(DSP)單元)、現場可編程閘極陣列、或任何其他處理器。在一實施例中,第二匯流排1320可係低接腳數(LPC)匯流排。在一實施例中,可被耦接到第二匯流 排1320之各種裝置包括,例如,鍵盤及/或滑鼠1322、通訊裝置1327及可能包括指令/碼及資料1330的諸如硬碟機或其他大量儲存裝置之儲存單元1328。進一步地,音訊I/O 1324可被耦接到第二匯流排1320。應注意其它架構係可行。例如,取代圖13之點對點架構,一系統可實作多落點匯流排或其他此類架構。
現在參照圖14,所顯示為依據本發明之實施例的第二較特定例示性系統1400之方塊圖。圖13及14中相似元件具有相似參考編號,且圖13之特定態樣已自圖14省略以為了避免模糊圖14之其他態樣。
圖14說明處理器1370、1380可包括整合記憶體及個別具有I/O控制邏輯(「CL」)1372及1382。因此,CL 1372、1382包括整合記憶體控制器單元且包括I/O控制邏輯。圖14說明不僅記憶體1332、1334耦接到CL 1372、1382,且I/O裝置1414亦耦接到控制邏輯1372、1382。舊有I/O裝置1415係耦接到晶片組1390。
現在參照圖15,所顯示為依據本發明之實施例的SoC 1500之方塊圖。圖11中相似元件具有相似參考編號。另外,虛線框係在更先進SoC上之可選特徵。在圖15中,互連單元1502係耦接到:應用處理器1510,其包括一或多核心1102A-N之集合及共享快取單元1106;系統代理單元1110;匯流排控制器單元1116;整合記憶體控制器單元1114;一或多個共處理器1520之集合,其可包括整合圖形邏輯、影像處理器、音訊處理器、及視訊處理器; 靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;及用於耦接到一或多外部顯示器之顯示器單元1540。在一實施例中,共處理器1520係專用處理器,舉例而言,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器或相似者。
本文揭示機制之實施例可實作於硬體、軟體、韌體、或此類實作方法之組合之中。本發明之實施例可被實作為計算機程式或在可編程系統上執行的程式碼,該可編程系統包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼,諸如圖13所說明的碼1330,可應用於輸入指令以執行本文所述之功能並產生輸出資訊。可以已知方式將該輸出資訊應用於一或多輸出裝置。針對本應用之目的,處理系統包括具有處理器之任意系統,舉例而言,諸如數位訊號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向程式語言來實作,以與處理系統通訊。如有需求,則程式碼亦可以組合或機器語言來實作。事實上,本文所述機制的範疇並未限制於任何特定程式語言。在任何情況中,該語言係編譯或解譯語言。
至少一實施例之一或多態樣可藉由儲存在記器可讀取媒體上之代表性指令來實作,其代表處理器之中的各種邏 輯,當其被機器讀取時促使該機器製造邏輯以執行本文所述之技術。此類表示法,已知為「IP核心」,可被儲存在有形、機器可讀取媒體上,並被供應給各種顧客或製造工廠以載入於實際生產該邏輯或處理器的製造機器之中。
未限制地,此類機器可讀取儲存媒體可包括由機器或裝置所生產或形成製品之非暫態、有形配置,包括諸如硬碟、包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可覆寫記憶體(CD-RW)、及磁光碟之任何其他類型之碟片的儲存媒體;諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電性可抹除可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)之半導體裝置、磁或光卡、或適用於儲存電子指令之任何其他類型的媒體。
據此,本發明之實施例亦包括包含指令或包含設計資料(諸如硬體說明語言(HDL))的非暫態、有形機器可讀取媒體,該指令或設計資料界定本文所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦被參照為程式產品。
仿真(包括二進制轉譯、碼變形等)
在一些情況中,指令轉換器可被使用以將指令從源指令集轉換到目標指令集。舉例而言,指令轉換器可將指令轉譯(例如,使用靜態二進制轉譯、包括動態編譯之動態 二進制轉譯)、變形、仿真、或另外轉換成將被核心處理之一或多其他指令。指令轉換器可被實作於軟體、硬體、韌體、或其組合中。指令轉換器可係在處理器上、不在處理器上、或部分在處理器上且部分不在處理器上。
圖16係對比使用軟體指令轉換器以將源指令集中的二進制指令轉換成目標指令集中的二進制指令的方塊圖,根據本發明之實施例。在所說明實施例中,指令轉換器係軟體指令轉換器,雖然替代地指令轉換器可被實作於軟體、韌體、硬體、或其各種組合中。圖16顯示為高階語言1602之程式可使用x86編譯器1604來編譯,以產生x86二進制碼1606,其可由具有至少一個x86指令集核心之處理器1616原生地執行。具有至少一個x86指令集核心之處理器1616代表能夠執行實質上與具有至少一個x86指令集核心之Intel處理器所能執行相同功能之任何處理器,藉由相容地執行或另外處理(1)Intelx86指令集核心之指令集之實質部分或(2)目標要在具有至少一個x86指令集核心之Intel處理器上運行的應用或其他軟體之目標碼版本,以為了達到與具有至少一個x86指令集核心之Intel處理器所能達到實質上相同之結果。x86編譯器1604代表可操作以產生x86二進制碼1606(例如,目標碼)之編譯器,該碼可在具有或不具有附加鏈接處理之前提下在具有至少一個x86指令集核心之處理器1616上執行。相似地,圖16顯示為高階語言1602之程式可使用替代指令集編譯器1608來編譯,以產生替代指令集二進制 碼1610,其可由不具有至少一個x86指令集核心之處理器1614原生地執行(例如,處理器具有執行加州桑尼維爾MIPS Technologies的MIPS指令集及/或執行加州桑尼維爾ARM Holdings的ARM指令集之核心)。指令轉換器1612被使用以將x86二進制碼1606轉換成可由不具有x86指令集核心之處理器1614原生地執行之碼。此經轉換的碼不大可能與替代指令集二進制碼1610相同,因為能夠執行此運算之指令轉換器係難以製造;然而,經轉換的碼將完成一般運算,且由來自替代指令集之指令組成。因此,指令轉換器1612代表軟體、韌體、硬體、或其組合,其透過仿真、模擬、或其他處理允許處理器或不具有x86指令集處理器或核心之其他電子裝置來執行x86二進制碼1606。
本文針對圖3-8之任意者所討論之組件、特徵、及細節亦可選地適用於圖1-2之任意者。此外,針對設備之任意者所討論之組件、特徵、及細節亦可選地適用於方法之任意者,該方法在實施例可能係藉由及/或使用此類設備來執行。本文所述之處理器之任意者可被包括於本文揭示之計算機系統之任意者之中。在若干實施例中,計算機系統可包含動態隨機存取記憶體(DRAM)。替代地,計算機系統可包括不需要被重整或不需要快閃記憶體之類型的揮發性記憶體。本文所揭示之指令可以本文所示之處理器之任意者,可具有本文所示微架構之任意者,對本文所示之系統的任意者執行。
在本說明及申請專利範圍中,術語「耦接」及/或「連接」以及其派生詞可能被使用。此些術語目的不在於為彼此之同義詞。反而在實施例中,可使用「連接」以指示兩個或更多元件彼此直接實體及/或電性地接觸。「耦接」可代表兩個或更多元件係彼此直接實體及/或電性地接觸。然而,「耦接」亦可代表二或更多元件彼此並未直接接觸,但仍彼此互相合作或互動。舉例而言,透過一或多中介組件,執行單元可與暫存器及/或解碼單元及/或記憶體耦接。在圖式中,使用箭頭以表示連接及耦接。
在本說明及/或申請專利範圍中,可能已使用術語「邏輯」、「單元」、「模組」、或「組件」。在若干實施例中,此些術語之各者可指稱潛在地與若干韌體結合之硬體(例如,電晶體、閘極、積體電路、特殊應用積體電路、類比電路、數位電路、經編程邏輯裝置、包括指令之記憶體裝置等)。
術語「及/或」可能已被使用。如本文所使用,術語「及/或」代表一或另一者或兩者(例如,A及/或B代表A或B或A及B兩者)。
在以上說明中已陳述特定細節,以為了提供該等實施例之徹底理解。然而,其他實施例可被操作而不具有此些特定細節之若干者。本發明之範疇不係由以上提供特定實例所判定,而是僅由以下申請專利範圍所判定。在其他情況中,已知電路、結構、裝置及運算被顯示於方塊圖型式中及/或不具有細節以避免模糊對本說明之理解。在經考 慮為適當處,已在圖式中重複參考編號或參考編號之終端部分以表示對應或類似元件,其可選地具有相似或相同特徵,除非另有指定或係明顯的。
特定運算可被硬體組件執行,或可能體現於機器可執行或電路可執行指令中,其可被使用以導致及/或造成以該指令編程之機器、電路、或硬體組件(例如,處理器、處理器之部分、電路等)執行該運算。該等運算亦可能可選地由硬體及軟體之組合執行。處理器、機器、電路、或硬體可包括特定或特別電路或其他邏輯(例如,硬體潛在地與韌體及/或軟體結合),其係可操作以執行及/或處理指令並回應於指令將結果儲存。
若干實施例包含包括機器可讀取媒體之製品(例如,計算機程式產品)。媒體可包括提供(例如儲存)為可由機器讀取型式的資訊之機制。機器可讀取媒體可提供(或於其上儲存)指令或指令之序列,其若及/或當被機器執行時係可操作以造成該機器執行及/或導致該機器執行本文所揭示之一或多運算、方法、或技術。
在若干實施例中,機器可讀取媒體可包括非暫態機器可讀取儲存媒體。舉例而言,非暫態機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除及可編程ROM(EPROM)、電性可抹除及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變 記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置、或類似者。非暫態機器可讀取儲存媒體不由暫態傳播訊號組成。在若干實施例中,儲存媒體可包括包含實體之有形媒體。
適當機器之實例包括,但未限於,通用處理器、專用處理器、數位邏輯電路、積體電路、或類似者。仍其他適當機器之實例包括計算機系統或其他包括處理器、數位邏輯電路、或積體電路之電子裝置。此類計算機系統或電子裝置之實例包括,但未限於,桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、易網機、智慧型手機、手機、伺服器、網路裝置(例如,路由器及開關)、行動網際網路裝置(MID)、媒體播放器、智慧型電視機、輕省桌機、機上盒、及視訊遊戲控制器。
舉例而言,此說明書通篇對「一實施例」、「實施例」、「一或多實施例」、「若干實施例」之參照指示特定特徵可被包括在本發明之該運算中,但此不必然為必需的。相似地,在本說明書中各種特徵有時被群組在一起於單一實施例、圖式、或其說明中,以為了將本揭示精簡之目的且有助於對各種發明性態樣之瞭解。然而,本揭示之此方法不應被解釋為反映本發明需要較各申請項中所明確引述更多的特徵之意圖。反而,如同所附申請項所反映,發明性態樣存在於所揭示單一實施例中不到所有的特徵中。因此,在「發明內容與實施方式」之後的申請專利範 圍特此明確地被納入於「發明內容與實施方式」中,其中各申請項本身自成本發明之個別實施例。
例示性實施例
以下實例關於進一步實施例。該等實例中的細節可被使用於一或多實施例中的各處。
實例1係處理器,包括解碼單元,用以解碼具有程式誤導輸入資訊指令之模指數。具有程式誤導輸入資訊指令之該模指數用以指示複數個源運算元,其係用以儲存用於模指數運算之輸入資訊。將要被儲存在該複數個源運算元中之該輸入資訊之至少若干者將要被程式誤導。該處理器亦包括與該解碼單元耦接之執行單元。回應於具有程式誤導輸入資訊指令之該模指數,該執行單元係用以儲存模指數結果於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指示。
實例2包括實例1之處理器,其中該解碼單元係用以解碼該指令,該指令係用來指示用以儲存程式誤導指數、程式誤導底數、及程式誤導模數之至少一者的該複數個源運算元。
實例3包括實例1之處理器,其中該解碼單元係用以解碼該指令,該指令係用來指示用以儲存縮減常數及程式誤導縮減常數之一者的該複數個源運算元。該縮減常數係針對模指數藉由縮減演算法界定且可自模數導出。
實例4包括實例1之處理器,其中該解碼單元係用以 解碼該指令,該指令係用來指示用以儲存程式誤導秘密輸入參數及非程式誤導公用輸入參數的該複數個源運算元。
實例5包括實例1之處理器,其中該解碼器係用以解碼該指令,該指令具有至少一欄位以指示用於該模指數運算的該輸入資訊之對應部分是否被程式誤導。
實例6包括實例1之處理器,進一步包括無法由軟體讀取之秘密。再者,該解碼單元係用以解碼該指令,該指令係用來指示該程式誤導輸入資訊,從其對應輸入資訊無法在沒有該處理器之該秘密的情況下被導出,該模指數結果係基於該對應輸入資訊,且該處理器之該秘密無法由該軟體讀取。
實例7包括實例1之處理器,進一步包括無法由軟體讀取之處理器的秘密金鑰。再者,該解碼單元係用以解碼該指令,該指令係用來指示該程式誤導輸入資訊,其係用以包括將以該處理器之該秘密金鑰解密之加密輸入資訊,該處理器之該秘密金鑰無法由該軟體讀取。
實例8包括實例1之處理器,其中該解碼單元係用以解碼該指令,該指令係用來指示該程式誤導輸入資訊,其係用來包含用以指示複數個秘密非程式誤導輸入資訊集之一者的值,該秘密非程式誤導輸入資訊集係為以下之一者:儲存在該處理器上並且無法由軟體讀取;及產生於該處理器上且無法由軟體讀取。
實例9包括實例8之處理器,其中該值係以下之一者:將被使用以選擇該秘密非程式誤導輸入資訊之集合的 索引;將被使用來選擇該秘密非程式誤導輸入資訊之集合的數字;及該秘密非程式誤導輸入資訊之集合的識別符。
實例10包括實例1之處理器,其中該解碼單元係用以解碼該指令,該指令具有將被使用來判定該源運算元之大小的至少一欄位,該大小為複數個不同的可能大小之一者。
實例11包括實例10之處理器,其中該解碼單元係用以解碼該指令,該指令具有將被使用來判定底數大小的大小指示欄位、及用以指示該底數大小是否要被乘以三來判定該源運算元之大小的三倍大小指示欄位。
實例12包括實例1到11的任一者之處理器,其中該執行單元回應於具有程式誤導輸入資訊指令之該模指數之第二實例,係用以:在嘗試將程式誤導輸入資訊去程式誤導時偵測到一失敗,及發訊一錯誤。
實例13包括實例1到11的任一者之處理器,其中該執行單元回應於具有程式誤導輸入資訊指令之該模指數之第二實例,係用以:在中斷之後,停止執行具有程式誤導輸入資訊指令之該模指數之該第二實例;以該處理器之秘密金鑰將與具有程式誤導輸入資訊指令之該模指數之該第二實例之該中斷執行相關的中間狀態加密,該處理器之該秘密金鑰無法由軟體讀取;及將該加密中間狀態儲存在儲存位置中。
實例14包括實例1到11的任一者之處理器,其中該執行單元回應於具有程式誤導輸入資訊指令之該模指數之 第二實例,係用以:在中斷之後,停止執行具有程式誤導輸入資訊指令之該模指數之該第二實例,及將與具有程式誤導輸入資訊指令之該模指數之該第二實例之該中斷執行相關的中間狀態丟棄。
實例15包括實例1到11的任一者之處理器,其中該解碼單元係用以解碼該指令,該指令係用以指示該處理器之複數個暫存器,且其中該暫存器之各者係用以將指標儲存到記憶體中的一位置,該位置用以儲存該複數個源運算元之對應一者。
實例16包括實例1到11的任一者之處理器,其中當底數升到指數以產生指數結果且該指數結果是除以模數時,該模指數結果係用以表示餘數。
實例17.一種處理器中的方法包括接收具有程式誤導輸入資訊指令之模指數。具有程式誤導輸入資訊指令之該模指數指示複數個源運算元,其儲存用於模指數運算之輸入資訊。儲存在該複數個源運算元中之該輸入資訊之至少若干者被程式誤導。該方法亦包括回應於具有程式誤導輸入資訊指令之該模指數,儲存模指數結果於目的地儲存位置中,其藉由具有程式誤導輸入資訊指令之該模指數來指示。
實例18包括實例17之方法,進一步包括將以秘密來程式誤導該輸入資訊之該至少若干者去程式誤導,該秘密對處理器係可用但該秘密無法由軟體讀取。
實例19包括實例17之方法,其中接收包括接收該指 令,該指令指示儲存程式誤導指數、程式誤導底數、及程式誤導模數之至少一者的該源運算元。
實例20包括實例17之方法,其中接收包括接收該指令,該指令指示儲存縮減常數及程式誤導縮減常數之至少一者的該源運算元。該縮減常數係針對模指數藉由縮減演算法界定且可自模數導出。
實例21包括實例17之方法,其中接收包括接收該指令,該指令具有至少一欄位以指示用於該模指數運算的該輸入資訊之對應部分是否被程式誤導。
實例22係一種用以處理指令之系統,包括互連、及與該互連耦接之處理器。該處理器係用以接收具有程式誤導輸入資訊指令之模指數用以指示複數個源運算元,其係用以儲存用於模指數運算之輸入資訊。將被儲存於該複數個源運算元中的該輸入資訊之至少若干者將被程式誤導。回應於該指令,該處理器係用以儲存模指數結果於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指示。動態隨機存取記憶體(DRAM)係與互連耦接。該DRAM儲存包括具有程式誤導輸入資訊指令之該模指數的複數個不同實例之指令,其各指示個別複數個源運算元,其中源運算元之各集合係用以儲存不同類型之程式誤導輸入資訊用於具有程式誤導輸入資訊指令之該模指數的該不同實例。
實例23包括實例22之系統,其中該處理器係用以接收該指令,該指令係用來指示用以儲存程式誤導指數、程 式誤導底數、及程式誤導模數之至少一者的該複數個源運算元。
實例24係包括非暫態機器可讀取儲存媒體之製品。該非暫態機器可讀取儲存媒體儲存具有程式誤導輸入資訊指令之模指數。具有程式誤導輸入資訊指令之該模指數用以指示複數個源運算元,該源運算元係用以儲存用於模指數運算之輸入資訊。該輸入資訊之至少若干者將要被程式誤導。若具有程式誤導輸入資訊指令之該模指數被機器執行,則造成該機器執行運算,包括儲存模指數結果於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指示。
實例25包括實例24之製品,其中該處理器係用以接收該指令,該指令具有至少一欄位以指示用於該模指數運算的該輸入資訊之對應部分是否被程式誤導。
實例26包括實例1到11的任一者之處理器,進一步包括可選分支預測單元以預測分支,及與分支預測單元耦接之可選指令預取單元,該指令預取單元係用以將包括具有程式誤導輸入資訊指令的模指數之指令預取。該處理器亦可選地包括與指令預取單元耦接之可選層級1(L1)指令快取,該L1指令快取用以儲存指令、用以儲存資料之可選L1資料快取、及用以儲存資料及指令之可選層級2(L2)快取。該處理器亦可選地包括與解碼單元、L1指令快取、及L2快取耦接之指令提取單元,用以在一些情況中從L1指令快取及L2快取之一者提取具有程式誤導輸入資 訊指令之模指數,及用以提供具有程式誤導輸入資訊指令之模指數給解碼單元。該處理器亦可選地包括用以將暫存器更名之暫存器更名單元、用以將一或多運算排程之可選排程器,該一或多運算已自具有程式誤導輸入資訊指令之模指數為了執行而解碼、及用以將具有程式誤導輸入資訊指令之模指數的執行結果提交之可選提交單元。
實例27包括系統單晶片,其包括至少一互連、與該至少一互連耦接之實例1到11的任一者之處理器、與該至少一互連耦接之可選圖形處理單元(GPU)、與該至少一互連耦接之可選數位訊號處理器(DSP)、與該至少一互連耦接之可選顯示器控制器、與該至少一互連耦接之可選記憶體控制器、與該至少一互連耦接之可選無線數據機、與該至少一互連耦接之可選影像訊號處理器、與該至少一互連耦接之可選通用序列匯流排(USB)3.0相容控制器、與該至少一互連耦接之可選藍芽4.1相容控制器、及與該至少一互連耦接之可選無線收發器控制器。
實例28係用以執行或可操作以執行實例17到21的任一者之方法的處理器或其他設備。
實例29係包括用於執行實例17到21的任一者之方法的機構的處理器或其他設備。
實例30係包括可選非暫態機器可讀取媒體之製品,其可選地儲存或另外提供指令,若及/或當由處理器、計算機系統、電子裝置、或其他機器執行該指令時,係可操作以導致該機器用以執行實例17到21的任一者之方法。
實例31係實質上如本文所述之處理器或其他設備。
實例32係可操作以執行實質上如本文所述之任何方法的處理器或其他設備。
實例33係用以執行(例如,其具有用以執行之組件或其可操作以執行)實質上如本文所述之具有程式誤導輸入資訊指令之任何模指數的處理器或其他設備。
100‧‧‧處理器
102‧‧‧具有程式誤導輸入資訊指令之模指數
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧秘密
110‧‧‧去程式誤導單元
112‧‧‧模指數單元
114‧‧‧記憶體
116‧‧‧源運算元
118‧‧‧輸入資訊
120‧‧‧程式誤導輸入資訊
122‧‧‧模指數結果
124‧‧‧暫存器

Claims (25)

  1. 一種處理器,包含:解碼單元,用以解碼具有程式誤導輸入資訊指令之模指數,具有程式誤導輸入資訊指令之該模指數用以指示複數個源運算元,其係用以儲存用於模指數運算之輸入資訊,其中將要被儲存在該複數個源運算元中之該輸入資訊之至少若干者將要被程式誤導;及與該解碼單元耦接之執行單元,回應於具有程式誤導輸入資訊指令之該模指數,該執行單元用以儲存模指數結果於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指示。
  2. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼該指令,該指令係用來指示用以儲存程式誤導指數、程式誤導底數、及程式誤導模數之至少一者的該複數個源運算元。
  3. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼該指令,該指令係用來指示用以儲存縮減常數及程式誤導縮減常數之一者的該複數個源運算元,其中該縮減常數係針對模指數藉由縮減演算法界定且可自模數導出。
  4. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼該指令,該指令係用來指示用以儲存程式誤導秘密輸入參數及非程式誤導公用輸入參數的該複數個源運算元。
  5. 如申請專利範圍第1項之處理器,其中該解碼器係用以解碼該指令,該指令具有至少一欄位以指示用於該模指數運算的該輸入資訊之對應部分是否被程式誤導。
  6. 如申請專利範圍第1項之處理器,進一步包含無法由軟體讀取之秘密,且其中該解碼單元係用以解碼該指令,該指令係用來指示該程式誤導輸入資訊,從其對應輸入資訊無法在沒有該處理器之該秘密的情況下被導出,該模指數結果係基於該對應輸入資訊,且該處理器之該秘密無法由該軟體讀取。
  7. 如申請專利範圍第1項之處理器,進一步包含無法由軟體讀取之該處理器的秘密金鑰,且其中該解碼單元係用以解碼該指令,該指令係用來指示該程式誤導輸入資訊,其係用以包括將以該處理器之該秘密金鑰解密之加密輸入資訊,該處理器之該秘密金鑰無法由該軟體讀取。
  8. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼該指令,該指令係用來指示該程式誤導輸入資訊,其係用來包含用以指示複數個秘密非程式誤導輸入資訊集之一者的值,該秘密非程式誤導輸入資訊集係為以下之一者:儲存在該處理器上並且無法由軟體讀取;及產生於該處理器上且無法由軟體讀取。
  9. 如申請專利範圍第8項之處理器,其中該值係以下之一者:索引,其係被使用來選擇該秘密非程式誤導輸入資訊之集合; 數字,其係被使用來選擇該秘密非程式誤導輸入資訊之集合;及該秘密非程式誤導輸入資訊之集合的識別符。
  10. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼該指令,該指令具有將被使用來判定該源運算元之大小的至少一欄位,該大小為複數個不同的可能大小之一者。
  11. 如申請專利範圍第10項之處理器,其中該解碼單元係用以解碼該指令,該指令具有:大小指示欄位,其係被使用以判定底數大小;及三倍大小指示欄位,其係用以指示該底數大小是否被乘以三以判定該源運算元之該大小。
  12. 如申請專利範圍第1項之處理器,其中該執行單元回應於具有程式誤導輸入資訊指令之該模指數之第二實例,係用以:在嘗試將程式誤導輸入資訊去程式誤導時偵測到一失敗;及發訊一錯誤。
  13. 如申請專利範圍第1項之處理器,其中該執行單元回應於具有程式誤導輸入資訊指令之該模指數之第二實例,係用以:在中斷之後,停止執行具有程式誤導輸入資訊指令之該模指數之該第二實例;以該處理器之秘密金鑰將與具有程式誤導輸入資訊指 令之該模指數之該第二實例之該中斷執行相關的中間狀態加密,該處理器之該秘密金鑰無法由軟體讀取;及將該加密中間狀態儲存在儲存位置中。
  14. 如申請專利範圍第1項之處理器,其中該執行單元回應於具有程式誤導輸入資訊指令之該模指數之第二實例,係用以:在中斷之後,停止執行具有程式誤導輸入資訊指令之該模指數之該第二實例;及將與具有程式誤導輸入資訊指令之該模指數之該第二實例之該中斷執行相關的中間狀態丟棄。
  15. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼該指令,該指令係用以指示該處理器之複數個暫存器,且其中該暫存器之各者係用以將指標儲存到記憶體中的一位置,該位置係用以儲存該複數個源運算元之對應一者。
  16. 如申請專利範圍第1項之處理器,其中當底數升到指數以產生指數結果且該指數結果是除以模數時,該模指數結果係用以表示餘數。
  17. 一種處理器中之方法,包含:接收具有程式誤導輸入資訊指令之模指數,具有程式誤導輸入資訊指令之該模指數指示複數個源運算元,其儲存用於模指數運算之輸入資訊,其中儲存在該複數個源運算元中之該輸入資訊之至少若干者被程式誤導;及回應於具有程式誤導輸入資訊指令之該模指數,儲存 模指數結果於目的地儲存位置中,其藉由具有程式誤導輸入資訊指令之該模指數來指示。
  18. 如申請專利範圍第17項之方法,進一步包含將以秘密來程式誤導該輸入資訊之該至少若干者去程式誤導,該秘密對處理器係可用但該秘密無法由軟體讀取。
  19. 如申請專利範圍第17項之方法,其中接收包含接收該指令,該指令指示儲存程式誤導指數、程式誤導底數、及程式誤導模數之至少一者的該源運算元。
  20. 如申請專利範圍第17項之方法,其中接收包含接收該指令,該指令指示儲存縮減常數及程式誤導縮減常數之至少一者的該源運算元,其中該縮減常數係針對模指數藉由縮減演算法界定且可自模數導出。
  21. 如申請專利範圍第17項之方法,其中接收包含接收該指令,該指令具有至少一欄位以指示用於該模指數運算的該輸入資訊之對應部分是否被程式誤導。
  22. 一種用以處理指令之系統,包含:互連;與該互連耦接之處理器,該處理器用以接收具有程式誤導輸入資訊指令之模指數用以指示複數個源運算元,其係用以儲存用於模指數運算之輸入資訊,其中將被儲存於該複數個源運算元中的該輸入資訊之至少若干者將被程式誤導,回應於該指令,該處理器用以儲存模指數結果於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指示;及 與該互連耦接之動態隨機存取記憶體(DRAM),該DRAM儲存包括具有程式誤導輸入資訊指令之該模指數的複數個不同實例之指令,其各指示個別複數個源運算元,其中源運算元之各集合係用以儲存不同類型之程式誤導輸入資訊用於具有程式誤導輸入資訊指令之該模指數的該不同實例。
  23. 如申請專利範圍第22項之系統,其中該處理器係用以接收該指令,該指令係用來指示用以儲存程式誤導指數、程式誤導底數、及程式誤導模數之至少一者的該複數個源運算元。
  24. 一種包含非暫態機器可讀取儲存媒體之製品,該非暫態機器可讀取儲存媒體儲存具有程式誤導輸入資訊指令之模指數,具有程式誤導輸入資訊指令之該模指數用以指示複數個源運算元,該源運算元係用以儲存用於模指數運算之輸入資訊,其中該輸入資訊之至少若干者將被程式誤導,且具有程式誤導輸入資訊指令之該模指數若被機器執行時將導致該機器執行以下運算,包含:儲存模指數結果於目的地儲存位置中,其將藉由具有程式誤導輸入資訊指令之該模指數來指示。
  25. 如申請專利範圍第24項之製品,其中該處理器係用以接收該指令,該指令具有至少一欄位以指示用於該模指數運算的該輸入資訊之對應部分是否被程式誤導。
TW105126393A 2015-09-25 2016-08-18 安全模指數處理器、方法、系統、及指令 TWI706321B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/866,334 2015-09-25
US14/866,334 US10089500B2 (en) 2015-09-25 2015-09-25 Secure modular exponentiation processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201723804A true TW201723804A (zh) 2017-07-01
TWI706321B TWI706321B (zh) 2020-10-01

Family

ID=58387094

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105126393A TWI706321B (zh) 2015-09-25 2016-08-18 安全模指數處理器、方法、系統、及指令

Country Status (5)

Country Link
US (1) US10089500B2 (zh)
CN (1) CN107924444B (zh)
DE (1) DE112016004365T5 (zh)
TW (1) TWI706321B (zh)
WO (1) WO2017052811A2 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089500B2 (en) 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
US10270598B2 (en) 2016-08-26 2019-04-23 Intel Corporation Secure elliptic curve cryptography instructions
CN108287759B (zh) 2017-01-10 2021-07-09 阿里巴巴集团控股有限公司 处理数据过程中的调度方法、装置和系统
CN110825436B (zh) * 2018-08-10 2022-04-29 昆仑芯(北京)科技有限公司 应用于人工智能芯片的计算方法和人工智能芯片
US11005654B2 (en) * 2019-05-14 2021-05-11 Google Llc Outsourcing exponentiation in a private group
FR3096851B1 (fr) * 2019-05-27 2021-05-21 Idemia Identity & Security France Procedes de mise en œuvre et d’obfuscation d’un algorithme cryptographique a cle secrete donnee
CN111901110B (zh) * 2020-08-06 2023-05-23 中电科网络安全科技股份有限公司 白盒化模幂结果获取方法、装置、设备及存储介质
CN112883408B (zh) * 2021-04-29 2021-07-16 深圳致星科技有限公司 用于隐私计算的加解密系统和芯片

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2369304A1 (en) 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
US7739521B2 (en) 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
JP4876075B2 (ja) * 2005-11-08 2012-02-15 パナソニック株式会社 認証システム、署名生成装置、署名検証装置
US7760875B2 (en) 2006-06-29 2010-07-20 Intel Corporation Accelerating Diffie-Hellman key-exchange protocol with zero-biased exponent windowing
US7961877B2 (en) 2006-12-14 2011-06-14 Intel Corporation Factoring based modular exponentiation
US7925011B2 (en) 2006-12-14 2011-04-12 Intel Corporation Method for simultaneous modular exponentiations
US7912886B2 (en) 2006-12-14 2011-03-22 Intel Corporation Configurable exponent FIFO
KR20110014630A (ko) 2008-05-07 2011-02-11 이르데토 비.브이. 지수 불명료화
US8112066B2 (en) * 2009-06-22 2012-02-07 Mourad Ben Ayed System for NFC authentication based on BLUETOOTH proximity
EP2437160A1 (en) 2010-10-04 2012-04-04 Nagravision S.A. Blinding of modular exponentiation
US8904190B2 (en) * 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
FR2977953A1 (fr) 2011-07-13 2013-01-18 St Microelectronics Rousset Protection d'un calcul d'exponentiation modulaire par addition d'une quantite aleatoire
US8799343B2 (en) 2011-09-22 2014-08-05 Intel Corporation Modular exponentiation with partitioned and scattered storage of Montgomery Multiplication results
WO2013085487A1 (en) 2011-12-05 2013-06-13 Intel Corporation Efficient multiplication, exponentiation and modular reduction implementations
CN104012030B (zh) 2011-12-21 2018-04-13 英特尔公司 用于保护对称加密密钥的系统及方法
US8955144B2 (en) 2013-06-28 2015-02-10 Intel Corporation Protecting information processing system secrets from debug attacks
US10313129B2 (en) 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions
US10089500B2 (en) 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
US10142101B2 (en) 2015-09-29 2018-11-27 Intel Corporation Hardware enforced one-way cryptography

Also Published As

Publication number Publication date
CN107924444B (zh) 2022-07-19
TWI706321B (zh) 2020-10-01
WO2017052811A2 (en) 2017-03-30
CN107924444A (zh) 2018-04-17
US10089500B2 (en) 2018-10-02
US20170091488A1 (en) 2017-03-30
WO2017052811A3 (en) 2017-04-27
DE112016004365T5 (de) 2018-06-07

Similar Documents

Publication Publication Date Title
US11809545B2 (en) Flexible container attestation
CN107667499B (zh) 带密钥散列消息认证码处理器、方法、系统和指令
TWI706321B (zh) 安全模指數處理器、方法、系統、及指令
US10019601B2 (en) Method and apparatus for securely saving and restoring the state of a computing platform
US10877806B2 (en) Method and apparatus for securely binding a first processor to a second processor
US9893881B2 (en) Efficient sharing of hardware encryption pipeline for multiple security solutions
US9742563B2 (en) Secure provisioning of secret keys during integrated circuit manufacturing
US11392703B2 (en) Systems, apparatuses, and methods for platform security
EP3504838B1 (en) Secure elliptic curve cryptography instructions
CN110659244A (zh) 内联编码能力
CN114692131A (zh) 带有分解式存储器的密码式计算
TW201717030A (zh) 用於記憶體位址範圍的支持可組態安全性級別
US10666430B2 (en) System and techniques for encrypting chip-to-chip communication links
US10491381B2 (en) In-field system test security
US20180097839A1 (en) Systems, apparatuses, and methods for platform security
CN113050989A (zh) 用于以密码方式与数据联系的使用限制的指令的装置、方法和系统
US11516013B2 (en) Accelerator for encrypting or decrypting confidential data with additional authentication data
CN114692231A (zh) 用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护
US20220417005A1 (en) Methods and apparatuses to provide chiplet binding to a system on a chip platform having a disaggregated architecture