TWI251776B - Pipelined microprocessor, apparatus, and method for generating early instruction results - Google Patents

Pipelined microprocessor, apparatus, and method for generating early instruction results Download PDF

Info

Publication number
TWI251776B
TWI251776B TW093127693A TW93127693A TWI251776B TW I251776 B TWI251776 B TW I251776B TW 093127693 A TW093127693 A TW 093127693A TW 93127693 A TW93127693 A TW 93127693A TW I251776 B TWI251776 B TW I251776B
Authority
TW
Taiwan
Prior art keywords
early
instruction
result
microprocessor
pipeline
Prior art date
Application number
TW093127693A
Other languages
English (en)
Other versions
TW200527286A (en
Inventor
Gerard M Col
Original Assignee
Via Tech 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 Via Tech Inc filed Critical Via Tech Inc
Publication of TW200527286A publication Critical patent/TW200527286A/zh
Application granted granted Critical
Publication of TWI251776B publication Critical patent/TWI251776B/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 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
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

1251776 九、發明說明: 【發明所屬之技術領域】 本發明一般係關於一種管線式微處理器,在此特別關 於一種早期指令執行。 【先前技術】 管線式微處理器已為現今微處理器之主流,其係使得 對應於微處理器中不同區塊或是不同管線階段的多個指 令可以在同一時間内執行。Hennessy以及Patterson等人 定義管線為 ''讓多個指令藉重疊而執行的一實現技術〃 (Computer Architecture: A Quantitative Approach, 2nd edition, by John L· Hennessy and David A. Patterson, Morgan Kaufmann Publishers,San Francisco, CA,1966), 以下即是他們對於管線所提的一最佳描述·· 一管線就像是一裝配線,以汽車裝配線為例,包括有 許多步驟,每一步驟係提供一組件用以組裝一汽車,且即 使這些組件是用於組裝不同的汽車所用,每一步驟係與其 他步驟平行進行;以一電腦管線來說,在管線上之每一步 驟係用於完成一命令之一部分,就像裝配線一樣,不同的 步驟係平行地用以完成不同命令的不同部分,每一步驟被 稱為一管線階段(pipe stage)或是一管線節段(pipe segment),這些步驟係一個連接一個而形成一管線,指令 由管線之一端進入,經過許多步驟後,由管線的另一端出 去’就像汽車於裝配線上完成一樣。 丄251776 般來:步微ί,系依據時脈週期(一_行,-又求呪,一指令由微處理哭总 為—時脈週期,以―、、,/° S線之—階段進行到下一階段 上八車裴配線為例來說,如果在裝配線 則裂配員由於沒有汽車可組裝而暫停工作, ㈣己1的產能以及效能將因此而消弱,同樣地,如果一 塹二之步驟由於沒有指令可以進行而在-時脈週期 τ日、’通“冉此狀態為一管線氣泡⑻peiine,則 整個過程的效能將因此而減弱。 •造成管線氣泡的主要原因為分支指令(branch mstructiGn),當-分支指令發生時,處理器必須決定分支 指令的目的位址,並開始在目的位址捉取指令,而非捉取 在分支指令之後的下-循序位址捉取指令。此外,如果分 支扣令是一條件式分支指令(即一分支是否發生決定於是 否出現一特殊狀態),處理器必須判斷分支指令是否發生且 決定目的位址,由於最終決定目的位址與/或分支結果(即 分支是否發生)的管線階段通常對應於捉取指令階段之後 好幾個階段,因此產生氣泡。 為了解決上述之問題,現今的處理器通常於管線中利 用分支預測機制來提早預測目的位址與分支結果,同時微 處理器没s十者亦持績地努力設計以提南分支預測機制預 測的準確度,然,由於分支預測錯誤將會導致浪費大部分 的時間’因此基於上述之隱憂’錯获預測必須於管線中在 分支預測階段之後的循序階段被發現及校正,由於與錯誤 預測相關之損失係關係到在分支預測與分支錯誤預測校 1251776 正階段間許多管線階段的執行,因此,一種能提早校正條 件式分支指令錯誤預測的裝置以及方法實為當前所需。 然而,條件式分支指令所指定之一分支條件如果成 立,則命令微處理器分支走向分支目的位址;否則,微處 理器將繼續提取下一循序之指令,微處理器包含儲存微處 理器狀態的狀態旗標,狀態旗標將被審視以決定條件式分 支指令指定之條件是否成立,因此,為了最終決定一條件 式分支指令是否被錯誤預測,微處理器必須審視最新狀態 旗標的狀態。然而,現今,直到管線的最後,狀態旗標才 被審視以決定分支條件是否成立以及分支預測是否錯 誤,因此,一種能夠在管線中提早產生狀態旗標之裝置以 及方法實為當前所需。 最後,狀態旗標之狀態通常受在條件式分支指令之前 的指令結果所影響。舉例來說,環境可由狀態旗標的一 種一進位旗標(carry flag)所設置,其狀態是由最新的加法 指令結果來決定的。然而,影響狀態旗標之指令結果是由 對應於微處理器下管線階段的執行單位所產生,因此,一 種在管線中能夠提早產生指令結果的裝置以及方法實為 當前所需。 【發明内容】 有鑑於上述課題,本發明係提供一種在一管線式微處 理器中產生早期指令結果的裝置以及方法。此裝置包括早 期執行邏輯電路,其係包含被調整之一位址產生器以進行 1251776 :===::=運算,, 於指令到達位址階段的時間,係早 =生p“又’由 生最终執行結果的最终執行:=r::: 邏輯電路能提早產生指令結果。最μ 干』執仃 暫存器檔。早期執行邏輯電二:二=: 7 ’早期執行邏輯電路進行加、減、乘、、、曰 $運算’如果早期指令不在早期執行邏輯;路== 々子集裡,則早期結果是無效的。 執仃的才曰 本务明之裝置亦包含一早期射左TO «存早期結果之架構式暫存::暫=二=對應於 存器之内容可能是有效或無效的,且:==的暫 路接收各種二: 輯電路本身的輸出:當T:輸期執行邏 :::^ 停,如果址階段’指令將在位址階段被暫 為2的。然而,如果指令只產生一結果而非一位址 二暫停;取而代之的,早期_ 標示為無效的彳效的,則將被 非位址產生扣令所指示的運算元 1251776 元效的,像是由早期暫存器檔提供-有效運管 π ’早期執行邏輯電路執行此指令之 文運π 期結果且累加到早期暫存器擒—有效早 理器係為-標量㈣ar)微處理器。在心例中,此微處 如果指令是-狀態旗標修都指令, =電路將審視早期結果且依據審視結果累:、= 支指令的結果,使微處理器牛式分 位址,就是依據預測結果捉取 a刀支目的 分支指令-併被隨著管線處理。早°預測係與 管線中所對應部份係早於晚早;"刀支权正邏輯電路於 中所對應部份。當分Li分支权正邏輯電路在管線 時,早期分支才六正替雷\達早期分支校正邏輯電路 之確。早期狀態旗標的產生係為回應在分支指令 哭之m 痛電路係於管線巾對應於微處理 i,:二執行單元對應於之部份之前之位 ί是ί:=旗標可;為有效或無效的。當手誠 即f正此Ρ日不錯㈣測,則早期分支校正邏輯電路 八心制°早期狀態旗標的產生係回應在條件式 狀,標修飾指令的早期結果,而早期結 η ’、’、效° §—狀態旗標師指令的結果是無效 11 1251776 的早期狀知、旗標則為無效的。而使早 效的方式,俜續心旦^±早期狀態旗標重新有 …二 域於早㈣支校正邏輯電路之階段德面 的官線階段之所有狀態旗標修飾指令都 式狀態旗標時,藉由拷貝架構式狀 ^ 3 = 而達成。舉例來說’此情形將發生在當如== 預測杈正期間管線被清_ush)時。· :是否校正錯誤預測的-指示將派送下至晚分= =輯電路。當條件式分支指令循序到達晚期分支校正邏輯 電路時,如絲構式狀態旗標料—錯誤制且早期分支 校正邏輯電路沒有校正此錯誤預測,則晚期分支校正邏輯 電路將校正此錯誤預測。 【實施方式】 以下將參照相關圖式,說明依本發明較佳實施例之產 生早期才曰令結果之管線式微處理器、裝置以及方法,其中 為便於說明相同的元件係以相同的參照符號加以說明。 請參照圖1所示,其係顯示依據本發明較佳實施例之 一種管線式微處理器100的方塊示意圖,微處理器1⑼的 管線中包含複數個階段,如圖1所示的12個管線階段。 微處理器100包含一 I階段1〇2(指令提取階段)係用以 提取指令’ I階段102包含一指令快取,用以貯存程式指 令,Ϊ階段102從指令快取或一連結微處理器100的一系 統記憶體提取程式指令,I階段102在一貯存於指令指標 暫存器裡的記憶體位址提取指令,通常地,當指令被提取 12 1251776 後,指令指標將遞增,因此指令可以循序地被提取,然而, 指令指標值可能轉變為一非循序的記憶位址以回應一分 支才曰令並讓被處理器1 〇〇分支走向一分支目的位址,I階 段102亦可包含一分支預測器132,分支預測器132預測 一分支指令是否出現在提取指令流裡、分支指令是否發生 以及當分支指令發生時決定分支指令的分支目的位址,亦 即是,分支預測器132預測一分支指令是讓微處理器1〇〇 分支走向由分支指令指定的一分支目的位址(發生),或是 讓微處理器100去提取及執行在分支指令之後的下一循序 指令(不發生),此分支指令最終將於管線中被解析;I階段 102接收第一與第二控制訊號154以及156 (下面將有更詳 細的描述),其係用以命令I階段102去校正由分支預測器 132產生的一分支指令預測,在一實施例中,分支預測器 132包含一分支目的位址快取(branch target address cache, BTAC),其係貯存之前執行的分支指令的位址及解析之後 的分支目的位址,另外,分支目的位址快取亦貯存預測資 訊且依據之前分支指令歷史的基礎下,來預測分支指令是 否發生,在另一實施例中,包含動態分支歷史表格、靜態 分支預測器及靜態/動態雜合分支預測器’這些在分支預測 領域裡係皆為眾所皆知,在一實施例中,I階段包含 四個管線階段。 微處理器100亦包含一 F階段1 〇4(指令格式化階段)’ 其係與I階段102連結。 在一實施例中,微處理器100的指令集包含變動長度 13 1251776 指令(例如χ86架構式指令集)而非固定長度指令,F階段 104包含一指令格式器,以定義一指令位元組流及將此指 令位元組流分開成不同的指令,特別一提的是,指令格式 器決定在指令位元組流裡每一指令的長度與起始位置,在 一實施例中,F階段104包含一指令隊列用以貯存格式化 之指令。 微處理器100亦包含一 X階段1〇6(轉譯階段),其係 與F階段104連結,在一實施例中,微處理器1〇〇包含一 精簡才日令集控制态(reduced instruction set computer,RISC) 之核心,其係執行一原生指令集,相較於由〗階段1〇2捉 取的系統指令(亦可作為巨指令),原生指令集可作為微指 令,微指令係為較簡單且較易執行的指令,舉例來說,χ86 架構式指令集包含巨指令,或是複雜指令集控制器 (complex instruction set computer,CISC)指令,X 階段 106 包含一指令轉譯器,其係將巨指令轉譯成微指令,指令轉 譯器由F階段104的巨指令佇列擷取已格式化之巨指令, 以及轉譯每一巨指令為至少一個以上之微指令以提供給 管線中其餘的階段,其通常總合來說指的是管線中的執行 階段,在一實施例中,X階段106包含一微指令佇列以貯 存已轉譯之指令,在一實施例中,X階段1〇6包含兩個管 線階段。 微處理器100亦包含一 R階段1〇8(暫存階段),其係 與X階段106及一 A階段112(位址產生階段)連結,R階 段 108 包含一架構式暫存器樓 i34(architected register file, 14 1251776 ARF)及一早期暫存器檔 136(early register file,ERF),架構 式暫存益檔134包含複數個在微處理器100執行程式時顯 而易見的暫存②’特別是程式指令可指示在架構式暫 存器檔134的-暫存器作為—來源運算元,由此接收—輪 入•曰7以運轉產生―結果’同樣地,程式指令可指示在架 構式暫存器檔m的—暫存器作為一目的運算元,指令^ 、=果將=而被寫人,指令可明確地或是暗示地指示暫存 益’在一貫施例中,架構式暫存器们34包含χ86架 暫存器檔的eax、ebx、ecx、歴、㈣指標暫存器 (EBP)、ESI、EDI以及堆疊指標暫存器(ESp)暫存器(如圖3 哭存器檔136包含的暫存器相對應於在架構式 暫存4 134裡的母—暫存H (如圖3所示)。 ^於_式暫存輯134之暫㈣的㈣反應使用 ’然而貯存於早期暫存器檀 因此,當微處=:應;階::= 4匕—a #、 產生一指令結果且該指今 二分木才式暫存器檔134之暫存器為結果目的時,社果 將不允許寫人架構式暫存器檔13 '、、,果 的,即直到指令被侔Ί + & 以日7不再疋預測 綱,一:::ί 完整或是撤回的,相反的,如下 器^ 136, 被保證完整前可能被寫人早期暫存 令結果可能在指令被伴镫一敕一:宜锸述)產生的-指 ⑶,若微處理器100;;;= 皮寫入早期暫存器檔 、疋私々本身及在此指令前沒有指 15 !251776 =然且在ΐ指令前_^ 令不管於生< θ =⑼取終紅在此指令前的每—分支指 令之分I目ίΓ 被校正,以及每—發生的分支指 資料通常被伴確的’又’架構式暫存器檔134的 還在被預測存㈣ 討論,心/有或疋無相’此將在下面作詳細 對的有^ 期暫存器槽136裡的暫存器也包含一相 暫:=二! :18(如圖3所示),以指示貯存於相對的 定:為有效的’當微處理器100被重新設 初μ月暫存器檔136初始化為與架構式暫存器檔134 初始化相同之值。 微處理器⑽管線的R階段⑽亦包含—架構式旗標 1 存 “ architectured EFLAGS 喻⑻ 162 及在 A 階段 加2包含-早期旗標暫存器(e吻eflags] 42, :構式旗標暫存器162及早期旗標暫存器M2貯存狀態旗 v ’其係表示為指令結果的歸屬,像是此結果是否為零, f生為Γ進位或是為負數,在—實施例中,每—狀態旗標 匕含-單—位疋’在—實施例中,架構式旗標暫存器— 包含- Χ86架構式旗標暫存器,其係包含以下的狀態旗 標:溢位旗標(overflow,0F),符號旗標(啦㈣,奶,零 旗標(zero flag,ZF) ’極性旗標(paHty flag,pF),以及進位 旗标(carry flag,CF)(如圖3所示),微處理器1〇〇在其指令 集裡包含條件式指令指示的條件碼,—條件碼指示一或多 個狀悲旗標m若狀態旗標的現時狀態與在條件碼 16 1251776 指定的狀態是相⑽,職件為正確的,於是微處理器· 進行由條件式指令指定之運算,否則,被指定之運算將不 被進行,在此描述-條件式指令為—條件式分支指令的例 子’條件式分支指令在x86架構中若條件符合指令則為一 轉移㈣指令,其係指示—條件錢—置換用以計算一分 支目的位址’-轉移指令的_特別例子為—非零狀態跳躍 (jump if not zero, JNZ)指令’非零狀態跳躍指令指示一非 零狀態碼’若零旗標(ZF)被清除(即非零條件為正確的), 則微處理器i 0 0分支走向由分支指令指示的分支目的位址 ^日令7^發生的)n若零旗標被設立(即 非ν'條件為錯誤的),則微處理器100捉取在條件 下一循序指令(即條件式分支指令不發生),其: =式χ86指令的例子像是SETec、loopcc及c黯cc 才曰令。 此,當微處理器1〇〇之一階段執行一修飾至少 架構式賴暫存器162包含在微處理器丨⑻上執行程 ^夺:看見的狀態旗標’特別是’―條件式程式指令可能 =一條件碼,其係依據在架構式旗標暫存^ 162裡的狀 =,,早期旗標暫存器142包含的狀態旗二 圖,在架構式旗標暫存器162裡的每-狀態旗標(如 ⑶斤不),如同在架構式暫存器槽134及早期暫存器槽 間的關係’貯存於架構式旗標暫存器162裡的 者可看見的微處理ϋ _狀態’然而貯存於早 ,暫存1 Η2的資料可反應—推測的微處理器= m,因 士 - - - ήΚ 個 17 Ϊ251776 2之狀態旗標的指令時,狀態旗標*會在架構式旗標暫 、=器被更新直到指令不再被制’相反的,如下所描 迷在扣7被保證為完整前狀態旗標會在早期旗標暫存器 被更新,特別是,微處理器謂會更新在早期旗標暫 °° 2裡的狀%旗標,在指令被保證為完整之前,以 回應一由早期執行邏輯電路/位址產生器13 期2行單元)所執行的_齡,又,架構式旗㈣;;為16早2 ^身料通常被保證為有效的,然而早期旗標暫存器丨42之 資料可能為有效或無效的,如下詳細討論,因此,在早期 旗‘暫存态142也包含一有效指示器246 (如圖3所示), 示貯存於早期旗標暫存器142的資料是否為有效的, 當微處理器1〇〇被重新設定時,早期旗標暫存器Μ]初始 =與架構式旗標暫存器162初始化相同的資料,如圖3: 貫施例顯示-單-有效指示器246對應早期旗標暫存= ⑷,然❿,另一實施例顯示一有效指示器係保持給在: 期旗標暫存器142中之每一狀態旗標。 A階段112之早期執行邏輯電路/位址產生器 一早期結果及有效指示,其將利用—早期 生 供給™,如下更一 址產生②138係依據輪人運算元執行有效位址叶 架構位祕記憶體存取,輸人運#元例如像是 式暫存為樯134提供的運算元、早期暫存器 /或由指令提供的一連續性運算元(像是―位移9 量)’記憶體位址亦可被指令暗秘地指示,像是依== 18 1251776 二日不之堆$指標暫存器(例如:Esp)或是區段指標暫存 "(例如:EBP)在一堆疊記憶中一位置的-位址,又例如在 一推入或彈出指令中。 微處理器刚亦包含叫階段114’其係與讀段⑴ =連接’ J階段114包含早期分支校正邏輯電路144,早期 ^支校正邏輯電路144依據早期旗標暫存心2之資料且 耩由控制訊號154選擇性地校正分支預測,如下詳細描述。 微處理器刚亦包含一連結於J P皆段U4的D階段 =、-連結於D階段116的G階段U8,以及—連結於G Pj 118的㈣段122,D階段m、G階段ιΐ8,及h 1¾ =22包3 —貝料快取以貯存從系統記憶來的資料,在 ♦ 2例中,資料快取為—f線式快取包含三管線階段及 =要-二時脈週期存取時間’資料快取之存取係利用早期 =订,輯電路/位址產生器138產生的記憶體位址,執行記 憶之-貝料載人運算的指令係於D階段ιΐ6 Η階段122中進行。 微處理器100亦白人 ρ 連結於Η階段122,Ε =階段124(執行階段),其係 抑一 化奴124包含執行指令運算的執行 :二二 146可能包含電路學中像是加、減、 “ 位、㈣、執彳t布林運算之 行超越函數與對數之邏輯 早兀絲 終結果,在-實施财2::產生指令之最 -浮點數單元、-多146包含-整數單元' 伸隹(SSE) ^ a伸集(MMX)單元及-串流延 早兀’由執行單元146產生之指令結果通常 19 1251776 為正確的指令結果,執行單元⑷接收的輸人或是來源, 運算元通常為有效的’執行單元146輪人運算元之來源包 含架構式暫存器檔m、架構式旗標暫存器162、來自資 料快㈣運算元、在指令中明確指示之即刻及連續運算 几,以及由其他管線階段發送之運算元,特別一提的是, 執=單元146不接收來自早期暫存器襠136或早期旗標暫 存器142的預測輸入運算元。 微處理器100亦包含一 S階段126(貯存階段),其係 連結於E階段124, S階段126進行貯存運算到貯存資料(例 如由執行單元146所產生的指令結果),以到資料快取及/ 或系統記憶體,又,S階段126包含晚期分支校正邏輯電 路148,其係依據架構式旗標暫存器IQ之資料且藉由控 制訊號156以校正分支預測,如下詳述說明。 微處理器1〇〇亦包含一 W階段128(結果寫回階段), 其係與s階段126連結,w階段128藉由將指令結果寫回 架構式暫存器檔丨34及架構式旗標暫存器162且經由一結 果匯流排158對微處理器100之架構式狀態作更新。 在—實施例中,微處理器100包含一單一指令派送, 或才不1,或單一執行微處理器,因此,來自指令派送或指 々產生卩6段(1階段102到X階段106)至指令執行階段(r P白#又108到W階段128)之至多一指令在微處理器1〇〇的 每一時脈週期被派送,相反於超標量微處理器,其在每一 時脈週期派送二或多個指令去執行,然而,在此說明的方 法及名置除非特別聲明否則並不限於一標量微處理器,在 I251776 :實,例:’微處理器1⑽包含-排列派送微處理器’因 他程序中指定之順序被派送以執行,不像其 他1理is具衫依順序來料指令的能力。 圖註二^圖2所7^ ’依本發明較佳實施例之—方塊示意 ,梅兄明圖1微處理器100之R階段爾,A階段112, 哭β 階段1G8包含架構式暫存 期暫存器檔136,及架構式旗標暫存器⑹, =旗仏暫存器162由w階段128藉由結果匿流排158 於入·而R階段108接收來自x階段106的指令206, 二二=π令及指令位元本身的解碼資訊, 日不在架構式暫存器檔⑼中其中之—的暫存器 藉由Γί:,2〇6、=的一目的位置,架構式暫存器檔134 八罢不之扣令匯流排158接收由W階段128來之指 器合被爽白二 暫存器檔134以選擇哪-暫存 二= ::;r,==:A; 136用^ S,、純供料—選擇11輸场早期暫存5^ 13 6用以選擇哪一暫存器會被 =仔时才田 給早期暫存H檔136之 …提供 下送至Α階㈣的,暫存= 21 I251776 私=亦可藉由來源運算元標籤訊號2i4指示一或多 爲源運算元,在-實施例中,指令篇彳指示多至三個 ^運算元,指令206藉由來源運算元標籤訊號2M指示 、里^來源運异兀’來源運算元標籤訊號214係提供作為-&輸人至架構式暫存器檔134及早期暫存器槽136以 ::擇哪Γ暫存器將提供作為來源運算元給指令施,指令 即時/持續(例如_置換或偏移)運算元如。 R階段108亦包含有效指示器218對應每一早期暫存 存器(如圖3所示),早期暫存器檔之有效指 二 精由早期結果匯流排152接收來自Α階段112之 一早期結果有效訊號244,早期結果有效訊號244用 新對應於由目的運瞀开热搞 標216選擇出之早期暫存器檔 136之暫存器的有效指示器218。 _ 士階段1G8亦包含—多工器226,其係選擇來源運算 m進入R階段⑽,多工器226接收來自架構 二暫存㈣134及早期暫存器權136的來源運算元輸入, =實施例中,架構式暫存器檔134包含三個讀取接頭, /、中兩個輸出係提供作為多工器226之輸入以在每 週期提供多至兩個來源運算元,在—實施例中 = 器槽136包含_讀取铜,其輸缺供料多工 =輸入以在每-時脈_提供多至兩個來料算元,夕工 器226。亦接收包含在指令施之一即時/持續運算元^ , 多工器226亦接收來自Α階段112之早期結果冰。 又,多工器226接收一與每一運算元輸入相關聯之有 22 ^51776 政位元輸入,與來白旦# 關聯的有效位元係由1暫存器檔136所取得之運算元相 供,與來自A階段112 :暫5器檔有效指示器218所提 聯的有效位元係為==早1結果242運算元相關 器檔m及帅果有核號244,㈣構式暫存 元係為正確的==2222所提供之運算元的有效位 222係總是有效的'、^暫存器檔134及即時/持續運算元 相對應之有效位元俜八::器226選擇出之來源運算元及 及一有效位元暫存提供給-來源運算元暫存器238 唱存态236,以供應給A階段112,在一實 ^例中’來源運算元暫存器238係用以貯存多至三來源運 =兀’且有效位元暫存器236係用以貯存多至三相對應之 有效位元。 一在一實施例中,微處理器100亦包含轉送匯流排(圖未 ,不)’其係前送來自E階段!24及s階段I26且由執行 單元146所產生的結果至R階段1〇8提供作為運算元,轉 il匯抓排係&供作為多工器226之輸入,當R階段指 令指不一來源運算元,其之旗標與在A至H階段的一目的 旗標並不相符,但與在E階段124或S階段126的一目的 旗標相符,則早期旗標產生/控制邏輯電路212係控制多工 器226去選擇轉送匯流排補給最新之結果作為運算元,而 一在轉送匯流排所提供之運算元係通常為有效的。 微處理器100亦包含早期旗標產生/控制邏輯電路 212,早期旗標產生/控制邏輯電路212接收來自架構式旗 心暫存器162作為輸入,早期旗標產生/控制邏輯電路212 23 1251776 亦接收在R階段108及a階段112的指令206作為輪入, 早期旗標產生/控制邏輯電路212亦接收多工器226之輪出 作為輸入,即R階段108之來源運算元及相對應之有效位 元,早期旗標產生/控制邏輯電路212亦接收管線暫存器 232、236及238之輸出作為輸入,即A階段112之指令二 其來源運算元,及相對應之有效位元,早期旗標產生/控制 邏輯電路212亦接收早期結果242作為輸入,早期旗標產 生/控制邏輯電路212亦接收來自對應於a階段112下之 每一官線階段的一旗標修飾指令出現訊號2〇2作為輸入, 在旗‘仏飾彳曰令出現汛號202之一正確值表示相對應階段 有一2飾架構式旗標暫存器162之指令及表示架構式旗標 暫存器162還未被指令更新,當早期旗標暫存器142可能 被U復以及有效化時,旗標修飾指令出現訊號係用以 審疋,如下參照圖5所示之敘述,早期旗標產生/控制邏輯 電路212亦接收一分支校正晚期訊號2砧作為輸入,在分 支校正晚期訊號268之一正確值表示如圖丨之晚期分支校 正=輯電路148校正了—分支錯誤關,其意味著管線是 除的备早期旗標暫存器142可能被修復以及有效化 時,分支校正晚期訊號268亦用以審定,如下參照圖5所 示之敘述,早期旗標產生/控制邏輯電路212亦接收在a 112下的每一管線階段出現的指令目的旗標204作為 ,目的旗標204用以判定在R階段108由一指令206 ^不之-來源運算元應由架構式暫㈣播134、早期暫存 态杈136或A階段112早期結果242來提供,如下參照圖 24 1251776 4所述,在一實施例中,指令206可指示一記憶來源運算 元,即一運算元之位置係由一記憶體位址指示,通常地, 記憶體運算元係出現在系統記憶體裡,或在資料快取,然 而在一實施例中,記憶體運算元可能出現在微處理器100 管線之一下位階段,像是關於具有一符合R階段108指令 記憶體運算元位址之目的記憶體位址的一先前儲存指令 的資料為例,雖然並未顯示,多工器226亦接收記憶體運 算元作為輸入,早期旗標產生/控制邏輯電路212亦接收一 記憶體運算元出現訊號266作為輸入,其代表由指令指示 之記憶體來源運算元是否出現且有效的,以提供予多工器 226,記憶體運算元出現訊號266係用以決定是否需要去 暫停R階段108之指令206及是否早期結果242是有效 的,如以下在圖4所描述。 早期旗標產生/控制邏輯電路212在對於其輸入之反 應產生了許多控制訊號,早期旗標產生/控制邏輯電路212 產生一選擇控制訊號282,其係控制多工器226去選擇對 應指令206之適當的運算元,早期旗標產生/控制邏輯電路 ^12亦產生早期結果有效訊號244,早期旗標產生/控制邏 輯電路212亦產生一早期旗標值262以貯存在早期旗標暫 存器142及一控制訊號264以更新在早期旗標暫存器Μ? 之有效指示器246之值,當微處理器 =標,2之有效指示_之值係= 作為標暫存器142之暫存器及有效指示器246執行 作為官線暫存⑼提供早期旗標及有綠元給】階段 25 1251776 114 ’早期旗標產生/控制邏輯電路212亦產生一暫停訊號 228 ’其係提供給管線暫存器232、234、236及238以暫 停R階段108,在一實施例中,管線暫存器232、234、236 及238係包含多暫存器,當暫停訊號228為正確時,其係 用以保留最近狀態直到下一時脈週期,暫停訊號228的執 行係如下參照圖4詳述。 A階段112包含早期執行邏輯電路/位址產生器138, 其係接收來自來源運算元暫存器238之來源運算元及產生 回應來源運算元暫存器238之早期結果⑽,早期執行邏 輯電路/位址產生器138包含算數邏輯電路單元272、布林 運算邏輯電路單元274及移位邏輯電路單元276,早期執 行邏輯電路/位址產生11 138其係用以產生有效位址給記 憶運轉,早期執行邏輯電路/位址產生器138 ,㈣以執行微 處理器1〇0中指令集裡指令所需要的運算的-子集,因 此,早期執行邏輯電路/位址產生 !之執行料⑷執行之運算的:制以執行可由圖 路/位址產生1 138係用以執行—最期執行邏輯電 子集’為便於了解’在-實施例中,二運异:一 實質上相等於最快被執行之運 Η執仃之運异亦 去執行’例如其可在-單—時相對,的時間 較少之硬體,特別是相較於那些 仃)及需要-相對 址之硬體,在-實施例中,需要去產生記憶體位 執行-加、減、乘及除法;缺:電路單元272係用以 並不用以執行-進位加法或數邏輯電路單元272 成法,在一實施例中, 26 1251776 布林運算賴電路單元274係㈣㈣—布林娜、⑽、 X〇R、NOR、依職延伸移動及依零延伸移動;然而,兴 例來說,布林運算邏㈣路單元274並錢行—位元二 換’在-貫施例中’移位邏輯電路單元276係用以執行一 左移位或右移位H舉例來鄉位邏輯電路單元w 並不執行旋轉或經由進位運算而旋轉,雖然特殊實施例描 述早期執行邏輯電路/位址產生器138執行運算之特殊子 集’但本發明並不僅限於特殊之實施例,且在微處理器觸 設計領域裡之-熟悉技藝者可能已經體會早期執行邏輯 電路/位址產生n 138係依據微處理以⑼之特殊指令集及 目標執行和電路真實階段目標用讀行運算之—特殊子 集,由早期執行邏輯電路/位址產生器138產生之 242係提供給—早期結果㈣li 254貯存及在之後提供給 J階段114。 ;階段U4包含早期分支校正邏輯電路144(如圖1所 示),早期分支校正邏輯電路144接收早期旗標暫存器142 的輸出,早期旗標暫存器142之有效指示器246,以及早 期結果暫存器254,早期分支校正邏輯電路144亦接收在 J P白奴114來自一官線暫存器248之指令,其係用以下送 來自&線暫存器232之指令206,微處理器1〇〇亦包含一 分支預測發生訊號208其係由I階段1〇2、F階段1〇4及又 階段106且經過在R階段1〇8之管線暫存器及在a階 段U2之管線暫存器252被下派送,以及提供給早期分支 校正邏輯電路144,在分支預測發生訊號208中之一正確 27 1251776 值代表在相對應階段之指令為一分支指令,且其被分支預 測器132預測為發生(如圖i所示),即微處理器1〇〇之前 的分支係回應由分支預測器132產生的預測。 早期分支校正邏輯電路144回應其輸入而產生分支控 制訊號154,提供給Ϊ階段1〇2 (如圖1所示),分支控制訊 旎^54包含一分支校正早期訊號258,其係提供給如圖1 所不之晚期分支校正邏輯電路148,當早期分支校正邏輯 =路144校正一分支預測時,分支校正早期訊號258係為 的如下參照圖6敘述,早期分支校正邏輯電路144 之執行係如下參照圖6詳述。 曰請參照圖4所示,一流程解說示意圖顯示依據本發 :^敘述如圖2之裝置的運算,以產生早期結果以及早期 ‘,圖4之流程圖跨越兩個圖示,分別代表為圖4A以 及圖4B,且流程係開始於方塊4〇2。 在方塊402,一指令206指示一來自架構式暫存器檔 13"1之來源運算元到達R階段108,指令藉由來源運算元 旗標214指示一或多個來源暫存器運算元,流程來到決定 方塊404。 在決定方塊404,早期旗標產生/控制邏輯電路212審 查指令類型及決定指令是否為在A階段112必須執行之類 ,,在一實施例中,當指令需要產生一必須提供給在1)階 奴116的資料快取之記憶位址時,指令必須在a階段ιΐ2 執行,若指令必須在A階段112執行,則流程進行到決定 方塊406 ;否則’流程則進行到決定方塊412。 28 !251776 *在決定方塊傷,早期旗標產生/控制邏 ^所有被指令㈣之來源運算元是否 、 記憶趙運算元,早期旗標產生::::電: 體運算施以決定被指示之記憶 疋,即時運算元係總是出現且為有效的,當:::: =運算it時,早期旗標產生/控制邏輯電路212= ^ 下管線階段的目的旗標2。4與來源運算元旗桿2 = =線1之一力舊指令是否產p命定給由來源運算^ 不214指不之架構式暫存器檔134暫存器之結果,若g '、 ==Γ存器檔136,其中早期旗標產生: ,電路212審查被指示之運算元的有效指示器218以決 疋是否運算it為有效的,若在f線之—舊指令還未產生」 命定給由來源運算元旗標214指示之架構式暫存器播134 ,存器之結果,則運算元係出現且有效的因為其將由架構 式暫存器檔m補充,當所有由指令指示之來源運算元出 現且為有效時’流程進行到決定方塊412;否則流程將進 行至方塊408。 在方塊408,早期旗標產生/控制邏輯電路212產生一 在暫停訊號228之正確值以暫停在R階段1〇8之指令,且 在最近時脈週期期間等待來源運算元不是由記憶體被送 到就是寫回架構式暫存器檔134或藉由轉送匯流排成為有 效的,流程進行由方塊408回到決定方塊4〇6。 在決定方塊412,早期旗標產生/控制邏輯電路212比 29 1251776 較由下位管線階段來之目的旗標204與 _ 214去決定在管線之一舊指令是否產二"、开兀/、標 算元旗™指示之架構式暫存器樓:定 果,若是,結果就出現在早期暫存㈣136,雖然=; 能是有效或無效的,若在管線之一孩如人 11守曰令並不產生一命宗 給由來源運算元旗標214指示之架構式暫存器檔⑼ H的“進行到方塊41: 在方塊414,早期旗標產生/控制邏輯電路 在控制訊號上之值去使多工器226選摆士卡 一之暫存來源運算元,其係由二運 提供,當早期結果242在人階段112產生且 階段108及要求來源運算元之同-時脈週期期間時,則多 工器226將選擇早期結果242輪入以提供來源運算元給指 令’多工為226可能由早期暫存器檔136選擇多暫存運算 兀給存運算元之指令’流程進行到方塊418。 在方塊4!6,早期旗標產生/控制邏輯電路2 在控制訊㈣2之值使多工器挪選擇 214 =暫二來源運算元,其係由心 :去、《由標產生/控制邏輯電路212控制多工器 226去&擇由指示之非暫存運算元, 捋續運算元222或是有效提前的運算元,流程進 418 〇 在方塊418,指令進行到A階段u2,μ㈣㈣ 邏輯電路/位址產生器138利用由多工器m選擇之來源運 30 !251776 异元產生早期結果242,特別是,適當的算術邏輯電路單 兀272其中之一,布林運算邏輯電路單元274,或移位邏 輯電路單元276係依據指令類型產生早期結果242,流程 進行到決定方塊422。 在決定方塊422,早期旗標產生/控制邏輯電路212審 查指令類型去決定指令是否為可被早期執行邏輯電路/位 址產生器138執行之類型,因此,假設來源運算元為有效 的,早期旗標產生/控制邏輯電路212決定指令是否對應於 讓早期執行邏輯電路/位址產生器138產生一正確早期結 果的指令子集裡,若是,流程進行至決定方塊428 •,否則, 流程進行到方塊426。 在方塊426,早期旗標產生/控制邏輯電路212在早期 結果有效指示器244產生-錯誤值且更财效指示器218 相對應於由具有錯誤值之目的運算元旗標216指示之早期 暫存器檔136暫存H ’因為早純行邏輯電路/位址產生器 138不用以產生對指令類型之一有效早期結果242,流程 進行到決定方塊434。 在決定方塊428’由於早期執行邏輯電路/位址產生器 138係用以產生一正綠早期結果242,彳期旗標產生/控制 =輯電路m決定是否所有之用.以產生早期結果之運算元 皆為有效的,如果早期旗標產生/控制邏輯電路212在決定 方塊404決定指令必定不在A階段i 12被執行,則指令不 因缺少一運算元而在R階段1〇8被暫停,因此,即使來自 早期暫存器檔136之一暫存運算元係非有效的,指令也不 31 1251776 會在R階段108暫停,同樣的,若一記憶體運算元還未從 記憶體載入,指令不會在R階段108暫停,又,若早期執 行邏輯電路/位址產生器138不用以對指令類型產生一有 效早期要求,指令不會在R階段108暫停,取而代之,早 期結果242係在方塊426被標§己為無效的’以及正確結果 係在之後被E階段124的執行單元146計算,相反的,必 須在A階段112執行之指令,像是計算一位址用以到達在 D階段116資料快取之一指令,若運算元還未可獲得及/ 或未有效時係在R階段108暫停,若所有用以產生早期結 果242之運算元皆為有效,流程進行到方塊432 ;否則, 流程進行到方塊426。 在方塊432,早期旗標產生/控制邏輯電路212在早期 結果有效訊號244產生一正確值,以及由於一有效早期結 果242在方塊418產生’更新有效指示器218相對應於由 具有正確值之目的運算元旗標216指示之早期暫存器檔 36暫存态’又’由目的運算元旗標216指示之早期暫存 恭檔136的暫存器係以有效早期結果242更新,流程進行 到決定方塊434。 在決定方塊434,早期旗標產生/控制邏輯電路Η】審 視指令以決定指令是否為一修飾架構式旗標暫存器162之 ,型’在-實施例中’修飾旗標的指令係依據傷架構式 指令集指示,若指令修飾旗標,則流程進行到方塊 否則,流程終止。 ' , 在方塊436 ’早期旗標產生/控制邏輯電路212依據由 32 1251776 早期執行邏輯電路/位址產生器138及依據指令206產生之 早期結果242產生早期旗標值262,及以早期旗標值262 更新早期旗標暫存器142,在一實施例中,早期旗標產生/ 控制邏輯電路212產生對於溢位旗標(OF)之一正確值,當 符號整數的二補碼運算由早期執行邏輯電路/位址產生器 138執行,以產生由一溢位環境造成的早期結果242(即早 期結果242太大或太小以致不能在目的運算元滿足),否則 即產生一錯誤值;早期旗標產生/控制邏輯電路212豎立符 號旗標(SF)給早期結果242之最有效的位元的值;當早期 旗標產生/控制邏輯電路m產生一對於零旗標之正碟值 早期結果242為零時,否則產生—錯誤值 生/控制邏輯電路212產生一極性旗標之正確; 2。42最不有效的位元包含偶數個1位元,否斷產生—錯 誤值;早期旗標產生/控制邏輯電路212產生對於進位旗^ 之-正魏’當非符號整數運算由早期執 位: 以產生™境造成的早二 242(即开*運异產生—進位或—引用早期結果泌之^ 效位το),否則即產生—錯誤的值,在—實施例中 標產生/控制邏輯電路212只更料早期結果冰影塑的拉 殊狀態旗標’而非產生—狀態旗標全細寫人早^射 實施例中,早期旗標產生/控制邏輯“ 器162被複製,如以下參照圖5所描述,流行 方塊438。 〜Θ决疋 33 1251776 在方塊438,早期旗標產生/控制邏輯電路212決定是 否依據指令之結果修飾旗標,舉例來說,在—實施例中, 某一指令直接修飾旗標,像是χ86架構式stc(集進位)、 CLT(清除進位)、或CMC(補馬進位)指令,以及修飾作用 並不依據指令結果因為除了修飾狀態、旗標外沒有指令結 果’若修賴標絲指令之結果,财料行到決定 442 ;否則,流程結束。 在決定方塊442,早期旗標產生/控制邏輯電路2D 視料結果有效指示器244去決定是否早期結果242是為 有效的,若是,流程結束;否貝,卜指令進行到方塊444。 在方塊444,早期旗標產生/控制邏輯電路212產生— 在控制訊號264之值去更新在早期旗標有效暫存器2邨之 值以代表貯存在早期旗標暫存器142之狀態旗標為I效 的,方塊434到方塊444記錄著運算以累積早期旗標暫存 器142—旦無效之無效值直到早期旗標暫存器142重新有 效(如下參照圖5之描述)’在一實施例中,因為直接修飾 旗標的指令係相對較少被執行,為了簡化早期旗標產生/ 控制邏輯電路212,早期旗標暫存器142係為無效^若遇 及一直接更新一狀態旗標之指令時,流程在方塊444停止。 再凊參照圖5所示,依據本發明之一流程圖說明圖2 裝置之運轉,以早期旗標暫存器142重新貯存以及有效, 圖5包含兩分別的流程圖,每一流程圖描述早期旗標暫存 态142重新貯存以及有效,以回應引發重新貯存以及有效 之一不同情形,參照第一種情形,流程在方塊5〇2開始。 34 丄251776 在方塊502,—八*杜人, 令需要校正,㈣々到達§階段126,若分支指 管是對於分皮β ;^刀預測益I32錯誤預測分支指令,不 預剛錯誤,則日ΓΖ發f預顧誤或是對於分支目的位址 預剛的過程的管z权正邏輯電路148清除在校正錯誤 表沒有架構式面參照圖7所描述,清除管線代 之管線随,亦指令出現對應於11階段108下 暫存器162之指令&=:何在管線中修飾架構式旗標 被清除,II + 士 、、、更新木構式旗標暫存器162或已經 二二因此架構式旗標暫存器162包含最新之狀態, 令正可能為_條件式或非條件式類型的分支指 成& 了 r 旗‘暫存②142可能重新貯細回應其他造 成除了权正分支指令外,例开 流程進行到決定方塊5G4。 除的隋开人 在方鬼504早期旗標產生/控制邏輯電路犯審視分 t校正晚期訊號268,以決定是否S階段126分支指令被 晚=分支,正邏輯電路148所校正,由此表示管線被清除 生錯誤預測之权正,若如此,流程進行到方塊靡; 否則,流程終止。 在方塊506 ’早期旗標產生/控制邏輯電路212複製架 構式旗&暫存⑨162之值到早期旗標暫存器142藉由訊號 262以及標示早期旗標暫存@ 142之值藉由控制訊號 264’由此,重新貯存早期旗標暫存器142為一有效狀態, 流程進行到506。 參照在圖 之第二情況,流程開始在方塊512,在方 35 1251776 =2 ’早期旗標產生/控㈣輯電路212審視旗標修飾扑 :出現訊號202以決定是否所有架構式旗標暫存修飾指二 A階段112下,是否任—,已更新架構式旗標财子 时 若是,流程進行到方塊514 ;否則,流程終止。 在方塊514,早期旗標產生/控制邏輯電路212複製穴 構式旗標暫存器162之值到早期旗標暫存器142藉= = ^62以及標示早期旗標暫存器142之值^控制訊 = 264’由此,錄貯存早誠標暫存器142為—有 您’流程進行到514。 在此說明清除管線係由於在方塊5〇4決定且在s階段 126的一分支校正,為一建立環境給在方塊512 : 定的情形。 决 ―、請在參照圖6所示,依據本發明之一流程解說示意圖 况明微處理器1〇〇之運轉以進行早期I支校正,流程 塊602 Pj始。 ^在方塊602,一條件分支指令到達J階段114,流程進 行到決定方塊604。 β在方塊6〇4,早期分支校正邏輯電路144審視早期旗 才下有放暫存器246之輸出決定是否早期旗標暫存器為 有效的,若是,流程進行到方塊6〇6 :否則,流程終止, 因此,若早期旗標暫存器142為無效的,裝置不進行早期 條件式分支校正。 ^在方塊6〇6,早期分支校正邏輯電路144審視早期旗 ‘暫存器142内容以決定是否由在條件式分支指令之條件 36 1251776 2不,條件是滿足的,流程進行到決定方塊6〇8。 否兩ιί"!方塊6G8 ’早期分支校正邏輯電路144決定是 、抆正條件式分支指令之預測以回應方塊006 件式分去奶入 您/7巩叫。,條 产灸、& 3々需要去校正若有效早期旗標暫存器142之學 足的,像是條件式分支指令應該發生,而分支預測 線j比^!測分支不發生(如由分支預測發生訊號208之下管 去白^ 114形式的一錯誤值指示),即導致微處理器1〇〇 =下一循序之指令;相反的,條件式分支指令需要被 ^正2條件在有效早期旗標暫存器142係不滿足,像是條 义式刀支指令應該不被發生,而分支預測器132預測分支 么生(如由一由分支預測發生訊號208之下管線J階段114 心式的一正確值指示),即導致微處理器100分支到預測分 ^目的位址’如果校正條件式分支指令的預測為必須的, 流程進行到決定方塊612 ;否則,流程終止。 在決定方塊612,已決定條件式分支指令需要校正, I期分支校正邏輯電路144審視分支預測發生訊號208的 B線下J h #又114版本,以決定是否條件式分支指令被預 測發生,如果是,流程進行到方塊616;否則,流程進行 到方塊614。 在方塊614 ’早期分支校正邏輯電路144藉由控制訊 號154導引I階段1〇2去清除對應於j階段丨丨4上的管線 以及分支微處理器100到條件式分支指令的分支目的位 址’在一實施例中,條件式分支指令的分支目的位址係由 在A階段112的早期執行邏輯電路/位址產生器138所產 37 1251776 生,又,早期分支扠正邏輯電路144在下送到晚期分支校 正邏輯電路148之分支校正早期訊號258產生一正確值, 其之使用係參照圖7描述如下,流程在方塊614結束。 在方塊616,早期分支校正邏輯電路144藉由控制訊 5虎1M導引I階段102去清除對應於J階段114以上之管 線,以及分支微處理器100到在條件式分支指令後的下一 · 循序指令,又,早期分支校正邏輯電路144在下送到晚期 刀支杈正邏輯電路148之分支校正早期訊號258產生一正 確值,其之使用係參照圖7描述如下,流程在方塊616結 束。 凊參照圖7,依據本發明之一流程解說示意圖說明微 處理器100之運轉以進行晚期分支校正,流程開始在方塊 702 〇 在方塊702,-條件式分支指令到達§階段126,流 程進行到方塊704。 在方塊7G4 ’晚期分支校正邏輯電路148審視架構# φ 旗^暫存益I62内容以決定是否在條件式分支指令之條件 碼指定之條件為滿足的,流料㈣決定方塊7〇6。 在方塊706,晚期分支校正邏輯電路Mg決定是否需 要去校正回應方塊剔之條件式分支指令的預測,條件式 刀支扣7而要被杈正當在架構式旗標暫存器162之條件為 ,足的,像是條件式分支指令必需已被發生,而分支預測 裔132預測分支還未被發生(如由在分支預測發生指令208 之對應於管線下S階段m版本之—錯誤值指示),即造成 38 1251776 微處理器100去捉取下一循序指令;相反的,條件式分支 指令需要被校正當在架構式旗標暫存器162的條件為非滿 足的,像是條件式分支指令必須還未被發生,而分支預測 裔132預測分支已發生(即由在分支預測發生指令2〇8之對 應於笞線下S階段126版本的一正確值指示),即造成微處 理器100分支到預測的分支目的位址,若需要去校正條件 式分支指令的預測,流程進行到決定方塊7〇8 ;否則,流 程終止。 在決疋方塊708,晚期分支校正邏輯電路148審視分 支校正早期訊號258以決定是否條件式分支指令的錯誤預 測已經由早期分支校正邏輯電路144校正,如果是,流程 終止;否則,流程進行到決定方塊712。 在決定方塊712,已經決定條件式分支指令需要校 正’晚期分支校正賴電路148料分支關發生訊號· 之管線下㈣段⑶去決定是否條件式分支指令被預測發 生’若是’流程進行到方塊716;㈣,流程進行到方塊 714 〇 在方塊716,晚期分支校正邏輯電路148藉由控制訊 號154導引!階段102去清除對應於s階段126以上之管 線,以及將微處理器⑽分支到在條件式分支指令後的下 一循序指令,流程在方塊716結束。 承上所述,描狀微處理器1GM目較於沒有早期執行 痛電路/位址產生器138及早期暫存器檔136所帶來好處 之微處理器_,能夠提早複數個時脈週期提供一之前指 39 1251776 7之一結果作為一暫存運算元給一循序位址產生或非位 址產生指令·,因此減少了所導致的管線氣泡數量,同時亦 減少了每-微處理器100運算主要的成分—指令的平均週 期。、再者,早期結果可以應用於較絲可能的更迅速地更 新狀態旗標’於是更有潛力使條件式指令較先前可能的更 快速執行。又,描述的微處理器1〇〇係相較於沒有早期分 支杈正邏輯電路144提供好處之微處理器,能夠提早複數 個時脈週期校正一非正確預測的條件式分支指令。最後, ,週期頻率微處理器100的要求使得微處理設計者去增加 S線#又的數里,當管線階段的數量增加,所導致的管線 氣泡以等待指令結果及/或狀態旗標更新可能就隨著增 加,同樣的,當管線階段數量增加,校正錯誤預測的分支 指令的延緩可能亦增加,此些因素彰顯了在上述微處理 器、裝置以及方法的好處。 雖然本發明及其目的、特徵及優點已經詳細描述,其 他任何未脫離本發明之精神與範疇實施例也應被包含。舉 例來說,雖然所描述之一微處理器100的實施例實質上與 x86架構相一致,但所描述的裝置及方法並不設限於X% 架構而且可以被應用於各種微處理器1〇〇架構。又,雖然 一實施例描述在其中一條件式分支指令被提早校正,早期 產生狀態旗標的好處可被利用於提早進行其他指令,像是 x86 LOOPcc指令為例,同樣的在此所描述的好處〜樣發 生在轉移指令;或x86 SETcc以及CMOVcc指令可被提早 執行,因此其結果可讓隨後之依據指令可用的。此外,除 1251776 了利用早期結果產生早期狀態旗標值外,早期結果亦可用 以進行早期間接分支指令的分支校正,通常指的是跳躍經 過暫存指令’其係指示分支目的位址為一來源暫存運算元 值。 又’可利用硬體增加本發明之應用範疇。本發明可以 應用在電腦可讀取碼(即電腦可讀取之程式碼、資料等)收 錄在一電腦可用(即可讀取)媒體,電腦碼係用以讓本發明 之功用或構造或兩者得以實施。舉例來說,其係可經由利 用一般的程式語言(即C,c++,JAVA等)、GDSII資料庫、 硬體描述語言(HDL)(例如 Verilog HDL、VHDL、Altera HDL (AHDL))等等、或其他程式及/或電路(即shematic)在 本技藝中可獲得的取得工具。電腦碼可以設置在任何知道 的電腦可用(即可讀取)媒體,例如半導體記憶體、磁碟、 光碟(CD_R〇M、DVD_R〇M等),以及作為一貯存在一電 腦可用(即可讀取)傳輸媒體(即載波或任何其他媒體包括 數位光學或類比媒體)的電腦資料訊號。因此,電腦瑪可 以被傳輸在溝通網上,包括網内與網外。因此可了解本發 明可包含在電腦碼(即一 IP(智慧財產)核心的一部分,像^ 一微處理器核心,或作為一系統階層設計,像是一在晶片 之系統(SOC))以及轉型成硬體作為整體電路製造之—部 刀,又,本發明可以包含作為一硬體以及電腦碼的合併。 ^最後,熟悉本項技藝者應了解可以直接利用本發明揭 露的觀⑽及特殊的實施例作為設計或修飾其他結構以 實現相同於本發狀目的的基礎,任何未脫離本發明 41 1251776 神與範疇,皆係由申請範圍所定義之。 【圖式簡單說明】 圖1為一顯示依據本發明較佳實施例之一種管線式微 處理器的方塊示意圖; 圖2為一顯示如圖1所示之依據本發明較佳實施例之 一種管線式微處理器的R階段、A階段以及J階段之詳細 解說的方塊示意圖; 圖3為一顯示如圖1與圖2所示之依據本發明較隹實 施例之一種管線式微處理器的架構式暫存器檔、早期暫存 器檔、架構式旗標暫存器以及早期旗標暫存器解說的方塊 不意圖, 圖4為一顯示如圖2所示之依據本發明較佳實施例之 一種管線式微處理器產生早期結果以及早期旗標的操作 流程解說示意圖; 圖5為一顯示如圖2所示之依據本發明較佳實施例之 一種管線式微處理器恢復且有效化早期旗標暫存器的操 作流程解說示意圖; 圖6為一顯示依據本發明較佳實施例之一種管線式微 處理器進行早期分支校正的操作流程解說示意圖;以及 圖7為一顯示依據本發明較佳實施例之一種管線式微 處理器進行晚期分支校正的操作流程解說示意圖。 元件符號說明: 42 1251776 100 微處理器 102 I階段 104 F階段 106 X階段 108 R階段 112 A階段 114 J階段 116 D階段 118 G階段 122 Η階段 124 Ε階段 126 S階段 128 W階段 132 分支預測器 134 架構式暫存器檔 136 早期暫存器檔 138 早期執行邏輯電路/位址產生器 142 早期旗樣暫存器 144 早期分支校正邏輯電路 146 執行單元 148 晚期分支校正邏輯電路 152 早期結果匯流排 154 分支控制訊號 156 控制訊號 43 匯流排 架構式旗標暫存器 布林運算邏輯電路 旗標修飾指令出現訊號 目的旗標 指令 分支預測發生訊號 早期旗標產生/控制邏輯電路 來源運算元旗標訊號 目的運算元旗標 有效指示器 即時/持續運算元 多工器 暫停訊號 管線暫存器 管線暫存器 有效位元暫存器 來源運算元暫存器 早期結果 早期結果有效訊號 早期旗標有效暫存器 管線暫存器 管線暫存器 早期結果暫存器 44

Claims (1)

1251776 u Π/'ΚΓ: if?♦〜钩 ;.;i:^ :;ί ^ Μ,·ρ fl].: a碑減.kg露之範,..… 十、申請專利範圍: 1、一種可以產生早期指令結果之管線式微處理器,該管 線式微處理器具有一架構式暫存器檔以及至少用以產 生指令之複數個最終結果之一最終執行單元係包含: 一位址階段,其係管線中較該最終執行單元所對應之 階段早之階段,該位址階段係包含一早期執行單 元,用以在該最終執行單元產生指令之該些最終結 果前產生指令之複數個早期結果;以及 一早期暫存器檔,其係與該早期執行單元連結並且對 應於該架構式暫存器檔,該早期暫存器檔係用以貯 存該些早期結果,且將該些早期結果提供給該早期 執行單元以產生複數個循序指令之早期結果,其中 該架構式暫存器檔只以該最終結果而非該早期結果 作更新。 2、 如申請專利範圍第1項所述之管線式微處理器,其中 φ 該早期執行單元係用以執行該微處理器指令集之一指 令子集。 3、 如申請專利範圍第2項所述之管線式微處理器,其中 由該早期執行單元所執行之該指令子集,係包含複數 個移位指令。 4、 如申請專利範圍第2項所述之管線式微處理器,其中 48 1251776 由該早期執行單元所執行之該指令子集,係包含複數 個移位指令以及複數個布林指令。 5、如申請專利範圍第2項所述之管線式微處理器,其中 由該早期執行單元所執行之該指令子集,係包含複數 個移位指令、複數個布林指令以及複數個算術指令。 $申清專利範圍第i項所述之管線式微處理器,更勺 含"· I 匚"u«排,其係與該早期執行單元連結,並於一第— 週期間提供由該早期執行單元所產生之一第一 ^之弟早期結果給該早期執行單元,以便在 —第二時脈週期間產生一第二指令之一第二早期結 其中該第一時脈週期係緊接在該第二時脈週^ 7 ji·, 專利範圍第6項所述之管線式微處理器,該第 指令係以一管線階段緊接在該第二指令之前。 ^申明專利範圍第1項所述之管線式微處理器,更包 含: 、、°果寫回階段,其係對應於該管線階段中較該最終 執仃單7L所對應位置後面之位置,以該最終執行單 几所產生之該些最終結果來更新該架構式暫存器 !251776 "巾4 早期結果係只對該早期暫存器槽作更 9、 10 11 2請專觀圍第1項所述之管線式微處理n, =期執行單元亦自該早期暫存器檔中取得該些早期 ,以作為運算元來產生複數個記憶位址。 ,申請專利範圍第9項所述之管線式微處理器,其中 =早期執彳了單元係產生複數個堆疊記憶體位置之記φ 思體位址以及複數個非堆疊記憶體位置之記憶位址。 如申清專軸®第丨項所述之管線式微處理哭, ^存於該早期暫存器檔之該早期結果可為^域無 12 13 如申請專鄉圍第丨項所述之管線式微處理哭, 該管線式微處理H係為—標量微處理器。 八如申/f專利範㈣1項所述之管線式微處理器,直中 该管線式微處理II純程式順序料指令。八 如申請專利_第i項所述之管線式微處理器, 复數個非位址結果以及複數個堆疊指 彡早純行單元所產生,且該早期執行單元 50 14 1251776 年月 Ι·Ι_ _|丨丨|_Ι _ ι_ I I — 贫 9修f)正雜頁j 屬於一單一管線階段。 15、 如申請專利範圍第1項所述之管線式微處理器,其中 一電腦程式產品係包含一電腦可讀取的記錄媒體並 用以構成該微處理器,該電腦可讀取的記錄媒體係具 有複數個電腦可讀取之程式碼,其中該電腦程式產品 係與一計算裝置搭配使用。 16、 如申請專利範圍第1項所述之管線式微處理器,其中 ® 一電腦可讀取的記錄媒體係提供給該微處理器,該電 腦可讀取的記錄媒體係具有一電腦可讀取程式碼。 17、 一種在一管線式微處理器可以產生早期指令結果之裝 · 置,用以改善該管線式微處理器之性能,且該管線式 微處理器係具有一架構式暫存器檔,該裝置包含: 一早期執行邏輯電路,其係用以產生指令之複數個早 0 期結果,且產生程序係早於由至少一執行單元對該 指令所產生的複數個晚期結果,而該執行單元係對 應於管線中較該早期執行邏輯電路所對應部份後面 之位置; 一早期暫存器檔,其係與該早期執行邏輯電路連結, 該早期暫存器檔係包含對應於該架構式暫存器檔之 複數個暫存器以儲存該些早期結果,該早期暫存器 檔係具有與每一暫存器連結之一有效指示器,該早 51 1251776 期暫存器檔係用以提供該些早期結果予該早期執行 邏輯電路作為運算元以產生後續之該些早期結果; 以及 一邏輯電路,其係接收該有效指示器,當該早期執行 邏輯電路利用貯存於該早期暫存器檔其中之一之暫 存器中的一運算元來產生一位址,且該有效指示器 指示該暫存器係為無效時,該邏輯電路係暫停此管 線’並且當該早期執行邏輯電路利用貯存於該早期 暫存器檔的該等暫存器之一中的一運算元來產生一 非記憶位址早期結果時,該有效指示器指示該暫存 器係為無效,該邏輯電路便不暫停此管線。 18、 如申請專利範圍第17項所述之裝置,其中該早期執 行邏輯電路係對應於該管線式微處理器之一位址階 段。 19、 如申請專利範圍第17項所述之裝置,更包含: 一暫存器,其係與該邏輯電路連結,該暫存器係依據 該些早期結果累加複數個早期狀態旗標,体以依據 累加於該暫存器中之該早期狀態旗標而致動提早執 行條件式指令。 20、 如申請專利範圍第17項所述之裝置,更包含: 一結果匯流排,連結該早期執行邏輯電路之一輸出到 52 1251776 一多工器之一第一輸入,用以提供自該早期執行邏 輯電路輸出之該些早期結果,該多工器具有一第二 輸入,該第二輸入係連結以接收來自該架構式暫存 器檔之一運算元,該多工器具有一輸出,以便將至 少一運算元從該第一輸入及該第二輸入之任一提供 至該早期執行邏輯電路,俾使在一第一時脈週期期 間,由該早期執行邏輯電路產生一第一早期結果作 為一運算元,其係在緊接於該第一時脈週期後之一 第二時脈週期期間,提供給一第二指令以產生該第 二指令之一第二早期結果。 21、 如申請專利範圍第17項所述之裝置,其中該管線式 微處理器係為一標量微處理器。 22、 一種在一管線式微處理器可以產生早期指令結果之裝 置,用以產生複數個記憶體位址以及複數個早期指令 結果,該裝置包含: 一位址產生器,當一指令指示記憶體位址產生時,該 位址產生器係用以產生一記憶體位址,且當該指令 指示結果產生時,該位址產生器係更用以產生一選 擇式有效結果;以及 一邏輯電路,其係與該位址產生器連結,當該指令指 示記憶體位址產生,及當並非該指令之所有輸入運 算元都是有效且可提供給該位址產生器時,該邏輯 53 1251776 電路便暫停管線,而當該指令指示結果產生,且並 非該指令之所有輸入運算元皆為有效且可提供給 該位址產生器時,該邏輯電路便不暫停管線。 23、 如申請專利範圍第22項所述之裝置,其中該位址產 生器係產生複數個堆疊記憶體位置之記憶體位址以 及複數個非堆疊記憶體位置之記憶體位址。 24、 如申請專利範圍第22項所述之裝置,其中該位址產 生器係屬於一單一管線階段。 25、 如申請專利範圍第22項所述之裝置,其中當該位址 產生器未用以進行該指令所指定的一種運算時,該邏 輯電路產生一指示器以指示該結果為無效。 26、 如申請專利範圍第22項所述之裝置,其中當提供複 數個無效來源運算元給該位址產生器以產生該結果 時,該邏輯電路產生一指示器以指示該結果是無效。 27、 如申請專利範圍第22項所述之裝置,其中該管線式 微處理器係為一標量微處理器。 28、 一種在一管線式微處理器可以產生早期指令結果之方 法,用以避免在該管線式微處理器由於指令間的運算 54 元相依性而產生的暫停,且該管線式微處理器係具有 一架構式暫存器檔,該方法包含: 產生在管線中一位址階段之一第一指令的一第一結 果,其中該第一結果係可能為無效的; 貯存該第一結果於該微處理器之一早期暫存器檔; 藉來自該早期暫存器檔之該第一結果作為一輸入運算 元予一第二指令,以在位址階段產生該第二指令的 一第二結果; 儲存該第二結果於該早期暫存器檔;以及 藉由該早期暫存器檔之該第二結果作為一輸入運算元 予一第三指令,以產生該第三指令之一記憶體位址。 29、 如申請專利範圍第28項所述之方法,更包含: 累加複數個早期狀態旗標以回應該第二結果。 30、 如申請專利範圍第29項所述之方法,更包含: 當該第二結果為無效時,設定該早期狀態旗標亦為無 效。 31、 如申請專利範圍第29項所述之方法,更包含: 判斷一條件式指令所指示之一環境是否滿足該早期狀 態旗標;以及 當該早期狀態旗標為有效且該環境係滿足該早期狀態 旗標,執行由該條件式指令指示之一運算。 ^51776 32 日Kyi丨止朁換頁 二=處理器可以執行產生早期指令結果 -ί 媒體,該記錄媒體包含: 電知可林程式碼,其賴供 器槽以及至少—最線執行i * ^構式暫存 器,該暫存田Γ之該管線式微處理 逆暫存态檔係用以產生指 果,該電腦可讀取程式碼包含:?灵固最終結 第一程式碼,其係提供對 ,對應階段早之位置之二:=該=行 早期執行單元,兹LV产分印 祉尸白奴,其包含一 該最線心取終執行單元產生指令之 取二,產生指令之複數個早期結果 弟一私式碼,其係提供一 久 存器檔俜盥哕早it日’存态檔,該早期暫 暫存器二、:單元連結,且對應該架構式 果給該‘期執:二存該早期結果以及提供該早期結 妹 干d執仃早兀以產生後續複數個指令之早期 :’其中該架構式暫存器播只以該 該早期結果作更新。 _非 56
TW093127693A 2004-02-04 2004-09-14 Pipelined microprocessor, apparatus, and method for generating early instruction results TWI251776B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/771,630 US7185182B2 (en) 2003-02-04 2004-02-04 Pipelined microprocessor, apparatus, and method for generating early instruction results

Publications (2)

Publication Number Publication Date
TW200527286A TW200527286A (en) 2005-08-16
TWI251776B true TWI251776B (en) 2006-03-21

Family

ID=34837863

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093127693A TWI251776B (en) 2004-02-04 2004-09-14 Pipelined microprocessor, apparatus, and method for generating early instruction results

Country Status (3)

Country Link
US (1) US7185182B2 (zh)
CN (1) CN100468323C (zh)
TW (1) TWI251776B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007041999A (ja) * 2005-08-05 2007-02-15 Renesas Technology Corp データ処理装置
US7669039B2 (en) * 2007-01-24 2010-02-23 Qualcomm Incorporated Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction
US7861064B2 (en) * 2008-02-26 2010-12-28 International Business Machines Corporation Method, system, and computer program product for selectively accelerating early instruction processing
US8145874B2 (en) * 2008-02-26 2012-03-27 Qualcomm Incorporated System and method of data forwarding within an execution unit
JP2010122787A (ja) * 2008-11-18 2010-06-03 Panasonic Corp 半導体集積回路及びレジスタアドレス制御装置
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
US8776091B2 (en) 2010-04-30 2014-07-08 Microsoft Corporation Reducing feedback latency
US8745362B2 (en) 2010-06-25 2014-06-03 International Business Machines Corporation Operating system aware branch predictor using a dynamically reconfigurable branch history table
US10275251B2 (en) 2012-10-31 2019-04-30 International Business Machines Corporation Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
US9286068B2 (en) 2012-10-31 2016-03-15 International Business Machines Corporation Efficient usage of a multi-level register file utilizing a register file bypass
US20160170770A1 (en) * 2014-12-12 2016-06-16 Qualcomm Incorporated Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
US10740107B2 (en) * 2016-06-01 2020-08-11 International Business Machines Corporation Operation of a multi-slice processor implementing load-hit-store handling

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU553416B2 (en) 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
JP2667849B2 (ja) 1988-01-06 1997-10-27 株式会社日立製作所 情報処理装置
US5093777A (en) 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
US5487153A (en) 1991-08-30 1996-01-23 Adaptive Solutions, Inc. Neural network sequencer and interface apparatus
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
US5442767A (en) 1992-10-23 1995-08-15 International Business Machines Corporation Address prediction to avoid address generation interlocks in computer systems
US5493669A (en) 1993-03-03 1996-02-20 Motorola, Inc. Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits
US5590368A (en) * 1993-03-31 1996-12-31 Intel Corporation Method and apparatus for dynamically expanding the pipeline of a microprocessor
US6079014A (en) 1993-12-02 2000-06-20 Intel Corporation Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US6021471A (en) 1994-11-15 2000-02-01 Advanced Micro Devices, Inc. Multiple level cache control system with address and data pipelines
US5701426A (en) 1995-03-31 1997-12-23 Bull Information Systems Inc. Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio
US5606682A (en) 1995-04-07 1997-02-25 Motorola Inc. Data processor with branch target address cache and subroutine return address cache and method of operation
US5768610A (en) 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US5663671A (en) * 1996-02-01 1997-09-02 Ametek Aerospace Products, Inc. Electronic circuit including operational amplifier and clamping circuit
US5812813A (en) * 1996-07-29 1998-09-22 Integrated Device Technology, Inc. Apparatus and method for of register changes during execution of a micro instruction tracking sequence
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
US5867724A (en) 1997-05-30 1999-02-02 National Semiconductor Corporation Integrated routing and shifting circuit and method of operation
US6085292A (en) 1997-06-05 2000-07-04 Digital Equipment Corporation Apparatus and method for providing non-blocking pipelined cache
US6085305A (en) 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6209076B1 (en) 1997-11-18 2001-03-27 Intrinsity, Inc. Method and apparatus for two-stage address generation
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
US6047367A (en) * 1998-01-20 2000-04-04 International Business Machines Corporation Microprocessor with improved out of order support
US6148391A (en) 1998-03-26 2000-11-14 Sun Microsystems, Inc. System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
JP3499135B2 (ja) 1998-06-29 2004-02-23 富士通株式会社 情報処理装置
US6343359B1 (en) 1999-05-18 2002-01-29 Ip-First, L.L.C. Result forwarding cache
US6393555B1 (en) * 1999-08-05 2002-05-21 Advanced Micro Devices, Inc. Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6708267B1 (en) * 2000-02-04 2004-03-16 International Business Machines Corporation System and method in a pipelined processor for generating a single cycle pipeline stall
US7028165B2 (en) * 2000-12-06 2006-04-11 Intel Corporation Processor stalling
US6804759B2 (en) * 2002-03-14 2004-10-12 International Business Machines Corporation Method and apparatus for detecting pipeline address conflict using compare of byte addresses

Also Published As

Publication number Publication date
CN1629801A (zh) 2005-06-22
CN100468323C (zh) 2009-03-11
TW200527286A (en) 2005-08-16
US20050182918A1 (en) 2005-08-18
US7185182B2 (en) 2007-02-27

Similar Documents

Publication Publication Date Title
TWI251776B (en) Pipelined microprocessor, apparatus, and method for generating early instruction results
TWI288351B (en) Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
EP1296230B1 (en) Instruction issuing in the presence of load misses
TWI333629B (en) Data speculation based on addressing patterns identifying dual-purpose register
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US9424203B2 (en) Storing look-up table indexes in a return stack buffer
JP3597540B2 (ja) 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置
EP1296229A2 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
US9329868B2 (en) Reducing register read ports for register pairs
TW201241747A (en) Efficient conditional ALU instruction in read-port limited register file microprocessor
KR100507415B1 (ko) 마이크로프로세서내의공유데이터경로를통해정수데이터및부동소수점데이터를통신하기위한장치및그통신방법
TW200525355A (en) Microprocessor and apparatus for performing speculative load operation from a stack memory cache
TW201030613A (en) Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instruction that load a segment register
CN111221576A (zh) 指令执行方法及指令执行装置
US6779104B2 (en) Method and apparatus for pre-processing instructions for a processor
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
US9323532B2 (en) Predicting register pairs
US7900027B2 (en) Scalable link stack control method with full support for speculative operations
TWI273485B (en) Pipeline microprocessor, apparatus, and method for generating early status flags
US7100024B2 (en) Pipelined microprocessor, apparatus, and method for generating early status flags
US20230028929A1 (en) Execution elision of intermediate instruction by processor
US9298459B2 (en) Managing register pairing
US20040128482A1 (en) Eliminating register reads and writes in a scheduled instruction cache