用于超前運(yùn)行操作的指令分類的制作方法
【專利摘要】用于超前運(yùn)行操作的指令分類。提供與方法和設(shè)備相關(guān)的實施例,該方法和設(shè)備在指令的執(zhí)行產(chǎn)生觸發(fā)超前運(yùn)行的事件的情況下可操作以使微處理器進(jìn)入超前運(yùn)行并在超前運(yùn)行中操作而不重新發(fā)出指令。在一個示例中,提供微處理器。示范性微處理器包括用于檢索指令的獲取邏輯、用于發(fā)出由獲取邏輯所檢索的指令用于執(zhí)行的調(diào)度邏輯以及超前運(yùn)行控制邏輯。示范性超前運(yùn)行控制邏輯在由調(diào)度邏輯所調(diào)度的指令的執(zhí)行產(chǎn)生觸發(fā)超前運(yùn)行的事件的情況下可操作以使微處理器進(jìn)入超前運(yùn)行模式并在超前運(yùn)行模式中操作而不重新發(fā)出指令,并在微處理器處于超前運(yùn)行模式中時實行支配微處理器的操作并使微處理器與當(dāng)不在超前運(yùn)行模式中時不同地進(jìn)行操作的超前運(yùn)行策略。
【專利說明】用于超前運(yùn)行操作的指令分類
【背景技術(shù)】
[0001]微處理器中的指令常常由于管線錯誤或數(shù)據(jù)沖突而被重新分派一次或多次用于執(zhí)行。例如,當(dāng)指令引用尚未被計算或檢索的結(jié)果時可能需要被重新分派。從不可用信息中產(chǎn)生的未命中可能使微處理器停頓(Stall)。因為不知道在該未命中的解決期間是否將由于其他未命中而出現(xiàn)其他始料未及的停頓,所以微處理器可實施配置為在正在解決初始未命中的同時檢測其他未命中的超前運(yùn)行(runahead)操作。
【專利附圖】
【附圖說明】
[0002]圖1示意性地示出根據(jù)本公開實施例的計算設(shè)備的微處理器。
[0003]圖2A示出根據(jù)本公開實施例的、在超前運(yùn)行中執(zhí)行微處理器而不重新發(fā)出已使微處理器進(jìn)入超前運(yùn)行的指令的方法的一部分。
[0004]圖2B示出圖2A所示出的方法的另一部分。
[0005]圖3A示意性地示出根據(jù)本公開的實施例的、一旦檢測到超前運(yùn)行事件的微處理
器管線。
[0006]圖3B示出在進(jìn)入超前運(yùn)行之后的、圖3A所示出的微處理器管線。
【具體實施方式】
[0007]在現(xiàn)代微處理器中,架構(gòu)級指令常常在管線中執(zhí)行??梢詫⑦@類指令單獨地或作為微操作束(bundle)發(fā)出到管線中的各執(zhí)行機(jī)制。無論指令被發(fā)出用于執(zhí)行時采取的形式如何,當(dāng)發(fā)出指令時,并不知道指令的執(zhí)行是否將完成。換句話說,在分派時不知道在指令的執(zhí)行期間是否將出現(xiàn)未命中或異常。
[0008]在指令的執(zhí)行期間可能出現(xiàn)的常見的管線執(zhí)行停頓是導(dǎo)致高速緩存未命中的加載操作。這類高速緩存未命中可觸發(fā)進(jìn)入操作的超前運(yùn)行模式(此后稱為“超前運(yùn)行”),該超前運(yùn)行配置為例如在解決初始加載未命中的同時檢測其他高速緩存未命中、指令轉(zhuǎn)譯后備緩沖區(qū)未命中、或分支誤預(yù)測。如本文所使用的,超前運(yùn)行描述從長時延事件中產(chǎn)生的任何合適的推測性(sp e cu I at i ve )執(zhí)行方案,諸如在產(chǎn)生的加載事件從較慢的訪問存儲器位置拉取未命中的指令或數(shù)據(jù)的情況下的高速緩存未命中。一旦初始加載未命中被解決,那么微處理器退出超前運(yùn)行并且指令被重新執(zhí)行。因為其他未命中可能出現(xiàn),所以指令在指令的完成之前可被重新執(zhí)行數(shù)次是可能的。
[0009]一旦檢測到觸發(fā)超前運(yùn)行的事件,則微處理器的狀態(tài)(例如,寄存器和其它合適的狀態(tài))被設(shè)立檢查點使得微處理器在超前運(yùn)行之后可返回到該狀態(tài)。微處理器隨后在超前運(yùn)行期間繼續(xù)在工作狀態(tài)中執(zhí)行。在一些設(shè)定中,微處理器可立即進(jìn)入超前運(yùn)行,并且可選地可重新發(fā)出已使微處理器進(jìn)入超前運(yùn)行的指令用于執(zhí)行。因為重新發(fā)出指令可能花費一些時間,所以微處理器當(dāng)處于超前運(yùn)行中時能夠檢測新潛在長時延事件的有效時間可減少。在諸如加載未命中的一些其他設(shè)定中,微處理器可延遲進(jìn)入超前運(yùn)行直到可確定是否可通過在存儲器層級的另一高速緩存中的命中來滿足一個高速緩存中的加載未命中為止。例如,在指令使LI高速緩存未命中的場景中,微處理器可延遲重新發(fā)出指令,使得指令一旦被重新發(fā)出,則如果該指令到達(dá),就將與來自L2高速緩存的命中相吻合。換句話說,在這類場景中,微處理器將短暫停頓而不立即進(jìn)入超前運(yùn)行,接著重新發(fā)出指令。因為在知悉L2高速緩存中是否將存在命中之前可重新發(fā)出指令,所以如果L2高速緩存未命中,那么微處理器仍可進(jìn)入超前運(yùn)行。
[0010]然而,在上文所預(yù)期的場景的每一個中,可啟動指令而不知悉是否將產(chǎn)生觸發(fā)超前運(yùn)行的事件是可能的。因為在超前運(yùn)行模式中可以與在正常模式中不同地對待一些指令,并且因為可在發(fā)出時應(yīng)用一些這類不同,所以進(jìn)入超前運(yùn)行而不重新發(fā)出已致使進(jìn)入超前運(yùn)行的指令可能是困難的。例如,一些微處理器動作如果在超前運(yùn)行期間被實施,則可能不利地影響微處理器狀態(tài),因為那些動作可能導(dǎo)致高速緩存污染和/或使得難以返回到正常操作模式。
[0011]因此,本文所描述的實施例涉及方法和硬件,該方法和硬件在指令的執(zhí)行產(chǎn)生觸發(fā)超前運(yùn)行的事件的情況下可操作以使微處理器進(jìn)入超前運(yùn)行模式并在超前運(yùn)行模式中操作而不重新發(fā)出指令。在一些示例中,本文所描述的實施例可實行一個或多個超前運(yùn)行策略,其支配微處理器的操作并在當(dāng)微處理器處于超前運(yùn)行中時使微處理器與不處于超前運(yùn)行時不同地進(jìn)行操作。換句話說,微處理器可取決于超前運(yùn)行狀態(tài)針對一些指令采取不同的動作。
[0012]例如,將理解的是,在超前運(yùn)行期間可相對于非超前運(yùn)行操作而不同地將一些動作優(yōu)先化,和/或一些動作可被視為在超前運(yùn)行期間是可選的。因此,在一些實施例中,一些動作可被分類為是許可的(permissive),而其他動作可被分類為是絕對的。
[0013]許可動作可以是可選的或相對于另一動作被重新優(yōu)先化。例如,可由微處理器實施許可動作以節(jié)省功率和/或在超前運(yùn)行期間加強(qiáng)性能。這類可替代的對待可節(jié)省超前運(yùn)行期間的處理時間,因為在超前運(yùn)行期間檢測到附加停頓條件可以是比超前運(yùn)行計算結(jié)果更有意義的結(jié)果,該超前運(yùn)行計算結(jié)果可能是無效的。在一些實施例中,許可動作可被應(yīng)用到在超前運(yùn)行期間所遭遇的、被包括在允許指令分類中的一個或多個指令但不必然被應(yīng)用到在超前運(yùn)行期間所遭遇的每一個如此分類的指令。進(jìn)一步地,許可動作可不被應(yīng)用到在檢測到觸發(fā)超前運(yùn)行的事件之前所發(fā)出的、被包括在許可指令分類中的指令。
[0014]相反,絕對動作可表示使能適當(dāng)超前運(yùn)行操作的動作。換句話說,省略絕對動作或?qū)⒔^對動作去優(yōu)先化(deprioritize)可能威脅適當(dāng)超前運(yùn)行操作或在超前運(yùn)行之后到正常操作的返回。例如,絕對動作可包括保留微處理器正確性的動作。如本文所使用的,微處理器正確性一般是指微處理器架構(gòu)狀態(tài)的功能有效性,使得維持微處理器架構(gòu)的功能有效性的動作維持微處理器的正確性。在一些實施例中,絕對動作可被應(yīng)用到在超前運(yùn)行期間所遭遇的、被包括在絕對指令分類中的每一個指令。進(jìn)一步地,在一些實施例中,絕對動作可被應(yīng)用到在檢測到觸發(fā)超前運(yùn)行的事件之前所發(fā)出的、被包括在絕對指令分類中的指令。如本文所描述的對絕對動作加以應(yīng)用可保留并保護(hù)微處理器正確性。
[0015]在一些設(shè)定中,影響微處理器正確性的動作可能不可恢復(fù)地更改微處理器在超前運(yùn)行之后重新起動的能力。作為示例,在一些實施例中,微處理器的一些寄存器可具有設(shè)立檢查點的拷貝,當(dāng)在超前運(yùn)行片段(episode)之后重新起動時可從該設(shè)立檢查點的拷貝中恢復(fù)一旦超前運(yùn)行進(jìn)入而所呈現(xiàn)的狀態(tài)。由于存在設(shè)立檢查點的拷貝,所以在超前運(yùn)行期間對這些寄存器的寫入可能不干擾超前運(yùn)行之后的重新起動。然而,一些寄存器可能不具有設(shè)立檢查點的拷貝。為了保留微處理器功能正確性,應(yīng)避免在超前運(yùn)行期間對這類寄存器的寫入。缺乏高速緩存保護(hù)機(jī)制時可對高速緩存的寫入應(yīng)用類似照管。
[0016]作為另一示例,在一些實施例中,改變和/或控制微處理器操作的行為/操作的控制寄存器可被包括在微處理器中。在一些這樣的設(shè)定中,對控制寄存器的改變(例如經(jīng)由對該控制寄存器的寫入)可以以在以后的時間難以展開(unwind)的方式來更改微處理器的行為。例如,在超前運(yùn)行操作期間所做出的對控制寄存器的改變可能引入難以撤銷的對微處理器的操作改變,這潛在地使超前運(yùn)行后的操作與如果未出現(xiàn)超前運(yùn)行而預(yù)期的操作不同地進(jìn)行。在一些這類實施例中,在超前運(yùn)行期間可防止控制寄存器的更改。
[0017]可響應(yīng)于在多級微處理器管線的合適級處所實現(xiàn)的各自的超前運(yùn)行策略來實施上文描述的絕對和許可動作,使得超前運(yùn)行操作可開始而不重新發(fā)出觸發(fā)超前運(yùn)行的指令。例如,在進(jìn)入超前運(yùn)行時許可超前運(yùn)行策略可比絕對超前運(yùn)行策略更早地在多級管線中被應(yīng)用。反過來,作為在進(jìn)入超前運(yùn)行時的許可策略實現(xiàn)方案的結(jié)果,可選的動作可更早地在管線中被應(yīng)用到后續(xù)所發(fā)出的指令,諸如在進(jìn)入執(zhí)行邏輯之前。因為這些動作是可選的,所以由于在進(jìn)入超前運(yùn)行時指令沒有被重新發(fā)出,因此在超前運(yùn)行期間用于已經(jīng)在執(zhí)行邏輯中的指令的那些動作的不實施是可以接受的??稍诠芫€中的稍后點處對執(zhí)行邏輯中的所有指令應(yīng)用從絕對超前運(yùn)行策略的實現(xiàn)方案中產(chǎn)生的強(qiáng)制動作。例如,在從執(zhí)行邏輯退出處或在后續(xù)提交或回寫邏輯處應(yīng)用絕對超前運(yùn)行策略使得被超前運(yùn)行所潛在影響的所有指令可服從于合適的絕對超前運(yùn)行策略,這樣可避免對微處理器正確性的不利更改。
[0018]在一些示例中,所公開的實施例可檢測與在超前運(yùn)行期間所發(fā)出的指令相關(guān)聯(lián)的一個或多個指令分類。反過來,可在超前運(yùn)行期間應(yīng)用與各自的指令分類相關(guān)的一個或多個超前運(yùn)行策略。一些實施例可檢測在超前運(yùn)行期間所發(fā)出和/或所執(zhí)行的指令是否與絕對指令分類和/或許可指令分類相關(guān)聯(lián)。在一個場景中,可在提交指令之前應(yīng)用與絕對指令分類相關(guān)聯(lián)的絕對超前運(yùn)行策略。例如,在微處理器正確性可被指令的提交所影響的設(shè)定中,可防止在超前運(yùn)行期間微處理器的設(shè)立檢查點的狀態(tài)由于不適當(dāng)回寫事件的潛在損壞。在另一場景中,可在發(fā)出和/或執(zhí)行指令之前應(yīng)用與許可指令分類相關(guān)聯(lián)的許可超前運(yùn)行策略。如果被應(yīng)用,那么一旦發(fā)出到執(zhí)行邏輯,可由微處理器立即實現(xiàn)功率/性能收
Mo
[0019]圖1示意性地描繪可以有關(guān)于本文所描述的系統(tǒng)和方法而采用的微處理器100的實施例。微處理器100不同程度地包括處理器寄存器109并且還可以包括存儲器層級110,存儲器層級110可以包括LI處理器高速緩存110A、L2處理器高速緩存110B、L3處理器高速緩存110C、主存儲器IlOD (例如一個或多個DRAM芯片)、二級存儲IlOE (例如固態(tài)、磁性和/或光學(xué)存儲單元)和/或三級存儲IlOF (例如磁帶群)。將理解示范性存儲器/存儲部件以訪問時間和容量的遞增次序列出,但存在可能的例外。
[0020]存儲器控制器IIOG可用來處理協(xié)議并提供主存儲器IlOD所需的信號接口以及可用來調(diào)度存儲器訪問。存儲器控制器可實現(xiàn)在處理器裸片(die)上或分開的裸片上。要理解以上所提供的存儲器層級是非限制性的并且可以使用其他存儲器層級而不脫離本公開的范圍。
[0021]微處理器100還包括管線,其以簡化的形式在圖1中示出為管線102。管線化可允許多于一個指令并發(fā)地處于檢索和執(zhí)行的不同級。換句話說,一組指令可穿過管線102中所包括的各級,與此同時從存儲器檢索另一指令和/或數(shù)據(jù)。因此,在上游檢索機(jī)制正在等待存儲器返回指令和/或數(shù)據(jù)的同時可以利用各級,其銜接各種結(jié)構(gòu)諸如高速緩存和分支預(yù)測器使得可以潛在地發(fā)現(xiàn)其他高速緩存未命中和/或分支誤預(yù)測。相對于以單獨的、串行的方式檢索和執(zhí)行指令和/或數(shù)據(jù)的方法,該方法可以潛在地加速由微處理器進(jìn)行的指令和數(shù)據(jù)處理。
[0022]如圖1所示,管線102包括獲取邏輯120、解碼邏輯122、調(diào)度邏輯124、執(zhí)行邏輯128、超前運(yùn)行進(jìn)入控制邏輯130、許可邏輯131、絕對邏輯132以及回寫邏輯134。獲取邏輯120從存儲器層級110檢索指令,典型地是從主存儲器和L2-L3高速緩存所支持的統(tǒng)一或?qū)S肔I高速緩存檢索指令。解碼邏輯122例如通過解析操作碼、操作數(shù)和例如通過尋址模式來解碼指令。一旦被解析,指令就隨后由調(diào)度邏輯124所調(diào)度用于由執(zhí)行邏輯128執(zhí)行。
[0023]在一些實施例中,調(diào)度邏輯124可配置為以指令集架構(gòu)(ISA)指令的形式調(diào)度指令用于執(zhí)行。附加地或可替代地,在一些實施例中,調(diào)度邏輯124可以配置為調(diào)度微操作束用于執(zhí)行,其中每個微操作與一個或多個ISA指令或ISA指令的部分相對應(yīng)。將理解可以采用任何合適的安排用于在微操作束中調(diào)度指令而不脫離本公開的范圍。例如,在一些實施例中,可在多個微操作束中調(diào)度單個指令,而在一些實施例中可作為微操作束調(diào)度單個指令。而在其他實施例中,可作為微操作束調(diào)度多個指令。還有在其他實施例中,調(diào)度邏輯124可以調(diào)度單獨的指令或微操作,例如根本不包括束的指令或微操作。
[0024]如圖1所描繪的實施例中所示,調(diào)度邏輯124包括檢測邏輯126,所述檢測邏輯可操作以檢測用于由獲取邏輯120所檢索的指令的預(yù)定指令分類。在一些實施例中,檢測邏輯126可識別與所檢索的指令相關(guān)聯(lián)的絕對指令分類。在一些其他實施例中,檢測邏輯126可識別與所檢索的指令相關(guān)聯(lián)的許可指令分類。將理解的是,實際上可由檢測邏輯126檢測任何預(yù)定分類。
[0025]檢測到的分類可用來確定一個或多個超前運(yùn)行策略,該一個或多個超前運(yùn)行策略支配微處理器當(dāng)在超前運(yùn)行中執(zhí)行相關(guān)聯(lián)指令的同時要如何操作,如下文以更多細(xì)節(jié)所解釋的。將理解的是,檢測邏輯126可在微處理器操作的任何合適部分期間檢測指令分類。例如,在一些實施例中,檢測邏輯126可檢測指令分類而不用考慮微處理器100是否正在超前運(yùn)行模式中操作。在這類實施例中,即使在指令已被發(fā)出用于執(zhí)行之后,微處理器100也可能能夠?qū)δ切┲噶顟?yīng)用適當(dāng)?shù)某斑\(yùn)行策略。在一些其他實施例中,檢測邏輯126可配置為在超前運(yùn)行模式期間單獨地檢測指令分類。
[0026]雖然圖1示出檢測邏輯126被包括在調(diào)度邏輯124中,但將理解的是,檢測邏輯126可被包括在微處理器100的任何合適部分中。例如,回寫邏輯134可包括合適的檢測邏輯126。此外,將理解的是檢測邏輯126的各種功能可分布在微處理器100的多于一個部分之中。例如,調(diào)度邏輯124可包括配置為檢測許可指令分類的檢測邏輯126,而回寫邏輯134可包括配置為檢測絕對指令分類的檢測邏輯126。
[0027]如圖1所示,管線102的所描繪的實施例包括執(zhí)行邏輯128,所述執(zhí)行邏輯128可包括配置為執(zhí)行由調(diào)度邏輯124所發(fā)出的指令的一個或多個執(zhí)行機(jī)制單元。任何合適數(shù)目和類型的執(zhí)行機(jī)制單元可包括在執(zhí)行邏輯128內(nèi)??砂ㄔ趫?zhí)行邏輯128內(nèi)的執(zhí)行機(jī)制單元的非限制性示例包括算術(shù)處理單元、浮點處理單元、加載/存儲處理單元、跳轉(zhuǎn)統(tǒng)計/引退單元和/或整數(shù)執(zhí)行單元。
[0028]圖1所示出的微處理器100的實施例描繪超前運(yùn)行控制邏輯130。超前運(yùn)行控制邏輯130針對微處理器100控制超前運(yùn)行模式的進(jìn)入和退出。例如,在圖1所示出的示例中,一旦檢測到觸發(fā)超前運(yùn)行的事件,則超前運(yùn)行控制邏輯130用信號通知許可邏輯131和絕對邏輯132微處理器在超前運(yùn)行中。反過來,許可邏輯131和絕對邏輯132可通過對將在超前運(yùn)行期間被發(fā)出的指令應(yīng)用一個或多個超前運(yùn)行策略來采取動作。
[0029]在一些實施例中,許可邏輯131和絕對邏輯132可與管線102和超前運(yùn)行控制邏輯130通信,使得可在管線102的不同級處實現(xiàn)各自的超前運(yùn)行策略。反過來,在進(jìn)入超前運(yùn)行時許可超前運(yùn)行策略可比絕對超前運(yùn)行策略更早地在管線102中應(yīng)用。例如,許可邏輯131可指導(dǎo)調(diào)度邏輯124以在超前運(yùn)行期間于發(fā)出之前對指令應(yīng)用許可超前運(yùn)行策略。反過來,當(dāng)執(zhí)行指令時,作為由微處理器100所采取的功率和/或性能管理動作的結(jié)果,指令的執(zhí)行可在超前運(yùn)行中被加強(qiáng)。作為另一示例,絕對邏輯132可指導(dǎo)配置為將執(zhí)行操作的結(jié)果提交到適當(dāng)位置(例如寄存器109)的回寫邏輯134,以在超前運(yùn)行期間防止一個或多個回寫動作。反過來,回寫邏輯134可防止可從超前運(yùn)行期間的更改中產(chǎn)生的高速緩存損壞,如下文所述。
[0030]在一些實施例中,超前運(yùn)行控制邏輯130還可控制與超前運(yùn)行的進(jìn)入和退出相關(guān)的存儲器操作。例如,在進(jìn)入超前運(yùn)行時,微處理器100的各部分可被設(shè)立檢查點以保留微處理器100的狀態(tài),同時微處理器100的未設(shè)立檢查點的(non-checkpointed)工作狀態(tài)版本在超前運(yùn)行期間推測性地執(zhí)行指令。微處理器100的可在超前運(yùn)行期間設(shè)立檢查點的各部分的非限制性示例包括緩沖區(qū)(未示出)、寄存器109以及執(zhí)行邏輯128的狀態(tài)。在一些這類實施例中,在從超前運(yùn)行退出時,超前運(yùn)行控制邏輯130可將微處理器100恢復(fù)到被設(shè)立檢查點的狀態(tài)。
[0031]將理解的是,管線102中所示出的以上各級是典型的RISC實現(xiàn)方案的例示,并且不意圖進(jìn)行限制。例如,在一些實施例中,可在管線的上游提供獲取邏輯和調(diào)度邏輯功能性,諸如編譯VLIW指令或代碼變形(code-morphing)。在其他一些實施例中,調(diào)度邏輯可被包括在微處理器的獲取邏輯和/或解碼邏輯中。更一般地,微處理器可包括獲取、解碼和執(zhí)行邏輯,其中的每一個可包括一個或多個級,而mem和回寫功能性由執(zhí)行邏輯來實行。本公開等同地適用于這些和其他微處理器實現(xiàn)方案,包括可使用VLIW指令和/或其他邏輯指令的混合實現(xiàn)方案。
[0032]在所描述的示例中,可以一次一個地獲取和執(zhí)行指令,這可能要求多個時鐘周期。在此期間,大部分?jǐn)?shù)據(jù)路徑可能未被使用。補(bǔ)充或取代單個指令獲取,可使用預(yù)獲取方法來加強(qiáng)性能并避免與讀和存儲操作(例如讀取指令以及將這類指令加載到處理器寄存器和/或執(zhí)行隊列中)相關(guān)聯(lián)的時延瓶頸。因此,將該理解實際上可以使用任何合適的獲取、調(diào)度和分派指令的方式而不脫離本公開的范圍。
[0033]圖2A和2B示出用于使微處理器進(jìn)入超前運(yùn)行并在超前運(yùn)行中操作而不重新發(fā)出已使微處理器進(jìn)入超前運(yùn)行的指令的方法200的實施例。例如,在一些實施例中,方法200可用來操作有序微處理器(例如根據(jù)預(yù)選擇的程序次序來執(zhí)行指令的微處理器)。然而將理解的是,方法200的實施例可用來在超前運(yùn)行中操作任何合適的微處理器而不脫離本公開的范圍。例如,圖3A和圖3B示意性地示出微處理器管線300的實施例的一部分,可在該處實現(xiàn)方法200的實施例。
[0034]以圖2A繼續(xù),在202處,方法200包括檢索指令用于執(zhí)行,以及在204處,調(diào)度指令用于執(zhí)行。在206處,方法200包括識別超前運(yùn)行事件,以及在208處,使微處理器進(jìn)入超前運(yùn)行而不重新發(fā)出已致使進(jìn)入超前運(yùn)行的指令。
[0035]作為可如何實施方法200的示例性示例,圖3A和3B示意性地示出執(zhí)行一系列指令的微處理器管線300的實施例。在圖3A和3B示出的示例中,指令A(yù)在較早的參考時間T=O處由調(diào)度邏輯發(fā)出。在T=3處,如圖3A所示,指令A(yù)觸發(fā)超前運(yùn)行事件。微處理器管線300進(jìn)入超前運(yùn)行,并且在Τ=4處,如圖3Β所示,分派下一指令用于執(zhí)行(指令Α+3)而不重新發(fā)出已觸發(fā)超前運(yùn)行的指令。在一些實例中,重新發(fā)出觸發(fā)超前運(yùn)行的指令可能減少在超前運(yùn)行中可被處理的指令的數(shù)目。
[0036]例如,因為在發(fā)出之前不知悉指令A(yù)將觸發(fā)進(jìn)入到超前運(yùn)行中,所以在指令A(yù)和在指令A(yù)后續(xù)所發(fā)出的所有指令的發(fā)出處不應(yīng)用超前運(yùn)行策略,如由圖3Α中示出的不確定性窗口所指示的。如果指令A(yù)被重新發(fā)出,那么在將微處理器返回到當(dāng)前狀態(tài)的超前運(yùn)行模式版本的同時將消耗超前運(yùn)行的至少三個時鐘周期(例如通過重新發(fā)出指令A(yù)、Α+1和Α+2)。然而因為在首個三個時鐘周期期間僅指令A(yù)觸發(fā)了超前運(yùn)行,所以在那三個時鐘周期期間將沒有關(guān)于用于微處理器的潛在停頓條件的新信息被揭示。通過在超前運(yùn)行中執(zhí)行而不重新發(fā)出觸發(fā)超前運(yùn)行的指令,可揭示另一潛在停頓條件是可能的。轉(zhuǎn)變到超前運(yùn)行而不重新發(fā)出觸發(fā)超前運(yùn)行的指令的潛在優(yōu)點可能在執(zhí)行邏輯深處出現(xiàn)觸發(fā)超前運(yùn)行的事件的情況中更多。在這類情況中,如果重新發(fā)出了觸發(fā)超前運(yùn)行的指令,那么在觸發(fā)超前運(yùn)行的指令到達(dá)初始得到超前運(yùn)行事件的執(zhí)行機(jī)制單元之前,初始觸發(fā)超前運(yùn)行的事件可能被解決并退出超前運(yùn)行。
[0037]以圖2Α繼續(xù),在208處微處理器進(jìn)入超前運(yùn)行之后,方法200包括,在210處,在超前運(yùn)行期間根據(jù)一個或多個超前運(yùn)行策略來操作微處理器。如本文所使用的,超前運(yùn)行策略是指在超前運(yùn)行期間支配微處理器的操作的任何合適的動作。一個或多個超前運(yùn)行策略的實現(xiàn)方案可使微處理器在超前運(yùn)行期間與當(dāng)不處于超前運(yùn)行中時不同地進(jìn)行操作。
[0038]例如,超前運(yùn)行策略可使微處理器不同地對待一些指令并針對那些指令,相比于否則將在超前運(yùn)行之外采用的動作而采取可替代動作。此外,在超前運(yùn)行期間,與各自的指令相關(guān)聯(lián)的各種超前運(yùn)行策略可使微處理器各不相同地對待各自的指令。對待中的這類不同可基于各自的指令和/或?qū)ξ⑻幚砥鞯臐撛诤蠊械牟煌?br>
[0039]在圖2Α所示出的實施例中,在210處在超前運(yùn)行期間根據(jù)一個或多個超前運(yùn)行策略來操作微處理器包括,在212處,針對指令檢測指令分類,以及在214處,確定指令是否落入第一指令分類。在一些實施例中,在檢測到超前運(yùn)行條件的情況下,指令分類可以識別一個或多個超前運(yùn)行策略,該一個或多個超前運(yùn)行策略描述要由微處理器在指令的調(diào)度、執(zhí)行和/或引退期間所實施的一個或多個動作。雖然本文所描述的動作一般被按照積極動作對待,但將理解的是在超前運(yùn)行期間的任何合適的消極動作或無動作可被認(rèn)為在本公開的范圍內(nèi)。例如,動作可包括在超前運(yùn)行期間掛起活動,否則該掛起活動可出現(xiàn)在超前運(yùn)行之外。
[0040]如上文所引入的,一些動作可視為在超前運(yùn)行期間具有相異的相對優(yōu)先級,使得一些動作可被分類為是許可的,而其他動作可被分類為是絕對的。因此,在一些實施例中,確定指令是否落入第一分類可包括識別指令是否與許可指令分類相關(guān)聯(lián)。許可指令分類的非限制性示例包括微處理器功率管理指令分類和微處理器性能管理分類。進(jìn)一步地,在一些實施例中,確定指令是否落入第一分類可包括識別指令是否與絕對指令分類相關(guān)聯(lián)。絕對指令分類的一個非限制性示例包括微處理器正確性指令分類。
[0041]因為微處理器的操作穩(wěn)定性可被潛在超前運(yùn)行動作所影響,所以在214處在超前運(yùn)行期間根據(jù)超前運(yùn)行策略來操作微處理器包括,在216處,按照第一指令分類來控制微處理器的操作。例如,在一些實施例中,可根據(jù)第一指令分類來控制與第一指令分類相關(guān)聯(lián)的指令的調(diào)度、執(zhí)行或引退。附加地或可替代地,在一些實施例中,可根據(jù)第一指令分類來控制不同指令的調(diào)度、執(zhí)行或引退。
[0042]在一些實施例中,在216處按照第一指令分類來控制微處理器的操作可包括對微處理器應(yīng)用許可超前運(yùn)行策略。例如,如果第一指令分類與許可動作相關(guān)聯(lián),那么可對微處理器應(yīng)用許可超前運(yùn)行策略。
[0043]許可超前運(yùn)行策略的應(yīng)用可通過改進(jìn)指令可在管線中執(zhí)行的效率而在超前運(yùn)行中針對一些指令加強(qiáng)微處理器操作。在圖3A所示出的示例中,指令A(yù)+3被描繪為是可由調(diào)度邏輯在超前運(yùn)行進(jìn)入條件被觸發(fā)時所發(fā)出的下一指令。超前運(yùn)行控制邏輯發(fā)送信號到許可邏輯,其反過來用信號通知調(diào)度器以檢測并應(yīng)用超前運(yùn)行策略。一個時鐘周期之后(例如T=4),此時圖3Β顯示指令(Α+3)在執(zhí)行單元EXE⑶TE 0,這指示當(dāng)從調(diào)度邏輯發(fā)出時對指令Α+3應(yīng)用了許可超前運(yùn)行策略。
[0044]雖然該示例與在發(fā)出之前所實施的策略相關(guān),但將理解的是,合適的許可邏輯可在一個或多個合適的位置與管線和/或執(zhí)行邏輯通信。例如,包括與功率和性能管理超前運(yùn)行策略相關(guān)的邏輯的許可邏輯可與執(zhí)行邏輯的一個或多個早期的級通信。在執(zhí)行邏輯的早期的級之間提供 附加的通信可許可在觸發(fā)超前運(yùn)行之后(例如在不確定性窗口內(nèi))對已經(jīng)在執(zhí)行邏輯中的指令應(yīng)用許可超前運(yùn)行策略,這潛在地提供附加的超前運(yùn)行操作效率。
[0045]如上文所引入的,許可超前運(yùn)行策略可在超前運(yùn)行期間導(dǎo)致微處理器的更高效的操作。在一些實施例中,許可超前運(yùn)行策略的應(yīng)用可使微處理器將所選擇的指令從第一類型轉(zhuǎn)換成第二類型。這類實施例可以是與微處理器功率管理指令分類相關(guān)聯(lián)的動作的示例。
[0046]例如,許可超前運(yùn)行策略的應(yīng)用可使浮點操作指令轉(zhuǎn)換成非操作指令。浮點操作指令到非操作指令的轉(zhuǎn)換在超前運(yùn)行期間可節(jié)省功率和/或時間,因為在超前運(yùn)行期間浮點操作指令典型地不被用來計算地址或解決分支或另外揭示潛在停頓和未命中。在一些實施例中,許可超前運(yùn)行策略的應(yīng)用可使微處理器破壞用于所選擇的指令的目的(destination)。例如,如果浮點操作指令轉(zhuǎn)換成非操作指令,那么來自所轉(zhuǎn)換的指令的、以浮點數(shù)據(jù)為種子的整數(shù)指令(例如使用浮點數(shù)據(jù)作為輸入的指令)將可能得到無效結(jié)果。破壞用于以浮點數(shù)據(jù)為種子的指令(本示例中的整數(shù)指令)的目的寄存器可能減少潛在的高速緩存污染。
[0047]在一些實施例中,許可超前運(yùn)行策略的應(yīng)用可使微處理器抑制用于具有被破壞的源寄存器的指令的陷阱或故障條件。這類實施例可以是與微處理器性能管理指令分類相關(guān)聯(lián)的動作的示例。因為陷阱和故障典型地暫停(halt)微處理器操作,所以遭遇陷阱或故障可能縮短在超前運(yùn)行中的時間。在超前運(yùn)行期間抑制陷阱/故障條件可通過提供附加的機(jī)會用于待解決的分支和待顯現(xiàn)的未命中來加強(qiáng)微處理器性能。
[0048]雖然微處理器可在超前運(yùn)行中采取一些動作以加強(qiáng)操作,但在一些設(shè)定中,可要求微處理器實施一些動作以保留并保護(hù)微處理器的功能穩(wěn)定性和正確性。在一些實施例中,在216處按照第一指令分類來控制微處理器的操作可包括對微處理器應(yīng)用絕對超前運(yùn)行策略。例如,如果第一指令分類與絕對動作相關(guān)聯(lián),那么可對微處理器應(yīng)用絕對超前運(yùn)行策略以防止可能影響微處理器正確性的動作。
[0049]因為保留微處理器正確性的動作典型地與提交、回寫或其他存儲器操作相關(guān)聯(lián),所以這類操作通常在臨近執(zhí)行邏輯的結(jié)束時出現(xiàn)。例如,輸入/輸出操作典型地在執(zhí)行邏輯中的后期實施,因為是可能更新或另外影響微處理器架構(gòu)狀態(tài)的操作。因此,觸發(fā)超前運(yùn)行的事件通常是尚未到達(dá)這類操作的指令。反過來,在該指令之后被發(fā)出到執(zhí)行邏輯的指令也不太可能已到達(dá)那些操作。因此,在檢測到超前運(yùn)行時,可對從執(zhí)行邏輯中顯現(xiàn)的任何指令應(yīng)用絕對超前運(yùn)行策略,或在檢測到超前運(yùn)行之后,對到達(dá)可能影響微處理器正確性的操作的任何指令應(yīng)用絕對超前運(yùn)行策略。
[0050]在圖3A所示出的示例中,當(dāng)檢測到觸發(fā)超前運(yùn)行的事件時,超前運(yùn)行控制邏輯用信號通知絕對邏輯以應(yīng)用絕對超前運(yùn)行策略。反過來,絕對邏輯用信號通知回寫邏輯以取決于指令身份來實施絕對超前運(yùn)行策略。例如,在圖3B所示出的示例中,將針對在觸發(fā)超前運(yùn)行的指令A(yù)之前的那些指令(例如指令(A-1)和更早期的指令)許可回寫。將對觸發(fā)超前運(yùn)行的指令A(yù)和指令(A+1)和(A+2)應(yīng)用絕對超前運(yùn)行策略。雖然該示例與在回寫處所實施的策略相關(guān),但將理解的是,可在管線內(nèi)的任何合適的位置處實施合適的絕對超前運(yùn)行策略,管線內(nèi)的任何合適的位置諸如一旦從執(zhí)行邏輯退出或在管線內(nèi)的一個或多個與正確性相關(guān)的級處。
[0051]在一些實施例中,絕對超前運(yùn)行策略的應(yīng)用可使微處理器在超前運(yùn)行期間防止對微處理器的所提交的狀態(tài)的更改。例如,絕對超前運(yùn)行策略在超前運(yùn)行期間可防止對微處理器的未設(shè)立檢查點的狀態(tài)的更新,這潛在地促進(jìn)在超前運(yùn)行之后到初始狀態(tài)的可信回歸。作為另一示例,絕對超前運(yùn)行策略可防止在超前運(yùn)行期間出現(xiàn)與上文的示例中所描述的那些操作具有不同的架構(gòu)效果的存儲器操作,諸如輸入/輸出操作、回寫操作等等。在一些設(shè)定中,絕對超前運(yùn)行策略可防止對微處理器的存儲器系統(tǒng)的、影響微處理器架構(gòu)狀態(tài)的更改。
[0052]應(yīng)理解的是,指令可落入多于一個指令分類,使得隨著指令被執(zhí)行可對指令應(yīng)用多個超前運(yùn)行策略。例如,在超前運(yùn)行期間可對指令應(yīng)用許可和絕對超前運(yùn)行策略。因此,在一些實施例中,在210處在超前運(yùn)行期間根據(jù)超前運(yùn)行策略來操作微處理器可包括,在218處,確定該指令是否落入所選擇的分類,以及在220處,按照第二指令分類來控制該指令的執(zhí)行。例如,根據(jù)第二指令分類可對指令應(yīng)用第二合適超前運(yùn)行策略。
[0053]一旦解決已使微處理器進(jìn)入超前運(yùn)行的條件,那么微處理器可退出超前運(yùn)行。因此,方法200包括在222處使微處理器退出超前運(yùn)行。典型地,微處理器通過返回到設(shè)立檢查點的狀態(tài)并重新發(fā)出觸發(fā)過超前運(yùn)行的指令來重新進(jìn)入正常操作。
[0054]將理解的是,本文所描述的方法僅出于示例性的目的而提供而非意在限制。因此,將理解在一些實施例中本文所描述的方法可以包括附加的或替代的過程,而在一些實施例中本文所描述的方法可以包括一些可以被重新排序或省略的過程,而不脫離本公開的范圍。進(jìn)一步地,將理解可以使用包括本文所描述硬件的任何合適硬件來實施本文所描述的方法。
[0055]本書面描述使用示例來公開本發(fā)明,包括最佳模式,并且還使相關(guān)領(lǐng)域的普通技術(shù)人員能夠?qū)嵺`本發(fā)明,包括制造和使用任何設(shè)備或系統(tǒng)以及實施任何所包含的方法。本發(fā)明的可專利范圍由權(quán)利要求所定義,并且可以包括本領(lǐng)域普通技術(shù)人員所理解的其他示例。這類其他示例旨在處于權(quán)利要求的范圍內(nèi)。
【權(quán)利要求】
1.一種微處理器,包括: 獲取邏輯,用于檢索指令; 調(diào)度邏輯,用于發(fā)出由所述獲取邏輯所檢索的所述指令用于執(zhí)行;以及 超前運(yùn)行控制邏輯,其在由所述調(diào)度邏輯所調(diào)度的所述指令的執(zhí)行產(chǎn)生觸發(fā)超前運(yùn)行的事件的情況下可操作以使所述微處理器進(jìn)入超前運(yùn)行模式并在所述超前運(yùn)行模式中操作而不重新發(fā)出所述指令,并在所述微處理器處于所述超前運(yùn)行模式中時實行超前運(yùn)行策略,所述超前運(yùn)行策略支配所述微處理器的操作并使所述微處理器與當(dāng)不在所述超前運(yùn)行模式中時不同地進(jìn)行操作。
2.根據(jù)權(quán)利要求1所述的微處理器,進(jìn)一步包括檢測邏輯,用于在所述超前運(yùn)行模式期間識別所選擇的指令是否與絕對指令分類或許可指令分類相關(guān)聯(lián)。
3.根據(jù)權(quán)利要求2所述的微處理器,其中所述調(diào)度邏輯是多級管線的部分,并且其中與所述許可指令分類相關(guān)聯(lián)的許可超前運(yùn)行策略比與所述絕對指令分類相關(guān)聯(lián)的絕對超前運(yùn)行策略更早地在所述多級管線中應(yīng)用。
4.根據(jù)權(quán)利要求1所述的微處理器,其中,針對所選擇的指令,所述超前運(yùn)行控制邏輯配置為確定所述所選擇的指令是否落入第一指令分類,并且如果所述所選擇的指令落入所述第一指令分類,那么按照與所述第一指令分類相關(guān)聯(lián)的第一超前運(yùn)行策略來控制所述微處理器的操作。
5.根據(jù)權(quán)利要求4所述的微處理器,其中,針對所述所選擇的指令,所述超前運(yùn)行控制邏輯進(jìn)一步配置為確定所述所選擇的指令是否落入第二指令分類,并且如果所述所選擇的指令落入所述第二指令分類,那么按照與所述第二指令分類相關(guān)聯(lián)的第二超前運(yùn)行策略來控制所述微處理器的操作。
6.根據(jù)權(quán)利要求4所述的微處理器,其中所述第一超前運(yùn)行策略使所述微處理器在所述超前運(yùn)行模式期間將所述所選擇的指令從第一類型轉(zhuǎn)換成第二類型。
7.根據(jù)權(quán)利要求4所述的微處理器,其中所述所選擇的指令是以浮點數(shù)據(jù)為種子的指令并且其中所述第一超前運(yùn)行策略使所述微處理器破壞用于所述所選擇的指令的目的。
8.根據(jù)權(quán)利要求4所述的微處理器,其中所述第一超前運(yùn)行策略使所述微處理器抑制與由所述所選擇的指令所引起的被破壞的源寄存器相關(guān)聯(lián)的故障條件。
9.根據(jù)權(quán)利要求4所述的微處理器,其中所述第一超前運(yùn)行策略使所述微處理器在所述超前運(yùn)行模式期間防止對微處理器存儲器系統(tǒng)的、影響所述微處理器的架構(gòu)狀態(tài)的更改。
10.根據(jù)權(quán)利要求4所述的微處理器,其中所述第一超前運(yùn)行策略使所述微處理器防止對所述微處理器的未設(shè)立檢查點的狀態(tài)的更新。
【文檔編號】G06F9/30GK103870240SQ201310658889
【公開日】2014年6月18日 申請日期:2013年12月6日 優(yōu)先權(quán)日:2012年12月7日
【發(fā)明者】馬格努斯·??寺? 吉列爾莫·J·羅扎斯, 亞歷山大·克萊貝爾, 詹姆斯·范·策恩, 保羅·塞維斯, 布拉德·霍伊特, 斯里達(dá)蘭·羅摩克里希納, 亨斯·凡德斯庫特, 羅斯·澤格爾肯, 達(dá)雷爾·D·博格斯 申請人:輝達(dá)公司