TW200527286A - 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
TW200527286A
TW200527286A TW093127693A TW93127693A TW200527286A TW 200527286 A TW200527286 A TW 200527286A TW 093127693 A TW093127693 A TW 093127693A TW 93127693 A TW93127693 A TW 93127693A TW 200527286 A TW200527286 A TW 200527286A
Authority
TW
Taiwan
Prior art keywords
early
instruction
result
microprocessor
pipeline
Prior art date
Application number
TW093127693A
Other languages
English (en)
Other versions
TWI251776B (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

200527286 九、發明說明: 【發明所屬之技術領域】 本發明一般係關於一種管線式微處理器,在此特別關 於一種早期指令執行。 【先前技術】 管線式微處理器已為現今微處理器之主流,其係使得 對應於微處理器中不同區塊或是不同管線階段的多個指 令可以在同一時間内執行。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),這些步驟係一個連接一個而形成一管線,指令 由管線之一端進入,經過許多步驟後,由管線的另一端出 去,就像汽車於裝配線上完成一樣。 200527286 同步微處理n係依據時脈_ (dGek eyde)來進行,— 般來說’-指令由微處理器管線之—階段進行到下一階段 為-時脈週期,以-汽車裝g己線為例來說,如果在裝配 上之某-步驟’裝配員由於沒有汽車可組裝而暫停工作' 則裝配線的產能以及效能將因此而消弱,同樣地,如果— 微處理器之步驟由於沒有指令可以進行而在一時脈週期 暫停時,通常稱此狀態為一管線氣泡(1)11^111^13111>|^),則 整個過程的效能將因此而減弱。 造成管線氣泡的主要原因為分支指令(branch instruction),當一分支指令發生時,處理器必須決定分支 指令的目的位址,並開始在目的位址捉取指令,而非捉取 在分支指令之後的下一循序位址捉取指令。此外,如果分 支指令是一條件式分支指令(即一分支是否發生決定於是 否出現一特殊狀態),處理器必須判斷分支指令是否發生且 決定目的位址,由於最終決定目的位址與/或分支結果(即 分支是否發生)的管線階段通常對應於捉取指令階段之後 好幾個階段,因此產生氣泡。 為了解決上述之問題,現今的處理器通常於管線中利 用分支預測機制來提早預測目的位址與分支結果,同時微 處理器設計者亦持續地努力設計以提高分支預測機制預 測的準確度,然,由於分支預測錯誤將會導致浪費大部分 的時間,因此基於上述之隱憂,錯誤預測必須於管線中在 分支預測階段之後的循序階段被發現及校正,由於與錯誤 預測相關之損失係關係到在分支預測與分支錯誤預測校 200527286 正階段間許多管線階段的執行,因此,_ & e 件式分支指令錯誤預測的裝置以及方種早彳父正條 然而,條件式分支指令所指定之一只^田别所而。 立,則命令微處㈣分支走向分支目77支條件如果成 &曰的位址;否則,微虛 理器將繼續提取下一循序之指令,料命 ^ 理器狀態的狀態旗標,狀態旗標將被:理裔包3儲存微處 做赛视以決定條件式分 支指令指定之條件是否成立,因此,& 為了最終決定一條件 式分支指令是否被錯誤預測,微處理^
Ab μ a 里名必須審視最新狀態 旗標的狀態。然而,現今,直到營綠^ 的最後,狀態旗標才 被審視以決定分支條件是否成立以 ^ ^ 卜 乂及分支預測是否錯 誤,因此,一種能夠在管線中提早產 〃 , 支狀態旗標之裝置以 及方法實為當前所需。 最後’狀«通條件式分支指令之前 的指令結果所影響。舉例來說’環境可由狀態旗標的一 種〜進位旗標㈣flag)所設置’其狀態是由最新的加法 指令結果來決定的。然而’影響狀態旗標之指令结果是由 對應於微處理裔下官線階段的執行單位所產生,因此,一 種在管線中能夠提早產生指令結果的裝置以及方法實為 當前所需。 【發明内容】 有鑑於上述課題,本發明係提供一種在一管線式微處 理器中產生早期指令結果的裝置以及方法。此裝置包括早 期執行邏輯電路’其係包含被調整之一位址產生器以進行 200527286 指令指定的運算而非產生位址所需的算術運算,早期執行 邏輯電路係對應於微處㈣管線中之-位址產生階段,由 於指令到輕址階段的時間,係早於到達對應於後段管線 且=於產生最終執行結果的最終執行單元,因此早期執行 迷!!電路i提早產生指令結果。最終結果制於更新微處 理f的架構式暫存器檔。早期執行邏輯電路係只執行微處 里裔才曰7集的—指令子集,在一實施例中,早期執行邏輯 電路/位址產生器係被增強以經t地執行進行快速的指 期執行邏輯電路進行加、減、乘、除、移位以及布 八工Γ &果早期指令不在早期執行邏輯電路所執行的指 令子集裡,則早期結果是無效的。 财ίΓ明之裝置亦包含—早期暫存器檔,其係相對應於 果之架構式暫存器檔。在早期暫存器檔裡的暫 *的古内疋有效或無效的,且每—暫存器包含一相 ,重〆_效心71^ °早期執行邏輯電路接收各種來源的輸入 括早期暫存器槽、架構暫存器槽及早期執行邏 期執…羅μΪ輸出。當任―輸人運算元是無效時,則由早 期執仃邏輯電路產生的早期結果為無效的。如果需要一位 :被產生之一指令到達位址階段,指令將在位址階段被暫 庄Α古果而要將等待所有輸人運算元都出現且位址的產 ’’、、::。然而’如果指令只產生一結果而非一位址 Η Γ ?址階段料暫停;取而代之的,早期結果就 讀所有輸人運算元皆出現且有效的,則將被 ' 的°然:而’料位址產生指令所指示的運算元 200527286 有效運算 一有效早 ,此微處 皆出現且有效的,像是由早期暫存器檔提供一 元,早期執行邏輯電路執行此指令之後,即產生 期、=果且累加到早期暫存器檔中。在—實施例中 理器係為一標量(scalar)微處理器。 如果指令是 _ π怨供掃胗飾指令, :電路將審視早期結果且依據審視結果累:早 令。舉例來說,一分支預測器於==行條件式指 支指令的姓果,㈣θ、泉中^早預測條件式分 就是依據預測結果捉取下—循序的指令。 令-併被隨著管線處理。早期分支校 路二 :所,份。當分支指令到達早期分支2 = 及判斷在早期狀態旗標中之㈣條件瑪 :目,丨S^ 疋餘件疋否成立以決定預 ^的^。早期狀態旗標的產生係為回應在分支指令 =的‘令’科期狀態旗標係由早期旗標產生邏輯電路 琴之二產生邏輯電路係於管線中對應於微處理 ;木構式狀態旗標的執行單元對應於之部份之前之位 ==狀態旗標可能為有效或無效的。當早議^ :有效的且指示一錯誤預測,則早期分支校正邏輯電路 ^父正此錯誤預測。早織態旗標的產生係回應在條件式 为支指令之制狀態旗標修飾指令的早期結果,而早期妹 果可能有效或無效。當-狀態旗標修飾指令的結果是盈效 200527286 的’早期狀態旗標則為無效的。而使早期狀態旗標重新有 效的方式’係當對應於早期分支校正邏輯電路之階段後面 的管線階段之所有狀態旗標修飾指令都已經被架構更新 式狀悲旗標時’藉由拷貝架構式狀態旗標到早期狀態旗標 而達成。舉例來說,此情形將發生在當如是在一分支錯誤 預測校正期間管線被清除(flush)時。早期分支校正邏輯電 路是否校正錯誤預測的一指示將派送下至晚期分支校正 4 邏輯電路。當條件式分支指令循序到達晚期分支校正邏輯 電路時’如果架構式狀態旗標指不一錯誤預測且早期分支 _ 校正邏輯電路沒有校正此錯誤預測,則晚期分支校正邏輯 電路將校正此錯誤預測。 【實施方式】 以下將參照相關圖式’說明依本發明較佳實施例之產 生早期指令結果之管線式微處理器、裝置以及方法,其中 為便於說明相同的元件係以相同的參照符號加以說明。 請參照圖1所示,其係顯示依據本發明較佳實施例之 一種管線式微處理器100的方塊示意圖,微處理器100的 管線中包含複數個階段,如圖1所示的12個管線階段。 微處理器100包含一 I階段102(指令提取階段)係用以 提取指令,I階段102包含一指令快取,用以貯存程式指 令,I階段102從指令快取或一連結微處理器1〇〇的一系 統記憶體提取程式指令,I階段102在一貯存於指令指標 暫存器裡的記憶體位址提取指令,通常地,當指令被提取 12 200527286 後,指令指標將遞增,因此指令可以循序地被提取,然而, 指令指標值可能轉變為一非循序的記憶位址以回應一分 支指令並讓微處理器1〇〇分支走向一分支目的位址,I階 段102亦可包含一分支預測器132,分支預測器132預測 一分支指令是否出現在提取指令流裡、分支指令是否發生 以及當分支指令發生時決定分支指令的分支目的位址,亦 即是,分支預測器132預測一分支指令是讓微處理器100 分支走向由分支指令指定的一分支目的位址(發生),或是 讓微處理器100去提取及執行在分支指令之後的下一循序 指令(不發生),此分支指令最終將於管線中被解析;I階段 102接收第一與第二控制訊號154以及156 (下面將有更詳 細的描述),其係用以命令I階段102去校正由分支預測器 132產生的一分支指令預測,在一實施例中,分支預測器 132包含一分支目的位址快取(branch target address cache, BTAC),其係貯存之前執行的分支指令的位址及解析之後 的分支目的位址,另外,分支目的位址快取亦貯存預測資 訊且依據之前分支指令歷史的基礎下,來預測分支指令是 否發生,在另一實施例中,包含動態分支歷史表格、靜態 分支預測器及靜態/動態雜合分支預測器,這些在分支預測 領域裡係皆為眾所皆知,在一實施例中,I階段1〇2包含 四個管線階段。 微處理器100亦包含一 F階段104(指令格式化階段), 其係與I階段102連結。 在一實施例中,微處理器1〇〇的指令集包含變動長度 13 200527286 指令(例如x86架構式指令集)而非固定長度指令,卩階段 104包含一指令格式器,以定義一指令位元組流及將此指 令位元組流分開成不同的指令,特別一提的是,指令格式 器決定在指令位元組流裡每一指令的長度與起始位置,在 一實施例中,F階段104包含一指令隊列用以貯存格式化 之指令。 微處理器100亦包含一 X階段1〇6(轉譯階段),其係 與F階段104連結,在一實施例中,微處理器1〇〇包含一 精間指令集控制器(reduced instruction set computer,RISC) 之核心’其係執行一原生指令集,相較於由I階段1〇2捉 取的系統指令(亦可作為巨指令),原生指令集可作為微指 令,微指令係為較簡單且較易執行的指令,舉例來說,χ86 架構式指令集包含巨指令,或是複雜指令集控制器 (complex instruction set computer,CISC)指令,X 階段 1〇6 包含一指令轉譯器,其係將巨指令轉譯成微指令,指令轉 譯器由F階段104的巨指令佇列擷取已格式化之巨指令, 以及轉譯每一巨指令為至少一個以上之微指令以提供給 管線中其餘的階段,其通常總合來說指的是管線中的執行 階段,在一實施例中,X階段1〇6包含一微指令佇列以貯 存已轉譯之指令,在一實施例中,X階段1〇6包含兩個管 線階段。 微處理器100亦包含一 r階段1〇8(暫存階段),其係 與X階段106及一 A階段112(位址產生階段)連結,R階 段 108 包含一架構式暫存器檔 i34(architected register file, 200527286 200527286 ARF)及一早期暫存器檔136(eariyERF),架構 式暫存器檔134包含複數個在微處理器1〇〇執行程式時顯 而易見的暫存盗,特別是,一程式指令可指示在架構式暫 存盗槽134的一暫存器作為一來源運算元,由此接收一輸 入指令以運轉產生-結果,同樣地,程式指令可指示在架 構式暫存器檔134的-暫存器作為一目的運算元,指令之 =果將達此而被寫人,指令可明確地或是暗示地指示暫存 器,在一實施例中,架構式暫存器# 134包含架 ==的 EAX'EBX、ecx、edx、___ 3、)、ESI、EDI以及堆疊指標暫存器卿)暫存器(如圖3 暫:Γ:β!存器檔136包含的暫存器相對應於在架構式 暫存,134裡的每―暫存器(如圖3所示)。 者可:二式暫存器檔134之暫存器的資料反應使用 二之暫存器的資料可反應-推測的微處理器:Γ =’當微處理器1G()之—階段產生—指令 二入 指定-架構式暫存I!檔134暫 、。I曰々 將不允許寫入架構式暫存器樓^直為=:,結果 的,A即直到指令被保證為完整或是撤回的二測 所描述,-指令在還未被紐能早 j 階段112,其將在以下詳J 產生器 令結果可能在指令被保證完整前被寫 的-指 136 ’若微處理器·蚊指令本身及在此指令^^ 15 200527286 令依然能夠產生—包丨从 „^ 解除,即微;卜’且在此指令前的分支指令皆已被 解除即微處理器100最終決定 令不管發生或是不Μ p則的母分支才曰 令之分支目生被+以及每—發生的分支指 資料通常被彳正確的’又’架構式暫存11檔134的 ==;有效的,然而早期暫存器㈣之資料 f入因1 有效或是無效的,此將在下面作詳細 右:早期暫存器權136裡的暫存器也包含-相 =祕示器218 (如圖3所示),以指示貯存於相對的 2益裡的#料是否為有效的,當微處理器刚被重新設 早期暫存器檔136初始化為與架構式暫存器檔134 初始化相同之值。 微處理器1GG管線的&階段⑽亦包含—架構式旗梯 暫存器(arChiteCtured EFLAGS register)⑹及在 A 階段 112包含-早期旗標暫存器(⑽办肌八⑵代細⑷⑷, 架構式旗標暫存11 162及早期旗標暫存H 142貯存狀態旗 標,其係表示為指令結果的歸屬,像是此結果是否為零, 產生為進位或疋為負數,在一實施例中,每一狀態旗標 包含一單一位元,在一實施例中,架構式旗標暫存器162 包含一 x86架構式旗標暫存器,其係包含以下的狀態旗 標:溢位旗標(overflow, OF),符號旗標(Sign flag,SF),零 旗標(zero flag, ZF),極性旗標(parity flag,PF),以及進位 旗標(carry flag,CF)(如圖3所示),微處理器100在其指令 集裡包含條件式指令指示的條件碼,一條件碼指示一或多 個狀態旗標的一狀態,若狀態旗標的現時狀態與在條件石馬 16 200527286 指定的狀態是相等的,則條件為正確的,於是微處理哭ι〇〇 進行由條料齡減之,㈣,被缺之運算將不 被進行,在此描述一條件式指令為一條件式分支指令的例 子,條件式分支指令在x86架構中若條件符合指令則為一 轉移㈣指令’其係指示-條件碼及—置換用以計算一分 支目的位址,-轉移指令的一特別例子為一非零狀態跳躍 (J職P if not zero, JNZ)指令,非零狀態跳躍指令指示一非 零狀態碼,若零旗標(ZF)被清除(即非零條件為正確的), 貝:微處理器100分支走向由分支指令指示的分支目的位址 ΡΙΓ式分支指令是發蝴;㈣,若《標被設立(即 非零條件為錯誤的),則微處理器丨⑻捉取在條件式分奸 :::的下一循序指令(即條件式分支指令不發生),其: ,^式_指令的例子像是SETcc、L〇〇Pcc及CMOb 2式旗標暫抑162包含在微處理器刚上執行程 =夺可看見的狀態旗標,特別是,—條.件式程式指令 = 在架構式旗標暫存器162崎 :對:ί 旗標暫存器142包含的狀態旗標,係 圖3 旗標暫存器162裡的每一狀態旗標(如 彳不),如时架構式暫存器槽134及早期暫存哭伊 反應ΓΓ關係’貯存於架構式旗標暫存器162裡的“ 的^處理111GG狀態’然而貯存於早期 心因此,當微處理器觸之一階段執行一修飾 = 17 200527286
以ΐ之狀態旗標的指令時,狀態旗標不會在架構式旗標暫 存盗162被更新直到指令不再被預冑,相&的,如下所描 述,在指令被保證為完整前狀態旗標會在早期旗標暫存= 14^被更新,特別是,微處理器議會更新在早期旗標暫 存盗142裡的—狀態旗標,在指令被保證為完整之前,以 回應由早期執行邏輯電路/位址產生器138(亦被稱為早 '月執行單元)所執行的一指令,又,架構式旗標暫存器162 =貝料通常被保證為有效的,然而早期旗標暫存器142之 資料可能為有效或無效的,如下詳細討論,因此,在早期 旗標暫存器142也包含一有效指示器246 (如圖3所示), 示貯存於早期旗標暫存器142的資料是否為有效的, 备微處理器觸被重新設定時,早期旗標暫存器U2初始 化與架構式旗標暫存器162初始化相同的資料,如圖3 ^ 『知例顯示-單-有效指示器246對應早期旗標暫存器
:2,然而,另一實施例顯示一有效指示器係保持給在; 4旗標暫存器142中之每一狀態旗標。 一 A階段112之早期執行邏輯電路/位址產生器 、早期結果及有效指示,其將利用一早期結果匯流排 =提供給R階段108,如下更詳細描述,早期執行讀 ^路/位址產生器138係依據輪入運算元執行有效位, ^產生S己憶體位址供§己憶體存取,輸入運皙 =構式暫存器槽⑼提供的運算元、早期‘器槽二 旦或由指令提#的-連續性運算元(像是—位移或儀 里记憶體位址亦可被指令暗示性地指示,像是依據一 18 200527286 示性指示之堆疊指標暫存n(例如:Esp)或是區段指標暫存 器(例如獅)在-堆疊記憶中一位置的一位址又例如在 一推入或彈出指令中。 微處理器_亦包含—;階段114,其係與讀段⑴ 相連接段114包含早期分支校正邏輯電路144,早期 分支校正邏輯電路144依據早期旗標暫存H !42之資料且 藉由控制訊號154選擇性地校正分支賴,如下詳細描述。 微處理胃100亦包含一連結於J階段114 # D階段 U6、-連結於D階段116的G階段ιΐ8,以及—連結於g 階㈣的Η階段122,D階段U6、g階段ιΐ8,及Η Ρ白=22 l 3貝料快取以貯存從系統記憶來的資料在 實%例中’貞料快取為—管線式快取包含 週期存取時間’資料快取之存取係利用早 執订邏輯電路/位址產生器138產生的記憶體位址,執行記 算的指令係於D階段116,G階段118及 Η階段122中進行。 微處理器1〇〇亦白人 ρ 連# H _ 17/包3 一 E階段124(執行階段),其係 仏122 ’ E階段124包含執行指令運算的執行 單元146,執行單元 灯”連异的執仃 乘、除、移位、旋Π 電路學中像是加、減、 行超越函數與對數仃布林運算之邏輯電路單元及執 終結果,在—實=電路單元料’以產生指令之最 -浮點數單元、—多料執行單^ 146包含—整數單元、 伸集⑽)單元,ΓΓ料(丽)單元及—串流延 由執行單元146產生之指令結果通常 19 200527286 為正確的指令結果,執行單幻46接㈣輸人或是來源, =元通常為有效的’執行單元146輸入運算元之來源包 3木構式暫存134、架構式旗標暫存器162、來自資 料快取的運算元、在指令中明確指示之即刻及連續運算 兀,以及由其他管線階段發送之運算元,特別一提的是, 執行單元146不接收來自早期暫存料136或早期旗標暫 存器142的預測輸入運算元。 微處理器1GG亦包含-S階段126(貯存階段),其係 連結於E階段124,3階段126進行貯存運算到貯存資料(例 如由執行單元146所產生的指令結果),關資料快取及/ 或系統5己憶體’又’ s P皆段126包含晚期分支校正邏輯電 路148,其係依據架構式旗標暫存器〖π之資料且藉由控 制成號156以校正分支預測,如下詳述說明。 微處理器100亦包含一 w階段128(結果寫回階段), 其係與S階段126連結,W階段128藉由將指令結果寫回 术構式暫存裔檔134及架構式旗標暫存器162且經由一結 果匯流排158對微處理器100之架構式狀態作更新。 在一實施例中,微處理器100包含一單一指令派送, 或標量,或單一執行微處理器,因此,來自指令派送或指 令產生階段(I階段102到x階段1〇6)至指令執行階段㊉ 階段108到W階段128)之至多一指令在微處理器1〇〇的 母一蚪脈週期被派送,相反於超標量微處理器,其在每一 枯脈週期派送二或多個指令去執行,然而,在此說明的方 法及裝置除非特別聲明否則並不限於一標量微處理器,在 200527286 一實施例中’微處理器100包含一排列派送微處理器,因 此,指令是依在程序中指定之順序被派送以執行,不像其 他微處理器具有不依順序來派送指令的能力。 明參考圖2所示,依本發明較佳實施例之—方塊示意 圖詳細說明圖1微處理器10〇iR階段1〇8,A階段112, 及J階段114’如圖i所示,尺階段應包含架構式暫存 器檔134’早期暫存器# 136’及架構式旗標暫存器162, 架構式旗標暫存器i 6 2自W階段(2 8藉由結果匿流排i 5 8 作更新’而R階段刚接收來自χ階段1 〇6的指令篇, 指令施可能包含關於指令及指令位元本身的解碼資訊, 種類’例如:加法或分支等,指令亦可能 =一旗U示-目的運算元位置,特別是,目的運算元 在;構式暫存器檔134中其中之-的暫存器 _由κ果的一目的位置,架構式暫存器檔134 :二所:之指令匯流排158接收由謂段128來之指 二目的運算元旗標278提供作為一選擇 由、·、。果匯流排158給架構式 , 器會被來自結果匯流排158心田134以選擇那一暫存 器槽136接收藉由早期匯結果作更新’早期暫存 之—早期結果242(如圖^亍二,且來自讀段⑴ 元旗標216 ’其係提供作為二夕_包含-目的運算 136用以選擇哪—暫存擇讀人給早期暫存器檔 給早期暫存器檔136之目/期結果242作更新’提供 2〇6下送至A階段u ^^旗標216係來自將指令 b線暫存器232。 200527286 該指令亦可藉由來源運算元標藏訊號2 之來源?算元,在-實施例中,指令寫可指示;至= 异7G ’指令2〇6藉由來源運算元標 固 =輸:;架構式暫存器㈣及早期暫 ί可r fΐ將提供作為來源運算元給指令206,指- 亦可♦日不一即時/持續(例如一置換或偏移)運算元222 7 R階段⑽亦包含錢指暫 器檔136之暫存5|(如闯1 α ^干期暫存 示)’早期暫存11檔之有效指 *由早期結果1流排152接收來自Ap^ u -早期結果有效訊號244,早期結果有效 新對應於由目的運算元旗標216選擇出之早= 之暫存器的有效指示器21^ ,暫存态才备 R P皆段108亦包含_多工器226, 元讓指令206進入R階段刚,多工器3 ==源運算 :暫存器檔134及早期暫存器檔136的來 ::構 =實施例中’架構式暫存器檔134包二: 其中兩個輸出係提供作為多工器226之輪 ,貝 週期提供多至兩個來源運算元,在一實施例中,:‘, =m包含兩個讀取接頭’其輸出提供作為多工哭2:6 ^輸入以在每-時脈週期提供多至兩個來 Γ26亦接收包含在指令之-即時/持續運算元222 夕工器226亦接收來自讀段⑴之早期結果242。 又,多工器226接收一與每一運算元輸入相關聯之有 22 200527286 效位元輸入,與來自 關聯的有效位元係由早月暫/^_讀136所取得之運算元相 供,與來自A崎112早=^财效㈣11 218所提 聯的有效位元係為;:二早期結果242運㈣ 哭* 果有效訊號244,由架構式暫存
Mm*即時/持續運算元2 元係為正確的,即¥ Μ、之運π的有效位 2梅是有暫編m及即時/持續運算元 相對應之有效位二C器226選擇出之來源運算元及 芬一 h 係分別提供給—來源運算元暫存器238 m d/位几暫存器236 ’以供應給A階段112,在一實 =’來源運算㈣存器238係用以貯存多至三來源運 =’且有效位元暫存器说係用以貯存多至三相對應之 有效位元。 g 一 只靶例中’微處理器100亦包含轉送匯流排(圖未 1不’其係前送來自精段124及s階段126且由執行 二、$46所產生的結果至R階段1〇8提供作為運算元,轉 f =二排係提供作為多工器226之輸入,當r階段1卯指 π t不一來源運算元,其之旗標與在A至H階段的一目的 旗,並不相符,但與在E階段124或S階段126的一目的 j‘相符,則早期旗標產生/控制邏輯電路212係控制多工 器226去選擇轉送匯流排補給最新之結果作為運算元,而 在轉送匯流排所提供之運算元係通常為有效的。 U處理裔1 00亦包含早期旗標產生/控制邏輯電路 2:2早期旗標產生/控制邏輯電路212接收來自架構式旗 Λ 存2 162作為輸入,早期旗標產生/控制邏輯電路212 200527286 亦接收在R階段108及A階段112的指令206作為輪入, 早期旗標產生/控制邏輯電路212亦接收多工器226之輸出 作為輸入,即R階段108之來源運算元及相對應之有效位 元,早期旗標產生/控制邏輯電路212亦接收管線暫存器 232、236及238之輸出作為輸入,即A階段112之指令, 其來源運算元,及相對應之有效位元,早期旗標產生/控制 邏輯電路212亦接收早期結果242作為輸入,早期旗標產 生/控制邏輯電路212亦接收來自對應於a階段112下之 每一管線階段的一旗標修飾指令出現訊號2〇2作為輸入, 在旗標修飾指令出現訊號202之一正確值表示相對應階段 有一修飾架構式旗標暫存器162之指令及表示架構式旗標 暫存器162還未被指令更新,當早期旗標暫存器142可能 被修復以及有效化時,、旗標修飾指令出現訊號2〇2係用以 審定,如下參照圖5所示之敘述,早期旗標產生/控制邏輯 電路212亦接收-分支校正晚期訊號268作為輪入,在分 號⑽之一正確值表示如圖1之晚期分支校 、輯電路148权正了-分支錯誤預測,其意味著管線是 被清除的,當早期賴暫抑142可能被修復===
時,分支校正晚期訊號268亦用以審定,如下參照圖5所 不之敘述’早期旗標產生/控制邏輯電路212亦接收在A 階段112 了的每一管線階段出現的指令目的旗標2 〇 4作為 輸入,目的旗標204用以判定在 ·、、' 力疋隹R P白段108由一指令2〇6 一來源運异元應由架構式暫存器檔134、早期暫存 器稽136或A階段112早期結果祀來提供,如下參= 24 200527286 4所述,在一實施例中,指令206可指示一記憶來源運算 元,即一運算元之位置係由一記憶體位址指示,通常地, 吕己憶體運异元係出現在系統記憶體裡,或在資料快取,然 而在一實施例中,記憶體運算元可能出現在微處理器1〇〇 管線之一下位階段,像是關於具有一符合R階段108指令 δ己憶體運鼻元位址之目的記憶體位址的一先前儲存指令 的資料為例’雖然並未顯示,多工器226亦接收記憶體運 算元作為輸入’早期旗標產生/控制邏輯電路212亦接收一 記憶體運算元出現訊號266作為輸入,其代表由指令指示 之5己憶體來源運异元是否出現且有效的,以提供予多工器 226,記憶體運算元出現訊號266係用以決定是否需要去 暫停R階段108之指令206及是否早期結果242是有效 的,如以下在圖4所描述。 早期旗標產生/控制邏輯電路212在對於其輸入之反 應產生了許多控制訊號,早期旗標產生/控制邏輯電路212 產生一選擇控制訊號282,其係控制多工器226去選擇對 應指令206之適當的運算元,早期旗標產生/控制邏輯電路 2。12亦產生早期結果有效訊號244,早期旗標產生/控制邏 輯,路212亦產生-早期旗標值262以貯存在早期旗標暫 存器142及一控制訊號264以更新在早期旗標暫存器Μ] 之有效指示器246之值,當微處理器被重新設定時在早期 旗標暫存II 142之有效指示器246之值係開始化為一有效 值早产旗標暫存ϋ 142之暫存器及有效指示器246執行 作為官線暫存器以提供早期旗標及有效位元給】階段 25 200527286 114 ’早期旗標產生/控制邏輯電路212亦產生一暫停訊號 228,其係提供給管線暫存器232、234、236及238以暫 停R階段108,在一實施例中,管線暫存器232、234、236 及238係包含多暫存器,當暫停訊號228為正確時,其係 用以保留最近狀態直到下一時脈週期,暫停訊號228的執 行係如下參照圖4詳述。 · A階段112包含早期執行邏輯電路/位址產生器138, 一 其係接收來自來源運算元暫存器238之來源運算元及產生 回應來源運算元暫存器238之早期結果242,早期執行邏 輯電路/位址產生器138包含算數邏輯電路單元272、布林 運算邏輯電路單元274及移位邏輯電路單元276,早期執 行邏輯電路/位址產生器138其係用以產生有效位址給記 憶運轉,早期執行邏輯電路/位址產生器138亦用以執行微 處理器100中指令集裡指令所需要的運算的一子集,因 此,早期執行邏輯電路/位址產生器138係用以執行可由圖 1之執行單元146執行之運算的一子集,早期執行邏輯電 φ 路/位址產生1 I38制以執行—最常被執行之運算的一 子集,為便於了解,在-實施例中,最常被執行之運管亦 實質4等於最快被執行之運算(即需要相對㈣^間^ 執行例如其可在一單一時脈週期被執行)及需要一相對 “ 較少之硬體,特別是相較於那些已經需要去產生記憶體位 址=硬體,在-實施例中,算數邏輯電路單元272係用以 執行加、減、乘及除法;然而,算數邏輯電路單元 並不用以執行-進位加法或是引入減法,在一實施例中, 26 200527286 布林運算邏輯電路單元274係用以執行一布林and、〇R、 XOR、NOR、依訊號延伸移動及依零延伸移動;然而,舉 例來說,布林運算邏輯電路單元274並不執行一位元交 換,在一實施例中,移位邏輯電路單元276係用以執行一 左移位或右移位;然而,舉例來說移位邏輯電路單元276 並不執行旋轉或經由進位運算而旋轉,雖然特殊實施例描 述早期執行邏輯電路/位址產生器138執行運算之特殊子 集’但本發明並不僅限於特殊之實施例,且在微處理器1〇〇 設計領域裡之一熟悉技藝者可能已經體會早斯執行邏輯 電路/位址產生器138係依據微處理器1〇〇之特殊指令集及 目標執行和電路真實階段目標用以執行運算之一特殊子 集,由早期執行邏輯電路/位址產生器138產生之早期結果 242係提供給一早期結果暫存器254貯存及在之後提供給 J 階段 114。 了階段114包含早期分支校正邏輯電路144(如圖1所 示)’早期分支校正邏輯電路144接收早期旗標暫存器142 的輸出,早期旗標暫存器142之有效指示器246,以及早 期結果暫存H 254,早期分支校正邏輯電路144亦接收在 ”皆段/14來自-管線暫存器248之指令,其係用以下送 來自管線暫存器232之指令2〇6’微處理器刚亦包含一 分支預測發生訊號208其係由】階段1〇2、ρ階段1〇4及χ 階段106且經過在R階段1〇8之管線暫存器234及在a階 段112之管線暫存器252被下派送,以及提供給早期分支 校正邏輯電路144 ’在分支預測發生訊號施中之一正確 27 200527286 值代表在相對應階段之指令為—分支指令,且 :器:32預測為發生(如圖】所示),即微處理器‘ 的分支係回應由分支預測器132產生的預測。 早期分支校正邏輯電路144回應其輪入而產生分 J 一提:給!階段,(如圖丨所示),分支控制: JU ^ 3分支校正早期訊號258 ,並俜搵供认如 正邏輯電請’當早期二輯1 正確的,分支預測時,分支校正早期訊號258係為 , 下參照® 6敘述,早期分支校正邏輯電路144 之執行係如下參照圖6詳述。 明,4所示,—流程解說示意圖顯示依據本發 ^敘心圖2之裝置的運算,以產生早期結果以及早期 丄,圖4之流程圖跨越兩個圖示,分別代表為圖4a以 及圖4B ’且流程係開始於方塊‘ο]。 在方塊402 ’ -指令2〇6指示一來自架構式暫存器樓 =之來源運算元到達R階段⑽’指令藉由來源運算元 旗標214指示一或多個來源暫存器運算元,流程來到決定 方塊404。 ' 在決定方塊404 ,早期旗標產生/控制邏輯電路212審 查指令類型及決定指令是否為在A階段112必須執行之類 型,在一實施例中,當指令需要產生一必須提供給在1)階 段116的資料快取之記憶位址時,指令必須在A階段112 執行,若指令必須在A階段112執行,則流程進行到決定 方塊406 ;否則,流程則進行到決定方塊412。 28 200527286 在決定方塊娜,早期旗標產生/控制邏輯電路212決 定所有被指令指示之來源運算元是否出現且為有效的,= 指令指示一記憶、體運算元,+期旗標產生/控制邏輯電路 212審查記憶體運算元出現訊號266卩決定被指示之記憶 體運算元是否出現且為有效的,若指令指示—即時運算 元,即時運算元係總;^出現且為有效的,當指令指示一^ 存器運算元時’早期旗標產生/控制邏輯電路212比較來自 下管線階段的目的旗標204與來源運算元旗標214以決定 在管線中之-舊指令是否產生—命定給由來源運算元旗 標214指示之架構式暫存器檔134暫存器之結果,若是, 結果將出現在早期暫存輯136,其中早期旗標產生/控制 邏輯電路212審查被指示之運算元的有效指示器· 218以決 疋是否運算7L為有效的,若在管線之一舊指令還未產生一 咋疋給由來源運算元旗標214指示之架構式暫存器檔i 34 暫存器之結果,則運算元係出現且有效的因為其將由架構 式暫存器植134補充’當所有由指令指示之來源運算元出 現且為有效時,流程進行到決定方塊412 ;否則流程將進 行至方塊408。 在方塊408 ’早期旗標產生/控制邏輯電路212產生一 在暫停訊號228之正確值以暫停在r階段ι〇8之指令,且 在最近時脈週期期間等待來源運算元不是由記憶體被送 到就是寫回架構式暫存器檔134或藉由轉送匯流排成為有 效的’流程進行由方塊4〇8回到決定方塊406。 在決定方塊412,早期旗標產生/控制邏輯電路212比 29 200527286 較由下位管線階段來之目的旗標2G4 214去歧在管線之-舊指令是否產生 算元;?,所指示之架構式暫存器檔134暫存i二 果,右疋,結果就出現在早期暫存器 A匕Η 士 Xa 校136 ’雖然結果可 月,疋有效U的,若在管線之—f指令並不產生 給由來源運算域標214指示之架構式暫存_134暫^ 器的結果’錄進行到方塊416; ^職程進㈣方塊· 在方塊414,早期旗標產生/控制邏輯電路212產生一 在控制訊號上之值去使多卫器226選擇由來源運算元旗標 214指不之暫存來源運算元’其係由早期暫存器槽⑼所 提供’當早期結果242在A階段112纟生且在指令到達& 階段⑽及要求來源運算元之同—時脈週__,❹ 工器226㈣擇早期結果242輸人以提供來源運算元給指 令,多工器226可能由早期暫存器檔136選擇多暫存運算 元給一指示多暫存運算元之指令,流程進行到方塊418。 在方塊416,早期旗標產生/控制邏輯電路si]產生一 在控制訊號282之值使多工器226選擇由來源運算元旗標 214指示之暫存來源運算元,其係由架構式暫存器檔134 所提供,又,早期旗標產生/控制邏輯電路212控制多工器 226去選擇由指令指示之非暫存運算元,若有,像是即時/ 持續運算元222或是有效提前的運算元,流程進行到方塊 418。 在方塊418 ’指令進行到a階段112,在此早期執行 邏輯電路/位址產生器138利用由多工器226選擇之來源運 30 200527286 算元產生早期結果242,特別是,適當的算術邏輯電路單 元272其中之一,布林運算邏輯電路單元274,或移位邏 輯電路單元276係依據指令類型產生早期結果242,流程 進行到決定方塊422。 在決定方塊422,早期旗標產生/控制邏輯電路212審 查指令類型去決定指令是否為可被早期執行邏輯電路/位 址產生器138執行之類型,因此,假設來源運算元為有效 的,早期旗標產生/控制邏輯電路212決定指令是否對應於 讓早期執行邏輯電路/位址產生器138產生一正破早期結 果的指令子集裡,若是,流程進行至決定方塊428 ;否則, 流程進行到方塊426。 在方塊426,早期旗標產生/控制邏輯電路212在早期 結果有效指示器244產生一錯誤值且更新有效指示器218 相對應於由具有錯誤值之目的運算元旗標216指示之早期 暫存器檔136暫存器,因為早期執行邏輯電路/位址產生器 138不用以產生對指令類型之一有效早期結果242,流程 進行到決定方塊434。 在決定方塊428,由於早期執行邏輯電路/位址產生器 138係用以產生一正確早期結果242,早期旗標產生/控制 邏輯電路212決定是否所有之用以產生早期結果之運算元 皆為有效的,如果早期旗標產生/控制邏輯電路212在決定 方塊404決定指令必定不在a階段112被執行,則指令不 因缺夕、一運异元而在R階段108被暫停,因此,即使來自 早期暫存器檔136之一暫存運算元係非有效的,指令也不 31 200527286 會在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㈣之早期暫存器斤 136暫存器,X ’由目的運算元旗標216指示之早期暫; 器檔136的暫存器係以有效早期結果242踐,流程 到決定方塊434。 在決定方塊434,早期旗標產生㈣W 視指令以妓指令是否為-修飾架構式 6 ^ 類型’在-實謝’修飾旗標的指令係依據χ86心 否則,流_止。 财程進行到方塊极; 在方塊436早』旗“產生/控制邏輯電路犯依據由 32 200527286 早期執行邏輯電路/位址產生器138及依據指令2〇6產生之 早期結果242產生早期旗標值262,及以早期旗標值262 更新早期旗標暫存器142,在一實施例中,早期旗標產生/ 控制邏輯電路212產生對於溢位旗標(〇F)之一正確值,當 符说整數的一補碼運算由早期執行邏輯電路/位址產生器 138執行,以產生由一溢位環境造成的早期結果242(即早 期結果242太大或太小以致不能在目的運算元滿足),否則 即產生一錯誤值;早期旗標產生/控制邏輯電路212豎立符 號旗標(SF)給早期結果242之最有效的位元的值;當早期 旗標產生/控制邏輯電路212產生一對於零旗標之正確值 早期結果242為零時,否則產生一錯誤值;當早期旗標產 生/控制邏輯電路212產生一極性旗標之正確值,早期結果 242最不有效的位元包含偶數個1位元,否則即產生—錯 誤值;早期旗標產生/控制邏輯電路212產生對於進位旗標 之一正確值,當非符號整數運算由早期執行邏輯電路/位址 產生器138執行,以產生由一溢位環境造成的早期結果 242(即算術運算產生一進位或一引用早期結果242之最有 效位元),否則即產生一錯誤的值,在一實施例中,早期旗 標產生/控制邏輯電路212只更新由早期結果242影響的特 殊狀態旗標,而非產生一狀態旗標全集以寫入早期旗標暫 存器142,在其他實施例中,早期旗標產生/控制邏輯電路 212累積先前指令之狀態旗標直到他們由架構式旗標暫存 器162被複製,如以下參照圖5所描述,流程進行到決定 方塊438。 200527286 在方塊438,早期旗標產生/控制邏輯電路2i2 否依據指令之結果修飾旗標,舉例來說,在—實施例中, 某一指令直接修賴標,料x86架構式stc(集進位)、 CLT(清除進位)、或CMC(補科位)指令,以及修飾作用 並不依據指令結果@為除了修飾狀g旗標外沒有指令社 果,若修飾旗標麟齡之結果,職軸行到決定方塊 442,否則,流程結束。 在決定方塊442,早期旗標產生/控制邏輯電路212審 視早期結果有效指示H 244纟決定是否早期結果242是為 有效的,若S,流程結束;否則,指令進行到方塊物。 在方塊444,早期旗標產生/控制邏輯電路212產生一 在控制訊號264之值去更新在早期旗標有效暫存器246之 值以代表貯存在早期旗㈣存H 142之狀g旗標為無效 的,方塊434到方塊444記錄著運算以累積早期旗標暫存 器142—旦無效之無效值直到早期旗標暫存器142重新有 效(如下參照圖5之描述),在一實施例中,因為直接修飾 旗標的指令係相對較少被執行,為了簡化早期旗標產生/ 控制邏輯電路212,早期旗標暫存器142係為無效,若遇 及一直接更新一狀態旗標之指令時,流程在方塊444停止。 再請參照圖5所示,依據本發明之一流程圖說明圖2 裝置之運轉,以早期旗標暫存器丨42重新貯存以及有效, 圖5包含兩分別的流程圖,每一流程圖描述早期旗標暫存 器142重新貯存以及有效,以回應引發重新貯存以及有效 之一不同情形,參照第一種情形,流程在方塊502開始。 34 200527286 在f塊5〇2,一分支指令到達s階段126,若分支指 三:要杈正即右分支預測器132錯誤預測分支指令,不 管是對,分支是否發生關錯誤或是對於分支目的位址 預測錯誤’則軸分支校正邏輯電路⑷清除在校正錯誤 的:程的^線,如下面參照圖7所描述,清除管線代 有木構式旗標暫存修飾指令出現對應於r階段⑽下 2線階段,亦或是對應於任何在管線巾修飾㈣式旗標 、二器162之才曰令已經更新架構式旗標暫存H 162或已經 ,:除一因此,架構式旗標暫存器162包含最新之狀態, 7刀支指令校正可能為-條件式或非條件式類型的分支指 早期旗“暫存器142可能重新貯存以回應其他造 f除了校正分支指令外,例如例外,管線被清除的情形, ^程進行到決定方塊504。 ^ 鬼5〇4早期旗標產生/控制邏輯電路212審視分 支校正晚期訊號268,以決定是否S階段126分支指令被 =分支校正邏輯電路148所校正,由此表示管線被清除 =生錯誤預測之校正,若如此,流程進行到方塊5〇6; 否則,流裎鉻+。 、在方塊5〇6 ’早期旗標產生/控制邏輯電路212複製架 構式旗標暫存H 162之值到早期旗標暫存器142藉由訊號 旭以及標示早期旗標暫存_ M2之值藉由控制訊號 64’由此,重新貯存早期旗標暫存器142為—有效狀態, >;il程進行到506。 參照在圖5之第二情況,流程開始在方塊512,在方 35 200527286 塊5i2 ’早期旗標產生/控制邏輯電路2i2 ^出現訊號加以蚊是否所有架構式旗標暫存St =皆段112下’是否任-,已更新架構式旗摔 1方1是’流程進行到方塊514;否則’流程終止 構二Sr,早期旗標產生/控制邏輯電路扣複製竿 存器162之值到早期旗標暫存 = 私值262以及標*早期旗標暫存器142之 ^ :264;由此’重新貯存早期旗標暫存器“一;效: 怨,流程進行到514。 . 3双狀 =一形分支校正’為-建立環境給一產生= 請在參照圖6所示,依據本發明之一流解 :明微處理器1〇〇之運轉以進行早期分支校正,流: 塊602開始。 矛在方 行到=4:條件分支指令物階段…,流程進 在方塊⑼4’早期分支校正邏輯電路144審視早 有效暫存器之輸出決定是否早期旗標暫存器142為 =的二若是’流程騎到方塊_ ;否則,流程終止, 你i右早期旗標暫存11142為無效的,裝置不進行早期 條件式分支校正。 在方塊6G6’早期分支校正邏輯電路144審視早期旅 “暫存器142内容以蚊衫由在條件式分支指令之條件 36 200527286 馬所才曰不^條件是滿足的,流程進行到決定方塊刪。 命在决?方塊608 ’早期分支校正邏輯電路144決定是 :::去;k正條件式分支指令之預測以回應方塊_,條 刀支&令需要去校正若有效早期旗標暫抑142之環 = :、、、滿足的’像疋條件式分支指令應該發生,而分支預剛 裔132預測分支不發生(如由分支預測發生訊號施之下管 Ί Mx 114形式的一錯誤值指示),即導致微處理器⑽ ^捉取下—循序之指令;相反的,條件式分支指令需要被 杬正右條件在有效早期旗標暫存器Μ]係不滿足,像是條 ^式刀支私令應該不被發生,而分支預測器132預測分支 么生(如由一由分支預測發生訊號2〇8之下管線j階段Η# 形式的一正確值指不),即導致微處理器ι〇〇分支到預測分 支目的位址’如果校正條件式分支指令的預測為必須的, 進行到決定方塊612 ;否則,流程終止。 在決定方塊612,已決定條件式分支指令需要校正, =期分支校正邏輯電路144審視分支預測發生訊號2〇8的 s線下m段114版本,以決定是祕件式分支指令被預 及1¾生,如果是,流程進行到方塊616,·否則,流程進行 到方塊614。 在方塊614,早期分支校正邏輯電路144藉由控制訊 唬154導引I階段1〇2去清除對應於j階段114上的管線 以及分支微處理器100到條件式分支指令的分支目的位 址在一貫施例中,條件式分支指令的分支目的位址係由 在A階段112的早期執行邏輯電路/位址產生器138所產 37 200527286 生’又’早期分支校正邏輯電路144在下送到晚期分支校 正邏輯電路148之分支校正早期訊號258產生一正確值, 其之使用係參照圖7描述如下,流程在方塊614結束。 在方塊616,早期分支校正邏輯電路144藉由控制訊 號154導引I階段102去清除對應於j階段114以上之管 線,以及分支微處理器1〇〇到在條件式分支指令後的下一 擔序指令,又,早期分支校正邏輯電路在下送到晚期 分支校正邏輯電路148之分支校正早期訊號258產生一正 確值,其之使用係參照圖7描述如下,流程在方塊616結 束。 請參照圖7,依據本發明之一流程解說示意圖說明微 處理恭100之運轉以進行晚期分支校正,流程開始在方塊 702 〇 在方塊702,一條件式分支指令到達s階段126,流 程進行到方塊704。 在方塊704,晚期分支校正邏輯電路148審視架構式 旗標暫存器162内容以決定是否在條件式分支指令之條件 碼私疋之條件為滿足的,流程進行到決定方塊7〇6。 在方塊706,晚期分支校正邏輯電路148決定是否需 要去权正回應方塊704之條件式分支指令的預測,條件式 分支指令需要被校正當在架構式旗標暫存器162之條件為 滿足的,像是條件式分支指令必需已被發生,而分支預測 器132預測分支還未被發生(如由在分支預測發生指令 之對應於管線下S階段126版本之一錯誤值指示),即造成 38 200527286 微處理器1GG去捉取下—循序指令;相反的,條件式分支 指令需要被校正當在架構式旗標暫存器162的條件為非滿 足的’像是條件式分支指令必須還未被發生,而分支預測 盗13 2預測分支已發生(即由在分支預測發生指令之對 應於管線下S階段126版本的—正核指示),即造成微處 理器100分支到預測的分支目的位址,若需要去校正條件 式分支指令的預測,流程進行到決定方塊7〇8 ;否則,流
程終止。 ;,L 在決定方塊708,晚期分支校正邏輯電路148審視分 支校正早期訊號258以決定是否條件式分支指令的錯誤預 測已經由早期分支校正邏輯電路144校正,如果是,流程 終止;否則,流程進行到決定方塊712。 在決定方塊712,已經決定條件式分支指令需要校 正’晚期分支校正邏輯電路148審視分支預測發生訊號2〇8 之管線下S階段126去決定是否條件式分支指令被預測發 生,若是,流程進行到方塊716 ;否則,流程進行到方^ 714 〇 在方塊716,晚期分支校正邏輯電路148藉由控制訊 號154導引I階段102去清除對應於S階段126以上之管 線,以及將微處理器100分支到在條件式分支指令後的下 一循序指令,流程在方塊716結束。 承上所述,描述之微處理器100相較於沒有早期執行 邏輯電路/位址產生器138及早期暫存器檔136所帶來好處 之微處理器100,能夠提早複數個時脈週期提供一之前指 39 200527286 令之-,果作為—暫存運算元給—循序位址產生或非位 址產生,令·’因此減少了所導致的管線氣泡數量,同時亦 減少了每一微處理器1〇〇運算主要的成分—指令的平均週 期。再者’早期結果可以應用於較切可能的更迅速地更 新狀態旗標,於是更有潛力使條件式指令較先前可能的更 快速執行。又,描述的微處理器⑽係相較於沒有早期分 支杬正邏輯電路144提供好處之微處理器,能夠提早複數 個時脈週期校正一非正確預測的條件式分支指令 。隶後’ j週期頻率微處理H⑽㈣求使得微處職計者去增加 ί線h 4又的數量,當管線階段的數量增加,所導致的管線 氣泡以4待扣令結果及/或狀態旗標更新可能就隨著增 力同樣的富管線階段數量增加,校正錯誤預測的分支 才曰令的延緩可能亦增加,此些因素彰顯了在上述微處理 器、裝置以及方法的好處。 雖然本發明及其目的、特徵及優點已經詳細描述,其 他任何未脫離本發明之精神與範疇實施例也應被包含。舉 例來說,雖然所描述之一微處理器1〇〇的實施例實質上與 x86架構相一致,但所描述的裝置及方法並不設限於 架構而且可以被應用於各種微處理器100架構。又,雖然 一實施例描述在其中一條件式分支指令被提早校正,早期 產生狀態旗標的好處可被利用於提早進行其他指令,像是 LOOPcc指令為例,同樣的在此所描述的好處一樣發 生在轉移指令;或x86 SETcc以及CMOVcc指令可被提早 執行,因此其結果可讓隨後之依據指令可用的。此外,除 200527286 了利用早期結果產生早期狀態旗標值外,早期結果亦可用 以進行早顧接分支指令时支校正,通常指的是跳躍經 過暫存指令,其係指示分支目的位址為—來源暫存運算元 值。 又,可利用硬體增加本發明之應用範嘴。本發明可以 應用在電腦可讀取碼(即電腦可讀取之程式瑪、資X料等)收 錄在-電腦可m即可讀取)媒體,電腦韻心讓本發明 之功用或構造或兩者得以實施。舉例來說,其係可經由利 用一般的私式語a (即C,C++,JAVA等)、gdsii資料庫、 硬體描述語言(HDL)(例如 Verilog hdl、VHDL、Altem HDL (AHDL))等等、或其他程式及/或電路(即shematic)在 本技藝中可獲得的取得工具。電腦碼可以設置在任何知道 的電腦可用(即可讀取)媒體,例如半導體記憶體、磁碟、 光碟(CD-R0M、DVD_R0M等),以及作為一貯存在一電 腦可用(即可讀取)傳輸媒體(即載波或任何其他媒體包括 數位、光學或類比媒體)的電腦資料訊號。因此,電腦碼可 以被傳輸在溝通網上’包括網内與網外。因此可了解本發 明可包含在電腦碼(即一 IP(智慧財產)核心的一部分,像是 一微處理器核心,或作為一系統階層設計,像是一在晶片 之系統(SOC))以及轉型成硬體作為整體電路製造之一部 分,又,本發明可以包含作為一硬體以及電腦碼的合併。 最後’熟悉本項技藝者應了解可以直接利用本發明揭 露的觀念以及特殊的實施例作為設計或修飾其他結構以 實現相同於本發明之目的的基礎,任何未脫離本發明之精 200527286 神與範疇,皆係由申請範圍所定義之。 【圖式簡單說明】 圖1為一顯示依據本發明較佳實施例之一種管線式微 處理器的方塊不意圖; 圖2為一顯示如圖1所示之依據本發明較佳實施例之 〆種管線式微處理器的R階段、A階段以及J階段之詳細 解説的方塊示意圖; 圖3為:顯示如圖1與圖2所示之依據本發明較隹實 施例之-種管線式微處理器的架構式暫存器槽、早期暫存 器權、架構式旗標暫存器以及早期旗標暫存轉說的方塊 禾意圖; ,為,4示如圖2所示之依據本發明較佳實施例之 H線式微處理器產生早期結果以及早期旗標的操作 流程解說示意圖; ^為”、、員示如圖2所示之依據本發明較佳實施例之 /種&線式微處理II恢復且有效化早期旗標暫存器的操 作流程解說示意圖; 0為·、、、員示依據本發明較佳實施例之一種管線式微 處理器進行早期分支校正的操作絲解㈣意圖;以及 圖7為—顯示依據本發明較佳實施例之-種管線式微 處理器進行_分支校邱騎絲解⑽意圖 元件符號說明: 42 200527286 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 200527286 158 匯流排 162 架構式旗標暫存器 174 布林運算邏輯電路 202 旗標修飾指令出現訊號 204 目的旗標 206 指令 208 分支預測發生訊號 212 早期旗標產生/控制邏輯電路 214 來源運算元旗標訊號 216 目的運算元旗標 218 有效指示器 222 即時/持續運算元 226 多工器 228 暫停訊號 232 管線暫存器 234 管線暫存器 236 有效位元暫存器 238 來源運算元暫存器 242 早期結果 244 早期結果有效訊號 246 早期旗標有效暫存器 248 管線暫存器 252 管線暫存器 早期結果暫存器 254 200527286 258 分支校正早期訊號 262 早期旗標值 264 控制訊號 266 記憶體運算元出現訊號 268 分支校正晚期訊號 272 算數邏輯電路單元 274 布林運算邏輯電路單元 276 移位邏輯電路單元 278 目的運算元旗標 282 控制訊號 402 指示一架構式暫存器檔之來源運算元到達暫存階 段 的指令 404 指令必須在位址階段執行? 406 所有來源運算元皆出現且為有效? 408 此時脈週期期間暫存 412 來源運算元旗標符合在管線中舊指令目的旗標? 414 早期暫存器檔提供來源運算元 416 架構式暫存器檔提供來源運算元 418 利用來源運算元計算早期結果 422 早期結果命令到架構式暫存器檔? 424 指令為早期執行邏輯電路可執行之類型? 426 標示在早期暫存器檔之目的暫存器為無效的 428 所有使用之運算元為有效的? 200527286 432 434 436 438 442 444 502 504 506 512 514 602 604 606 608 612 614 616 ==果與標記有效更新在早期暫存器槽之目 指令修飾旗標暫存器 更新早期旗標暫存器 依據早期結果修飾旗標暫存器 早期結果有效? 使早期旗標暫存器無效 分支指令到達晚期分支校正階段 分支校正是否執行? 標為存;::期旗標暫存以及標 ===,生階段下之所有旗標修 製架構式旗標C存器? 示早期旗標暫存器旗標暫存器以及標 ==令到達早期分支校正階段 早期旗標暫存器是否有效? 審視早期旗標暫存器 是否需要分支校正? 是否發生分支預測? I之前的管線以及分支到分支目的位址 /月除此階段之前的管 之下—循序指令的位址及分支到在分支指令後 條件式分支指令到達晚期分支校正階段 46 702 200527286 704 審視架構式旗標暫存器 706 是否需要分支校正? 708 提早分支校正? 712 是否發生分支預測? 714 清除此階段之前的管線和分支到分支目的位址 716 清除此階段之前的管線以及分支到在分支指令後 之下一循序指令的位址 47

Claims (1)

  1. 200527286 十、申請專利範圍: 1、一種管線式微處理器,具有一架構式暫存器檔以及至 少用以產生指令之複數個最終結果之一最終執行單元 係包含: 一位址階段,其係該管線中較該最終執行單元所對應 之階段早之階段,該位址階段係包含一早期執行單 元,用以在該最終執行單元產生指令之該些最終結 果前產生指令之複數個早期結果;以及 一早期暫存器檔,其係與該早期執行單元連結並且對 應於該架構式暫存器檔,該早期暫存器檔係用以貯 存該些早期結果,且將該些早期結果提供給該早期 執行單元以產生複數個循序指令之早期結果,其中 該架構式暫存器檔只以該最終結果而非該早期結果 作更新。 2、 如申請專利範圍第1項所述之管線式微處理器,其中 該早期執行單元係用以執行該微處理器指令集之一指 令子集。 3、 如申請專利範圍第2項所述之管線式微處理器,其中 由該早期執行單元所執行之該指令子集,係包含複數 個移位指令。 4、 如申請專利範圍第2項所述之管線式微處理器,其中 48 200527286 由4早期執行單元所執行之該指令子集,係包含複數 個移位指令以及複數個布林指令。 5、如申睛專利範圍第2項所述之管線式微處理器,其中 由該早期執行單元所執行之該指令子 集,係包含複數 個移位指令、複數個布林指令以及複數個算術指令。 如申明專利範圍第1項所述之管線式微處理器,更包 含: 匯流排’其係與該早期執行單元連結,並於一第一 f脈週期間提供由該早期執行單元所產生之一第一 才曰令之一第一早期結果給該早期執行單元,以便在 第二時脈週期間產生一第二指令之一第二早期結 果’其中該第一時脈週期係緊接在該第二時脈週期 <月丨J 0 7 j 、如申請專利範圍第6項所述之管線式微處理器,該第 才曰令係以一管線階段緊接在該第二指令之前。 g、 、如申請專利範圍第1項所述之管線式微處理器,更包 含: —結果寫回階段,其係對應於該管線階段中較該最終 執行單元所對應位置後面之位置,以該最終執行單 元所產生之該些最終結果來更新該架構暫存器檔, 49 200527286 其中該些早期結果係只對該早期暫存器檔作更新。 9、 如申請專利範圍第1項所述之管線式微處理器,其中 該早期執行單元亦自該早期暫存器檔中取得該些早期 結果,以作為運算元來產生複數個記憶位址。 10、 如申請專利範圍第9項所述之管線式微處理器,其中 該早期執行單元係產生複數個堆疊記憶體位置之記 憶體位址以及複數個非堆疊記憶體位置之記憶位址。 11、 如申請專利範圍第1項所述之管線式微處理器,其中 儲存於該早期暫存器檔之該早期結果可為有效或無 效。 12、 如申請專利範圍第1項所述之管線式微處理器,其中 該管線式微處理器係為一標量微處理器。 13、 如申請專利範圍第1項所述之管線式微處理器,其中 該管線式微處理器係依程式順序派送指令。 14、 如申請專利範圍第1項所述之管線式微處理器,該早 期結果由包含複數個非位址結果以及複數個堆疊指 標位址之該早期執行單元所產生,且該早期執行單元 屬於一單一管線階段。 200527286 15、如申請專利範圍第1項戶斤述之管線式微處理器’其中 一電腦程式產品係包含/電腦可用媒體並用以構成 該微處理器,該電腦可用媒體係具有複數個電腦可讀 取之程式碑,其中該電腦系統產品係與一計算裝置搭 配使用。 1 6、如申請專利範圍第1項所述之管線式微處理器,其中 一電腦資料訊息係提供給該微處理器,該電腦資料訊 息係包含在一傳輸媒體中,該傳輸媒體係具有一電腦 可讀取程式碼。 17 一 、一種裝置,用以改善一管線式微處理器之性能,且該 管線式微處理器係具有一架構式暫存器檔,該裝置包 含: 早期執行邏輯電路,其係用以產生指令之複數個早 ,^果,且產生程序係早於由至少一執行單元對該 才曰令=產生的複數個晚期結果,而該執行單元係對 應於官線巾較該早崎輯電路所 之位置; 丨w说回 干朋臀存器檔 一…,、你與該早期執行邏輯電路連結 器播係包含姆應於該架 器以物些早期結果,該早期暫存器; 係具有與母—暫存料結之一有效指μ 51 200527286 G 用以提供該些早期結果予該早期執行邏 Γ為運算元以產生後續之該些早期結果;以 一邏輯電路,J:仫姐1 邏輯電路利二ΐ:該有效指示器’當該早期執行 存器中的:1於該早期暫存器槽其中之-之暫 指示嗦暫,异70來產生一位址,且該有效指示器 管線子單70係為無效時,該邏輯電路係暫停此 期暫疒,^备該早期執行邏輯電路利用貯存於該早 7 以槽的該等暫存器之_中的-運算元來產生 暫^憶位址早期結果時,該有效指示單元指示該 早元係為無效’該邏輯電路便不暫停此管線。 iic第π項所述之裝置’其中該早期執 段。 係對應於該管線式微處理器之一位址階 一暫;矛】範圍第17項所述之裝置,更包含: 該:f係與該邏輯電路連結,該暫存器係依據 -早期結果累加複數個早期狀態旗標,俾以依據 j於該暫存H巾之該早期狀態旗標而致 仃條件式指令。 _、:明專利範圍第17項所述之裝置,更包含: ;W排,連結一該早期執行邏輯電路之輸出到 52 200527286 一多工器之一第一輸入,用以提供自該早期執行邏 輯電路輸出之該些早期結果,該多工器具有一第二 輸入,該第二輸入係連結以接收來自該架構暫存器 檔之一運算元,該多工器具有一輸出,以便將至少 一運算元從該第一輸入及該第二輸入之任一提供至 該早期執行邏輯電路,俾使在一第一時脈週期期 間,由該早期執行邏輯電路產生一第一早期結果作 為一運算元,其係在緊接於該第一時脈週期後之一 第二時脈週期期間,提供給一第二指令以產生該第 二指令之一第二早期結果。 21、 如申請專利範圍第17項所述之裝置,其中該管線式 微處理器係為一標量微處理器。 22、 一種裝置,其係對應於一管線式微處理器,用以產生 複數個記憶體位址以及複數個早期指令結果,該裝置 包含: 一位址產生器,當一指令指示記憶體位址產生時,該 位址產生器係用以產生一記憶體位址,且當該指令 指示結果產生時,該位址產生器係更用以產生一選 擇式有效結果;以及 一邏輯電路,其係與該位址產生器連結,當該指令指 示記憶體位址產生,及當並非該指令之所有輸入運 算元都是有效且可提供給該位址產生器時,該邏輯 53 200527286 電路便暫停管線,而當該指令指示結果產生,且並 非該指令之所有輸入運算元皆為有效且可提供給 該位址產生器時,該邏輯電路便不暫停管線。 23、 如申請專利範圍第22項所述之裝置,其中該位址產 生器係產生複數個堆疊記憶體位置之記憶體位址以 及複數個非堆疊記憶體位置之記憶體位址。 24、 如申請專利範圍第22項所述之裝置,其中該、位址產 生器係屬於一單一管線階段。 25、 如申請專利範圍第22項所述之裝置,其中當該位址 產生器未用以進行該指令所指定的一種運算時,該邏 輯電路產生一指不以指不該結果為無效。 26、 如申請專利範圍第22項所述之裝置,其中當提供複 數個無效來源運算元給該位址產生器以產生該結果 時,該邏輯電路產生一指示器以指示該結果是無效。 27、 如申請專利範圍第22項所述之裝置,其中該管線式 微處理器係為一標量微處理器。 28、 一種方法,用以避免在一微處理器管線中由於指令間 的運算元相依性而產生的暫停,且該管線式微處理器 54 200527286 係具有-架構式暫存器槽,該方法包含: 結 產生在管線中-位址階段之一第一指令的一 果’其中該第—結果係可能為無效的; 貯存該第-結果於該微處理器之一早期 藉=該=期暫存器槽之該第_結果作為―。” 二!=指令,以在位址階段產生該第二指; 儲存該第二結果於該早期暫存器檔;以及 藉由該早期暫存器檐之該第二結果作為—輸_ 予一第三指令,以產生該第三指令之一記憶體:址, 29、如申請專利範圍第28項所述之方法,更包含· 累加複數個早期狀態旗標以回應該第二結果。 30、如申請專利範圍第29項所述之方法,更包含: 當該第二結果為無效時,設定該早期狀態旗標亦為無 效 31、如申請專利範圍第29項所述之方法,更包含: 判斷一條件式指令所指示之一環境是否滿足該早期狀 悲旗標,以及 當該早期狀態旗標為有效且該環境係滿足該早期狀態 旗標’執行由該條件式指令指示之一運算。 55 200527286 32、一種電腦資料訊息,其係包含於一傳輸媒體中,該電 腦貧料訊息包含: 一電腦可讀取程式碼,其係提供給具有一架構式暫存 器檔以及至少一最終執行單元之一管線式微處理 器,暫存器檔係用以產生指令之複數個最終結果, 該電腦可讀取程式碼包含: 一第一程式碼,其係提供對應於管線中較該最終執行 單元所對應階段早之位置之一位址階段,其包含一 早期執行單元,藉以在該最終執行單元產生指令之 該最終結果前產生指令之複數個早期結果;以及 一第二程式碼,其係提供一早期暫存器檔,該早期暫 存器檔係與該早期執行單元連結,且對應該架構式 暫存器檔,用以儲存該早期結果以及提供該早期結 果給該早期執行單元以產生後續複數個指令之早期 結果,其中該架構式暫存器檔只以該最終結果而非 該早期結果作更新。 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 true TW200527286A (en) 2005-08-16
TWI251776B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI818894B (zh) * 2015-12-22 2023-10-21 美商英特爾股份有限公司 毗連資料元素成對調換處理器、方法、系統、及指令

Families Citing this family (17)

* 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
US8145874B2 (en) * 2008-02-26 2012-03-27 Qualcomm Incorporated System and method of data forwarding within an execution unit
US7861064B2 (en) * 2008-02-26 2010-12-28 International Business Machines Corporation Method, system, and computer program product for selectively accelerating early instruction processing
JP2010122787A (ja) * 2008-11-18 2010-06-03 Panasonic Corp 半導体集積回路及びレジスタアドレス制御装置
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
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
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
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
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
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
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
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI818894B (zh) * 2015-12-22 2023-10-21 美商英特爾股份有限公司 毗連資料元素成對調換處理器、方法、系統、及指令

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI288351B (en) Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
TW200527286A (en) Pipelined microprocessor, apparatus, and method for generating early instruction results
US7987343B2 (en) Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
TWI333629B (en) Data speculation based on addressing patterns identifying dual-purpose register
EP1296229B1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
EP1296230B1 (en) Instruction issuing in the presence of load misses
US9361242B2 (en) Return stack buffer having multiple address slots per stack entry
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
JP2010526392A (ja) システムおよびパイプラインプロセッサにおける条件命令実行の加速のためのローカル条件コードレジスタの使用方法
TW200525355A (en) Microprocessor and apparatus for performing speculative load operation from a stack memory cache
TW200525354A (en) Microprocessor and apparatus for performing fast speculative pop operation from a stack memory
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
US9535744B2 (en) Method and apparatus for continued retirement during commit of a speculative region of code
US8151096B2 (en) Method to improve branch prediction latency
US11645078B2 (en) Detecting a dynamic control flow re-convergence point for conditional branches in hardware
EP2368180A1 (en) Methods and apparatus for performing jump operations in a digital processor
US10007524B2 (en) Managing history information for branch prediction
US7269714B2 (en) Inhibiting of a co-issuing instruction in a processor having different pipeline lengths
TWI273485B (en) Pipeline microprocessor, apparatus, and method for generating early status flags
US11010170B2 (en) Arithmetic processing apparatus which replaces values for future branch prediction upon wrong branch prediction
US7783692B1 (en) Fast flag generation
US7100024B2 (en) Pipelined microprocessor, apparatus, and method for generating early status flags
JPWO2010116403A1 (ja) プリフェッチ要求回路
TWI235331B (en) Method and apparatus for maintaining status coherency between queue-separated functional units