TWI610184B - 有效地執行散列運算的方法及設備 - Google Patents

有效地執行散列運算的方法及設備 Download PDF

Info

Publication number
TWI610184B
TWI610184B TW105144233A TW105144233A TWI610184B TW I610184 B TWI610184 B TW I610184B TW 105144233 A TW105144233 A TW 105144233A TW 105144233 A TW105144233 A TW 105144233A TW I610184 B TWI610184 B TW I610184B
Authority
TW
Taiwan
Prior art keywords
storage area
processor
values
rounds
state values
Prior art date
Application number
TW105144233A
Other languages
English (en)
Other versions
TW201738773A (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 TW201738773A publication Critical patent/TW201738773A/zh
Application granted granted Critical
Publication of TWI610184B publication Critical patent/TWI610184B/zh

Links

Classifications

    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

揭示用於處理器上執行散列功能之設備及方法。舉例而言,處理器的一實施例包括:暫存器組,包含第一儲存區及第二儲存區,其中儲存用於散列功能的狀態變數;執行單元,執行散列功能,以及,初始地標示第一儲存區儲存用於計算複數回合的散列功能之第一組狀態值,及,初始地標示第二儲存區儲存也用於計算複數回合的散列功能之第二組狀態值;以及,執行單元,使用第一及第二組狀態資料,以執行複數回合的散列功能,其中,執行包含第一儲存區與第二儲存區的標示之交換,以致於第一儲存區被標示成儲存用於第一組回合的第一組狀態值以及用於第二組回合的第二組狀態值,以及,其中,第二儲存區被標示成儲存用於第一組回合的該第二組狀態值以及用於第二組回合的第一組狀態值。

Description

有效地執行散列運算的方法及設備
本發明大致上關於電腦處理器領域。特別地,本發明關於有效率地執行散列運算的方法及設備。
安全訊息(SM)-3散列功能是由中華商業密碼局為了便於網際網路工作力(IETF)及網際網路研究工作力(IRTF)社群而公告之新的密碼功能。SM3目前被中國資訊安全標準技術委員會(簡稱TC260)倡議指定為用於TCM(受信任的計算模組)之散列演繹法。SM3的設計建立於安全散列演繹法(SHA)-2的設計上,其藉由加入額外的特點以加強散列功能,例如,饋送二訊息衍生字至各回合中,與SHA-2中僅有一個是相對的。
100‧‧‧管線
190‧‧‧核心
200‧‧‧處理器
300‧‧‧系統
400‧‧‧系統
500‧‧‧系統
600‧‧‧系統晶片
800‧‧‧主記憶體
參考下述附圖之詳細說明,可較佳地瞭解本發明,其中:圖1A是方塊圖,顯示根據本發明的實施例之舉例說 明的有序提取、解碼、退出管線以及舉例說明之暫存器重命名、亂序發佈/執行管線;圖1B是方塊圖,顯示根據本發明的實施例之包含於處理器中之舉例說明的有序提取、解碼、退出核心以及舉例說明之暫存器重命名、亂序發佈/執行架構核心的實施例;圖2是根據本發明的實施例之單核心處理器、及具有整合記憶體控制器及圖形處理器之多核心處理器的方塊圖;圖3顯示根據本發明的一實施例之系統的方塊圖;圖4顯示根據本發明的實施例之第二系統的方塊圖;圖5顯示根據本發明的實施例之第三系統的方塊圖;圖6顯示根據本發明的實施例之系統晶片(SoC)的方塊圖;圖7是方塊圖,對比根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令;圖8顯示實施本發明的實施例之處理器架構的一實施例;圖9顯示實施安全訊息(SM)-3散列功能之回合中執行的作業;圖10顯示用於執行不同回合的散列運算之架構及相關連技術的一實施例;以及圖11顯示根據本發明的一實施例之散列功能回合的 方法。
【發明內容與實施方式】
在下述說明中,為了說明目的而揭示複數個特定細節,以助於完整瞭解下述本發明的實施例。但是,沒有這些特定細節中的某些細節,習於此技藝者仍可實施本發明的實施例。在其它情形中,習知的結構及裝置以方塊圖顯示,以免模糊本發明的實施例之基本原理。
舉例說明的處理器架構及資料型式
圖1A是方塊圖,顯示根據本發明的實施例之舉例說明的有序提取、解碼、退出管線以及舉例說明之暫存器重命名、亂序發佈/執行管線。圖1B是方塊圖,顯示根據本發明的實施例之包含於處理器中之舉例說明的有序提取、解碼、退出核心以及舉例說明之暫存器重命名、亂序發佈/執行架構核心的實施例。圖1A-B中的實線框顯示管線及核心的有序部份,而選加的虛線框顯示暫存器重命名、亂序發佈/執行管線及核心。
在圖1A中,處理器管線100包含提取級102、長度解碼級104、解碼級106、分配級108、重命名級110、排程(也稱為發送或發佈)級112、暫存器讀取/記憶體讀取級114、執行級116、寫回/記憶體寫入級118、例外處理級122、及提交級124。
圖1B顯示處理器核心190,其包含耦合至執行引擎 單元150的前端單元130,引擎單元150及前端單元130都耦合至記憶體單元170。核心190可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。又另一選項,核心190可為特別用途核心,例如,網路或通訊核心、壓縮引擎、共處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心、等等。
前端單元130包含耦合至指令快取單元134的分枝預測單元132,指令快取單元134耦合至指令轉譯旁看緩衝器(TLB)136,指令轉譯旁看緩衝器(TLB)136耦合至指令提取單元138,指令提取單元138耦合至解碼單元140。解碼單元140(或解碼器)將指令解碼,以及產生從原始指令解碼、或是以其它方式反應原始指令、或是從原始指令導出之一或更多微作業、微碼進入點、微指令、其它指令、或其它控制訊號,以作為輸出。可以使用各種不同的機構以實施解碼單元140。適當機構的實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼微讀記憶體(ROM)、等等。在一實施例中,核心190包含微碼ROM或儲存微碼以用於某些巨集指令的微碼之其它媒體(例如,在解碼單元140或者是前端單元130內)。解碼單元140耦合至執行引擎單元150中的重命名/分配器單元152。
執行引擎單元150包含耦合至退出單元154及一或更多排程器單元156的集合之重命名/分配器單元152。排程 器單元156代表任何數目的不同排程器、包含保留站、中央指令窗、等等。排程器單元156耦合至實體暫存器檔案單元158。各實體暫存器檔案單元158代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存一或更多不同的資料型式,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標器,指令指標器是要被執行的下一指令之位置)、等等。在一實施例中,實體暫存器檔案單元158包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元158由退出單元154重疊以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用再排序緩衝器和退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器庫;等等)。退出單元154及實體暫存器檔案單元158耦合至執行簇160。執行簇160包含一或更多執行單元162及一或更多記憶體存取單元164的集合。執行單元162執行多種作業(例如,偏移、加法、減法、乘法)及對各種型式的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例包含多個專用於特定指令或功能集的執行單元,但是,其它實施例可以僅包含都執行所有功能之多個執行單元或是僅一執行單元。由於某些實施例產生用於某些型式的資料/作業之分別的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮 點/向量整數/向量浮點管線、及/或記憶體存取管線,這些管線均具有它們自己的排程器單元、實體暫存器單元、及/或執行簇-以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行簇具有記憶體存取單元164),所以,排程器單元156、實體暫存器檔案單元158、及執行簇160顯示為可能是複數的。也應瞭解,在使用分別的管線之情形中,這些管線中之一或更多可以是亂序發佈/執行而其餘的為有序。
記憶體存取單元164的組耦合至記憶體單元170,記憶體單元170包含資料轉譯旁看緩衝器(TLB)單元172,資料TLB單元172耦合至資料快取單元174,資料快取單元174耦合至等級2(L2)快取單元176。在一舉例說明的實施例中,記憶體存取單元164包含載入單元、儲存位址單元、及儲存資料單元,各單元均耦合至記憶體單元170中的資料TLB單元172。指令快取單元134又耦合至記憶體單元170中的等級2(L2)快取單元176。L2快取單元176耦合至一或更多其它等級的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、亂序發佈/執行核心架構可以實施如下所述的管線100:1)指令提取138執行提取及長度解碼級102和104;2)解碼單元140執行解碼級106;3)重命名/分配器單元152執行分配級108及重命名級110;4)排程器單元156執行排程級112;5)實體暫存器檔案單元158及記憶體單元170執行 暫存器讀取/記憶體讀取級114;執行簇160執行執行級116;6)記憶體單元170及實體暫存器檔案單元158執行寫回/記憶體寫入級118;7)牽涉例外處理級122的多種單元;及8)退出單元154及實體暫存器單元158執行提交級124。
核心190支援一或更多指令集(例如,x86指令集(具有添加更新的版本之某些延伸);加州Sunnyvale的MIPS Technologies公司之MIPS指令集;加州Sunnyvale的ARM Holdings公司的ARM指令集(具有例如NEON等選加的延伸)),包含此處所述的指令。在一實施例中,核心190包含邏輯以支援緊縮資料指令集延伸(例如,如下所述之AVX1、AVX2、及/或某些形式的同屬向量友善指令格式(U=0及/或U=1)),藉以允許由很多多媒體應用所使用的作業使用緊縮資料來執行。
應瞭解,核心可支援多緒化(執行二或更多平行組的作業或緒),以及以包含時間切片多緒化、同時多緒化(其中,單一實體核心提供用於各緒之邏輯核心,實體核心是同時多緒的)等各種式方、或者其組合,而如此執行(例如,在Intel®的混合緒化技術中之時間切片提取及解碼和之後的同時多緒化)。
雖然在亂序執行的背景下說明暫存器重命名,但是,應瞭解,在有序架構中可使用暫存器重命名。雖然所示的處理器之實施例也包含分別的指令及資料快取單元134/174以及共用的L2快取單元176,但是,替代的實施 例可以具有用於指令及資料之單一內部快取記憶體,例如等級1(L1)內部快取記憶體、或多等級內部快取記憶體。在某些實施例中,系統包含內部快取記憶體及核心和/或處理器之外部的外部快取記憶體。替代地,所有快取記憶體可以是在核心及/或處理器的外部。
圖2是根據本發明的實施例之具有一個以上的核心、具有整合記憶體控制器及具有整合的圖形之處理器200的方塊圖。圖2中的粗線框顯示具有單核心202A的處理器200、系統代理器210、一或更多匯流排控制器單元216,而選加的虛線框顯示具有多核心202A-N的替代處理器200、系統代理器單元210中的一或更多整合的記憶體控制器元214的組、以及特別用途的邏輯208。
因此,處理器200的不同實施包含:1)具有與圖形及/或科學(輸貫量)邏輯(包含一或更多核心)整合之特定用途的邏輯208之CPU,以及,核心202A-N是一或更多一般用途核心(例如,一般用途的有序核心、一般用途的亂序核心、二者的組合);2)設有核心202A-N的共處理器是大數目的主要用於圖形及/或科學(輸貫量)之特定用途核心;以及,3)設有核心202A-N的共處理器是大數目的一般用途的有序核心。因此,處理器200可為一般用途的處理器、共處理器或特定用途的處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途的圖形處理單元)、高輸貫量多整合核心(MIC)處理器(包含30或更多的核心)、嵌入式處 理器、等等。處理器可以實施於一或更多晶片中。使用例如BiCMOS、CMOS、或NMOS等多種製程技術中的任一技術,處理器200可以是部份及/或實施在一或更多基底上。
記憶體階層包含在核心內的一或更多等級的快取、一或更多共用快取單元206的組、及耦合至整合記憶體控制器單元214組之外部記憶體(未顯示)。共用快取單元206組可以包含例如等級2(L2)、等級3(L3)、等級4(L4)、或其它等級快取等一或更多中級快取、最後等級快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元212將整合圖形邏輯208、共用快取單元206的組、及系統代理單元210/整合的記憶體控制器單元214互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元206與核心202-A-N之間維持相干性。
在某些實施例中,一或更多核心202A-N能夠多緒化。系統代理器210包含那些元件協調及作業核心202A-N。系統代理器單元210可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心202A-N及整合圖形邏輯208的電力狀態所需的邏輯及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心202A-N可以是同質的或異質的;亦即,核心202A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行指令集的子集 合或不同的指令集。在一實施例中,核心202A-N是異質的以及包含下述之「小」核心及「大」核心。
圖3-6是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等技術領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的複數個種類的系統或電子裝置通常是適合的。
現在參考圖3,其顯示根據本發明的一實施例之系統300的方塊圖。系統300可以包含耦合至控制器集線器320之一或更多處理器310、315。在一實施例中,控制器集線器320包含圖形記憶體控制器集線器(GMCH)390及輸入/輸出集線器(IOH)350(可以在分開的晶片上);GMCH 390包含記憶體及圖形控制器,記憶體340及共處理器345耦合至記憶體及圖形控制器;IOH 350將輸入/輸出(I/O)裝置360耦合至GMCH 390。替代地,記憶體及圖形控制器中之一或二者整合於處理器之內(如此處所述般),記憶體340及共處理器345直接耦合至處理器310,以及,控制器集線器320與IOH 350在單一晶片中。
在圖3中以虛線顯示增加的處理器315之選加本質。 各處理器310、315包含此處所述的處理核心中之一或更多且可為處理器200的某版本。
舉例而言,記憶體340可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或是二者的組合。對於至少一實施例而言,控制器集線器320經由例如前側匯流排(FSB)等多點匯流排、例如快速路徑互連(QPI)等點對點介面、或是類似連接395而與處理器310、315通訊。
在一實施例中,共處理器345是特別用途的處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器320包含整合圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等度量計量領域的觀點而言,實體源310、315之間有各種差異。
在一實施例中,處理器310執行控制一般型式的資料處理作業的指令。嵌入於指令內的可為共處理器指令。處理器310將這些共處理器指令視為應用附接的共處理器345執行的型式。因此,處理器310在共處理器匯流排或是其它互連上發佈這些共處理器指令(或是代表共處理器指令的控制訊號)給共處理器345。共處理器345接受及執行收到的共處理器指令。
現在參考圖4,其為根據本發明的實施例之第一更特定的舉例說明的系統400的方塊圖。如圖4中所示般,多處理器系統400是點對點互連系統,以及包含經由點對點 互連450耦合的第一處理器470和第二處理器480。各處理器470及480可以是某版本的處理器200。在本發明的一實施例中,處理器470和480分別是處理器310和315,而共處理器438是共處理器345。在另一實施例中,處理器470及480分別是處理器310和共處理器345。
處理器470和480顯示為分別包含整合記憶體控制器(IMC)單元472和482。處理器470也包含點對點(P-P)介面476和478作為其匯流排控制器單元的一部份;類似地,第二處理器480包含P-P介面486和488。處理器470、480使用P-P介面電路478、488而經由點對點(P-P)介面450交換資訊。如圖4所示,IMC 472及482將處理器耦合至各別記憶體,亦即記憶體432和記憶體434,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器470、480使用點對點介面電路476、494、486、498,經由個別的P-P介面452、454而均可以與晶片組490交換資訊。晶片組490經由高性能圖形介面439,可選擇地與共處理器438交換資訊。在一實施例中,共處理器438是特定用途處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含在任一處理器中或二處理器的外部、但尚未經由P-P互連與處理器連 接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組490可以經由介面496而耦合至第一匯流排416。在一實施例中,第一匯流排416可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖4中所示般,各式各樣的I/O裝置414與匯流排橋接器418耦合至第一匯流排416,匯流排橋接器418耦合第一匯流排416至第二匯流排420。在一實施例中,例如共處理器、高輸貫量MIC處理器、GPGPU、加速器(例如圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多增加的處理器415耦合至第一匯流排416。在一實施例中,第二匯流排420可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排420,舉例而言,包含鍵盤及/或滑鼠422、通訊裝置427及例如碟片驅動器或其它大量儲存裝置等包含指令/碼及資料430的儲存單元428。此外,音訊I/O 424可以耦合至第二匯流排420。注意,其它架構是可能的。舉例而言,取代圖4的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖5,其顯示根據本發明的實施例之第二更特定舉例說明的系統500之方塊圖。圖4及5中類似的元件帶有類似的代號,以及,圖4的某些態樣在圖5中被省 略,以免模糊圖5的其它態樣。
圖5顯示處理器470、480分別包含整合的記憶體及I/O控制邏輯(CL)472和482。因此,CL 472、482包含整合記憶體控制器單元及包含I/O控制邏輯。圖5顯示不僅記憶體432、434耦合至CL 472、482,I/O裝置514也耦合至控制邏輯472、482。舊制I/O裝置515耦合至晶片組490。
現在參考圖6,其顯示根據本發明的實施例之SoC 600的方塊圖。圖2中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoC的選加特點。在圖6中,互連單元602耦合至:應用處理器610,包含一或更多核心202A-N及共用快取單元206的集合;系統代理器單元210;匯流排控制器單元216;整合記憶體控制器單元214;包含整合圖形邏輯、影像處理器、音訊處理器、以及視訊處理器之一或更多共處理器620的組;靜態隨機存取記憶體(SRAM)單元630;直接記憶體存取(DMA)單元632;以及用於耦合至一或更多外部顯示器的顯示單元640。在一實施例中,共處理器620包含特定用途的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高輸貫量MIC處理器、嵌入式處理器、等等。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體 及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖4中所示的碼430等程式碼可以應用至輸入指令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程序或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造處理器或邏輯的製造機器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存 取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖7是方塊圖,根據本發明的實施例之對比使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖7顯示高階語言702的程式,其可以由X86編譯器704編譯以產生X86二進 位碼706,二進位碼706可以由具有至少一X86指令集核心716的處理器原地執行。具有至少一x86指令集核心716的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的英特爾處理器執行實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的Intel處理器上執行為目的之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器704代表可以操作以產生x86二進位碼706(例如,物件碼)之編譯器,x86二進位碼706藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心716的處理器上執行。類似地,圖7顯示高階語言702的程式,使用替代指令集編譯器708,可以將其編譯以產生替代指令集二進位碼710,替代指令集二進位碼710可以由不具有至少一x86指令集核心714的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器712用以將x86二進位碼706轉換成可以由不具有x86指令集核心714的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼710相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器712 代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置來執行x86二進位碼706。
用於有效率地執行散列運算的方法及設備
本發明的一實施例包含新指令及支援硬體,用於有效率地執行散列運算。雖然下述實施例的焦點是SM3散列演繹法,但是,本發明的基本原理不侷限於用於SM3之特定實施。舉例而言,用於實施SM3之下述相同的技術可以用以效率地執行其它散列演繹法及/或其它型式的處理功能。此外,雖然一實施例實施成英特爾架構(IA)的擴充,但是,本發明的基本原理不侷限於任何特定ISA。
如圖8所示,本發明的實施例可以在舉例說明的處理器855上實施,處理器855包含執行單元840,執行單元840具有散列功能執行邏輯841以執行此處所述的有效率散列技術。暫存器集805提供用於運算子、控制資料及其它型式的資料之暫存器儲存,而執行單元840執行指令串。在一實施例中,暫存器集805包含128位元暫存器,例如被指定為IA串流SIMD擴充(SSE)架構的一部份之XMM單指令多資料(SIMD)暫存器。替代地、或增加地,暫存器包含256位元暫存器,例如被指定為IA進階向量擴充(AVX)-2架構之一部份的YMM SIMD暫存器。但是,本發明的基本原理不侷限於特定暫存器型式或暫存器大小。
為了簡明起見,於圖8中顯示單一處理器核心(「核心0」)的細節。但是,將瞭解,圖8中所示的各核心可以具有與核心0相同的邏輯集。如同所示,各核心也包含專用等級1(L1)快取記憶體812及等級2(L2)快取記憶體811,用於根據指定的快取管理政策而快取指令及資料。L1快取記憶體811包含用於儲存指令之分別的指令快取記憶體120、以及用於儲存資料之分別的資料快取記憶體121。以可為固定尺寸(例如長度64、128、512位元組)之快取線的粒度,管理儲存於各式各樣的處理器快取記憶體內的指令及資料。本舉例說明的實施例之各核心具有:提取單元810,用於從主記憶體800及/或共同等級3(L3)快取記憶體816提取指令;解碼單元820,用於將指令解碼(例如,將程式指令解碼成微作業或是「μ ops」);執行單元840,用於執行指令(例如,如此處所述的預測指令);以及,寫回單元850,用於使指令退出及將結果寫回。
指令提取單元810包含各式各樣習知的組件,包含:下一指令指標器803,用於儲存要從記憶體800(或是快取記憶體中之一)提取的下一指令之位址;指令轉譯旁看緩衝器(ITLB)804,用於儲存最近使用的虛擬對實體指令位址對映,以增進位址轉譯速度;分支預測單元802,用於推測地預測指令分支位址;以及,分支標的緩衝器(BTB)801,用於儲存分支位址及標的位址。一旦被提取時,指令接著被串流至指令管線的其餘級,指令管線包 含解碼單元830、執行單元840、及寫回單元850。這些單元中的各單元之結構及功能是具有此技藝中的一般技術者所熟知的,且於此將不會詳述,以免模糊本發明的不同實施例之有關態樣。
如上所述,在一實施例中,在執行單元840內的散列功能邏輯841執行各式各樣的技術,以更有效率地處理SM3散列演繹法。結果,將首先提供SM3散列演繹法的基本原理之簡要說明,接著提供本發明的實施例之詳細說明。
如同此處所使用般,「訊息」意指對其執行SM3散列之二進位碼。「訊息摘要」或「摘要」是散列運算的最後結果。SM3演繹法指明「填塞」方法以將訊息分段成全512位元區塊。以中間區塊的輸出狀態作為用於下一512位元區塊壓縮的輸入狀態,而對512位元區塊序列執行SM3壓縮演繹法。各區塊壓縮及最終摘要的狀態是256位元值。256位元狀態值分割成稱為字A、B、C、D、E、F、G及H之八個32位元「字」,且以「大在前排列法」格式指明(A然後B...等等)。圖9以圖形顯示處理回合期間執行的作業,在所述處理回合中,第一組狀態值901被轉換成第二組狀態值902。初始狀態值是SM3標準中界定的常數。特別地,用於512位元區塊的壓縮函數定義如下:
Figure TWI610184BD00001
變數SS1、SS2、TT1、及TT2是用於各迭代之內部中間值。Tj被指定為79cc4519,0≦j≦15,以及7a879d8a,16≦j≦63。對於各回合之(Tj<<<j)輸入可以是預定的且可從回合值j所指的表格載入。P0函數是線性平移排列函數,被指明為P0(X)=X xor(x<<<9)xor(x<<<7)。
被壓縮的512位元區塊分割成以大在前排列法形式表 述為W0至W15之十六個32位元字。W輸入指明為Wj =Wj xor Wj+4,因此,W0至W11能從初始區塊資料由單一xor函數決定。
用於回合16至63之Wj輸入以及用於回合12至63之Wj 輸入根據如下指明之「訊息展開」(訊息排程器)而展開:Wj=P1(Wj-16 xor Wj-9 xor(Wj-3<<<15))xor(Wj-13<<<7)xor Wj-6
其中,P1是指明如下之另一排列函數:P1(x)=X xor(X<<<15)xor(X<<<23)
此外,對於j=64至j=67,計算Wj,以支援回合60至63之Wj 的展開中的Wj+4項。
本發明的一實施例包含新的指令,例如被指明為IA串流SIMD擴充(SSE)架構的部份之XMM單指令多資料(SIMD)暫存器等128位元暫存器檔案、或是被指明為IA進階向量擴充(AVX)-2架構的部份之YMM SIMD暫存器等256位元暫存器檔案,增加處理器上SM3散列演繹法的性能。被指定用於128位元SSE架構的指令要求使用隱含的運算子暫存器,但是在使用相同的XXM式指令之範圍更寬廣之功率效率高性能核心中,具有使SM3能夠加速之優點。
本發明的一實施例利用下述事實:當SM3狀態含有8狀態變數A至H時,藉由簡單地再使用先前回合的變數A、C、E、及G以分別更新變數B、D、F、及H並因而 未要求計算。特別地,如上所述般,對於目前的回合:B(目前回合)←A(先前回合)D(目前回合)←C(先前回合)F(目前回合)←E(先前回合),以及H(目前回合)←G(先前回合)
如此,本發明的一實施例如下所示地對各回合僅計算狀態變數A、C、E、G:變數A由TT1更新以及變數E由P0(TT2)更新變數C由最後回合變數B<<<9更新,以及變數G由最後回合變數F<<<19更新。
如下所述地,藉由簡單地改變各處理回合上暫存器標示,即可決定其餘狀態值B、D、F、及H。
特別地,256位元的總SM3狀態要求二個128位元XMM暫存器(例如,xmm1及xmm2),但是,仍然有的問題是如何理想地分割八個變數A-H。使用上述觀察,本發明的一實施例使用下述有效率的暫存器分割。如圖10所示,SM3狀態變數被固持於二個XMM暫存器中(XMM1 1002及XMM2 1010),而以XMM1 1002含有用於奇數回合的A、C、E及G、以及用於偶數回合的B、D、F及H,以XMM2 1010含有用於奇數回合的B、D、F、及H、以及用於偶數回合的A、C、E及G。圖10顯示用於回合0之細節(如同A0-G0標示所示般),其使用循環1-3以到達用於回合1之儲存在XMM2 1010中的值 A1、C1、E1及G1
注意,圖10顯示邏輯,其涉及在各循環中計算值但不特別地識別可在管線化處理器架構內採用的管線技術或是其它實施細節。這些細節是習於此技藝者所熟知的且未顯示於圖10中,以免模糊本發明的基本原理。
對於128位元資料路徑及暫存器檔案,指明用於更新單一回合的SM3散列之指令的一實施例如下所述:SM3RND XMMsrcdst,XMMsrc,IMM
其中,XMMsrcdst是用於奇數回合的XMM1 1002及用於偶數回合的XMM2 1010並且XMMsrc是用於偶數回合的XMM1 1002及用於奇數回合的XMM2 1010。在一實施例中,對於j=0至15,中間值IMM設定於0,對於j=16至63,中間值IMM設定於1。
轉至圖10中所示的特定細節,XMM0 1001是隱含源,含有(Tj<<<j),用於回合0的循環1之Wj及Wj 。這些值伴隨來自XMM1 1002之A0、C0、E0、及G0被用以計算用於循環2的值。如同所示,內部暫時儲存器1008(例如,非架構暫存器或緩衝器)儲存用於SS2、SS1、Wj 及Wj之值。如下所述地計算SS1。使用運算子1003,將值A向左旋轉12次;進位儲存加法器1004結合加法器1005而將A<<<12結果與E及Tj<<<J相結合;然後,使用運算子1006,將結合的結果向左旋轉7次。使用XOR運算子1007,藉由將A<<<12與SS1一起XOR, 以計算SS2。如同所示,用於Wj 及Wj的值從XMM0 1001通過。
循環2從上述值、儲存於XMM1 1002中的用於A0、C0、E0、及G0的初始值、以及儲存於XMM2 1010中的用於B0、D0、F0、及H0的初始值。用於A、C、E、和G的新值(標示為A1、C1、E1、和G1以暗示回合1)如下所述地在循環2-3中計算及儲存於XMM2 1010。使用A0、B0、及C0作為輸入,運算子1011產生FFj(A、B、C)(請參見上述用於FFj的等式),以及,使用E0、F0、及G0作為輸入,運算子1013產生GGj(E、F、G)(請參見上述用於GGj的等式)。然後,使用進位儲存加法器1012和1015、及加法器1017,使用FFj(A0、B0、C0)+D0+SS2+Wj ,計算A1的值。使用經由運算子1018而向左旋轉9之B0的值,計算C1的值。以進位儲存加法器1014和1016、以及加法器1019,計算P0乘以GGj(E0、F0、G0)+H0+SS1+Wj,而計算E1的值。P0函數是線性平移排列函數,指明為P0(X)=(X<<<9)xor(X<<<17)。因此,藉由對GGj(E0,F0,G0)+H0+SS1+Wj執行P0線性平移排列,而執行E1。藉由將F0向左旋轉9之運算子1020,計算G1的值。
顯著地,在循環2-3中,僅計算用於A1、C1、E1及G1的值。對A0、C0、E0及G0的先前值,取得用於B1、D1、F1及H1的值。如上所述,XMMsrcdst是用於奇數回合的XMM1 1002及用於偶數回合的XMM2 1010,以及, XMMsrc是用於偶數回合的XMM1 1002及用於奇數回合的XMM2 1010。因此,當來自一回合的值A、C、E、及G在下一回合變成B、D、F、及H時,未獨立地計算或是實體地移動來自一回合的值A、C、E、及G。相反地,藉由切換XMM1/XMM2暫存器標示,這些值簡單地變成B、D、F、及H,藉以保存處理資源。
在替代實施例中(例如,使用AVX2或是具有256位元暫存器的其它架構),使用256位元YMM暫存器之指令被指明為SM3RND YMM1,YMM2,其執行單一YMM SIMD暫存器中SM3回合之完全狀態更新,其中,YMM1是用於8x32位元SM3狀態之源/目的地暫存器,以及,YMM2是源暫存器,含有用於本回合之(Tj<<<j)、Wj及Wj
第二更高性能的替代定義可以執行5循環SIMD管線中SM3散列的二完全回合且表示如下:SM3RNDS2 YMM1,YMM2,YMM3
其中,YMM1是源/目的地暫存器,以用於回合j的SM3狀態為起源,以及,用於回合j+2之結果SM3狀態寫回作為目的地。在本實施例中,YMM2是用於Wj、Wj 、Wj+1及W j+1的源暫存器,以及,YMM3是用於Tj及Tj+1的源暫存器。注意,在一實施例中,這僅由二暫存器指明,而以YMM2保持用於所有Wj、Wj 、Wj+1及W j+1 Tj及Tj+1
對於單一及雙SM3回合指令替代,在使用參數作為輸入的回合指令之前、以及與更早回合的回合指令平行地,計算回合16至63之Wj及回合12至63之W j+1之展開,以致於SM3性能不受訊息展開影響。
圖11顯示根據本發明的一實施例之方法。在1101,在處理器內初始化例如SM3等散列運算。舉例而言,將此處所述的SM3指令之一解碼以及造成的μ ops提供給執行單元的一或更多埠。此外,執行散列運算所需的初始值設定於適當的儲存區中。舉例而言,如上所述,將XMM0更新以含有(Tj<<<j),Wj及Wj 用於第一回合的處理。類似地,以用於SS2、SS1、Wj 及Wj的值,更新圖10中所示的暫時儲存1008。
在1102,第一組狀態值(例如A0、C0、E0及G0)儲存於第一組邏輯儲存區(例如XMM1)中以及第二組狀態值(例如B0、D0、F0及H0)儲存於第二組邏輯儲存區(例如XMM2)中。在1103,使用第一及第二組狀態值以執行奇數回合的計算,而產生更新的第一組狀態值(例如計算新值A1、C1、E1及G1)。
在1104,交換用於第一邏輯儲存區及第二邏輯儲存區的標示,以致於第二組狀態值被自動地設定成等於非更新組的第一狀態值。舉例而言,在圖10中所示的實施例中,SM3狀態變數被保持於二XMM暫存器XMM1 1002和XMM2 1010中,以XMM1 1002含有用於奇數回合的A、C、E及G以及用於偶數回合的B、D、F及H,以 及,以XMM2 1010含有用於奇數回合的B、D、F及H用於偶數回合的A、C、E及G。因此,在各回合中,藉由簡單地交換暫存器標示(亦即,哪些狀態變數儲存於哪些暫存器的標示),B、D、F及H的值分別自動地設定為A、C、E及G的先前值。如此,如同此處所使用般,交換儲存區的「標示」意指交換儲存於儲存區中的資料之標示。
在1105,新近計算的值A、C、E及G儲存於新近標示的第二邏輯儲存區中(例如,在圖10中所示的實例中,A1、C1、E1及G1儲存在XMM2中),以及,在1106,使用第一及第二組狀態變數,執行偶數回合的計算,以再度更新第一組狀態值(例如,A、C、E、及G)。
在1107,用於第一邏輯儲存區及第二邏輯儲存區的標示再度地交換,以致於第二組狀態值自動地設定成等於非更新組的第一狀態值。如上所述,在一實施例中,對於偶數及奇數回合,含有A、C、E、及G與B、D、F、及H之標示的暫存器交換。因此,藉由交換暫存器標示,B、D、F、及H的值再度自動地分別設定為A、C、E及G的先前值。在1108,更新的第一組狀態值儲存於第一邏輯儲存區(例如圖10中的XMM1中)。方法接著迭代經過1103至1108,直到散列運算完成為止,在1108決定。
選加的SM3實施目前為FPGA或ASIC專用硬體。軟 體形式之SM3性能由於各SM3回合的計算及訊息展開中所要求之相依作業的數目而較差。此處所述之SM3RND指令的添加能夠在5處理器循環中執行二回合的SM3散列壓縮功能或是在3處理器循環中完成單一回合SM3。評估此點而提供比最佳軟體實施大於4X的增進。
在其它實施例中,用立即位元組以指明j(而非含有Tj的YMM暫存器)。在這些實施例中,YMM2含有W值,而YMM3含有W。此外,以同於上述的方式,界定YMM2,以及,YMM2也包含合併的W & W’值(不要求YMM3)。
在上述說明書中,己參考特定舉例說明的實施例,說明本發明。但是,顯然可知,在不悖離後附的申請專利範圍中揭示的本發明的廣義精神及範圍之下,可以作各種修改及變化。因此,說明書及圖式被視為是說明性的而非限制性的。
本發明的實施例包含上述說明之各式各樣的步驟。步驟可以以機器可讀取的指令具體實施,這些指令可用以促使一般目的或特定目的處理器執行這些步驟。替代地,這些步驟可以由含有用於執行步驟之實體接線的邏輯之特定硬體組件、或是程式化的電腦組件及客製化硬體組件的程式化電腦的任何組合所執行。
如同此處所述般,指令意指例如特定應用積體電路(ASIC)等硬體的特定配置,ASIC係配置成執行具有預定功能或儲存在記憶體中的軟體指令,記憶體係以非暫時 \電腦可讀取媒體具體實施。如此,使用儲存於及執行於一或更多電子裝置(例如終端站台、網路元件、等等)上的碼及資料,可以實施圖式中所示的技術。這些電子裝置使用電腦可讀取的媒體以儲存及通訊(內部地及/或在網路上與其它電子裝置)碼及資料,電腦可讀取的媒體可為例如非暫時的電腦機器-可讀取的儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)以及暫時的電腦可讀取通訊媒體(例如電的、光學的、聲的或其它形式的傳播訊號-例如載波、紅外線訊號、數位訊號、等等)。此外,這些電子裝置典型地包含一或更多耦合至一或更多其它組件的處理器,一或更多其它組件可為例如一或更多儲存裝置(非暫時的機器可讀取的儲存媒體)、使用者輸入/輸出裝置(例如鍵盤、觸控螢幕、及/或顯示器)、及網路連接。處理器組及其它組件的耦合典型上經由一或更多匯流排及橋接器(也稱為匯流排控制器)。載送網路交通之儲存裝置及訊號分別代表一或更多機器可讀取的儲存媒體以及機器可讀取的通訊媒體。因此,給定的電子裝置之儲存裝置典型地儲存用於在該電子裝置的一或更多處理器的組上執行之碼及/或資料。當然,可以使用軟體、韌體、及/或硬體的不同組合,實施本發明的實施例之一或更多部份。在此詳細說明中,為了說明之目的,揭示複數個特定細節以助於完整瞭解本發明。但是,習於此技藝者將清楚,不用這些特定細節中的某些細節,仍可實施本發明。在某些情形中, 未特別詳細地說明熟知的結構及功能,以免模糊本發明的標的。因此,本發明的範圍及精神應以後附的申請專利範圍之觀點來判斷。
1003、1006、1007、1011、1013、1018、1020‧‧‧運算子
1005、1017、1019‧‧‧加法器
1004、1012、1014、1015、1016‧‧‧進位儲存加法器
1008‧‧‧內部暫時儲存器
1002、1010‧‧‧暫存器

Claims (18)

  1. 一種用以執行SM3散列操作之方法,包括:藉由解碼一或多個指令來將該SM3散列操作初始化;使用分別在第一及第二儲存區的第一及第二組狀態資料來執行第一回合的該SM3散列操作,以及交換該第一儲存區與該第二儲存區的標示,以使該第一儲存區被標示成儲存用於第二回合的該SM3散列操作的該第一組狀態值以及該第二組狀態值。
  2. 如申請專利範圍第1項之方法,其中該第一回合包括偶數回合,以及該第二回合包括奇數回合。
  3. 如申請專利範圍第2項之方法,其中後續執行又包括:使用現有的第一組及第二組狀態值,在各回合中計算新的第一組狀態值;以及將該第二組狀態值設定成等於該現有的第一組狀態值。
  4. 如申請專利範圍第3項之方法,其中藉由該第一儲存區與該第二儲存區的該標示之該交換,自動地執行將該第二組狀態值設定成等於該現有的第一組狀態值之操作。
  5. 如申請專利範圍第4項之方法,其中該第一儲存區及第二儲存區均包括128位元的緊縮暫存器。
  6. 如申請專利範圍第4項之方法,其中該第一儲存 區及第二儲存區均包括256位元的緊縮暫存器。
  7. 如申請專利範圍第3項之方法,其中該第一組狀態值包括該SM3散列功能之變數A、C、E、及G,以及該第二組狀態值包括該SM3散列功能之變數B、D、F、及H。
  8. 如申請專利範圍第1項之方法,其中該第一及第二組的各值包括32位元值。
  9. 如申請專利範圍第8項之方法,其中該第一組狀態值包括四個32位元值以及該第二組狀態值包括另一四個32位元值。
  10. 一種處理器,包括:暫存器組,包含儲存用於散列功能的狀態變數之第一儲存區及第二儲存區,其中該第一儲存區係初始地標示為儲存用於計算複數回合的該散列功能之第一組狀態值,以及該第二儲存區係初始地標示為儲存也用於計算該複數回合的該散列功能之第二組狀態值;解碼單元,用以解碼指令;執行單元,用以執行所述經解碼的指令以執行複數回合的該SM3散列功能;以及該執行單元,用以使用該第一及第二組狀態資料來執行複數回合的該SM3散列功能,其中執行包含交換該第一儲存區與該第二儲存區的該標示,以使該第一儲存區被標示成儲存用於第一組回合的該第一組狀態值以及用於第二組回合的該第二組狀態值,以及其中該第二儲存區被標 示成儲存用於該第一組回合的該第二組狀態值以及用於該第二組回合的該第一組狀態值。
  11. 如申請專利範圍第10項之處理器,其中該第一組回合包括偶數回合,以及該第二組回合包括奇數回合。
  12. 如申請專利範圍第11項之處理器,其中執行又包括:使用現有的第一組及第二組狀態值,在各回合中計算新的第一組狀態值;以及將該第二組狀態值設定成等於該現有的第一組狀態值。
  13. 如申請專利範圍第12項之處理器,其中藉由該第一儲存區與該第二儲存區的該標示之交換,自動地執行將該第二組狀態值設定成等於該現有的第一組狀態值之操作。
  14. 如申請專利範圍第13項之處理器,其中該第一儲存區及第二儲存區均包括128位元的緊縮暫存器。
  15. 如申請專利範圍第13項之處理器,其中該第一儲存區及第二儲存區均包括256位元的緊縮暫存器。
  16. 如申請專利範圍第12項之處理器,其中該第一組狀態值包括該SM3散列功能之變數A、C、E、及G,以及該第二組狀態值包括該SM3散列功能之變數B、D、F、及H。
  17. 如申請專利範圍第10項之處理器,其中該第一及第二組的各值包括32位元值。
  18. 如申請專利範圍第17項之處理器,其中該第一組狀態值包括四個32位元值以及該第二組狀態值包括另一四個32位元值。
TW105144233A 2014-03-27 2015-02-16 有效地執行散列運算的方法及設備 TWI610184B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/228,056 2014-03-27
US14/228,056 US9912481B2 (en) 2014-03-27 2014-03-27 Method and apparatus for efficiently executing hash operations

Publications (2)

Publication Number Publication Date
TW201738773A TW201738773A (zh) 2017-11-01
TWI610184B true TWI610184B (zh) 2018-01-01

Family

ID=52822172

Family Applications (2)

Application Number Title Priority Date Filing Date
TW104105374A TWI575388B (zh) 2014-03-27 2015-02-16 有效地執行散列運算的方法及設備
TW105144233A TWI610184B (zh) 2014-03-27 2015-02-16 有效地執行散列運算的方法及設備

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW104105374A TWI575388B (zh) 2014-03-27 2015-02-16 有效地執行散列運算的方法及設備

Country Status (7)

Country Link
US (1) US9912481B2 (zh)
JP (1) JP6051458B2 (zh)
KR (1) KR101732046B1 (zh)
CN (1) CN104951702B (zh)
DE (1) DE102015002254A1 (zh)
GB (1) GB2528343B (zh)
TW (2) TWI575388B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) * 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10020934B2 (en) * 2015-11-05 2018-07-10 Intel Corporation Hardware accelerator for cryptographic hash operations
CN106452769B (zh) * 2016-09-13 2019-11-29 杭州华为数字技术有限公司 一种数据处理方法、数据处理装置以及处理器
US10824428B2 (en) 2019-03-29 2020-11-03 Intel Corporation Apparatuses, methods, and systems for hashing instructions
CN114499465A (zh) * 2020-10-23 2022-05-13 北京京东方技术开发有限公司 散列算法及电路、电子设备
US11275726B1 (en) * 2020-12-06 2022-03-15 Kamu Data Inc. Distributed data processing method with complete provenance and reproducibility
CN113721986B (zh) * 2021-07-23 2024-02-09 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100250966A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Processor and method for implementing instruction support for hash algorithms
TW201332329A (zh) * 2011-12-22 2013-08-01 Intel Corp 用以處理sha-1安全雜湊演算法之方法及裝置

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
US4250483A (en) 1978-01-30 1981-02-10 Rubner Anthony C System for signalized intersection control
EP0354774B1 (en) 1988-08-11 1996-04-10 International Business Machines Corporation Data cryptography using control vectors
US5339398A (en) 1989-07-31 1994-08-16 North American Philips Corporation Memory architecture and method of data organization optimized for hashing
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5649179A (en) 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5608801A (en) 1995-11-16 1997-03-04 Bell Communications Research, Inc. Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions
US5920900A (en) 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US5897637A (en) 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6067547A (en) 1997-08-12 2000-05-23 Microsoft Corporation Hash table expansion and contraction for use with internal searching
US5960434A (en) 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US6260055B1 (en) 1997-10-15 2001-07-10 Kabushiki Kaisha Toshiba Data split parallel shifter and parallel adder/subtractor
US6226710B1 (en) 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6360218B1 (en) 1998-10-26 2002-03-19 Microsoft Corporation Compact record format for low-overhead databases
US6307955B1 (en) 1998-12-18 2001-10-23 Topaz Systems, Inc. Electronic signature management system
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6578131B1 (en) 1999-04-27 2003-06-10 Microsoft Corporation Scaleable hash table for shared-memory multiprocessor system
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6631419B1 (en) 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search
US6594665B1 (en) 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
US6952770B1 (en) 2000-03-14 2005-10-04 Intel Corporation Method and apparatus for hardware platform identification with privacy protection
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020032551A1 (en) 2000-08-07 2002-03-14 Jabari Zakiya Systems and methods for implementing hash algorithms
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
WO2002056538A2 (en) 2001-01-12 2002-07-18 Broadcom Corporation Implementation of the shai algorithm
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US7249255B2 (en) * 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
KR100423811B1 (ko) 2001-12-12 2004-03-22 한국전자통신연구원 카스미 암호화 알고리즘을 응용한 암호화 장치
US7395412B2 (en) 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7400722B2 (en) 2002-03-28 2008-07-15 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
DE60311441T2 (de) 2002-04-18 2007-11-08 Advanced Micro Devices Inc., Sunnyvale Initialisierung eines rechnersystems mit einem für einen sicheren ausführungsmodus geeigneten prozessor
US7165135B1 (en) 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
JP2004109420A (ja) 2002-09-18 2004-04-08 Sony Corp 乱数生成装置及び乱数生成方法
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US7921300B2 (en) 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US7684563B1 (en) 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US7599489B1 (en) 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
US7602905B2 (en) * 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
US7949807B2 (en) 2005-03-16 2011-05-24 Mitsubishi Electric Corporation Data conversion apparatus and data conversion method
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US7725624B2 (en) 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US8020142B2 (en) 2006-12-14 2011-09-13 Intel Corporation Hardware accelerator
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US8923510B2 (en) 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US20100250965A1 (en) 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8995663B2 (en) 2010-03-31 2015-03-31 Feitian Technologies Co., Ltd. Method for implementing an encryption engine by smart key device
US8583902B2 (en) 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication
EP2601613B1 (en) 2011-04-06 2020-08-12 BlackBerry Limited Efficient implementation of hash algorithm on a processor
JP2012252281A (ja) 2011-06-06 2012-12-20 Canon Inc 演算処理装置およびその方法、並びに、情報処理装置
US8855302B2 (en) 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
CN111464316B (zh) 2012-03-30 2023-10-27 英特尔公司 用于处理sha-2安全散列算法的方法和设备
US10203934B2 (en) * 2012-07-11 2019-02-12 Intel Corporation Parallell processing of a single data buffer
GB2496934B (en) 2012-08-07 2014-06-11 Imagination Tech Ltd Multi-stage register renaming using dependency removal
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US20140362098A1 (en) 2013-06-10 2014-12-11 Sharp Laboratories Of America, Inc. Display stream compression
CN103457719B (zh) 2013-07-23 2016-06-08 国家密码管理局商用密码检测中心 一种对sm3密码算法hmac模式的侧信道能量分析方法
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
CN103490895B (zh) 2013-09-12 2016-09-14 电小虎能源科技(北京)有限公司 一种应用国密算法的工业控制身份认证方法及装置
US9424209B2 (en) * 2013-09-19 2016-08-23 Intel Corporation Dynamic heterogeneous hashing functions in ranges of system memory addressing space
US9390246B2 (en) * 2013-09-25 2016-07-12 Intel Corporation Creating secure original equipment manufacturer (OEM) identification
US9250914B2 (en) * 2013-12-20 2016-02-02 Intel Corporation Method and apparatus for selecting cache locality for atomic operations
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9361106B2 (en) 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100250966A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Processor and method for implementing instruction support for hash algorithms
TW201332329A (zh) * 2011-12-22 2013-08-01 Intel Corp 用以處理sha-1安全雜湊演算法之方法及裝置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Jim Guilford et al. "Fast SHA512 Implementations on Intel Architecture Processors" November 2012 *
Yuan Ma et al. "Hardware Peformance Optimization and Evaluation of SM3 Hash Algorithm on FPGA" Proceedings of the 14th International Conference on Information and Communications Security, October 2012 pp.105-118 *

Also Published As

Publication number Publication date
TWI575388B (zh) 2017-03-21
GB201503156D0 (en) 2015-04-08
US20150280917A1 (en) 2015-10-01
TW201546628A (zh) 2015-12-16
KR101732046B1 (ko) 2017-05-02
GB2528343B (en) 2016-12-14
DE102015002254A1 (de) 2015-10-01
GB2528343A (en) 2016-01-20
TW201738773A (zh) 2017-11-01
JP6051458B2 (ja) 2016-12-27
CN104951702A (zh) 2015-09-30
JP2015212804A (ja) 2015-11-26
US9912481B2 (en) 2018-03-06
KR20150112782A (ko) 2015-10-07
CN104951702B (zh) 2018-11-09

Similar Documents

Publication Publication Date Title
TWI610184B (zh) 有效地執行散列運算的方法及設備
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
TWI567585B (zh) Sm4加速處理器、方法、系統及指令
US9900770B2 (en) Instruction for accelerating SNOW 3G wireless security algorithm
US9898300B2 (en) Instruction for fast ZUC algorithm processing
JP2019207393A (ja) 高性能認証付き暗号に関するハードウェアアクセラレータ及び方法
JP2017107579A (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
TWI599948B (zh) 用於存取一組暫存器爲複數較小暫存器或結合的較大暫存器之任一者的處理器、方法、及系統
KR101787615B1 (ko) 단일 명령어에 응답하여 회전 및 xor을 수행하기 위한 시스템들, 장치들, 및 방법들
US10187208B2 (en) RSA algorithm acceleration processors, methods, systems, and instructions
TWI751125B (zh) 用以監控位址衝突的計數器
TWI582693B (zh) 用於產生抑制的位址軌跡之設備和方法
US20210326135A1 (en) Programmable Fabric-Based Instruction Set Architecture for a Processor
KR101635856B1 (ko) 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법
US20220011811A1 (en) Flexible instruction set architecture supporting varying frequencies
CN116339826A (zh) 用于四字特定部分的向量紧缩串接和移位的装置和方法

Legal Events

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