TW388811B - Out-of-pipeline trace buffer for instruction replay following misspeculation - Google Patents

Out-of-pipeline trace buffer for instruction replay following misspeculation Download PDF

Info

Publication number
TW388811B
TW388811B TW087120952A TW87120952A TW388811B TW 388811 B TW388811 B TW 388811B TW 087120952 A TW087120952 A TW 087120952A TW 87120952 A TW87120952 A TW 87120952A TW 388811 B TW388811 B TW 388811B
Authority
TW
Taiwan
Prior art keywords
instruction
buffer
line
execution
instructions
Prior art date
Application number
TW087120952A
Other languages
English (en)
Inventor
Akkary Haitham
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of TW388811B publication Critical patent/TW388811B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • 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
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

五、發明說明(1) 相關申請案:本申請案與申請序 , , 才承甘有备" β --Ν —— ^ .’’’具有於執行管線外的多數程式計數器及追蹤緩衝 ^之處理器"(明細表編號4 2390, Ρ4662 )及申請序號__ #7〜,一一,標題為"於一完成無序多線執行處理器中 載入及儲存指令之記憶系統"(檔案編號42390. Ρ4665 ;,在此同時提出,具有共同的基本說明書。 發明背景 明範圍 2明與處理器有關,特別是具有有一或多個追蹤緩衝 為的處理器。 JL景技術 目刖的S U P E R S C A L E R處理器,例如微處理器,進八 支預測與無序執行等技術以增進執行效率。°具有並岸 管線的處理器,以跟指令被·抓取與解碼之順序 執行某些指令。沒有附屬性的指令可以不 °的順序 7』μ不依順序 無序執行藉由避免執行單元僅因為程式扣人 订。 置,來增進處理器的執行效率。指令、纟士果、’尤破閒 排序。 在執行後被重新 處理資料附屬性的工作透過限制指八站π Μ日7解石馬成抵& 化。然後處理器可以確認資料如何經過暫^二傾斤而問 通到後續的指令。為確保程式的正確性,^—指令流 置且指令在保留站等待直到其輸入參數產存器被重新配 們才被發配給適當的功能單元執行。赵十„為止’此時它 保留站與相關的機制將有相關性的招入& 7 新配置器、 1曰*7鍵結在一 ^ 趣,以使
五、發明說明(2) 附屬指令不會在其所依附 器為循序抓取與解碼所限 當來自指令快取記憶體 支時,處理器必須等到指 憶體中被抓取,或者直到 重置錯誤路徑的執行。此 體漏失與失誤預測分支之 行,雖然如此做可能是正 各種猜測都可能導致猜 機制,以允許處理器從猜 在本發明的一實 指令,其中至少一 括一在執行管線之 其中與猜測錯誤有 管線中。 在另一實施例中 其中至少一些指令 執行管線之外的追 行,其中至少一些 初始退役’但維持 本發明由以下@ 可以更徹底瞭解, 施例中 些指令 外的追 關的指 指令之前執 制。 的指令漏失 令區塊由較 失誤預測的 種運作的結 前與後的獨 確的。 測錯誤。有 測錯誤中還 發明概要 ,處理器包 是猜測性地 縱緩衝器, 令由追蹤緩 行。因此, 掉或失誤預 高層快取記 分支被解決 果是,指令 立指令不能 需要改良處 原0 括一執行管 執行。該處 以保存那些 衝器中被重 該等處理 测了一分 憶體或記 後,才會 快取記愧 平行地執 理器中的 線以執行 理器也包 指令,且 演到執行 * 理器包括一執行管線以執行指人, 被猜測性地執行。該處理器也包括— 蹤緩衝器,以保存指令並導致指令 指令受制於一跟隨在管線中執行之後的 在追縱緩衝器中直到最終退役。 圖示概述 詳細說明與隨附之本發明實施例的圖示 但不應將本發明限定於所描述的特定實
O:\56\56145.PTD 五、發明說明(3) 施例^其僅係為幫助說明與了解。 圖1是一處理器之—實施例中 示。 某上元件的高階方塊圖 圖2是根據本發明一實施例之 圖3是根據本發明另—實施例的方塊圖。 圖4是-兩線的範例之流程圖。翅理器的方塊圖。 圖5是一兩線的另—範例之流程圖。 圖6是一四線的範例之流程圖。 。 圖7是顯示圖6之線的重疊執行的 一 圖8是說明本發明_實施例之個〉』不。 圖》 以遣縱缓衝β的方塊 列圖9顯示指出在兩個時點上程式與退役順序的一個陣 表二。是圖"追縱緩衝器一實施例之某些元件的方塊圖 圖=是圖8中追縱緩衝器另一實施例之某些元件的方塊 =12是圈10的追蹤緩衝器一指令佇 的 部份圖形表示。 · 干a I只 圖13是圖丨〇的追蹤緩衝器一資料與附屬性之一實施 例的部份圖形表示。 。。圖14舉例說明用來產生圖1〇的陣列之附屬性欄位的修飾 器暫存器之一實施例與一被修正過的暫存器。 圖1 5是一用來產生圖1 3的陣列之附屬性攔位的邏輯或
O:\56\56145.PTD 第7頁 五、發明說明(4) 閘》 圖1 6說明一實施例甚 作之一流程圖。產生圖13的陣列之附屬性棚位的運 圖1 7是根據本發明之一在 待定 暫存器和位置有附屬卜 &例在一追蹤缓衡器中〆, J β性的圖解表 圖18是圖10的追蹤緩 法。 之部分圖解表示法。衡态的一輪出暫存器檔案一實把忉 圖19是圖10的追蹤 之部分圖解表示法。^的―輪入暫存器樓案/實施例 圖2 0是根據本發明_ 檔案與圖19之輸入暫存J 以連接_之輸出暫存器 方塊圖。 為私案的比較器與重演觸發邏輯之 圖21是說明輸出暫存芎 圖。 裔棺案的内容可被使用時點之流程 圖2 2疋s兒明根據本發明一每# 乂丨 憶體排序緩衝器(MOB)的方/圖知例於圖2之⑽^中,個別記 圖23是圖22的MOB中之—個的 一—
分圖式表示。 存緩衝益一貫加例的口P 圖24是圖22的MOB中之一個沾# . 分圖式表示。 個的栽入緩衝器一實施例的部 圖2 5舉例說明一比較卜釦 国9 β班"_ 乂益比車又載入與儲存指令的位址。 圖2 6舉例說明一比較5| t卜勒;抑 阁97 θ4 D 車乂儲存與載入指令的位址0 圖2 7疋根據本發明之_电吵 _ ^ 只知例的MOB控制電路與儲存緩 衝益的方塊圖表示。
r.ir\L $ 8頁
O:\56\56145.PTD 五、發明說明(5) 圖28是是根據本發明之一實施例的MOB控制電路與載入 缓衝器的方塊圖表示。 圖2 9 是六條線的例子之流程圖。 圖3 0是說明在一時點11圖2 9的線之間的關係之樹。 圖31是說明假設在線T 1退役之前,線T4被重新設定之時 點12,圖2 9的線間的關係之樹。 圖3 2是說明假設線T4被重新設定之前線T1退役之時點 12,圖2 9的線間的關係之樹。 圖33是說明在時點t3圖29的線間的關係之樹。 Γ 圖3 4是一流程圖,說明五條線的例子。 圖3 5是說明在時點11圖3 4的線間之關係的樹。 圖36是說明在時點t2圖34的線間之關係的樹。 圖3 7是根據圖2以外之另一實施例之處理器的方塊圖。 圖38是包含圖2的處理器之一電腦系統。 較佳實施例詳細描述 A. 線的產生與管線108的概觀
B. 關於追蹤緩衝器11 4的細節 1.追蹤緩衝器114A
a. 指令佇列陣列2〇 2A
b. DAD陣列20 6A和附屬性產生電路212A c. 輸出暫存器檔案21〇A和輸入暫存器檔案2〇8A 2 ·追蹤緩衝器1 1 4, C ·重演順序演算法 D ·第二層或最終退役
O:\56\56145.PTD
第9頁
五、發明說明(6) E-記憶系統 1. 儲存緩衝器與載入緩衝器 2. 載入與儲存位址的比較 a. 載入指令的執行 b. 儲存指令的執行 c. 重設 3. 儲存指令的重演 4. 多個載入指令的重演 F. G. H.
5. 載入與儲存指令的最終退彳R ( ,於線管理邏輯與最終退役邏%的額外 /又有多線的實施例 額外的資訊與實施例 執行 執行 圖1說明一處理器1 〇的—肽元杜 ^ 其娃194 A , r —几件。處理器10包括一 官線1 2和一追蹤缓衝器丨4,它 ° ^ 管㈣可包括-記憶體排序緩;;執之外。 供到執行管線12以便執行。該二導!18上的指令被提 追蹤緩衝器1 4。該等指令可在執〜曰二也精由導線22提供給 .. , J在執仃官線12中被猜測性妯劫 订。如測的例子包括資料猜測和附 / 猜測都可能被包括。處理Θ i 月“各種廣泛的 包括,包含在读於 中,的機制以偵測失誤猜測( ^ 3隹追舨緩衝益14 恢復。 'Kmisspeculatlons)並由其中 當偵測到失誤猜測的時候, 從追縱緩衝器14被提供到執行=測透過導線Μ 重演》如果一指令被4演執仃二'J1 八2 ’並f執行管線12被 董决,该指令和所有依賴其上之指
五 '發明說明(7) 令均再被執行,雖不必然一定要同時地。若一指令被"完 全重演",該指令與依程式順序跟隨其後之所有指令會再 被執行。程式順序是在一在循序處理器中指令將被執行的 順序。指令可完全地依照程式順序’或依程式順序以外之 某種次序通過導線18。處理器1〇可以是一循序或無序處理 器。附屬指令的再執行可能造成依賴於該附屬指令的指令 被重演。再執行指令的數目可藉由控制引發重演之事件而 加以控制。通常,執行一詞可包括原始執行與再執行。指 令的結果至^有一部份經由導線26被提供給追蹤緩衝器。 最終退役邏輯3 4會在確伴指人塔仏批+ 地被執彳丁後將追縦緩衝器14裡的指令除役。 峄 執行管線1 2可以是各箱勃< @ 以是更大管線中之一個£ ^中之任何一種,而且可 哭-查钍蚀田— 個&奴。執行管線1 2可以與各種處理 十·。使用。在圖2中提供範例說明 : 理益5 0之το件,而在圖3說明一 _ 的的處 100。在圖2本發明夕一一 有執仃&線308的處理器 器重新配置。在1他施例中,執行管線108包括暫存 重新配置。處理器= 執行管線不包括暫存器 器50的情形)’或非 ° / 理多條線(如在圖2中處理
O:\56\56145.PTD 第11頁
A. I的產生與營線1 Ο 8之概觀 指令經由導線102被提供給一指令快取(i—cache)1{)4。 解碼器106如所說明接收來自l-cachel04的指令,但也可 以在指令到達卜cachel 04之前將其解碼《依迴路境與實施 ,,選擇而定,"指令"一詞可包括巨集操作(1^^^〇_叩), 微操作(uops),或一些其他形式的指令。各種指令集中之 任何一種都可能被使用,包括,但並非僅限於精減指令集 運算(RISC)或複雜指令集運算(CISC)指令。再者,解碼器 1〇6可將cisc指令解碼為RISC指令。來自卜cachel〇4的指 令經由MUX 1 1 0被提供到管線丨〇 8,並經由導線丨丨8被提供 到追蹤緩衝器11 4。 ’、 追縱是一組指令。線包括追蹤與有關的訊號,如暫存器 值與程式計數器值。 線官理邏輯1 2 4藉由將啟始計數經導線丨3 〇提供給程式計 數益112A, 112B,..· ,112χ’(其中χ代表程式計數器的數 ,)使卜cachel04中一程式或程序產生不同的線。例如,X 可為4或,更大,更小。線管理邏輯丨24也藉由停止關聯的程 式計數器來結束線。線管理邏輯丨24可使程式計數器開始 另一條線。不同線的—部分同時從被讀取。 為了決疋要在程式或程序的何處產生線,線管理邏輯 124可經導線128由解碼器1〇6讀取指令。線可包括程式設 計師或編?者所插入清楚地界定線的開始與結束之指令。 另外’線官理邏輯1 24可分析程式或程序的指令’以將供 應到I cache 1 04的程式或程序打散到不同的線之中。舉例
五、發明說明(9) 來說,分支,迴路,反向分支,返回,跳越,程 和函數呼叫可能是分離線的好處所。線管理邏輯12 /, ^由何處開始線時,可考慮線的潛在長度,涉及在考 募’後續的線間有多少個共同的變數,及立 之多 理邏輯124在決定線的邊界時可考慮程式順序。程、式線^ J在-循序處理器上的線當t,線與指令將被執序 序。那些線中之指令可被無序執行(與程式順序相對)頃 基本上可被官線1〇8獨立地處理。線管理邏輯124可勺二 含有歷史表列的預測機制,以避免做出最佳選擇以^ : 定。舉例來說,線管理邏輯124可產生一線,之後、 該線實際上不是程式順序中的一部份。在此情況中疋 次遇到相同的程式碼,預測機制可用來判斷是否要a 產生相同的線。線管理邏輯124可利用線的動態產生盘-人
自編譯者或程式設計者的快速指令提示之結合,決定 指令中的何處產生線。 成K 動態地產生線是由一非特別為多線而編寫或編譯之 來產生線,其中至少一線依賴於另一線上。程式可由一; 括執行管線108與線管理邏輯124的晶片開始。動態地產生 f,執行線,並在執行中偵測與改正猜測錯誤稱為動態的 多線。 〜 圖4說明一包括條件反向分支指令的線T1。依照程式順 序:線T2接在條件分支指令之後執行。依照時間順序線 Τ2被預測在線Ή第—次到達條件分支指令時開始執行。因 此,線Τ1與Τ2的一部分同時地被執行。如果線了2涉及失誤
五 ' 發明綱(10) 一 --- 猜測,線T2已完成的指令會被重演。 線管理邏輯1 24可透過導線1 30檢測程式計數器的計數 檢測計數的一個目的是決定應在何時結束一線。例如,♦ 條件分支的情況不符合時’若允許線T1的程式計數器繼田 續,它將會超前於線T2的第一個指令。因此,杳悴、 人 w丨月况不符 合的時候,線管理邏輯1 24停止線τι的程式計數器。 圖5說明包含一函數呼叫指令的線τ 1 ^依照程式順序, 當到達呼叫指令的時候,程式計數器跳到該函數的位置並 且執行至一返回指令,此時程式計數器返回該呼叫之後 指令。依照程式順序,線T2由接續在返回之後的指令開 始。依照時間順序,線T2被預測在線T1第一次到達^ ;叫< 時開始執行。如果線T2涉及失誤猜測,線T2已完成的指令 會被重演。線T1在其程式計數器答達到線T2的第一個^ ^ 時結束。圖5中的載入MX與健存MX指令將會在以下討論。 圖6說明程式一個區段部份的線T1,T2,T3,和T4 ^不 同的程式計數器產生線T1 ’ T2 ’ T3,和T4。線T1包括到點 Α(函數呼叫指令)的指令,而後從點β,到點c(條件反向分 支指令),到點D並再次到點c (迴路可能重複數次)。線了2 由程式順序中,立即接在點A所呼叫函數的返回指令後面 之指令開始。線T3由程式順序中,立即接在點c的條件反 ( 向分支後面之指令開始,並且繼續到點E,到點f,到點 G ’到點Η,和點I ;它是一前往緊接在點a後面線T2開始處 的指令之返回指令。線T4由程式順序中,立即接在點E的 條件反向分支後面之指令開始。
O:\56\56145.PTD 第14頁 五、發明說明(11) 如圖7中所示,線ΤΙ,T2,T3,和丁4有一部分被同時地 讀取,解碼與執行。這些線因未遵從程式順序而被無序地 讀取,解碼與執行。依照時間順序,線Τ2,T3,和T4的執 行分別緊接在點A,C和Ε的指令後面開始。垂直的破折線 顯示一父子關係。線T2,T3和T4在暫存器中及/或記憶體 位置中的資料被確認為正確之前,依據其中的資料預測性 地執行。處理器1 〇 〇具有機制以偵測失誤猜測,並使被失 誤猜測的指令重演。它把線T4變成不在程式順序的一部份 内。線T4可能直到線管理邏輯1 24判定線T4不是程式順序 的一部份之後才被執行。此時,線T 4可能被重新設定,而 在處理器100中進行或處理T4的資源可能被解除指派,然 後指派給另外一條線。依照程式順序,線T1,τ 2,和T 3將 被執行如下:首先線T1,然後線T3,然後線T2。 下 參照圖2,來自M U X11 0的指令被重新配置/指派單元1 5 〇 接收’它提供暫存器檔案152中被重新配置的實體暫存器 之一實體暫存器識別碼(PRID)。該PRID透過旁通導線126 提供給追縱緩衝器114。指派包括分配暫存器給指令與分 配排程/發送單元1 56的保留站中的項目。一旦保留站中一 特定指令的參數準備就緒,該指令就被發送到執行單元 1 58中的一個執行單元(例如,整數,浮點數),或包含位 址產生單元(AGUM72,記憶體排序緩衝器(μ〇ΒΜ78盘 快取1 76的一記憶體執行管線中。依指令而定,束數、、出 暫存器檔案152經導線168提供。在本發明的—實施之® τ--線中的附屬指令可如此連結以便它們不^無序地
O:\56\56145.PTD 第15頁
五、發明說明(12) 執行。然而,來自不同線的附屬指令可能同時無序地被讀 取’解碼,與執行。線的某些執行可能是猜測的。 為了高執行效率,保留站與相關的機制被設計成有低延 遲及高頻寬指令發送。延遲及頻寬需求對可在保留站中等 候的指令之數目設立限制。藉由將追蹤緩衝器〗〗4置於管 08之外,很多的指令可被執行/重演而不用大大地減低 管線108的生產。在執行管線1〇8和追蹤緩衝器114之間延 遲的影響可透過管線而減少。 執行的結果與相關資訊經由導線丨22(在暫存器的情形 =)及經由MUX192與導線196由寫回單元162寫到追縱β緩/衝 器1 1 4中。執行的結果與相關資訊也可被寫到暫存器檔案 152與和有關的重排序缓衝器(R〇B)164。一旦指令的結果 與和資訊被寫到暫存器檔案152與R〇B164,指令就管線1〇8 相關之順序退役。此退役稱為第一層或初始退役。在第一 層退役或之前,在排程/發送單元156中給退役指令的資源 包括保留站,暫存器檔案152與R〇B1 64被解除指派。然 而,所有與該指令有關的細節被維持在追蹤緩衝器 MOB 1 78中直到最終退役,描述如下。 ° 附屬性在依照程 較早的線中時,存 料可能是透過記憶 產生。舉例來說, 中之儲存指令有相 早的線。較遲的線 使用的資料產生於 的線之間。這些資 或非記憶體指令所 入指令與較早的線 線可能依賴於該較 線’若較遲的線中 式順序中較遲的線所 在於較遲的線與較早 體中較早的線所產生 若在較遲的線中之載 同的位址,該較遲的 也可能依賴於較早的
〇:\56\56145.PTD 第16頁
五、發明說明(13) ,指令涉及較早的線中所修改之暫存器。同樣地,當依照 程式順序中較遲的線使用較早的線中所產生之資料時,較 遲的線附屬於較早的線。"附屬性詞也用在片語"附屬 =猜測"中。附屬性猜測的一個例子,是猜測在一載入指 V與一較早的儲存指令之間沒有附屬性。位址匹配是檢驗 ,j〖生猜測錯誤之技術的一個例子。資料猜測的一個例子 _月別在暫存器中的資料是正確的資料。暫存器匹配是檢 驗資料猜測錯誤之技術的一個例子。 β. 緩衝器Π 4 66鈿f ^照圖8,追蹤緩衝器114包括追蹤緩衝器η4Α, 114β, ^、,’’··, U4Y,其中Υ表示追蹤緩衝器的數目。舉例來 二J^Y_4(也就是,Y = D),就有4個追蹤緩衝器。如果Υ Μ € 2^,追蹤緩衝器1 1 4就不包括在圖8中顯示的所有追 縱。Υ可能與Χ(程式記數器的數目)相同或不同。追 惜,Υ = 1 1 4可以是被區分為個別的追蹤緩衝器的單一記 思來L固〇體上分開的追蹤緩衝器,或此二者的某些組合。 ID ^ ^ ,在一實施例中,線管理邏輯1 24包括一指定線 每:Γί順序(也是退役順序)的陣列198。在該範例中, 衝器有-獨特的線ID,或一對一映射到一線 衝,追縱緩衝器U4A被分配給線1D 1,追蹤缓 r 1U—配給線ID 2等。線ID可以是固定的或規劃 縱緩衝器^ 中’每個程式計數器與一特定的線1D及追 ί9:Λ :或者,沒有如此的限制關係) 圖9顯不在時點U與時點t2線的退役順序之—個範例。 第17頁
O:\56\56145. PTD 五、發明說明(14) 在該範例中,只有四個追蹤緩衝器和四個線丨Ds。相關的 線號碼顯不在括弧中。因其實施而定,括弧中的線號碼實 際上並不包含在陣列1 9 8中。在時點11,程式與退役順序 是線ΤΙ,T3 ’ T2和T4,如圖6中的例子。在時點ti和時點 12之間,將會判定線T4並不在程式順序中。因此,線τ4被 重新設定’以製造空間給追蹤緩衝器丨i 4D中的線T5 (未顯 示在圖5中)。線T5與線ID 4有關。線T1退役,製造空間給 追蹤緩衝器114A中的線T6。線冗與線ID 1有關。在時點。 t2,程式與退役順序是線T3,T2,T5和T6。(如果線τι在 線T 4被重新設定之前退役,則線τ 5與T 6將會有不同的線 ID ’但程式與退役順序將不變)。依所使用演算法而定, 可能一開始在陣列1 98中線T2在線T3之前,但程式與退役 順序會被更正’如在時點11的陣列1 9 8。 如所述及,線的程式順序是在一循序處理器上線將會被 執行的順序。指令的程式順序是在一循序處理器上指令將 會被執行的順序。線管理邏輯1 2 4不一定要在一開始決定 線的真正程式順序。然而,線管理邏輯1 24最後還是決定 真正的程式順序。 參照圖7,追蹤缓衝器114A,114B,...,114Y透過連接 到導線118之導線1 18A, 118B, . . 118Y接收指令。在導線 118A, 118B,. · ·, 118Y與導線11 8之間可能有解多工電 路。或者,致能訊號可控制哪個追蹤緩衝器被啟動。又或 者,可能有足夠平行導線以處理平行的交易。追蹤缓衝器 114A, 114B, . . ·, 114Y經由連接到導線120的導線12〇A,
O:\56\56145.PTD 第18頁 五、發明說明(15) 1 2 Ο B.. 1 2 Ο Y,提供重演的指令與相關資訊給管線1 〇 8。要 注意的是來自追蹤緩衝器i i 4的多個指令可能同時地通過 導線12 0與ΜϋΧ 11〇以再執行。同時,來自解碼器1〇6的多 個指令也可能第一次通過MUX 11 〇。線丨d和指令ID (i ns tr ID)伴隨著每個指令通過管線。重演計7數也可能伴 ‘隨者該4曰·?。在載入與儲存指令的情況中,一載入缓衝器 ID (LBID)與一儲存緩衝器ID(SBID)也可能伴隨著該指 令。在一實施例中,LB I D與SB ID伴隨著每個指令,雖然 LBID與SBID在指令並非載入或健存的情況中可能是毫無意 義的。如下所描述’一PRID或值也可伴隨著一被再執行的 指令8 追蹤緩衝器114A,114B,..., 114Y透過連接到導線126 的旁通導線126A, 126B,· . 126Y接收來自重新配置/指派單 元150的PRID ’LBID與SBID值。追蹤緩衝器ιΐ4Α,114Β, ...,114Y透過連接到導線122的導線122A,122B..122Y與 連接到導線196的導線196Α, 196Β, ..., 196Υ,接收寫回 結果資訊與有關訊號。重演訊號透過連接到導線丨9 4的導 線194Α, 194Β,.·., 194Υ提供。多工及/或致能電路及/或 重要數量的平行導線可能用在導線1 2 〇,1 2 6,1 2 2,1 9 4與 196中。追蹤緩衝器可能完全相同或有些不同。 在圖10中,追蹤緩衝器11 4Α說明追縱緩衝器的第一個實 施例。在圖1 1中’追蹤緩衝器1丨4Α’說明追蹤緩衝器的第 二個實施例。追蹤緩衝器的其他實施例可包括追蹤緩衝器 11 4 A和114 A ’的變化或相當不同的架構。
O:\56\56145.PTD 第19頁 五、發明說明(16)
l 蹤缓衝器Π 4 A ^照圖10 ’追縱缓衝器114A包括一指令佇 J料^屬性(_)陣列2〇6A,一輸入暫存器播案 輸出暫存器檔案210A,附屬性產生電路^ 控制電路224A陣列"一詞打算包括廣 y 於特定形式的資訊。 #我的多面向,不限 a. ji令佇列陣尹丨9.j)9j. 本丄以下描述指令佇列陣列2〇2A的架構,及根據 本發月的一貫施例它和其他元件的交互作用。指令佇 7 02A接收從i-cache 1〇4所讀取指令,該指令是一 二=二部份。纟線中的指令依照順序被讀指 =縱緩衝:的一指令仔列之内,或由指令仔列=入 識別碼「不同&間寫入。指令仵列陣列2’包括每個指令 妊一;(lnStr iD)的各種資訊的攔位。不同的實施例可包 2m二=1位同數目的資㈣。在指令仔列陣列 、只^•例中,耘式計數器的值不列入考慮,但在其他 中可列人考慮。指令仔列陣列202A與圖示中說明 號斑加;盖他:件可包括各種未舉例說明之不同的攔位,訊 二S at,1每些攔位,訊號與架構因其隨實施而變故未舉 福味而π ^熟悉該項技藝人士所瞭解’且將會使本說明書 複雜而換糊本發明。 指^在追縱缓衝器114Α中等待直到它們最終退役或被捨 、? °,因為,判定該線不在程式循序執行的一部份 1· 第20頁 五、發明說明(17) ^如果指令仔列陣列2似在該追縱内還有 時被塞滿,則#令不會被追縱緩衝器114或重新酉己^執行 早兀150所接收到,直到指令佇列 扣置指诉 退役而其中有-列被解除指^系統;〇〇裡A:種=終 的項目可由首與尾指標的運作來指派與解除指⑧。问陣列 4¾ yiv %Λ ϋ由 Χ.1 Ο Λ Ο A 〆!:, 一1- f 10: mu 1 R1 > R2 —> R1 11 : mu 1 R3, R4 R2 12: add R1, R2 —> R1 13: add 10, R1 —> R4 14: store R2 Mx 15: store R1 —> My , 這是在一線中的最前六個指令。很明顯在追蹤緩衝器 之外的一追縱緩衝器在程式順序中早於追縱緩衝器Α π操作碼"攔位包含與特定指令有關的操作碼。"目標", 來源1 ’和來源2"襴位識別指令的目的,來源1與來源 2。"來源1的索引"攔位,識別追蹤緩衝器丨丨4Α中包含來'源 的指令項目。例如,instr ID0的目標被用來當成instr ID2的來源1。因此,〇被放在instr id2的"來源1的索引" 攔位内。instr ID2的目標被用來當成illstr Π)3的來源 2。因此,2被放在instr* ID3的"來源2的索引欄位内。X 標不為不管。 "有效1"和11有效2"欄位的位元,當丨n s t r ID之一個對應 的來源參數已在先前由追縱缓衝器114A中的線以外之指令
O:\56\56145.PTD 第21頁
所產生時被設定成—盆_ Π)之該來源參數已在弁(例如’邏輯0) ’而在instr 成一第二值Γ你^線當中之指令所產生時被設定 ,邏輯 Uninstr IDO 的來 ::列陣列2m内之追蹤的外部產生。因:=:由二 5效1因是此"邏輯〇〜心ID3的來源2來自―⑽的 目私。因此,lnstr ID3的有效2是一邏輯1。 儲二加到一常數"1〇"。該常數可與指令-起 :存器中(未顯示),在來源1攔位中,或 & ί 他機制。在圖12中,χ(不管)出現在instr· id3 ^來源1攔位中。或者’一些指示器可被放在來源 中0 儲存緩衝器ID(SBID)攔位保存與儲存緩衝器裡—儲存指 令有關的SBID,描述如下。載入緩衝器(LBID)攔位保存與 載入緩衝器裡一載入指令有關的LB丨D項目,描述如下。” 3811)和1^10值由重新配置/指派單元15〇分配,並透過旁通 導線1 2 6寫到指令佇列陣列。線丨D號碼攔位可包含在指令 佇列陣列2 0 2 A中,但因其已隱含而並不需要。 b· 1^1)陣列20 6人與附屬性產生電路212八 參照圖1 3,D A D陣列2 0 6 A之一實施例包括以一對一方式 與指令佇列陣列2 0 2 A中的i n s t r ID項目對應之"丨n s t r j D,, 項目(列)。的確,指令佇列陣列20 2 A與DAD陣列20 6 A可台匕 J月匕 是相同陣列的不同部分。然而,在一些實施例中,指令{宁 列陣列2 0 2A與DA D陣列2 0 6A有不同的讀取埠。 DAD陣列20 6 A包括一含有指令所產生的值或暫存器棺案
O:\56\56145.PTD 第22頁
1 元 ΐ之一的"值或PRiD"攔位。值經由寫回單 m 排122與196從執行單元被寫回刻追縱缓 衝器11 4A。"狀態"欄位,可能是二個位元 PRID"糊位到底包含"值•,或一"PRID"。在θ : 或麗"可能並未保存一有效的"值"或—有;二中ID”值 重β计數"攔位,獨一地識別一指令派遣,在每次相同 mstr ID的指令在管線108中重演時被增量。在一實施例 之下,一指令可能在管線1〇8中同時被重演—次以上。在 j情=中,在一實施例下,只有與最高"重演計數"有關的 貝訊被寫回到D A D陣列2 0 6 A。 ,附屬性欄位"包括每個邏輯的暫存器之一位元。在圖】3 中’為_了簡化’只有四個邏輯的暫存器(IM,R2,R3,和 R4)表示出來。然而,數目可遠較此為大。在範例中,附 屬性攔位項目被設定成1,以指出在追蹤的輸入值和指令 項目之間存在一資料附屬性鍊結’與沒有附屬性時設定成 0。附屬性攔位項目識別若收到一輸入值(例如當偵測到數 值失誤猜測)時,追縱内的哪個指令將需要被執行。 當指令被讀取,解碼,和寫入到追蹤緩衝器丨〗4A内,附 屬性位元循序地被&十真’並被寫入Ο A d陣列2 0 6 A中。附屬 性位元可能在判定是否要重演一指令之前就產生。圖丨3中 的附屬性位元是六個指令10-15的,在上面的段落Bia中 钦述。 附屬性欄位可透過機械方式產生。在描述一此種方式之 前,其產生將以較直觀層次解釋。
O:\56\56145.PTD 第23頁 五、發明說明(20) i ·直觀層4 心令10的結果只附屬於暫存器们和!^2。因此,1被放在 instr ID0(它保存與指令1〇有關的資訊)的^和”行,而〇 保持在R 3和R 4行。 拈令11的結果只附屬於暫存器R3和R4。因此,〇被放在 instr ID1的R1和R2行’而^⑸和以行中。 指令I 2的結果直接附屬於,分別在指令丨〇和丨丨中產生 的,暫存器R1和R2。在指令1〇中,R1附屬於追蹤一開始時 R1與R2的值。在指令12中,R2附屬於追蹤一開始時R3與以 的值。因此,指令12間接地附屬於追蹤一開始時R1 _R4的 值,且1被放到instrID2的R1-R4行中。 指令I 3的結果直接地附屬於指令〗2中所產生的暫存器 R1。因此,指令I 3間接地附屬於追蹤一開始時R丨_ R 4的 值’因為指令12附屬於這些值,且1被放到ins · R1-R4行中。 的 指令14的結果直接地附屬於暫存器R2,其係在指令I 1 產生。R2附屬於追蹤一開始時暫存器R3和^的值。^ 〇被放到R1和R2行之内,而1被放到instF 11)4的R ’ 之内。 J 和行 指令I 5的結果直接地附屬於暫存器R丨,其係在指令I 2 產生,指令12附屬於追蹤一開始時暫存器R1_R4^^。 此’ 1被放到instr ID5的R1-R4行之内。 i i 一種機械的 以下是根據本發明的一個貫施例可用來產生附屬 五、發明說明(21) ΠΐΐΠ算法。參照圖14,附屬性產生電路212A包含 個,加上ll k,2 32 ’ 234,和2 36,每個邏輯暫存器一 23〇 , 額外的暫時暫存器240。暫時暫存器23〇, 正元。修正Ϊ 23 6包含邏輯暫存器以,R2,R3,和以的修 存号將,的暫存器240包含一組位元指示哪個邏輯暫 二和的指令修改。暫存器230,232, 新。暫存^ ^有—新的指令被寫人到追蹤緩衝器内更 邙在- r i ί:的界限是任意的。舉例來⑨,他們可以全 邛在聯合暫存器中。 器對暫存器’都提供了-追蹤緩衝器位址暫存 二個ΐ: 1 Ϊ蹤緩衝器114Α中要修改該邏輯暫存器的最後 :Ϊ=Γ14Α内之下-個指令的附屬性= 存器内思ΐ1 使用’修改暫存器僅表示將一值寫入暫 同。舉例來說,如果r1w2的内與/曰7的/。果不 時),且結果被寫入暫存器Rr之内口 ΐ在指令ι〇之 二…。舉例來說,Ri的内容在指令之後將不 的内容是"〇",或以在指令之前是"1"。 ,圖16中,流程圖250代表為指令的每個來 來說,來源1和來源2)產生DAD P車列2〇βΑ M + 設定。如步驟25 4所描述’如果暫存„ 2 〇 i^位兀疋否被 定,那麼與該暫存器有關的附屬: 的位元未被設 碉改襴位的位疋被設定成邏 第25頁
O:\56\56145.PTD 五 '發明說明(22) 輯1。如步驟258所陳述,若暫存器24〇中的位元被設定, 則使用由相關暫存器的修正元暫存器(230,232,234,或 2 3 6 )所產生的索引,讀取來源附屬性欄位。接著,如步驟 2 6 2所述’使用邏輯或運算合併來源附屬性位元與目前指 令附廣性位元。此種邏輯或運算由圖15中(其中多個位元 以輸入表示)的或閘244說明。在執行圖16的演算法時,所 提及之修正過的暫存器和修正元是就在一指令執行前所存 在的那些。 有關於10,在指令10之前,暫存器24〇的R1,R2,R3, 和R4,邏輯0,而暫存器230,23 2,234,和236的值是 乂(不管)。在步驟2 52之下,暫存器24()裡1?1和1?2的修改過 的位元都是0。因此,在步驟254之下,在㈣陣列2_的 inStr ID0列中,RU〇R2的附屬性欄位的位元都被設成1。 暫存為R3與R4不牽涉在内,而在instr ID〇列中保持為〇。 才"10修改了暫存器R1。因此,"皮放到暫存器之内, 指出指令10是最新近修改過暫存器以的指令。在暫存器 232…2 34 ’和23 6中的值維持X(不管)。暫存器240的R1位 兀被設成1,指出R1已經被追蹤裡面的一個指令修正過。 的:Γ二1附屬/生欄位以指令10相似的方式產生。修正過 邏輯暫存器搁維持設成1。邏輯1被放到 X ^ '子益24 0之尺2欄之内。暫存器232中的1代表指 兮1 1 0 關於指令12,在指人T9 0.n 仕知vI2之則,在步驟252之下,暫存器 240中R1和R2的修正過的位元都县 <幻伹兀都疋邏輯1 (也就是,設定
五、發明說明(23) '----^ 成)。在步驟258之下,Rl(23〇h〇R2 (232)的修正元暫在 器,緊接在指令12之前,被當成索引使用。暫存器23〇 指令10包含一〇值。DAD陣列206^instr ID 〇裡指令·-、 附屬性欄位是0011。暫存器232為指令n包含值。 instr ID1裡指令II的附屬性攔位是n〇〇。在步驟262之 下,〇 〇 11與1 1 0 0的邏輯或值是i i i J。因此,丨i i丨被放 DAD陣列20 6A在instr ID2的附屬性欄位中》R1被指令12 修改。然而,一暫存器以的丄值已經在暫存器24〇中。— 值被放在暫存器230中,指出指令12是最新近 R1的指令。 ^?曰7 指令13的附屬性欄位以指令12相似的方式產生。邏 被加入到修改過的暫存器24〇的以欄,而一3值表示指 放在暫存器2 36之内。邏輯或運算產生^丨。 關於指令14,在指令14之前,在步驟2 52之下,暫存 240中R2的修改過的位元被設定。在步驟⑽之·1 下’R2 ( 232 )的修正元暫存器,緊接在指令14之前,被各 成索引使用。暫存器232為指令π包含一W。在_陣二 206八的11^以]:ID1中,指令11的附屬性攔位是ιι〇〇。在步 驟2 62下’ 11〇〇(來自lnstr ID1的來源丨)和〇〇〇〇(沒有來源 2)的邏輯或運算結果是11〇〇。因此,11〇〇被放到md陣歹/ 206人的11151;1· ID4列的附屬性攔位之内。 指令15的附屬性欄位以指令14類似的方式產生。指令i5 和I 6修改外部記憶體位置,且不改變暫存器2 3 〇,2 3 2, 234 , 236 ,或240 。
五、發明說明(24) 附屬性資訊可被排程/發送i ς β從田 丄 送單元156可只求得其自己訊用/或者排程,發 ιιί :演::序列ί:!指令有不同的方式由追I緩衝器 114Α發运出來…種方式是依序讀取追縱緩衝_,並摘錄 附屬性位元被設定之指令,且將其送出重演。缺而, 能會在管線中造成泡沐效應。另 由 以執行/重演之前,將邏輯值封裝以除去泡二。由 二:外一個方式包括一些額外硬體,包括每個邏輯暫存 益的陣列。陣列·2 68包括附屬於暫存器Ri之 暫 mstr 值。陣列268中的值當作指令仵列陣列2〇2/ 個instr ID項目的指標。如此允許對指 的讀!。-次讀取-個指令區塊㈣2或4:指令;常= 11 4A可以是多埠的,且有四個解碼器 讀列所取得之指標的每一個傳遞到該等解碼器:= 令1〇 ’ 12 ’ 13 ’和15能在一個周期内被讀取: : 列可在附屬性襴位產生時,在重 子盗R1陣 的層次促進高頻'寬重^ ^開始之用】,組成。間接 祕ί缺緩衝益114包括偵測電路 據本發明的一實施例,每個追蹤緩 一一 H知測。根 暫存器内文之輸出暫存器檔案1一輸入暫Μ。線的 收依照程式順序立刻要進行之線的暫存器:::檔:以接 内文是邏輯暫存器的内容戋置狀離 ° 文。暫存器 的改變時常被更新,可能是每次暫、存;案内容 卞商〒一有變化。輸入 S! 第28頁
O:\56\56145.PTD 五、發明說明(25) 暫存器檔案的内容只在比較之後才被更新,描述如下^ 圖18和19說明一輸出暫存器檔案20 8A(在追蹤緩衝器 114A中)和一輸入暫存器檔案2〇8β(在追蹤緩衝器η"中) 的實施例,雖然可使用其他實施例。輸出暫存器檔案2〇8a 與輸入暫存器檔案21 0B包括一值或PR ID攔位及一狀態欄 位。狀態欄位指示在值或PK ID欄位中是否保存_ ^ 或-有效的P1UD。在-實施例中,會有一有效的值或—有 效的PR I D兩者之一。在另外一實施例中,可兩者皆無,在 該情況中附屬於輸入暫存器檔案的指令可等到有其^之 —^ 〇 注意在上面所描述的範例中指令1〇涉及暫存器和”, 兩者都不是先前包括指令丨0的線裡面的目標。然而, 器R1和R2的值或PRID可以由輸入暫存择安〇 指令㈣執行中使用。 暫存^案㈣取得以在 參照圊20,比較器280B比較當前線的輸入 208B(在追縱緩衝器114B中)的内容,與依照程式順中立 刻要進行之線的輸出暫存器檔案21〇A(在追蹤緩衝写114八 中)的内纟。此比較可在立刻要進行的線執行結束時做, 或在前一線的原來執行期間做。比較,& 結束時做。在-實施例中,比較只的線之退役 時做。 罕又在則面的線之退役結束 事Π:比較;28°B的比較。比較被用來 偵測失块知測。如果在輸入和輸出暫存器檔 異’則立刻要進行之線的輸出暫存琴之 或更多值已經改
O:\56\56145.PTD 五、發明說明(26) 變。為了因應,輸入暫存器檔案208B被更新,且, 邏輯284B使那些被影響的指令以改變過的暫存器^ —又 附屬性欄位可被重演觸發邏輯284β使用。不 = 值是那些最終,值(也就是,在一純粹#序二改變的 會產生的暫存裔值)。#些指令可能需要再 也許數次。 人破重凟, 在-實施例中,線的偵測電路包括—輸出暫存 -輸入暫存益檔案,一比較器及 ° 「 ,在包含輸入暫存器槽案的追縱緩衝器中路指以令谓:, 些ί:測錯娛。纟其他實施例中,偵測電路门 的電路。 ι枯些不冋 例如,參照圖21,線丁2是目前的線,且 114Β有關。線Τ1是緊接在蠄ώ 、追縱緩衝盗 114Α有關。魄前的線,且與追縱緩衝器 二ί 2 括一函數呼叫,該函數,和由函數呼叫 的、回。線T 2的執行緊接在函數呼 器210A的内容當其在函數呼叫 ^開始:輸出暫存 暫存器檔案2 Ο 8B中。線τ 2的尸I ^夺,破複製到輸入 中暫存器内文猜測地執行。在返 :存 檔案2m的内容被比較器2δ0β*==時,輸入暫存器 容作比較。如果有差異,輸入暫^出暫存器檔案麗的内 線Τ2裡那些被影響的指令被重演。子=:2_被更新’而 中間時間·。這可藉由更平均地 可在-”多的 免瓶頸…能引起額外的重演;酉令的重演而幫助避 器標案的内容在函數期間改變」;以,例來說’輸出暫存 一人以上。在當中輸出暫存
O:\56\56145.PTD 第30頁 五、發明說明(27) 器檔案經常地改變,它可处 存器檔案210A的内容。缺=需要一中間緩衝器接收輸出暫 輸入暫存器檔案20 8B中間^ ^較可在中間緩衝器的内容和 如圖8和1 〇中所說明,卷 存器檔案和輸入暫存器槽暫子器内文透過導㈣^ 輸入暫存器與每個,可伴,5間傳f。導線216連接每個 緩衝器的輸出暫存器槽牵子〃接在前的線之追蹤的,追蹤 隨特定追蹤緩衝器的順〗。保註程式順序總是會跟 純。輸出和輸入暫存器:牵=線216的配置可相當單 路224A來控制。 檔案可由圖1〇和11中顯示的控制電 因為輸出和輸入暫在哭# 收一輸人暫存器中案會提供一值或一prid,在接 之一塹之内谷與可以使用來自輸入暫存器檔案 ^窃S —來源參數執行指令之間可能有非 遲。如果不能;彡呈 4 、 蝻in«由λλ虹值’暫存器楼案152&PRID可用在管 線1 〇 8中的執行。 6 〇 Γ Γ ^卉多指令將會被重演數次,當正確的來源參數藉 者各個線的暫在哭於安、s 一 θ仔态祜案運作時。然而,也可預見對許多程 =而σ ^大f指令將完全不需要重演,或相對很小的次 ^ ’使母一單位時間中正確地執行的指令實質增加,並使 執行一程式所需要的總時間減少。 2. 14, 參照圖11 ’追蹤緩衝器114A,類似於追蹤緩衝器114(在 圖1 〇中)°然而,在追蹤緩衝器1 1 4 A,中’附屬性欄位是在 附屬性產生與解碼電路2 1 8A決定一指令要被重演之後產
O:\56\56145.PTD 第31頁
五、發明說明(28) 生。 行, 會有 定以管線方式執 一旦處理開始可能 若要重演指令的發送和附屬性的判 這可能引起重演中一些起始延遲, 一點點額外的延遲。 在一 欄位給 位可被 重演期 附屬於 出附屬 21 8A 可 14中, 多個附 次只能 實,例中’附屬性產生與解碼電路218八只保存 :屬性資訊斑(在圖13中,有四個棚位。)該相同攔 重複使用。舉例來說,在附屬於暫存器R丨之指a 間,該欄位可用來列出附屬於暫存器R1的指令:在 :2 5之指令的重演期間,該相同攔位可用來列 、;暫存㈣的指彳H附屬性產生與解碼 以/、包括一修正π欄位和一修正元暫存器。(在圖 有四個)或者,附屬性產生與解碼電路2 i 8Α可包 屬性欄位與暫存器。附屬性產生與解碼電路21 8 a — 判定幾個指令的附屬性。 貝^陣列214A包括-值或PRID攔位,—狀態位元搁位, 和重演計數攔位給每個instr ID項目(如圖1〇和13峨 列206A中)。或者,資料陣列2Ua的内容可放到附屬性 生與解碼電路21 8A中而使資料陣列2 14A並非必要。有二 有利的理由維持資料陣列214A與附屬性產生與解碼電^ 2 1 ” t開。首先,它們可能涉及不同的讀取埠。其次,在 一實粑例中,附屬性產生與解碼電路2丨8 A並沒有像指 ? 202A與資料陣列2】4A 一樣多的列數。換句話說,: ^施=中’附屬性產生與解碼電路21 8A重複使用列,正 像它可能重複使用附屬性攔位一樣。當然,有許多可能 性。
五'發明說明(29) ' --- 如以下所將更詳細描述’ MOB 1 78在載入指令將被、〜 的時候透過導線1 94發出訊號。一具有附屬性攔位的重演 (像圖1 3中R1的)可能產生,以列出附屬於將被重續、陣列 指令上的指令。然而,對一載入指令而言,附屬指人載入 列由載入指令開始,而非如暫存器的情況中由迮 7的表 一個指令開始。載入指令的附屬性攔位可能在附屬性 與解碼電路21 8Α中(在圖11中)。(當然,其他追縱的 生 指令將會從其他的追蹤緩衝器重演^ )在一實施例中,入 屬性產生與解碼電路2丨8 Α被用來當成載入指令和暫存器附 者的附屬性欄位。相同欄位可用做兩者。在另_ ° . ± . 只万也例 中’暫存器的附屬性欄位在DAD陣列206A中,且恭λ α 的附 屬性攔位在附屬性產生與解碼電路2 1 μ中。 還有另一實施例,載入指令被完整重演(也就是,所有 跟在載入之後的指令都被再執行),因此附屬性襴位並不 需要。 C.重演順序演簞^ 當重演觸發邏輯(如重演觸發邏輯284B)判定—來源參數 或其他的輸入值)被失誤猜測,它便觸發對應的追^缓衝 态(如>追蹤緩。衝器丨14B)發派直接或間接附屬於管線中 Ϊ ί ::C:猜測的來源參數之指令。那些直接或間接附 : H Γ追蹤緩衝器中之_陣列的附屬性攔位識 別,或透過如圖13中另一陣列來識別。
五、發明說明(30) ΙΓΛν.^^^nstr ^ 的於制之下H /底。然而,指令可能在排程/發送單元156 =控制之下,,,、序地執行,如在任何無序處理器中—樣。控 制位7G被附加到從追蹤緩衝器中被發派 ^ 新配置/指派單元150是否要⑴進行暫存器重❼ 略過重新配置/指派單元15 0中重新配置別名的表列搜尋, 而改以使用來自對應追蹤緩衝器的PRID,或(3)完全略過 重新配置並使用來自DAD陣列的值,就像指令中的常數參 數一樣。 如與圖8—起解釋的,當instr ID的一個對應的來源參 數已經由一追蹤緩衝器1 1 4 A中的線以外的指令所產生(舉 例來說,目的地)時,"有效丨"和"有效2"欄位是設定成一 第一值(舉例來說,邏輯〇)的位元,而在instr ID的來源 參數已經由線中之一指令所產生時設成一第二值(舉例來 說,邏輯1)。從追蹤緩衝器114A發派出來重演的指令可依 下列決定其來源參數· __⑴效#位如果在指令佇列陣列202A中的有效位 兀被設成一邏輯1,來源參數被用來讀取DAD陣列2 〇 6 A中對 應的值或PRID。如果DAD陣列狀態欄位的值位元與pRID位 元都不是有效的,表示來源參數暫存器仍然還沒有被重新 配置。在此情況下,指令及具有邏輯零值的值與pR丨D狀態 位元經由導線120和MUX 110 —起被發派,讓重新配置/指一 派單元150執行別名表列搜尋(暫存器重新配置)如其一般 所做。如果PRID或值是有效的,它經由導線〗2〇和Μϋχ u〇
五、發明說明(31) 連同指令-起傳遞到重新配置/指派單元玉5〇,卩因應略過 重新配置階段。 (2) 丝的位&如果來源參數的有效位元被設成一邏 輯0 ’輸入參數來自追蹤之外。來源暫存器名稱用來存取 輸入暫存,稽案2〇8A。來自輸入暫存器檔案208A的值或 PR ID連同私7起被傳送到重新配置/指派單元1 5 0,以 因應略過重新配置階段。 有效位70究竟是0或1,對每個被發派的指令而言,在 =陣短歹t的值與PRID狀態爛位的位元被重設成或維 舌。: 個目的。首先,它確保在腦被複製 ρί Πΐί階段的項目内之前所發送之較後面的附屬 Ϊί用重新配置別名表列中重新配置,以避 免if來自追蹤緩衝器114八之陳舊的⑼⑺。其次,它也確 保指令不會退役,言备丨畏接—μ处 _指入口 ;^最後一個執行事件被寫回,從而允 \ 7 田斤有貝料失誤猜測都已被更正的時候才退 ?又0 D.第二層或最终退役 所=前的線之所有指令都退役,且屬於指令的 所有重决事件都已經被服務過後, 114中退役。陳述另外 才最料由追縱緩衝益 正確#來# H ',指令在能確保其已經以 序退役。舉例來說,直到所有 ,、踝依…、’丨負 ί退ί 指令都已經退役)之前,、《中的指令不 月匕退仅在線中的指令依照順序退y,# # & + ρ χ见仅,雖然所有預備好退
五、發明說明(32) 役的指令可同時地退役。 最終退役由最終退役邏輯1 3 4所控制。在本發明的一實 施例中’最終退役包括(丨)委託結果到循序暫存器檔案, (2)服務中斷’例外,及/或分支失誤猜測“ 3 )追蹤緩衝器 與MOB 178資源項目的解除指派;和(4)向MOB發訊號將儲存 標註成退役的,並將其發送到記憶體。將項目解除指派可 能包括移動一首指標。如下所述,在MOB 1 78中的儲存指 令不會被解除指派,直到它確定相關的資料被複製到資料 快取1 76或其他的記憶體之後。關於M0B 1 78中載入與儲存 指令最終退役的細節描述如下。 E.記憶體系純 圖22說明圖2的MOB 178之一實施例,包括MOB 178A, 178B,...,178Y ’其中γ代表MOB的數目,且符合追縱緩衝 器114的數目《ΜΟΒ 178A, 178B,...,178Y分別保存追蹤 緩衝器1 14Α, 114Β,. . ·, 11 4Υ内追蹤的載入和儲存指令之 附本。載入指令被保存在栽入緩衝器182Α, 182Β,..,, 182Υ中。儲存指令被保存在儲存緩衝器184Α,1 84β,..., 184Y中。導線292代表攜帶訊號往返mob 178之各種不同導 線。重演導線1 9 4將來自MOB 1 7 8的訊號提供給追蹤緩衝器 1 1 4,警告追蹤緩衝器11 4 一載入指令應被重演。控制電路 3 0 2執行多種控制函數。 1 ·健存緩衝器與戴入緩衝器 圖23說明儲存缓衝器1 84A之一實施例,它代表儲存緩衝 器1 84B,,· ., 1 84Y。各種其他實施例都可使用。儲存緩衝
五、發明說明(33) 器184A包括儲存緩衝器項目的列中之各種不同欄位。每個 項目由一儲存缓衝器ID(SBID)識別。重新配置/指派單元 150在每個儲存指令第一次被讀取與執行的時候,指派一 SB I D項目給它,但重演時不會。儲存指令直到最終退役之 前有相同的SB ID值。舉例來說,在圖23中,項目SBID 〇被 指派給指令STORE 0。項目SBID 1被指派給指令ST〇RE j , 等等。一LBID攔位保存一"store LBID"值描述如下,在圖 23中說明。在一實施例中,當指令佇列陣列2〇2a(在圖12 中)之一個項目保存儲存指令的時候,指令佇列陣列2〇 Μ 的SB ID項目保存用以識別儲存緩衝器184A中保存 二:目=',而_攔位替該儲存指令保存“㈣曰
果有的話。SBID值和store LBID值透迅與磕 1〇8^, 〇 ^ ,(J t , LBID 包含在儲存緩衝器184A中。 u也j此不 instr ID攔位保存著指令佇列陣列2〇2a中 a 令ID。線緩衝器ID是暗指儲存緩衝 子指7的才曰 兩者。操作碼攔位保人84= 址欄位保存著儲存指令::存“的細作碼。儲存位 例中,位址_ 儲存位址是否為有效的位二=包含-指出 使用分開的位址和資料“:貝枓疋否有效的位元。可以 效貝枓在不同的時間到達。位 』靶與有 執行之前到達。在一實施w I ^枓兩者在儲存指令被 隹“e例之下,資料包含
O:\56\56145. PTD 第37頁 麵 五、發明說明(34) ' - 份中。退役欄位包括一在最終退役邏輯2 34指示儲存指令 應該退役時被設定的位元,而該位元在收到來自記憶體對 記憶體的儲存已完成之確認時,被重新設定。載入和儲存 的退役在下面討論。重演計數欄位包括一重演計數數字 (且類似圖13裡的DAD陣列2〇6A的重演計數欄位)^重演計 數欄位並非必要。在一實施例之下,儲存指令每次只能重 演一次’且沒有重演計數欄位。 圖24舉例說明一載入緩衝器〗8 2A的一實施例,它代表載 入缓衝器182B,. · ., 182Y。各種不同的實施例都能夠使 用。載入緩衝器182A包括载入緩衝器項目的列中之各種糊 位。每個項目由一載入緩衝器ID(LBID)識別。重新配置/ 指派單το 1 5 0在每個載入指令第一次被讀取與執行的時 候,指派一LB ID項目給它,但重演時不會。載入指令在最 終退役之前有相同的LB I D值。舉例來說,在圖2 4中,項目 LBID 0被指派給指令i〇ad 項目LMD }被指派給指令 1〇以1’等等。(1^11)項目數值與5310欄位可稱為一1^06 ID) °SBID欄位保存"i〇ad SBID"值,描述如下,在圖24中 說明。在一實施例中,當指令佇列陣列2 〇 2 A (在圖丨2中)之 一個項目保存载入指令的時候,指令佇列陣列2 〇 2 A的L BD 項目保存用以識別載入緩衝器〗8 2A中保存著載入指令之項 目的LBID值’而SBID欄位替該儲存指令保存i〇ad SBID 值,如果有的活。LBID值和load SBID值透過管線log與載 入扣令相隨。在該實施例中,S b ID欄位也可能不包含在載 入緩衝器182A中。
O:\56\56145.PTD
第38頁 五、發明說明(35) i D 1广S Z 立保存指令佇列陣列2 〇 2 A中載入指令的指令 去批你盗ID暗指載入緩衝器182A和追蹤緩衝器114A兩 位保存載入指令的操作•。載入位址攔位保 ίΞΐ”何處載入的位址…有效爛位包括-指出 :項有效的載入指令佔用的位*。在說明的 :’不包括位址有效爛位,因為位址已經由Aa m Γ!=存一來"新配置/指派單元152的㈣ 二檀案152中載入指令的目標。別…, SBU) ’線ID,與重演計數糊位(如果 -部份,並與儲存指令的執行一起在下面^狀』位的 士在重新配置/指派單元15G第—次接收到儲存和載人 日可,儲存和載入指令的項目祐γ γ 7 在暫存器檔案15〇與_ 164中。這些項目並不遵:第= 次退役,而是像追蹤緩衝器114裡的項目,維持扣 曰 最終退役。因此,項目在重演時不重新指派。如曰果儲存 載:緩衝器滿了 ’ “I-Cache 104的儲 : 不會通過重新配置/指派單元150,直到—項目將 來。然而,由追蹤緩衝器中被重新執行的 將會通過重新配置/指派單元丨50。 或儲存指令 2 ·載入和儲存位址的kh @ 參照圖5,依照程式順序,線T1中的st〇re 的load MX被執行之前執行。然而,因為同,線T2中 時間順序’store MX可能在丨oad MX之前或之=二二依照 傻執行β如
O:\56\56145.PTD 第39頁 五 '發明說明(36) ------ 果store MX依照時間順序在1 oacj Μχ之前執行’ MX的猜測性執行將會依照st ore Μχ相關之正確順序。^ 依照程式順序所有在store ΜΧ之前的指令都已經L , 以碟定load MX將會由記憶體位置Mx載入正確的值。1確 的值是如果線由一循序處理器執行時將已經被载入的 如果依照程式順序並非所有在store Μχ之前的指令都已經 退役,那麼s tor e MX的資料總是有可能是不正確的。, 相反的’如果依照時間順序store 〇在1〇“ Μχ之後執 行,那麼load MX的猜測性執行不會依Mst〇re Μχ相關之 正確順序,。而且可確定l〇ad MX將不會載入正確的值。 正確的值出現在記憶體位置MX中(或儲存緩衝器項目的資 料欄位保存store MX直到store MX最終退役)只會是巧 合。為了要確保執行的終極正確性,MOB 178包括各種機 制以確使記憶體資料在線之間的一致性。 a.載入指令的埶杆 在載入指令執行之前,它的位址與儲存指令的位址—起 比較以決定哪一,如果有的話,儲存指令是最接近先前相 符儲存指令(CEMSI)。”相符"指的是與載入指令有相同的 位址。11先前”指的是CEMS i在程式順序中在載入指令之 前。"最接近’’指的是在CEMS I和將被執行的載入指令之間 沒有其他相符的儲存指令。如果只有一個先前相符儲存曰指 令,它就是CEMSI。 θ 如果有CEMSI,載入指令由CEMSI的資料攔位讀取它的資 料。如果沒有CEMS I,載入指令由記憶體取它的資料,例貝
五、發明說明(37) 如資料快取Π6,L2快取,或主記憶體。來自健 84或記憶體的資料經由MUX 192傳送, * % =中由線Π)和instr ID所指定的項目中^ 寫到暫存器播案152中PRID所指定的暫存 能依快取規則(舉例來說,寫回, /也可 取176中。因為此略過記憶體,例如資料快取⑺,K 取,或主記憶體’所以MUX 192是一旁路。 、 在-實施例中,-個不同的比較器與每一個儲存 18 4的每個項目聯合,以比較# # _ '' G衩將破執行的載入之位址與儲 存指7的位址。圖25裡的比較器32〇是一範例,並接收載 入指令位址和儲存緩衝器〗84A中項目SBiD i的儲存位址。 來自其他比較器的導線322和輸出導線被連接 路302。 …j电 載入SBID指向與將被執行的載入指令有關的最接近先前 儲存指令(CESI)的LBID。CESI是在儲存緩衝器中與載入指 令有相同線ID者。如果有(:£^31,它不*CESI就是在程式 順序中比CES I早者。重新配置/指派單元丨5〇記錄程式中儲 存與載入指令的順序,並提供SB丨D和LB丨D值。它們可透過 導線1 2 6寫到追蹤緩衝器n 4。在一實施例之下,如果沒有 與載入指令有關之CES I,那麼沒有與該指令相關之載入 SB I D ^這在追蹤内的第一個記憶體指令是載入的時候發 生β。。各種技術都可用來處理這種情形,包括重新配置/指 派單το 1 5 0送出某些訊號以指出沒有有效的載入別丨D。陣 列翻轉位元’描述如下,可如此使用。 五、發明說明(38) 考慮下列程式順序中之儲存與載入指令: store 0 store 1 load 0 store 2 load 1 store 3 store 4 load 2. 在LBID欄位中的store [BID值在儲存缓衝器182A中說明e 在SBID攔位中的i〇ad SBID在載入緩衝器184A中說明。舉 例來說,LB I D項目1的SB ID欄位中的2指出在儲存緩衝器 184A的項目SBID 2之儲存指令保存與LBID項目1中之載入 指令相關之CESI 。指令store 0 , store 1 , store 2 , 及load 0 比load 1 舊或早。指令store 3, store 4,及 load 2比load 1新或晚。 控制電路3 0 2有各種方法可決定哪一個,如果有的話, 儲存指令是CEMS I。這些方法的例子與圖2 了一起討論,其 中储存緩衝器184A,184B,184C,和184D是M0B178中僅有 的儲存緩衝器’且分別與線A,B,C,和D有關。假定程式 順序是線A ’然後線B,然後線C,然後線D。在該範例中, 要被執行的載入指令在載入緩衝器18 2C中。有—CESI,它 在儲存緩衝器184C中。 導線342,344 ’346,和348是各種比較器的輸出導線。
O:\56\56145.PTD 第42頁 五、發明說明(39) =線362 ’364 ’366,和368提供使那些比較器能夠執行比 較,控制訊號。在不同的實施例中,控制電路3 致能(】) 對每個儲存緩衝器中的所有項目的比較器,(2)只有在儲 f緩衝器巾,有跟依照程式順序,與載入指令的線ID相同 或更早之線ID相關的那些比較器,或(3)只有在程式順序 中比載入指令更早的項目有關的那些比較器。 相符判定邏輯356決定哪一,如果有’儲存指令是 CEMSI。在圖27中,在儲存緩衝器184(:上面 = 指令不在儲存 184C中,那麼CEMSI將會是在儲存緩衝器U4B裡的st〇re MX指令。當比較器和相符判定邏輯3 56在決定是否有cemsi 的時候,可能在資料快取176(和其他記憶體)中搜^,以 備如果沒有CEMSI。相符判定邏輯35 6包括資料 輯390,它在導線3 70之上提供訊號以控制Μυχ 192是^否制i s己憶體或儲存緩衝器傳送資料。 在一種方式中’ΜΟΒ控制電路3〇2有二個優先順 ,。一個可能是要W儲存緩衝器内儲存指令的優J順 序。另外一個可能是決定儲存緩衝器的優先順序。 定依照任一順序。進位鏈架構可用來決定儲存緩衝 = 優先順序。舉例來說,在一實施例中,除盥’ ° , :同線ID的那一個儲存緩衝器之外,每個儲; 定哪-’如果有,相符儲存指令依照程式順是 :、 對與載入指令有相同線10的儲存緩衝器而古,新的。 -’如果有,相符指令依照程式順序最接近⑽匕心:定與那
O:\56\56145.PTD 第43頁 五、發明說明(40) 其相同)。缺德,— 令在程式順序中定儲存緩衝器中哪-個的相符指 儲存載指令的線ID最接近。 列。一„# ^ 了以疋每個都有頭部和尾部的循環陣 舍儲在二曰。、1:有較大SBID值的儲存指令比較新。然而’ ^除指派並指派,尾部最後會翻轉,所以頭 °中=1 Γ斤指向的更高之咖項目。在一實施例 動,部由最^BID值走向最低的值時被變 動並被棱供給最接近相符判定邏輯356。 b. _儲存指今的$ 起fcl Ιΐ t ί二執订的時候,它的位址與載人指令的位址一 人Ρ 、如果有,在程式順序中比較後面的哪一載 y 7 Λ目同或更新的線)有跟儲存指令相同的位址。 被s tor e SB I D所指屮夕—早ϋ β h& ^曰出之最接近較遲載入指令(CLLI)指定 可被考慮的最早載入指令。 心 1上一Λ施:"’一個不同的比較器與每-個載入緩衝器 18的^個項目聯合以做比較。其中之一是比較器⑼,在 圖26中s兄明。僅係做為範例,比較器m與載入緩衝器 182A的項目LBID i有關。比較器324在一個輪入接收储 指令的位址,而在另一輸入接收载入緩衝器丨82a裡項目 LBID 1的載入位址攔位中之位址。輸出導線326上的訊 象徵該等位址是否相同。導線32 6以及來自其他比較: 輸出導線被連接_控制電路302。比較器(例如比較器的 324)也可以把儲存指令的狀態位元與載入緩衝器 位元作比較,如下所述。 狀匕'
O:\56\56145.PTD 第44頁 五、發明說明(41) 五、發明說明(41) 圖28與圖27類似。然而,在圖28的裁入緩衝器 182A-182D中之載入指令位址與將被執行的儲存指令的位 址一起比較,且相符判定邏輯3 5 6決定是否要重演載入指 令。在一實施例中,相符判定邏輯包括重演觸發邏輯 3 94,它在導線1 94之上提供訊號,以指示追蹤緩衡器那些 載入指令要重演。在一實施例中,相符判定邏輯35 6由 CLU開始考慮載入指令與儲存指令的相符。不同的演算法 都可被使用。線管理邏輯〗24指出在程式順序中那些線ID 比正被執行中之儲存指令的線11}更新者。在一實施例中, 器:被致…另一實施例中,只有在載入緩衝 =有線ID跟載入指令的線相同或更新的 。還有另一實施例中,只有在載人_
=ΪΓΪ1Γ之導線被致能。要考慮的線可以: 之刖’之後,或在判定期把击.1 A 器裡面”個載入指令比儲存指程式順序載入緩衝 猜測錯誤之偵測ί路用2:j載t指ί的執行中的-些 相符判定邏輯35 6的部分,盥相入緩衝益相關的比較器, 施例中,情測電路可包括_:=關之控制電路。在其他實 錯誤的偵測並不需要在執行;:電㉟。偵測電路對猜測 可與資料路徑控制邏輯及重;同:相符判定邏輯 1.有位址相發邏輯連接一起使用。 那些有一位址相符之卓 SMD,線ID,重演計數(如田令的狀態欄位(別hit, (如果用了)),在判定中被考慮是
:二狀態欄位指出載入指令是否由記憶體(舉例來 ^快取1川或储存緩衝器的資料欄位取得它:來 1 t攔/立有,舉例來說一 〇值如果資料來自記悚 ^1值若資料來自儲存緩衝器。SBID與線ID攔位 斤ί自之儲存指令的SBID值和線id值。儲存指人的 :疋要是位址相符之載入指令的線ID。載入指人的 3在載入緩衝器中。重演計數欄位(如果用I中 哪個重演。(如果SB川是〇,SBID,線ID,和^ 位裡的資料是無意義的)。 展 SB Hit = 〇(來自記憶體中的先前資料),載入緩 由導線1 9 4,通知載入指令之線丨D所識別的追蹤緩 一重演事件,而該載入指令與所有的附屬指令由追 器中被重演。instr ID和線ID經由導線194傳详,、; 個指令被重演。 吁运以 否要重 說,資 料。SB 體,和 存資料 線ID不 線I D隱 包括了 計數襴 如果 衝器經 衝器有 蹤緩衝 指示哪 如果SB Hit = 1(來自儲存緩衝器中的先前資料), SB I D欄位,線ID攔位,和重演計數攔位(如果過了)中 控制是否觸發一重演。在第一種情形中,特定載入指人 狀態欄位之線ID等於儲存指令的線I d,而特定載入指1、 狀態欄位中之SB ID符合儲存指令的SB丨D。在此第—^ ^的 中,如果載入指令的重演計數比狀態欄位中之重演計^形 大,載入指令會被重演。如果沒有重演計數(因為储存指 令每次只能被重演一次),那麼載入指令會被重演。曰 在第二種情形中’狀態欄位中的線丨D等於儲存指令 ID,但是狀態欄位裡的SB ID不符合儲存指令的SBID : +線 °在該
O:\56\56145.PTD 第46頁 五、發明說明(43) 第二種情形中,如果狀態攔位中的Sbid比儲存指令的SBID 小則載入指令會被重决’但若狀態糊位中的SB I D比儲存指 令的SB ID大則不會被重演。 在第二種情形中,狀態攔位和儲存指令的線丨D不相符。 可預見ΐί疋稀少的情形。為了單純,在一實施例之下,載 入心令被重/貞(即使匕可成與程式順序相反)。它可能是 錯誤的重演。載入指令在重演的時候將會收到正確的儲存 資料。其他的方式能夠被使用,但是它們對此一稀少的 形可能甚為複雜。 ii.沒有位址相符的情m 如果位址不相符,除了在下列稀少的之外不會引發重 演。如果SB h 11 = 1,狀態欄位的線〗D與儲存指令的線j乃 相符,而狀態欄位的SB I D與儲存指令的SB丨D相符。在此情 況中,會重演,且被重演的載入指令會由一新的項目或^己 憶體接收它的資料。 ° c.重新設定 一線在該線被判定其不在程式順序中時被重設。然而, 來自其他線的載入可能已經由該線中與儲存指令相關之資 料爛位内取走資料。線管理邏輯124送出一訊號給控制電' 路3 0 2。在一實施例中,當線被重設的時候,該重設之線 的線ID與每一個載入緩衝器中的每一個載入比較(除了對 應到重設的線之載入緩衝器)。載入指令的重演被觸發, 其中狀態攔位中之線ID與被重設之線的線丨D相符。載入指 令由相關的追蹤緩衝器中被重演。 s
五、發明說明(44) 3.儲存指令的會潘 如上所述,載入指令斟 實施例中,儲存指令因追:緩‘:::執行而重演。在--暫存器值已經改變而被重;衝:::存器的比較指出有 在追縱緩衝器114”=str舉;,參照圓,和 令,顯示附屬於暫存器R1_R4n:tr id 4和5,是儲存指 4.多重載入指冬的重演 並使在追縱内 相符二衝器中一個以上的載入指令有跟儲存指令 土:的狀態欄位。4 了要避免複雜的邏輯,一個 制電路3 0 2偵測何時有多個載入位址相符 二 最早載入之後的所有指令被再執行。 最終退役邏輯 指出一指令要 5·蓋_入與儲存_通令的最終退柑 當載入或儲存指令要最終退役的時候, 134提供訊號給追蹤缓衝器丨14與Μ〇Β 184,指出一指人 2退役。在追縱緩衝器中的項目(由11}和。 :5被解除指派。在載入指令的情況下,載入緩衝器中 線ID和LBID所標識的項目被解除指派。在載入指入 I,=役完成。在儲存指令的情況下,在解i指i之 刖,貝料攔位中的資料必須委託給記憶體。儲存 項目的解除指派與跟隨之最·終退役,在接收到 —j ,認之後才發生。或者’項目可在確認之前最终:::曰 是項目的解除指派在接收到確認之前不能發生。二,-上的> 訊號能指示線管理邏輯1 24儲存的最終退役何.j 〇〇 成,而下一條線可以開始。 ,元
第48頁 M1
O:\56\56145. PTD 五、發明說明(45) SB退役指出一指令已退役。在最終退役邏輯i 34指出一 指令應該退役時,SB退役攔位裡的一個位元被主張'一曰 SB退役欄位被主張’相關的指令依照順序被寫到記憶^旦 中。當MOB 184A知道指令已經被寫到記憶體“,SB退&位 被解除主張,而指令被解除指派。 載入緩衝器182A與儲存緩衝器184A可以b 士 A疋有一頭部和一 尾部的仰列。當指令被解除指派時,頭部被移動。 緩衝器184A中,和追蹤緩衝器114中,退役和解除 同時地發生。最終退役邏輯134藉著導線136和14〇提供 號。Demux 188選擇是否載入緩衝器182 哭' 0 月匕由載入緩衝盗182與儲存緩衝器184中的致能取 序=下線=樹結構保存線順 部流動,而在右邊的節=(程也式 根依照程式順序是第一自。樹是、抽 J的:點早。 構是實現此樹的電路。 象概心,然而樹結 線由跟隨在反向公古+ 是,線由假設反向分支叫f面的指令開始。也就 令開始(如圓4和5中線T2所說明\函未被呼叫的下—個指 觀點來看,線之子節點的鞋 。如此做,從線(節點)的 相反。舉例來說,在圓6、,順序與線開始(產生)的順序 ㈣的執行之前開始 ’ ^時間順序,、㈣的執行在 I疋照程式順序,線T3在線T2之前
O:\56\56145.PTD 第49頁 發生。 A i11例中,三個事件可能使線從樹中被移除:(1) =鉬=仅時,在樹的根之線被移除。當在根的線退役時, lii順序中的下一個線(節點)變成根,而且節點也對應 广派(2 )在程式順序中最後的線從樹被移除,以空 出來讓程式順序中更高的線加入到樹t。在此,樹像後進 先出(LIFOj堆疊班般運作。(3)當發現父線的程式計數器 ,出起始計數和結束計數間的範圍之外時,線可被重設而 藉此由樹中移除。當子線在反向分支上產生的情況中(舉 例來說’圖6和29中的線T4),起始計數是反向分支的目 標,而結束計數是反向分支指令上的程式計數器值。在函 數呼叫之後開始的線也可因沒有從函數的返回而被重新設 疋’雖然這很少發生。處理沒有由一函數返回之可能性的 種方式’是忽略此可能性’並讓系統在它變成程式順序 中最低者時,最終地由樹中將線移除,如事件(2 )中一 樣。當線從樹中被移除時,指派給那條線的資源(例如追 蹤緩衝器,儲存緩衝器,和載入緩衝器)被解除指派。 事件(1)和(3)在圖29中說明,其中包括圖6的範例的 線,加上線T5和T6。線T5接著點J上的反向分支指令開 始’而線T 6接著點K上的函數呼叫開始。一般假定只有四 個追蹤緩衝器。圖30舉例說明在時點tl的樹結構。線T3被 加到樹之前,線Τ2被加到樹中。線13被加到樹之後,線τ4 被加到節點《線Τ2與Τ2是線Τ1的孩子。線Τ4是線Τ3的一個 孩子。照由上而下,由右而左的規則’程式和退役順序是
O:\56\56145.PTD 第50頁 線ΤΙ,T3,T4,和T2。圖31舉例說明在時點^的樹結構, 它假定線Τ4在線Τ1退役之前被重設。程式和退役順序 ΤΙ,Τ3,Τ2,和Τ5。圖32舉例說明在時點以的樹結構,它 假定線Τ1在線Τ4被重設之前退役。程式和退役順序是線 Τ3,Τ4,Τ2,和Τ5。圖33舉例說明在時點。的樹結構, 是在線Ti退役,且線Τ4被重設的時間之後。 序是T3,T2,T5 和T6。 w 事件(2)在圖34中說明,它包括巢狀函數。依照時 序’線㈣’Τ2,Τ3,Τ4,和了5的順序產生(開始)。然 而女依程式順序是Ti,Τ5,Τ4,Τ3,和Τ2。在該 , 緩衝器。因此,並非所有的五條線同時存 f。圖35舉例說明在時點”的樹結構,它是在線τ5開始之 别。程式和退役順序是Τ1,Τ4,Τ3,和丁2。線丁5還不是樹 份圖36舉例說明在時點t2的樹結構,它是在 槿中、二V之气。線T2,是在程式順序中最低的,由樹結 後被重新開始。或者;Γ侔被移除的線可在稱 線之所有或部份的指令二Ϊ二執;;樹中被移除的 ^ μ , 在 Λ ;^例’在重設的情況中’ 可繼續直到結束。陣列丨q 8的7把$重°又的線。或者,線 子後的續τ η、岛木ί 1 98的數可在樹的節點中執行。 然線管理邏輯124所決定的程式術/ J树結構中(雖 線被完結。如果;線的程式計數時, 于則那就是程式順序裡的下〜
來說’在圖33中’線”是在樹中依照程式順序 最終退役邏輯1 3 4由樹結構取得資訊以組合陣列丨98, 直,從樹結構的電路。在樹結構和線管理邏輯2 24之其他3 邏輯與最終退役邏輯丨34的邏輯之間,可能有解碼電路。 陣列1 9 8可能不需要。 簡s之,樹結構至少為下列目的而提供資訊:(丨) 退役順序〆2)樹指出程式順序,它被,舉例來說,如 的MjB 178 ’使用;(3)樹藉由指出另一線的起始指令來指 條線的終結點;(4 )樹藉由指示哪一個一 個資源被料指派,W在線資源指派巾。 G-沒有多重線的會祐 圖3舉例說明包括管蝻q n 於處理器50。#而,^ i …0 °處理器1〇0類似 器,而麵31〇是唯_=H 300是唯一的追縱緩衝 重的線。因此,處理^ ^處理器5〇並非設計來處理多 說,追縱緩衝器30 0可需要線管理邏輯。舉例來 需要多重線的特定元件VH衝器114八類似’除了不 存器檔案210將不需要 舉例來說’導線216和輸出暫 包括已廣為人知的電路•種電路可用來偵測猜測錯誤’ MOB H8A,除了不例來說,腦310可能類似於 說,在載入緩衝器中線的特定特點外外。舉例來 他元件可依其在處理器5::要線ID糊位。處理器的其 重線相關之特,點。追縱综^、组態、而有些修改,以移除多 緩衝器3 0 〇與MOB 3 1 0可與各種猜測
五、發明說明(49) 以
令為了最終退役;;誤復原。追縦緩衝器 處理器5〇可*」:;=演而保存在管線之外。 線管理邏賴4可以程式//使用=該情況中’ 或者,能夠使線管理〜邏疋輯二::;式順1 同線1P &理邏輯124失效。在非多重線的情形 ,”使用了追蹤緩衝器11 4中的一個與Μ〇β 1 78中的一 ,。或者,追蹤緩衝器能夠結合以製造更大的追蹤緩衝 Is,而ΜΟΒ能夠結合以製造更大的]^{〇8。 Η.額外的資訊和竇祐.在,丨 。參照圖37,處理器4〇〇是一包括多管線單元4〇2的多處理〔 器(ΜΡ)晶片。多管線單元4〇〇不同於圖2的共享資源管線 108之處,在於多管線單元4〇2的每一個管線〇,!,. w(w 可能與X相等或更多或更少)都包含了一完整管線(舉例來 說’每條管線獨立的重新配置/指派單元)。或是,處理 器400可與處理器50基本上相同或非常不同。其他的處理
器可此包括多官線單元402的一些特徵和管線的一些特 徵。 一 J 在此處提到的每一個處理器,可以包含在各種電腦系統 的一部份中。參照圖3 8,僅係作為範例,處理器5 〇可以是 電腦系統430的一部份。系統430也可包括一第二處理器 434。在處理器50裡面可包括一内建第二層(L2)快取。處 理器50可透過處理器匯流排442與記憶體控制器440溝通。 記憶體控制器4 4 0可透過匯流排4 5 2和4 5 4與主記憶體4 4 6與 週邊設備448溝通。
O:\56\56145.PTD 第53頁 五、發明說明(50) 類似於管線1 08或308(在圖2和3中)的管線可用在不使用 暫存器重新配置的處理器中。在此一情形中,涉及暫存器 重新配置的元件(舉例來說,重新配置/指派單元15〇)可修 改以移除與重新配置相關的特徵。 > 所敘述與舉例說明的電路和細節僅是範例。各種其他 路和細節能夠用在其位置中。再者,各種設計可在大 J,等作取捨。舉例來說,最大運作時脈頻率可能 ’如果在執行路徑(舉例來說,在保㈣,暫存器檔
;二B)中的緩衝器太大的話。在此處舉例說明的元件可 依各種不同的技術而設計與建構。 几旰J =:例說明=二個結構間可能有中間結構(例 :二:構:能不是像所舉例說明是連續的,而2 真實的裝置不必用如此定義的了:明的目的。 如資料請求。在上面被;但不是每個訊號,例 換為邏輯的低訊號,反之亦然^輯的商訊號,它能夠被替 在處理器中舉例說明的元件, 片上。或者,❹,追蹤緩衝可月匕王』在同-處理器晶 片上。 緩衝為可在與執行管線不同的晶 "連接","偶合"等詞,盥 接或直接的偶合,而是可=的術語不限制在直接的連 術語"回應的"和有關的術扭j接的連接或間接的偶合。 術曰的是-訊號或事件在某種程
O:\56\56145.PTD 第54頁 五、發明說明(51) 度上被另一訊號或事件影響,但不必然是完全地或直接 地。如果說明書指出元件"可能","可以",或包括〃最好” 在内,該特定元件不需要被包括在内。 MOB可使用資料相符而非位址相符來偵測失誤猜測。 熟於該項技藝而由此揭露獲益人士,將會發現來自前面 描述的許多其他變化和圖示,可在本發明的範圍中完成。 因此,定義本發明範圍的是以下的申請專利範圍及其中的 任何修正。
O:\56\56145.PTD 第55頁

Claims (1)

  1. 六、申請專利範圍 1. 一種處理 一執行指令 執行; 一在 中與猜 管線中 2 ·如 於執行 些指令 3. 如 退出邏 之指令 4. 如 用在共 5. 如 和 執行管 測錯誤 〇 申請專 管線中 維·持在 申請專 輯,以 的項目 申請專 享資源 申請專 地被 是一第一追蹤 衝器,且其中 6.如申請專 括一暫存器重 隨著被重新執 7 ·如申請專 執行指令與控 過重新配置一 8.如申請專 器,包含: 的執行管線,其中至少—些指令 7婿剩性 線外的追蹤緩衝器,以保存那些 有關的指令由追蹤緩衝器被重新^令,足其 %行糾執行 利範圍第1項中之處理器,其中 的執行完結時受制於一初始退出、些指令其 追蹤緩衝器中直到—最终退出。,但其中這 利範圍第1項中之處理器,進一 追縱緩衝器來解除保存著心^终 利範圍第1項中之處理器,盆中 Μ 的多線中。 執行管線可 利範圍第1項中之處理器,其 緩衝器,且處理器進一步包含額%緩衝器 第一和頦外的追蹤緩衝号追縱不门的迨蹤緩 利範圍第1 π 士 货衡益追蹤不同的線。 新配置單-之处理器,其中執行單元包 行指令。70,且追縱緩衝器提供控制位元伴 利範圍第6項中之處理 制位元的壯$ — 其中依照被重新 鱼沪a古態而疋’暫存器重新配置單元略 二$ 7有關的暫存器。 1範圍苐6項中之處理$,其中依照被重新
    O:\56\56145.PTD I麵
    第56頁 六、申請專利範圍 執行指令與控制位元的狀態而定,暫存器重新配置單元 (1)進行暫存器重新配置,(2)略過重新配置而改用一來 自追蹤緩衝器的實體暫存器識別號碼,或(3)使用一來自 追縱級衝β的值當常數。 9.如申請專利範圍第1項中之處理器,其中執行管線包 括一含有一儲存緩衝器和一載入緩衝器的記億體排序緩衝 器(ΜΟΒ)。 1_0. —種處理器,包含: 一執行指令的執行管線,其中至少一些指令猜測性地 執行;和 一在執行管線之外的追蹤缓衝器,以保存指令和該指令 的執行結果’其中至少一些指令受制於管線中接續執行的 一起始退出’但保持在追蹤緩衝器中直到一最終退出。 11.如申請專利範圍第丨〇項中之處理器,進一步包括伯 測電路’以偵測在指令執行中之猜測錯誤。 、 1 2.如申請專利範圍第丨〇項中之處理器,其中至少 電路的部份包含在追蹤緩衝器中。 ' 'Ί 1 3.如申請專利範圍第1 0項中之處理器,進—步勺 測電路以偵測在指令執行中之猜測錯誤,與重新匕_偵 電路以引發與猜測錯誤有關之指令的重新執行。仃觸發 1 4 ·如申請專利範圍第1 0項中之處理器,其中執A Μ 包括一保存載入與儲存指令的記憶體排序緩衝器,行s線 該等載入與儲存指令不受制於起始退出而維 且其中 序緩衝器中直到最終退出β 、 5己憶體排
    O:\56\56145.FTD 六、申請專利範圍 _ ^ 1 5.如申請專利範圍第1 0項中之處理器,谁一 ,憶體排序緩衝器(_),以保存載入二包括一 =縱緩衝器中的指令可被重新執行、:更存^ 其中執仃單凡包括一重新配置/指派單元,在巷、\測, 存指令第—次通過管線中時指派mob中的項目,# =或儲 重新執行時不解除該項目的指派。的項目但在指令 器1 是6在如執申上專:】範圍第1〇項中之處理器,其中追縱緩衝 管線外的多個追蹤緩衝器中追蹤線的 執行管線同時地執行至少線的部分,其中L你 線附屬於至少另外一條線。 至;—條 輯的控制之下最縱緩衝器中的指令在最終退出邏 線中的執行起始:退:出,'旦-些指令可能是接著執行管 碼以第1項中之處理器’進一步包含一解 指令。、丁s線和追蹤緩衝器同時地由解碼器接收 20. 一種處理器,包人 執;;執:指令的執行心,其中至少一些指令猜測性地被 一在執行管線之外 指令可回應-债測至心蹤緩衝器’以保存指♦,且其中 、失誤猜測由追蹤缓衝器中被重新執 O:\56\56145.PTD 第58頁
    六、申請專利範圍 行,且其中指令維持在追蹤緩衝器中,直到確保它們正確 地被執行。 第59頁 O:\56\56145.PTD
TW087120952A 1997-12-16 1998-12-16 Out-of-pipeline trace buffer for instruction replay following misspeculation TW388811B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/991,269 US6240509B1 (en) 1997-12-16 1997-12-16 Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation

Publications (1)

Publication Number Publication Date
TW388811B true TW388811B (en) 2000-05-01

Family

ID=25537042

Family Applications (1)

Application Number Title Priority Date Filing Date
TW087120952A TW388811B (en) 1997-12-16 1998-12-16 Out-of-pipeline trace buffer for instruction replay following misspeculation

Country Status (11)

Country Link
US (1) US6240509B1 (zh)
EP (1) EP1040421B1 (zh)
JP (1) JP3971893B2 (zh)
KR (1) KR100382126B1 (zh)
CN (1) CN100342349C (zh)
AU (1) AU1911099A (zh)
BR (1) BR9814290A (zh)
DE (1) DE69829778T2 (zh)
HK (1) HK1029194A1 (zh)
TW (1) TW388811B (zh)
WO (1) WO1999031589A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI559221B (zh) * 2012-06-15 2016-11-21 軟體機器公司 實現從載入儲存重新排序與最佳化所導致的推測性轉送錯失預測/錯誤當中復原之方法及系統

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212626B1 (en) 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
US6772324B2 (en) 1997-12-17 2004-08-03 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6412067B1 (en) 1998-08-11 2002-06-25 Intel Corporation Backing out of a processor architectural state
SE9803901D0 (sv) * 1998-11-16 1998-11-16 Ericsson Telefon Ab L M a device for a service network
SE9902373D0 (sv) * 1998-11-16 1999-06-22 Ericsson Telefon Ab L M A processing system and method
SE9901145D0 (sv) * 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
SE9901146D0 (sv) * 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
KR100401443B1 (ko) * 1998-11-16 2003-10-17 텔레폰아크티에볼라게트 엘엠 에릭슨 이벤트를 기반으로한 시스템의 병행 처리
US6571359B1 (en) * 1999-12-13 2003-05-27 Intel Corporation Systems and methods for testing processors
US6658554B1 (en) * 1999-03-09 2003-12-02 Wisconsin Alumni Res Found Electronic processor providing direct data transfer between linked data consuming instructions
EP1050807A1 (en) * 1999-05-03 2000-11-08 Sgs Thomson Microelectronics Sa Memory access in a computer memory
US6463526B1 (en) * 1999-06-07 2002-10-08 Sun Microsystems, Inc. Supporting multi-dimensional space-time computing through object versioning
US7100027B1 (en) * 1999-12-13 2006-08-29 Intel Corporation System and method for reproducing system executions using a replay handler
US6892380B2 (en) * 1999-12-30 2005-05-10 Texas Instruments Incorporated Method for software pipelining of irregular conditional control loops
JP2001209535A (ja) * 2000-01-27 2001-08-03 Toshiba Corp プロセッサの命令スケジューリング装置
US6609247B1 (en) * 2000-02-18 2003-08-19 Hewlett-Packard Development Company Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US6880069B1 (en) * 2000-06-30 2005-04-12 Intel Corporation Replay instruction morphing
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
US7207035B2 (en) * 2001-08-23 2007-04-17 International Business Machines Corporation Apparatus and method for converting an instruction and data trace to an executable program
US7047395B2 (en) * 2001-11-13 2006-05-16 Intel Corporation Reordering serial data in a system with parallel processing flows
US6950924B2 (en) * 2002-01-02 2005-09-27 Intel Corporation Passing decoded instructions to both trace cache building engine and allocation module operating in trace cache or decoder reading state
AU2003231945A1 (en) * 2002-05-31 2003-12-19 Guang R. Gao Method and apparatus for real-time multithreading
US7111148B1 (en) 2002-06-27 2006-09-19 Intel Corporation Method and apparatus for compressing relative addresses
US7941651B1 (en) 2002-06-27 2011-05-10 Intel Corporation Method and apparatus for combining micro-operations to process immediate data
US7103751B1 (en) 2002-06-27 2006-09-05 Intel Corporation Method and apparatus for representation of an address in canonical form
US7010665B1 (en) 2002-06-27 2006-03-07 Intel Corporation Method and apparatus for decompressing relative addresses
US7194603B2 (en) * 2003-04-23 2007-03-20 International Business Machines Corporation SMT flush arbitration
US20040225870A1 (en) * 2003-05-07 2004-11-11 Srinivasan Srikanth T. Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US20040255104A1 (en) * 2003-06-12 2004-12-16 Intel Corporation Method and apparatus for recycling candidate branch outcomes after a wrong-path execution in a superscalar processor
JP2008523456A (ja) * 2004-05-12 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ トレースコプロセッサを備えたデータ処理システム
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7508396B2 (en) 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
WO2007132136A1 (en) * 2006-05-12 2007-11-22 Arm Limited Error detecting and correcting mechanism for a register file
US8930679B2 (en) * 2009-05-29 2015-01-06 Via Technologies, Inc. Out-of-order execution microprocessor with reduced store collision load replay by making an issuing of a load instruction dependent upon a dependee instruction of a store instruction
CN102567137B (zh) * 2010-12-27 2013-09-25 北京国睿中数科技股份有限公司 在分支预测失败时使用rob恢复rat内容的系统和方法
US9612934B2 (en) * 2011-10-28 2017-04-04 Cavium, Inc. Network processor with distributed trace buffers
US9830224B2 (en) * 2013-03-15 2017-11-28 Nvidia Corporation Selective fault stalling for a GPU memory pipeline in a unified virtual memory system
US9710272B2 (en) 2014-04-25 2017-07-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Computer processor with generation renaming
US10209992B2 (en) * 2014-04-25 2019-02-19 Avago Technologies International Sales Pte. Limited System and method for branch prediction using two branch history tables and presetting a global branch history register
US9996354B2 (en) 2015-01-09 2018-06-12 International Business Machines Corporation Instruction stream tracing of multi-threaded processors
CN104657145B (zh) * 2015-03-09 2017-12-15 上海兆芯集成电路有限公司 用于微处理器的重发停靠的系统和方法
GB2572968B (en) * 2018-04-17 2020-09-02 Advanced Risc Mach Ltd Tracking speculative data caching
CN110688160B (zh) * 2019-09-04 2021-11-19 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5153848A (en) 1988-06-17 1992-10-06 Bipolar Integrated Technology, Inc. Floating point processor with internal free-running clock
US5134693A (en) 1989-01-18 1992-07-28 Intel Corporation System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
US5142634A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5309561A (en) 1990-09-28 1994-05-03 Tandem Computers Incorporated Synchronous processor unit with interconnected, separately clocked processor sections which are automatically synchronized for data transfer operations
US5524250A (en) 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
US5546593A (en) 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
US5313634A (en) 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5420990A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Mechanism for enforcing the correct order of instruction execution
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table
US5588126A (en) 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5664137A (en) 1994-01-04 1997-09-02 Intel Corporation Method and apparatus for executing and dispatching store operations in a computer system
US5564028A (en) * 1994-01-11 1996-10-08 Texas Instruments Incorporated Pipelined data processing including instruction trace
US5586278A (en) 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5613083A (en) * 1994-09-30 1997-03-18 Intel Corporation Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions
US5802272A (en) * 1994-12-19 1998-09-01 Digital Equipment Corporation Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5832260A (en) * 1995-12-29 1998-11-03 Intel Corporation Processor microarchitecture for efficient processing of instructions in a program including a conditional program flow control instruction
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5754818A (en) * 1996-03-22 1998-05-19 Sun Microsystems, Inc. Architecture and method for sharing TLB entries through process IDS
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5961639A (en) 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5887166A (en) 1996-12-16 1999-03-23 International Business Machines Corporation Method and system for constructing a program including a navigation instruction
US5881280A (en) * 1997-07-25 1999-03-09 Hewlett-Packard Company Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI559221B (zh) * 2012-06-15 2016-11-21 軟體機器公司 實現從載入儲存重新排序與最佳化所導致的推測性轉送錯失預測/錯誤當中復原之方法及系統

Also Published As

Publication number Publication date
EP1040421A4 (en) 2002-07-17
CN100342349C (zh) 2007-10-10
AU1911099A (en) 1999-07-05
HK1029194A1 (en) 2001-03-23
BR9814290A (pt) 2001-10-30
US6240509B1 (en) 2001-05-29
CN1286771A (zh) 2001-03-07
EP1040421B1 (en) 2005-04-13
JP2002508567A (ja) 2002-03-19
KR20010024750A (ko) 2001-03-26
DE69829778D1 (de) 2005-05-19
JP3971893B2 (ja) 2007-09-05
WO1999031589A1 (en) 1999-06-24
KR100382126B1 (ko) 2003-05-09
EP1040421A1 (en) 2000-10-04
DE69829778T2 (de) 2006-01-26

Similar Documents

Publication Publication Date Title
TW388811B (en) Out-of-pipeline trace buffer for instruction replay following misspeculation
TW425528B (en) Memory system for ordering load and store instructions in a processor that performs out-of-order multithread execution
TW406239B (en) Processor having multiple program counters and trace buffers outside an execution pipeline
TW469406B (en) System for processing clustered branch instructions
CN101965554B (zh) 选择性地提交已执行指令的结果的系统和方法
US8250349B2 (en) Branch prediction control device having return address stack and method of branch prediction
JP3702815B2 (ja) プロセッサ間レジスタ継承方法及びその装置
US5016169A (en) Data processor capable of correctly re-executing instructions
JP5209933B2 (ja) データ処理装置
JPH07501163A (ja) マルチプルスレッド用同期コプロセッサ付データ処理システム
WO1995016959A1 (fr) Dispositif et procede de synchronisation des systemes a antememoire de donnees a plusieurs niveaux
JP2000029699A (ja) プロセサア―キテクチャ
JP2002522841A (ja) 異なる待ち時間を伴う命令のスケジューリング
US6681317B1 (en) Method and apparatus to provide advanced load ordering
TWI352311B (en) Microprocessors, computer systems and methods for
KR20190033084A (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
JPH1021074A (ja) 割り込み制御方式、プロセッサ及び計算機システム
JPH03174626A (ja) データ処理装置
US6725365B1 (en) Branching in a computer system
TW480402B (en) Mechanism for handling failing load check instructions
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
US7603545B2 (en) Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
EP2169539A1 (en) Instruction control device and instruction control method
JP3971780B2 (ja) 命令制御方法
JP3180803B2 (ja) スーパースカラプロセッサ

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent
MM4A Annulment or lapse of patent due to non-payment of fees