TWI338249B - System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor - Google Patents

System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor Download PDF

Info

Publication number
TWI338249B
TWI338249B TW093105660A TW93105660A TWI338249B TW I338249 B TWI338249 B TW I338249B TW 093105660 A TW093105660 A TW 093105660A TW 93105660 A TW93105660 A TW 93105660A TW I338249 B TWI338249 B TW I338249B
Authority
TW
Taiwan
Prior art keywords
operations
unit
data
scheduler
replayed
Prior art date
Application number
TW093105660A
Other languages
English (en)
Other versions
TW200506715A (en
Inventor
Michael A Filippo
James K Pickett
Benjamin T Sander
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of TW200506715A publication Critical patent/TW200506715A/zh
Application granted granted Critical
Publication of TWI338249B publication Critical patent/TWI338249B/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/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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, 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, 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Description

1338249 玖、發明v說明: 【發明所屬之技術領域】 本發明係關於微處理器之領域,尤其係關於在微處理 器中執行資料推測之領域。 【先前技術】 推測微處理器(speculative micr〇pr〇cess〇r)藉由同時 執行並行指令及藉由使用符合本身設計之最短可能時脈週 期而達到高的效能H在指令之間的資料及控制流程 相依性可能限制有多少指令在任何給定的時間内可以發 送’。果有些微處理克支援推測執行藉以達到額外的效 能增益。 丹甲一種形式 μ伸判苟衩制流程推測„仅刺流裎推; 係預測(prediet)其中程式控制將要執行之方向。例如,; 用分支預測以預測是否將採取分支。可用的分支預測有; 多形式’如從每—次單純地採用相同的預測之方法乃至巧 程式中維持該先前分支之繁複的歷史記錄以產生歷史㈣ 的預測之方法。分支㈣可料過硬體最佳化、編譯^ 佳=兩者而變得容易。基於藉由該分支預測機制所^ =’可以推測地提取及執行指令。當該分支指令最舍 =:不該分支預測能夠受到確認。若該預測是不正確時’ …I—正確預測所推測執行之任何的指令可以撤銷。 料數值。推測為資料推測’該資料推測係預測實 貝枓推測之形式包含推測產生用於記憶 92525(修正本) 5 1338249 體運算之位‘址及推測產生用於在計算運算中所使用之資料 數值。使用控制推測時,最後是評估用以推測性產生數值 之該潛在的條件,以便將該推測確認或取消。 由於推測允許指令之執行而不需等待完成相依性檢 驗’若來自正確推測所獲得之效果超過不正確推測所損失 之效果,貝可以達到顯著的效果利益。因此需要減少因不 正確推測之效果損失。 【發明内容】 本文將揭示在資料推測微處理器中用於避免進行中 之運算例中斷運算重演之方法及系統之各種實施例。在某 些實施例中,微處理器可能包含經由配置以執行運算之」 個或㈤以上之功㉟性軍元'經&配置以發送運算至該功 能性單元而用於執行之排程器、以及至少一個重演偵測單 兀。忒排程可以經由配置以對於每個運算維持狀態資 ,。在其它事件中,此類狀態資訊可能指示是否相關的運 算具有完全的執行。該重演偵測單元可以經由配置以偵測 在該排程器中之其中一個運算應該被重演。當運算經由偵 側為需要被重演時,若該運算例目前藉由其中—個功能性 單元所執行,則該重演偵測單元經由配置以禁止對於該運 之狀態資sfl之更新,以回應該進行中之運算例之執行。 電知‘統之各種的實施例可能包含此類的微處理器。 在其中一項實施例中’該重演偵測單元可以經由配置 以藉由使該功能性單元執行該進行中之運算例成為運算之 非讯唬完成至該排程器,而禁止對於該運算之狀態資訊之 6 92525(修正本) 更新。在另—個實 以藉由使該排…」!重演偵測單元可以經由配置 於兮運管」 關於該運算之發送計數,而〜 ”玄運异之狀態資訊 叩不止對 合該運算例之發送計數=若該運算之發送計數並未符 該狀態資訊來回庫爷:^可以經由配置以不更新 思通運异例之完成》 在某些實施例中,若資 運算之不正確的資料推、01則確w早兀偵測到對於該 關;μ & 、’推測,該排程器可以經由配置以更新 關於運异之狀態資 罝以更新 #剞、以扣不該運算需要被再次科详。a 偵測到該不正確資料推 人’…画 演偵單元可以 右該運-例正在執行’該重 _ 置以確保關於該運算之狀態資气#垮 “在運算例執行之後該運算需要被再次發持續 重一伯某—實例中’微處理器可包含數個重演偵測單元。 重則貞測單^可以包含 制早7L。 載入儲在— 、貝枓推測確認單元之内(例如在 秋八储存早疋或其他功能De _ 之内彳i? I Α β 早70之内或者在記憶體控制器 之内)或者於該排程器本身之内。 —種方法之實施例可包含. 緊接於發送該運首例之後:,發…執行之運算例,‘ 不,以及回應於該指示,林^ * ^ π止在排程器内之該運算狀態之 更新以回應該運算例之完成。移 罝;袖/ m止该更新可包含使功能性 哭。=該運算例成為該運算例之非訊號完成至該排程 :奸/,禁止該更新可包含··該排程器修正關於該運算 Μ 以回應接收該運算應該被重演之指以及若 送計數並未符合該運算例之發送計纟,該排程 -不更新關於該運算之妝能次 狀心貝汛以回應該運算例之完成ο 92525(修正本) 7 1338249 【實施方式】 雖然本發明易於做各種的修正及替代的形式,本發明 之特定的實施例藉由在該圖式中之例子而呈現並且於此做 詳細描述。然而,應該瞭解的是對於該圖式及詳細的描述 並未意在限定本發明於所揭示之該特定的形式,而相反 地,本發明是意在涵括落在如同由所附申請專利範圍所定 義之本發明之精神及範疇内之所有的修正、等同及替代。 而要注意的是,該標題僅用於組織化的目的並且非意在使 用於限定或說明該描述或申請專利範圍。再者,需要注意 的是該文字“可以(may)”以允許的含意使用於整個申請 案中(忍即,具有潛在可能的、能夠的广而非強制的含意(意 即,必須(mUst))。該專有名詞“包含(inc丨ude)”及該名詞 之衍生語意指“包含,但並未限定於(inc】uding,but η" limited to) 。έ玄專有名詞“連接(connecte(j)”意指“直接 地或非直接地連接,,’並且該專有名詞“連結(c〇upied)” 意指“直接地或非直接地連結”。 第I圖為微處理态1 〇 0之一個實施例之方塊圖。微處 理器100經由配置以執行儲存於系統記憶體200内之指 令β很多這些指令運算儲存在系統記憶體200内之資料。 需要注意的是系統記憶體200可以是實體上分佈於整個
8 e整個電 ]00做存 7以包含指令快取(instruction 料快取1 28。微處理器1 〇〇可以包含連結至 92525(修正本) 1338249 ,指令快取106之預先取回單元1〇8(prefetchunh)。發送 早元1〇4可以經由配置以接收來自指令快取]〇6之指令並 且發迗運算至排程器(schedu】er)U8。一個或一個以上之排 程器118可以連結以接收來自發送單元1〇4之發送的運算 並且發出運算給一個或一個以上執行核心(execution c〇res)124。每個執行核心124可以包含經由配置以對資料 快取執行存取之載入/儲存單元。藉由執行核心124所 產生之結果可以輸出至結果匯流排1 3 0。這些結果可以使 用作為用於後續發出的指令及/或儲存至暫存器檔案ιΐ6 之運算元數值(operand values)。退返佇例(retire queue)i〇2 可以連結至排程器118及發送單元1〇4。該退返佇列ι〇2 可以經由配置以決定何時每個發送的運算可以退返。在— 個實施例中,該微處理器100可以設計為相容於χ86架構。 需要注意的是微處理器1 〇〇亦可以包含很多其它的組件。 例如,微處理器1000可以包含分支預測單元(未圖示)。 指令快取1 06在藉由發送單元】04接收到指令之前可 以暫時地儲存指令。指令碼可以透過預先取回單元1 〇8藉 由預先取回來自該系統記憶體200之指令碼而提供給指令 快取1 06。指令快取1 06可以用不同配置(例如集合聯合 (set-associative) ' 完全聯合(fully-associative)或者直接對 映(direct-mapped))而實現。在某些實施例中,可以有多重 階層指令及/或資料快取106和128。某些階層可以與該微 處理器1 00整合,如同所示,而其它階層快取可以外部連 結至該微處理器。 92525(修正本) 9 1338249 預先取回單元1〇8可以預先從該系統記憶體2〇〇取回 指令碼而用於在指令快取106之内儲存。在—個實施例 中,預先快取以1G8以配置隸料H㈣叢 發(burst)指令碼進入指令快取1〇6。預先取回單元ι〇8可 以使用各種特定的指令碼預先取回技術及演首法。 發送單元104可以藉由該執行核心124以及運算元位 址資訊、即時資料及/或位移資料,而輸出包含可執行的位 7L編碼運算之輸出訊號。在某些實施例中,發送單元⑺4 可以包含解碼電路(未圖示)而用於解碼某些指令進入在執 =核心124之内之可執行的運算。簡單的指令可以對應於 單運异。在某些實施例中,較複雜的指令可以對應於多 重的運算。若運算包含暫存器之更新,在暫存器檔案116 内之暫存器位置可以保留(例如當該運算解碼時),以儲存 推測的暫存器狀態(在另一項實施例中,重新定序緩衝器可 以使用以儲存用於每個暫存器之一個或一個以上之推測的 暫存器狀態)。暫存器對映可以轉譯來源及目的運算元之邏 輯暫存器名稱成為實體暫存器名稱,以形成暫存器重新命 名暫存器對映可以追蹤那一個在暫存器檔案116内之暫 存器目前受到配置。 第1圖之微處理器1 〇〇支援非按序執行。退返佇列1 〇2 可以保持用於暫存器讀取及寫入操作之該原始程式順序之 追5(¾、介^田 &。干用於推測指令執行及分支錯誤預測回復以及促 成精確排除。退返佇列]02可以實現以先入先出配置,當 δ玄先人To 疋出配置之運算有效時,該運算移至該緩衝器之 10 92525(修正本) 叫 8249 底部(boftom),,,而在該佇列之“ u + 新登錄之空間。退返仵列1〇2可、方(t〇P)’產生用於 運笛〜 可以撤回運算,以回應於該 連·^元成執行及依程式順序迳丨 何運首… 負序達到及包含該運算之執行於任 暫存器内產生該數值之運曾撤=文到確認。當在該實體 枓— 介擻回時,退返佇列102可以交 付戸、體暫存器之推測的狀態成 能。 〜成為微處理器1〇〇之架構狀 在某二貫,“列中’退返佇列】〇2可以實現成為 序緩衝器(reorder buffer)之一邱八 亦τ、, #分。此類重新定序緩衝器 以#用於推測暫存器狀態之資料數值儲存,以支援 ^重新命名。需要注意的是在其它實施例中,退返仔 :可以不提供任何資料數值儲存。相反 回時,退返仔列102可以移除配置 :運:撤 31 ϋι. At ^ ^ 丹而要儲存推測暫存 暫存器對映而γ存裔樓案116内之暫存器並且提供訊號給 暫存,ν二:示那一個暫存器8前是空的。藉由維持在 ::棺案U6内之推測的暫存器狀態(或者在另 :例中,在重新定序緩衝器之内),直到產生 之 异文到確認,若分支預測不正確,則 -狀-之運 推測執行的運算之結果在暫存:、預測路徑之 的。 孖。4案116内可以是無效 若特定運算之所需的運算元為暫存器位置,可 :位,貧訊傳送至暫存器對映(或重新定序緩衝器)。例子 如,一架構中,具有八個32位元邏): eax、ebx、Ec 科嘴存=(例如 暫存哭产安 P、ESI'EDI及咖)。實體 暫H m(或重新定序緩衝器)包含用於改變這些邏 92525(修正本) 11 輯暫存器之内容之^ 存器檔案116内〜…存,而允許非按序執行。在暫 修正其中一他Λ之A體暫存器可以經配置成以儲存決定於 ,, 亥^輯暫存器之内容之每個運曾的έ士杲 m 此,在特定的程4 W硬开的結果。因 ⑴(或在另:之執行期間之各種時刻,暫存器檔案 或-個以上之八:施例中’重新定序緩衝器)可以具有-個 暫存哭 3有給定的邏輯暫存器之推測執行的内容之 暫存器對昧7 之特定的邏輯暫=指定實體Γ存器給詳述目的運算元 暫存器檔案116::而用於運异,發送單元104可以決定 '、’、有指定給邏輯暫存器之一個或一個以上 ,歧置的實㈣存器,而該邏輯暫存器在給定的運算 :述來源運4·元。該暫存器對映可以提供標籤㈣)給時 4定給該邏輯暫存器之實體暫存器。此標藏可以經由使 用以存取在該暫存器檔案116内之運算元的資料數值或藉 土傳遞至該結果匯流排13〇上之結果而接收該資料數值。 右遠運算元符合記憶體位置,該運算元數值可以透過載入/ 儲存單元222而提供至該結果匯流排(用於結果傳遞及/或 储存於暫存器檔案118内)。當該運算藉由其中一個排裎器 11 8而發出時,運算元資料數值可以提供至執行核心】24。 需要注意的是在另一個實施例中,當運算發送時,運算元 數值可以提供至對應的排程器11 8(而非當該運算發送時, 提供至對應的執行核心1 24)。 在發送單元1 04之輸出處所提供之該位元編碼運算及 即時資料可以傳送至一個或一個以上之排程器Η 8。需要 92525(修正本) ]2 1338249 » · 注意的是此所使用的排程器為偵測何時運算已準備執行之 元件並且發出備妥運算給一個或一個以上之功能性單元。 例如,保留位置(reservation station)是排程器。在排程器 或群組排程器内之運算亦稱為在指令内之運算或運算視窗 (operation window)或排程視窗(scheduHng wind〇w)。每個 2程器Π8對於等待發出至執行核心124之數個待決的運 算具有能力保留運算資訊(例如編碼執行位元之位元以及 運算元數值' 運算元標籤及/或即時資料)。在某些實施例 中,每個排程器118可以不提供運算元數值健存。相反地, 每個排程器可以監視發出的運算及在暫存器檔案"6内可 獲得之結果,以決定何時運算元數值將可以藉由功能性單 二從暫存器權案116或結果匯流排13〇)而獲得讀取。 例巾,每個排程器118可以結合預設的功能性 早兀126。在其它實施例中, 瞀从1 排長态1】8可以發出運 异給超過其中一個功能性單元126。 運 排程器m可以藉由執行核心】 暫時健存運算資訊。如w Μ供··“寺執灯之 可以儲存用於待 )㈣排^⑴ 以錯存已經執扞作θ 孔。此外,每個排程器可 資訊。運瞀秒從山 丨甘出之用於運具之運算 π不嗌出至執行核心】24 及時獲得產生之用於執行之 =心,以回應可 此,在運算係執行之順序中可以不=的運鼻元之數值。因 列之順序。包含資# 5於邊原始程式指令系 匕3 μ科推測之運嘗可 内直到該運算變# 了以仍然在排程器】】8之 夂成非推測性的為、. ’以便若該資料推測不 92525(修正本) 13 1338249 正確’該運算可以重新發出。 在一個實施例中,每個執行核心124可以包含 能性單元126(例如功能性單元126Λ至126C,如於第固力 中所顯示)。某些功能性單元,例如126a,可以 1 ® 執行加法及減法之整數計算運算、以及平移 '旋轉、二 運算及分支運算。其它功能性單元,例如126B,可以:。 成包含浮點運算。一個或一個以上之該功能性單元(例己如置 126A)可以配置成以執行位址產生,而用於載入及儲存藉 由功能性單元(例如126C)所欲執行之記憶體運算該功9能 性單元126C執行載人及儲存運算以存取健存於資料快: :28及/或系統記憶體内之資料。在一個實施例中此類功 能性單元⑽對於資料及位址資訊可以配置成具有數個 儲存位置載入/儲存緩衝器而用於待決載入及/或儲存。 一個或-個以上之功能性單元126亦提供關於條件分 支指令之執行之資訊給分支預測單元,以便若分支錯誤預 測’該分支預測單元可以接續已經進入該指令處理流程之 錯誤預測的分支而除去指令並且重新指向預先取回單元 1 〇 6。該重新指向的預先取回單元〗〇 6接著可以開始從指令 快取或系統記憶體取回該正確的指令集。在此種 情況下’在該錯誤的分支預測之後,所產生之在該原始程 式序列内之指令的結果可以捨去,包含推測執行及暫時儲 存於暫存器檔案11 6内之結果。 处若f存器數值受到更新時,藉由在執行核心124内之 力靶ϋ單⑦】26所產生之結果可以輸出至該結果匯流】3〇 92525(修正本) J^>6Z49 w曰存益擋案11 6上。若該記憶體位置之内衮A 改變時,产从, 分又巧 在執核心1 24之内所產生之結果可以提供至該截 入/儲存單元1 26C。 、貝料快取1 28為快取記憶體,該快取記憶體經由提供 以暫時地儲存在執行核心124及該系統記憶體2〇〇之間做 轉移之資料。如同上文所描述之該指令快取1 06,該資料 决取1 28可以在各種特定的記憶體配置内實現,包含集合 聯&配置。此外’資料快取1 〇 6及指令快取1 2 8在某些實 施例中可以在單一的快取内實現。 在某些實施例中,微處理器丨00可以包含整合的記憶 體控制器1 60 ’允許該微處理器直接對系統記憶體200介 面接合。在其它實施例中,記憶體控制器1 60可以包含於 非直接連結微處理器1 〇〇與系統記憶體2〇〇之匯流排橋接 内。 資料推測 如同在此所描述的,若具有資料數值可能發現是不正 確的並且因而重新計算之可能性,則該資料數值是經由推 測的。推測的資料數值是無法鑑別具有可為正確或不正確 之確認性的數值。若該資料數值為運算之結果,對於該運 算某些資料推測已經執行或者若該資料數值視另一個推測 的資料數值而定(例如若該資料數值產生成為具有一個或 一個以上之推測的運算元之運算之結果),則資料數值可以 重新計算。 在微處理器]〇〇内之各種機制可以執資料推測。例 15 92525(修正本) 1338249 士: ’發迗單元104、記憶體控制器i6〇及 上之功能杈_ 调或—個以 單7L 126,母一個對於特定的 料推測。hi ”n" * 可以執行資 以使用做Γ 到其中一個運算之結果可 文為用於另一個運算之推 元藉由I^例如,發送單 别儲存運算可以預測載入運算將存 快取⑵之資料。該發送單心4可以=存於貝料 該暫在哭 口應地確認儲存於 子窃内之資料數值,該暫存 、 夾嗝而Λ、于裔便用作為該儲存運笛夕 來/原而成為該載入運算之推測的運4 測在此稱為相佑果此種形式的資料推 運算之來源而延伸至該發送單元一由連結該储存 推測的運曾K 内而作為用於運算之 算元。另二二^ f ㈣“運算之結果成為運 未計算的位址測可以藉由允許載入至具有 依賴較早的儲存, 』年又柯的載入並未 储存而在載入儲存單元126C内執行。 在多重處理㈣、統中,記憶體控制器Μ 致性檢查以維持快取 ^ ^ 』以執仃— 它…… 憶體控制器160在… 匕微處理㈣快取之—致性檢查完成之前可 “ 體200推測地回傳快 本統汜憶 ρ 路線之複本。若該-致性檢杳接芸 決疋欲取回之該快取路 一接者 L取路線之正確祓本目前儲 理器快取内,則從么姑々也邮 力個處 攸不統圯憶體200所推測地取 路線之複本可以是盔5π 取口之忒快取 疋…、效的。因此,從存取該快 生之任何載入運首处里收β』 私砂綠所產 、.,〇果將疋推測的,直到該一 成為止。此形式之推制乂 * , * ^ 任知查兀 <推測在此稱為記憶體預測(_ prediction) 0 ^ J6 92525(修正本) 1338249 發送早元1 04可d a , 错由預測運算之結果而執行資料推 測。例如,某些運算可 1貝向產生相同的結果,並且因此 令每次其+ —個運算受至,丨泠饰 ^ .〃 1處理’該結果可以藉由發送單元 1 04在該運算藉由功能性單一 > 26之貫際執行之則而推測 地產生。此形式的資料推測 、J於此%為資料預測。需要注意 的是資料預測亦可以執行於兮 丁方、6亥微處理器之其它部分内(例 如在載入儲存單元12 6C内)。 載入儲存單元1 26c可抽 」以推測地產生該位址並且基於 該推測的位址’其位址仍麸夫〜 5…、禾4過计鼻之載入指令之結果 基於早期處理的載入夕捃,, m之拉 <。例如,若該先前的N個載入 運算具有藉由固定平移量C所她„ 夕里C所彼此間隔之目標位址 A 1 -AN(例如 A 1,A2=A 1 +Γ, A χτ C ’ AN=A(N-1) + C) ’ 該載入 儲存單元1 26C可以推測地回僂 θ l uj得位在取近存取的位址an 加上自玄固定的平移量C夕咨4sL二& 之貝科而作為該載入運算之結果。 此種形式的資料推測於此摇為 '此%馮位址預測。需要注意的是位 址預測之其它形式可以使用於很多實施例中。 視資料推測已經執行於運算上之結果而定之運算,亦 可以產生推測的結果。例如,萁 ' J戈 右位址預測經由使用以產生 載入運算之推測結果’任何使用作為運算元之該載入的推 处。果之執订之相依運异可以產生推測的結果’該推測的 、”。果可以藉由其它相依的運算而依序使用作為運算元。因 此,右在該載入運算内之該優先的推測係決定為不正確 者,S玄相依運算的結果亦可能η尤不过、, 卜 衣力J牝疋不正確的,亚且因此視該 入而定之運异之整個相依性連鎖可能需要重新執行以產 92525(修正本) 1338249 生正確的結果。在 時’該相依性運算的.二,若該優先推測經發現為“ 基於任何其以^ 的(假設㈣結果並非 八匕推凋的數值)。 當運算藉由功能性單元而 一 執行之該很多運苜 订,,對於資料推測已經 生運算之結果之哕資# %〜j如,使用於推測地產 確認,該功能性藉由該!能性單… 推測結果而執行該運算 ::運异之真實結果與該 該貝料推測為不正確時,此 =付,右 行。其它運算可以確㈣不而要重新執 士+ 要元整地執行。例如,芒且 .^ 載較早的儲存(例如由於相依性 或位址預測)傳遞本身的結 被, ⑷*該載入位址計算時,哕 載入之推測的結果可能需要確 〇λ 時,此類運算可能需要重新勃, 科推測不正確 的結果。一重新執-(至少部分)以產生該正確 由於對於資料推測已經執 .. <連τ以及本身的相依 性運鼻可能需要重新執行,退返一 僅為退返運算,而對於該運瞀任η ^以經由配置成 連^任何優先的資料推測已經決 定。在微處理器100内之經由配置以確認—種或一種以上 此稱為用於確認資料推測 之資料推測確認單元或工具。 重演违行中運篝 由於不正確資料推測運算可以從排程器118透過重新 發出而重演。A了要造成已經藉由該排程器118所發出之 92525(修正本) 18 運具以重洁,+ , 在排程器1 1 Λΐ 以顯示該運曾 之該運算之狀態可以做修正 咬π應泫重新發 該排程器! u可rw_丄 °回應於該更新的運算狀態, J以經由配筈 元126。若用於該運首1 U重新發出該運算給功能性單 播並且該運算已經發ζ之來源資料在結果匯流排130上廣 記用於重演之運算。運昝則該排裎器亦可以經由配置以標 不正確的資料推測之執^ =來源資料可以因為對於偵測到 常,欲重演運算之需长。或重新執行運异而重新廣播。通 資料推測及該運質咖可U错由偵測用於運算之不正確的 測或者藉㈣測該執行之資料推測確認單元而推 正確的資料推測而重:二’需要因為用於其它運算之不 偵測該需要重演 目依性關聯的排程器而偵測。在 、 ^心傲處理哭1Λ 於偵測需要重演之.益100内之組件於此稱為用 、 异之重演偵測單元或工且0 某些資料推測運算 早兀飞/、。 功能性單a m内為正在進一:為重演,同時該運算例在 藉由排程B 118發送至功能:„。。進行中的運算例為已經 算在該功能性單元126内並未::126之運算,但是該運 運算例完成執行時,該指八不:全的執订。當該進行中的 之運算的其餘狀態。否則=應該影響在該排程器m内 新在該排程器内之運算之:仃中的運昇例之完成可更 45 E2 L成為完成的狀璩,衿忐4t ^ ^錯誤而無法重新發出該谋首 ,&成S玄排 的運算為需要重演者 :。因此’若该測到進行中 以經由配置以禁止該進行中^之重㈣測單元可 新該運算㈣態之能力。例在該排程ϋ m内更 92525(修正本) 19 1338249 在一個實施例中,每個重演偵測單元可以經由配置以 更新儲存在結合運算之排程器入口内之發出計數,以回應 偵測對於運算為不正確之資料推測。第2圖說明包含排程 入口 6 0 〇之排程器〗1 8之一個實施例。排程器入口 6⑽ 包含用於運算的標籤•運算元識別器(及/或運算元,在某 些實施例以及運算碼604之儲存。排程器入口 600亦包 含關於該運算及發出計數602之用於狀態資料606之儲 存。當接收到運算應該重演(例如由於其中一個運算的運曾 元重新廣播於結果匯流排1 3 〇上或資料推測確認單元顯示 用於該運算所執行之該資料推測是不正確的)之指示時,該 排程器1 1 8可以增加與該運算相關之發出計數。當該排程 器118初始配置入口提供運算時,用於該運算之發出計數 可以設定為最小數值(例如零)。 當該排程器1 1 8發出用於執行之運算給功能性單元 126時,該排程器可以提供與該運算相關之發出計數給該 功能性單元1 26。當廣播該運算之結果時,每個功能性單 元126可以經由配置以廣播該發出計數。該功能性單元1 μ 可以處理該發出計數成為部分該運算的標籤,並且該發出 計數在特定功能性單元内對於該運算之處理沒有影響。然 而,當該排程器118遇見該運算廣播之結果時(例如當該結 果數值與該運算之發出計數及標籤及/或本身的運算元廣 播於結果匯流排130之上時),該排程器m可以經由配置 以比較與該運算例相關之發出計數與目前儲存於該運算的 排程器入口 600内之發出計數。若該兩個發出計數數值並 92525(修正本) 20 1338249 未相等時,、該排程器118可以禁止更新在該排程器内 算之狀態。因此,若該運算的狀態及發出計數 算之發出但在該運算之執行—成 Α 運 钒仃凡成之則而在該排程器U8 做更新,則错由功能性單元126之運算之完成將不倏正在 ㈣…内之運算之狀態。需要注意的是該排程: 可以更新用於不正確推測的運算之發出計: 某些實施例中該運算目前為進行中的。其它的总=否在 限制此類對於運算已經在進行中之更新。“列可Μ 在某些實施例中,由於該非相等的發 算之結果因為不正確的資U不該運 則若在該排程器】】8内之運嘗M t 了此疋不正確的, 運算例之結果之該發的發出計數並未符合結合該 木U發出3十數廣播,該排程 發出視該運算之結果而定之任 8可以禁止 不正確的資料數值所執7" °然而’使用該可能 出,下一次該不正確推相依性的運算亦將重新發 以W 運异之結果為廣播的。因此,, ……’由於正確性將仍 在 以允許相依性運算以使 -排私窃〗〗8可 行。 ㈣正確地推測運算之結果而執 除了在該排程器内使用發 用運算技巧特徵《禁止更 。十1 ’某些實施例可以使 以回應於進行中之運算例之:用於重演之運算之狀‘態, ⑶之方塊圖,該 ,儿成。第3圖說明功能性單元 b江早元】2 6堙由阶 除0⑴),,經由識刿為需要重宫、^由配置以有效地“去 性單元126藉由避免關於該進運算例。該功能 ◊運昇例之任何改變的 92525(修正本) 21 1338249 狀態資料廣播至該排程器U8而去除進行中的運算你。 功能性單元126接收來自重演偵測單元確認需要:。舍 出的運算之-個或-個以上訊號。包含在該功能性=之髮 ⑶内之運算去除邏輯7〇〇可以運算以避免該功能性^ :26廣播顯示在該排程器内之該運算狀態應該更新之:几 訊。由於該排程器將因此不接收該運算已經完成執行: 不,該排程H U"字不更新在該排程器内之運曾 才日 …由於在需要重演該運算之㈣之前發出之 :。 元,之故,當在該實施例中使用發出計數以禁正修 程器狀態時,實現運算去除邏輯7〇〇之 _ # 置而禁止發出相依性運算進♦ °以紅由配 完成。然而,由於此功处性叮处^^丁中的運算例之 由於此功月,性可能不需要處理器 實施例可以允許相依性運算使用藉由該的:其它 產生之結果而發送及執行。在下一次 所 測的發出及執行時,任何相依性運算可確推 已二Γ正確推測受到偵測之前,在功能性單元内 已4在進仃中之運算例之完成,帛4A圖說:内 於不正確推測的運算之排 V更新對 在步驟801,接收到Λ狀〜、之方法之—個實施例。 按收到達仃中的運算需 ^ 於該需要重演該運I 重次之指示《回應 可以重置以心:rr在該排程器内之運算之狀態 ”"貝不4運算應該重新發 ^ 顯示。此外,杏今 。同在步驟803所 器内之該運算二 推測憤測為禁止更新在該排程 、开之狀態時,如同在步 中的運算例之完成為正在進 < 5所顯示’該進行 力月b 805可以藉由有效 92525(修正本) 22 1338249 地去除在功能性單元内目前執行該運算之該進行中的運算 例,藉由使用在該排程器内之機制(例如發出計算)以區^ 運异例而實現,諸如依據第4B圖所描述之例子。 由於在偵測到需要重演該運算之前,在功能性單元内 ==中之該運算例之完成,第則說明禁止更新 對於該運异之排程器狀態之方法之另—實施^如㈣_ 4A圖中,重演該運算之需要在步驟8()1㈣測到並且該運 异之狀態在步驟803A處於該排程器内回應而更新。此外, 在該排程器内用於區別運算例之發出計數或其它工 做仏正以回應偵測用於該運算之不正確資料 驟803A處所顯示…、確貝枓,如同在步 .貝不 s該運具例完成執行時,盥哕g & 相關之發出計數可以盥少—μ Λ /…亥運异例 計數做比較,如同少本挪 之4發出 ^ 门在步驟805所Α顯示。若該兩個發出叶 數匹配時,在兮M e。 U * °τ ”m 為'内之運算的狀態可以更新以回庫於 «鼻之元成,如同在步驟斯所顯示。例如 ^ 狀態可以做更新以s 4運开的 ^ LA , 頜不έ玄運算已經完成執行。若节而佃钵 出計數並未匹配,訪,富# 右这兩個發 該運具的狀態可以不需更新, 驟805Β所顯示,因 新如同在步 U此’基於不正確的資料推測士 行之該運算例蛊廊2壬* 別所疋成執 ”應έ玄重新發出以執行而未有不正砝& μ 推測之該運算例係右略戌, 节个正確的貝枓 ’、有所區別。此種區別允許移μ t Α 算之狀態之更新n •別允。午-止對於該運 回應具有不正確資料數佶& 運算例之完成。 貝汁数值而執仃之該 例示性電腦系 弟5圖顯示雷^ ^統_之—財施例^塊圖,該 92525(修正本) 23 1338249 電腦系統々00包含透過匯流排橋接902而連結至各項系統 組件之處理器1 00。處理器1 00可以包含如同上文所描述 之經由配置以重演運算之重演偵測單元及排程器。電腦系 統之其它實施例是可能並且可考慮的。在該描繪的系統 中’主記憶體200透過記憶體匯流排906連結至匯流排橋 接902,並且令繪圖控制器908透過圖形加速埠(AGP)匯流 排9 1 0而連結至匯流排橋接9 0 2。數個週邊組件介面(p c I) 裝置9 1 2A至9 1 2B透過週邊组件介面匯流排9 1 4連結至匯 流排橋接902。第二匯流排橋接9 1 6亦可以透過延伸工業 ‘準木構(EISA)/工業標準架構(ISA)匯流排920而提供以 相容於電氣介面成為一個或一個以上之延伸工業標準架構 或工業^準架構裝置9 1 8。在此例子中,處理器1 〇透過中 央處理器(CPU)匯流排924而連結至匯流排橋接9〇2並且 ’該處理器100 連結至選擇L2快取928。在某些實施例中 可以包含整合的L 1快取(未圖示)。 匯流排橋接902提供介面於處理器丨〇〇、主記憶體 200、繪圖控制器 之裝置之間。當i 908及連結至週邊組件介面匯流排
之協定。 92525(修正本) 24 除了提供介面給用於调、甚 俨進加 、、邊,、且件介面匯流排9 1 4之工業 才示旱木構/延伸工業標準牟 可以敕人1 L 不丰木構匯流排,第二匯流排橋接916 *T 乂正&額外的功能性。私λ 盥 則輸出控制器(未圖示),不論 疋 > '苐一匯流排橋接9丨6外 外。Ρ連接或與第二匯流排橋接 9 1 6正合者,亦可以包令 / Μ # I& 、電月面糸統900之内以提供用於 鍵_πέ與滑鼠922以及用大μ — r。序列與平行蟑之操作的支 友。,丨、取早兀(未圖示)在其他實施例中亦可以連纟士至 位在處判1〇〇及匯流排橋接9〇2間之中央處理器匯流排 924。另外,該外部快取可以連結至匯流排橋接9〇2並且用 於該外部快取之快取控制邏輯可以整合至匯流排橋接902 内。L2快取928以背部配置於處理器⑽而顯示。需要注 意的是L2快取928可以與處理_ ι〇〇分離、可以與處理 器1〇〇整合成卡£式(例如溝槽!或溝槽A)或甚至可以與 處理器100整合在半導體基板上。 主記憶體200為應用程式儲存在其中並且處理器】〇〇 主要由該記憶體執行之記憶體。適當的主記憶體2〇〇可以 包含動態隨機存取記憶體(Dynamic Rand()m Aeeess
Memory’ DRAM)。例如,複數組同步動態隨機存取記憶體 (Synchronous Dynamic Random Access Memory > SDRAM) 或Rambus動態隨機存取記憶體(rdram)可能是適當的。 週邊組件介面裝置91 2A至9 12B為說明各種週邊置, 諸如網路介面卡、視訊加速器、音訊卡、硬式或軟式磁碟 機或磁碟機控制器、小型電腦系統介面(Srnaii Computer Systems Interface,SCSI)轉接器及電話卡。同樣地,工業 92525(修正本) 25 1338249 標準架構裝置918為說明各種型式的週邊裝置,諸如數據 機、音效卡及各種資料擷取卡(諸如一般用途介面匯流排 (General Purpose Interface Bus,GPIB)或區域匯流排介面 (field bus interface)卡)。 繪圖控制器908經由提供以控制文字及影像之轉譯於 顯示器926上。繪圖控制器908可以使用一般在該技藝中 已知的典型繪圖加速器,以轉譯可以有效地轉移至主記憶 體200内及由主記憶體2〇〇轉移之三維資料結構。繪圖控 制器908因此可以是圖形加速埠匯流排91〇之控制者,其 中該圖形加速埠匯流排9丨〇能夠請求及接收存取在匯流排 橋接902内之目標介面,藉以獲得存取主記憶體2〇〇。預 設的繪圖匯流排相容於來自主記憶體2〇〇之資料之快速恢 復。對於某些運算,繪圖控制器9〇8更可以經由配置以產 生週邊組件介面協定事項於圖形加速埠匯流排9丨〇上。匯 抓排橋接902之圖形加速埠介面可以因此包含功能性以支 援圖形加速埠協定事項以及週邊組件介面協定目標與初始 者事項兩者。顯示器9 2 6為任何影像或文字能夠呈現於其 上之電子顯示器6適當的顯示器926包含陰極射線管 (_〇心 ray tube ’ “CRT”)、液晶顯示器(liquid crystal display,“LCD”)等等。 而要注意的是雖然該圖形加速埠、週邊組件介面及工 業钻準木構或延伸工業標準架構匯流排在該上文的描述中 已’二使用作為例證,任何匯流排架構可以依照所需而替 換更而要注意的是電腦系統900可以是包含額外的處理 26 92525(修正本) 1338249 益(例如顯示為電腦系統900之選擇的組件之處理器】幻 夕工電取系統。處理器】〇 〇 a可以類似於處理器1 〇 〇。再 者,處理器I 00a可以是處理器】〇〇之等同的複製。處理器 】0〇a可以經由獨立的匯流排(如同於第$圖中所顯示)而連 接至匯流排橋接902或者可以與處理器丨〇〇分享中央處理 益匯流排924。再者’處理器1〇〇a可以連結至類似於L2 快取928之選擇的L2快取928a。 現參閱第6圖,該圖顯示電腦系統9〇〇之另一實施 例,該電腦系統900可以包含如同上文所描述之具有一個 或個以上之經由配置以重演運算的重演偵測單元及排程 器之處理器100。其它實施例是可能並且經過考量的。在 第6圖之實施例中,電腦系統9〇〇包含數個處理節點 ⑻2A、1012B、1012(:及1〇12〇。每個處理節點藉由在每 個相對的處理節點㈣A至·0之内所包含之記憶體控 制器1016A至1016D而連結至相對的記憶體2〇〇八至 2嶋。此外’處理節點1012八至1〇12〇包含經由使用以 在該處理節點1〇12八至1012D之間通訊之介面邏輯。例 如,處理節點1012A包含用於與處理節點1〇〗26通訊之介 面邏輯1018A、用於與處理節點1012C通訊之介面邏輯” W18B、以及用於與另一個處理節點(未圖示)通訊之第三介 面邏輯1018C。同樣地,處理節點1〇12β包含介面邏輯 ⑻8D、m8E以及1()18F;處理節點1Ql2c包含介面邏輯 1〇18〇、ΗΗ8Η以及〗並且處理節點1〇〗2〇包含介面 邏輯Η)]8Κ以及I(n8Le處理節】〇i2D藉由連 92525(修正本) 27 1338249 結透過介面邏輯】0丨8L以與複數個輸入/輸出裝置(例如在 菊環式(daisychain)配置内之裝置1〇2〇a至1〇2〇b)通訊 其它處理節點可以以類似的方式與其它輸入/輸出裝置做 通訊。 處理節點10]2A至1012D實現用於内部處理節點通訊 之封包型連結。在本實施例中,該連結實現成為單向性線 路之集合(例如線路1024A使用於從處理節點1〇12八傳送 封包至處理節點1〇123以及線路1〇248使用於從處理節= 1012B傳送封包至處理節點1〇12a)。其它集合的線路” 】〇2JC至1〇24Η如同於第6圖中之說明者使用於在其它處 理節點之間傳送封包。通常,每組線路1〇24可以包含—個 或一個以上之資料線路、對應於該資料線路之一個或一個 以上之時脈線路、以及顯示該型式封包欲傳送之—個或— 個以上之控制線路。該連結可以以快取一致之方式操作而 用於在處理節點之間通訊或以非—致方式而用於在處理節 點及輸入/輸出裝置之間通訊(或匯流排撟接至習知的架構 之輸入/輸出匯流排’諸如週邊組件介面匯流排或工聿桿準 架構匯流排)。再者,該連結可以以非一致之方式使用如同 所示在輸入,輸出裝置間之菊環式結構而操作。需要注意的 是欲從其中—個處理節點傳送至另—個之封包可以穿越通 過一個或-個以上之中介節點。例如,藉由處理節點⑼Μ f處理節點i〇12D所傳送之封包可以穿越通過不論是處理 卽點1 0】2 B或處理節點】〇】,ρ 奴即黑占1〇】2C,如同於第6圖中所顯示。 可以使用任何適當的繞路演算法。電康_之其它實 92525(修正本) 28 1338249 施例可以包含比顯示於第6圖中之實施例更多或更少的處 理節點。 通常’該封包可以在節點間之線路1024上傳送成為 一個或一個以上之位元次數^位元次數可以是在該對應的 時脈線路上之時脈訊號之上升或下降緣。該封包可以包含 用於初始化事項之指令封包、用於維持快取一致性之探測 封包以及來自回應於探測及指令之回應封包。 除了記憶體控制器及介面邏輯外,處理節點丨〇丨2A至 1 0 1 2D可以包含一個或一個以上之處理器。廣義地說處 理節點包括至少一個處理器並且可以選擇性地包含用於與 所需的記憶體及其它邏輯進行通訊之記憶體控制器。尤 其,每個處理節點1012八至10〗2〇可以包含一個或一個以 上之處理器1 00之複製。外部介面單元可以包含在該節點 1 〇 1 8内之該介面邏輯’以及該記憶體控制器1 〇〗6。 記憶體200A至200D可以包括任何適當記憶體裝置。 例如,記憶體200A至200D可以包括一個或一個以上之 RAMBUS動態隨機存取記憶體(RDRAMs)、同步動態隨機 存取記憶體(SDRAMs)、靜態隨機存取記憶體等等。電腦系 統900之位址空間在記憶體200a至200D之間分割。每個 處理節點1012A至1012D可以包含使用於決定那個位址對 映至那個記憶體200A至200D之記憶體對映,並且因此對 映至那個處理節點1 01 2A至1 〇 1 2D而用於特定位址之記憶 體請求應該繞路。在一個實施例中,對於在電腦系統9〇〇 内之位址之一致性指標為連結至對應於該位址之記憶體儲 29 92525(修正本) 存位元組l己憶體控制器1016六至1G]6D。換言之1 3己憶體控制器聰A至1(H6D負責用於確保存取該對應的 ^己憶體2嫩至2嶋之每個記憶體以快取-致之方式產 生。冗憶體控制器l〇]6A至i〇16D可 a 9λλδ s 玍1U16D可以包括用於與記憶體 至200D介面接合之控制電故 1_至1〇_可以包含用二此外,記憶體控制器 „ 憶體請求之請求佇 夕,J ° 介面邏輯1018A至1018L可以勺』 4+ ^ Λ m M包括用於從該連結接收 封匕及用於緩衝欲傳送至該連 器。電^ $ Μ τ 上之封包之各種的緩衝 二= 用用於傳送封包之任何適當的流 寿钇制機制。例如,在—個實施例中 在該介面邏輯連接至該連結之另―’母個"面邏輯1018 之每個形式的緩衝器之數量之'處儲存在該接收器内 封包,& # H 。該介面邏輯並未傳送 耵匕除非該接收介面邏輯具有自 — ^ 包。當接收緩衝器藉由繞路封也的緩衝器以儲存該封 介面邏輯傳送訊息至該傳送介面2 Μ置時’該接收的 經閒置。此類的機制可以稱之為“ % ’以顯示該緩衝器已 系統。 咐加型(coupon-based),, 輸入/輸出裝置1 020A至1〇2 入/輸出裝置。例如,輸入/ 可以是任何適當的輸 包含用於與ϋ電腦^1^_至卿可以 或數據機)。再者,輸入/輸出裝置、置(例如網路介面卡 含視訊加速器、音訊卡、硬式或軟1〇2〇八至1020Β可以包 小型電腦系統介面(SCSI)轉接/ <㈣機或驅動控制器、 及笔話卡、音效卡及各種 92525(修正本) 30 1338249 二貝料擷取卡,諸如一般用途介面匯流排或區域匯流排介面 卡。需要注意的是該專有名詞“輸入/輸出裝置,,及該專有 名詞“週邊裝置”於此為同義者。 如同於此所使用的,該專有名詞“時脈週期”意指時 間間隔,該指令處理路線之各種行程在該時間内完成本身 ^任務。指令及計算數值依據定義該時脈循環之時脈訊號 藉由記憶體元件(諸如暫存器或陣列)而捕獲。例如,記憶 體疋件可以捕獲依據該時脈訊號之上升或下降緣之數值。 該上文的討論說明受到宣告之訊號。當訊號傳遞顯示 特定片段資訊之數值時,該訊號可以定義為受到宣告。當 特定訊號傳遞二位元i數值時’或者反過來當特;:號; 遞二位元零數值時,該特定的訊號可以定義為受到宣告。 許多變化及修正對於熟習該項技藝者在完全瞭解咳 ^述之揭示時將變得顯而易1。該下列的中請專利範圍x將 解釋為意在涵括所有此類的變化及修正。 【圈式簡單說明】 s考置下文的洋細說明並結合下列的圖式時 之較佳的瞭解可以獲得,其中: 第1圖顯示依據一個實施例之微處理器。 第2圖說明依據—個實施例之排程器。 第3圖說明依據—個實施例之功能性單元。 第4A圖為依據一個實施例之阻止在該排程界内之不 正確推測的運算之狀態更新之方法的流程圖。 弟4B圖為依據另一實施例之阻止在該排程器内之不 92525(修正本) 31 1338249 正確推測6¾運算之狀態更新之方法的流程圖。 第5圖顯示依據一個實施例之例示性的電腦系統。 第6圖顯示依據另一實施例之另一個例示性的電腦系 統。 (元件符號說明) 100 微處理器 1 00a 微處理器 1 02 退返佇列 104 發送單元 106 指令快取 108 預先取回單元 116 暫存器檔案 118 排程器 124 執行核心 126A 功能性單元 126B 功能性單元 126C 功能性單元;載入/儲存單元; :載入儲存單元 128 資料快取 130 結果匯流排 160 記憶體控制器 200 主記憶體 200A 記憶體 200B 記憶體 200C 記憶體 200D 記憶體 222 載入/儲存單元 600 排程器入口 602 發出計數 604 標籤、運算元識別 器及運算碼 606 狀態資料 700 運算去除邏輯 801 步驟 803 步驟 803A 步驟 805 步驟 805A 步驟 805B 步驟 805C 步驟 807 步驟 900 電腦糸統 902 匯流排橋接 32 92525(修正本) 9061338249
910 912B 916 918 920 922 926 928a 1012B 1012D 1016B 1016D 1018B 1018D 1018F 1018H 101 8J 1018L 1020B 1024B 1024D 1 024F 1 024H 鍵盤/滑鼠 顯示器 L2快取 處理節點 處理節點 記憶體控制器 記憶體控制器 介面邏輯 介面邏輯 介面邏輯 介面邏輯 介面邏輯 介面邏輯 裝置 線路 線路 線路 線路 s己憶體H:流排 , ·Η叫,工奶盗 圖I加速埠匯流排9 1 2 Α 週邊組件介面裝置 ,邊组件介面裝置914週邊组件介面匯;^ 第一匯流排橋接 延伸工業標準架構或工業標準架構裝置 工業標準架構/工業標準架構匯流排 924 中央處理器匯流排 928 L2快取 1012A 處理節點 1012C 處理節點 1016A 記憶體控制器 101 6C 記憶體控制器 1018A 介面邏輯 101 8C 介面邏輯 101 8E 介面邏輯 1018G 介面邏輯 101 81 介面邏輯 101 8K 介面邏輯 1020A 裝置 1024A 線路 1 024C 線路 1024E 線路 1 024G 線路 92525(修正本) 33

Claims (1)

1338249 ff年fw日修正 拾、申請專利範圍·· 附件 ^ ⑼曰案) 』· 一種微處理器,包括: 一個或一個以μ 執行運算:Χ上之功能性單元,每—個經由配置以 排程器’經由配置以藉由該 性單元中之-個功能性單开…1個以上之功能 i軍曾夕— . 疋而發出用於執行之複數個 :母#運异,其中該排程器經由配置以 =數:運算之每-個運算的狀態資訊,其中該 …不疋否相關的運算已經完成執行·以々 “ 之一 ΓΓ,Λ元’經由配置以偵測出該複數個運算中 ^ 為了偵測出該複數個$ 异中之-個運算應該被重演 β〇是数個運 Μ ^ ^ ^ 、以肩偵測單元係配置成 »疋忒複數個運算中之該一個 成 被重筲# 士 A ^依存於另-個將 債測^ 該複數個運算中之該-個運算受 '、:.,、而要被重演時,若該複數個 夕、眾μ ,, 疋开甲之s玄一個運算 運具例目前正由該一個或—個以上之功能性 :^功能性單元執行,則該重㈣測單元經由配置以 =對於該複數個運算中之該一個運算的狀態資訊之 之執行。 之。玄個運异之該運算例 2♦如申請專利範圍第丨項之微處理器,其中該重 ^由配置以藉由使料錢性單元巾之該_個功能 為至^排程11之該運算例之非 。代琥元成而禁止用於該等運筲中 迷t中之忒一個運算之該狀 92525(修正本) 34 苐93105660號專利申請案 (99年9月!7曰) 態為Sfl之更新β 3.如申請專利範圍第丨 _ 1 貝之微處理器,其中該重演偵測單 凡、·里由配置以藉由使兮i 。 .°Λ排耘益修正相關於該等運算中 之S亥一個運算之發屮 °十數而不止用於該等運算中之該 一個運算冬該狀態資 '之更新,其中若該運算之發出計 數並未符合該運算例 、 < ^出°十數’則該排程器經由配置 以不更新該狀態資訊以庫 口馮4運异例之完成。 4·如申請專利範圍第1 „ Μ之微處理器’其中回應資料推測 確認單元偵測到用於該斿赵 _ °茨複數個運算中之該一個運算之 不正確的買料推測,該排程哭姑丄 > ▲ 排%裔經由配置以更新相關於該 被數個運鼻中之該—/frjl J.J. Y哀個運异之該狀態資訊,以指示該相 關的運算需要被重新發出。 5.如申料利範圍第4項之微處理器,其中當僧測到該不 正:的貝料推測時’若該複數個運算中之該一個運算之 運算例,由該一個或一個以上之功能性單元中之一個 ”元執行,該重演偵測單元經由配置以確保在該 等運算中之忒一個運算之運算例之執行完成之後’相關 'β複數個運异中之該一個運算之該狀態資訊持續指 示該相關的運算需要被重新發出。 •如申請專利範圍第!項之微處理器,復包括複數個重演 偵測單元。 如申:專利範圍第丨項之微處理器,其中該重演请測單 ^ 3方、’二由配置以確認資料推測執行於該複數個運 算中之該一個運算之資料推測確認單元中,並且其中該 92525(修正本) 35 1338249 第93丨05660號專利申請素 (99年9月17曰) 之指示,以重演 器以回應偵測 正確的資料推 資料推測確認單元經由配置以提供需求 該複數個運算中之該一個運算至該排程 用於該複數個衫令之該一料算之不 測0 8. 如申請專利範圍第7項之微處理器, 認單元包含於"配置 ββ _ 置以確D心貝枓預測之該等功能性 旱兀中之一個功能性單元中。 9. 如申請專利範圍第7項 處 項之微處理态,其中該資料推測確 早7"包^於經由配置以執行載入及儲存運算之該等 功,性單it中之-個功能性單元中,以㈣㈣㈣ 認單兀經由配置以確認相依性預測。 !〇.如中請專利範圍第!項之微處理器,其中該重演債測單 元包含於該排程器中’其中該重演價測單元經由配置以 賴測該複數個運算中之-個運算應該被重演以回應該 複數個運算中之該一個運算之來源運算元被重播於結 果匯流排上。 11. 如申請專利範圍第i項之微處理器,其中該排程器經由 配置以更新相關於該複數個運算中之該一個運算之該狀 k讯,以指示該相關的運算需要被重新發出以回應接 收到該需要重演該複數個運算中之該一個運算之指示。 12. —種電腦系統,包括: 記憶體;以及 處理器,連結至該記憶體並且包括: 一個或一個以上之功能性單元,每一個經由配置以 92525(修正本) 36 U^8249 第93105660 ¾專利申請案 (99年9月π日) 執行運算; ° ”’二由配置以藉由該一個或一個以上之功能 性單元φ夕__ Μ丄 ~ 個功能性單元發出用於執行之複數個運 舁之每一個速首,〇·丄 、卜 逆异其中該排程器經由配置以維持用於該 稷數個運算之每-個運算之狀態資訊,其中該狀態資訊 指示是否相關的運算已經完成執行;以及 重决偵測單元’經由配置以偵測該複數個運算中之 -個:算應:玄被重演’其中,為了偵測出該複數個運算 中,個運具應該被重演,該重演偵測單元係配置成判 疋:複數:運异中之該一個運算係依存於另-個將被 重肩之運异’其中當偵測到該複數個運算之中之該—個 運算需要被重演時,若該複數個運算中之該_ 運算例目前正由該一個或—個以上之功能性單元中^ -個功能性單元執行,該重演偵測單元經由配置 用於該複數個運|中夕兮 ^連异中之忒一個運算之該狀態資訊 新以回應该複數個運4 & 運开中之該一個運算之運算例之執 行。 1 3.如申請專利範圍第12項之雷 „ _ 電月®系統,其中該重演偵,-p,丨 單兀經由配置以藉由使啰 肩彳貞測 …π 能性單元中之該-個功 能性早兀執行該運算例成為 固力 非訊號完成而禁止對於該等運算之峨例之 狀態資訊之更新。 寺運异中之该-個運算之該 】4.如申請專利範圍第12項之電腦系統 單元經由配置以藉由0 /巾4重决偵測 态修正相關於該等運算 92525(修正本) 37 第93l0566〇號專利申,安 ("年9月17日"j 中之該-個運算之發出計數而 該一個運算之該狀態資訊之更新寺運具中之 出計數並未符合該運算例之 :μ ^之該發 配置以不更新$狀能4 出计數,則該排程器經由 文新6亥狀態貧訊以回應該運算 1 5.如申請專利範 π成。 測確切輩4 其中回應資料推 、J確—早兀偵測到用於該複數個 咬开甲之泫一個谨首 不正確的資料推測,該排 ^ 该複數個運算中之該_ 4相關於 RS Λ, 建异之忒狀態資訊以指示哕 相關的運算需要被重新發出。 曰丁》亥 “.= t:專利範圍第15項之電腦系統,其中當偵測到$ 1的貧料推測時,若該複數個運算中之該一個運曾 運异例正由該一個或一個以上之功能性單 f單元執行,該重演偵測單元經由配置以確保在 。亥寻運异中之該一個选董夕,軍曾/丨 ,、 sq… 亥自運具之運异例之執行完成之後,相 ,t . ^ U運异甲之忒個運昇之該狀態資訊持續 才曰不該相關的運算需要被重新發出。 ' 17^申請專利範圍第12項之電腦系統’其中該重演债測 =7L包含於資料推測確認單元中,該資料推測確認單元 經由配置以確認執行在該複數個運算中之該一個運算 推測,並且其中該資料推測確認單元經由配置1 提供需要重演該複數個運算中之該一個運算之指示至 。玄排器以回應偵測到用於該複數個運算中之該一個 運算之不正確的資料推測。 18·如申請專利範圍第12項之電腦系統’其中該重演偵測 38 92525(修正本) 1338249 苐93105660珑專利申請案 (卯年9月17日') 單元包含於該排程器中,其中 T…Τ这重演偵測單元經由配置 以偵測該複數個運算中之一個 ^ 咬"ΓΤ'應忒被重凟以回廊 或複數個運算中之該一個運苜 ^ 結果匯流排上。 ^之來源運算元被重播於 AH專利範圍第12項之電腦系統,其中該排程器經 _ · 建昇中之該一個運算之 泫狀態資訊,以指示該相關的 庙姐々W ]運弄需要被重新發出以回 ,接收制需要重演該複數個運算中之該一個運算之 指示。 20.—種於資料推測微處理器中 運質n + 防止進行中之運算例中斷 運算重/臾的方法,包括: 發出用於執行之運算之運算例; 接續於該發出以及在該運曾 建#例之執行期間,判定該 運#係依存於另一個將被重 該也要被重演; 、之運县,且因此該運算應 在該運算例完成之前,接 示. 收°玄運异應該被重演之指 回應該接收,禁止對於在 令击此 社徘矛玉益中之該運算之狀態 之更新以回應該運算例之完成。 2 1.如申έ青專利範圍第2 〇項之方土 其中該禁止包括使功 月匕性早几執行該運算例成為 非訊號完成。以成為至该排程器之該運算例之 …=利範圍第20項之方法,其中該禁止包括: 4目關於該運算之發出計數以回應接 92525(修正本) 39 1338249 收該運算應該被重演之該指示;以及 若該運算之該發出叶數並# 。 未付合該運算例之發出 τ歎該排魟益不更新相關於 應該運算例之完成。 H亥狀態貧说以回 23:::_2°項之方法,復包括該排程器更新 ==之該狀態資訊,示該運算需要被重新 2“ : 運算應該被重演之該指示。 24.如申請專利範圍第2〇項之方法 單元產生該運算應該被重演 ,括貧料推測確認 …資料推測執行=算…以回㈣測到不 範圍第2°項之方法,復包括該排程器產生 μ异“被重演之該指示,以回應 元被重播於結果匯流排上。 L之Μ運异 26.—種微處理器,包括: 用於發出用於執行之運算之運算例之工具; 用於執行該運算例之工具;以及 八, 測之測該運算應該被重演之工具,其中該用於偵 _ ^配置成若該用於偵測之工具判定該運算依 二二—個將被重演之運算,則判定該運算應該被重 ’當該用於債測之工具偵測到該運算應該被重 ’、」’右該運算例在該偵測之前發出且目前正 :該用於偵測之工具係配置成禁止在該用於發出之:’ 中之4運算之狀態之更新,以回應該運算例之完成。 92525(修正本) 40 1338249 柒、指定v代表圖: (一) 本案指定代表圖為:第(1 )圖。 (二) 本代表圖之元件代表符號簡單說明: 100 微 處 理 器 1 02 退 返 仔 列 1 04 發 %«/ 迗 單 元 106 指 令 快 取 108 預 先 取 回 單 元 116 暫存 器 棺 案 118 排 程 器 124 執行 核 心 126A 功 能 性 單 元 126B 功 能 性 單 元 126C 功 能 性 單 元 128 資 料 快 取 130 結 果 匯 流排 160 記 憶 體控 制 器 200 主 記 憶 體 捌、本案若有化學式時,請揭示最能顯示發明特徵的化學式: 本案無化學式。 4 92525(修正本)
TW093105660A 2003-05-02 2004-03-04 System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor TWI338249B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/429,082 US7363470B2 (en) 2003-05-02 2003-05-02 System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor

Publications (2)

Publication Number Publication Date
TW200506715A TW200506715A (en) 2005-02-16
TWI338249B true TWI338249B (en) 2011-03-01

Family

ID=33310540

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093105660A TWI338249B (en) 2003-05-02 2004-03-04 System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor

Country Status (8)

Country Link
US (1) US7363470B2 (zh)
JP (1) JP4624988B2 (zh)
KR (1) KR101056820B1 (zh)
CN (1) CN100432924C (zh)
DE (1) DE112004000736T5 (zh)
GB (1) GB2417113B (zh)
TW (1) TWI338249B (zh)
WO (1) WO2004099977A2 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266673B2 (en) * 2003-05-02 2007-09-04 Advanced Micro Devices, Inc. Speculation pointers to identify data-speculative operations in microprocessor
US7363470B2 (en) 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
DE102008042356A1 (de) 2008-09-25 2010-04-08 Carl Zeiss Smt Ag Projektionsbelichtungsanlage mit optimierter Justagemöglichkeit
US10152329B2 (en) 2012-02-09 2018-12-11 Nvidia Corporation Pre-scheduled replays of divergent operations
US9384002B2 (en) * 2012-11-16 2016-07-05 International Business Machines Corporation Speculative finish of instruction execution in a processor core
US10387158B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US20160357556A1 (en) * 2014-12-24 2016-12-08 Elmoustapha Ould-Ahmed-Vall Systems, apparatuses, and methods for data speculation execution
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9785442B2 (en) 2014-12-24 2017-10-10 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
CN108415730B (zh) * 2018-01-30 2021-06-01 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
CN108279928B (zh) * 2018-01-30 2021-03-19 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
WO2022047306A1 (en) * 2020-08-28 2022-03-03 Deep Vision Inc A processor system and method for increasing data-transfer bandwidth during execution of a scheduled parallel process

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735688B1 (en) 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
US6212626B1 (en) 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
JPH11259295A (ja) * 1998-03-10 1999-09-24 Toshiba Corp プロセッサの命令スケジューリング装置
US6094717A (en) * 1998-07-31 2000-07-25 Intel Corp. Computer processor with a replay system having a plurality of checkers
US6877086B1 (en) * 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
US6981129B1 (en) * 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue
US6725338B2 (en) 2000-11-21 2004-04-20 Sun Microsystems, Inc. Method and apparatus for preventing cache pollution in microprocessors with speculative address loads
US6880073B2 (en) 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations
US6704841B2 (en) 2001-06-26 2004-03-09 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
AU2002367955A1 (en) 2001-06-26 2004-01-06 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US6952764B2 (en) * 2001-12-31 2005-10-04 Intel Corporation Stopping replay tornadoes
US20040078558A1 (en) * 2002-03-25 2004-04-22 Sprangle Eric A. Method and apparatus to process instructions in a processor
US7363470B2 (en) 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor

Also Published As

Publication number Publication date
GB0521712D0 (en) 2005-11-30
KR20060009888A (ko) 2006-02-01
GB2417113B (en) 2006-10-04
US20040221139A1 (en) 2004-11-04
WO2004099977A3 (en) 2005-09-22
KR101056820B1 (ko) 2011-08-16
WO2004099977A2 (en) 2004-11-18
US7363470B2 (en) 2008-04-22
GB2417113A (en) 2006-02-15
CN1784655A (zh) 2006-06-07
TW200506715A (en) 2005-02-16
JP4624988B2 (ja) 2011-02-02
CN100432924C (zh) 2008-11-12
JP2006525594A (ja) 2006-11-09
DE112004000736T5 (de) 2006-05-18

Similar Documents

Publication Publication Date Title
TWI338249B (en) System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
TWI362613B (en) System and method for validating a memory file that links speculative results of load operations to register values
TWI352927B (en) System and method for handling exceptional instruc
US6950925B1 (en) Scheduler for use in a microprocessor that supports data-speculative execution
KR101192814B1 (ko) 로드가 선행하는 스토어에 의존적인지를 예측하는 의존성 매커니즘을 구비한 프로세서
TWI260541B (en) System and method for linking speculative results of load operations to register values
TW539996B (en) Processor and method including a cache having confirmation bits for improving address-predictable branch instruction target predictions
US6845442B1 (en) System and method of using speculative operand sources in order to speculatively bypass load-store operations
US7937574B2 (en) Precise counter hardware for microcode loops
CN105005463B (zh) 具有世代重命名的计算机处理器
US7711934B2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
TW200951811A (en) System and method of selectively committing a result of an executed instruction
CN105045562A (zh) 利用生成重命名的计算机信息处理器
EP1644823B1 (en) Load store unit with replay mechanism
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
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
JP5093237B2 (ja) 命令処理装置
WO2007084202A2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
TW201044269A (en) Microprocessor and micro-operation execution method thereof

Legal Events

Date Code Title Description
MK4A Expiration of patent term of an invention patent