TWI282514B - Method, apparatus and computer readable media for recording related instruction for correcting an internal call/return stack in a pipelined microprocessor - Google Patents
Method, apparatus and computer readable media for recording related instruction for correcting an internal call/return stack in a pipelined microprocessor Download PDFInfo
- Publication number
- TWI282514B TWI282514B TW092135488A TW92135488A TWI282514B TW I282514 B TWI282514 B TW I282514B TW 092135488 A TW092135488 A TW 092135488A TW 92135488 A TW92135488 A TW 92135488A TW I282514 B TWI282514 B TW I282514B
- Authority
- TW
- Taiwan
- Prior art keywords
- signal
- call
- stack
- level
- docket
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 37
- 238000012937 correction Methods 0.000 claims abstract description 65
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000012546 transfer Methods 0.000 claims description 13
- 239000000872 buffer Substances 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 6
- 235000013405 beer Nutrition 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 5
- 239000000463 material Substances 0.000 claims description 4
- 230000008439 repair process Effects 0.000 claims description 4
- 239000000126 substance Substances 0.000 claims 2
- 241000282376 Panthera tigris Species 0.000 claims 1
- 208000027418 Wounds and injury Diseases 0.000 claims 1
- 230000000295 complement effect Effects 0.000 claims 1
- 230000006378 damage Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 claims 1
- 239000000835 fiber Substances 0.000 claims 1
- 208000014674 injury Diseases 0.000 claims 1
- 238000003756 stirring Methods 0.000 claims 1
- 238000012360 testing method Methods 0.000 claims 1
- 230000001052 transient effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 12
- 230000005856 abnormality Effects 0.000 description 8
- 238000003860 storage Methods 0.000 description 8
- 201000004767 Lethal congenital contracture syndrome Diseases 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 210000003811 finger Anatomy 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 229910052742 iron Inorganic materials 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 206010011469 Crying Diseases 0.000 description 1
- 235000009854 Cucurbita moschata Nutrition 0.000 description 1
- 240000001980 Cucurbita pepo Species 0.000 description 1
- 235000009852 Cucurbita pepo Nutrition 0.000 description 1
- 101001011017 Gallus gallus Gallinacin-11 Proteins 0.000 description 1
- 101001011003 Gallus gallus Gallinacin-13 Proteins 0.000 description 1
- 241000282320 Panthera leo Species 0.000 description 1
- 229910000831 Steel Inorganic materials 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- OIQPTROHQCGFEF-UHFFFAOYSA-L chembl1371409 Chemical compound [Na+].[Na+].OC1=CC=C2C=C(S([O-])(=O)=O)C=CC2=C1N=NC1=CC=C(S([O-])(=O)=O)C=C1 OIQPTROHQCGFEF-UHFFFAOYSA-L 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 150000002500 ions Chemical group 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 235000020354 squash Nutrition 0.000 description 1
- 239000010959 steel Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000013519 translation 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/30054—Unconditional 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
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
^8251^年./轉換頁; 一一>· 九、發明說明: 【發明所屬之技術領域】 之領:=有關微處理器中呼叫(cai 1 v轉回(return滩疊 呼叫/轉回堆疊與主記憶體間之-致性的維持。 詈。!疋一種可執行電腦系麟規定之指令的數位裝 科用一種内部呼叫/轉回堆疊以減少管線氣泡的 指令挪之冗長記舰於存取時所造成的。 ^日'7純_來將財雜改變至次f式之-指令, ί Ϊ!? 由辦叫齡所綱。當—呼叫指令_于 二二該呼叫指令後面之指令的位址)將會被推入主記 k體中由祕理盗内-堆疊指標暫存器所指定之一堆疊中,而該次常 之物旨標暫存 括可改變一程式流程由次常式退回至程式内呼叫指令後面之指2 當一轉回指令被執行時,& 記憶體堆疊中爆出(pop) ’並被載入堆疊指標暫存器中。 [0005] 在包含呼叫/轉回堆疊之—微處理中,當呼叫齡被 時’轉回位址係可被推至該呼叫/轉瞒疊上以令可繼續提取 ,而管線之後端階層接著將可利用該轉回位址來更新主記 堆疊。相反地’當轉回指令執行時,轉回位址可自呼叫/轉回堆疊中^ 出(_),以使指令可繼續提取而不需等待自該主記憶體堆疊所之 轉回位址的冗長提取。
Client’s Docket No·: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 [0006] 呼叫/轉回堆疊之效能主要係根據處理器之可使呼叫/轉回 堆疊與主記憶體維持-致之能力所決定。呼叫/轉回堆疊依據呼叫 回指令所做的推測性更新會導致主記憶體與呼叫/轉回堆疊間的不二 致發生。❿呼叫/轉回堆疊的更新之所以為推測性,乃是g為管線中吟 7 1282514 . ^轉回之别的指令引起一無效事件(例如產生一個異常)所導致的,舉 例來說,其縣管線於引起異常之指令後進行所有的指令清洗 (flush) ’其中引起異常之指令係包括被推測性執行之呼叫/轉回指 =。同樣地,在呼叫/轉回指令之前所執行之一分支指令有可能會被錯 誤預測(nuspredicted) ’而將要求管線清洗被推測性執行之呼叫/轉回 指令。由於呼叫/轉回堆疊係已依據呼叫/轉回指令而被推測性地更 新’但主記憶體堆疊在呼叫/轉回指令不再為推測性之前並不會被更 ,’因此呼叫/轉回堆疊之内容與主記憶體之内容將造成不一致的現 象0
[0007]此處可參考美國專利案號6 314 514「瓶獅励 APPARATUS FOR CORRECTING AN INTERNAL CALL/RETTJRN STACK IN A MICROPROCESSOR THAT SPECILATIVELY EXECUTES CALL AND RETIM INSTRU_S」’其係描述在無論是否有推測性呼叫/轉回指令^行 的情況下,用來維持-呼叫/轉回堆疊與主記憶體一致之震置及方法。 然而在此專利令所描述之裝置,僅可用於其管線 測 重Ρ白層來執仃與偵測分支指令錯誤預測的微處理器中。 [_]因此,提供用於更正—微處理財之内 受之方法與裝置,且該微處理器係可自多 ,獅恢 _在 [0009]為達上述之目的,本發明之一較佳實施例遂提供一分離 =置’此分赋更正裝置可保存更正資訊以提 : 呼叫/轉回位置而位於不同程式段上的一推雕呼叫/轉回指令,= 可於偵測到無效事件時啟動翻別/轉回齡所屬階層之選擇 正,其中該無效事件係相_於偵測到該無效事件之階層。本發明之一
Client’s Docket No.: TT^sDocketNo:0608.A40743-TW/DraftFl/#^^/2〇〇6/11/14 1282514 目的係提供-糊來更正位於管線化微處理器中之一啤叫/轉回 Ϊ裝置係包括一第一堆疊’其係具有複數個項目以二 儲存更正#訊,其帽更正資訊乃侧於微處_管線巾之第 個階層内的呼叫或轉回指令。該褒置還包括有一第二堆疊 至=第了堆疊並具有第4幽目項目以用於儲存更正資訊,其中該更 正資訊係、侧於微歧II管線巾之第二複細崎内的呼叫或轉^指 令。此外,該裝妓包括一控制邏輯,其係雛至第一與第二堆疊。曰 該控制邏财絲接收-控備號峨示-呼叫或細齡自第二 數娜皆層傳遞至第二複數個階層。且該控制邏輯可將相關於呼叫 回指令之更正資訊自第一堆疊中搬移至第二堆疊。 ” [0010]本發明之又-目的係提供一管線化之微處理器。此微處理 器乃包括-呼叫/轉瞒疊(CRS)。且其亦包括第一與第二管線階層, 分別於第-及第二信號上產生一真值,以分別對應於^第 -與第二管、鎌層巾之-分支指令的錯顯測檢測結果,而其中該第 一P皆層在管線中係位於該第二階層上方。此外,該微處理哭^ 裝置,其係输以接收第-及第二信號。該裝置翻於相;^ 於該第-P皆層之管線階層内的呼叫或轉回指令之第一資訊,以及用於 2持,關於介於該第-與第二階層中間之管線階層内的呼叫或轉回指 令=第二資訊,其巾若該第—信麟域值時,雜置係可利用該第 -,訊以選擇性敝正CRS,而總第二信號為真值時,該裝置可利用 該第一與第二資訊以選擇性地更正CRS。 [0011]本發明之另一目的係提供一種用於使一管線化微處理器中 之一呼叫/轉回堆疊(CRS)和與其輕接之一記憶體維持一致的方法°。該 方法係包括接收請求以回應一呼叫或轉回指令來更新CRS。該方法亦包 括回應刖述之接收步驟,將更正資訊儲存至一第一緩衝器内。於儲存 元之後,該方法還包括有一步驟,其係檢測該呼叫或轉回指令其中之
Client’s Docket No.: TT’s Docket N〇:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 1282514 第—階層以用來檢測-無效事件。 〇 / 0有—步驟,其係回 ^ 之一部份自該第一緩衝器_至-第二緩衝器,驟謂更正纽 腦資:^本目的係提供"具體實施於-傳輸媒體内之電 ,貝’其她她_程式如提供__用於更正 】 ::更二資訊係有關微處理器管線之第::==:::: ^ ^式碼亦包括第二程式碼以用於提供一第二堆叠,= =接至^ -堆疊,該第二程柄更包括有料謝_儲存更正 微處理器管線之第4 的呼叫或轉回指令。此外,該程式包 制邏輯,其係耦接至該第-及第二堆疊,該第 中械細齡正自該第—複數嶋傳^該 苐4數鐵層,其t該湖邏__該_健靖無呼叫或 轉回指令棚之該控制邏輯自該第—堆疊移至該第二堆疊。 [0013] 本發日月之好處是可使無效事件(例如分支指令錯誤删或 異常)於微處理器管線之多重階層巾被檢測絲,且仍可讓—呼叫增 回堆疊與主纖體轉-雜。本拥可在管制前餅檢測出分支 指令錯誤預測而非只能在管線的底部,其係因為可使更正錯誤預測與 提取正確指令的動作比只能在管線底部檢測出錯誤預測時快,而可以 減少管線氣泡發生。 [0014] 本發明之其他特徵、利益及優點,在參閱本說明書的其餘 部分和圖示後,將可更加清楚。 【實施方式】 [0018]請參考圖一,其係為本發明之一管線化微處理器1〇〇的方塊
Client’s Docket No·: TT,s Docket No:0608-A40743-TW/DraftFl/林碌輝/2006/11/14 1282514 * ^ ^
* ; I ----- ·“=,·一—……—卜, 示意圖。在一較佳實施例中,微處理器100如圖一所示係包括了 12個階 層。 [0019]微處理器100包括有一IP皆層102(或稱指令提取階層1〇2)。I 階層102係可提供一提取位址給一指令快取記憶體以提取指令供微處 理器100執行。若該提取位址在指令快取記憶體中未命中,則IP皆層102 將自一主記憶體中提取未命中快取線(missing cache line),其中該 主記憶體係耦接至微處理器100。在一較佳實施例中,I階層1〇2包括有 一分支目標位址快取記憶體,藉由指令快取記憶體提取位址,此一分 支目標位址快取係可沿著I階層102内部之一指令快取記憶體而被加以 存取。此外,該分支目標位址快取記憶體係可儲存之前被執行過之分 支指令的目標位址,以及儲存有關分支指令之預測資訊,無論分支指 令是否會被提取。分支目標位址快取記憶體可根據該指令快取記憶體 取位指以產生一結果預測與一分支指令的目標位址。分支指令係為 微處理器之習知技術中廣為人知的技術,其係包括可改變程式流程之 指令。特別是,分支指令可改變一指令指標緩衝器或程式計數緩衝器 之值(例如圖二中之指令指標(IP)暫存器214),而其中該指令指標緩衝 器或程式計數緩衝器係可紀錄下一個將被執行之指令的記憶體位址。 在一較佳實施例中IP皆層102係包括有多重階層。 [0020 ]微處理器1 〇〇亦包括有一Fp皆層1 〇4(或稱指令格式階層 104) ’其係耦接至ip皆層1〇2。fp皆層1〇4包括有指令解碼與格式化邏輯 以用來將指令解碼與格式化。在一較佳實施例中,微處理器薦係為一 x86處理器,其係可容許各式不同長度之指令於其指令集中。F階層1〇4 可自指令快取記憶體中接收一指令位元流,並依照每個指令之長度來 剖析該指令位元流以成為位元組之分離群組,其中該分離群組係可組 成一x86指令。特別是,F階層104之解碼邏輯可將呼叫及轉回指令解 碼,並回應一已解碼之呼叫/轉回指令以更新如圖二所示之微器中
Client’s Docket No.: TT’s Docket N〇:0608-A40743-TW/DraftFl/林璟輝/2006/11/14
1282514皆1各修正替換頁I 的一呼叫/轉回堆疊(CRS)206。呼叫/轉回堆疊(crs)2〇6與F卩皆層1〇4將 配合圖二於後面内容詳細說明之。 [0021] 微處理器1〇〇還包括有一X卩皆層ι〇6(或稱轉譯階層⑽),其 係柄接至FP皆層104。此Xp皆層1〇6包括一指令轉譯器,可將χ86之巨集指 令轉譯為微指令,而此微指令係由管線剩下之階層來執行。 [0022] 微處理器1 〇〇還包括有一r階層1 〇8(或稱暫存器階層1 〇8), 其係耦接至ΧΡ皆層106 〇此RP皆層1〇8除了包括其他非使用者可視暫存器 (non-user-visible register)外,還包括一使用者可視暫存集 (user-visible register set)。用於轉譯後之微指令的指令運算元係 儲存於R階層108暫存器中,以供管線1〇〇後繼之階層執行該微指令之 用。 [0023] 微處理器1〇〇還包括有一a階層112(或稱位址階層η?),其 係耦接至RP皆層108。此AP皆層112包括位址產生邏輯,其可自Rp皆層1〇8 接收運算元與微指令’並產生微指令所需要之位址,例如用於載入/儲 存微指令之記憶體位址。特別是Ap皆層112還可計算出分支指令目標位 址。 [0024] 微處理器1〇〇還包括有一jp皆層114,其係麵接至Ap皆層η〗, 此JP皆層114可接收由AP皆層112計算得出之分支指令目標位址。^可偵 測出分支指令錯誤預測。也就是說,JP皆層μ可偵測出由一較前面之 管線100P皆層因?一分支指令所做出之預測為錯誤預測,而此處所謂的 錯為預測即為由A階層112計算得出之目標位址與先前所預測的目標位 址不匹配。JP皆層114將配合圖二於後面内容詳細說明之。 [0025] 微處理器100還包括有一DP皆層116(或稱資料階層116),其 係搞接至J卩皆層114。此一D階層116係包括用於存取由a階層112產生之 位址所載明之資料的邏輯單元。D卩皆層116可自主記憶體中將資料載入 微處理器100中。特別是D階層116可回應一轉回指令以自主記憶體堆疊
Client’s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 12 I28251fW^g^ ' 中載入轉回位址。由主記憶體堆疊所載入之轉回位址係用來與之前?回 應一轉回指令而自呼叫/轉回堆疊(CRS)206所發生之轉回位址相比 較,以檢測呼叫/轉回堆疊206是否具有正確的值。若呼叫/轉回堆疊2〇6 之轉回位址與主記憶體堆疊之轉回位址不匹配,則管線1〇〇將進行清洗 (flush)並利用主記憶體堆疊之轉回位址重新啟動。邮皆層還包括有 一資料快取記憶體,其係可自主記憶體中快取微處理器1〇〇中之資料。 在一較佳實施例中,該資料快取記憶體係為一三循環之快取記憶體。G P皆層118乃耦接至DP皆層116,其係作為資料快取記憶體項目之第二階 層。而取皆層122乃耦接至GP皆層118,以作為資料快取記憶體項目之第 三階層。 [0026] 微處理器100還包括一E階層124(或稱執行階層124),其係 耦接至HP皆層122。此EP皆層124具有執行邏輯(例如算數邏輯單元)以執 行微指令’其中該些微指令乃是基於之前階層所提供的資料與運算 元。特別是,EP皆層124還可產生所有分支指令之一分解目標位址與執 行結果。亦即EP皆層124之目標位址係已知為正確之所有分支指令的目 才示位址,而所有的預測目標位址必須與其相匹配。再者,E階層124可 產生一用於所有分支指令的分解結果,無論該分支是否被提取。 [0027] 微處理器1〇〇還包括一汾皆層丨26(或稱儲存階層126),其係 耦接至EP皆層124。SP皆層126可將自E階層124接收之微指令執行的結果 存入主記憶中。此外,EP皆層124計算得出之分支指令的目標位址與執 行結果係提供給SP皆層126。再者,ΐρ_〇2之分支目標位址快取記憶 體係可利用一分支指令的目標位址和執行結果而由别皆層126加以更 新。S階層126可价測出由-較早之管線1〇崎層所作的預測是否為錯誤 預測。此外,SP皆層126還可檢測出是否有異常(excepti〇n)發生。此處 所明之異常係包括於正常程式執行時所發生之一個改變。異常發生的 原因可能為硬體抑或是軟體事件所造成的,其包括有硬體中斷、軟體
Client’s Docket No·: TT’s Docket No..0608-A40743-TW/DraftFl/林璟輝/2〇〇6/11/14 1282514 中斷、非可罩幕中斷、指令追蹤執行、斷點、算數上溢或下溢、尋頁 缺失、偏差之記憶體項目、記憶體保護違反、未定義指令、硬體故障、 電源失效、被零除、段界錯誤、浮點錯誤、損壞描述符、元件(例如共 處理器)失效。S階層126將配合圖二於後面内容詳細說明之。 ’、 [0028] 微處理器1〇〇還包括一卿皆層128(或稱回寫階層128),其係 李馬接至SP皆層126。此一WP皆層128係可將⑽皆層126所得之結果回 階層108之暫存器以更新微處理器1〇〇之狀態。 [0029] 如圖一所示,微處理器1〇〇所包括之階層係超過一個,其可 檢測出各種無效事件,例如分支預測錯誤或指令異常等,其將會要求 微處理器100依據呼叫/轉回指令所作之推測性執行以更正對呼叫/轉 回堆@(CRS)206所做的更新。這與習知技術之微處理器是有很大差異 的,習知之微處理器係僅能自管線内之一階層中檢測出無效事件,二 剷面所提及之美國專利案。因此若一無效事件於皆層丨14被檢測出 時,本發明圖二中所描述之更正裝置將為J階層114(含)以上之呼叫/轉 回指令而更正CRS 206。反之,若一無效事件於sp皆層126被檢測出時, 本發明圖一中所描述之更正裝置將為别皆層126(含)以上之呼叫/轉回 指令而更正CRS 206。 [0030] 請參考圖二,其係為本發明圖一中之微處理器1〇〇包括一呼 叫/轉回堆疊更正裝置的方塊示意圖。圖二包括有圖一中管線階層 至128之部分。此外如圖二所示,微處理器1〇〇係包括有控制邏輯2〇2、 輕接至控制邏輯202之一雙端輸入多工器2〇4、搞接至多工器2〇4之一呼 叫/轉回堆疊(CRS)206、耦接至CRS 206之一轉回位址更正堆疊(return address correction Stack,RACS)208、耦接至RACS 208之一三端輸 入多工器212、耦接至多工器212之一指令指標暫存器214 '耦接至控制 邏輯202之一高階更正命令堆疊(HCCs)216、耦接至HCCS 216之一六端 輸入多工器222以及耦接至多工器222之一低階更正命令堆疊(LCCS)。
Client’s Docket No.: TT,s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 1282514 - / . t [0031] 當-呼叫指令被_時,F階層1〇4可於一呼叫信號232上產 生一真值以提供給控制邏輯202。於一較佳實施例中,一呼叫指令係包 括-x86算數邏輯CALL指令。控制邏輯2〇2可回應該呼叫信號232以推測 性地更新呼叫/轉回堆疊(CRS)206,其詳細狀況將於後面說明之。此 外’ FP皆層104係可提供次常式之位址給控制邏輯2〇2,其乃是由在一 subroutine一addr信號236上之呼叫指令所紀錄。再者:階層1〇4亦 可提供在return一addr信號238上之呼叫指令所紀錄之轉回位址給控制 邏輯202。最後’當-轉回指令被解馬時,F階層1〇4還可產生一轉回信 號234以提供給控制邏輯202。於一較佳實施例中,一轉回指令係包括 -x86算數邏輯RET指令。控制邏輯2〇2可回應該轉回信號234而推測性 地更新呼叫/轉回堆疊(CRS)206,其將於後面詳細說明之。 [0032] 當一呼叫或轉回指令到達j階層114時,j階層114係可於一 J—cal Ι/ret信號244上產生真值,以提供給控制邏輯2〇2。於一較佳實 施例中,FP皆層104係產生一狀態位元來指示一指令為呼叫或是轉回指 令’而該狀恶位元乃隨著該指令以提供給管線。若該狀態位元為真時, JP皆層即於一 J—call/ret信號244上產生真值。 [0033] 當JP皆層114發生暫停狀況時,其可於j—si:alled信號2犯上 產生一真值給控制邏輯202 ;否則JP皆層114係於J_stalled信號242上產 生一偽值。J—stalled信號242為真值時,係表示正存在於】卩皆層〖Μ上 之指令在下一個時脈週期内將不會前進至下一個階層(即邮皆層丨丨6)。 而當J—stalled信號242為偽值時,其係表示正存在於j階層114上之指 令將會在下一個時脈週期内前進至下一個p皆層。 [0034] 若一分支指令到達jp皆層ι14且墙層檢測出分支指令為錯 誤預測時,JP皆層114將於Jjnispredict信號246中產生真值,此時將會 要求所有JP皆層以上的階層進行清洗(f lush)以使微處理器1 〇〇分支到 正確的分支指令目標,亦即分支到該分支指令之後的指令(若該分支係
Client5s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 15 為錯誤預測)’或分支到正確的分支指令的目標位址(若該分支為正癌 予,則但預測的位址有誤時)。為使分支可在J階層114被分解,J階層114 還可計算分支指令之正確目標並於一 J 一correct_addr信號291上提供 正確位址給控制邏輯202。此外,包含j階層114及其以上之階層在此係 疋義為官線100中的上層或高階階層,而奸皆層以下之階層則稱為低層 或低<階階層。 [0035] 當一呼叫或轉回指令到達s階層126時,汾皆層⑽係可於一 S—call/ret信號上產生真值以提供給控制邏輯2〇2。在一較佳實施例 中’ FP皆層所產生之狀態位元若顯示該指令係為呼叫/轉回指令,亦即 為真值時,SP皆層126遂可於S_call/ret信號252上產生真值。 [0036] 而若一分支指令到達s階層126且S階層126檢測出該分支指 令係於之前被錯誤預測時,汾皆層126將於一Sjnispredict信號254上產 生一真值,如此一來Sp皆層126(含)以上之階層將會進行清洗並使得微 處理器100得以分支至分支指令的正確目標。邡皆層丨26也可提供正確的 分支指令目標,以於一S—correct—addr信號293上控制邏輯202。 [0037] 若一指令到達s階層126,且SP皆層126檢測到該指令係發生 一異常時,SP皆層126將會於一S_exception信號256上產生一真值。此 時SP皆層126(含)以上之所有階層將會被要求清洗以使得微處理器j 〇〇 可分支至一異常處理程序。於一較佳實施例中,被JP皆層丨14或sp皆層i26 偵測到為錯誤預測之一分支指令,或一指令於SP皆層126所產生之一異 常狀態,係為一呼叫/轉回指令。 [0038 ]多工器204之一輸入端係可接收由控制邏輯202所產生之一 new-return一addr信號262 〇當FP皆層104於一呼叫信號232上產生一真值 時,控制邏輯202可將自F階層104所接收並經過return_addr信號238的 轉回位址,經由new_retuiTLaddr信號262遞送至多功器204。多工器204 之第二個輸入端係可自轉回位址更正堆疊(RACS)208處接收一
Client’s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14
12825φ RACS—ret—addr信號258 〇 RACS—ret—addr信號258之數值係為RACS 208 頂端項目的轉回位址,其内容將於後面詳述之。多工器2〇4之輸出乃作 為呼叫/轉回堆疊(CRS)206之輸入。控制邏輯202可產生一 CRSjnmSel 信號264以控制多工器204。當F階層104經由呼叫信號232說明一呼叫指 令之存在以利用呼叫指令轉回位址來推測性地更新CRS 2〇6時,控制邏 輯202於CRS—mux一sel信號264上可產生一個值,以使多工器204選擇 new—return—addr信號262,其狀況將於後詳細描述。控制信號2〇2於 CRS—muX-Sel信號264上產生一個值,而使得多工器2〇4可回應一無效之 事件,例如由 J—mispredict信號246、S—mispredict信號254或 S—except ion信號256等所指示之無效事件來選擇RACS—ret—addr信號 258以更正CRS 206之先前的錯誤推測性更新。 [0039] CRS 206包括一儲存元件(或項目)之陣列,以用於儲存呼叫 指令轉回位址。在一較佳實施例中,CRS 2〇6包括十六個項目以儲存十 八個轉回位址’為求間化圖示’圖二中僅以三個項目表示之。該些[防 206之項目係排列為一堆疊型態。控制邏輯2〇2可於一push_CRS信號_ 上產生一真值以自多工器2〇4處將一轉回位址推進至crs 206。當控制 邏輯202推進一轉回位址至crs 206時,現行於CRS 206之轉回位址將被 往下推進一個項目(底部的項目將會被推出去),而由多工器204所提供 之轉回位址將被載入CRS 206之頂端項目。控制邏輯2〇2還可於一 pop一CRS信號268上產生一真值,其係可爆出(卿)一轉回位址以離開呼 叫/轉回堆疊(CRS)206。而當控制邏輯202爆出一轉回位址而離開CRS 206時,現行於CRS 206之頂端項目的轉回位址將被迅速導離並被提供 給一CRS—ret—addr信號292,而位於其他項目之轉回位址將全部被移動 一個項目。其詳細之操作情形將於後面說明之。 [0040] 轉回位址更正堆疊(racS)208包括有一儲存元件(或項目) 之陣列用以儲存呼叫指令轉回位址。在一較佳實施例中,腫8 208包
Client’s Docket No·: TT’s Docket No:0608-A40743-TW/DraflF 1/林璟輝/2006/11/14 17 128251巴正替換頁 · ·1···Ι II tmmmmn ..............— ,二個項目以儲存三個轉回位址。而MCS 2〇8之項目係被排列為一堆 豐型態。控制邏輯202可於一push—RACS信號272上產生一真值以自 CRS—ret—adcH鐵292推進一轉回位址至raCS 208。而當控制邏輯2〇2 推進一轉回位址至RACS 208時,現行於RACS 208之轉回位址將被往下 推進-個項目(底部的項目將會被推出去),而提供體s—ret_addr信 唬292之轉回位址將可被載^cs 2〇8之頂端項目中。控制邏輯2〇2還 可於一pop-RACS信號274上產生一真值,其係可爆出(p〇p)一轉回位址 以離開RACS 208。而當控綱輯2〇2爆出一轉回位址而離_(^ 2〇8 時,現行於RACS 208之頂端項目的轉回位址將被迅速導離並被提供給 一RACS—ret一addr信號258 ’而位於其他項目之轉回位址將全部被移動 春 一個項目。其詳細之操作情形將於後面說明之。 [0041]多工器212之一輸入端係可接收由控制邏輯2〇2所產生之一 new—subroutine—addr信號276 〇當FP皆層104於一呼叫信號232上產生一 ,值時,控制邏輯202可將自FP皆層104所接收並經過sub^utine_addr 信號236的轉回位址,經由new— subroutine —addr信號276遞送至多功 器212。多工器212之第二個輸入端係可自CRS 2〇6處接收一 CRS一ret—addr信號292。而多工器212之第三個輸入端係可自控制邏輯 202接收一invalidating^event一addr信號295。此外,多工器212之輸 出乃作為指標指令暫存器214之輸入。控制邏輯2〇2可於ip」oad信號 ® 282上產生-真值,其係可使得多卫||212之輸出被載人指標指令暫^ 器214中。當FP皆層104經由呼叫信號232說明一呼叫指令之存在以使得 微處理器100分支至呼叫指令次常式位址時,如下面配合圖三所述之^ 況’控制邏輯202可於IP—mux一sel信號278上產生一真值以使得多工器月 212選擇new— subroutine 一addr信號276 〇此外當FP皆層1〇4經由轉回传 號234說明一轉回指令之存在,使得微處理器1〇〇分支至先前 : 206之轉回位址以回應一先前被執行之呼叫指令時,如下面配合圖^所
Client’s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 18 1282514 述之情況,控制邏輯202可於IP—mux-sei信號278上產生一真值以使多 工器212選擇CRS— ret 一addr信號292。當一無效事件發生時,例如一 分支錯誤預測或指令異常等,控制邏輯2〇2可於IPjnux—sel信號278上 產生一個值,以使多工器212選擇invalidating__event—addr 295,而 非在CRS 2(½被更正之後才產生,如後述關於圖六及圖七。 的是,若於Jp皆層114檢測到之無效事件為一分支指令錯誤預測,控制 邏輯202可將J—correct_addr信號291遞送至 invalidating__event—addr信號295 ;若於SP皆層126檢測到之無效事件 為一分支指令錯誤預測,控制邏輯2〇2可將S—correct—addr信號293遞 送至invalidating』vent一addr信號295 ;而若於SP皆層126檢測到之無 效事件為一指令異常,控制邏輯2〇2可將微處理器1〇〇之一微碼記憶體 内的一被碼異常處理器常式位址遞送至inval idat ing_event_addr信 號295 ’其中該微碼異常處理器常式係用於處理特殊的異常事件。 [0042]高階更正命令堆疊(HCCS)216係包括一儲存元件(或項目) 之陣列以用於儲存更正CRS 206之命令。於一較佳實施例中,jjccs 216 包括六個項目以儲存六個命令。而該些項目係排列為堆疊形式。Hccs 216之頂端項目的内容係提供於一t〇p一hccs__cmd信號297上,而該 top_hccs—cmd信號297係被提供給控制邏輯2〇2。控制邏輯202可於一 push—HCCS信號284上產生一真值,以推進一提供於cmd信號248上作為 HCCS 216之輸入端的一命令至HCCS 216。當控制邏輯202推進一命令之 HCCS 行;miCCS 216之命令會被往下推進一個項目(底部的項 目將會被推出去),而被提供至cmd信號248上之命令則將被載入HCCS 216之頂端項目。控制邏輯202還可於一pop—HCCS信號286上產生一真 值,其係可爆出一命令以離開HCCS 216。而當控制邏輯202爆出一命令 而離開HCCS 216時,頂端項目内之命令將被去除,而位於其他項目的 命令則會往上移動一個項目。HCCS 216可儲存用來更正CRS 206之命
Client5s Docket No.: TT’s Docket No:0608-A40743-TW/DraflFl/林璟輝/2006/11/14 19 1282514 Λ 令,其係與管線100内JP皆層114(含)以上之階層的現行呼叫/轉回指令 相關。相對地,LCCS224所儲存用來更正CRS206之命令,係與管線1〇〇 内JP皆層114(含)以下之階層的現行呼叫/轉回指令相關。HCCS 216與 LCCS 224的操作狀況將於後面詳細描述之。 [0043] 控制邏輯202在HCCS 216中儲存有兩個命令,第一個為 POP-to-correct命令,第二個為PUSH-to-correct命令。 POP-to-correct命令可指示更正裝置爆出一轉回位址離開crs 206以更 正一被推測性執行過且正要自管線1〇〇處被清洗之呼叫指令。 PUSH-to-correct命令則可在自RACS 208爆出該轉回位址後,指示更正 裝置推進一轉回位址至CRS 206上,以更正一被推測性執行過且正要自 管線100處被清洗之呼叫指令。 [0044] 微處理器1 〇〇還包括有儲存元件以儲存與HCCS 216之每個項 目相關之有效位元218。有效位元218亦依細CCS 216而排列為一堆疊 形式。若有效位元218為真值,其表示相對應於HCCS 216之項目的命令 係為有效,否則即為無效。控制邏輯2〇2經由vaiid—bitsJICCS信號288 可讀取與寫入有效位元218。特別的是,當控制邏輯2〇2推進一命令於 HCCS 216時,有效位元218將往下移動且將載入一真值於有效位元218 頂端。其主要是因為一有效命令係往下推進至一相對應2HCCS 216項 目’所以該項目遂為有效。相反地,當控制邏輯2〇2爆出一命令離開hccS 216時,有效位元218將會往上移動且將載入一偽值至有效位元218底 部。有效位元218初始化係為一偽值。此外,有效位元218可經由 無效化)底部有效項目,如後所述。 [0045] 多工器222利用其六個輸入端可分別接收jjCCS 216六個項目 内之六個命令。而多工器222之輸出端係作為低階更正命令堆疊 (LCCS)224之輸入。當jp皆層丨14於j—cai1/ret信號244產生一真值以及
Client’s Docket No.: TT,s Docket N〇:0608-A40743-TW/DraftFl/林璟輝/2〇06/11/14 1282514 於J一stalled信號242產生一偽值,以說明一呼叫/轉回指令正在穿越j 階層114時,控制邏輯202可產生一xfer一cmdjnux一sel信號228以使多工 器222選擇六個輸入端之一的輸入端提供給LCCS 224,其係可轉移HCCS 216底部之有效命令至LCCS 224,如後所述。 [0046] LCCS 224包括一儲存元件(或項目)之陣列以儲存命令來更 正CRS 206。在一較佳實施例中,LCCS 224包括四個項目以儲存四個命 令。LCCS 224之項目係排列為一堆疊型態。LCCS 224之頂端項目的内 容係提供於一top」ccs—cmd信號299上,而該top_lccs_cmd信號299係 提供給控制邏輯202。控制邏輯202可於一push—LCCS信號294上產生一 真值,以推進一自多工器222所提供而作為LCCS 224之輸入端的一命令 至LCCS 224。當控制邏輯202推進一命令之LCCS 2224時,現行於LCCS 224 之命令會被往下推進一個項目(底部的項目將會被推出去),而自多工 器222所提供之命令則將被載入LCCS 224之頂端項目。控制邏輯202還 可於一pop-LCCS信號296上產生一真值,其係可爆出一命令以離開LCCS 224。而當控制邏輯202爆出一命令而離開LCCS 224時,頂端項目内之 命令將被去除,而位於其他項目的命令則會往上移動一個項目。LCCS 224可儲存用來更正CRS 206之命令,其係與管線1〇〇内jp皆層ιΐ4(含)以 下之階層的現行呼叫/轉回指令相關。相對地,HCCS 216所儲存用來更 正CRS 206之命令’係與管線1〇〇内jp皆層ιΐ4(含)以上之階層的現行呼 叫/轉回指令相關。HCCS 216與LCCS 224的操作狀況將於後面詳細描述 之。儲存於LCCS 224之命令係與上面所述相關於HCCS 216之該兩個命 令相同。 [0047] 微處理器1 〇〇還包括有儲存元件以儲存與LCCS 224之每個項 目相關之有效位元(valid bits)226。控制邏輯202經由 valid一bits—LCCS信號298可讀取與寫入有效位元226。而有效位元226 之操作情形係與上述之有效位元218的情況類似。
Client’s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 21 戰 1282514 罟^〇!fir參考圖三’其係為本發明圖二中之呼叫/轉回堆疊更正裝 p==f _ °制細三所利_„細齡如圖^ 2 ’微處理謂G之操作情況。其流程始於柳02。 们丨^ t方塊302中’ _104檢測出一呼叫/轉回指令係存在並 預測該呼叫/轉回指令係被提取;接著F階層依據呼叫或轉回指令之存 在與否’分別於呼叫信號232或轉回信號234上產生一 呼叫指令,F_G4射產対他料^sub__dd;2= return—addr 238 〇之後流程進入到判斷方塊3〇4 〇 [0050] 在判斷方塊3G钟’控制邏輯係檢驗呼叫信號232與轉回信 號234以決定其為呼叫指令亦或是轉回指令。若為呼叫指令,流程進入 方塊306 ;若為一轉回指令,流程進入方塊314。 [0051] 在方塊306中,控制邏輯202將时_』此238遞送至 new一return—addr 262,其係可於push-CRS信號266上產生一真值並於 CRSjux—sel信號264上產生真值以選擇—ret_—脱來推進至 CRS 206,如此一來遂可回應於判斷方塊3〇4處所判斷出之呼叫指令而 推測性地更新CRS 206。接著流程進入方塊3〇8。 [0052] 在方塊308中,控制邏輯2〇2於cmd信號248上產生一 to - correct命令並於即油―HCCS信號上產生一真值以推進該命令至 HCCS 216。因此,如配合圖二之前述内容,該有效位元218係用來作為 最新被推進之命令。接著流程進入方塊312。 [0053] 在方塊312中,控制邏輯202可於IP一l〇ad信號282上產生一 真值並於IP—mux一sel信號278上產生真值,其係可始多工器212選擇 new一subroutine—addr 276,進而使得微處理器1〇〇分支至呼叫指令次 常式位址。此流程終止於方塊312。 [0054] 在方塊314中,控制邏輯202可於pop一CRS信號268上產生一 真值,其係可爆出(pop)儲存於CRS 206之頂端項目内的轉回位址,以
Client’s Docket No·: TT’s Docket No:0608-A40743-TW/DraftFl/林環輝/2006/11/14 22
曰修(吏)正替換黃S 128251 回應於判斷方塊304處所判斷出之轉回指令而推測性地更新CRS 206, 其中該轉回位址係提供給dret一addr信號292。接著流程進入方塊 316 〇 [0055] 在方塊316中,控制邏輯202於push一RACS信號272上產生一 真值以將於方塊314中自CRS 206處所爆出之CRS—ret一addr信號292推 進至RACS 208。接著流程進入方塊318 〇 [0056] 在方塊318中,控制邏輯202於cmd信號248上產生一 to - correct命令並於push—HCCS信號284上產生一真值以推進該命令至 HCCS 216。因此,如配合圖二之前述内容,該有效位元218係用來作為 最新被推進之命令。接著流程進入方塊312。接著流程進入方塊322。 籲 [0057] 在方塊322中,控制邏輯202可於IP一l〇ad信號282上產生一 真值並於IP—mux—sel信號278上產生真值,其係可始多工器212選擇 new一subroutine一addr 276 ’進而使得微處理器1〇〇分支至轉回指令, 該轉回指令係為方塊314中自CRS 206處所爆出。此流程終止於方塊322。 [0058] 請參考圖四,其係為本發明圖二中呼叫/轉回堆疊更正裝置 的操作流私圖。特別是圖四所示係為當一呼叫/轉回指令到達圖一之j P皆層114時’微處理器1〇〇之操作情況。其流程始於方塊4〇2。 [0059] 在方塊402中’控制邏輯2〇2藉由檢測j—cau/ret信號244上翁 之真值來確定-呼叫/轉回指令已到達j階層114,以及藉由檢測 · 】一318116队號242上之偽值來卻定】階層114並無暫停(伽11)。接菩、、古 程進入方塊404。 抓 [0060] 在方塊404中,控制邏輯2〇2可除去HCCS 216之底部有效項 目内的命令。換言之,控制邏輯202可讀取有效位元218並清洗之以使 底部有效位元218變為偽值,其中該底部有效位元218係具有一真值以 使HCCS 216之底部有效命令變為無效,主要原因是該命令係被轉移至 LCCS 224。接著流程進入方塊406。
Client’s Docket No.: TT’s Docket No:0608-A40743-TW/DraflFl/林環輝/2006/11/14 23 I282,fM^7日修正替換頁 [0061] 在方塊406中’控制邏輯202可於pUSh—LCCS信號294上產生 -真值’以及於xfer—cmdjnuX-Sel信號228上產生一真值以自Hccs 216 之項目中選擇命令’其係可將該被去除之命令推進至LCCS没4,其中 HCCS 216之項目係於方塊4〇4中被去除。此一流程係終止於方塊4〇6。 [0062] 請參考圖五,其係為本發明圖二中呼叫/轉回堆疊更正裝置 的操作流麵。翻是目五所示縣當—呼叫/轉回齡到達圖一之s
Pf層126時,亦即當一呼叫/轉回指令不再是推測性時,微處理器⑽之 操作情況。其流程始於方塊5〇2。 [0063] 在方塊502中,控制邏輯2〇2藉由檢測心別/时信號脱上 之-真值來確定-哞叫/轉回指令已到勤階層126。接著流程進入方塊籲 504 〇 [0064] 在方塊504中,控制邏輯2G2係將LCCS 224之底部有效項目 内的命令去除。亦即控制邏輯讀取有效位元226並清洗之以使底部有效 位tl226變為偽值’其中該底部有效位元2邪係具有—真值以使^⑽4 之底部有齡令_無效’主要賴是呼叫_齡不推雕; 因此’若一無效事件發生,CRS 2〇6依照别皆層126内之呼叫/轉回指令 將不被更新。此一流程係結束於方塊504。 [0065] 請參考圖六,其係為本發明圖二中呼叫 =乍流麵。特細六所示係為當—分支指令錯誤删於^置· 114中被檢測到時,微處理器100之操作情況。其流程始於方塊觀。 ,6]在方塊602中,控制邏輯2〇2藉由檢測j—如卿此信號娜 ’疋-膽層114係已檢驗出一分支指令錯誤預測。接著流程進入方 塊604 〇 [0067]在判斷方塊604中,控制邏觸2係讀取細ccs 216頂端項 目相關之有效位7G218以決定儲存於其巾之命令是否有效。若 否’則流程前進至方塊642 ;否則流程前進至判斷方塊6〇6。
Clients Docket No.; XT’s Docket N〇:0608捕743_TW/Draftpi/林璟輝/2〇嶋 η# 1282514 [0068]在判斷柳Q6巾,控概獅舰Qp—h⑽ 檢驗HCCS 216頂端之命令以決定該命令之形式。若該命令係為- 命令’則流程前進至方塊612,若該命令為一 POP-to-correct命令,則流程前進至方塊6〇8 〇 [〇_在方塊608中,控制邏輯202於pop—CRS信號268上產生一真 值以爆出轉回位址離開CRS 206,如此遂可更正依據jp皆層n4(含)以上 某一階層中之一呼叫指令所造成之錯誤的推測性推進,其係將轉回位 址推進至CRS 206。其中若於j階層114檢測到分支指令錯誤預測,】階 層114(含)以上之階層將被清洗。接著流程前進至方塊614。 [0070]在方塊612中,控制邏輯202係於pop—RACS信號274上產生一 真值以爆出頂端轉回位址離開船應,其中該頂端轉回位址係提供 至RACS—ret—addr信號258 〇此外,控制邏輯2〇2係於push-CRS信號266 上產生一真值以將RACS—ret—addr信號258推進至CRS 206,如此遂可更 正依據J階層114(含)以上某-卩㈣中之—轉回指令所造成之錯誤的推 測性爆出,其係爆出轉回位址離開CRS 2〇6。其中若於】階層114檢測到 分支指令錯誤鋼,J階層114(含)以上之階層將被清洗。接著流程前 進至方塊614。 [0071] 在方塊614中,控制邏輯202係於pop—HCCS信號286上產生一 真值以爆出頂端命令離開HCCS 216,因為此時根據推測性地被執行過 之呼叫/轉回指令,CRS 206係已為正確的值。接著流程回到判斷方塊 604以判斷於HCCS 216中之另一有效命令是否存在。 [0072] 在方塊642中,微處理器1〇〇可更新係已導致分支錯誤預測 發生之預測資訊。例如’若分支錯誤預測是由Ip皆層102之分支目標位 址快取記憶體所做,且分支目標位址快取記憶體之錯誤預測項目係被 無效化以便下次依據分支指令之提取位址可用於分支目標位址快取記 憶體中,則該分支目標位址快取記憶體將產生一未命中(miss),其係
Clients Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 25 1282514 將2致預測分支指令不被提取錢得流程前進至下一個接續的指令而 非刖進至該为支之目標指令。接著流程前進至方塊644。 [0073] 在方塊644中,微處理器薦係清洗存在於較上層管線階層 之才曰令’亦即Jp皆層114(含)以上之p皆層。在—較佳實施例中,清洗指 令之方法係包括設定一有效位元以使每個於其所對應到之管線階層的 指令為偽值。接著流程前進至方塊646。 曰 [0074] 在方塊646中,控制邏輯202係於IP一i〇ad信號282上產生一 真值,並於IP—mux一sel信號278上產生一真值,其係可使多工器212選 擇invalidating^event—addr信號295而讓微處理器1〇〇得以分支至正 確的分支指令目標,其中該分支指令係由控制邏輯2〇2自 J—correct—addr信號291處遞送過來。此一流程遂終止於方塊646 〇 [0075] 睛參考圖七,其係為本發明圖二中呼叫/轉回堆疊更正裝置 的操作流程圖。特別是圖七所示係為當一分支指令錯誤預測於s階層 126中被檢測到時,微處理器1〇〇之操作情況。其流程始於方塊7〇2。 [0076] 在方塊702中,控制邏輯202藉由檢測s—mispredict信號254 來確定一JP皆層114係已檢驗出一分支指令錯誤預測,或藉由檢驗 S—exception信號256來確定SP皆層126係以檢驗出一異常。接著流程進 入方塊704 〇 [0077] 圖七中之方塊704至714係與圖六中之方塊6〇4到614的流程 相似;因此不再重複敘述之。其唯一與圖六不同的是,當HCCS 216頂 端之命令無效時,流程將由判斷方塊7〇4處前進至判斷方塊724。 [0078] 在判斷方塊724中,控制邏輯202係讀取與LCCS 224頂端項 目相關之有效位元226以決定儲存於其中之命令是否有效。若結果為 否,則流程前進至方塊742 ;否則流程前進至判斷方塊726。 [0079] 在判斷方塊726中,控制邏輯202經由top_lccs_cmd信號299 檢”驗LCCS 224頂端之命令以決定該命令之形式。若該命令係為一
Client?s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 26
ΡΙΗΗο-correct命令,則流程前進至方塊732,若該命令為一 POP-to-coirect命令,則流程前進至方塊728 〇 、[_]在方塊728中,控制邏輯202於pop—CRS信號268上產生一真 值以爆出轉回位址離職s 2〇6,如此遂可更正依據】階層ιΐ4(含)以下 某P白層中之-呼叫指令所造成之錯誤的推測性推進,其係將轉回位 址推進遞S 。其巾若於摊層126檢糊分支齡錯誤删,或於 sp_ 126檢測到異常發生時,JP㈣114(含⑽下之階層將被清洗。接 著流程前進至方塊734。 [0081] 在方塊732中,控制邏輯2〇2係於pop一RACS信號274上產生一 真值以爆出頂端轉回位址離開RACS膽,其中該頂端轉回位址係提供 至RACS—ret_addr信號258 〇此外,控制邏輯2〇2係於push—CRS信號266 上產生一真值以將RACS—ret—addr信號258推進至CRS 206,如此遂可更 正依據W層114(含)町某-階層巾之—轉回指令所造成之錯誤的推 測性爆出’其係爆出轉回位址離開⑽206。其中若於Sp皆層126檢測到 分支指令錯誤預測,或於Sp皆層126檢測到異常發生時,j階層114(含) 以下之階層將被清洗。接著流程前進至方塊734。 [0082] 在方塊734中,控制邏輯202係於卿JLCCS信號296上產生一 真值以爆出頂端命令離開LCCS 224,因為此時根據推測性_皮執行過 之呼叫/轉回指令,CRS 206係已為正確的值。接著流程回到判斷方塊 734以判斷於LCCS 224中之另一有效命令是否存在。 [0083] 在方塊742中,微處理器1〇〇可更新係已導致分支錯誤預測 發生之預測資訊。若圖七中之步驟係因為s階層丨26於方塊7〇2中檢測出 一個異常而被執行,則方塊742中將不會有任何動作發生。接著流程前 進至方塊744 〇 [0084] 在方塊744中,微處理器1〇〇係清洗現行於s階層126(含)以 上之管線階層内的指令。
Client’s Docket No·: TT’s Docket No:0608-A40743-TW/DraflFl/林璟輝/2006/11/14 27 12825和擎V、修(#替涣頁丨 [0085]在方塊746中,控制邏輯202係於IP一load信號282上產生一 真值,並於IP—mux—sel信號278上產生一真值,其係可使多工器212選 擇mvalidating^event—addr信號295而讓微處理器1〇〇於一分支錯誤 預測發生時,得以分支至正確的分支指令目標,其中該分支指令係由 控制邏輯202 自 J—correct—addr 信號 291 或 S—correct—addr 信號293處 遞送過來,或是讓微處理器1〇〇於一異常事件發生時,得以分支至微碼 異常處理器常式(micro excepti〇n handler routine)以處理該異常情 況。而此一流程遂終止於方塊746。
[0086]本發明的具體實施例已敘述如前,但本發明並未受限於 此。,以上所述者,僅為本發明之較佳實施例,當不能以之限制本發 明的細,其係為提供予熟習此項技術者使用或製造本發明之用。例 如」雖然前面所提及之兩種事件(稱之為分支錯誤預測與異常)係需要 -微處理II來更if卜中彳/轉瞒撕_更新,其施據先前啤叫 /轉回指令所做之推測性執行,拇明當不只限定於此兩獅式之事 件;確切的說,-微處理ϋ可使用呼叫/轉回堆疊更正裝置以回應 麵態之事絲更正-呼叫/_堆疊。此外,賴本發财述^容 係為x86架構微處理ϋ之哔叫和轉回指令,本發明還可使用包括呼叫盘 轉回指令於其指令集内的任何微處理器。再者,雖然前述之實施例中、 之,料更正堆疊中’堆疊的大小係可根據微 處理器g線之各式程式段中的階層數目來決定。 [0087]本么明的具體實施例已敘述如前,但本發明並未受齡^ 此0唯以上所述者’僅為本發明之較佳實施例 明的麵,為提供予_t棚赌伽或製造本發明 了本發明巾使用硬_實施_卜,本料 式
於用以儲存程式碼之電腦可用(如:可讀)媒介一Uter二J
Client’s Docket No·: TT,SD〇cketNo:_8_A407仏 TW/〇raftFl/林料/2隨心 28 12825
____________ J n^di:)上。此程式碼係可實現本發明所揭露之功能、構成或兩者之結 y舉例來說,其係可利㈣腦可讀矛呈式碼來完成之,而㈣腦可讀 知式碼的形式則可為通用之程式語言(如c、C++、腿等等)、咖『格 式或硬體描述語言(hardware description languages,_,如
Venlog HDL、佩、皿等等,亦可為習知技術中其他種資料庫、程 式及/或電職存(circuit capture)工具等。而此程式碼亦可直接建 於任何所知之麵可職介巾,其包括有半導體記舰、磁躺 (如CD·,__腦等),亦可喊於魏獅(如:可讀)傳輸媒介中 (如波或任何其他種包括數位、光學或類比基礎之媒介)。就其本 身而言’此程式碼可於通訊網路,如:Inteme_ntranet中傳ς。 本發明於前频提及之功能及/或結構係可於一内欲電腦碼之處理器 中表現出來,也可雛為硬彡式絲魏—祕上之特定部^ 〇 當然本發明更可以結合硬體與程式碼之形式來實施之。 > _8]最後,雜本發_為實縣發明之目_最佳模式 熟習此項技術者應該了_岐,其在不脫離如後_ψ請專 所定義之本發明的精神及細之下,其可立即使用所揭露的觀1 定的具體實_當作基礎’來進行與本發明之目__設計^修改 其他結構。 夕 【圖式簡單說明】 [0015] 圖一係為本發明之一管線化微處理器的方塊示意圖。 [0016] 圖二係為本發明圖一中微處理器所包括一呼叫增回堆聂 更正裝置的方塊示意圖。 i [0017] 圖三至圖七係為本發明圖二中之呼叫/轉回堆疊更正事置 的操作流程圖。 【主要元件符號說明】
Client’s Docket No.: TT’s Docket No.0608-A40743-TW/DraftFl/林璟輝/2006/11/14 29 1282514 100-德L處理器 104 - F階層 108_R階層 114-J階層 118-。階層 124-E階層 128 - W階層 204-雙端輸入多工器 208-轉回位址更正堆疊(RACS) 212-三端輸人多工器 216-高階更正命令堆疊(HCCS) 218-有效位元 224-低階更正命令堆疊(LCCS) 226_有效位元 232-呼叫信號 236-subrout ine_addr 信號 242-J_stal led 信號 246-J _mi spredi ct 信號 252-S_cal 1/ret 信號 256-S_except i on 信號 262-new_retum_addr 信號 102-1階層 106 - X階層 112-A階層 116-0階層 122-H階層 126 - S階層 202-控制邏輯 206-呼叫/轉回堆疊 214-指令指標暫存器 222-六端輸入多工器 228-xf er_cmd_mux_se 1 信號 234-轉回信號 238-retura_addr 信號 244-J_cal Ι/ret 信號 248-cmd 信號 254-S_mi spredi ct 信號 258- RACS—ret—addr 信號 264-CRSjnux_sel 信號
Client’s Docket No·: TT,s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 1282514 266-push_CRS 信號 268-pop_CRS 信號 272- push—RACS 信號 276-new_subrout i ne_addr 信號 278 - IPjnux_se 1 信號 274-pop_RACS 信號 282-IP_load信號 284- push_HCCS 信號 286-popJICCS 信號 288- valid_bits_HCCS 信號 291 - J_correct_addr 信號 292-CRS_ret_addr 信號 293-S_correct_addr 信號 294-push_LCCS 信號 295- inval idating_event_addr 信號 296- pop—LCCS 信號 297-top_hccs_cmd 信號 298_val id—bitS-LCCS 信號 299-top_lccs_cmd 信號 302-746呼叫/轉回堆疊更正裝置的操作流程
Client’s Docket No·: TT’s Docket No:0608-A40743-TW/DraflFl/林璟輝/2006/11/14
Claims (1)
1282514 •一 _ 十、申請專利範固·· ㈣^ 一種用於更正一管線化微處理琴中之-政 的4置,係包括·· β宁之—呼叫/轉回堆疊 第堆邊’其包括有複數個裳 5 中複數個第一階; 有複2=目;==該f-堆疊,該第二堆疊包括 一控制邏輯單元,其係輕接至該 及 邏輯單元係可接收用於指示一呼叫或轉时豐’該控制 第-階層傳送至該複數個第二階層::自:複數個 ’該控制邏輯單元係可將相關二 == 該更正-貝訊由該第一堆疊搬移至第二堆聂。 元將利範圍第1項所述之裝置且,其中該控制邏輯單 ==呼叫或轉回指令之該更正資訊由該第一堆疊搬 :第:方法’係包括該控制邏輯單元將該更正資訊白 2一堆豐中之該複數個第—項目之其中—條底部有效項目 中去除’並將該被去除之更正資訊推進至該第二堆最。 一 3.如申請專利範圍第2項所述之裝置,射該控且制邏輯單 兀將該更正資訊自該第—堆#中之該複數個第—項目之其中 一條底部有效項目中絲的方法,係包括使該複數個第二項目 之其中一條底部有效項目無效。 4·如申請專利範圍第丨項所述之裝置,其中若該相關之呼 叫或轉回指令係為一呼叫指令,則該更正資訊係包括一命令以 爆出(pop)—轉回位址離開内部呼叫/轉回堆疊。 Client’s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 32 128251 '日修(¢)正替換_ 5·,申睛專利範圍第1項所述之裝置,其更包括: 第一堆童,其係耦接至該控制邏輯單元,該第三堆疊包 ^有複數個第三項目以用於儲存相關於該複數個第一或第二 管線階層中之呼叫指令的轉回位址。 6·如中请專利範圍第5項所述之裝置,其中若該相關之呼 Li轉回指令係為—轉回指令,職更正資訊包括有一命令以 叫/轉=__三堆疊,並推_酿址至内部啤 7. 如申請專利範圍第1項所述之裝置,其 位1數财效位元,其_接至該第一堆疊,該複數個有效 凡係用於指明該複數個第一項目中相應之項目是否有效。 8. 如申請專利範圍第1項所述之裝置,其更包括: =個有效a,其_接至該第二堆疊,該複數個有效 疋糸用於指明該複數個第二項目中相應之項目是否有效有 扑請專利範圍第1項所述之裝置’其中該控制信號可 心不該呼叫__令係已_該複數 ^虎了 -底端階層。 * 白層中之 10.如申請專利範圍第9項所述之裝置,1 ,示該複數個第-管線階層中之該底端階層係非暫^ k就可 Istal1) 〇 11·如申請專補㈣1G項所述 可指示在射料轉回齡前面之—分支料=控制信號 器檢測為錯誤預測。 11破Μ處理 12·如申請專利範圍第!項所述之裝置,其更包括: Clienfs Docket No.: TTs Docket No:0608_A40743_TW/DraftF1/林璟輝/2〇〇6/ι ι/ΐ4 33 12825141〒炉日修¥正替換頁I 卿 ==號,其係由該控制邏輯單元所接收,該第二 控m用來扣不該複數個第 回指令係被推測為錯誤地執行。 甲之料4或轉 信號二控制 前面的一分支指令係被微呼叫或轉回指令 ΐ4·如申請專職_2項所述m巾 不:存於,-複數個管線階層中之該呼叫或轉: _ 才曰中之一係被微處理器所預測錯誤。 15.如申請專利範圍第12項所述之裝置,其中該 信號::由該複數個第一管線階層中之一底部階層所產生。工 單元可nH專鄉㈣12項輯之裝置,料雜制邏輯 早兀了回應該第二控制信號,利用儲 個第一項目_更正資訊來更正呼叫/轉回堆疊。宜之該讀 個第=如^_範㈣16項所述之裝置,其㈣於該複數 堆属中爆效項目’該控觸輯單元係可自該第一 第:項目中之一頂端的有效項目,並根據 ,、所儲存之該更正纽來更正該呼叫/轉回堆疊。 R如申請專利範圍第16項所述之装置,其更包括: 純2三控制信號,其係由該控制邏輯單元所接收,該第三 技制域可用來指示該複數個第一與該第二管線階層中之^一 呼叫或轉回指令係被推測為錯誤地執行。 〜 如申/專利範圍第18項所述之襄置,其中該第三控制 W可W在該複數個第一與第二管線階層中之辦叫或轉 Client’s Docket No.·· TT s Docket N〇:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 34 1282514 ^ / 回指令前面的一分支指令係被微處理哭 20·如申請專利範圍第18項所述之穿置曰二則二一 示在該複數個第-與第二管線階層 回才"刚面的_指令會產生一微處理器異 。^轉 21.如中請專利範圍第18項所述之裂置,:= - 0 7八中之一係被微處理器所錯誤預測。 22·如中請專利範圍第18項所述之裝置, 信號=由該T個第二#_層中之—底部_所產生4制 單元可回專利顧第18項所述H其巾該控制邏輯 兮、姻2 控齡號,_儲存於該第—與第二堆最之 f數個與第二項目内的更正資訊來更正呼叫/轉回堆且 21如中請專纖圍第23項所述之 個第一項目内之备侗古埒话θ,、甲關於該複數 堆聶中爆二::制邏輯單元係可自該第-Γ第—項目中之—頂端的有效項目,並根據 财更正該呼叫/轉回堆疊,此外關於該 1抢^項目内之每個有效項目’該控制邏輯單元係可自該 第-隹豐中爆出該複數個第二項目中之—頂端的有效項目。 25.如申請專利範圍第丨項所述之裝置,其更包括: 一第二信號,其係由該控制邏輯單元所接收,該第二信號 可用來指示微處理器管線中該複數個第二階層内之該呼叫或 轉回指令的射之-係不再是推測地,而其中該控㈣輯單元 係根據該第二信號來更新該第二堆疊。 Client?s Docket No.: TT’s Docket N〇:0608-A40743-TW/DraftFl/林璟輝/2〇〇6/11/14 35 1282514 26.如申請專利範圍第25項所述 單元根據該第二信絲更賴第控制邏輯 數個第二項目之其中之 且之方法係包括使該複 資訊以用於指示該啤叫或轉回指^中更正 第二 二項目之—底部的方法,係包括使該複數個第 2一8·如申請專利制第丨項所述之打,其更包括: 可要求呼係由該控制邏輯單元所接收,該第二信號 或轉^據該複數㈣—管_層中之該呼叫 ^ J 斤’其中該控制邏輯單元係可依據該第二俨 關於物或轉回指令其中之一的更正資訊存獨 單mtf專利範圍第28項所述之裝置,其中該控制邏輯 7〇道以二信號,將相_該,叫或轉_令其中之 =正資訊存人該第—堆疊中的方法,係包括該控制邏輯單元將 該更正資訊推進至該第一堆疊上。 、 •種用於更正一管線化為處理器中之内部呼叫/ 堆疊之管線化微處理器,其包括有: 一呼叫/轉回堆疊(CRS); 第-及第二管線階層,其係分別對第一及第二信號上產生 -真值,以分別對應於該第一與第二管線階層中之一分支指令 的錯誤預職測結果,而其巾該第-階層在f線巾係位於該 二階層上方; Client’s Docket No.: TT s Docket No:0608-A40743-TW/Draftpi/林碌輝/2006/11/14 36 1282514 ......... .一.... : ------------------------- 於维二該裝置係用 令之第一眘1 、立 "之5線階層内的呼叫或轉回指 =虎係f真值時,該裝置係組態為可利二 -虚= 若該第二信號為真值時,該裝置可利用該第 ,、第一貝汛以選擇性地更正該CRS。 ,如申請專利範圍第30項所述之微處理器,更包括: 轉回戒,其係由該裝置所接收,可用於指示該呼叫或 轉叫令其中之—係已到達該第-階層; 份轉可回應該第三信號’以將該第一資訊的一部 4^1—/訊’該部分係相關於該呼叫或轉回指令。 .如申味專魏圍細項所述之微處㈣, _ -第三信號,其係由該裝置所接收,該第匕· 示該呼叫或轉回指令其中之—係已到達該第二可用於指 其中該裝置係可回應該第三信號,以將該第二t 伤自该第二資訊中去除,該部分係相關於已到達# = °凡之〜部 該呼叫或轉回指令其中之一。 ~弟二階層之 33·如申請專利範圍第3〇項所述之微處理器,其 一第三信號,其係由該裝置所接收,該第三信二更包括·· 示檢測出由該第二階層中之一指令所產生之一異可用於指 (exception); 其中若該第三信號係為真值,該裝置可利用讀 資訊以更正該CRS。 Λ〜與第二 Client’s Docket No.: IT’s Docket No:0608-A40743-TW/DraftFl/林環輝/2006/11/14 37 128251作 曰修(&正替換頁 34· -種用於更正-管線化微處理器中之内部呼叫/轉回 堆疊(CRS)之方法,其係包括: 内; 接收凊求來更新CRS以回應一現存之呼叫或轉回指令· 回應前述之接收步驟,將更正資訊儲存至一第一衝器 於儲存完之後,檢測該呼叫或轉回指令其中之一是否係已 通過微處理器管線的-第-階層’其係組態為可檢測一無效 件;以及 回應前述之檢測步驟,將更正資訊之一部份自該第一緩衝 器搬移至一第二緩衝器。 、 35·如申請專利範圍第34項所述之方法,其中該無效事件 係包括一分支指令錯誤預測。 36·如申請專利範圍第34項所述之方法,其更包括: 若該第一階層檢測出該無效事件時,利用儲存於該第一緩 衝器内之更正資訊以更正該CRS。 人 、 37·如申清專利乾圍第34項所述之方法,其更包括· 若微處理器管線中之一第二階層檢測到一第二無效事件 時,利用儲存於該第一與第二緩衝器内的更正資訊:更正該 CRs,其中該第二階層係在第一階層下方。 38·如申請專利範圍第37項所述之方法,其中該第二無效 事件係包括一分支指令錯誤預測。 39·如申請專利範圍第37項所述之方法,其中該第二無效 事件係包括一異常(exception)。 40· —種紀錄執行更正一微處理器中之内部呼叫/轉回堆 Client’s Docket No.: TT,s Docket No:0608-A40743-TW/DraflFl/林璟輝/2006/11/14 12825 ιβψτΕ 日修(fii£替 換頁 足的電腦指令之電腦可讀取媒體,其係包括: 一狄電腦可讀(computer—readable)程式碼以提供一用於更正 包ς線化微處理器内之—糾/轉回堆#的裝置,該程式碼係 個用於儲C:於提供一第一堆疊’其更包括有複數 器〜子更貝欽項目,而該更正資訊係有關微處理 g、、、之複數個第一階層内的呼叫或轉回指令; 帛二程式碼以用於提供—第二堆疊,其係祕至該第 _燮,該第二程式碼更包括有複數個用於儲存更正資訊之第 j目,而該更正資訊係有關微處理器管線之複數個第二階層 内的啤叫或轉回指令;以及 々 第三程式碼以用於提供控制邏輯,其係耦接至該第一 及第二堆疊,該第三程式碼可接收一控制信號,其係可指示一 :叫或轉回指令正從該第一複數個階層傳遞至該複數個二二 2層’其巾馳制賴仙應該控繼號以將與辦叫或轉回 指令相關之該更正資訊自該第一堆疊移至該第二堆疊。
Client’s Docket No·: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 39 1282514 七、指定代表囷: (一) 本案指定代表圖為:第(2 )圖 (二) 本代表圖之元件符號簡單說明: 100-微處理器 104-F階層 108 - R階層 114-】階層 118-G階層 124 - E階層 128 - W階層 102-1階層 106-X階層 112-A階層 116-D階層 122-H階層 126-S階層 202-控制邏輯 204-雙端輸入多工器206-呼叫/轉回堆疊 208-轉回位址更正堆疊(RACS) 212-三端輸入多工器 214-指令指標暫存器 216-高階更正命令堆疊(HCCS) 218-有效位元 222-六端輸入多工器 224-低階更正命令堆疊(LCCS) 226-有效位元 232-呼叫信號 236-subrout i ne_addr 信號 242-J_stal led 信號 246-J jni spredi ct 信號 252-S_call/ret 信號 256-S一except ion信號 262-new_retum_addr 信號 266-push_CRS 信號 272-push_RACS 信號 228-xfer_cmdjnux_sel 信號 234-轉回信號 238-return_addr 信號 244-JLcall/ret 信號 248-cmd 信號 254-Sjni spredi ct信號 258-RACS_ret_addr 信號 264- CRSjnux—se 1 信號 268-pop一CRS 信號 274-pop一RACS 信號 Client’s Docket No.: TT’s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14 12825141 L 一 0,fr < r .7. . ΚΤ,Ι 淑機. 一―〜〜iUj一^—…-π...…* 276- new_subrout i ne_addr 信號 278-1P_mux_se 1 信號 282-IP_load 信號 284-push_HCCS 信號 286_pop_HCCS 信號 288-val id_bi tsJKXS 信號 291 - J_correct_addr 信號 292-CRS_ret_addr 信號 293-S_correct_addr 信號 294-push_LCCS 信號 295_inval idating_event_addr 信號 296-pop_LCCS 信號 297-top_hccs_cmd 信號 298- val id_bitsJLCCS 信號 299-top_lccs_cmd 信號 八、本案若有化學式時,請揭示最能顯示發明特徵的化學式: 略 Client’s Docket No·: TT,s Docket No:0608-A40743-TW/DraftFl/林璟輝/2006/11/14
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US44076903P | 2003-01-16 | 2003-01-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200417919A TW200417919A (en) | 2004-09-16 |
TWI282514B true TWI282514B (en) | 2007-06-11 |
Family
ID=38823754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW092135488A TWI282514B (en) | 2003-01-16 | 2003-12-16 | Method, apparatus and computer readable media for recording related instruction for correcting an internal call/return stack in a pipelined microprocessor |
Country Status (2)
Country | Link |
---|---|
US (1) | US7178010B2 (zh) |
TW (1) | TWI282514B (zh) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
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 |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US7165168B2 (en) | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7185186B2 (en) * | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
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 |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US20050138263A1 (en) * | 2003-12-23 | 2005-06-23 | Mckeen Francis X. | Method and apparatus to retain system control when a buffer overflow attack occurs |
US20060168485A1 (en) * | 2005-01-26 | 2006-07-27 | Via Technologies, Inc | Updating instruction fault status register |
GB2424092A (en) * | 2005-03-11 | 2006-09-13 | Transitive Ltd | Switching between code translation and execution using a trampoline |
US7836290B2 (en) * | 2005-11-09 | 2010-11-16 | Oracle America, Inc. | Return address stack recovery in a speculative execution computing apparatus |
US20070204142A1 (en) * | 2006-02-27 | 2007-08-30 | Dieffenderfer James N | Method and apparatus for repairing a link stack |
EP2477109B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US7581089B1 (en) | 2006-04-20 | 2009-08-25 | The United States Of America As Represented By The Director Of The National Security Agency | Method of protecting a computer stack |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8078999B2 (en) * | 2008-01-25 | 2011-12-13 | International Business Machines Corporation | Structure for implementing speculative clock gating of digital logic circuits |
US7971161B2 (en) * | 2008-01-25 | 2011-06-28 | International Business Machines Corporation | Apparatus and method for implementing speculative clock gating of digital logic circuits |
US8078851B2 (en) * | 2008-12-18 | 2011-12-13 | Faraday Technology Corp. | Processor and method for recovering global history shift register and return address stack thereof by determining a removal range of a branch recovery table |
US8131984B2 (en) * | 2009-02-12 | 2012-03-06 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state |
CN101819522B (zh) * | 2009-03-04 | 2012-12-12 | 威盛电子股份有限公司 | 微处理器以及相关指令解析的方法 |
US7975132B2 (en) * | 2009-03-04 | 2011-07-05 | Via Technologies, Inc. | Apparatus and method for fast correct resolution of call and return instructions using multiple call/return stacks in the presence of speculative conditional instruction execution in a pipelined microprocessor |
US8936634B2 (en) * | 2009-07-15 | 2015-01-20 | W. L. Gore & Associates, Inc. | Self constraining radially expandable medical devices |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
TWI541721B (zh) | 2010-10-12 | 2016-07-11 | 軟體機器公司 | 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器 |
WO2012051281A2 (en) | 2010-10-12 | 2012-04-19 | Soft Machines, Inc. | An instruction sequence buffer to store branches having reliably predictable instruction sequences |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
TWI533129B (zh) | 2011-03-25 | 2016-05-11 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊 |
KR101639854B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
US8990546B2 (en) | 2011-10-31 | 2015-03-24 | Freescale Semiconductor, Inc. | Data processing system with safe call and return |
EP2783281B1 (en) | 2011-11-22 | 2020-05-13 | Intel Corporation | A microprocessor accelerated code optimizer |
KR101842550B1 (ko) | 2011-11-22 | 2018-03-28 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
US9916253B2 (en) | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
US9256730B2 (en) * | 2012-09-07 | 2016-02-09 | Crowdstrike, Inc. | Threat detection for return oriented programming |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
EP2996034B1 (en) * | 2014-09-11 | 2018-08-15 | Nxp B.V. | Execution flow protection in microcontrollers |
US9519773B2 (en) | 2014-09-12 | 2016-12-13 | Intel Corporation | Returning to a control transfer instruction |
US20160259705A1 (en) * | 2015-03-04 | 2016-09-08 | International Business Machines Corporation | Breakpoint prediction |
US20240036864A1 (en) * | 2022-08-01 | 2024-02-01 | Qualcomm Incorporated | Apparatus employing wrap tracking for addressing data overflow |
CN117612594B (zh) * | 2024-01-19 | 2024-04-09 | 悦芯科技股份有限公司 | 一种用于提升精度的校准数据存储以及调用方法 |
Family Cites Families (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US582289A (en) * | 1897-05-11 | Ice-can | ||
US4200927A (en) | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4181942A (en) | 1978-03-31 | 1980-01-01 | International Business Machines Corporation | Program branching method and apparatus |
US4860197A (en) | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Branch cache system with instruction boundary determination independent of parcel boundary |
US5193205A (en) | 1988-03-01 | 1993-03-09 | Mitsubishi Denki Kabushiki Kaisha | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address |
US5142634A (en) | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5226126A (en) | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5163140A (en) | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
WO1992006426A1 (en) | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
JPH0820950B2 (ja) | 1990-10-09 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチ予測型分岐予測機構 |
US5394530A (en) | 1991-03-15 | 1995-02-28 | Nec Corporation | Arrangement for predicting a branch target address in the second iteration of a short loop |
US5961629A (en) | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
US5832289A (en) | 1991-09-20 | 1998-11-03 | Shaw; Venson M. | System for estimating worst time duration required to execute procedure calls and looking ahead/preparing for the next stack operation of the forthcoming procedure calls |
EP0628184B1 (en) | 1992-02-27 | 1998-10-28 | Samsung Electronics Co., Ltd. | Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability |
US5313634A (en) | 1992-07-28 | 1994-05-17 | International Business Machines Corporation | Computer system branch prediction of subroutine returns |
US5434985A (en) | 1992-08-11 | 1995-07-18 | International Business Machines Corporation | Simultaneous prediction of multiple branches for superscalar processing |
JP3057934B2 (ja) | 1992-10-30 | 2000-07-04 | 日本電気株式会社 | 共有バス調停機構 |
US5463748A (en) | 1993-06-30 | 1995-10-31 | Intel Corporation | Instruction buffer for aligning instruction sets using boundary detection |
US5623614A (en) | 1993-09-17 | 1997-04-22 | Advanced Micro Devices, Inc. | Branch prediction cache with multiple entries for returns having multiple callers |
US5434995A (en) * | 1993-12-10 | 1995-07-18 | Cray Research, Inc. | Barrier synchronization for distributed memory massively parallel processing systems |
DK0661625T3 (da) | 1994-01-03 | 2000-04-03 | Intel Corp | Fremgangsmåde og apparatur til implementering af et firetrins system til bestemmelse af programforgreninger (Four Stage Bra |
US5604877A (en) | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
TW253946B (en) | 1994-02-04 | 1995-08-11 | Ibm | Data processor with branch prediction and method of operation |
GB2287111B (en) | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
US5530825A (en) | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
US5623615A (en) | 1994-08-04 | 1997-04-22 | International Business Machines Corporation | Circuit and method for reducing prefetch cycles on microprocessors |
US5706491A (en) | 1994-10-18 | 1998-01-06 | Cyrix Corporation | Branch processing unit with a return stack including repair using pointers from different pipe stages |
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 |
US5687360A (en) | 1995-04-28 | 1997-11-11 | Intel Corporation | Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction |
US5968169A (en) | 1995-06-07 | 1999-10-19 | Advanced Micro Devices, Inc. | Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses |
US5867701A (en) | 1995-06-12 | 1999-02-02 | Intel Corporation | System for inserting a supplemental micro-operation flow into a macroinstruction-generated micro-operation flow |
US5752069A (en) | 1995-08-31 | 1998-05-12 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing away prediction structure |
US5634103A (en) | 1995-11-09 | 1997-05-27 | International Business Machines Corporation | Method and system for minimizing branch misprediction penalties within a processor |
US5864707A (en) | 1995-12-11 | 1999-01-26 | Advanced Micro Devices, Inc. | Superscalar microprocessor configured to predict return addresses from a return stack storage |
US5734881A (en) | 1995-12-15 | 1998-03-31 | Cyrix Corporation | Detecting short branches in a prefetch buffer using target location information in a branch target cache |
US5828901A (en) | 1995-12-21 | 1998-10-27 | Cirrus Logic, Inc. | Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer |
US5964868A (en) | 1996-05-15 | 1999-10-12 | Intel Corporation | Method and apparatus for implementing a speculative return stack buffer |
US5805877A (en) | 1996-09-23 | 1998-09-08 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
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 |
KR100240591B1 (ko) | 1996-11-06 | 2000-03-02 | 김영환 | 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법 |
US6088793A (en) | 1996-12-30 | 2000-07-11 | Intel Corporation | Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor |
EP0851343B1 (en) | 1996-12-31 | 2005-08-31 | Metaflow Technologies, Inc. | System for processing floating point operations |
US5850532A (en) | 1997-03-10 | 1998-12-15 | Advanced Micro Devices, Inc. | Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched |
TW357318B (en) | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US6122729A (en) | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
US5872946A (en) | 1997-06-11 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch |
US6073230A (en) | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US6157988A (en) | 1997-08-01 | 2000-12-05 | Micron Technology, Inc. | Method and apparatus for high performance branching in pipelined microsystems |
US6185676B1 (en) | 1997-09-30 | 2001-02-06 | Intel Corporation | Method and apparatus for performing early branch prediction in a microprocessor |
US5978909A (en) | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
US6041405A (en) | 1997-12-18 | 2000-03-21 | Advanced Micro Devices, Inc. | Instruction length prediction using an instruction length pattern detector |
US5931944A (en) | 1997-12-23 | 1999-08-03 | Intel Corporation | Branch instruction handling in a self-timed marking system |
US6081884A (en) | 1998-01-05 | 2000-06-27 | Advanced Micro Devices, Inc. | Embedding two different instruction sets within a single long instruction word using predecode bits |
US5974543A (en) | 1998-01-23 | 1999-10-26 | International Business Machines Corporation | Apparatus and method for performing subroutine call and return operations |
US5881260A (en) | 1998-02-09 | 1999-03-09 | Hewlett-Packard Company | Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction |
US6151671A (en) | 1998-02-20 | 2000-11-21 | Intel Corporation | System and method of maintaining and utilizing multiple return stack buffers |
US6108773A (en) | 1998-03-31 | 2000-08-22 | Ip-First, Llc | Apparatus and method for branch target address calculation during instruction decode |
US6256727B1 (en) | 1998-05-12 | 2001-07-03 | International Business Machines Corporation | Method and system for fetching noncontiguous instructions in a single clock cycle |
US6260138B1 (en) | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
US6122727A (en) | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
US6134654A (en) | 1998-09-16 | 2000-10-17 | Sun Microsystems, Inc. | Bi-level branch target prediction scheme with fetch address prediction |
US6279106B1 (en) | 1998-09-21 | 2001-08-21 | Advanced Micro Devices, Inc. | Method for reducing branch target storage by calculating direct branch targets on the fly |
US6279105B1 (en) | 1998-10-15 | 2001-08-21 | International Business Machines Corporation | Pipelined two-cycle branch target address cache |
US6170054B1 (en) | 1998-11-16 | 2001-01-02 | Intel Corporation | Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache |
US6175897B1 (en) | 1998-12-28 | 2001-01-16 | Bull Hn Information Systems Inc. | Synchronization of branch cache searches and allocation/modification/deletion of branch cache |
US6601161B2 (en) | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
US6233676B1 (en) | 1999-03-18 | 2001-05-15 | Ip-First, L.L.C. | Apparatus and method for fast forward branch |
US6314514B1 (en) | 1999-03-18 | 2001-11-06 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions |
EP1050810A1 (en) | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | A computer system comprising multiple functional units |
US6321321B1 (en) | 1999-06-21 | 2001-11-20 | Vlsi Technology, Inc. | Set-associative cache-management method with parallel and single-set sequential reads |
US6457120B1 (en) | 1999-11-01 | 2002-09-24 | International Business Machines Corporation | Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions |
US6748441B1 (en) | 1999-12-02 | 2004-06-08 | Microsoft Corporation | Data carousel receiving and caching |
US6560696B1 (en) | 1999-12-29 | 2003-05-06 | Intel Corporation | Return register stack target predictor |
US6502185B1 (en) | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
US6351796B1 (en) | 2000-02-22 | 2002-02-26 | Hewlett-Packard Company | Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache |
US6754808B1 (en) | 2000-09-29 | 2004-06-22 | Intel Corporation | Valid bit generation and tracking in a pipelined processor |
US7200740B2 (en) | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US20020194461A1 (en) | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US6895498B2 (en) | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US6886093B2 (en) | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
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 |
US7165168B2 (en) | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7134005B2 (en) | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US6823444B1 (en) | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7203824B2 (en) | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7162619B2 (en) | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US6898699B2 (en) | 2001-12-21 | 2005-05-24 | Intel Corporation | Return address stack including speculative return address buffer with back pointers |
US7159097B2 (en) | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US6968444B1 (en) | 2002-11-04 | 2005-11-22 | Advanced Micro Devices, Inc. | Microprocessor employing a fixed position dispatch unit |
US7143269B2 (en) | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7185186B2 (en) | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7152154B2 (en) | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
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 |
US7237098B2 (en) | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
-
2003
- 2003-08-19 US US10/643,338 patent/US7178010B2/en active Active
- 2003-12-16 TW TW092135488A patent/TWI282514B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW200417919A (en) | 2004-09-16 |
US20040143727A1 (en) | 2004-07-22 |
US7178010B2 (en) | 2007-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI282514B (en) | Method, apparatus and computer readable media for recording related instruction for correcting an internal call/return stack in a pipelined microprocessor | |
EP1662377B1 (en) | Branch predicting apparatus and branch predicting method using return address stacks | |
TWI223195B (en) | Optimized branch predictions for strongly predicted compiler branches | |
US5276882A (en) | Subroutine return through branch history table | |
TWI295032B (zh) | ||
US5179673A (en) | Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline | |
TWI294590B (en) | Variable latency stack cache and method for providing data therefrom | |
TW201030612A (en) | Pipelined microprocessor with fast conditional branch instructions based on static exception state | |
TW436693B (en) | Interrupt control device and method for pipeline processor | |
TW201033898A (en) | Microprocessor and method for executing instructions using the same | |
US11861365B2 (en) | Macro-op fusion | |
KR20090089358A (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
JP4009248B2 (ja) | 分岐予測装置および分岐予測方法 | |
KR102635965B1 (ko) | 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법 | |
JP2001060153A (ja) | 情報処理装置 | |
TW202111524A (zh) | 經由跳過無分歧的快取線改善分歧預測通量的設備及系統 | |
JP3798998B2 (ja) | 分岐予測装置および分岐予測方法 | |
TWI469044B (zh) | 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 | |
CN101819522B (zh) | 微处理器以及相关指令解析的方法 | |
TWI231450B (en) | Processor including fallback branch prediction mechanism for far jump and far call instructions | |
CN101819523B (zh) | 微处理器以及相关指令执行的方法 | |
US6978361B2 (en) | Effectively infinite branch prediction table mechanism | |
US7036003B1 (en) | Instruction processing device and method for controlling branch instruction accompanied by mode change | |
JPWO2008155840A1 (ja) | 命令制御装置及び命令制御方法 | |
JPH09218786A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MK4A | Expiration of patent term of an invention patent |