TWI626589B - 用以從預行再入的檢查點緩衝器 - Google Patents
用以從預行再入的檢查點緩衝器 Download PDFInfo
- Publication number
- TWI626589B TWI626589B TW102114417A TW102114417A TWI626589B TW I626589 B TWI626589 B TW I626589B TW 102114417 A TW102114417 A TW 102114417A TW 102114417 A TW102114417 A TW 102114417A TW I626589 B TWI626589 B TW I626589B
- Authority
- TW
- Taiwan
- Prior art keywords
- buffer
- instruction
- indicator
- microprocessor
- micro
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 172
- 238000000605 extraction Methods 0.000 claims abstract description 16
- 230000007246 mechanism Effects 0.000 claims abstract description 13
- 230000000717 retained effect Effects 0.000 claims description 13
- 238000011144 upstream manufacturing Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 description 28
- 238000003860 storage Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 6
- 210000004027 cell Anatomy 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 210000000352 storage cell Anatomy 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008014 freezing Effects 0.000 description 2
- 238000007710 freezing Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
- 235000012431 wafers Nutrition 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
Abstract
本發明提供和微處理器在預行之後重新進入一特殊執行位置時從一緩衝器處重新派送被選擇要重新執行之指令有關的實施例。於一範例中,提供一種微處理器。該微處理器包括:提取邏輯;一或更多個執行機制,用以執行該提取邏輯所提供之已擷取的指令;以及排程器邏輯,用以排程要執行的已擷取指令。該排程器邏輯包括一緩衝器,用以儲存該已擷取的指令以及一或更多個額外指令,該排程器邏輯用以在微處理器於預行之後重新進入一特殊執行位置時,從該緩衝器處重新派送先前已被派送至該等執行機制中其中一者的指令。
Description
本發明係關於從預行再入的檢查點緩衝器。
微處理器中的指令經常因為管線誤差或資料危障(data hazard)而被重新派送一或多次執行。舉例來說,當一指令參考尚未算出或尚未擷取的結果時,其便可能需要被重新派送。因為在指令的執行期間並不知道意外的管線凍結(pipeline stall)是否會發生,所以,指令的執行可能導致預行運算,以當在解決初始未擊中時偵測其它的未擊中。
在現代微處理器中,架構層(architectural-level)指令經常被分成用以在管線中執行的多個微運算(micro-operation)。此等微運算可被個別派送或者當作多個微運算束(bundle)被派送至微處理器中的不同執行機制。當一或多個微運算被派送時,並不知道微運算的執行是否會完成。換言之,並不知道在微運算的執行期間是否會發生未擊中(miss)或有例外發生。於某些範例中,倘若微運算沒有完成的話,該微運算可在解決非預期的凍結(stall)之後被重新執行。因為可能發生其它未擊中,所以,在一微運算完成之前,該微運算可能被重新執行數次。
在微運算束之執行期間可能發生的常見管線執行凍結係造
成快取未擊中的裝載運算(load operation)。此等快取未擊中可能觸發進入預行運算模式(下文中稱為「預行(runahead)」),其用以在解決初始裝載未擊中時偵測其它快取未擊中、指令轉譯後備緩衝器(lookaside buffer)未擊中、分支預測錯誤或類似事件。如本文所關注的,預行實際上描述由長等待時間事件(例如,快取未擊中,其中,所造成的裝載事件會從較慢的存取記憶體位置處抽出未擊中的指令或資料)所引起的任何合宜推測性執行方案(execution scheme)。一旦初始裝載未擊中解決之後,該微處理器便離開預行,而且指令會被重新執行。然而,從指令或聯合快取處重新提取指令卻可能減慢處理器運算。據此,本文中揭示和在微處理器於預行之後重新進入一特殊執行位置時從一緩衝器處重新派送被選擇要重新執行之指令有關的各種實施例。
於一範例中會提供一微處理器。該微處理器包括:提取邏輯;一或多個執行機制,用以執行該提取邏輯所提供之已擷取的指令;以及排程器邏輯,用以排程要執行的指令。該範例排程器邏輯包括一緩衝器,用以儲存該已擷取的指令以及一或多個額外指令,該排程器邏輯被配置成用以在微處理器於預行之後重新進入一特殊執行位置時,從該緩衝器處重新派送先前已被派送至該等執行機制中其中一者的指令。。
100‧‧‧微處理器
102‧‧‧管線
109‧‧‧處理器暫存器
110‧‧‧記憶體階層
110A‧‧‧L1處理器快取
110B‧‧‧L2處理器快取
110C‧‧‧L3處理器快取
110D‧‧‧主記憶體
110E‧‧‧二次儲存體
110F‧‧‧三次儲存體
110G‧‧‧記憶體控制器
120‧‧‧提取邏輯
122‧‧‧解碼邏輯
124‧‧‧排程器邏輯
126A‧‧‧緩衝器/檢查點緩衝器
126B‧‧‧緩衝器/無檢查點緩衝器
130‧‧‧執行邏輯
132‧‧‧記憶體邏輯
134‧‧‧寫回邏輯
200‧‧‧方法
202‧‧‧時間
204‧‧‧時間
206‧‧‧時間
208‧‧‧時間
300‧‧‧方法
400‧‧‧方法
402‧‧‧時間
404‧‧‧時間
406‧‧‧時間
408‧‧‧時間
500‧‧‧儲存胞
502‧‧‧讀取解碼器
504‧‧‧寫入解碼器
圖1概略顯示根據本發明實施例的計算裝置之微處理器。
圖2所示的係根據本發明實施例從緩衝器處重新派送指令的方法。
圖3所示的係根據本發明實施例在預行之後從緩衝器處重新派送指令以便重新執行的方法之流程圖。
圖4所示的係根據本發明實施例之檢查點設立及從緩衝器處重新派送指令的方法。
圖5概略顯示根據本發明實施例用於一緩衝器的複數個儲存胞。
圖1概略描繪微處理器100的實施例,其可配合本文中所述的系統與方法運用。微處理器100各包括處理器暫存器109且可能還包括一記憶體階層110,記憶體階層110可能包括一L1處理器快取110A、一L2處理器快取110B、一L3處理器快取110C、主記憶體110D(例如一或多個動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)晶片)、二次儲存體110E(例如磁性及/或光學儲存單元)及/或三次儲存體110F(例如磁帶電場(tape farm))。應了解的係,該等範例記憶體/儲存體組件雖然以存取時間及容量之遞增順序列出,但仍可能有例外情形。
記憶體控制器110G可用於操控協定和提供主記憶體110D所需要的訊號介面,以及排程記憶體存取。該記憶體控制器會被施行在處理器晶粒上或不同的晶粒上。應了解的係,以上所提供之記憶體階層係非限制性,且可使用其它記憶體階層而不悖離本發明之範疇。
微處理器100還包括一管線(pipeline),圖1中以簡化形式顯示成管線102。管線化(pipelining)允許一個以上的指令位於不同的擷取階段且同時執行。換言之,當另一指令及/或資料從記憶體處被擷取時,一組指令可能通過管線102中所包括的不同執行機制。因此,當上游擷取機制正在等待記憶體回傳指令及/或資料時可運用該等執行機制,以發揮各種結構(例如,快取以及分支預測器)的功用,使得有機會發現其它快取未擊中及/或分支預測錯誤。相對於以個別、序列方式擷取及執行指令及/或資料的方式,此方式有機會加速微處理器的指令和資料處理。
如圖1中所示,管線102包括提取邏輯120、解碼邏輯122、排程器邏輯124、執行邏輯130、記憶體邏輯132以及寫回邏輯134。提取
邏輯120會從記憶體階層110處擷取指令,通常係從由L2至L3快取備援的聯合或專屬的L1快取以及主記憶體處擷取。解碼邏輯122會解碼該等指令,舉例來說,藉由剖析運算碼(opcodes)、運算元(operands)以及定址模式。剖析之後,該等指令接著會由排程器邏輯124排程,以便由執行邏輯130執行。
排程器邏輯124包括一緩衝器126,用以儲存一或多個指令。當指令進入排程器邏輯124時,它們便被佇列在緩衝器126中。該等指令即使在被派送至執行邏輯130之後仍會被保留在緩衝器126中。因此,可因應導致指令在派送之後無法完成的管線不連續性(例如,在資料快取中未擊中的裝載)而從該緩衝器處重新派送先前已被派送的指令。此重新派送可被實施而毋須從緩衝器外部重新提取該等指令。因此,指令可被重新派送或「重新播放(re-played)」一或多次,直到判斷該指令達到完成狀態為止,此時,該指令便可在邏輯上及/或實體上從該緩衝器處移除。
如圖1中所示,於某些實例中,例如,以下更詳細說明的預行情況期間,緩衝器126可被設立檢查點,用以在預行期間保留緩衝器126的狀態,而緩衝器126的無檢查點工作狀態版本(non-checkpointed working state version)則會佇列要派送的指令。圖1還顯示選擇性的旁繞(bypass),用以將指令轉發至執行邏輯130,同時將該指令儲存在緩衝器126中。
於某些實施例中,緩衝器126可以指令集架構(Instruction Set Architecture,ISA)指令的形式儲存指令。額外地或選擇性地,於某些實施例中,緩衝器126可被配置成用以儲存微運算束,每一個微運算皆對應於一或多個ISA指令或是ISA指令的一部分。應明白的是,可運用實際上任何適宜的排列將指令儲存在微運算束中,其並無悖離本發明之範疇。舉例來說,於某些實施例中,單一指令可被儲存在複數個微運算束中;而於某些實施例中,單一指令可被儲存成單一微運算束。於其它實施例中,複數個指令可被儲存成單一微運算束。於其它實施例中,緩衝器126可儲存個
別指令或微運算,例如,完全不包括微運算束的指令或微運算。
在進入預行時為讓邊界指標符指向有效位置,緩衝器126至少和從導致進入預行的一特殊微運算束到和該特殊微運算束相同指令中最後微運算束所包括的微運算束數量一樣大,其可稱為指令的尾部大小。因此,於微運算束被儲存在緩衝器126中的實施例中,緩衝器126可根據和一架構指令相關聯的微運算的預設尾部大小來設計尺寸。此等ISA指令及/或微運算束可被重新派送至執行邏輯130任何適宜的次數。
管線102還包括:記憶體邏輯132,用以實施裝載及/或儲存運算;以及寫回邏輯134,用以將運算結果寫至適當位置,例如,暫存器109。應了解的係,顯示在管線102中的以上階段僅示例一種典型的精簡指令集運算(Reduced Instruction Set Computing,RISC)施行方式,但本發明不侷限於此。舉例來說,於某些實施例中,該提取邏輯與該排程器邏輯功能可被提供在管線的上游,例如,編譯超長指令字(Very Long Instruction Word,VLIW)指令或是程式碼變形(code-morphing)。於某些其它實施例中,該排程器邏輯可被包括在微處理器的提取邏輯及/或解碼邏輯中。一般來說,微處理器可能包括提取邏輯、解碼邏輯以及執行邏輯,每一者可能包括一或多個階段,具有由該執行邏輯實行的記憶體與寫回功能。本發明等效應用於此等和其它微處理器施行方式,其包括可能使用VLIW指令及/或其它邏輯指令的混合施行方式。
在已述範例中,指令可能以每次一個的方式被提取並執行,其可能需要用到多個時脈週期。於此期間,大部分的資料路徑可能未被使用。除了單一指令提取之外,或者,取而代之的係,可使用預提取(pre-fetch)方法改善效能並且避免和讀取運算及儲存運算(也就是,讀取指令且將此等指令裝載至處理器暫存器及/或執行佇列中)相關聯的等待時間瓶頸。據此,應明白的係,可使用實際上任何適宜方式的提取、排程以及派送指令,其並無悖離本發明之範疇。
圖2概略顯示一種重新派送被儲存在緩衝器中之指令的方法200的實施例,其在該緩衝器的工作狀態版本中(例如無檢查點版本)使用複數個指標符在時間202、時間204、時間206以及時間208四個連續時間處追蹤被儲存在該緩衝器中之指令的位址。圖2中所描繪的方法僅為解釋之目的,不用於限制本發明,因為於某些實施例中可能包括以下所述之該方法的實際上任何適宜變化,其並無悖離本發明之範疇。
在圖2中所示的範例中,五個微運算束A1、A2、B1、C1以及C2於時間202處被儲存在該緩衝器中。微運算束A1與A2對應於架構指令A,微運算束B1對應於架構指令B,而微運算束C1與C2對應於架構指令C。和指令C相關聯的所有微運算束沒有於時間202處完全被插入該緩衝器中,因為最後一個微運算束(C3)尚未於時間202處被插入該緩衝器中。
如圖2中所示,指標符「A」係表示下一個微運算束要被插入該緩衝器中的位置的分派指標符(allocation identifier)。可運用實際上任何適宜的方式來排程指令進出該緩衝器,圖2中所示的緩衝器被描繪成邏輯先入、邏輯先出的環形緩衝器。該分派指標符會在一指令(或其一部分)被插入該緩衝器中時被更新。於圖2所示的範例中,該分派指標符係在時間202和時間204之間被更新,因為對應於指令C的微運算束C3被插入該緩衝器中;並且在時間204和時間206之間再次被更新,因為對應於指令D的微運算束D1與D2在時間208處被插入該緩衝器中。請注意,任何結構指令都可能為ISA指令,其並無悖離本發明之範疇。
指標符「R」係表示經選擇要被讀取而準備派送至執行機制的指令入口的緩衝器位址或緩衝器位置的讀取指標符。舉例來說,該讀取指標符可能指向該所選擇指令的位址,使得該所選擇指令的各種附屬物可在派送該指令之前先被讀取。該讀取指標符會在該所選擇指令(或其一部分)發送至該執行機制時被更新。於圖2中所示的範例中,該讀取指標符係在
時間202和時間204之間被更新,因為對應於指令B的微運算束B1被讀取要進行派送;並且在對應於指令C的微運算束C1被讀取要進行派送時再次被更新。
指標符「D」係表示已完成且準備從該緩衝器處邏輯性移除(於某些實施例中為實體性移除)的指令項目(instruction entry)之緩衝器位址或緩衝器位置的解除分派(de-allocation)指標符。因此,該解除分派指標符指向的指令係要從該緩衝器處移除(舉例來說,藉由覆寫及/或刪除)的下一個指令。因此,一由分派指標符插入該緩衝器中且由讀取指標符讀取的指令會保留在該緩衝器,直到解除分派指標符表示要移除為止。該解除分派指標符會在該所選擇指令(或其一部分)完成時被更新。於圖2所示的範例中,該解除分派指標符係在時間202和時間204之間被更新,因為對應於指令A的微運算束A1已準備要解除分派;並且在時間204和時間206之間被更新,因為微運算束A2已準備要解除分派。
於某些實施例中,該解除分派指標符可藉由逐個微運算束移動(例如從A1移至A2)而前進(advance),因為該等微運算束可以逐個微運算束為基礎(bundle-by-bundle basis)從該緩衝器處被派送且解除分派。然而,於某些實施例中,該解除分派指標符可藉由在指令間移動而前進,即使該緩衝器儲存微運算束。舉例來說,該解除分派指標符可從A1前進至B1,略過A2,如同該等微運算束被個別派送(例如A1、A2、B1、...等)。據此,於某些實施例中,在該緩衝器的工作狀態期間,該解除分派指標符以及一或多個其它指標符(例如,讀取指標符)的遞增前進可能不相同。
應明白的是,A指標符、R指標符以及D指標符的順序雖然受限於指令所遭遇到的次序(例如依照A、R以及D的次序);但是,任何適宜數量的緩衝器位置可分開該等A指標符、R指標符以及D指標符,且進一步言之,可如以下所述般地插進其它適宜的緩衝器指標符。
指標符「RY」係表示要被重新派送以便重新執行的指令的
緩衝器位址或緩衝器位置之重播指標符。重播指標符會和解除分派指標符一起被更新,而一旦指令(或其一部分)完成之後,重播該指令便不再是問題。於圖2所示的實施例中,該重播指標符跟在讀取指標符後面,使得如果發生合宜的管線執行凍結的話,可重播先前被讀取且被派送的指令。在重播時,重播指標符會被複製到讀取指標符中,使得該讀取指標符會讀取被選擇重播的指令。於圖2所示的範例中,該重播指標符在時間206處被複製到該讀取指標符中,使得該讀取指標符與該重播指標符兩者皆在時間208處指向微運算束C1。因此,該讀取指標符指向微運算束C1,以便準備重新派送該要重新執行的微運算束。
於圖2所示的範例中,在時間208處,該讀取指標符準備讀取微運算束C1,以便準備重新派送與重新執行。倘若微運算束C1因為特定管線執行凍結而沒有完成的話,該重播指標符可被複製到該讀取指標符中,用以讓微運算束C1再次被重新派送,直到該微運算束成功完成為止。一旦該微運算束完成之後,該重播指標符會前進,而且該解除分派指標符會表示微運算束C1已準備從該緩衝器處邏輯性移除。
於某些實施例中,從緩衝器中重新派送或重播一指令可由該微處理器離開預行狀態產生。繼續參考圖1所示範例,舉例來說,L3快取110C處的快取未擊中可能觸發從主記憶體110D處取得指令的請求,相較於在L2快取110B處發生未擊中但在L3快取110C處發生擊中,其可能有較慢的履行時間。一旦確認該未擊中,該微處理器便會被設立檢查點,使得該微處理器可在預行結束之後(例如,一旦該裝載未擊中被履行)返回該檢查點狀態。因此,倘若一特殊指令開始預行,該指令將會如同預行指令般完成並接著在預行結束之後再次被重新派送。
因為不知道何時會進入預行以及該緩衝器會被設立檢查點,圖2還例示一重新啟動指令指標符,用以追蹤最後完整指令後面的位址或位置,例如,所有構成部分都已裝載至該緩衝器中的指令後面的指令
之位址。因為該緩衝器在重新啟動時會被重置為不包括任何不完整指令的狀態,所以,倘若將要重新啟動的話,導引該重新啟動指令指標符指向該不完整指令的位址會導致從該記憶體中的適當位置處裝載該不完整指令的微運算束。如以上介紹,在該緩衝器中所保留之最後完整指令後面被執行的指令可在重新派送該緩衝器中所保留的指令時從該緩衝器外部提取。於某些實施例中,當在緩衝器內的指令被重新派送以重新執行時,重新啟動指令指標符導引提取邏輯的指令指標符從緩衝器外部提取另一指令。每當一完整的指令被插入該緩衝器中時該重新啟動指令指標符便會被更新。在圖2中,重新啟動指令指標符在時間202處指向指令C1的指令指標符。在時間204處,重新啟動指令指標符被更新成指向C以外的指令,因為指令C已透過微運算束C3之插入而完成。如圖2時間204處所示,一旦微運算束C3被插入,該重新啟動指令指標符便指向D1。因此,於一指令包括複數個微運算束的實施例中,該重新啟動指令指標符會被更新成使其指向整個指令邊界,而並非指向個別指令內的位置。
於緩衝器儲存ISA指令的某些實施例中,追蹤緩衝器中最後完整指令的位址或位置可能比較簡單,因為每一個ISA指令可能都有一與其相關聯的指令指標符。於其它實施例中,例如,於微運算束被儲存在該緩衝器中的實施例中,和一指令相關聯的的指令指標符可能會被包括在形成一指令的一組微運算束的單獨最後微運算束中。於此等實施例中,該重新啟動指令指標符會在一指令的最後微運算束被插入該緩衝器中時被更新。進一步言之,因為可能難以從被儲存在該緩衝器之微運算束中辨識指令的結束,所以,於此等實施例中,可能會使用一邊界指令指標符追蹤一對應於該重新啟動指令指標符的微運算束和後續微運算束之間的邊界,例如,用以追蹤該緩衝器中所保留之最後完整指令和屬於該緩衝器中所保留之不完整指令的後續微運算束之間的邊界。於此等實施例中,該重新啟動指令指標符可能接著追蹤該邊界指令指標符已追蹤到之該緩衝器中所保留
之最後完整指令的位址或位置。於此等實施例中,該邊界指令指標符可能會與該重新啟動指令指標符同時被更新。於圖2中,當指令C因微運算束C3之插入而完成時,該邊界指令指標符「B」會在時間202和時間204之間被更新用指向D1。
於本文中所述的實施例中,該緩衝器存在檢查點和無檢查點的版本。因此,回到圖1中所示範例,造成預行進入和一或多個後續指令的指令係被儲存在該緩衝器的檢查點版本中(圖中顯示為檢查點緩衝器126A),因此,當離開預行時,造成預行和此等後續指令的指令可從該緩衝器處被派送,不必從該緩衝器外部提取。舉例來說,於某些實施例中,該指令可直接從檢查點緩衝器126A被派送;而於某些其它實施例中,該指令一開始可能被複製到該緩衝器的無檢查點版本中(圖1中顯示為無檢查點緩衝器126B),並接著從該處被派送。進一步言之,於某些實施例中,在該緩衝器中所保留之最後完整指令後被執行的指令可在重新派送該緩衝器中所保留的指令時從該緩衝器外部提取。據此,本文中所述的實施例可藉由消除被儲存在該緩衝器中之指令的提取過程,並藉由觸發被儲存在該緩衝器外部之指令的後續指令的提取過程,同時觸發被儲存在該緩衝器內部之指令的重新派送運算,而提供縮短預行之後的指令處理時間之潛在好處。
圖3所示的係在預行之後從緩衝器處重新派送所選擇指令以便重新執行的方法300之實施例的流程圖。以下提供的方法300的說明會混雜參考圖4中所提供之緩衝器的範例。為簡化起見,圖3中所示的範例雖然僅描繪一層快取;然而,應明白的是,可運用任何適宜數量的快取層,其並無悖離本發明之範疇;並且可運用任何適宜的方式減少未擊中造成的損失。進一步言之,圖3與圖4所描繪的方法僅為解釋之目的,不欲侷限本發明,因為於某些實施例中可能包括以下所述之該等方法的幾乎任何適宜的變化,包括省略、新增以及重新排列,其並無悖離本發明之範疇。
在302處,方法300包括藉由一執行中指令來請求資料。於
某些實施例中,提取請求302可能由記憶體邏輯中指向該資料之位址或位置的資料指標符所發出。舉例來說,當該記憶體邏輯的指令指標符指向該資料的位址時,該記憶體邏輯會被導向該位址,用以擷取該特殊資料。於圖3所示的範例中,該提取請求造成未擊中,因此,在304處,快取會向主記憶體請求該被請求的資料。
當該被請求的資料正從主記憶體處被擷取時,方法300會前往306,於該處,管線會進入預行,並且在308處,為包括導致進入預行之指令的緩衝器設立檢查點。為緩衝器設立檢查點會在預行期間保留緩衝器的狀態(以檢查點形式),而該緩衝器的無檢查點版本則在工作狀態中進行運算。該檢查點版本會在進入預行時由排程器邏輯產生。
圖4概略顯示用以在進入範例預行模式時、在範例預行模式期間以及在離開範例預行模式時操控緩衝器的方法400的實施例,其使用複數個指標符在四個連續時間402、404、406、以及408處追蹤被儲存在該緩衝器中之指令的位址或位置。
在圖4所示的範例中,五個微運算束A1、A2、B1、C1以及C2於時間402處進入預行時被儲存在該緩衝器中,對應於三個架構指令A、B以及C。和指令C相關聯的所有微運算束沒有於時間402處完全被插入該緩衝器中,因為最後一個微運算束(C3)尚未於時間402處被插入該緩衝器中。在圖4所示的範例中,解除分派指標符「D」指向造成進入預行的微運算束A1,而讀取指標符「R」指向下一個要被派送的微運算束B1。
於時間402處,方法400顯示產生該緩衝器的檢查點版本,該檢查點版本包括該解除分派指標符的檢查點版本。於該緩衝器的檢查點版本中,該緩衝器的解除分派指標符與內容保持在檢查點狀態中,等待預行之結束。
圖4所示之緩衝器的檢查點版本的實施例包括複數個空位(vacancy)。此等空位可在進入預行時為該緩衝器設立檢查點而立刻(在可接
受的容限內)產生。選擇性地,於某些其它實施例中,緩衝器可能在預行開始之後等到該緩衝器達到預定佔有率才被設立檢查點。舉例來說,於某些此等實施例中,該緩衝器可能直到該緩衝器填滿時才被設立檢查點。只要在離開預行之前產生檢查點,此等方式可比立即式檢查點設立方式儲存相對更多的指令,而在離開預行之後,提取邏輯再次派送指令之前潛在降低管線凍結的可能性。
當從預行處重新啟動時,該提取邏輯通常會被導引至跟在該緩衝器中最後完整指令後面的指令指標符。如以上介紹,重新啟動指令指標符會追蹤該緩衝器中最後完整指令後面的位址或位置。於緩衝器保留微運算束的實施例中,可能會使用一邊界指標符追蹤一對應於該重新啟動指令指標符的微運算束和後續微運算束之間的邊界,例如,用以追蹤該緩衝器中所保留之最後完整指令和一後續微運算束之間的邊界。圖4所示的實施例描繪一重新啟動指令指標符,以追蹤該緩衝器中最後完整指令(例如C1)後面的位址或位置。圖4還顯示一邊界指令指標符「B」,同樣指向微運算束C1。如圖4所示,該邊界指令指標符在進入預行時未被設立檢查點,而在預行期間在無檢查點版本中保持冷凍(frozen)。此方式有機會節省檢查點緩衝器中的儲存空間。
繼續參考圖3,在310處,方法300包括使用緩衝器的無檢查點版本在預行中推測性執行。在預行期間,微處理器會繼續推測性執行指令,有時會因為沒有可用的目標資料而不精確,因此,當觸發預行的初始未擊中正在履行時可能會辨識額外的快取未擊中、轉譯後備緩衝器未擊中及/或分支預測錯誤事件。在履行初始未擊中請求期間便可開始履行該等額外未擊中與其它潛在無法預測及/或可能長期出現的凍結情況,其會潛在節省時間。
在圖4所示的實施例中,當時間從時間402前進至時間404時,該緩衝器之無檢查點版本中所包括的讀取指標符、重播指標符、分派
指標符以及解除分派指標符會隨著該微處理器進行推測性執行而移動。舉例來說,在該緩衝器之無檢查點版本中,微運算束C3係在時間404處被插入至該緩衝器中而微運算束A1則從該緩衝器處解除分派,該等讀取指標符與重播指標符則會前進,依此類推。
同時,在312與314處,導致進入預行的未擊中資料會被提供至該管線,用以解決該裝載未擊中並且讓預行在316處結束。一旦該初始裝載未擊中履行之後,管線便會在318處被沖洗,其可能包括丟棄在預行期間所實施之推測性執行的一或多個無效結果,且於某些實施例中,會丟棄該緩衝器的無檢查點版本,使得該微處理器處在和預行開始時其所處的相同狀態中。
在320處,方法300包括重置該緩衝器至該緩衝器的檢查點版本,使得該緩衝器被設為該微處理器進入預行的狀態。在320處重置該緩衝器至檢查點版本包括從該緩衝器的檢查點版本處回復該解除分派指標符。
在圖4所示的實施例中,重置該緩衝器至描繪在時間406處之檢查點狀態,其包括將該解除分派指標符的檢查點版本從該檢查點緩衝器處複製到該無檢查點緩衝器。在圖4所示的範例中,在406處,該解除分派指標符被複製到該解除分派指標符的無檢查點版本,並且被複製到該等重播與讀取指標符,而該邊界指標符被解凍(unfrozen)且被複製到該分派指標符位置中。進一步言之,該重新啟動指令指標符指向和B(出現在該緩衝器中的最後完整指令)相關聯的位址。同時,該等解除分派指標符、讀取指標符以及重播指標符指向和微運算束A1相關聯的微運算束,使得A1可被重新派送至執行單元。最後,該分派指標符指向指令B後面的位置。在預行之後回復該緩衝器之後,微運算束C1與C2邏輯上不出現在該緩衝器中。據此,定位該分派指標符用以指向最後完整指令(圖4所示範例中的指令B)後面的位置使得和不完整指令(圖4中的指令C)相關聯的所有微運算
束可在預行之後回復該緩衝器時被提取。結果,在圖4所示的範例中,在重新啟動時,可以該解除分派指標符和該邊界指標符為基礎決定該緩衝器中的所有指標符。
繼續參考圖3,在322處,方法300包括重新派送先前導致預行的指令。重新派送指令包括在該微處理器於預行之後重新進入一特殊執行位置時,讀取所選擇要重新執行的指令,並且在讀取該所選擇的指令之後,重新派送該指令至該微處理器的一或多個執行機制。一旦該指令重新執行並完成之後,該指令便會如該解除分派指標符所示般地從該緩衝器處被邏輯性移除。
在圖4所示的範例中,讀取指標符準備讀取微運算束A1,以便準備重新派送與重新執行。倘若微運算束A1因為特定管線執行凍結而沒有完成的話,該重播指標符可被複製到該讀取指標符中,用以讓微運算束A1再次被重新派送,直到該微運算束成功完成為止。一旦完成該微運算束,重播指標符會前進,而且該分派指標符會表示微運算束A1已準備從該緩衝器處邏輯性移除。
繼續參考圖3,在324處,方法300包括在所選擇的指令被重新派送時從該緩衝器外部提取另一指令。在326處,來自該緩衝器內部的後續指令可被派送用以執行(舉例來說,如圖4所示的指令B1),而在328處,來自該緩衝器外部的指令則從快取處被送回。
應明白的是,以上所述之檢查點作法僅為解釋之目的,而且可運用實際上任何適宜的方式為緩衝器設立檢查點,其並無悖離本發明之範疇。舉例來說,於一情境中,在進入預行時,該緩衝器可被設立檢查點,連同該等邊界指標符、解除分派指標符以及分派指標符。在離開預行時,該緩衝器可藉由從它的檢查點版本處複製該等邊界指標符、解除分派指標符以及分派指標符的檢查點版本而被回復,其中,該解除分派指標符也會被複製到該等讀取指標符與重播指標符中,使得該等讀取指標符、重播指
標符以及解除分派指標符指向共同的位址。
應明白的是,本文中所述的方法僅為解釋之目的,而不欲侷限本發明。據此,應明白的是,於某些實施例中,本文中所述的方法可能包括額外或替代處理;而於某些實施例中,本文中所述的方法可能包括可重新排序或是可省略的一部分處理,其並無悖離本發明之範疇。進一步言之,應明白的是,本文中所述的方法可利用任何適宜的硬體實施,包括本文中所述的硬體。
圖5概略顯示根據本發明實施例用於一緩衝器的範例儲存胞500。於圖5所示的實施例中,該緩衝器利用成對排列的2N個項目(entry)儲存在儲存胞500中。當給定一位址X時,讀取解碼器502和寫入解碼器504可解碼成不同的項目或相同的項目,相依於項目是否為檢查點項目(且因而不可在預行期間被覆寫)以及相依於該項目是否已被寫入無檢查點子集中。於某些此等實施例中,該排程器邏輯可能包括一位址位元,被配置成用以辨識儲存胞500中一選定項目的選定位址究竟係對應於該緩衝器的檢查點版本或是該緩衝器的無檢查點版本。該位址可被用來辨識資訊究竟要在該緩衝器的工作版本或檢查點版本中被儲存或接取。儲存胞500可為實際上任何適宜的儲存胞。舉例來說,於某些實施例中,儲存胞500可能包括靜態隨機存取記憶體(Static Random Access Memory,SRAM)。
本書面說明利用範例揭示本發明,包括最佳模式,並且還可讓熟習相關技術的人士實行本發明,包括製造及使用本發明的任何裝置或系統以及實施任何已併入本發明中的方法。本發明可取得專利之範疇由申請專利範圍所定義,並且可能包括熟習本技術的人士瞭解的其它範例。此等其它範例預期落在該等申請專利範圍之範疇裡面。
Claims (10)
- 一種微處理器,包括:提取邏輯;一或多個執行機制,用以執行該提取邏輯所提供之一已擷取的指令;以及排程器邏輯,用以排程要執行的已擷取指令,該排程器邏輯包括一緩衝器,用以儲存該已擷取的指令以及一或多個額外指令,該排程器邏輯用以在該微處理器於預行之後重新進入一特殊執行位置時,從該緩衝器處重新派送先前已被派送至該等執行機制中其中一者的指令。
- 如申請專利範圍第1項的微處理器,該緩衝器被儲存在包含成對排列之2N個項目的單一陣列中。
- 如申請專利範圍第2項的微處理器,該排程器邏輯包含一位址位元,用以辨識儲存胞中一所選項目的一所選位址係對應於該緩衝器的一檢查點版本或是該緩衝器的一無檢查點版本。
- 如申請專利範圍第1項的微處理器,該緩衝器包括:一讀取指標符,用以讀取該緩衝器中所保留的一所選指令,準備派送該所選指令以便執行;以及一解除分派指標符,用以在該所選指令完成之後讓該所選指令從該緩衝器處邏輯性移除。
- 如申請專利範圍第4項的微處理器,該緩衝器更包含:一重播指標符,用以讓一所選指令在重播期間被重新派送以重新執行;以及 一重新啟動指令指標符,用以追蹤該緩衝器中所保留之最後完整指令後面的一位址,該重新啟動指令指標符會導引用於該提取邏輯的一指令指標符,使得當該所選指令被重新派送以重新執行時,該提取邏輯會從該緩衝器外部提取另一指令。
- 如申請專利範圍第5項的微處理器,該排程器邏輯更包含:該緩衝器的一檢查點版本,包括一導致進入預行的指令以及複數個後續指令;以及該緩衝器的一無檢查點版本,在預行期間操作在工作狀態中;其中,在預行之後,該排程器邏輯用以重置該緩衝器至該檢查點版本。
- 如申請專利範圍第6項的微處理器,該緩衝器用以儲存複數個微運算束,每一個微運算對應於一或多個指令集架構(ISA)指令或是ISA指令的一部分,該排程器邏輯更包含一邊界指令指標符,用以追蹤該緩衝器中所保留的一完整ISA指令的最後微運算束和屬於該緩衝器中所保留的一不完整ISA指令的後續微運算束之間的邊界,其中,該重新啟動指令指標符會用以追蹤該邊界指令指標符已追蹤到之該緩衝器中所保留之最後完整指令後面的位址。
- 如申請專利範圍第6項的微處理器,其中,該檢查點版本係在進入預行時由該排程器邏輯產生。
- 如申請專利範圍第8項的微處理器,其中,該檢查點版本包含一或多個空位。
- 如申請專利範圍第1項的微處理器,該提取邏輯與該排程器邏輯在該微處理器中所包含之一管線的上游。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/463,627 US9875105B2 (en) | 2012-05-03 | 2012-05-03 | Checkpointed buffer for re-entry from runahead |
US13/463,627 | 2012-05-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201407471A TW201407471A (zh) | 2014-02-16 |
TWI626589B true TWI626589B (zh) | 2018-06-11 |
Family
ID=49384600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102114417A TWI626589B (zh) | 2012-05-03 | 2013-04-23 | 用以從預行再入的檢查點緩衝器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9875105B2 (zh) |
CN (1) | CN103383642A (zh) |
DE (1) | DE102013206501A1 (zh) |
TW (1) | TWI626589B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424138B2 (en) * | 2013-06-14 | 2016-08-23 | Nvidia Corporation | Checkpointing a computer hardware architecture state using a stack or queue |
GB2540190B (en) * | 2015-07-08 | 2020-01-01 | Mips Tech Llc | Check pointing a shift register |
GB2540221B (en) | 2015-07-08 | 2020-01-01 | Mips Tech Llc | Check pointing a shift register |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US10768899B2 (en) | 2019-01-29 | 2020-09-08 | SambaNova Systems, Inc. | Matrix normal/transpose read and a reconfigurable data processor including same |
US11386038B2 (en) | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
CN110597556B (zh) * | 2019-09-09 | 2021-08-13 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
CN112559052B (zh) * | 2020-12-15 | 2022-11-25 | 类人思维(山东)智慧科技有限公司 | 一种指令集调用方法、装置、终端及存储介质 |
US11327771B1 (en) | 2021-07-16 | 2022-05-10 | SambaNova Systems, Inc. | Defect repair circuits for a reconfigurable data processor |
US11556494B1 (en) | 2021-07-16 | 2023-01-17 | SambaNova Systems, Inc. | Defect repair for a reconfigurable data processor for homogeneous subarrays |
US11409540B1 (en) | 2021-07-16 | 2022-08-09 | SambaNova Systems, Inc. | Routing circuits for defect repair for a reconfigurable data processor |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200405201A (en) * | 2002-08-28 | 2004-04-01 | Advanced Micro Devices Inc | Scheduler for use in a microprocessor that supports data-speculative execution |
TW200529071A (en) * | 2003-12-18 | 2005-09-01 | Nvidia Corp | Across-thread out of order instruction dispatch in a multithreaded microprocessor |
US20100205415A1 (en) * | 2009-02-12 | 2010-08-12 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state |
Family Cites Families (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956753A (en) | 1993-12-30 | 1999-09-21 | Intel Corporation | Method and apparatus for handling speculative memory access operations |
GB2287111B (en) | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
US5487146A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Plural memory access address generation employing guide table entries forming linked list |
JPH0877347A (ja) | 1994-03-08 | 1996-03-22 | Texas Instr Inc <Ti> | 画像/グラフィックス処理用のデータ処理装置およびその操作方法 |
JP2763499B2 (ja) | 1994-11-30 | 1998-06-11 | 株式会社ナムコ | 画像合成装置及び画像合成方法 |
US6665792B1 (en) | 1996-11-13 | 2003-12-16 | Intel Corporation | Interface to a memory system for a processor having a replay system |
US5864692A (en) | 1996-12-16 | 1999-01-26 | Hewlett-Packard Company | Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions |
US5870582A (en) * | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
US6668291B1 (en) | 1998-09-09 | 2003-12-23 | Microsoft Corporation | Non-blocking concurrent queues with direct node access by threads |
US6862635B1 (en) | 1998-11-13 | 2005-03-01 | Cray Inc. | Synchronization techniques in a multithreaded environment |
US6519694B2 (en) | 1999-02-04 | 2003-02-11 | Sun Microsystems, Inc. | System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6484254B1 (en) | 1999-12-30 | 2002-11-19 | Intel Corporation | Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses |
US6981083B2 (en) | 2002-12-05 | 2005-12-27 | International Business Machines Corporation | Processor virtualization mechanism via an enhanced restoration of hard architected states |
US20040128448A1 (en) | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US7139876B2 (en) | 2003-01-16 | 2006-11-21 | Ip-First, Llc | Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache |
US7587584B2 (en) | 2003-02-19 | 2009-09-08 | Intel Corporation | Mechanism to exploit synchronization overhead to improve multithreaded performance |
US7225299B1 (en) | 2003-07-16 | 2007-05-29 | Transmeta Corporation | Supporting speculative modification in a data cache |
US7062631B1 (en) | 2003-07-17 | 2006-06-13 | Transmeta Corporation | Method and system for enforcing consistent per-physical page cacheability attributes |
US7075541B2 (en) | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
US7010648B2 (en) | 2003-09-08 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor |
US7293161B1 (en) | 2003-10-14 | 2007-11-06 | Sun Microsystems, Inc. | Deferring loads and stores when a load buffer or store buffer fills during execute-ahead mode |
US7496732B2 (en) | 2003-12-17 | 2009-02-24 | Intel Corporation | Method and apparatus for results speculation under run-ahead execution |
US7340565B2 (en) | 2004-01-13 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Source request arbitration |
US8190863B2 (en) | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
US7257699B2 (en) * | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7194604B2 (en) | 2004-08-26 | 2007-03-20 | International Business Machines Corporation | Address generation interlock resolution under runahead execution |
US7890735B2 (en) | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7421567B2 (en) * | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
US20060149931A1 (en) * | 2004-12-28 | 2006-07-06 | Akkary Haitham | Runahead execution in a central processing unit |
US20060174228A1 (en) | 2005-01-28 | 2006-08-03 | Dell Products L.P. | Adaptive pre-fetch policy |
US7613904B2 (en) | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
US7752627B2 (en) * | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7571304B2 (en) | 2005-03-18 | 2009-08-04 | Sun Microsystems, Inc. | Generation of multiple checkpoints in a processor that supports speculative execution |
US20060277398A1 (en) | 2005-06-03 | 2006-12-07 | Intel Corporation | Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline |
US7747841B2 (en) | 2005-09-26 | 2010-06-29 | Cornell Research Foundation, Inc. | Method and apparatus for early load retirement in a processor system |
US7730263B2 (en) | 2006-01-20 | 2010-06-01 | Cornell Research Foundation, Inc. | Future execution prefetching technique and architecture |
US20070186081A1 (en) | 2006-02-06 | 2007-08-09 | Shailender Chaudhry | Supporting out-of-order issue in an execute-ahead processor |
US8621120B2 (en) | 2006-04-17 | 2013-12-31 | International Business Machines Corporation | Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism |
US8035648B1 (en) | 2006-05-19 | 2011-10-11 | Nvidia Corporation | Runahead execution for graphics processing units |
US8707011B1 (en) | 2006-10-24 | 2014-04-22 | Nvidia Corporation | Memory access techniques utilizing a set-associative translation lookaside buffer |
US7895421B2 (en) | 2007-07-12 | 2011-02-22 | Globalfoundries Inc. | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement |
US20090327661A1 (en) * | 2008-06-30 | 2009-12-31 | Zeev Sperber | Mechanisms to handle free physical register identifiers for smt out-of-order processors |
US9155014B2 (en) | 2008-11-17 | 2015-10-06 | Qualcomm Incorporated | Conditional access terminal initiation of delayed handover |
US8639886B2 (en) | 2009-02-03 | 2014-01-28 | International Business Machines Corporation | Store-to-load forwarding mechanism for processor runahead mode operation |
TWI428918B (zh) | 2009-09-29 | 2014-03-01 | Silicon Motion Inc | 記憶裝置以及記憶裝置之資料存取方法 |
US9086889B2 (en) | 2010-04-27 | 2015-07-21 | Oracle International Corporation | Reducing pipeline restart penalty |
US8719625B2 (en) | 2010-07-22 | 2014-05-06 | International Business Machines Corporation | Method, apparatus and computer program for processing invalid data |
US8627044B2 (en) * | 2010-10-06 | 2014-01-07 | Oracle International Corporation | Issuing instructions with unresolved data dependencies |
CN102184127B (zh) | 2011-05-20 | 2013-11-06 | 北京北大众志微系统科技有限责任公司 | 一种实现处理器预执行的方法及相应的装置 |
US9009449B2 (en) | 2011-11-10 | 2015-04-14 | Oracle International Corporation | Reducing power consumption and resource utilization during miss lookahead |
US9645929B2 (en) | 2012-09-14 | 2017-05-09 | Nvidia Corporation | Speculative permission acquisition for shared memory |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US20140164738A1 (en) | 2012-12-07 | 2014-06-12 | Nvidia Corporation | Instruction categorization for runahead operation |
US9632976B2 (en) | 2012-12-07 | 2017-04-25 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US9547602B2 (en) | 2013-03-14 | 2017-01-17 | Nvidia Corporation | Translation lookaside buffer entry systems and methods |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
-
2012
- 2012-05-03 US US13/463,627 patent/US9875105B2/en active Active
-
2013
- 2013-04-12 DE DE102013206501A patent/DE102013206501A1/de active Pending
- 2013-04-23 TW TW102114417A patent/TWI626589B/zh active
- 2013-04-26 CN CN2013101494057A patent/CN103383642A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200405201A (en) * | 2002-08-28 | 2004-04-01 | Advanced Micro Devices Inc | Scheduler for use in a microprocessor that supports data-speculative execution |
TW200529071A (en) * | 2003-12-18 | 2005-09-01 | Nvidia Corp | Across-thread out of order instruction dispatch in a multithreaded microprocessor |
US20100205415A1 (en) * | 2009-02-12 | 2010-08-12 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state |
US20100205402A1 (en) * | 2009-02-12 | 2010-08-12 | Via Technologies, Inc. | Pipelined microprocessor with normal and fast conditional branch instructions |
Also Published As
Publication number | Publication date |
---|---|
DE102013206501A1 (de) | 2013-11-07 |
US20130297911A1 (en) | 2013-11-07 |
TW201407471A (zh) | 2014-02-16 |
CN103383642A (zh) | 2013-11-06 |
US9875105B2 (en) | 2018-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI626589B (zh) | 用以從預行再入的檢查點緩衝器 | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
US7461238B2 (en) | Simple load and store disambiguation and scheduling at predecode | |
US9740553B2 (en) | Managing potentially invalid results during runahead | |
TWI258695B (en) | Generating prefetches by speculatively executing code through hardware scout threading | |
US20060212688A1 (en) | Generation of multiple checkpoints in a processor that supports speculative execution | |
US20170344374A1 (en) | Processor with efficient reorder buffer (rob) management | |
US20060149931A1 (en) | Runahead execution in a central processing unit | |
JP2009540411A (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
JP7007371B2 (ja) | ベクトル命令のための要素間アドレス・ハザードの取扱い | |
US9891972B2 (en) | Lazy runahead operation for a microprocessor | |
US10628160B2 (en) | Selective poisoning of data during runahead | |
US20060218351A1 (en) | Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory | |
KR20030019451A (ko) | 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 | |
JP2003280896A (ja) | 命令発行装置及び命令発行方法 | |
US10228951B1 (en) | Out of order store commit | |
US9535744B2 (en) | Method and apparatus for continued retirement during commit of a speculative region of code | |
US9400655B2 (en) | Technique for freeing renamed registers | |
US9164900B1 (en) | Methods and systems for expanding preload capabilities of a memory to encompass a register file | |
US9823931B2 (en) | Queued instruction re-dispatch after runahead | |
JP7481328B2 (ja) | トランザクショナル・メモリのための装置及びデータ処理方法 | |
EP3743818B1 (en) | Commit window move element |