使用前綴對(duì)isa指令的標(biāo)志非修改擴(kuò)展的制作方法
【專利摘要】在一個(gè)實(shí)施例中,處理器包括接收并解碼具有前綴和操作碼的指令的指令解碼器,基于操作碼執(zhí)行指令的執(zhí)行單元,基于指令的所述前綴防止執(zhí)行單元修改處理器的標(biāo)志寄存器的標(biāo)志修改覆蓋邏輯。
【專利說明】使用前綴對(duì)ISA指令的標(biāo)志非修改擴(kuò)展
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的各實(shí)施例一般涉及指令處理設(shè)備。更具體而言,本發(fā)明的各實(shí)施例涉及帶有使用前綴的標(biāo)志非修改擴(kuò)展的指令處理設(shè)備。
[0002]背景
[0003]諸如整數(shù)寄存器之類的通用寄存器(GPR)中涉及的指令廣泛地用于諸如x86體系結(jié)構(gòu)之類的指令集體系結(jié)構(gòu)(ISA)中。大多數(shù)x86GPR(例如,x87或單指令多數(shù)據(jù)(SIMD)/高級(jí)矢量擴(kuò)展(AVX)寄存器之外的整數(shù)寄存器)操作寫入到整數(shù)寄存器,并操縱x86算術(shù)標(biāo)志寄存器。例如,諸如ADD指令之類的加法指令修改標(biāo)志(例如,OF、SF、ZF、AF、CF以及PF標(biāo)志)并更新GPR目的地。諸如INC之類的增大指令還修改標(biāo)志(例如,0F、SF、ZF、AF、CF以及PF)并更新GPR目的地。這常常是不需要的修改,由于不需要的依賴關(guān)系鏈,還會(huì)增加復(fù)雜性和潛在的性能影響。
[0004]附圖簡(jiǎn)述
[0005]本發(fā)明的各實(shí)施例是作為示例說明的,而不僅限于各個(gè)附圖的圖形,在附圖中,類似的參考編號(hào)表示類似的元件。
[0006]圖1是示出了根據(jù)一實(shí)施例的處理器的示例的框圖。
[0007]圖2是示出了根據(jù)一實(shí)施例的指令的示例的框圖。
[0008]圖3是示出了根據(jù)一實(shí)施例的處理器的示例的框圖。
[0009]圖4是示出了標(biāo)志寄存器的示例的框圖。
[0010]圖5是示出了根據(jù)一實(shí)施例的與基于AVX的指令一起使用的VEX前綴編碼的框圖。
[0011]圖6是示出了根據(jù)一實(shí)施例的處理指令的方法的流程圖。
[0012]圖7是示出了根據(jù)一實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。
[0013]圖8是示出了根據(jù)另一實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。
【具體實(shí)施方式】
[0014]下面將參考下面所討論的細(xì)節(jié)來描述本發(fā)明的各實(shí)施例和各方面,各個(gè)附圖將示出各實(shí)施例。下面的描述和圖形只是本發(fā)明的說明,而不作為對(duì)本發(fā)明的限制。描述了很多具體細(xì)節(jié),以便全面地理解本發(fā)明的各實(shí)施例。然而,在某些實(shí)例中,沒有描述公知的或常規(guī)的細(xì)節(jié),以便提供對(duì)本發(fā)明的各實(shí)施例的簡(jiǎn)潔的討論。
[0015]在本說明書中對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”的引用意思是結(jié)合該實(shí)施例一起描述的特定特征、結(jié)構(gòu)或特征可以被包括在本發(fā)明的至少一個(gè)實(shí)施例中。在本說明書中的不同位置出現(xiàn)短語“在一個(gè)實(shí)施例中”不一定都是指同一個(gè)實(shí)施例。
[0016]根據(jù)某些實(shí)施例,使用指令的前綴來當(dāng)由處理器執(zhí)行指令的操作碼時(shí)提供是否應(yīng)該修改寄存器的標(biāo)志的指示。操作碼可以是x86兼容的操作碼(例如,x86舊式操作碼)。在一個(gè)實(shí)施例中,當(dāng)在處理器中接收到指令時(shí),諸如指令解碼器之類的處理邏輯被配置成檢查前綴的一個(gè)或更多比特的比特模式,以判斷指令的操作碼在被執(zhí)行時(shí)是否應(yīng)該被允許修改諸如標(biāo)志寄存器、狀態(tài)寄存器和/或條件碼寄存器等寄存器的標(biāo)志。如果比特模式匹配預(yù)定的模式,則防止執(zhí)行操作碼的執(zhí)行單元修改通常將通過操作碼的執(zhí)行修改的標(biāo)志。
[0017]圖1是示出了根據(jù)一實(shí)施例的處理器的示例的框圖。參考圖1,處理器100可以表示任何類型的指令處理設(shè)備。例如,處理器101可以是通用處理器。處理器100可以是各種復(fù)雜指令集計(jì)算(CISC)處理器、各種精簡(jiǎn)指令集計(jì)算(RISC)處理器、各種超長(zhǎng)指令字(VLIff)處理器中的任何一種其各種混合型或全部其他類型的處理器中的任一個(gè)。在一個(gè)實(shí)施例中,處理器100包括接收和解碼指令106的指令解碼器101。指令解碼器101生成并輸出一個(gè)或多個(gè)微操作、微代碼、入口點(diǎn)、微指令、其他指令或其他控制信號(hào),它們反映或來源于指令106。指令解碼器101可以使用各種不同的機(jī)制來實(shí)現(xiàn)。合適的機(jī)制的示例包括,但不僅限于,微代碼只讀存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)等等。
[0018]處理器100還包括一個(gè)或多個(gè)執(zhí)行單元102,該執(zhí)行單元102可以包括算術(shù)邏輯單元或能夠基于指令106來執(zhí)行操作的另一種類型的邏輯單元。作為指令解碼器101解碼指令106的結(jié)果,執(zhí)行單元102可以接收一個(gè)或多個(gè)微操作、微代碼入口點(diǎn)、微指令、其他指令或其他控制信號(hào),它們反映或來源于指令106。執(zhí)行單元102可以作為指令106指出源操作數(shù)(SRC) 108的結(jié)果而可操作,并將結(jié)果存儲(chǔ)到寄存器組105的目的地操作數(shù)(DEST) 109中。執(zhí)行單元102可以包括可操作以執(zhí)行指令或從指令106導(dǎo)出的其他控制信號(hào)的電路或其他執(zhí)行邏輯(例如,與硬件和/或固件相結(jié)合的軟件),并相應(yīng)地執(zhí)行操作。執(zhí)行單元102可以表示諸如邏輯單元、算術(shù)邏輯單元(ALU)、算術(shù)單元、整數(shù)單元等任何類型的執(zhí)行單元。
[0019]在一個(gè)實(shí)施例中,指令106可以隱式地指出和/或顯式地指定(例如,通過一個(gè)或多個(gè)專用的字段或比特組)源和目的地操作數(shù)。操作數(shù)的合適的源的示例包括寄存器、存儲(chǔ)器、指令的立即數(shù)(immediate)以及其組合。在各實(shí)施例中,源和目的地操作數(shù)可以是16比特、32比特或64比特操作數(shù),雖然這不是必需的。
[0020]在一個(gè)實(shí)施例中,源和目的地操作數(shù)中的某些或全部可以被存儲(chǔ)在寄存器組105的寄存器中。寄存器組可以是寄存器文件的一部分,以及潛在地,諸如狀態(tài)寄存器、標(biāo)志寄存器等等之類的其他寄存器。寄存器可以是可以被用來存儲(chǔ)數(shù)據(jù)的存儲(chǔ)位置或設(shè)備。寄存器組常??梢栽谖锢砩衔挥趲в袌?zhí)行單元的晶片中。寄存器可以從處理器的外部或從編程器的角度可見。例如,指令可以指定存儲(chǔ)在寄存器中的操作數(shù)。各種不同類型的寄存器都是合適的,只要它們能夠存儲(chǔ)和提供如此處所描述的數(shù)據(jù)。寄存器可以被重命名,也可以不被重命名。合適的寄存器的示例包括但不僅限于專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)地分配的物理寄存器、專用和動(dòng)態(tài)地分配的物理寄存器的組合,等等??闪磉x地,源和目的地操作數(shù)中的一個(gè)或多個(gè)可以被存儲(chǔ)在存儲(chǔ)位置,而不是寄存器中,諸如,例如,系統(tǒng)存儲(chǔ)器中的位置。
[0021]回頭參考圖1,在一個(gè)實(shí)施例中,指令106可以包括至少如圖2所示的前綴和操作碼。參考圖1和2,圖2的指令200可以表示圖1的指令106。在一個(gè)實(shí)施例中,指令200包括前綴201和操作碼202。當(dāng)指令200由指令解碼器101接收到時(shí),根據(jù)一實(shí)施例,指令解碼器101被配置成基于要由執(zhí)行單元102執(zhí)行的操作碼202,生成一個(gè)或多個(gè)微代碼操作或微指令。另外,指令解碼器101被配置成作為由指令解碼器101所提供的微代碼操作或微指令的執(zhí)行的結(jié)果,檢查前綴201的一個(gè)或多個(gè)比特,以判斷執(zhí)行單元102是否可以修改寄存器104的標(biāo)志107中的至少一個(gè)。[0022]在一個(gè)實(shí)施例中,當(dāng)前綴201的一個(gè)或多個(gè)比特的比特模式匹配預(yù)定的模式時(shí),指令解碼器101將標(biāo)志修改覆蓋(FMO)信號(hào)110傳輸?shù)紽MO邏輯103。FMO邏輯103被配置成截取來自執(zhí)行單元102的修改標(biāo)志107中的任何一個(gè)的嘗試并防止或覆蓋這樣的嘗試。如果前綴201的一個(gè)或多個(gè)比特的比特模式不匹配預(yù)定的比特模式,則FMO邏輯103可以允許執(zhí)行單元102修改標(biāo)志107。存儲(chǔ)在前綴201和/或操作碼202中的信息可以由編譯器和/或編程器來填充。FMO邏輯103可以以硬件、固件、軟件或其組合來實(shí)現(xiàn)。請(qǐng)注意,前綴201的特定比特模式可以指出,可以修改特定標(biāo)志,而其他標(biāo)志可能不可修改。如此,前綴201的比特模式規(guī)定,標(biāo)志107中的哪些能還是不能由執(zhí)行單元102修改。還要注意,只為說明目的,圖2的指令200的格式被示出和描述;也可以應(yīng)用其他格式。
[0023]在一個(gè)實(shí)施例中,在從操作碼中生成微代碼操作或微指令之前,指令解碼器101被配置成,給定操作碼202中所提供的操作碼,檢查具有特定比特模式的前綴201是否有效。如果基于操作碼202判斷前綴201是無效的,則生成異常(例如,#UD),操作碼可以不被執(zhí)行。此外,給定處理器100的能力,指令解碼器101還可以檢查指令200是否是有效的,處理器的能力可以基于諸如圖3所示的CPUID之類的處理器標(biāo)識(shí)符確定。參考圖3,基于諸如前綴201、操作碼202和/或處理器ID203之類的信息,指令解碼器101被配置成,如果確定指令是無效的,則生成異常204 (例如,未定義的或UD操作)。否則,指令解碼器101基于前綴201和/或操作碼202,以及要由執(zhí)行單元102執(zhí)行的一個(gè)或多個(gè)微代碼操作或微指令,生成FMO信號(hào)110?;仡^參考圖1,基于FMO信號(hào)110,F(xiàn)MO邏輯103被配置成截取來自執(zhí)行單元102的修改寄存器104的標(biāo)志107的修改嘗試,其中,F(xiàn)MO邏輯103依據(jù)指令106的特定前綴可以允許或可以不允許這樣的修改。
[0024]在一個(gè)實(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)制I或二進(jìn)制O。比特可以存儲(chǔ)二進(jìn)制值或代碼的序列。這樣的二進(jìn)制值,或二進(jìn)制值的序列,可以表示標(biāo)志的不同的值。標(biāo)志的這些不同的值可以具有針對(duì)處理器100或其他邏輯器件的指定的或理解的含義。標(biāo)志107可以用于各種不同的目的。在某些情況下,標(biāo)志107可以被用來記錄處理器100或其他邏輯器件內(nèi)的操作的狀態(tài)、條件或結(jié)果。標(biāo)志107可以包括進(jìn)位標(biāo)志(CF)、溢出標(biāo)志(0F)、符號(hào)標(biāo)志(SF)、零標(biāo)志(ZF)、輔助進(jìn)位標(biāo)志(AF)或奇偶標(biāo)志(PF),或其組合,如圖4所示。請(qǐng)注意,并非所有這樣的標(biāo)志都可以被包括在所有處理器或其他邏輯器件中。另外,不同的名稱有時(shí)用于這些不同的標(biāo)志。
[0025]根據(jù)一實(shí)施例,指令106的至少一個(gè)前綴與位于加利福尼亞州圣克拉拉的英特爾公司的基于高級(jí)矢量擴(kuò)展(AVX)的ISA兼容。實(shí)施例使用基于AVX的指令的AVX前綴來將“標(biāo)志非修改”指示編碼為ISA。通過前綴這樣做,允許此擴(kuò)展廣泛地應(yīng)用于現(xiàn)有的舊式X86GPR指令操作碼組。這可以應(yīng)用于各種模式,諸如16比特、32比特或64比特模式。通過在前綴空間中添加標(biāo)志非修改指示,實(shí)施例允許豐富的標(biāo)志非修改指令組被生成,而同時(shí)使用大部分預(yù)先存在的舊式硬件,只需略微的改變。
[0026]在一個(gè)實(shí)施例中,使用一個(gè)或多個(gè)AVX前綴比特來向?qū)懭胝麛?shù)GPR目的地和更新一個(gè)或多個(gè)算術(shù)標(biāo)志比特的任何或所有舊式整數(shù)指令操作碼表示標(biāo)志非修改。這樣的前綴避免了每當(dāng)需要對(duì)于現(xiàn)有的舊式指令的標(biāo)志非修改時(shí),新操作碼和對(duì)應(yīng)的解碼器硬件需要被定義。
[0027]圖5是示出了根據(jù)一實(shí)施例的與基于AVX的指令一起使用的VEX前綴編碼的框圖。參考圖5,基于AVX的前綴包括3字節(jié)C4VEX編碼510或2字節(jié)C5VEX編碼520。前綴510和520中的任何一個(gè)都可以實(shí)現(xiàn)為圖2的前綴201的一部分。在一個(gè)實(shí)施例中,使用L比特501來指出執(zhí)行單元是否應(yīng)該被允許修改諸如圖1的寄存器104之類的寄存器的標(biāo)志。通常,L比特501只有在指令的操作碼是基于矢量的指令的情況下才是有效的,其中,L比特表示矢量長(zhǎng)度,如圖5所示。否則,可以生成指出指令無效的錯(cuò)誤(#UD)。
[0028]在一個(gè)實(shí)施例中,使用基于AVX的指令的VEX前綴編碼的“L”比特來指出是否應(yīng)該通過與諸如整數(shù)GPR指令之類的x86指令相關(guān)聯(lián)的操作碼來允許修改標(biāo)志。通常,如果L比特被設(shè)置為非零的邏輯值,而操作碼是整數(shù)GPR指令,則將生成異?;蝈e(cuò)誤。在此實(shí)施例中,使用L比特來表示對(duì)于整數(shù)GPR指令的標(biāo)志非修改指示。如此,代替發(fā)出異常,指令解碼器可以將L比特解釋為標(biāo)志非修改指示,只要標(biāo)志非修改擴(kuò)展被啟用,這可以基于處理指令的處理器的類型(諸如CPWD)來確定。例如,在CPUID標(biāo)志被設(shè)置為預(yù)定值的情況下,如果指令解碼器檢測(cè)到基于AVX的指令中的非零的L比特,則指令解碼器將不再觸發(fā)異?;蝈e(cuò)誤;相反,指令解碼器將它表示為標(biāo)志非修改擴(kuò)展。
[0029]根據(jù)另一實(shí)施例,可以使用VEX前綴編碼中的多個(gè)比特的組合來用于標(biāo)志非修改擴(kuò)展?;仡^參考圖5,可以使用在典型的矢量指令中的沒有使用的某些比特,諸如“_11111”比特502,來指出是否應(yīng)該由執(zhí)行單元修改標(biāo)志。在此實(shí)施例中,在常規(guī)基于矢量的指令中,不使用比特502的上三個(gè)比特503。結(jié)果,可以使用比特503的組合的某些比特模式來指出是否應(yīng)該修改標(biāo)志。請(qǐng)注意,L比特501的組合中的比特502的某些也可以用于相同目的。
[0030]圖6是示出了根據(jù)一實(shí)施例的處理指令的方法的流程圖。例如,方法600可以通過圖1的指令解碼器101來執(zhí)行。參考圖6,在框601,響應(yīng)于在處理器處接收到的指令,從指令中提取前綴和操作碼。在框602,處理邏輯將檢查前綴的一個(gè)或多個(gè)比特,并考慮到操作碼和處理器的能力(例如,CPWD),以判斷前綴比特是否有效。如果否,則在框606,生成異常。如果前綴或指令有效,則在框603,處理邏輯生成要由執(zhí)行單元執(zhí)行的一個(gè)或多個(gè)微代碼操作或微指令。在框604,處理邏輯檢查前綴的一個(gè)或多個(gè)比特,以判斷比特是否匹配預(yù)定的比特模式。如果是,則在框605,作為微代碼操作或微指令的執(zhí)行的結(jié)果,處理邏輯覆蓋執(zhí)行單元修改標(biāo)志的嘗試。
[0031]圖7是示出了根據(jù)本發(fā)明的一實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。系統(tǒng)900的處理器901可以表示如上文所描述的圖1的處理器100。系統(tǒng)900可以表示臺(tái)式機(jī)、膝上型計(jì)算機(jī)、平板電腦、服務(wù)器、移動(dòng)電話(例如,智能電話)、媒體播放器、個(gè)人數(shù)字助理(PDA)、個(gè)人通信器、游戲設(shè)備、網(wǎng)絡(luò)路由器或中樞、無線接入點(diǎn)或中繼器、機(jī)頂盒,或其組合。請(qǐng)注意,盡管圖7示出了數(shù)據(jù)處理系統(tǒng)的各種組件,但是,并不旨在表示互連這些組件的任何特定體系結(jié)構(gòu)或方式;因?yàn)檫@樣的細(xì)節(jié)不是與本發(fā)明的各實(shí)施例有密切關(guān)系的。還可以理解,也可以與本發(fā)明的各實(shí)施例一起使用具有少一些的組件或也許多一些的組件的網(wǎng)絡(luò)計(jì)算機(jī)、手持式計(jì)算機(jī)、移動(dòng)電話及其他數(shù)據(jù)處理系統(tǒng)。
[0032]參考圖7,在一個(gè)實(shí)施例中,系統(tǒng)900包括處理器901,以及通過總線或互連將各種組件(包括存儲(chǔ)器905以及設(shè)備903-904)耦合到處理器901的芯片組902。處理器901可以表示帶有單一處理器核或多個(gè)處理器核909的單一處理器或多個(gè)處理器。處理器901可以表示一個(gè)或多個(gè)通用處理器,諸如微處理器、中央處理單元(CPU)等等。更具體而言,處理器901可以是復(fù)雜指令集計(jì)算(CISC)微處理器、精簡(jiǎn)指令集計(jì)算(RISC)微處理器、超長(zhǎng)指令字(VLIW)微處理器或?qū)崿F(xiàn)其他指令集的處理器或?qū)崿F(xiàn)指令集的組合的處理器。處理器901還可以是一個(gè)或多個(gè)專用的處理器,諸如專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、數(shù)字信號(hào)處理器(DSP)、網(wǎng)絡(luò)處理器、圖形處理器、網(wǎng)絡(luò)處理器、通信處理器、密碼處理器、協(xié)處理器、嵌入式處理器或能夠處理指令的任何其他類型的邏輯。例如,處理器901可以是位于加利福尼亞州圣克拉拉的英特爾公司所提供的奔騰? 4、奔騰?雙核、Core?2Duo and Quad、Xeon?、Itanium?、XScale?、Core?i7> Core?i5> CeleronCRjiik1StrongARM?微處理器。處理器901被配置成執(zhí)行用于執(zhí)行此處所討論的操作和步驟的指令。
[0033]處理器901可以包括可以接收和解碼各種指令的指令解碼器。解碼器可以生成并輸出一個(gè)或多個(gè)微操作、微代碼入口點(diǎn)、微指令、其他指令或其他控制信號(hào),它們反映、或來源于原始輸入指令。解碼器可以使用各種不同的機(jī)制來實(shí)現(xiàn)。合適的機(jī)制的示例包括,但不僅限于,微代碼只讀存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)等等。
[0034]解碼器可以不是處理器901的必需組件。在一個(gè)或多個(gè)其他實(shí)施例中,處理器901可以相反具有指令仿真器、指令轉(zhuǎn)換器、指令變形器、指令解釋器,或其他指令轉(zhuǎn)換邏輯。各種不同類型的指令仿真器、指令變形器、指令轉(zhuǎn)換器等等是已知的。指令轉(zhuǎn)換邏輯可以接收比特范圍隔離指令,模仿、轉(zhuǎn)換、變形、解釋,或以別的方式轉(zhuǎn)換比特范圍隔離指令,并輸出對(duì)應(yīng)于原始比特范圍隔離指令的一個(gè)或多個(gè)指令或控制信號(hào)。指令轉(zhuǎn)換邏輯可以以軟件、硬件、固件或其組合來實(shí)現(xiàn)。在某些情況下,指令轉(zhuǎn)換邏輯中的某些或全部可與指令處理設(shè)備其余部分一起位于晶片外,諸如單獨(dú)的管芯或在系統(tǒng)存儲(chǔ)器中。在某些情況下,指令處理設(shè)備可以具有解碼器和指令轉(zhuǎn)換邏輯。
[0035]處理器901和/或核909還可以包括與解碼器的輸出耦合,或以別的方式與解碼器的輸出進(jìn)行通信的一個(gè)或多個(gè)執(zhí)行單元。術(shù)語“耦合”可以表示,兩個(gè)或更多元件直接電接觸或連接。然而,“耦合”還可以表示,兩個(gè)或更多元件不彼此直接連接,但是,仍合作或相互進(jìn)行交互或通信(例如,通過中間組件)。作為一個(gè)示例,解碼器和執(zhí)行單元可以通過中間可選緩沖器或本領(lǐng)域已知可能耦合在解碼器和執(zhí)行單元之間的其他組件彼此耦合。處理器901和/或核909還可以包括多種不同類型的執(zhí)行單元,諸如,例如,算術(shù)單元、算術(shù)邏輯單元(ALU)、整數(shù)單元等等。
[0036]處理器901還可以包括一個(gè)或多個(gè)寄存器文件,包括,但不僅限于,整數(shù)寄存器、浮點(diǎn)寄存器、矢量或擴(kuò)充寄存器、狀態(tài)寄存器以及指令指針寄存器等等。此處使用術(shù)語“寄存器”來指被用作標(biāo)識(shí)操作數(shù)的宏指令的一部分的板上的處理器存儲(chǔ)位置。換言之,此處引用的寄存器是從處理器外部可見的那些寄存器(從編程器的角度來看)。然而,寄存器在含義上不應(yīng)該限于特定類型的電路。相反,寄存器只需能夠存儲(chǔ)和提供數(shù)據(jù)并執(zhí)行此處所描述的功能。此處所描述的寄存器可以通過處理器內(nèi)的電路使用任意數(shù)量的不同的技術(shù)來實(shí)現(xiàn),諸如專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)地分配的物理寄存器、專用和動(dòng)態(tài)地分配的物理寄存器的組合等等。在一個(gè)實(shí)施例中,整數(shù)寄存器存儲(chǔ)32比特或64比特整數(shù)數(shù)據(jù)。寄存器文件可以包含用于打包的數(shù)據(jù)的擴(kuò)展的多媒體SIMD寄存器(例如,XMM)。這樣的寄存器可以包括涉及SSE2、SSE3、SSE4、GSSE或以外的(一般地稱為“SSEx”)技術(shù)的128比特寬的XMM寄存器和256比特寬的寄存器(可以包括其低階比特的XMM寄存器)來保存這樣的打包數(shù)據(jù)操作數(shù)。
[0037]處理器901和/或核909還可以可任選地包括一個(gè)或多個(gè)其他已知的組件。例如,處理器901可以可任選地包括指令獲取邏輯、預(yù)先解碼邏輯、調(diào)度邏輯、重新排序緩沖器、分支預(yù)測(cè)邏輯、引退邏輯、寄存器重命名邏輯等等,或其某些組合。這些組件可以按常規(guī)方式實(shí)現(xiàn),或基于本發(fā)明利用對(duì)所屬領(lǐng)域的技術(shù)人員顯而易見的微小修改。為了理解此處的實(shí)施例,不需要這些組件的進(jìn)一步的描述,雖然進(jìn)一步的描述輕松地獲得,在需要時(shí),在公開文獻(xiàn)中。有已知的這樣的組件的很多不同的組合和配置。范圍不僅限于任何已知的這樣的組合或配置。實(shí)施例可以有或者沒有這樣的額外的組件地實(shí)現(xiàn)。
[0038]芯片組902可以包括存儲(chǔ)器控制中樞(MCH)910和輸入輸出控制中樞(ICH)911。MCH910可以包括與存儲(chǔ)器905進(jìn)行通信的存儲(chǔ)器控制器(未示出的)。MCH910還可以包括與圖形設(shè)備912進(jìn)行通信的圖形接口。在本發(fā)明的一個(gè)實(shí)施例中,圖形接口可以通過加速圖形端口(AGP)、外圍組件互連(PCI)快速總線或其他類型的互連,與圖形設(shè)備912進(jìn)行通信。ICH911可以提供到諸如設(shè)備903-904之類的I/O設(shè)備的接口。設(shè)備903-904中的任何一個(gè)都可以是存儲(chǔ)設(shè)備(例如,硬盤驅(qū)動(dòng)器、閃存設(shè)備)、通用串行總線(USB)端口、鍵盤、鼠標(biāo)、并行端口、串行端口、打印機(jī)、網(wǎng)絡(luò)接口(有線或無線)、無線收發(fā)器(例如,WiF1、藍(lán)牙,或蜂窩收發(fā)器)、媒體設(shè)備(例如,音頻/視頻編解碼器或控制器)、總線橋接器(例如,PC1-PCI橋接器),或其組合。
[0039]MCH910有時(shí)被稱為北橋,而ICH911有時(shí)被稱為南橋,雖然有些人在它們之間作出技術(shù)的區(qū)別。如此處所使用的,術(shù)語“MCH”、“ICH”、“北橋”、“南橋”從廣義上來解釋以涵蓋其功能包括向處理器傳遞中斷信號(hào)的各種芯片。在某些實(shí)施例中,MCH910可以與處理器901集成。在這樣的配置中,芯片組902作為執(zhí)行MCH910和ICH911的某些功能的接口芯片來操作,如圖8中的系統(tǒng)950所示。此外,圖形加速器912還可以集成在MCH910或處理器901內(nèi)。
[0040]存儲(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),諸如,例如,來自Microsoft的Windows?操作系統(tǒng)、來自 Apple 的 Mac OS?/iOS?、來自 Google?的 Android?、Linux?、Unix?.或其他實(shí)時(shí)操作系統(tǒng)。在一個(gè)實(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)對(duì)點(diǎn)互連。術(shù)語“FSB”旨在覆蓋到處理器901的各種類型的互連。芯片組902可以通過點(diǎn)對(duì)點(diǎn)接口來與諸如設(shè)備903-904之類的其他設(shè)備進(jìn)行通信。
[0041]緩存908可以是任何類型的處理器緩存,諸如級(jí)別I (LI)緩存、L2緩存、L3緩存、L4緩存、末級(jí)緩存(LLC)或其組合。緩存908可以被與處理器901的處理器核909共享。緩存908可以嵌入在處理器901內(nèi)和/或在處理器901外部??梢栽诤?09之間共享緩存908。可另選地,核909中的至少一個(gè)還包括嵌入在其中的其自己的本地緩存(例如,緩存908A-908N)。核909中的至少一個(gè)可以使用本地緩存和與核909中的另一個(gè)共享的緩存兩者。處理器901還可以包括直接緩存訪問(DCA)邏輯,以允許諸如設(shè)備903-904之類的其他設(shè)備直接訪問緩存908。處理器901和/或芯片組902還可以包括中斷控制器,諸如高級(jí)可編程中斷控制器(APIC),以處理諸如消息信令中斷之類的中斷。
[0042]前面的詳細(xì)描述的某些部分以算法、和/或?qū)τ?jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)位的操作的符號(hào)表示法的形式存在。這些算法描述和表示法是那些精通數(shù)據(jù)處理技術(shù)的人所使用的最有效地將他們的工作的實(shí)質(zhì)傳遞到精通技術(shù)的其他人的方式。算法,這里一般是指導(dǎo)致所希望的結(jié)果的操作的獨(dú)立的序列。操作是那些需要對(duì)物理量進(jìn)行物理操縱的操作。
[0043]然而,應(yīng)該記住,所有這些和/或類似的術(shù)語將與適當(dāng)?shù)奈锢砹筷P(guān)聯(lián),僅僅是應(yīng)用于這些量的方便的標(biāo)記。除非特別聲明,從上文的討論中顯而易見地看出,應(yīng)該理解,在整個(gè)本說明書中,利用諸如在下面的權(quán)利要求中所闡述的術(shù)語的討論,引用了計(jì)算機(jī)系統(tǒng),和/或類似的電子計(jì)算設(shè)備的動(dòng)作和/或進(jìn)程,它們操縱和/或轉(zhuǎn)換表示為計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)的物理(電子)量的數(shù)據(jù),將這些數(shù)據(jù)轉(zhuǎn)換為類似地表示為計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器和/或其他這樣的信息存儲(chǔ)器、傳輸和/或顯示設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。
[0044]圖形所示出的技術(shù)可以使用在一個(gè)或多個(gè)電子設(shè)備上存儲(chǔ)和執(zhí)行的代碼和數(shù)據(jù)來實(shí)現(xiàn)。這樣的電子設(shè)備使用計(jì)算機(jī)可讀取的介質(zhì),諸如非瞬時(shí)的計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)(例如,磁盤;光盤;隨機(jī)存取存儲(chǔ)器;只讀存儲(chǔ)器;閃存設(shè)備;相變存儲(chǔ)器)和瞬時(shí)的計(jì)算機(jī)可讀的通信介質(zhì)(例如,電氣,光學(xué),聲音或其他形式的傳播的信號(hào)——諸如載波,紅外信號(hào)、數(shù)字信號(hào)等等),存儲(chǔ)和傳遞(內(nèi)部以及與其他計(jì)算設(shè)備,通過網(wǎng)絡(luò))代碼和數(shù)據(jù)。
[0045]前面的圖形中所描繪的進(jìn)程或方法可以通過包括硬件(例如,電路、專用邏輯等等)、固件、軟件(例如,在非瞬時(shí)的計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)),或兩者的組合的處理邏輯來執(zhí)行。雖然上文是利用某些順序操作來描述進(jìn)程或方法的,但是,應(yīng)該理解,所描述的某些操作可以以不同的順序來執(zhí)行。此外,某些操作也可以并行地而并非按順序執(zhí)行。
[0046]在前述的說明書中,參考其特定示例性實(shí)施例描述了本發(fā)明的各實(shí)施例。顯然,在不偏離如下面的權(quán)利要求所闡述的本發(fā)明的更廣泛的精神和范圍的情況下,可以作出各種修改。相應(yīng)地,說明書和附圖應(yīng)被視為說明性的,而不是限制性的。
【權(quán)利要求】
1.一種方法,包括: 響應(yīng)于在處理器中接收到的具有前綴和操作碼的指令,由所述處理器的執(zhí)行單元,基于所述操作碼,執(zhí)行所述指令;以及 基于所述指令的所述前綴,防止所述執(zhí)行單元修改所述處理器的標(biāo)志寄存器。
2.如權(quán)利要求1所述的方法,還包括: 從所述指令中提取所述前綴;以及 基于所述前綴,并考慮所述處理器的能力,判斷所述指令是否有效,其中只有在所述指令有效的情況下,所述執(zhí)行單元才執(zhí)行所述指令。
3.如權(quán)利要求2所述的方法,其特征在于,判斷所述指令是否有效包括考慮標(biāo)識(shí)所述處理器的類型的處理器標(biāo)識(shí)符,檢查所述前綴的一個(gè)或多個(gè)比特的值。
4.如權(quán)利要求2所述的方法,還包括,基于所述處理器的所述能力,如果所述前綴的一個(gè)或多個(gè)比特匹配預(yù)定的比特模式,則生成指出所述指令無效的異常。
5.如權(quán)利要求1所述的方法,還包括: 如果所述前綴的一個(gè)或多個(gè)比特匹配第一預(yù)定的比特模式,則防止所述執(zhí)行單元修改所述標(biāo)志寄存器;以及 如果所述前綴的一個(gè)或多個(gè)比特匹配第二預(yù)定的比特模式,則允許所述執(zhí)行單元修改所述標(biāo)志寄存器。
6.如權(quán)利要求1所述的方法,其特征在于,所述指令的所述操作碼表示整數(shù)操作,該整數(shù)操作在執(zhí)行時(shí),通常將修改所述標(biāo)志寄存器。
7.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述操作碼包括由所述處理器支持的矢量指令時(shí),所述前綴表示矢量長(zhǎng)度。
8.一種處理器,包括: 接收并解碼具有前綴和操作碼的指令的指令解碼器; 基于所述操作碼來執(zhí)行所述指令的執(zhí)行單元;以及 基于所述指令的所述前綴,防止所述執(zhí)行單元修改所述處理器的標(biāo)志寄存器的標(biāo)志修改覆蓋邏輯。
9.如權(quán)利要求8所述的處理器,其特征在于,所述指令解碼器從所述指令中提取所述前綴,并基于所述前綴,并考慮所述處理器的能力,判斷所述指令是否有效,其中只有在所述指令有效的情況下,所述執(zhí)行單元才執(zhí)行所述指令。
10.如權(quán)利要求9所述的處理器,其特征在于,所述指令解碼器考慮標(biāo)識(shí)所述處理器的類型的處理器標(biāo)識(shí)符,檢查所述前綴的一個(gè)或多個(gè)比特的值。
11.如權(quán)利要求9所述的處理器,其特征在于,基于所述處理器的所述能力,如果所述前綴的一個(gè)或多個(gè)比特匹配預(yù)定的比特模式,則所述指令解碼器生成指出所述指令無效的異常。
12.如權(quán)利要求8所述的處理器,其特征在于,所述標(biāo)志修改覆蓋邏輯將 如果所述前綴的一個(gè)或多個(gè)比特匹配第一預(yù)定的比特模式,則防止所述執(zhí)行單元修改所述標(biāo)志寄存器,以及 如果所述前綴的一個(gè)或多個(gè)比特匹配第二預(yù)定的比特模式,則允許所述執(zhí)行單元修改所述標(biāo)志寄存器。
13.如權(quán)利要求8所述的處理器,其特征在于,所述指令的所述操作碼表示整數(shù)操作,該整數(shù)操作在執(zhí)行時(shí),通常將修改所述標(biāo)志寄存器。
14.如權(quán)利要求8所述的處理器,其特征在于,當(dāng)所述操作碼包括由所述處理器支持的矢量指令時(shí),所述前綴表示矢量長(zhǎng)度。
15.—種系統(tǒng),包括: 互連; 處理器,所述處理器耦合到所述互連以接收并解碼具有前綴和操作碼的指令,基于所述操作碼,執(zhí)行所述指令,并基于所述指令的所述前綴,防止所述處理器對(duì)標(biāo)志寄存器的修改;以及 耦合到所述互連的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
16.如權(quán)利要求15所 述的系統(tǒng),其特征在于,所述處理器將從所述指令中提取所述前綴,并基于所述前綴,并考慮所述處理器的能力,判斷所述指令是否有效,其中只有在所述指令有效的情況下,所述處理器才執(zhí)行所述指令。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器考慮標(biāo)識(shí)所述處理器的類型的處理器標(biāo)識(shí)符檢查所述前綴的一個(gè)或多個(gè)比特的值。
18.如權(quán)利要求16所述的系統(tǒng),其特征在于,基于所述處理器的所述能力,如果所述前綴的一個(gè)或多個(gè)比特匹配預(yù)定的比特模式,則所述處理器生成指出所述指令無效的異常。
19.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述處理器將 如果所述前綴的一個(gè)或多個(gè)比特匹配第一預(yù)定的比特模式,則防止所述執(zhí)行單元修改所述標(biāo)志寄存器,以及 如果所述前綴的一個(gè)或多個(gè)比特匹配第二預(yù)定的比特模式,則允許所述執(zhí)行單元修改所述標(biāo)志寄存器。
20.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述指令的所述操作碼表示整數(shù)操作,該整數(shù)操作在執(zhí)行時(shí),通常將修改所述標(biāo)志寄存器。
【文檔編號(hào)】G06F9/30GK103930867SQ201180074830
【公開日】2014年7月16日 申請(qǐng)日期:2011年11月14日 優(yōu)先權(quán)日:2011年11月14日
【發(fā)明者】J·D·庫(kù)姆斯, J·W·布蘭德特, R·凡倫天 申請(qǐng)人:英特爾公司