欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于提供SIMDSM4加密塊密碼功能性的指令和邏輯的制作方法

文檔序號:11288402閱讀:416來源:國知局
用于提供SIMD SM4加密塊密碼功能性的指令和邏輯的制造方法與工藝

本發(fā)明涉及處理邏輯、微處理器和關聯(lián)指令集體系結(jié)構(gòu)(當由處理器或其它處理邏輯執(zhí)行時,執(zhí)行邏輯、數(shù)學或其它功能操作)的領域。具體地說,本公開涉及提供simdsm4加密塊(cryptographicblock)密碼功能性的指令和邏輯。



背景技術:

密碼是一種依賴算法和密鑰來保護信息的工具。所述算法是復雜的數(shù)學算法以及密鑰是比特串。存在兩種基本類型的密碼學系統(tǒng):秘密密鑰系統(tǒng)以及公共密鑰系統(tǒng)。秘密密鑰系統(tǒng)也稱為具有由兩方或更多方共享的單個密鑰(“秘密密鑰”)的對稱系統(tǒng)。單個密鑰用于加密和解碼信息。

例如,先進加密標準(aes),也稱為rijndael,是由兩個比利時密碼學家開發(fā)的塊密碼且由美國政府采納為密碼標準。aes于2001年11月26日由國家標準技術局(nist)宣布為u.s.fipspub197(fips197)。其它的加密算法也是感興趣的。

另一示例為sm4(以前也稱為sms4),用于無線lanwapi(有線鑒別與保密基礎設施)的中國國家標準中的塊密碼。其按輪(即,32輪)將明文數(shù)據(jù)處理為galois域28中的128比特塊,也表示為gf(256)、取模不可約分多項式。sm4算法是由教授lushu-wang發(fā)明,并由中國政府撤銷機密并于2006年1月發(fā)布。

sm4的輸入、輸出和密鑰各為128比特。每一輪修改組成128比特塊的4個32比特字符中的一個(通過利用其它三個字符的帶密鑰函數(shù)(keyedfunction)對其進行異或)。加密和解碼具有相同的結(jié)構(gòu),不同的是用于解密的輪密鑰調(diào)度是用于加密的輪密鑰調(diào)度的反向(reverse)。sm4(在ansic中)的軟件實現(xiàn)由freesoftwarefoundation在2009年12月在線發(fā)布。軟件實現(xiàn)的一個缺陷是性能。軟件運行成數(shù)量級比專門的硬件慢,因此期望具有硬件/固件實現(xiàn)的附加性能。

使用查找表存儲器、真值表、二元判定圖或256輸入復用器的典型直接硬件實現(xiàn)在電路面積方面是昂貴的。使用對gf(256)有限域同構(gòu)的備選方法可能是面積有效的,但也可能慢于直接硬件實現(xiàn)。

現(xiàn)代的處理器通常包括用于提供計算上密集,但提供高水平的數(shù)據(jù)平行處理的操作的指令,其中數(shù)據(jù)平行處理可通過使用各種數(shù)據(jù)存儲裝置的有效實現(xiàn)而被利用,例如諸如單指令多數(shù)據(jù)(simd)向量寄存器。中央處理單元(cpu)則可提供并行硬件以支持處理向量。向量為保持若干連續(xù)數(shù)據(jù)元素的數(shù)據(jù)結(jié)構(gòu)。大小為m的向量寄存器(其中m為2k,例如512、256、128、64、32...4或2)可包含大小為0的n個向量元素,其中n=m/0。例如,64比特向量寄存器可被劃分為(a)64個向量元素,其中每個元素保持占有1字節(jié)的數(shù)據(jù)條目、(b)32個向量元素以保持各占有2字節(jié)(或一個“字”)的數(shù)據(jù)條目、(c)16個向量元素以保持各占有4字節(jié)(或“雙字”)的數(shù)據(jù)條目或(d)8個向量元素以保持各占有8字節(jié)(或“四字”)的數(shù)據(jù)條目。在simd向量寄存器中,平行處理的本質(zhì)可能非常適合于塊密碼算法的處理。

至今,對這種復雜性、性能限制問題和其它瓶頸所提供的有效的時空的設計折衷和潛在的解決方法的選擇還沒有得到充分開發(fā)。

附圖說明

本發(fā)明通過示例來示出并且不限制于附圖的圖形。

圖1a為執(zhí)行指令以提供simdsm4加密塊密碼功能性的系統(tǒng)的一個實施例的框圖。

圖1b為執(zhí)行指令以提供simdsm4加密塊密碼功能性的系統(tǒng)的另一實施例的框圖。

圖1c為執(zhí)行指令以提供simdsm4加密塊密碼功能性的系統(tǒng)的另一實施例的框圖。

圖2為執(zhí)行指令以提供simdsm4加密塊密碼功能性的處理器的一個實施例的框圖。

圖3a示出了根據(jù)一個實施例的壓縮數(shù)據(jù)類型。

圖3b示出了根據(jù)一個實施例的壓縮數(shù)據(jù)類型。

圖3c示出了根據(jù)一個實施例的壓縮數(shù)據(jù)類型。

圖3d示出了用于提供根據(jù)一個實施例的simdsm4加密塊密碼功能性的指令編碼。

圖3e示出了用于提供根據(jù)另一實施例的simdsm4加密塊密碼功能性的指令編碼。

圖3f示出了用于提供根據(jù)另一實施例的simdsm4加密塊密碼功能性的指令編碼。

圖3g示出了用于提供根據(jù)另一實施例的simdsm4加密塊密碼功能性的指令編碼。

圖3h示出了用于提供根據(jù)另一實施例的simdsm4加密塊密碼功能性的指令編碼。

圖4a示出用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的處理器微體系結(jié)構(gòu)的一個實施例的元素。

圖4b示出用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的處理器微體系結(jié)構(gòu)的另一實施例的元素。

圖5為用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的處理器的一個實施例的框圖。

圖6為用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的計算機系統(tǒng)的一個實施例的框圖。

圖7為用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的計算機系統(tǒng)的另一實施例的框圖。

圖8為用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的計算機系統(tǒng)的另一實施例的框圖。

圖9為用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的片上系統(tǒng)的一個實施例的框圖。

圖10為用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的處理器的實施例的框圖。

圖11為提供simdsm4加密塊密碼功能性的ip核開發(fā)系統(tǒng)的一個實施例的框圖。

圖12示出了提供simdsm4加密塊密碼功能性的體系結(jié)構(gòu)仿真系統(tǒng)的一個實施例。

圖13示出用于轉(zhuǎn)換提供simdsm4加密塊密碼功能性的指令的系統(tǒng)的一個實施例。

圖14a示出執(zhí)行用于提供simdsm4加密塊密碼功能性的指令的設備的一個實施例的圖形。

圖14b示出執(zhí)行用于提供simdsm4加密塊密碼功能性的指令的設備的備選實施例的圖形。

圖14c示出執(zhí)行用于提供simdsm4加密塊密碼功能性的指令的設備的另一備選實施例的圖形。

圖15a示出執(zhí)行用于提供加密塊密碼功能性的simdsm4輪片的指令的過程的一個實施例的流程圖。

圖15b示出用于提供加密塊密碼函數(shù)的simdsm4輪片的指令的過程的備選實施例的流程圖。

圖15c示出執(zhí)行用于提供加密塊密碼功能性的simdsm4輪片的指令的過程的另一備選實施例的流程圖。

圖16a示出使用用于提供加密塊密碼功能性的simdsm4輪片的指令來有效實現(xiàn)sm4加密塊密碼的過程的一個實施例的流程圖。

圖16b示出使用用于提供加密塊密碼功能性的simdsm4輪片的指令來有效實現(xiàn)sm4加密塊密碼的過程的備選實施例的流程圖。

具體實施方式

以下描述公開了提供單指令多數(shù)據(jù)(simd)sm4輪片操作的指令和邏輯。指令的實施例指定第一和第二源數(shù)據(jù)操作數(shù)集合以及替換函數(shù)指示符,例如,在立即操作數(shù)中。處理器的實施例可包括加密單元,響應于第一指令而執(zhí)行以下操作:在具有來自響應于指示第一替換函數(shù)的替換函數(shù)指示符的第二源數(shù)據(jù)操作數(shù)集合的對應密鑰的第一源數(shù)據(jù)操作數(shù)集合的一部分上執(zhí)行sm4輪交換的片、使用具有來自響應于指示第二替換函數(shù)的替換函數(shù)指示符的第二源數(shù)據(jù)操作數(shù)集合的對應常數(shù)的第一源數(shù)據(jù)操作數(shù)集合的另一部分執(zhí)行sm4密鑰生成的片、以及在simd目的地寄存器中存儲第一指令的結(jié)果元素集合。

將意識到,通過利用相同simd指令執(zhí)行sm4輪交換的片和sm4密鑰生成的片,加密或解密可以利用在較小緩沖器(例如,256比特)中的密鑰擴展而被同時處理。在一些實施例中,片可包括四輪的sm4輪交換和四輪的sm4密鑰生成。對于這種實施例,32輪的sm4輪交換和sm4密鑰生成可使用8(或9)個sm4輪片操作執(zhí)行。在一些實施例中,每個256比特數(shù)據(jù)路徑或512比特數(shù)據(jù)路徑的128比特通道可基于在指示特定替換函數(shù)(例如,t或t’,或者l或l’)的指令的立即操作數(shù)中的對應的值,被選擇用于處理sm4輪交換的片或用于處理sm4密鑰生成的片。在一些被選實施例中,可預先確定和/或固定用于處理sm4輪交換的片與用于處理sm4密鑰生成的片的數(shù)據(jù)路徑的通道。在一些實施例中,片可通過微指令(或micro-op或u-op)實現(xiàn)且結(jié)果可從一個微指令旁路至下一個微指令。在一些可選實施例中,片可通過在硬件中的邏輯的多個層(例如,2個或4個或8個)或者備選地通過微指令和硬件中的邏輯的多個層的某個組合實現(xiàn)。在一些實施例中,片可包括通過在指令的立即操作數(shù)中的值指示的若干輪(例如,1、2、4、8、16或32)sm4輪交換和sm4密鑰生成。在一些可選實施例中,片中的輪數(shù)可由指令記憶存儲器和/或由操作編碼(或操作碼)指示。

在以下描述中,闡述了諸如處理邏輯、處理器類型、微體系結(jié)構(gòu)條件、事件、使能機制等多種特定細節(jié),以便提供對本發(fā)明實施例的更徹底理解。然而,本領域技術人員將意識到,可在沒有此類特定細節(jié)的情況下實踐本發(fā)明。另外,一些眾所周知的結(jié)構(gòu)、電路等并未詳細地顯示,以避免不必要地模糊本發(fā)明的實施例。

盡管參考處理器描述了以下實施例,但是其它實施例可適用于其它類型的集成電路和邏輯裝置。本發(fā)明實施例的類似技術和教導可應用于受益于較高流水線吞吐量及改進的性能的其它類型的電路或半導體裝置。本發(fā)明實施例的教導可適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機器。然而,本發(fā)明不限于執(zhí)行512比特、256比特、128比特、64比特、32比特或16比特或8比特數(shù)據(jù)操作的處理器或機器,并可應用于任何處理器與機器(在其中執(zhí)行數(shù)據(jù)的操縱或管理)。另外,以下描述提供了示例,并且附圖顯示出用于說明目的的各種示例。然而,不應以限制意義來理解這些示例,因為它們僅意圖提供本發(fā)明實施例的示例而非提供本發(fā)明實施例的所有可能實現(xiàn)的詳盡清單。

盡管以下示例在執(zhí)行單元與邏輯電路的上下文中描述指令處理與分發(fā),本發(fā)明的其它實施例可通過存儲在機器可讀的有形介質(zhì)的數(shù)據(jù)和/或指令實現(xiàn),所述數(shù)據(jù)和/或指令在由機器執(zhí)行時使機器執(zhí)行與本發(fā)明的至少一個實施例一致的功能。在一個實施例中,與本發(fā)明實施例關聯(lián)的功能體現(xiàn)在機器可執(zhí)行指令中。指令可用于使通過指令編程的通用處理器或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā)明實施例可提供為計算機程序產(chǎn)品或軟件,所述計算機程序產(chǎn)品或軟件可包括機器或或計算機可讀介質(zhì)(具有指令存儲在其上),所述指令可用于編程計算機(或其它電子裝置)以執(zhí)行根據(jù)本發(fā)明實施例的一個或多個操作。備選地,可通過包含用于執(zhí)行步驟的固定功能邏輯的特定硬件組件,或通過編程的計算機組件和固定功能硬件組件的任何組合來執(zhí)行本發(fā)明實施例的步驟。

用于編程執(zhí)行本發(fā)明實施例的邏輯的指令可存儲在系統(tǒng)中的存儲器中,如dram、高速緩存、閃存或其它存儲裝置。此外,可經(jīng)由網(wǎng)絡或通過其它計算機可讀媒體分發(fā)指令。因此,機器可讀介質(zhì)可包括用于存儲或傳送機器(例如,計算機)可讀形式的信息的任何機制,但是不限于軟盤、光盤、壓縮盤、只讀存儲器(cd-rom)和磁光盤、只讀存儲器(rom)、隨機存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、磁或光卡、閃存,或用于經(jīng)由電、光、聲信號或其它形式傳播的信號(例如,載波、紅外信號、數(shù)字信號等)在互聯(lián)網(wǎng)上傳送信息中使用的有形的機器可讀存儲裝置。相應地,計算機可讀機制包括適用于存儲或傳送以可由機器(例如,計算機)可讀的形式電子指令或信息的任何類型的有形機器可讀機制。

設計可經(jīng)過各種階段,從創(chuàng)建到模擬到制造。表示設計的數(shù)據(jù)可以以若干方式來表示設計。首先,如模擬中有用的,硬件可使用硬件描述語言或另一功能描述語言來表示。另外,可在設計過程的一些階段產(chǎn)生具有邏輯門和/或晶體管門的電路級模型。此外,大多數(shù)設計在一些階段達到表示各種裝置在硬件模型中的物理放置的數(shù)據(jù)層。在使用公知半導體制造技術的情況下,表示硬件模型的數(shù)據(jù)可為指定用于產(chǎn)生集成電路的掩膜的不同掩膜層的各種特征的存在或缺失的數(shù)據(jù)。在設計的任何表示中,數(shù)據(jù)可以以機器可讀介質(zhì)的任何形式存儲。諸如盤的存儲器或磁存儲裝置或光存儲裝置可為用于存儲信息的機器可讀介質(zhì),所述信息由經(jīng)光或電波調(diào)制或以其它方式生成來傳送以傳送此類信息。當傳送指示或攜帶代碼或設計的電載波時,在執(zhí)行電信號的復制、緩沖或重新傳送的程度上,制造新拷貝。因此,通信提供商或網(wǎng)絡提供商可將體現(xiàn)本發(fā)明實施例的技術的物品(如編碼為載波的信息)至少暫時地存儲在有形機器可讀介質(zhì)上。

在現(xiàn)代處理器中,若干不同的執(zhí)行單元用于處理且執(zhí)行多種代碼與指令。并非所有指令被創(chuàng)造為相同,因為一些完成較快,而其它可花費若干時鐘周期來完成。指令吞吐量越快,處理器的整體性能越好。因此,使盡可能多的指令盡可能快地執(zhí)行會是有利的。然而,存在具有較大復雜性且在執(zhí)行時間與處理器資源方面要求更多的某些指令。例如,存在浮點指令、加載/存儲操作、數(shù)據(jù)移動等。

由于更多的計算機系統(tǒng)用于互聯(lián)網(wǎng)、文本和多媒體應用中,所以已隨著時間引入附加的處理器支持。在一個實施例中,指令集可與一個或多個計算機體系結(jié)構(gòu)關聯(lián),所述一個或多個計算機體系結(jié)構(gòu)包括數(shù)據(jù)類型、指令、寄存器體系結(jié)構(gòu)、尋址模式、存儲器體系結(jié)構(gòu)、中斷和異常處理,以及外部輸入和輸出(i/o)。

在一個實施例中,指令集體系結(jié)構(gòu)(isa)可由一個或多個微體系結(jié)構(gòu)來實現(xiàn),所述一個或多個微體系結(jié)構(gòu)包括用于實現(xiàn)一個或多個指令集的處理器邏輯與電路。相應地,具有不同微體系結(jié)構(gòu)的處理器可共享公共指令集的至少一部分。例如,pentium4處理器、coretm處理器和來自加利福尼亞州sunnyvale的advancedmicrodevices,inc的處理器實現(xiàn)x86指令集(具有一些擴展,較新版本已增加所述擴展)的幾乎相同的版本,但具有不同的內(nèi)部設計。類似地,由例如armholdings,ltd.,mips或他們的被許可方或采納方的其它處理器開發(fā)公司設計的處理器可共享公共指令集的至少一部分,但可包括不同處理器設計。例如,isa的相同寄存器體系結(jié)構(gòu)可使用新技術或眾所周知技術以不同方式實現(xiàn)于不同微體系結(jié)構(gòu)中,其中包括專用物理寄存器、使用寄存器重命名機制(例如,寄存器別名表(rat)、重新排序緩沖器(rob)和引退寄存器文件的使用)的一個或多個動態(tài)分配的物理寄存器。在一個實施例中,寄存器可包括一個或多個寄存器、寄存器體系結(jié)構(gòu)、寄存器文件或其它寄存器集合,所述其它寄存器集合可以由或可以不由所述軟件程序器(programmer)可尋址。

在一個實施例中,指令可包括一個或多個指令格式。在一個實施例中,指令格式可指示各種字段(比特的數(shù)量、比特的位置等)以在其它事情中指定要執(zhí)行的操作和一個或多個操作數(shù)(操作將在其上被執(zhí)行)。一些指令格式可由指令模板(或子格式)被進一步分解定義。例如,給定指令格式的指令模板可被定義為具有指令格式的字段的不同子集且/或定義為具有不同地解釋的給定字段。在一個實施例中,指令使用指令格式(并且如果定義,以所述指令格式的指令模板中的給定一個指令模板)來表達,并指定或指示操作和操作數(shù)(在其上操作將被執(zhí)行)。

科學、金融、自動向量化通用、rms(辨別(recognition)、挖掘和合成),以及視覺與多媒體應用(例如,2d/3d圖形、圖像處理、視頻壓縮/解壓縮、語音辨別算法和音頻操縱)可能要求對大量數(shù)據(jù)項執(zhí)行相同操作。在一個實施例中,單指令多數(shù)據(jù)(simd)指代使處理器對多個數(shù)據(jù)元素執(zhí)行操作的指令類型。simd技術可用于可邏輯地將寄存器中的比特劃分為若干固定大小或可變大小的數(shù)據(jù)元素的處理器,所述數(shù)據(jù)元素中每一個表示獨立值。例如,在一個實施例中,64比特寄存器中的比特可組織為包含四個獨立的16比特數(shù)據(jù)元素的源操作數(shù),所述四個獨立的16比特數(shù)據(jù)元素中每個表示獨立的16比特值。數(shù)據(jù)的所述類型可稱為“壓縮”數(shù)據(jù)類型或“向量”數(shù)據(jù)類型,并該數(shù)據(jù)類型的操作數(shù)稱為壓縮數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個實施例中,壓縮數(shù)據(jù)項或向量可為存儲在單個寄存器中的壓縮數(shù)據(jù)元素的序列,并壓縮數(shù)據(jù)操作數(shù)或向量操作數(shù)可為simd指令(或“壓縮數(shù)據(jù)指令”或”向量指令”)的源操作數(shù)或目的地操作數(shù)。在一個實施例中,simd指令指定要在兩個源向量操作數(shù)上被執(zhí)行以生成相同大小或不同大小的目的地向量操作數(shù)(也稱結(jié)果向量操作數(shù))單個向量操作,所述目的地向量操作數(shù)具有相同或不同數(shù)量的數(shù)據(jù)元素,并處于相同數(shù)據(jù)元素順序或不同數(shù)據(jù)元素順序。

例如由具有包括x86、mmxtm、流播simd擴展(sse)、sse2、sse3、sse4.1及sse4.2指令的指令集的coretm處理器,諸如arm系列處理器的具有包括向量浮點(vfp)和/或neon指令的指令集的arm處理器和諸如由中國科學院的計算技術研究所(ict)開發(fā)的龍芯系列處理器的mips處理器采用的simd技術已經(jīng)在應用性能方面實現(xiàn)了相當大的改進(coretm和mmxtm是加利福尼亞州santaclara的intelcorporation的注冊商標或商標)。

在一個實施例中,目的地和源寄存器/數(shù)據(jù)是表示對應數(shù)據(jù)或操作的源和目的地的常規(guī)術語。在一些實施例中,它們可通過具有與描繪的那些名稱或功能不同的名稱或功能的寄存器、存儲器或其它存儲區(qū)域來實現(xiàn)。例如,在一個實施例中,“dest1”可以是臨時存儲寄存器或其它存儲區(qū)域,而“src1”和“src2”可以是第一和第二源存儲寄存器或其它存儲區(qū)域并以此類推。在其它實施例中,兩個或更多個src和dest存儲區(qū)域可對應于相同存儲區(qū)域(例如,simd寄存器)內(nèi)的不同數(shù)據(jù)存儲元素。在一個實施例中,例如通過將對第一和第二源數(shù)據(jù)執(zhí)行的操作的結(jié)果回寫到用作目的地寄存器的兩個源寄存器中的一個,源寄存器之一也可充當目的地寄存器。

圖1a是根據(jù)本公開的一個實施例的用包括執(zhí)行單元以執(zhí)行指令的處理器形成的示范計算機系統(tǒng)的框圖。根據(jù)本發(fā)明(例如本文描述的實施例中的),系統(tǒng)100包括諸如處理器102的組件,以采用包括執(zhí)行用于處理數(shù)據(jù)的算法的邏輯的執(zhí)行單元。系統(tǒng)100表示基于根據(jù)加利福尼亞州santaclara的intelcorporation可用的iii、4、xeontm、xscaletm和/或strongarmtm微處理器的處理系統(tǒng),盡管也可使用其它系統(tǒng)(包括具有其它微處理器的pc、工程工作站、機頂盒及諸等)。在一個實施例中,示例系統(tǒng)100可執(zhí)行根據(jù)華盛頓redmond的microsoftcorporation可用的一版本的windowstm操作系統(tǒng),盡管也可使用其它操作系統(tǒng)(例如,unix和linux)、嵌入式軟件和/或圖形用戶界面。因此,本發(fā)明的實施例不限于硬件電路和軟件的任何特定組合。

實施例并不限于計算機系統(tǒng)。本發(fā)明的實施例可在諸如手持式裝置和嵌入式應用的其它裝置中使用。手持式裝置的一些示例包括蜂窩電話、因特網(wǎng)協(xié)議裝置、數(shù)碼相機、個人數(shù)字助理(pda)及手持式pc。嵌入式應用可包括微控制器、數(shù)字信號處理器(dsp)、片上系統(tǒng)、網(wǎng)絡計算機(netpc)、機頂盒、網(wǎng)絡集線器、寬域網(wǎng)(wan)交換機或可執(zhí)行根據(jù)至少一個實施例的一個或多個指令的任何其它系統(tǒng)。

圖1a為利用處理器102形成的計算機系統(tǒng)100的框圖,所述處理器包括用于執(zhí)行算法以根據(jù)本發(fā)明的一個實施例執(zhí)行至少一個指令的一個或多個執(zhí)行單元108。一個實施例可在單個處理器桌上型計算機或服務器系統(tǒng)的上下文中描述,但備選實施例可包括在多處理器系統(tǒng)中。系統(tǒng)100是“集線器”系統(tǒng)體系結(jié)構(gòu)的示例。計算機系統(tǒng)100包含用于處理數(shù)據(jù)信號的處理器102。處理器102可以是復雜指令集計算機(cisc)微處理器、精簡指令集運算(risc)微處理器、超長指令字(vliw)微處理器、實現(xiàn)指令集組合的處理器或任何其它處理器裝置,諸如例如數(shù)字信號處理器。處理器102耦合到處理器總線110,其可在處理器102與系統(tǒng)100中的其它組件之間傳送數(shù)據(jù)信號。系統(tǒng)100的元件執(zhí)行本領域技術人員眾所周知的其常規(guī)功能。

在一個實施例中,處理器102包含一級(l1)內(nèi)部高速緩存存儲器104。取決于體系結(jié)構(gòu),處理器102可具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。備選地,在另一實施例中,高速緩存存儲器可駐留在處理器102外部。取決于具體實現(xiàn)和需要,其它實施例也可包含內(nèi)部和外部高速緩存的組合。寄存器文件106可將不同類型的數(shù)據(jù)存儲在各種寄存器中,包含整數(shù)寄存器、浮點寄存器、狀態(tài)寄存器和指令指針寄存器。

執(zhí)行單元108(包含執(zhí)行整數(shù)和浮點操作的邏輯)也駐留在處理器102中。處理器102也包含存儲某些宏指令的微代碼的微代碼(ucode)rom。對于一個實施例,執(zhí)行單元108包含處理壓縮指令集109的邏輯。通過在通用處理器102的指令集中包括壓縮指令集109,連同執(zhí)行指令的關聯(lián)電路,可使用通用處理器102中的壓縮數(shù)據(jù)執(zhí)行由許多多媒體應用使用的操作。從而,通過使用處理器的數(shù)據(jù)總線的完全寬度來對壓縮數(shù)據(jù)執(zhí)行操作,可加速和更有效地執(zhí)行許多多媒體應用。這可消除跨處理器的數(shù)據(jù)總線傳輸更小數(shù)據(jù)單元來一次一個數(shù)據(jù)元素執(zhí)行一個或多個操作的需要。

執(zhí)行單元108的備選實施例也可用在微控制器、嵌入式處理器、圖形裝置、dsp以及其它類型邏輯電路中。系統(tǒng)100包含存儲器120。存儲器120可以為動態(tài)隨機存取存儲器(dram)裝置、靜態(tài)隨機存取存儲器(sram)裝置、閃存裝置或其它存儲器裝置。存儲器120可存儲由數(shù)據(jù)信號表示的可由處理器102執(zhí)行的指令和/或數(shù)據(jù)。

系統(tǒng)邏輯芯片116耦合到處理器總線110和存儲器120。在所示實施例中的系統(tǒng)邏輯芯片116是存儲器控制器集線器(mch)。處理器102可經(jīng)由處理器總線110與mch116通信。mch116提供到存儲器120的高帶寬存儲器路徑118,其用于指令和數(shù)據(jù)存儲以及用于圖形命令、數(shù)據(jù)和文本的存儲。mch116在處理器102、存儲器120和系統(tǒng)100中的其它組件之間引導數(shù)據(jù)信號,并在處理器總線110、存儲器120和系統(tǒng)i/o122之間橋接數(shù)據(jù)信號。在一些實施例中,系統(tǒng)邏輯芯片116可提供用于耦合到圖形控制器112的圖形端口。mch116通過存儲器接口118耦合到存儲器120。圖形卡112通過加速圖形端口(agp)互連114耦合到mch116。

系統(tǒng)100使用專有集線器接口總線122將mch116耦合到i/o控制器集線器(ich)130。在一個實施例中,ich130經(jīng)由本地i/o總線提供到一些i/o裝置的直接連接。本地i/o總線是用于將外設連接到存儲器120、芯片集和處理器102的高速i/o總線。一些示例是音頻控制器、固件集線器(閃速bios)128、無線收發(fā)器126、數(shù)據(jù)存儲裝置124、包含用戶輸入和鍵盤接口的傳統(tǒng)i/o控制器、串行擴展端口(諸如通用串行總線(usb))和網(wǎng)絡控制器134。數(shù)據(jù)存儲裝置124可包括硬盤驅(qū)動器、軟盤驅(qū)動器、cd-rom裝置、閃存裝置或其它大容量存儲裝置。

對于系統(tǒng)的另一實施例,按照一個實施例的指令可與片上系統(tǒng)一起使用。片上系統(tǒng)的一個實施例包括處理器和存儲器。一個此類系統(tǒng)的存儲器是閃存。閃存可位于與處理器和其它系統(tǒng)組件相同的管芯上。此外,諸如存儲器控制器或圖形控制器的其它邏輯塊也可位于片上系統(tǒng)上。

圖1b示出了實現(xiàn)本發(fā)明的一個實施例的原理的數(shù)據(jù)處理系統(tǒng)140。本領域技術人員將容易意識到,本文描述的實施例可通過備選處理系統(tǒng)使用,而不脫離本發(fā)明實施例的范圍。

按照一個實施例,計算機系統(tǒng)140包括能夠執(zhí)行至少一個指令的處理核159。在一個實施例中,處理核159表示任何類型體系結(jié)構(gòu)的處理單元,包含但不限于cisc、risc或vliw型體系結(jié)構(gòu)。處理核159還可適合于以一個或多個工藝技術的制造,并且通過充分詳細地表示在機器可讀媒體上,可適合于促進所述制造。

處理核159包括執(zhí)行單元142、一個或多個寄存器文件的集合145和解碼器144。處理核159還包含對理解本公開實施例不必要的附加電路(未示出)。執(zhí)行單元142用于執(zhí)行由處理核159接收的指令。除了執(zhí)行典型處理器指令,執(zhí)行單元142可執(zhí)行壓縮指令集143中的指令,以便執(zhí)行對壓縮數(shù)據(jù)格式的操作。壓縮指令集143包含用于執(zhí)行本發(fā)明實施例的指令以及其它壓縮指令。執(zhí)行單元142通過內(nèi)部總線耦合到寄存器文件145。寄存器文件145表示處理核159上的用于存儲信息(包含數(shù)據(jù))的存儲區(qū)域。如先前所提到的,要理解到,存儲區(qū)域用于存儲不關鍵的壓縮數(shù)據(jù)。執(zhí)行單元142耦合到解碼器144。解碼器144用于將由處理核159接收的指令解碼成控制信號和/或微代碼入口(entry)點。響應于這些控制信號和/或微代碼入口點,執(zhí)行單元142執(zhí)行適當操作。在一個實施例中,解碼器用于解釋指令的操作碼,其將指示應該對在指令內(nèi)指示的對應數(shù)據(jù)執(zhí)行什么操作。

處理核159與總線141耦合,以便與各種其它系統(tǒng)裝置通信,其例如可包含但不限于:同步動態(tài)隨機存取存儲器(sdram)控制146、靜態(tài)隨機存取存儲器(sram)控制147、突發(fā)閃存接口148、個人計算機存儲卡國際協(xié)會(pcmcia)/致密閃速(cf)卡控制149、液晶顯示器(lcd)控制150、直接存儲器存取(dma)控制器151以及備選總線主(master)接口152。在一個實施例中,數(shù)據(jù)處理系統(tǒng)140還可包括i/o橋154以便經(jīng)由i/o總線153與各種i/o裝置通信。此類i/o裝置例如可包含但不限于通用異步接收器/傳送器(uart)155、通用串行總線(usb)156、藍牙無線uart157和i/o擴展接口158。

數(shù)據(jù)處理系統(tǒng)140的一個實施例提供移動、網(wǎng)絡和/或無線通信以及能夠執(zhí)行包含文本字符串比較操作的simd操作的處理核159。處理核159可被編程具有各種音頻、視頻、成像和通信算法編程,包含:離散變換,諸如walsh-hadamard變換,快速傅里葉變換(fft)、離散余弦變換(dct)以及它們的相應逆變換;壓縮/解壓技術,諸如色彩空間變換、視頻編碼運動估計或視頻解碼運動補償;以及調(diào)制/解調(diào)(modem)功能,諸如脈沖編碼調(diào)制(pcm)。

圖1c示出了能夠執(zhí)行指令以提供simdsm4加密塊密碼功能性的數(shù)據(jù)處理系統(tǒng)的其它實施例。根據(jù)一個備選實施例,數(shù)據(jù)處理系統(tǒng)160可包含主處理器166、simd協(xié)處理器161、高速緩存存儲器167和輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可選地可耦合到無線接口169。simd協(xié)處理器161能夠執(zhí)行包含按照一個實施例的指令的操作。處理核170可適合于以一個或多個工藝技術的制造,并且通過充分詳細地在機器可讀媒體上表示,可適合于促進制造所有或部分數(shù)據(jù)處理系統(tǒng)160(包含處理核170)。

對于一個實施例,simd協(xié)處理器161包括執(zhí)行單元162和一個或多個寄存器文件的集合164。主處理器166的一個實施例包括解碼器165以辨別指令集163中的指令(包含按照一個實施例的指令)用于由執(zhí)行單元162執(zhí)行。對于其它實施例,simd協(xié)處理器161還包括至少部分解碼器165以解碼指令集163中的指令。處理核170還包含對理解本發(fā)明實施例不必要的附加電路(未示出)。

在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,其控制通用類型的數(shù)據(jù)處理操作(包含與高速緩存存儲器167和輸入/輸出系統(tǒng)168的交互)。嵌入在數(shù)據(jù)處理指令流內(nèi)的是simd協(xié)處理器指令。主處理器166的解碼器165將這些simd協(xié)處理器指令辨別為應該由附連的simd協(xié)處理器161執(zhí)行的類型。相應地,主處理器166在協(xié)處理器總線171上發(fā)布這些simd協(xié)處理器指令(或表示simd協(xié)處理器指令的控制信號),從協(xié)處理器總線166,由任何附連的simd協(xié)處理器接收這些指令。在此情況下,simd協(xié)處理器161將接受并執(zhí)行預期用于它的任何接收到simd協(xié)處理器指令。

數(shù)據(jù)可經(jīng)由無線接口169接收以便由simd協(xié)處理器指令處理。對于一個示例,語音通信可以以數(shù)字信號形式接收,其可由simd協(xié)處理器指令處理以重新生成代表語音通信的數(shù)字音頻樣本。對于另一個示例,壓縮的音頻和/或視頻可以以數(shù)字比特流形式接收,其可由simd協(xié)處理器指令處理以重新生成數(shù)字音頻樣本和/或運動視頻幀。在處理核170的一個實施例中,主處理器166和simd協(xié)處理器161被集成到單個處理核170中,其包括執(zhí)行單元162、一個或多個寄存器文件的集合164和辨別指令集163中的指令(包含按照一個實施例的指令)的解碼器165。

圖2是按照本發(fā)明的一個實施例的包含執(zhí)行指令的邏輯電路的處理器200的微體系結(jié)構(gòu)的框圖。在一些實施例中,可實現(xiàn)按照一個實施例的指令,以對具有字節(jié)、字、雙字、四字等大小以及諸如單和雙精度整數(shù)和浮點數(shù)據(jù)類型的數(shù)據(jù)類型的數(shù)據(jù)元素進行操作。在一個實施例中,有序前端201是處理器200的一部分,該部分獲取要執(zhí)行的指令,并且準備在處理器流水線中以后要使用的該指令。前端201可包含幾個單元。在一個實施例中,指令預獲取器226從存儲器中獲取指令,并將指令饋送到指令解碼器228,其又解碼或解釋這些指令。例如,在一個實施例中,解碼器將接收的指令解碼成機器可執(zhí)行的稱為“微指令”或“微操作”(也稱為microop或uop)的一個或多個操作。在其它實施例中,解碼器將指令解析成操作碼和對應的數(shù)據(jù)以及控制字段,它們由微體系結(jié)構(gòu)使用以執(zhí)行按照一個實施例的操作。在一個實施例中,追蹤(trace)高速緩存230取得解碼的uop并將解碼的uop匯編成uop隊列234中的程序排序的序列或追蹤以便執(zhí)行。當追蹤高速緩存230遇到復雜指令時,微代碼rom232提供完成該操作所需的uop。

一些指令被轉(zhuǎn)化成單個微-op,而其它指令需要幾個微-op來完成整個操作。在一個實施例中,如果需要多于四個微-op來完成指令,則解碼器228訪問微代碼rom232以執(zhí)行指令。對于一個實施例,指令可被解碼成小數(shù)量的微-op,以便在指令解碼器228進行處理。在另一實施例中,指令可被存儲在微代碼rom232內(nèi),如果需要若干微-op來完成操作的話。追蹤高速緩存230指的是入口點可編程邏輯陣列(pla),以確定正確的微指令指針,以便讀取微代碼序列,以完成來自微代碼rom232的按照一個實施例的一個或多個指令。在微代碼rom232完成指令的微-op排序后,機器的前端201恢復從追蹤高速緩存230獲取微-op。

無序執(zhí)行引擎203是準備指令以便執(zhí)行的地方。無序執(zhí)行邏輯具有若干緩沖器,以在指令沿流水線向下并且被調(diào)度用于執(zhí)行時,平滑處理和重新排序指令的流以優(yōu)化性能。分配器邏輯分配每個uop需要以便執(zhí)行的機器緩沖器和資源。寄存器重命名邏輯將邏輯寄存器重命名到寄存器文件中的項上。在指令調(diào)度器(存儲器調(diào)度器、快速調(diào)度器202、慢速/通用浮點調(diào)度器204和簡單浮點調(diào)度器206)前面,分配器還為兩個uop隊列(一個用于存儲器操作,并且一個用于非存儲器操作)之一中的每個uop分配項。uop調(diào)度器202、204、206基于其相關性輸入寄存器操作數(shù)源的準備度和uop完成其操作需要的執(zhí)行資源的可用性,確定uop何時準備就緒執(zhí)行。一個實施例的快速調(diào)度器202可在主時鐘周期的每半個周期上進行調(diào)度,而其它調(diào)度器可每主處理器時鐘周期僅調(diào)度一次。調(diào)度器對于分派端口進行裁決以調(diào)度uop以便執(zhí)行。

寄存器文件208、210位于調(diào)度器202、204、206與執(zhí)行塊211中的執(zhí)行單元212、214、216、218、220、222、224之間。存在獨立寄存器文件208、210用于分別執(zhí)行整數(shù)操作和浮點操作。一個實施例中的每個寄存器文件208、210還包含旁路網(wǎng)絡,其可向新的相關uop旁路或轉(zhuǎn)發(fā)尚未寫入寄存器文件中的剛剛完成的結(jié)果。整數(shù)寄存器文件208和浮點寄存器文件210還能夠相互傳遞數(shù)據(jù)。對于一個實施例,整數(shù)寄存器文件208被分成兩個獨立寄存器文件,一個寄存器文件用于數(shù)據(jù)的低位32比特,而第二寄存器文件用于數(shù)據(jù)的高位32比特。一個實施例的浮點寄存器文件210具有128比特寬項,因為浮點指令通常具有從64比特到128比特寬的操作數(shù)。

執(zhí)行塊211包含執(zhí)行單元212、214、216、218、220、222、224,在其中實際執(zhí)行指令。這部分包含存儲微指令需要執(zhí)行的整數(shù)和浮點數(shù)據(jù)操作數(shù)值的寄存器文件208、210。一個實施例的處理器200包括若干執(zhí)行單元:地址生成單元(agu)212、agu214、快速alu216、快速alu218、慢速alu220、浮點alu222、浮點移動單元224。對于一個實施例,浮點執(zhí)行塊222、224執(zhí)行浮點、mmx、simd和sse或其它操作。一個實施例的浮點alu222包含64比特×64比特浮點除法器以執(zhí)行除法、平方根和余數(shù)微-op。對于本發(fā)明的實施例,涉及浮點值的指令可用浮點硬件處理。在一個實施例中,alu操作去到高速alu執(zhí)行單元216、218。一個實施例的快速alu216、218可以通過時鐘周期一半的有效延時執(zhí)行快速操作。對于一個實施例,最復雜的整數(shù)操作去到慢速alu220,因為慢速alu220包含用于長延時類型操作的整數(shù)執(zhí)行硬件,如乘法器、位移、標記邏輯和分支處理。存儲器加載/存儲操作由agu212、214執(zhí)行。在一個實施例中,整數(shù)alu216、218、220在對64比特數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作的上下文中描述。在備選實施例中,可實現(xiàn)alu216、218、220以支持各種數(shù)據(jù)比特大小,包含16、32、128、256等。類似地,可實現(xiàn)浮點單元222、224以支持具有各種寬度比特的一系列操作數(shù)。對于一個實施例,浮點單元222、224可結(jié)合simd和多媒體指令對128比特寬壓縮數(shù)據(jù)操作數(shù)進行操作。

在一個實施例中,在父加載(parentload)已經(jīng)完成執(zhí)行之前,uop調(diào)度器202、204、206分派相關操作。當在處理器200中推測性地調(diào)度和執(zhí)行uop時,處理器200還包含處理存儲器丟失的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中丟失,則流水線中可存在執(zhí)行中(inflight)相關操作,其為調(diào)度器留下了暫時不正確的數(shù)據(jù)。重放機制跟蹤和重新執(zhí)行使用不正確數(shù)據(jù)的指令。只需要重放相關操作,并且允許完成獨立操作。處理器的一個實施例的調(diào)度器和重放機制也設計成捕捉提供simdsm4加密塊密碼功能性的指令。

術語“寄存器”可指代可用作識別操作數(shù)的部分指令的板載處理器存儲位置。換而言之,寄存器可以是從處理器的外部可使用的那些寄存器(從程序器的角度而言)。然而,實施例的寄存器不應當在意義上限于具體類型的電路。相反,實施例的寄存器能夠存儲數(shù)據(jù),提供數(shù)據(jù),并且執(zhí)行本文中描述的功能。本文中描述的寄存器可由處理器內(nèi)的電路使用任何數(shù)量的不同技術實現(xiàn),如專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合等。在一個實施例中,整數(shù)寄存器存儲32比特整數(shù)數(shù)據(jù)。一個實施例的寄存器文件也包含用于壓縮數(shù)據(jù)的8個多媒體simd寄存器。對于下面的討論,將寄存器理解為設計成保持壓縮數(shù)據(jù)的數(shù)據(jù)寄存器,如來自加利福尼亞州santaclara的intelcorporation的以mmx技術實現(xiàn)的微處理器中的64比特寬mmxtm寄存器(在一些實例中也稱為“mm”寄存器)。在整數(shù)和浮點形式兩者中可用的這些mmx寄存器可與伴隨simd和sse指令的壓縮數(shù)據(jù)元素一起操作。類似地,與sse2、sse3、sse4或更高版本(一般稱為“ssex”,)技術有關的128比特寬xmm寄存器還可用于保持此類壓縮數(shù)據(jù)操作數(shù)。在一個實施例中,在存儲壓縮數(shù)據(jù)和整數(shù)數(shù)據(jù)中,寄存器無需區(qū)分兩種數(shù)據(jù)類型。在一個實施例中,整數(shù)和浮點包含在相同寄存器文件或不同寄存器文件中。此外,在一個實施例中,浮點和整數(shù)數(shù)據(jù)可存儲在不同寄存器或相同寄存器中。

在以下圖形的示例中,描述若干數(shù)據(jù)操作數(shù)。圖3a示出根據(jù)本發(fā)明的一個實施例的在多媒體寄存器中的各種壓縮數(shù)據(jù)類型表示。圖3a示出用于128比特寬操作數(shù)的壓縮字節(jié)310、壓縮字320和壓縮雙字(dword)330的數(shù)據(jù)類型。此示例的壓縮字節(jié)格式310為128比特長,并且包含16個壓縮字節(jié)數(shù)據(jù)元素。字節(jié)此處定義為8比特的數(shù)據(jù)。用于每個字節(jié)數(shù)據(jù)元素的信息存儲在針對字節(jié)0的比特7到比特0、針對字節(jié)1的比特15到比特8、針對字節(jié)2的比特23到比特16及最后針對字節(jié)15的比特120到比特127。因此,在寄存器中使用所有可用比特。此存儲布置增大了處理器的存儲效率。此外,利用訪問的16個數(shù)據(jù)元素,現(xiàn)在可并行對16個數(shù)據(jù)元素執(zhí)行一個操作。

通常,數(shù)據(jù)元素是與相同長度的其它數(shù)據(jù)元素一起存儲在單個寄存器或存儲器位置中的單獨數(shù)據(jù)段。在與ssex技術有關的壓縮數(shù)據(jù)序列中,xmm寄存器中存儲的數(shù)據(jù)元素的數(shù)量是128比特除以單獨數(shù)據(jù)元素的以比特為單位的長度。類似地,在與mmx和sse技術有關的壓縮數(shù)據(jù)序列中,mmx寄存器中存儲的數(shù)據(jù)元素的數(shù)量是64比特除以單獨數(shù)據(jù)元素的以比特為單位的長度。雖然圖3a中示出的數(shù)據(jù)類型為128比特長,但本發(fā)明的實施例也可利用64比特寬、256比特寬、512比特寬或其它大小的操作數(shù)操作。此示例的壓縮字格式320為128比特長,并且包含8個壓縮字數(shù)據(jù)元素。每個壓縮字包含16比特的信息。圖3a的壓縮雙字格式330為128比特長,并且包含4個壓縮雙字數(shù)據(jù)元素。每個壓縮雙字數(shù)據(jù)元素包含32比特的信息。壓縮四字為128比特長,并且包含2個壓縮四字數(shù)據(jù)元素。

圖3b示出備選的寄存器中的數(shù)據(jù)存儲格式。每個壓縮數(shù)據(jù)可包括多于一個獨立數(shù)據(jù)元素。示出了三個壓縮數(shù)據(jù)格式;壓縮半(half)341、壓縮單342和壓縮雙343。壓縮半341、壓縮單342和壓縮雙343的一個實施例包含固定點數(shù)據(jù)元素。對于備選實施例,壓縮半341、壓縮單342和壓縮雙343的一個或多個包含浮點數(shù)據(jù)元素。壓縮半341的一個備選實施例為128比特長(包含8個16比特數(shù)據(jù)元素)。壓縮單342的一個實施例為128比特長,并且包含4個32比特數(shù)據(jù)元素。壓縮雙343的一個實施例為128比特長,并且包含2個64比特數(shù)據(jù)元素。將意識到,此類壓縮數(shù)據(jù)格式可進一步擴展到其它寄存器長度,例如,96比特、160比特、192比特、224比特、256比特、512比特或更多。

圖3c示出根據(jù)本發(fā)明的一個實施例的在多媒體寄存器中的各種有符號和無符號的壓縮數(shù)據(jù)類型表示。無符號的壓縮字節(jié)表示344示出在simd寄存器中的無符號的壓縮字節(jié)的存儲。每個字節(jié)數(shù)據(jù)元素的信息存儲在針對字節(jié)0的比特7到比特0、針對字節(jié)1的比特15到比特8、針對字節(jié)2的比特23到比特16及最后針對字節(jié)15的比特120到比特127。因此,在寄存器中使用所有可用比特。此存儲布置可增大處理器的存儲效率。此外,利用訪問的16個數(shù)據(jù)元素,現(xiàn)在可以以并行方式對16個數(shù)據(jù)元素執(zhí)行一個操作。有符號的壓縮字節(jié)表示345示出有符號的壓縮字節(jié)的存儲。要注意的是,每一個字節(jié)數(shù)據(jù)元素的第8比特是符號指示符。無符號的壓縮字表示346示出在simd寄存器中如何存儲字7到字0。有符號的壓縮字表示347類似于無符號的壓縮字寄存器中的表示346。要注意的是,每個字數(shù)據(jù)元素的第16比特是符號指示符。無符號的壓縮雙字表示348顯示如何存儲雙字數(shù)據(jù)元素。有符號的壓縮雙字表示349類似于無符號的壓縮雙字寄存器中的表示348。要注意的是,必需的符號比特是每個雙字數(shù)據(jù)元素的第32比特。

圖3d示出操作編碼(操作碼)格式360的一個實施例,格式360具有32或更多比特以及寄存器/存儲器操作數(shù)尋址模式,格式360與在intel.com/products/processor/manuals/的萬維網(wǎng)(www)上從加利福尼亞州santaclara的intelcorporation可獲得的“64和ia-32intel體系結(jié)構(gòu)軟件開發(fā)員手冊組合的卷2a和2b:指令集參考(ia-32intelarchitecturesoftwaredeveloper′smanualcombinedvolume2a和2b:instructionsetreference)”中描述的操作碼格式的類型相對應。在一個實施例中,并且指令可通過字段361和362中的一個或多個字段編碼??勺R別高達每指令兩個操作數(shù)位置,包括高達兩個源操作數(shù)標識符364和365。對于一個實施例,目的地操作數(shù)標識符366與源操作數(shù)標識符364相同,而在其它實施例中,它們不同。對于備選實施例,目的地操作數(shù)標識符366與源操作數(shù)標識符365相同,而在其它實施例中,它們不同。在一個實施例中,通過源操作數(shù)標識符364和365識別的源操作數(shù)之一可通過指令的結(jié)果被改寫,而在其它實施例中,標識符364對應于源寄存器元素,并且標識符365對應于目的地寄存器元素。對于一個實施例,操作數(shù)標識符364和365可用于識別32比特或64比特源和目的地操作數(shù)。

圖3e示出具有40或更多個比特的另一備選操作編碼(操作碼)格式370。操作碼格式370與操作碼格式360相對應,并且包括可選前綴字節(jié)378。根據(jù)一個實施例的指令可通過字段378、371和372的一個或多個字段編碼。通過源操作數(shù)標識符374和375以及通過前綴字節(jié)378,可識別高達每指令兩個操作數(shù)位置。對于一個實施例,前綴字節(jié)378可用于識別32比特或64比特源和目的地操作數(shù)。對于一個實施例,目的地操作數(shù)標識符376與源操作數(shù)標識符374相同,而在其它實施例中,它們不同。對于備選實施例,目的地操作數(shù)標識符376與源操作數(shù)標識符375相同,而在其它實施例中,它們不同。在一個實施例中,指令對通過操作數(shù)標識符374和375識別的一個或多個操作數(shù)進行操作,并且通過操作數(shù)標識符374和375識別的一個或多個操作數(shù)通過指令的結(jié)果被改寫,而在其它實施例中,通過標識符374和375識別的操作數(shù)寫入另一寄存器中的另一數(shù)據(jù)元素。操作碼格式360和370允許由mod字段363和373和由可選比例-索引-基礎和位移字節(jié)部分指定的寄存器到寄存器、存儲器到寄存器、通過存儲器的寄存器、通過寄存器的寄存器、通過立即數(shù)(immediate)的寄存器、寄存器到存儲器尋址。

接下來轉(zhuǎn)到圖3f,在一些備選實施例中,64比特(或128比特或256比特或512比特或更多)單指令多數(shù)據(jù)(simd)算術操作可通過協(xié)處理器數(shù)據(jù)處理(cdp)指令執(zhí)行。操作編碼(操作碼)格式380描繪具有cdp操作碼字段382和389的一個此類cdp指令。cdp指令的類型,對于備選實施例,操作可通過字段383、384、387和388的一個或多個字段編碼??勺R別高達每指令三個操作數(shù)位置,包括高達兩個源操作數(shù)標識符385、390和一個目的地操作數(shù)標識符386。協(xié)處理器的一個實施例可對8、16、32和64比特值進行操作。對于一個實施例,對整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實施例中,可使用條件字段381,有條件執(zhí)行指令。對于一些實施例,源數(shù)據(jù)大小可由字段383編碼。在一些實施例中,可對simd字段進行零(z)、負(n)、進位(c)和溢出(v)檢測。對于一些指令,飽和的類型可由字段384編碼。

接下來轉(zhuǎn)到圖3g,圖3g是根據(jù)另一實施例的用于提供simdsm4加密塊密碼功能性的另一備選操作編碼(操作碼)格式397的描繪,所示格式397其與在intel.com/products/processor/manuals/的萬維網(wǎng)(www)上從加利福尼亞州santaclara的intelcorporation可獲得的“advancedvectorextensionsprogrammingreference”中描述的操作碼格式類型一致。

原始x86指令集提供具有包含在附加字節(jié)中的地址字節(jié)與立即操作數(shù)的各種格式的1字節(jié)操作碼,其的出現(xiàn)從第一“操作碼”字節(jié)已知。另外,存在保留作為操作碼的修飾符(稱為前綴,因為其必須放置在指令前)的某些字節(jié)值。當256個操作碼字節(jié)(包括這些特殊前綴值)的原始調(diào)色板(palette)用盡時,將單個字節(jié)專門用于256個操作碼的新集合的逸出。當增加向量指令(例如,simd)時,生成對更多操作碼的需要,并“兩字節(jié)”操作碼映射也不足夠,即使在通過前綴的使用進行擴展時。為此,將新指令增加到附加映射中,所述附加映射使用2個字節(jié)加上可選前綴作為標識符。

另外,為促進64比特模式中的附加寄存器,可在前綴與操作碼(和確定該操作碼所必需的任何逸出字節(jié))之間使用附加前綴(稱為“rex”)。在一個實施例中,rex可具有4個“有效載荷”比特,以指示64比特模式中的附加寄存器的使用。在其它實施例中,rex可具有少于或多于4比特。至少一個指令集的通用格式(其通常與格式360和/或格式370對應)通過以下一般地示出:

[prefixes][rex]escape[escape2]opcodemodrm(等)

操作碼格式397與操作碼格式370對應,并包括可選vex前綴字節(jié)391(在一個實施例中通過c4十六進制開始),以替換大多數(shù)其它常用傳統(tǒng)指令前綴字節(jié)與逸出碼。例如,以下示出使用兩個字段來編碼指令的實施例,當?shù)诙莩龃a存在于原始指令中時,或當需要使用rex字段中的附加比特(例如,xb字段和w字段)時,可使用所述實施例。在以下示出的實施例中,傳統(tǒng)逸出由新逸出值表示,傳統(tǒng)前綴被完全壓縮為“有效載荷”字節(jié)的一部分,傳統(tǒng)前綴被收回且可用于未來擴展,第二逸出碼在具有可用的未來映射或特征空間的“映射”字段中被壓縮,并增加新特征(例如,增加的向量長度和附加源寄存器指定符)。

根據(jù)一個實施例的指令可由字段391和392中的一個或多個編碼??捎勺侄?91組合源操作數(shù)標識符374和375且組合可選比例-索引-基礎(sib)標識符393、可選位移標識符394和可選立即字節(jié)395標識高達每指令四個操作數(shù)位置。對于一個實施例,vex前綴字節(jié)391可用于標識32比特或64比特源操作數(shù)和目的地操作數(shù)和/或128比特或256比特simd寄存器或存儲器操作數(shù)。對于一個實施例,由操作碼格式397提供的功能性可為通過操作碼格式370的冗余,而在其它實施例中它們不同。操作碼格式370和397允許由mod字段373且由可選(sib)標識符393、可選位移標識符394和可選立即字節(jié)395部分指定的寄存器到寄存器、存儲器到寄存器、通過存儲器的寄存器、通過寄存器的寄存器、通過立即數(shù)的寄存器、寄存器到存儲器尋址。

接下來轉(zhuǎn)到圖3h,其為用于根據(jù)另一實施例提供simdsm4加密塊密碼功能性的另一備選操作編碼(操作碼)格式398的描繪。操作碼格式398與操作碼格式370與397對于,并包括可選evex前綴字節(jié)396(在一個實施例中通過62十六進制開始),以替換大多數(shù)其它常用的傳統(tǒng)指令前綴字節(jié)和逸出碼且提供附加功能性。根據(jù)一個實施例的指令可由字段396和392中的一個或多個編碼??捎勺侄?96組合源操作數(shù)標識符374和375且組合可選比例-索引-基礎(sib)標識符393、可選位移標識符394和可選立即字節(jié)395標識高達每指令四個操作數(shù)位置和掩碼。對于一個實施例,evex前綴字節(jié)396可用于標識32比特或64比特源操作數(shù)與目的地操作數(shù)和/或128比特、256比特或512比特simd寄存器或存儲器操作數(shù)。對于一個實施例,由操作碼格式398提供的功能性可為通過操作碼格式370或397的冗余,而在其它實施例中它們不同。操作碼格式398允許由mod字段373且由可選(sib)標識符393、可選位移標識符394與可選立即字節(jié)395部分指定的在具有掩碼的情況下的寄存器到寄存器、存儲器到寄存器、通過存儲器的寄存器、通過寄存器的寄存器、通過立即數(shù)的寄存器、寄存器到存儲器尋址。至少一個指令集的通用格式(其通常與格式360和/或格式370對應)通過以下一般地示出:

evex1rxbmmmmmwvvvlppevex4opcodemodrm[sib][disp][imm]

對于一個實施例,根據(jù)evex格式398編碼的指令可具有附加“有效載荷”比特,所述附加”有效載荷”比特可用于提供具有附加新特征的simdsm4加密塊密碼功能性,所述附加新特征例如諸如用戶可配置的掩碼寄存器或附加操作數(shù)或從128比特、256比特或512比特向量寄存器中的選擇,或用于從中選擇的更多寄存器等。

例如,在vex格式397可用于提供具有隱式掩碼的simdsm4加密塊密碼功能性的情況下,evex格式398可用于提供具有顯示用戶可配置掩碼的simdsm4加密塊密碼函數(shù)。另外,在vex格式397可用于在128比特或256比特向量寄存器上提供simdsm4加密塊密碼功能性的情況下,evex格式398可用于在128比特、256比特、512比特或更大(或更小)向量寄存器上提供simdsm4加密塊密碼功能性。

用于提供simdsm4加密塊密碼功能性的示例指令由以下示例示出:

上面示出的示例指令可指定第一和第二源數(shù)據(jù)操作數(shù)集合(例如,作為vmm1和vmm2/mem-v,其可能為256比特或512比特等),以及替換函數(shù)指示符(例如,在立即操作數(shù)中,imm8)。用于執(zhí)行上面示出的示例指令的處理器的實施例可包括加密單元,其響應于指令以執(zhí)行以下操作:在具有來自響應于指示第一替換函數(shù)的替換函數(shù)指示符的第二源數(shù)據(jù)操作數(shù)集合的對應密鑰的第一源數(shù)據(jù)操作數(shù)集合的一部分執(zhí)行sm4輪交換的片(例如,基于imm8中相應的值1的t或l);使用具有來自響應于指示第二替換函數(shù)的替換函數(shù)指示符的第二源數(shù)據(jù)操作數(shù)集合的對應常數(shù)的第一源數(shù)據(jù)操作數(shù)集合的另一部分執(zhí)行sm4密鑰生成的片(例如,基于imm8中相應的值0的t’或l’),以及在simd目的地寄存器中存儲第一指令的結(jié)果元素集合。

將意識到,通過使用相同simd指令執(zhí)行sm4輪交換和sm4密鑰生成,加密或解密可通過較小緩沖器(例如,256比特)中的密鑰擴展而同時被處理。因為128比特(例如,四個32比特字元素)為每個新輪交換或密鑰生成所要求,所以每一輪最新128比特形式(form)可被流水線輸送或旁路至下一個連續(xù)輪。在一些實施例中,片可包括4輪的sm4輪交換和4輪的sm4密鑰生成。對于此類實施例,32輪的sm4輪交換與sm4密鑰生成可使用8(或9)個sm4輪片操作執(zhí)行。在一些實施例中,256比特數(shù)據(jù)路徑或512比特數(shù)據(jù)路徑的每個128比特通道可基于指示特定替換函數(shù)(例如,t或t’,或者備選地l或l’)的指令的立即操作數(shù)中的對應值,被選擇用于處理sm4輪交換的片或用于處理sm4密鑰生成的片。在一些備選實施例中,用于處理sm4輪交換的片與用于處理sm4密鑰生成的片的數(shù)據(jù)路徑的通道可預先確定和/或固定。在一些實施例中,片可通過微指令(或micro-op或u-op)實現(xiàn)并且結(jié)果可從一個微指令旁路至下一個微指令。在一些備選實施例中,片可通過在硬件中的邏輯的多個層(例如,2或4或8)或者備選地通過微指令和硬件中的邏輯的多個層的某個組合實現(xiàn)。在一些實施例中,片可包括通過在指令的立即操作數(shù)中的值指示的若干輪(例如,1、2、4、8、16或32)sm4輪交換和sm4密鑰生成。在一些備選實施例中,片中的輪數(shù)可通過指令記憶存儲器和/或通過與操作編碼(或操作碼)指示。在其中片可包括多個輪(例如,4、8、16、32等)的一些實施例中,在源操作數(shù)中的密鑰信息可在每一輪被更新并供應至下一輪的塊處理邏輯,并常數(shù)可被讀取(例如,從128比特、256比特、512比特、1024比特等的存儲器操作數(shù)中)以供應至用于每個連續(xù)的輪的密鑰處理邏輯。

圖4a是根據(jù)本發(fā)明的至少一個實施例的示出有序流水線和寄存器重命名級、無序發(fā)布/執(zhí)行流水線的框圖。圖4b是根據(jù)本發(fā)明的至少一個實施例的示出要包括在處理器中的無序發(fā)布/執(zhí)行邏輯、寄存器重命名邏輯和有序體系結(jié)構(gòu)核的框圖。圖4a中的實線框示出有序流水線,而虛線框示出寄存器重命名、無序發(fā)布/執(zhí)行流水線。類似地,圖4b中的實線框示出有序體系結(jié)構(gòu)邏輯,而虛線框示出寄存器重命名和無序發(fā)布/執(zhí)行邏輯。

在圖4a中,處理器流水線400包括獲取級402、長度解碼級404、解碼級406、分配級408、重命名級410、調(diào)度(也稱為分派或發(fā)布)級412、寄存器讀取/存儲器讀取級414、執(zhí)行級416、回寫/存儲器寫入級418、異常處理級422及提交級424。

在圖4b中,箭頭表示在兩個或更多個單元之間的耦合,并且箭頭的方向指示在那些單元之間數(shù)據(jù)流的方向。圖4b顯示處理器核490,包括耦合到執(zhí)行引擎單元450的前端單元430,并且兩者均耦合到存儲器單元470。

核490可以是精簡指令集計算(risc)核、復雜指令集計算(cisc)核、超長指令字(vlim)核或混合或備選核類型。作為又一選項,核490可以是專用核,諸如,例如網(wǎng)絡或通信核、壓縮引擎、圖形核或諸如此類。

前端單元430包括耦合到指令高速緩存單元434的分支預測單元432。指令高速緩存單元434耦合到指令轉(zhuǎn)換后備緩沖器(tlb)436。tlb436耦合到指令獲取單元438,其耦合到解碼單元440。解碼單元或解碼器可將指令解碼,并且生成作為輸出的一個或多個微操作、微代碼入口點、微指令、其它指令或其它控制信號,它們從原始指令解碼或者以其它方式反映原始指令或者從原始指令得到。解碼器可使用各種不同機制實現(xiàn)。適合機制的示例包括但不限于查找表、硬件實現(xiàn)、可編程邏輯陣列(pla)、微代碼只讀存儲器(rom)等。指令高速緩存單元434還耦合到存儲器單元470中的2級(l2)高速緩存單元476。解碼單元440耦合到執(zhí)行引擎單元450中的重命名/分配器單元452。

執(zhí)行引擎單元450包括耦合到引退單元454和一個或多個調(diào)度器單元456的集合的重命名/分配器單元452。一個或多個調(diào)度器單元456表示任何數(shù)量的不同調(diào)度器,包括預留站、中央指令窗口等。一個或多個調(diào)度器單元456耦合到一個或多個物理寄存器文件單元458。一個或多個物理寄存器文件單元458的每個表示一個或多個物理寄存器文件,這些文件的不同文件存儲一個或多個不同數(shù)據(jù)類型,如標量整數(shù)、標量浮點、壓縮整數(shù)、壓縮浮點、向量整數(shù)、向量浮點、等,狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。一個或多個物理寄存器文件單元458由引退單元454重疊以示出其中可實現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用一個或多個重新排序緩沖器和一個或多個引退寄存器文件;使用一個或多個將來文件、一個或多個歷史緩沖器和一個或多個引退寄存器文件;使用寄存器映射和寄存器池等)。通常,體系結(jié)構(gòu)寄存器從處理器外部或者從程序器的角度而言是可見的。寄存器不限于任何已知具體類型的電路。各種不同類型的寄存器只要它們能夠如本文中所描述地那樣存儲和提供數(shù)據(jù),它們便是適合的。適合寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合等。引退單元454和一個或多個物理寄存器文件單元458耦合到一個或多個執(zhí)行集群460。一個或多個執(zhí)行集群460包括一個或多個執(zhí)行單元集合462和一個或多個存儲器存取單元集合464。執(zhí)行單元462可執(zhí)行各種操作(例如,移位、加法、減法、乘法),并且對各種類型的數(shù)據(jù)執(zhí)行(例如,標量浮點、壓縮整數(shù)、壓縮浮點、向量整數(shù)、向量浮點)。雖然一些實施例可包括專用于特定功能或功能的集合的若干執(zhí)行單元,但其它實施例可只包括一個執(zhí)行單元或全部執(zhí)行所有功能的多個執(zhí)行單元。一個或多個調(diào)度器單元456、一個或多個物理寄存器文件單元458和一個或多個執(zhí)行集群460示為可能是多個,這是因為某些實施例為某些類型的數(shù)據(jù)/操作創(chuàng)建獨立流水線(例如,標量整數(shù)流水線、標量浮點/壓縮整數(shù)/壓縮浮點/向量整數(shù)/向量浮點流水線和/或存儲器存取流水線,每個流水線具有其自己的調(diào)度器單元、一個或多個物理寄存器文件單元和/或執(zhí)行集群-并且在獨立存儲器存取流水線的情況下,實現(xiàn)其中僅此流水線的執(zhí)行集群具有一個或多個存儲器存取單元464的某些實施例)。還應理解的是,在使用獨立流水線的情況下,一個或多個這些流水線可以是無序發(fā)布/執(zhí)行,并且其余的流水線是有序的。

存儲器存取單元464的集合耦合到存儲器單元470,其包括耦合到數(shù)據(jù)高速緩存單元474的數(shù)據(jù)tlb單元472,數(shù)據(jù)高速緩存單元474耦合到2級(l2)高速緩存單元476。在一個示范實施例中,存儲器存取單元464可包括負載單元、存儲地址單元和存儲數(shù)據(jù)單元,它們中的每個耦合到存儲器單元470中的數(shù)據(jù)tlb單元472。l2高速緩存單元476耦合到一個或多個其它級的高速緩存,并且最終耦合到主存儲器。

通過示例,示范寄存器重命名、無序發(fā)布/執(zhí)行核體系結(jié)構(gòu)可如下實現(xiàn)流水線400∶1)指令獲取438執(zhí)行獲取級402和長度解碼級404;2)解碼單元440執(zhí)行解碼級406;3)重命名/分配器單元452執(zhí)行分配級408和重命名級410;4)一個或多個調(diào)度器單元456執(zhí)行調(diào)度級412;5)一個或多個物理寄存器文件單元458和存儲器單元470執(zhí)行寄存器讀取/存儲器讀級414;執(zhí)行集群460執(zhí)行執(zhí)行級416;6)存儲器單元470和一個或多個物理寄存器文件單元458執(zhí)行回寫/存儲器寫入級418;7)各種單元可涉及異常處理級422;以及8)引退單元454和一個或多個物理寄存器文件單元458執(zhí)行提交級424。

核490可支持一個或多個指令集[例如,x86指令集(其中更新版本已添加一些擴展)、加利福尼亞州sunnyvale的mipstechnologies的mips指令集、加利福尼亞州sunnyvale的armholdings的arm指令集(具有諸如neon的可選附加擴展)。

應理解的是,核可以支持多線程(執(zhí)行兩個或更多個并行的操作或線程的集合),并且可以以多種方式(包括時間分片多線程、同時多線程(其中,單個物理核提供用于物理核在同時進行多線程的每個線程的邏輯核)或其組合(例如時間分片獲取和解碼及之后的同時多線程,如在超線程技術中一樣))進行多線程支持。

雖然寄存器重命名在無序執(zhí)行的上下文中描述,但應理解的是,可在有序體系結(jié)構(gòu)中使用寄存器重命名。雖然處理器的所示實施例也包括獨立指令和數(shù)據(jù)高速緩存單元434/474及共享l2高速緩存單元476,但備選實施例可具有諸如例如1級(l1)內(nèi)部高速緩存的用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,或多個級的內(nèi)部高速緩存。在一些實施例中,系統(tǒng)可包括內(nèi)部高速緩存和可在核和/或處理器外的外部高速緩存的組合。備選地,所有高速緩存可在核和/或處理器的外部。

圖5為根據(jù)本發(fā)明實施例的具有集成存儲器控制器和圖形的單核處理器和多核處理器500的框圖。圖5中的實線框示出處理器500,其具有單個核502a、系統(tǒng)代理510、一個或多個總線控制器單元516的集合,而虛線框為可選增加示出備選處理器500,其具有多個核502a-n、在系統(tǒng)代理單元510中的一個或多個集成存儲器控制器單元514的集合,以及集成圖形邏輯508。

存儲器層級包括核內(nèi)的一級或多級高速緩存、一個或多個共享高速緩存單元506的集合、耦合到集成存儲器控制器單元514的集合的外部存儲器(未顯示)。共享高速緩存單元506的集合可包括一個或多個中級高速緩存,例如2級(l2)、3級(l3)、4級(l4),或其它級高速緩存、末級高速緩存(llc),和/或其組合。雖然在一個實施例中,基于環(huán)的互聯(lián)單元512與集成圖形邏輯508、共享高速緩存單元506的集合以及系統(tǒng)代理單元510互聯(lián),但備選實施例可使用任何數(shù)量的眾所周知的技術來互聯(lián)此類單元。

在一些實施例中,核502a-n中的一個或多個能夠進行多線程處理。系統(tǒng)代理510包括協(xié)調(diào)并操作核502a-n的這些部件。系統(tǒng)代理單元510可包括例如功率控制單元(pcu)和顯示單元。pcu可為調(diào)節(jié)核502a-n與集成圖形邏輯508的功率狀態(tài)所需的邏輯和組件,或者包括上述邏輯和組件。顯示單元用于驅(qū)動一個或多個外部連接的顯示器。

核502a-n在體系結(jié)構(gòu)和/或指令集方面可為同構(gòu)或異構(gòu)的。例如,核502a-n中的一些可以是有序的,而其它核為無序。作為另一示例,核502a-n中兩個或更多個可以能夠執(zhí)行相同指令集,而其它核可以僅能夠執(zhí)行指令集的子集或不同指令集。

處理器可為通用處理器,例如coretm,i3、i5、i7、2核和四核、xeontm、itaniumtm、xscaletm或strongarmtm處理器,其可從加利福尼亞州,santaclara的intelcorporation獲得。備選地,處理器可來自另一公司,如armholdings,ltd,mips等。處理器可為專用處理器,例如諸如網(wǎng)絡或通信處理器、壓縮引擎、圖形處理器、協(xié)處理器、嵌入式處理器等。處理器可實現(xiàn)在一個或多個芯片上。處理器500可為一個或多個襯底的部分和/或可使用若干工藝技術(例如諸如,bicmos、cmos或nmos)中的任一個將處理器500實現(xiàn)在一個或多個襯底上。

圖6-8是適合于包含處理器500的示范系統(tǒng),而圖9是包含一個或多個核502的示范片上系統(tǒng)(soc)。在本領域已知的用于膝上型計算機、桌面型計算機、手持pc、個人數(shù)字助理、工程設計工作站、服務器、網(wǎng)絡裝置、網(wǎng)絡集線器、交換機、嵌入式處理器、數(shù)字信號處理器(dsp)、圖形裝置、視頻游戲裝置、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持裝置和各種其它電子裝置的其它系統(tǒng)設計和配置也是適合的。一般而言,能夠結(jié)合處理器和/或本文所公開的其它執(zhí)行邏輯的大量系統(tǒng)或電子裝置通常是適合的。

現(xiàn)在參考圖6,示出了按照本發(fā)明的一個實施例的系統(tǒng)600的框圖。系統(tǒng)600可包含一個或多個處理器610、615,它們耦合到圖形存儲器控制器集線器(gmch)620。在圖6中用虛線表示附加處理器615的可選性質(zhì)。

每個處理器610、615可以是某一版本的處理器500。然而,應該指出,在處理器610、615中不可能存在集成圖形邏輯和集成存儲器控制單元。圖6示出了gmch620可耦合到存儲器640,存儲器640例如可以是動態(tài)隨機存取存儲器(dram)。對于至少一個實施例,dram可與非易失性高速緩存關聯(lián)。

gmch620可以是芯片集,或者芯片集的一部分。gmch620可與一個或多個處理器610、615通信,并控制一個或多個處理器610、615與存儲器640之間的交互。gmch620也可充當一個或多個處理器610、615與系統(tǒng)600其它元件之間的加速總線接口。對于一個實施例,gmch620經(jīng)由多點總線(諸如前側(cè)總線(fsb)695)與一個或多個處理器610、615通信。

更進一步,gmch620耦合到顯示器645(諸如平板顯示器)。gmch620可包含集成圖形加速器。gmch620進一步耦合到輸入/輸出(i/o)控制器集線器(ich)650,其可用于將各種外設裝置耦合到系統(tǒng)600。例如在圖6的實施例中示出外部圖形裝置660,其可以是耦合到ich650的分立圖形裝置,連同另一外設裝置670。

備選地,在系統(tǒng)600中也可存在附加的或不同的處理器。例如,一個或多個附加處理器610、615可包含與處理器610相同的一個或多個附加處理器、與處理器610異構(gòu)或不對稱的一個或多個附加處理器、加速器(諸如例如圖形加速器或數(shù)字信號處理(dsp)單元)、現(xiàn)場可編程門陣列或任何其它處理器。在品質(zhì)度量譜(包含體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱、功耗特性等)方面,在物理資源610、615之間可能存在各種差異。這些差異在處理器610、615之間可有效地將它們自己標明為不對稱并且異構(gòu)。對于至少一個實施例,各種處理器610、615可駐留在同一管芯封裝中。

現(xiàn)在參考圖7,示出了按照本發(fā)明的實施例的第二系統(tǒng)700的框圖。如圖7中所示的,多處理器系統(tǒng)700是點對點互連系統(tǒng),并且包含經(jīng)由點對點互連750耦合的第一處理器770和第二處理器780。處理器770和780中的每個可以如一個或多個處理器610,615一樣,是某一版本的處理器500。

雖然示出只有兩個處理器770、780,但要理解到,本發(fā)明的范圍不那樣限。在其它實施例中,在給定處理器中可存在一個或多個附加處理器。

分別示出處理器770和780包含集成存儲器控制器單元772和782。處理器770還包含點對點(p-p)接口776和778作為其總線控制器單元的一部分;類似地,第二處理器780包含p-p接口786和788。處理器770、780可經(jīng)由點對點(p-p)接口750使用p-p接口電路778、788交換信息。如圖7中所示的,imc772和782將處理器耦合到相應存儲器,即存儲器732和存儲器734,它們可以是本地附連到相應處理器的主存儲器的部分。

處理器770、780可各經(jīng)由單獨p-p接口752、754使用點對點接口電路776、794、786、798與芯片集790交換信息。芯片集790還可經(jīng)由高性能圖形接口739與高性能圖形電路738交換信息。

共享高速緩存(未示出)可被包含在任一處理器中或兩個處理器外,仍經(jīng)由p-p互連與處理器連接,使得任一或兩個處理器的本地高速緩存信息可被存儲在共享高速緩存中,如果處理器被置于低功率模式的話。

芯片集790可經(jīng)由接口796耦合到第一總線716。在一個實施例中,第一總線716可以是外設組件互連(pci)總線,或諸如pciexpress總線的總線,或另一個第三代i/o互連總線,盡管本發(fā)明的范圍不那樣限制。

如圖7中所示的,各種i/o裝置714可耦合到第一總線716,連同將第一總線716耦合到第二總線720的總線橋718。在一個實施例中,第二總線720可以是低管腳計數(shù)(lpc)總線。在一個實施例中,各種裝置可耦合到第二總線720,例如包含鍵盤和/或鼠標722、通信裝置727和存儲單元728,諸如盤驅(qū)動器或可包含指令/代碼和數(shù)據(jù)730的其它大容量存儲裝置。進一步說,音頻i/o724可耦合到第二總線720。要指出,其它體系結(jié)構(gòu)是可能的。例如,代替圖7的點對點體系結(jié)構(gòu),系統(tǒng)可實現(xiàn)多點總線或其它此類體系結(jié)構(gòu)。

現(xiàn)在參考圖8,示出了按照本發(fā)明的實施例的第三系統(tǒng)800的框圖。圖7和圖8中的相同的元件帶有相同的附圖標記,并且已經(jīng)從圖8中省略了圖7的某些方面,以便避免使圖9的其它方面模糊不清。

圖8示出處理器870、880可分別包含集成存儲器和i/o控制邏輯(“cl”)872和882。對于至少一個實施例,cl872、882可包含集成存儲器控制器單元,諸如上面結(jié)合圖5和圖7所描述的集成存儲器控制器單元。此外,cl872、882也可包含i/o控制邏輯。圖8不僅示出了存儲器832、834可耦合到cl872、882,而且i/o裝置814也耦合到控制邏輯872、882。傳統(tǒng)i/o裝置815耦合到芯片集890。

現(xiàn)在參考圖9,示出了按照本發(fā)明實施例的soc900的框圖。圖5中的相同元件帶有相同附圖標記。還有,虛線框可表示更高級soc上的可選特征。在圖9中,一個或多個互連單元902可耦合到:應用處理器910,其包含一個或多個核502a-n的集合以及一個或多個共享高速緩存單元506;系統(tǒng)代理單元510;一個或多個總線控制器單元516;一個或多個集成存儲器控制器單元514;媒體處理器集合920,其可包含集成圖形邏輯508、用于提供靜止和/或視頻相機功能性的圖像處理器924、用于提供硬件音頻加速的音頻處理器926以及用于提供視頻編碼/解碼加速的視頻處理器928;靜態(tài)隨機存取存儲器(sram)單元930;直接存儲器存取(dma)單元932;以及用于耦合到一個或多個外部顯示器的顯示單元940。

圖10示出了按照一個實施例的可執(zhí)行至少一個指令的包含中央處理單元(cpu)和圖形處理單元(gpu)的處理器。在一個實施例中,執(zhí)行根據(jù)至少一個實施例的操作的指令可由cpu執(zhí)行。在另一實施例中,指令可由gpu執(zhí)行。在又一實施例中,指令可通過由gpu和cpu執(zhí)行的操作組合執(zhí)行。例如,在一個實施例中,按照一個實施例的指令可被接收和解碼以便在cpu上執(zhí)行。然而,解碼指令內(nèi)的一個或多個操作可由cpu執(zhí)行,并且結(jié)果返回到gpu用于指令的最后引退。相反,在一些實施例中,cpu可充當主處理器,并且gpu充當協(xié)處理器。

在一些實施例中,受益于高度并行吞吐量處理器的指令可由gpu執(zhí)行,而受益于處理器(其受益于深度流水線化體系結(jié)構(gòu))執(zhí)行的指令可由cpu執(zhí)行。例如,圖形、科學應用、金融應用和其它并行工作負荷可受益于gpu的執(zhí)行,并相應地執(zhí)行,而更多順序應用(諸如操作系統(tǒng)內(nèi)核或應用代碼)可更適合于cpu。

在圖10中,處理器1000包含cpu1005、gpu1010、圖像處理器1015、視頻處理器1020、usb控制器1025、uart控制器1030、spi/sdio控制器1035、顯示裝置1040、高清多媒體接口(hdmi)控制器1045、mipi控制器1050、閃存控制器1055、雙數(shù)據(jù)速率(ddr)控制器1060、安全性引擎1065和i2s/i2c(集成芯片間音頻/集成電路間)控制器1070。其它邏輯和電路可包含在圖10的處理器中,包含更多cpu和gpu以及其它外設接口控制器。

至少一個實施例的一個或多個方面可由存儲在表示處理器內(nèi)的各種邏輯的機器可讀介質(zhì)上的代表性數(shù)據(jù)實現(xiàn),其當由機器讀取時使機器制造執(zhí)行本文描述的技術的邏輯。稱為“ip核”的此類表示可存儲在有形機器可讀介質(zhì)(“帶”)上,并供應給各種客戶或制造設施,以加載到實際上制造邏輯或處理器的制造機器中。例如,諸如由armholdings,ltd.開發(fā)的cortextm系列處理器和中國科學院計算技術研究所(ict)開發(fā)的龍芯ip核的ip核可許可或銷售到各種客戶或被許可方,如texasinstruments、qualcomm、apple或samsung,并且在由這些客戶或被許可人生產(chǎn)的處理器中實現(xiàn)。

圖11示出了按照一個實施例示出ip核開發(fā)的框圖。存儲裝置1130包含模擬軟件1120和/或硬件或軟件模型1110。在一個實施例中,表示ip核設計的數(shù)據(jù)可經(jīng)由存儲器1140(例如硬盤)、有線連接(例如因特網(wǎng))1150或無線連接1160提供給存儲裝置1130。由模擬工具和模型生成的ip核信息然后可被傳送到制造設施,在其中它可由第三方制造以執(zhí)行按照至少一個實施例的至少一個指令。

在一些實施例中,一個或多個指令可對應于第一類型或體系結(jié)構(gòu)(例如x86),并且在不同類型或體系結(jié)構(gòu)(例如arm)的處理器上轉(zhuǎn)換或仿真。根據(jù)一個實施例,指令因此可在任何處理器或處理器類型(包含arm、x86、mips、gpu)或其它處理器類型或體系結(jié)構(gòu)上執(zhí)行。

圖12示出了按照一個實施例的由不同類型的處理如何仿真第一類型的指令。在圖12中,程序1205包含可與根據(jù)一個實施例的指令執(zhí)行相同或基本上相同功能的一些指令。然而,程序1205的指令可屬于與處理器1215不同或不兼容的類型和/或格式,意味著,程序1205中的類型的指令可能不能夠由處理器1215本機(natively)執(zhí)行。然而,在仿真邏輯1210的幫助下,程序1205的指令可被轉(zhuǎn)換成能夠由處理器1215本機執(zhí)行的指令。在一個實施例中,仿真邏輯可體現(xiàn)在硬件中。在另一實施例中,仿真邏輯可體現(xiàn)在有形、機器可讀介質(zhì)中,其包含將程序1205中的類型的指令轉(zhuǎn)換成由處理器1215本機可執(zhí)行的類型。在其它實施例中,仿真邏輯是固定功能或可編程硬件以及存儲在有形、機器可讀介質(zhì)上的程序的組合。在一個實施例中,處理器包含仿真邏輯,而在其它實施例中,仿真邏輯存在于處理器外部,并且由第三方提供。在一個實施例中,處理器能夠通過執(zhí)行在處理器中包含的或與處理器關聯(lián)的微代碼或固件來加載體現(xiàn)在包含軟件的有形、機器可讀介質(zhì)中的仿真邏輯。

圖13是按照本發(fā)明的實施例的對比使用軟件指令轉(zhuǎn)化器將源指令集中的二進制指令轉(zhuǎn)化成目標指令集中的二進制指令的框圖。在所示出的實施例中,指令轉(zhuǎn)化器是軟件指令轉(zhuǎn)化器,盡管備選地,指令轉(zhuǎn)化器可以用軟件、固件、硬件或它們的各種組合實現(xiàn)。圖13示出以可使用x86編譯器1304編譯高級語言1302的程序以生成x86二進制代碼1306,其可由具有至少一個x86指令集核的處理器1316本機執(zhí)行。具有至少一個x86指令集核的處理器1316表示可通過兼容執(zhí)行或以其它方式處理(1)intelx86指令集核的指令集的實質(zhì)部分或(2)定向為在具有至少一個x86指令集核的intel處理器上運行的應用或其它軟件的對象代碼版本,與具有至少一個x86指令集核的intel處理器執(zhí)行基本上相同功能,以便與具有至少一個x86指令集核的intel處理器實現(xiàn)基本上相同結(jié)果的任何處理器。x86編譯器1304表示可操作以生成x86二進制代碼1306(例如對象代碼)的編譯器,二進制代碼1306可在具有或沒有附加連鎖處理的情況下在具有至少一個x86指令集核1316的處理器上執(zhí)行。類似地,圖13示出以高級語言1302的程序可使用備選指令集編譯器1308編譯以生成備選指令集二進制代碼1310,其可由沒有至少一個x86指令集核1314的處理器(例如,具有執(zhí)行加利福尼亞州sunnyvale的mipstechnologies的mips指令集,和/或執(zhí)行加利福尼亞州sunnyvale的armholdings的arm指令集的核的處理器)本機執(zhí)行。指令轉(zhuǎn)化器1312用于將x86二進制代碼1306轉(zhuǎn)化成可由沒有x86指令集核1314的處理器本機執(zhí)行的代碼。這個轉(zhuǎn)化的代碼可能不與備選指令集二進制代碼1310相同,因為能夠進行此操作的指令轉(zhuǎn)化器難以制作;然而,轉(zhuǎn)化的代碼將完成通用操作,并且由來自備選指令集的指令組成。從而,指令轉(zhuǎn)化器1312表示通過仿真、模擬或任何其它過程,允許不具有x86指令集處理器或核的處理器或其它電子裝置執(zhí)行x86二進制代碼1306的軟件、固件、硬件或其組合。

圖14a示出了用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的設備1402的一個實施例的圖形。設備1402包括元素的第一源數(shù)據(jù)操作數(shù)1410集合、元素的第二源數(shù)據(jù)操作數(shù)1420集合、和一個或多個在8比特立即操作數(shù)1430中的替換函數(shù)指示符。在設備1401中,響應于指示在復用器1412的塊替換函數(shù)t的立即操作數(shù)1430中的一個或多個替換函數(shù)指示符的第一指示符,執(zhí)行具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第一一個或多個密鑰(rki)的所述第一源數(shù)據(jù)操作數(shù)1410集合的一部分(xi-xi+3)的第一一個或多個sm4輪交換。塊替換函數(shù)t是包括非線性替換τ(tau)和線性替換l(即,t(.)=l(τ(.)))的可反相混合器(mixer)替換,其中

以及

b=(b0,b1,b2,b3)=τ(a0,a1,a2,a3)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3)),

每一個a0-a3和b0-b3具有8比特,算子表示逐比特異或(異或)而算子<<<表示左旋。sbox函數(shù)的進一步細節(jié)(常數(shù)參數(shù)、密鑰擴展和加密等)可在版本1.03,2008年5月15日的由sunmicrosystem的whitfielddiffie和sonoma州立大學的georgerledin翻譯和排版的在eprint.iacr.org/2008/329.pdf.的萬維網(wǎng)可獲取的“sm4encryptionalgorithmforwirelessnetworks”中找到。

在設備1401中,響應于指示在復用器1414的密鑰替換函數(shù)t’的立即操作數(shù)1430中所述一個或多個替換函數(shù)指示符的第二指示符,使用具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第一一個或多個常數(shù)(cki)的第一源數(shù)據(jù)操作數(shù)1410集合的所述部分(rki-rki+3)的第一一個或多個sm4密鑰生成。塊替換函數(shù)t’是包括相同非線性替換τ(tau)但不同的線性替換l’(即,t’(.)=l’(τ(.)))的可反相混合器替換,其中

以及

b=(b0,b1,b2,b3)=τ(a0,a1,a2,a3)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3))。

將意識到,在立即操作數(shù)1430中的一個或多個替換函數(shù)指示符可在備選的優(yōu)選實施例中被選擇以分別指示塊和密鑰替換函數(shù)l和l’而不是t和t’(例如,如在處理塊1403的設備中所示的),以提供進一步電路的精簡而沒有對設備1401或設備1402要求任何體系結(jié)構(gòu)上可見變化,或?qū)μ峁﹕imdsm4加密塊密碼功能性的特定指令的精簡。對設備1401中的t和t’的輸入分別為復用器1412和1414的輸出則分別與xi和rki進行異或,以分別生成xi+4和rki+4。根據(jù)設備1401的一個實施例,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1440集合可存儲在simd寄存器中(例如,如果僅要求單個輪或如果微指令用于產(chǎn)生中間結(jié)果)。

在設備1402中,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1440的集合連同元素的另一源數(shù)據(jù)操作數(shù)1420集合和立即操作數(shù)1430中的一個或多個替換函數(shù)指示符被訪問(例如,在simd寄存器中)。在設備1402中,響應于指示在復用器1432的塊替換函數(shù)t的立即操作數(shù)1430中的所述一個或多個替換函數(shù)指示符的第三指示符,執(zhí)行具有來自源數(shù)據(jù)操作數(shù)1420集合的對應第二一個或多個密鑰(rki+1)的結(jié)果元素1440的集合的一部分(xi+1-xi+4)的第二一個或多個sm4輪交換。至在設備1402的第二一個或多個sm4輪交換中的t和t’的輸入為:

在設備1402的處理塊1403中,響應于指示在復用器1434的密鑰替換函數(shù)l’的立即操作數(shù)1430中的另一一個或多個替換函數(shù)指示符的第四指示符,執(zhí)行使用具有來自源數(shù)據(jù)操作數(shù)1420集合的對應第二一個或多個常數(shù)(cki+1)的結(jié)果元素1440的集合的所述部分(rki+1-rki+4)的第二一個或多個sm4密鑰生成。至處理塊1403的設備中的τ1433的輸入為:(例如,如在異或電路1431所示的)。在設備1403中的τ1433的輸出是至t1435和t’1436的輸入。復用器1432和1434的所選擇輸出然后與xi+1以及與rki+1進行異或(例如,如在處理塊1403的異或電路1437所示的)以分別產(chǎn)生xi+5以及rki+5。根據(jù)設備1402的一個實施例,第二一個或多個sm4輪交換和第二一個或多個sm4密鑰生成的結(jié)果元素1450的另一集合可存儲在simd寄存器中(例如,如果只要求兩輪或如果另一微指令用于產(chǎn)生另一中間結(jié)果)。

將意識到,通過利用相同simd指令執(zhí)行sm4輪交換和sm4密鑰生成,加密或解密可與較小緩沖器(例如,256比特)中其相應的后續(xù)密鑰擴展同時被處理。因為對于每個新輪交換或密鑰生成要求128比特(例如,四個32比特字元素),每個輪形成的最新的128比特結(jié)果可被流水線輸送或旁路至下一個連續(xù)的輪。在一些實施例中,片可包括兩輪的sm4輪交換以及兩輪的sm4密鑰生成。對于此類實施例,32輪的sm4輪交換和sm4密鑰生成可使用16(或17)個sm4輪片操作被執(zhí)行。在一些實施例中,256比特數(shù)據(jù)路徑或512比特數(shù)據(jù)路徑的每個128比特通道可基于在指示特定替換函數(shù)(例如,t或t’,或者備選地l或l’)的指令的立即操作數(shù)中的對應的值,被選擇用于處理sm4輪交換或用于處理sm4密鑰生成的片。在備選實施例中,256比特數(shù)據(jù)路徑或512比特數(shù)據(jù)路徑的128比特通道可基于指令存儲器或指令的操作編碼(或操作碼),被確定用于處理sm4輪交換的片或用于處理sm4密鑰生成的片。也將意識到,sm4算法的加密和解碼方法具有相同結(jié)構(gòu)(除了其中輪密鑰相反使用的順序)。例如,用于加密的密鑰順序為(rk0、rk1、rk2...rk31),而用于解密的密鑰順序為(rk31、rk30、rk29...rk0)。

圖14b示出了用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的設備的備選實施例的圖形。設備1404包括元素的第一源數(shù)據(jù)操作數(shù)1410集合、元素的第二源數(shù)據(jù)操作數(shù)1420集合、和8比特立即操作數(shù)1430中的一個或多個替換函數(shù)指示符。在設備1401的備選實施例中,響應于在指示塊替換函數(shù)作為至對應的處理塊1403的輸入的立即操作數(shù)1430中的一個或多個替換函數(shù)指示符的第一指示符,執(zhí)行具有來自所述第二源數(shù)據(jù)操作數(shù)1420集合的對應第一一個或多個密鑰(rki)的所述第一源數(shù)據(jù)操作數(shù)1410集合的一部分(xi-xi+3)的第一一個或多個sm4輪交換。在設備1401的該備選實施例中,響應于在指示密鑰替換函數(shù)作為至第二對應的處理塊1403的輸入的立即操作數(shù)1430中的所述一個或多個替換函數(shù)指示符的第二指示符,使用具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第一一個或多個的常數(shù)(cki)的第一源數(shù)據(jù)操作數(shù)1410集合的所述部分(rki-rki+3)的第一一個或多個sm4密鑰生成。根據(jù)設備1401的一個備選實施例,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1440集合可存儲在simd寄存器中(例如,如果僅要求單個輪或如果微指令用于產(chǎn)生中間結(jié)果)。在設備1401的其它備選實施例中,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1440集合可被鎖定用于旁路至或存儲在用于附加的處理層的臨時中間存儲裝置中。例如,設備1401的一些實施例也可包括元素的中間源數(shù)據(jù)操作數(shù)1440集合。在設備1404中,響應于在指示塊替換函數(shù)作為至另一對應的處理塊1403的輸入的立即操作數(shù)1430中的一個或多個替換函數(shù)指示符的第一指示符,執(zhí)行具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第一一個或多個密鑰(rki+1)的中間源數(shù)據(jù)操作數(shù)1440集合的一部分(xi+1-xi+4)的第二一個或多個sm4輪交換。在設備1404的一個實施例中,第一指示符中的1(1)值指示塊替換函數(shù)要被用在對應128比特通道上。在設備1404中,響應于在指示密鑰替換函數(shù)作為至另一第二對應的處理塊1403的輸入的立即操作數(shù)1430中的所述一個或多個替換函數(shù)指示符的第二指示符,使用具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第二一個或多個常數(shù)(cki+1)的中間源數(shù)據(jù)操作數(shù)1440集合的一部分(rki+1-rki+4)的第二一個或多個sm4密鑰生成。在設備1404的一個實施例中,第二指示符中的0(0)值指示密鑰替換函數(shù)要用在對應128比特通道上。根據(jù)設備1404的一個實施例,一個或多個sm4輪交換和一個或多個sm4密鑰產(chǎn)生的結(jié)果元素1450的集合可存儲在simd寄存器中(例如,如果僅要求兩輪或如果微指令用于產(chǎn)生中間結(jié)果)。在設備1404的備選實施例中,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1450的集合可被鎖定用于旁路至或存儲在用于附加的處理層的臨時中間存儲裝置中。

例如,設備1404的實施例也可包括元素的第二中間源數(shù)據(jù)操作數(shù)1450集合。在設備1404中,響應于在指示塊替換函數(shù)作為至又一對應的處理塊1403的輸入的立即操作數(shù)1430中的一個或多個替換函數(shù)指示符的第一指示符,執(zhí)行具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第三一個或多個密鑰(rki+2)的中間源數(shù)據(jù)操作數(shù)1450集合的一部分(xi+2-xi+5)的第三一個或多個sm4輪交換。而且在設備1404中,響應于在指示密鑰替換函數(shù)作為至又一第二對應處理塊1403的輸入的立即操作1430中的所述一個或多個替換函數(shù)指示符的第二指示符,使用具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第三一個或多個常數(shù)(cki+2)的中間源數(shù)據(jù)操作數(shù)1450集合的一部分(rki+2-rki+5)的第三一個或多個sm4密鑰生成。根據(jù)設備1404的一個實施例,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1450的集合可存儲在simd寄存器中(例如,如果僅要求三輪或如果微指令用于產(chǎn)生中間結(jié)果)。在設備1404的備選實施例中,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1460的集合可再次被鎖定用于旁路至或存儲在用于附加的處理層的臨時中間存儲裝置中。因而設備1404的實施例也可包括元素的第三中間源數(shù)據(jù)操作數(shù)1460集合。在設備1404的此類實施例中,響應于在指示塊替換函數(shù)作為至又一對應的處理塊1403的輸入的立即操作數(shù)1430中的一個或多個替換函數(shù)指示符的第一指示符,執(zhí)行具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第四一個或多個密鑰(rki+3)的中間源數(shù)據(jù)操作數(shù)1460集合的一部分(xi+3-xi+6)的第四一個或多個sm4輪交換。而且在設備1404中,響應于在指示密鑰替換函數(shù)作為至又一第二對應的處理塊1403的輸入的立即操作數(shù)1430中的所述一個或多個替換函數(shù)指示符的第二指示符,使用具有來自第二源數(shù)據(jù)操作數(shù)1420集合的對應第四一個或多個常數(shù)(cki+3)的中間源數(shù)據(jù)操作數(shù)1460集合的一部分(rki+3-rki+6)的第四一個或多個sm4密鑰生成。根據(jù)設備1404的一個實施例,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1470的集合可存儲在simd寄存器中(例如,如果僅要求四輪或如果微指令用于產(chǎn)生中間結(jié)果)。在設備1404的備選實施例,一個或多個sm4輪交換和一個或多個密鑰生成的結(jié)果元素1470的集合可被鎖定用于旁路至或存儲在用于附加的處理層的臨時中間存儲裝置中。

將意識到,在一些實施例中,片可包括四輪的sm4輪交換和四輪的sm4密鑰生成。對于此類實施例,可使用8(或9)個sm4輪片操作執(zhí)行32輪的sm4輪交換和sm4密鑰生成。在一些實施例中,256比特數(shù)據(jù)路徑或512比特數(shù)據(jù)路徑的每個128比特通道可基于指令的立即操作數(shù)中的對應值被選擇用于處理sm4輪交換的片或用于處理sm4密鑰生成的片。在一些備選實施例中,用于處理sm4輪交換的片和用于sm4密鑰生成的片的數(shù)據(jù)路徑的通道可根據(jù)操作碼(或操作碼)被預先確定和/或固定。

還將意識到,在一些實施例中,片可通過微指令(或micro-op或u-op)實現(xiàn)且結(jié)果可從一個微指令旁路至下一個微指令。在一些備選實施例中,片可通過在硬件中的邏輯的多個層(例如,2或4或8等)或者備選地通過微指令和硬件中的邏輯的多個層的某個組合實現(xiàn)。在一些實施例中,片可包括由指令的立即操作數(shù)中的值指示的若干輪(例如,1、2、4、8、16或32)的sm4輪交換和sm4密鑰生成。在一些備選實施例中,片中的輪數(shù)可通過指令存儲器和/或通過以及操作編碼(或操作碼)指示。

圖14c示出用于執(zhí)行提供simdsm4加密塊密碼功能性的指令的設備1406的另一備選實施例的圖形。設備1406包括元素的第一源數(shù)據(jù)操作數(shù)1410集合、元素的第二源數(shù)據(jù)操作數(shù)1420集合和一個或多個替換函數(shù)指示符(例如,可選地,在可選8比特立即操作數(shù)1430中)。在設備1405的一個實施例中,響應于在指示塊替換函數(shù)作為至對應的處理塊1403的輸入的控制塊1455中(和/或可選地也在可選立即操作數(shù)1430中)的一個或多個替換函數(shù)指示符1452的第一指示符,部分(xi-xi+3)根據(jù)來自第一源數(shù)據(jù)操作數(shù)1410集合的操作數(shù)選擇控制1451首先被選擇,第一源數(shù)據(jù)操作數(shù)1410集合具有根據(jù)來自用于執(zhí)行第一一個或多個sm4輪交換的第二源數(shù)據(jù)操作數(shù)1420集合的元素選擇控制1457選擇的對應第一一個或多個密鑰(rki)。在設備1405的該實施例中,響應于在指示密鑰替換函數(shù)作為至第二對應的處理塊1403的輸入的控制塊1455中(和/或可選地也在可選立即操作數(shù)1430中)的所述一個或多個替換函數(shù)指示符1452的第二指示符,部分(rki-rki+3)可根據(jù)來自第一源數(shù)據(jù)操作數(shù)1410集合的操作數(shù)選擇控制1451被首先選擇,第一源數(shù)據(jù)操作數(shù)1410集合具有根據(jù)來自用于執(zhí)行第一一個或多個sm4密鑰生成的第二源數(shù)據(jù)操作數(shù)1420集合的元素選擇控制1457選擇的對應第一一個或多個常數(shù)(cki)。根據(jù)設備1406的一個備選實施例,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1480的集合可存儲在simd寄存器1490中(例如,如果用于片的要求的輪數(shù)已完成或如果微指令用于產(chǎn)生中間結(jié)果)。在設備1406的其它備選實施例中,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1480的集合可被鎖定用于旁路1453至或存儲在用于附加的處理層的臨時中間存儲裝置中。

例如,設備1406的實施例還包括元素的中間源數(shù)據(jù)操作數(shù)1480集合。在設備1405中,響應于在指示塊替換函數(shù)作為至對應的處理塊1403的輸入的控制塊1455中(和/或可選地,也在可選立即操作數(shù)1430中)的一個或多個替換函數(shù)指示符1452的第一指示符,后續(xù)部分(xj+1-xj+4)根據(jù)來自中間源數(shù)據(jù)操作數(shù)1480集合的操作數(shù)選擇控制1451被選擇,中間源數(shù)據(jù)操作數(shù)1480集合具有根據(jù)來自用于執(zhí)行后續(xù)一個或多個sm4輪交換的第二源數(shù)據(jù)操作數(shù)1420集合的元素選擇控制1457而選擇的對應后續(xù)一個或多個密鑰(rki+j+1)。在設備1405的一個實施例中,第一指示符中的1(1)值指示塊替換函數(shù)要用在對應的128比特通道上。在設備1406的一個實施例中,可選地響應于立即操作數(shù)1430中的對應的值(其可以為一(1)或可以不同于1),一個或多個替換函數(shù)指示符1452的第一指示符中的1值(其可以不同于1)指示塊替換函數(shù)要用在對應128比特通道上。在設備1405中,響應于在指示秘鑰替換函數(shù)作為至第二對應處理塊1403的控制塊1455中(和/或還可選地在可選的立即操作數(shù)1430中)的所述一個或多個替換函數(shù)指示符1452的第二指示符,后續(xù)部分(rkj+1-rkj+4)根據(jù)來自中間源數(shù)據(jù)操作數(shù)1480集合而選擇連同對應的后續(xù)一個或多個常數(shù)(cki+j+1)根據(jù)來自用于執(zhí)行后續(xù)一個或多個sm4密鑰生成的第二源數(shù)據(jù)操作數(shù)1420集合的元素選擇控制1457而選擇。在設備1405的一個實施例中,第二指示符中的0(0)值指示密鑰替換函數(shù)要用在對應的128比特通道上。在設備1406的一個實施例中,可選地響應于在立即操作數(shù)1430中對應的值(其可以為0(0)或可以不同于0),一個或多個替換函數(shù)指示符1452的第二指示符中的值(其可能不同于0)指示密鑰替換函數(shù)要用在在對應的128比特通道上。根據(jù)設備1406的一個實施例,一個或多個sm4輪交換和一個或多個sm4密鑰生成的結(jié)果元素1480的集合可存儲在simd寄存器1490中(例如,當用于片的要求的輪數(shù)已完成時)。

圖15a示出用于執(zhí)行提供加密塊密碼功能性的simdsm4的輪片的指令的過程1501的實施例的流程圖。本文所公開的過程1501和其它過程通過可包括專用的硬件或軟件或由通用機器或由專用機器或由兩者組合的可執(zhí)行的固件操作碼的處理塊執(zhí)行。

在處理塊1531中,指令被解碼用于操作的simdsm4輪片,所述指令指定塊和/或密鑰操作。例如,指令的實施例可指定第一源數(shù)據(jù)操作數(shù)集合、第二源數(shù)據(jù)操作數(shù)集合和一個或多個替換函數(shù)指示符,其中替換函數(shù)指示符可被選擇以指定在第一和第二源數(shù)據(jù)操作數(shù)集合(例如,其可存儲在256比特或512比特simd寄存器中)的相應部分(例如,諸如128比特通道)上的塊或密鑰操作。響應于解碼的指令,多個微指令(或micro-op或u-op)可以可選地在處理塊1536中被生成(例如,用于執(zhí)行片的單獨輪或備選地用于執(zhí)行指定的塊或指定的密鑰操作)。在處理塊1541中,第一源數(shù)據(jù)操作數(shù)集合被訪問(例如,從256比特或512比特的simd寄存器)。在處理塊1551中,第二源數(shù)據(jù)操作數(shù)集合被訪問(從256比特或512比特的simd寄存器或存儲器位置)。在處理塊1561中,響應于指示(例如,通過具有第一值的立即操作數(shù)中的比特)用于塊操作的替換函數(shù)的一個或多個替換函數(shù)指示符的指示符,sm4輪交換在關聯(lián)于指定的塊操作和來自第二源數(shù)據(jù)操作數(shù)集合的對應一個或多個密鑰的第一源數(shù)據(jù)操作數(shù)集合的部分上被執(zhí)行。在處理塊1571中,響應于指示(例如,通過具有第二值的立即操作數(shù)中的比特)用于密鑰操作的替換函數(shù)的一個或多個替換函數(shù)指示符的另一指示符,使用關聯(lián)于指定的密鑰操作和來自第二源數(shù)據(jù)操作數(shù)集合的對應一個或多個常數(shù)的第一源數(shù)據(jù)操作數(shù)集合的第二部分執(zhí)行sm4密鑰生成。在處理塊1581中,進行確定關于是否片的全部sm4輪操作已完成。如果沒有,則處理重新迭代開始于處理塊1541。否則處理進行到處理塊1591,其中指令的結(jié)果元素集合存儲在simd目的地寄存器中。

將意識到,盡管本文所公開的過程1501和其它過程的處理塊示出為以迭代方式執(zhí)行,無論何時可能,可以優(yōu)選地以備選順序或同時或并行執(zhí)行運行。

圖15b示出用于執(zhí)行提供加密塊密碼函數(shù)的simdsm4的輪片的指令的過程1502的備選實施例的流程圖。在處理塊1532中,指令被解碼用于操作的simdsm4輪片,所述指令指定替換函數(shù)的集合(例如,用于塊和/或密鑰操作)。例如,指令的實施例可指定第一源數(shù)據(jù)操作數(shù)集合、第二源數(shù)據(jù)操作數(shù)集合和一個或多個替換函數(shù)指示符,其中替換函數(shù)指示符可被選擇以指定在第一和第二源數(shù)據(jù)操作數(shù)集合(例如,其可被存儲在256比特或512比特simd寄存器中)的相應部分(例如,諸如128比特通道)上的塊或密鑰操作。響應于解碼的指令,多個微指令(或micro-op或u-op)可以可選地在處理塊1537中生成(例如,用于執(zhí)行片的單獨輪或備選地用于執(zhí)行指定的塊或指定的密鑰操作)。在處理塊1542中,第一源數(shù)據(jù)操作數(shù)集合被訪問(例如,從256比特或512比特的simd寄存器)。在處理塊1552中,第二源數(shù)據(jù)操作數(shù)集合被訪問(從256比特或512比特的simd寄存器或存儲器位置)。在處理塊1562中,響應于指示(例如,通過具有第一值的立即操作數(shù)中的比特)第一替換函數(shù)用于塊操作的一個或多個替換函數(shù)指示符的指示符,在關聯(lián)于第一替換函數(shù)以及來自第二數(shù)據(jù)操作數(shù)集合的對應一個或多個密鑰的第一源數(shù)據(jù)操作數(shù)集合的部分上執(zhí)行一個或多個sm4輪交換。在處理塊1572中,響應于指示(例如,通過具有第二值的立即操作數(shù)中的比特)第二替換函數(shù)用于密鑰操作的一個或多個替換函數(shù)指示符的另一指示符,使用關聯(lián)于第二替換函數(shù)和來自第二源數(shù)據(jù)操作數(shù)集合的對應一個或多個常數(shù)的第一數(shù)據(jù)操作數(shù)集合的一部分來執(zhí)行一個或多個sm4密鑰生成。在處理塊1582,進行確定關于是否操作的sm4輪片已完成。如果沒有,處理重新迭代開始于處理塊1562。否則處理進行到處理塊1592,其中指令的結(jié)果元素集合存儲在simd目的地寄存器中。

圖15c示出用于執(zhí)行提供加密塊密碼功能性的simdsm4的輪片的指令過程1503的另一備選實施例的流程圖。在處理塊1513中,包括一個或多個輸入塊和/或密鑰調(diào)度的第一源數(shù)據(jù)操作數(shù)集合存儲在第一simd寄存器(例如,256比特或512比特的simd寄存器)中。在處理塊1523中,包括一個或多個輪密鑰和/或常數(shù)的集合的第二源數(shù)據(jù)操作數(shù)集合存儲在第二simd寄存器(例如,256比特或512比特的simd寄存器)中。在處理塊1533中,接收指令用于操作的simdsm4輪片,所述指令指定替換函數(shù)(例如,用于塊和/或密鑰操作)的集合。例如,指令的實施例可指定第一源數(shù)據(jù)操作數(shù)集合、第二源數(shù)據(jù)操作數(shù)集合和一個或多個替換函數(shù)指示符,其中替換函數(shù)指示符的一些實施例可被選擇以指定在第一和第二源數(shù)據(jù)操作數(shù)集合的相應部分(例如,如128比特通道)上的塊或密鑰操作。在響應于用于操作的simdsm4輪片的指令的過程1504中,多個微指令(或micro-op或u-op)可以可選地在處理塊1538中生成(例如,用于執(zhí)行片的單獨輪或備選地用于執(zhí)行指定的塊或指定的密鑰操作)。在過程1504的處理塊1563中,響應于指示(例如,通過具有第一值的立即操作數(shù)中的比特)用于塊操作的第一替換函數(shù)的一個或多個替換函數(shù)指示符,在關聯(lián)于第一替換函數(shù)和來自第二源數(shù)據(jù)操作數(shù)集合的對應一個或多個密鑰的第一源數(shù)據(jù)操作數(shù)集合的相應通道上執(zhí)行一個或多個sm4輪交換。在過程1504的處理塊1573中,響應于指示(例如,通過具有第二值的立即操作數(shù)中相應的比特)用于密鑰操作的第二替換函數(shù)的一個或多個替換函數(shù)指示符,使用關聯(lián)于第二替換函數(shù)指令和來自第二源數(shù)據(jù)操作數(shù)集合的對應一個或多個常數(shù)的第一源數(shù)據(jù)操作數(shù)集合的相應通道執(zhí)行一個或多個sm4密鑰生成。在過程1504的處理塊1583中,進行確定關于是否操作的sm4輪片已完成。如果沒有,處理重新迭代開始于處理塊1563。否則過處理進行到過程1504的處理塊1593,其中指令的結(jié)果元素集合存儲在simd目的地寄存器中。

圖16a示出使用提供加密塊密碼功能性的simdsm4輪片的指令有效實現(xiàn)sm4加密塊密碼(例如,用于加密)的過程1601的一個實施例的流程圖。在處理塊1610中,第一源操作數(shù)集合(例如,包含從128比特加密密鑰得到的初始密鑰值)存儲在第一simd寄存器中。在處理塊1620中,第二源操作數(shù)集合(例如,包含常數(shù)參數(shù)值ck0-ck3)存儲在第二simd寄存器中。將意識到,第一源操作數(shù)集合和第二源操作數(shù)集合的初始準備(未示出)根據(jù)用于無線網(wǎng)絡標準的sm4加密算法的定義被執(zhí)行(英文描述在萬維網(wǎng)在eprint.iacr.org/2008/329.pdf可獲得)。在處理塊1630中,使用關聯(lián)于密鑰替換函數(shù)和來自第二源操作數(shù)集合的對應常數(shù)(例如,來自第二simd寄存器的一個或多個對應128比特通道的ck0-ck3)的第一源操作數(shù)集合的一個或多個通道生成sm4密鑰調(diào)度(例如,rk0-rk3)。在處理塊1640中,新的第一源操作數(shù)(例如,1410)集合存儲在第三simd寄存器中(在一些實施例中,其可以是與第一simd寄存器相同的寄存器)。在處理塊1650中,新的第二源操作數(shù)(例如,1420)集合存儲在第四simd寄存器中(在一些實施例中,其可以是與第二simd寄存器相同的寄存器)。將意識到,可通過將用于重新布置sm4調(diào)度(例如,來自操作數(shù)1470的rki+4-rki+7)和對應的常數(shù)(例如,來自存儲器的cki+4-cki+7)的一個或多個指令(例如用于置換元素、混洗元素、混合元素等的指令)用在新的第二源操作數(shù)(例如,1420)集合中以供通過執(zhí)行指令在過程1603中處理以執(zhí)行sm4加密塊密碼的simdsm4輪片來實現(xiàn)。

在過程1603的處理塊1660中,響應于指示(例如,通過具有第一值的立即操作數(shù)1430中的比特)用于塊操作的替換函數(shù)的一個或多個替換函數(shù)指示符的指示符,在關聯(lián)于指定的塊替換函數(shù)和來自第二源數(shù)據(jù)操作數(shù)(例如,1420)集合的對應一個或多個密鑰調(diào)度的第一源數(shù)據(jù)操作數(shù)(例如,1410)集合的一個或多個通道上執(zhí)行sm4輪交換。在處理塊1670中,響應于指示(例如,通過具有第二值的立即操作數(shù)1430中的比特)用于密鑰操作的替換函數(shù)的一個或多個替換函數(shù)指示符的另一指示符,使用關聯(lián)于指定密鑰替換函數(shù)和來自第二源數(shù)據(jù)操作數(shù)(例如,1420)集合的對應一個或多個常數(shù)的第一源數(shù)據(jù)操作數(shù)(例如,1410)集合的一個或多個通道執(zhí)行sm4密鑰生成。在處理塊1680中,指令的結(jié)果元素集合存儲在simd寄存器中的simd目的地操作數(shù)(例如,1470)中。

在處理塊1690中,進行確定關于是否全部sm4輪片操作已完成。如果沒有,處理重新迭代開始于處理塊1640。否則過程1601結(jié)束于處理塊1699。

圖16b示出使用提供加密塊密碼功能性的simdsm4輪片的指令有效實現(xiàn)sm4加密塊密碼的過程1602的備選實施例的流程圖。將意識到,根據(jù)sm4加密算法的定義執(zhí)行第一源操作數(shù)集合和第二源操作數(shù)集合的初始準備(未示出)。在處理塊1610中,第一源操作數(shù)集合(例如,包含從128比特加密密鑰得到的初始密鑰值)存儲在第一simd寄存器中。在處理塊1620中,第二源操作數(shù)集合(例如,包含常數(shù)參數(shù)值ck0-ck3)存儲在第二simd寄存器中。在處理塊1630中,使用關聯(lián)于密鑰替換函數(shù)和來自第二源操作數(shù)集合的對應常數(shù)(例如,來自第二simd寄存器的一個或多個對應128比特通道的ck0-ck3)的第一源操作數(shù)集合的一個或多個通道生成sm4密鑰調(diào)度(例如,rk0-rk3)。在處理塊1640中,新的第一源操作數(shù)(例如,1410)集合存儲在第三simd寄存器中(在一些實施例中,其可以是或可以不是與第一simd寄存器相同的寄存器)。在處理塊1650中,新的第二源操作數(shù)(例如,1420)集合存儲在第四simd寄存器中(在一些實施例中,其可以是或可以不是與第二simd寄存器相同的寄存器)。將意識到,可通過將用于重新布置sm4輸入塊和/或密鑰調(diào)度(例如,來自操作數(shù)1470的rki-rki+3和/或x0-x3)和對應的常數(shù)(例如,來自存儲器的cki-cki+3)的一個或多個指令(例如用于置換元素、混洗元素、混合元素等的指令)用在新的第二源操作數(shù)(例如,1420)集合中以供通過執(zhí)行指令在過程1604中處理以執(zhí)行sm4加密塊密碼的simdsm4輪片來實現(xiàn)。

在過程1604的處理塊1660中,響應于指示(例如,通過操作碼中的或具有第一值的立即操作數(shù)1430中或操作碼中的比特)用于塊操作的替換函數(shù)的一個或多個替換函數(shù)指示符的指示符,在關聯(lián)于指定的塊替換函數(shù)和來自第二源數(shù)據(jù)操作數(shù)(例如,1420)集合的對應一個或多個密鑰調(diào)度的第一源數(shù)據(jù)操作數(shù)(例如,1410)集合的一個或多個通道上執(zhí)行sm4輪交換。在處理塊1670中,響應于指示(例如,通過操作碼中的或具有第二值的立即操作數(shù)1430中或操作碼中的比特)用于密鑰操作的替換函數(shù)的一個或多個替換函數(shù)指示符的另一指示符,使用關聯(lián)于指定的密鑰替換函數(shù)和來自第二源數(shù)據(jù)操作數(shù)(例如,1420)集合的對應一個或多個常數(shù)的第一源數(shù)據(jù)操作數(shù)(例如,1410)集合的一個或多個通道執(zhí)行sm4密鑰生成。在處理塊1682中,指令的結(jié)果元素集合存儲在目的地和第三simd寄存器中新的第一源操作數(shù)(例如,1470)集合中。

在處理塊1690中,進行確定關于是否全部sm4輪片操作已完成。如果沒有,處理重新迭代開始于處理塊1650。否則過程1601在處理塊1699結(jié)束。

本文公開的機制的實施例可以以硬件、軟件、固件或者此類實現(xiàn)的組合來實現(xiàn)。本發(fā)明的實施例可實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,所述可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性與非易失性存儲器和/或存儲元件)、至少一個輸入裝置和至少一個輸出裝置。

可將程序代碼應用于輸入指令,以執(zhí)行本文所描述的功能且生成輸出信息??蓪⑤敵鲂畔⒁砸阎绞綉糜谝粋€或多個輸出裝置。為了本申請的目的,處理系統(tǒng)包括具有處理器的任何系統(tǒng),例如諸如數(shù)字信號處理器(dsp)、微控制器、專用集成電路(asic)或微處理器。

程序代碼可以以高級面向過程或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以與處理系統(tǒng)通信。如果期望,程序代碼還可以匯編語言或機器語言實現(xiàn)。事實上,本文所描述的機制在范圍上不限于任何特定的編程語言。在任何情況下,語言可為編譯語言或解釋語言。

至少一個實施例的一個或多個方面可通過存儲在機器可讀媒體上的代表性指令來實現(xiàn),所述指令表示處理器內(nèi)的多種邏輯,所述指令在由機器讀取時使機器制造邏輯以執(zhí)行本文所描述的技術。此類表示,稱為“ip核”,可存儲在有形的機器可讀介質(zhì)上,并供應給各種客戶或制造設施以加載至實際制造所述邏輯或處理器的制造機器中。

此類機器可讀存儲媒體可包括但不限于,由機器或裝置制造或形成的物品的非暫態(tài)有形布置,其中包括:存儲媒體,如硬盤、任何其它類型盤,包括軟盤、光盤、光盤只讀存儲器(cd-rom)、可重寫光盤(cd-rw)和磁光盤;半導體裝置,如只讀存儲器(rom)、隨機存取存儲器(ram),如動態(tài)隨機存取存儲器(dram)、靜態(tài)隨機存取存儲器(sram)、可擦除可編程只讀存儲器(eprom)、閃存、電可擦除可編程只讀存儲器(eeprom)、磁或光卡;或者適用于存儲電子指令的任何其它類型的媒體。

相應地,本發(fā)明實施例還包括包含指令或包含如硬件描述語言(hdl)的設計數(shù)據(jù)的非暫態(tài)有形機器可讀媒體,其中設計數(shù)據(jù)定義本文所描述的結(jié)構(gòu)、電路、設備、處理器和/或系統(tǒng)特征。此類實施例還可稱為程序產(chǎn)品。

在一些情況下,可使用指令轉(zhuǎn)化器將指令從源指令集轉(zhuǎn)化成目標指令集。例如,指令轉(zhuǎn)化器可將指令轉(zhuǎn)換(例如,使用靜態(tài)二進制轉(zhuǎn)換、包括動態(tài)編譯的動態(tài)二進制轉(zhuǎn)換)、變形、仿真或以其它方式轉(zhuǎn)化成由核處理的一個或多個其它指令。指令轉(zhuǎn)化器可以以軟件、硬件、固件或其組合來實現(xiàn)。指令轉(zhuǎn)化器可位于處理器上、處理器外部,或部分位于處理器上而部分位于處理器外部。

因此,公開了用于根據(jù)至少一個實施例執(zhí)行一個或多個指令的技術。雖然某些示范實施例在附圖中描述并顯示,但要理解,此類實施例僅僅是對廣義發(fā)明的說明而非限制,以及本發(fā)明不限于所顯示和描述的特定構(gòu)造和布置,因為本領域技術人員在學習本公開后可想到各種其它修改。在如發(fā)展迅速而且進一步進步不容易預見的技術領域中,所公開的實施例在布置和細節(jié)方面是容易修改的(如通過實現(xiàn)技術發(fā)展所促進的),而不脫離本公開的原理或所附權(quán)利要求的范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
南木林县| 方城县| 当阳市| 五原县| 宝坻区| 道真| 汉源县| 女性| 青冈县| 驻马店市| 思南县| 延安市| 西贡区| 久治县| 彭阳县| 惠东县| 富裕县| 阜城县| 德阳市| 新建县| 长武县| 肇州县| 色达县| 曲周县| 江山市| 马山县| 兴海县| 固阳县| 安溪县| 江津市| 临沧市| 夏河县| 商洛市| 岑巩县| 兴仁县| 英山县| 海晏县| 武安市| 武邑县| 镇江市| 新丰县|