采用置信度和采樣的寫后讀危險預(yù)測器的制造方法
【專利說明】采用置信度和采樣的寫后讀危險預(yù)測器
[0001]本申請要求于2014年I月7日在美國專利商標(biāo)局提交的第61/924371號美國臨時申請以及于2014年11月25日在美國專利商標(biāo)局提交的第14/553055號美國臨時申請的權(quán)益,所述臨時申請的公開通過引用全部合并于此。
技術(shù)領(lǐng)域
[0002]與示例性實施例一致的方法和設(shè)備涉及預(yù)測寫后讀(RAW,Read-After-Write)危險,更具體地講,涉及一種對RAW預(yù)測器進(jìn)行動態(tài)采樣以優(yōu)化RAW危險的預(yù)測的方法和設(shè)備。
【背景技術(shù)】
[0003]處理器通常依靠于不按順序地執(zhí)行加載和存儲指令以實現(xiàn)更高的性能。當(dāng)對于存儲器中的地址的更晚的加載指令在對于存儲器中的相同地址的更早的存儲指令之前被執(zhí)行,并且存儲的數(shù)據(jù)沒有被正確地轉(zhuǎn)發(fā)到所述加載時,這被稱為寫后讀(RAW)危險,其中,加載指令使用了壞的加載數(shù)據(jù)。當(dāng)RAW危險發(fā)生時,處理器通常需要通過執(zhí)行高昂代價的RAW重新同步意外處理(RRE,RAW Resynchronizat1n Except1n)來修復(fù)壞的加載數(shù)據(jù),在該處理中,比存儲指令更晚的所有進(jìn)行中的指令被刷入并針對存儲指令之后的指令執(zhí)行取出重啟。由于刷入操作(flush ops)和重新獲取指令所需的額外核心時鐘,這種事件代價高昂。這被稱為RRE懲罰。
[0004]為了避免代價高昂的RRE,處理器可采用RAW重新同步預(yù)測器(RRP,RAffResynchronizat1n Predictor),其中,RRP能夠基于存儲指令的地址對先前RRE進(jìn)行訓(xùn)練,并在將來避免這些RRE。當(dāng)RRP被訓(xùn)練并檢測到已經(jīng)被顯示為造成RRE的存儲指令地址時,RRP可發(fā)送指示以阻止在重新同步預(yù)測存儲(RPS,Resynchronizat1n PredictedStore)指令之前執(zhí)行任何更晚的加載指令。在沒有在RPS之前執(zhí)行更晚的加載指令的情況下,不會發(fā)生RRE,這避免了 RRE懲罰。一旦RPS的執(zhí)行完成,僅更晚的加載指令被解除阻止。
[0005]經(jīng)常地,有多個可被RPS阻止的更晚的加載指令,而僅這些加載指令中的一個加載指令是針對RPS的相同的存儲器地址。這是需要被阻止以避免RRE懲罰的重要加載指令,但是所有其它的非重要加載(NCL,Non-Critical Load)同樣被RPS阻止。當(dāng)RPS阻止NCL時,由于這些NCL必須等待執(zhí)行,因此會損失性能。這被稱為NCL懲罰。通常避免RRE懲罰的性能收益大于被阻止的NCL的性能損失,這樣使得RRP是有價值的。
[0006]然而,當(dāng)在循環(huán)中重復(fù)指令代碼時,執(zhí)行行為對于每次迭代會有輕微的差異。如果不采用RRP,則對于指令代碼的第一次迭代,RRE可能發(fā)生,但是對于隨后的指令代碼的迭代,RRE不會發(fā)生。因此,因為RRE僅發(fā)生一次,所以在不使用RRP的情況下,RRE懲罰將會非常小。然而,如果在這種情況下使用RRP,則即使實際上沒有另外的RRE發(fā)生,RRP也將對第一次RRE進(jìn)行訓(xùn)練,并且針對相同的存儲,避免所有隨后的RRE。因此,盡管實際上對于RRP沒有避免嚴(yán)重的RRE,但是RRP仍然引起NCL懲罰。在這種情況下,RRP消極地影響性會K。
【發(fā)明內(nèi)容】
[0007]示例性實施例可克服以上缺點(diǎn)。然而,示例性實施例不需要克服以上缺點(diǎn)。
[0008]根據(jù)示例性實施例的一方面,提供一種處理器,包括:置信度/采樣寫后讀(RAW)重新同步預(yù)測器(CSRRP,Confidence/Sampling RAW Resynchronizat1n Predictor),被配置為接收將被執(zhí)行的指令的地址,存儲包括指令的地址和置信度得分的CSRRP條目(entry),并基于置信度得分確定是否將指令作為重新同步預(yù)測存儲(RPS)執(zhí)行,其中,置信度得分指示將指令作為RPS執(zhí)行是否將避免寫后讀重新同步意外處理(RRE)懲罰。
[0009]根據(jù)示例性實施例的一方面,提供一種通過處理器預(yù)測將指令作為重新同步預(yù)測存儲(RPS)執(zhí)行是否將避免寫后讀(RAW)重新同步意外處理(RRE)懲罰的方法,所述方法包括:接收將被執(zhí)行的指令的地址;存儲包括指令的地址和置信度得分的CSRRP條目,其中,置信度得分指示將指令作為RPS執(zhí)行是否將避免RRE懲罰;基于置信度得分確定是否將指令作為RPS執(zhí)行。
【附圖說明】
[0010]通過參照附圖詳細(xì)描述示例性實施例,以上和/或其他方面將變得更明顯,在附圖中:
[0011]圖1A和圖1B示出根據(jù)示例性實施例的對RAW預(yù)測器進(jìn)行動態(tài)采樣以優(yōu)化RAW危險的預(yù)測的方法的流程圖。
[0012]圖2A示出根據(jù)示例性實施例的描述CSRRP條目的置信度狀態(tài)和相關(guān)的采樣周期的表。
[0013]圖2B示出根據(jù)示例性實施例的描述CSRRP條目的置信度狀態(tài)和相關(guān)的采樣周期的表。
[0014]圖3示出根據(jù)示例性實施例的執(zhí)行CSRRP的處理器的框圖。
【具體實施方式】
[0015]現(xiàn)在將參照附圖更全面地描述示例性實施例,在附圖中,相同的標(biāo)號始終表示相同的元件。當(dāng)諸如“……中的至少一個”的表述在一系列元素之后時,該表述修飾整個一系列元素,而不是修飾所述一系列元素中的單個元素。
[0016]圖1A和圖1B示出根據(jù)示例性實施例的對RAW預(yù)測器進(jìn)行動態(tài)采樣以優(yōu)化RAW危險的預(yù)測的方法的流程圖。
[0017]在討論對RAW預(yù)測器進(jìn)行動態(tài)采樣以優(yōu)化RAW危險的預(yù)測的方法之前,將討論優(yōu)化的RAW危險的預(yù)測的特定方面,以提供對優(yōu)化的RAW危險的預(yù)測徹底理解。
[0018]根據(jù)示例性實施例的一方面,置信度/采樣RRP(CSRRP)可用于避免訓(xùn)練(即,設(shè)置)RRP以預(yù)測針對指令將發(fā)生RRE,但是實際上針對該指令,不太可能產(chǎn)生RRE。具體地講,通過將置信度得分和采樣技術(shù)的使用組合到RRP條目,當(dāng)指令實際上不太可能產(chǎn)生RRE并且不應(yīng)當(dāng)被視為RPS時,CSRRP可避免預(yù)測該指令將產(chǎn)生RRE,并且因此將該指令視為RPS。
[0019]首先,關(guān)于置信度得分,當(dāng)執(zhí)行的指令在存儲地址針對將被存儲的數(shù)據(jù)產(chǎn)生RRE時,CSRRP分配指示產(chǎn)生RRE的指令的存儲地址和置信度得分的CSRRP條目。CSRRP條目可通過例如使用CSRRP條目表而被存儲在存儲器中。CSRRP條目還可指示采樣狀態(tài)或采樣計數(shù)器,其對應(yīng)于由CSRRP條目指示的地址可被采樣的周期或頻率,稍后將對此進(jìn)行討論。
[0020]置信度得分指示標(biāo)識產(chǎn)生RRE的指令的存儲地址的CSRRP條目將準(zhǔn)確地預(yù)測如果存儲在相關(guān)的存儲地址的指令被執(zhí)行,則所述指令將產(chǎn)生RRE的可能性。
[0021]例如,具有高置信度得分的CSRRP條目指示CSRRP條目將準(zhǔn)確地預(yù)測如果存儲在相關(guān)的存儲地址的指令被執(zhí)行,則所述指令將產(chǎn)生RRE的高可能性,因此,存在將所述指令設(shè)置為RPS將避免RRE的相應(yīng)的高可能性。
[0022]另一方面,具有低置信度得分的CSRRP條目指示CSRRP條目將準(zhǔn)確地預(yù)測如果存儲在相關(guān)的存儲地址的指令被執(zhí)行,則所述指令將產(chǎn)生RRE的低可能性,因此,存在將所述指令設(shè)置為RPS將避免RRE的相應(yīng)的低可能性。
[0023]在已經(jīng)為存儲地址分配CSRRP條目之后,當(dāng)取出的指令的存儲地址匹配該CSRRP條目時,將匹配的CSRRP條目的置信度得分與置信度閾值進(jìn)行比較。如果該CSRRP條目的置信度得分超過置信度閾值,則CSRRP可確定取出的指令是RPS。如果該CSRRP條目的置信度得分未超過置信度閾值,則CSRRP可確定取出的指令不是RPS。
[0024]如上所述,置信度得分可用于確定是否應(yīng)當(dāng)將取出的指令視為RPS。然而,因為作為RPS被處理的指令絕不會引起RRE,所以由于阻止更晚的指令的執(zhí)行直到RPS的執(zhí)行完成為止,因此不能確定將指令視為RPS是否有助于避免RRE。也就是說,如上所述,在指令代碼在循環(huán)中迭代地重復(fù)的示例中,RRP可能提供處理效率,也可能無法提供處理效率。
[0025]因此,CSRRP的第二方面在于結(jié)合置信度得分來執(zhí)行采樣。即使條目的置信度得分低于置信度閾值,采樣方案也周期性地對CSRRP條目進(jìn)行采樣,從而指示采樣的條目不會針對指令觸發(fā)RPS處理。
[0026]如果存儲在采樣的CSRRP條目的存儲地址的指令引起RRE,則CSRRP增大采樣的CSRRP條目的置信度得分。如果存儲在采樣的CSRRP條目的存儲地址的指令不引起RRE,則CSRRP減小采樣的CSRRP條目的置信度得分。
[0027]為了保持CSRRP的效率,CSRRP可確定采樣的CSRRP條目的置信度得分是否處于或低于替換閾值。如果CSRRP確定采樣的CSRRP條目的置信度得分已經(jīng)達(dá)到替換閾值,則CSRRP可解除分配采樣的CSRRP條目。因此,可能產(chǎn)生RRE的指令的其他存儲地址可被分配為CSRRP條目。其結(jié)果是,通過選擇CSRRP條目,可保持具有產(chǎn)生RRE的指令的最高可能性的那些CSRRP條目,同時可釋放具有產(chǎn)生RRE的指令的低可能性的CSRRP條目。
[0028]采樣技術(shù)可基于每個CSRRP條目的置信度得分對每個CSRRP條目進(jìn)行動態(tài)采樣。
[0029]具有高置信度得分的那些CSRRP條目可以被更低頻率地采樣。這是因為,存在采樣的CSRRP條目的指令將引起RRE的較高的可能性,因此,當(dāng)執(zhí)行這樣的CSRRP條目的采樣時,處理器可能遭受RRE懲罰。
[0030]另一方面,具有較低置信度得分的CSRRP條目可以被更高頻率地采樣。這是因為,存在采樣的CSRRP條目