將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的所斷言指令的制作方法
【專利摘要】本申請(qǐng)涉及將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的所斷言指令。一種處理器可操作用于處理有條件分支。該處理器包括用于提取有條件短前向分支的指令提取邏輯。有條件短前向分支用于包括有條件分支指令以及以程序次序順序跟隨有條件分支指令的一組一個(gè)或多個(gè)指令。該組一個(gè)或多個(gè)指令在有條件分支指令與由有條件分支指令指示的前向分支目標(biāo)指令之間。該處理器還包括與指令提取邏輯耦合的指令轉(zhuǎn)換邏輯。指令轉(zhuǎn)換邏輯用于將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。也公開了其它處理器,以及各種方法和系統(tǒng)。
【專利說明】將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的所斷言指令
【技術(shù)領(lǐng)域】
[0001]本文中所描述的實(shí)施例一般涉及處理器。具體而言,本文所描述的實(shí)施例一般涉及對(duì)處理器中有條件分支的處理。
【背景技術(shù)】
[0002]某些處理器使用流水線化執(zhí)行來交疊執(zhí)行階段。這可以允許多個(gè)指令同時(shí)處在不同的執(zhí)行階段,這可能有助于改進(jìn)性能。所取得的并行量往往隨著流水線深度的增加而增力口。隨著時(shí)間的流逝,某些處理器在嘗試改進(jìn)性能時(shí)已引入更深的流水線。當(dāng)指令流為已知時(shí),這些深流水線往往更有效,由此流水線可保持飽滿,并且后續(xù)指令的執(zhí)行不需要等待流水線中先前指令的結(jié)果。
[0003]一個(gè)挑戰(zhàn)在于,由處理器執(zhí)行的程序或代碼通常包含有條件分支。這種有條件分支的示例包括“如果條件被滿足或未被滿足則跳轉(zhuǎn)”之類的指令,以及本領(lǐng)域公知的其它有條件控制流改變指令。有條件分支可以使執(zhí)行流有條件地分支到兩個(gè)可能方向之一。這兩個(gè)方向通常被稱為“選取路徑”和“未選取路徑”。“未選取路徑”通常引向所執(zhí)行代碼的下一順序指令,而“選取路徑”通常跳過、運(yùn)動(dòng)或分支跨過一個(gè)或多個(gè)中間指令到非順序目標(biāo)指令。是否選取分支一般依賴于對(duì)與指令關(guān)聯(lián)的條件的評(píng)估(例如條件是否被滿足)。
[0004]為了幫助改進(jìn)性能,多數(shù)現(xiàn)代處理器具有分支預(yù)測器,以幫助在已經(jīng)確定有條件分支的實(shí)際方向之前預(yù)測有條件分支的方向。通常,在流水線后續(xù)階段實(shí)際評(píng)估條件之前,有條件分支的實(shí)際方向無法確切知曉。然而,分支預(yù)測器可以采用分支預(yù)測機(jī)構(gòu)或邏輯來預(yù)測有條件分支的方向(例如基于過去歷史)。這可以幫助改進(jìn)處理器性能。在沒有分支預(yù)測器的情況下,處理器可能必需在能夠?qū)⒏郊又噶钐崛〉搅魉€之前,等待對(duì)與有條件分支指令關(guān)聯(lián)的條件的評(píng)估。然而,分支預(yù)測器可以通過預(yù)測有條件分支的最可能方向來幫助避免這種時(shí)間浪費(fèi)。然后,所預(yù)測的分支方向可用于提取附加指令并推測地執(zhí)行這些指令。
[0005]最終,會(huì)發(fā)現(xiàn)所預(yù)測的分支方向是正確還是錯(cuò)誤。如果所預(yù)測的分支方向是正確的,則可利用推測性執(zhí)行指令的結(jié)果和/或狀態(tài)。在這種情形中,由于更多地利用在等待評(píng)估有條件分支的實(shí)際方向時(shí)原本休眠或至少未被充分利用的流水線階段,處理器的性能和速度通常會(huì)得到提高。然而,如果相反,所預(yù)測的分支方向不正確(例如分支預(yù)測器預(yù)測錯(cuò)誤),則來自超出有條件分支指令之上推測性執(zhí)行的指令的任何結(jié)果和/或狀態(tài)通常需要廢棄。通常,流水線會(huì)被清除(廢棄流水線中當(dāng)前進(jìn)行的指令),并且將執(zhí)行倒回至被錯(cuò)誤預(yù)測的有條件分支并以當(dāng)前正確知曉的替換性分支方向重新開始。這種結(jié)果通常是不期望的,因?yàn)檫@往往招致性能懲罰和能量懲罰。
【專利附圖】
【附圖說明】
[0006]通過參考用來說明本發(fā)明的實(shí)施例的以下描述和附圖,可最好地理解本發(fā)明。在附圖中:
[0007]圖1是包括有條件短前向分支的程序或代碼的一部分的流程框圖。
[0008]圖2是操作用于處理有條件分支的處理器實(shí)施例的框圖。
[0009]圖3是處理有條件分支的方法實(shí)施例的流程框圖。
[0010]圖4是示出有條件短前向分支檢測和轉(zhuǎn)換邏輯的框圖。
[0011]圖5是檢測并確定是否轉(zhuǎn)換有條件短前向分支的方法實(shí)施例的流程框圖。
[0012]圖6示出將有條件短前向分支的示例性實(shí)施例轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。
[0013]圖7是后端邏輯的實(shí)施例的框圖,該后端邏輯操作用于更新或不更新反映表示有條件短前向分支并與之計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的架構(gòu)狀態(tài)。
[0014]圖8A是示出根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線以及示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線的框圖。
[0015]圖SB是示出根據(jù)本發(fā)明的實(shí)施例的要包括在處理器中的有序架構(gòu)核示例性實(shí)施例以及示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核的框圖。
[0016]圖9A是根據(jù)本發(fā)明的實(shí)施例的連接到管芯上(on-die)互聯(lián)網(wǎng)絡(luò)且具有二級(jí)(L2)高速緩存的本地子集的單個(gè)處理器核的框圖。
[0017]圖9B是根據(jù)本發(fā)明的實(shí)施例的圖9A中的處理器核的一部分的展開圖。
[0018]圖10是根據(jù)本發(fā)明的實(shí)施例的可具有一個(gè)以上核、可具有集成存儲(chǔ)器控制器、并且可具有集成圖形器件的處理器的框圖。
[0019]圖11示出根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。
[0020]圖12示出根據(jù)本發(fā)明的實(shí)施例的第一更具體的示例性系統(tǒng)的框圖。
[0021]圖13示出根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)的框圖。
[0022]圖14示出根據(jù)本發(fā)明的實(shí)施例的片上系統(tǒng)(SoC)的框圖。
[0023]圖15是對(duì)比根據(jù)本發(fā)明實(shí)施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。
【具體實(shí)施方式】
[0024]本文所公開的是用于將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的多組一個(gè)或多個(gè)所斷言和/或有條件執(zhí)行的指令的處理器、方法和系統(tǒng)。在以下描述中,闡述了許多具體細(xì)節(jié)(例如有條件分支指令的具體類型、具體的有條件短前向分支、邏輯實(shí)現(xiàn)、處理器配置、微架構(gòu)細(xì)節(jié)、操作序列、邏輯劃分/集成細(xì)節(jié)、系統(tǒng)組件的類型和相互關(guān)系等等)。然而,應(yīng)當(dāng)理解,本發(fā)明的實(shí)施例可在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在其他情況下,沒有詳細(xì)示出已知的電路、結(jié)構(gòu)、以及技術(shù),以便不至于使本描述變得模糊。
[0025]圖1是由處理器執(zhí)行的程序或代碼100的一部分的流程框圖,包括有條件短前向分支101。有條件分支指令103位于有條件短前向分支的起點(diǎn)。有條件分支指令具有“選取路徑”和“未選取路徑”。選取路徑引向由有條件分支指令指示的前向分支目標(biāo)指令106。例如,有條件分支指令可以具有自變量或源操作數(shù)以指示前向分支目標(biāo)指令(例如指定從有條件分支指令向分支目標(biāo)指令的偏移)。
[0026]在多個(gè)實(shí)施例中,有條件分支指令可以表示有條件跳轉(zhuǎn)指令、有條件控制流轉(zhuǎn)移指令、或本領(lǐng)域公知的任何其它類型的有條件分支指令。英特爾架構(gòu)包括多個(gè)合適的有條件跳轉(zhuǎn)指令示例。合適的“如果條件被滿足則跳轉(zhuǎn)”(jcc)指令的一些代表性示例包括,但不限于:Ca)如果高于(進(jìn)位標(biāo)志=O且零標(biāo)志=0)則短跳轉(zhuǎn)指令(JA) ; (b)如果進(jìn)位(進(jìn)位標(biāo)志=0)則短跳轉(zhuǎn)指令(JC) ; (c)如果O (零標(biāo)志=1)則近跳轉(zhuǎn)指令(JZ) ;(d)如果非零(零標(biāo)志=0)則短跳轉(zhuǎn)指令(JNZ) ; Ce)如果低于或等于(進(jìn)位標(biāo)志=1且零標(biāo)志=1)則近跳轉(zhuǎn)指令(JBE)以及(f)如果不大于(零標(biāo)志=1或符號(hào)標(biāo)志古OF)則近跳轉(zhuǎn)指令(JNG)。Intel? Itanium?架構(gòu)也包括合適的分支指令。例如,br (分支)指令具有cond (有條件)類型,其中分支指令使用有資格斷言來確定是否選取該分支。如果斷言為1,則選取該分支,否則不選取該分支。一些RISC架構(gòu)也包括多個(gè)合適的有條件分支指令的示例。這種有條件分支指令的一些代表性示例包括,但不限于:(a)如果等于則分支指令(BEQ); (b)如果不等于則分支指令(BNE); (c)如果進(jìn)位清除則分支指令(BCC); (d)如果進(jìn)位置位則分支指令(BCS) ; Ce)如果有符號(hào)大于則分支指令(BGT);以及(f)如果無溢出則分支指令(BVC)。
[0027]“未選取路徑”引向一組一個(gè)或多個(gè)指令102,該組一個(gè)或多個(gè)指令102以程序次序順序地跟隨有條件分支指令,并且在有條件分支指令與由有條件分支指令指示的前向分支目標(biāo)指令之間。在所示實(shí)施例中,這些指令至少包括以程序次序緊隨有條件分支指令的指令104可任選地,在一些實(shí)施例中,有條件短前向分支101還可以在有條件分支指令與前向分支目標(biāo)指令之間以程序次序包括一個(gè)或多個(gè)其它可任選順序指令105。在一些實(shí)施例中,有條件短前向分支可以包括從I到約5或者從I到約3個(gè)指令,它們?cè)谟袟l件分支指令與前向分支目標(biāo)指令之間,但是本發(fā)明的范圍并不限于此。在其它實(shí)施例中,假如在給定架構(gòu)中(例如在Itanium架構(gòu)中)存在大量各種有條件/所斷言指令,可能還使用更多有條件前向分支。
[0028]圖2是操作用于處理有條件分支的處理器210的實(shí)施例的框圖。在一些實(shí)施例中,處理器可以是通用處理器(例如,具有在臺(tái)式、膝上型等計(jì)算機(jī)中使用的類型的通用微處理器)。替換地,處理器可以是專用處理器。合適的專用處理器的示例包括但不限于,網(wǎng)絡(luò)處理器、通信處理器、加密處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)以及控制器(例如,微控制器),僅列舉數(shù)例。處理器可以是各種復(fù)雜指令集計(jì)算(CISC)處理器、各種精簡指令集計(jì)算(RISC)處理器、各種超長指令字(VLIW)處理器、上述處理器的各種混合、或者完全其他類型的處理器中的任一個(gè)。
[0029]處理器具有前端邏輯212。前端邏輯包括指令提取邏輯213。指令提取邏輯可操作用于從存儲(chǔ)設(shè)備211提取代碼指令200,包括有條件短前向分支201的指令。在不同實(shí)施例中,存儲(chǔ)設(shè)備可以包括高速緩存(例如指令高速緩存、以及指令和數(shù)據(jù)高速緩存等等)或存儲(chǔ)器,在系統(tǒng)中進(jìn)行部署時(shí),處理器可以耦合到該高速緩存或存儲(chǔ)器。在一些實(shí)施例中,有條件短前向分支可以包括有條件分支指令以及一組一個(gè)或多個(gè)指令,該組一個(gè)或多個(gè)指令以程序次序順序地跟隨有條件分支指令并且在有條件分支指令與由有條件分支指令指示的前向分支目標(biāo)指令之間。
[0030]在一些實(shí)施例中,有條件短前向分支可以與圖1中的有條件短前向分支類似或相同?;蛘撸袟l件短前向分支可以與圖1中的不同。所提取的指令可以表示提供給處理器以便執(zhí)行的機(jī)器代碼指令、匯編語言指令、宏指令或其它相對(duì)高級(jí)指令或控制信號(hào)。這些指令可以是處理器的指令集架構(gòu)(ISA)的一部分。ISA表示與編程相關(guān)的處理器的架構(gòu)的一部分,并且通常包括處理器的本機(jī)指令、架構(gòu)寄存器、數(shù)據(jù)類型、尋址模式等。
[0031]再次參照?qǐng)D2,指令轉(zhuǎn)換邏輯214與指令提取邏輯213耦合。在一些實(shí)施例中,指令轉(zhuǎn)換邏輯可以包括指令解碼邏輯和/或位于處理器流水線的解碼級(jí)的邏輯。指令解碼邏輯在本文中還可以被稱為解碼邏輯、解碼單元或解碼器。指令轉(zhuǎn)換邏輯可以通過使用各種不同的機(jī)制來實(shí)現(xiàn),這些機(jī)制包括硬件(例如集成電路、晶體管等)、固件(例如存儲(chǔ)在非易失性存儲(chǔ)器中的指令)、軟件或其組合。在一些實(shí)施例中,指令轉(zhuǎn)換邏輯包括潛在地與一些固件和/或軟件組合的至少一些管芯上硬件邏輯。實(shí)現(xiàn)指令轉(zhuǎn)換邏輯的合適機(jī)制的示例包括但不限于,微代碼只讀存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)以及在本領(lǐng)域中已知的其他指令解碼和轉(zhuǎn)換機(jī)制。
[0032]指令轉(zhuǎn)換邏輯可以從指令提取單元接收所提取的機(jī)器指令、宏指令或其它相對(duì)高級(jí)指令或控制信號(hào)。指令轉(zhuǎn)換邏輯可以操作用于將所接收的指令或控制信號(hào)轉(zhuǎn)換成相應(yīng)的相對(duì)低級(jí)微指令、微操作、微代碼進(jìn)入點(diǎn)或其它低級(jí)指令或控制信號(hào)。合適的轉(zhuǎn)換的示例包括,但不限于,解碼、仿真、變形、翻譯、其它方式的轉(zhuǎn)換、或其組合。相對(duì)低級(jí)指令或控制信號(hào)可通過相對(duì)低級(jí)(例如,電路級(jí)或硬件級(jí))操作來實(shí)現(xiàn)相對(duì)高級(jí)指令或控制信號(hào)的操作。在一個(gè)方面,相對(duì)低級(jí)指令或控制信號(hào)可以是在本地處理器硬件(例如執(zhí)行單元、電路等)上可執(zhí)行或可實(shí)現(xiàn)的。
[0033]再次參照?qǐng)D2,在一些實(shí)施例中,有條件短前向分支201的指令還可以被提供給指令轉(zhuǎn)換邏輯214。指令轉(zhuǎn)換邏輯包括操作用于將有條件短前向分支的指令轉(zhuǎn)換成計(jì)算和/或功能等效的一組一個(gè)或多個(gè)所斷言指令的指令轉(zhuǎn)換邏輯215。在一些實(shí)施例中,所斷言指令可以與原始指令計(jì)算等效和/或功能等效,因?yàn)樗鼈兛梢詧?zhí)行與原始指令相同或等效的操作(例如算法、邏輯等等)并且它們可以在與原始指令相同或等效的操作數(shù)(例如架構(gòu)寄存器、存儲(chǔ)器位置等等)上操作。在一些實(shí)施例中,可以將有條件短前向分支中跟隨有條件分支指令的每個(gè)指令從非斷言指令轉(zhuǎn)換成相應(yīng)的功能等效的所斷言指令。
[0034]在一些實(shí)施例中,作為轉(zhuǎn)換的一部分,指令轉(zhuǎn)換邏輯215可以去除有條件分支指令。在一些實(shí)施例中,有條件分支宏指令的有條件方面可以至少在概念上與有條件短前向分支內(nèi)(例如在有條件分支指令與有條件分支指令的目標(biāo)之間)的一個(gè)或多個(gè)宏指令中的每一個(gè)組合。在一些實(shí)施例中,可以執(zhí)行轉(zhuǎn)換,其中有條件分支指令被去除(即分支方面)并且有條件方面被合并到有條件短前向分支內(nèi)的每個(gè)其它指令的解碼版本(即微指令)中。
[0035]如圖所示,在一些實(shí)施例中,對(duì)應(yīng)于和/或表示功能和/或計(jì)算等效的一組所斷言指令的指令(例如微指令)或其它控制信號(hào)216可以從指令轉(zhuǎn)換邏輯輸出到后端邏輯217,不管分支預(yù)測器是否將有條件分支指令預(yù)測為“選取”或“未選取”和/或甚至無需分支預(yù)測器進(jìn)行分支預(yù)測、和/或無需指令轉(zhuǎn)換邏輯知曉分支預(yù)測。即,表示有條件短前向分支內(nèi)指令的控制信號(hào)(如果分支被斷言為選取,則通常不會(huì)被插入到流水線中)現(xiàn)在可能被插入到流水線中,不管分支預(yù)測和/或甚至無需執(zhí)行這種分支預(yù)測。這可以幫助避免通常在分支錯(cuò)誤預(yù)測的情況下需要進(jìn)行的清除流水線和/或倒回執(zhí)行。在一些實(shí)施例中,由處理器的硬件或其它邏輯執(zhí)行轉(zhuǎn)換,而不是由軟件編譯器。
[0036]再次參照?qǐng)D2,后端邏輯217包括邏輯218,邏輯218用于基于與有條件短前向分支的原始有條件分支指令關(guān)聯(lián)的條件的最終解決結(jié)果,更新或不更新反映功能和/或計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的架構(gòu)狀態(tài)。在一些實(shí)施例中,如果有條件分支指令的條件的輸出最終解決為有條件分支應(yīng)該被選取,則邏輯218可以不更新反映功能和/或計(jì)算等效的一組所斷言指令的架構(gòu)狀態(tài)。相反,如果有條件分支指令的條件的輸出最終解決為有條件分支應(yīng)該未被選取,則邏輯218可以更新反映功能和/或計(jì)算等效的一組所斷言指令的架構(gòu)狀態(tài)。在一些實(shí)施例中,邏輯可以利用選擇邏輯來選擇所斷言指令的結(jié)果或忽略所斷言指令和/或在如同它們未被執(zhí)行的情況下進(jìn)行操作的先前結(jié)果。
[0037]有利的是,有條件短前向分支指令向所斷言指令的這種轉(zhuǎn)換以及用所斷言指令更新或不更新架構(gòu)狀態(tài)的這種使用可以通過避免錯(cuò)誤斷言有條件分支的速度和能量懲罰,來幫助改進(jìn)處理器的速度和能量節(jié)約。短前向環(huán)內(nèi)跟隨有條件分支指令的指令可被饋送到流水線中但是以斷言進(jìn)行處理,直到明確確定有條件分支應(yīng)該被選取或未被選取。不需要在分支錯(cuò)誤預(yù)測以及關(guān)聯(lián)的推測性執(zhí)行狀態(tài)廢棄的情況下倒回處理器執(zhí)行。這種優(yōu)勢在具有越來越深的流水線(例如在流水線中具有進(jìn)行中的數(shù)百個(gè)指令)的某些大無序處理器中往往可能尤其顯著。
[0038]為了避免混淆描述,已示出和描述了相對(duì)簡單的處理器210。在其它實(shí)施例中,處理器可任選地包括其它公知的組件,諸如預(yù)取緩沖器、指令隊(duì)列、指令和/或數(shù)據(jù)高速緩存、指令和/或數(shù)據(jù)翻譯后備緩沖器、微指令隊(duì)列、重命名/分配單元、微指令排序器、執(zhí)行單元、引退/提交單元、寄存器重命名單元、總線接口單元、第二和/或高級(jí)指令和/或數(shù)據(jù)高速緩存、包括在處理器中的其它組件、以及其各種組合。實(shí)際上,處理器中的組件有大量不同的組合和配置,并且實(shí)施例不限于任何特定的組合或配置。
[0039]圖3是處理有條件分支的方法320的實(shí)施例的流程框圖。在一些實(shí)施例中,圖3的操作和/或方法可由圖2的處理器執(zhí)行,和/或在圖2的處理器內(nèi)執(zhí)行。本文對(duì)圖2的處理器所描述的組件、特征和具體可選細(xì)節(jié)也可選地應(yīng)用于圖3的操作和/或方法,圖3的操作和/或方法在實(shí)施例中可以由圖2的處理器執(zhí)行和/或在圖2的處理器內(nèi)執(zhí)行。替換地,圖3的操作和/或方法可由類似的或完全不同的處理器或裝置執(zhí)行,和/或在類似的或完全不同的處理器或裝置內(nèi)執(zhí)行。此外,圖2的處理器可執(zhí)行與圖3相同、相似或者完全不同的操作和/或方法。
[0040]該方法包括在框321,提取有條件短前向分支。在一些實(shí)施例中,有條件短前向分支可以包括有條件分支指令以及一組一個(gè)或多個(gè)指令,該組一個(gè)或多個(gè)指令以程序次序順序地跟隨有條件分支指令并且在有條件分支指令與由有條件分支指令指示的前向分支目標(biāo)指令之間。在一些實(shí)施例中,有條件短前向分支可以與圖1中的有條件短前向分支類似或相同。或者,有條件短前向分支可以與圖1中示出的不同。
[0041]該方法還包括在框322,將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。在一些實(shí)施例中,這可以包括將在有條件分支指令與前向分支目標(biāo)指令之間的一個(gè)或多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成相應(yīng)的所斷言指令。在一些實(shí)施例中,這可以包括去除有條件分支指令。
[0042]在一些實(shí)施例中,該方法還可以包括向處理器的后端邏輯提供對(duì)應(yīng)于和/或表示計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào)。在一些實(shí)施例中,這可以在不管有條件分支指令是否被預(yù)測為被選取或未被選取的情況下進(jìn)行。在一些實(shí)施例中,這可以在不管分支預(yù)測邏輯的操作和/或分支預(yù)測是否對(duì)有條件分支預(yù)測進(jìn)行分支預(yù)測和/或指令轉(zhuǎn)換邏輯是否知曉分支預(yù)測(如果做出預(yù)測)的情況下進(jìn)行。
[0043]圖4是示出有條件短前向分支檢測和轉(zhuǎn)換邏輯415的框圖。圖5是檢測并確定是否轉(zhuǎn)換有條件短前向分支的方法535的實(shí)施例的流程框圖。為了描述順暢,參照?qǐng)D4的邏輯來描述圖5的操作和方法。然而,應(yīng)該理解,圖5的操作和方法可以由與圖4類似或不同的實(shí)施例來執(zhí)行。此外,圖4的邏輯可執(zhí)行與圖5相同、相似或者不同的操作和方法。
[0044]參照?qǐng)D4,有條件短前向分支檢測邏輯425操作用于檢測有條件短前向分支401。參照?qǐng)D5,該方法包括在框536,檢測有條件短前向分支。在一些實(shí)施例中,這可以包括檢測有條件分支指令并檢查有條件分支指令的前向分支目標(biāo)以確定該分支是否是前向并且短(例如從約I到約10個(gè)指令或者從約I到約5個(gè)指令)。
[0045]再次參照?qǐng)D4,操作用于確定是否轉(zhuǎn)換有條件短前向分支的邏輯426與有條件短前向分支檢測邏輯425耦合。在一些實(shí)施例中,可以基于對(duì)于有條件短前向分支內(nèi)的在有條件分支指令與有條件分支指令的前向分支目標(biāo)之間的全部一個(gè)或多個(gè)指令,是否有相應(yīng)的計(jì)算等效指令可用,來做出該確定。例如,如果對(duì)于這些指令中的一個(gè)或多個(gè)不存在計(jì)算等效的所斷言指令,則可以確定為不轉(zhuǎn)換,或者如果對(duì)于全部這些指令存在計(jì)算等效的所斷言指令,則可以確定為轉(zhuǎn)換。如果邏輯426確定不轉(zhuǎn)換有條件短前向分支,它可被提供給常規(guī)有條件短前向分支處理邏輯427。或者,如果邏輯426確定轉(zhuǎn)換有條件短前向分支,則它可被提供給指令轉(zhuǎn)換邏輯428。
[0046]參照?qǐng)D5,該方法包括在框537,確定短前向分支內(nèi)的全部指令是否可被轉(zhuǎn)換成相應(yīng)功能和/或計(jì)算等效的所斷言指令。如果并非短前向分支內(nèi)的全部指令可被轉(zhuǎn)換成相應(yīng)功能和/或計(jì)算等效的所斷言指令(即在框537中確定為“否”),則在框538,可以執(zhí)行有條件分支指令的常規(guī)處理?;蛘?,如果短前向分支內(nèi)的全部指令可被轉(zhuǎn)換成相應(yīng)功能和/或計(jì)算等效的所斷言指令(即在框537中確定為“是”),則該方法可以前進(jìn)到在框539。
[0047]再次參照?qǐng)D4,指令轉(zhuǎn)換邏輯428與邏輯426耦合。指令轉(zhuǎn)換邏輯操作用于轉(zhuǎn)換有條件短前向分支的指令。指令轉(zhuǎn)換邏輯包括非斷言到計(jì)算等效所斷言指令映射和轉(zhuǎn)換邏輯429。映射和轉(zhuǎn)換邏輯操作用于將每個(gè)非斷言指令映射并轉(zhuǎn)換到功能等效的所斷言指令。例如,指定在給定一對(duì)源操作數(shù)上執(zhí)行加法運(yùn)算以將和存儲(chǔ)在目的地的加法指令可被映射并轉(zhuǎn)換到指定(但是有條件地指定)在相同的一對(duì)給定源操作數(shù)上執(zhí)行加法運(yùn)算以將和存儲(chǔ)在相同目的地的所斷言加法指令。在替換實(shí)施例中,除了指令到所斷言指令的一對(duì)一對(duì)應(yīng)之外,還可以使用指令到所斷言指令的一對(duì)多或多對(duì)一的對(duì)應(yīng)。一個(gè)或多個(gè)計(jì)算和/或功能等效的所斷言指令430被輸出到,例如,進(jìn)一步的解碼或其它指令轉(zhuǎn)換邏輯和/或向后端邏輯輸出。注意,在轉(zhuǎn)換過程中,有條件分支指令403被去除431。參照?qǐng)D5,該方法包括在框539,將有條件短前向分支轉(zhuǎn)換成功能和/或計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。
[0048]圖6示出將有條件短前向分支601的示例性實(shí)施例轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令630。有條件短前向分支601包括指示目標(biāo)偏移603的如果條件被滿足則跳轉(zhuǎn)(jcc)指令。jcc指令具有“選取路徑”和“未選取路徑”。選取路徑引向位于jcc指令的目標(biāo)偏移處的前向分支目標(biāo)指令606。未選取路徑引向?qū)⑼ㄓ眉拇嫫鱮ex移動(dòng)到通用寄存器rbx的mov (移動(dòng))指令604。這僅僅是一個(gè)示例。在mov指令之后,可任選地存在一個(gè)或多個(gè)加載、存儲(chǔ)、算法或邏輯指令或其組合605。
[0049]在計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令630中jcc指令被去除631。選取路徑和未選取路徑也被有效去除。不存在跳過短前向分支內(nèi)的指令,不管分支斷言的結(jié)果或者甚至不管分支預(yù)測是否執(zhí)行。計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令包括對(duì)應(yīng)于mov指令640的cmovz指令640,該指令有條件地或以斷言來將通用寄存器rex移動(dòng)到通用寄存器rbx。cmovz指令是英特爾架構(gòu)中不管條件狀態(tài)如何都引起異常的現(xiàn)有有條件指令。作為另一選項(xiàng),在一些實(shí)施例中,cmovz指令可以被在有條件移動(dòng)指令的條件為假時(shí)不引起異常的類似指令代替。這樣,當(dāng)未假設(shè)有條件指令已經(jīng)被執(zhí)行時(shí),它可被完全忽略并且沒有效果,包括不引起任何潛在異常等等。還包括在內(nèi)的是一個(gè)或多個(gè)所斷言的以及計(jì)算等效的加載、存儲(chǔ)、算法、或邏輯指令、或其組合641。這些指令與指令605在計(jì)算上等效。當(dāng)確定一組所斷言指令要被執(zhí)行時(shí),它們應(yīng)該給出與相應(yīng)的原始非斷言的一組指令完全相同的結(jié)果。注意,在一些實(shí)施例中,前向分支目標(biāo)606無需被轉(zhuǎn)換。
[0050]圖7是后端邏輯717的實(shí)施例的框圖,該后端邏輯717操作用于更新或不更新反映表示有條件短前向分支并與之計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令716的架構(gòu)狀態(tài)。在一些實(shí)施例中,后端邏輯可用于圖2的處理器。或者,后端邏輯可用于與圖2的處理器類似或不同的處理器。此外,圖2的處理器可以使用相同、類似或不同的后端邏輯。
[0051]示出有序邏輯的示例實(shí)施例和寄存器重命名、無序調(diào)度/執(zhí)行/引退邏輯的示例實(shí)施例。實(shí)線框示出有序邏輯,而虛線框的可任選附加示出寄存器重命名、無序調(diào)度/執(zhí)行/引退邏輯。假設(shè)有序方面是無序方面的子集,將描述無序方面,但是本發(fā)明的范圍并不限于此。
[0052]將一個(gè)或多個(gè)所斷言指令716提供給后端邏輯717。一個(gè)或多個(gè)所斷言指令表示有條件短前向分支并與之在計(jì)算上等效,如本文別處所述。重命名/分配邏輯750接收一組所斷言指令。重命名/分配邏輯耦合到引退和/或提交邏輯755以及一組一個(gè)或多個(gè)調(diào)度器邏輯751。調(diào)度器邏輯表示任何數(shù)量的不同調(diào)度器,包括預(yù)約站、中央指令窗口等等。調(diào)度器邏輯耦合到物理寄存器文件單元752。每個(gè)物理寄存器文件單元表示一個(gè)或多個(gè)物理寄存器文件,其中不同的物理寄存器文件存儲(chǔ)一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器文件單元包括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可提供架構(gòu)向量寄存器,向量掩碼寄存器、以及通用寄存器。在一些實(shí)施例中,物理寄存器文件單元可以包括標(biāo)志寄存器753和預(yù)測寄存器754,這兩者或之一可用于所斷言指令的斷言。
[0053]物理寄存器文件單元由引退/提交邏輯755重疊,以示出其中可實(shí)現(xiàn)寄存器重命名和無序執(zhí)行(例如,使用重排序緩沖器和引退寄存器文件;使用特征文件、歷史緩沖器、以及引退寄存器文件;使用寄存器映射和寄存器池等)的各種方式。引退/提交邏輯和物理寄存器文件單元耦合到執(zhí)行邏輯756。執(zhí)行邏輯包括一組一個(gè)或多個(gè)執(zhí)行單元757以及一組一個(gè)或多個(gè)存儲(chǔ)器訪問單元758。執(zhí)行邏輯可以執(zhí)行本文公開的所斷言指令。執(zhí)行單元可執(zhí)行各種操作(包括:移位、加法、減法、乘法)并可在各種數(shù)據(jù)類型(諸如標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))上執(zhí)行。盡管一些實(shí)施例可包括專用于特定功能或功能組的許多執(zhí)行單元,然而其他實(shí)施例可包括僅僅全部執(zhí)行所有功能的一個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。
[0054]調(diào)度器邏輯、物理寄存器文件單元、以及執(zhí)行邏輯被示為/描述為可能是多個(gè),因?yàn)樘囟▽?shí)施例為特定類型的數(shù)據(jù)/操作創(chuàng)建分離的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/打包整數(shù)/打包浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線、和/或各自具有其自己的調(diào)度器單元、物理寄存器文件單元和/或執(zhí)行集群的存儲(chǔ)器訪問流水線一并且在單獨(dú)的寄存器訪問流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行集群具有存儲(chǔ)器訪問單元的特定實(shí)施例)。還應(yīng)當(dāng)理解,在使用分離的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是無序發(fā)布/執(zhí)行,而其他流水線可以是有序的。
示例性核架構(gòu)、處理器、以及計(jì)算機(jī)架構(gòu)
[0055]處理器核可以以不同的方式、出于不同的目的、并且在不同的處理器中實(shí)現(xiàn)。舉例而言,這些核的實(shí)現(xiàn)可包括:1)期望用于通用計(jì)算的通用有序核;2)期望用于通用計(jì)算的高性能通用無序核;3)期望主要用于圖形和/或科學(xué)(吞吐量)計(jì)算的專用核。不同處理器的實(shí)現(xiàn)可包括:1)包括期望用于通用計(jì)算的一個(gè)或多個(gè)通用有序核和/或期望用于通用計(jì)算的一個(gè)或多個(gè)通用無序核的CPU ;以及2)包括期望主要用于圖形和/或科學(xué)(吞吐量)的一個(gè)或多個(gè)專用核的協(xié)處理器。這些不同的處理器導(dǎo)致不同的計(jì)算機(jī)系統(tǒng)架構(gòu),這些處理器可包括:1)在與CPU分離的芯片上的協(xié)處理器;2)與CPU相同的封裝中的獨(dú)立管芯上的協(xié)處理器;3)與CPU相同的管芯上的協(xié)處理器(在此情況下,這種協(xié)處理器有時(shí)被稱為專用邏輯,諸如集成圖形和/或科學(xué)(吞吐量)邏輯、或者專用核);以及4)在相同管芯上可包括所述CPU (有時(shí)被稱為應(yīng)用核或應(yīng)用處理器)、上述協(xié)處理器、以及附加功能的芯片上的系統(tǒng)。接下來描述示例性核架構(gòu),隨后描述示例性處理器和計(jì)算機(jī)架構(gòu)。
示例性核架構(gòu)有序和無序核框圖
[0056]圖8A是示出根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線以及示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線的框圖。圖8B是示出根據(jù)本發(fā)明的實(shí)施例的要包括在處理器中的有序架構(gòu)核示例性實(shí)施例以及示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖8A-B中的實(shí)線框示出有序流水線和有序核,而任選增加的虛線框示出寄存器重命名的無序發(fā)出/執(zhí)行流水線和核。假設(shè)有序方面是無序方面的子集,將描述無序方面。
[0057]在圖8A中,處理器流水線800包括提取級(jí)802、長度解碼級(jí)804、解碼級(jí)806、分配級(jí)808、重命名級(jí)810、調(diào)度(也稱為分派或發(fā)布)級(jí)812、寄存器讀取/存儲(chǔ)器讀取級(jí)814、執(zhí)行級(jí)816、回寫/存儲(chǔ)器寫入級(jí)818、異常處理級(jí)822、以及提交級(jí)824。
[0058]圖8B示出處理器核890,該核890包括耦合到執(zhí)行引擎單元850的前端單元830,并且兩者耦合到存儲(chǔ)器單元870。核890可以是精簡指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長指令字(VLIW)核或混合或其他核類型。作為另一選項(xiàng),核890可以是專用核,諸如舉例而言,網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理單元(GPGPU)核、圖形核等。
[0059]前端單元830包括稱合到指令高速緩存單元834的分支預(yù)測單元832,該指令高速緩存單元834耦合到指令翻譯后備緩沖器(TLB) 836,該指令TLB836耦合到指令提取單元838,該指令提取單元838耦合到解碼單元840。解碼單元840 (或解碼器)可對(duì)指令進(jìn)行解碼,并且生成從原始指令解碼、或以其他方式反映原始指令、或從原始指令派生的一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或者其他控制信號(hào)作為輸出。解碼單元840可使用各種不同的機(jī)制來實(shí)現(xiàn)。合適機(jī)制的示例包括但不限于,查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核890包括微代碼ROM或者存儲(chǔ)用于特定宏指令的微代碼(例如,在解碼單元840中或者在前端單元830內(nèi))的其他介質(zhì)。解碼單元840耦合至執(zhí)行引擎單元850中的重命名/分配器單元852。
[0060] 執(zhí)行引擎單元850包括耦合到引退單元854的重命名/分配器單元852、以及一組一個(gè)或多個(gè)調(diào)度器單元856。調(diào)度器單元856表示任何數(shù)量的不同調(diào)度器,包括:預(yù)約站、中央指令窗口等等。調(diào)度器單元856耦合至物理寄存器文件單元858。每個(gè)物理寄存器文件單元858表示一個(gè)或多個(gè)物理寄存器文件,其中不同的物理寄存器文件存儲(chǔ)一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器文件單元858包括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可提供架構(gòu)向量寄存器、向量掩碼寄存器、以及通用寄存器。物理寄存器文件單元858由引退單元854重疊,以示出其中可實(shí)現(xiàn)寄存器重命名和無序執(zhí)行(例如,使用重排序緩沖器和引退寄存器文件;使用特征文件、歷史緩沖器、以及引退寄存器文件;使用寄存器映射和寄存器池等)的各種方式。引退單元854和物理寄存器文件單元858耦合到執(zhí)行集群860。執(zhí)行集群860包括一組一個(gè)或多個(gè)執(zhí)行單元862以及一組一個(gè)或多個(gè)存儲(chǔ)器訪問單元864。執(zhí)行單元862可執(zhí)行各種操作(例如,位移、加法、減法、乘法),并且對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))執(zhí)行。盡管一些實(shí)施例可包括專屬于專用功能或功能集的大量執(zhí)行單元,但是其他實(shí)施例可包括全部用于執(zhí)行所有功能的僅一個(gè)執(zhí)行單元或者多個(gè)執(zhí)行單元。調(diào)度器單元856、物理寄存器文件單元858、以及執(zhí)行集群860被示為可能是多個(gè),因?yàn)樘囟▽?shí)施例為特定類型的數(shù)據(jù)/操作創(chuàng)建分離的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/打包整數(shù)/打包浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線、和/或各自具有其自己的調(diào)度器單元、物理寄存器文件單元和/或執(zhí)行集群的存儲(chǔ)器訪問流水線;并且在分離的寄存器訪問流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行集群具有存儲(chǔ)器訪問單元864的特定實(shí)施例)。還應(yīng)當(dāng)理解,在使用分離的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是無序發(fā)布/執(zhí)行,而其他流水線可以是有序的。
[0061 ] 一組存儲(chǔ)器訪問單元864耦合到存儲(chǔ)器單元870,該存儲(chǔ)器單元870包括耦合到數(shù)據(jù)高速緩存單元874的數(shù)據(jù)TLB單元872,該數(shù)據(jù)高速緩存單元874耦合到二級(jí)(L2)高速緩存單元876。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元864可包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲(chǔ)器單元870中的數(shù)據(jù)TLB單元872。指令高速緩存單元834還耦合到存儲(chǔ)器單元870中的二級(jí)(L2)高速緩存單元876。L2高速緩存單元876耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存,并且最終耦合到主存儲(chǔ)器。
[0062]作為示例,示例性寄存器命名、無序發(fā)布/執(zhí)行核架構(gòu)可如下地實(shí)現(xiàn)流水線800:
I)指令提取838執(zhí)行提取和長度解碼級(jí)802和804 ;2)解碼單元840執(zhí)行解碼級(jí)806 ;3)重命名/分配器單元852執(zhí)行分配級(jí)808和重命名級(jí)810 ;4)調(diào)度器單元856執(zhí)行調(diào)度級(jí)812 ;5)物理寄存器文件單元858和存儲(chǔ)器單元870執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)814 ;執(zhí)行集群860執(zhí)行執(zhí)行級(jí)816 ;6)存儲(chǔ)器單元870和物理寄存器文件單元858執(zhí)行回寫/存儲(chǔ)器寫入級(jí)818 ;7)各個(gè)單元可涉及異常處理級(jí)822;以及8)引退單元854和物理寄存器文件單元858執(zhí)行提交級(jí)824。
[0063]核890可支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有已經(jīng)使用較新版本增加的一些擴(kuò)展)、加利福尼亞州森尼維爾市MIPS技術(shù)公司的MIPS指令集、加利福尼亞州森尼維爾市的ARM控股公司的ARM指令集(具有諸如NEON之類的任選的附加擴(kuò)展)),包括本文中所描述的指令。在一個(gè)實(shí)施例中,核890包括邏輯以支持打包數(shù)據(jù)指令集擴(kuò)展(例如,AVXl、AVX2),由此允許許多多介質(zhì)應(yīng)用所使用的操作使用打包數(shù)據(jù)來執(zhí)行。
[0064]應(yīng)當(dāng)理解,核可支持多線程(執(zhí)行兩組或兩組以上的平行操作或線程集),并且可以通過包括分時(shí)多線程、同時(shí)多線程(其中單個(gè)物理核為每一線程提供物理核,物理核是同時(shí)多線程的)、或者其組合(例如,分時(shí)提取和解碼以及此后諸如在丨ntel? Hyperthreading技術(shù)中的同時(shí)多線程)的各種方式實(shí)現(xiàn)。
[0065]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當(dāng)理解寄存器重命名可在有序架構(gòu)中使用。盡管處理器的所示實(shí)施例還包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元834/874以及共享的L2高速緩存單元876,但是替換實(shí)施例可具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如舉例而言,一級(jí)(LI)內(nèi)部高速緩存、或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和外部高速緩存的組合,該外部高速緩存在核和/或處理器外部。替換地,所有高速緩存可在核和/或處理器外部。
專用示例性有序核架構(gòu)
[0066]圖9A-B示出更具體的示例性有序核架構(gòu)的框圖,該核可以是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其它核)。依據(jù)應(yīng)用,邏輯塊通過高帶寬互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與一些固定功能邏輯、存儲(chǔ)器I/o接口、以及其他必要的存儲(chǔ)器I/O邏輯進(jìn)行通信。
[0067]圖9A是根據(jù)本發(fā)明的實(shí)施例的連接到管芯上互聯(lián)網(wǎng)絡(luò)902且具有二級(jí)(L2)高速緩存的本地子集904的單個(gè)處理器核的框圖。在一個(gè)實(shí)施例中,指令解碼器900支持具有打包數(shù)據(jù)指令集擴(kuò)展的x86指令集。LI高速緩存906允許對(duì)高速緩存存儲(chǔ)器進(jìn)行低等待時(shí)間訪問而進(jìn)入標(biāo)量和向量單元。盡管在一個(gè)實(shí)施例中(為了簡化設(shè)計(jì))標(biāo)量單元908和向量單元910使用分離的寄存器集合(分別是標(biāo)量寄存器912和向量寄存器914)并且在兩者之間傳輸?shù)臄?shù)據(jù)被寫入存儲(chǔ)器且隨后讀取回到一級(jí)(LI)高速緩存906或從LI高速緩存906讀取,但是本發(fā)明的替換實(shí)施例可使用不同的方法(例如,使用單個(gè)寄存器集合或者包括允許數(shù)據(jù)在不寫入和讀回的情況下在兩個(gè)寄存器文件之間傳輸?shù)耐ㄐ怕窂?。
[0068]L2高速緩存的本地子集904是分成分離的本地子集(每個(gè)處理器核一個(gè)本地子集)的全局L2高速緩存的一部分。每個(gè)處理器核具有到L2高速緩存的其自己的本地子集904的直接訪問路徑。由處理器核讀取的數(shù)據(jù)被存儲(chǔ)在其L2高速緩存子集904中,并且可與訪問其自己的本地L2高速緩存子集的其他處理器核并行地快速訪問。由處理器核寫入的數(shù)據(jù)被存儲(chǔ)在其自己的L2高速緩存子集904中,并且如果必要?jiǎng)t從其他子集清除(flush)。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡(luò)是雙向的以允許在芯片內(nèi)諸如處理器核、L2高速緩存、以及其他邏輯塊之類的代理相互通信。每個(gè)環(huán)形數(shù)據(jù)路徑是每個(gè)方向1012位寬。
[0069]圖9B是根據(jù)本發(fā)明的實(shí)施例的圖9A中的處理器核的一部分的展開圖。圖9B包括LI高速緩存904的LI數(shù)據(jù)高速緩存906A部分、以及關(guān)于向量單元910和向量寄存器914的更多細(xì)節(jié)。具體地,向量單元910是16-寬向量處理單元(VPU)(參見16寬ALU928),該向量處理單元執(zhí)行整數(shù)、單精度浮動(dòng)和雙精度浮動(dòng)的指令中的一個(gè)或多個(gè)。VPU支持在存儲(chǔ)器輸入上使用拌和(swizzIe )單元920拌和寄存器輸入、使用數(shù)字轉(zhuǎn)換單元922A-B數(shù)字轉(zhuǎn)換、以及使用復(fù)制單元924復(fù)制。寫掩碼寄存器926允許斷言所得向量寫入。
具有集成存儲(chǔ)器控制器和圖形器件的處理器
[0070]圖10是根據(jù)本發(fā)明的實(shí)施例的可具有一個(gè)以上核、可具有集成存儲(chǔ)器控制器、并且可具有集成圖形器件的處理器1000的框圖。圖10的實(shí)線框示出了處理器1000,處理器1000具有單個(gè)核1002A、系統(tǒng)代理1010、一組一個(gè)或多個(gè)總線控制器單元1016,而可選附加的虛線框示出了替代性處理器1000,具有多個(gè)核1002A-N、系統(tǒng)代理單元1010中的一組一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1014以及專用邏輯1008。
[0071]由此,處理器1000的不同實(shí)現(xiàn)可包括:1)具有作為集成圖形和/或科學(xué)(吞吐量)邏輯(該邏輯可包括一個(gè)或多個(gè)核)的專用邏輯1008、以及作為一個(gè)或多個(gè)通用核(例如,通用有序核、通用無序核、兩者的組合)的核1002A-N的CPU ;2)具有作為期望主要用于圖形和/或科學(xué)(吞吐量)的大量專用核的核1002A-N的協(xié)處理器;以及3)具有作為大量通用有序核的核1002A-N的協(xié)處理器。由此,處理器1000可以是通用處理器、協(xié)處理器、或?qū)S锰幚砥?,諸如舉例而言,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量許多集成核(MIC)協(xié)處理器(包括30個(gè)或30個(gè)以上的核)、嵌入式處理器等。處理器可在一個(gè)或多個(gè)芯片上實(shí)現(xiàn)。處理器1000可以是一個(gè)或多個(gè)襯底的一部分,和/或在一個(gè)或多個(gè)襯底上使用大量處理技術(shù)(諸如舉例而言,BiCM0S、CM0S、或NM0S)中的任一種技術(shù)實(shí)現(xiàn)。
[0072]存儲(chǔ)器等級(jí)(hierarchy)包括核內(nèi)的一級(jí)或多級(jí)高速緩存、一組或者一個(gè)或多個(gè)共享高速緩存單元1006、以及耦合到一組集成存儲(chǔ)器控制器單元1014的外部存儲(chǔ)器(未示出)。一組共享高速緩存單元1006可包括一個(gè)或多個(gè)中級(jí)高速緩存(諸如二級(jí)(L2)、三級(jí)(L3)、四級(jí)(L4))或其他級(jí)高速緩存、最后一級(jí)高速緩存(LLC)、和/或其組合。盡管在一個(gè)實(shí)施例中,基于環(huán)的互連單元1012使集成圖形邏輯1008、一組共享高速緩存單元1006、以及系統(tǒng)代理單元1010/集成存儲(chǔ)器控制器單元1014互連,但是替換實(shí)施例可使用任意數(shù)量的公知技術(shù)來互連這些單元。在一個(gè)實(shí)施例中,在一個(gè)或多個(gè)高速緩存單元1006與核1002A-N之間維持一致性。
[0073]在一些實(shí)施例中,核1002A-H中的一個(gè)或多個(gè)核能夠多線程。系統(tǒng)代理1010包括協(xié)調(diào)和操作核1002A-N的那些組件。系統(tǒng)代理單元1010可包括例如功率控制單元(P⑶)和顯示單元。P⑶可以是或者包括調(diào)整核1002A-N以及集成圖形邏輯1008的功率狀態(tài)必需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
[0074]核1002A-N在架構(gòu)指令集方面可以是同質(zhì)的或者異質(zhì)的,即核1002A-N中的兩個(gè)或兩個(gè)以上核可以能夠執(zhí)行相同的指令集,而其他核可以能夠只執(zhí)行該指令集的子集或者不同的指令集。
示例性計(jì)算機(jī)架構(gòu)
[0075]圖11-14是示例性計(jì)算機(jī)架構(gòu)的框圖。在本領(lǐng)域中已知的用于膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、手持個(gè)人計(jì)算機(jī)(PC)、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中樞、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備、以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般而言,能夠結(jié)合處理器和/或其他執(zhí)行邏輯的各種各樣系統(tǒng)或電子設(shè)備通常是合適的。
[0076]現(xiàn)在參考圖11,所示出的是根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)1100的框圖。系統(tǒng)1100可包括一個(gè)或多個(gè)處理器1110、1115,這些處理器耦合到控制器中樞1120。在一個(gè)實(shí)施例中,控制器中樞1120包括圖形存儲(chǔ)器控制器中樞(GMCH)1190和輸入/輸出中樞(10H)1150(它們可在分離的芯片上),GMCHl 190包括耦合到存儲(chǔ)器1140和協(xié)處理器1145的存儲(chǔ)器和圖形控制器,10H1150使輸入/輸出(I/O)設(shè)備1160耦合到GMCH1190。替換地,存儲(chǔ)器和圖形控制器中的一個(gè)或兩個(gè)集成到處理器(如本文中所描述的)中,存儲(chǔ)器1140和協(xié)處理器1145直接耦合到處理器1110、以及在單個(gè)芯片中具有10H1150的控制器中樞1120。
[0077]附加的處理器1115的任選性在圖11中通過虛線來表示。每個(gè)處理器1110、1115可包括本文中所描述的處理核中的一個(gè)或多個(gè),并且可以是一些版本的處理器1000。
[0078]存儲(chǔ)器1140可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)、或者兩者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞1120經(jīng)由諸如前側(cè)總線(FSB)之類的多點(diǎn)總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口、或者類似的連接1195與處理器1110、1115進(jìn)行通信。
[0079]在一個(gè)實(shí)施例中,協(xié)處理器1145是專用處理器,諸如舉例而言,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。在一個(gè)實(shí)施例中,控制器中樞1120可包括集成圖形加速器。
[0080]按照包括體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱、功耗特征等等優(yōu)點(diǎn)的度量譜,物理資源1110、1115之間存在各種差別。
[0081]在一個(gè)實(shí)施例中,處理器1110執(zhí)行控制通用類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可被嵌入這些指令內(nèi)。處理器1110將這些協(xié)處理器指令識(shí)別為應(yīng)由附連的協(xié)處理器1145執(zhí)行的類型。因此,處理器1110在協(xié)處理器總線或者其他互連上向協(xié)處理器1145發(fā)布這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號(hào))。協(xié)處理器1145接受和執(zhí)行接收到的協(xié)處理器指令。
[0082]現(xiàn)在參照?qǐng)D12,所示出的是根據(jù)本發(fā)明實(shí)施例的更具體的第一示例性系統(tǒng)1200的框圖。如圖12所示,多處理器系統(tǒng)1200是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連1250耦合的第一處理器1270和第二處理器1280。處理器1270和1280中的每一個(gè)可以是某個(gè)版本的處理器1000。在本發(fā)明的一個(gè)實(shí)施例中,處理器1270和1280分別是處理器1110和1115,而協(xié)處理器1238是協(xié)處理器1145。在另一實(shí)施例中,處理器1270和1280分別是處理器1110和協(xié)處理器1145。
[0083]處理器1270和1280分別被示為包括集成存儲(chǔ)器控制器(MC)單元1272和1282。處理器1270還包括作為其總線一部分的控制器單元點(diǎn)對(duì)點(diǎn)(P-P)接口 1276和1278 ;類似地,第二處理器1280包括P-P接口 1286和1288。處理器1270、1280可使用P-P接口電路1278、1288經(jīng)由點(diǎn)對(duì)點(diǎn)(P-P)接口 1250交換信息。如圖12所示,MC1272和1282將處理器耦合到相應(yīng)的存儲(chǔ)器,即存儲(chǔ)器1232和存儲(chǔ)器1234,這些存儲(chǔ)器可以是本地附連到相應(yīng)處理器的主存儲(chǔ)器的部分。
[0084]處理器1270、1280可各自使用點(diǎn)對(duì)點(diǎn)接口電路1276、1294、1286、1298經(jīng)由各個(gè)P-P接口 1252、1254與芯片組1290交換信息。芯片組1290可任選地經(jīng)由高性能接口 1239與協(xié)處理器1238交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1238是專用處理器,諸如舉例而言,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
[0085]共享高速緩存(未示出)可被包括在任一處理器中或者在兩個(gè)處理器外部,但是經(jīng)由P-P互連與處理器連接,由此如果處理器置于低功率模式中,則任一或兩個(gè)處理器的本地高速緩存信息可被存儲(chǔ)在共享高速緩存中。
[0086]芯片組1290可經(jīng)由接口 1296耦合到第一總線1216。在一個(gè)實(shí)施例中,第一總線1216可以是外圍組件互連(PCI)總線、或者諸如PCI Express總線或另一第三代I/O互連總線之類的總線,但是本發(fā)明的范圍不限于此。
[0087]如圖12所示,各種I/O設(shè)備1214可連同總線橋1218 —起耦合到第一總線1216,總線橋1218將第一總線1216耦合到第二總線1220。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的加速器(諸如舉例而言,圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場可編程門陣列、或者其他處理器之類的一個(gè)或多個(gè)附加處理器1215耦合到第一總線1216。在一個(gè)實(shí)施例中,第二總線1220可以是低引腳數(shù)(LPC)總線。在一個(gè)實(shí)施例中,多個(gè)設(shè)備可以耦合到第二總線1220,包括例如鍵盤和/或鼠標(biāo)1222、通信設(shè)備1227以及可以包括指令/代碼和數(shù)據(jù)1230的存儲(chǔ)單元1228 (諸如盤驅(qū)動(dòng)器或其它海量存儲(chǔ)設(shè)備)。此夕卜,音頻1/01224可耦合到第二總線1220。注意,其他架構(gòu)是可能的。例如,代替圖12的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可實(shí)現(xiàn)多點(diǎn)總線或者其他此類架構(gòu)。
[0088]現(xiàn)在參考圖13,示出了根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)1300的框圖。圖12和13中的類似元件使用類似附圖標(biāo)記,且在圖13中省略了圖12的某些方面以避免混淆圖13的其它方面。
[0089]圖13示出處理器1270、1280可分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)1272和1282。因此,CL1272和1282包括集成存儲(chǔ)器控制器單元且包括I/O控制邏輯。圖13示出:不僅存儲(chǔ)器1232、1234耦合至CL1272、1282,I/O設(shè)備1314也耦合至控制邏輯1272、1282。傳統(tǒng)I/O設(shè)備1315耦合到芯片組1290。
[0090]現(xiàn)在參照?qǐng)D14,所示出的是根據(jù)本發(fā)明實(shí)施例的SoC1400的框圖。圖10中的類似元件具有相似的附圖標(biāo)記。同樣,虛線框是更多高級(jí)SoC上的任選特征。在圖14中,互連單元1402耦合至:應(yīng)用處理器1410,包括一組一個(gè)或多個(gè)核202A-N以及共享高速緩存單元1006 ;系統(tǒng)代理單元1010 ;總線控制器單元1016 ;集成存儲(chǔ)器控制器單元1014 ;—組一個(gè)或多個(gè)協(xié)處理器1420,可以包括集成圖形邏輯、圖像處理器、音頻處理器、視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1430 ;直接存儲(chǔ)器存取(DMA)單元1432 ;以及顯示單元1440,用于耦合至一個(gè)或多個(gè)外部顯示器。在一個(gè)實(shí)施例中,協(xié)處理器1420包括專用處理器,諸如舉例而言,網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理翌坐-nfr ο
[0091]本文中所公開的機(jī)構(gòu)的實(shí)施例可以在硬件、軟件、固件、或者這些實(shí)現(xiàn)方法的組合中實(shí)現(xiàn)。本發(fā)明的實(shí)施例可被實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,這些可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備、以及至少一個(gè)輸出設(shè)備。
[0092]諸如圖12所示的代碼1230之類的程序代碼可應(yīng)用于輸入指令,以執(zhí)行本文中所描述的功能并生成輸出信息。輸出信息可以以已知的方式應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。出于本申請(qǐng)的目的,處理系統(tǒng)包括具有處理器(諸如舉例而言,數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)、或微處理器)的任何系統(tǒng)。
[0093]程序代碼可以以高級(jí)過程或面向?qū)ο缶幊陶Z言實(shí)現(xiàn),以與處理系統(tǒng)進(jìn)行通信。如果期望,程序代碼則還可以以匯編或機(jī)器語言實(shí)現(xiàn)。實(shí)際上,本文中所描述的機(jī)構(gòu)在范圍上不限于任何特定編程語言。在任何情況下,該語言可以是編譯或解釋語言。
[0094]至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可通過存儲(chǔ)在機(jī)器可讀介質(zhì)上的代表性指令來實(shí)現(xiàn),該機(jī)器可讀介質(zhì)表示處理器內(nèi)的各種邏輯,這些指令在由機(jī)器讀取時(shí)使得該機(jī)器制備邏輯以執(zhí)行本文中所描述的技術(shù)。稱為“IP核”的這些表示可被存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上且供應(yīng)給各種客戶或制造設(shè)施以加載到實(shí)際上制作邏輯或處理器的制備機(jī)器。
[0095]這種機(jī)器可讀存儲(chǔ)介質(zhì)可包括但不限于,由機(jī)器或設(shè)備制造或形成的制品的非瞬態(tài)有形排列,包括:諸如硬盤,包括軟盤、光盤、壓縮盤只讀存儲(chǔ)器(CD-ROM)、壓縮盤可重寫(CD-RW)存儲(chǔ)器、以及磁電-光盤的任何其他類型的盤之類的存儲(chǔ)介質(zhì);諸如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))、可擦除可編程只讀存儲(chǔ)器(EPR0M)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPROM),相變存儲(chǔ)器(PCM)之類的半導(dǎo)體器件;磁或光卡;或者適于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。
[0096]因此,本發(fā)明的實(shí)施例還包括包含指令或者包含設(shè)計(jì)數(shù)據(jù)(諸如硬件描述語言(HDL))的非瞬態(tài)有形機(jī)器可讀介質(zhì),該非瞬態(tài)有形機(jī)器可讀介質(zhì)定義本文中所描述的結(jié)構(gòu)、電路、裝置、處理器、和/或系統(tǒng)特征。這些實(shí)施例還可被稱為程序產(chǎn)品。
仿真(包括二進(jìn)制翻譯、代碼變形等)
[0097]在一些情況下,指令轉(zhuǎn)換器可用于將來自源指令集的指令轉(zhuǎn)換成目標(biāo)指令集。例如,指令轉(zhuǎn)換器可將指令翻譯(例如,使用靜態(tài)二進(jìn)制翻譯、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制翻譯)、變形、仿真、或者以其他方式轉(zhuǎn)換成由核處理的一個(gè)或多個(gè)其他指令。指令轉(zhuǎn)換器可以在軟件、硬件、固件、或者其組合中實(shí)現(xiàn)。指令轉(zhuǎn)換器可在處理器上、在處理器以外、或者部分在處理器上且部分在處理器以外。
[0098]圖15是對(duì)比根據(jù)本發(fā)明實(shí)施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但是替換地指令轉(zhuǎn)換器可以以軟件、固件、硬件、或者其各種組合實(shí)現(xiàn)。圖15以高級(jí)語言1502示出了程序,該程序可使用x86編譯器1504來編譯以生成x86 二進(jìn)制代碼1506,該二進(jìn)制代碼可由具有至少一個(gè)x86指令集核的處理器1516本地地執(zhí)行。具有至少一個(gè)x86指令集核1516的處理器表示可通過兼容地執(zhí)行或者以其他方式處理(I)英特爾x86指令集核的指令集的實(shí)質(zhì)部分或者(2)以在具有至少一個(gè)x86指令集核的英特爾處理器上運(yùn)行為目標(biāo)的對(duì)象代碼版本的應(yīng)用或其他軟件來執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的功能以實(shí)現(xiàn)與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果的任何處理器。x86編譯器1504表示可操作用于生成在具有或者沒有附加鏈接處理的情況下可在具有至少一個(gè)x86指令集核1516的處理器上執(zhí)行的x86 二進(jìn)制代碼1506 (例如,對(duì)象代碼)的編譯器。類似地,圖15以高級(jí)語言1502示出了程序,該程序可使用替換性指令集編譯器1508來編譯以生成替換性指令集二級(jí)制代碼1510,替換性指令集二級(jí)制代碼1510可由不具有至少一個(gè)x86指令集核的處理器1514(諸如,具有可執(zhí)行加利福尼亞州桑尼威爾的MIPS技術(shù)公司的MIPS指令集的處理器和/或執(zhí)行加利福尼亞州桑尼威爾的ARM控股公司的ARM指令集的處理器)本地地執(zhí)行。該指令轉(zhuǎn)換器1512被用于將x86 二進(jìn)制代碼1506轉(zhuǎn)換為可由不具有x86指令集核的處理器1514本地地執(zhí)行的代碼。該經(jīng)轉(zhuǎn)換的代碼不太可能與替換指令集二進(jìn)制代碼1510 —樣,因?yàn)殡y以制造能完成這樣的指令轉(zhuǎn)換器;然而,經(jīng)轉(zhuǎn)換的代碼將完成通用操作,并由替換指令集的指令所構(gòu)成。由此,指令轉(zhuǎn)換器1512表示通過仿真、模擬、或者任何其他處理允許不具有x86指令集處理器或核的處理器或者其他電子設(shè)備執(zhí)行x86 二進(jìn)制代碼1506的軟件、固件、硬件、或者其組八口 ο
[0099]在一些實(shí)施例中,后端邏輯717可以操作用于確定是否更新反映一個(gè)或多個(gè)所斷言指令716的執(zhí)行的架構(gòu)狀態(tài)。在一些實(shí)施例中,重命名/分配邏輯750、調(diào)度器邏輯751、執(zhí)行邏輯756、引退/提交邏輯755、物理寄存器文件單元752或其某種組合可以操作用于相對(duì)于所斷言指令執(zhí)行斷言或有條件執(zhí)行。在一些實(shí)施例中,該邏輯可以操作用于基于最終或明確確定有條件分支指令應(yīng)該已被選取,確定不更新反映計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)?;蛘?,該邏輯可以操作用于基于最終或明確確定有條件分支指令應(yīng)該未被選取,確定更新反映計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。注意,有條件分支指令不一定需要被評(píng)估,但是僅需要知曉與有條件分支指令關(guān)聯(lián)的條件的結(jié)果。作為示例,每個(gè)有條件指令可以指定一個(gè)或多個(gè)斷言位(例如斷言寄存器754中的一個(gè)或多個(gè)位)、一個(gè)或多個(gè)標(biāo)志位(例如標(biāo)志寄存器753中的一個(gè)或多個(gè)位)等等。如果由所斷言指令指定的一個(gè)或多個(gè)位的值具有值I (例如位被置位或?yàn)檎?,則可以執(zhí)行指令并且可以向架構(gòu)狀態(tài)提交其結(jié)果。否則,如果一個(gè)或多個(gè)位的值具有另一不同值(例如位被清除或?yàn)榧?,則可以不執(zhí)行指令或者不向架構(gòu)狀態(tài)提交其結(jié)果或效果。
[0100]針對(duì)圖1、4、5、6或7中的任一個(gè)所描述的組件、特征、和細(xì)節(jié)還可任選地用于圖2或3中的任一個(gè)。此外,本文中針對(duì)任一裝置所描述的組件、特征以及細(xì)節(jié)還可任選地用于本文中所描述的在實(shí)施例中可由這種裝置和/或使用這種裝置執(zhí)行的任一方法中。
示例實(shí)施例
[0101]以下示例涉及進(jìn)一步的實(shí)施例。這些示例中的特性可用于一個(gè)或多個(gè)實(shí)施例中的任何地方。
[0102]示例I是一種處理有條件分支的處理器。該處理器包括提取有條件短前向分支的指令提取邏輯,有條件短前向分支包括有條件分支指令以及在有條件分支指令與由有條件分支指令指示的前向分支目標(biāo)指令之間以程序次序順序跟隨有條件分支指令的一組一個(gè)或多個(gè)指令。該處理器還包括與指令提取邏輯耦合的指令轉(zhuǎn)換邏輯,指令轉(zhuǎn)換邏輯用于將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。
[0103]示例2包括示例I的主題,并且可任選地,指令轉(zhuǎn)換邏輯用于去除有條件分支指令。
[0104]示例3包括示例I的主題,并且可任選地,指令轉(zhuǎn)換邏輯用于將在有條件分支指令與前向分支目標(biāo)指令之間的一組一個(gè)或多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
[0105]示例4包括示例I的主題,并且可任選地,指令轉(zhuǎn)換邏輯用于將在有條件分支指令與前向分支目標(biāo)指令之間的多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
[0106]示例5包括示例I的主題,并且可任選地,指令轉(zhuǎn)換邏輯用于輸出表示計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),不管有條件分支指令被預(yù)測為選取還是未選取。
[0107]示例6包括示例I的主題,并且可任選地,指令轉(zhuǎn)換邏輯包括位于處理器流水線的解碼級(jí)的硬件邏輯。
[0108]示例7包括示例I的主題,并且可任選地,有條件分支指令與前向分支目標(biāo)指令之間的一組一個(gè)或多個(gè)指令包括單個(gè)移動(dòng)指令,并且指令轉(zhuǎn)換邏輯用于將移動(dòng)指令轉(zhuǎn)換成有條件移動(dòng)指令。
[0109]示例8包括示例7的主題,并且可任選地,在有條件移動(dòng)指令的條件為假時(shí),有條件移動(dòng)指令不引起異常。
[0110]示例9包括示例1-7中任一項(xiàng)的主題,并且可任選地,指令轉(zhuǎn)換邏輯用于輸出表示計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),而無需指令轉(zhuǎn)換邏輯知曉有條件分支指令的分支預(yù)測。
[0111]示例10包括示例1-7中任一項(xiàng)的主題,并且可任選地,還包括與指令轉(zhuǎn)換邏輯耦合的后端邏輯,該后端邏輯用于執(zhí)行計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令并且基于確定有條件分支指令應(yīng)該已被選取,確定不更新反映計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
[0112]示例11包括示例1-7中任一項(xiàng)的主題,并且可任選地,還包括與指令轉(zhuǎn)換邏輯稱合的后端邏輯,該后端邏輯用于執(zhí)行計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令并且基于確定有條件分支指令應(yīng)該未被選取,確定更新反映計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
[0113]示例12包括示例1-7中任一項(xiàng)的主題,并且可任選地,指令提取邏輯用于總是提取在有條件分支指令與前向分支目標(biāo)指令之間的一個(gè)或多個(gè)指令,而不管有條件分支指令的斷言。
[0114]示例13是一種處理有條件分支的方法。該方法包括提取有條件短前向分支,該有條件短前向分支包括有條件分支指令以及在有條件分支指令與由有條件分支指令指示的前向分支目標(biāo)指令之間以程序次序順序跟隨有條件分支指令的一組一個(gè)或多個(gè)指令。該方法還包括將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。
[0115]示例14包括示例13的主題,并且可任選地,還包括向處理器的后端邏輯提供表示計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),而不管有條件分支指令被預(yù)測為選取還是未選取。
[0116]示例15包括示例13的主題,并且可任選地,轉(zhuǎn)換包括將在有條件分支指令與前向分支目標(biāo)指令之間的一組一個(gè)或多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
[0117]示例16包括示例13的主題,并且可任選地,轉(zhuǎn)換包括將在有條件分支指令與前向分支目標(biāo)指令之間的多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
[0118]示例17包括示例13的主題,并且可任選地,轉(zhuǎn)換包括去除有條件分支指令,并且轉(zhuǎn)換包括在處理器流水線的解碼級(jí)進(jìn)行轉(zhuǎn)換。
[0119]示例18包括示例13-17中任一項(xiàng)的主題,并且可任選地,還包括向處理器的后端邏輯提供表示計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),而不管分支預(yù)測邏輯的操作。
[0120]示例19包括示例13-17中任一項(xiàng)的主題。該主題包括執(zhí)行計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。該主題還包括實(shí)際確定有條件分支指令應(yīng)該被選取,并且響應(yīng)于確定有條件分支指令應(yīng)該被選取,確定不更新反映計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
[0121]示例20包括示例13-17中任一項(xiàng)的主題。該主題包括執(zhí)行計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。該主題還包括實(shí)際確定有條件分支指令應(yīng)該未被選取。該主題還包括響應(yīng)于確定有條件分支指令應(yīng)該未被選取,確定更新反映計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
[0122]示例21包括示例13-17中任一項(xiàng)的主題,并且可任選地,提取包括即便在有條件分支指令被預(yù)測為選取時(shí)也提取有條件分支指令與前向分支目標(biāo)指令之間的一個(gè)或多個(gè)指令。
[0123]示例22是一種處理有條件分支的方法。該方法包括檢測有條件分支指令。該方法還包括確定短前向分支跟隨有條件分支指令。該方法還包括確定短前向分支內(nèi)的全部指令可被轉(zhuǎn)換成相應(yīng)的計(jì)算等效的所斷言指令。
[0124]示例23包括示例22的主題,并且可任選地,還將短前向分支內(nèi)的全部指令轉(zhuǎn)換成相應(yīng)的計(jì)算等效的所斷言指令并去除有條件分支指令。
[0125]示例24包括示例22-23中任一項(xiàng)的主題。該主題包括執(zhí)行計(jì)算等效的所斷言指令。該主題還包括明確確定有條件分支指令應(yīng)該被選取。該主題包括在確定有條件分支指令應(yīng)該被選取之后,確定不更新反映計(jì)算等效的所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
[0126]示例25是一種處理有條件分支的系統(tǒng)。該系統(tǒng)包括互連。該系統(tǒng)還包括與互連耦合的處理器,該處理器包括提取有條件短前向分支的指令提取邏輯,有條件短前向分支包括有條件分支指令以及在有條件分支指令與由有條件分支指令指示的前向分支目標(biāo)指令之間以程序次序順序跟隨有條件分支指令的一組一個(gè)或多個(gè)指令。該系統(tǒng)還包括與指令提取邏輯耦合的指令轉(zhuǎn)換邏輯,指令轉(zhuǎn)換邏輯將有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。該系統(tǒng)還包括與互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
[0127]示例26包括示例25的主題,并且可任選地,指令轉(zhuǎn)換邏輯用于去除有條件分支指令,并且指令轉(zhuǎn)換邏輯用于將在有條件分支指令與前向分支目標(biāo)指令之間的一組一個(gè)或多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
[0128]示例27包括示例25-26中任一項(xiàng)的主題,包括與指令轉(zhuǎn)換邏輯耦合的后端邏輯,該后端邏輯用于執(zhí)行計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令并且基于確定有條件分支指令應(yīng)該未被選取,確定不更新反映計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
[0129]示例28包括一種執(zhí)行示例13-17中的任一個(gè)的方法的裝置。
[0130]示例29包括一種包括用于執(zhí)行示例13-17中的任一個(gè)的方法的裝置的設(shè)備。
[0131]示例30包括一種執(zhí)行示例22-23中的任一個(gè)的方法的設(shè)備。
[0132]示例31包括一種包括用于執(zhí)行示例22-23中的任一個(gè)的方法的裝置的設(shè)備。
[0133]示例32包括一種執(zhí)行基本如本文中所描述的方法的處理器。
[0134]示例33包括一種處理器,該處理器包括用于執(zhí)行基本如本文中所描述的方法的
>J-U ρ?α裝直。
[0135]在說明書和權(quán)利要求書中,可能使用了術(shù)語“耦合”和“連接”及其衍生詞。應(yīng)當(dāng)理解,這些術(shù)語不旨在作為彼此的同義詞。相反,在特定實(shí)施例中,可使用“連接”來指示兩個(gè)或更多元件彼此直接物理或電氣接觸?!榜詈稀笨杀硎緝蓚€(gè)或兩個(gè)以上元件直接物理或電接觸。然而,“耦合”還可表示兩個(gè)或兩個(gè)以上元件彼此不直接接觸,但是仍然彼此協(xié)同操作或交互。例如,指令轉(zhuǎn)換邏輯可以通過中間指令隊(duì)列或其它指令存儲(chǔ)與指令提取邏輯耦合。在附圖中,箭頭用于示出連接和耦合。
[0136]在該描述和權(quán)利要求中,可能使用了術(shù)語“邏輯”。如本文中所使用的,邏輯可包括模塊,諸如硬件、固件、軟件、或者其組合。邏輯的示例包括集成電路、專用集成電路、模擬電路、數(shù)字電路、編程邏輯設(shè)備、包括指令的存儲(chǔ)器設(shè)備等。在一些實(shí)施例中,硬件邏輯可包括可能與其他電路組件一起的晶體管和/或門。
[0137]可能使用了術(shù)語“和/或”。如所使用的,術(shù)語“和/或”表示之一或另一個(gè)或兩者(例如A和/或B表示A或B或A、B兩者)。
[0138]在以上描述中,為解釋起見,陳述了眾多具體細(xì)節(jié)以提供對(duì)本發(fā)明的實(shí)施例的透徹理解。然而,將對(duì)本領(lǐng)域技術(shù)人員明顯的是,在沒有這些具體細(xì)節(jié)中的一些的情況下,也可實(shí)踐一個(gè)或多個(gè)其他實(shí)施例。提供所描述的具體實(shí)施例不是為了限制本發(fā)明而是為了通過示例實(shí)施例對(duì)其進(jìn)行說明。本發(fā)明的范圍不是由具體示例確定,而是僅由權(quán)利要求確定。在其他實(shí)例中,以框圖的形式或者在沒有細(xì)節(jié)的情況下,示出了公知電路、結(jié)構(gòu)、設(shè)備、以及操作,以避免混淆對(duì)該描述的理解。
[0139]在認(rèn)為適宜之處,附圖標(biāo)記或附圖標(biāo)記的結(jié)尾部分在諸附圖當(dāng)中被重復(fù),以指示可任選地具有相似或相同特性的對(duì)應(yīng)或相似的要素,除非另行明確指出或顯而易見。在描述了多個(gè)組件的一些情況下,它們可被集成到單一組件中。在描述了單個(gè)組件的其它情形中,它可以被劃分成多個(gè)組件。
[0140]描述了各種操作和方法。在流程圖中以相對(duì)基礎(chǔ)的形式描述了這些方法中的一些方法,但是操作可被任選地增加到這些方法和/或從這些方法移除。另外,盡管流程圖示出根據(jù)示例實(shí)施例的操作的特定次序,但是特定次序是示例性的。替換實(shí)施例可任選地以不同的次序執(zhí)行操作,組合特定操作,重疊特定操作等。
[0141 ] 還應(yīng)理解,貫穿本說明書對(duì)例如“ 一個(gè)實(shí)施例”、“一實(shí)施例”或“ 一個(gè)或多個(gè)實(shí)施例”的引述意味著特定特征可包括在本發(fā)明的實(shí)踐中。類似地應(yīng)當(dāng)理解,在本說明書中,各個(gè)特征有時(shí)被一起編組在單個(gè)實(shí)施例、附圖或其描述中,以使本公開變得順暢并幫助理解各個(gè)創(chuàng)新性方面。然而,公開的該方法不被解釋為反映本發(fā)明需要多于在每一權(quán)利要求中明確敘述的特征的意圖。相反,如下面權(quán)利要求反映的,各創(chuàng)新性方面可存在于比單個(gè)公開的實(shí)施例的全部特征更少的特征。因此,該詳細(xì)描述之后的權(quán)利要求由此被明確地結(jié)合到該詳細(xì)描述中,其中,每一權(quán)利要求本身代表本發(fā)明的單獨(dú)實(shí)施例。
【權(quán)利要求】
1.一種處理有條件分支的處理器,包括: 指令提取邏輯,用于提取有條件短前向分支,所述有條件短前向分支包括有條件分支指令以及在所述有條件分支指令與由所述有條件分支指令指示的前向分支目標(biāo)指令之間以程序次序順序跟隨所述有條件分支指令的一組一個(gè)或多個(gè)指令;以及 與所述指令提取邏輯耦合的指令轉(zhuǎn)換邏輯,所述指令轉(zhuǎn)換邏輯用于將所述有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。
2.如權(quán)利要求1所述的處理器,其特征在于,所述指令轉(zhuǎn)換邏輯用于去除所述有條件分支指令。
3.如權(quán)利要求1所述的處理器,其特征在于,所述指令轉(zhuǎn)換邏輯用于將在所述有條件分支指令與所述前向分支目標(biāo)指令之間的所述一組一個(gè)或多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
4.如權(quán)利要求1所述的處理器,其特征在于,所述指令轉(zhuǎn)換邏輯用于將在所述有條件分支指令與所述前向分支目標(biāo)指令之間的多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
5.如權(quán)利要求1所述的處理器,其特征在于,所述指令轉(zhuǎn)換邏輯用于輸出表示所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),而不管所述有條件分支指令被預(yù)測為選取還是未選取。
6.如權(quán)利要求1所述的處理器,其特征在于,所述指令轉(zhuǎn)換邏輯包括位于所述處理器的流水線的解碼級(jí)的硬件邏輯。
7.如權(quán)利要求1所述的處理器,其特征在于,所述有條件分支指令與所述前向分支目標(biāo)指令之間的所述一組一個(gè)或多個(gè)指令包括單個(gè)移動(dòng)指令,并且所述指令轉(zhuǎn)換邏輯用于將所述移動(dòng)指令轉(zhuǎn)換成有條件移動(dòng)指令。
8.如權(quán)利要求7所述的處理器,其特征在于,當(dāng)所述有條件移動(dòng)指令的條件為假時(shí),所述有條件移動(dòng)指令不引起異常。
9.如權(quán)利要求1-7中任一項(xiàng)所述的處理器,其特征在于,所述指令轉(zhuǎn)換邏輯用于輸出表示所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),而無需所述指令轉(zhuǎn)換邏輯知曉所述有條件分支指令的分支預(yù)測。
10.如權(quán)利要求1-7中任一項(xiàng)所述的處理器,其特征在于,還包括與所述指令轉(zhuǎn)換邏輯耦合的后端邏輯,所述后端邏輯用于執(zhí)行所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令并且基于確定所述有條件分支指令應(yīng)該已被選取,確定不更新反映所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
11.如權(quán)利要求1-7中任一項(xiàng)所述的處理器,其特征在于,還包括與所述指令轉(zhuǎn)換邏輯耦合的后端邏輯,所述后端邏輯用于執(zhí)行所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令并且基于確定所述有條件分支指令應(yīng)該未被選取,確定更新反映所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
12.如權(quán)利要求1-7中任一項(xiàng)所述的處理器,其特征在于,所述指令提取邏輯用于總是提取在所述有條件分支指令與所述前向分支目標(biāo)指令之間的一個(gè)或多個(gè)指令,而不管所述有條件分支指令的預(yù)測。
13.—種處理有條件分支的方法,包括:提取有條件短前向分支,所述有條件短前向分支包括有條件分支指令以及在所述有條件分支指令與由所述有條件分支指令指示的前向分支目標(biāo)指令之間以程序次序順序跟隨所述有條件分支指令的一組一個(gè)或多個(gè)指令;以及 將所述有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令。
14.如權(quán)利要求13所述的方法,其特征在于,還包括向處理器的后端邏輯提供表示所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),而不管所述有條件分支指令被預(yù)測為選取還是未選取。
15.如權(quán)利要求13所述的方法,其特征在于,所述轉(zhuǎn)換包括將在所述有條件分支指令與所述前向分支目標(biāo)指令之間的所述一組一個(gè)或多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
16.如權(quán)利要求13所述的方法,其特征在于,所述轉(zhuǎn)換包括將在所述有條件分支指令與所述前向分支目標(biāo)指令之間的多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
17.如權(quán)利要求13所述的方法,其特征在于,所述轉(zhuǎn)換包括去除所述有條件分支指令,并且所述轉(zhuǎn)換包括在處理器流水線的解碼級(jí)進(jìn)行轉(zhuǎn)換。
18.如權(quán)利要求13-17中任一項(xiàng)所述的方法,其特征在于,還包括向處理器的后端邏輯提供表示所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的信號(hào),而不管分支預(yù)測邏輯的操作。
19.如權(quán)利要求 13-17中的任一項(xiàng)所述的方法,其特征在于,還包括: 執(zhí)行所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令; 實(shí)際確定所述有條件分支指令應(yīng)該被選?。灰约? 響應(yīng)于確定所述有條件分支指令應(yīng)該被選取,確定不更新反映所述計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
20.—種處理有條件分支的方法,包括: 檢測有條件分支指令; 確定短前向分支跟隨所述有條件分支指令;以及 確定所述短前向分支內(nèi)的全部指令能被轉(zhuǎn)換成相應(yīng)的計(jì)算等效的所斷言指令。
21.如權(quán)利要求20所述的方法,其特征在于,還包括將所述短前向分支內(nèi)的所述全部指令轉(zhuǎn)換成相應(yīng)的計(jì)算等效的所斷言指令并去除所述有條件分支指令。
22.如權(quán)利要求20-21中的任一項(xiàng)所述的方法,其特征在于,還包括: 執(zhí)行所述計(jì)算等效的所斷言指令; 明確確定所述有條件分支指令應(yīng)該被選取;以及 在確定所述有條件分支指令應(yīng)該被選取之后,確定不更新反映所述計(jì)算等效的所斷言指令的執(zhí)行的架構(gòu)狀態(tài)。
23.—種處理有條件分支的系統(tǒng),包括: 互連; 與所述互連耦合的處理器,所述處理器包括: 指令提取邏輯,用于提取有條件短前向分支,所述有條件短前向分支包括有條件分支指令以及在所述有條件分支指令與由所述有條件分支指令指示的前向分支目標(biāo)指令之間以程序次序順序跟隨所述有條件分支指令的一組一個(gè)或多個(gè)指令;以及與所述指令提取邏輯耦合的指令轉(zhuǎn)換邏輯,所述指令轉(zhuǎn)換邏輯用于將所述有條件短前向分支轉(zhuǎn)換成計(jì)算等效的一組一個(gè)或多個(gè)所斷言指令;以及與所述互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
24.如權(quán)利要求23所述的系統(tǒng),其特征在于,所述指令轉(zhuǎn)換邏輯用于去除所述有條件分支指令,并且所述指令轉(zhuǎn)換邏輯用于將在所述有條件分支指令與所述前向分支目標(biāo)指令之間的所述一組一個(gè)或多個(gè)指令中的每一個(gè)從非斷言轉(zhuǎn)換成所斷言指令。
25.—種包括用于執(zhí)行權(quán)利要求13-17中任一項(xiàng)所述的方法的裝置的設(shè)備。
【文檔編號(hào)】G06F9/30GK104049944SQ201410097370
【公開日】2014年9月17日 申請(qǐng)日期:2014年3月17日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】E·T·格羅科斯基, M·G·迪克森, Y·A·圣地亞哥, M·奈克 申請(qǐng)人:英特爾公司