在超前運行期間對數(shù)據(jù)的選擇性毒化的制作方法
【專利摘要】提供關(guān)于在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的實施例。示范性的方法包括根據(jù)對超前運行事件的檢測使微處理器進入超前運行并且在超前運行期間實現(xiàn)從操作為管理超前運行毒物注入的多個超前運行毒物策略中所選擇的第一超前運行毒物策略。示范性的方法還包括在微處理器操作期間,選擇操作為與第一超前運行毒物策略不同地管理超前運行毒物注入的第二超前運行毒物策略。
【專利說明】在超前運行期間對數(shù)據(jù)的選擇性毒化
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及操作微處理器的方法和微處理器。
【背景技術(shù)】
[0002]微處理器中的指令有時停頓,即停止前進直到停頓被解決。因為揭露隨后的指令之中的其他獨立停頓是有幫助的,所以微處理器可以實施配置為在初始停頓正在被解決的同時檢測其他停頓的超前運行(runahead)操作。雖然超前運行可以揭露其他潛在的停頓,但是利用缺失的或無效的數(shù)據(jù)的繼續(xù)執(zhí)行可能污染高速緩存。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供一種用于操作微處理器的方法。所述方法包括:根據(jù)對超前運行事件的檢測,使所述微處理器進入超前運行;在超前運行期間,實現(xiàn)從操作為管理超前運行毒物注入的多個超前運行毒物策略中所選擇的第一超前運行毒物策略;以及在微處理器操作期間,選擇并且實現(xiàn)與所述第一超前運行毒物策略不同地管理超前運行毒物注入的第二超前運行毒物策略。
【專利附圖】
【附圖說明】
[0004]圖1描繪了根據(jù)本公開實施例的、在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的示范性方法。
[0005]圖2描繪了根據(jù)本公開實施例的、在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的另一個示范性方法。
[0006]圖3描繪了根據(jù)本公開實施例的、在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的又一個示范性方法。
[0007]圖4描繪了根據(jù)本公開實施例的、在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的再一個示范性方法。
[0008]圖5示意性地示出了根據(jù)本公開實施例的、操作為在運行時期間選擇性地實現(xiàn)多個超前運行毒物策略中的任何一個的示范性微處理器。
【具體實施方式】
[0009]在現(xiàn)代微處理器中,指令經(jīng)常在管線中執(zhí)行。這類指令可以單獨地或作為微操作束被發(fā)出到管線中的各執(zhí)行機制。不管指令當(dāng)被發(fā)出用于執(zhí)行時的形式,當(dāng)指令被發(fā)出時,可能在分派時不知道在指令的執(zhí)行期間是否將發(fā)生未命中或異常??梢曰ㄙM一些時間在微處理器能夠?qū)﹄S后的指令取得進展之前解決一些未命中/異常。這樣,微處理器可以在嘗試解決長延遲事件的根本原因的同時停頓。
[0010]一些微處理器可以配置為在停頓的根本原因正在被解決的同時前瞻性地執(zhí)行指令。前瞻性的執(zhí)行典型地針對發(fā)現(xiàn)其他潛在的停頓,使得微處理器也可以開始解決那些停頓,潛在地節(jié)約處理時間。在一些設(shè)定中,在初始停頓事件被解決和正常操作恢復(fù)之前揭露盡可能多的潛在停頓是可取的。這樣,微處理器的一個目標(biāo)可以是前瞻性地處理盡可能多的指令。然而,因為微處理器操作在所生成的一些結(jié)果可能將無效的制度中,所以可能在前瞻性操作結(jié)束之后可能導(dǎo)致高速緩存污染的存儲器請求中引用一個或多個無效結(jié)果。
[0011]可能在指令的執(zhí)行期間出現(xiàn)的常見的管線執(zhí)行停頓是加載未命中。換句話說,停頓可以由加載請求產(chǎn)生,其中所請求的數(shù)據(jù)不存在于高速緩存存儲器中的特定位置處,造成在從另一個位置(例如在較高高速緩存級別下)檢索數(shù)據(jù)時的長延遲事件。這類加載未命中可以觸發(fā)進入操作的超前運行(runahead)模式(后文稱為“超前運行”),該超前運行配置為:在解決初始加載未命中的同時,檢測例如其他高速緩存未命中(例如存儲未命中和/或加載未命中)、指令獲取未命中、轉(zhuǎn)譯后備緩沖區(qū)(例如用于指令或數(shù)據(jù))中的未命中和/或分支誤預(yù)測。
[0012]如本文所使用的,超前運行描述在觸發(fā)微處理器中的未解決狀態(tài)的長延遲事件期間所實施的任何合適的前瞻性執(zhí)行方案。應(yīng)該理解這類長延遲事件的性質(zhì)和標(biāo)識可以改變。長延遲事件的其他非限制性示例包括存儲未命中和一些長延遲浮點操作(例如非正規(guī)平方根操作)。一旦檢測到超前運行觸發(fā)事件,就可以為微處理器的狀態(tài)(例如寄存器和其他合適的狀態(tài))設(shè)置檢查點(checkpoint),使得微處理器可以在超前運行之后返回到該狀態(tài)。之后微處理器在超前運行期間繼續(xù)執(zhí)行在工作狀態(tài)。在解決初始的長延遲事件之后,微處理器退出超前運行并且正常操作恢復(fù)。
[0013]因為超前運行操作是前瞻性的執(zhí)行方案并且經(jīng)常由于某數(shù)據(jù)不可用而被發(fā)起,所以在超前運行期間所使用和/或所生成的數(shù)據(jù)中的至少一些將是無效的。雖然超前運行可以提供揭露其他未命中或長延遲事件的好處,但是缺失的或無效的數(shù)據(jù)的使用可能污染處理器寄存器和/或存儲器系統(tǒng)的一部分。一些過去的方法在超前運行期間利用毒物位(poison bit)擴充寄存器,使得無效數(shù)據(jù)可以在超前運行操作期間被追蹤。如果指令使用經(jīng)毒化的寄存器作為來源(例如輸入寄存器),則微處理器設(shè)置用于目的寄存器的毒物位以指示相關(guān)聯(lián)的目的寄存器包括無效信息。在一些實例中,當(dāng)覆寫寄存器的內(nèi)容時,微處理器可以清除經(jīng)毒化的目的寄存器。例如,如果指令使用未經(jīng)毒化的輸入寄存器作為來源,則微處理器可以清除相關(guān)聯(lián)的目的寄存器處的毒物位。
[0014]不管在超前運行期間如何引入、傳播和/或清除毒物,在先系統(tǒng)中的毒化方案在于微處理器被制造并且開始運行之前發(fā)生的設(shè)計階段期間被預(yù)定。因此,所挑選的毒化方案可以在某些情況下增強微處理器操作,但是在一些其他情況下減慢執(zhí)行。與快速引入毒物的毒化方案相比,延遲毒物注入的毒化方案可以引入較少的毒物。轉(zhuǎn)而,較少的毒物可以增大系統(tǒng)提出將在未來導(dǎo)致命中的請求的機會。然而,相對于較快起效的毒化方案,延遲毒物注入可以減少在超前運行期間可觀察到的指令的數(shù)目。因此,因為毒物注入被延遲到相對較晚的時間,所以可以暴露較少的潛在停頓。
[0015]因此,本文所描述的實施例涉及配置為在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的方法、硬件和/或軟件。例如,操作微處理器的方法的一個實施例包括:在超前運行期間,實現(xiàn)從操作為管理超前運行毒物注入的多個超前運行毒物策略中所選擇的第一超前運行毒物策略。示范性的方法還包括:在微處理器操作期間的稍后點,選擇操作為與第一超前運行毒物策略不同地管理超前運行毒物注入的第二超前運行毒物策略。
[0016]圖1示出了用于在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的方法100的實施例的流程圖。方法100包括,在102,使微處理器進入超前運行。在104,方法100包括在超前運行期間實現(xiàn)從操作為管理超前運行毒物注入的多個超前運行毒物策略中所選擇的第一超前運行毒物策略。在106,方法100包括選擇操作為與第一超前運行毒物策略不同地管理超前運行毒物注入的第二超前運行毒物策略。可以關(guān)于任何合適的硬件和/或軟件配置實施所描繪的方法,應(yīng)該理解可以根據(jù)本文所示出和描述的方法和硬件對這些步驟做出修改、增加和改進。
[0017]在一些實施例中,可以根據(jù)所選擇的高速緩存級別中的命中對未命中的相對比率來為應(yīng)用選擇特定的超前運行毒物策略。例如,在應(yīng)用經(jīng)歷LI高速緩存中的超前運行觸發(fā)的未命中的情況下,L2高速緩存中的命中對未命中的相對比率可以用來在微處理器操作期間挑選超前運行毒物策略。在L2高速緩存的未命中率比命中率高的場景下,可以選擇根據(jù)LI未命中立即注入毒物的超前運行毒物策略,這潛在地增強超前運行期間的指令吞吐量。在該場景下,可能存在毒物將在某點被注入的高可能性。相對于基于指令是否還在L2高速緩存中未命中來等待注入毒物的毒化方案,立即毒化可以允許微處理器遍歷更多的指令。
[0018]因為微處理器中的操作條件可以隨時間改變,所以在某點,LI高速緩存中的未命中將導(dǎo)致L2高速緩存中的命中的可能性比不導(dǎo)致的更高。早毒化(例如在LI未命中的檢測之后立即注入毒物或注入毒物的另一個激進方法)可能是不可取的,因為所添加的毒物將導(dǎo)致錯過發(fā)送進一步未命中請求的機會,否則如果L2高速緩存返回命中,則其可能不會發(fā)生。在該上下文中,將延遲插入超前運行操作可能是更可取的,因為立即的延遲可以避免可能由指針追逐(pointer chasing)產(chǎn)生的一個或多個未來的延遲(例如其中經(jīng)毒化的寄存器位置變?yōu)橛糜陔S后指令的輸入寄存器位置,這造成系統(tǒng)內(nèi)的級聯(lián)延遲)。這樣,在L2高速緩存的命中率比未命中率高的場景下,可以選擇根據(jù)對L2未命中的檢測等待注入毒物的超前運行毒物策略。該方法可以通過降低系統(tǒng)內(nèi)的總體的毒物級別、潛在地降低隨后的停頓事件來增強操作,因為延遲允許從L2高速緩存獲得數(shù)據(jù)。
[0019]在運行時,實施超前運行毒物策略選擇。在微處理器操作期間選擇超前運行毒物策略可以允許微處理器適應(yīng)操作情況,如以上所描述的,其可以隨時間改變。因此,可以根據(jù)特定的操作條件選擇一個超前運行毒物策略。如果操作條件改變,則可以選擇可替換的超前運行毒物策略,如果該策略可能導(dǎo)致相對增強的操作性能的話。
[0020]在一些實施例中,可以基于在微處理器處的操作上下文中的改變選擇不同的超前運行毒物策略。例如,可以響應(yīng)于由在微處理器處執(zhí)行的代碼所觸發(fā)的上下文改變選擇不同的超前運行毒物策略。在這類實施例的一些中,可以預(yù)定上下文改變(例如在運行時之前的設(shè)計階段期間),使得特定的超前運行毒物策略將被選擇以伴隨代碼的所選擇的部分或上下文類型,因為該特定策略可以幫助微處理器達到相對于另一個策略的增強的性能。
[0021]附加地或可替換地,在一些實施例中,即使在操作上下文或應(yīng)用中不存在伴隨的改變,也可以在操作期間動態(tài)地選擇不同的超前運行毒物策略。這樣,超前運行毒物策略選擇可以響應(yīng)于在微處理器操作期間不斷變化的環(huán)境,即使這類環(huán)境在設(shè)計階段是不可預(yù)見的。
[0022]圖2示意性地示出了在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的示范性方法200的示例。如圖2所示,在采樣間隔期間瞬間地和/或相對于采樣間隔地對微處理器的一個或多個性能信息進行采樣以查明微處理器性能。如本文所使用的,采樣間隔涉及在其期間觀察到/測量到使用特定的超前運行毒物策略的微處理器性能的間隔。在一些實施例中,采樣間隔可以配置為預(yù)定的時間間隔、預(yù)定數(shù)目的指令或超前運行實例的跨度或在其期間可以監(jiān)視使用特定的超前運行毒物策略的微處理器性能的任何合適的觀察窗。優(yōu)選地,采樣間隔配置為使得其包括超前運行實例的至少一部分,使得采樣間隔觀察操作中的超前運行毒物策略。在一些實施例中,采樣間隔可以在1000至1000000時鐘周期的范圍內(nèi)。
[0023]可以在采樣間隔期間對任何合適的微處理器性能信息進行采樣。在一些實施例中,微處理器性能信息可以包括微處理器的可觀察的/可測量的屬性。微處理器性能信息的非限制性示例包括表明指令吞吐量的信息,諸如每時鐘周期指令的計數(shù)(例如較高的每時鐘周期指令計數(shù)指示較大的指令吞吐量)和/或每預(yù)選擇數(shù)目的指令的時鐘周期的計數(shù)(例如處理預(yù)選擇數(shù)目的指令的時鐘周期的較低計數(shù)指示較大的指令吞吐量);以及表明在高速緩存的各級別下的命中率的信息(例如(高速緩存級別下的命中的數(shù)目)/ (該高速緩存級別下的命中+未命中的數(shù)目)和/或配置為指示高速緩存中的命中或未命中的各計數(shù)器。
[0024]在一些實施例中,微處理器性能信息可以包括關(guān)于源自可測量的/可觀察的微處理器屬性的微處理器性能的信息。例如,應(yīng)用或微處理器上下文標(biāo)識信息或與當(dāng)獲得微處理器性能信息時正在執(zhí)行的指令相關(guān)聯(lián)的任何其他信息可以包括在微處理器性能信息中??商鎿Q地或附加地,在一些實施例中,這類相關(guān)聯(lián)的信息可能是根據(jù)微處理器性能信息(例如根據(jù)時間戳(stamp)、時間順序或存儲順序等)可獲得的。
[0025]可以采用獲得微處理器性能信息的任何合適的方式而不脫離本公開的范圍。例如,可以通過在采樣間隔期間測量一個或多個微處理器性能值來獲得微處理器性能信息。一旦被獲得,性能信息就可以被存儲用于稍后參考。存儲與第二超前運行毒物策略相關(guān)聯(lián)的性能信息可以允許與隨后所收集的、與相同或其他超前運行毒物策略相關(guān)聯(lián)的性能信息作比較。例如,與第一超前運行毒物策略相關(guān)聯(lián)的、用于指令吞吐量的性能信息(例如每單位時間所處理的指令或每時鐘周期所處理的指令)可以稍后與和相同或不同毒物策略相關(guān)聯(lián)的吞吐量信息作比較。
[0026]一旦被表征,微處理器性能信息就可以用來選擇多個超前運行毒物策略中的一個。應(yīng)該理解,在微處理器操作期間,特定的超前運行毒物策略的選擇可以在任何合適的時間發(fā)生。例如,選擇可以在超前運行和/或正常操作期間發(fā)生。
[0027]以上所描述的性能表征可以消耗一些微處理器資源(例如計算和/或存儲資源)。因此,在一些實施例中,可以提供可選的非采樣間隔以留下兩個或兩個以上的采樣間隔,使得采樣間歇地發(fā)生。利用相對較長的持續(xù)時間的非采樣間隔來分開采樣間隔可以分散計算開銷。如果包括非采樣間隔,則可以為其制定大小,使得微處理器可以在下一個采樣間隔發(fā)生之前經(jīng)歷普通的操作(例如正常的計算)和超前運行操作的一個或多個實例。在一些實施例中,非采樣間隔可以配置為預(yù)定的時間間隔、預(yù)定數(shù)目的指令的跨度或預(yù)定數(shù)目的超前運行實例。在一些實施例中,非采樣間隔可以在100000-10000000時鐘周期的范圍內(nèi)。因此,在非采樣間隔期間可以發(fā)生的任何超前運行實例經(jīng)歷當(dāng)前所應(yīng)用的超前運行毒物策略。[0028]雖然圖2所示的非采樣間隔被示出為具有接近相同的持續(xù)時間,但是應(yīng)該理解在一些實施例中,非采樣間隔的持續(xù)時間可以隨實例的不同而變化。例如,在一些實施例中,非采樣間隔可以根據(jù)應(yīng)用標(biāo)識或任何其他合適的因素而變化。同樣地,應(yīng)該理解采樣間隔也可以隨實例的不同而變化。在一些示例中,可以響應(yīng)于應(yīng)用標(biāo)識或任何其他合適的因素來調(diào)節(jié)采樣間隔。
[0029]圖3示出了在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的示范性方法300的流程圖。應(yīng)該理解可以由任何合適的硬件和軟件實施方法300的實施例,包括本文所描述的硬件和軟件。應(yīng)該理解方法300和本文其他方法中所描述的過程的一部分可以被省略、重新排序、同時并行地實施和/或增補,而不脫離本公開的范圍。
[0030]如圖3所示,方法300包括,在302,選擇第一超前運行毒物策略。在一些實施例中,在302選擇第一超前運行毒物策略可以包括將毒化控制位設(shè)置為與第一超前運行毒物策略相關(guān)聯(lián)的值。毒化控制位可以用來追蹤和/或應(yīng)用特定的超前運行毒物策略。在一些實施例中,如以下所更詳細(xì)描述的,毒化控制位可以包括在毒化控制邏輯中。簡單地說,在一些實施例中,毒化控制邏輯可以在超前運行和/或正常操作期間評估微處理器性能并且據(jù)此選擇超前運行毒物策略。在這類實施例中,毒化控制邏輯可以設(shè)置用于毒化控制位的值和/或讀/響應(yīng)于毒化控制位的值。在一些實施例中,可以從配置為存儲多個超前運行毒物策略的策略緩沖區(qū)中選擇第一超前運行毒物策略。
[0031]在304,方法300包括使用第一超前運行毒物策略在采樣間隔期間獲得微處理器性能信息??梢砸匀魏魏线m的方式、以任何合適的采樣間隔獲得微處理器性能信息,包括以上在方法200中所描述的那些。在一些實施例中,可以存儲所獲得的性能信息(在一些實施例中,和相關(guān)的微處理器/應(yīng)用信息)用于稍后的參考。
[0032]在306,方法300包括確定使用所選擇的超前運行毒物策略是否已經(jīng)增強了性能。可以做出關(guān)于任何合適的性能指標(biāo)的確定。不管什么指標(biāo)用來判斷性能或如何獲得指標(biāo),在運行時選擇由微處理器所使用的超前運行毒物策略。偶爾可以選擇不同的超前運行毒物策略以確定使用不同的超前運行毒物策略是否可能相對地增強性能。
[0033]在一些實施例中,可以將性能信息與在任何合適的較早時間所收集的、和相同或不同的超前運行毒物策略相關(guān)聯(lián)的性能相關(guān)信息作比較。例如,使用當(dāng)前所選擇的超前運行毒物策略的指令吞吐量可以與使用當(dāng)前所選擇的超前運行毒物策略或不同的超前運行毒物策略的、在較早時間的指令吞吐量相比較。在一些實施例中,比較可以在連續(xù)的超前運行毒物策略之間(例如與第一超前運行毒物策略相關(guān)的性能信息和與在第一毒物策略之后所立即選擇的第二超前運行毒物策略相關(guān)的性能信息之間的比較)。在這類實施例的一些中,比較因此可以在用于各自的超前運行毒物策略的最近的性能信息之間做出。
[0034]在一些實施例中,可以基于在任何合適的時間所獲得的微處理器性能信息和預(yù)選擇的參考信息的比較做出這類確定。在這類實施例的一些中,可以由預(yù)定的歷史性信息子集內(nèi)或所有可用的歷史性性能信息的歷史性性能信息更新預(yù)選擇的參考信息。這樣,可以基于可隨時間被更新的移動平均值、極值等做出確定。
[0035]在圖3所示的示例中,如果使用所選擇的超前運行毒物策略增強性能,則在308保持所選擇的超前運行毒物策略。之后方法300繼續(xù)到310,包括在非采樣間隔期間執(zhí)行指令。這樣,方法300根據(jù)用于該非采樣間隔的持續(xù)時間的第二超前運行毒物策略繼續(xù)操作??梢圆捎萌魏魏线m的非采樣間隔而不脫離本公開,包括以上在方法200中所描述的非采樣間隔。然而,因為在微處理器內(nèi)條件可以改變,其可以使所選擇的超前運行毒物策略相對于另一個超前運行毒物策略相對更低效,方法300包括,在312,選擇不同的超前運行毒物策略并且之后返回到304,使得使用不同的超前運行毒物策略的性能信息可以被獲得并且新的性能確定被做出。
[0036]在一些實施例中,在312選擇不同的超前運行毒物策略可以包括將毒化控制位設(shè)置為與不同的超前運行毒物策略相關(guān)聯(lián)的不同值。例如,毒化控制位的值可以從與第一超前運行毒物策略相關(guān)聯(lián)的值翻轉(zhuǎn)為與第二超前運行毒物策略相關(guān)聯(lián)的值。反過來,微處理器可以停止應(yīng)用第一超前運行毒物策略并且開始應(yīng)用第二超前運行毒物策略。在一些實施例中,所選擇的超前運行毒物策略可以從配置為存儲多個超前運行毒物策略的策略緩沖區(qū)中挑選。
[0037]如果使用所選擇的超前運行毒物策略性能沒有增強,則方法300跳到314,其中選擇不同的超前運行毒物策略。因為微處理器操作條件可以在不斷的變化狀態(tài)中,所以不同的超前運行毒物策略的選擇可以導(dǎo)致相對于較早選擇的超前運行毒物策略的性能/操作增強。在一些實施例中,方法300可以包括,在316,使用新選擇的不同的超前運行毒物策略在非采樣間隔期間執(zhí)行指令??商鎿Q地,在一些其他的實施例中,根據(jù)對不同的超前運行毒物策略的選擇,方法300可以立即返回到304,使得新選擇的超前運行毒物策略的性能可以被估計。應(yīng)該理解在一些設(shè)定中,新選擇的超前運行毒物策略的立即估計可以允許微處理器識別(并且在一些設(shè)定中優(yōu)化)適合于瞬間的微處理器操作條件、代碼等的超前運行毒物策略。可替換地,在一些設(shè)定中,非采樣間隔的包括可以減少如以上所描述的計算開銷。
[0038]雖然以上所描述的方法300的實施例涉及微處理器性能在當(dāng)前的超前運行毒物策略和最近的在先的超前運行毒物策略之間進行比較的情況下的示例,但是應(yīng)該理解可以采用與任何合適的過去和/或現(xiàn)在的超前運行毒物策略相關(guān)的任何合適的微處理器性能信息的比較,而不脫離本公開的范圍。此外,雖然以上所論述的方法300的實施例涉及在兩個超前運行毒物策略之間交替的示例,但是應(yīng)該理解可以采用任何合適數(shù)目的超前運行毒物策略,而不脫離本公開的范圍。例如,在一些實施例中,方法300可以與兩個或兩個以上的超前運行毒物策略一起使用。
[0039]可以基于在超前運行期間增大指令吞吐量并且減小毒物內(nèi)容的目標(biāo)來管理超前運行毒物策略選擇。在一些設(shè)定中,這些目標(biāo)可以取決于高速緩存級別之中的相對命中率。例如,如果在LI高速緩存中的對應(yīng)未命中之后指令在L2高速緩存中具有高的未命中率,則很可能毒物將包括在系統(tǒng)中,而不管毒物是早或晚注入。因為減小毒物內(nèi)容的機會相應(yīng)地是低的,所以支持早毒物注入的超前運行毒物策略可以至少促進在超前運行中增大指令吞吐量的目標(biāo),使得其他潛在的停頓可以被揭露??商鎿Q地,如果在LI高速緩存中的對應(yīng)未命中之后指令在L2聞速緩存中具有聞的命中率,則如果實現(xiàn)支持晚毒物注入的超如運行毒物策略的話,可以降低毒物內(nèi)容。如以上介紹的,在一些實施例中,選擇可以基于在運行時期間所遭遇的特定上下文/程序/應(yīng)用和/或基于在運行時期間所動態(tài)進行的性能觀察。例如,特定的應(yīng)用可以具有LI和L2聞速緩存中未命中的聞可能性,使得根據(jù)LI未命中注入毒物的超前運行毒物策略可以被應(yīng)用,同時不同的應(yīng)用可以具有跟隨在LI未命中之后的L2高速緩存中的命中的高可能性,使得相反在注入毒物之前等待來自L2高速緩存的命中/未命中響應(yīng)的超前運行毒物策略可以被應(yīng)用。
[0040]因此,在一些實施例中,超前運行毒物策略的選擇可以至少部分地基于在層級高速緩存/高速緩存層級的所選擇的高速緩存級別中的命中對未命中的相對比率。例如,在一些實施例中,可以根據(jù)較高級別高速緩存(例如L2高速緩存)中的未命中率相對于較低級別高速緩存(例如LI高速緩存)中的未命中率選擇超前運行毒物策略。不希望由理論所束縛,在這類實施例的一些中,在LI高速緩存中可能未命中、在L2高速緩存中可能也未命中的情況下,立即注入毒物可能是更有效率的,而不是延遲以確定是否L2高速緩存將未命中,如以上所提供的示例中所解釋的。
[0041]例如,圖4示出了用于在微處理器操作期間從多個超前運行毒物策略中選擇超前運行毒物策略的方法400的流程圖。應(yīng)該理解,可以由任何合適的硬件和軟件實施方法400的實施例,包括本文所描述的硬件和軟件。在一些實施例中,方法400可以配置為重新開始用于超前運行操作的單獨實例。在一些其他實施例中,方法400可以配置為經(jīng)過相對較長的持續(xù)時間操作,使得方法400的實例可以包括多個超前運行操作實例。應(yīng)該理解方法400中所描述的過程的一部分可以被省略、重新排序和/或增補,而不脫離本公開的范圍。方法400中所描述的計數(shù)器方案是用于比較命中率的方法的示例。應(yīng)該理解可以采用用于比較命中率的任何合適的方案,而不脫離本公開的范圍。
[0042]在402,方法400包括清除計數(shù)器并且選擇第一超前運行毒物策略。例如,在一些實施例中,方法400可以選擇超前運行毒物策略,其中根據(jù)檢測LI高速緩存中的未命中,微處理器延遲處理隨后的指令直到確定L2高速緩存中發(fā)生命中或未命中為止。方法400包括,在404,檢測LI未命中,并且在406,確定L2未命中是否也被檢測到。如果沒有檢測到L2高速緩存中的未命中,例如,因為在L2高速緩存中檢測到命中,則方法400繼續(xù)到408。
[0043]在408,方法400包括減小計數(shù)器值。在一些實施例中,計數(shù)器值可以以整數(shù)減小,但是應(yīng)該理解計數(shù)器可以減小任何合適的值,而不脫離本公開的范圍。在410,確定計數(shù)器值是否小于第一閾值。如果計數(shù)器值不小于第一閾值,則方法400返回到404。如果計數(shù)器值小于第一閾值,則方法400繼續(xù)到412,其中選擇第一超前運行毒物策略。在該示例中,方法400可以選擇超前運行毒物策略,其中在檢測到L2高速緩存中的未命中時,微處理器根據(jù)第一超前運行毒物策略延遲處理隨后的指令直到確定L2高速緩存中發(fā)生命中或未命中。一旦第一超前運行毒物策略被選擇,之后方法400就返回到404。
[0044]返回到406,如果確定檢測到L2未命中,則方法400繼續(xù)到414,其中計數(shù)器值被增大。在一些實施例中,計數(shù)器值可以以整數(shù)增大,但是應(yīng)該理解計數(shù)器可以增大任何合適的值,而不脫離本公開的范圍。在416,方法400確定計數(shù)器值是否大于第二閾值。如果計數(shù)器值不大于第二閾值,則方法400返回到404。如果計數(shù)器值小于第二閾值,則方法400繼續(xù)到418,其中第二超前運行毒物策略被選擇。在該示例中,方法400可以選擇超前運行毒物策略,其中在檢測到LI高速緩存中的未命中時,根據(jù)第二超前運行毒物策略,微處理器立即注入毒物并且不延遲處理隨后的指令直到確定L2高速緩存中發(fā)生命中或未命中。一旦第二超前運行毒物策略被選擇,之后方法400就返回到404。
[0045]應(yīng)該理解第一和第二閾值可以設(shè)置為任何合適的值,而不脫離本公開的范圍。在一些實施例中,第一和第二閾值可以具有不同的值以引入滯后,潛在地避免可能由超前運行毒物策略中的頻繁改變產(chǎn)生的不穩(wěn)定性。在圖4所示的實施例中,小于第一閾值的計數(shù)器值觸發(fā)第一超前運行毒物策略的選擇,而大于第二閾值的計數(shù)器值觸發(fā)第二超前運行毒物策略的選擇。
[0046]雖然以上所論述的方法400的實施例涉及在兩個超前運行毒物策略之間交替的示例,但是應(yīng)該理解可以采用任何合適數(shù)目的超前運行毒物策略,而不脫離本公開的范圍。例如,在一些實施例中,方法400可以為了適應(yīng)于高速緩存層級的附加級別而與三個或三個以上的超前運行毒物策略一起使用。
[0047]應(yīng)該理解可以由任何合適的微處理器實施本文所公開的方法。例如,圖5示意性地描繪了可以結(jié)合本文所描述的系統(tǒng)和方法被采用的微處理器500的實施例。圖5中所示出的微處理器500的實施例描繪超前運行控制邏輯502。超前運行控制邏輯502控制進入和退出用于微處理器500的超前運行模式。在一些實施例中,超前運行控制邏輯502還可以控制與進入和退出超前運行相關(guān)的存儲器操作。例如,在進入超前運行時,可以為微處理器500的一部分設(shè)置檢查點,以保存微處理器500的狀態(tài),而未設(shè)檢查點的工作狀態(tài)版本的微處理器500在超前運行期間前瞻性地執(zhí)行指令。在這類實施例的一些中,超前運行控制邏輯502可以在退出超前運行時將微處理器500還原到經(jīng)設(shè)置檢查點的狀態(tài)。
[0048]微處理器500還包括一個或多個處理器寄存器504。在一些實施例中,寄存器504可以包括在通用寄存器堆中或以其他方式適當(dāng)?shù)胤植荚谖⑻幚砥?00內(nèi)。寄存器504存儲在操作期間所使用的數(shù)據(jù)和/或指令。例如,管線級可以從輸入寄存器獲得數(shù)據(jù)、使用所獲得的數(shù)據(jù)實施指定的操作并且之后在目的寄存器處存儲結(jié)果。應(yīng)該理解標(biāo)簽“目的寄存器”和“輸入寄存器”是相對的術(shù)語。例如,用于第一操作的目的寄存器可以充當(dāng)用于另一個操作的輸入寄存器;同樣地,用于一個操作的輸入寄存器可以已經(jīng)用作用于在先操作的目的寄存器等。
[0049]在圖5所示的實施例中,利用毒物位506擴充每個寄存器504。每個毒物位506配置為使得它的值可以指示寄存器504中的相關(guān)聯(lián)的位置的可信度。每個毒物位506配置為在超前運行操作期間指示包括在相關(guān)聯(lián)的寄存器504中的數(shù)據(jù)和指令的有效性/無效性。
[0050]圖5中所示出的微處理器500的實施例還包括毒化控制邏輯508,操作為確定目的寄存器是否可能潛在地包含無效信息(例如基于經(jīng)毒化的輸入寄存器、無效的計算結(jié)果,諸如除以零等)。如果確定目的寄存器將潛在地包含無效信息,則毒化控制邏輯508將毒物應(yīng)用到目的寄存器。
[0051]毒化控制邏輯508還配置為在微處理器操作期間從多個超前運行毒物策略中選擇。例如,毒化控制邏輯508可以選擇操作為在檢測到LI高速緩存中的未命中時立即注入毒物的超前運行毒物策略,并且稍后選擇操作為等待注入毒物直到確定LI未命中中的未命中還將導(dǎo)致L2高速緩存中的未命中為止的另一個超前運行毒物策略。毒化控制邏輯508可以配置為在超前運行和/或正常操作期間作為超前運行毒物策略的選擇和/或應(yīng)用的一部分評估微處理器性能。
[0052]在5中所示出的實施例中,毒化控制邏輯508包括毒化控制位509。毒化控制位509可以用來追蹤和/或應(yīng)用特定的超前運行毒物策略。例如,將毒化控制位509設(shè)置為第一值可以使毒化控制邏輯508應(yīng)用第一超前運行毒物策略。將毒化控制位509更改為另一個值可以使毒化控制邏輯508選擇和/或應(yīng)用不同的超前運行毒物控制策略。
[0053]雖然為了清楚,圖5中所示出的實施例將毒化控制邏輯508作為與微處理器500的其他部分分開的整體進行描繪,但是應(yīng)該理解毒化控制邏輯508的一些或全部功能可以分布在微處理器500的合適部分之中。例如,在一些實施例中,毒化控制邏輯508可以分布在調(diào)度邏輯的部分之中和/或在執(zhí)行邏輯的部分之中。例如,在一些實施例中,毒化控制邏輯508可以包括自包含的硬件單元,其包括毒化控制位509、用于在超前運行期間測量微處理器性能的邏輯和/或軟件。在一些其他的實施例中,毒化控制邏輯508可以包括毒化控制位509和用于從多個超前運行毒物策略中進行選擇的合適的毒物控制算法,并且可以操作為接收來自微處理器500的其他方面的處理器性能信息。在又一些其他實施例中,毒化控制邏輯508可以包括毒化控制位509并且可以使用毒物控制軟件控制超前運行毒物策略的選擇,該毒化控制軟件在應(yīng)用軟件、操作系統(tǒng)軟件和/或在操作系統(tǒng)可見的軟件層(例如固件或轉(zhuǎn)譯架構(gòu)的轉(zhuǎn)譯層中)中實現(xiàn)。
[0054]圖5中所描繪的微處理器500的實施例還包括存儲器層級510,其可以包括LI處理器高速緩存510A、L2處理器高速緩存510B、L3處理器高速緩存510C、主存儲器510D (例如一個或多個DRAM芯片)、二級存儲510E (例如磁性和/或光學(xué)存儲單元)和/或三級存儲510F (例如磁帶群)。應(yīng)該理解示范性的存儲器/存儲部件以訪問時間和容量增大的順序列出,盡管存在可能的例外。
[0055]存儲器控制器510G可以用來處理協(xié)議并提供主存儲器510D所需的信號接口,以及調(diào)度存儲器訪問。存儲器控制器可實現(xiàn)在處理器裸片(die)上或分開的裸片上。應(yīng)該理解以上所提供的存儲器層級是非限制性的并且可以使用其他存儲器層級而不脫離本公開的范圍。
[0056]微處理器500還包括管線,其以簡化的形式在圖5中示出為管線512。管線化可允許多于一個指令并發(fā)地處于檢索和執(zhí)行的不同級。換句話說,指令集可傳遞通過管線512中所包括的各個級,與此同時從存儲器檢索另一指令和/或數(shù)據(jù)。因此,在上游檢索機制正在等待存儲器返回指令和/或數(shù)據(jù)的同時可以利用級,其銜接各種結(jié)構(gòu)諸如高速緩存和分支預(yù)測器以使得可以潛在地發(fā)現(xiàn)其他高速緩存未命中和/或分支誤預(yù)測。相對于以單獨的、串行的方式檢索和執(zhí)行指令和/或數(shù)據(jù)的方法,該方法可以潛在地加速由微處理進行的指令和數(shù)據(jù)處理。
[0057]如圖5所示,管線512包括獲取邏輯514、解碼邏輯516、調(diào)度器邏輯518、執(zhí)行邏輯520和回寫邏輯522。應(yīng)該理解圖5中所示出的管線112的實施例中所顯示的邏輯部分被提供僅用于示例性的目的并且可以以任何合適的方式安排以下所更詳細(xì)描述的功能性。例如,管線512的一些實施例可以包括執(zhí)行單元中的一個或多個內(nèi)的單獨管線化的部分(例如獲取邏輯514、解碼邏輯516等中的一個或多個可以包括單獨管線部分),而一些實施例可以將兩個或兩個以上邏輯部分的部分組合單個管線執(zhí)行單元內(nèi)。
[0058]獲取邏輯514從存儲器層級510檢索指令,典型地是從主存儲器和L2-L3高速緩存所支持的統(tǒng)一或?qū)S肔I高速緩存檢索指令。解碼邏輯516例如通過解析操作碼、操作數(shù)和尋址模式來解碼指令。一旦被解析,指令就隨后由調(diào)度器邏輯518所調(diào)度用于由執(zhí)行邏輯520執(zhí)行。
[0059]在一些實施例中,調(diào)度邏輯518可以配置為調(diào)度指令用于以指令集架構(gòu)(ISA)指令的形式執(zhí)行。附加地或可替代地,在一些實施例中,調(diào)度邏輯518可以配置為調(diào)度微操作束用于執(zhí)行,其中每個微操作與一個或多個ISA指令或ISA指令的部分相對應(yīng)。應(yīng)該理解可以采用任何合適的安排用于在微操作束中調(diào)度指令,而不脫離本公開的范圍。例如,在一些實施例中,單個指令可在多個微操作束中調(diào)度,而在一些實施例中單個指令可調(diào)度為微操作束。在又一些其他實施例中,多個指令可調(diào)度為微操作束。在另一些其他實施例中,調(diào)度邏輯518可以調(diào)度單獨的指令或微操作,例如根本不包括束的指令或微操作。
[0060]如圖5所示,管線512的所描繪的實施例包括執(zhí)行邏輯520,該執(zhí)行邏輯520可以包括配置為執(zhí)行由調(diào)度邏輯518所發(fā)出的指令的一個或多個執(zhí)行級。任何合適數(shù)目和類型的執(zhí)行級可以包括在執(zhí)行邏輯520內(nèi)。一旦由執(zhí)行邏輯520所處理,就可以存儲已完成的指令以準(zhǔn)備由回寫邏輯522提交?;貙戇壿?22通過將已完成的指令提交到存儲器來更改微處理器500的架構(gòu)狀態(tài)。換句話說,回寫邏輯522實施用于微處理器500的提交功能性。
[0061]應(yīng)該理解上述在管線512中所示的級是典型RISC實現(xiàn)方案的示例而非意在限制。例如,在一些實施例中,可以在管線的上游提供獲取邏輯和調(diào)度邏輯功能,諸如編譯VLIW指令或指令集轉(zhuǎn)譯。在一些其他實施例中,調(diào)度邏輯可以包括在微處理器的獲取邏輯和/或解碼邏輯中。更一般地,微處理器可以包括獲取、解碼和執(zhí)行邏輯,其中的每一個可以包括一個或多個級,而由執(zhí)行邏輯實行存儲(mem)和回寫功能。本公開同樣適用于這些和其他微處理器實現(xiàn)方案,包括可使用VLIW指令和/或其他邏輯指令的混合實現(xiàn)方案。
[0062]在所描述的示例中,可以每次一個地獲取和執(zhí)行指令,這可能需要多個時鐘周期。在此期間,數(shù)據(jù)路徑的重要部分可能未被使用。補充或取代單個指令獲取,可使用預(yù)獲取方法和多發(fā)出方法(例如超標(biāo)量(superscalar)方法)來增強性能并避免與讀和存儲操作(例如,讀取指令以及將這類指令加載到處理器寄存器和/或執(zhí)行隊列中)相關(guān)聯(lián)的延遲瓶頸。因此,應(yīng)該理解可以使用任何合適的獲取、調(diào)度和分派指令的方式而不脫離本公開的范圍。
[0063]應(yīng)該理解本文所描述的方法僅出于示例性的目的而提供而非意在限制。因此,應(yīng)該理解在一些實施例中本文所描述的方法可以包括附加的或替代的過程,而在一些實施例中本文所描述的方法可以包括一些可以被重新排序或省略的過程,而不脫離本公開的范圍。進一步地,應(yīng)該理解可以使用包括本文所描述硬件的任何合適硬件來實施本文所描述的方法。
[0064]本書面描述使用示例來公開本發(fā)明,包括最佳模式,并且還使相關(guān)領(lǐng)域的普通技術(shù)人員能夠?qū)嵺`本發(fā)明,包括制造和使用任何設(shè)備或系統(tǒng)以及實施任何所包含的方法。本發(fā)明的可專利范圍由權(quán)利要求所定義,并且可以包括本領(lǐng)域普通技術(shù)人員所理解的其他示例。這類其他示例旨在處于權(quán)利要求的范圍內(nèi)。
【權(quán)利要求】
1.一種用于操作微處理器的方法,所述方法包括: 根據(jù)對超前運行事件的檢測,使所述微處理器進入超前運行; 在超前運行期間,實現(xiàn)從操作為管理超前運行毒物注入的多個超前運行毒物策略中所選擇的第一超前運行毒物策略;以及 在微處理器操作期間,選擇并且實現(xiàn)與所述第一超前運行毒物策略不同地管理超前運行毒物注入的第二超前運行毒物策略。
2.如權(quán)利要求1所述的方法,其中選擇所述第二超前運行毒物策略包括基于微處理器性能選擇所述第二超前運行毒物策略。
3.如權(quán)利要求2所述的方法,進一步包括在選擇所述第二超前運行毒物策略之前評估微處理器性能,通過: 在第一時間間隔期間生成第一性能信息并且在第二時間間隔期間生成第二性能信息;以及 將所述第一性能信息與所述第二性能信息作比較。
4.如權(quán)利要求3所述的方法,其中將所述第一性能信息與所述第二性能信息作比較包括將最近的第一性 能信息與最近的第二性能信息作比較。
5.如權(quán)利要求1所述的方法,其中選擇所述第二超前運行毒物策略包括基于高速緩存層級的所選擇的高速緩存級別中的命中對未命中的相對比率來選擇所述第二超前運行毒物策略。
6.如權(quán)利要求5所述的方法,進一步包括: 將用于所述所選擇的高速緩存級別的高速緩存命中計數(shù)與用于所述所選擇的高速緩存級別的高速緩存未命中計數(shù)作比較;以及 響應(yīng)于將所述高速緩存命中計數(shù)與所述高速緩存未命中計數(shù)作比較,選擇超前運行毒物策略用于在超前運行操作期間實現(xiàn)。
7.如權(quán)利要求1所述的方法,其中所述第一超前運行毒物策略操作為根據(jù)確定高速緩存層級中的特定高速緩存級別中的未命中使所述微處理器注入毒物并且其中所述第二超前運行毒物策略操作為使所述微處理器等待注入毒物直到確定高于那個高速緩存級別的高速緩存級別中的未命中。
8.如權(quán)利要求7所述的方法,進一步包括如果所述高速緩存層級的所選擇的高速緩存級別中的未命中率超過所述所選擇的高速緩存級別中的命中率,則選擇所述第一超前運行毒物策略;以及如果所述所選擇的高速緩存級別中的所述命中率超過所述所選擇的高速緩存級別中的所述未命中率,則選擇所述第二超前運行毒物策略。
9.一種微處理器,包括: 高速緩存層級; 超前運行控制邏輯,操作為響應(yīng)于所述高速緩存層級中的未命中而使所述微處理器進入超前運行;以及 毒物控制邏輯,操作為在超前運行期間動態(tài)地實現(xiàn)操作為管理超前運行毒物注入的多個超前運行毒物策略中的一個。
10.如權(quán)利要求9所述的微處理器,其中所述高速緩存層級包括第一高速緩存級別和第二高速緩存級別,所述第一高速緩存級別按層級低于所述第二高速緩存級別,并且其中所述多個超前運行毒物策略包括第一超前運行毒物策略,所述第一超前運行毒物策略操作為在超前運行期間根據(jù)確定所述第一高速緩存級別中的未命中使所述微處理器注入超前運行毒物,并且其中所述第二超前運行毒物策略操作為在超前運行期間使所述微處理器等待注入毒物直到確定所述第二高速緩`存級別中的未命中。
【文檔編號】G06F9/38GK103793205SQ201310492729
【公開日】2014年5月14日 申請日期:2013年10月18日 優(yōu)先權(quán)日:2012年10月26日
【發(fā)明者】馬格努斯·埃克曼, 詹姆斯·范·策恩, 保羅·塞維斯 申請人:輝達公司