TWI529617B - 載入儲存相依性預測器內容管理 - Google Patents
載入儲存相依性預測器內容管理 Download PDFInfo
- Publication number
- TWI529617B TWI529617B TW104113982A TW104113982A TWI529617B TW I529617 B TWI529617 B TW I529617B TW 104113982 A TW104113982 A TW 104113982A TW 104113982 A TW104113982 A TW 104113982A TW I529617 B TWI529617 B TW I529617B
- Authority
- TW
- Taiwan
- Prior art keywords
- item
- given
- load
- storage
- identifier
- Prior art date
Links
- 238000003860 storage Methods 0.000 claims description 108
- 230000015654 memory Effects 0.000 claims description 81
- 238000000034 method Methods 0.000 claims description 27
- 230000001419 dependent effect Effects 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 19
- 238000013507 mapping Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 239000002131 composite material Substances 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000012163 sequencing technique Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 230000009849 deactivation Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000013598 vector Substances 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/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
-
- 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/3842—Speculative instruction execution
-
- 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/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
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)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明大體係關於處理器,且詳言之,係關於用於管理處理器中之載入儲存相依性之方法及機制。
超純量處理器藉由每時脈循環發出並執行多個指令及藉由使用與設計一致的最高可能時脈頻率來嘗試達成高效能。增加每一時脈循環執行的指令之數目的一種方式為藉由執行無序執行。在無序執行中,指令可以不同於程式序列(或「程式次序」)中指定之次序的次序來執行。
一些處理器可儘可能積極無序地及/或推測性地排程指令以嘗試使實現之效能增益最大化。舉例而言,可能需要在較舊儲存記憶體操作之前排程載入記憶體操作,此係由於載入記憶體操作更通常具有相依指令。然而,在一些狀況下,載入記憶體操作可相依一較舊儲存記憶體操作(例如,儲存記憶體操作更新由載入記憶體操作存取之至少一位元組)。在此等狀況下,若在儲存記憶體操作之前執行,則不正確地執行載入記憶體操作。若載入記憶體操作在相依之較舊儲存記憶體操作之前執行,則處理器可能需要被清空及重定向,其將降級處理器效能。
若在程式次序中一操作在其他操作之前,則該操作比另一操作
舊。若在程式次序中一操作在其他操作之後,則該操作比另一操作新。類似地,操作可指示為在其他操作前或後,或可被稱作先前操作、前面操作、隨後操作等。此等參考可指操作之程式次序。此外,「載入記憶體操作」或「載入操作」可指將資料自記憶體或快取記憶體轉移至處理器,且「儲存記憶體操作」或「儲存操作」可指代將資料自處理器轉移至記憶體或快取記憶體。「載入操作」及「儲存操作」可在本文中分別更簡潔地被稱作「載入」及「儲存」。
雖然載入與儲存之間的相依性係動態的,但防止此等事件之機制通常性質上為靜態的。因此,在努力防止載入儲存對之無序違規過程中,處理器更可能過度補償且不積極地無序排程。在此狀況下,處理器將迫使指令不必要按次序。若相依性不再被需要但被強迫,則記憶體級並行性將減少且處理器效率降低。
預期用於預測載入儲存相依性之系統、裝置、處理器及方法。一處理器可包括至少一分派單元、載入儲存相依性預測器及一保留站。當偵測到較新載入與一相依之較舊儲存之間的定序違規時,此構成載入儲存相依性之預測器之訓練事件。在已訓練載入儲存對之後,預測器可在下一次載入經過分派單元時將一相依性添加至載入。此添加之相依性指示直至儲存已經排程,方應在保留站外排程載入。
在一實施例中,可利用預測器表儲存已經發現為相依之載入儲存對。當較新載入在共用位址相依性的一較舊儲存之前發出時,一項目可經分配於預測器表中,且在一實施例中,該項目可與用於儲存的儲存程式計數器(PC)之至少一部分及用於相依載入的載入PC值之至少一部分相關聯。預測器表中之每一項目亦可包括一計數器欄位,且該計數器欄位可表示彼特定載入儲存對的資料相依性預測之強度。計數器欄位允許預測之相依性在其過時或不再有效時關斷。
計數器欄位之值亦可影響預測器表之替換策略。替換指標可不斷地掃描預測器之項目並尋找具有低計數器值之項目。在一實施例中,每當存取預測器表時,替換指標可前進。當替換指標發現具有零計數器值之一項目時,則指標可停止於此項目處。當一新項目經分配用於一新的相依載入儲存對時,則具有由指標指示之等於零的計數器之現有項目可用於該新項目。
鑒於本文中呈現之方法的以下詳細描述,對於一般熟習此項技術者而言,此等及其他特徵及優點將變得顯而易見。
10‧‧‧積體電路(IC)
12‧‧‧複合處理器
14‧‧‧中央處理單元(CPU)
16‧‧‧中央處理單元(CPU)
18‧‧‧二級(L2)快取記憶體
20‧‧‧匯流排介面單元(BIU)
22‧‧‧記憶體控制器
24‧‧‧記憶體實體介面電路(PHY)
26‧‧‧記憶體實體介面電路(PHY)
30‧‧‧核心
32‧‧‧提取及解碼(FED)單元
34‧‧‧一級(L1)指令快取記憶體
36‧‧‧映射/分派單元
37‧‧‧載入儲存相依性(LSD)預測器
38‧‧‧重定序緩衝器(ROB)
40‧‧‧記憶體管理單元(MMU)
42‧‧‧核心介面單元(CIF)
44‧‧‧執行單元
46‧‧‧載入儲存單元(LSU)
48‧‧‧L1資料快取記憶體
50‧‧‧保留站
52‧‧‧保留站
54‧‧‧儲存佇列
56‧‧‧載入佇列
60‧‧‧映射/分派單元
62‧‧‧暫存器映射器
64‧‧‧重定序緩衝器(ROB)
66‧‧‧載入儲存相依性(LSD)預測器
68‧‧‧分派單元
70A‧‧‧保留站
70N‧‧‧保留站
90‧‧‧表
92‧‧‧有效指示符
94‧‧‧儲存PC值
96‧‧‧儲存RNUM
98‧‧‧供給之位元
100‧‧‧載入PC值
102‧‧‧計數器欄位/計數器/計數器值
110‧‧‧表
180‧‧‧系統
182‧‧‧外部記憶體
184‧‧‧周邊裝置
186‧‧‧電源供應器
190‧‧‧桌上型電腦
200‧‧‧膝上型電腦
210‧‧‧平板電腦
220‧‧‧蜂巢式電話
230‧‧‧電腦可讀媒體
藉由參照結合隨附圖式之以下描述,可更好地理解方法及機制之上述及另外優點。
圖1說明積體電路之一部分之一實施例。
圖2為說明處理器核心之一實施例之方塊圖。
圖3為說明一映射/分派單元及一保留站之一實施例之方塊圖。
圖4說明載入儲存相依性預測器表之一實施例。
圖5為說明在載入儲存相依性預測器表中利用的計數器值之表示之一實施例之方塊圖。
圖6為說明用於處理載入操作之方法之一實施例之一般化流程圖。
圖7為說明用於調整載入儲存相依性預測強度指示符之方法之一實施例之一般化流程圖。
圖8為說明用於替換載入儲存相依性預測器表中的項目之方法之一實施例之一般化流程圖。
圖9為系統之一實施例之方塊圖。
圖10為電腦可讀媒體之一實施例之方塊圖。
在以下描述中,闡述眾多特定細節以提供對本文中呈現之方法及機制的透徹理解。然而,一般熟習此項技術者應認識到,可在無此等特定細節之情況下實踐各種實施例。在一些情況下,熟知結構、組件、信號、電腦程式指令及技術未詳細展示以避免使本文中描述之方法難以理解。應瞭解,為說明之簡單及清楚起見,該等圖中所示之元件未必係按比例繪製。舉例而言,一些元件之尺寸可相對於其他元件而誇大。
此說明書包括對「一實施例」之引用。片語「在一實施例中」在不同上下文中之出現未必指代同一實施例。可以與本發明一致之任何合適方式來組合特定特徵、結構或特性。此外,如貫穿本申請案中所使用,詞語「可」係按許可意義(亦即,意謂具有......之可能性)而非強制性意義(亦即,意謂必須)來使用。類似地,詞語「包括」意謂包括但不限於。
術語。以下段落為本發明中(包括附加申請專利範圍)發現之術語提供定義及/或上下文。
「包含」。此術語為開放式術語。於附加申請專利範圍中使用時,此術語並不排除額外結構或步驟。考慮敍述「一處理器包含一載入儲存相依性預測器......」之一請求項。此請求項不排除處理器包括額外組件(例如,快取記憶體、提取單元、執行單元)。
「經組態以」。可將各種單元、電路或其他組件描述或主張為「經組態以」執行一或多項任務。在此等上下文中,「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行該或該等任務之結構(例如,電路)來暗示結構。因而,甚至當單元/電路/組件並不同時可操作(例如,並未同時在作用中)時,所指定之單元/電路/組件仍可被稱為經組態以執行任務。與「經組態以......」語言一起使用的單元/電路/組件包括硬體,例如,電路、儲存可執行以實施操作之程式指
令的記憶體等。敍述一單元/電路/組件「經組態以」執行一或多項任務對於彼單元/電路/組件而言並不明確地意欲調用35 U.S.C.§ 112第六段。另外,「經組態以」可包括由軟體及/或韌體(例如,FPGA或執行軟體之通用處理器)操縱以按能夠執行爭論中之任務之方式操作的一般結構(例如,一般電路)。「經組態以」亦可包括調適一製造過程(例如,半導體製造設施)以製造經調適以實施或執行一或多項任務之器件(例如,積體電路)。
「基於」。如本文中所使用,此術語用以描述影響判定之一或多個因素。此術語並不排除可影響判定之額外因素。亦即,判定可僅基於彼等因素或至少部分地基於彼等因素。考慮片語「基於B來判定A」。雖然B可為影響A之判定之一因素,但此片語並不排除A之判定亦基於C。在其他情況下,可僅基於B來判定A。
現參看圖1,展示一說明積體電路(IC)之一部分之一實施例之方塊圖。在所說明之實施例中,IC 10包括一複合處理器12、記憶體控制器22及記憶體實體介面電路(PHY)24及26。注意IC 10亦可包括圖1中未展示之許多其他組件。在各種實施例中,IC 10亦可被稱作系統單晶片(SoC)、特殊應用積體電路(ASIC)或裝置。
複合處理器12可包括中央處理單元(CPU)14及16、二級(L2)快取記憶體18及匯流排介面單元(BIU)20。在其他實施例中,複合處理器12可包括其他數目個CPU。CPU 14及16亦可被稱作處理器或核心。CPU 14及16可耦接至L2快取記憶體18。L2快取記憶體18可耦接至BIU 20,BIU 20可耦接至記憶體控制器22。其他實施例可包括額外級快取記憶體(例如,三級(L3)快取記憶體)。應注意,複合處理器12可包括圖1中未展示之其他組件。
CPU 14及16可包括執行指令集架構中定義之指令的電路。具體而言,包含指令之一或多個程式可由CPU 14及16執行。任一指令集
架構可實施於各種實施例中。舉例而言,在一實施例中,可實施PowerPCTM指令集架構。其他例示性指令集架構可包括ARMTM指令集、MIPSTM指令集、SPARCTM指令集、x86指令集(亦被稱作IA-32)、IA-64指令集等。
在各種實施例中,CPU 14及16可無序地執行指令,其在一些狀況下可引起定序違規。舉例而言,在載入及儲存指令之狀況下,定序違規可在較新載入在具有重疊實體位址之較舊儲存之前執行時發生。為避免或防止此類型之定序違規的重複,各種技術可用以防止較新載入在其相依的較舊儲存之前執行。在一實施例中,CPU 14及16中之每一者可包括用於追蹤經預測或預期為相依的且亦可具有無序執行之趨勢的載入儲存對之載入儲存相依性預測器。在一實施例中,相依載入儲存對可記錄於表中。
有時,預測器可訓練載入儲存對,但相依性可為例外狀況。此可發生,係因為載入指令與儲存指令之間的相依性可基於一位址,且載入指令及儲存指令之位址可隨時間而改變。換言之,載入儲存相依性可為動態的。表中之一些項目在一時間週期之後可能不準確,且強迫不準確項目之相依性可使處理器不必要地無任何益處地延遲載入操作。
為防止過時項目在表中累積,且為防止強迫對於對應於過時項目之載入儲存對的相依性,表中之每一項目亦可包括表示相依性預測之強度的一指示符。指示符可判定是否強迫對於給定載入儲存對之相依性。指示符亦可影響表項目之替換策略,使得具有低指示符值之項目可在新項目經分配於表中時被替換。
CPU 14及16中之每一者亦可包括一級(L1)快取記憶體(未圖示),且每一L1快取記憶體可耦接至L2快取記憶體18。在一實施例中,L2快取記憶體18可經組態以快取指令及資料以由CPU 14及16低潛時存
取。L2快取記憶體18可包含任何容量及組態(例如,直接映射、設定關聯)。L2快取記憶體18可經由BIU 20耦接至記憶體控制器22。BIU 20亦可包括各種其他邏輯結構以將CPU 14及16以及L2快取記憶體18耦接至各種其他器件及區塊。
記憶體控制器22可包括任何數目個記憶體埠且可包括經組態以與記憶體介面連接之電路。舉例而言,記憶體控制器22可經組態以與動態隨機存取記憶體(DRAM)(諸如,同步DRAM(SDRAM)、雙資料速率(DDR)SDRAM、DDR2 SDRAM、Rambus DRAM(RDRAM))介面連接。記憶體控制器22亦可耦接至記憶體實體介面電路(PHY)24及26。記憶體PHY 24及26表示任何數目個記憶體PHY,其可耦接至記憶體控制器22。記憶體PHY 24及26可經組態以與記憶體器件(未圖示)介面連接。
注意,其他實施例可包括組件之其他組合,其包括圖1中所展示之組件及/或其他組件之子集或超集。雖然給定組件之一例項可在圖1中展示,但其他實施例可包括給定組件之兩個或兩個以上例項。類似地,貫穿此詳細描述,即使僅展示一例項,但可包括給定組件之兩個或兩個以上例項,及/或即使展示多個例項,但可使用包括僅一例項之實施例。
現轉至圖2,展示處理器核心之一實施例。核心30為處理器核心之一實例,且核心30可用於複合處理器(諸如,圖1之複合處理器12)內。在一實施例中,圖1之CPU 14及16中的每一者可包括核心30之組件及功能性。核心30可包括提取及解碼(FED)單元32、映射及分派單元36、記憶體管理單元(MMU)40、核心介面單元(CIF)42、執行單元44及載入儲存單元(LSU)46。注意,核心30可包括圖2中未展示之其他組件及介面。
FED單元32可包括經組態以自記憶體讀取指令並將其置於一級
(L1)指令快取記憶體34中之電路。L1指令快取記憶體34可為用於儲存待由核心30執行之指令的快取記憶體。L1指令快取記憶體34可具有任何容量及構造(例如,直接映射、設定關聯、完全關聯等)。此外,L1指令快取記憶體34可具有任一快取行大小。FED單元32亦可包括經組態以預測分支指令並沿預測路徑提取的分支預測硬體。FED單元32亦可經重定向(例如,經由錯誤預測、例外、中斷、清空等)。
FED單元32亦可經組態以將指令解碼成指令操作(op)。大體而言,指令操作可為包括於執行單元44及LSU 46中之硬體能夠執行的操作。每一指令可轉譯成一或多個指令操作,該一或多個指令操作在執行時導致根據指令集架構針對彼指令定義的操作之執行。FED單元32可經組態以並行地解碼多個指令。
在一些實施例中,每一指令可解碼成一單一指令操作。FED單元32可經組態以識別指令之類型、源運算元等,且每一解碼之指令操作可包含指令,連同一些解碼資訊。在每一指令轉譯成單一op之其他實施例中,每一op可簡單地為對應的指令或其一部分(例如,指令之作業碼欄位)。在一些實施例中,FED單元32可包括用於產生指令之op的電路及/或微碼之任何組合。舉例而言,相對簡單之op產生(例如,每一指令一或兩個op)可在硬體中處置,而更廣泛的op產生(例如,指令之三個以上op)可在微碼中處置。在其他實施例中,包括於FED單元32內之功能性可分裂成兩個或兩個以上分開單元,諸如,提取單元、解碼單元及/或其他單元。
可將經解碼之op提供至映射/分派單元36。映射/分派單元36可經組態以將op及架構暫存器映射至核心30之實體暫存器。映射/分派單元36可實施暫存器重命名以將來自op之源暫存器位址映射至識別重新命名之源暫存器的源運算元號碼。映射/分派單元36亦可經組態以分派op至執行單元44及LSU 46內之保留站。映射/分派單元36可包括載
入儲存相依性(LSD)預測器37及重定序緩衝器(ROB)38。在被分派之前,可將op寫入至ROB 38。ROB 38可經組態以保持op,直至其可按次序提交為止。每一op可經指派對應於ROB 38中之特定項目的一ROB索引(RNUM)。RNUM可用以追蹤核心30中之進行中操作。映射/分派單元36亦可包括圖2中未展示之其他組件(例如,映射器陣列、分派單元、分派緩衝器)。此外,在其他實施例中,包括於映射/分派單元36中之功能性可分裂成兩個或兩個以上分開單元,諸如,映射單元、分派單元及/或其他單元。
LSD預測器37可經組態以訓練並預測可能無序發出的相依載入儲存指令對。LSD預測器37可包括具有用於已經訓練之載入儲存對之項目的表,且每一項目可包括識別載入及儲存指令及預測之強度的資訊。在一實施例中,訓練事件可為藉由在具有重疊實體位址的較舊儲存之前執行較新載入而觸發的定序違規。在一實施例中,表可為256項目完全相關聯結構。在其他實施例中,表可具有其他數目個項目。在各種實施例中,表可為用於表之各種欄位的內容可定址記憶體(CAM)。
當存在在相依載入操作與儲存操作之間的次序違規時,核心30可經重定向及再同步。作為重定向之結果,可採取各種正確的動作。在此時點,可針對引起再同步之特定載入儲存對執行訓練。用於此特定對之項目可經分配於LSD預測器37中,且預測之強度可經設定為高級。接著,在接下來穿過核心30之管線時,當自單元36分派來自載入儲存對之儲存時,可搜尋LSD預測器37以尋找儲存。可發現且供給匹配之項目。當自單元36分派來自經訓練之載入儲存對的載入時,LSD預測器37之搜尋可針對載入執行,且載入將匹配所供給之項目。接著,載入可經分派至具有相依性之一保留站,從而使載入在自保留站發出之前等待儲存。
若在儲存被發出之前自指令管線清空供給一項目之儲存,則LSD預測器37可經組態以清除表。舉例而言,可存在需要去供給LSD預測器37之經供給項目之情況諸如,當存在錯誤時。載入操作可為相依的且等待已被清出之儲存操作,且此可結束死鎖核心30。在此狀況下,當自核心30清空儲存操作時,可搜尋LSD預測器37之表以尋找對應於經清空儲存的任何供給之項目。針對清空之儲存而發現的任何匹配項目可經去供給。在一實施例中,LSD預測器37之每一項目可包括一儲存RNUM以識別載入儲存對之特定儲存。
執行單元44可包括任何數目及類型之執行單元(例如,整數、浮點、向量)。執行單元44中之每一者亦可包括一或多個保留站(未圖示)。CIF 42可耦接至LSU 46、FED單元32、MMU 40及L2快取記憶體(未圖示)。CIF 42可經組態以管理核心30與L2快取記憶體之間的介面。MMU 40可經組態以執行位址轉譯及記憶體管理功能。
LSU 46可包括L1資料快取記憶體48、保留站50及52、儲存佇列54及載入佇列56。可將載入及儲存操作自映射/分派單元36分派給保留站50及52。其他實施例可包括其他數目個保留站。操作可無序地自保留站50及52發出。儲存佇列54可儲存對應於儲存操作之資料,且載入佇列56可儲存與載入操作相關聯之資料。LSU 46亦可經由CIF 42耦接至L2快取記憶體。注意,LSU 46亦可包括圖2中未展示之其他組件(例如,暫存器檔案、預提取單元、轉譯後備緩衝器)。
載入儲存次序違規可在發出較舊儲存時由LSU 46偵測到。在一實施例中,可將較舊儲存之儲存位址與載入佇列56中之所有較新載入比較。若偵測到匹配,則載入操作可已經藉由不正確資料完成。此可在將來使用載入及儲存操作之RNUM藉由將一重定向傳訊回至映射/分派單元36來校正。映射/分派單元36可清空來自核心30管線之指令並將核心30之前端重定向回至載入之指令位址,且載入指令可經重新
提取。為防止將來重定向,映射/分派單元36可預測載入對儲存之相依性並將其記錄於LSD預測器37中,且將預測之相依性傳達至保留站50及52。
在典型狀況下,當儲存經分派時,儲存可搜尋LSD預測器37,且接著若針對儲存發現匹配,則可供給(亦即,啟動)表中的匹配之項目,且儲存RNUM可寫入至項目。隨後,可分派載入且可在表中之載入上執行搜尋。在一實施例中,用於搜尋LSD預測器37之識別值可為載入PC值及儲存PC值之至少一部分。在另一實施例中,用於搜尋並儲存於項目中的識別值可為自PC值之至少一部分、架構暫存器值之至少一部分及/或微op值之至少一部分導出的雜湊值。可利用的識別符之其他可能性係可能的且預期到。
在各種實施例中,載入可匹配LSD預測器37中的任何數目個項目。在一實施例中,為了匹配發生,需要供給項目。若載入匹配一供給之項目,則與儲存RNUM之相依性可藉由將供給之儲存RNUM連接至載入而建立。可將載入標記為等待彼特定儲存RNUM自保留站發出。在保留站中,可存在用於載入之一相依性欄位,且可將載入標記為相依於給定儲存自保留站50或52中之一者發出。因此在此狀況下,可將載入標記為等待一特定儲存RNUM,且載入可在特定儲存發出之後的一循環發出。
若載入匹配多個供給之儲存項目,則此可被稱作多重匹配狀況。在此狀況下,載入可在發出之前等待直至所有較舊儲存已發出。舉例而言,在一實施例中,一位元可經設定,使得載入可等待所有較舊儲存在載入發出之前發出。此將迫使所有較舊儲存在載入之前自保留站50及52發出。在一實施例中,保留站50及52中之每一者可使其含有之較舊儲存可用。一旦載入變得比彼等儲存之兩者舊,則載入可發出。
每一保留站50及52可包括經組態以發出有效之任何操作的一撿拾器。當儲存變得有效,且其被撿拾並被發出時,標籤可經廣播,且接著相依於此儲存之載入將匹配彼標記。此將載入標記為合格以待自保留站發出。換言之,儲存產生由載入消耗之一標籤。在一實施例中,標記可為儲存之RNUM。在一實施例中,RNUM可為9位元值,但在其他實施例中,RNUM之大小可變化。具有相依性之載入可具有與載入一起儲存於保留站中之附加來源,且該附加來源可為來自LSD預測器37中之同一項目的儲存之RNUM。
當載入匹配LSD預測器37中之項目且項目經供給時,此暗示存在載入需要等待之有效儲存。項目亦可包括關於預測之強度的一指示符。在一實施例中,指示符可為計數器,且若計數器之值高於臨限值,則項目可被認為係一強的高度可能之預測且可建立載入儲存相依性。臨限值可在實施例之間有變化。若載入匹配一供給之項目且指示符為弱(指示不使用預測),則可不針對載入建立相依性。若載入儲存相依性經建立,則載入可拾取儲存之RNUM,使得當分派載入時RNUM被自項目中讀取並連同載入一起傳遞至保留站。載入亦可在保留站中經標記為具有相依性。
在一實施例中,僅當一儲存經標記為有效產生器時,自保留站發出之儲存才將使一標籤被廣播。當一儲存搜尋LSD預測器37且未發現匹配時,則儲存將不被設置為有效產生器。若儲存發現LSD預測器37中之有效項目,且預測強度指示符表示載入儲存對相依性預測高於一臨限值(亦即,預測接通),則可供給項目。在一實施例中,若預測強度指示符低於一臨限值,則儲存將不供給項目,即使儲存與該儲存項目匹配。在一些實施例中,當儲存無關於預測強度指示符之值而發現一匹配時,可供給項目。儲存可匹配多個項目,且可針對單一儲存供給多個項目。
當載入匹配LSD預測器37的供給之項目時,載入經標記為相依,且載入可等待自保留站發出,直至對應的儲存自保留站發出。接著,在具有建立之相依性之載入發出之後,其可經自載入接收到其資料之處判定。相依於載入接收到其資料之處,在LSD預測器37之對應的項目中的預測強度指示符可增加、減少或保持相同。
舉例而言,若載入資料係自儲存佇列54轉遞,則來自LSD預測器37之預測可視為良好。在此狀況下,來自儲存之資料尚未使其至快取記憶體48,且因此載入等待儲存係有益的。若用於此載入操作的載入資料仍在儲存佇列54中,則此可指示實際存在一在載入與儲存之間的真正相依性。換言之,資料確實需要自儲存佇列54轉遞以用於相依之載入。
若在用於載入資料之儲存佇列54中存在遺漏,則相依性可不再有效。可存在先前相依性,但接著載入或儲存之位址改變,且載入及儲存不再衝突。在此狀況下,若儲存資料係自快取記憶體48擷取,則資料可能已長時間儲存於彼處。因此,判定儲存資料自儲存佇列54轉遞或是自快取記憶體48轉遞可指示預測是否正確。此外,儲存於LSD預測器37之匹配項目中的預測強度指示符可基於此判定來更新。若預測係準確的,使得載入資料自儲存佇列54轉遞,則預測強度指示符可增加。若載入資料來自快取記憶體48,則預測強度指示符可減少。在其他實施例中,可利用用於判定相依性預測是否正確之其他技術。
應理解圖2中說明之功能性的分佈並非為可用於處理器核心的唯一可能之微架構。其他處理器核心可包括其他組件,省略所展示組件中之一或多者,及/或包括組件當中的功能性之不同配置。
現參看圖3,展示映射/分派單元及保留站之一實施例之方塊圖。在一實施例中,映射/分派單元60可包括一暫存器映射器62、一重定序緩衝器(ROB)64、一載入儲存相依性(LSD)預測器66,及一分派單
元68。暫存器映射器62及LSD預測器66經耦接以接收來自一解碼單元(未圖示)之op。LSD預測器66經耦接以接收來自解碼單元之PC且經耦接以接收來自載入儲存單元(未圖示)之「重定向」及「計數更新」信號。LSD預測器66亦耦接至一替換指標,該指標搜尋LSD預測器66以尋找當分配新項目時可拋棄的項目。
暫存器映射器62可經組態以將架構暫存器映射至實體暫存器,且提供op及實體暫存器位址至分派單元68。分派單元68可經組態以分派op至保留站70A至70N。分派單元68可經組態以維持保留站70A至70N中之保留站項目之自由表,且通常可指派項目給op以平衡保留站70A至70N之間的載入。
LSD預測器66可經組態以檢查op中之儲存及載入,且可比較任何偵測之儲存及載入的PC與先前引起定序違規並已在訓練表中分配項目的儲存及載入之PC。若PC匹配一給定儲存,則LSD預測器66可經組態以供給訓練表中之對應的項目。在一實施例中,LSD預測器66可在供給項目之前檢查預測指示符之強度。若指示符高於臨限值,則可供給項目,且否則,若指示符低於臨限值,則可不供給項目。另外,LSD預測器66可經組態以俘獲指派給儲存之RNUM作為儲存之識別符。
當經偵測到匹配所供給之項目的一載入且所供給之項目的預測指示符之強度高於臨限值時,LSD預測器66可經組態以使用儲存識別符來產生載入對儲存之相依性,從而防止載入由保留站70發出,直至在發出儲存之後。在一實施例中,LSD預測器66可經組態以將儲存RNUM連同載入具有相依性之指示符一起轉遞至一給定保留站70。另外,若存在對於載入之多個匹配,則LSD預測器66可將多重匹配指示符轉遞至給定保留站70。在其他實施例中,LSD預測器66可經組態以將在多重匹配狀況下之多個儲存RNUM轉遞至保留站70,且保留站70
可經組態以每一載入儲存一個以上儲存RNUM。其他實施例可以其他方式指示儲存相依性。
保留站70A至70N表示可用作載入/儲存單元(未圖示)及/或執行單元(未圖示)之部分的任何數目個保留站。每一保留站70A至70N可經組態以儲存操作,直至操作由對應的功能單元執行。圖3中展示根據一實施例的在保留站70A內之一項目之一實例。相依於實施例,保留站70A至70N中之每一者可包括各種數目個項目。每一項目可包括一相依性指示符、一多重匹配指示符、相依性之儲存RNUM、指示操作為載入或是儲存的載入/儲存(L/S)指示符及操作之PC。在其他實施例中,項目可包括其他欄位(例如,源暫存器、目的地暫存器、源運算元),及/或省略圖3中所示之欄位中的一或多者。此外,可不同地格式化其他類型之項目(例如,整數、浮點)。
LSD預測器66可經組態以基於重定向指示來識別引起定序違規的載入儲存對。重定向指示可包括載入及儲存PC或其他載入及儲存識別符。LSD預測器66因此可由引起定序違規之儲存及載入來訓練,以將來當在處理器中重新提取並重新執行同一程式碼序列時防止此等事件。
暫存器映射器62可包括具有用於每一邏輯暫存器之一項目的記憶體。暫存器映射器62中之每一邏輯暫存器之項目可儲存最近op之RNUM以更新邏輯暫存器。額外狀態亦可儲存於重命名映射項目中。舉例而言,一位元可指示最近op是否已經執行。在此實施例中,暫存器映射器62可自給定保留站70接收識別已經發出之op的信號,此可允許暫存器映射器62更新該位元。亦可包括指示最近op是否已經引退的一位元。
注意並未說明至圖3中所示之單元的所有連接,且映射/分派單元60可包括實施其他操作之額外電路(未圖示)。舉例而言,暫存器映射
器62及ROB 64可接收重定向指示以調整其映射以考量正被清空之op。另外,暫存器映射器62及ROB 64可接收引退op之指示以將其狀態調整至引退(例如,釋放項目以用於指派給新op,更新架構之重命名狀態等)。此等操作附屬於LSD預測器66之操作,且因此本文中不更詳細地來描述。
注意,雖然PC及RNUM用作用於儲存之識別符且PC用作用於載入之識別符,但其他實施例可使用可唯一地識別處理器內之進行中指令的任一識別符(例如,任何種類之標籤或序號)。
現轉至圖4,展示載入儲存相依之預測器表之一實施例。相依於實施例,表90可包括各種數目個項目。每一項目可對應於已經預測具有重疊位址並無序發出之載入儲存對。可回應於偵測到定序違規而在表90中分配一項目。在定序違規已發生之情況下,儲存佇列項目可清空處理器(包括引起違規之載入),返回至提取單元,且表90可基於此違規而訓練,使得用於此特定載入儲存對之項目經添加至表90。通常,觸發重定向的清空之儲存將已經發出,因此當清空之載入經重新提取及解碼時,表90中之項目將不被供給,且載入可正常地發出。在彼PC處的儲存之將來執行時,儲存將供給表90中之對應的項目,且防止載入發出,直至已發出儲存。
表90可經組態以藉由多個op而允許多個同時存取及更新。此外,雖然表90經說明為整合式表,但不同欄位可為對應於分開記憶體之分開表,其中分開表之項目彼此相關聯。舉例而言,載入PC可為一分開表,儲存PC可為一分開表,且載入PC項目可對應於已偵測及訓練一特定載入儲存定序違規所針對之一儲存PC項目。
每一項目可包括一有效指示符92。有效指示符92可指示項目是否為有效項目及項目是否應用於強迫由項目指示的在載入與儲存之間的相依性。在一實施例中,有效指示符92可在重設時被清除。有效指
示符92亦可影響替換策略,使得有效項目可為在分配新項目時被替換之第一項目。在一些實施例中,有效指示符92可不包括於表90之項目中。實情為,在此等實施例中,計數器欄位102之值可用以指示項目是否有效。其他實施例可排除表中之計數器欄位102且僅使用有效指示符92。
每一項目亦可包括一儲存PC值94以識別特定儲存操作。在一些實施例中,儲存PC值可與架構暫存器組合及/或雜湊。當儲存經分派時,可搜尋表90之儲存PC以尋找分派之儲存的PC。表90可為用於儲存PC欄位之CAM,其中記憶體中之每一項目包括進行比較之電路。儲存PC欄位亦可為作為CAM操作的一組暫存器及比較器。若分派之儲存匹配任何項目,則此等項目可具有供給之位元98集合。儲存之RNUM亦可寫入至項目之儲存RNUM 96欄位。當儲存自保留站發出時,則供給之位元98可自先前由彼特定儲存供給的表90之任何項目清除。
當分派載入時,可針對分派之載入之PC搜尋表90之每一項目的載入PC值100。表90可為用於載入PC欄位之CAM。若分派之載入匹配任何供給之項目,則相依性可經建立並被強迫用於特定載入。若載入匹配一未供給之項目,則相依性未建立,此係因為對應的儲存未經分派或已經發送,且因此應不發生定序違規。若載入匹配多個供給之項目,則載入可等待,直至所有較舊儲存在載入自身發出之前經發出。若載入匹配單一供給之項目,則儲存RNUM可寫入至具有載入之保留站。保留站中亦可存在用於載入的相依性位元集以指示載入具有有效相依性。
每一項目亦可包括一計數器欄位102。計數器102之值可指示項目中之彼特定載入儲存對的預測之強度。在一實施例中,計數器102可為二位元遞增遞減計數器。在其他實施例中,計數器102可利用其
他數目個位元。此外,計數器102可經組態以在其最大及最小值處飽和。
當儲存匹配一項目時,計數器值102可在供給項目之前被檢查。若計數器值102低於臨限值,則可不供給項目。若計數器值102高於臨限值,則可供給該項目。在一些實施例中,可在不檢查計數器值102的情況下供給項目。當載入匹配一項目時,亦可檢查計數器值102。僅當計數器值102高於臨限值時,可強迫相依性。臨限值可相依於實施例而改變,且可根據特定操作條件來調整。
在另一實施例中,超齡計數器可與表90之項目一起利用。每一項目可包括一超齡計數器,且當首先分配項目時,超齡計數器可設定為某一初始值。間隔計數器亦可用以針對可程式化間隔計數,且當間隔計數器期滿時,表90中之每一超齡計數器可減小。間隔計數器接著可起動並針對可程式化間隔計數。每當間隔流逝時,表90中之每一超齡計數器可減小。在由載入儲存對存取或提供項目之任何時候,超齡計數器皆可增大固定數。若表90中之項目不再被使用,則最終其超齡計數器將到達零,在此時點,該項目可由新項目替換。
在其他實施例中,表90可包括額外欄位及/或省略圖4中所示之一或多個欄位。此外,在其他實施例中可不同地格式化表90。
現轉至圖5,展示對應於預測器表中之載入儲存對項目的計數器值之表示之一實施例。計數器值之此指派經針對表110中之兩位元計數器描繪。在其他實施例中,計數器可利用其他數目個位元。
在一實施例中,計數器值「11」或三可表示「強啟用」。對於具有此計數器值之項目,可強迫對於載入儲存對之相依性。計數器值「10」或二可表示「弱啟用」。若項目為「弱啟用」,則亦可強迫相依性。計數器值「01」或一可表示「弱停用」。若項目為「弱停用」,則可不強迫對於對應的載入儲存對之相依性。計數器值「00」或零可表
示「強停用」。在一些實施例中,「強停用」亦可指示項目為無效的。圖5中所示之實施例中的臨限值在二與一之間。在其他實施例中,臨限值可為其他值。
在一實施例中,當一項目首先被分配時,按預設,用於新項目之計數器可經設定為弱啟用。當計數器為弱停用(計數器=1)時,則與項目匹配的載入儲存對可不具有建立之相依性。實情為,可無相依性地發出載入。在其他實施例中,可利用其他大小之計數器,且計數器值可具有不同表示。
現轉至圖6,展示用於處理載入操作之方法之一實施例。為論述之目的,此實施例中之步驟以順序次序展示。應注意,在以下所描述方法之各種實施例中,可以不同於所示之次序同時執行一或多個所描述要素,或可將其完全省略。如需要,亦可執行其它額外要素。另外,流程圖之部分可並行地執行以用於同時處理多個載入操作。
在一實施例中,載入操作可由一映射/分派單元接收(區塊120)。可在處理器管線之先前階段中解碼載入操作。接著,可搜尋載入儲存相依性預測器表以尋找具有與載入操作相同之PC的項目(區塊122)。在執行搜尋之後,可判定發現多少匹配(條件區塊124)。若未發現匹配(條件區塊124),則載入可在沒有相依性之情況下經分派至保留站(區塊126)。載入可匹配未供給之項目,但此等未供給之匹配不構成將需要相依性待被強迫之實際匹配。類似地,若載入匹配一供給之項目但預測指示符計數器低於臨限值,則此不構成實際匹配,且因此將不強迫相依性。在一些實施例中,若儲存已在供給項目之前檢查計數器,則可不需要將計數器與載入之臨限值比較。
若載入不具有需要被強迫之相依性,則此可以多種方式指示。舉例而言,在一實施例中,相依性位元可經清除以指示載入不具有相依性。在區塊126之後,撿拾器可選擇載入用於在任何時間自保留站
發出而不等待任何其他操作發出(區塊132)。
若發現與一供給之項目的單一匹配,則載入可經分派至具有相依性之保留站(區塊128)。對應的儲存之RNUM可與載入一起經寫入至保留站項目。在一實施例中,對於待被視為匹配之一項目,項目之計數器欄位可需要高於一臨限值。舉例而言,若載入匹配一供給之項目,但該項目之計數器欄位低於臨限值(亦即,弱或強停用),則此可不構成一真實匹配。在區塊128之後,載入可等待發出,直至其相依於之對應的儲存發出(區塊134)。
若發現對於載入的與供給之項目的多個匹配(條件區塊124),則載入可與多重匹配指示符集一起分派至一保留站(區塊130)。接著,載入可等待自保留站發出,直至所有較舊儲存已發出(區塊136)。載入/儲存單元可包括多個保留站,且每一保留站可經組態以追蹤其項目中之最舊儲存。當分派具有多個匹配之載入時,可記錄每一保留站中之最舊儲存,且在來自每一保留站之最舊儲存已發出後,則載入可稍後一個循環發出。
現轉至圖7,展示用於調整載入儲存相依性預測強度指示符之一方法之一實施例。為論述之目的,此實施例中之步驟係以順序次序展示。應注意,在下文所描述方法之各種實施例中,可以不同於所示之次序同時執行一或多個所描述要素,或可將其完全省略。如需要,亦可執行其它額外要素。
具有相依性之載入可自保留站發出(區塊140)。載入可經延遲發出,直至來自載入儲存對之對應的儲存發出之後。對應的儲存可已自同一保留站或自不同的保留站發出。在載入自保留站發出並被執行後,其可經自獲得載入資料之處判定(區塊142)。
若載入資料在儲存佇列中(條件區塊144),則對於此特定載入儲存對之相依性預測可被視為良好,且在載入儲存相依性預測器中的對
應的項目之計數器可增大(區塊146)。若在用於載入資料之儲存佇列中存在遺漏(條件區塊144),則對於載入的對儲存之相依性可不被保證(亦即,相依性預測不再有效),且載入儲存相依性預測器中之對應的項目之計數器可減小(區塊148)。此方法可經針對具有相依性之複數個不同載入並行地執行。
現轉至圖8,展示用於替換載入儲存相依性預測器表中的項目之方法之一實施例。為了論述之目的,此實施例中之步驟以順序次序展示。應注意,在下文所描述方法之各種實施例中,可以不同於所示之次序同時執行一或多個所描述要素,或可將其完全省略。如需要,亦可執行其它額外要素。
指標可指向載入儲存相依性預測器表中的一群鄰近項目,且可分析該群鄰近項目之計數器值(區塊160)。在一實施例中,該群可包括四個項目。在其他實施例中,該群可包括其他數目個項目。接著,可選擇具有最低計數器值之項目(區塊162)。若一個以上項目具有最低計數器值,則指標可隨機地選擇此等項目中之任一者,或指標可使用某一其他值或量度區分此等最低計數器值項目。
若新項目需要在此時點被分配用於具有相依性的新訓練之載入儲存對(條件區塊164),則群中具有最低計數器值之選定項目可被拋棄且新項目可被分配於此位置中(區塊166)。注意,可回應於重定向及清空經傳訊而分配新的載入儲存對,且重定向可發生在任一點。因此,條件區塊164可位於圖8之流程圖中的其他位置處。在分配新項目之後,指標可移動至下一群項目(區塊172)。若新項目不需要在此時被分配(條件區塊164),則可判定最低計數器值是否為零(條件區塊168)。
若最低計數器值為零(條件區塊168),則指標可停留在其當前位置並等待項目被分配(區塊170)。若最低計數器值不為零(條件區塊
168),則指標可移動至預測器中之下一群項目(區塊172)。在一實施例中,指標可等待移動至下一群項目,直至載入或儲存存取載入儲存相依性預測器。在另一實施例中,指標可在下一個時脈循環移動至下一群項目。在區塊172之後,方法可返回至區塊160以分析群中之項目。圖8中所說明之方法為替換策略之一可能實施,且在其他實施例中,可利用其他替換策略(例如,最近最少使用)。
接下來參看圖9,展示系統180之一實施例之方塊圖。如所展示,系統180可表示桌上型電腦190、膝上型電腦200、平板電腦210、蜂巢式電話220或其他者之晶片、電路、組件等。在所說明之實施例中,系統180包括耦接至外部記憶體182的(圖1之)IC 10之至少一例項。
IC 10耦接至一或多個周邊裝置184及外部記憶體182。亦提供將供電電壓供應至IC 10以及將一或多個供電電壓供應至記憶體182及/或周邊裝置184的一電源供應器186。在各種實施例中,電源供應186可表示電池(例如,智慧型手機、膝上型電腦或平板電腦中之可再充電電池)。在一些實施例中,可包括IC 10之一個以上例項(且亦可包括一個以上外部記憶體182)。
記憶體182可為任何類型之記憶體,諸如,動態隨機存取記憶體(DRAM)、同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM之行動版本(諸如,mDDR3等)及/或SDRAM之低功率版本(諸如,LPDDR2等))、RAMBUS DRAM(RDRAM)、靜態RAM(SRAM),等。可將一或多個記憶體器件耦接至電路板上以形成諸如單列直插式記憶體模組(SIMM)、雙列直插式記憶體模組(DIMM)等之記憶體模組。或者,可以晶片疊層組態、封裝疊層組態或多晶片模組組態將該等器件與IC 88安裝在一起。
相依於系統180之類型,周邊裝置184可包括任一所要的電路。
舉例而言,在一實施例中,周邊裝置184可包括用於各種類型之無線通信(諸如,wifi、藍芽、蜂巢式、全球定位系統等)的器件。周邊裝置184亦可包括額外儲存器,包括RAM儲存器、固態儲存器或磁碟儲存器。周邊裝置184可包括使用者介面器件(諸如,顯示螢幕,包括觸控式顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入器件、麥克風、揚聲器,等。
現轉至圖10,展示包括表示包括於(圖1之)IC 10中之電路的一或多個資料結構之電腦可讀媒體230之方塊圖之一實施例。一般而言,電腦可讀媒體230可包括任何非暫時儲存媒體(諸如,磁性或光學媒體(例如,磁碟、CD-ROM或DVD-ROM))、揮發性或非揮發性記憶體媒體(諸如,RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等),以及可經由傳輸媒體或經由通信媒體(諸如,網路及/或無線鏈路)傳送的信號(諸如,電信號、電磁信號或數位信號)存取之媒體。
一般而言,電腦可讀媒體230上之電路之(多個)資料結構可由程式讀取並直接或間接地用以製造包含電路之硬體。舉例而言,(多個)資料結構可包括在高階設計語言(HDL)(諸如,Verilog或VHDL)下的硬體功能性之一或多個行為級描述或暫存器傳送級(RTL)描述。(多個)描述可藉由可合成描述以產生包含來自合成程式庫之閘之清單的一或多個接線對照表的合成工具讀取。(多個)接線對照表包含亦表示包含電路之硬體的功能性之閘集合。(多個)接線對照表接著可經置放及投送以產生描述待應用於遮罩之幾何形狀的一或多個資料集。遮罩接著可用於各種半導體製造步驟中以產生對應於電路之一或多個半導體電路。或者,電腦可讀媒體230上之(多個)資料結構可按需要為(多個)接線對照表(具有或不具有合成程式庫)或資料集。在又一替代方案中,資料結構可包含示意性程式之輸出,或自其導出的接線對照表或資料集。
雖然電腦可讀媒體230包括IC 10之表示,但其他實施例可包括IC 10之任一部分或多個部分之組合的表示(例如,LSD預測器37、LSU 46)。
應強調,上述實施例僅為實施之非限制實例。對於熟習此項技術者而言,一旦已完全瞭解上述揭示內容,眾多變化及修改便將變得顯而易見。希望將以下申請專利範圍解釋為涵蓋所有此等變化及修改。
60‧‧‧映射/分派單元
62‧‧‧暫存器映射器
64‧‧‧重定序緩衝器(ROB)
66‧‧‧載入儲存相依性(LSD)預測器
68‧‧‧分派單元
70A‧‧‧保留站
70N‧‧‧保留站
Claims (14)
- 一種處理器,其包含:一重定序緩衝器;一或多個保留站(reservation station);一載入儲存相依性預測器,其耦接至該一或多個保留站,該載入儲存相依性預測器包含:具有若干項目之一表,其中每一項目包含:一載入識別符、一儲存識別符、一重定序緩衝器項目號碼、一預測指示符強度、及一供給之位元(armed bit),其用於指示具有一匹配至各別項目之該儲存識別符之識別符之一儲存操作已被分派(dispatched);及電路,其經組態以:設定該表中之一項目之該供給之位元,以回應於偵測到具有一匹配至儲存在該表之前述項目中之該儲存識別符之識別符之一儲存操作之分派;回應於偵測到一給定載入操作具有一識別符且該識別符匹配至具有一已設定之供給之位元的一給定項目之該載入識別符:預測該給定載入操作係相依於具有一匹配至該給定項目之該儲存識別符之識別符之一給定儲存操作;回應於判定用於該給定載入操作之資料係自一第一位址擷取而增大該給定項目之該預測指示符(indicator)強度,該第一位址包含一儲存佇列;及回應於判定用於該給定載入操作之該資料係自不同於該 第一位址之一第二位址擷取而減小該給定項目之該預測指示符強度,其中該第二位址係一快取記憶體。
- 如請求項1之處理器,其中該表之每一項目之該預測指示符強度包含一預測計數器強度。
- 如請求項2之處理器,其中該載入儲存相依性預測器之該電路經進一步組態以:回應於偵測到該給定儲存操作具有匹配至該給定項目之該儲存識別符之一識別符且回應於判定該給定項目之該預測計數器強度係高於一臨限值而設定該給定項目之該供給之位元;及在該給定項目中儲存該給定儲存操作之一重定序緩衝器項目號碼。
- 如請求項3之處理器,其中該一或多個保留站中之一保留站將該給定載入操作併同該給定項目之該重定序緩衝器項目號碼之一識別儲存。
- 如請求項4之處理器,其中回應於該給定儲存操作之發出(issuance):該給定儲存操作之該重定序緩衝器號碼被廣播;被廣播之該重定序緩衝器號碼被儲存有該給定載入操作之該保留站所偵測到;及回應於偵測到該給定儲存操作之被廣播之該重定序緩衝器號碼係匹配至併同該給定儲存操作儲存之該重定序緩衝器項目號碼之該識別,該給定載入操作被允許發出。
- 如請求項2之處理器,其中該表之每一項目進一步包含一超齡(age-out)計數器,其回應於一可程式化時間週期之失效而被減小。
- 如請求項1之處理器,其中回應於偵測到一給定儲存操作自一保 留站之發出,該電路經組態以清除在該表中已回應於該給定儲存操作之分派(dispatch)而被設定之該供給之位元。
- 一種用於管理載入儲存相依性之方法,其包含:維護具有若干項目之一表,其中每一項目包含:一載入識別符、一儲存識別符、一重定序緩衝器項目號碼、一預測指示符強度、及一供給之位元,其用於指示具有一匹配至各別項目之該儲存識別符之識別符之一儲存操作已被分派;設定該表中之一項目的該供給之位元,回應於偵測到具有一匹配至儲存在該表之前述項目中之該儲存識別符之識別符之該儲存操作之分派;回應於偵測到一給定載入操作具有一識別符且該識別符匹配至具有一已設定之供給之位元的一給定項目之該載入識別符而預測該給定載入操作係相依於一具有一匹配至該給定項目之該儲存識別符之一識別符之給定儲存操作;回應於判定用於該給定載入操作之資料係自一第一位址擷取而增大該給定項目之該預測指示符強度,該第一位址包含一儲存佇列;及回應於判定用於該給定載入操作之該資料係自不同於該第一位址之一第二位址擷取而減小該給定項目之該預測指示符強度,其中該第二位址係一快取記憶體。
- 如請求項8之方法,其進一步包含:分派具有一特定識別符之該給定載入操作;搜尋該表以尋找匹配至該特定識別符之該載入識別符;及回應於發現一單獨項目且該單獨項目具有匹配至該特定識別符之該載入識別符及一已設定之供給之位元,在該給定載入操 作以及對應至該單獨項目之一重定序緩衝器項目號碼之該儲存操作之間建立一相依性。
- 如請求項8之方法,其進一步包含:分派具有一特定識別符之該給定載入操作;搜尋該表以尋找匹配至該特定識別符之該載入識別符;及回應於發現多個匹配的項目,且每一匹配的項目具有匹配至該特定識別符之該載入識別符及一已設定之供給之位元,而在該給定載入操作及多個儲存操作之間建立一相依性。
- 如請求項9之方法,其進一步包含:將該給定載入操作併同該單獨項目之該重定序緩衝器項目號碼之一識別儲存在一保留站中;回應於對應至該單獨項目之該重定序緩衝器項目號碼之該儲存操作之發出,廣播該單獨項目之該重定序緩衝器項目號碼;及回應於偵測到被廣播之該重定序緩衝器項目號碼,允許該給定載入操作自該保留站發出。
- 如請求項10之方法,其進一步包含:回應於建立該相依性,在複數個保留站之每一保留站中識別一最舊的儲存操作;及回應於所有經識別的最舊的儲存操作自該複數個保留站之各別保留站的發出,允許該給定載入操作自該複數個保留站之一保留站發出(to issue)。
- 如請求項8之方法,其中該表之每一項目包含一超齡計數器,其回應於一可程式化時間週期之失效而被減小。
- 如請求項10之方法,進一步包含:回應於所有比該給定載入操作較舊的儲存操作之發出,允許該給定載入操作自一保留站發出。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/464,647 US9128725B2 (en) | 2012-05-04 | 2012-05-04 | Load-store dependency predictor content management |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201531939A TW201531939A (zh) | 2015-08-16 |
TWI529617B true TWI529617B (zh) | 2016-04-11 |
Family
ID=48190741
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104113982A TWI529617B (zh) | 2012-05-04 | 2013-05-03 | 載入儲存相依性預測器內容管理 |
TW102115961A TW201403463A (zh) | 2012-05-04 | 2013-05-03 | 載入儲存相依性預測器內容管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102115961A TW201403463A (zh) | 2012-05-04 | 2013-05-03 | 載入儲存相依性預測器內容管理 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9128725B2 (zh) |
EP (1) | EP2660716B1 (zh) |
JP (2) | JP2013239166A (zh) |
KR (2) | KR20130124221A (zh) |
CN (1) | CN103455309B (zh) |
BR (1) | BR102013010877B1 (zh) |
TW (2) | TWI529617B (zh) |
WO (1) | WO2013165754A1 (zh) |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US8880829B2 (en) * | 2012-11-19 | 2014-11-04 | Qualcomm Innovation Center, Inc. | Method and apparatus for efficient, low-latency, streaming memory copies |
US10467010B2 (en) * | 2013-03-15 | 2019-11-05 | Intel Corporation | Method and apparatus for nearest potential store tagging |
US9116817B2 (en) * | 2013-05-09 | 2015-08-25 | Apple Inc. | Pointer chasing prediction |
US9619750B2 (en) * | 2013-06-29 | 2017-04-11 | Intel Corporation | Method and apparatus for store dependence prediction |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9286073B2 (en) * | 2014-01-07 | 2016-03-15 | Samsung Electronics Co., Ltd. | Read-after-write hazard predictor employing confidence and sampling |
US11093401B2 (en) * | 2014-03-11 | 2021-08-17 | Ampere Computing Llc | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10209995B2 (en) * | 2014-10-24 | 2019-02-19 | International Business Machines Corporation | Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions |
WO2016097792A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10114794B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
JP6286068B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのキャッシュ不可に依存するロードリプレイを除外するメカニズム |
US9804845B2 (en) * | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US10108427B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
WO2016097802A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on long load cycles in an out-order processor |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
WO2016097790A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor |
US9645827B2 (en) | 2014-12-14 | 2017-05-09 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
WO2016097791A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
WO2016097815A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US9703359B2 (en) | 2014-12-14 | 2017-07-11 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
WO2016097814A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude shared ram-dependent load replays in out-of-order processor |
WO2016097793A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on off-die control element access in out-of-order processor |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10146546B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Load replay precluding mechanism |
US10095514B2 (en) | 2014-12-14 | 2018-10-09 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
US10635446B2 (en) * | 2015-09-24 | 2020-04-28 | Qualcomm Incorporated | Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction |
CN106557301B (zh) * | 2015-09-25 | 2019-05-07 | 上海兆芯集成电路有限公司 | 经由多级保留站结构的发射指令分派方法 |
US9606805B1 (en) | 2015-10-19 | 2017-03-28 | International Business Machines Corporation | Accuracy of operand store compare prediction using confidence counter |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) * | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US20170286114A1 (en) * | 2016-04-02 | 2017-10-05 | Intel Corporation | Processors, methods, and systems to allocate load and store buffers based on instruction type |
US11687345B2 (en) | 2016-04-28 | 2023-06-27 | Microsoft Technology Licensing, Llc | Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers |
US10740107B2 (en) * | 2016-06-01 | 2020-08-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing load-hit-store handling |
US10067762B2 (en) * | 2016-07-01 | 2018-09-04 | Intel Corporation | Apparatuses, methods, and systems for memory disambiguation |
US20190303743A1 (en) * | 2016-08-13 | 2019-10-03 | Intel Corporation | Apparatuses, methods, and systems for neural networks |
US11048506B2 (en) * | 2016-08-19 | 2021-06-29 | Advanced Micro Devices, Inc. | Tracking stores and loads by bypassing load store units |
CN106406822B (zh) * | 2016-09-18 | 2019-02-15 | 上海兆芯集成电路有限公司 | 具有改进的别名队列和存储冲突检测的处理器 |
US10684859B2 (en) * | 2016-09-19 | 2020-06-16 | Qualcomm Incorporated | Providing memory dependence prediction in block-atomic dataflow architectures |
US20180081806A1 (en) * | 2016-09-22 | 2018-03-22 | Qualcomm Incorporated | Memory violation prediction |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
RU2020100072A (ru) | 2017-07-11 | 2021-08-11 | Пфайзер Инк. | Иммуногенные композиции, содержащие cea, muc1 и tert |
US10725782B2 (en) * | 2017-09-12 | 2020-07-28 | Qualcomm Incorporated | Providing variable interpretation of usefulness indicators for memory tables in processor-based systems |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10387311B2 (en) | 2018-01-11 | 2019-08-20 | International Business Machines Corporation | Cache directory that determines current state of a translation in a microprocessor core cache |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
CN108920191B (zh) * | 2018-06-05 | 2020-11-20 | 上海兆芯集成电路有限公司 | 处理器电路及其操作方法 |
US11099846B2 (en) * | 2018-06-20 | 2021-08-24 | Advanced Micro Devices, Inc. | Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US11113055B2 (en) | 2019-03-19 | 2021-09-07 | International Business Machines Corporation | Store instruction to store instruction dependency |
US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
US10929142B2 (en) | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US11392410B2 (en) * | 2020-04-08 | 2022-07-19 | Microsoft Technology Licensing, Llc | Operand pool instruction reservation clustering in a scheduler circuit in a processor |
US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
US11474821B1 (en) | 2021-05-12 | 2022-10-18 | International Business Machines Corporation | Processor dependency-aware instruction execution |
KR20230063791A (ko) * | 2021-11-02 | 2023-05-09 | 리벨리온 주식회사 | 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법 |
Family Cites Families (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4521851A (en) | 1982-10-13 | 1985-06-04 | Honeywell Information Systems Inc. | Central processor |
US4594660A (en) | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Collector |
US4860199A (en) | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Hashing indexer for branch cache |
US5487156A (en) | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5276825A (en) | 1991-03-12 | 1994-01-04 | Chips & Technologies, Inc. | Apparatus for quickly determining actual jump addresses by assuming each instruction of a plurality of fetched instructions is a jump instruction |
US5488729A (en) | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
JPH0820949B2 (ja) | 1991-11-26 | 1996-03-04 | 松下電器産業株式会社 | 情報処理装置 |
DE4237417C2 (de) | 1992-03-25 | 1997-01-30 | Hewlett Packard Co | Datenverarbeitungssystem |
JP3199465B2 (ja) | 1992-07-22 | 2001-08-20 | 株式会社日立製作所 | 情報処理装置 |
KR100248903B1 (ko) | 1992-09-29 | 2000-03-15 | 야스카와 히데아키 | 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템 |
US5619662A (en) | 1992-11-12 | 1997-04-08 | Digital Equipment Corporation | Memory reference tagging |
US5467473A (en) | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
GB2281442B (en) | 1993-08-24 | 1997-06-11 | News Distribution Limited | Manufacture of wound capacitors |
US5471598A (en) | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
DE69429612T2 (de) | 1993-10-18 | 2002-09-12 | Via-Cyrix, Inc. | Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline |
DE69429061T2 (de) | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5588126A (en) | 1993-12-30 | 1996-12-24 | Intel Corporation | Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system |
US5465336A (en) | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US6216200B1 (en) | 1994-10-14 | 2001-04-10 | Mips Technologies, Inc. | Address queue |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5625789A (en) | 1994-10-24 | 1997-04-29 | International Business Machines Corporation | Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle |
US5784586A (en) | 1995-02-14 | 1998-07-21 | Fujitsu Limited | Addressing method for executing load instructions out of order with respect to store instructions |
US5802588A (en) | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US5832297A (en) | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
US5887152A (en) | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5625835A (en) | 1995-05-10 | 1997-04-29 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor |
US5761712A (en) | 1995-06-07 | 1998-06-02 | Advanced Micro Devices | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array |
US5717883A (en) | 1995-06-28 | 1998-02-10 | Digital Equipment Corporation | Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program |
US5652859A (en) | 1995-08-17 | 1997-07-29 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues |
US5710902A (en) | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
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 |
US5835747A (en) | 1996-01-26 | 1998-11-10 | Advanced Micro Devices, Inc. | Hierarchical scan logic for out-of-order load/store execution control |
US5754812A (en) | 1995-10-06 | 1998-05-19 | Advanced Micro Devices, Inc. | Out-of-order load/store execution control |
US5799165A (en) | 1996-01-26 | 1998-08-25 | Advanced Micro Devices, Inc. | Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay |
US5781790A (en) | 1995-12-29 | 1998-07-14 | Intel Corporation | Method and apparatus for performing floating point to integer transfers and vice versa |
US5822559A (en) | 1996-01-02 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions |
US5742791A (en) | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5748978A (en) | 1996-05-17 | 1998-05-05 | Advanced Micro Devices, Inc. | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
US5781752A (en) | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US6016540A (en) | 1997-01-08 | 2000-01-18 | Intel Corporation | Method and apparatus for scheduling instructions in waves |
US5923862A (en) | 1997-01-28 | 1999-07-13 | Samsung Electronics Co., Ltd. | Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions |
US5768555A (en) | 1997-02-20 | 1998-06-16 | Advanced Micro Devices, Inc. | Reorder buffer employing last in buffer and last in line bits |
US5996068A (en) | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US6021485A (en) | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US5850533A (en) | 1997-06-25 | 1998-12-15 | Sun Microsystems, Inc. | Method for enforcing true dependencies in an out-of-order processor |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
US6122727A (en) | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
US6212623B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Universal dependency vector/queue entry |
US6141747A (en) | 1998-09-22 | 2000-10-31 | Advanced Micro Devices, Inc. | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word |
US6658554B1 (en) | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US6393536B1 (en) | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6728867B1 (en) | 1999-05-21 | 2004-04-27 | Intel Corporation | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point |
US6625723B1 (en) | 1999-07-07 | 2003-09-23 | Intel Corporation | Unified renaming scheme for load and store instructions |
US6481251B1 (en) | 1999-10-25 | 2002-11-19 | Advanced Micro Devices, Inc. | Store queue number assignment and tracking |
US6523109B1 (en) | 1999-10-25 | 2003-02-18 | Advanced Micro Devices, Inc. | Store queue multimatch detection |
US6658559B1 (en) | 1999-12-31 | 2003-12-02 | Intel Corporation | Method and apparatus for advancing load operations |
US6542984B1 (en) | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
US6622237B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
US6502185B1 (en) | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
US6651161B1 (en) | 2000-01-03 | 2003-11-18 | Advanced Micro Devices, Inc. | Store load forward predictor untraining |
US6694424B1 (en) * | 2000-01-03 | 2004-02-17 | Advanced Micro Devices, Inc. | Store load forward predictor training |
US6678807B2 (en) | 2000-12-21 | 2004-01-13 | Intel Corporation | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
US6571318B1 (en) | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
JP3729087B2 (ja) | 2001-05-23 | 2005-12-21 | 日本電気株式会社 | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 |
US20030065909A1 (en) | 2001-09-28 | 2003-04-03 | Jourdan Stephan J. | Deferral of dependent loads until after execution of colliding stores |
US20030126409A1 (en) | 2001-12-28 | 2003-07-03 | Toni Juan | Store sets poison propagation |
US6918030B2 (en) | 2002-01-10 | 2005-07-12 | International Business Machines Corporation | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures |
US7062617B2 (en) | 2002-03-26 | 2006-06-13 | Intel Corporation | Method and apparatus for satisfying load operations |
US7181598B2 (en) | 2002-05-17 | 2007-02-20 | Intel Corporation | Prediction of load-store dependencies in a processing agent |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
US7415597B2 (en) * | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
US7506105B2 (en) | 2005-05-02 | 2009-03-17 | Freescale Semiconductor, Inc. | Prefetching using hashed program counter |
US7376817B2 (en) | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US7590825B2 (en) | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
JP2007293814A (ja) * | 2006-03-28 | 2007-11-08 | Handotai Rikougaku Kenkyu Center:Kk | プロセッサ装置とその処理方法 |
US7461238B2 (en) | 2006-06-07 | 2008-12-02 | International Business Machines Corporation | Simple load and store disambiguation and scheduling at predecode |
GB2445965B (en) * | 2007-01-26 | 2011-05-04 | Advanced Risc Mach Ltd | Entry replacement within a data store |
US20080209190A1 (en) | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Parallel prediction of multiple branches |
US8200992B2 (en) | 2007-09-24 | 2012-06-12 | Cognitive Electronics, Inc. | Parallel processing computer systems with reduced power consumption and methods for providing the same |
US8151084B2 (en) | 2008-01-23 | 2012-04-03 | Oracle America, Inc. | Using address and non-address information for improved index generation for cache memories |
US8566565B2 (en) | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
US8285947B2 (en) | 2009-02-06 | 2012-10-09 | Apple Inc. | Store hit load predictor |
US7975132B2 (en) | 2009-03-04 | 2011-07-05 | Via Technologies, Inc. | Apparatus and method for fast correct resolution of call and return instructions using multiple call/return stacks in the presence of speculative conditional instruction execution in a pipelined microprocessor |
US8099566B2 (en) | 2009-05-15 | 2012-01-17 | Oracle America, Inc. | Load/store ordering in a threaded out-of-order processor |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8768313B2 (en) | 2009-08-17 | 2014-07-01 | Digimarc Corporation | Methods and systems for image or audio recognition processing |
US8635428B2 (en) | 2009-12-09 | 2014-01-21 | Oracle America, Inc. | Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes |
US8521992B2 (en) | 2009-12-22 | 2013-08-27 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
-
2012
- 2012-05-04 US US13/464,647 patent/US9128725B2/en active Active
-
2013
- 2013-04-23 WO PCT/US2013/037809 patent/WO2013165754A1/en active Application Filing
- 2013-04-25 EP EP13165284.4A patent/EP2660716B1/en active Active
- 2013-05-02 BR BR102013010877-4A patent/BR102013010877B1/pt active IP Right Grant
- 2013-05-02 JP JP2013096795A patent/JP2013239166A/ja active Pending
- 2013-05-03 TW TW104113982A patent/TWI529617B/zh active
- 2013-05-03 KR KR1020130049975A patent/KR20130124221A/ko not_active Application Discontinuation
- 2013-05-03 CN CN201310323392.0A patent/CN103455309B/zh active Active
- 2013-05-03 TW TW102115961A patent/TW201403463A/zh unknown
-
2015
- 2015-06-09 KR KR1020150081361A patent/KR101555166B1/ko active IP Right Grant
- 2015-08-17 JP JP2015160285A patent/JP5965041B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US9128725B2 (en) | 2015-09-08 |
CN103455309B (zh) | 2016-12-28 |
TW201403463A (zh) | 2014-01-16 |
KR20150075067A (ko) | 2015-07-02 |
BR102013010877A2 (pt) | 2015-06-30 |
JP5965041B2 (ja) | 2016-08-03 |
TW201531939A (zh) | 2015-08-16 |
WO2013165754A1 (en) | 2013-11-07 |
KR101555166B1 (ko) | 2015-09-22 |
BR102013010877B1 (pt) | 2021-07-06 |
EP2660716B1 (en) | 2016-11-02 |
EP2660716A1 (en) | 2013-11-06 |
US20130298127A1 (en) | 2013-11-07 |
JP2013239166A (ja) | 2013-11-28 |
KR20130124221A (ko) | 2013-11-13 |
CN103455309A (zh) | 2013-12-18 |
JP2015232902A (ja) | 2015-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI529617B (zh) | 載入儲存相依性預測器內容管理 | |
TWI552069B (zh) | 載入-儲存相依性預測器、用於在載入-儲存相依性預測器中處理操作的處理器與方法 | |
US9582276B2 (en) | Processor and method for implementing barrier operation using speculative and architectural color values | |
US9710268B2 (en) | Reducing latency for pointer chasing loads | |
US9448936B2 (en) | Concurrent store and load operations | |
US9524164B2 (en) | Specialized memory disambiguation mechanisms for different memory read access types | |
KR101497214B1 (ko) | 루프 버퍼 학습 | |
US8856447B2 (en) | Converting memory accesses near barriers into prefetches | |
US8006075B2 (en) | Dynamically allocated store queue for a multithreaded processor | |
US10437595B1 (en) | Load/store dependency predictor optimization for replayed loads | |
CN103513964A (zh) | 循环缓冲器打包 | |
US11928467B2 (en) | Atomic operation predictor to predict whether an atomic operation will complete successfully | |
US9367455B2 (en) | Using predictions for store-to-load forwarding | |
US20180307492A1 (en) | System and method of reducing processor pipeline stall caused by full load queue | |
CN118633078A (zh) | 条件指令预测 | |
US7900023B2 (en) | Technique to enable store forwarding during long latency instruction execution |