對使用前綴的isa指令的條件執(zhí)行支持的制作方法
【專利摘要】在一種實(shí)施例中,一種處理器包括指令解碼器和執(zhí)行單元,該指令解碼器接收具有前綴和操作碼的第一指令,并且,由該處理器的指令解碼器生成以基于前綴確定的條件為基礎(chǔ)執(zhí)行的第二指令,該執(zhí)行單元以基于前綴確定的條件為基礎(chǔ)有條件地執(zhí)行第二指令。
【專利說明】對使用前綴的ISA指令的條件執(zhí)行支持
發(fā)明領(lǐng)域
[0001 ] 本發(fā)明的各實(shí)施例通常涉及指令處理裝置。尤其,本發(fā)明的各實(shí)施例涉及具有對使用前綴的ISA指令的條件執(zhí)行擴(kuò)展的指令處理裝置。
[0002]背景
[0003]諸如整數(shù)寄存器等的通用寄存器(GPR)中所涉及的指令被廣泛用于諸如x86體系結(jié)構(gòu)等的指令集體系結(jié)構(gòu)(ISA)。大多數(shù)X86GPR(例如,整數(shù)寄存器,而不是x87或單指令多數(shù)據(jù)(SMD)/高級矢量擴(kuò)展(AVX)寄存器)操作寫入到整數(shù)寄存器并且操縱x86算術(shù)標(biāo)志寄存器。例如,諸如ADD指令等加指令修改標(biāo)志(例如,OF、SF、ZF、AF、CF和PF標(biāo)志)并更新GPR目的地。諸如INC等遞增指令也修改標(biāo)志(例如,OF、SF、ZF、AF和PF)并更新GPR目的地。通常,這種標(biāo)志修改是不必要的,甚至由于不必要的依賴關(guān)系鏈而增加了復(fù)雜性和潛在的性能影響。
[0004]也可以由處理器基于一個(gè)或多個(gè)條件有條件地執(zhí)行指令。通常,為了執(zhí)行條件執(zhí)行,X86GPR指令要求多個(gè)操作碼或指令,例如,基于圖6中的條件代碼表中所示出的一個(gè)或多個(gè)測試字段(test field)。這樣的要求可以消耗更多資源且降低處理器的性能。
[0005]附圖簡述
[0006]作為示例而非限制在附圖的各圖中闡釋本發(fā)明的各實(shí)施例,附圖中,類似的標(biāo)號指示相似的元素。
[0007]圖1是闡釋根據(jù)一種實(shí)施例的處理器的示例的框圖。
[0008]圖2是闡釋根據(jù)一種實(shí)施例的指令的示例的框圖。
[0009]圖3是闡釋根據(jù)一種實(shí)施例的處理器的示例的框圖。
[0010]圖4是闡釋標(biāo)志寄存器的示例的框圖。
[0011]圖5是闡釋根據(jù)一種實(shí)施例與基于AVX的指令一起使用的VEX前綴編碼的框圖。
[0012]圖6是闡釋常規(guī)條件代碼表的框圖。
[0013]圖7是闡釋根據(jù)一種實(shí)施例的前綴編碼表的框圖。
[0014]圖8是闡釋根據(jù)一種實(shí)施例的處理指令的方法的流程圖。
[0015]圖9是闡釋根據(jù)一種實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。
[0016]圖10是闡釋根據(jù)另一實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。
[0017]詳細(xì)描述
[0018]將參考下面討論的細(xì)節(jié)描述本發(fā)明的各種實(shí)施例和各方面,且附圖將闡釋各種實(shí)施例。下列描述和附圖闡釋本發(fā)明,且不應(yīng)被解釋成限制本發(fā)明。描述了眾多特定細(xì)節(jié),以便提供對本發(fā)明的各種實(shí)施例的透徹理解。然而,在某些實(shí)例中,不描述公知的或常規(guī)的細(xì)節(jié),以便提供對本發(fā)明的各實(shí)施例的簡練討論。
[0019]本說明書中對“一種實(shí)施例”或“一個(gè)實(shí)施例”的引用意味著,結(jié)合該實(shí)時(shí)例描述的具體的特征、結(jié)構(gòu)或特性可以被包括在本發(fā)明的至少一種實(shí)施例中。在本說明書中各處出現(xiàn)“在一個(gè)實(shí)施例中”的短語不一定都是指相同的實(shí)施例。
[0020]根據(jù)一些實(shí)施例,在處理器處接收到的指令包括前綴和操作碼。指令的前綴的一個(gè)或多個(gè)比特被用來指示一個(gè)或多個(gè)條件,在得到滿足時(shí),這些條件引起執(zhí)行指令的操作碼。前綴的不同的比特模式可以被用來指定操作碼的條件執(zhí)行的不同條件。指令的操作碼可以表示整數(shù)通用寄存器(GPR)或存儲(chǔ)器指令,例如x86兼容操作碼(例如,x86傳統(tǒng)操作碼)。結(jié)果,單個(gè)指令可以包括指定操作碼的條件執(zhí)行的一個(gè)或多個(gè)條件的信息。
[0021]另外,根據(jù)一種實(shí)施例,指令的前綴也被用來提供指示,即在由處理器執(zhí)行指令的操作碼時(shí)是否應(yīng)當(dāng)修改寄存器的標(biāo)志。在一種實(shí)施例中,當(dāng)在處理器處接收到指令時(shí),諸如指令解碼器等的處理邏輯被配置為檢查前綴的一個(gè)或多個(gè)比特的比特模式,以便判斷是否應(yīng)當(dāng)允許指令的操作碼在執(zhí)行時(shí)修改諸如標(biāo)志寄存器、狀態(tài)寄存器或條件代碼寄存器等等的寄存器的標(biāo)志。如果比特模式匹配預(yù)先確定的模式,則防止執(zhí)行操作碼的執(zhí)行單元修改通常通過操作碼的執(zhí)行修改的標(biāo)志。
[0022]在一種實(shí)施例中,指令的前綴的比特模式可以被用來指示:1) 一個(gè)或多個(gè)條件,其判斷是否執(zhí)行指令的操作碼;以及2)是否允許操作碼的條件執(zhí)行修改諸如標(biāo)志寄存器、狀態(tài)寄存器和/或條件代碼寄存器等等的寄存器的一個(gè)或多個(gè)標(biāo)志。因而,具有如綴和操作碼的單個(gè)指令可以在前綴中包括所有信息,以確定有條件地執(zhí)行操作碼的一個(gè)或多個(gè)條件和/或判斷操作碼的條件執(zhí)行是否可以修改寄存器的一個(gè)或多個(gè)標(biāo)志。
[0023]圖1是闡釋根據(jù)一種實(shí)施例的處理器的示例的框圖。參見圖1,處理器100可以表示任何種類的指令處理裝置。例如,處理器101可以是通用處理器。處理器100可以是各種復(fù)雜指令集計(jì)算(CISC)處理器、各種精簡指令集計(jì)算(RISC)處理器、各種超長指令字(VLIff)處理器、其各種混合或完全是其他類型的處理器中的任何。在一種實(shí)施例中,處理器100包括接收和解碼指令106的指令解碼器101。指令解碼器101可以生成并輸出反映指令106或是從中導(dǎo)出的一個(gè)或多個(gè)微操作、微代碼、入口點(diǎn)、微指令、其他指令或其他控制信號??梢允褂酶鞣N不同的機(jī)制來實(shí)現(xiàn)指令解碼器101。合適的機(jī)制的示例包括但不限于微代碼只讀存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)等等。
[0024]處理器100還包括一個(gè)或多個(gè)執(zhí)行單元102,其可以包括算術(shù)邏輯單元,或能夠基于指令106執(zhí)行操作的另一類型的邏輯單元。作為指令解碼器101解碼指令106的結(jié)果,執(zhí)行單元102可以接收反映指令106或是從中導(dǎo)出的一個(gè)或多個(gè)微操作、微代碼入口點(diǎn)、微指令、其他指令或其他控制信號。執(zhí)行單元102可以作為指示一個(gè)或多個(gè)源操作數(shù)(SRC) 108的指令106的結(jié)果而操作,并把結(jié)果存儲(chǔ)在由指令106指示的寄存器集105的一個(gè)或多個(gè)目的地操作數(shù)(DEST) 109中。執(zhí)行單元102可以包括可操作為執(zhí)行從指令106導(dǎo)出的指令或其他控制信號并據(jù)此執(zhí)行操作的電路或其他執(zhí)行邏輯(例如,與硬件和/或固件結(jié)合的軟件)。執(zhí)行單元102可以表示諸如邏輯單元、算術(shù)邏輯單元(ALU)、算術(shù)單元、整數(shù)單元等等的任何種類的執(zhí)行單元。
[0025]在一種實(shí)施例中,指令106可以隱含地指示和/或明確地指定(例如,通過一個(gè)或多個(gè)專用字段或比特集合)源和目的地操作數(shù)。操作數(shù)的合適的源和/或目的地的示例包括寄存器、存儲(chǔ)器、即時(shí)指令(immediate of the instruction)及其組合。在各種實(shí)施例中,源和目的地操作數(shù)可以是8位、16位、32位或64位操作數(shù),盡管不要求這一點(diǎn)。
[0026]在一種實(shí)施例中,源操作數(shù)和目的地操作數(shù)中的一些或全部可以存儲(chǔ)在寄存器集105的寄存器或存儲(chǔ)器中。寄存器集可以是寄存器堆(register file)的一部分,以及潛在地是其他寄存器,例如狀態(tài)寄存器、標(biāo)志寄存器等等。寄存器可以是可以用來存儲(chǔ)數(shù)據(jù)的存儲(chǔ)位置或設(shè)備。寄存器集常??梢晕锢砩衔挥诰哂袌?zhí)行單元的管芯上。寄存器可以在處理器外或從程序員的視角可見。例如,指令可以指定存儲(chǔ)在寄存器中的操作數(shù)。只要各種不同類型的寄存器能夠存儲(chǔ)和提供在此描述的數(shù)據(jù),它們就是合適的??梢灾孛虿恢孛拇嫫?。合適的寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配物理寄存器、專用物理寄存器和動(dòng)態(tài)分配物理寄存器的組合等等。備選地,源操作數(shù)和目的地操作數(shù)中的一種或多個(gè)可以存儲(chǔ)在不同于寄存器的存儲(chǔ)位置,諸如例如系統(tǒng)存儲(chǔ)器中的位置。
[0027]再參見圖1,在一種實(shí)施例中,指令106可以包括如圖2中所示出的至少一個(gè)前綴和操作碼。參見圖1和圖2,圖2的指令200可以表示圖1的指令106。在一種實(shí)施例中,指令200包括前綴201和操作碼202。當(dāng)指令解碼器101接收到指令200時(shí),根據(jù)一種實(shí)施例,指令解碼器101被配置為基于操作碼202生成一個(gè)或多個(gè)微代碼操作或微指令以便由執(zhí)行單元102執(zhí)行。另外,指令解碼器101被配置為檢查前綴201的一個(gè)或多個(gè)比特,以便確定應(yīng)由執(zhí)行單元102執(zhí)行與操作碼202相關(guān)聯(lián)的微代碼操作或微指令的一個(gè)或多個(gè)條件。此外,指令解碼器101被配置為檢查前綴201的一個(gè)或多個(gè)比特,以便判斷作為微代碼操作或微指令的執(zhí)行(例如,條件執(zhí)行)的結(jié)果執(zhí)行單元102是否可以修改寄存器104的標(biāo)志107中的至少一個(gè)。
[0028]在一種實(shí)施例中,在指令解碼器101接收到指令106時(shí),指令解碼器101被配置為從指令106提取前綴,例如圖2的前綴201。然后,指令解碼器101基于該前綴確定執(zhí)行指令106的操作碼的條件。在一種實(shí)施例中,通過查找條件編碼表112確定條件,條件編碼表112把特定前綴映射到特定條件。前綴的不同比特模式可以表示不同的條件。條件編碼表112可以以硬件、固件、軟件或其組合實(shí)現(xiàn)?;谠摋l件或從前綴導(dǎo)出的條件,指令解碼器101被配置為生成一個(gè)或多個(gè)條件執(zhí)行的微代碼操作或微指令111,以便由執(zhí)行單元102條件執(zhí)行。
[0029]另外,指令解碼器101還檢查指令106的前綴,以便作為條件執(zhí)行結(jié)果判斷是否允許執(zhí)行單元102修改寄存器104的任意標(biāo)志107。根據(jù)一種實(shí)施例,在前綴201的一個(gè)或多個(gè)比特的比特模式匹配預(yù)先確定的模式時(shí),指令解碼器101把標(biāo)志修改覆蓋(FMO)信號(flag modification override signal) 110 傳送給 FMO 邏輯 103。FMO 邏輯 103 可以防止標(biāo)志被該操作修改。如果前綴201的一個(gè)或多個(gè)比特的比特模式不匹配預(yù)先確定的比特模式,則FMO邏輯103可以允許執(zhí)行單元102修改標(biāo)志107??梢杂删幾g器和/或程序器填充存儲(chǔ)在前綴201和/或操作碼202中的信息。FMO邏輯103可以以硬件、固件、軟件或其組合實(shí)現(xiàn)。注意,前綴201的具體比特模式可以指示可以修改具體標(biāo)志,而不可以修改其他標(biāo)志。因而,前綴201的比特模式規(guī)定標(biāo)志107中的哪些可以由執(zhí)行單元102修改,并規(guī)定為了執(zhí)行操作碼202必須為真的條件或多個(gè)條件。結(jié)果,單個(gè)指令可以指定條件以及是否覆蓋對標(biāo)志的修改嘗試的指示兩者。常規(guī)的系統(tǒng)通常要求用于條件執(zhí)行的多個(gè)指令或操作碼。也應(yīng)注意,僅出于闡釋的目的示出和描述了圖2的指令200的格式;也可以應(yīng)用其他格式。
[0030]在一種實(shí)施例中,在從操作碼生成微代碼操作或微指令111之前,假設(shè)操作碼202中提供操作碼,指令解碼器101被配置為檢查具有具體比特模式的前綴201是否有效。如果基于操作碼202判斷前綴201是無效的,則生成異常,且將不執(zhí)行操作碼。此外,對于給定的處理器100的能力(可以基于諸如圖3中所示出的CPnD等的處理器標(biāo)識(shí)符來確定),指令解碼器101也可以檢查指令200是否有效。參見圖3,基于諸如前綴201、操作碼202和/或處理器ID203等信息,如果判斷指令是無效的,則指令解碼器101被配置為生成異常204 (例如,未經(jīng)定義的或UD操作)。否則,指令解碼器101被配置為基于前綴201、操作碼202和條件編碼表112生成FMO信號110和條件執(zhí)行的微代碼操作或微指令111。再參見圖1,基于FMO信號110,F(xiàn)MO邏輯103被配置為控制對于該操作是否修改寄存器104的標(biāo)志107,其中,取決于指令106的特定前綴,F(xiàn)MO邏輯103可以允許或不允許這樣的修改。
[0031]在一種實(shí)施例中,標(biāo)志107可以表示算術(shù)標(biāo)志中的一個(gè)或多個(gè)。寄存器104可以是狀態(tài)寄存器、標(biāo)志寄存器(例如,EFLAGS)或條件代碼寄存器(CCR)。圖4中示出了寄存器104的示例,它表示EFLAGS寄存器的示例。標(biāo)志107可以包括一個(gè)或多個(gè)比特,往往是在諸如寄存器104等的寄存器中。標(biāo)志107不必是寄存器中的比特。標(biāo)志可以包括觸發(fā)電路。比特標(biāo)志可以存儲(chǔ)二進(jìn)制值,例如二進(jìn)制一或二進(jìn)制零。多個(gè)比特可以存儲(chǔ)二進(jìn)制值的序列或代碼。這樣的二進(jìn)制值或二進(jìn)制值的序列可以表示不同的標(biāo)志值。對處理器100或其他邏輯設(shè)備來說,這些不同的標(biāo)志值可以具有所指定的或所理解的含義。標(biāo)志107可以用于各種不同的目的。在一些情況中,標(biāo)志107可以被用來記錄在處理器100或其他邏輯設(shè)備內(nèi)的操作的狀況(status)、狀態(tài)(state)、條件或結(jié)果。標(biāo)志107可以包括進(jìn)位標(biāo)志(CF)、溢出標(biāo)志(0F)、符號標(biāo)志(SF)、零標(biāo)志(ZF)、輔助進(jìn)位標(biāo)志(AF)或奇偶標(biāo)志(PF)或其組合,如圖4中所示出的。并非在所有處理器或其他邏輯設(shè)備中都包括所有這樣的標(biāo)志。另外,不同的名稱有時(shí)被用于這些不同的標(biāo)志。
[0032]根據(jù)一種實(shí)施例,指令106與加利福尼亞州圣克拉拉市的英特爾公司的基于高級矢量擴(kuò)展(AVX)的ISA兼容。一種實(shí)施例利用基于AVX的指令的AVX前綴來把“標(biāo)志不修改(flag non-modifying) ”指示編碼到ISA。經(jīng)由前綴這樣做,允許這種擴(kuò)展廣泛地應(yīng)用于X86GPR指令操作碼的現(xiàn)有傳統(tǒng)集。這可以應(yīng)用到諸如16位、32位或64位模式等的各種模式。通過在前綴空間中添加標(biāo)志不修改指示,各實(shí)施例允許在利用僅具有少量修改的大部分預(yù)先存在的傳統(tǒng)硬件的同時(shí)生成一組豐富的標(biāo)志不修改指令。在一種實(shí)施例中,一個(gè)或多個(gè)AVX前綴比特被用來向?qū)懭胝麛?shù)GPR或存儲(chǔ)器目的地并更新一個(gè)或多個(gè)算術(shù)標(biāo)志比特的任何或全部傳統(tǒng)整數(shù)指令操作碼指出標(biāo)志不修改。這樣的前綴防止在期望現(xiàn)有的傳統(tǒng)指令的標(biāo)志不修改版本時(shí)要求新的操作碼和相應(yīng)的解碼器硬件。另外,根據(jù)一種實(shí)施例,AVX前綴也可以被用來指定諸如x86整數(shù)GPR或存儲(chǔ)器指令等的某些指令的條件執(zhí)行的一個(gè)或多個(gè)條件。
[0033]圖5是闡釋根據(jù)一種實(shí)施例與基于AVX的指令一起使用的VEX前綴編碼的框圖。參見圖5,基于AVX的前綴包括3個(gè)字節(jié)的C4VEX編碼510,它可以被實(shí)現(xiàn)為圖2的前綴201的一部分。根據(jù)一種實(shí)施例,VEX前綴編碼中的多個(gè)比特的組合可以用于條件整數(shù)執(zhí)行(conditional integer execution)和標(biāo)志不修改擴(kuò)展(flag non-modificationextension)。再參見圖5,諸如“_11111111”比特502等的在典型矢量指令中不使用的某些比特可以被用來指示是否應(yīng)由執(zhí)行單元修改標(biāo)志。在這一實(shí)施例中,不使用比特502的較高三個(gè)比特503,而比特504被用于矢量指令。結(jié)果,比特503和/或L比特501的組合的某些比特模式可以被用來指定條件執(zhí)行的一個(gè)或多個(gè)條件并指示是否應(yīng)當(dāng)修改標(biāo)志。
[0034]在一種實(shí)施例中,L比特501的組合中的比特503也可以被用來指定條件執(zhí)行的一個(gè)或多個(gè)條件并指示是否應(yīng)當(dāng)修改標(biāo)志,如圖2中所示出的。比特503和L比特501的組合比特模式被用來表示條件執(zhí)行的各種條件,如圖7中所示出,其可以表示圖1的條件編碼表112。如圖7中所示出的條件編碼表表示如圖6中所示出的、通常要求多個(gè)指令或操作碼的傳統(tǒng)條件代碼表的大多數(shù)條件。在這一實(shí)施例中,C4AVX前綴510中三個(gè)當(dāng)前保留的比特503以及L比特501被用來允許現(xiàn)有的GPR x86操作碼空間具有支持一組豐富的條件執(zhí)行選項(xiàng)和標(biāo)志不修改的能力,以及利用VEX提供的現(xiàn)有的三元能力的能力。在一種實(shí)施例中,標(biāo)志不修改覆蓋僅應(yīng)用于更新GPR寄存器和標(biāo)志寄存器兩者的指令;它可以不應(yīng)用于僅修改標(biāo)志寄存器的指令。
[0035]利用如圖6中所示出的條件碼的x86指令使用四個(gè)比特來指定被用來評估x86算術(shù)標(biāo)志的條件。通過使用C4VEX編碼中的三個(gè)當(dāng)前保留的比特并且再次利用(repurpose)C4VEX編碼中的L比特以便允許如圖6中所示出的傳統(tǒng)條件測試字段中存在的幾乎所有相同條件,本發(fā)明的一個(gè)實(shí)施例復(fù)制如圖6中所示出的用于條件執(zhí)行行為?!癱cc”比特當(dāng)前被保留在常規(guī)的系統(tǒng)中,且非零值將引起故障(例如,冊D)。用于利用VEX的新整數(shù)GPR指令的常規(guī)系統(tǒng)中的L的非零值將引起故障。借助于這種擴(kuò)展,根據(jù)一種實(shí)施例,這些比特將承擔(dān)可以擴(kuò)展的那些整數(shù)GPR指令的含義。基于如圖7中所示出編碼表,可以解析編碼。
[0036]在一種實(shí)施例中,可以與寫入整數(shù)和標(biāo)志寄存器兩者的指令不同地對待僅操縱算術(shù)標(biāo)志寄存器且不具有其他整數(shù)寄存器目的地的x86傳統(tǒng)操作碼,同時(shí)仍然符合VEX前綴框架。斷言(predication)暗示用于更新整數(shù)寄存器的指令的標(biāo)志不修改(flagnon-modification),但是該斷言不必暗示用于僅更新算術(shù)標(biāo)志的那些x86指令的標(biāo)志不修改。CMP指令可以允許條件執(zhí)行編碼。對于這些指令,斷言應(yīng)用于標(biāo)志修改本身,允許斷言為真(TRUE)的指令更新算術(shù)標(biāo)志,且斷言為假(FALSE)的指令不更新標(biāo)志。
[0037]圖8是闡釋根據(jù)一種實(shí)施例處理指令的方法的流程圖。例如,方法800可以由圖1的指令解碼器101執(zhí)行。參見圖8,在框801,響應(yīng)于在處理器處接收的第一指令,從第一指令提取前綴和操作碼。在框802,處理邏輯鑒于操作碼和處理器(例如,CPWD)檢查該前綴的一個(gè)或多個(gè)比特,以便判斷前綴比特是否有效。如果不是,在框806,生成異常。如果前綴或第一指令有效,在框803,處理邏輯生成第二指令(例如,一個(gè)或多個(gè)微代碼操作或微指令),以便可由執(zhí)行單元基于根據(jù)前綴確定的一個(gè)或多個(gè)條件條件執(zhí)行。在框804,處理邏輯檢查前綴的一個(gè)或多個(gè)比特,以便判斷各比特是否匹配預(yù)先確定的比特模式。如果是這樣,在框805,處理邏輯覆蓋作為微代碼操作或微指令的執(zhí)行的結(jié)果執(zhí)行單元修改標(biāo)志的嘗試。
[0038]圖9是闡釋根據(jù)本發(fā)明的一種實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。系統(tǒng)900的處理器901可以表示以上所描述的圖1的處理器100。系統(tǒng)900可以表示臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器、移動(dòng)電話(例如,智能手機(jī))、媒體播放器、個(gè)人數(shù)字助理(PDA)、個(gè)人通信設(shè)備、游戲設(shè)備、網(wǎng)絡(luò)路由器或集線器、無線接入點(diǎn)或中繼器、機(jī)頂盒或其組合。注意,盡管圖9闡釋了數(shù)據(jù)處理系統(tǒng)的各種組件,但它不旨在表示任何具體的體系結(jié)構(gòu)或互連組件的方式;因而,這些細(xì)節(jié)與本發(fā)明的各實(shí)施例沒有密切關(guān)系。還應(yīng)明白,具有更少組件或者也許具有更多組件的網(wǎng)絡(luò)計(jì)算機(jī)、手持式計(jì)算機(jī)、移動(dòng)電話和其他數(shù)據(jù)處理系統(tǒng)也可以與本發(fā)明的各實(shí)施例一起使用。
[0039]參見圖9,在一種實(shí)施例中,系統(tǒng)900包括處理器901和芯片組902,芯片組902經(jīng)由總線或互連將包括存儲(chǔ)器905和設(shè)備903-904的各種組件耦合到處理器901。處理器901可以表示其中包括有單個(gè)處理器核或多個(gè)處理器核909的單個(gè)處理器或多個(gè)處理器。處理器901可以表示一個(gè)或多個(gè)通用處理器,例如微處理器、中央處理單元(CPU)等等。更具體地,處理器901可以是復(fù)雜指令集計(jì)算(CISC)微處理器、精簡指令集計(jì)算(RISC)微處理器、超長指令字(VLIW)微處理器或?qū)崿F(xiàn)其他指令集的處理器或?qū)崿F(xiàn)指令集的組合的處理器。處理器901也可以是一個(gè)或多個(gè)專用處理器,例如專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、數(shù)字信號處理器(DSP)、網(wǎng)絡(luò)處理器、圖形處理器、網(wǎng)絡(luò)處理器、通信處理器、密碼處理器、協(xié)處理器、嵌入式處理器或能夠處理指令的任何其他類型的邏輯。例如,處理器901可以是可從加利福尼亞州圣克拉拉市的英特爾公司購買的奔騰? 4( Pentium84)、奔騰? 雙核(Pentium? Dual-Core)、酷睿 ?2 雙核和四核(C0re?2Du0 and Quad)、至強(qiáng)?(XeonTM)、安騰 ?(Itanium?)、XScale?、酷睿 ?i7 (Core?i7)、酷睿 ?i5 (Core?i5)、賽揚(yáng)?(Celeron? )或StixmgARM?微處理器。處理器901被配置為執(zhí)行用于執(zhí)行在此討論的操作和步驟的指令。
[0040]處理器901可以包括指令解碼器,指令解碼器可以接收和解碼各種指令。解碼器可以生成和輸出一個(gè)或多個(gè)微操作、微代碼入口點(diǎn)、微指令、其他指令或其他控制信號,它們反映原始輸入指令或者是從原始輸入指令導(dǎo)出??梢允褂酶鞣N不同的機(jī)制實(shí)現(xiàn)解碼器。合適的機(jī)制的示例包括但不限于微代碼只讀存儲(chǔ)器(ROM)、查找、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)等等。
[0041]解碼器可以不是處理器901的必要組件。在一個(gè)或多個(gè)其他實(shí)施例中,處理器901可以改為具有指令仿真器、指令翻譯器、指令變形器、指令解釋器或其他指令轉(zhuǎn)換邏輯。各種不同類型的指令仿真器、指令變形器、指令翻譯器等等在本領(lǐng)域中是已知的。指令轉(zhuǎn)換邏輯可以接收比特范圍隔離指令,仿真、轉(zhuǎn)換、變形、解釋或以另外方式轉(zhuǎn)換該比特范圍隔離指令,并輸出對應(yīng)于原始比特范圍隔離指令的一個(gè)或多個(gè)指令或控制信號。指令轉(zhuǎn)換邏輯可以以軟件、硬件、固件或其組合實(shí)現(xiàn)。在一些情況中,指令轉(zhuǎn)換邏輯中的一些或全部可以位于與其余的指令處理裝置不同的管芯,例如在分離的管芯上或在系統(tǒng)存儲(chǔ)器中。在一些情況中,指令處理裝置可以具有解碼器和指令轉(zhuǎn)換邏輯兩者。
[0042]處理器901和/或核心909還可以包括一個(gè)或多個(gè)執(zhí)行單元,這些執(zhí)行單元與解碼器的輸出耦合或以另外方式與之通信。術(shù)語“耦合”可以意味著兩個(gè)或更多個(gè)元素處于直接的電氣接觸或連接。然而,“耦合”也可以意味著兩個(gè)或更多個(gè)元素相互不處于直接連接,但仍然彼此協(xié)同操作或交互或通信(例如,通過中間組件)。作為一個(gè)示例,解碼器和執(zhí)行單元可以通過中間的可選緩沖器或本領(lǐng)域中已知可能耦合在解碼器和執(zhí)行單元之間的其他組件彼此耦合起來。處理器901和/或核心909還可以包括多種不同類型的執(zhí)行單元,諸如例如算術(shù)單元、算術(shù)邏輯單元(ALU)、整數(shù)單元等等。
[0043]處理器901還可以包括一個(gè)或多個(gè)寄存器堆,包括但不限于整數(shù)寄存器、浮點(diǎn)寄存器、矢量或擴(kuò)展寄存器、狀態(tài)寄存器和指令指針寄存器等等。在此使用術(shù)語“寄存器”來指代被用作宏指令的一部分以便標(biāo)識(shí)操作數(shù)的板載處理器存儲(chǔ)位置。換句話說,在此指出的寄存器在處理器外(從程序器的視角)可見的寄存器。然而,寄存器在含義上不應(yīng)限于具體類型的電路。相反,寄存器僅需要能夠存儲(chǔ)和提供數(shù)據(jù),并執(zhí)行在此描述的功能。在此描述的寄存器可以使用任何數(shù)量的不同技術(shù)由在處理器內(nèi)的電路實(shí)現(xiàn),例如專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配物理寄存器、專用物理寄存器和動(dòng)態(tài)分配物理寄存器的組合等等。在一種實(shí)施例中,整數(shù)寄存器存儲(chǔ)32位或64位整數(shù)數(shù)據(jù)。寄存器堆可以包含用于經(jīng)打包數(shù)據(jù)的擴(kuò)展多媒體SMD寄存器(例如,XMM)。這樣的寄存器可以包括涉及SSE2、SSE3、SSE4、GSSE和更高(泛指為“SSEx” )技術(shù)的128位寬的XMM寄存器和256位寬的寄存器(它們可以在它們的低階比特中合并XMM寄存器),以便保存這樣的經(jīng)打包數(shù)據(jù)操作數(shù)。
[0044]處理器901和/或核心909也可以可選地包括一個(gè)或多個(gè)其他公知的組件。例如,處理器901可以可選地包括指令取數(shù)邏輯、預(yù)解碼邏輯、調(diào)度邏輯、重排序緩沖器、分支預(yù)測邏輯、引退邏輯、寄存器重命名邏輯等等或其某種組合。這些組件可以按常規(guī)方式實(shí)現(xiàn),或者具有本領(lǐng)域中的技術(shù)人員基于本公開內(nèi)容將明顯看出的細(xì)微調(diào)整。理解在此的實(shí)施例不需要對這些組件的進(jìn)一步描述,但如果期望的話,可以容易地從常見文獻(xiàn)得到進(jìn)一步的描述。存在本領(lǐng)域中已知的這樣的組件的眾多不同的組合和配置。該范圍不限于任何已知的這樣的組合或配置。各實(shí)施例可以被實(shí)現(xiàn)為帶有或不帶有這樣的附加組件。
[0045]芯片組902可以包括存儲(chǔ)器控制中樞(MCH)910和輸入輸出控制中樞(ICH)911。MCH910可以包括與存儲(chǔ)器905通信的存儲(chǔ)器控制器(未示出)。MCH910也可以包括與圖形設(shè)備912通信的圖形接口。在本發(fā)明的一種實(shí)施例中,圖形接口可以經(jīng)由加速圖形端口(AGP)、高速外圍組件互連(PCI)總線或其他類型的互連與圖形設(shè)備912通信。ICH911可以提供到諸如設(shè)備903-904等的I/O設(shè)備的接口。設(shè)備903-904中的任何都可以是存儲(chǔ)設(shè)備(例如,硬盤驅(qū)動(dòng)器、閃速存儲(chǔ)器設(shè)備)、通用串行總線(USB)端口、鍵盤、鼠標(biāo)、并行端口、串行端口、打印機(jī)、網(wǎng)絡(luò)接口(有線或無線)、無線收發(fā)器(例如,WiF1、藍(lán)牙或蜂窩收發(fā)器)、媒體設(shè)備(例如、音頻/視頻編解碼器或控制器)、總線橋(例如,PC1-PCI橋)或其組合。
[0046]MCH910有時(shí)被稱為北橋,且ICH911有時(shí)被稱為南橋,盡管有些人在它們之間做出技術(shù)區(qū)分。在此所使用的術(shù)語MCH、ICH、北橋和南橋預(yù)期被廣泛地解釋為覆蓋其功能包括向處理器傳送中斷信號的各種芯片。在一些實(shí)施例中,MCH910可以與處理器901集成起來。在這樣的配置中,芯片組902操作執(zhí)行MCH910和ICH911的一些功能的接口芯片,如圖10中所示出的。此外,圖形加速器912可以被集成在MCH910或處理器901內(nèi)。
[0047]存儲(chǔ)器905可以存儲(chǔ)包括由處理器901或任何其他設(shè)備執(zhí)行的指令序列的數(shù)據(jù)。例如,各種操作系統(tǒng)、設(shè)備驅(qū)動(dòng)器、固件(例如,輸入輸出基本系統(tǒng)或BIOS)和/或應(yīng)用的可執(zhí)行代碼913和/或數(shù)據(jù)914可以被加載到存儲(chǔ)器905中且由處理器901執(zhí)行。操作系
統(tǒng)可以是任何種類的操作系統(tǒng),諸如例如來自微軟?的Windows?操作系統(tǒng)、來自蘋果的Mac OS? iOS?、來自作歌⑧的Android?、Linux?、Unix?或其他實(shí)時(shí)操作系統(tǒng)。在一種實(shí)施例中,存儲(chǔ)器905可以包括一個(gè)或多個(gè)易失性存儲(chǔ)(或存儲(chǔ)器)設(shè)備。例如隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)RAM(DRAM)、同步DRAM (SDRAM)、靜態(tài)RAM(SRAM)或其他類型的存儲(chǔ)設(shè)備。也可以利用非易失性存儲(chǔ)器,例如硬盤或閃速存儲(chǔ)設(shè)備。前端總線(FSB)906可以是多點(diǎn)式互連或點(diǎn)對點(diǎn)互連。術(shù)語FSB預(yù)期覆蓋到處理器901的各種類型的互連。芯片組902可以經(jīng)由點(diǎn)對點(diǎn)接口與諸如設(shè)備903-904等的其他設(shè)備通信??偩€906可以被實(shí)現(xiàn)為各種總線或互連,諸如例如快速路徑互連(QPI)、超傳輸互連或與高級微控制器總線體系結(jié)構(gòu)(AMBA)兼容的總線,例如AMBA高性能總線(AHB)。
[0048]高速緩存908可以是任何種類的處理器高速緩存,例如I級(LI)高速緩存、L2高速緩存、L3高速緩存、L4高速緩存、末級高速緩存(LLC)或其組合。高速緩存908可以與處理器901的處理器核心909共享。高速緩存908可以嵌入在處理器901內(nèi)和/或外置于處理器901。高速緩存908可以在各核心909當(dāng)中共享。備選地,核心909中的至少一種還包括其中嵌入的其自己的本地高速緩存(例如,高速緩存908A-908N)。核心909中的至少一種可以利用本地高速緩存已經(jīng)與核心909中的另一個(gè)共享的高速緩存兩者。處理器901還可以包括直接高速緩存訪問(DCA)邏輯,以便允許諸如設(shè)備903-904等的其他設(shè)備直接地訪問高速緩存908。處理器901和/或芯片組902還可以包括中斷控制器,例如高級可編程中斷控制器(APIC),以便處理諸如消息信號中斷等的中斷。
[0049]已經(jīng)在對在計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)比特的操作的算法和符號表示方面呈現(xiàn)了前述詳細(xì)描述中的一些部分。這些算法描述和表示是由數(shù)據(jù)處理領(lǐng)域的技術(shù)人員最有效地把他們的工作實(shí)質(zhì)傳達(dá)給其他本領(lǐng)域技術(shù)人員的方式。通常,在這里把算法設(shè)想為引起所期望的結(jié)果的自相一致的操作序列。各操作是要求物理量的物理操縱的那些操作。
[0050]然而,應(yīng)當(dāng)牢記,所有這些和類似術(shù)語與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),且僅僅是適用于這些量的方便的標(biāo)簽。除非特別聲明,否則從上面的討論中可以明顯看出,可以理解,在整個(gè)描述中,利用諸如下面的權(quán)利要求書中所陳述的那些的術(shù)語的討論,是指計(jì)算機(jī)系統(tǒng)或類似的電子計(jì)算設(shè)備的動(dòng)作和過程,這些動(dòng)作和過程把在計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)被表示為物理(電子)量的數(shù)據(jù)操縱和變換成在計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其它這樣的信息存儲(chǔ)、傳輸或顯示設(shè)備中內(nèi)類似地表示為物理量的其他數(shù)據(jù)。
[0051]可以使用在一個(gè)或多個(gè)電子設(shè)備上存儲(chǔ)和執(zhí)行的代碼和數(shù)據(jù)來實(shí)現(xiàn)附圖中所示出的技術(shù)。這樣的電子設(shè)備使用計(jì)算機(jī)可讀介質(zhì)存儲(chǔ)和通信(在內(nèi)部和/或與網(wǎng)絡(luò)上的其他電子設(shè)備)代碼和數(shù)據(jù),計(jì)算機(jī)可讀介質(zhì)例如非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,磁盤;光盤;隨機(jī)存取存儲(chǔ)器;只讀存儲(chǔ)器;閃速存儲(chǔ)器設(shè)備;相變存儲(chǔ)器)和暫態(tài)計(jì)算機(jī)可讀傳輸介質(zhì)(例如,諸如載波、紅外信號、數(shù)字信號等的電、光、聲或其他形式的所傳播的信號)。
[0052]前述附圖中所敘述的過程或方法可以由包括硬件(例如電路、專用邏輯等等)、固件、軟件(例如,在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn))或兩者的組合的處理邏輯執(zhí)行。盡管以上相對于一些連續(xù)操作描述了過程或方法,但應(yīng)明白,可以按不同次序執(zhí)行所描述的操作中的一些。此外,可以并行而非循序執(zhí)行一些操作。
[0053]在前述的說明書中,已經(jīng)參考其特定示例性實(shí)施例描述了本發(fā)明的各實(shí)施例??梢悦黠@看出,在不偏離下列權(quán)利要求所陳述的本發(fā)明的寬泛的精神和范圍的前提下,可以對其做出各種修改。因此,應(yīng)該以說明性而非限制性的意義來看待說明書和附圖。
【權(quán)利要求】
1.一種處理器,包括: 指令解碼器,其接收具有前綴和操作碼的第一指令,并且由所述處理器的所述指令解碼器生成以基于所述前綴確定的條件為基礎(chǔ)執(zhí)行的第二指令;以及 執(zhí)行單元,其以基于所述前綴確定的所述條件為基礎(chǔ)有條件地執(zhí)行所述第二指令。
2.如權(quán)利要求1所述的所述處理器,進(jìn)一步包括把多個(gè)前綴轉(zhuǎn)換成多個(gè)條件的前綴-條件表,其中,所述指令解碼器在所述前綴-條件表中執(zhí)行查找操作,以便把所述前綴轉(zhuǎn)換成所述條件。
3.如權(quán)利要求1所述的所述處理器,其特征在于,所述執(zhí)行單元基于所述條件檢查所述處理器的標(biāo)志寄存器,以便判斷所述標(biāo)志寄存器的一個(gè)或多個(gè)標(biāo)志是否滿足從所述前綴導(dǎo)出的、執(zhí)行所述第二指令的所述條件。
4.如權(quán)利要求1所述的所述處理器,進(jìn)一步包括標(biāo)志修改覆蓋邏輯,其基于所述第一指令的所述前綴防止所述執(zhí)行單元修改所述處理器的標(biāo)志寄存器。
5.如權(quán)利要求1所述的所述處理器,其特征在于,所述指令解碼器: 從所述第一指令提取所述前綴, 考慮所述處理器的能力,基于所述前綴判斷所述第一指令是否有效,其中,如果所述第一指令有效,則所述執(zhí)行單元僅執(zhí)行所述第一指令,以及 如果基于所述處理器的能力所述前綴的一個(gè)或多個(gè)比特匹配預(yù)先確定的比特模式,則生成指示所述第一指令無效的異常。
6.如權(quán)利要求5所述的所述處理器,其特征在于,在判斷所述第一指令是否有效時(shí),考慮標(biāo)識(shí)所述處理器的類型的處理器標(biāo)識(shí)符,所述指令解碼器檢查所述前綴的一個(gè)或多個(gè)比特的值。
7.如權(quán)利要求1所述的所述處理器,其特征在于,所述標(biāo)志修改邏輯進(jìn)行: 如果所述前綴的一個(gè)或多個(gè)比特匹配第一預(yù)先確定的比特模式,則防止所述執(zhí)行單元修改所述標(biāo)志寄存器,以及 如果所述前綴的一個(gè)或多個(gè)比特匹配第二預(yù)先確定的比特模式,則允許所述執(zhí)行單元修改所述標(biāo)志寄存器。
8.如權(quán)利要求1所述的所述處理器,其特征在于,在所述操作碼包括受所述處理器支持的矢量指令時(shí),所述前綴包括表示矢量長度的一個(gè)或多個(gè)比特。
9.一種方法,包括: 在處理器處接收具有前綴和操作碼的第一指令; 由所述處理器的指令解碼器生成以基于所述前綴確定的條件為基礎(chǔ)執(zhí)行的第二指令;以及 由所述處理器的執(zhí)行單元以基于所述前綴確定的條件為基礎(chǔ)有條件地執(zhí)行所述第二指令。
10.如權(quán)利要求9所述的方法,其特征在于,生成第二指令包括在前綴-條件表中執(zhí)行查找操作,以便把所述前綴轉(zhuǎn)換成所述條件。
11.如權(quán)利要求9所述的方法,其特征在于,有條件地執(zhí)行包括基于所述條件檢查所述處理器的標(biāo)志寄存器,以 便判斷所述標(biāo)志寄存器的一個(gè)或多個(gè)標(biāo)志是否滿足從所述前綴導(dǎo)出的、執(zhí)行所述第二指令的所述條件。
12.如權(quán)利要求9所述的方法,進(jìn)一步包括基于所述第一指令的所述前綴防止所述執(zhí)行單元修改所述處理器的標(biāo)志寄存器。
13.如權(quán)利要求9所述的方法,進(jìn)一步包括: 從所述第一指令提取所述前綴; 考慮所述處理器的能力,基于所述前綴判斷所述第一指令是否有效,其中,如果所述第一指令有效,則所述執(zhí)行單元僅執(zhí)行所述第一指令;以及 基于所述處理器的能力,如果所述前綴的一個(gè)或多個(gè)比特匹配預(yù)先確定的比特模式,則生成指示所述第一指令無效的異常。
14.如權(quán)利要求13所述的方法,其特征在于,判斷所述第一指令是否有效包括考慮標(biāo)識(shí)所述處理器的類型的處理器標(biāo)識(shí)符檢查所述前綴的一個(gè)或多個(gè)比特的值。
15.如權(quán)利要求9所述的方法,進(jìn)一步包括: 如果所述前綴的一個(gè)或多個(gè)比特匹配第一預(yù)先確定的比特模式,則防止所述執(zhí)行單元修改所述標(biāo)志寄存器;以及 如果所述前綴的一個(gè)或多個(gè)比特匹配第二預(yù)先確定的比特模式,則允許所述執(zhí)行單元修改所述標(biāo)志寄 存器。
16.如權(quán)利要求9所述的方法,其特征在于,在所述操作碼包括受所述處理器支持的矢量指令時(shí),所述前綴包括表示矢量長度的一個(gè)或多個(gè)比特。
17.—種系統(tǒng),包括: 互連; 耦合到所述互連的處理器,其接收具有前綴和操作碼的第一指令,由所述處理器的指令解碼器生成以基于所述前綴確定的條件為基礎(chǔ)執(zhí)行的第二指令,并引起執(zhí)行單元以基于所述前綴確定的條件為基礎(chǔ)有條件地執(zhí)行所述第二指令;以及 耦合到所述互連的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述處理器進(jìn)一步包括將多個(gè)前綴轉(zhuǎn)換成多個(gè)條件的前綴-條件表,其中,所述指令解碼器在所述前綴-條件表中執(zhí)行查找操作以便把所述前綴轉(zhuǎn)換成所述條件。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述處理器基于所述條件檢查所述處理器的標(biāo)志寄存器,以便判斷所述標(biāo)志寄存器的一個(gè)或多個(gè)標(biāo)志是否滿足從所述前綴導(dǎo)出的、執(zhí)行所述第二指令的所述條件。
20.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述處理器進(jìn)一步包括標(biāo)志修改覆蓋邏輯,以便基于所述第一指令的所述前綴防止所述執(zhí)行單元修改所述處理器的標(biāo)志寄存器。
【文檔編號】G06F9/30GK103959239SQ201180075225
【公開日】2014年7月30日 申請日期:2011年11月30日 優(yōu)先權(quán)日:2011年11月30日
【發(fā)明者】J·D·庫姆斯, J·W·布蘭德特, R·凡倫天, K·B·史密斯, Z·安薩瑞, M·洛克西金 申請人:英特爾公司