TW201030612A - Pipelined microprocessor with fast conditional branch instructions based on static exception state - Google Patents
Pipelined microprocessor with fast conditional branch instructions based on static exception state Download PDFInfo
- Publication number
- TW201030612A TW201030612A TW099102041A TW99102041A TW201030612A TW 201030612 A TW201030612 A TW 201030612A TW 099102041 A TW099102041 A TW 099102041A TW 99102041 A TW99102041 A TW 99102041A TW 201030612 A TW201030612 A TW 201030612A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- microprocessor
- conditional branch
- branch instruction
- mentioned
- Prior art date
Links
- 230000003068 static effect Effects 0.000 title description 19
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000000605 extraction Methods 0.000 claims description 104
- 238000000034 method Methods 0.000 claims description 58
- 239000000284 extract Substances 0.000 claims description 44
- 238000012545 processing Methods 0.000 claims description 38
- 230000002159 abnormal effect Effects 0.000 claims description 33
- 239000000872 buffer Substances 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 13
- 238000004458 analytical method Methods 0.000 claims description 12
- 230000005856 abnormality Effects 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 4
- 239000000463 material Substances 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000013519 translation Methods 0.000 claims description 2
- 230000036541 health Effects 0.000 claims 1
- 239000012535 impurity Substances 0.000 claims 1
- 239000004575 stone Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 13
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008707 rearrangement Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 210000004556 brain Anatomy 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000344 soap Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
201030612 六、發明說明: 【發明所屬之技術領域】 本發明主要關於微處理器之技術, 執行條件分支指令的微處理器與方法。特別係有關於一種 【先前技術】 〇 執灯削日令。換S之’ 動作就是讓微處理 指令’接著再提取下-侧料令,然後錢取下1循 序指令’以此類推H控制錄指令會命令微處理器 脫離此循序提取制度。微處理器在其指令集架構 (instruction set architecture )中包括某種型式的7條件/分支 參 指令’用以指定-分支條件狀態(通常是一條件旗標 (condition flag)或是一通用暫存器中之數值)及一分支條件 (舉例而言,位元設定、位元清除、等於零或 條件分支指令也指定一分支目標位址(二:二 address)。微處理器根據分支條件檢查分支條件狀態,用以 決定分支條件狀態是否滿足被條件分支指令所指定的分支 條件。若分支條件狀態滿足分支條件,微處理器開始提取 分支目標位址上之指令’而不是提取下一個循序指令。 正如眾所皆知的微處理器技術,現今的微處理器包括 一具有複數階段之管線(pipeline),每一階段執行有關程 式指令之不同的工作。在標準的管線式微處理器中,階段 包括指令提取(instruction fetch)、指令解碼(instruction CNTR2326I00-7W/060S-AA2130TW-f 4 201030612 decode)、運算元提取(〇perand fetch)、執行(execute)以 及寫回結果(result write-back )這五個階段。一程式中之 條件分支指令會大大地增加微處理器執行程式所需的時 間。這疋因為在傳統上,執行階段(execute stage )係用以 分析條件分支指令,即決定分支條件狀態是否滿足分支條 件。其中一個原因是因為程式中之指令在程式順序 (program order)中的順序可能會比條件分支指令還要老 舊(older),而這些比條件分支指令還要老舊的指令係用以 更新分支條件狀態。因此,在運算元提取階段可以提取條 件分支指令之來源運算元(s〇urce〇perands)之前,微處理 裔必須等待直到執行單元產生上述比較老舊之指令的結果 (這些比較老舊之指令的結果係為條件分支指令中用以構 成(C〇nStitUte)分支條件狀_來源運算元),以便發出條件 分支指令用以執行。然而,特別是在高度管線化(心物 ❿ 及/或乱序執行(_-〇f-〇nier execution) ,微處理 器中,微處理器可能已經提取以及處 =固循耗令=於條件分支指令之後),並且在執行單元 令?’這些循序指令在程式順序中的順序 件狀八 _ (newei° 決 m條 支條件(即代表條件分支指令將會被取用 器必須清除所有位於條件分支指令之後依 "並開始提取分支目標位址上之指令。這大 大地增加了微處理器執行程式所需的時間。 為了解決此問題,現今的微處理器包括分支預測器 CNTR2326IO〇-TW/〇m-AA2mT^f.f 201030612 (bmnCh㈣此她)用以預測方向(direction)(即分支條件 狀態是否會滿足分支條件(稱為「被取用」)),或不滿足分 f條件(稱為「讀取用(加t taken)」))。然而,分支預測 m會誤預測(mispredict)方向’在此情況下,因為微 處理器必須清除管線中錯誤提取的指令,並開始提取正確 位址上之(即根據是否發生正確的方向來決^該正讀 位址係為下-個位址或分支目標位址),所以微處理器需要 承擔 77 支誤預測代價(branch misprediction penalty)。再 者,逆會大大地增加程式執行時間,特別是在程式中具有鏐 些難以準確預測之條件分支指令的情況下。因此,需要 一種能夠及早正確地分析管線中之條件分支指令的方法, 用以置換(override )分支預測器之分支預測資訊。舉例而 吕,該方法已揭露於Bose et al.所獲得之美國專利第 5,805,876號「一種適用於一處理器之方法與系統,用以減 少平均分支解析時間及有影響的誤預測代價」。然而,B〇se etal.所提出之微處理器有一個缺點,就是該微處理器會選 擇性地(條件性地)提早分析條件分支指令。換言之,該微❿ 處理器只在分支指令滿足一組特定的條件時,才會提早分 析條件分支指令,例如第一個偵測到之條件分支指令係設 置在一指令緩衝器中之第一可配送位置(dispatchable position)中。 因此’需要一種具有一改良技術之微處理器,用以允 許程式條件性地分支。 【發明内容】 CATO2?25/«?-7W0608-A42130TW-f 6 201030612 本發明提供了一種微處理器,包括一 提取單元、-執行單元、以及-第二提取ί '、—第一 以儲存-異常處理常式以處理一異常條件早二 處理常式為上述微處理器私有之一非使 ς '常 異常處理常式包括一條件分支指令。第 ^且上述 取-使用者程式之複數指令,其中上述使用者 成上述異常條件之-使用者程式指令。執行單元二匕造 單元所提取之上述使用者程式之上述:令: 及上述異常處理常式之複數指令,並 ^曰^ =者『所造成之上述異常條件心:測= 獒取早70用以自上述記憶體提取上 第一 指令’並且用以根據上述狀態解析上上述 本發明另外提供了一種微處::早=進:解析》 及-執行單元。提取單元用以提取-程;=,單元以 上述程式包括造成-異常條件之一程複數才日令,且 取處理上述異常條件之-異常處理常以及用以提 :常式包括一條件分支指令:用常處 單元所提取的上述指令,並且執〜^用以執仃上述提取 之外的上述異常處理常式之複數2了上述條件分支指令 到上述程式指令所造成之上述異以及用以因應偵測 中上述提取單元更用以因應 條件而儲存-狀態。其 條件而提取上述異常處理^式之執行f元偵測到上述異常 狀態無條件地解析上述條 ^述指令,並且根據上述 '、刀足才曰令,而不將上述條件分 CNTR2326I00~TW/0 抓A42mv^f 201030612 支指上述執行衫去進行解析。 法,適用二了一f:逮執行條件分支指令之方 情體以處理一 器,包括儲存一異常處理常式於一記 似 一異常條件,其中上述里常處理當μ、+、, 處理器私有之—"常處理*式為上述微 -條件分支护人f },且上述異常處理常式包括 -使用者心:二二=之-第-提取單元提取 上述異常條件之一上=述:用者程式包括造成 拙〜 程^日令,由上述微處理器之- 之上述P仃上述第—提取單元所提取之上述使用者程式 a曰7以及上述異常處理常式之複數指令;因應偵.、則 =:者程式所造成之上述異常條件而錯存: 異常處理常式之上述Jz 憶體提取上述 條件分支指令而不將上述條件分支指令傳送 到上述執行單元去進行解析。 馨 、本發W外提供了 -種快速執行條件分支指令之方 法適用於微處理器,包括由上述微處理器之一提取單 兀提取&式之複數指令,且上述程式包括造成一異常條 件之-程式指令;由上述提取單讀取處理上述異常條件 之-異常處理常式,其中上述異f處理常式包括—條件分 支指令;由上述微處理器之—執行單元執行上述提取單元 所提取的上述指令’以及除了上述條件分支指令之外的上 述異常處理常式之魏指令;目應制到上絲式指令所 造成之上述異常條件而儲存—狀態;由上述提取單元因應 CNTR2326IOO-TWm〇^A42130TW-f δ 201030612 件而提取上述異常處理常 地解析上述條件八支沪人皁70根據上述狀態無條件 到上述執行單元:進二析。不將上述條件分支指令傳送 件狀t㈣=,7—種微處理11 ’包括一第一分支條 以及二M iT分支條件狀態、—第i別條件分支指令、 ^類別條件分支指令。第―類別條件分支指令用 上=„理器等待’直到上述微處理器中用以更新 更^㈣^條件狀g並且比上述第—_條件分支指令 指令已經更新完上述第-分支條件狀態之 別條#八2述第—分支條件狀態正確地解析上述第一類 處理日令°第二類別條件分支指令用以指示上述微 處根據上述第二分支條件狀態正確地解析上述第二類 2件分支指令,而不需考量上述微處理器中用以更新上 乂 一为支條件狀態並且比上述第二類別條件分支指令更 舊的/、以日7疋否已經更新完上述第二分支條件狀態。 匕八本發明另外提供了—種解析第—或第二類職件分支 才曰7之方法’包括更新—第—分支條件狀態,其中在一微 處理器中比上述第-類別條件分支指令更老舊的其它指令 更新上述帛》支條件狀態;更新—第二分支條件狀態, 其中在一微處理器中比上述第二類別條件分支指令更老舊 的其它指令更新上述第二分支條件狀態;根據上述第一分 支條件狀態正確地解析上述第一類別條件分支指令,以因 應上述在上述微處理器中比上述第一類別條件分支指令更 aV77?2J2<Si%L7W0608-A42130TW-f 201030612 老舊的其它指令更新上述第—分支條件狀態;以及根據上 述第二分支條件狀態、正確地解析上述第二類職件分支指 令,以因應上述在上述微處理器中比上述第二類別條件分 支指令更老舊的其它指令更新上述第二分支條件狀態。 本發明另外提供了-種微處理器,包括一記憶體、一 ^-提取單元、-指令解碼H、—執行單元、錢一第二 提取單it。記憶體㈣儲存—非㈣者程式之複數指令以 實作上述微處理器之-使用者可見指令集之—使用者程式 指令,上述非使用者程式包括—條件分支指令。第一提ς 單元用以提取-使用者程式之魏指令,上述使用者程 包括上述非使用者程式所實作之上述使財程式指令4 令解碼器用以解碼上述使用者程式之上述指令,並且因』 ΓίΓΓ者程式所實作之上述使用者程式指令而储 存-狀態。執行單元用以執行上述第—提取單元所提取之 =使用者程式之上述指令,並且用以執行上述非使用者 程式之上述指令中除了上述條件分支指令之外的指令。第 單:用以自上述記憶體提取上述非使用者程式之上 沾令’並且用以根據上述狀態解析上述條件分支指令而 不將上述條件分支指令傳判上述執行單元去進行解析。 本發明另外提供了-種快速執行條件分支指 法,適用於-微處理器,包括儲存—非使 : 指令於-記憶體,以實作上述微處理 分支指八.* 口㈣理% 使用者程式包括-條件 刀支m述微處理盗之一第一 CNTR2326I00-TW/06Q^-A'M 130TW-f 201030612 使用者程式&賴指令,上述使用者程式包括 者程式所實衫上述使用輕式指令;解碼上述使 式之上述指令,因應解碼上述非使用者程式所 使用者程以令而儲存-狀態;由上述微處理 單元執行上述第一提取單元所提取之上述 述指令,並真執行上述非使用者程式之上述指令中^= 述條件分支指令之外的指令;由上述微處理器之_ = 取單元進行自上述記憶體提取上述非使用者程
令;以及由上述第二提取單元進行根據上述狀態解析H 條件分支指令W將上述條件分支指令傳送到 元去進行解析。 巩仃早 本發明另外提供了-種管線式微處理器,包括 暫存器、一指令集架構、複數執行單元、以及-提取單元 控制暫存器用以儲存影響上述管線式微處理器之運作之一 控制值。指令集架構包括根據儲存於上述控制暫存器之上 魯述控制值指定-分支條件之一條件分支指令,其中上 令集架構更包括更新上述控制暫存器中的上述控制值之二 序列化指令,且上述管線式微處理器係用以使用上述 化指令之前之複數指令完成對複數旗標、複數暫存器、以 及-記憶體之所有修m用以在提取並執行上述 化指令之下-個指令之前茂流所有緩衝的記憶體寫入 數執行單元輕接於上述控制暫存器,用以因應上述序列化 指令而更新上述控制暫存器中的上述控制值。提取單元耦 接於上述控制暫存器,用以根據儲存於上述控制暫存器中 CNTR2326I00-TW/0608-A42130TW-f 11 201030612 的上述控制值提取、 τζ Λ- /.r 引退上述條件分支’’、、、&,,,、條件地、正確地解析並 上述執行單元進ί^。’而不將上述條件分支指令配送至 法,=二a處一種快速執行,分支指令之方 ::制暫影響:;線= == = =之:=構包括更新上述控制暫存器中的增 用上庠曰令,其中上述管線式微處理器係用以使
暫存ί ΓΓ令之前之複數指令完成對複數旗標、複數 及-記憶體之所有修改,以及用以在提取:
::序令之下一個指令之織所有緩衝 =入’上㈣逮執行條件分支指令之方法包括根據 ^上述控制暫存器中的上述控制值將—條件分支指令包括 =指令集架構中;因應上述序列化指令而由上述管線 ;處理器之複數執行單元更新上述控制暫存器中的上述 控制值’由上述管線式微處理器之—提取單元根據儲存於 上述控制暫存n巾的上述控制值進行提取、解碼、以及無 條件地、正確地解析並引退上述條件分支指令而不將上 述條件分支指令配送到上述執行單元進行解析。 本發明之一優點在於提取單元不需配送(dispatch)快 速條件分支(Fast Conditional Branch,FCB)指令到執行 管線即可解析並引退FCB指令,因此使得FCB指令在執 行上能夠比傳統的條件分支指令更快。此外,在程式設令十 者使用FCB指令的情況下,本發明之提取單元正確地執行 CNTR2326I〇〇-TW/Q6QS-A42UQTW-f 12 201030612 FCB指令能夠排除傳統的條件分支指令容易發生的錯誤分 支預測以及校正。本發明之另一優點在於解析以及引退 FCB指令時’ FCB指令所佔用的微處理器資源比傳統的條 件分支指令更少’舉例來說,因為FCb指令不需被配送至 執行官線,所以不會佔用暫存器別名表(Register AHas Table RAT)、預留站(郎订丫如⑽、執行單元、 或重排緩衝器(ReOrder Buffer,ROB)的空間。 【實施方式】 如上所述’關於傳統技術的缺點在於其依賴微處理器 &定是否可於管線中早些解析—條件分支指令,如果決定 的結果為否,則微處理器必須預測該條件分支指令,且如 果誤預測,則微處理器因為所需進行的校正(即清除 (flushing)、自正確的位址提取、以及執行)而付出代價 (penalty)。本發明之發明人觀察到有些時候程式設計者 ❿在編寫程式時’知道或絲控制相關於_分支條件狀態更 新的情況,且該分支條件狀態將於該程式中被一條件分支 指令所使用。特別是,程式設計者所知道的某些特定的分 支條件狀態在特定的時候是靜態的(static)。本發明之發 明人即利用此觀察在一微處理器的指令集中包括一特別^ 型的條件分支指令(往後在此說明書中即以快速條件分支 指令(FCB指令)稱之),用以指示微處理器於管線前期使 用靜態分支條件狀態非選擇性地、正確地解析位於提取單 元中的該FCB指令,而非傳送該FCB指令到執行 CATO2W«?-7W0608-A42130TW-f 卞匕戈* 201030612 解析’亦料㈣FCB指令騎 FCB指令傳送至執行單J::及並未將該 指-具有明=: 另外’立即正確地解析該fcb ^ °FCB#^ ::广率的微處理器:微控:== ::=:_)單元之微定序器)更為明顯,如此後 在此章節切述為之管線式微處理器之實施例,程式 設計者可在程式中使用FCB指令特殊類別之條件分支指令 取代或加上原有的正規條件分支(N_ai㈤出― B^ch ’ NCB)指令,以改善程式執行_。純於 才曰7 FCB私令使程式設計者能夠指示微處理器總是正確❿ 地解析並引退位於微處理器之提取單元中的該fcb指令, 而非將該FCB指令發送至微處理器之執行單元去進行解析 與引退’從而節省所需之管線式微處理器的時脈週期。也 就是說’ FCB指令讓程式設計者能夠指示微處理器在不需 要檢查程式巾是否有其它比該⑽指令更老舊的指令尚未 更新FCB指令之條件狀態的情況下,根據該FCB指令之 條件狀態正確地解析並引退該FCB指令。由於程式設計者 CNTR2326I00-TW/O60S-A42l3OTW~f 14 201030612 ==:::=:二條件狀態並一 狀態總是能夠 /NCB^令來說,這卻是無法達到的。特別需要注 ::疋’此章節之實施例是能夠正確地解析並引退位於提 取早疋中FCB指令的微處理器,其不同於傳統微處理器其 包括一分支預測器預測位於提取單元中的傳統條件分支指 令’進-步說明,因為傳統微處理器所進行的分支預測可 能不正確’使得執行單元紐正確地解析該傳統條件分支 指令,所以造成提取單元無法引退該傳統條件分支指令。 相較之下,在本發明所述之實_巾,提取單元總是能夠 正確地解析;FCB指令,所以使得提取單元能夠引退該fcb 指令。 第1圖係根據本發明所述之微處理器1〇()之方塊圖。 在一實施例中,微處理器1〇〇儲存使用者程式於一外部記 憶體(未繪示),使用者程式包括作業系統、應用程式、 基本輸入輸出系統(Basic Input Output System,BIOS )、 或其它類別的程式’可為程式設計者所編寫、轉譯 (translate )、或編譯成微處理器的原生(native)指令集。 指令快取106自外部記憶體中提取使用者程式並暫時儲存 最常被提取的指令。在一實施例中,指令快取1〇6位於微 處理器100中’在其它實施例中’指令快取106可位於微 處理器100之外部。 微處理器100的提取單元104自指令快取1〇6中提取 OV7K252卿-7W〇608-A42130TW-f 201030612 指令,提取單it 1G4包括指令解㈣⑽ 取指令的類別’自指令快取106中所提 所提 指令以及正規終上述正規齡包括職料2吻 規指令。正規指令係由微處理器1〇〇的 "他正
^處理器_蚊了—條件分支指令⑽βΓ令^eB 才曰令)的正確方向(direeti〇n)以及正確值址時便 正確蘭析該條件分支指令,此不同於預_條件分支^ 令之另-微處理器’因為該微處理器可能發現該預測是^ 正確的而必須進行校正。 不
FCB指令在微處理器1〇〇之提取單元104中被正確地 解析並引退。微處理器刚之複數執行單元138用以執行 正規指令,包括NCB指令。微處理器1〇〇之引退單元144 用以引退正規指令,包括NCB指令。條件分支指令指定 (specify) 了一分支條件與一分支目標位址,處理器檢查 一儲存之分支條件狀態以決定其是否滿足由該條件分支指 令所指定之一條件,意即,決定該條件分支指令之方向。
如果滿足該條件,則分支方向為「被取用」,否則,分支 方向為「未被取用」;如果該分支方向被取用,則該分支 目標位址指定了下一個要執行的指令的位址’反之,如果 該分支方向未被取用,則下一個要執行的指令為該FCB指 令或該NCB指令之後的下一個指令,關於該FCB指令以 及該NCB指令的處理程序將於後續段落中詳盡敘述❶ 在一實施例中,指令解碼器1〇8包括一指令轉譯器用 以將微處理器100中一巨集指令集之巨集指令(例如:x86 αΝΤΈ2326Ι00-ΤΨ/060^Α42\30ΎΨ-ϊ 16 201030612 指令集架構)轉譯為處理器100中-微指令集架構之微指 令。該指令轉譯器可將微指令轉譯為一 FCB指令、NCB 指令、或在此章節中所述及之其它指令。 指令解碼器1〇8決定一提取之指令是否為一 FCB指令 或NCB指令,如果解碼之指令為NCB指令或其它正規指 ,,則指令解碼器108將正規指令146轉送(transfer)至 多工器132 ;如果解碼之指令為一 FCB指令,則指令解螞 器1〇8將FCB查見指示(seen indication) 164的值設為真 _並將之傳送至提取單元104中之FCB方向解析器122,同 時,指令解碼器108把由該FCB指令所指定之一 FCB條 件166轉送至FCB方向解析器122,舉例來說,FCB條件 166可為位元開啟(bit 〇n)、位元關閉(bit off)、相等 於、小於、或大於,且熟習此技藝人士可知在快速分支條 件狀態(Fast Branch Conditional State,FBCS) 124 中的位 元或欄位也可由FCB條件166所指定。指令解碼器i〇8亦 把由FCB指令所指定之FCB目標位址162轉送至提取單 ® 元104中的多工器114。 FCB方向解析器122解析位於提取單元1〇4中的FCB 指令之方向。為因應上述FCB查見指示164、FCB條件 166、以及FBCS 124,FCB方向解析器122產生FCB方向 172給提取位址控制器126。如果FBCS 124滿足FCB條件 166,則FCB方向172為真;反之,則FCB方向172為假。 提取單元104總是能正確地解析並引退FCB指令,提取單 元104並不配送FCB指令到執行單元138與引退單元 CNTR2326IOO-TW/060^A42130TW-f 17 201030612 144,因為提取單幻04會自行執行並引退所有的fcb指 〇 就意義上來說程式設計者保證沒有任何未引退的指令 要比改變FBCS m的FCB指令更老舊,所以程式設計者 藉由使用FCB指令而非NCB指令,可以設置(繼打)FBCS 124或由該FCB指令所指定為分支條件狀態的FBcs 124 之至少一部为,在相關的時框(timeframe )中為靜態的。 FBCS 124可以是微處理器卿中許多不同分支條件狀態中 的其中之一’且因為各種不同的原因而為靜態的。在一實籲 施例中,程式設計者可設置FBCS 124是靜態的,因為根 據第5圖與第6圖,FBCS 124為異常(exception)狀態 586。在一實施例中,程式設計者可設置FBcS 124是靜態 的,因為根據第7圖與第8圖,FBCS 124為微碼實作指令 (Microcode Implemented Instruction,MII)狀態 786。在 一實施例中,程式設計者可設置FBCS 124是靜態的,因 為根據第9圖與第10圖,FBCS 124係由微處理器1〇〇指 令集架構之一序列化(serializing )指令所寫入。 _ 在一實施例中,程式設計者可設置FBCS 124是靜態 的,因為FBCS 124是僅能由微碼唯讀記憶體306中的微 碼常式(routine)所存取(即寫入或讀取),並且當提取 單元讀取該狀態以解析一位於一微碼常式中之一 FCB指令 時,該微碼常式保證該狀態為靜態的。其中FBCS 124被 複數微碼常式中的複數FCB指令使用,而上述微碼常式係 負責實作微處理器之一指令集架構中分別對應FCB指令之 CATO2J25/〇l7W0608-A42130TW-f 18 201030612 不同類別的指令。該微碼常式保證該狀態為靜態的運作细 節如::每個微碼常式包含-寫入該狀態之指令,亦包含 下一 ♦曰令讓上述管線於歸還控制給使用者程式之前將微處 理器100中所有較新的指令清除掉,其中該使用者程式包 括由該微碼常式所實作之指令、或由該微碼常式所處理的 異常所產生之指令。在一實施例中,該狀態是當微處理器 100自-重置條件啟動(bootup)時,由該微碼常式(一個 或多個才曰々)所寫入。該狀態戶斤指定的值係由多重微碼常式 所全域使用(globally used),而非由個別微碼常式局部使 用(locally used)。在另一實施例中,該狀態實際上存在 於引退單元144中的重排緩衝器。 ,一實施例中,FBCS 124可為微處理器1〇〇中的通用 暫存器(generalpurposeregister),或個別的位元;然而, 由於微處理器1〇〇執行提取單元1〇4中的FCB指令而且不 會確保該FCB指令會接收到任何其它未引退指令更新 肇FBCS 124的結果,所以為了保持程式的正確運作,程式設 β十者必須保證FBCS 124對於程式中比該FCB指令更老舊 的其它指令是靜態的。 提取單元1〇4亦包括分支預測器118,用以分別產生 一預測目標位址丨56與一預測方向158給提取單元1〇4之 多工器m與提取位址控制器126,以因應提取單元1〇4 之和令指標暫存H 112產生—提取位址168給指令快取 1〇6’特別是’分支預測器118向提取位址控制器指出, 如果提取位址168指定了先前存有一條件分支指令的一快 CNTR2326IO〇-TW/060%-AA2n〇T^-f 201030612 取列(cache line) ’則預測目標位址156與預測方向158 為有效的(valid)。 提取單元104之提取位址控制器126產生一多工選擇 信號152給提取單元1〇4之多工器114選擇提取位址168 ' 以自指令快取106中提取下一個指令。為因應NCB誤預測 · 指示178的值為真,提取位址控制器126產生該多工選擇 信號152以選擇NCB正確目標位址Π6。除此之外,為因 應FCB方向Π2指示一 FCB指令被取用,提取位址控制 器126產生該多工選擇信號152以選擇上述fCb目標位址 ⑩ 162 °除此之外,為因應預測方向ι58指示ncb指令被取 用,提取位址控制器126產生該多工選擇信號152以選擇 上述預測目標位址156。否則,提取位址控制器126產生 該多工選擇信號152以選擇下一指令指標位址(Next
Sequential IP(Instruction Pointer) address ? NSIP ) 154 〇 NSIP 154代表指令快取i〇6中在提取位址之後的下一個位 址。位址増量電路(address increment circuit) 116每次於 指令指標暫存器112產生一提取位址168時都產生該NSIP ⑩ 154。 在一實施例中’分支預測器118包括一分支位址快取 (未繪示),當提取位址168所指示的位址落於該分支位 址快取時’分支預測器118則產生上述預測目標位址156 與預測方向158給提取位址控制器126。微處理器1〇〇以 先則所執行的條件分支指令的位址與解析目標位址去更新 該分支位址快取,而且微處理器1〇〇以分支預測資訊去更 CNTR2326IOO-TW/Q60S-A42130TW-f 20 201030612 的位址快取’其中分支預測資訊係根據先前所執行 =件分支指令的解析方向所得到。在一實施例中,上述 •二—^測資訊包含預測目標位址156以及預測方向158。
• # a施例巾,由於提取單元104正確地解析並引退FCB 二I \所以微處理1 1〇0不會根據所執行的FCB指令去更 、〔刀支位址快取。因為提取單元104總是正確地解析並 FCB私令,使得微處理器在處理FCB指令時,能夠 •姆/也避免造成分支誤預測代價;反之如下所述,傳統的 #微處f器在處理⑽指令時可能會造成分支誤預測代價的 ^旨令指標暫存器112接收並儲存由提取單元刚之多 盗U4所選擇的位址,指令指標暫存器ιΐ2㈣提取位 址168 Ά令快取1〇6以自指令快取⑽中提取一快取列。 位於提取單元1〇4之外的多工器132自兩個來源接收 1曰々並從中選擇其一。其中第一個來源是從指令快取106 所提取且由提取單元1〇4所提供的正規指令第二 籲:來源是由微處理器刚之微碼單幻28所提供的正規^ m微碼單元U8包括減個微碼常式,舉例說明, 該微碼常式可用以實作複雜指令(complex instruction)並 處理,定異常狀況。經過思忖後,在某些實施例中可不將 微碼單元128包括在微處理器 100 中。 微處理器100包括一暫存器別名表134,用以決定正 規,令⑽與148的運算元相依性,暫存器別名表m在 決定運算元相依性之後,將正規指令146與148轉送至 處理器100之一指令排程器136。在一實施例中,微處理 娜 7W0608-A42130TW-f 201030612 括一重排緩衝器(未繪示’但在-實施例中係 人的杳l 70144裡)用以儲存微處理器100中未引退指 7的資訊,該重排緩衝器確保以程式順序引退正規指令, 即便正規指令可能不以程式順序執行。暫存器別名表… 於配送正規指令146與148到一保留站(後續將進一步敘 述)之前,在重排緩衝器中為每個指令配置(aii〇cate) 一 空間(entry)。指令排程器136排程正規指令146盥148 以便將之發送至執行單元m去執行。在一實施例中微 處理器100包括複數個保留站(未緣示)用以當作指令仔參 列(queue)儲存等待運算元的指令,該指令在等到運算元 時便可由指令排程器136將其發送至執行單元138,此普 遍在該技術領域中被稱為亂序執行(〇ut_〇f〇rder execution)微處理器。在一實施例中,微處理器1〇〇以亂 序執行指令’且指令排程器136使用暫存器別名表134所 產生的相依性資訊以排程適當的指令執行。 NCB指令根據正規分支條件狀態(N〇rmal Branch
Condition State,NBCS) 142 指定一分支條件。NBCS 142 ⑩ 可以正規指令的結果去更新,其中該正規指令係指在NCB 指令之前被提取的指令。因此,指令排程器136等待直到 用以更新NBCS 142的較老舊指令已經產生結果且執行單 元138取得該結果之後,再將NCB指令發送至執行單元 138。在一實施例中,上述較老舊指令為微處理器中用以更 新NBCS 142並且比NCB指令更老舊的其它指令中最新的 一個指令。。NBCS 142可儲存於可見於微處理器100架構 CNTR2326I00-7W/0^-A42130TW-f 22 201030612 :暫如通用暫存器以及/或條件碼暫存器,舉例來 «兒 了為x86的EFLAGS暫存器。 之執行單元138執行所有的正規指令146 ^ 148 ’包括腦指令。執行單元138使用NBCS 142去 齡’如果NBCS 142滿足卿指令所指定的 刀支條件’則該分支被取用並且以⑽指令所指定的分支 目標位址去提取指令;如果NBCS 142不滿足则指令所 指定的分支條件’則該分支不被取用,並且提取單元1〇4 或微碼單元128分別自指令絲⑽或微碼唯讀記憶體 3〇6中位於該NCB指令位址之後的下一個位址去提取指 令0 在一實施例中,微處理器於第一或第二分支條件狀態 分別滿足上述第一或第二類別條件分支指令所指定之一分 支條件時,提取上述第一或第二類別條件分支指令所指定 之一目標位址中的指令,以正確地解析上述第一或第二類 別條件分支指令;並且於上述第一或第二分支條件狀態不 滿足上述第一或第二類別條件分支指令所指定之一分支條 件時’提取下一個指令。 執行單元138將所有執行後的正規指令,包括nCB指 令’轉送至引退單元144。引退單元144記錄發送至執行 單元138的指令以及其對應之執行狀態,特別是,引退單 元144寫入更新NBCS 142的正規指令結果174。引退單元 144於更新NBCS 142的指令已經將正規指令結果174寫入 到更新NBCS 142之後,引退該NCB指令。引退單元144 CNTR2326I00-TW/Qm-hA2130TW-f 23 201030612 預測=178給提取單元刚之提取位址控 ㈣126以不刀支預測器118是否誤預測該叱 。 如果NCB指令被誤預測,則微處理器100將程式曰^序 上比該NCB指令較新的所有指令從管線中清 = 144引退該NCB指令;提取位址控制器126產生多 #號152以選擇由引退單元144所提供之腦 φ 址m,其中NCB正破目標位址176係先前由執行單元= 所解析,J•經由多工11114選擇後被载人指令指標暫存器 112 ;提取單元1G4以指令減暫存器112提供提取位址 168自指令快請中提取下-個指令。因此,針= 指令的處理,微處理器可能造成分支誤賴代價,而 FCB指令的處理則沒有此問題。 …在-實施例中,提取單元104與引退單元144 官線階段數#大約為10,所續取單元1()4可正確地: 並引退FCB指令,且比NCB指令必須由執行單元138 = 行、由引退料144引退要快均多時脈週期。此外
分支預測器118可能誤預測一 NCB指令的情況下, 计者在程式巾使FCB指令將可比使用NCB指令節 多時脈週期。 丈 第2a與2b圖係根據本發明所述之微處理器執行條件 刀支&令之流程圖。該流程圖所述之微處理器乃依據第1 圖中所不之微處理器1〇〇,流程從方塊2〇2開始。 在方塊202 ’提取單元104自指令快取1〇6中提取一 條件分支指令,該條件分支指令為一 NCB指令或pcB指 CNTR2326I00-TW/(m%-Ml 130TW-f 24 201030612 :執行單元138執行NCB指令,引退單元144引退NCB 才曰7 ’而微處理器1〇〇之提取單元1〇4執行並引退FCB指 令。流程同步往下進行到方塊2〇4與232。 在方塊204,提取單元1〇4中的指令解碼器1〇8解碼 該條件分支指令,流程往下進行到方塊2〇6。 在方塊206,指令解碼器1〇8決定從指令快取1〇6中 =提取的該條件分支指令是NCB指令或FCB指令’如果 是1^03指令,則流程往下進行到方塊252 ;反之,則流程 籲往下進行到方塊208。 在方塊208,指令解碼器1〇8將FCB查見指示164與 FCB條件166轉送至FCB方向解析器122,並且產生fcb目 標位址162給第1圖中的多工器114。FCB條件166向fcb 方向解析器122指示由FCB指令所指定的分支條件。如果滿 足了 FCB條件166 ’則FCB目標位址162是由FCB指令所指 疋的分支目標位址,而且是指令快取1〇6中被提取的指令的提 取位址168。流程往下進行到方塊212。 在方塊212,FCB方向解析器122使用第1圖中的FBCS 124去解析FCB方向172,並且提供FCB方向172給提取單 凡104中的提取位址控制器126。如果FBCS 124滿足了 fcb 條件166 ’則將FCB方向172解析為被取用;反之,則將FCB 方向172解析為未被取用。流程往下進行到決策方塊214。 在決策方塊214,FCB方向解析器122決定FCB條件166 是否被滿足’如果FCB條件166被滿足了,則流程往下進行 到方塊216 ;如果FCB條件166沒有被滿足,則'流程往下進 QWi2326I00-TW/0606-A42n0TW-{ 25 201030612 行到方塊218。 在方塊216,提取位址控制器126設置多工選擇信號152 傳送至多工器114以挑選FCB目標位址162,這代表了 FCB 方向172被解析為被取用’並且提取單元1〇4從一提取位址 168提取下一個指令’其中提取位址168為該FCB指令所指定 的FCB目標位址162。流程往下進行到方塊222。 在方塊218 ’提取位址控制器126設置多工選擇信號152 傳送至多工器114以挑選NSIP 154,這代表了 FCB方向172 被解析為未被取用,並且提取單元104從一提取位址168提取參 下一個指令,其中提取位址168即為NSIP 154。流程往下進 行到方塊222。 在方塊222,將方塊216或218中所挑選的位址載入至 指令指標暫存器112。流程往下進行到方塊224。 在方塊224,提取單元1〇4從由指令指標暫存器112 所提供之提取位址168提取下一個指令。如果該fcB指令 被取用,則提取位址168是由該FCB指令所指定的FCB目標 位址162 ;如果該FCB指令未被取用,則提取位址168是指 _ 令快取106中位於該FCB指令位址之後的下一個位址。流程 往下進行到方塊226。 在方塊226’提取單元1〇4引退該FCB指令,而非配送 該FCB指令至執行管線,需要注意的是引退單元144引退正 規指令,並且提取單元104引退從指令快取1〇6中所提取出 的該FCB指令。然後流程結束於方塊226。 在方塊232 ’分支預測器118根據提取位址168預測 CNTR2326I00-TW/060^-A42130TW-f 26 201030612 一條件分支指令之分支方向。分支預測器118針對NCB指 令產生一預測目標位址156與一預測方向158。提取單元 104將該預測目標位址156與該預測方向158,連同所提取 的NCB指令146—併在管線中往下遞,相較 之下,FCB指令在提取單元104中可以完全且正確地被提取、 執行、以及引退。流程往下進行到決策方塊234。 在決策方塊234 ’提取位址控制器126檢查由分支預測 器118所輸出的預測方向158,如果預測方向158為被取 ❹用’則流程往下進行到方塊236 ;如果預測方向158為未 被取用,則流程往下進行到方塊238。 在方塊236 ’提取單元104中的提取位址控制器126產 生多工選擇信號152以選擇預測目標位址156。流程往下進 行到方塊242。 在方塊238 ’提取單元104中的提取位址控制器126產 生多工選擇信號152以選擇NSIP 154。流程往下進行到方塊 242 〇 ~ 在方塊242,提取單元104中的指令指標暫存器112 載入方塊236或238所選擇的位址。流程往下進行到方塊 244。 在方塊244,提取單元104以提取位址168自指令快 取106中提取下一個指令。然後流程結束於方塊244。 在方塊252,提取單元1〇4將NCB指令146轉送至指 令排程器136,提取單元1〇4中的指令解碼器108將NCB 指令146輸出至多工器132,多工器132選擇NCB指令146 〇V7??222d^7W〇608-A42130TW-f 27 201030612 並將之傳送至暫存器別名表134,在此之前,暫存器別名 表134先決定NCB指令146之運算元相依性,並且配送 NCB指令146至指令排程器136。流程往下進行到方塊 254。 在方塊254,指令排程器136等待直到用以更新NBCS 142且比該NCB指令146更老舊的所有指令都已將其結果 寫入至NBCS 142之後,再將該NCB指令146發送至執行 單元138,如此一來就能破保在執行單元Mg解析NCB指 令146之分支方向之前,NBCS 142是穩定且正確的。流程⑩ 往下進行到方塊256。 在方塊256,指令排程器136排程執行單元138以執 行該NCB指令146。流程往下進行到方塊258。 在方塊258’執行單元138使用NBCS 142解析該NCB “々146’並且將其結果轉送至引退單元144 <5如果nbcS 142滿足了該NCB指令146所指定的分支條件,則該分支 被解析為被取用;反之,則該分支被解析為未被取用。此 外,執行單元138計算NCB正確目標位址176。流程往下⑩ 進行到方塊262。 在方塊262’引退單元144將方塊258中所決定的NCB 正確目標位址176轉送至提取單元1〇4。如果該^^^^指令 H6的分支為被取用,則NCB正確目標位址176為該NCB 指令146所指定的分支目標位址;如果該NCB指令146 的分支為未被取用,則NCB正確目標位址176為該NCB 指令146的位址之後的下一個記憶體位址。流程往下進行 CNTJi2326I0^rW/〇608-A42l30rm-f 28 201030612 到方塊264。 在方塊264’引退單元144比較NCB正確目標位址176 與預測目標位址I56 ’並且比較NCB正確方向與提取單元 104所轉送之預測方向158。上述比較是為了決定預測目標 位址156與預測方向158是否正確。之前在方塊232,提 取單元104把預測目標位址156與預測方向158,以及所 提取的該NCB指令146 —併在執行管線中往下遞送。流程 往下進行到決策方塊266。 在決策方塊266,引退單元144決定NCB正確目標位 址176是否與預測目標位址156相符(match),以及NCB 正確方向是否與預測方向158相符,如果都相符,則表示 分支預測118正確地預測了目標位址與分支方向,且流程 往下進行到方塊268 ;反之’則流程往下進行到方塊272。 在方塊268 ’引退單元144引退NCB指令146。由於 分支預測器118正確地預測了該分支並且也從指令快取 106中在預測目標位址156取出正確的指令’所以引退單 元144不需要執行額外的步驟。流程結束於方塊268。 在方塊272,為因應NCB正確目標位址176與預測目 標位址156不相符,或者NCB正確方向與預測方向158 不相符,所以引退單元144產生如第1圖所示的NCB誤預 測指示178值為真並將之傳送到提取單元1〇4中的提取位 址控制器126。流程往下進行到方塊274、276、以及278。 在方塊274,微處理器100把在程式順序上比NCB指 令146較新的所有指令從執行管線中清除掉’此一清除動 C歷怨麵-7W/0608-A42130TW、f 29 201030612 作是因為管線中的指令是從不正確的提取位址所提取的, 所以管線中的指令都是不合法的,因此需要清除執行管 線。流程結束於方塊274。 在方塊276,引退單元144引退NCB指令146。流程 結束於方塊276。 在方塊278 ’提取皁元104中的提取位址控制器126產 生多工選擇信號152以選擇NCB正確目標位址176。流程往 下進行到方塊282。 在方塊282 ’指令指標暫存器in載入在方塊278中鲁 由多工器114所選擇的位址,也就是NCB正確目標位址 176。流程往下進行到方塊284。 在方塊284,提取單元104以提取位址168從指令快 取106中提取下一個指令’其中提取位址168即為儲存於 指令指標暫存器112中的位址,也就是NCB正確目標位址 176。流程結束於方塊284。 第3圖係根據本發明另一實施例所述之微處理器之方 塊圖。第3圖與第1圖所示之微處理器1〇〇大致上類似,❹ 然而,在第3圖中繪示了微碼單元丨28的細節,但並未繪 示提取單元104的細節。第3圖中的微碼單元128所包含 的許多元件都相似於第1圖中的提取單元104,且類似編 號的元件所執行的功能也是類似的。 第3圖與第1圖其中一個不同之處在於,微碼單元128 是從一微碼唯讀記憶體306提取微碼指令’而不是如第1 圖所示從指令快取106提取指令。微碼唯讀記憶體3〇6儲 30 201030612 指令用以執行微處理器100處理使用者程式指 ^ ^ 作因此,儲存於微碼唯讀記憶體306中的微 η非使用者程式’因為其並非屬於使用者程式的-+β #+就疋說,微處理器1〇0的設計者所發展的微碼常 式=儲存於微碼唯讀記憶體寫中,而微處理器⑽的一 般^者㈣其賴寫岐㈣程讀存㈣統記憶體以 及’電腦系統之-非揮發⑽存媒體 ’例如:硬碟。 例來說’微碼常式所負責執行的動作之—是異常處 ,(exception handling)’微碼唯讀記憶體3〇6包括異常處理 常式(exception handler)用以處理使用者程式指令所產生的 八常例如.不合法的操作碼(〇pc〇de )異常、除以零異 常中斷、以及分頁失敗(page fault ),以上的異常例子 係用以說明特別相關於微處理器100的微架構的微異常 (micro-exception),而非由微處理器1〇〇的巨集架構所 指定的異常。舉另一例子,微碼常式包括用以執行微處理 器100之指令集中複雜且不被頻繁執行的指令的程式碼, 諸如:三角函式指令、讀取/寫入模組特定暫存器(read/write model specific register)指令、以及序列化指令(將於第9 圖與第10圖中進一步說明)等等可能更新控制數值、使微 處理器100處於一新的模式或狀態,例如:改變分頁模式、 保遵模式、更新描述符表(descriptor table )、或將快取列 無效化(invalidate)。因此’微碼單元128是微處理器1〇〇 的第二個提取單元’自微碼唯讀記憶體306提取並解碼微 碼常式指令,並且當提取的是FCB指令時,亦能正確地解 CNTR2326I00-TW/060^A42n0TW^ 31 201030612 析並引退該FCB指令。 第3圖與第1圖的另一個不同之處在於’微竭單元us 不包括第1圖中的分支預測器U8,所以在一般正常流程 中(意即’未接收到FCB指令、不需修正誤預測的NCB 才曰7 未發生異常、或警示(trap)微碼以實作使用者指令等 等於本說明書中提及的狀況),微碼單元128總是會「預 測」一條件分支指令為未被取用,也就是說微碼單元128 從NSIP 154提取指令,而非從例如第】圖中的分支預測器 118所提供的預測目標位址提取指令。然而,經過思忖後,籲 雖然微碼單元128可能較小、較不複雜、以及較不耗能, 但在其它實施例中,微碼單元128亦可包括一分支=測 器,用以執行與第i圖中的分支預測器118類似的功能。 —不過如第i圖的提取單元1()4—樣,第3圖中的微瑪 單元128係用以提取以及無條件地、正確地解析並引退 FCB指令’如以下於第4圖中詳述。需要注意的是,經過 思忖後’在-實施例中,提取單元1〇4和微喝單元US兩 者皆用以提取以及無條件地、正確地解析並引退FCB指❹ 令;而在其它實施例中’僅提取單元刚和微解元128 之-者用以提取以及無條件地、正確地解析並引退FCB指 令。 第4圖係根據本發明第3圖所示之微處理If 1Q〇U . 作流程圖。第4圖中所示的許多執行步驟與第2圖類似, 然而’第2圖中由提取單元1〇4所執行的步驟在第4圖中 係由微碼單元m所執行’另外,如上所述,微碼單元128 CNTR2326I00-TW/0 舰·Α42130ΎΨ4 32 201030612 不會執行分支預測,因此,第4圖並未包括與分支預測相 關之運作步驟。流程開始於方塊402。 在方塊402,微碼單元128自微碼唯讀記憶體3〇6中 提取一條件分支指令,該條件分支指令為一 NCB指令或 FCB指令’執行單元138執行NCB指令,而引退單元144 引退NCB指令’微處理器1〇〇中的微碼單元128則執行並 引退從微碼唯讀記憶體306所提取的FCB指令。流程往下 進行到方塊404。 在方塊404,微碼單元128中的指令解碼器1〇8解碼 該條件分支指令。流程往下進行到方塊4〇6。 在方塊406,指令解碼器108決定自微碼唯讀記憶體 306所提取的該條件分支指令為一 ncb指令或FCB指令, 如果是FCB指令,則流程往不進行到方塊452;如果是ncb 指令’則流程往下進行到方塊408。 在方塊408 ’指令解碼器1〇8將FCb查見指示ι64以 及FCB條件166轉送至FCB方向解析器122,並且產生 FCB目標位址162給第3圖中的多工器ii^FCB條件166 向FCB方向解析器122指示由fCB指令所指定的分支條 件。如果滿足了 FCB條件166 ’則FCB目標位址162為 FCB指令所指定的分支目標位址,並且是上述從微碼唯讀 記憶體306提取指令所根據的提取位址168。流程往下進 行到方塊412。 在方塊412,FCB方向解析器m使用第3圖中的FBCS 124解析FCB方向172,並且提供FCB方向172給微碼單 CNm2326iOO-7W/〇60^A42l3OTN-f 33 201030612 元128中的提取位址控制器126。如果FBCS 124滿足了 FCB條件166 ’則FCB方向172被解析為被取用;反之, 則FCB方向172被解析為未被取用。流程往下進行到方塊 414。 在方塊414,FCB方向解析器122決定是否滿足了 FCB 條件166,如果是,則流程往下進行到方塊416;如果否, 則流程往下進行到方塊418。 在方塊416,提取位址控制器126設置多工選擇信號 152並傳送給多工器ι14以選擇FCB目標位址162,這代❹ 表了 FCB方向172被解析為被取用,並且微碼單元128自 一提取位址168提取下一個指令,其中提取位址168係指 該FCB指令中所指定的FCB目標位址162。流程往下進行 到方塊422。 在方塊418,提取位址控制器126設置多工選擇信號 152並且傳送至多工器114以選擇NSIp 154,這代表了 fcb 方向172被解析為未被取用,並且微碼單元128自一提取 位址168提取下一個指令,其中提取位址168係指該fcb❹ 指令後的NSIP 154。流程往下進行到方塊422。 在方塊422,於方塊416或418中所選擇的位址被載 入至指令指標暫存器112。流程往下進行到方塊424。 在方塊424,微碼單元128從指令指標暫存器112所 提供的提取位址中提取下一個指令,如果該FCB指令為被 取用’則提取位址168為該FCB指令所指定之FCB目標 位址162,如果該FCB指令為未被取用,則提取位址168 CNTR2326I00'TW/060^A42130TW-f 34 201030612 為微碼唯讀記憶體306中位於該FCB指令位址之後的下一 個位址。流程往下進行到方塊426。 在方塊426,微碼單元128引退該FCB指令,而不將 之配送至執行管線’值得注意的是’引退單元144引退NCB 指令’而且微碼單元128引退自微碼唯讀記憶體306所提 取的該FCB指令。流程結束方塊426。 在方塊452,微碼單元128將NCB指令148轉送至指 令排程器136。微碼單元128中的指令解碼器ι〇8將NCB • 指令148輸出至多工器132以選擇微碼單元i28之指令(即 NCB指令148)給暫存器別名表134。事前,暫存器別名 表134先決定NCB指令148之運算元相依性,並且將NCB 指令148配送至指令排程器136。流程往下進行到方塊454。 在方塊454’指令排程器136等待直到用以更新NBCS 142並且比NCB指令148更老舊的所有指令都已將其結果 寫入NBCS 142之後,再將NCB指令148發送至執行單元 138’這麼一來便能確保在執行單元138解析NCB指令148 之分支方向之前,NBCS 142是穩定且正確的。流程往下進 行到方塊456。 在方塊456,指令排程器136排程執行單元138以執 行NCB指令148。流程往下進行到方塊458。 在方塊458 ’執行單元us使用NBCS 142解析NCB #曰令148’並且將結果轉送至引退單元144。如果NBCS 142 滿足了 NCB指令148所指定的分支條件,則該分支被解析 為被取用;反之,則該分支被解析為未被取用。此外,執 CNTR2326IOO-TW/06QE-A42130TW-f 35 201030612 行單元138計算NCB正確目標位址176。流程往下進行到 方塊462。 在方塊462,引退單元144將方塊458中所決定的NCB 正確目標位址176轉送至微碼單元128。如果NCB指令148 所指定的分支條件為被取用,則NCB正確目標位址176 為NCB指令148所指定的分支目標位址;如果NCB指令 148所指定的分支條件為未被取用,則NCB正確目標位址 176為NCB指令148位址之後的下一個記憶體位址。流程 往下進行到決策方塊466。 在決策方塊466,引退單元144決定該NCB指令的正 確方向是否為被取用’如果是,則微碼單元128正確地「預 測」該分支方向’然後流程往下進行到方塊468 ;反之, 則流程往下進行到方塊472。 在方塊468 ’引退單元144引退NCB指令148。由於 微碼單元128正確地預測了分支方向且已從微碼唯讀記憶 體306中的NSIP 154 &取出正確的指令,所以引退單元 144不需要執行額外的步驟。流程結束於方塊468。 在方塊472,引退單元144產生了值為真的NCB誤預 測指示178 (參照第3圖)給微碼單元128中的提取位址 控制器126’以因應決定上述NCB指令之正確方向為被取 用,意即微碼單元128「誤預測」該NCB指令。流程往下 進行到方塊474、476、以及478。 在方塊474’微處理器1〇〇將執行管線中程式順序比 NCB指令148更新的所有指令都清除掉。上述執行管線中 CNm2326I00-TW/060%-A42l30TW-{ 201030612 的清除是因為管線中的指令是提取自錯誤提取位址168。 流程結束於方塊474。 在方塊476,引退單元144引退NCB指令148。流程 • 結束於方塊476。 • 在方塊478 ’微碼單元128中的提取位址控制器126 產生多工選擇信號152以選擇NCB正確目標位址176。流 程往下進行到方塊482。 在方塊482,指令指標暫存器112載入方塊478中s Φ 由多工器114所選擇的位址,即NCB正確目標位址176。 流程往下進行到方塊484。 在方塊484,微碼單元128自微碼唯讀記憶體306中 的提取位址168提取下一個指令’其中提取位址168係儲 存於指令指標暫存器112中,意即為NCB正確目標位址 176。流程結束於方塊484。 第5圖係根據本發明另一實施例所述之微處理器100 之方塊圖。第5圖與第3圖在許多方面是類似的,然而, 鲁 在第5圖所示之微處理器100中,引退單元144亦產生一 異常偵測指示582、一異常處理常式位址584、以及一異常 狀態586。異常狀態586包括了指定異常發生原因的資訊、 引發異常的指令的記憶體位址、以及/或下一個指令的位 址。在以下狀況,異常狀態586會被閂鎖(htch):該異 常狀態586包括了微處理器1〇〇的複數控制暫存器的複數 狀態位元,用以控制各種操作模式(例如以6控制暫存器 (CR register)),例如決定上述微處理器之一現行運作模 CNTR2326IOO-TW/0608~A42mTW-f 37 201030612 式;該異常狀態586包括了控制複數虛擬主機延伸(%1^&1 Machine eXtensi〇n,νΜχ)的複數位元(例如咖虛擬主 機延伸位元);該異常狀態586包括了控制分支條件旗標 (flag)的複數位元(例如x86EFLAGS暫存器),該異常 狀態58包括微處理器之一狀態暫存器中的複數位元,且上 述位元用以指定由上述使用者程式之複數條件分支指令所 指定為複數分支條件的複數旗標;該異常狀態586包括了 控制碼分段描述符(c〇de segment descript〇r)的複數位元 (例如x86碼分段暫存器分段描述符);該異常狀態 〇 包括了控制任務狀態分段描述符的複數位元(例如χ86任 務狀態分段位元);該異常狀態586包括了指定資料與位 址之一預設尺寸的複數位元(例如x86D位元);該異常 狀態586包括了指定微處理器1〇〇之一現行特權階段的複 數位元°在-實施例中’微處理器議的硬體保證被閃鎖 的異常狀態586不會在異常處理常式執行時有 且特別是直到提取單元104或微碼單幻28完成解析FCB 指令,除非是異常處理常式自己去改變異常狀態5%。 ⑩ 如果提取單元144即將提取由一異常條件所產生之一 指令,則提取單元144產生異常偵測指示582的值為真, 並將異常處理常式位址584提供給異常處理常式之微碼單 兀128之多工器114’其中異常處理常式係用以處理產生 的特定類別異常,並且提供描述關於該異常之資訊之 狀態584卩載入FBCS 124。引退單元144亦將異常偵測指 不582、異常處理常式位址584、以及異常狀態、提供給 CNTR2326I00-TW/060^-A42130TW-f 38 201030612 提取單元104。 第6圖係根據本發明第5圖所示之微處理器1〇〇之 作流程圖。流程由方塊604開始進行。 在方塊604,提取單元104自指令快取1〇6提取一使 用者程式指令(即正規指令與1?(::]8指令188),提取單元 1〇4之指令解碼器108(如第i圖所示)解碼該使用者程= 指令(即正規指令與FCB指令188),並且將指令146^ 送至執打管線(意即,多工器132、暫存器別名表134、指 令排程器136、執行單元138、以及引退單元144)去執行。 流程往下進行到方塊606。 在方塊606 ,指令146產生一異常,在一實施例中, 關於該異常之資訊儲存於重排緩衝器中,典型的狀況是, 異常條件在執行單元138中被偵測,且以該異常之資訊更 新重排缓衝器,然而,異常條件亦可於微處理器i⑻的其 它功能單元中被偵測。流程往下進行到方塊6〇8。 在方塊608,該指令成為了微處理器1〇〇中最老舊的 指令且已準備要引退。因此,引退單元144產生異常偵測 指示582的值為真,此外,引退單元144輸出異常處理常 式位址584與異常狀態586,且異常處理常式位址584與 異常狀態586係載入至fbCS 124以供該異常處理常式之 下一 FCB指令使用。流程往下進行到方塊612。 在方塊612,微碼單元128將異常處理常式位址584 載入至指令指標暫存器112。流程往下進行到方塊614。 在方塊614,微碼單元128以指令指標暫存器112中 CNTR2326I00-TW/060S-A42mTW-{ 39 201030612 的位址從微碼唯讀記憶體306中提取一微碼指令,然後指 令解碼器108解碼該微碼指令,特別是,指令解碼器1〇8 產生FCB查見指示164以指示該微碼指令是否為一 FCB 指令。流程往下進行到方塊616。 在方塊616,如果提取位址控制器126決定該指令為 一 FCB指令’則流程往下進行到方塊618 ;反之,則流程 往下進行到方塊622。 在方塊618,流程往下進行到第4a圖中的方塊408接 續執行以解析並引退該FCB指令,以及根據該FCB指令 的解析結果提取目標指令(意即,如果該FCB指令為被取 用,則從FCB目標位址162提取;如果該FCB指令為未 被取用,則從NSIP 154提取)。特別是,在第4圖中的方 塊412 ’微碼單元128中的FCB方向解析器122將使用於 方塊6〇8中被載入至FBCS I24的異常狀態586,並根據 FCB條件166解析FCB方向172。然後流程回到第6圖中 的決策方塊616。 在方塊622,微碼單元128將NSIP 154載入至指令指 標暫存器112。流程回到方塊614以提取下一個指令,指 令提取完畢之後,流程往下進行到方塊624。 在方塊624’微碼單元128之指令解碼器108將非FCb 指令配送至執行管線。流程往下進行到方塊626。 在方塊626 ’執行管線執行並引退該非FCB指令,然 後流程結束於方塊626。 儘管第5圖與第6圖已描述了本發明之一實施例,且 CM7?2^70^7W0608-A42130TW-f 201030612 在該實施例中,異常處理常式存在於微碼唯讀記憶體3% 並且FCB指令係由微碼單元128所解析與引退。而在其它 實施例中,異常處理常式可存在於指令快取1〇6 (例^ = 為作業系統的一部份)並且FCB指令係由提取單元1〇4所 解析與引退。 第7圖係根據本發明另一實施例所述之微處理器 之方塊圖。第7圖與第5圖在許多方面是類似的,然而, 在第7圖所示之微處理器100中,提取單元ι〇4產生一微 碼貫作指令偵測指示782用以指示一微碼實作指令 (microcode-implemented instruction,MII)已被解瑪、產生微 碼常式之微碼唯讀記憶體306中的一微碼實作指令位址 784用以實作該微碼實作指令、以及產生相關的該微碼實 作指令狀態786。微碼實作指令狀態786包括指定該微瑪 實作指令之記憶體位址以及下一個指令位址之資訊、在以 下狀況’微碼實作指令狀態786會被閃鎖:該微碼實作指 令狀態786包括了微處理器100的控制暫存器的狀態位 元,用以控制各種操作模式(例如x86控制暫存5| );該 微碼實作指令狀態78包括了由微碼常式所實作的指令的 操作碼相關解碼資訊;該微碼實作指令狀態786包括了由 微碼常式所實作的指令的運算元尺寸相關資訊(例如χ86 作業系統位元);該微碼實作指令狀態786包括了由微碼 常式實作的指令所指定的複數位址尺寸相關資訊(例如 χ86位址尺寸(Address Size ’ AS)位元);該微瑪實作指令 狀態786包括了指示微處理器是否執行鎖定原子級記憶體 CNTR2326IOO-TW/〇6〇z-A42l3(yrW-{ 201030612 運作(locked at〇mic memory operation)的相關資訊,用以 實作由微碼常式所實作的指令(例如鎖定自動記憶體 指令);該微碼實作指令狀態786包括了由微碼常式實作 的指令所指定的位址攔位相關資訊(例如X86模式/記憶體 參照(mod/rrn)攔位);該微碼實作指令狀態786包括了由 · 微碼常式所實作的指令是否為非記憶體存取指令的相關資 訊;當該微碼實作指令引發一異常,該微碼實作指令狀態 786包括了微處理器是否復原由微碼常式實作的指令所修 改的暫存器值的資訊。在一實施例中,微處理器1〇〇的硬❹ 體保證在微碼常式執行的過程巾,閃鎖的微碼實作指令狀 態7=不會改變,直到微碼單元128解析完該fcb指令, 除非疋實作該FCB的微碼常式自己去改變微碼實作指令狀 態 786。 如果提取單元1〇4之指令解碼器1〇8解碼一微碼實作 才"貝1J提取單元1〇4產生微碼實作指令债測指示782的 值為真、提供微碼實作指令位址784給微碼單元128之多 工器114、並且提供微碼實作指令狀態786以將之載入至❹ FBCS 124。如上所述’微碼實作指令可包括微處理器動 的指令集中複雜且不常被執行的指令,例如·三角函式指 令、讀取/寫人模組特定暫存器指令、以及序列化指令。 第8圖係根據本發明第7圖所示之微處理器 100之運 作流程圖。、流程由方塊804開始進行。 在方塊804,提取單元1〇4自指令快取1〇6中提取一 使用者程式♦曰令(即正規指令與指令⑽)’提取單 CNTR2326100-TW/0608-A42130TW-f 42 201030612 元104之指令解碼器1〇8 (如第丨圖所示)解碼該使用者 程式指令(即正規指令與FCB指令188),並決定該指令 為一微碼實作指令。流程往下進行到方塊808。 在方塊808 ’提取單元1〇4產生微碼實作指令偵測指 示782的值為真,並且輸出微碼實作指令位址784以及微 碼實作指令狀態786,其中微碼實作指令狀態786如以下 所述被載入至FBCS 124以供實作該微碼實作指令之微碼 常式的下一個FCB指令所使用。流程往下進行到方塊812。 在方塊812,微碼單元128將微碼實作指令位址784 載入至指令指標暫存器112。流程往下進行到方塊614。 第8圖中的方塊614到626類似於第6圖中類似編號 的方塊,為簡潔起見,方塊614到626的運作細節就不再 重複描述。然而,值得注意的是,在方塊618,當流程往 下進行到第4a圖的方塊408接續執行以進行解析並引退 FCB指令、以及第4a圖的方塊412以進行根據該FCB指 令的解析結果提取目標指令時,微碼單元128之FCB方向 解析器122會使用微碼實作指令狀態786 (於方塊808中 被載入至FBCS 124)以根據FCB條件166解析FCB方向 172。 第9圖係根據本發明另一實施例所述之微處理器1〇〇 之方塊圖。第9圖與第7圖在許多方面是類似的,然而, 引退单元144也負責將序列化指令(seriaiiZ][ng instruction) 所指定的新數值寫入FBCS 124,此外,特別是微碼實作指 令偵測指示782指示出一序列化指令已解碼,且微碼唯讀 C7V77?mK»*7W〇608-A42130TW-f 43 201030612 記憶體306之微碼實作指令位址784係位於實作該序列化 指令的微碼常式,微碼實作指令狀態786則相關於該序列 化指令。微碼實作指令狀態786包括了指定該序列化指令 的後一個指令位址的相關資訊’其餘部分請參照第7圖。
在一實施例中’更新微處理器100的架構狀態的所有 序列化指令都是微碼實作指令,因此,寫入至上述由序列 化指令更新的架構狀態的指令係指微碼唯讀記憶體3〇6中 微碼常式的指令。在一實施例中,微處理器更用以在由微 處理器所執行之一微碼常式中實作上述序列化指令,其中 上述微碼常式包括在上述微碼常式之程式順序上二於二更 新指令之後的一清除指令,上述更新指令以上述序列化指 令所指定之一分支條件(例如一數值)更新上述控制暫存器 中的上述控制值’上述清除指令把在上述微瑪常式之程式 順序上位於上述清除指令之後的所有指令從微處理器之一 管線清除掉。以下將進-步描述,實作相減令的微碼 常式的寫人方式能夠確保由序列化指令所寫人的 124的部分在關於FCB指令是靜態的。 在-實施例中,指令集架構的序列化指令包括由 架構所認定的序列化指令,例如:請參照雇年七心 的1ntd轉構軟體開發者手冊第3冊:「线編程指, 章節’其中定義序列化指令是_ 兀成先所引發對於旗標、暫存器、以及記憶體< 改,並且在提取純行下—個指令m (toin). 緩衝的記憶體寫人。微處理器之1令集_包括㊉ ΟΜΈ2326Ι00-Τ\ν/0608·Α42130Τ^^ 44 201030612 列化指令,且每個序列化指令需要微處理器完成由序列化 指令之前所執行的指令所造成對微處理器之狀態(例如複 數旗標,複數暫存器)以及對記憶體之全部修改,並且需要 微處理器於提取並執行在序列化指令之後的下一個指令之 前,洩流全部緩衝的記憶體寫入,其中上述指令集架構僅 容許序列化指令修改微碼實作指令狀態786。舉例來說: 序列化指令可為將微處理器100之快取記憶體無效化的指 令,例如:指令快取106以及/或資料快取(未繪示)、或 •將微處理器100之轉譯後備緩衝區(translation lookaside buffer)(未繪不)的一項目(entry)無效化的指令、或 回復(resume)處於系統管理模式(System Management
Mode’SMM)的微處理器1〇〇的指令。在一實施例中,暫 存器別名表134與指令排程器136不會針對由序列化指令 所寫入的FBCS 124執行相依性檢查。 由序列化指令所寫入的狀態傾向為比較不頻繁變動的 狀態’例如:控制暫存器的位元(如x86CRx控制暫存器), 上述控制暫存器用以儲存影響管線式微處理器之運作之一 控制值。此外,狀態中的位元通常由系統軟體所寫入,而 非由使用者程式所寫入。因為僅由指令集架構之序列化指 令所寫入,所以FBCS 124是靜態的,FBCS 124所含的位 = = 微處理器1〇0是否運作於使用複數記憶 體保護,又備(例如x86控制暫存器CR〇的同位誤差 細,聯元)的模式下的位元;控制微處理器 否運作於-記憶體分頁模式;控制微處理器!⑽是否自動 GV7K2i2_-7W0608-A42130TW-f 45 201030612 執行記憶體參照之校準檢查的位元(例如χ86控制暫存器 CR0的校準遮罩(Aiignment Mask,am)位元);控制微處 理器之虛擬模式延伸(virtual mode extension )是否致能 (enabled)的位元(例如X86虛擬主機延伸位元);特定 模組暫存器(Model Specific Regsiter,MSR)的位元(例 如x86特定模組暫存器位元);描述符表暫存器(Descriptor Table Register,DTR)的位元(例如X86全域描述符表暫 存器位元(Global Descriptor Table Register,GDTR)、局部 描述符表暫存器位元(Local Descriptor Table Register, ❹ LDTR)、以及中斷描述符表暫存器位元(interrUpt Descriptor Table Register,IGDTR));作業暫存器(Task Register, TR)的位元(例如χ86作業暫存器位元)。 第10圖係根據本發明第9圖所示之微處理器100之運 作流程圖。流程由方塊1004開始進行。 在方塊1004,如第8圖的方塊804〜812與614所示, 提取單元104自指令快取1〇6中提取一序列化指令,將之 解碼’並決定其為一微碼實作指令,然後提取單元104儲❿ 存下一個指令指標暫存器的值,產生實作該序列化指令的 微碼常式位於微碼唯讀記憶體306中的目標位址,以及產 生微碼實作指令偵測指示的值為真,並且將控制轉送至微 碼單元128。然後微碼單元128開始執行實作該序列化指 令的微碼常式的指令,該微碼常式的指令不包括任何FCB 指令,用以指定FBCS 124中由該序列化指令所寫入的部 分。然而’該微碼常式包括一指令,用以將該序列化指令 CNTR2326IW'TWm^M2130TW-f 46 201030612 所指定的新數值寫入到該序列化指令所指定的架構狀態, 而該架構狀態包括於第9圖的FBCS 124十。流程往下進 行到方塊1006。 在方塊1006,微碼單元128將微碼指令提取出來並配 .送至執行管線,其中該微碼指令將該序列化指令所指定的 新數值寫入到該序列化指令所指定❸FBcs以卜引退 單元144於是將該新數值寫入到FBCS 124中。流程往下 進行到方塊1008。 ) # 在方塊誦,微竭單元⑶把分支到方塊趣中被 儲存的NSIP的指令,當作實作序列化指令的微碼常式中 的最後一個指令進行配送。為因應上述分支到NSIp,引退 單元144清除微處理器100的管線、將提取單元1〇4之指 令指標暫存器112更新為NSIP的值(透過正確目標位址 176)、以及將控制從微碼單元128轉送回提取單元1〇4, 使提取單元104再度開始從NSIP提取使用者程式指令。 上述 除管線的動作能夠保證在微處理器提取或發送 ® 其它指令進行執行之前,在方塊1006中寫入FBCS 124的 微碼指令已被引退,意即,已將新數值寫入FBCS 124。流 程往下進行到方塊1012。 在方塊1012,微處理器呼叫包括FCB指令之微碼常式 (例如因微瑪實作指令或異常所造成)。在實作序列化指令 的微碼常式已結束之後一段時間,提取單元1〇4將控制從 目前執行的使用者程式轉送到微碼單元128以執行另一微 碼常式,此現象可能是因為由使用者程式微碼所實作的指 CNTR2326I00-TW/0m-A42\3,0TN-f 47 201030612 令的解碼或異常條件所造成’如上於第5-6圖或第7-8圖 中已分別敘述。特別是,該微碼常式包括了方塊1006中指 又FBCS 124的pcB指令’並以該快速分支條件為其分支 條件狀態。如第4圖中方塊4〇8到426所述,微碼單元128 提取、解析、以及引退該FCB指令。其優點是,FBCS 124 是靜態的’因為微處理器100的管線中不存在比修改FBCS 124的FCB指令更老舊且未引退的指令(除非微碼常式中 包含了一個這樣的指令,但事實上並非如此),因為在方 塊1008中因應分支到NSIP而執行了清除動作。又或者⑩ FBCS 124是靜態的,是因為寫入至FBCS 124的任何使用 者程式指令都是由包括分支到NSIP的微碼常式所實作, 而且除了實作該使用者程式指令的微碼常式之外,沒有其 它微碼常式會寫入至FBCS 124。流程結束於方塊1〇12。 從以上描述可窺知其優點在於,對實作序列化指令的 微碼常式之外的FCB指令來說,由一序列化指令所寫入的 FBCS 124疋靜態的。由於§忍知到此一特性,本發明之發明 人提供了一種FCB指令能夠指定該靜態的狀態,並且比起❹ 傳統的條件分支指令能夠更快地被解析、引退,因為傳統 的條件分支指令係動態依據其分支條件狀態而指定其狀 態。 ’、 儘管第1圖到第10圖各自提供了多種實施例,但其它 實施例當可自上述實施例所述之特性加以變化或組合而得 到。例如:在其它實施例中,微處理器可於使用者程式以 及/或微碼常式中包括FCB指令,其中該使用者程式盘微 CJWR2326I00-TW/060^A42l30TN-f 48 201030612 碼常式包括有實作微指令之微碼常式與異常處理常式,以 及包括異常狀態、微碼實作指令狀態、由序列化指令所寫 入的狀態、由微碼保證為靜態的狀態、或其上任意之組合 • 之微碼常式或使用者程式。 . 本發明雖以各種實施例揭露如上,然而其僅為範例參 考而非用以限定本發明的範圍,任何熟習此項技藝者,在 不脫離本發明之精神和範圍内,當可做些許的更動與潤 飾。舉例來說:可用軟體來實作本發明之系統與方法中的 • 上述功能、構造、模組、模擬、描述、以及/或測試,該軟 體可使用一般的程式語言(例如:c、C++)、硬體描述語 言(Hardware Description Language,HDL),包括 Verilog 硬體描述语s、超南速集成電路硬體描述語言 (YHSIC(Very High Speed Integrated Circuit) Hardware Description Language,VHDL)等等、或其它程式語言。 這些軟體可配置於任何公知的電腦可使用的媒體,例如: 半導體、磁碟、或光碟(包括:唯讀光碟(C〇mpact 籲 Disc Read-Only Memory)、數位多功能唯讀光碟(Digital Versatile Disc Read-Only Memory)、等等)。本發明之實施 例所述之裝置與方法可包括於半導體智慧財產權核心 (semiconductor intellectual property core),例如:微處 理器核心(例如以硬體描述語言來實現)以及轉換為硬體 型態的積體電路產品。此外,本發明之實施例所述之裝置 與方法亦可用硬體與軟體的組合得以實現。因此,本發明 的範圍並非限定於上述之實施例,而當視後附之申請專利 CNTR2326I00-TW/060S-A42l3(yrW'f 49 201030612 範圍與其等效物所界定者為準’特別是,本發明可實作在 運用於一般用途電腦的微處理器裝置中。最後,在不脫離 本發明之精神和範圍内’任何熟習此項技藝者當可以上述 所揭露之實施例及其概念為基礎’做些許的更動與潤飾得 出與本發明相同之目的。 【圖式簡單說明】 第1圖係根據本發明所述之微處理器100之方塊圖。 第2a與2b圖係根據本發明所述之微處理器執行條件 分支指令之流程圖。 ® 第3圖係根據本發明另一實施例所述之微處理器之方 塊圖。 第4a與4b圖係根據本發明第3圖所示之微處理器1〇〇 之運作流程圖。 第5圖係根據本發明另一實施例所述之微處理器1〇〇 之方塊圖。 第6圖係根據本發明第5圖所示之微處理器1〇〇之運 作流程圖。 ® 第7圖係根據本發明另一實施例所述之微處理器1〇〇 之方塊圖。 第8圖係根據本發明第7圖所示之微處理器ι〇〇之運 作流程圖。 第9圖係根據本發明另一實施例所述之微處理器丨〇〇 之方塊圖。 第10圖係根據本發明第9圖所示之微處理器1〇〇之運 ^^TR2326I00-TW/0608-A42130TW-f 50 201030612 作流程圖。 【主要元件符號說明】 . 100〜微處理器; 104〜提取單元; 106〜指令快取; 108〜指令解碼器; 112〜指令指標暫存器; φ 114、132〜多工器; 116〜位址增量電路; 118〜分支預測器; 122〜FCB方向解析器; 124〜快速分支條件狀態(FBCS); 126〜提取位址控制器; 128〜微碼單元; 134〜暫存器別名表; ❹ 136〜指令排程器; 138〜複數執行單元; 142〜正規分支條件狀態(NBCS); 144〜引退單元; 152〜多工選擇信號; 154 〜NSIP ; ' 156〜預測目標位址; 158〜預測方向; 162〜FCB目標位址; CNTR2326I00-TW/060i-AA2130TW-f 201030612 164〜FCB查見指示; 166〜FCB條件; 168〜提取位址; 172〜FCB方向; 174〜正規指令結果; 176〜NCB正確目標位址; 178〜NCB誤預測指示; 188〜正規指令與FCB指令; 306〜微碼唯讀記憶體; _ 582〜異常偵測指示; 584〜異常處理常式位址; 586〜異常狀態; 782〜微碼實作指令偵測指示; 784〜微碼實作指令位址; 786〜微碼實作指令狀態。 φ CNTR2326IOO-7W/060S-A42l30TW-f 52
Claims (1)
- 201030612 七、申請專利範圍: 1.一種微處理器,包括. 件,理常式•-異常條 -第一提取單元常處用理又式包括-條件分支指令; 令,其中上述使用者兹4 M提取使用者程式之複數指 者程式=者程式包括造成上述異常條件之-使用-執行單7G,用以執行上述第—提 常條件_存-« ;叫核㈣料成之上述異 理常’用以自上述記健提取上述異常處 理吊^之上私令’並_錄據上述狀態解析上述條件 分支指令而;f將上述條件分支指令傳送耻賴行單元去 進行解析; 其中上述狀態指定上述異常條件之一發生原因。 2.如申請專利範圍第V項所述之微處理器,其中上述 微處理器保證上述狀態在上述異常處理常式的執行期間不 會改變,除非是上述異常處理常式去改變上述狀態。 3.如申請專利範圍第1項所述之微處理器,其中上述 第二提取單元用以解析上述條件分支指令之步驟更包括: 決疋上述狀態是否滿足由上述條件分支指令所浐 一條件; S CNTR2326I00~TW/Q6^%~AA2130TW-f 53 201030612 二::上述條件分支指令所指定之-目標位 15滿足’則提取上述條件分支指令的下—個指令; 步驟更包括 =二提取單元用以解析上述條件分支指令之 , 產生上述條件分支指令所指定之上述目標位 址0 4.如申明專利範圍第1項所述之微處理器,其中上述 狀態包括以下之—者:上述微處理器之複數控制暫存器中的複數狀態位元, 且上述狀態位元用以決定上述微處理器之一現行運作模 式; ' 關連於上述微處理器之複數虛擬主機延伸之複數位 元; 上述微處理器之一狀態暫存器中的複數位元,且上述 位元用以指定由上述使用者程式之複數條件分支指令所指 定為複數分支條件的複數旗標; 控制複數碼分段描述符的複數位元; ⑩ 控制複數任務分段描述符的複數位元; 用以指定上述微處理器之一現行特權階段的複數位 元;以及 用以指定資料與位址之一預設尺寸的複數位元。 5.—種微處理器,包括: 一提取單元,用以提取一程式之複數指令,且上述程 式包括造成一異常條件之一程式指令,以及用以提取處理 CNTR2326I00-TW/0608-A42130TW-f 54 201030612 =異常條件之—異常處理常式,其中上 包括一條件分支指令;以及 、常處理常式 八-執行單元,心執行上述錄單騎 二;並且執打除了上述條件分支指令之外的 ^指 吊式之複數指令’以及用以因應偵測到 ::處理 成之上述異常條件而儲存一狀態, 式扣令所造 其中上述提取單元更用以因應上述 ,常條件而提取上述異常處理常式之上迷到上 據上述狀態無條件地解析上述條件分支指令,且根 條件分支指令傳送到上述執行單元去進行解析。將上述 ^”專_圍第5項所述之微處理器, 條件/刀支指令為上述微處理器之—指令 =上4 條件分支指令,上述指令集亦包括—第二_ 貝別 令’且上述提取單元係用以將上述第二類別條件八^ ^ 傳送到上述執行單元以進行解析。 、刀支扣7 理器7,·Γ括快速執行條件分支指令之方法,適用於-微處 儲存一異常處理常式於一記憶體異 ;;上為上述微處理器私有之-=者 私式且上述異常處理常式包括-條件分支指令; …由上述微處理器之一第一提取單元進行提取一使用者 程式之複數彳日7,其中上述使用者程式包括造成上述異常 條件之一使用者程式指令; 由上述微處理器之—執行單元執行上述第一提取單元 CNTJ?2J26700-7W/060S-A42130TW-f 55 201030612 ⑽阶增切及增常處理常 館存=測到上述使用者程式所造成之上述異常條件而 由上述微處理器之一第-接敌i 提取上述異常處理常二f自上述記憶體 八古述第二提取單元進行根據上述狀態解析上述條件 而不將上述條件分支指令傳送到上述執行單元去 其中上述狀態指定上述異常條件之一發生原因。 8·如申請專利_第7項所述之快速執行條件分支指 令之方法’其中上述微處理器保證上雜態在上述異常^ 理常式的執行期間不會改變,除非是上述異常處理常 改變上述狀態。 9.如申請專利範圍第7項所述之快速執行條件分支指 令之方法’其中上述由上述第二提取單元解析上述條件分 支指令之步驟更包括: 決定上述狀態是否滿足由上述條件分支指令所指定之 一條件; 如果滿足,則從上述條件分支指令所指定之一目標位 址提取一指令;以及 如果不滿足,則提取上述條件分支指令的下一個指令; 其中上述由上述第二提取單元解析上述條件分支指令 之步驟更包括產生上述條件分支指令所指定之上述目標位 CNTR2326I00-TW/06m~A42130TW-f 56 201030612 址0 10.如申請專利範圍第7項所述之快速執行條件分支指 令之方法,其中上述狀態包括以下之一者: 上述微處理器之複數控制暫存器中的複數狀態位元, 且上述狀態位元用以決定上述微處理器之一現行運作模 式; 關連於上述微處理器之複數虛擬主機延伸之複數位 元; 上述微處理器之一狀態暫存器中的複數位元,且上述 位元用以指定由上述使用者程式之複數條件分支指令所指 定為複數分支條件的複數旗標; 控制複數竭分段描述符的複數位元; 控制複數任務狀態分段描述符的複數位元; 用以指定上述微處理器之一現行特權階段的複數位 7G,以及 用以指定資料與位址之一預設尺寸的複數位元。 理器快速執行條件分支指令之方法,適用於一微處 指令由之—提取單元進行提取-程式之複數 ’ι式^括造成一異常條件之一程式指令· 處理常;==提取處理上述異常條件之-異常 由上述微常式包括—條件分支指令; 取的上•人 執行單元執行上職取單元所提 取的上姑令’以及除了上述條件分支指令之外的上述異 <3V77?2?2<mLr»7〇6〇8-A4213〇TW-f 57 201030612 常處理常式之複數指令; 因應偵測到上述程式指令所造成之上述異常條件而儲 存一狀態; 由上述提取單元進行因應上述執行單元偵測到上述異 常條件而提取上述異常處理常式之上述指令;以及 由上述提取單元進行根據上述狀態無條件地解析上述 條件分支指令,而不將上述條件分支指令傳送到上述執行 單元去進行解析。 12. 如申請專利範圍第u項所述之快速執行條件分支鮝 才曰令之方法,其中上述條件分支指令為上述微處理器之一 指令集中之一第一類別條件分支指令,上述指令集亦包括 一第二類別條件分支指令,且上述提取單元係用以將上述 第二類別條件分支指令傳送到上述執行單元以進行解析。 13. —種微處理器’包括: 一第一分支條件狀態; 一第二分支條件狀態; 一第一類別條件分支指令,用以指示上述微處理器等⑩ 待,直到上述微處理器中用以更新上述第一分支條件狀態 並且比上述第一類別條件分支指令更老舊的其它指令已經 更新完上述第一分支條件狀態之後,再根據上述第一分支 條件狀態正確地解析上述第一類別條件分支指令;以及 一第二類別條件分支指令,用以指示上述微處理器根 據上述第二分支條件狀態正確地解析上述第二類別條件分 支指令’而不需考量上述微處理器中用以更新上述第二分 CNTR2326I00-TW/060^ A42130TW-f 58 201030612 狀態並且比上述第二類別條件分支指 它指令是否,經更新完上述第二分支條件狀態。舊的其 14’如J請專利範圍第13項所述之微處理器,更包括: 複數官線階段’其中上述微處理器係用以於上 W又中先正確地解析上述第二類別條件分支指令後,再正 確地解析上述第一類別條件分支指令。 15. 如申請專利範圍第13項所述之微處理器更包括: 一執行單元,根據上述第一分支條件狀態, 鲁上述第-類別條件分支指令;狀 解析 才a v排程器,輕接於上述執行單元,用以等待直到上 =第一類別條件分支指令更老舊的其它指令更新上述第— 分支條件狀態之後,再發出上述第一類別條件分支指令 上述執行單元。 16. 如申凊專利範圍第15項所述之微處理器,其中上 述微處理器係用以引退上述第二類別條件分支指令,而不 φ 將上述第一類別條件分支指令傳送到上述指令排程器。 Π.如申請專利範圍第16項所述之微處理器,更包括: 一提取單元,耦接於上述第二分支條件狀態,用以自 一記憶體中提取複數指令,且更用以根據上述第二分支條 件狀態解析上述第二類別條件分支指令,而不需考量上述 •微處理器中用以更新上述第二分支條件狀態並且比上述第 二類別條件分支指令更老舊的其它指令是否已經更新完上 述第二分支條件狀態, 其中上述微處理器係用以於上述第二類別條件分支指 CNTR2326I00~JW/060S-A42mTW-f 59 201030612 令被上述提取單元解析後,引退上述第二類別條件分支指 令’而不將上述第二類別條件分支指令傳送到上述指令排 程器。 18. 如申請專利範圍第15項所述之微處理器’更包括: 一微碼單元,根據上述第二分支條件狀態’用以解析 上述第二類別條件分支指令。 19. 如申請專利範圍第18項所述之微處理器,其中上 述微碼單元更包括: 一記憶體,用以儲存上述第一與第二類別條件分支指 令’其中上述第一與第二類別條件分支指令為非使用者程 式指令;以及 一指令指標暫存器,耦接於上述記憶體,用以提供上 述記憶體一提取位址以自上述記憶體中提取一現行指令; 其中上述指令指標暫存器不同於上述微處理器之另一 指令指標暫存器,該另一指令指標暫存器係用以提供另一 用以儲存使用者程式指令之記憶體另一提取位址。 20. 如申請專利範圍第13項所述之微處理器,其中上 述微處理器於上述第一或第二分支條件狀態分別滿足上述 第一或第二類別條件分支指令所指定之一分支條件時,提 取上述第-或第二類別條件分支指令所指定之—目桿位址 中的指令’以正確地㈣上述第—或第二類別條件分支指 令·,並且於上述第-或第二分支條件狀態不滿足上述第一 或第二類別條件分支指令所指定之—分支條件時,提取 一個指令。 CNTR2326IOO-TW/Qm-M2n〇TN-f 201030612 21·如申請專利範圍第13項所述之微處理器,其中上 述微處理器係用以閂鎖上述第二分支條件狀態,以因應上 述微處理器中之一事件,且上述被閂鎖的第二分支條件狀 態非軟體可更改的。 22. 如申請專利範圍第13項所述之微處理器,其中上 述第二分支條件狀態被複數微碼常式中的複數第二類別條 件分支指令所使用,而上述微碼常式係負責實作上述微處 理器之一指令集架構中分別對應上述第二類別條件分支指 令之不同類別的指令。 23. 如申請專利範圍第13項所述之微處理器,其中上 述第二分支條件狀態係在上述微處理器因應一 動時由一或多個指令所寫入。 、 24. —種解析第一或第二類別條件分支指令之方法,包 第-分支條件狀態,其中在—微處理器中比上 分支指令糊的其它指令更新上述第- 其中在一微處理器中比上 的其它指令更新上述第二 更新一第二分支條件狀態, 述第一類別條件分支指令更老舊 分支條件狀態; 根據上述第一分支條件狀態正確地解 條件分支齡,㈣應上述在上述微處 ^—類别 類別條件分支指令更老舊的其它指令上述第-件狀態;以及 上建第一分支條 CNTR2326I(X)-7W/06QS~A42130TW-f 61 201030612 條第二 _ 25. 如申請專利範圍帛2 別條件分支指令之方法,更包括: 解析第一或第二類 於上述微處理器之複數管線階段中先正 第二類別條件分U令後,再正確 ^解斤上述 件分支指令。 攻第一類別條 鲁 26. 如申請專利範圍第24項所述之解析第 別條件分支指令之方法,更包括: s第一類 根據上述第一分支條件狀態,正確地解 別條件分支指令,其中一執行單元係用以=一類 別條件分支指令;以及 1上述第一類 等待直到上述第一類別條件分支指令更老 令更新上述第一分支條件狀 態之後,再發出上述第其匕心 條件分支指令到上述執行單元,其中—指令排程 待以發出上述第一類別條件分支指令到上述執行單元。 27. 如申請專利範圍第26項所述之解析第一或 , 別條件分支指令之方法,其中上述微處理器係用以引退類 述第二類別條件分支指令,而不將上述第二類別條件八^ 指令傳送到上述指令排程器。 ' 刀 28. 如申請專利範圍第27項所述之解析第一或第_ 別條件分支指令之方法,更包括: 類 CNTR2326I00-TW/ 〇608-A42130TW-f 62 201030612 自一記憶體中提取複數指令,其中上述微處理器之_ 提取單元係用以自上述記憶體中提取上述指令; 根據上述第二分支條件狀態正確地解析上述第二類別 條件分支指令’而不需考量上述微處理器中用以更新上述 第二分支條件狀態並且比上述第二類別條件分支指令更老 舊的其它指令是否已經更新完上述第二分支條件,其 中上述提取單元係用以解析上述第二類別條件分支^八' 以及 9 7於上述提取單元解析完上述第二類別條件分支指令之 後,引退上述第二類別條件分支指令,而不將上述 別條件分支指令傳送到上述指令排程器,其中上述微 器係用以引退上述第二類別條件分支指令。 a 理 或第二類 29.如申請專利範圍第26項所述之 別條件分支指令之方法,更包括: ,據上述第二分支條件狀態’解析 分支指令,其中-微碼單元仙以解析 分支指令。 疋弟一類別條件 30.如申請專利範圍第29項所述之 別條件分支指令之方法,更包括: 忒第一頬 儲存上述第-與第二類別條件分支指令於 記憶體,其中上述第一盥第-類丨&朱 、微碼早兀 者程式指令;以及 類職件分支指令為非使用 提供上述微碼單元記憶體一提取位址 元記憶體中提取-現行指令,其中 j微碼早 相7私標暫存器係用 CNTR2326I00'TW/060S-A42130TW-f 63 201030612 以提2述微解元記鋪上·取位址; 其中上述微處理器 微處理器之另-指令沖好1票暫存器不同於上述 係用以提-田了 a 71"暫存S ’該另—指令指標暫存器 取位址。、W儲存使用者程式指令之記憶體另-提 31.如申請專利範圍第24項所述之 別條件分支齡之方法,射上賴處理㈣上述 件«分別滿足上述第—或第二_條件分支指Li:之一分支條件時’提取上述第-或第二類別條件 为支才"所指定之-目標位址中的指令,以正確地解析上 述第一或第二類別條件分支指令;並且於上述第一或第二 分支條件狀態不滿足上述第—或第二類別條件分支指令所 指定之一分支條件時,提取下一個指令。32. 如申請專利範圍第24項所述之解析第一或第二類 別條件分支指令之方法,其中上述微處理器之硬體閂鎖上 述第二分支條件狀態,以因應上述微處理器中之一事件, 且上述被閂鎖的第二分支條件狀態非軟體可更改的。 33. 如申清專利範圍第24項所述之解析第一或第二類 別條件分支指令之方法,其中上述第二分支條件狀態被複 數微碼常式中的複數第二類別條件分支指令所使用,而上 述微碼常式係負責實作上述微處理器之一指令集架構中分 別對應上述第二類別條件分支指令之不同類別的指令。 34. 如申請專利範圍第24項所述之解析第一或第二類 別條件分支指令之方法,其中上述第二分支條件狀態 搬敗 7W〇6〇8-A42130TW-f 64 201030612 ==處理器因應-重置條件啟動時由-或多個 35. —種微處理器,包括· 一記憶體’用以儲存-非使用者程式之複數指令以實 作上述微處理器之-使用者可見指令集之—使用者程式= 令’上述非使用者程式包括_條件分支指令; -第-提取單元’ ^提取—使用者程式之複 令,上述使用者程式包括上述非使用者程式所實作之上^ 使用者程式指令; 逆 了指令解碼器,用以解碼上述使用者程式之上述指 令並且因應解碼上述非使用者程式所實作之上述使 程式指令而儲存一狀態; 、-執行單元’用崎行上述第—提取單元所提取 述使用者程式之上述指令,並且用以執行上述非使用 式之上述指令中除了上述條件分支指令之外的指令· ,以及 者程元、’用以自上述記憶體提取上述非使用 八二“曰7 ’並且用以根據上述狀態解析上述條件 二=二不將上述條件分支指令傳送到上述執行單元去 36. 如申料職㈣35項所狀 :==變上述第二__= 37. 如申請專職㈣35销狀 述第二提取單μ贿析上祕件分支指令之步称= ^^^^^d?i^7Tf/0608'-A42130TW-f 65 201030612 r : 決定上述狀態是否滿足由上述條件分支指令所指定之 條件; 址提==上述條件分支指令所指定之-目標位 = 件分支指令的下-個指令; 步驟更包括產生上述條件7;^社^條件分支指令之 址。 刀支才日令所指定之上述目標位 38. 如申請專利範圍第 ,態指定上述非使用者;者= 令之相關資訊。 貝仆&上述使用者程式指 39. 如申請專利範圍第3 述相關資訊指定以下之—者:項所述之微處理器,其中上 指定上述非使用者程式 之後的下一個指令之一位址.作之上述使用者程式指令 指定上述非使用者程式 •操作碼之解碼資訊;貫作之上述使用者程式指令 指定上述非使用者程式 .運算元尺寸資訊丨 T實作之上述使用者程式指令 指定上述非使用者程式 所指定之複數位址之尺寸資^實作之上述使用者程式指令 指定上述非使用者程式 所指定之位址攔位資訊;貧作之上述使用者程式指令 括 參 之 之 CV7X222卿-7W0608-A42130TW-f ❹ 66 201030612 指定上述微處理器是 作以實作上述非使用°者口執行複數鎖定原子級記憶體運 令; 程式所實作之上述使用者程式指 是否為-非記憶體所^之上述使用者程式指令 造成-異常:實作之上述使用者程式指令 由上述非使用者轻貧訊指定上述微處理器是否復原 的複數暫存器值。^ 作之上述使用者程式指令所修改 理器O'::快速執行條件分支指令之方法 ’適用於一微處 上述微處理器^—^式者之^旨^於—記憶體’以實作 由包Γ:件分支指令; 程式之複數指令,上:』:提取單元進行提取-使用者 所實作之上述❹者程式4程式包括上述非使用者程式 解碼上述使用者程式之上述指人· 指令==使用者程式所;作之上述使用者程式 由上述微處理器之一執杆 所提取之上述使用者程式二單元 了上述條件分支指二之二的指 ^V7K222(Si%L7W0608-A42130TW-f 67 201030612 由上述微處理器之一第二提一 提取上述非制者程式之上述指令;以及π述記憶體 ==第二提取單元進行根據上錢_析 而不將上述條件分支指令傳送到上述執行單元: 二2請ίΓ圍第40項所述之快速執行條件分支 7之方法,其中上述微處理器保證上述狀態在上 提取單7G解析完上述條件分支指令之前都不會改變。 φ 匕42.如申請專利範圍第4〇項所述之快速執行條件分支 指令之方法’其巾上述第二提取單元用以解析上述條件分 支指令之步驟更包括: 決疋上述狀態疋否滿足由上述條件分支指令所 一條件; 如果滿足,則從上述條件分支指令所指定之一目 址提取一指令;以及 如果不滿足,則提取上述條件分支指令的下—個指令; 其中上述第二提取單元用以解析上述條件分支指令之⑩ 步驟更包括產生上述條件分支指令所指定之上述目標位 址。 43. 如申請專利範圍第4〇項所述之快速執行條件分支 指令之方法,其中上述狀態指定上述祚使用者程式所實作 之上述使用者程式指令之相關資訊。 44. 如申請專利範圍第43項所述之快速執行條件分支 指令之方法’其中上述相關資訊指定以下之一者: CNTR2J26I00-TW/060S-A42130TW-f 68 之後的下逑非使用者程式所實# 之後的下1指令之 所實作之上述使用者程式指令 指定上述非使用者=, 之一,作石馬之解石馬資訊/所實作之上述使用者程式指令 指定上述非使用者程 之一運算元尺寸資訊; 實作之上述使用者程式指令 1定上述錢用輕 所指定之複數位址之尺寸資作之上述使用者程式指令 扣疋上述非使用者程式^ 所指定之位址欄位資訊; 作之上述使用者程式指令 扣疋上述微處理器是否 作以實作上述非使用者 複數鎖定原子級記憶體運 令; $所實作之上述使用者程式指 指定上述非使用者程式 是否為一非記憶體存取指令;以乍之上述使用者程式指令 如果上述非使用者程式所n 造成一異常,則上述相^作之上述使用者程式指令 復原由上述非使用者程式=疋上述微處理器是否 令所修改的複數暫存器值。實作之上述使用者程式指 45.—種管線式微處理器,包括. 一控制暫存器,用以儲存影 運作之-控制值; 響上述管線式微處理器之 儲存於上述控制暫存器之上 條件分支指令,其中上述指 一指令集架構’包括根據 述控制值指定一分支條件之— CNTR2326I00-TW/06^-AA2130TW-f 69 201030612 更新上述控制暫存器中的上述控制值之-’且上述管線式微處理器係㈣㈣上述 化k之則之複數指令完成對複數旗標 及一記憶體之所有修改,以及用以在提取並執行ίί序 化指令之前錢所有緩衡的記憶體寫入; 複數執仃早兀,耦接於上述控制暫 化指令而更新上述控制暫存器中的上述=應: 一提取單元,耦接於上述控制 於上述控制暫存器,的上述控制值=器解=2存 條件分支指令配送至上述執行軍元牛;而不將上述 更包4括6.如申物咖第45物之管線式微處理器, 二數Γ6用暫存器,糾於上述執行單元,用《錯存-第 其中上述指令集架構更包 时的上述第二數值指定―第二2^於上述通用暫存 支指令, 乐力支條件之-第二條件分 :將上述第一條件分支指令配送到上述執行單=行: 47.如申請專利範圍第45項所述m«理器, CNTR2326I00-TW/d60i-M2130TW-f 201030612 序歹m:不論上迷執行單元是否已因應上述 述控制暫存器中的上述控制值,都根據 =存於上述控制暫存器中的上述控制值指示上述管線式微 處理器無條件地、正確地解析並引退上述條件分支指令。 48,如申請專㈣45項所述之管線式微處理器, ,、中上述管線式微纽在纟上料線錄處理器 所執行之-微碼常式中實作上述序列化指令,其中上述微 碼常式包括在上述微碼常式之程式順序上位於一更新指令 之後的-清除指令,上述更新指令以上述序列化指令所指 定之一數值更新上述控制暫存器中的上述控制值 ,上述清 除指令把在上述微碼常式之程式順序上位於上述清除指令 之後的所有指令從上述管線式微處理器之一管線清除掉。 49. 如申請專利範圍第45項所述之管線式微處理器, 其中上述條件分支指令係包括於一使用者程式中,上述使 用者程式儲存在耦接於上述管線式微處理器之一系統記憶 體。 50. 如申請專利範圍第45項所述之管線式微處理器, 其中上述條件分支指令係包括於一微碼常式中,上述微碼 常式儲存在上述管線式微處理器之一微碼記憶體。 51.如申請專利範圍第45項所述之管線式微處理器’ 其中上述控制暫存器中的上述控制值控制以下之一者: 上述管線式微處理器是否運作於使用上述管線式微處 理器之複數記憶體保護設備之一模式; 上述管線式微處理器是否運作於一記憶體分頁模式, 〇V77?2J26/ft?-7W0608-A42130TW-f 201030612 上述管線式微處理器是否自動執行複數記憶體參照之 校準檢查;以及 上述管線式微處理器之複數虡輙主機延伸是否致能。 52. 如申請專利範圍第45項所述之官線式微處理器, 其中上述控制暫存器為一特定模、组·暫存器、一描述符表暫 存器、一作業暫存器之一者。 53. 如申請專利範圍第45項所述之官線式微處理器, 其中上述序列化指令具有以下特徵之一: 將上述管線式微處理器之一快取記憶體無效化; 將上述管線式微處理器之一轉譯後備緩衝器之一項目 無效化;以及 將上述管線式微處理器從一系統管理模式中回復。 54. —種快速執行條件分支指令之方法’適用於一管線 式微處理器,上述管線式微處理器具有一控制暫存器儲存 影響上述管線式微處理器之運作之一控制值、一指令集架 構包括更新上述控制暫存器中的上述控制值之一序列化指 令,其中上述管線式微處理器係用以使用上述序列化指令 之刖之複數指令完成對複數旗標、複數暫存器、以及一記 憶體之所有修改’以及用以在提取並執行上述序列化指1 之下-個指令之前誠所有緩衝的記㈣寫人 : 執行條件分支指令之方法包括: 、迷 根據儲存於上述控制暫存器中的上述控制值將一條件 分支指令包括於上述指令集架構中; 因應上述序列化指令而由上述管線式微處理器之複數 CNTR2320I00-TW/Q6Q 名-AA213QTW-f 201030612 執行單7L更新上述控制暫存器中的上述控制值; 由上述管線式微處理器之一提取單元根據儲存於上述 控制暫存器中的上述控制值進行提取、解碼、以及無條件 地、正確地解析並引退上述條件分支指令,而不將:述條 件分支指令配送到上述執行單元進行解析。 55.如申請專利範圍第54項所述之快速執行條件分支 指令之方法,更包括: '將一第二條件分支指令納入上述指令集架構,上述第 一條件分支指令根據儲存於上述管線式微處理器之一通用 暫存器中的一第二數值指定一第二分支條件; 根據儲存於上述通用暫存器中的上述第二數值提取並 解碼上述第二條件分支指令;以及 由上述提取單元進行將上述第二條件分支指令配送 上述執行單元進行解析。 56.如申請專利範圍第54項所述之快速執行條件分支 指令之方法,其中上述條件分支指令不論上述執行單元是 否已因應上述序列化指令更新上述控制暫存器中的上述2 制值,都根據儲存於上述控制暫存器中的上述控制值指: 上述管線式微處理器無條件地、正確地解析並彳丨退上述條 57.如申請專利範圍第54項所述之快速執行條件分支 指令之方法,其中上述管線式微處理器更用以在由上述管 線式微處理器所執行之一微碼常式中實作上述序列化^ 令,其中上述微碼常式包括在上述微碼常式之程式順序2 OV77?2W^-7W0608-A42130TW-f 73 201030612 位於-更新指令之後的—清除指令,上述更新指令以上迷 序列化指令所指定之-數值更新上述㈣暫存器中的上述 控制值’上述清除指令把在上述微碼常式之程式順序上位 於上述清除指令之後的所有指令從上述管線式微處理器之 一管線清除掉。 58. 如申請專利範㈣54項所述之快速執行條件分支 指令之方法’其巾上述條件分支指令係包括於—使用者程 式中’上収肖者程式料在_於上料線式微處理器 之一系統記憶體。 59. 如申請專利範圍第54項所述之快速執行條件分支 指令之方法,其中上述條件分支指令係包括於一微碼常式 中,上述微碼常式儲存在上述管線式微處理器之一微 憶體。 、 60. 如申請專利範圍第54項所述之快速執行條件分支 指令之方法,其中上述控制暫存器中的上述控制值控制以 下之一者:上述管線式微處理器是否運作於使用上述管線式微 理器之複數記憶體保護設備之一模式; 上述管線式微處理器是否運作於一記憶體分頁模式. 上述官線式微處理器是否自動執行複數記憶體參^ 校準檢查;以及 ' 上述管線式微處理器之複數虚擬主機延伸是否致能。 61. 如申請專利範圍第54項所述之快速執行條件^ 指令之方法,其中上述控制暫存器為一特定模組暫存二、 CNTR2326I00^TW/060i-A42130TW-f 74 201030612 一描述符表暫存器、一作業暫存器之一者。 62.如申請專利範圍第54項所述之快速執行條件分支 指令之方法,其中上述序列化指令具有以下特徵之一: 將上述管線式微處理器之一快取記憶體無效化; 將上述管線式微處理器之一轉譯後備緩衝器之一項目 無效化;以及 將上述管線式微處理器從一系統管理模式中回復。CNTR2326I00-TW/Q6^M2130TW-f 75
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15207409P | 2009-02-12 | 2009-02-12 | |
US12/481,118 US8245017B2 (en) | 2009-02-12 | 2009-06-09 | Pipelined microprocessor with normal and fast conditional branch instructions |
US12/481,427 US8635437B2 (en) | 2009-02-12 | 2009-06-09 | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
US12/481,499 US8131984B2 (en) | 2009-02-12 | 2009-06-09 | Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state |
US12/481,487 US8145890B2 (en) | 2009-02-12 | 2009-06-09 | Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201030612A true TW201030612A (en) | 2010-08-16 |
TWI470546B TWI470546B (zh) | 2015-01-21 |
Family
ID=42541348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW99102041A TWI470546B (zh) | 2009-02-12 | 2010-01-26 | 微處理器、管線式微處理器、快速執行條件分支指令之方法、以及解析第一或第二類別條件分支指令之方法 |
Country Status (3)
Country | Link |
---|---|
US (4) | US8635437B2 (zh) |
CN (5) | CN101819521B (zh) |
TW (1) | TWI470546B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI470548B (zh) * | 2011-04-07 | 2015-01-21 | Via Tech Inc | 具有條件指令之微處理器、其處理方法及電腦程式產品 |
TWI493450B (zh) * | 2010-09-24 | 2015-07-21 | Intel Corp | 用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統 |
US9268569B2 (en) | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799628B2 (en) * | 2009-08-31 | 2014-08-05 | Advanced Micro Devices, Inc. | Early branch determination |
US9052890B2 (en) * | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
WO2012138950A2 (en) * | 2011-04-07 | 2012-10-11 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
WO2013101213A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Method and apparatus for cutting senior store latency using store prefetching |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US9875105B2 (en) * | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9645929B2 (en) | 2012-09-14 | 2017-05-09 | Nvidia Corporation | Speculative permission acquisition for shared memory |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US9632976B2 (en) | 2012-12-07 | 2017-04-25 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US9569214B2 (en) | 2012-12-27 | 2017-02-14 | Nvidia Corporation | Execution pipeline data forwarding |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9823931B2 (en) | 2012-12-28 | 2017-11-21 | Nvidia Corporation | Queued instruction re-dispatch after runahead |
US9547602B2 (en) | 2013-03-14 | 2017-01-17 | Nvidia Corporation | Translation lookaside buffer entry systems and methods |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9535700B2 (en) * | 2013-06-14 | 2017-01-03 | Arm Limited | Data processing systems |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
CN106485321B (zh) * | 2015-10-08 | 2019-02-12 | 上海兆芯集成电路有限公司 | 具有架构神经网络执行单元的处理器 |
US10268586B2 (en) | 2015-12-08 | 2019-04-23 | Via Alliance Semiconductor Co., Ltd. | Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests |
US10642617B2 (en) | 2015-12-08 | 2020-05-05 | Via Alliance Semiconductor Co., Ltd. | Processor with an expandable instruction set architecture for dynamically configuring execution resources |
US11061853B2 (en) | 2015-12-08 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Processor with memory controller including dynamically programmable functional unit |
US10922088B2 (en) * | 2018-06-29 | 2021-02-16 | Intel Corporation | Processor instruction support to defeat side-channel attacks |
CN111538535B (zh) * | 2020-04-28 | 2021-09-21 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
CN112834819B (zh) * | 2021-01-04 | 2024-04-02 | 杭州万高科技股份有限公司 | 一种用于电能计量芯片的数字信号处理装置及方法 |
US11886883B2 (en) | 2021-08-26 | 2024-01-30 | International Business Machines Corporation | Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction |
CN114064051A (zh) * | 2021-11-22 | 2022-02-18 | 上海兆芯集成电路有限公司 | 指令执行方法及指令执行装置 |
CN114064363A (zh) * | 2021-11-22 | 2022-02-18 | 上海兆芯集成电路有限公司 | 指令执行方法及指令执行装置 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4338661A (en) * | 1979-05-21 | 1982-07-06 | Motorola, Inc. | Conditional branch unit for microprogrammed data processor |
US4546431A (en) | 1982-11-03 | 1985-10-08 | Burroughs Corporation | Multiple control stores in a pipelined microcontroller for handling jump and return subroutines |
US5134693A (en) * | 1989-01-18 | 1992-07-28 | Intel Corporation | System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel |
JP2772604B2 (ja) | 1992-10-27 | 1998-07-02 | シャープ株式会社 | データ処理システム |
JP2761688B2 (ja) * | 1992-02-07 | 1998-06-04 | 三菱電機株式会社 | データ処理装置 |
US5805876A (en) | 1996-09-30 | 1998-09-08 | International Business Machines Corporation | Method and system for reducing average branch resolution time and effective misprediction penalty in a processor |
US6282663B1 (en) * | 1997-01-22 | 2001-08-28 | Intel Corporation | Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor |
US5951678A (en) | 1997-07-25 | 1999-09-14 | Motorola, Inc. | Method and apparatus for controlling conditional branch execution in a data processor |
JPH11259437A (ja) * | 1998-03-12 | 1999-09-24 | Hitachi Ltd | 不要バリア命令の削減方式 |
JP3683439B2 (ja) * | 1999-08-24 | 2005-08-17 | 富士通株式会社 | 分岐予測を抑止する情報処理装置および方法 |
US6496975B1 (en) | 1999-10-15 | 2002-12-17 | International Business Machines Corporation | Method, system, and program for performing conditional program operations |
US6598153B1 (en) | 1999-12-10 | 2003-07-22 | International Business Machines Corporation | Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions |
US6757816B1 (en) * | 1999-12-30 | 2004-06-29 | Intel Corporation | Fast branch misprediction recovery method and system |
US6859875B1 (en) | 2000-06-12 | 2005-02-22 | Freescale Semiconductor, Inc. | Processor having selective branch prediction |
US20020073301A1 (en) | 2000-12-07 | 2002-06-13 | International Business Machines Corporation | Hardware for use with compiler generated branch information |
US7356673B2 (en) * | 2001-04-30 | 2008-04-08 | International Business Machines Corporation | System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7107438B2 (en) * | 2003-02-04 | 2006-09-12 | Via Technologies, Inc. | Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions |
JP3974063B2 (ja) * | 2003-03-24 | 2007-09-12 | 松下電器産業株式会社 | プロセッサおよびコンパイラ |
TWI232457B (en) * | 2003-12-15 | 2005-05-11 | Ip First Llc | Early access to microcode ROM |
CN1270233C (zh) * | 2003-12-24 | 2006-08-16 | 智慧第一公司 | 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法 |
CN1326037C (zh) * | 2004-02-06 | 2007-07-11 | 智慧第一公司 | 用于更正微处理器中的内部调用或返回堆栈的方法与装置 |
US20050216713A1 (en) | 2004-03-25 | 2005-09-29 | International Business Machines Corporation | Instruction text controlled selectively stated branches for prediction via a branch target buffer |
US7536694B2 (en) * | 2004-11-30 | 2009-05-19 | International Business Machines Corporation | Exception handling in a multiprocessor system |
US7725695B2 (en) | 2005-05-31 | 2010-05-25 | Arm Limited | Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
WO2007084202A2 (en) * | 2005-10-31 | 2007-07-26 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US7783869B2 (en) * | 2006-12-19 | 2010-08-24 | Arm Limited | Accessing branch predictions ahead of instruction fetching |
US7711935B2 (en) * | 2007-04-30 | 2010-05-04 | Netlogic Microsystems, Inc. | Universal branch identifier for invalidation of speculative instructions |
JP5215655B2 (ja) * | 2007-12-27 | 2013-06-19 | ルネサスエレクトロニクス株式会社 | データ処理装置及びデータ処理装置におけるバスアクセス制御方法 |
-
2009
- 2009-06-09 US US12/481,427 patent/US8635437B2/en active Active
- 2009-06-09 US US12/481,499 patent/US8131984B2/en active Active
- 2009-06-09 US US12/481,118 patent/US8245017B2/en active Active
- 2009-06-09 US US12/481,487 patent/US8145890B2/en active Active
-
2010
- 2010-01-26 TW TW99102041A patent/TWI470546B/zh active
- 2010-01-28 CN CN2010101119289A patent/CN101819521B/zh active Active
- 2010-01-28 CN CN201010111907.7A patent/CN101876891B/zh active Active
- 2010-01-28 CN CN201010111901XA patent/CN101826001B/zh active Active
- 2010-01-28 CN CN201210407639.2A patent/CN102929589B/zh active Active
- 2010-01-28 CN CN2010101119062A patent/CN101819520B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI493450B (zh) * | 2010-09-24 | 2015-07-21 | Intel Corp | 用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統 |
TWI470548B (zh) * | 2011-04-07 | 2015-01-21 | Via Tech Inc | 具有條件指令之微處理器、其處理方法及電腦程式產品 |
TWI474191B (zh) * | 2011-04-07 | 2015-02-21 | Via Tech Inc | 控制暫存器對應於異質指令集架構處理器 |
US9268569B2 (en) | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
Also Published As
Publication number | Publication date |
---|---|
US20100205404A1 (en) | 2010-08-12 |
US20100205403A1 (en) | 2010-08-12 |
US8145890B2 (en) | 2012-03-27 |
US20100205402A1 (en) | 2010-08-12 |
CN101819520B (zh) | 2013-04-17 |
US20100205415A1 (en) | 2010-08-12 |
CN101826001B (zh) | 2013-03-06 |
CN102929589B (zh) | 2015-04-15 |
CN101876891B (zh) | 2014-08-13 |
CN101826001A (zh) | 2010-09-08 |
CN101819521B (zh) | 2013-09-25 |
CN101876891A (zh) | 2010-11-03 |
US8245017B2 (en) | 2012-08-14 |
TWI470546B (zh) | 2015-01-21 |
CN101819521A (zh) | 2010-09-01 |
CN102929589A (zh) | 2013-02-13 |
US8131984B2 (en) | 2012-03-06 |
CN101819520A (zh) | 2010-09-01 |
US8635437B2 (en) | 2014-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201030612A (en) | Pipelined microprocessor with fast conditional branch instructions based on static exception state | |
US7895421B2 (en) | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement | |
TWI444892B (zh) | 用於預測未對齊之記憶體存取之方法及處理器 | |
TWI416407B (zh) | 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品 | |
US6542984B1 (en) | Scheduler capable of issuing and reissuing dependency chains | |
TWI423123B (zh) | 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體 | |
TWI551986B (zh) | 用於自較低特殊權限狀態控制執行階段檢測設施之操作之電腦程式產品、方法及其系統 | |
US8285947B2 (en) | Store hit load predictor | |
EP1244961B1 (en) | Store to load forwarding predictor with untraining | |
US6622237B1 (en) | Store to load forward predictor training using delta tag | |
EP1296229B1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
US6694424B1 (en) | Store load forward predictor training | |
US11755731B2 (en) | Processor that prevents speculative execution across translation context change boundaries to mitigate side channel attacks | |
EP1244962B1 (en) | Scheduler capable of issuing and reissuing dependency chains | |
US6564315B1 (en) | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction | |
US6622235B1 (en) | Scheduler which retries load/store hit situations | |
JP2009048633A (ja) | 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法 | |
US7844807B2 (en) | Branch target address cache storing direct predictions | |
US7865705B2 (en) | Branch target address cache including address type tag bit | |
CN102163139A (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
EP1296228A2 (en) | Instruction Issue and retirement in processor having mismatched pipeline depths | |
US7496734B1 (en) | System and method for handling register dependency in a stack-based pipelined processor | |
US20140189313A1 (en) | Queued instruction re-dispatch after runahead | |
KR20070019750A (ko) | 로드 동작의 투기적인 결과들을 레지스터 값들에 연결하는메모리 파일을 유효화하기 위한 시스템 및 그 방법 |