能量高效的多模式指令發(fā)布的制作方法
【專利說明】
【背景技術(shù)】
[0001]不同的指令發(fā)布模式具有不同的功率和性能折衷。具有實(shí)現(xiàn)有序(in-order)指令發(fā)布模式的邏輯單元的處理器按照獲取指令的順序來發(fā)布指令,從而實(shí)現(xiàn)簡(jiǎn)單、能量高效的流水線。雖然能量高效,但是有序指令發(fā)布模式呈現(xiàn)比無序(out-of-order)指令發(fā)布模式要低的性能,這是因?yàn)橛行蛑噶畎l(fā)布模式面對(duì)丟失事件(miss event)必須停頓(例如,等待還未寫回到操作數(shù)緩沖器或還未寫入到寄存器堆的操作數(shù))。
[0002]具有實(shí)現(xiàn)無序指令發(fā)布模式的邏輯單元的處理器基于指令的依存關(guān)系來執(zhí)行指令,從而通過容許動(dòng)態(tài)延時(shí)而提供較高的性能。然而,無序指令發(fā)布模式消耗比有序指令發(fā)布模式更多的能量,這是因?yàn)閷?shí)現(xiàn)無序指令發(fā)布模式的邏輯單元比實(shí)現(xiàn)有序執(zhí)行發(fā)布模式的邏輯單元更復(fù)雜。例如,實(shí)現(xiàn)無序指令發(fā)布模式的邏輯單元必須能夠執(zhí)行動(dòng)態(tài)調(diào)度,這消耗額外的功率。
【發(fā)明內(nèi)容】
[0003]本申請(qǐng)描述了一種處理器,所述處理器被配置為:在與不同的能耗特性相關(guān)聯(lián)的指令發(fā)布模式之間切換。所述指令發(fā)布模式可以包括無序指令發(fā)布模式和有序指令發(fā)布模式,并且可以由所述處理器的不同邏輯單元來實(shí)現(xiàn)。所述處理器的電路可以通過在這些邏輯單元之間切換來在所述指令發(fā)布模式之間切換。此外,所述處理器可以被配置為:確定與多條指令(例如,原子指令塊(atomic instruct1n block))相關(guān)聯(lián)的特性,以及至少部分地基于所確定的特性來切換所述指令發(fā)布模式。
[0004]提供本
【發(fā)明內(nèi)容】
以便用簡(jiǎn)化形式來介紹將在在下面的【具體實(shí)施方式】中進(jìn)一步詳細(xì)描述的一些概念的選擇。本
【發(fā)明內(nèi)容】
并非旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特性或必要特性,也不旨在用于限制所要求保護(hù)的主題的范圍。
【附圖說明】
[0005]參照附圖來闡述【具體實(shí)施方式】,其中附圖標(biāo)記的最左邊的數(shù)字標(biāo)識(shí)該附圖標(biāo)記最先出現(xiàn)的附圖。在不同的附圖中使用相同的附圖標(biāo)記指示相似或相同的項(xiàng)目或特征。
[0006]圖1是具有處理器的示例性計(jì)算設(shè)備的框圖,其中處理器被配置為:在與不同的能耗特性相關(guān)聯(lián)的指令發(fā)布模式之間切換。
[0007]圖2A至圖2D是處理器微架構(gòu)的一部分的圖,其中包括與不同的指令發(fā)布模式相關(guān)聯(lián)的邏輯單元以及用于在這些邏輯單元之間切換的電路。
[0008]圖3是示出了用于至少部分地基于與多條指令相關(guān)聯(lián)的特性而在處理器的第一指令發(fā)布模式和處理器的第二指令發(fā)布模式之間切換的說明性過程的流程圖。
【具體實(shí)施方式】
[0009]本公開內(nèi)容描述了一種處理器,該處理器被配置為:在與不同的能耗特性相關(guān)聯(lián)的指令發(fā)布模式之間切換。處理器還可以被配置為:獲取指令(例如,原子指令塊)并且確定與這些指令相關(guān)聯(lián)的特性。至少部分地基于該特性,處理器可以切換指令發(fā)布模式,并且使用所切換到的指令發(fā)布模式來從處理器的指令窗中選擇指令。在一些實(shí)施例中,處理器可以被配置為:在無序指令發(fā)布模式和有序指令發(fā)布模式之間切換。
[0010]在各個(gè)實(shí)施例中,每個(gè)指令發(fā)布模式可以與處理器的不同邏輯單元相關(guān)聯(lián),并且處理器可以包括在邏輯單元之間切換的電路。該電路可以包括例如到邏輯單元中的一個(gè)邏輯單元的輸入線,該輸入線耦合到時(shí)鐘門(clock gate)。除了用于時(shí)鐘信號(hào)的輸入之外,時(shí)鐘門還可以包括發(fā)送對(duì)適當(dāng)?shù)闹噶畎l(fā)布模式進(jìn)行指示的信號(hào)的輸入線。當(dāng)該線的輸入與邏輯單元的指令發(fā)布模式匹配時(shí),并且當(dāng)接收到時(shí)鐘信號(hào)時(shí),邏輯單元被激活。
[0011]處理器可以基于所確定的特性來設(shè)置對(duì)時(shí)鐘門的輸入。在一些實(shí)施例中,特性可以包括靜態(tài)提示,例如與所獲取的指令包括在一起的元數(shù)據(jù)。替代地,可以通過對(duì)該靜態(tài)提示和包括處理器的計(jì)算設(shè)備的電量狀態(tài)的邏輯與(logical AND)來確定特性。在另外的實(shí)施例中,可以通過處理器的表單來確定特性。該表單可以包括用于指令集(例如,原子指令塊)的條目,以及與每個(gè)指令集相關(guān)聯(lián)的計(jì)數(shù)。在此類實(shí)施例中,特性可以是指示計(jì)數(shù)是否達(dá)到或超過閾值的二進(jìn)制值??梢赞D(zhuǎn)而基于發(fā)生某一事件或某些事件來構(gòu)建計(jì)數(shù)。例如,當(dāng)指令集的指令有序發(fā)布時(shí)可以遞增計(jì)數(shù),并且當(dāng)指令集的指令無序發(fā)布時(shí)遞減計(jì)數(shù)。在另外的實(shí)施例中,可以基于指令窗中的下一指令是否準(zhǔn)備好有序發(fā)布來設(shè)置特性。在此類實(shí)施例中,邏輯單元中的一個(gè)邏輯單元可以檢查指令窗中的指令,基于該檢查來向時(shí)鐘門提供輸入(直接地或者通過反相器來提供),時(shí)鐘門然后可以基于該輸入來激活或者不激活其它邏輯單元。
[0012]示例性計(jì)算設(shè)備
[0013]圖1是具有處理器的示例性計(jì)算設(shè)備的框圖,其中處理器被配置為:在與不同的能耗特性相關(guān)聯(lián)的指令發(fā)布模式之間切換。在各個(gè)實(shí)施例中,計(jì)算設(shè)備102可以是任何類型的計(jì)算設(shè)備。例如,計(jì)算設(shè)備102可以是個(gè)人計(jì)算機(jī)(PC)、膝上型計(jì)算機(jī)、服務(wù)器或服務(wù)器群、大型機(jī)、平板計(jì)算機(jī)、工作站、電信設(shè)備、個(gè)人數(shù)字助理(PDA)、媒體播放器、媒體中心設(shè)備、個(gè)人視頻記錄器(PVR)、電視機(jī)、或者任何其它類型的設(shè)備。
[0014]如所示出的,計(jì)算設(shè)備102可以包括一個(gè)或多個(gè)處理器104。處理器104可以是任何已知的處理器和/或可以包括一個(gè)或多個(gè)中央處理單元(CPU)或圖形處理單元(GPU)。處理器104包括至少一個(gè)處理器104,該至少一個(gè)處理器104被配置為:在與不同的能耗特性相關(guān)聯(lián)的指令發(fā)布模式之間切換。圖2A至圖2D中示出了該處理器104的微架構(gòu)的一部分并且下面參照這些附圖對(duì)其進(jìn)行更詳細(xì)的描述。
[0015]在一些實(shí)施例中,被配置為在指令發(fā)布模式之間切換的處理器104可以利用顯式數(shù)據(jù)圖執(zhí)行(EDGE)指令集架構(gòu)(ISA)。EDGE ISA通過直接表達(dá)數(shù)據(jù)流圖(例如,有向非循環(huán)圖)(編譯器在原子指令塊中內(nèi)部地生成該數(shù)據(jù)流圖)來提供編譯器和處理器微架構(gòu)之間更豐富的接口。這樣做避免處理器在運(yùn)行時(shí)重新發(fā)現(xiàn)數(shù)據(jù)依存關(guān)系。EDGE ISA還支持直接指令傳送,其中處理器直接傳遞生產(chǎn)者(producer)指令的輸出作為向消費(fèi)者(consumer)指令的輸入,而不是將輸出寫入到共享的存儲(chǔ)器,例如寄存器堆。
[0016]在另外的實(shí)施例中,利用EDGEISA的處理器104可以具有萬億次可靠智能自適應(yīng)處理系統(tǒng)(TRIPS)架構(gòu)。TRIPS架構(gòu)是EDGE ISA的一個(gè)實(shí)例化方式。具有TRIPS架構(gòu)的處理器104可以包括L2高速緩存和多個(gè)處理器內(nèi)核。在一些實(shí)施例中,所利用的處理器內(nèi)核的數(shù)量在運(yùn)行時(shí)可以是動(dòng)態(tài)的。每個(gè)處理器內(nèi)核轉(zhuǎn)而可以包括執(zhí)行節(jié)點(diǎn)的陣列(array)、指令高速緩存、數(shù)據(jù)高速緩存、以及到L2高速緩存的端口。每個(gè)執(zhí)行節(jié)點(diǎn)可以包括算數(shù)邏輯單元(ALU)和指令緩沖器,并且ALU可以是通用的,以適用于整數(shù)、浮點(diǎn)數(shù)等等。編譯器可以將原子指令塊的指令映射到執(zhí)行節(jié)點(diǎn)中的一個(gè)或多個(gè)執(zhí)行節(jié)點(diǎn),以實(shí)現(xiàn)對(duì)大量指令的同時(shí)執(zhí)行。在2004年7月IEEE Computer,37(7),pp 44-55,D.Burger,S.W.Keckler,K.S.McKinley等人的 “Scaling to the End of Silicon with EDGE Architectures,” 中更詳細(xì)地描述了EDGE ISA和TRIPS架構(gòu)二者。
[0017]存儲(chǔ)器106可以存儲(chǔ)可在處理器104上加載和執(zhí)行的程序指令,