TWI537824B - 零循環載入 - Google Patents
零循環載入 Download PDFInfo
- Publication number
- TWI537824B TWI537824B TW102120951A TW102120951A TWI537824B TW I537824 B TWI537824 B TW I537824B TW 102120951 A TW102120951 A TW 102120951A TW 102120951 A TW102120951 A TW 102120951A TW I537824 B TWI537824 B TW I537824B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- scratchpad
- register
- load
- load instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 20
- 230000001419 dependent effect Effects 0.000 claims description 9
- 239000000463 material Substances 0.000 claims description 4
- 238000012797 qualification Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000012986 modification Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 9
- 239000012536 storage buffer Substances 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
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)
Description
本發明係關於微處理器,且更特定而言,係關於高效地減少載入操作之延時及功率。
微處理器通常包括重疊管線階段及指令之無序執行。另外,微處理器可支援同時多線程以提高輸送量。該等技術利用源碼中之指令階層平行度(ILP)。在每一時鐘循環期間,微處理器對於每一管線階段理想地產生每線程最大數目之N個指令之有用執行,其中N為大於一之整數。然而,控制相依性及資料相依性使微處理器之最大輸送量降低至每循環N個指令以下。
指令之推測執行用以執行指令之並行執行,而不管源碼中之控制相依性。當指令之運算元取決於程式次序中較舊指令之結果時,發生資料相依性。資料相依性可出現在直線碼段中的後續指令之運算元之間或在屬於後續循環反覆的指令之運算元之間。在直線程式碼中,可遇到寫後讀取(RAW)相依性、讀後寫入(WAR)相依性或寫後寫入(WAW)相依性。暫存器重命名用以允許指令之並行執行以,而不管WAR相依性及WAW相依性。然而,真實的相依性或RAW相依性仍然係不變的。因此,重複用作目的地暫存器且隨後用作源暫存器之架構暫存器引起相關聯之源碼段的指令執行之串列化。
與架構暫存器之普通RAW相依性之一個實例為載入指令或讀取
操作,嘗試讀取已由較舊(按程式次序)的儲存指令修改之記憶體位置,該較舊的儲存指令尚未將其結果提交至記憶體位置。在程式執行期間可頻繁發生此類型的RAW相依性。讀取記憶體位置可包括明顯的延時並減少處理器輸送量。
據此,需要用於高效降低載入操作之延時的高效方法及機制。
用於高效地減少載入操作之延時的系統及方法。在一實施例中,一種處理器包括一暫存器重命名單元,其接收經解碼之指令並判定經解碼之給定指令是否有資格為零循環載入操作。限定符之實例可包括給定載入指令對給定儲存指令的預測記憶體相依性。另外,限定符可包括為了維持針對給定實體暫存器數目的映射之重複計數,存在對可利用的支援之偵測。若該判定為真,則重命名暫存器單元可將與給定儲存指令的來源運算元相關聯之實體暫存器數目指派至給定載入操作之目的地運算元。
另外,暫存器重命名單元中之控制邏輯可標記給定載入指令以防止其自記憶體讀取與儲存指令的來源運算元相關聯之資料。歸因於重複重命名,可將此資料自實體暫存器檔案轉遞至較新(按程式次序)且取決於給定載入指令之指令。在隨後管線階段中,可驗證預測之記憶體相依性。若記憶體相依性正確,則可將給定載入指令視為完整,而不自記憶體(資料快取記憶體)或自儲存緩衝器讀取運算元資料。若記憶體相依性不正確,則可自管線清除給定載入指令及較新(按程式次序)的指令並重新執行該等指令。
參考以下描述及圖式後,將進一步瞭解此等及其他實施例。
100‧‧‧電腦系統
110‧‧‧微處理器
112‧‧‧處理器核心
114‧‧‧實體暫存器
116‧‧‧快取記憶體子系統
118‧‧‧介面邏輯
120‧‧‧記憶體控制器
122‧‧‧記憶體匯流排
130‧‧‧記憶體隨身碟
140‧‧‧動態隨機存取記憶體(DRAM)
150a‧‧‧周邊裝置
150b‧‧‧周邊裝置
200‧‧‧處理器核心
202‧‧‧位址選擇邏輯/位址選擇器
204‧‧‧指令快取記憶體(i-cache)
206‧‧‧下一獲取預測器
208‧‧‧分支方向預測器
210‧‧‧解碼單元
212‧‧‧控制流程評估邏輯/控制流程評估區塊
214‧‧‧重命名群組內相依性偵測邏輯
216‧‧‧記憶體相依性(MD)偵測器
218‧‧‧映射器
220‧‧‧暫存器重命名單元
222‧‧‧重命名控制邏輯與陣列
224‧‧‧暫存器重複陣列
230‧‧‧可用清單分配器
240‧‧‧分派佇列
242‧‧‧微碼
250‧‧‧排程器
260‧‧‧執行核心
270‧‧‧重排序緩衝器(rob)
272‧‧‧儲存緩衝器
300‧‧‧用於偵測零循環載入操作之方法
400‧‧‧用於處理零循環載入操作之方法
500‧‧‧用於提交包括零循環載入操作的指令之方法
圖1為電腦系統的一實施例之概括方塊圖。
圖2為處理器核心的一實施例之概括方塊圖,該處理器核心以零
循環載入操作執行超標量、無序執行。
圖3為用於偵測零循環載入操作之方法的一實施例之概括流程圖。
圖4為用於處理零循環載入操作之方法的一實施例之概括流程圖。
圖5為用於提交包括零循環載入操作的指令之方法的一實施例之概括流程圖。
雖然本發明易受各種修改及替代形式之影響,但在圖式中以舉例方式展示了其特定實施例,且將在本文中對其進行詳細描述。然而應理解,該等圖式及對其之詳細描述並不意欲將本發明限於所揭示的特定形式,而正相反,本發明意欲涵蓋屬於附屬申請專利範圍所界定的本發明之精神及範疇內的所有修正、均等物或替代。如遍及本申請案所使用,詞「可」以許可之意義(亦即,意謂有可能)而非強制性意義(亦即,意謂必須)來使用。類似地,詞「包括」意謂包括但不限於。
各種單元、電路或其他組件可描述為「經組態以」執行一或多項任務。在此等上下文中,「經組態以」為廣泛的結構敍述,其大體意謂「具有……電路」,該電路在操作期間執行該或該等任務。因而,單元/電路/組件可經組態以甚至在單元/電路/組件當前未接通時仍執行任務。大體而言,形成對應於「經組態以」之結構的電路可包括硬體電路。類似地,為了描述之方便起見,各種單元/電路/組件可經描述為執行一或多項任務。此等描述應解釋為包括片語「經組態以」。敍述經組態以執行一或多項任務之單元/電路/組件明確地不意欲援引35 U.S.C.§112第六段對於彼單元/電路/組件之解釋。
在以下描述中,闡述眾多特定細節以提供對本發明之透徹理
解。然而,一般熟習此項技術者應認識到,可無需該等特定細節而實踐本發明。在一些情況下,尚未詳細展示熟知的電路、結構及技術以避免混淆本發明。
參看圖1,展示了電腦系統100的一實施例之概括方塊圖。如所展示,微處理器110可連接至一或多個周邊裝置150a至150b,及外部電腦記憶體(諸如,記憶體隨身碟130及動態隨機存取記憶體(DRAM)140)。記憶體隨身碟130可儲存用於電腦系統100之作業系統(OS)。軟體應用程式之指令可載入至微處理器110中的快取記憶體子系統116內。軟體應用程式可已儲存於記憶體隨身碟130、DRAM 140及周邊裝置150a-150b中的一個周邊裝置之一或多者中。
雖然展示了單個處理器核心,但是微處理器110可包括多個處理器核心。每一處理器核心可連接至相關聯的快取記憶體子系統。另外,每一處理器核心可共用另一快取記憶體子系統。舉例而言,多個處理器核心中之每一者可利用相關聯的第一級(L1)快取區及第二級(L2)快取區,並另外與其他處理器核心共用第三級(L3)快取區。如所展示,處理器核心112可自快取記憶體子系統116載入軟體應用程式指令並處理指令。大體而言,當軟體程式設計師根據演算法或方法撰寫應用程式以執行工作時,程式設計師利用變數以參考臨時資料及結果資料。此資料利用分配於電腦記憶體中之空間。作業系統為軟體應用程式分配記憶體區域。
處理器核心112可包括實體暫存器檔案內之多個實體暫存器114。實體暫存器114可包括軟體程式設計師及/或編譯器可在軟體應用程式內識別之架構上可見的暫存器。另外,實體暫存器114可包括藉由重命名的暫存器識別符識別之非架構(推測式)暫存器。架構上可見的暫存器與給定指令集架構(ISA)相關聯。在處理應用程式期間,可自分配的記憶體區域將資料載入至快取記憶體子系統116中。實體暫存器
114中之一或多者可用以載入並儲存臨時資料及結果資料。處理器核心112中之硬體包括用於根據給定ISA處理指令之電路。硬體電路包括至少一組相關聯之架構暫存器、功能性單元、管線分級元件及控制邏輯。可針對給定ISA選擇ARM指令集架構。或者,可選擇Alpha、PowerPC、SPARC、MIPS、x86或任何其他ISA。
給定ISA可用以選擇用於宣告及分配記憶體區域之方式。給定ISA可進一步判定用以在微處理器110(包括實體暫存器114)與記憶體隨身碟130、DRAM 140及周邊裝置150a-150b中之一或多者中的記憶體位置之間傳送資料的選定定址模式。載入指令與儲存指令兩者通常用以在記憶體與微處理器110之間及在快取記憶體子系統116與實體暫存器114之間傳送資料。在電腦系統100中展示的虛線指示藉由載入操作及儲存操作執行的資料傳送之實例。明顯的延時可與此等資料傳送中之每一者相關聯。
除對超標量微架構中之執行單元無序發出指令之外,處理器核心112亦可執行暫存器重命名以增加輸送量。使用硬體,處理器核心112動態地重命名用於目的地運算元之架構暫存器識別符。可藉由用於目的地運算元之相同的重命名之暫存器識別符來重命名具有與目的地運算元相同之架構暫存器識別符的來源運算元。
在一實施例中,處理器核心112包括控制邏輯,其偵測到早期管線階段中的儲存指令並至少緩衝相關聯的位址運算元識別符。早期管線階段可循序處理指令,然而在稍後管線階段中可無序發出及執行指令。給定儲存指令之位址運算元用於隨後執行管線階段中以產生儲存位址。位址運算元可包括用作基底暫存器ID之架構暫存器識別符(ID)及用作位移之即時運算值。
在早期管線階段中,處理器核心112內之控制邏輯可監視後續指令以判定此等指令中之一或多者是否修改給定儲存指令之一或多個位
址運算元。舉例而言,可發現位址運算元ID匹配一或多個後續指令中之目的地運算元ID。此監視可發生於無序發出之前的管線階段及執行管線階段中。
控制邏輯可針對給定儲存指令繼續監視後續指令,直至解除分配實體暫存器檔案中之對應的項目。可回應於相關聯之重命名之暫存器識別符自映射表移除並傳回至可用清單來解除分配此項目。舉例而言,在儲存指令之後(按程式次序)的指令可具有等於給定儲存指令之來源運算元識別符(源架構暫存器識別符)的目的地運算元識別符(目的地架構暫存器識別符)。當後續指令提交時,將先前分配至後續指令之目的地運算元之重命名之暫存器識別符置放於可用清單中以供另一指令再使用。此釋放的重命名之暫存器識別符為用於給定儲存指令之來源運算元的相同識別符。回應於偵測到上述條件,可終止對給定儲存指令之監視。立刻提供進一步細節及實例。
在一實施例中,在監視期間,控制邏輯可判定後續載入操作具有匹配的位址運算元作為給定儲存指令,且此等位址運算元尚未被介入指令修改。另外,控制邏輯可判定無具有相同位址運算元之其他儲存指令位於給定儲存指令與載入指令之間。換言之,給定儲存指令為具有位址運算元之最新的儲存指令。回應於此判定,可設定或確證此載入指令與給定儲存指令之間的RAW相依性之指示。在另一實施例中,可比較額外資訊(諸如,至少指令標籤及程式計數器值)或該額外資訊可用以索引預測表。控制邏輯可在此早期管線階段中預測RAW相依性存在於此載入指令與給定儲存指令之間。對此RAW相依性之判定或預測可發生於與暫存器重命名相同的管線階段中。或者,判定或預測可發生於比用於暫存器重命名之階段早的管線階段中。此處提供此RAW相依性之一實例:ADD r7,r3,r5
STORE [r10+4],r7 //位址運算元為r10及4。
MOV r12,r16
LOAD r14,[r10+4] //位址運算元為r10及4。
SUB r2,r6,r14 //對於r14,使用來自儲存操作的//來源運算元r7之轉遞資料。
ADD r11,r14,r13 //對於r14,使用來自儲存操作的//來源運算元r7之轉遞資料。
在此實例中,首先在指令助憶符之後列出目的地運算元,然後列出一或多個來源運算元。暫存器使用通用術語「r」,接著為暫存器識別符。舉例而言,由「r7」表示暫存器7。上述實例中之指令意圖係偽碼實例且與語言無關(language agnostic)。如上可見,載入指令具有與儲存指令相同的位址運算元。無介入指令修改位址運算元(r10)。
因此,控制邏輯可判定載入指令具有對儲存指令之RAW相依性。在其他實施例中,可使用預測合格性(prediction qualification),諸如,比較指令標籤(為了易於說明,其未展示)。
回應於判定或預測RAW相依性,可將載入指令之目的地運算元識別符(ID)(r14)重命名為用於儲存指令的來源運算元ID(r7)之相同的重命名之暫存器識別符。舉例而言,若將儲存指令之來源運算元ID(r7)重命名為重命名之暫存器識別符P44,則可將載入指令的目的地運算元ID(r14)重命名為相同的識別符(P44)。類似地,可將減法指令與最少加法指令中之每一者的來源運算元ID r14重命名為相同的重命名之暫存器識別符(P44)。
處理器核心112中的控制邏輯可無序發出載入指令及後續指令。在此情況下,減法指令與最後加法指令中之每一者可在載入指令之前、期間或之後不久發出,儘管載入指令尚未完成。若暫存器識別符r6與r13的來源運算元可用,則減法指令及最後加法指令可在發出(更
不用說完成)載入指令之前發出。此等指令可與自架構源暫存器ID r7轉遞的資料一起發出,該架構源暫存器ID r7為儲存指令之來源運算元ID。藉由使用暫存器重命名,可將待轉遞的資料儲存於藉由重命名之暫存器識別符P44識別之實體暫存器中,該重命名之暫存器識別符P44與源架構暫存器ID r7相關聯。因此,載入指令變為零循環操作。可在不存取記憶體(諸如,晶載多級快取層級與晶片外記憶體)之情況下完成載入指令。
若採用上述步驟並將載入指令轉換至零循環操作,則可增加管線之指令輸送量。因為較新(按程式次序)且取決於載入指令之指令並未等待針對載入指令而自資料快取記憶體、儲存緩衝器或晶片外記憶體擷取資料,所以指令輸送量可增加。相反,此等較新的、相關指令可自實體暫存器檔案接收資料。在繼續關於載入指令至零循環載入操作的轉換之另外細節之前,提供對電腦系統100中之組件之進一步描述。
除包括連接至相應快取記憶體子系統的一或多個處理器核心之外,微處理器110亦可包括介面邏輯118及記憶體控制器120。為了易於說明,未展示其他邏輯及區塊間通信及區塊內通信。微處理器110的所說明之功能性可併入於單個積體電路上。在另一實施例中,所說明之功能性併入於電腦主板上之晶片組中。在一些實施例中,微處理器110可包括於桌上型電腦或伺服器中。在又一實施例中,所說明之功能性併入於半導體晶粒中,其中其他處理器晶粒在晶片上系統(SOC)上。
處理器核心112可包括用於根據如先前描述的給定ISA執行指令之電路。在一實施例中,處理器核心112可包括用於處理給定ISA之指令之超標量多線程微架構。在一些實施例中,處理器核心為通用處理器核心。在各種其他實施例中,微處理器110可包括一或多個其他特
定核心,諸如,數位信號處理器(DSP)、圖形處理單元(GPU)、特殊應用積體電路(ASIC)等等。
快取記憶體子系統116可減少處理器核心112之記憶體延時。藉由快取記憶體子系統116所提供的額外記憶體達成之降低的缺失率幫助隱藏處理器核心112與晶片外記憶體之間的延時間隙。雖然處理器核心112與快取記憶體子系統116之間的延時小於晶片外記憶體之延時,但是若如較早先所描述將載入指令轉換至零循環載入操作,則可進一步減少此延時。
若發生快取未命中(諸如,在快取記憶體子系統116中未發現所請求之區塊),則可產生讀取請求並將其傳輸至記憶體控制器120。記憶體控制器120可轉譯對應於所請求區塊之位址並經由記憶體匯流排122發送讀取請求至揮發性晶片外DRAM 140。記憶體控制器120可包括用於介面連接至記憶體通道並遵循對應的協定之控制電路。另外,記憶體控制器120可包括用於佇列記憶體請求之請求佇列。晶片外DRAM 140可填滿來自晶片外記憶體隨身碟130之資料。晶片外記憶體隨身碟130可提供資料之非揮發性、隨機存取次級儲存。在一實施例中,晶片外記憶體隨身碟130可包括一或多個硬碟機(HDD)。在另一實施例中,晶片外記憶體隨身碟130利用固態磁碟(SSD)。
儘管出於說明之目的在電腦系統100中僅展示兩個周邊裝置,但是另一數目個周邊裝置可連接至微處理器110。周邊裝置150a-150b中之一或多者可為包括現代TV、電腦監視器、膝上型電腦或行動裝置監視器等等之顯示器。視訊圖形子系統可在顯示器與微處理器110之間使用。周邊裝置150a-150b中之一或多者可為通常利用之輸入/輸出裝置(諸如,鍵盤、滑鼠、印表機、數據機等等)中之一者。
現參看圖2,展示了說明處理器核心200之一實施例之概括方塊圖,該處理器核心200藉由零循環載入操作執行超標量無序執行。處
理器核心200可利用多級管線來處理指令。儘管以特定順序並以特定管階段展示功能區塊及控制區塊,但其他組合亦為可能及預期的。另外,功能區塊及控制區塊可佔據一個以上管階段。在多數情況下,為了易於說明,為每一功能性區塊展示單個管階段。
指令快取記憶體(i-cache)204可儲存用於軟體應用程式之指令。可自指令快取記憶體204獲取一或多個指令,其由位址選擇邏輯202所傳達的位址指示。若不存在指令快取記憶體未命中,則每時鐘循環可自指令快取記憶體204獲取多個指令。可藉由下一獲取預測器206增加位址。分支方向預測器208可耦接至稍後管線階段中的下一獲取預測器206及控制流程評估邏輯212中之每一者。預測器208可預測指令資訊,其改變自執行下一依序指令的指令串流之流動。
解碼單元210解碼多個所獲取指令之作業碼。或者,可將指令劃分為微操作。如本文中所使用,術語「指令」、「微操作」及「操作」可互換,此係因為本發明可供利用任一實施之架構使用。在一實施例中,控制流程評估區塊212可更改位址選擇器202中之指令之獲取。舉例而言,可將與無條件分支作業碼相關聯的絕對位址值發送至位址選擇器202。
重命名群組內相依性偵測邏輯214可發現由解碼單元210解碼之指令間的相依性。群組內指令可包括來自一或多個時鐘循環或管線階段之經解碼指令。可偵測諸如讀後寫入(WAR)、寫後寫入(WAW)及寫後讀取(RAW)之相依性。可產生指示指令之間的相依性之相依性向量。
相依性偵測邏輯可包括一記憶體相依性(MD)偵測器216。在一些實施例中,MD偵測器216可判定儲存對載入(STL)記憶體相依性。在此等實施例中,可使用表儲存用作給定儲存指令的位址運算元之基底暫存器ID及即時運算值(位移值)。另外,可儲存用於儲存指令之來源
運算元暫存器ID。對於較新(按程式次序)的指令,可將目的地運算元暫存器ID、位址運算元暫存器ID及即時運算值與表中儲存的值比較。
MD偵測器216可回應於判定滿足了某些條件來指示在較新的載入指令與給定儲存指令之間存在STL記憶體相依性。一個條件可為,較新的載入指令具有地址運算元暫存器ID及匹配儲存指令之位址運算元值的位址運算元即時運算值。第二條件可為,判定無介入指令針對給定儲存指令修改儲存於表中之值。第三條件可為,判定儲存指令為比具有匹配位址運算元的載入指令舊的最新儲存指令。MD偵測器216可儲存RAW相依性存在於載入指令與給定儲存指令之間的指示。
另外,MD偵測器216可發送指示至暫存器重命名單元220以藉由用於給定儲存指令之來源運算元暫存器ID之相同的重命名之暫存器識別符重命名載入指令之目的地運算元暫存器ID。在其他實施例中,編譯器可分析程式碼並執行上述步驟。若編譯器判定RAW相依性存在於較新的載入指令與給定儲存指令之間,則編譯器可在待由至少MD偵測器216偵測之程式碼中插入指示。資訊可包括確證的位元及給定儲存指令之來源運算元暫存器ID。或者,資訊可包括確證的位元及用以識別給定儲存指令之程式計數器(PC)位移。可使用其他資訊。
在又其他實施例中,MD偵測器216可包括用於STL記憶體相依性之預測器。在此等實施例中,MD偵測器216可索引具有至少與載入指令及儲存指令相關聯的程式計數器(PC)值之一或多個表。部分位址標籤及其他指令識別資訊亦可用以索引表。雜湊函數之輸出可用以索引預測表,該等預測表儲存飽和計數器或其他預測資訊。在一些實施例中,MD偵測器216可判定此等位址運算元尚未由介入指令修改。在其他實施例中,MD偵測器216可允許校正邏輯(諸如,飽和計數器)考量誤預測。自表讀出之資訊可用以識別推測之相依性。回應於判定推測式RAW記憶體相依性,MD偵測器216可儲存RAW相依性存在於給定
儲存指令與給定後續載入指令之間的指示。另外,MD偵測器216可發送指示至暫存器重命名單元220以藉由用於給定儲存指令之來源運算元暫存器ID的相同的重命名之暫存器識別符重命名載入指令之目的地運算元暫存器ID。在另外實施例中,可使用用於發現STL記憶體相依性之上述方法與機制之組合。
映射器218可使用諸如可用併發性、相依鏈之關鍵性及通信損失之因素在分散式硬體資源之間劃分指令。當硬體藉由實體暫存器識別符重命名架構暫存器識別符時,硬體在映射器218中儲存映射(其可為資料結構,諸如映射表)。如本文中所使用,用於架構暫存器或實體暫存器之識別符亦可被稱為編號。因此,架構暫存器識別符亦可被稱為架構暫存器編號。類似地,實體暫存器識別符可被稱為實體暫存器編號。用以重命名架構暫存器編號之實體暫存器編號亦可稱為重命名暫存器編號。
暫存器重命名單元220可包括重命名控制邏輯與陣列222及暫存器重複陣列(RDA)224。暫存器重命名單元220可判定使用哪些實體暫存器識別符來重命名用於指令內之目的地運算元及來源運算元兩者中之架構暫存器識別符。暫存器重命名單元可自可用清單分配器230或重命名控制邏輯222內之重命名映射表選擇候選實體暫存器識別符。
在各種實施例中,RDA 224經組態以儲存重複映射之指示。可在載入操作至零循環載入操作之轉換期間使用重複映射。
暫存器重命名單元220可自MD偵測器216接收載入指令有資格被轉換至零循環載入操作之指示。暫存器重命名單元220亦可將載入指令之目的地運算元暫存器ID指派至與用於載入操作所依賴的儲存指令之來源運算元暫存器ID相同之重命名暫存器識別符。映射器218可儲存重命名暫存器識別符的多個映射。另外,RDA 224可儲存重命名暫存器識別符的重複計數。舉例而言,在較早先程式碼實例中,重命名
暫存器識別符P44可用於儲存指令之來源運算元暫存器ID(r7)及載入指令之目的地運算元暫存器ID(r14)兩者。此重複計數可包括任何給定架構暫存器識別符已映射至相同重命名暫存器識別符之次數。
在各種實施例中,當特定架構暫存器在映射時已經映射至重命名暫存器編號時,可不針對映射增加重複計數。RDA 224可儲存重命名暫存器編號與相關聯的重複計數兩者。在一實施例中,RDA可實施為相對小的、帶標籤的、完全相關聯的結構。RDA 224可具有用於儲存重命名暫存器編號及相關聯的重複計數之任何數目個項目。在一個實例中,ISA之實施可包括144個實體暫存器編號,且因此,8位元實體暫存器索引可既儲存於RDA之項目中,又用以存取RDA。在一實施例中,每一重複計數大小為5位元。因此,給定實體暫存器編號之最大數目個重複為31。然而,另一重複計數大小可係可能的並可加以選擇。
可在處理器管線中的指令分派之前或在處理器管線中的指令分派之時更新RDA 224。當MD偵測器216判定經解碼之載入指令為零循環載入操作時,可存取RDA 224以判定是否已存在針對待用以重命名相關聯的儲存指令之來源運算元暫存器ID及載入指令之目的地運算元暫存器ID中的每一者之實體暫存器編號的項目。若項目存在,則每當當前未映射至給定重命名暫存器編號之任一給定架構暫存器ID經映射至給定重命名暫存器編號,可增加相關聯的重複計數。若RDA中尚未存在項目,則可分配項目且相關聯的重複計數可起始於二。
亦可在提交管線階段期間在處理器管線中更新RDA 224。每當實體暫存器識別符準備在指令提交期間傳回至任一給定架構暫存器的可用清單,可減少重複計數。實體暫存器識別符亦可被稱為重名為暫存器識別符。實體暫存器識別符可為回應於歸因於指令提交而使與實體暫存器識別符相關聯的映射表中之項目移除或失效而傳回至可用清單
之候選者。在一實施例中,回應於重複計數減少至一,可不再儲存重複計數及重複映射。
在一實施例中,回應於給定重命名暫存器識別符為在相關聯的指令提交期間傳回至可用清單之候選者,以及無相關聯之重複資訊儲存於RDA 224中,重命名暫存器識別符傳回至可用清單。在另一實施例中,回應於給定重命名暫存器識別符為傳回至可用清單的候選者以及將RDA 224中的儲存之重複計數減一至零,重命名暫存器識別符傳回至可用清單。
在一實施例中,回應於給定重命名暫存器識別符為傳回至可用清單的候選者以及儲存的重複計數在經減少之後仍然大於一,重命名暫存器識別符不傳回至可用清單。在此最後情況下,重命名暫存器識別符仍具有至多個架構暫存器之重複映射。在一實施例中,針對每一潛在零循環載入候選者檢查RDA 224以確保存在自由用於追蹤重複之項目。若不存在自由用於RDA 224內之分配的項目,則不將對應的載入指令轉換至零循環載入操作。類似地,若存在用於零循環載入候選者之經分配項目,但重複計數已飽和,則不將載入指令轉換至零循環載入操作。
對於零循環載入操作,資料內容可自儲存用於儲存指令來源運算元的實體暫存器檔案內之實體暫存器轉遞至後續載入指令,並轉遞至其他較新的相依指令。不可自資料快取記憶體、儲存緩衝器或晶片外記憶體讀取資料。可發出較新的相依指令,而不等待自資料快取記憶體、儲存緩衝器或晶片外記憶體讀取資料。
在已解碼及重命名指令之後,可將相關聯的項目分配於分派佇列240中。可將指令及相關聯的重命名之識別符、程式計數器(PC)值、相依性向量、完成標記等等發送至分派佇列240並稍後發送至排程器250。可諸如藉由執行核心260偵測各種異常。實例包括記憶體存
取之保護異常、無位址轉譯等等。異常可導致執行對應的異常處置常式,諸如,藉由微碼242。
排程器250可排程用於在執行核心260中執行之指令。當運算元可用且硬體資源亦可用時,可自排程器250無序發出指令至執行核心260內之功能單元中之一者。排程器250可自實體暫存器檔案(未圖示)(在藉由映射表轉譯重命名之識別符之後)或自運算元旁路邏輯讀取其來源運算元。來源運算元可提供至執行核心260。執行核心260可解析載入指令及儲存指令之位址。另外,執行核心260可執行多個整數運算、浮點運算及布林運算(Boolean operation)中之一或多者。
執行核心260可包括載入/儲存單元。載入/儲存單元可直接或者經由重排序緩衝器(rob)270連接至資料快取記憶體(未圖示)及儲存緩衝器272。處理器200可包括用於指令快取記憶體204及資料快取記憶體中之每一者的轉譯後備緩衝器(TLB),以避免在執行快取存取時執行完全記憶體轉譯之成本。儲存緩衝器272可儲存對應於儲存指令之位址。rob 270可接收來自執行核心260之結果。另外,對於轉遞至已在管線中的相依指令之資料,結果可繞道至先前管線階段。rob 270可確保指令之循序提交及淘汰。
現參看圖3,展示用於偵測零循環載入操作之方法300的一實施例之概括流程圖。在區塊302中,處理程式指令。可編譯指令、自記憶體獲取指令、解碼及執行指令。在解碼之後,若偵測到給定指令為儲存指令(條件區塊304),則在區塊306中,緩衝至少位址運算元基底暫存器ID、位址運算元即時運算值及儲存指令之來源運算元暫存器ID。該等值儲可存於給定表中。亦可緩衝相關聯的程式計數器(PC)及其他資訊。在一實施例中,在記憶體相依性(MD)偵測器內之表中緩衝此資訊。
在區塊308中,針對與先前(按程式次序)儲存指令的經緩衝資訊
之潛在匹配監視後續(按程式次序)指令的資訊。用於比較的資訊可包括至少後續指令之目的地運算元暫存器ID及後續載入指令之位址運算元基底暫存器ID及即時運算值。控制邏輯可偵測與給定儲存指令相關聯的暫存器ID及與後續指令相關聯的暫存器ID之間的匹配。暫存器ID可為用以識別運算元之架構暫存器ID。
儲存指令之位址運算元基底暫存器之修改可為基於即時運算值的更新。使用較早的程式碼實例,加法指令可跟在儲存指令後(按程式次序),諸如,ADD r10,r10,#4。符號「#」可用以指示即時運算值資料運算元。修改儲存指令之位址運算元基底暫存器r10。然而,該修改為基於即時運算值的修改。若未藉由在載入指令與儲存指令之間的介入指令對位址運算元基底暫存器r10進行不同於基於即時運算值的修改之其他類型修改,則可在表內執行調整以考量基於即時運算值的修改。若偵測到待修改給定儲存指令之位址運算元基底暫存器(條件區塊310)且該修改係基於即時運算值更新(條件區塊311),則在區塊313中,更新針對給定儲存指令的表中之特定儲存值。舉例而言,可更新所儲存的位址運算元即時運算值。使用以上實例,針對給定儲存指令的表內之所儲存即時運算值4可在表內減少4,其為由ADD指令使用之即時運算值。在其他實例中,位址運算元基底暫存器可減少而非增加,且表內儲存的即時運算值可相應增加。若修改不基於即時運算值更新(條件區塊311),則在區塊312中,儲存對應於給定儲存指令之值的表項目可失效。此後,方法300之控制流程可經由區塊A返回至區塊302。
若偵測到待修改給定儲存指令之來源運算元(條件區塊314)且已淘汰儲存指令(條件區塊316),則方法300之控制流程移動至區塊312。為說明此情況,此處提供與儲存指令的來源運算元之修改的記憶體相依性及競爭條件之另一程式碼實例:
ADD r7,r3,r5
STORE [r10+4],r7 //位址運算元為r10與4。
ADD r19,r24,r18
ADD r7,r20,r21 //儲存操作來源運算元經修改。
LOAD r14,[r10+4] //位址運算元為r10與4。
SUB r2,r6,r14 //對於r14,使用來自儲存操作的來源運算元//r7之轉遞資料。
ADD r7,r14,r13 //對於r14,使用來自儲存操作的來源運算元//r7之轉遞資料。
ADD r14,r22,r25 //載入操作目的地運算元經覆寫。在提交//階段期間,將r7與r14共用之實體暫存器//編號傳回至可用清單。
類似於較早先的程式碼實例,在以上實例中,載入指令具有對儲存指令之記憶體相依性。在此情況下,第三加法指令修改儲存指令之來源運算元(r7)。在將與來源運算元(r7)相關聯的經重命名暫存器識別符標記為重複之載入指令與提交相同重命名暫存器識別符並使其傳回至可用清單的第三加法指令之間的管線中可存在競爭條件。至載入指令將此重命名暫存器識別符標記為重複之時,重命名暫存器識別符可已在朝向可用清單傳播之歷史檔案中。
用於處置以上情況之一選項為偵測到介入指令(諸如,第三加法指令)。修改儲存指令之來源運算元,且作為回應,使載入指令失去轉換至零循環載入操作之資格。用於處置以上情況之另一選項為偵測到介入指令修改儲存指令的來源運算元,且作為回應,判定是否已淘汰儲存指令。若尚未淘汰儲存指令,則尚未淘汰介入指令。因此,介入指令尚未使與儲存指令的來源運算元相關聯之重命名暫存器識別符傳回至可用清單。現可維持此重命名暫存器識別符之重複計數。類似
地,歸因於以上程式碼實例中之最後的加法指令,可針對載入指令之目的地運算元(r14)增加重複計數。
返回至方法300,若偵測到待修改給定儲存指令之來源運算元(條件區塊314)且尚未淘汰儲存指令(條件區塊316),則判定載入指令是否可具有對給定儲存指令之記憶體相依性。類似地,若未偵測到待修改給定儲存指令之來源運算元(條件區塊314),則判定載入指令是否可具有對給定儲存指令之記憶體相依性。注意,在一些實施例中,可同時評估條件區塊310、314及318中之每一者。舉例而言,控制邏輯及表可同時接收與後續指令相關聯之輸入。
在一實施例中,藉由與載入指令相關聯之資訊存取記憶體相依性(MD)偵測器。如較早先所描述,MD偵測器可包括保持待與後續指令比較的特定儲存指令之資訊的表。或者,MD偵測器可包括用於偵測來自編譯器之提示資訊之控制邏輯。MD偵測器亦可包括一STL預測器。另外,MD偵測器可包括此等替代性設計選擇之組合。回應於存取MD偵測器,控制邏輯與儲存給定儲存指令與其他儲存指令的值之表兩者可產生指示在載入指令與給定儲存指令之間存在記憶體相依性之結果。舉例而言,在一實施例中,位址運算元基底暫存器ID與針對載入指令與給定儲存指令中的每一者之即時運算值可匹配。另外,可判定儲存指令為比具有匹配位址運算元的載入指令舊的最新儲存指令。若判定載入指令係取決於給定儲存指令(條件區塊318),則在區塊320中,可將載入指令作為零循環載入指令處理。接下來,提供處理零循環載入指令之另外細節。
現參看圖4,展示了用於處理零循環載入操作之方法400的一實施例之概括流程圖。在區塊402中,可判定給定載入指令係取決於較舊(按程式次序)的儲存指令。給定載入指令可有資格轉換為零循環載入指令。如先前所述,一個條件可為,較新的載入指令具有地址運算
元暫存器ID及匹配儲存指令之位址運算元值的位址運算元即時運算值。第二條件可為,判定無介入指令修改針對給定儲存指令的儲存於所存取的表中之值(諸如,位址運算元及來源運算元)。第三條件可為,判定儲存指令為比具有匹配位址運算元的載入指令舊的最新儲存指令。第四條件可為,可用重複資源之指示。舉例而言,儲存指令的來源運算元暫存器ID之重命名暫存器編號可用以索引至資料結構(諸如,RDA 224)中。在其他實施例中,STL記憶體相依性預測器及/或來自編譯器之提示資訊可用以指示載入指令與給定儲存指令之間的RAW相依性。
RDA 224中之命中可指示源重命名之暫存器識別符已經重複。未命中可指示源重命名之暫存器識別符尚未重複。若源重命名之暫存器識別符尚未重複且RDA 224尚未滿,則可針對源重命名之暫存器識別符分配RDA 224中之項目。若源重命名之暫存器識別符已經重複,則可將源重命名之暫存器識別符之重複計數與給定臨限值比較。在一實施例中,臨限值可對應於一特定計數。若相關聯的重複計數尚未達到臨限值,則重複資源可用。若相關聯的重複計數已達到臨限值,則重複資源不可用。
若重複資源不可用(條件區塊404),則在區塊406中,藉由來自可用清單之重命名暫存器識別符重命名用於載入指令之目的架構暫存器。可將重命名之識別符、相關聯的程式計數器(PC)值、相依性向量等等發送至分派佇列且隨後發送至排程器。在區塊408中,可處理下一個可用指令。可與上述步驟並行或在後續時鐘循環中處理下一個可用指令。
若重複資源不可用(條件區塊404),則在區塊410中,藉由用於最新的較舊相依儲存指令的來源運算元之重命名之暫存器ID重命名載入指令之目的地運算元識別符(ID)。在區塊412中,更新對實體暫存器
之重複計數。每當將當前未映射至選定重命名暫存器識別符之給定架構暫存器識別符映射至此重命名暫存器識別符時,可增加重複計數。在一實施例中,重複計數可起始於值二。
可將用於載入指令及一或多個其他指令的重命名之識別符發送至分派佇列且稍後發送至排程器。亦可發送相關聯的程式計數器(PC)值、相依性向量等等。在一實施例中,將RAW相依性視為確定的且可將載入指令標記為完成。舉例而言,如方法300中所描述,存取MD偵測器中之表可視為具有不確定性,且因此,不由稍後的管線階段進一步處理載入指令。在其他實施例中,不將載入指令與儲存指令之間的RAW相依性視為不具有不確定性。因此,不將載入指令標記為完成且其進一步由稍後的管線階段處理。在區塊414中,當未標記為完成時,在管線中發出包括載入指令之一或多個指令。在區塊416中,可驗證儲存指令與載入指令之間的記憶體相依性。舉例而言,可執行藉由經解析之位址及其他指令識別資訊對儲存緩衝器的存取。
若發現記憶體相依性係不正確的(條件區塊418),則在區塊420中,可自管線清除載入指令及比載入指令新(按程式次序)的指令。接著可重新執行載入指令。若發現所預測的記憶體相依性為正確的(條件區塊418),則在區塊422中,載入指令在管線中前進至提交管線階段,而不自晶片上快取層級、儲存緩衝器或晶片外記憶體讀取與來源運算元相關聯之資料。取決於載入指令的較新指令可繼續自與對應的儲存指令的來源運算元相關聯之實體暫存器檔案接收的轉遞資料。
現參看圖5,展示了用於提交包括零循環載入操作的指令之方法500的一實施例之概括流程圖。出於論述之目的,以相繼順序展示此實施例及較早先所描述之方法300及方法400的後續實施例中之步驟。
然而,在其他實施例中,一些步驟可以與所示次序不同之次序發生,一些步驟可同時執行,一些步驟可與其他步驟組合,且可缺少一些步
驟。
在區塊502中,正提交程式指令。資料結構內的指令之循序窗口可用以判定何時提交及淘汰指令。舉例而言,rob 270可用作資料結構。當偵測到提交記憶體指令時,可執行檢查以判定是否重複相關聯的重命名暫存器識別符。在一實例中,指示目的實體暫存器及源實體暫存器中之每一者的重複狀態之相關聯的重複旗標或欄位可與用於指令之其他相關聯資訊一起儲存。在另一實例中,目的重命名暫存器識別符及源重命名暫存器識別符中之每一者可用以索引至資料結構(諸如,RDA 224)中。命中可指示對應的重命名暫存器識別符已經重複。未命中可指示對應的重命名暫存器識別符尚未重複。
若給定重命名暫存器識別符未重複(條件區塊504),則在區塊506中,重命名暫存器識別符傳回至可用清單。否則,在區塊508中,可減少對應的重命名暫存器識別符之重複計數。大體言之,每當相關聯的重命名暫存器識別符準備傳回至針對任何給定架構暫存器的可用清單時,減少重複計數。回應於自映射表移除映射,可判定重命名暫存器識別符準備傳回至可用清單。通常,回應於自映射表移除映射,重命名暫存器識別符傳回至可用清單。然而,藉由歸因於零循環載入操作的在映射表中之重複映射,在至可用清單之任何傳回之前,可檢驗資料結構(諸如RDA 224)。
在減少重複計數之後,若重命名暫存器識別符仍然重複(條件區塊510),則在區塊512中,可將重命名暫存器識別符標記為仍然重複,且其不傳回至可用清單。舉例而言,資料結構中之有效項目(諸如,RDA 224)可仍然存在,其中重複計數大於一。
在減少重複計數之後,若重命名暫存器識別符仍未重複(條件區塊510),則在區塊514中,可將重命名暫存器識別符標記為經映射但未重複。舉例而言,資料結構(諸如,RDA 224)中之相關聯項目可失
效。或者,可仍然存在有效項目,具有重複計數一。重命名暫存器識別符不傳回至可用清單。
儘管上文已相當詳細地描述了實施例,但熟習此項技術者一旦完全瞭解以上揭示內容便將明顯看出眾多變化及修改。希望將以下申請專利範圍解釋為涵蓋所有此等變化及修改。
400‧‧‧用於處理零循環載入操作之方法
Claims (20)
- 一種處理器,其包含:一記憶體相依性偵測器,其經組態以判定一載入指令對一儲存指令之一記憶體相依性,其中該儲存指令包含一來源暫存器識別符(ID)及一儲存位址之一識別(identification),該載入指令包含一來源位址之一識別及一目的地暫存器ID;及一暫存器重命名單元,其經組態以將一重命名暫存器ID映射至該儲存指令之該目的地暫存器ID;其中回應於接收到該經判定之記憶體相依性之一指示且判定滿足資格條件,該暫存器重命名單元經組態以:將該重命名暫存器ID映射至該載入指令之該目的地暫存器ID;及防止該載入指令讀取與該載入指令之該來源位址相關聯之資料。
- 如請求項1之處理器,其中為防止該載入指令讀取與該來源位址相關聯之資料,在以下操作中之至少一者之後該載入指令經指示為已完成:判定該記憶體相依性及將該記憶體相依性驗證為正確。
- 如請求項2之處理器,其中回應於將該重命名暫存器ID映射至該載入指令之該目的地暫存器ID,該暫存器重命名單元經組態以儲存與該重命名暫存器ID相關聯之一重複計數,該重複計數指示該重命名暫存器ID被映射至多於一個暫存器。
- 如請求項3之處理器,其中判定該滿足資格條件包含至少判定在該儲存指令與該載入指令之間無介入(intervening)指令來修改與該儲存指令之該來源位址相關聯的資料。
- 如請求項3之處理器,其中該暫存器重命名單元經進一步組態以:偵測到準備提交具有映射至該暫存器重命名ID的一目的地暫存器ID之一指令;及回應於判定該重命名暫存器ID被映射至多於一個暫存器,防止該重命名暫存器ID傳回至一可用清單。
- 如請求項5之處理器,其中經偵測為準備提交之該指令為以下中之至少一者:該載入指令、該儲存指令及按程式次序在該載入指令與該儲存指令之間的一指令。
- 如請求項3之處理器,其中該暫存器重命名單元經進一步組態以每當將當前未映射至該重命名暫存器ID之一架構暫存器ID映射至該重命名暫存器ID,增加該重複計數。
- 如請求項5之處理器,其中該處理器進一步包含一載入/儲存單元,其經組態以回應於判定該記憶體相依性不正確,重新執行該載入指令及按程式次序比該載入指令新之程式指令。
- 如請求項5之處理器,其中該處理器進一步包含一實體暫存器檔案,其經組態以將與該儲存指令的一來源運算元相關聯之資料轉遞至比該載入指令更相依於該載入指令之指令。
- 一種方法,其包含:偵測一載入指令對一儲存指令之一記憶體相依性,其中該儲存指令包含一來源暫存器識別符(ID)及一儲存位址之一識別,該載入指令包含一來源位址之一識別及一目的地暫存器ID;將一重命名暫存器ID映射至該儲存指令之該目的地暫存器ID;回應於接收到該記憶體相依性之一指示且判定滿足資格條 件:將該重命名暫存器ID映射至該載入指令之該目的地暫存器ID;及防止該載入指令讀取與該載入指令之該來源位址相關聯之資料。
- 如請求項10之方法,其中為防止該載入指令讀取與該來源位址相關聯之資料,該方法進一步包含在以下操作中之至少一者之後指示該載入指令已完成:判定該記憶體相依性及將該記憶體相依性驗證為正確。
- 如請求項11之方法,其中回應於將該重命名暫存器ID映射至該載入指令之該目的地暫存器ID,該方法進一步包含儲存與該重命名暫存器ID相關聯之一重複計數,該重複計數指示該重命名暫存器ID被映射至多於一個暫存器。
- 如請求項12之方法,其中判定該滿足資格條件包含至少判定:在該儲存指令與該載入指令之間的無介入指令來修改與該儲存指令之該來源位址相關聯的資料。
- 如請求項13之方法,其進一步包含發出較新(按程式次序)的及取決於該載入指令的指令。
- 如請求項14之方法,其中判定該記憶體相依性包含判定該儲存指令及該載入指令具有針對一位址運算元基底暫存器ID及一位址運算元即時運算值之匹配值。
- 如請求項15之方法,其中回應於判定一介入指令藉由一即時運算值更新修改該儲存指令之一位址運算元基底暫存器,該方法進一步包含在判定與該載入指令之該記憶體相依性之前,調整用於該儲存指令之該位址運算元即時運算值之一儲存值。
- 如請求項13之方法,其進一步包含: 偵測到準備提交具有映射至該暫存器重命名ID的一目的地暫存器ID之一指令;及回應於判定該重命名暫存器ID被映射至多於一個暫存器,防止該重命名暫存器ID傳回至一可用清單。
- 如請求項17之方法,其進一步包含每當將當前未映射至該重命名暫存器ID之任何給定架構暫存器ID映射至該重命名暫存器ID,增加該重複計數。
- 一種暫存器重命名單元,其包含:一第一介面,其經組態以接收經解碼之指令,該等經解碼之指令包括一載入指令及一儲存指令,其中該儲存指令包含一來源暫存器識別符(ID)及一儲存位址之一識別(identification),該載入指令包含一來源位址之一識別及一目的地暫存器ID;至一分派單元之一第二介面,該分派單元經組態以將指令分派至一排程器;零循環載入邏輯,其中回應於接收到該載入指令對該儲存指令之一記憶體相依性之一指示且判定滿足資格條件,該邏輯經組態以:將該重命名暫存器ID映射至該載入指令之該目的地暫存器ID;及防止該給定載入指令讀取與該載入指令之該來源位址相關聯之資料。
- 如請求項19之暫存器重命名單元,其中判定滿足該資格條件包含至少判定:在該儲存指令與該載入指令之間無介入指令來修改與該儲存指令之該來源位址相關聯的資料。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/517,865 US9996348B2 (en) | 2012-06-14 | 2012-06-14 | Zero cycle load |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201411485A TW201411485A (zh) | 2014-03-16 |
TWI537824B true TWI537824B (zh) | 2016-06-11 |
Family
ID=48607065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102120951A TWI537824B (zh) | 2012-06-14 | 2013-06-13 | 零循環載入 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9996348B2 (zh) |
EP (1) | EP2674856B1 (zh) |
JP (1) | JP5894120B2 (zh) |
KR (1) | KR101497807B1 (zh) |
CN (1) | CN103514009B (zh) |
BR (1) | BR102013014996B1 (zh) |
TW (1) | TWI537824B (zh) |
WO (1) | WO2013188120A2 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101449256B (zh) | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
EP2616928B1 (en) | 2010-09-17 | 2016-11-02 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
WO2012162188A2 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
CN108427574B (zh) | 2011-11-22 | 2022-06-07 | 英特尔公司 | 微处理器加速的代码优化器 |
US9047092B2 (en) * | 2012-12-21 | 2015-06-02 | Arm Limited | Resource management within a load store unit |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9311084B2 (en) * | 2013-07-31 | 2016-04-12 | Apple Inc. | RDA checkpoint optimization |
US9940229B2 (en) * | 2013-12-17 | 2018-04-10 | Intel Corporation | Technologies for persistent memory programming |
US11068271B2 (en) | 2014-07-28 | 2021-07-20 | Apple Inc. | Zero cycle move using free list counts |
CN106648546A (zh) * | 2016-09-07 | 2017-05-10 | 北京大学 | 用于gpu寄存器分配和并行度管理的协同优化编译方法 |
US11175923B2 (en) * | 2017-02-13 | 2021-11-16 | International Business Machines Corporation | Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions |
US10261791B2 (en) * | 2017-02-24 | 2019-04-16 | International Business Machines Corporation | Bypassing memory access for a load instruction using instruction address mapping |
US10838729B1 (en) | 2018-03-21 | 2020-11-17 | Apple Inc. | System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction |
CN108614736B (zh) | 2018-04-13 | 2021-03-02 | 杭州中天微系统有限公司 | 实现资源索引替换的装置及处理器 |
US11593117B2 (en) * | 2018-06-29 | 2023-02-28 | Qualcomm Incorporated | Combining load or store instructions |
GB2577502B (en) * | 2018-09-26 | 2021-09-08 | Advanced Risc Mach Ltd | An apparatus and method for processing instructions |
CN111258653B (zh) * | 2018-11-30 | 2022-05-24 | 上海寒武纪信息科技有限公司 | 原子访存方法、存储介质、计算机设备、装置和系统 |
US11200062B2 (en) | 2019-08-26 | 2021-12-14 | Apple Inc. | History file for previous register mapping storage and last reference indication |
US11416254B2 (en) | 2019-12-05 | 2022-08-16 | Apple Inc. | Zero cycle load bypass in a decode group |
US11294683B2 (en) | 2020-03-30 | 2022-04-05 | SiFive, Inc. | Duplicate detection for register renaming |
US11966328B2 (en) * | 2020-12-18 | 2024-04-23 | Advanced Micro Devices, Inc. | Near-memory determination of registers |
US11900118B1 (en) * | 2022-08-05 | 2024-02-13 | Apple Inc. | Stack pointer instruction buffer for zero-cycle loads |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3852432T2 (de) | 1987-07-01 | 1995-07-13 | Ibm | Befehlssteuerungsvorrichtung für ein Computersystem. |
DE69311330T2 (de) | 1992-03-31 | 1997-09-25 | Seiko Epson Corp | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
US5799179A (en) | 1995-01-24 | 1998-08-25 | International Business Machines Corporation | Handling of exceptions in speculative instructions |
US5751983A (en) | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
US5926646A (en) | 1997-09-11 | 1999-07-20 | Advanced Micro Devices, Inc. | Context-dependent memory-mapped registers for transparent expansion of a register file |
US6065103A (en) | 1997-12-16 | 2000-05-16 | Advanced Micro Devices, Inc. | Speculative store buffer |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6094716A (en) | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
US6122656A (en) * | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
JP3497087B2 (ja) | 1998-12-17 | 2004-02-16 | 富士通株式会社 | 命令制御装置及びその方法 |
EP1050806A1 (en) | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Memory access address comparison |
US6505293B1 (en) * | 1999-07-07 | 2003-01-07 | Intel Corporation | Register renaming to optimize identical register values |
US6662280B1 (en) | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
US7028166B2 (en) | 2002-04-30 | 2006-04-11 | Advanced Micro Devices, Inc. | System and method for linking speculative results of load operations to register values |
US7165167B2 (en) | 2003-06-10 | 2007-01-16 | Advanced Micro Devices, Inc. | Load store unit with replay mechanism |
US7111126B2 (en) | 2003-09-24 | 2006-09-19 | Arm Limited | Apparatus and method for loading data values |
US7263600B2 (en) * | 2004-05-05 | 2007-08-28 | Advanced Micro Devices, Inc. | System and method for validating a memory file that links speculative results of load operations to register values |
KR20070019750A (ko) * | 2004-05-05 | 2007-02-15 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 로드 동작의 투기적인 결과들을 레지스터 값들에 연결하는메모리 파일을 유효화하기 위한 시스템 및 그 방법 |
FR2873466A1 (fr) | 2004-07-21 | 2006-01-27 | St Microelectronics Sa | Procede de programmation d'un controleur de dma dans un systeme sur puce et systeme sur puce associe |
US8612944B2 (en) | 2008-04-17 | 2013-12-17 | Qualcomm Incorporated | Code evaluation for in-order processing |
US8533438B2 (en) | 2009-08-12 | 2013-09-10 | Via Technologies, Inc. | Store-to-load forwarding based on load/store address computation source information comparisons |
US8631225B2 (en) | 2010-06-25 | 2014-01-14 | International Business Machines Corporation | Dynamically rewriting branch instructions to directly target an instruction cache location |
-
2012
- 2012-06-14 US US13/517,865 patent/US9996348B2/en active Active
-
2013
- 2013-05-30 WO PCT/US2013/043318 patent/WO2013188120A2/en active Application Filing
- 2013-06-04 EP EP13170357.1A patent/EP2674856B1/en active Active
- 2013-06-13 TW TW102120951A patent/TWI537824B/zh active
- 2013-06-13 KR KR1020130068008A patent/KR101497807B1/ko active IP Right Grant
- 2013-06-14 JP JP2013125333A patent/JP5894120B2/ja active Active
- 2013-06-14 BR BR102013014996-9A patent/BR102013014996B1/pt active IP Right Grant
- 2013-06-14 CN CN201310236291.XA patent/CN103514009B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP2674856B1 (en) | 2019-08-21 |
EP2674856A3 (en) | 2014-07-23 |
US20130339671A1 (en) | 2013-12-19 |
WO2013188120A3 (en) | 2014-03-06 |
BR102013014996A2 (pt) | 2015-08-11 |
CN103514009A (zh) | 2014-01-15 |
KR101497807B1 (ko) | 2015-03-02 |
TW201411485A (zh) | 2014-03-16 |
CN103514009B (zh) | 2019-10-08 |
US9996348B2 (en) | 2018-06-12 |
EP2674856A2 (en) | 2013-12-18 |
WO2013188120A2 (en) | 2013-12-19 |
KR20130140582A (ko) | 2013-12-24 |
JP5894120B2 (ja) | 2016-03-23 |
JP2014002735A (ja) | 2014-01-09 |
BR102013014996B1 (pt) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI537824B (zh) | 零循環載入 | |
US10664275B2 (en) | Speeding up younger store instruction execution after a sync instruction | |
US9575754B2 (en) | Zero cycle move | |
US9311084B2 (en) | RDA checkpoint optimization | |
CN106648843B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
US9448936B2 (en) | Concurrent store and load operations | |
US5751983A (en) | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations | |
US7263600B2 (en) | System and method for validating a memory file that links speculative results of load operations to register values | |
US8335912B2 (en) | Logical map table for detecting dependency conditions between instructions having varying width operand values | |
US20110238962A1 (en) | Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors | |
US10338928B2 (en) | Utilizing a stack head register with a call return stack for each instruction fetch | |
US20100274961A1 (en) | Physically-indexed logical map table | |
US11068271B2 (en) | Zero cycle move using free list counts | |
US10073789B2 (en) | Method for load instruction speculation past older store instructions | |
US10310859B2 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
US10838729B1 (en) | System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction | |
US20130138888A1 (en) | Storing a target address of a control transfer instruction in an instruction field | |
CN113535236A (zh) | 基于指令集体系结构的和自动的加载跟踪的方法和装置 | |
CN117270971B (zh) | 加载队列控制方法、装置及处理器 | |
US7937569B1 (en) | System and method for scheduling operations using speculative data operands | |
US10579384B2 (en) | Effective address based instruction fetch unit for out of order processors | |
KR20230023710A (ko) | 명령어 재실행을 감소시키기 위한, 프로세서의 위험에 응답한 명령어 파이프라인 플러시 후 실행되고 플러시된 명령어의 재사용 |