本公開涉及處理邏輯、微處理器以及相關(guān)聯(lián)的指令集架構(gòu)的領(lǐng)域,所述指令集架構(gòu)當(dāng)由處理器或其它處理邏輯執(zhí)行時執(zhí)行邏輯、數(shù)學(xué)或其它功能操作。
相關(guān)技術(shù)的描述
多處理器系統(tǒng)正變得越來越普遍。多處理器系統(tǒng)的應(yīng)用包含動態(tài)域分區(qū)一直下來到桌面計算。為了利用多處理器系統(tǒng),要執(zhí)行的代碼可以分離成多個線程以用于由各種處理實體執(zhí)行。每個線程可以彼此并行執(zhí)行。此外,為了增加處理實體的效用,可以采用無序執(zhí)行。當(dāng)使對此類指令的輸入可用時,無序執(zhí)行可以執(zhí)行指令。從而,在代碼序列中稍后出現(xiàn)的指令可在代碼序列中較早出現(xiàn)的指令之前執(zhí)行。
附圖說明
在附圖的圖中通過示例而非限制的方式圖示了實施例:
圖1a是根據(jù)本公開的實施例用可以包含執(zhí)行指令的執(zhí)行單元的處理器形成的示例性計算機系統(tǒng)的框圖;
圖1b圖示了根據(jù)本公開的實施例的數(shù)據(jù)處理系統(tǒng);
圖1c圖示了用于執(zhí)行文本字符串比較操作的數(shù)據(jù)處理系統(tǒng)的其它實施例;
圖2是根據(jù)本公開的實施例的針對可以包含執(zhí)行指令的邏輯電路的處理器的微架構(gòu)的框圖;
圖3a圖示了根據(jù)本公開的實施例的多媒體寄存器中的各種打包(packed)數(shù)據(jù)類型表示;
圖3b圖示了根據(jù)本公開的實施例的可能寄存器中的數(shù)據(jù)存儲格式;
圖3c圖示了根據(jù)本公開的實施例的多媒體寄存器中的各種有符號和無符號的打包數(shù)據(jù)類型表示;
圖3d圖示了操作編碼格式的實施例;
圖3e圖示了根據(jù)本公開的實施例的具有40比特或更多比特的另一可能操作編碼格式;
圖3f圖示了根據(jù)本公開的實施例的又另一可能操作編碼格式;
圖4a是圖示了根據(jù)本公開的實施例的有序流水線和寄存器重命名階段、無序發(fā)布/執(zhí)行流水線的框圖;
圖4b是圖示了根據(jù)本公開實施例的要包含在處理器中的有序架構(gòu)核以及寄存器重命名邏輯、無序發(fā)布/執(zhí)行邏輯的框圖;
圖5a是根據(jù)本公開的實施例的處理器的框圖;
圖5b是根據(jù)本公開的實施例的核的示例實現(xiàn)的框圖;
圖6是根據(jù)本公開的實施例的系統(tǒng)的框圖;
圖7是根據(jù)本公開的實施例的第二系統(tǒng)的框圖;
圖8是根據(jù)本公開的實施例的第三系統(tǒng)的框圖;
圖9是根據(jù)本公開的實施例的片上系統(tǒng)的框圖;
圖10圖示了根據(jù)本公開的實施例的可以執(zhí)行至少一個指令的包含中央處理單元和圖形處理單元的處理器;
圖11是圖示根據(jù)本公開的實施例的開發(fā)ip核的框圖;
圖12圖示了根據(jù)本公開的實施例的可如何由不同類型的處理器仿真第一類型的指令;
圖13圖示了根據(jù)本公開的實施例對比使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖;
圖14是根據(jù)本公開的實施例的處理器的指令集架構(gòu)的框圖;
圖15是根據(jù)本公開的實施例的處理器的指令集架構(gòu)的更詳細(xì)框圖;
圖16是根據(jù)本公開的實施例的用于處理器的指令集架構(gòu)的執(zhí)行流水線的框圖;
圖17是根據(jù)本公開的實施例的用于利用處理器的電子設(shè)備的框圖;
圖18是根據(jù)本公開的實施例的具有用于移位和乘法器(ssm)的硬件的系統(tǒng)的一部分的框圖;
圖19是根據(jù)本公開的實施例的具有被乘數(shù)的特定值范圍的移位和(shift-sum)乘法器模塊的圖示;
圖20是根據(jù)本公開的實施例的具有被乘數(shù)的其他特定值范圍的移位和乘法器模塊的圖示;和
圖21是根據(jù)本公開的實施例的用于移位和乘法的方法的實施例的流程圖。
具體實施方式
下面的描述描述了一種指令和處理邏輯,用于硬件支持用于在處理器、虛擬處理器、封裝、計算機系統(tǒng)或其他處理裝置內(nèi)或與處理器、虛擬處理器、計算機系統(tǒng)或其他處理裝置相關(guān)聯(lián)的移位和乘法器。此外,可以使用量化的最近相鄰查找表來進(jìn)行移位和乘法器的使用。在下面的描述中,闡述了諸如處理邏輯、處理器類型、微架構(gòu)條件、事件、啟用機制等的許多具體細(xì)節(jié),以便提供對本公開的實施例的更全面理解。然而,本領(lǐng)域技術(shù)人員將認(rèn)識到,沒有這樣的具體細(xì)節(jié)也可實踐實施例。此外,一些眾所周知的結(jié)構(gòu)、電路等未詳細(xì)示出,以避免不必要地模糊本公開的實施例。
盡管參考處理器描述了如下實施例,但其它實施例可應(yīng)用于其它類型集成電路和邏輯器件。本公開的實施例的類似技術(shù)和教導(dǎo)可應(yīng)用于可受益于更高流水線吞吐量和改進(jìn)性能的其它類型電路或半導(dǎo)體器件。本公開實施例的教導(dǎo)可應(yīng)用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機器。然而,實施例不限于執(zhí)行512比特、256比特、128比特、64比特、32比特或16比特數(shù)據(jù)操作的處理器或機器,并且可應(yīng)用于在其中可以執(zhí)行數(shù)據(jù)操縱或管理的任何處理器和機器。此外,如下描述提供了示例,并且附圖為了圖示的目的而圖示了各種示例。然而,這些示例不應(yīng)被視為限制意義,因為它們僅僅旨在提供本公開的實施例的示例,而不是提供本公開的實施例的所有可能實現(xiàn)的詳盡列表。
盡管以下示例在執(zhí)行單元和邏輯電路的上下文中描述了指令處置和分發(fā)(distribute),但本公開的其它實施例可以通過存儲在機器可讀有形介質(zhì)上的數(shù)據(jù)或指令來實現(xiàn),所述指令當(dāng)由機器執(zhí)行時使機器執(zhí)行與本公開的至少一個實施例一致的功能。在一個實施例中,與本公開的實施例相關(guān)聯(lián)的功能體現(xiàn)在機器可執(zhí)行指令中。指令可用于使可以利用指令進(jìn)行編程的通用或?qū)S锰幚砥鲌?zhí)行本公開的步驟。本公開的實施例可以被提供為計算機程序產(chǎn)品或軟件,該產(chǎn)品或軟件可以包括機器或計算機可讀介質(zhì),其上存儲有可用于對計算機(或其它電子設(shè)備)進(jìn)行編程以執(zhí)行根據(jù)本公開的實施例的一個或多個操作的指令。而且,本公開的實施例的步驟可能由包含用于執(zhí)行所述步驟的固定功能邏輯的特定硬件組件執(zhí)行,或者由編程的計算機組件和固定功能硬件組件的任何組合執(zhí)行。
可以將用于對邏輯進(jìn)行編程以執(zhí)行本公開的實施例的指令存儲在系統(tǒng)中的存儲器內(nèi),諸如dram、高速緩存、閃存或其它存儲裝置內(nèi)。而且,指令可以經(jīng)由網(wǎng)絡(luò)或通過其它計算機可讀介質(zhì)分發(fā)。從而,機器可讀介質(zhì)可以包含用于存儲或傳送由機器(例如計算機)可讀形式的信息的任何機制,但不限于軟盤、光盤、壓縮盤只讀存儲器(cd-rom)和磁光盤、只讀存儲器(rom)、隨機存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、磁卡或光卡、閃存或在因特網(wǎng)上經(jīng)由電、光、聲或其它形式傳播信號(例如載波、紅外信號、數(shù)字信號等)傳送信息中使用的有形機器可讀存儲裝置。相應(yīng)地,計算機可讀介質(zhì)可以包含適合于存儲或傳送由機器(例如計算機)可讀形式的電子指令或信息的任何類型有形機器可讀介質(zhì)。
設(shè)計從創(chuàng)建到模擬到制造可以經(jīng)過各種階段。表示設(shè)計的數(shù)據(jù)可以用多種方式表示該設(shè)計。首先,如在模擬中可能有用的,可以使用硬件描述語言或另一功能描述語言來表示硬件。此外,在設(shè)計過程的某些階段,可以產(chǎn)生具有邏輯和/或晶體管柵的電路級模型。而且,設(shè)計在某一階段可以達(dá)到表示硬件模型中各種設(shè)備的物理布置的數(shù)據(jù)級。在其中使用一些半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指定在用于產(chǎn)生集成電路的掩模的不同掩模層上存在或缺乏各種特征的數(shù)據(jù)。在設(shè)計的任何表示中,數(shù)據(jù)可以存儲在任何形式的機器可讀介質(zhì)中。諸如盤之類的磁或光存儲裝置或者存儲器可以是機器可讀介質(zhì),以存儲經(jīng)由調(diào)制或以其它方式生成以傳送信息的光波或電波傳送的信息。在傳送指示或攜帶代碼或設(shè)計的電載波時,就執(zhí)行電信號的復(fù)制、緩沖或重新傳送而言,可以進(jìn)行新的拷貝。從而,通信提供商或網(wǎng)絡(luò)提供商可以在有形機器可讀介質(zhì)上至少暫時存儲體現(xiàn)本公開的實施例的技術(shù)的制品,諸如編碼到載波中的信息。
在現(xiàn)代處理器中,可以使用若干不同執(zhí)行單元來處理和執(zhí)行各種代碼和指令。一些指令可能更快地完成,而其它指令可能花了若干時鐘周期完成。指令的吞吐量越快,處理器的總體性能越好。從而,使許多指令盡可能快地執(zhí)行會是有利的。然而,可能存在具有更大復(fù)雜性并且在執(zhí)行時間和處理器資源方面要求更多的某些指令,如浮點指令、加載/存儲操作、數(shù)據(jù)移動等。
當(dāng)在因特網(wǎng)、文本和多媒體應(yīng)用中使用更多計算機系統(tǒng)時,已經(jīng)隨時間引入了附加處理器支持。在一個實施例中,指令集可與一個或多個計算機架構(gòu)相關(guān)聯(lián),包含數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲器架構(gòu)、中斷和異常處置以及外部輸入和輸出(i/o)。
在一個實施例中,指令集架構(gòu)(isa)可由一個或多個微架構(gòu)實現(xiàn),微架構(gòu)可以包含用于實現(xiàn)一個或多個指令集的處理器邏輯和電路。相應(yīng)地,具有不同微架構(gòu)的處理器至少可以共享部分公共指令集。例如,intel?pentium4處理器、intel?core?處理器以及來自加利福尼亞州桑尼維爾的advancedmicrodevices公司的處理器實現(xiàn)了幾乎相同版本的x86指令集(具有已經(jīng)用較新版本添加的一些擴展),但具有不同的內(nèi)部設(shè)計。類似地,由其它處理器開發(fā)公司(諸如arm控股公司、mips或他們的許可方或采納方)設(shè)計的處理器至少可共享一部分公共指令集,但可以包含不同處理器設(shè)計。例如,isa的相同寄存器架構(gòu)可使用新的或公知的技術(shù)在不同微架構(gòu)中以不同方式實現(xiàn),包括專用物理寄存器、使用寄存器重命名機制(例如,使用寄存器別名表(rat)、重新排序緩沖器(rob)和引退寄存器文件)的一個或多個動態(tài)分配的物理寄存器。在一個實施例中,寄存器可以包括一個或多個寄存器、寄存器架構(gòu)、寄存器文件或可以或可以不由軟件程序員尋址的其它寄存器集。
指令可以包含一個或多個指令格式。在一個實施例中,除了其它之外,指令格式還可以指示要指定的各種字段(比特數(shù)、比特的位置等)、要執(zhí)行的操作以及在其上將執(zhí)行操作的操作數(shù)。在另外實施例中,一些指令格式可由指令模板(或子格式)進(jìn)一步定義。例如,給定指令格式的指令模板可以定義成具有指令格式字段的不同子集,和/或定義成具有不同解釋的給定字段。在一個實施例中,指令可以使用指令格式(并且如果定義了,則在那個指令格式的指令模板中的給定一個模板中)表述,并且指定或指示操作和在其上將執(zhí)行操作的操作數(shù)。
科學(xué)、金融、自動向量化通用、rms(識別、挖掘和合成)以及視覺和多媒體應(yīng)用(例如,2d/3d圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻操縱)可要求對大量數(shù)據(jù)項執(zhí)行相同操作。在一個實施例中,單指令多數(shù)據(jù)(simd)是指使得處理器對多個數(shù)據(jù)元素執(zhí)行操作的指令的類型。在邏輯上可將寄存器中的比特劃分成多個固定大小或可變大小數(shù)據(jù)元素(每個元素表示單獨的值)的simd技術(shù)可使用在處理器中。例如,在一個實施例中,可將64比特寄存器中的比特組織為包含4個單獨16比特數(shù)據(jù)元素的源操作數(shù),每個元素表示單獨的16比特值。此類型的數(shù)據(jù)可稱為“打包”數(shù)據(jù)類型或“向量”數(shù)據(jù)類型,并且此數(shù)據(jù)類型的操作數(shù)可稱為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個實施例中,打包數(shù)據(jù)項或向量可以是在單個寄存器內(nèi)存儲的打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)可以是simd指令(或“打包數(shù)據(jù)指令”或“向量指令”)的源或目的地操作數(shù)。在一個實施例中,simd指令指定要對兩個源向量操作數(shù)執(zhí)行的單向量操作,以生成相同或不同大小的具有相同或不同數(shù)量的數(shù)據(jù)元素和以相同或不同的數(shù)據(jù)元素順序的目的地向量操作數(shù)(也稱為結(jié)果向量操作數(shù))。
例如由具有包括x86、mmx?、流式傳輸simd擴展(sse)、sse2、sse3、sse4.1以及sse4.2指令的指令集的intel?core?處理器,諸如armcortex?系列處理器的具有包括向量浮點(vfp)和/或neon指令的指令集的arm處理器和諸如由中國科學(xué)院的計算技術(shù)研究所(ict)開發(fā)的龍芯系列處理器的mips處理器采用的simd技術(shù)已經(jīng)在應(yīng)用性能方面實現(xiàn)了相當(dāng)大的改進(jìn)(core?和mmx?是加利福尼亞州圣克拉拉的intelcorporation的注冊商標(biāo)或商標(biāo))。
在一個實施例中,目的地和源寄存器/數(shù)據(jù)可以是表示對應(yīng)數(shù)據(jù)或操作的源和目的地的常規(guī)術(shù)語。在一些實施例中,它們可以通過具有與所描繪的那些名稱或功能不同的名稱或功能的寄存器、存儲器或其它存儲區(qū)域來實現(xiàn)。例如,在一個實施例中,“dest1”可以是臨時存儲寄存器或其它存儲區(qū)域,而“src1”和“src2”可以是第一和第二源存儲寄存器或其它存儲區(qū)域并以此類推。在其它實施例中,兩個或更多個src和dest存儲區(qū)域可以對應(yīng)于相同存儲區(qū)域(例如,simd寄存器)內(nèi)的不同數(shù)據(jù)存儲元素。在一個實施例中,例如通過將對第一和第二源數(shù)據(jù)執(zhí)行的操作的結(jié)果寫回到用作目的地寄存器的兩個源寄存器中的一個,源寄存器之一也可充當(dāng)目的地寄存器。
圖1a是根據(jù)本公開的實施例的利用可以包括執(zhí)行指令的執(zhí)行單元的處理器所形成的示例性計算機系統(tǒng)的框圖。根據(jù)本公開,諸如在本文描述的實施例中,系統(tǒng)100可以包括諸如處理器102的組件,以采用包括執(zhí)行用于處理數(shù)據(jù)的算法的邏輯的執(zhí)行單元。系統(tǒng)100可表示基于從加利福尼亞州圣克拉拉的intelcorporation可用的pentium?iii、pentium?4、xeon?、itanium?、xscale?和/或strongarm?微處理器的處理系統(tǒng),盡管也可使用其它系統(tǒng)(包括具有其它微處理器的pc、工程工作站、機頂盒等)。在一個實施例中,示例系統(tǒng)100可以執(zhí)行從華盛頓州雷德蒙德的microsoftcorporation可用的一版本的windows?操作系統(tǒng),盡管也可使用其它操作系統(tǒng)(例如,unix和linux)、嵌入式軟件和/或圖形用戶界面。因此,本公開的實施例不限于硬件電路和軟件的任何特定組合。
實施例并不限于計算機系統(tǒng)。本公開的實施例可在諸如手持設(shè)備和嵌入式應(yīng)用的其它設(shè)備中使用。手持設(shè)備的一些示例包括蜂窩電話、因特網(wǎng)協(xié)議設(shè)備、數(shù)碼相機、個人數(shù)字助理(pda)以及手持pc。嵌入式應(yīng)用可以包括微控制器、數(shù)字信號處理器(dsp)、片上系統(tǒng)、網(wǎng)絡(luò)計算機(netpc)、機頂盒、網(wǎng)絡(luò)集線器、廣域網(wǎng)(wan)交換機或可執(zhí)行根據(jù)至少一個實施例的一個或多個指令的任何其它系統(tǒng)。
計算機系統(tǒng)100可以包含處理器102,處理器102可以包含一個或多個執(zhí)行單元108以執(zhí)行按照本公開一個實施例執(zhí)行至少一個指令的算法。一個實施例可以在單個處理器桌上型計算機或服務(wù)器系統(tǒng)的上下文中描述,而其它實施例可以包括在多處理器系統(tǒng)中。系統(tǒng)100可以是“集線器”系統(tǒng)架構(gòu)的示例。系統(tǒng)100可以包括用于處理數(shù)據(jù)信號的處理器102。處理器102可以包含復(fù)雜指令集計算機(cisc)微處理器、精簡指令集計算(risc)微處理器、超長指令字(vliw)微處理器、實現(xiàn)指令集組合的處理器或任何其它處理器設(shè)備,諸如例如數(shù)字信號處理器。在一個實施例中,處理器102可以耦合到處理器總線110,其可在處理器102與系統(tǒng)100中的其它組件之間傳送數(shù)據(jù)信號。系統(tǒng)100的元件可以執(zhí)行對于本領(lǐng)域熟知的技術(shù)人員眾所周知的常規(guī)功能。
在一個實施例中,處理器102可以包含一級(l1)內(nèi)部高速緩存存儲器104。取決于架構(gòu),處理器102可以具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。在另一個實施例中,高速緩存存儲器可以駐留在處理器102外部。取決于具體實現(xiàn)和需要,其它實施例也可以包含內(nèi)部和外部高速緩存的組合。寄存器文件106可以將不同類型的數(shù)據(jù)存儲在包含整數(shù)寄存器、浮點寄存器、狀態(tài)寄存器和指令指針寄存器的各種寄存器中。
包含執(zhí)行整數(shù)和浮點操作的邏輯的執(zhí)行單元108也駐留在處理器102中。處理器102也可以包含存儲某些宏指令的微代碼的微代碼(ucode)rom。在一個實施例中,執(zhí)行單元108可以包含處置打包指令集109的邏輯。通過在通用處理器102的指令集中包括打包指令集109,連同執(zhí)行指令的相關(guān)聯(lián)電路,可以使用通用處理器102中的打包數(shù)據(jù)執(zhí)行由許多多媒體應(yīng)用使用的操作。從而,通過使用處理器的數(shù)據(jù)總線的完全寬度來對打包數(shù)據(jù)執(zhí)行操作,可以加速和更有效地執(zhí)行許多多媒體應(yīng)用。這可以消除跨處理器的數(shù)據(jù)總線傳輸更小數(shù)據(jù)單元來一次一個數(shù)據(jù)元素地執(zhí)行一個或多個操作的需要。
執(zhí)行單元108的實施例也可用在微控制器、嵌入式處理器、圖形設(shè)備、dsp以及其它類型邏輯電路中。系統(tǒng)100可以包含存儲器120??梢詫⒋鎯ζ?20實現(xiàn)為動態(tài)隨機存取存儲器(dram)設(shè)備、靜態(tài)隨機存取存儲器(sram)設(shè)備、閃存設(shè)備或其它存儲器設(shè)備。存儲器120可以存儲由數(shù)據(jù)信號表示的可由處理器102執(zhí)行的指令和/或數(shù)據(jù)。
系統(tǒng)邏輯芯片116可以耦合到處理器總線110和存儲器120。系統(tǒng)邏輯芯片116可以包含存儲器控制器集線器(mch)。處理器102可以經(jīng)由處理器總線110來與mch116通信。mch116可以提供到存儲器120的高帶寬存儲器路徑118,所述存儲器120用于指令和數(shù)據(jù)存儲以及用于圖形命令、數(shù)據(jù)和文本的存儲。mch116可以在處理器102、存儲器120和系統(tǒng)100中的其它組件之間引導(dǎo)數(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設(shè)備的直接連接。本地i/o總線可以包含用于將外設(shè)連接到存儲器120、芯片集和處理器102的高速i/o總線。示例可以包含音頻控制器、固件集線器(閃速bios)128、無線收發(fā)器126、數(shù)據(jù)存儲裝置124、包含用戶輸入和鍵盤接口的傳統(tǒng)i/o控制器、諸如通用串行總線(usb)之類的串行擴展端口和網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲設(shè)備124可以包括硬盤驅(qū)動器、軟盤驅(qū)動器、cd-rom設(shè)備、閃存設(shè)備或其它大容量存儲設(shè)備。
對于系統(tǒng)的另一個實施例,根據(jù)一個實施例的指令可與片上系統(tǒng)一起使用。片上系統(tǒng)的一個實施例包括處理器和存儲器。一個此類系統(tǒng)的存儲器可以包含閃存。閃存可以位于與處理器和其它系統(tǒng)組件相同的管芯上。此外,諸如存儲器控制器或圖形控制器的其它邏輯塊也可以位于片上系統(tǒng)上。
圖1b圖示了實現(xiàn)本公開的實施例的原理的數(shù)據(jù)處理系統(tǒng)140。本領(lǐng)域技術(shù)人員將容易認(rèn)識到,本文描述的實施例可以利用替代處理系統(tǒng)來進(jìn)行操作而不脫離本公開實施例的范圍。
根據(jù)一個實施例,計算機系統(tǒng)140包括用于執(zhí)行至少一個指令的處理核159。在一個實施例中,處理核159表示任何類型架構(gòu)的處理單元,包含但不限于cisc、risc或vliw型架構(gòu)。處理核159還可適合于以一個或多個工藝技術(shù)的制造,并且通過充分詳細(xì)地表示在機器可讀介質(zhì)上,可適合于促進(jìn)所述制造。
處理核159包括執(zhí)行單元142、寄存器文件集合145和解碼器144。處理核159還可以包含對理解本公開的實施例不必要的附加電路(未示出)。執(zhí)行單元142可以執(zhí)行由處理核159接收的指令。除了執(zhí)行典型處理器指令之外,執(zhí)行單元142還可以執(zhí)行打包指令集143中的指令,以用于執(zhí)行對打包數(shù)據(jù)格式的操作。打包指令集143可以包含用于執(zhí)行本公開的實施例的指令以及其它打包指令。執(zhí)行單元142可通過內(nèi)部總線耦合到寄存器文件145。寄存器文件145可以表示處理核159上的用于存儲包含數(shù)據(jù)的信息的存儲區(qū)域。如先前所提到的,要理解,存儲區(qū)域可以存儲可能不關(guān)鍵的打包數(shù)據(jù)。執(zhí)行單元142可以耦合到解碼器144。解碼器144可將由處理核159接收的指令解碼成控制信號和/或微代碼入口點。響應(yīng)于這些控制信號和/或微代碼入口點,執(zhí)行單元142執(zhí)行適當(dāng)?shù)牟僮鳌T谝粋€實施例中,解碼器可以解釋指令的操作碼,其將指示應(yīng)該對在指令內(nèi)指示的對應(yīng)數(shù)據(jù)執(zhí)行什么操作。
處理核159可與總線141耦合,以用于與各種其它系統(tǒng)設(shè)備通信,所述其他系統(tǒng)設(shè)備例如可以包括但不限于:同步動態(tài)隨機存取存儲器(sdram)控制146、靜態(tài)隨機存取存儲器(sram)控制147、突發(fā)閃存接口148、個人計算機存儲卡國際協(xié)會(pcmcia)/致密閃存(cf)卡控制149、液晶顯示器(lcd)控制150、直接存儲器存?。╠ma)控制器151以及替代總線主接口152。在一個實施例中,數(shù)據(jù)處理系統(tǒng)140還可以包括i/o橋154以用于經(jīng)由i/o總線153與各種i/o設(shè)備通信。此類i/o設(shè)備例如可以包含但不限于通用異步接收器/傳送器(uart)155、通用串行總線(usb)156、藍(lán)牙無線uart157和i/o擴展接口158。
數(shù)據(jù)處理系統(tǒng)140的一個實施例提供移動、網(wǎng)絡(luò)和/或無線通信以及可以執(zhí)行包含文本字符串比較操作的simd操作的處理核159。處理核159可以利用各種音頻、視頻、成像和通信算法編程,包含:離散變換,諸如walsh-hadamard變換、快速傅里葉變換(fft)、離散余弦變換(dct)以及它們的相應(yīng)逆變換;壓縮/解壓縮技術(shù),諸如色彩空間變換、視頻編碼運動估計或視頻解碼運動補償;以及調(diào)制/解調(diào)(modem)功能,諸如脈沖譯碼調(diào)制(pcm)。
圖1c圖示了執(zhí)行simd文本字符串比較操作的數(shù)據(jù)處理系統(tǒng)的其它實施例。在一個實施例中,數(shù)據(jù)處理系統(tǒng)160可以包含主處理器166、simd協(xié)處理器161、高速緩存存儲器167和輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可選地可以耦合到無線接口169。simd協(xié)處理器161可以執(zhí)行包含根據(jù)一個實施例的指令的操作。在一個實施例中,處理核170可適合于以一個或多個工藝技術(shù)的制造,并且通過充分詳細(xì)地表示在機器可讀介質(zhì)上,可適合于促進(jìn)制造包含處理核170的所有或部分?jǐn)?shù)據(jù)處理系統(tǒng)160。
在一個實施例中,simd協(xié)處理器161包括執(zhí)行單元162和寄存器文件集合164。主處理器165的一個實施例包括解碼器165以識別指令集163中的指令--包含根據(jù)一個實施例以用于由執(zhí)行單元162執(zhí)行的指令。在其它實施例中,simd處理器161還包括解碼器165的至少部分以解碼指令集163中的指令。處理核170還可以包含對理解本公開實施例可能不必要的附加電路(未示出)。
在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,其控制包含與高速緩存存儲器167和輸入/輸出系統(tǒng)168的交互在內(nèi)的通用類型的數(shù)據(jù)處理操作。嵌入在數(shù)據(jù)處理指令流內(nèi)的可以是simd協(xié)處理器指令。主處理器166的解碼器165將這些simd協(xié)處理器指令識別為應(yīng)該由附連的simd協(xié)處理器161執(zhí)行的類型。相應(yīng)地,主處理器166在協(xié)處理器總線166上發(fā)布這些simd協(xié)處理器指令(或表示simd協(xié)處理器指令的控制信號)。從協(xié)處理器總線166,可以由任何附連的simd協(xié)處理器接收這些指令。在此情況下,simd協(xié)處理器161可以接受并執(zhí)行預(yù)期用于它的任何接收到simd協(xié)處理器指令。
數(shù)據(jù)可以經(jīng)由無線接口169接收以便由simd協(xié)處理器指令處理。對于一個示例,語音通信可以以數(shù)字信號的形式接收,其可由simd協(xié)處理器指令處理以重新生成代表語音通信的數(shù)字音頻采樣。對于另一個示例,壓縮的音頻和/或視頻可以數(shù)字比特流形式接收,其可由simd協(xié)處理器指令處理以重新生成數(shù)字音頻采樣和/或運動視頻幀。在處理核170的一個實施例中,可以將主處理器166和simd協(xié)處理器161集成到包括執(zhí)行單元162、寄存器文件集合164和識別指令集163中的指令(包含根據(jù)一個實施例的指令)的解碼器165的單個處理核170中。
圖2是根據(jù)本公開的實施例的用于可以包含執(zhí)行指令的邏輯電路的處理器200的微架構(gòu)的框圖。在一些實施例中,可以實現(xiàn)根據(jù)一個實施例的指令,以對具有字節(jié)、字、雙字、四字等大小以及諸如單和雙精度整數(shù)和浮點數(shù)據(jù)類型之類的數(shù)據(jù)類型的數(shù)據(jù)元素進(jìn)行操作。在一個實施例中,有序前端201可以實現(xiàn)處理器200的一部分,該部分可以獲取要執(zhí)行的指令,并且準(zhǔn)備在處理器流水線中以后要使用的指令。前端201可以包含若干單元。在一個實施例中,指令預(yù)獲取器226從存儲器中獲取指令,并將指令饋送到指令解碼器228,解碼器228繼而解碼或解釋這些指令。例如,在一個實施例中,解碼器將接收的指令解碼成機器可以執(zhí)行的稱為“微指令”或“微操作”(也稱為microop或uop)的一個或多個操作。在其它實施例中,解碼器將指令解析成操作碼和對應(yīng)的數(shù)據(jù)以及控制字段,它們可由微架構(gòu)使用以執(zhí)行根據(jù)一個實施例的操作。在一個實施例中,追蹤高速緩存230可以將解碼的uop匯編成uop隊列234中的程序排序的序列或追蹤以供執(zhí)行。當(dāng)追蹤高速緩存230遇到復(fù)雜指令時,微代碼rom232提供完成該操作所需的uop。
可以將一些指令轉(zhuǎn)換成單個micro-op,而其它指令需要若干micro-op來完成整個操作。在一個實施例中,如果需要多于四個micro-op來完成指令,則解碼器228可以訪問微代碼rom232以執(zhí)行指令。在一個實施例中,指令可以被解碼成小數(shù)量的micro-op,以用于在指令解碼器228處進(jìn)行處理。在另一個實施例中,可以將指令存儲在微代碼rom232內(nèi)--如果需要多個micro-op來完成操作的話。追蹤高速緩存230指的是入口點可編程邏輯陣列(pla),以確定正確的微指令指針,以用于讀取微代碼序列,從而完成來自微代碼rom232的根據(jù)一個實施例的一個或多個指令。在微代碼rom232完成針對指令的micro-op排序后,機器的前端201可以恢復(fù)從追蹤高速緩存230獲取micro-op。
無序執(zhí)行引擎203可以準(zhǔn)備指令以用于執(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基于其相關(guān)性輸入寄存器操作數(shù)源的準(zhǔn)備度和uop完成其操作需要的執(zhí)行資源的可用性,確定uop何時準(zhǔn)備就緒執(zhí)行。一個實施例的快速調(diào)度器202可以在主時鐘周期的每半個周期上進(jìn)行調(diào)度,而其它調(diào)度器可以每主處理器時鐘周期僅調(diào)度一次。調(diào)度器對于分派端口進(jìn)行裁決以調(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)絡(luò),其可以旁路尚未寫入寄存器文件中的剛剛完成的結(jié)果或者將其向新的相關(guān)uop轉(zhuǎn)發(fā)。整數(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í)行單元212、214、216、218、220、222、224可以執(zhí)行指令。執(zhí)行塊211可以包含存儲微指令需要執(zhí)行的整數(shù)和浮點數(shù)據(jù)操作數(shù)值的寄存器文件208、210。在一個實施例中,處理器200可以包括多個執(zhí)行單元:地址生成單元(agu)212、agu214、快速算術(shù)邏輯單元(alu)216、快速alu218、慢速alu220、浮點alu222、浮點移動單元224。在另一個實施例中,浮點執(zhí)行塊222、224可以執(zhí)行浮點、mmx、simd和sse或其它操作。在又另一個實施例中,浮點alu222可以包含64比特×64比特浮點除法器以執(zhí)行除法、平方根和余數(shù)micro-op。在各種實施例中,涉及浮點值的指令可以利用浮點硬件來處置。在一個實施例中,alu操作可以傳到高速alu執(zhí)行單元216、218。高速alu216、218可以通過時鐘周期一半的有效等待時間而執(zhí)行快速操作。在一個實施例中,最復(fù)雜的整數(shù)操作去到慢速alu220,因為慢速alu220可以包括用于長等待時間類型操作的整數(shù)執(zhí)行硬件,如乘法器、位移、標(biāo)記邏輯和分支處理。存儲器加載/存儲操作可以由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ù)進(jìn)行操作。
在一個實施例中,在父加載(parentload)已經(jīng)完成執(zhí)行之前,uop調(diào)度器202、204、206分派相關(guān)操作。當(dāng)在處理器200中推測性地調(diào)度和執(zhí)行uop時,處理器200還可以包含處置存儲器丟失的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中丟失,則流水線中可以存在執(zhí)行中(inflight)相關(guān)操作,其為調(diào)度器留下了暫時不正確的數(shù)據(jù)。重放機制跟蹤和重新執(zhí)行使用不正確數(shù)據(jù)的指令。可能只需要重放相關(guān)操作,并且可以允許完成獨立的操作。處理器的一個實施例的調(diào)度器和重放機制也可以設(shè)計成捕捉用于文本字符串比較操作的指令序列。
術(shù)語“寄存器”可以指代可用作識別操作數(shù)的部分指令的板載處理器存儲位置。換言之,寄存器可以是從處理器的外部可使用的那些寄存器(從程序員的角度而言)。然而,在一些實施例中,寄存器可能不限于特定類型的電路。相反,寄存器可以存儲數(shù)據(jù)、提供數(shù)據(jù)、并且執(zhí)行本文中描述的功能。本文中描述的寄存器可由處理器內(nèi)的電路使用任何數(shù)量的不同技術(shù)實現(xiàn),例如專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合等。在一個實施例中,整數(shù)寄存器存儲32比特整數(shù)數(shù)據(jù)。一個實施例的寄存器文件也包含用于打包數(shù)據(jù)的8個多媒體simd寄存器。對于下面的討論,可以將寄存器理解為設(shè)計成保持打包數(shù)據(jù)的數(shù)據(jù)寄存器,諸如來自加利福尼亞州圣克拉拉的intelcorporation的以mmx技術(shù)實現(xiàn)的微處理器中的64比特寬mmx?寄存器(在一些實例中也稱為“mm”寄存器)。在整數(shù)和浮點形式兩者中可用的這些mmx寄存器可以與伴隨simd和sse指令的打包數(shù)據(jù)元素一起操作。類似地,與sse2、sse3、sse4或更高版本(一般稱為“ssex”)技術(shù)有關(guān)的128比特寬xmm寄存器可以保持此類打包數(shù)據(jù)操作數(shù)。在一個實施例中,在存儲打包數(shù)據(jù)和整數(shù)數(shù)據(jù)中,寄存器無需區(qū)分兩種數(shù)據(jù)類型。在一個實施例中,整數(shù)和浮點可以包含在相同寄存器文件或不同寄存器文件中。此外,在一個實施例中,浮點和整數(shù)數(shù)據(jù)可以存儲在不同寄存器或相同寄存器中。
在以下附圖的示例中,可以描述多個數(shù)據(jù)操作數(shù)。圖3a圖示了根據(jù)本公開的實施例的在多媒體寄存器中的各種打包數(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ù)有關(guān)的打包數(shù)據(jù)序列中,xmm寄存器中存儲的數(shù)據(jù)元素的數(shù)量可以是128比特除以個體數(shù)據(jù)元素的以比特為單位的長度。類似地,在與mmx和sse技術(shù)有關(guān)的打包數(shù)據(jù)序列中,mmx寄存器中存儲的數(shù)據(jù)元素的數(shù)量可以是64比特除以個體數(shù)據(jù)元素的以比特為單位的長度。雖然圖3a中圖示的數(shù)據(jù)類型可以為128比特長,但本公開的實施例也可以利用64比特寬或其它大小的操作數(shù)操作。此示例的打包字格式320可以為128比特長,并且包含8個打包字?jǐn)?shù)據(jù)元素。每個打包字包含16比特的信息。圖3a的打包雙字格式330可以為128比特長,并且包含4個打包雙字?jǐn)?shù)據(jù)元素。每個打包雙字?jǐn)?shù)據(jù)元素包含32比特的信息。打包四字可以為128比特長,并且包含2個打包四字?jǐn)?shù)據(jù)元素。
圖3b圖示了根據(jù)本公開的實施例的可能寄存器中的數(shù)據(jù)存儲格式。每個打包數(shù)據(jù)可以包括多于一個獨立數(shù)據(jù)元素。圖示了三個打包數(shù)據(jù)格式;打包半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ù)元素。將認(rèn)識到,此類打包數(shù)據(jù)格式可以進(jìn)一步擴展到其它寄存器長度,例如,96比特、160比特、192比特、224比特、256比特或更多。
圖3c圖示了根據(jù)本公開的實施例的在多媒體寄存器中的各種有符號和無符號的打包數(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。要注意的是,每個字?jǐn)?shù)據(jù)元素的第16比特可以是符號指示符。無符號的打包雙字表示348示出了如何存儲雙字?jǐn)?shù)據(jù)元素。有符號的打包雙字表示349可以類似于無符號的打包雙字寄存器中的表示348。要注意的是,必需的符號比特可以是每個雙字?jǐn)?shù)據(jù)元素的第32比特。
圖3d圖示了操作編碼(操作碼)的實施例。此外,格式360可以包括寄存器/存儲器操作數(shù)尋址模式,其與萬維網(wǎng)(www)intel.com/design/litcentr上從加利福尼亞州圣克拉拉intelcorporation可獲得的“ia-32intel架構(gòu)軟件開發(fā)員手冊第2卷:指令集參考”(ia-32intelarchitecturesoftwaredeveloper'smanualvolume2:instructionsetreference)中描述的操作碼格式的類型相對應(yīng)。在一個實施例中,指令可以通過字段361和362中的一個或多個字段編碼??梢宰R別高達(dá)每指令兩個操作數(shù)位置,包括高達(dá)兩個源操作數(shù)標(biāo)識符364和365。在一個實施例中,目的地操作數(shù)標(biāo)識符366可以與源操作數(shù)標(biāo)識符364相同,而在其它實施例中,它們可以不同。在另一個實施例中,目的地操作數(shù)標(biāo)識符366可以與源操作數(shù)標(biāo)識符365相同,而在其它實施例中,它們可以不同。在一個實施例中,通過源操作數(shù)標(biāo)識符364和365識別的源操作數(shù)之一可通過文本字符串比較操作的結(jié)果被改寫,而在其它實施例中,標(biāo)識符364對應(yīng)于源寄存器元素,并且標(biāo)識符365對應(yīng)于目的地寄存器元素。在一個實施例中,操作數(shù)標(biāo)識符364和365可以識別32比特或64比特源和目的地操作數(shù)。
圖3e圖示了根據(jù)本公開的實施例的具有40或更多個比特的另一可能操作編碼(操作碼)格式。操作碼格式370與操作碼格式360相對應(yīng),并且包括可選前綴字節(jié)378。根據(jù)一個實施例的指令可以通過字段378、371和372的一個或多個字段編碼。通過源操作數(shù)標(biāo)識符374和375以及通過前綴字節(jié)378,可以識別高達(dá)每指令兩個操作數(shù)位置。在一個實施例中,前綴字節(jié)378可以用于識別32比特或64比特源和目的地操作數(shù)。在一個實施例中,目的地操作數(shù)標(biāo)識符376可以與源操作數(shù)標(biāo)識符374相同,而在其它實施例中,它們可以不同。對于另一個實施例,目的地操作數(shù)標(biāo)識符376可以與源操作數(shù)標(biāo)識符375相同,而在其它實施例中,它們可以不同。在一個實施例中,指令對通過操作數(shù)標(biāo)識符374和375識別的一個或多個操作數(shù)進(jìn)行操作,并且通過操作數(shù)標(biāo)識符374和375識別的一個或多個操作數(shù)可以通過指令的結(jié)果被改寫,而在其它實施例中,通過標(biāo)識符374和375識別的操作數(shù)可以寫入另一寄存器中的另一數(shù)據(jù)元素。操作碼格式360和370允許由mod字段363和373和由可選比例-索引-基礎(chǔ)和位移字節(jié)部分地指定的寄存器到(to)寄存器、存儲器到寄存器、寄存器接(by)存儲器、寄存器接寄存器、寄存器接中間、寄存器到存儲器尋址。
圖3f圖示了根據(jù)本公開的實施例的又另一可能操作編碼(操作碼)格式。64比特單指令多數(shù)據(jù)(simd)算術(shù)操作可以通過協(xié)處理器數(shù)據(jù)處理(cdp)指令執(zhí)行。操作編碼(操作碼)格式380描繪了具有cdp操作碼字段382和0064389的一個此類cdp指令。cdp指令的類型,對于另一個實施例,操作可以通過字段383、384、387和388的一個或多個字段編碼??梢宰R別高達(dá)每指令三個操作數(shù)位置,包括高達(dá)兩個源操作數(shù)標(biāo)識符385、390和一個目的地操作數(shù)標(biāo)識符386。協(xié)處理器的一個實施例可以對8、16、32和64比特值進(jìn)行操作。在一個實施例中,可以對整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實施例中,可以使用條件字段381,有條件地執(zhí)行指令。對于一些實施例,源數(shù)據(jù)大小可由字段383編碼。在一些實施例中,可以對simd字段進(jìn)行零(z)、負(fù)(n)、進(jìn)位(c)和溢出(v)檢測。對于一些指令,飽和的類型可以由字段384編碼。
圖4a是根據(jù)本公開的實施例的圖示了有序流水線和寄存器重命名階段、無序發(fā)布/執(zhí)行流水線的框圖。圖4b是根據(jù)本公開的實施例的圖示了有序架構(gòu)核和要包括在處理器中的寄存器重命名邏輯、無序發(fā)布/執(zhí)行邏輯的框圖。圖4a中的實線框圖示了有序流水線,而虛線框圖示了寄存器重命名、無序發(fā)布/執(zhí)行流水線。類似地,圖4b中的實線框圖示了有序架構(gòu)邏輯,而虛線框圖示了寄存器重命名邏輯和無序發(fā)布/執(zhí)行邏輯。
在圖4a中,處理器流水線400可以包括獲取階段402、長度解碼階段404、解碼階段406、分配階段408、重命名階段410、調(diào)度(也稱為分派或發(fā)布)階段412、寄存器讀取/存儲器讀取階段414、執(zhí)行階段416、寫回/存儲器寫入階段418、異常處置階段422以及提交階段424。
在圖4b中,箭頭標(biāo)示在兩個或更多個單元之間的耦合,并且箭頭的方向指示在那些單元之間數(shù)據(jù)流的方向。圖4b示出了處理器核490,包括耦合到執(zhí)行引擎單元450的前端單元430,并且兩者均可以耦合到存儲器單元470。
核490可以是精簡指令集計算(risc)核、復(fù)雜指令集計算(cisc)核、超長指令字(vlim)核或混合或替代核類型。在一個實施例中,核490可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、圖形核或者諸如此類。
前端單元430可以包括耦合到指令高速緩存單元434的分支預(yù)測單元432。指令高速緩存單元434可以耦合到指令轉(zhuǎn)化(translation)后備緩沖器(tlb)436。tlb436可以耦合到指令獲取單元438,其耦合到解碼單元440。解碼單元440可以對指令進(jìn)行解碼,并且生成作為輸出的一個或多個微操作、微代碼入口點、微指令、其它指令或其它控制信號,它們可以從原始指令解碼或者以其它方式反映原始指令或者可以從原始指令得到。解碼器可以使用各種不同的機制來實現(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)度器,包括預(yù)留站、中央指令窗口等。調(diào)度器單元456可以耦合到物理寄存器文件單元458。每個物理寄存器文件單元458表示一個或多個物理寄存器文件,這些文件的不同文件存儲一個或多個不同數(shù)據(jù)類型,如標(biāo)量整數(shù)、標(biāo)量浮點、打包整數(shù)、打包浮點、向量整數(shù)、向量浮點、等,狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。物理寄存器文件單元458可以被引退單元154重疊以圖示在其中可以實現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用一個或多個重新排序緩沖器和一個或多個引退寄存器文件;使用一個或多個將來文件、一個或多個歷史緩沖器和一個或多個引退寄存器文件;使用寄存器映射和寄存器池等)。通常,架構(gòu)寄存器可從處理器外部或者從程序員的角度而言是可見的。寄存器可能不限于任何已知特定類型的電路。各種不同類型的寄存器只要如本文中所述存儲和提供數(shù)據(jù),它們便是適合的。適合的寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合等。引退單元454和物理寄存器文件單元458可以耦合到執(zhí)行集群460。執(zhí)行集群460可以包括一個或多個執(zhí)行單元集合162和一個或多個存儲器存取單元集合464。執(zhí)行單元462可以并且在各種類型的數(shù)據(jù)(例如,標(biāo)量浮點、打包整數(shù)、打包浮點、向量整數(shù)、向量浮點)上執(zhí)行各種操作(例如,移位、加法、減法、乘法)。雖然一些實施例可以包括專用于特定功能或功能的集合的多個執(zhí)行單元,但是其它實施例可以只包括一個執(zhí)行單元或全部執(zhí)行所有功能的多個執(zhí)行單元。調(diào)度器單元456、物理寄存器文件單元458和執(zhí)行集群460被示出為可能是多個,這是因為某些實施例為某些類型的數(shù)據(jù)/操作創(chuàng)建單獨的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點/打包整數(shù)/打包浮點/向量整數(shù)/向量浮點流水線和/或存儲器存取流水線,每個流水線具有其自己的調(diào)度器單元、物理寄存器文件單元和/或執(zhí)行集群--并且在單獨的存儲器存取流水線的情況下,可以實現(xiàn)其中僅此流水線的執(zhí)行集群具有存儲器存取單元464的某些實施例)。還應(yīng)理解的是,在使用單獨流水線的情況下,這些流水線的一個或多個可以是無序發(fā)布/執(zhí)行,并且其余的流水線是有序的。
存儲器存取單元464的集合可以耦合到存儲器單元470,其可以包括耦合到數(shù)據(jù)高速緩存單元474的數(shù)據(jù)tlb單元472,數(shù)據(jù)高速緩存單元474耦合到2級(l2)高速緩存單元476。在一個示例性實施例中,存儲器存取單元464可以包括負(fù)載單元、存儲地址單元和存儲數(shù)據(jù)單元,它們中的每個可以耦合到存儲器單元470中的數(shù)據(jù)tlb單元472。l2高速緩存單元476可以耦合到一個或多個其它級的高速緩存,并且最終耦合到主存儲器。
通過示例的方式,示例性寄存器重命名、無序發(fā)布/執(zhí)行核架構(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的執(zhí)行中可以被涉及;以及8)引退單元454和物理寄存器文件單元458可以執(zhí)行提交階段424。
核490可支持一個或多個指令集(例如,x86指令集(其中已添加了更新版本的一些擴展)、加利福尼亞州桑尼維爾的mips科技公司的mips指令集、加利福尼亞州桑尼維爾的arm控股公司的arm指令集(具有諸如neon的可選附加擴展)。
應(yīng)理解的是,核可以以多種方式支持多線程(執(zhí)行兩個或更多個并行的操作或線程的集合)。例如通過包括時間片多線程、同時多線程(其中,單個物理核提供針對物理核在同時進(jìn)行多線程的每個線程的邏輯核)或其組合,可以執(zhí)行多線程支持。此類組合例如可以包括時間片獲取和解碼以及之后的同時多線程,諸如在intel?超線程技術(shù)中。
雖然寄存器重命名可以在無序執(zhí)行的上下文中描述,但是應(yīng)理解的是,可以在有序架構(gòu)中使用寄存器重命名。雖然處理器的圖示實施例也可以包括單獨的指令和數(shù)據(jù)高速緩存單元434/474以及共享l2高速緩存單元476,但是其它實施例可以具有諸如例如1級(l1)內(nèi)部高速緩存的用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,或多個級的內(nèi)部高速緩存。在一些實施例中,系統(tǒng)可以包括內(nèi)部高速緩存和可在核和/或處理器外部的外部高速緩存的組合。在其它實施例中,所有高速緩存可在核和/或處理器的外部。
圖5a是根據(jù)本公開的實施例的處理器500的框圖。在一個實施例中,處理器500可以包括多核處理器。處理器500可以包括通信地耦合到一個或多個核502的系統(tǒng)代理510。此外,核502和系統(tǒng)代理510可以通信地耦合到一個或多個高速緩存506。核502、系統(tǒng)代理510和高速緩存506可以經(jīng)由一個或多個存儲器控制單元552通信地耦合。此外,核502、系統(tǒng)代理510和高速緩存506可以經(jīng)由存儲器控制單元552通信地耦合到圖形模塊560。
處理器500可以包括用于將核502、系統(tǒng)代理510和高速緩存506以及圖形模塊560互連的任何適合機制。在一個實施例中,處理器500可以包括基于環(huán)形的互連單元508以將核502、系統(tǒng)代理510和高速緩存506以及圖形模塊560互連。在其它實施例中,處理器500可以包括用于將此類單元互連的任何數(shù)量的公知技術(shù)。基于環(huán)形的互連單元508可以利用存儲器控制單元552以促進(jìn)互連。
處理器500可以包括存儲器層級,該層級包括核內(nèi)的一個或多個級的高速緩存、諸如高速緩存506的一個或多個共享高速緩存單元或耦合到集成存儲器控制器單元552的集合的外部存儲器(未示出)。高速緩存506可以包括任何適合的高速緩存。在一個實施例中,高速緩存506可以包括諸如2級(l2)、3級(l3)、4級(l4)或其它級的高速緩存的一個或多個中間級高速緩存、末級高速緩存(llc)和/或其組合。
在各種實施例中,一個或多個核502可以執(zhí)行多線程。系統(tǒng)代理510可以包括用于協(xié)調(diào)和操作核502的組件。系統(tǒng)代理單元510例如可以包括功率控制單元(pcu)。pcu可以是或者包括用于調(diào)節(jié)核502的功率狀態(tài)所需的邏輯和組件。系統(tǒng)代理510可以包括用于驅(qū)動一個或多個外部連接的顯示器或圖形模塊560的顯示引擎512。系統(tǒng)代理510可以包括用于針對圖形的通信總線的接口1214。在一個實施例中,接口1214可通過快速pci(pcie)來實現(xiàn)。在其它的實施例中,接口1214可通過快速pci圖形(peg)來實現(xiàn)。系統(tǒng)代理510可以包括直接媒體接口(dmi)516。dmi516可以在計算機系統(tǒng)的母板或其它部分上的不同橋之間提供鏈路。系統(tǒng)代理510可以包括用于提供pcie鏈路到計算系統(tǒng)的其它元件的pcie橋1218。pcie橋1218可以使用存儲器控制器1220和一致性邏輯1222來實現(xiàn)。
核502可以以任何適合的方式實現(xiàn)。核502可以在架構(gòu)和/或指令集方面是同構(gòu)或異構(gòu)的。在一個實施例中,一些核502可以是有序的,而其它核可以是無序的。在另一個實施例中,兩個或更多個核502可以執(zhí)行相同指令集,而其它核可以只執(zhí)行該指令集的子集或不同指令集。
處理器500可以包括諸如可以從加利福尼亞州圣克拉拉的intelcorporation獲得的core?i3、i5、i7、2duo和quad、xeon?、itanium?、xscale?或strongarm?處理器之類的通用處理器。處理器500可以從諸如armholdings,ltd、mips等的另一公司提供。處理器500可以是專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、協(xié)處理器、嵌入式處理器或諸如此類。處理器500可以在一個或多個芯片上實現(xiàn)。處理器500可以是使用諸如例如bicmos、coms或nmos的多個處理技術(shù)的任何技術(shù)的一個或多個基板的一部分,和/或可以在該一個或多個基板上實現(xiàn)。
在一個實施例中,高速緩存506的一個給定高速緩存可以由核502的多個核共享。在另一個實施例中,高速緩存506的一個給定高速緩存可以專用于核502之一。高速緩存506到核502的指派可以由高速緩存控制器或其它適合機制處理。通過實現(xiàn)給定高速緩存506的時間片,可以由兩個或更多個核502共享高速緩存506的一個給定高速緩存。
圖形模塊560可以實現(xiàn)集成圖形處理子系統(tǒng)。在一個實施例中,圖形模塊560可以包括圖形處理器。此外,圖形模塊560可以包括媒體引擎565。媒體引擎565可以提供媒體編碼和視頻解碼。
圖5b是根據(jù)本公開的實施例的核502的示例實現(xiàn)的框圖。核502可以包括通信地耦合到無序引擎580的前端570。核502可以通過高速緩存層級503通信地耦合到處理器500的其它部分。
前端570可以以任何適合的方式實現(xiàn),諸如,如上所述,部分或完全由前端201實現(xiàn)。在一個實施例中,前端570可以通過高速緩存層級503來與處理器500的其它部分進(jìn)行通信。在又一個實施例中,前端570可以從處理器500的部分獲取指令,并且在指令傳遞到無序執(zhí)行引擎580時準(zhǔn)備處理器流水線中以后要使用的指令。
無序執(zhí)行引擎580可以以任何適合的方式實現(xiàn),諸如,如上所述,部分或完全通過無序執(zhí)行引擎203來實現(xiàn)。無序執(zhí)行引擎580可以準(zhǔn)備從前端570接收到的指令以供執(zhí)行。無序執(zhí)行引擎580可以包括分配模塊1282。在一個實施例中,分配模塊1282可以分配處理器500的資源或諸如寄存器或緩沖器的其它資源以執(zhí)行給定指令。分配模塊1282可以在諸如存儲器調(diào)度器、快速調(diào)度器或浮點調(diào)度器之類的調(diào)度器中進(jìn)行分配。此類調(diào)度器可以在圖5b中由資源調(diào)度器584表示。分配模塊1282可以完全或部分地通過結(jié)合圖2描述的分配邏輯來實現(xiàn)。資源調(diào)度器584可以基于給定資源的源的準(zhǔn)備度和執(zhí)行指令需要的執(zhí)行資源的可用性,確定指令何時準(zhǔn)備就緒以執(zhí)行。資源調(diào)度器584可以例如通過如上所討論的調(diào)度器202、204、206來實現(xiàn)。資源調(diào)度器584可以對一個或多個資源調(diào)度指令的執(zhí)行。在一個實施例中,此類資源可以在核502的內(nèi)部,并且例如可以示出為資源586。在另一個實施例中,此類資源可以在核502的外部,并且例如可以由高速緩存層級503訪問。資源例如可以包括存儲器、高速緩存、寄存器文件或寄存器。核502內(nèi)部的資源可以由圖5b中的資源586表示。在必需時,可以例如通過高速緩存層級503來協(xié)調(diào)寫入資源586或從中讀取的值和處理器500的其它部分。在指令是指派的資源時,可將它們置于重新排序緩沖器588中。重新排序緩沖器588可以在指令執(zhí)行時跟蹤指令,并且可以基于處理器500的任何適合準(zhǔn)則來選擇性地將其執(zhí)行重新排序。在一個實施例中,重新排序緩沖器588可以識別可獨立執(zhí)行的指令或一系列指令。此類指令或一系列指令可以與其它此類指令并行執(zhí)行。核502中的并行執(zhí)行可以通過任何適合數(shù)量的單獨執(zhí)行塊或虛擬處理器執(zhí)行。在一個實施例中,給定核502內(nèi)的多個虛擬處理器可以訪問諸如存儲器、寄存器和高速緩存的共享資源。在其它實施例中,處理器500內(nèi)的多個處理實體可訪問共享資源。
高速緩存層級503可以以任何適合的方式實現(xiàn)。例如,高速緩存層級503可以包括諸如高速緩存572、574的一個或多個更低或中級高速緩存。在一個實施例中,高速緩存層級503可以包括通信地耦合到高速緩存572、574的llc595。在另一個實施例中,llc595可以在處理器500的所有處理實體可訪問的模塊590中實現(xiàn)。在另外的實施例中,模塊590可在來自intel公司的處理器的非核模塊中實現(xiàn)。模塊590可以包括執(zhí)行核502所必需的、但可能不在核502內(nèi)實現(xiàn)的處理器500的部分或子系統(tǒng)。除llc595外,模塊590例如還可以包括硬件接口、存儲器一致性協(xié)調(diào)器、處理器間互連、指令流水線或存儲器控制器。通過模塊590--并且更具體地說通過llc595,可以對可用于處理器500的ram599進(jìn)行訪問。此外,核502的其它實例可以類似地訪問模塊590。可以部分地通過模塊590來促進(jìn)核502的實例的協(xié)調(diào)。
圖6-圖8可以圖示出適合于包含處理器500的示例性系統(tǒng),而圖9可以圖示出可以包含一個或多個核502的示例性片上系統(tǒng)(soc)。在本領(lǐng)域已知的用于膝上型計算機、桌面型計算機、手持pc、個人數(shù)字助理、工程設(shè)計工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機、嵌入式處理器、數(shù)字信號處理器(dsp)、圖形設(shè)備、視頻游戲設(shè)備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備和各種其它電子設(shè)備的其它系統(tǒng)設(shè)計和實現(xiàn)也可以是適合的。一般而言,結(jié)合處理器和/或本文所公開的其它執(zhí)行邏輯的大量系統(tǒng)或電子設(shè)備通常可以是適合的。
圖6圖示了根據(jù)本公開的實施例的系統(tǒng)600的框圖。系統(tǒng)600可以包含一個或多個處理器610、615,它們可以耦合到圖形存儲器控制器集線器(gmch)620。在圖6中用虛線標(biāo)示附加處理器615的可選性質(zhì)。
每個處理器610、615可以是某版本的處理器500。然而,應(yīng)該指出,在處理器610、615中可能不存在集成圖形邏輯和集成存儲器控制單元。圖6圖示了gmch620可以耦合到存儲器640,存儲器640例如可以是動態(tài)隨機存取存儲器(dram)。對于至少一個實施例,dram可以與非易失性高速緩存相關(guān)聯(lián)。
gmch620可以是芯片集,或者芯片集的一部分。gmch620可以與處理器610、615通信,并控制處理器610、615與存儲器640之間的交互。gmch620也可以充當(dāng)處理器610、615與系統(tǒng)600的其它元件之間的加速總線接口。在一個實施例中,gmch620經(jīng)由多站總線諸如前側(cè)總線(fsb)695來與處理器610、615通信。
而且,gmch620可以耦合到顯示器645(諸如平板顯示器)。在一個實施例中,gmch620可以包含集成圖形加速器。gmch620可以進(jìn)一步耦合到輸入/輸出(i/o)控制器集線器(ich)650,其可用于將各種外圍設(shè)備耦合到系統(tǒng)600。外部圖形設(shè)備660可以包含連同另一外圍設(shè)備670耦合到ich650的分立圖形設(shè)備。
在其它實施例中,在系統(tǒng)600中也可存在附加的或不同的處理器。例如,附加處理器610、615可以包含可與處理器610相同的附加處理器、可與處理器610異構(gòu)或不對稱的附加處理器、加速器(諸如例如圖形加速器或數(shù)字信號處理(dsp)單元)、現(xiàn)場可編程門陣列或任何其它處理器。在品質(zhì)度量譜(包含架構(gòu)、微架構(gòu)、熱、功耗特性等)方面,在物理資源610、615之間可能存在各種差異。這些差異在處理器610、615之間可有效地將它們自己標(biāo)明為不對稱并且異構(gòu)。對于至少一個實施例,各種處理器610、615可以駐留在同一管芯封裝中。
圖7圖示了根據(jù)本公開的實施例的第二系統(tǒng)700的框圖。如圖7中所示,多處理器系統(tǒng)700可以包含點對點互連系統(tǒng),并且可以包括經(jīng)由點對點互連750耦合的第一處理器770和第二處理器780。處理器770和780中的每個可以如一個或多個處理器610、615一樣,是某一版本的處理器500。
雖然圖7可以圖示出兩個處理器770、780,但要理解到,本公開的范圍不限于此。在其它實施例中,在給定處理器中可以存在一個或多個附加處理器。
分別示出包含集成存儲器控制器單元772和782的處理器770和780。處理器770還可以包含點對點(p-p)接口776和778作為其總線控制器單元的一部分;類似地,第二處理器780可以包含p-p接口786和788。處理器770、780可以經(jīng)由點對點(p-p)接口750使用p-p接口電路778、788交換信息。如圖7中所示,imc772和782可以將處理器耦合到相應(yīng)存儲器,即存儲器732和存儲器734,它們在一個實施例中可以是本地附連到相應(yīng)處理器的主存儲器的部分。
處理器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)總線,或諸如快速pci總線的總線,或另一個第三代i/o互連總線,盡管本公開的范圍不限于此。
如圖7中所示,各種i/o設(shè)備714可以耦合到第一總線716,連同將第一總線716耦合到第二總線720的總線橋718。在一個實施例中,第二總線720可以是低管腳計數(shù)(lpc)總線。在一個實施例中,各種設(shè)備可以耦合到第二總線720,例如包含鍵盤和/或鼠標(biāo)722、通信設(shè)備727和諸如盤驅(qū)動器或可以包含指令/代碼和數(shù)據(jù)730的其它大容量存儲設(shè)備之類的存儲單元728。進(jìn)一步說,音頻i/o724可以耦合到第二總線720。要指出,其它架構(gòu)是可能的。例如,代替圖7的點對點架構(gòu),系統(tǒng)可以實現(xiàn)多站總線或其它此類架構(gòu)。
圖8圖示了根據(jù)本公開的實施例的第三系統(tǒng)800的框圖。圖7和圖8中的相似的元件帶有相似的參考標(biāo)記,并且已經(jīng)從圖8中省略了圖7的某些方面,以避免使圖8的其它方面模糊不清。
圖8圖示了處理器870、880可以分別包含集成存儲器和i/o控制邏輯(“cl”)872和882。對于至少一個實施例,cl872、882可以包含集成存儲器控制器單元,諸如上面結(jié)合圖5和圖7所描述的。此外,cl872、882也可以包含i/o控制邏輯。圖8圖示了不僅存儲器832、834可以耦合到cl872、882,而且i/o設(shè)備814也可以耦合到控制邏輯872、882。傳統(tǒng)i/o設(shè)備815可以耦合到芯片集890。
圖9圖示了根據(jù)本公開的實施例的soc900的框圖。圖5中的相似元件帶有相似參考標(biāo)記。而且,虛線框可以表示更高級soc上的可選特征?;ミB單元902可以耦合到:應(yīng)用處理器910,其可以包含一個或多個核902a-n的集合以及共享高速緩存單元906;系統(tǒng)代理單元910;總線控制器單元916;集成存儲器控制器單元914;媒體處理器920集合或一個或多個媒體處理器920,其可以包含集成圖形邏輯908、用于提供靜止和/或視頻相機功能性的圖像處理器924、用于提供硬件音頻加速的音頻處理器926以及用于提供視頻編碼/解碼加速的視頻處理器928;sram單元930;dma單元932;以及用于耦合到一個或多個外部顯示器的顯示單元940。
圖10圖示了按照本公開的實施例的可以執(zhí)行至少一個指令的包含中央處理單元(cpu)和圖形處理單元(gpu)的處理器。在一個實施例中,執(zhí)行根據(jù)至少一個實施例的操作的指令可由cpu執(zhí)行。在另一個實施例中,指令可由gpu執(zhí)行。在又另一個實施例中,指令可以通過由gpu和cpu執(zhí)行的操作組合執(zhí)行。例如,在一個實施例中,可以接收和解碼根據(jù)一個實施例的指令以用于在cpu上執(zhí)行。然而,解碼指令內(nèi)的一個或多個操作可由cpu執(zhí)行,并且結(jié)果返回到gpu用于指令的最后引退。相反,在一些實施例中,cpu可充當(dāng)主處理器,并且gpu可充當(dāng)協(xié)處理器。
在一些實施例中,受益于高度并行吞吐量處理器的指令可由gpu執(zhí)行,而受益于處理器(其受益于深流水線架構(gòu))性能的指令可由cpu執(zhí)行。例如,圖形、科學(xué)應(yīng)用、金融應(yīng)用和其它并行工作負(fù)荷可受益于gpu的性能,并相應(yīng)地執(zhí)行,而更多順序應(yīng)用(諸如操作系統(tǒng)內(nèi)核或應(yīng)用代碼)可能更適合于cpu。
在圖10中,處理器1000包含cpu1005、gpu1010、圖像處理器1015、視頻處理器1020、usb控制器1025、uart控制器1030、spi/sdio控制器1035、顯示設(shè)備1040、存儲器接口控制器1045、mipi控制器1050、閃存控制器1055、雙數(shù)據(jù)速率(ddr)控制器1060、安全性引擎1065和i2s/i2c控制器1070。其它邏輯和電路可以包含在圖10的處理器中,包含更多cpu或gpu以及其它外圍接口控制器。
至少一個實施例的一個或多個方面可以由存儲在表示處理器內(nèi)的各種邏輯的機器可讀介質(zhì)上的代表性數(shù)據(jù)來實現(xiàn),其當(dāng)由機器讀取時使機器制造執(zhí)行本文描述的技術(shù)的邏輯。稱為“ip核”的此類表示可以存儲在有形機器可讀介質(zhì)(“帶”)上,并供應(yīng)給各種消費者或制造設(shè)施,以加載到實際上制造邏輯或處理器的制造機器中。例如,諸如由arm控股公司開發(fā)的cortex?族處理器和中國科學(xué)院計算技術(shù)研究所(ict)開發(fā)的龍芯ip核的ip核可許可或銷售到各種客戶或被許可人,如texasinstruments、qualcomm、apple或samsung,并且在由這些客戶或被許可人生產(chǎn)的處理器中實現(xiàn)。
圖11圖示了根據(jù)本公開的實施例圖示開發(fā)ip核的框圖。存儲裝置1130可以包含模擬軟件1120和/或硬件或軟件模型1110。在一個實施例中,表示ip核設(shè)計的數(shù)據(jù)可以經(jīng)由存儲器1140(例如硬盤)、有線連接(例如因特網(wǎng))1150或無線連接1160提供給存儲裝置1130。由模擬工具和模型生成的ip核信息然后可以被傳送到制造設(shè)施,在此它可由第三方制造以執(zhí)行根據(jù)至少一個實施例的至少一個指令。
在一些實施例中,一個或多個指令可以對應(yīng)于第一類型或架構(gòu)(例如x86),并且在不同類型或架構(gòu)(例如arm)的處理器上轉(zhuǎn)化或仿真。根據(jù)一個實施例,指令因此可以在任何處理器或處理器類型(包含arm、x86、mips、gpu)或其它處理器類型或架構(gòu)上執(zhí)行。
圖12圖示了根據(jù)本公開的實施例的由不同類型的處理器可如何仿真第一類型的指令。在圖12中,程序1205包含可以與根據(jù)一個實施例的指令執(zhí)行相同或基本上相同功能的一些指令。然而,程序1205的指令可以是與處理器1215不同或不兼容的類型和/或格式,意味著程序1205中的類型的指令可能不能夠由處理器1215本機地執(zhí)行。然而,在仿真邏輯1210的幫助下,程序1205的指令可被轉(zhuǎn)化成可由處理器1215本機地執(zhí)行的指令。在一個實施例中,仿真邏輯可體現(xiàn)在硬件中。在另一個實施例中,仿真邏輯可體現(xiàn)在有形、機器可讀介質(zhì)中,其包含將程序1205中的類型的指令轉(zhuǎn)化成由處理器1215本機可執(zhí)行的類型的軟件。在其它實施例中,仿真邏輯可以是固定功能或可編程硬件以及存儲在有形、機器可讀介質(zhì)上的程序的組合。在一個實施例中,處理器包含仿真邏輯,而在其它實施例中,仿真邏輯存在于處理器外部,并且可由第三方提供。在一個實施例中,處理器可通過執(zhí)行在處理器中包含的或與處理器相關(guān)聯(lián)的微代碼或固件來加載體現(xiàn)在包含軟件的有形、機器可讀介質(zhì)中的仿真邏輯。
圖13圖示了按照本公開的實施例的對比使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所圖示出的實施例中,指令轉(zhuǎn)換器可以是軟件指令轉(zhuǎn)換器,盡管指令轉(zhuǎn)換器可以用軟件、固件、硬件或它們的各種組合實現(xiàn)。圖13示出了可以使用x86編譯器1304編譯高級語言1302的程序以生成x86二進(jìn)制代碼1306,其可由具有至少一個x86指令集核1316的處理器本機地執(zhí)行。具有至少一個x86指令集核1316的處理器表示任何處理器:所述任何處理器可以通過兼容地執(zhí)行或以其他方式處理(1)intelx86指令集核的指令集的實質(zhì)部分或(2)定向為在具有至少一個x86指令集核的intel處理器上運行的應(yīng)用或其它軟件的對象代碼版本以便實現(xiàn)與具有至少一個x86指令集核的intel處理器基本上相同的結(jié)果,來執(zhí)行與具有至少一個x86指令集核的intel處理器基本上相同的功能。x86編譯器1304表示可操作以生成x86二進(jìn)制代碼1306(例如對象代碼)的編譯器,二進(jìn)制代碼1306可以在具有或沒有附加聯(lián)接處理的情況下在具有至少一個x86指令集核1316的處理器上執(zhí)行。類似地,圖13示出以高級語言1302的程序可以使用替代指令集編譯器1308編譯以生成替代指令集二進(jìn)制代碼1310,其可以由沒有至少一個x86指令集核1314的處理器(例如,具有執(zhí)行加利福尼亞州桑尼維爾的mips科技公司的mips指令集,和/或執(zhí)行加利福尼亞州桑尼維爾的arm控股公司的arm指令集的核的處理器)本機地執(zhí)行。指令轉(zhuǎn)換器1312可以用于將x86二進(jìn)制代碼1306轉(zhuǎn)換成可由沒有x86指令集核1314的處理器本機地執(zhí)行代碼。這個轉(zhuǎn)換的代碼不太可能與替代指令集二進(jìn)制代碼1310相同;然而,轉(zhuǎn)換的代碼將完成通用操作,并且由來自替代指令集的指令組成。從而,指令轉(zhuǎn)換器1312表示通過仿真、模擬或任何其它過程而允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86二進(jìn)制代碼1306的軟件、固件、硬件或其組合。
圖14是根據(jù)本公開的實施例的處理器的指令集架構(gòu)1400的框圖。指令集架構(gòu)1400可以包含任何適合數(shù)量或種類的組件。
例如,指令集架構(gòu)1400可以包含處理實體,諸如一個或多個核1406、1407和圖形處理單元1415。核1406、1407可以通過任何適合的機制(諸如通過總線或高速緩存)通信地耦合到其余指令集架構(gòu)1400。在一個實施例中,核1406、1407可以通過l2高速緩存控制1408通信地耦合,l2高速緩存控制1408可以包含總線接口單元1409和l2高速緩存1410。核1406、1407和圖形處理單元1415可以通過互連1410彼此通信地耦合,并耦合到指令集架構(gòu)1400的剩余部分。在一個實施例中,圖形處理單元1415可以使用視頻代碼1420,其定義其中具體視頻信號將被編碼和解碼以供輸出的方式。
指令集架構(gòu)1400還可以包含任何數(shù)量或種類的接口、控制器或用于與電子設(shè)備或系統(tǒng)的其它部分對接或通信的其它機制。此類機制可以促進(jìn)與例如外設(shè)、通信設(shè)備、其它處理器或存儲器的交互。在圖14的示例中,指令集架構(gòu)1400可以包含液晶顯示器(lcd)視頻接口1425、訂戶接口模塊(sim)接口1430、引導(dǎo)rom接口1435、sdram控制器1440、閃存控制器1445和串行外設(shè)接口(spi)主單元1450。lcd視頻接口1425例如可從gpu1415并且例如通過移動工業(yè)處理器接口(mipi)1490或高清多媒體接口(hdmi)1495向顯示器提供視頻信號的輸出。此類顯示器例如可以包含lcd。sim接口1430可以提供對或從sim卡或設(shè)備的訪問。sdram控制器1440可以提供對或從諸如sdram芯片或模塊的存儲器的訪問。閃存控制器1445可以提供對或從諸如閃存存儲器或ram的其它實例的存儲器的訪問。spi主單元1450可以提供對或從諸如藍(lán)牙模塊1470、高速3g調(diào)制解調(diào)器1475、全球定位系統(tǒng)模塊1480或?qū)崿F(xiàn)諸如802.11的通信標(biāo)準(zhǔn)的無線模塊1485的通信模塊的訪問。
圖15是根據(jù)本公開的實施例的處理器的指令集架構(gòu)1500的更詳細(xì)框圖。指令架構(gòu)1500可以實現(xiàn)指令集架構(gòu)1400的一個或多個方面。而且,指令集架構(gòu)1500可以圖示出用于執(zhí)行處理器內(nèi)指令的模塊和機制。
指令架構(gòu)1500可以包含通信地耦合到一個或多個執(zhí)行實體1565的存儲器系統(tǒng)1540。而且,指令架構(gòu)1500可以包含通信地耦合到執(zhí)行實體1565和存儲器系統(tǒng)1540的高速緩存和總線接口單元,諸如單元1510。在一個實施例中,將指令加載到執(zhí)行實體1564可由一個或多個執(zhí)行階段來執(zhí)行。此類階段例如可以包含指令預(yù)獲取階段1530、雙指令解碼階段1550、寄存器重命名階段155、發(fā)布階段1560和寫回階段1570。
在一個實施例中,存儲器系統(tǒng)1540可以包括執(zhí)行的指令指針1580。執(zhí)行的指令指針1580可以存儲識別一批指令內(nèi)的最舊的、未分派的指令的值。最舊的指令可對應(yīng)于最低程序命令(programorder)(po)值。po可以包括唯一編號的指令。這樣的指令可以是由多條線段(strand)表示的線程內(nèi)的單個指令。排序指令中可以使用po,以確保代碼的正確執(zhí)行語義??梢酝ㄟ^諸如評估遞增到指令中編碼的po而不是絕對值的機制來重建po。這種重建的po可以被稱為“rpo”。雖然本文可以參考po,但是這樣的po可以與rpo互換使用。線段可以包括依賴于彼此的數(shù)據(jù)的指令序列。該線段可以由二進(jìn)制翻譯器在編譯時刻來布置。執(zhí)行線段的硬件可以根據(jù)各種指令的po而按順序執(zhí)行給定線段的指令。線程可以包括多個線段,使得不同線段的指令可以彼此依賴。給定線段的po可以是線段中最舊的指令的po,其尚未從發(fā)布階段被分派到執(zhí)行。因此,給定多條線段的線程,包括由po排序的指令的每個線段,執(zhí)行的指令指針1580可以存儲線程中最舊的--由最小編號所圖示的--po。
在另一個實施例中,存儲器系統(tǒng)1540可以包含引退指針1582。引退指針1582可以存儲識別最后引退的指令的po的值。引退指針1582例如可由引退單元454設(shè)置。如果尚沒有指令引退,則引退指針1582可以包含空值。
執(zhí)行實體1565可以包含通過其處理器可以執(zhí)行指令的任何適合數(shù)量和種類的機制。在圖15的示例中,執(zhí)行實體1565可以包含alu/乘法單元(mul)1566、alu1567和浮點單元(fpu)1568。在一個實施例中,此類實體可以利用在給定地址1569內(nèi)包含的信息。執(zhí)行實體1565與階段1530、1550、1555、1560、1570組合可共同形成執(zhí)行單元。
單元1510可以用任何適合的方式實現(xiàn)。在一個實施例中,單元1510可以執(zhí)行高速緩存控制。在此類實施例中,單元1510從而可以包含高速緩存1525。在另外的實施例中,高速緩存1525可以實現(xiàn)為具有任何適合大?。ㄖT如0、128k、256k、512k、1m或2m字節(jié)的存儲器)的l2統(tǒng)一高速緩存。在另一個另外的實施例中,高速緩存1525可以實現(xiàn)在糾錯代碼存儲器中。在另一個實施例中,單元1510可以執(zhí)行到處理器或電子設(shè)備的其它部分的總線對接。在此類實施例中,單元1510從而可以包含用于通過互連、處理器內(nèi)總線、處理器間總線或其它通信總線、端口或線路進(jìn)行通信的總線接口單元1520??偩€接口單元1520可以提供對接以便例如執(zhí)行生成存儲器和輸入/輸出地址,以便在執(zhí)行實體1565與指令架構(gòu)1500外部的系統(tǒng)部分之間轉(zhuǎn)送數(shù)據(jù)。
為了進(jìn)一步促進(jìn)其功能,總線接口單元1520可以包含用于生成中斷和到處理器或電子設(shè)備的其它部分的其它通信的中斷控制和分發(fā)單元1511。在一個實施例中,總線接口單元1520可以包含處置用于多個處理核的高速緩存訪問和一致性的探聽控制單元1512。在另外的實施例中,為了提供此類功能性,探聽控制單元1512可以包含處置不同高速緩存之間信息交換的高速緩存到高速緩存?zhèn)魉蛦卧?。在另一個另外的實施例中,探聽控制單元1512可以包含一個或多個探聽過濾器1514,其監(jiān)視其它高速緩存(未示出)的一致性,使得高速緩存控制器(諸如單元1510)不用必須直接執(zhí)行此類監(jiān)視。單元1510可以包含用于同步指令架構(gòu)1500的動作的任何適合數(shù)量的定時器1515。此外,單元1510可以包含ac端口1516。
存儲器系統(tǒng)1540可以包含用于存儲指令架構(gòu)1500的處理需要的信息的任何適合的數(shù)量和種類的機制。在一個實施例中,存儲器系統(tǒng)1504可以包含用于存儲信息的加載存儲單元1530,諸如寫入到存儲器或寄存器或從存儲器或寄存器讀回的緩沖器。在另一個實施例中,存儲器系統(tǒng)1504可以包含轉(zhuǎn)化后備緩沖器(tlb)1545,其提供了物理地址與虛擬地址之間的地址值的查找。在又另一個實施例中,總線接口單元1520可以包含用于促進(jìn)訪問虛擬存儲器的存儲器管理單元(mmu)1544。在又另一個實施例中,存儲器系統(tǒng)1504可以包含預(yù)獲取器1543,用于在指令實際需要被執(zhí)行之前從存儲器請求此類指令以便減少等待時間。
執(zhí)行指令的指令架構(gòu)1500的操作可以通過不同階段來執(zhí)行。例如,使用單元1510指令預(yù)獲取階段1530可以通過預(yù)獲取器1543訪問指令。檢索的指令可以存儲在指令高速緩存1532中。預(yù)獲取階段1530可以實現(xiàn)用于快速環(huán)路模式的選項1531,其中執(zhí)行形成環(huán)路的一系列指令,環(huán)路是足夠小的以在給定高速緩存內(nèi)適合。在一個實施例中,可以執(zhí)行此類執(zhí)行無需從例如指令高速緩存1532訪問附加指令。預(yù)獲取什么指令的確定例如可以由分支預(yù)測單元1535做出,分支預(yù)測單元1535可以訪問全局歷史1536中的執(zhí)行指示、目標(biāo)地址1537的指示或確定接下來將執(zhí)行代碼的哪個分支1557的返回棧1538的內(nèi)容。此類分支可以有可能作為結(jié)果而被預(yù)獲取。分支1557可以通過如下所述的其它操作階段產(chǎn)生。指令預(yù)獲取階段1530可以提供指令以及有關(guān)將來指令的任何預(yù)測到雙指令解碼階段。
雙指令解碼階段1550可以將接收的指令轉(zhuǎn)化成可以執(zhí)行的基于微代碼的指令。雙指令解碼階段1550每時鐘周期可以同時解碼兩個指令。而且,雙指令解碼階段1550可以將其結(jié)果傳到寄存器重命名階段1555。此外,雙指令解碼階段1550可以從其解碼和微代碼的最終執(zhí)行中確定任何結(jié)果分支。此類結(jié)果可以輸入到分支1557中。
寄存器重命名階段1555可以將對虛擬寄存器或其它資源的參考轉(zhuǎn)化成對物理寄存器或資源的參考。寄存器重命名階段1555可以包含寄存器池1556中此類映射的指示。寄存器重命名階段1555可以更改所接收的指令,并將結(jié)果發(fā)送到發(fā)布階段1560。
發(fā)布階段1560可以向執(zhí)行實體1565發(fā)布或分派命令。此類發(fā)布可以按無序方式執(zhí)行。在一個實施例中,多個指令可以在執(zhí)行之前保持在發(fā)布階段1560。發(fā)布階段1560可以包含用于保持此類多個命令的指令隊列1561??梢曰谌魏慰山邮艿臏?zhǔn)則,諸如用于執(zhí)行給定指令的資源的可用性或適用性,由發(fā)布階段1560向特定處理實體1565發(fā)布指令。在一個實施例中,發(fā)布階段1560可以重新排序指令隊列1561內(nèi)的指令,使得所接收的第一指令可能不是所執(zhí)行的第一指令?;谥噶铌犃?561的排序,可以將附加分支信息提供給分支1557。發(fā)布階段1560可以將指令傳到執(zhí)行實體1565以用于執(zhí)行。
在執(zhí)行時,寫回階段1570可以將數(shù)據(jù)寫入到寄存器、隊列或指令集架構(gòu)1500的其它結(jié)構(gòu)中,以傳遞給定命令的完成。取決于在發(fā)布階段1560中布置的指令順序,寫回階段1570的操作可以使得附加指令能夠被執(zhí)行。指令集架構(gòu)1500的性能可以由追蹤單元1575監(jiān)視或調(diào)試。
圖16是根據(jù)本公開的實施例的用于處理器的指令集架構(gòu)的執(zhí)行流水線1600的框圖。執(zhí)行流水線1600例如可以圖示出圖15的指令架構(gòu)1500的操作。
執(zhí)行流水線1600可以包含步驟或操作的任何適合的組合。在1605中,可以進(jìn)行接下來要執(zhí)行的分支的預(yù)測。在一個實施例中,此類預(yù)測可以基于先前指令的執(zhí)行及其結(jié)果。在1610中,對應(yīng)于預(yù)測的執(zhí)行分支的指令可被加載到指令高速緩存中。在1615中,可以獲取指令高速緩存中的一個或多個此類指令以供執(zhí)行。在1620中,可以將已經(jīng)獲取的指令解碼成微代碼或更特定的機器語言。在一個實施例中,可同時解碼多個指令。在1625中,可以重新指派解碼指令內(nèi)對寄存器或其它資源的參考。例如,可以參考對應(yīng)物理寄存器替換對虛擬寄存器的參考。在1630中,指令可以被分派給隊列以供執(zhí)行。在1640中,可以執(zhí)行指令??梢园慈魏芜m合的方式執(zhí)行此類執(zhí)行。在1650中,可以向適合的執(zhí)行實體發(fā)布指令。執(zhí)行指令的方式可以取決于執(zhí)行指令的特定實體。例如,在1655中,alu可以執(zhí)行算術(shù)函數(shù)。alu可以對于其操作利用單個時鐘周期以及兩個移位器。在一個實施例中,可以采用兩個alu,并且從而在1655中可以執(zhí)行兩個指令。在1660中,可以進(jìn)行結(jié)果分支的確定。程序計數(shù)器可用于指明分支將被做到的目的地。1660可以在單個時鐘周期內(nèi)執(zhí)行。在1665中,浮點算術(shù)可由一個或多個fpu執(zhí)行。浮點操作可能需要執(zhí)行多個時鐘周期,諸如2個到10個周期。在1670中,可以執(zhí)行乘法和除法操作。此類操作可在4個時鐘周期中執(zhí)行。在1675中,可以執(zhí)行對寄存器或流水線1600其它部分的加載和存儲操作。操作可以包含加載和存儲地址。此類操作可在4個時鐘周期中執(zhí)行。在1680中,寫回操作可以根據(jù)需要由1655-1675的結(jié)果操作執(zhí)行。
圖17是根據(jù)本公開的實施例的用于利用處理器1710的電子設(shè)備1700的框圖。電子設(shè)備1700例如可以包括筆記本、超級本、計算機、塔式服務(wù)器、機架服務(wù)器、刀片服務(wù)器、膝上型計算機、桌上型計算機、平板電腦、移動設(shè)備、電話、嵌入式計算機或任何其它適合的電子設(shè)備。
電子設(shè)備1700可以包括通信地耦合到任何適合數(shù)量或種類的組件、外設(shè)、模塊或設(shè)備的處理器1710。此類耦合可以通過任何適合種類的總線或接口來實現(xiàn),如i2c總線、系統(tǒng)管理總線(smbus)、低引腳計數(shù)(lpc)總線、spi、高清晰音頻(hda)總線、串行高級技術(shù)附件(sata)總線、usb總線(版本1、2、3)或通用異步接收器/傳送器(uart)總線。
此類組件例如可以包括顯示器1724、觸摸屏1725、觸摸板1730、近場通信(nfc)單元1745、傳感器集線器1740、熱傳感器1746、快速芯片集(ec)1735、可信平臺模塊(tpm)1738、blos/固件/閃存存儲器1722、dsp1760、諸如固態(tài)磁盤(ssd)或硬盤驅(qū)動器(hdd)的驅(qū)動器1720、無線局域網(wǎng)(wlan)單元1750、藍(lán)牙單元1752、無線廣域網(wǎng)(wwan)單元1756、全球定位系統(tǒng)(gps)、諸如usb3.0攝像機的攝像機1754、或例如以lpddr3標(biāo)準(zhǔn)實現(xiàn)的低功率雙倍數(shù)據(jù)率(lpddr)存儲器單元1715。這些組件每個可以以任何適合的方式實現(xiàn)。
此外,在各種實施例中,其它組件可以通過上面討論的組件通信地耦合到處理器1710。例如,加速計1741、環(huán)境光傳感器(als)1742、羅盤1743和陀螺儀1744可以通信地耦合到傳感器集線器1740。熱傳感器1739、風(fēng)扇1737、鍵盤1746和觸摸板1730可以通信地耦合到ec1735。揚聲器1763、耳機1764和麥克風(fēng)1765可以通信地耦合到音頻單元1764,音頻單元繼而可通信地耦合到dsp1760。音頻單元1764例如可以包括音頻編解碼器和d類放大器。sim卡1757可以通信地耦合到wwan單元1756。諸如wlan單元1750和藍(lán)牙單元1752以及wwan單元1756的組件可以以下一代形狀因素(ngff)實現(xiàn)。
圖18是根據(jù)本公開的實施例的具有用于移位和乘法器(ssm)的硬件的系統(tǒng)1800的一部分的框圖。在一個實施例中,可以用查找表來進(jìn)行此類ssm的操作。在另外的實施例中,此類查找表可以包括量化的最近鄰查找表。系統(tǒng)1800可以執(zhí)行將兩個或多個數(shù)字一起相乘的指令。在一個實施例中,可以通過使用ssm模塊1816來執(zhí)行指令。在另一個實施例中,用于乘法的指令可以具體指明由諸如ssm模塊1816之類的ssm的執(zhí)行。在又另一個實施例中,可以由ssm模塊1816執(zhí)行用于乘法的指令而不由指令專門指明(與其他乘法邏輯、電路或執(zhí)行單元相反)。在仍另一個實施例中,用于乘法的指令可以由指明由ssm模塊1816執(zhí)行的指令進(jìn)行解碼、解釋或替換。
ssm模塊1816可以在系統(tǒng)1800的任何合適的部分中實現(xiàn)。此外,系統(tǒng)1800可以包括ssm模塊1816的任何合適的數(shù)量和種類的實現(xiàn)。在一個實施例中,ssm模塊1816可以在處理器1802中實現(xiàn)。在另一個實施例中,ssm模塊1816可以在核1812中實現(xiàn)。在另一個另外實施例中,ssm模塊1816可以在執(zhí)行單元1814中實現(xiàn)。ssm模塊1816可以以任何合適的方式來實現(xiàn)。ssm模塊1816可以由邏輯、模擬電路或數(shù)字電路的任何合適的組合來實現(xiàn),以執(zhí)行本文所描述的功能性。ssm模塊1816可以被實現(xiàn)為模塊。下面將結(jié)合圖19進(jìn)一步詳細(xì)討論ssm模塊1816的實現(xiàn)的示例實施例。
處理器1802可以部分地通過圖1-圖17的元件的任何合適的組合來實現(xiàn)。處理器1802可以包括前端1806,其可以使用解碼器1808從指令流1804接收和解碼指令。解碼的指令可以被解碼為一個或多個uop??梢酝ㄟ^分派器1810分派或調(diào)度uop以供執(zhí)行,并由分配器1811將其分配給特定核1814或執(zhí)行單元1814。在執(zhí)行之后,指令可以由引退單元1820引退。盡管本文描述了各種操作由處理器1802的特定組件執(zhí)行,但是可以由處理器1802的任何合適的部分來執(zhí)行該功能性。
用于使用ssm模塊1816的乘法指令可以由任何合適的源引起。乘法指令可以由處理器1802從指令流1804接收。此外,指令流1804中的指令雖然沒有被具體標(biāo)識為乘法指令,但可引發(fā)或引起乘法指令的執(zhí)行。在這種情況下,實際的乘法指令可以由例如解碼器1808從在處理器1802處接收到的指令中生成。此外,解碼器1808可以從否則沒有具體指明由ssm執(zhí)行的乘法指令中生成指明由ssm執(zhí)行的乘法指令。此外,解碼器1808可以將指明由ssm執(zhí)行的指令解碼為用于將因子格式化并執(zhí)行乘法運算的一系列解碼指令。可以使用任何合適的指令形式來指明由ssm的執(zhí)行。例如,標(biāo)示為“mult-ssm”的指令可以是正常乘法指令的變形,其中,“mult-ssm”指令指明要由ssm執(zhí)行的執(zhí)行。在另一示例中,諸如“mult”的正常乘法指令可以包括其將被ssm執(zhí)行的參數(shù)、掩碼、標(biāo)志或其他指明。在又另一示例中,解碼器1808可以基于可以由例如ssm模塊1816執(zhí)行乘法的識別,將正常乘法解碼為用于“mult-ssm”(或等效物)的指令。在仍又另一示例中,解碼器1808可以將“mult-ssm”指令解碼為格式化指令和由ssm執(zhí)行乘法的指令。在一個實施例中,這樣的格式化指令可以包括將乘法因子縮放到用于ssm模塊1816以進(jìn)行操作的適當(dāng)范圍。在仍另一個實施例中,這樣的格式化指令可以包括應(yīng)用signoid函數(shù)來近似一個范圍內(nèi)的期望值??梢陨蓛蓚€或多個“mult-ssm”指令以將三個或更多個因子一起相乘。
假設(shè)由ssm模塊1816執(zhí)行的乘法指令包括乘數(shù)“x”和被乘數(shù)“w”這兩個因子,則ssm模塊1816的操作可以被指明為“x*w”。x可以包括實數(shù)。在各種實施例中,w的值可以被限制到指明的范圍。在一個實施例中,w可以被定義為在范圍[0…1]中的數(shù)字的集合。在另一個實施例中,w可以被定義為在范圍[0…k]中的數(shù)字的集合。在這樣的實施例中,ssm模塊1816可以通過首先將x乘以k來執(zhí)行乘法運算,并且然后通過相對于k將其歸一化而將w處置為范圍[0…1]內(nèi)的數(shù)字。因此,ssm模塊1816可以將x乘以x*k的結(jié)果乘積,以獲得期望的結(jié)果。在各種其他實施例中,w可以從應(yīng)用signoid函數(shù)而來,以近似w范圍內(nèi)的期望值。
在一個實施例中,可以僅使用移位操作和加法來實現(xiàn)ssm模塊1816的操作,以便當(dāng)w在[0…1]范圍內(nèi)時將x乘以w。在另外的實施例中,這種移位操作可以僅包括右移操作。在又另一個另外的實施例中,這樣的加法可以包括負(fù)數(shù),相當(dāng)于減法。當(dāng)w在[0…k]范圍內(nèi)時為了實現(xiàn)x乘以w的乘法,ssm模塊1816可以首先相乘x*k,并且然后將結(jié)果乘以現(xiàn)在在范圍[0…1]內(nèi)的歸一化的w值。因此,這個最后一步,其中x*k的結(jié)果乘以范圍[0…1]的w,可以僅使用移位操作和加法來執(zhí)行。如果k是2的整數(shù)對數(shù),則可以用大小log2k的移位來執(zhí)行與k的乘法和歸一化。
在一個實施例中,w可以被定義為[-b…b]范圍中的數(shù)字的集合,其中b等于2。在另外的實施例中,w可以被定義為[-b*k…b*k]范圍中的數(shù)字的集合。在這樣的實施例中,ssm模塊1816可以通過首先將x乘以k、并且然后將w處置為范圍[-b…b]內(nèi)的數(shù)字來執(zhí)行乘法運算。因此,ssm模塊1816可以將w乘以x*k的結(jié)果乘積,以獲得期望的結(jié)果。
在一個實施例中,可以僅使用移位操作和加法來實現(xiàn)ssm模塊1816的操作,以便當(dāng)w在[-b…b]范圍內(nèi)時將x乘以w。在另外的實施例中,這種移位操作可以僅包括右移操作。在又另一個另外的實施例中,這樣的加法可以包括負(fù)數(shù),相當(dāng)于減法。當(dāng)w在[-b*k…b*k]范圍內(nèi)時,為了實現(xiàn)x*w的乘法,ssm模塊1816可以首先相乘x*k,并且然后將結(jié)果乘以現(xiàn)在在[-b…b]范圍內(nèi)的歸一化的w值。因此,這個最后一步,其中x*k的結(jié)果乘以范圍[-b…b]的w,可以僅使用移位操作和加法來執(zhí)行。如果k是2的整數(shù)對數(shù),則可以用大小log2k的移位來執(zhí)行與k的乘法和歸一化。
在各種實施例中,可以通過產(chǎn)生加在一起的部分乘積來執(zhí)行x和w相乘??梢酝ㄟ^將x向右移動指定次數(shù)來產(chǎn)生每個部分乘積,其中指定數(shù)可以在部分乘積之間不同。此外,每個部分和可以通過保持部分和為正或使其為負(fù)而產(chǎn)生。ssm模塊1816的精度可以取決于所產(chǎn)生的部分和的數(shù)量。在一個實施例中,可以通過查找表來提供部分乘積的數(shù)量、部分乘積將被移位的次數(shù)以及部分乘積是正還是負(fù)的。查找表可以包括在ssm模塊1816中或在ssm模塊1816可訪問的處理器1802的區(qū)域中。查找表可以通過w的值來索引。結(jié)果可以包括因子s1、s2、s3等的指定,指示給定的部分乘積將例如向右移位的多少次數(shù)。結(jié)果還可以包括因子f1、f2、f3等的指定,指示給定的部分乘積將是正還是負(fù)。在一些實施例中,可以將第一部分乘積假設(shè)為正。在一個實施例中,查找表可以包括w的量化的可能值,并且可以實現(xiàn)該表以返回離乘法指令的w很靠近(最近鄰)的w的量化的可能值。
ssm模塊1816可以將部分乘積加在一起以提供x*w的估計值。ssm模塊1816可以將總和輸出到系統(tǒng)1800的存儲器、寄存器、高速緩存或任何其他合適的部分,諸如存儲器子系統(tǒng)1818。
在一個實施例中,其中ssm模塊1816可以被實現(xiàn)來計算乘積y=x*w,其中w是[0…1](或從[0…k]歸一化的),ssm模塊1816的操作可以被指定為
其中d是要用于計算x*w的部分乘積的數(shù)量。c的值可以是(d-1)?!?gt;>”操作表示并操作將輸入(諸如x)向右移位指定次數(shù)(諸如sx)。正如由f的相應(yīng)值是偶數(shù)還是奇數(shù)來指定的,每個部分乘積可以是正的或負(fù)的。這個操作的數(shù)學(xué)等價物可以給出為:
如上所討論的,ssm模塊1816可以基于w的指定值從查找表獲得移位參數(shù)和標(biāo)志參數(shù)。ssm模塊1816可以實現(xiàn)任何合適數(shù)量的部分乘積。數(shù)量不斷增加的部分乘積可增加計算的估計的精度,因為越來越小的部分乘積可有助于更精細(xì)的粒度。部分乘積數(shù)量的增加可能需要較大的查找表來產(chǎn)生大量可變數(shù)量的移位和標(biāo)志參數(shù)。此外,數(shù)量不斷增加的部分乘積可能需要增加的邏輯量、移位器數(shù)量、加法器數(shù)量以及執(zhí)行計算所需的區(qū)間大小。如果使用兩個移位器(并且因此生成兩個部分乘積),則查找表中的w的近似可能具有小于或等于八分之一的誤差。與普通乘法電路相反,使用兩個移位器實現(xiàn)14×14比特乘法器可以將必需的門的數(shù)量從大約970個門減少到70個門。如果使用三個移位器,則查找表中的w的近似可能具有小于或等于三十二分之一的誤差。與普通乘法電路相反,使用三個移位器實現(xiàn)14×14比特乘法器可將必需的門的數(shù)量減少大約85%。因此,可以在基于精度和空間節(jié)省之間的權(quán)衡來創(chuàng)建ssm1814時確定用于實現(xiàn)ssm1814的移位器的數(shù)量。
在另一個實施例中,其中ssm模塊1816可以被實現(xiàn)來計算乘積y=x*w,其中w是[-b…b](或從[-b*k…b*k]歸一化的),ssm模塊1816的操作可以被指定為
其中c是用于計算x*w的部分乘積的數(shù)量。這個操作的數(shù)學(xué)等價物可以給出為:
圖19是根據(jù)本公開的實施例的ssm模塊1900的圖示,其中w在(或從[0...k]歸一化而來的)范圍[0…1]內(nèi)。在某些情況下,可以使用signoid函數(shù)來近似在w范圍中的期望值??梢詡鬟fsignoid函數(shù)及其參數(shù)而不是w。ssm模塊1900可以完全或部分地實現(xiàn)ssm模塊1816。
ssm模塊1900可以包括控制邏輯1902,以確定是否需要執(zhí)行任何預(yù)處理,諸如將x乘以k或相對于k對w進(jìn)行歸一化。控制邏輯1902可以通過例如將x或w的值向右或向左移位多次(log2w)來執(zhí)行這種乘法或歸一化。此外,控制邏輯1902可以在查找表(lut)1904a中查找w的值。下面更詳細(xì)地討論lut1904a。lut1904a可以通過任何合適的數(shù)據(jù)結(jié)構(gòu)、布隆過濾器或用于有效地返回值的其他機制來實現(xiàn)??梢苑祷夭煌膕和f參數(shù)的值。s和f參數(shù)的數(shù)量可以取決于ssm模塊1900在估計x*w的乘積時將使用的部分乘積的數(shù)量。每個s可能是正整數(shù)。每個f可能是零或一。
控制邏輯1902可以將x和s與f參數(shù)路由到ssm1906。ssm1906可以以任何合適的方式來實現(xiàn)。在一個實施例中,ssm1906的實現(xiàn)可以取決于w是否在范圍[0…1]或諸如[-b…b]的另一個范圍內(nèi)。在另一個實施例中,ssm1906的實現(xiàn)可以取決于ssm1906要計算多少部分乘積。如果提供小于最大數(shù)量的f和s參數(shù),則ssm1906可以啟用或禁用其自身的一些部分。默認(rèn)情況下,禁用可以包括針對未使用的部分乘積指派零值,為此不提供f或s參數(shù)。啟用可以包括計算部分乘積,其中根據(jù)需要提供s和f以計算部分乘積。
第一部分乘積可以由移位器1910a產(chǎn)生,該移位器1910a將x的比特向右邏輯地移位由s1指定的次數(shù)。這可具有將x除以(2^s1)的效果。移位器1910a(和其他移位器)可以以任何合適的方式實現(xiàn),以將x向右邏輯地移位指定數(shù)量(諸如s1)次。例如,移位器1910a中可以包括多個移位機制,并且可以實現(xiàn)這種機制的指定的s1數(shù)量。下一個部分乘積可以由移位器1910b產(chǎn)生,該移位器1910b將x向右移動由s1指定的次數(shù);通過一個指數(shù)模塊1912a,其將負(fù)一提升到f1冪;并利用乘法器1914a將兩個結(jié)果相乘。指數(shù)模塊1912a(和其他指數(shù)模塊)可以以任何合適的方式實現(xiàn),以便如果f1是奇數(shù)則產(chǎn)生負(fù)一,而如果f1是偶數(shù)則產(chǎn)生正一。在一些實施例中,指數(shù)模塊1912a和乘法器1914a可以由邏輯控制來實現(xiàn),以便如果f1是奇數(shù),則執(zhí)行按位“非”(not)或補碼(complement)運算,以使移位器1910b的輸出變?yōu)樨?fù)。如果f1是偶數(shù),則移位器1910b的輸出可以不變地被路由到加法器1916a。隨后的部分乘積可以通過類似的組合來計算??梢詫⒚總€部分乘積路由到加法器1916a,所述加法器1916a可以對部分乘積進(jìn)行相加。加法器1916a的輸出可以是估計的乘積,乘法計算的結(jié)果。
圖20是根據(jù)本公開的實施例的ssm模塊1900的圖示,其中w在(或從[-b*k…b*k]歸一化而來的)范圍[-b…b]內(nèi)。ssm模塊1900可以完全或部分地實現(xiàn)ssm模塊1816。
ssm模塊1900可以包括控制邏輯1902,以確定是否需要執(zhí)行任何預(yù)處理,諸如將x乘以k或相對于k對w進(jìn)行歸一化??刂七壿?902可以通過例如將x或w的值向右或向左移位多次(log2w)來執(zhí)行這種乘法或歸一化。此外,控制邏輯1902可以在lut1904b中查找w的值。lut1904b可以通過任何合適的數(shù)據(jù)結(jié)構(gòu)、布隆過濾器或用于有效地返回值的其他機制來實現(xiàn)。lut1904a的具體值可以與lut1904b的值不同。此外,ssm1908可以與ssm1906不同地實現(xiàn)。因此,控制邏輯1902可以評估w的范圍并訪問lut和ssm中的適當(dāng)?shù)膌ut和ssm??梢苑祷夭煌瑂和f參數(shù)的值。s和f參數(shù)的數(shù)量可以取決于ssm模塊1900在估計x*w的乘積時將使用的部分乘積的數(shù)量。每個s可能是正整數(shù)。每個f可能是零或一。在一個實施例中,s和f參數(shù)的數(shù)量可以相等。
控制邏輯1902可以將x和s與f參數(shù)路由到ssm1908。ssm1908可以以任何合適的方式來實現(xiàn)。在一個實施例中,ssm1908的實現(xiàn)可以取決于w是否在范圍[0…1]或諸如[-b…b]的另一個范圍內(nèi)。在圖20的示例中,該范圍被推定為b[-b。。。b]。在另一個實施例中,ssm1908的實現(xiàn)可以取決于ssm1906要計算多少部分乘積。如果提供小于最大數(shù)量的f和s參數(shù),則ssm1908可以啟用或禁用其自身的一些部分。默認(rèn)情況下,禁用可以包括針對未使用的部分乘積指派零值,為此不提供f或s參數(shù)。啟用可以包括計算部分乘積,其中根據(jù)需要提供s和f以計算部分乘積。
第一部分乘積可以由移位器1910d產(chǎn)生,該移位器1910d將x的比特向右邏輯地移位由s1指定的次數(shù);通過一個指數(shù)模塊1912d,其將負(fù)一提升到f1冪;并利用乘法器1914d將兩個結(jié)果相乘??梢允褂孟鄳?yīng)的移位器、指數(shù)模塊和乘法器以類似的方式產(chǎn)生其他部分乘積。可以將每個部分乘積路由到加法器1916b,所述加法器1916b可以對部分乘積進(jìn)行相加。加法器1916b的輸出可以是估計乘積,乘法計算的結(jié)果。
lut的內(nèi)容可以根據(jù)給定ssm要使用的部分乘積的數(shù)量來確定。lut的內(nèi)容可以存儲在存儲器中。在各種實施例中,lut可以提供對函數(shù)空間在圖19的情況下的g:n-->[0,1]和在圖20的情況下的g:n-->[-b,b](或[-2,2])的按分段的常數(shù)近似。范圍[-2…2]可以由圖20中所示的架構(gòu)產(chǎn)生。給定函數(shù)空間g的值,或者給定對應(yīng)于w的分?jǐn)?shù)輸出的值,可以返回移位和標(biāo)志參數(shù)。
可以以任何合適的方式確定給定lut的值。例如,給定上面的數(shù)學(xué)方程式表示使用移位和標(biāo)志參數(shù)的結(jié)果計算,可以計算由每個s參數(shù)和每個f參數(shù)的不同值的排列(permutation)集合所產(chǎn)生的值。例如,將x設(shè)置為一,可以為ssm1906或ssm1908計算不同的y值。不同的值因此可以表示w的分?jǐn)?shù)值??赡軐Y(jié)果進(jìn)行排序。所有s和f參數(shù)的所有可能值的全部排列集合可能具有冗余結(jié)果,這意味著s和f的兩個不同組合可能導(dǎo)致相同的分?jǐn)?shù)輸出??梢允褂眉s束來消除對于lut的可能冗余值。例如,在雙移位ssm中,可以應(yīng)用約束s1<s2來消除s和f的某些排列。在另一個示例中,如果s1=s2,則可以應(yīng)用f1必須等于一的約束來消除s和f的一些排列。
下面是表示遵循上述步驟計算出的針對在[0…1]范圍內(nèi)的w的lut的示例實施例的表格。在這里為了顯示完整的表格,假定了雙移位ssm。
表1--采樣lut值。
因此,例如,如果w等于0.54,則控制邏輯1902可以訪問lut1904a,發(fā)現(xiàn)最接近于0.54的鄰居是編號為35的條目,并且返回該s1=1,s2=5,f1=0。這些值可以提供給ssm1906,其可以產(chǎn)生近似為x*0.54的輸出。
此外,w可以是函數(shù)的結(jié)果。例如,w可以是函數(shù)“f(n)”,其中n是無符號整數(shù),并且f(n)是將無符號整數(shù)映射到區(qū)間[0…1]中實數(shù)的signoid函數(shù)。例如,f(n)可以給出為
其中a和b是常數(shù)。當(dāng)n從0變化到1000時,f可以形成從0到1的s形圖。lut可以映射n的值和f的結(jié)果值。例如:
表2--給定值n的采樣值。
如果映射,這些數(shù)據(jù)點將示出函數(shù)f(n)的量化的步長函數(shù)表示。取決于特定的lut和ssm,這些輸出值繼而可以與適當(dāng)?shù)囊莆缓蜆?biāo)志參數(shù)相關(guān)聯(lián)。例如,基于具有預(yù)期w范圍[0…1]的ssm,采用以下三移位和雙標(biāo)志lut:
表3--與給定值n的采樣值f相關(guān)聯(lián)的采樣lut值。
給定表3中的上述示例lut值,考慮其中x為725、n為305的示例。表中最接近的值可以包括針對300的條目。為了計算x*f(n),可以對于n為305的相關(guān)聯(lián)的值而查詢lut。由此lut可以得出參數(shù),使得s1為三,s2為六,s3為九,f1為1,f2為零。這恰好對應(yīng)于0.11的值,它是f(300)的近似值。當(dāng)ssm對數(shù)字725執(zhí)行適當(dāng)?shù)囊莆缓头栟D(zhuǎn)換時,結(jié)果可以是82。因此,在各種實施例中,可以使用signoid函數(shù)來訪問lut以近似在w的范圍中的所需值。
圖21是根據(jù)本公開的實施例的用于移位和乘法的方法2100的實施例的流程圖。方法2100可以在任何適當(dāng)?shù)狞c開始,并且可以以任何合適的順序執(zhí)行。在一個實施例中,方法2100可以從2105開始。在各種實施例中,方法2200可以在諸如處理器1802的處理器或諸如s??sm1906或ssm1908的ssm的執(zhí)行期間執(zhí)行。此外,方法2100可以通過處理器1804的元件或其他元件的任何合適的組合來執(zhí)行。
在2105處,可以接收或解碼用于執(zhí)行的指令。在2110處,可以確定該指令是適合于由ssm執(zhí)行的乘法指令。乘法可以包括或可以轉(zhuǎn)換為x和w的乘法。在2115處,可以將指令分派給ssm以供執(zhí)行并且將資源分配給該指令。
在2120處,為了將指令分派到正確的ssm(或正確地啟用ssm),可以確定w是在范圍[0…k]還是[-b*k…b*k]中。如果w是在范圍[0…k]中,則方法2100可以進(jìn)行到2125。如果w是在范圍[-b*k…b*k]中,則方法2100可以進(jìn)行到2150。
在2125處,如果k不是值1,那么可以使用例如移位器將k與x相乘。此外,可以相對于k對w進(jìn)行歸一化,使得w在范圍[0…1]中。在2130處,可以在lut中查找w的結(jié)果值。可以根據(jù)ssm要使用的部分乘積的數(shù)量以及通過w的范圍來設(shè)置lut??梢詮膌ut中檢索適當(dāng)數(shù)量的移位和標(biāo)志參數(shù)。
在2135處,在ssm中,對于部分乘積,可以將從2125得到的x的值向右移位s1次,其中由lut指定s1。在2140處,可以將從2125得到的x的值向右移位s2次,其中由lut指定s2。此類移位的結(jié)果可以乘以(-1^f1),其中由lut指定f1;這可以用按位補碼函數(shù)來執(zhí)行。這可能導(dǎo)致另一部分乘積。在2145處,可以以與2140中描述的相同的方式、但是利用隨后的s和f參數(shù)來計算附加的部分乘積。方法2100可以進(jìn)行到2170。
在2150處,b可以是2,并且如果k不是值1,則可以使用例如移位器將k與x相乘。而且可以相對于k對w進(jìn)行歸一化,使得w在范圍[-b…b](或[-2…2])中。在2155處,可以在lut中查找w的結(jié)果值??梢愿鶕?jù)ssm要使用的部分乘積的數(shù)量以及通過w的范圍來設(shè)置lut??梢詮膌ut中檢索適當(dāng)數(shù)量的移位和標(biāo)志參數(shù)。
在2160處,在ssm中,可以將從2150得到的x的值向右移位s1次,其中由lut指定s1。此類移位的結(jié)果可以乘以(-1^f1),其中由lut指定f1;這可以用按位補碼函數(shù)來執(zhí)行。這可能導(dǎo)致部分乘積。在2165處,可以以與2160中描述的相同的方式、但是利用隨后的s和f參數(shù)來計算附加的部分乘積。方法2100可以進(jìn)行到2170。
在2170處,可以將部分乘積相加,并且在2175處,作為x*w的估計乘積返回結(jié)果。方法2100可以可選地重復(fù)或終止。
方法2100可以由任何合適的標(biāo)準(zhǔn)發(fā)起。此外,盡管方法2100描述了特定元件的操作,但是方法2100可以由任何合適的組合或元件類型執(zhí)行。例如,方法2100可以由圖1-圖20中所圖示的元件或可操作以實現(xiàn)方法2100的任何其它系統(tǒng)來實現(xiàn)。同樣地,對于方法2100的優(yōu)選初始化點和包括方法2100的元件的順序可以取決于選擇的實現(xiàn)。在一些實施例中,一些元件可以被可選地省略、重新組織、重復(fù)或組合。
本文公開的機制的實施例可以在硬件、軟件、固件或此類實現(xiàn)方法的組合中實現(xiàn)。本公開的實施例可以被實現(xiàn)為在包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備和至少一個輸出設(shè)備的可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼。
程序代碼可以應(yīng)用于輸入指令以執(zhí)行本文所描述的功能并生成輸出信息??梢砸砸阎姆绞綄⑤敵鲂畔?yīng)用于一個或多個輸出設(shè)備。為了本申請的目的,處理系統(tǒng)可以包括具有例如諸如數(shù)字信號處理器(dsp)、微控制器、專用集成電路(asic)或微處理器之類的處理器的任何系統(tǒng)。
程序代碼可以以高級過程或面向?qū)ο蟮木幊陶Z言來實現(xiàn)以與處理系統(tǒng)通信。如果期望的話,程序代碼還可以用匯編或機器語言來實現(xiàn)。事實上,本文描述的機制的范圍不限于任何特定的編程語言。在任何情況下,語言可以是編譯或解釋語言。
至少一個實施例的一個或多個方面可以通過存儲在機器可讀介質(zhì)上的代表性指令來實現(xiàn),所述代表性指令表示處理器內(nèi)的各種邏輯,所述邏輯當(dāng)由機器讀取時使得機器制造邏輯以執(zhí)行本文所描述的技術(shù)。稱為“ip核”的此類表示可以存儲在有形的機器可讀介質(zhì)上,并且供應(yīng)給各種客戶或制造設(shè)施以加載到實際制作邏輯或處理器的制造機器中。
此類機器可讀存儲介質(zhì)可以包括但不限于由機器或設(shè)備制造或形成的制品的非暫時性、有形布置,包括存儲介質(zhì)諸如硬盤、任何其它類型的盤,包括軟盤、光盤、壓縮盤只讀存儲器(cd-rom)、可重寫壓縮盤(cd-rw)和磁光盤、半導(dǎo)體器件(諸如只讀存儲器(rom)、諸如動態(tài)隨機存取存儲器(dram)、靜態(tài)隨機存取存儲器(sram)之類的隨機存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、閃存、電可擦除可編程只讀存儲器(eeprom)、磁卡或光卡或任何其它類型的適合于存儲電子指令的介質(zhì)。
相應(yīng)地,本公開的實施例還可以包括包含指令或包含諸如硬件描述語言(hdl)的設(shè)計數(shù)據(jù)的非暫時性有形機器可讀介質(zhì),其定義結(jié)構(gòu)、電路、設(shè)備、處理器和/或本文描述的系統(tǒng)特征。此類實施例也可以被稱為程序產(chǎn)品。
在一些情況下,指令轉(zhuǎn)換器可用于將指令從源指令集轉(zhuǎn)換為目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以轉(zhuǎn)化(例如,使用靜態(tài)二進(jìn)制轉(zhuǎn)化,包括動態(tài)編譯的動態(tài)二進(jìn)制轉(zhuǎn)化)、變形、仿真或以其它方式將指令轉(zhuǎn)換為要由核處理的一個或多個其它指令。指令轉(zhuǎn)換器可以以軟件、硬件、固件或其組合來實現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、處理器外或部分在處理器上且部分在處理器外。
因此,公開了用于根據(jù)至少一個實施例執(zhí)行一個或多個指令的技術(shù)。雖然已經(jīng)在附圖中描述和示出了某些示例性實施例,但是要理解,此類實施例僅僅是對其它實施例的說明而不是限制,并且此類實施例不限于所示和所描述的特定構(gòu)造和布置,因為本領(lǐng)域普通技術(shù)人員在研究本公開時可以想起各種其它修改。在諸如此類的技術(shù)領(lǐng)域中--其中成長快并且不容易預(yù)見進(jìn)一步的進(jìn)展,如在不脫離本公開的原理或隨附權(quán)利要求的范圍的情況下通過實現(xiàn)技術(shù)進(jìn)步所促進(jìn)的,所公開的實施例可以在布置和細(xì)節(jié)上容易地可修改。