TWI362613B - System and method for validating a memory file that links speculative results of load operations to register values - Google Patents

System and method for validating a memory file that links speculative results of load operations to register values Download PDF

Info

Publication number
TWI362613B
TWI362613B TW094114201A TW94114201A TWI362613B TW I362613 B TWI362613 B TW I362613B TW 094114201 A TW094114201 A TW 094114201A TW 94114201 A TW94114201 A TW 94114201A TW I362613 B TWI362613 B TW I362613B
Authority
TW
Taiwan
Prior art keywords
job
load
speculative
address
storage
Prior art date
Application number
TW094114201A
Other languages
English (en)
Other versions
TW200606709A (en
Inventor
Benjamin T Sander
Krishnan V Ramani
Ramsey W Haddad
Mitchell Alsup
Original Assignee
Globalfoundries Us Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Globalfoundries Us Inc filed Critical Globalfoundries Us Inc
Publication of TW200606709A publication Critical patent/TW200606709A/zh
Application granted granted Critical
Publication of TWI362613B publication Critical patent/TWI362613B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

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

1362613 .九、發明說明: -【發明所屬之技術領域】 ♦ • 本發明係有關處理器之領域,尤係有關執行在處理器 Ψ 中資料推測式的執行(data-speculative execution)。 【先前技術】 超純里處理裔(superscalar processor)藉由同時執 打多個指令,並使用與該等處理器的設計一致的可能達到 籲之最短時脈週期,而實現高效能。然而,各指令間之資料 -及控制流相依性可能會限制可在任何特定時間發出的指令 之數目。因此’ 一些處理器支援推測式執行,以便得到額 外的效能增益❶ 、 -種類型的推測是控制流推測(_〇1心 speculation)。控制流推測預測程式控制將進行的方向。 將分支預測(branch…用來預測是否將 .法的範圍自每次簡單地作出二分支預測方 下出相冋的預測至維護程式中先前 分支的複雜歷史以便作出其 仵化H哭、 史的預測。可利用硬體最 I。取佳化、或以上兩者來幫助分支預測。可根 據分支預測機制所提供的 ' 並執行指令。當最測方式提取…⑽ 了刀支4日令時,即可證實今公古 預測。如杲預測是錯誤的,則可士止 ' 以推測方式執行的任何指令是^誤的預測而 曾刪的另—種類型之推測是資 叩⑽13加)。例如,預測資料項目的值之值預測㈣ue 92769 1362613 • 丨〇n )可此涉及觀測資料中之型樣以及根據這些型 ,樣而作出預測(例如’可觀測指標計數器變數的先前值遞增 或遞減之方式,而預測該指標計數器變數的值)。位址預測 (address predlctl〇n)涉及資料位置的預測。又一種類型 的貧料推測稱為記憶體系統樂觀式存取(mem〇ry巧s_ =mism)。在多處理1^統中,當處理If在-致性檢查 二erency checking)s成之前,使用來自該處理器的本 "取„ (local cache)之資料而以推測方式執行指 二:即發生記憶體系統樂觀式存取。同樣地, 具有未計算出的位址的儲存:=)在;:載… 义— 卞菜Cstore)之前以推測方戎 取::=Γ:ί作業可能將資料儲存到該載入作業所存 止也谷砟此種推測式執行。在所有這些類型的 貝二測中’最後將評估根本的條件,而可證實哎取消 (—〇)該推測。如果該推測是以錯 、:戈取4 後的及(或)非推測f '、,°束則了(利用更新 指令。 ㈣貝科)重新執行使用推測資料而執行的 / 可㈣等候相錄檢查的完成㈣續 仃 右因正確推測而得到的效能超過因錯镆推、丨 失的效能,則可實現祝的效能增益。因此,二 復。 推」^在錯誤推測時提供有效率的恢 【發明内容】 本發明揭示了用來將載入作業的推測結果連結到暫存 92769 6 厶υ丄j .· * 、J系、冼及方法之各種實施例。在-個實施例中,系统 .被案(咖。ryiile),該記憶體㈣包含組態 =疋成財第—定㈣樣(addresslngpatt㈣及第一 ㈣嶋案之組態被 第二定㈣Γ 含的該第一定址型樣與载入作業的 中儲存的’且其中若該第二定址型樣與該資料項 設定成將;ί 了型樣相符’則該記憶體槽案之組態被 推測結果識別的資料值連結到該載入作業的 執行核心,im 7包含4合到該記憶體棺案的 或多個位… 與該載人作業的該推測結果間之連結。 過荦包::!:例中,系統可包含記憶體樓案’該記憶體 料項設定成儲存第一定址型樣及第一標記的資 含的今第r己憶體播案之組態被設定成將該資料項中包 =::=型樣與載入作業的第二定址型樣比較,且 产相Λ,二—疋址型樣與該資料項中儲存的該第-定址型 ;別二=遺記憶體槽案之組態被設定成將該第-標記所 連結到該載入作業的推測結果。該系統可進 眇在取,… 載作業相依的第二作業 /敎果’以及搞合到該記憶體檔案的功能單 92769 7 1362613 '元且6亥功鲍單元之組態被設定成執行該推測結果與該载 '入作業的貫際結果間之比較而驗證該第一標記所識別的資 • 料值與該載入作業的該推測結果間之連結。 、 4 【實施方式】 第1圖是處理器(1 〇〇)的一個實施例之方塊圖。處理器 (100)之組態被設定成執行系統記憶體(2〇〇)中儲存的指 令。午夕這些4a令對糸統s己憶體(2 〇 〇 )中儲存的資料執行作 籲業。請注意,系統記憶體(2〇〇)可以在實體上分散於電腦系 統各處,且一個或多個處理器(1〇〇)可存取該系統記憶體 (200) 。 、 a 處理器(100)可包含指令快取記憶體(1〇6)及資料快取 記憶體(128)。處理器(1〇0)可包含耦合到指令快取記憶體 (106)的預先提取單元(prefetch unit)(1〇8)。可將派發單 元(dispatch urnt)(104)之組態設定成自指令快取記憶體 (1 0 6)接收指令並將作業派發到一個或多個排程器 修(scheduler) (II8)。一個或多個排程器(118)可耦合成自派 發單元(104)接收被派發的作業並將作業發出到一個或多 個執行核心(124)。執行核心(124)可包含組態被設定成執 行對資料快取記憶體(1 2 8 )的存取之載入/儲存單元 (126)。可將一個或多個執行核心(124)所產生的結果輪出 到結果匯流排(result bus)(130)。可將這些結果用來作為 俊續發出的指令之運异元值,及/或儲存到暫存器播 (116)。可將退休符列(retire queue)(102)雜合到一個或 多個排程器(118)及派發單元(1 〇4)。可將該退休仵列之組 92769 1362613 、態設定成決定何時可使每—發出的作業退休。在—個實施 _、例中彳將處理裔(1 〇〇)设計成與架構相容。請注意, 處理。。(10 0)亦可包含其他的組件。例如,處理器(1 〇 〇)可 包含分支預測單元(圖中未示出)。 在派發單元(104)接收到指令之前’指令快取記憶體 006)可暫時儲存這些指令。可經由預練取單元(⑽)自 系統記憶體(2G0)預先提取指令碼(㈣加咖⑺心),而 籲將指令碼提供給指令快取記憶體⑴…可以各種組態(例 如^组關聯式⑹卜咖仏❿小完全關聯式 (fu^lly-associative) > ^ ^ (direct-mapped)) 來貫施指令快取記憶體(106)。 八預先提取單元(⑽)可自线記憶體(⑽)預先提取指 I碼’以供儲存在指令快取記憶體(1G6)内。在-個實施例 ί ?μ、可將t預先提取單元(1 〇8)之組態設定成自系統記憶體 將碼叢發(burst)到指令快取記憶體(1 〇6 )。預先 魯^單元(⑽)可採用各種衫的指令碼預紐取技術及 單兀⑴4)可輸出其中包括執行核心(124)可執行 ^立元編碼作業⑹t-e卿㈣啊心心運算元位址資 即資料、及/或偏移值資料⑷SPW咖t data)、 r ::。在某些實施例中,派發單元(1 0 4 )可包含解碼電路 ^圖中未示幻,用以將某些指令解媽成可在執行核心(124) 订的作業。簡單的指令可對應於單-作業。在某些實 &列中,較複雜的指令可對應於多個作業。在將涉及暫存 92769 9 丄允2613 .器的更新之作業解碼時,可保留暫存㈣⑴6)内的 位置,以便儲存預測的暫存器狀態(在替代實施例中:可; 重衝區(reorderbuifer)用來儲存每—暫存器的 或夕個預測的暫存器狀態)。暫存器對映單元 =lster map)(134)可將來源及目標運算元的邏輯暫存 為名稱轉換為實體暫存器讀,以便有助於暫存 單元⑽)可追縱暫存器標⑴6)内㈣些暫存 °。目則被分配及未被分配。 第1圖所示之處理器(100)支援非循序執行(〇ut 〇ί order)。退休❹K1Q2)可針對暫㈣讀取及寫 =㈣程式順序,可進行推測式指令執行及分支錯誤^ =设’亚可協助精確的異常處理。在某些實施例中, :心5°2)亦:提供用於推測的暫存器狀態之資料值 的 ㈣存$更名。在許多實施例中,退休彳宁列(1〇2) 广可類似於重新排序緩衝區。然而,與典型的重新排 料值的儲存。在;2;^宁列(1〇2)可能不提供任何資 ^ ^ 在某二例中,可以先進先出的組態來實 :而在該組態中,當作業被確認(~ ;移到該緩衝區的“底部”,因而將空間讓給在 =仵列⑽)可將暫存器槽⑴6)= ==器狀態之暫存器解除分配,並將用來指示哪㈣ 二=信號提供給暫存器對映單元⑴4)。藉* ..一⑽⑴6)内(或在—替代實施例中為在一重新排 92769 1362613 ' )的預測的暫存器狀態直到產生這些狀態的該 •寻作業被確認為止,甚八±0 如断使,料在暫存器 推測方式執行的作業之結果無^(mispredlctedpa⑻以 位署在將#疋的作業解碼時’如果所需的運算元是暫存器 (或重::=存器位址資訊傳送到暫存器對映單元⑴4) 元的、鞋时衝區)。例如,在Χδ6架構中,有八個32位 εΓΛ!ρ 1Τ,ΕΜ 包人用於合戸'肢暫存器檔(ιΐ6)(或重新排序緩衝區) s ^改變這些邏輯暫存器的内容的結果 :存非猶輪。可分配暫存器播(_中之實體 的内三:於解碼w被決定將修改其中-個邏輯暫存器 點上—作業之結果。因此,在執行特定程式的各時 可呈有V/檔(116)(或替代實施例中之重新排序緩衝區) 個暫存特定邏輯暫存器的推測式執行内容之一個或多 為作2益對映單元(134)可將實體暫存器指派給被指定 可冰=目f運算元之特^邏輯暫存器。派發單元(1⑷ 存益槽(116)具有被指派給被指定為特定作業的 蕲;、。。异:的邏輯暫存器之-個或多個先前被分配之實體 二子:。曰存器對映單元(134)可提供最近被相派給該邏輯 ===體暫存器之標記。可將該標記用來存取暫存器 : 之運#元的資料值’或用來經由結果SWK13()) 运' 結果而H資料值。士口果該運算元對應於記憶位 92769 11 丄 • = (118)可儲存待處理的作業之作業資訊。此外,每 .:可儲存已被執行過但仍然可能再度被發出 資Ifl。嵙η — r示 < 作系 作章執行時可取得任何所需運算元的值,而將 出到一個或多個執行核心(124)。因 H Jill ^ V 系的執 …、 此舁原始程式指令序列的順序並不相同。可將涉 .:料推測的作業保留在-個或多個排程器⑴8)中,直到 °玄等作業變為非推測式為止’因而若該資料推測是錯誤 _的,則可重新發出該等作業。 B °、 —個實施例中,每一執行核心(124)可包含組態被設 成執:加法及減法的整數算術運算、以及移位、旋轉、 C輯運|、及分支作業之若干組成部分。亦可包含浮點單 元({1«^1:1叩〇〇1111:111111:),以便配合浮點運算。可將一個 或多個執行核心(124)之組態設定成為載入/儲存單元 (126)將要執行的載入及儲存記憶體作業而執行位址產生 (address generation)。 • 一執行核心(124)亦可將與有條件分支指令的執行有關 之資訊提供給分支預測單元,因而,如果該分支被錯誤預 測,則該分支預測單元可清除在該錯誤預測的分支之後的 已進入彳曰令處理官線之各指令,並使預先提取單元〇〇8) 更改提取的方向。被改向的預先提取單元(108)然後可開始 自指令快取記憶體(106)或系統記憶體(2〇())提取一組正確 的指令。在此種情形中,可捨棄原始程式序列中在該錯誤 預測的分支指令之後發生的指令結果,其中包括先前以推 測方式執行的且暫時被儲存在暫存器檔(116)中之那些指 92769 1362613 令結果。如果暫#器值正在更新,則可在結果匯流排(i3〇) 上,一個或多個執行核心⑽)内的各組成部分所產生的 二不輸出到暫存器檔⑴6)。如果正在改變記憶位置的内 ί 。個-或多個執行核心〇24)内產生的結果提供給 載入/儲存單元(126)。 (124)1^/儲存早1(126)提供了 —個或多個執行核心 (⑽契貧料快取記憶體⑽)間之介面。在—個實施例 :’可以具有用於待處理的載入或儲存作業的資料及位址 貝说的數個儲存位置之載入/儲. 單元⑽。載入/儲存單^配置載入/儲存 理的儲广i匕八叫 早凡(126)亦執行載入指令與待處 之相依性檢查,以便確保維持資料一致性。 儲存單元(126)盥系統子在載入/ 隱,(2〇〇)之間轉移的資料而設之 决取圯憶體。如同前文所述之指令 其令包括組關聯式組態的各種^思組1〇6),可以 取、,己憶體組態來實施資料 取記憶體(_·^ Cache)來4;二 以統一式快 資料快取記憶體⑽)。令快取記億體⑽)及 迄憶體檔案 第2A圖示出派發單元⑽)的一個 例令,派發單元(104)包含暫存哭對盹。。 在。/只施 播案⑽)。如前文所述,元(134)及記憶體 能#定士担糾叔六。。 了將暫存杰對映單元(134)之組 心、5又疋成k供暫存态更名。暫存哭 一來泝3 _ AA 存。。對映早元(134)可接收每 仏運异兀的邏輯暫存器名稱,並輪出最近被指 92769 14 1362613 ..定給邏輯暫存器的實體暫存器之實體暫存器名稱。雕 •禮案(132)包含記憶體檔案控制器⑵2)及記 ^二 單元(204)。 、田*儲存 記憶體檔案儲存單元(2〇4)包含一個或多個資料項 (entry)(220)。每一資料項(220)可包含定址型樣、 (address i ng pa11ern) (2〇6 )、以及與該資料項的定址型 相關聯之標記(208)。當產生資料值時,每一標記可藉由^ 鲁示將把該資料值儲存在何處(例如,儲存在一重新排序緩= 區内或一暫存器檔(116)内),而識別該資料值。例如'·,二 圖式之實施例所示,每一標記可識別暫存器對映單元(MG 所才S示的被分配以儲存該資料值之實體暫存器。每一定址 型樣可包含用來指定作業中之位址的資訊之全部或部2。 例如,請參閱第2Β圖,圖中示出例示的定址型樣(20^)。 在該實施例中,定址型樣(2〇6)包含基底邏輯暫存器名稱 (210)、索引邏輯暫存器名稱(212)、及偏移值(214)。某些 肇定址型樣(206)可包含用來識別記憶體中之特定區段的暫 存态之區段邏輯暫存器名稱(segment 1〇gical name)。在某些實施例中,可利用數個暫存器、鎖存器 (latches)、正反器(fi ip-fiops)、或其他以時脈觸發的儲 存單元(clocked storage)來實施記憶體檔案儲存單元 (204)。在替代實施例中’記憶體檔案儲存單元(2〇4)可包 含一個或多個隨機存取記憶體(Random Access Mem〇ry ;簡 稱RAM)單元。 請注意,在某些實施例中,記憶體檔案儲存單元(2〇4) 92769 1362613 :儲存的定址型樣⑵6)可包含比為作業指定的所有定址 ·.貢訊少的資訊。例如,記憶體槽案儲存單元(2〇4)中之 項可儲存比用來指定偏移值攔位(214)内的偏移值的所貝有 位凡少之位兀。在其他的實施例中,記憶體槽案控制哭(2 :根據該記憶體樓案内的資料項是否可儲存特定作業的所 而選擇性地選擇是否要分配記憶體槽案儲存 )中之貝料項。例如,如杲記憶體槽案儲存單元 04)中之每資料項最多可儲存16位元的偏移值資訊,且 業的Μ資訊包含24位元的偏移值資訊,則記憶體 田:控制益(2 0 2 )可不將記憶體檔案資料項分配給該作業 的疋址資訊。 〆、 記憶體檔案控制器(2 〇 2 )可將未派發的作業 定址型樣與記憶體擋案儲存單元(2〇4)中各資料項内儲存 =那些定址型樣比較。如果作業的定址型樣不符合記憶體 k案儲存單元(2G4)中各資料項内目前所儲存的任何定址 •型樣(亦即,該作業的定址型樣未命中⑷ss)該記憶體檔案 储存,元),則記憶體槽案控制器(2G2)可分配記憶體槽案 諸存單兀(204)中之新資料項,用以儲存該作業的^址型樣 之全部或部分。如果記憶體檔案儲存單元(204)内沒有可供 分配的,置之資料項,則記憶體檀案控制器(2。2)可使 用。者如最近最少使用(Least Recently ;簡稱⑽)、 $進先出(First In,First Out ;簡稱FIFO)、隨機替換 等的替換機制而選擇要被覆寫的資料項。 記憶體檔案控制器(2〇2)除了在被分配的資料項内儲 92769 )6 舍到—個或多個排程器⑴8)時 .所輪出的標記提供給料—個以個_2) 的值C ⑽)可回應該標記所識別 中ablllty)(例如,在暫存㈣(U6)
(二·=⑽)上),而發出载入作業。執行核J 唁被、卓,士 τ 4入作業’因而在結果匯流排(13〇)上廣样 " 口的值,作為該載入作業的推測社果(杜、、主立二田 些實施例中,钤弁λ仏旅 $果(明注意,在某 不以旌i» 4 - ^ 冑的結果所產生之資料值本身可以 施Μ 為或以其他方式識別為推測值)。在其他的恭 二’可將該標記儲存在推測對映心 ::到該载入作業的推測結果,且將於下文中說明it (例如,二:因而一旦可取得該標記所識別的資料值 可轉二:料:器=16)中或在結果匯流排(13〇)上),即 作為該載入作業的推測結果,以便使用 果而可輪相㈣作t。在議形中,此種 么可以u各相㈣作業的執行延遲料取 ^推測結果更快地使用載入作業的推測結果而執行該; 料值的。在某些實施例中,可執行載人作業而轉送資 村值’因而該資料值被輪出 竹、貝 入你I 称出到結果匯流排(130),作為該載 :的推測結果。例如,在一個實施例中,並 =耗=個時脈週期而執行載入作業(假設該載入作 ί:中娜取記憶體(128)),而是藉由輸出資料值及用 來識別該資料值的標記作為載入結果,而在單一週期中執
1S 92769 叫 e>i3 载入作業。在其他的實施例中,可在作業派發時將記 =體檔案控制器(2〇2)所輸出的標記直接提供給各相依的 2業ί具有载入作業所產生的運算元之作業)作為推測的運 凡來源,而以更間接之方式轉送資料值。用來轉送 值的裝f可包括下列各裝置中之一項或多項:派發單元’, =派,單元之組態被設定成將該載人作業修改成以推測式 存。。至暫存态(register_t〇_register)移動作業之方弋 j行,或被設定成將作為推測的運算元來源標記^該輕二 =給相依的作業;排程器,該排程器之組態被設定缝 "破連結的資料值之可取得性而發出祕改的載入及 的作業;以及執行核心,該執行核心之組態被設定 j輸出㈣連結的資料值作為該載人作㈣結果,或被設 疋成使用該被連結的資料值而執行該相依的作業。°又 記憶體檀案⑽)追縱存取資料快取記憶體 ⑽)(或糸統記憶體(_)中之資料的作業之定址型樣。 中儲存的暫存器值可被連結到記憶體的 : 中㈣雜。請注意’記憶體檔案(132)容許在將 ,用來把暫存器值連結到推測的載入結杲的作業流中彼此 相對被移動的各作業間之相依性。因此,記憶體槽宰可提 ^可被數個發生於其間的作業分隔的各作業間之相依性歷 更0 作業的推測結果連結 方法的-個實施例之流程圖。在步驟(㈣中,使暫 記與定址型樣相關聯’而指示該暫存器及該位址都有;: 92769 19 1362613 的_值D第—載人或儲存作㈣定該標記 .送疋址型樣。例如,如杲該第一作業是 標記可識別為了儲存載入結果而被分配的實體漸存哭則= ::定址型樣用來計算該載入作業的位址。 作,反而是健存作業,則該定址型樣可指示該儲存作業的 =之位址,且該標記可識別_存作業所儲存的資料。 例中,可將該標記及該定址型樣儲存在記憶體 貝抖項巾’而使該標記與該定㈣樣相關聯。 =驟⑽至305)所示’如果载入作業的定址型樣盘 作業㈣址型樣相符,則可將該載人作㈣推測結果 、‘到被指定給該第一作業的標記所識別之資料值。如牛 =(挪至3⑴所示’如果該載入作業的定址型樣與第一 ^ f的疋址型樣不相符,則可使該載人作業的定址型樣料 載入作業的目標之標記相關聯(例如,藉由將該定址型费及 賴記儲存在記憶體樓案的資料項中)。此外,如步^ !所不,可存取資料快取記憶體而正常地執行.該“ 在一=實施例中’可將該載入作業的定址型樣與—個二上 的先刖作業之定址型樣比較。例如’可將該載入作 址型樣與記憶體標案中目前儲存的每—定址型樣比’ 如果該載入作業的推測結果連結到該標記所識㈣ 料值,則如步驟(307)所*,可將該資料值轉送到—貝夕 個相依的作業’作為該載入作業的推測結果。如將於;I 中更詳細說明的’可經由結果轉送或藉由轉送各相依的作 業可使用該資料值作為推測的運算元來源之指示,而轉送 92769 20 I362613 在;個實施例中’如果經由結果轉送而轉送該 •(,、 亥貝科值的作業完成執行的一個週期 ^ )之錢㈣經轉料⑽值㈣行各相依的作 .!:如:經由各相依的作業可使用實體暫存器作為推測的 堤异7L來源之指示而韓送兮咨 的作業完成執行時,立即發出久,了在產生6亥貧料值 P毛出各相依的作業。如步驟(3G9) 二斤:’可在證實該推測結果之前’先轉送該推測結果二 ^無須存取資料快取記億體的情形下轉送該推測結果 即,可以比藉由存取資料炔敢 更快速地轉送推測結果)。、 而產生的非推測結果 :果;=(3。9)中證實該推測結果是正確的 J她丁應取記憶體存取之情形下完 如果在步驟⑽9)中Μ該推測結果是錯誤的,= =丁貰料快取記憶體存取,以便取得正確的結果(圖中未 )。如果確係如此,則可使用該載人作業的正確处果 :Γ= 吏用广作業的推測結果執行的任二依的 、〜的—貝料值作為該載入作業的推測結果之前, 連 =9)中執行該證實。在此種情形中,可正常地執行= 業,或者如果決定該連結是正確的,則可轉送該 為該載入作業的非推測結果。 /、/-乍 為了進一步解說記憶體檔案(132)的作業 几(104)將要處理的-序列的作業包含下列作t Λ w 5早 M〇V EBX, [EDX + ΕΑΧ - displacement A] ' α〇Α〇 92769 21 1362613 . MOV ECX, [EDX + EAX - displacement A] (LOAD 2) MOV [EDX + EAX - displacement A], EAX (STORE 1) 在程式順序中可以一個或多個發生於其間的作業分隔這些 作業中之每一作業。如上式所示,這些作業中之每一作業 都包含相同的定址型樣EDX + EAX - displacement A。 _ 當將LOAD 1的定址型樣提供給記憶體檔案(132)時, 記憶體檔案控制器(202)可檢查記憶體檔案儲存單元(204) 中是否有與LOAD 1的定址型樣相符的定址型樣。假設該定 址型樣並未命中記憶體檔案儲存單元(204),則記憶體檔案 控制器(202)可分配資料項(藉由使用未分配的資料項,或 藉由覆寫業已分配的資料項),以便儲存該載入作業的定址 型樣之全部或部分、以及暫存器對映單元(1 34)所提供的該 載入作業的目標實體暫存器之實體暫存器名稱。因為該載 鲁入作業未命中該記憶體檔案儲存單元,所以記憶體檔案控 制器(202)可不輸出該載入作業的標記。 當記憶體檔案(132)接著處理LOAD 2時,該載入作業 的定址型樣可符合回應LOAD 1而被分配的資料項中之定址 型樣(假設尚未回應發生於其間的作業而覆寫LOAD 1的資 料項)。記憶體檔案控制器(202)可回應LOAD 2的定址型樣 命中記憶體檔案儲存單元(204),而輸出為了儲存LOAD 1 的結果而被分配的實體暫存器之實體暫存器名稱。可將該 實體暫存器名稱用來將LOAD 1所載入的資料值連結到 22 92769 1362613 .LOAD 2的推測結果。 .當記憶體樓案(1 32)處理STORE 1時,該儲存作 址型樣可命中回應·D !而被分配的資料項(仍然假言二 有任何發生於其間的作業使該資料項被覆寫)。铁而,= 體檔案控制器(2〇2)並不輪出為了儲存L_ !的 = 分配的實體暫存器之實體暫存器名稱,而是可以被 STORE i所儲存的資料的暫存器之實體暫存哭名 :了二:存的實體暫存器名稱(_,此,當後續= 入作業中中該資料項時,記憶體 載 STORE i的來源實在。。夕K202)將輸出 貫體暫存Β名稱,而不輪出 LOAD i的目標暫存器之實體暫存器名稱。 輸出 憶體㈣(132)用來作為推測結構,所以記 ? 4)中錯存的資訊之 (132)中:業亚不是極端重要的(例如,記憶體檔案 最好是改善記憶體槽細)的正確性然 將载入作業的推測处 《 σ稭由 值而提供之^ ^確地連、纟°心體暫存器中儲存的 起的效r耗或減少因錯誤預測的推測連結而弓ί 址的暫存^更新^些實施例中,當痛測到對用來指定位 資料項益二使記憶體槽㈣存單元(2〇4)中之各 母一定址型樣可包含隹性例如’ 個或多個邏㈣存^ k的基底及索引之— 為資料項的定址刑Γ 。如果後續的作業修改被指定 、、,土樣(2〇6)的一部分之該等邏輯暫存器中 92769 1362613 .之邏輯暫存器,料使該資料項無效。因此,如第2A圖所 .二可將每一作業的目標暫存器之邏輯暫存器名稱輸入到 4體植案(132) ’以便執行使#料項無效的作業。 一此外,在某些實施例中,可回應監視到另一裝置取得 將貢料寫入特定位址的存取,而使記憶體標案儲存單元 各資料項無效。同樣地,可回應偵測到錯 =使—貝料項無效…般而言,可監㈣如可 體槽案儲存單元(204)中之資料項的正確性等的許多 件’且將這些條件用來決定何時要使資料項無效。缺卞 因為記憶體檔案(132)是一種推測結構,所以若實施某些監 視方法的額外硬體成本大於記憶體槽案正確性的潛羡 善,則某些實施例可以不實施這些監視方法中 檔案驗譖 /、二方法 处載入儲存單凡(126)(或用來驗證處理器(1〇〇)内的連 二另一裝置)可驗證由記憶體樓案(132)所識別的實體暫 諸:的值至載入作業的推測結果之連結。如果該連 入健存單元(126)可使該載入作業被重新 Μ。/或在:果匯流排(130)上廣播該載入作業的正確 ίΐ而㈣新發出該載入作業時,可利用經過更新的非推測 值而使利用該載入作掌 -下菜的推測結果之任何相依的作業重新 主 行或者,如果该連結是錯誤的,則處理器(1 〇〇) 二^(ilush)在錯誤計算之後發生的作#,且利用該載入 業的正確結果而重新開始執行這些作業。 在某些實施例中,可在載入儲存單元(126)中以比較作 92769 24 1362613 業位址之方式而執行連結驗證。載人儲存單元 各f龍作業的位址,而積測哪些作業應該已 一固貫施例中,載入儲存單元⑽)可使用儲存至載。入在 (St〇re~t〇-load)轉送比較哭來驗噔推制凉& 至載入轉送比較哭用於^二推測連結。除了將健存 轉送比較器用來;外’尚可將儲存至載入 果。例如,卞葡c較售的儲存作業的較新的載入結 送的若干比3 可包含用來執行儲存至載八轉 々从k 延些比較器可將每一待處理的載入作章 止與一組較舊的儲存作業之位址比較。可選擇盘 ,新:載入作業的位址相符的位址的一組較舊的储存聿 ==Γ.:然後可轉送該組較舊的储存作業: 結果。’ t子作業所儲存的貧料’作為該載入作業的 人儲=二圖=載入,存單元(126)之一個實施例,該載 兀 之組悲被設定藉由成比較作業位址而將 ’儲^载入轉送(store_TO—LoadForwardlng;簡稱 s 比較裔-(280)用來執行連結驗證。如圖所示 ⑽)可包含未U的載人及儲存作業之儲存區。 她例中’係將獨立的儲存區提供給载入作業(在載入之储存 區(250)中)及儲存作業(在儲存之儲存區(_中)·欲而, 在其他的實施例中,可將載入及儲存作業儲存在相同的作 業儲存區中(例如,額外的攔位可指示每一作業是載入作 業、儲存作業、或載入及健存作業)。在某些實施例中,該 作業儲存區可以是#程器Cl 1 8)的一部分。 92769 25 1362613 •可將用來識別每—載入作業的資訊儲存在載入之传存 .區⑽)中之資料項⑽)。該資訊可包括:該 入作業的標記(254)、用來識別具有被該載人作㈣推測ΐ 果連結到的值的記憶體作業(另—載入或儲存作業)之Μ ==、了用來指示作為該載入作業的目標的位:之 位止(258)。亦可包含其他的搁位(圖中未示出)。 記憶體槽案⑽)可㈣載人作f (將其推測結果連处 到由能憶體播案提供的標記所識別的資料值之該載入; 業稱為連結的載入作辈(j彳n ^ π ^入作業⑴也吨〗_),,)對記憶體播案 (132)的力中’而產生轉送標記(256)。記憶體槽案⑽) 除了將標記⑽)及定址型樣⑽)儲存在每—記憶體權案 =項⑵0)之外’尚可錯存用來識別使資料項⑽)起初 被为配的記憶體作業(例如,載入或儲存作業)之標記。可 ‘出該標記作為轉送標記(256),用以識別其運算元被連处 到較新的記憶體作業的推測結果之較舊的記憶體作業。、·。 可將用來識別每-儲存作業的資訊儲存在儲存之儲存 -(store storage)(26〇)令之資料項(262)。該資訊可包含 ,來識別該儲存作業的標記(264)、以及用來指示作為該儲 存作業的目標的位址之位址(268)。 可將STLF比較器(280)之組態設定成決定載入作業應 自哪一儲存作業(在有儲存作業的情形下)轉送資料。此心 外,STLF比較器(280)可驗證各載入作業的推測結果盥值 間之連Hit體㈣(]32)可以前文所述之方式產生這也 還結。可將STLF比㈣(280)之組態設定成:比較載入作 92769 26 1362613 $的位址(258)與—個或多個儲存作業的位址(268),而搜 尋1來轉送資料給該載人作業的儲存作業(在有儲存作業又 I: t :下::因而驗證該載入作業的推測結果與該儲存作業 兀3之連結.如果並未找到任何相符的儲存作業(具 =連、。的載人作業的位址相同的位址之儲存作業),但是 ==的轉送標記(256)指示該載入作業的推測結果 任Π ^亚未識別出可用來轉送資料給該載入作業的 任何其他的載入作業,且將 、 ’、 找到了相符的儲存作業,作^ ^ t/兄明此種情形)。如果 (264)盥哮哉土…、—疋"相付的儲存作業之標記 比較哭業的轉送標記(256)並不相符,則STLF 車乂时(280)可類似地輪出該 到了相符的儲存作業,且兮^ d曰㈣之指不。如果找 ^ έΊ-m :、 付的儲存作業之標記(264) /、忒轉达的載入作業相符, 證實該連結之指示(或者只須不輸二=f〇)可輸出已 斥)。在某些實施财,可在疋錯誤的指 入轉送的程序大致相同的時間=二業執行储存至載 少一部分。 上進仃邊連結驗證程序之至 如果特定載入作業的推測处 作業的運算元,則作°_未連結到另一記憶體 無效值、或以其他方標記_設定為 結驗證的值。對於該载入作業而=載γ乍業執行任何連 執行錯存至載人轉送,但並不執料較器(刺可 咖比較器(_除了驗證裁入的;^结果與儲存運 92169 27 丄362613 ^元間之連結之外,亦可將㈣比較器(28〇)之組態設定 .成驗證載人的推測結果與其他載人運算S間之連結。例 如,記憶體檔案(1 3 2)可监h \ ^ 一 ^ ) 了將較新的載入作業之推測結果連妗 =較售的載入作業之運算元。因此,該較新的載入作業之 輅运標記⑵6)可識別該較舊的載入作業。STLF比較器 5 Γ二了門又有任何在程式順序上發生在該等被連結的 址之儲存位址,而:;:載::合,新的載入作業的位 〇且声' 5亥载·入—载入(i〇ad-load)連结。盎 入作業與較舊的儲存作業間之連結類似二 = =:=?誤的(例如,發 符),與該較新的載入作業之位址相 則—mF比㈣(28G)可輸出該連結是錯誤的相示。 作掌舊的一固3例中,該等㈣比較器可自比連結的載入 連結到較舊的作作尋找具有與其推測結果被 丨之最新的作举:運异兀的載入作業的位址相符的位址 乍業而證貫一對載入作業間之連結。 :Γ25相二的:業是連同該連結的載入作業而儲存的 二:::果並未發現任何相符的作業,或者如果相符 _可輪出該連結是錯誤的指示。乍業則㈣比較益 符載ί.二實:例中’ S T L F比較器(2 8 〇)可尋找最新的相 乍業(自比連結的栽人作堂签 作業的位址相… 售具有與連結的載入 ㈣位址之—組載入作業中尋找)及最新的 92769 28 2儲存作業(自比連結的載入作業舊 載 位…組_業中尋找二 式順;^ ^ 4新的相符儲存作錢(按照程 =),且如果該最新的相符載入作業是該連結的載入作 所識別的作業,則STLF比較器:: 最新如果該最新的相符載入作業比該 結是錯誤的(例如:;===_可決定該連 新的相符儲存作業)/ 載作#應已連結到該最 可比間之連結時,比較器(_ 勺載入作業,這是因為該連結的載入作業 ===结到在程式順序上比該最新的相符健存作 ^/ 相付之載入作業,其中該最新的相符儲存作業 亥連、、、°的載入作業舊(與只恰當地連結到相符的較舊載 作11之㈣的作業不同)^因此,該等STLF比較器除 ·:只識別最新的相符載入作業之外,尚可識別-組相符。的 入作業,並決定該組中是否有任何相符的載入作業是該 連結的載入作業的轉送標記(256)中所識別之被連結到之 載入作業(nnked-to load)。 在某些情形中,在證實連結之前,可能已自處理器(1〇〇) h休或移除被連結到之記憶體作業。因此,由於較舊的作 =之和除,所以STLF比較器(280)可能無法識別其推測結 $連結到被移除的作業的運算元的載入作業之相符的記^ 乍業且細1使该連結是正確的也是無法識別。在無法證 92769 29 1362613 實連結的情形中,STLF比較器(28〇)可輸出該連結是錯誤 的指示。 、 回應連結是錯誤的指示,可使記憶體檔案(132)的 3分無效。例如’在一個實施例中’可使用來提供載二 乍業的推測結果之特定記憶體檔案資料項無效。在盆他的 貫施例中,可回應STLF比較器(28_測到錯誤的連处, 而使整個記憶體檀案(132)無效。此外,可以 ,檔案⑽)取得的推測結杲,而使用載人作業的非推^ 以執仃依賴該載入作業的結杲之各相依的作業 =執行了這些相依的作業’則重新執行該等相 業)。 於峨請Γ意,雖然所示之實施例使用咖比較器執行連結 但是其他的實施例可採用並未被另行用於儲存至載 的若干專用比較器,以便比較記憶體作業位址及/ 或疋址型樣,而執行連結驗證。 廍、=某些貫施例中,每當記憶體播案(132)輸出用來識別 二子人作業的推測結果連結到的資料值之標記時,記憶 脰檔案(132)亦可使與該載人作隸連結到的記憶體作業〜 =之旗標被設定。例如,如果載入作業的推測結果回 ^载入作業的定址型樣命中記憶體標案資料項而連結到 資料值的標記憶體播案(132)可輸出 連、、到该推測結果,並輸出該較舊的 儲存作業已連結到較新的載入作業之指示。如第4β圖所 不,載入储存單元Π26)可回應該指示,而設定與該較舊的 92769 •30 .料作業相關聯之退休旗標⑽)ι .繼續使退休旗標(269)被設定,直到已證·=(】⑻可 連結到該儲存作業的運算元之 二/、弟一標記已 請注意,在某些實㈣,當較:==:為止。 連結到較舊的載入作業之目標運算元時載入果 的載入作業(圖中未示出)_聯之退休旗標。°心、較售 於決定何時要停止分配先前 兀月j刀配給母一儲存作業的資 料項⑽),且何時要使該儲存作業退休時,載貝. (126)及/或退休佇列(1〇2)可使用盥 兀 退休旗標(269)。如果儲存作掌冑相關聯的 :存::1=,(—給二 推測結果間:=的^ 定時,退休件m⑽不可使該標(269)被設 =關如的退休旗標之實施例中,於決定何時要停止分配 給每-載人作業的㈣項(252) 二作業退料,載人储存單元(⑽及/或退休㈣(= ^一種與前文中參照儲存作業所述的方式類似之方式而 使用與該載入作業相關聯的退休旗標。 ,第5A圖是根據一個實施例而驗證載入作業的推測結 果與特定標記所識別的資料值間之連結的方法之流程圖。 如步驟(321)及(323)所示’如果載入作業的推測結果連結 到較售的(在程式順序上)記憶體作業之運算元,則可連同 乂 k 。的(較新的)載入作業而储存該被連結到的較舊的作 92769 1362613 業之標記。例如,可將諸如第2 A圖所示之安 將該連結的載入作業之推..彳钍 〜虹4田木用來 ^卜 推測結果連結到較舊的儲存作紫撕 儲存之㈣值,或連結频舊的“作業 料 之㈣較舊㈣人或儲存作掌 之^(例如,儲存在排程器及/或載A ^ 以識別該載入作業被連結到哪一作業。早兀中),用 如步驟(325)所示,在某—時點上,該載 驗證連f的載入作業與被連結到的較舊的作業間之^ 在某些實施例中’該載入儲存單元可將若干ST〖 =。 來執行該驗證。該等STLF b ’。。 b車父$用 亦T拉兮从^ 除了執行連結驗證之外, ;:二:較器用來執行儲存至載入轉送。或者, 该载入儲存單元可具有只執-者 如步驟(327)所示,如果㈣二的專用非電路。 中決定料結是正㈣,㈣2=存/元在步驟(卿 作業的推_以_ 行的推測是如此)。在某此實 己匕月^田木所執 已證奋自 巾,該載人儲存單元可將 已。且貝该連結的汛息通知 如,排程器)。 中之其他組成部分(例 =卵25)及步驟(329)所示,如㈣載人錯存單元 :::m,則該載入儲存單元可輸出該連結是 例如’輪出到排程器及/或派發單元)。回库 二二可產生該連結的載人作業之新結果。例如,如i =====驗證物,綱驗證程序期 σ此已識別出應用來轉送資料給該該 92769 1362613 ‘ ^的^人作業之儲存作業。可轉送被識別的儲存作業所 V二貝枓’作為該載入作業的非推測結果。此外,可回 誤:連結,而使該記憶體㈣(或者該記憶= 木甲之至J 一個賢料項)無效。 第5Β圖是根據—個實施例而 業的連結而使該記憶體作業退休的;^ :V驟(331至333)所示,如果較新的载入作 尨果連結到較舊的記憶體作 的資料,則可設定與較^作掌’载入或儲存) 之旗浐乂甘^ 作業(破連結到的作業)相關聯 之在某些貧施例中, 包舍該旗f 了在排^或载人Μ存單元令 如步驟⑶5至337)所示,如果 則可將該作業的退休延遲 被5又疋 測全士果了^新的載入作業之推 則,如步驟Mqcn私- 逆、、·。為止。否 不’可正常地使純舊的作業退休。 雖然則文所述的例子使用位址比較(浙咖 compar i sons)(亦 gp,與由 私々—也 而執行連結驗證,但』並他業所存取的位址) 疋”他的貝細例可使用值比較(va] ue 即,藉由比較因記憶體作業存取而產生的 位址證。例如’在並未將特定暫存器值用於 界值^^ 業中,可在推測連結驗證中使用該暫存 用來健存被推測地連έ士到載位址計算的—該暫存器 載入作業的實際結杲時,严f果之值。當得到該 載入彳&ό存早兀(或執行核心)可 92769 33 1362613
將該並未被另行使用的暫存 較。如果以上兩者是相同的 該連結是錯誤的,且可廣播 便將更正傳播到整個該處理 的連結,而使記憶體檔案的 器中之值與該實際結杲之值比 ,則4連結是正確的。否則, δ亥載入作業的非推測結果,以 器。此外,可回應偵測到錯誤 全部或部分無效。 >在-個實施例甲,用來儲存被推測地連結的結果值之 暫存器可以是索引暫存器。可將記憶體檀案控制器之組態
没定成只將記憶體檀案儲存單元分配給並未將該索引暫存 器用於位址計算的各記憶體作業。 子 在一個實施例尹,如第6Α圖所示,可在載入儲存單元 (126)中執行基於值(value_based)的連結驗證。其中,載 入儲存單元(126)包含專用的值比較器(value c〇mparat〇rs)(282),該值比較器(282)之組態被設定成將 載入作業所載入的實際值(255)(經由儲存至載入轉送,或 藉由存取資料快取記憶體及/或記憶體)與該載入作業的 籲推測結果(257)比較。如果該等兩個值是相等的,則載入儲 存單元(126)可決定該連結是正確的。否則,載入儲存單元 (126)可廣播作為該載入作業的正確結果之被載入的值 (255>),因而任何相依的作業使用該正確的值來執行(或重 新=行)。載入儲存單元(126)亦可將用來指示應回應偵測 到錯誤的連結而使記憶體樓案(132)中之一個或多個資料 項無效之信號提供給派發單元α 〇4)。 或者,如第6Β圖所示,可在一個或多個執行核心(124) 執行基於值的連結驗證在這些實施例中,派發單元(丨〇4) 92769 34 丄 • L 1 έ #業推測結果連結到記憶體樓案(132)所識別的 .將=:!入作業轉換為結合的載入作業及比較作業。可 各別地發出到載人儲存單元(126)及功能單元 3!;:人料單元(126)可正常崎行載人作業。當可 址呀瞀塹二作業的非推測結杲時’可經由該未被使用的位 推測結果也載入儲在Λ二存')存取推測結杲,並將將 g L 料早Μ126)所產生的該非推測結果比 处θ正湓仃^玄比較作業。如果以上兩者是相等的,則該連 、‘·〇疋正確的;否則,該連結是錯誤的。 逆 章二7,圖是根據一個實施例而使用值比較以驗證載入作 特定標記所朗的料㈣之連結的方法 結果連結到較舊的記憶體作入作業的推測 ㈣連結)’則可將無須用於該載人作業的位址計算之 #兀用來儲㈣載人作業的推測結杲 ►入作業不將索?丨暫存器用於 】々杲4載 器用來儲存該載入作業的推測結果Γ貝1可將該索引暫存 果二:Γ=347)所示,如果該載入作業的實際結 ::;玄載入作業的推測結果相符(例如,藉由在功能單元中 ^丁值比較而決定),則該連結是正確的,且該推測紐 艾為非推測結果。否則,如步驟(349)所示,該連結 的,且可在結果匯流排上廣播該載入作業的實際結果,3决 便將正確結果傳播到任何相依的作業。 乂 推測結果作為來源 35 9^69 1362613 各實施例可以許多不同之方式將載入作業的推測結杲 連結到暫存器資料值。在某些實施例中,可識別運算元的 下列兩個來源而連結各值:推測來源及非推測來源。該推 測來源可以是被連結的資料值。可將推測來源提供給載入 作業,以便指示連結到該載入作業的推測結果之資料值。 在某些實施例中,亦可將推測來源提供給與該載入作業相 依的各作業。因此,某些運算元可以有兩個標記:用來識 別推測來源的標記、以及用來識別非推測來源的標記。在 這些實施例中,如第8圖所示,每一排程器(118)可將標記 儲存區提供給推測運算元及非推測運算元。 第8圖不出可包含在處理器的排程器(118)之一個實 施例。在所示實施例中,排程器⑴8)包含排程器控制器 (502)及作業儲存區(5〇4)。排程器控制器⑽2)可回應派發 單元U04)派發作業,而分配作業儲存區⑽)内的資料又 用以儲存與該作⑽應的資訊。例如,作業儲存區 :之:料彻)可包含運算碼攔位⑽)、一個或多個運 ::欄位、以及結果攔位(516)。結果攔位(⑽可儲存用 來熾別應該被用來儲存# i ^ 百仔°哀貝抖項的作業結果的實體暫在哭 之標記。當發出該作業時,可在—個或多個桿== 上將該標記轉送到每—排程印•每 ^ ) 記匯流排(520)上轉送的該 卯了將在私 元標記(推制^寺铩5己與待處理的作業之運算 ’ '、vr* 7C標記及非推測卩 說明)比較,以便決定 ‘ δ己將灰下文中 m , 才J取传待處理的作坌夕·φ瞀- 因此,可回應作業的來 業之、斤兀 示e出現在標記匯流排 92769 36 1362613 -· (520)上,而發出該作業(或將該作業標示為準備好可發 ,出)。 每-運算元攔位可包含用來識別推測運算元來源的推 測標記以及用來識別非推測運算元來源的非推測標記之儲 存區。在所示之資料項(522)中,係由非推測標記⑸2)及 推測標記(514)識別運算元!的兩個來源。可將排程器⑽) 之組態設定成回應可取得作業的運算元之一個或多個指示 鲁而發出該作業。如果可自推測來源及非推測來源取得運算 疋’則可將自該非推測來源取得的值用來執行該作業。在 某些實施例中,排程器⑴8)可將可取得非推測運算元來源 的作業之發出順序排成優先於只能取得推測運算元來源的 作業之發出順序.。 請注意,作業可包含具有推測來源的某些運算元、以 及並未具有推測來源的其他運算元。亦請注意,相同的來 源可以是作業的推測來源,同時又是另一作業的非推測來 ·:、。在某些實施例中,當執行作業時,只能為每一運算元 項取-個貢料值(例如’執行核心(124)可讀取推測運算元 來源或非推測運算元來源,但不能同時讀取兩者)。在此種 ^式下,無須將額外的埠增加到暫存器檔(116)。在某些實 施例中’可將推測來源及實體來源儲存在相同的儲存位置 (m’儲存在暫存器樓(116)内),且可不將推測來源的旗 標設定為或以其他方式識別為推測來源。 =許多實施例中,可將排程器(118)之組態設定成在將 作#發出到—個或多個執行核心(1 24)之後,保持將資料項 92769 1362613 •分配給作業。當排程器(n幻回 可& P M· …個或夕個推測運算元的 '7取仔性而發出作業時,該排程器可保 :'的 分配給該作業,因而若推測連結是錯誤的,則了 = 2) 該作業。在某些實施例中,可將 ^ 了重新發出 設定成驗證當推測載人作l存單元之組態 戰作窠結果連結到儲存於實艚鲂左。。 ^資料值時所產生的推測連結。如果該連結是正:= ,推測結果,這是因為已可經由該= 的 :果確係如此’則可將-個或多個排程器⑴8)之組:設定 運算元來源之俨…來硪別作業的非推測 7G孓源之払记,則重新發出該作業。 或者’該載V儲存單元可廣播儲 ==該廣播或用來指示該推測連結是正確= 連結是錯誤的,則該載入/儲而,如果該推测 >體及/或記憶趙存取,以可:行資料快取記憶 , 取仔5亥载入作業的正確結果, 並廣播該載人作業的結果。在必_播結果的實施例中’ 該額外的狀態位元可指示該推測連結是錯誤的。因此,在 許多實施例中’可將已可在處理器中使用的相同的標記及 結果匯流排用來指示推測連結是錯誤的。在其他的實施例 中,可實施替代性的指示機制(例如,將獨立的結果匯流排 (130)及/或結果標記匯流排(52Q)用來“錯誤預測)。 第9圖示出用來發出及重新發出具有推測及非推測運 算元來源的作業的方法的一個實施例之流程圖。如步驟
3S 92769 1362613 (。8=至803)所示,如果可取得作業的推測運算元來源,則 :’X出。玄作不。s貝料值出現在暫存器檔内的特定暫存器 :當在結杲匯流排上輪出該資料值時,作業的推測運 ==即變為可取得。請注意,在某些情形中,可能在 推測運具元來源之前,先 先取侍戎作業的同一運算元之非推 來源:在那些情形中’可在推測運算元來源變為 :::則,先發出該作業。在某些實施例中,後來取得 推測來料,可残發(叫㈣該作㈣重新發出。 =步驟⑽)所示,可將推測運算元來源所提供的資料 == 亍所發出的作業’且如步驟则所示,可廣播該 作業的結果。由於廣播了該 ^ 的作業被執行。 作㈣結果,㈣可料相依 如果在某—稍後的時間上,決㈣推測來源是錯誤的 (命如,該推測來源及該非推測來源所提供的資料值不是相 口勺,或者用來產生該推測來源的標記之推測連結不是正 >二’則可廣播該非推測來源的標記,作為該推測來源的 一 _示。該非推測來源的標記之廣播涉及以該等 播=^個排&㈣重新發出該作業而作為回應之方式廣 t ° ’纟某些實施例中,如果該標記被廣播, ,與該標記相關聯的狀態旗標被設定為某一值,則排程器 可回應,而在盆他的奋丨Λ 沪0隹/、他的貝施例中,可以沒有相關聯的狀態旗 ,:且可將排程器之組態設定成在非推測標記被廣播的任 何時間上重新發出作業。 田0任 的準備就緒 92769 39 1362613 在某些實施例中,諸如在第10圖所示之—個實施例 二可將排程器⑴8)之咖定成由特定運算元的推測來 源或該運算元的非推測來源之可取得性(但同一時間不得 问時可取得兩者)而決定該運算^否準備就緒。此種方式 又可減少對結果標記匯流排(520)的潛在不利影響。 在第10®中,該排程器使用比較器(532)將曰多工器 ⑽)所選擇的作業的運算元的推測來源之標記⑷或該 運异兀的非推測來源之標記(512)與目前在—個或多個处 果標記匯流排(520)上的標記比較,而決定該運算元是否準 = '緒°因此’該排程器可監視標記匯流排(520)上的推測 “源之可取传性、或非推測來源之可取得性(但非兩者同時 的可取得性)’而決定該作業是否已準備就緒可發出。因 此:該排程器並不將在該結果標記匯流排上廣播的每一結 果標記與該運算元的推測來源標記及該運算元的非推測來 源,記比較,而是可只將該廣播的結果標記與該運算元的 该等來源標記的其中一個來源標記比較。如果可取得作業 的所有運算元(來自推測或非推測來源),則可設定該作業 的準備就緒旗標(_,以便指示該作業已準備就緒可發 出0 錯D吳推測偵測邏輯電路(丨spau 1 &丨 =tect i on丨ogi c) (53〇)可根據作業的推測來源或非推測 來源=制該排程器是否決定該作業的準備就緒可發出。 在某些實施例t,可在該排程E、巾為每—待處理的作業提 i、相同的錯決推測偵測邏輯電路(5加),因而每一作業可獨 92769 40 1362613 ,=記匯流排(52〇)上的推測或非推測來源。在 •章,’可以相同的方式控制所有待處理的作 : 有的作業監視推測來源(在可取得推測來源的情 ;4所有的作業監視非推測來源。 排二=7測邏輯電路_之組態設定成:控制 測的情”二广使該排嶋沒㈣測職 等作輩據各作業的推測來源之可取得性而決定該 推測辑輯電路⑽)可“切換⑴:二錯誤 源是否準備就绪。例如,如果載入健存單元來 或值比較而谓測到錯誤的連結,則 )、,·二由位址 可發出。錯誤的㈣MW 作業疋否準備就緒 或部分、或該記=:32)的全部 路(530)可繼續敗視非 3。、推測偵測邏輯電 ,該推測的來源已:重:(而 推測進行修正為ί疋(reset)或以其他方式針對該錯誤 當錯誤推測镇測邏輯電路( 取得性“切換”至監視Y視—來源的可 (】,能缺少與非推測來源的可取得:有:二排程器 二排程器(118)可假設可取得所有的:推:二Ϊ 且作業因而已準備就緒可發出。如广嶋 可在以後實際上可取得非推 ^又。又疋I日块的,則 標記匯流排⑽)上廣播了;^源丈時(例如,伯測到在結果 “了非_來_標記時))重新發 A] 92769 ⑽ 2613 出該作業。 .速-SLA存器對盹單分 第^圖示出處理器(100)中可包含的派發單元(1⑷ =另:貫施例。在該實施例中’派發單元(1〇4)包含暫 时映單元(134)、記憶體槽案(132)、以及推測暫存器對映。 早=(_。推測暫存器對映單元(_如同暫存器對映單 = 34)’可將邏輯暫存器名稱轉換為實體暫存器缺 :’推測暫存器對映單元(800)可以推測方式 : =存益中料的值連結到載人作業的推測結果)。推 抽 對映早凡(_可讓並未包含定址型樣的作業之 隹測運异兀值被連結到暫存器^ 存哭ΡΛΥ 士 > 例如,如果邏輯暫 心αΓ::: 推測對映關係(specuIatl-—,則 為來源運异7^的作業可具有兩個來源桿呓. =映單元⑽)提供的非推測標記、以及由 二_)提供的推測標記。因為當可取得該作二: 測來源時可立即菸屮兮士 呆日7推 (_可經由推列運曾 測暫存器對映單元 接連結到各產1ΛΓ將各❹資料的組成部分直 組成部分’而繞過了任何發生於1 間的載入及Μ存作業。請注意,在某 於。 ί有其中包含推測暫存器狀態儲存區的重新排序緩歹:匚在 貫施例幻,該推測對映單元可儲㈣區之 標記。 、—暫存态名稱以外的 推測暫存It對映單元(_包含推存器對映單元 92769 1362613 ,映到EBX的實體暫存器。一.丄 •暫存器應以推測方式對映;:::來指示邏輯 制,而產生推測暫存器對映單元資制存。。之任何預測機 在某些實施俗丨φ,, (134)的相同週心作錢供給暫存器對映單元 元(_。當暫存H作業提供給推測暫存器對映單 器更名時,推=::,-:)?:業_^^ 其t-個作業的推測早〇可^曰777被指定為错存 、/原運斤兀之任何邏輯暫存哭s π ·* 連m到特定的實體暫存哭。 °。疋破 其中一個作鞏m子。。如杲有效的貧料項存在於用於 存區⑽4),則推^暫器來源之推測暫存器對映單元儲 邏輯暫存哭的資料广、對映單元控㈣ 派發到儲存的實體暫存器名稱。當該作業 塒暫派發單元(m)可輸出該推測的實 月豆暫存益名稱,作為推。 、 供給推測暫存n對映單元Q'Q t σ將獅作業提 ‘在推測暫存器對映單二其::個ADD來源具有 ^ ^ . 早兀储存區(804)中之有效資料項,則可 =標記的該資料項中識別的實體暫存 t 給排程器⑴8)。如前文所述,可將該排程器 之^设定成同時儲存推測及非推測運算元標記,且在某 二貝轭例中’可將該排程器之組態設定成回應在結果匯流 丄上廣播的非推測標記而重新發出作業(在先前已發出該 等作業的情形下)。 ▲可回應特定邏輯暫存器的資料值將被修改之指示,而 使该推測對映單元内的資料項無效。例如,如果派發單元 92769 44 1362613 作# ADD EAX,EQ,則推測暫存器對映單元控 =)可使目前指定給Ε Α χ的推測對映單元資料項無 >·,這疋因為該add作業將修改該暫存器的值。 士一般而言,當作業的推測結杲連結到暫存器資料值 可將推測運算元標記提供給排程器(118八在某杜實施 例中,可將記億體檔案(i 3 2)及用來追蹤數個週期中之二依 性的另-結構(例如,將於下文中說明之推測暫存器對映單 鲁兀)用來將推測結果連結到暫存器值。例如,派發單元(ι〇4) 回應識別連結的記憶體㈣(132),而產生作業的推測標 記。在某些實施例中,可在無須使用此種推測對映單元的 情形下產生推測標記。例如,一序列的指令可包含·· (ADD 1) (STORE 1) (ADD 2)
ADD EBX, EBX
MOV [addressing pattern A], EBX ADD [addressing pattern A], ECX 這些指令可以是連續的指令(例如,這些指令可按照程式順 _序而相互緊密接續)。可將這些指令分割成下列的成分作業 (component operations)(連同被轉換成實體位址的邏輯 位址而示出)以便在一個或多個執行核心(12 4)内執行: ADD PR2, PR2, PR1 (ADD 1) MOV [addressing pattern A], PR2CST0RE 1) MOV PR3, [addressing pattern A] (load for ADD 2) ADD PR4, PR3, PR5 (add for ADD 2) MOV [addressing pattern A], PR4(store for ADD 2) 在派發ADD 2的該等成分載入、加法(add)、及儲存作業之 45 92769 1362613 別,派發單元(104)可偵測該序列中 否有將可連結到推測結果的任 :ζ業之間是 體樓案)。因為並無任何發生於Α間的作(如由記憶 可,、,+ v /、间的作某,所以派發單元 偵測同一派發週期中載入作業與加法作業(係自相 業) 所需的所有資訊。派 I早兀(104)可根據這兩個相依性,而將st〇re i pR2 儲存的資料之標記連結到作為議2的—部分而執行的載 入作業之推測結果。該推測連結又可讓該派發單元將作為 ADD 2的一部分而執行的加法作業之來源連結到pR2中儲 存的值。因此,派發單元(1〇4)可輸出下列指示:可將 以推測方式用來作為該加法作業的其中一個運算元之來 源,但是PR3是該運算元的非推測來源。因此,在一個實 %例中,可以下列方式指定派發單元所輸出的該等作業及 運算元識別符·· φ ADD PR2, PR2, PR1 (ADD 1) MOV [addressing pattern A]s PR2 (STORE 1) MOV PR3, [addressing pattern A] (load for ADD 2) ADD PR4, PR2*, PR3, PR5 (add for ADD 2 , 其中PR2*是ECX 的推測來源,且 PR3是ECX的非推 測來源) MOV [addressing pattern A], PR4 (store for ADD 2) 46 92769 1362613 在其他的實施例中,可以不將派發單元(1〇4)之組態設 定成識別與根據載入作業的各作業之推測來源運算元Γ反 之,如第12圖所示,派發單元(1〇4)可包含作業轉換器 (叩eration converter)(18〇) ’該作業轉換器(18〇)之組態 被設定成將載入作業轉換為纟巾包括暫存器至暫存器 (reglster-t0-register)移動作業的一個或多個作業, 便將推測載入結果提供給各相依的作業。可回應“作 的推測結杲與特定實體暫存器名稱所識別的資料值之門存 =連結之指示,而執行該載入作業的轉換。二 = 列中’可包含記憶體㈣(132)的連結_器⑴此-、 測器(182)=^^^7在其他的實施例中,連結偵 條件的移動作组態被設定成回應諸如有 =動料寺的作業而連結資料值之邏輯電路。 在個霄施例中,該作業μ姑时"τ > 算碼、以及是否針對該作業而请測二存的輸入運 _推測結果間之連料& _ ^=值_作業的 摘測到推測連結,作業疋载入作業,且已 移動作業的運算碼。、派發元轉=可輸出暫存器至暫存器 輸出的作為該暫存哭將該連結偵測單元所 之標記用來派發該暫存如二,動作業的來源運算元標記 在某歧每暫存益至暫存器移動作業。 派癸所〆:?例中’可將該作業轉換器之组能一占 知所產生的暫存器 之、,且恶5又疋成·· 存器至暫存器移動作業:夕動作業’使排程器將該暫 储存在被分配给該私存立。入作業所需的運算元標記 曰存-至暫存器移動作業的資料項中。 92769 47 .此種方式可在偵測到該暫存哭 果是錯誤的情形:广私動作業的推測結 •了實施該機制,可將額;=為原始載入作業的作業。為 業而產生的每來源運算元加入因修改载入作 ,,, 曰存咨至暫存器移動作業(或者,在替代實 鈀例中’可修改業已存在 在’代κ 制)。在某些實施例中,可執行兀;;乂便實施該機 且/或將被連結的資料信企Γ 業的位址計算, 而㉗供兮勒 /、声、際載入結果的資料值比較, .1« δ且5玄暫存器至暫存哭 測結果是錯誤的,則可^取1^推測結果。如果該推 確的載入„果以4快取記憶體’以便取得正 .° μ正確結果的廣播可使該排程器重新發出 先則將錯誤值用來執行的任何相依的作業。 將::些實施例中,可將作業轉換器(_之組態設定成 :載入作業轉換為雙本質(㈣―加咖)作業。該雙本質作 同載入作業’可涉及位址計算及資料移動。但是與載 2不同之處在於.該雙本質作業所啟動的資料移動是 匕存益至暫存器移動。此外,該雙本質作業所啟動的資料 和動可在元成位址計算之前發生。可將位址計算用來驗證 貝J連、、’〇疋否疋正確的。如果該推測連結是錯誤的,則可 、$載入作業之方式重新發出該雙本質作業,並可在完 成資料快取記憶體存取之後立即將該正常載人作#的結果 重新廣播給各相依的作業。 下列各例子示出不同的實施例可如何轉換該例示的作 業序列: 48 92769 1362613 1362613 (ADD 1) ADD PR2, PR1, PR1 STORE [addressing pattern A], PR2 (STORE 1) LOAD PR3, [addressing pattern A] (LOAD 1) ADD PR4, PR3, PR3 (ADD 2) 籲在該序列中,可由一個或多個發生於其間的作業隔開所指 疋的。亥專作業。然而,假設並無任何發生於其間的作業想 要修改定址型樣A中所用的值或想要修改自定址型樣八計 算出的位址上及PR2中儲存的資料值,則可在pR2中儲存 的育料值與自定址型樣A計算出的位址上的資料值之間偵 測到推測連結。 、 ,,”他财’作業轉換器(18G)可回應推測連結債 測杰(18 2 )值測到推測連6士 丨動作業:_PR3 PR2 ;二t觸1轉換為雙本質移 哭來源及目π : δ玄又本貝移動作業除了指定暫存 Γ的位址亦可指定定址型樣Α,因而可執行咖 本可取得心夺,可立即發出該雙 部分之社果時n:分。當廣播了該雙本質作業的移動 元而立二:该移動作業的推測結果用來作為運-凡而立即發出ADI) 2。去 連結。如果該推測連'纟^=位址計算時,可驗證該推測 指示提供給排程器,而該^㈣L/儲存單元可將 移動作業作為载入作業。:不使排程器重新發出該雙本質 3 可廣播該載入作業的結果,而使 92769 49 1362613 諸如ADD 2等的已將該移動作業的推測結果用 =依:作業被重新發出。請注意,可將單-的排程器f 來㈣雙本質作業排程,且排程器⑽)可選擇‘ ^貝作業电出兩次,其中—次係用於該載人作 什异,而另-次係用於該暫存器至暫存器移動作業。 在替代實施例中,作業轉換器(18〇)可回她 广而將咖上轉換為下列兩個被連結的作業:L〇ADpR3】 L eSSingpatternA]、以及麵 PR3, PR2。這此被連 王》»(118)中之貧料項,而不是丘 項。當發出該暫存器至暫存^動作用案早Γ的排程器資料 測值用來作為運算元值業時,可將PR3的推 π咬开7U值,而發出諸如ADD 2箄 !;可將該L0AD作業標記為特殊類型的載入作举,、因而 右決定該推測連結是正確的, ’、口而 :二己(或者連同§亥移動作業的結果是正確的且不岸'重新 ==的作業之指示而廣播該結果標記)。此二 業及該移動作業都在同-週期中廣播其結果: 用於相依的作業。在某些實施例中,可將… 果 應回應哪-標記的額外之位-…將用來“排程器 桿吒匯^ ^ 處判(1GG)内的每一 的:例二述的機制。如果該推測連結是錯誤 ^ 業的結果標記之廣播指示),則可取消 正分配目前分配給該暫存;至!4=4排;1器⑴8)可停 子°。主暫存為移動作業的排程器資 92769 50 1362613 .料項,因而無法重新發出該作業)。在許多實施例中,可將 ,排程器之組態設定成:回應該載人結果暫存器重新出現在 結果匿流排上,而重新發出將該推測的載入結果用 之任何相依的作業。 在一個實施例中,如果(例如,由記億體檔案鴻測到 特定標記所識別的暫存器資料值與載入作業的推測结果間 ,連結,則可修改載入作業,以便包含具有與被連結到該 隹測載入結果的資料值的標記相等的來源運算元標記之斬 存器至暫存器移動作業。該暫存器至暫存器移動作業的^ =能涉及將該標記所識別的資料值連同該载人結果的標 。己輸出到結果匯流排。 ’' 沾果可it如執行原始載入作業的位址計算而)驗證該推測 二果該推測結果是正確的,則可以不在結果匯流排 業的=播作業的結果(或者,可重新廣播該載入作 ' , 以及回應该重新廣播的結果而不應重新發出相 ::業之指示)。如果該推測結果是錯誤 : ::取記憶體,以便揭取正確的載入結果 ::: 流排上廣播正確的載入纟士罢^ j在m果匯 果值而發出的任⑴/ 方式又可使利用推測結 些情形中=1=業被重新發出。請注意,在某 證該推*士果。暫存器至暫存器移動作業之前先驗 °亥暫存裔至暫存器移動作業。 轨仃 間之任到:入作業的推測結果與暫存器資料值 • D’故載入作業的定址型樣未命中記憶體 92769 5) 1362613 檔案),㈣以不修改該載人作業。可正Μ執行㈣人作 業’存取貝料快取記憶體’並在結杲g流排上廣播i 。 ft 記色碼標示(Tag CnloHnW ....... ·、 在某些情形中,記憶體檔案(132)可將載入作業的推測 =果連結關定邏㈣存器巾之值。在某线科,可覆 舄該邏輯暫存器,而使被暫存器對映單元指定給該邏輯漸 存器的實體暫存器回到未被使用的清單(freei ist)(亦 印,可被指定的未被使用的實體暫存器之清單> 然後可重 新指定該貫體暫存器,以左& — 只肢节仔„。以储存另—值。實體暫存器回到未 破使用的清單及/或重新指定該實體暫存器時,可能不會 衫響到用來指定該實體暫存器的記憶體檔案資料項。因
此’記憶㈣案(132)所提供的後續連結可能不會考慮到該 實體暫存器的重新指定。例如,考慮下列的序列:。^ MOV [EBP + 50], EAX XOR EAX, EAX j MOV EBX, [EBP + 50] 記憶體才當案(132)可回應該序歹,而將資料項分配給定址型 樣EBP + 5G ’並回應該第-儲存作業而將實體暫存器指定 給EM。當X〇K作業覆寫^)(時,£〇的現行值(^^6討 value)可不再對應於連結到記憶體檔案(132)中之該定址 型樣的值。然而,記憶體檔案(132)可根據後續載入作業的 定址型樣與較早的儲存作業的定址型樣間之符合,而將該 載入作業的推測結果連結到較早的值。 在某些實施例中,暫存器檔(丨丨6)中之每一實體暫存器 92769 52 1362613 =曰^色碼㈣。r)。可使該色碼與每—暫存器的標記相關 I亚可將該色碼連同㈣存器的標記在整 ::在本說明書的用法中,色W是用來指示;Π 2新指定暫存器的-個或多個位元之資訊。在—個實施例 P色碼可以是單-的位S,且每t暫存器㈣未被使用 月早或自該未被使㈣清單拉出暫存科,即切換該單 :的位元。如果係在記憶體㈣中分配用來指定特定暫存 裔的標記之資料項,則該記憶體播案亦可將與 關聯的色碼儲存在所分配的該資料項中。同樣地,如第°13 圖所不’該推測暫存器對映單元可儲存每—標記的色碼 814)亦可連同標記而將色碼儲存在暫存器對映單元(】 及=程器⑴8)中。當在一個或多個結果標記匯流排(520) 士:出暫存器標記時’亦可在該等一個或多個結果標記匯 机卜(520)上輸出與該標記相關聯的色碼。 d。舉一個例子,考慮開始時具有一個“0”的色碼之實體暫 _存器。暫存器對映單元(134)可將具有色碼“〇,,的該實體暫曰 :器指定給特定邏輯暫存器。此外,可在推測暫存器對二 D〇 )中將具有色碼“ ”的該實體暫存器指定給邏輯暫 存:在推測暫存器對映單元(800)資料項的分配之後的某 卺了點5亥貫體暫存器可回到該未被使用的清單,然後被 3為重新指定。當自該未被使用的清單拉出該實體暫存 為時’可士將其色石馬更新為T。在更新該暫存器的色碼之後 的某一時點,推測暫存器對映單元(800)可根據該暫存器在 被重新指定夕此 , 月’J所分配的資料項,而以該暫存器的標記及 92769 53 1362613 ,碼:而識別作業的推測來源。可將用來識別該推測來源 貧訊儲存在排程器⑴8)中。在發出該作業之前,另一 &產生6玄暫存器的新值,且可在結杲標記匯流排 心廣播該標記及現行色石馬i。排程器⑴8)可藉由將 映:::_記相關聯之現行色碼)與推測暫存器對 定^二枓項中之暫存器標記相關聯之色石馬〇比較,而決 識別相同的值。在某些實施例中,如前文中 推測,並“切=’^排程器(118)可將此種情形視為錯誤的 換限於僧測到色石/!:該運算元的非推測來源。可將該切 ♦、色碼不付的特定作業(並不是使排程器中之 所有待處理的作業被切換)。 U之 的困::情==造成對實體暫存器重新指定的管理上 業。例如,如果更孕= 生圖中移除暫存器至暫存器移動作 存器編號參照到相同的實體暫存(34)’1 吏兩個邏輯暫 會存器移動,則可能變得難以決二二暫存器至 器的色碼標示用該未被使用的清單 在某些實施統的替代性系统。 而將暫存器至暫 ^使用推測暫存器對映單元(_ 色碼標示。例如,可m效/最佳化時,使用暫存器的 依性圖中移除暫存器元⑽)用來自相 得移動作業的來源,則仿姑:和動作業(亦即,如果已可取 果之作業將不再需要箄、曰存器至暫存器移動作業的結 而要寺候該移動作業的執行)。當偵測到暫 92769 ^62613 .存器至暫存器移動作業時,推測暫存器對映單元(_)可分 .酉己用來連結該移動作業中指^的來源及目標暫存器之資料 Ϊ對::每「實體I··存器的色射轉在所產生的推測暫存 軔存。ϋ*-8〇〇)貝料項中。在該系統中,可在不會有更新. 2讀映早元(134)以便使多個邏輯暫存器與同一實體 ::::::的系統中產生的困難之情形下,正常地重新 =二器。當在使用色碼標示的系統中重新指定實 同;卜了使目别被指定有該實體暫存器的特定值不 新指體暫存器的每-標記相關聯的色碼重 配的其他:之前已在該相同的實體暫存器中被分 數及存器對映單元(_之組態設定成處理整 圖中移料_=;=存器對映單元自相依性 諸如FXCH(該作業 子:業。此種方式又可讓 性圖令移除。請注音^寺使/j父長執行時間的作業自相依 時可自相依性圖移;=器對映單元_ 執行該暫存器至暫存器軸料存^動作業,但仍然可 Ά^-ΜΜΑΜ. 該電腦系統(4:) : ί :統(4°〇)的-個實施例之方塊圖’ 流排橋接HUO& ^理印叫該處理器(⑽)經由匯 包含前文\ 到各種系統組件。處理器⑽)可 文所述的派發單元_、記憶體樓案⑽、排程 92769 55 1362613 •可在電腦系統(400)内設有在辅助匯流排橋接器(416)之外 或與4助匯流排橋接器(416 )整合的輸入/輸出控制器(圖 中未不出),以便將作業支援提供給鍵盤及滑鼠(422)、以 及σ種序列埠及平行璋。在其他的實施例中,亦可將外部 快取記憶體單元(圖中未示出)在處理器(丨〇〇)與匯流排橋 接器(402)之間耦合到CPU匯流排(424;^可將該外部快取 汜憶體耦合到匯流排橋接器(4〇2),且可將該外部快取記憶 •體的快取記憶體控制邏輯整合到匯流排橋接器(4 〇 2) ^圖中 所不之L2快取記憶體(428)是在處理器(1〇〇)的背部 (backside)組態中。請注意,L2快取記憶體(428)可與處 理器(100)分離,可連同處理器(100)而整合到匣 (cartridge)(例如slot 1或slot A)中,或者甚至可連同 處理器(100)而整合到半導體基材(subs1:rate)中。 主5己憶體(200)是一種應用程式儲存在其中且處理哭 (10 0)執行時所主要使用的記憶體。適用的主記情、體(2 〇 〇) 鲁可包括動態隨機存取記憶體(Dynamic Rand〇m Access
Memory,簡稱DRAM)。例如,複數組(bank)的同步dram (Synchronous DRAM ;簡稱 SDRAM)或 Rambus DRAM(Rambus DRAM ;簡稱RDRAM)可能是適當的。 PCI裝置(412A至412B)是諸如網路介面卡、視訊加速 器、聲頻卡(audio card)、硬碟機或軟碟機或其控制器、 小型電腦系統介面(Small Computer System Interface; 簡稱SCSI )轉接器、以及電話介面卡等各種周邊裝置的舉 例。同樣地,ISA裝置(418)是諸如數據機、音效卡、以及 92769 57 1362613 ' GPIB或現場匯流排介面卡(fieid bus interface card)等 • 各種資料擷取介面卡等的各種類型的周邊裝置之舉例。 设有圖形控制器(4 0 8)以控制顯示器(4 2 6 )上的文字及 影像之描繪(render)。圖形控制器(408)可採用此項技術中 習知的典型圖形加速器,用以將可有效地移進及移出主記 憶體(200)的三維資料結構描繪。圖形控制器(4〇8)因而可 以是AGP匯流排(410)的主控裝置,這是因為圖形控制器 鲁(408)可要求並接收對匯流排橋接器(4〇2)内的目標介面之 主控權’因而可存取主記憶體(2〇〇)。專用的圖形匯流排可 配合而自主記憶體(2〇〇)迅速地擷取資料。圖形控制器(4〇8) 可針對某些作業而將其組態進一步設定成產生AGp匯流排 (410)上的pci協定交易。匯流排橋接器 U02)的AGP介面因而可包含用來支援agp協定交易以及 pci協疋目標及發出者交易(initiat〇r 的功 能。顯示器(426)是其上可呈現影像或文字的任何電子顯示 。適用的顯示器(426)包括陰極射線管(Cath〇de Ray Tube ;簡稱CRT)及液晶顯示器(UquidCrystai ^ 簡稱LCD)等的顯示器。 請注意,雖然前文說明中以使用AGP、PCI、及ISA或 EISA匯流排作為例子,但是亦可視f要而以任何匯流排架 f取代。又請注意’電腦系統(4〇〇)可以是包含額外的處理 =(例如圖中所示作為電腦系統(4 〇 〇 )非必須的組件之處理 。。〇a))之夕重處理電腦系統。處理器(100a)可類似於處 里》。(1 GO)。更具體而言,處理器⑴㈤可與處理器(⑽)
5S 92769 1362613 * .完全相同。處理器(100a)可經由獨立的匯流排(如第i4圖 •.所示)而連接到匯流排橋接态(4 〇 2 ),或者可與處理器(1 〇 〇) 共用CPU匯流排(424)。此外,處理器(100&)可耦合到類似 方' L2决取5己’丨思體(428)的非必須的L2快取記憶體(428a)。 現在請參閱第15圖,圖中示出可包含前文所述的派發 單元(104)、記憶體檔案(132)、排程器(118)、及/或推測 暫存器對映單元(8〇〇)的電腦系統(4〇0)之另一實施例。其 鲁他實施例也是可行的且可考慮採用。在第15圖所示之實施 例中,電腦系統(400)包含數個處理節點(pr〇cessing n〇de) (612A)、(612B)、(612C)、及(612D)。每一處理節點係經 由每一各別處理節點(612A至612D)内包含的記憶體控制 态(616A至616D)而辆合到各別的記憶體(614A至614D)。 此外,處理節點(612A至612D)包含用來在該等處理節點 (612A至61 2D)之間通訊的介面邏輯。例如,處理節點(612a) 包含用來與處理節點(612趵通訊的介面邏輯(618A)、用來 _與處理節點(612C)通訊的介面邏輯(618B)、以及用來與另 一處理筇點(圖中未示出)通訊的介面邏輯(6丨8C)。同樣 地,處理節點(612B)包含介面邏輯(618D) ' (61δΕ)、及 (618F);處理節點(612c)包含介面邏輯(618G)、(618Η)、 及(6181);且處理節點(6i2D)包含介面邏輯(gigj)、 (618Κ) '及(618L)。處理節點(6120)經由介面邏輯(6181〇 而芽禹s以與複數個輸入/輸出裝置(在菊鍊(廿a丨sy cha j η) ·’且怨中之裝置(6 2 0 A至6 2 0 B ))通訊。其他的處理節點可以 類似之方式而與其他的I/O裝置通訊。 92769 59 1362613 .處理節點(612A至612D)實施封包型連結 • (pocket-based link) ’以便進行處理節點間之通訊。在本 實施例中,係將該連結實施為若干組的單向線路 (unidirectional lines)(線路(624A)用來將封包自處理 節點(612A)傳輸到處理節點(612B),且線路(624B)用來將 封包自處理節點(612B)傳輸到處理節點(612〇其他组的 線路(624C至624Η)用來在第15圖所示的其他處理節點之 •間傳輸封包。一般而言,每一組線路(624)可包含一條或多 條資料線路(data line)、對應於該等資料線路的一條或多 .條時脈線路(clock line)、以及用來指示被傳輪的封包類 型之一條或多條控制線路(contr〇1 line)。係以一種快取 記憶體一致(C0herent)之方式操作該連結,以便進行各處 理節點間之通訊’或者以一種非一致(n〇n_c〇herent)之方 式操作該連結,以便進行處理節點與〖/〇裝置(或 如pci匯流排或ISA匯流排等的傳統結構的j/o匯流排之 >匯流排橋接器)間之通訊。此外’在如圖所示的Μ裝置 :間二用菊鏈結構而以一種非一致之方式操作該連 矣。。δ月主思,將要自處理節點傳輸到另一處理節點的封包 :!過,多個中間節點。例如,如第15圖所示,由處 理印點(61 2A )傳輸到處理節點(612m沾& — 、七老p )的封包可通過處理節 Π⑻或處^_12(:)。可使用任何適當的路由 法。電腦系統⑷0)的其他實施 ;; 施例多或少的處理節點。 …15圖所不貫 個或 鈸而。可在各節點之間經由線路(624)而以 92769 60 丄丄j .方式進行對該對應的記憶體(6l4 t 一立 •.存取。記憶體控制器(616a 母一記憶體 ⑹4八至6_的介面之可^含作為記憶體 (咖至㈣D)可包含用路。此外,記憶體控制器 干要求仵列。 。。己憶體要求排隊等候的若 介面邏輯(618A至618L)可包 鏈路接收封包,並緩衝儲存 ㈣。。’用以自該 H…、 储存將要在該鍵路上傳輪的封包。 .¾¾糸統(400)可採用用夹值蛉 匕 控制機制。例如,在包的任何適當之封包流 紗六m+ 貝匕例中’每一介面邏輯(618) :子用來連接該介面邏輯 每-類型的緩衝心的另一端上的接收器内之 γ 目。除非接收端的介面邏輯有可Μ
存封包的未使用之绥俺势T ^^ J 包。將桩价Μ 則該介面邏輯將不傳輸該封 ^ 將接收端的緩衝器向前纟 時,接收端的介面邏輯將# 而將該緩衝器空出 叫k科射^曰不,亥緩衝器已空出 到該傳送端的介面邏輯。可將該機制稱為“配給券型心別 I (coupon-based)”系統。 /〇裝置(620A至620B)可以是任何適用的I/O裝 人例如,I/O裝置(620六至62〇B)可包含用來與並可 二的另-電腦系統通訊之裝置(例如網路介面卡或數據 ☆ > 1//〇裝置(620A至620β)可包括視訊加速器、 二頻卡、硬碟機或軟碟機或其控制器、小型電腦系統介面 mn Computer System Interface; ®SSCSI)##a ,
包。"面、音效卡以及諸如GpiB或現場匯流排介面卡 的各種資料擷取介面卡。請注意,在本說明書中,術語“I 92769 62 1362613 ./〇裝置,,及術語“周邊裝置”將是同義的。 .. 在本祝明書的用法中,術語“時脈週期,,或“週期,,意指 才曰4處理官線的各階段完成其工作所用的時間間隔。各記 L、元件(例如暫存益或陣列)根據用來界定時脈週期的時脈 乜號而彳。員取4曰令及汁异出的值。例如,記憶元件可根據時 脈信號的上升緣或下降緣而擷取一值。 可 熟習此項技術者在完全了解前文所揭示的本發明之 後,將可易於作出各種變化及修改。將把後述的申請專利 範圍詮釋為包含所有此種變化及修改。 【圖式簡單說明】 若麥照前文中之詳細說明並配合下列的圖式,將可更 易於了解本發明,在這些圖式中: 第1圖示出處理器之一個實施例。 第2A圖是派發單元的一個實施例之方塊圖。 第2B圖示出一個實施例中可使用之例示記憶體檔案 0儲存單元資料項。 第3圖是將載入作業的推測結果連結到特定標記所識 別的資料值的方法的一個實施例之流程圖。 第4 A圖是根據一個實施例的載入儲存單元之方塊圖。 第4B圖是根據另一個實施例的載入儲存單元之方塊 圖。 弟5 A圖是根據一個實施例而驗證載入作業的推測結. 杲與特定標記所識別的資料值間之連結的方法之流程圖。 弟5 B圖是根據一個實施例而依據是否已證實了涉及 63 92769 1362613 -.記憶體作業的連結而使該記憶體作業退休的方法之流程 . 圖。 第6A圖是根據一個實施例的载入儲存單元之方塊 圖,該載入儲存單元之組態被設定成驗證载入作業的推測 結果與特定標記所識別的資料值間之連結。 第6B圖是根據一個實施例的執行核心之方塊圖,节執 行核心之組態被設定成驗證載入作業的推測結果與特^ έ己所識別的資料值間之連結。 第7圖是根據—個實施例而使用值比較以驗證载 業的推測結果與特定標記所識別的資料值間之連 第8圖是排程器的一個實施例之方塊圖。 第9圖是用來發出作業並回應資料 而重新發出作業的方法的-個實施例之流程圖。“ 第1〇圖是根據—個實施例的排程器之方塊 ,器之組態被設定成根據推測運算元來源或非推測運;呈 源而選擇性地決定作業是否準備就緒可發出,… 第11圖是派發單元的另—實施例之方塊圖。 弟1 2圖是派發置_ ^ 第13 H1 _山Χ 的又一貫施例之方塊圖。 θ不根據一個實施例的推測暫 元,該推測暫存器對 _ 日仔。。對映早 # f映早7之組態被設定成%雄盥拉a 戽元的標記相關聯的色嗎之指示。 、’1·^、咎弋運 第14圖示出電腦系統之L:實施例。 第15圖示出電腦系統之另一實施例。 92769 64 1362613 202 記憶體樓案控制器 206 定址型樣 210 基底邏輯暫存器名稱 214 偏移值 220 、252 ' 262 、 522 、 820 250 載入之儲存區 255 被載入的值 257 推測結果 .260 儲存之緒存區 280 儲存至載入轉送比較畜 282 值比較器 402 匯流排橋接器 408 圖形控制器 412A 至412Β PCI裝置 416 輔助匯流排橋接器 •42〇 EISA/ISA匯流排 424 CPU匯流排 428 ' 428a L2快取記憶體 504 作業儲存區 512 非推測標記 516 結果棚位 530 錯誤推測偵測邏輯電路 532 比較器 612Α 至612D處理節點 204 5己丨思體槽案儲存單元 208實體暫存器名稱 212索引邏輯暫存器名稱 資料項 254 载入標記 256 轉送標記 2 5 8、2 6 8 位址 269 退休旗標 400 電腦系統 406 記憶體匯流排 410 AGP匯流排 414 pCI匯流排 418 EISA 或 ISA 裝置 422 鍵盤及滑鼠 426 顯示哭 502 排程器控制器 510運算碼欄位 514推測標記 520標記匯流排 534 多工哭 ΌΌ 614A至614D記憶體 92769 66 記憶體控制器 介面邏輯 輸入/輪出裝置 線路 1362613
616、616A 至 616D 618 、 618A 至 618L
620A 至 620B 624 ' 624AJL 624H 線路 800 推測暫存器對映單元 802推測暫存器對映單元控制器 804推測暫存n對映單^儲存區 鲁8 1 2貫體暫存器識別符 8 1 &色碼 92769

Claims (1)

136.2613 第94114201號專利申請案 年2月2日修正簪埴可、 (〇1 λ: 2. α ^ '~*~Ί 修正本 十、申請專利範圍: -種用來驗證將載人作“統之推測結果連結到暫存 器值之記憶體檔案的系統,包含: 記憶體檔案’該記憶體檔案包含組構成儲存第 址型樣及第-標記的資料項,其中,該記憶體檔案組構 ^將該資料項中包含的該第一定址型樣與載入作業的 第二定址型樣比較’其中’若該第二定址型樣與該資料 項中儲存的該第-定址型樣相符,則該記憶體檔案植構 成將該第—標記所識別的資料值連結到該載入作業的 推測結果; ~ 、搞合到該記憶體檔案的執行核心,其中,該執行核 心組構成於執行與該載入作業相依的第二作業時存取 該推測結果;以及 耦合到該記憶體檔案的載入儲存單元,且該載入儲 早70組構成藉由執行一個或多個位址間之比較而驗 ’第-標記所識別的該資料值與該載入作業的該推 測結果間之連結。 ::請專利範圍第1項之系統,其中,該載入儲存單元 ^3組構成執行該比較並執行非推測儲存至載入轉送 之儲存至載入轉送比較器(st〇re_t〇_1〇ad comparator)。 3.如申請專利範圍帛1項之系統,其中,該資料項進一步 2成.回應該被分配的資料項而儲存用來識別載入或 92769(修正版) 68 1 子作業之轉送標記,並於該第二定址型樣與該資料項 I362613 第941 M2〇丨號專利申請案 101年2月2日修正替換頁 '令儲存的該第一定址型樣相符時輪出 -如中請專利範圍第3項之系統,其中,該载人儲 以接收該轉送標記,且該載入儲存U進-步組 構成错由選擇比該载入作業舊且具有盥該 位址相符的位址之最新的、/ 業的 盘所、登埋认—旦, 藉由比較該轉送標記 其卜所選擇的該最新的作業是載人或 ^=專㈣㈣3項之系統’其中,該載人儲存單元 被輕5以接收該轉送標記,且該载人儲 構:藉由選擇分別比該載入作業舊且 ;;、、且 入作業的位址相符的位址之最新的載入作業:最;= 儲存作業、並藉由決定所選擇的 哉、 ' 程式順序比所選擇的新的載入作業按照 旳茲取新的儲存作業新、以及蕤由μ|_ 車乂該轉送標記與所選擇的該最新的載 ) 記,以執行該比較。 糸之識別軚 6. : I ::利範圍第1項之系統,其令,該記憶體擋㈣ 項成該載入作業舊的载入作業而分配該資料、、 業先出現該較售的載入作業按照程式順序比該载入作 i盖I明專利圍第1項之系統’其中,該記惊體浐幸έ 構成回應儲存作業而分配該資料項。-體检案組 8.如申請專利範圍第J項之系統,1中, 〇科項’其中,該載入儲存單元組構成·.回 69 92769(修正版) 1362613 第94114201號專利申請案 101年2月2曰修正替換頁 |…τ &乃z日修正替換 *應該記憶體檔案以將該標記所識別的該資料值連結到 該載入作業的推測結果,而設定與該儲存作業相關聯的 旗標。 9. 如申請專利範㈣8項之系統,其中,回應該旗標被設 定,該載讀存單元組構成:保持與該儲存作業相關聯 的資訊,直到藉由執行該比較而證實該連結為止。 10. 如申請專利範圍第9項之系統,進一步包含退休件列 (retire queue)’該退休㈣組構成:如果該旗標被設 定,則在證實該連結之前,不使該儲存作業退休。 U. 一種用來驗證將載入作業系統之推測結果連結到暫存 器值之記憶體檔案的系統,包含·· 記憶體檔案,該記憶體檔案包含組構 址型樣及第一標記的 仔弟疋 成將該資料項t包含Si 該記憶體槽案組構 第一二 定址型樣與载入作業的 /、 Μ第一疋址型樣與該資料 、中储存的该弟-定址型樣相符 成將該第一桿圮所_則±L體桮案組構 推測結果;线別的負料值連結到該載入作業的 耦合到該記憶體檔案的執行核心, 心組構成於執行與該载入 /、中她丁核 該推測結果;以及 一又、第一作業時存取 耦合到該記憶體檜案的功能 構成藉由執行該推測結果與 功能單元組 之比較而驗證作業的實際結果間 所識別的該資料值與該載入 92769(修正版) 第94114201號專利申請案 101年2月2日修正替換頁 其中’該功能單元是 作業的該推測結果間之連結。 12.如申請專利範圍第11項之系統 載入儲存單元。 13·如申請專利範圍第u (―⑴,該派發;=步包含派發單元 λ %早兀組構成回應該連結而派 發錢入作業以及相關聯的比較作業 14:=行;相關聯的比較作業時執行二 構成自月圍第11項之系統,其中,該功能單元組 果以供=載入作業使用的暫存器存取該推測結 15. 儲存資料項,該資料項包含第一 種用來驗§登將載入作業系 器值之記憶體檔案的方法, 記; 統之推測結果連結到暫存 包含下列步驟: 定址型樣及第一標 在館存該資料項之後,比較該資料項中包含的該第 一定址型樣與載入作業的第二定址型樣; 回應該比較步驟,如果該第二^址型樣與該資料項 2存的該第-定址型樣相符,縣該第―標記所識別 、貝料值連結到該載入作業的推測結果; 一在該連結步驟之後’於執行與該載入作業相依的第 二作業時,存取該推測結果;以及 、在該連結步驟之後,藉由執行—個或多個位址間之 車又而驗也由δ亥第一標記所識別的該資料值與該載入 作業的該推測結果間之連結。 92769(修正版) 71 第94114201號專利申請案 j01年2月2曰修正替換頁 - 16ι如由往击<,“ Li01年2月2曰修正替換頁 • 如甲叫專利乾圍第15項之方法,.直'-- -設定成執行非推測儲存 :針係由組態也被 比較器而執行該比較。轉-之儲存至载入轉送 17.如申請專利範圍第15項之方法並 一 步包含## nfc /、中,該資料項進一 /G 3用來回應該被分配的 作業之轉送標記,其t,如果/第項而^別載入或錯存 項中儲存筮+ 5Λ第一疋址型樣與該資料 ::存的该第一定址型樣相 Js.如申請專利範圍第]7項之 史释°玄轉己。 該步驟進-步包含下列步驟: 執打該比較之 相符的位址之最新且3與該載入作業的位址 比較所選擇的該轉送 業之識別桿記,1中 ^己與所選擇的該最新的作 儲存作業Γ '中’所選擇的該最新的作業是載入或 19.如申請專利範圍第17 該步驟進一步包含下列步驟法’其中,執行該比較之 選擇分別比該载入作 業的位址相符的位址之新/ 刀別具有與該载入作 作業; 的载入作業及最新的儲存 回應選擇該最新的载 ^ 業,而決定所選擇的該 業及該最新的儲存作 所選擇的該最新的儲新的載入作業在程式順序上比 回應選擇二新;以及 業,而比較所選擇的 乍業及該最新的儲存作 μ轉送標記與所選擇的該最新的載 72 92769(修正版)
- 入作業之識别標記 ,如申請專利範圍第15項之方法 入作業舊的裁入作豐:v /、中係、回應比該载 乍業而为配該資料項,其中,該較舊的 戟入作業按照程式 平乂售的 2!•如申n广式興序比該載入作業先出現。 •斯Τ。月寻利乾圍第η 業而分配該資料項。 / Ί’係回應館存作 2 2 ·如申請專利範 順序上比㈣ 5項之方法’其中,係回應在程式 項曰* 〇入作業先出現的儲存作業而分配該資料 別的該8資步包含下列步驟:回應將該標記所識 到該載人作業的推測結果,而設定愈 該儲存作業相關聯的旗標。 疋〃 申請專利範圍第22項之方法,進一步包含下列步 如保持儲存作業相關聯的資訊’直到藉由執行該 2而证實錢結為止,其中,該保持發生以回應設定 该旗標。 24. 如申請專利範圍第23項之方法,進—步包含下列步 ::回應設定該旗標,而在證實該連結之前,不使該儲 存作業退休。 ,… u 口 | / μ 7 外· 儲存=貝料項,該資料項包含第一定址型樣及第 25. 種用來驗證將载入作業系統之推測結果連結到暫存 益值之吕己憶體檔案的方法,包含下列步驟: 記; —在儲存5亥貢料項之後’比較該資料項中包含的該i 疋址型樣與載入作業的第二定址型樣; 73 92769(修正版) ------取哥利甲請案 • Μ糾較步驟,如果 中儲存的兮笛 °x第一疋址孓樣與該資料項 •的資料值::—定址型樣相符,則將該第一標記所識別 貝科值連結到該載入作業的推測結果; 二作3連,步驟之後,於執行與該載入作業相依的第 卜菜衧,存取該推測結果;以及 作業藉由執行該推測結果與該載入 的該資二:: 驗證由該第一標記所識別 26 ’ /、該載入作業的該推測結果間之連結。 專利_25項之方法,其中,係由載入儲存 早兀執行該驗證步驟。 27.=申請專利範圍第25項之方法,進一步包含下列步 = 應該連結步驟而派發該载入作業以及相關聯的比 =作業’其_,該比較作業組構成於被執行時執行該比 較。 认如申請專利範圍第25項之方法,進一步包含下列步 驟:自並未被職人作#使料暫存畴取該推測结果 以供位址計算。 92769(修正版) 74
TW094114201A 2004-05-05 2005-05-03 System and method for validating a memory file that links speculative results of load operations to register values TWI362613B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/839,474 US7263600B2 (en) 2004-05-05 2004-05-05 System and method for validating a memory file that links speculative results of load operations to register values

Publications (2)

Publication Number Publication Date
TW200606709A TW200606709A (en) 2006-02-16
TWI362613B true TWI362613B (en) 2012-04-21

Family

ID=34959784

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094114201A TWI362613B (en) 2004-05-05 2005-05-03 System and method for validating a memory file that links speculative results of load operations to register values

Country Status (7)

Country Link
US (1) US7263600B2 (zh)
JP (1) JP2007536626A (zh)
CN (1) CN100424635C (zh)
DE (1) DE112004002848B4 (zh)
GB (1) GB2429557B (zh)
TW (1) TWI362613B (zh)
WO (1) WO2005111794A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI652618B (zh) 2013-03-15 2019-03-01 英特爾股份有限公司 用以管理儲存在硬體結構中的元素的方法與設備

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571304B2 (en) * 2005-03-18 2009-08-04 Sun Microsystems, Inc. Generation of multiple checkpoints in a processor that supports speculative execution
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US20080010441A1 (en) * 2006-07-05 2008-01-10 International Business Machines Corporation Means for supporting and tracking a large number of in-flight loads in an out-of-order processor
US20080010440A1 (en) * 2006-07-05 2008-01-10 International Business Machines Corporation Means for supporting and tracking a large number of in-flight stores in an out-of-order processor
US7624253B2 (en) * 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
US20080162889A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and apparatus for implementing efficient data dependence tracking for multiprocessor architectures
US7689812B2 (en) * 2007-02-14 2010-03-30 International Business Machines Corporation Method and system for restoring register mapper states for an out-of-order microprocessor
US9069672B2 (en) * 2009-06-12 2015-06-30 Intel Corporation Extended fast memory access in a multiprocessor computer system
US8468325B2 (en) 2009-12-22 2013-06-18 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US8521992B2 (en) 2009-12-22 2013-08-27 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US9135014B2 (en) * 2012-02-15 2015-09-15 Freescale Semiconductor, Inc Data processing system with latency tolerance execution
US9996348B2 (en) * 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
US10198265B2 (en) 2013-03-15 2019-02-05 Intel Corporation Microprocessor for gating a load operation based on entries of a prediction table
US10467010B2 (en) * 2013-03-15 2019-11-05 Intel Corporation Method and apparatus for nearest potential store tagging
US9471480B2 (en) * 2013-12-02 2016-10-18 The Regents Of The University Of Michigan Data processing apparatus with memory rename table for mapping memory addresses to registers
GB2518022B (en) * 2014-01-17 2015-09-23 Imagination Tech Ltd Stack saved variable value prediction
US11068271B2 (en) 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts
GB2532232A (en) 2014-11-12 2016-05-18 Ibm Verifying a graph-based coherency verification tool
US10185561B2 (en) * 2015-07-09 2019-01-22 Centipede Semi Ltd. Processor with efficient memory access
US20170010973A1 (en) * 2015-07-09 2017-01-12 Centipede Semi Ltd. Processor with efficient processing of load-store instruction pairs
US9575897B2 (en) 2015-07-09 2017-02-21 Centipede Semi Ltd. Processor with efficient processing of recurring load instructions from nearby memory addresses
WO2017006235A1 (en) * 2015-07-09 2017-01-12 Centipede Semi Ltd. Processor with efficient memory access
US10331357B2 (en) * 2016-08-19 2019-06-25 Advanced Micro Devices, Inc. Tracking stores and loads by bypassing load store units
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10620961B2 (en) * 2018-03-30 2020-04-14 Intel Corporation Apparatus and method for speculative conditional move operation
US11334485B2 (en) * 2018-12-14 2022-05-17 Eta Scale Ab System and method for dynamic enforcement of store atomicity
US11061683B2 (en) * 2019-06-13 2021-07-13 Microsoft Technology Licensing, Llc Limiting replay of load-based control independent (CI) instructions in speculative misprediction recovery in a processor
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
US11392387B2 (en) 2020-11-04 2022-07-19 Microsoft Technology Licensing, Llc Predicting load-based control independent (CI) register data independent (DI) (CIRDI) instructions as CI memory data dependent (DD) (CIMDD) instructions for replay in speculative misprediction recovery in a processor

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778219A (en) 1990-12-14 1998-07-07 Hewlett-Packard Company Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US5428807A (en) 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
US5584009A (en) 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
US5452426A (en) 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5799179A (en) * 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
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
US5892936A (en) 1995-10-30 1999-04-06 Advanced Micro Devices, Inc. Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5781752A (en) 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
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
US5845103A (en) 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
US6044430A (en) 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
US6112296A (en) 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6041405A (en) * 1997-12-18 2000-03-21 Advanced Micro Devices, Inc. Instruction length prediction using an instruction length pattern detector
US6175910B1 (en) 1997-12-19 2001-01-16 International Business Machines Corportion Speculative instructions exection in VLIW processors
JPH11212788A (ja) 1998-01-28 1999-08-06 Toshiba Corp プロセッサのデータ供給装置
US6202204B1 (en) 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
US6108770A (en) 1998-06-24 2000-08-22 Digital Equipment Corporation Method and apparatus for predicting memory dependence using store sets
US6463580B1 (en) 1998-11-18 2002-10-08 Intel Corporation Parallel processing utilizing highly correlated data values
US6349382B1 (en) 1999-03-05 2002-02-19 International Business Machines Corporation System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
US6658554B1 (en) 1999-03-09 2003-12-02 Wisconsin Alumni Res Found Electronic processor providing direct data transfer between linked data consuming instructions
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
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
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6438673B1 (en) 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US6643767B1 (en) 2000-01-27 2003-11-04 Kabushiki Kaisha Toshiba Instruction scheduling system of a processor
US6675287B1 (en) * 2000-04-07 2004-01-06 Ip-First, Llc Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema
US6671780B1 (en) * 2000-05-31 2003-12-30 Intel Corporation Modified least recently allocated cache replacement method and apparatus that allows skipping a least recently allocated cache block
JP3497832B2 (ja) * 2001-03-28 2004-02-16 株式会社半導体理工学研究センター ロード・ストアキュー
US6883086B2 (en) * 2002-03-06 2005-04-19 Intel Corporation Repair of mis-predicted load values
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI652618B (zh) 2013-03-15 2019-03-01 英特爾股份有限公司 用以管理儲存在硬體結構中的元素的方法與設備
US10289419B2 (en) 2013-03-15 2019-05-14 Intel Corporation Method and apparatus for sorting elements in hardware structures

Also Published As

Publication number Publication date
JP2007536626A (ja) 2007-12-13
WO2005111794A1 (en) 2005-11-24
CN1954290A (zh) 2007-04-25
US7263600B2 (en) 2007-08-28
GB2429557B (en) 2007-09-05
GB0622878D0 (en) 2006-12-27
DE112004002848T5 (de) 2007-04-05
TW200606709A (en) 2006-02-16
DE112004002848B4 (de) 2010-06-17
US20050247774A1 (en) 2005-11-10
CN100424635C (zh) 2008-10-08
GB2429557A (en) 2007-02-28

Similar Documents

Publication Publication Date Title
TWI362613B (en) System and method for validating a memory file that links speculative results of load operations to register values
US6950925B1 (en) Scheduler for use in a microprocessor that supports data-speculative execution
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
KR101192814B1 (ko) 로드가 선행하는 스토어에 의존적인지를 예측하는 의존성 매커니즘을 구비한 프로세서
US6845442B1 (en) System and method of using speculative operand sources in order to speculatively bypass load-store operations
US7028166B2 (en) System and method for linking speculative results of load operations to register values
CN101395573A (zh) 乱序处理器中的分布式记分板调度
US20090024842A1 (en) Precise Counter Hardware for Microcode Loops
TW200422948A (en) Data speculation based on addressing patterns identifying dual-purpose register
TW201042543A (en) Out-of-order execution microprocessor and operation method thereof
CN105005463A (zh) 具有世代重命名的计算机处理器
EP1644823B1 (en) Load store unit with replay mechanism
TWI338249B (en) System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7937569B1 (en) System and method for scheduling operations using speculative data operands
US7266673B2 (en) Speculation pointers to identify data-speculative operations in microprocessor
US7222226B1 (en) System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
KR20070019750A (ko) 로드 동작의 투기적인 결과들을 레지스터 값들에 연결하는메모리 파일을 유효화하기 위한 시스템 및 그 방법

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees