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