TW530205B - Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap - Google Patents

Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap Download PDF

Info

Publication number
TW530205B
TW530205B TW090127267A TW90127267A TW530205B TW 530205 B TW530205 B TW 530205B TW 090127267 A TW090127267 A TW 090127267A TW 90127267 A TW90127267 A TW 90127267A TW 530205 B TW530205 B TW 530205B
Authority
TW
Taiwan
Prior art keywords
instruction
branch
patent application
scope
item
Prior art date
Application number
TW090127267A
Other languages
English (en)
Inventor
Glenn G Henry
Thomas C Macdonald
Original Assignee
Intellectual Property First Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intellectual Property First Co filed Critical Intellectual Property First Co
Application granted granted Critical
Publication of TW530205B publication Critical patent/TW530205B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

經濟部智慧財產局員工消費合作社印製 530205 五、發明說明() 關於申請案之相關資料 本申請案是關於下述具有共同申請日與共同申請人的 美國專利申請案,這些申請案在此會倂入本申請案的參考 標的。 文件編號 序號 名稱 CNTR : 2020 09/898,583 將藉由分支目標位址快取區 所預測之分支指令與相關目 標指令密集擠入位元組寬度 指令緩衝器之裝置及方法 CNTR : 2051 09/906,381 處理涵蓋跨越指令快取線之 分支目標位址快取區之分支 的裝置及方法 發明領域 本發明是有關於一種分支目標位址在管線微處理器進 行快取之領域,且特別是有關於一種在微處理器因分支目 標位址快取命中而進行分支(branch)後,將正確的指令格 式提供至指令格式化邏輯之裝置及方法。 發明背景 管線微處理器(pipelined microprocessor)包括多重的 管路階層,在程式指令執行中,每一個階層會展現一個不 同的函數需求。典型的管線階層函數是指令擷取(fetch)、 指令解碼、指令執行、記憶體存取以及結果寫回(result write-back) 〇 — — — — — ^- — — —¥1— · I I I I I I I ·11111111 (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中00家標準(CNS)A l規格(21〇χ 297公坌) 530205 Λ7 H7 8415twf.doc/006 五、發明說明d) 其中,指令擷取階層是在目前的執行程式中擷取下一 個指令,而此下一個指令基本上是下一個循序記憶體位址 的指令,然而,在發生分支(taken branch )指令的情況下, 下一個指令是由分支指令所指定的記憶體位址中的指令, > , 一般稱此記憶體位址爲分支目標位址(branch target address)。指令擷取階層從指令快取區中擷取的指令,目 前如果不在此指令快取區中,則會自機器的階層式記憶體 (memory hierarchy)中較高層次的指令快取記憶體中擷 取,例如從較高階層快取記憶體或是從系統記憶體中擷取 得到,而指令擷取階層擷取到的指令會提供給下一個階層 的指令解碼階層處理。 指令解碼階層包括指令解碼邏輯,用以對從指令擷取 階層接收之指令位元組進行解碼。在處理器支援不同指令 長度的情況下,例如x86架構處理器,一個指令解碼階層 的功能,會分割指令位元組流以格式化指令,其中格式化 指令流(a stream of instructions )包括決定每一個指令的長 度,比方說,指令格式化邏輯從指令擷取階層接收尙未辨 識的指令位元組流,進而對此指令位元組流進行格式化, 或分析爲個別的位元組群組,其中每一個位元群組是一個 指令,而這些指令所組成的程式即是可使處理器進行執行 的指令。另外,指令解碼階層亦包含轉換巨集指令,例如 x86指令,爲由剩餘的管線(pipeline)進行執行之微指令 (micro-instruction) 〇 指令執行階層包括執行邏輯,係執行從指令解碼階層 本紙張尺度適用中國國家標準(CNSM丨規格(21〇χ:?97公坌) ------J--------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 530205 Λ7 H7 8415twf.doc/006 五、發明說明(>) 接收之已格式化及解碼的指令,其中執行邏輯係操作從處 理器的暫存器組及/或記憶體回收之資料。而寫回階層,係 將執行邏輯所產生的結果儲存至處理器的暫存器組。 管線處理器的一個重要觀念,是使每一個階層的處理 器忙碌於函數被設計時的工作,假設指令解碼階層已準備 要解碼下一個指令,但指令擷取階層尙未提供其所需之指 令位元組時,則處理器在效能上就會變糟。而爲了防止指 令解碼階層的飢餓(starvation),普遍性的解決方法是: 在指令快取區及指令格式化邏輯之間,放置一個指令緩衝 器。指令擷取階層會嘗試在指令緩衝器中保持數個指令的 位元組,以使指令解碼階層有指令位元組可進行解碼,不 至有飢餓情形發生。 一般來說,指令快取區一次會提供一個指令位元組的 快取線(cache line),通常爲16或32位元組,而指令擷 取階層會自指令快取區中擷取一個或多個快取線,進而將 快取線儲存至指令緩衝器中。當指令解碼階層準備解碼一 個指令時,會自指令緩衝器中存取指令位元組,而不是在 指令快取區中等待。 此指令快取區提供一個指令位元組用的快取線,可藉 由擷取位址(fetch address)進行選取,其中擷取位址是由 指令擷取階層將之提供給指令快取區。在正常的程式運作 中,由於在預期的情況下會循序性地執行程式指令,因此 擷取位址;因快取線的大小而增加,且增加後的擷取位 址會被指作爲下一個循序擷取位址。然而,如果有一個分 ---------------is---訂·-----丨丨·線 (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)Al規格(210 X 297公呈) 530205 8415twf.doc/〇〇6 五、發明說明(+ ) 支指令(branch instruction)被指令解碼邏輯解碼,且此分 (請先閱讀背面之注意事項再填寫本頁) 支指令發生(或預期發生),則擷取位址會更新爲分支指 令的目標位址(以快取線大小計算下),而不是被更新爲 下一個循序擷取位址。 然而,在擷取位址被更新至分支目標位址的時候,指 令緩衝器可能在分支指令後,隨著下一個循序指令的指令 位元組而移位。因爲當分支情況發生時,在分支指令後的 指令不會被解碼及執行。而程式本身在執行時,是需要對 在分支目標位址上的指令進行執行,而不是對在分支指令 後的下一個循序指令進行執行,是以在程式的循序指令流 爲典型的預期情況時,指令緩衝器中的指令位元組是錯誤 的預先擷取(pre-fetch)。而爲了補救這個錯誤,處理器必 須在分支指令後,淸除(flush)掉所有的指令位元組,包 括在指令緩衝器中之指令位元組。 經濟部智慧財產局員工消費合作社印製 但在發生分支指令後,立即淸除指令緩衝器會產生極 高的代價,因爲指令解碼階層會持續飢餓,直到指令緩衝 器從指令快取區中重新移植過。而一個可解決此問題的方 法是:在解碼分支指令之前先進行分支。此可以藉由使用 一個分支目標位址快取區(branch target address cache ;簡 稱BTAC)來實現,此BTAC快取(cache)包含先前已執 行分支指令之指令快取線的擷取位址,以及與其相關的目 標位址。 此指令快取區擷取位址是應用於BTAC,本質上相似於 擷取位址對於指令快取區的應用。在包含分支指令的快取 本紙張尺度適用中阀國家標準(CNSM丨規格(210x297公坌) 530205 Λ7 H7 8415twf. doc/006 五、發明說明(<)
線的指令快取區擷取位址情況中,快取線是提供給指令緩 衝器。除此之外,如果擷取位址命中(hit) BTAC,BTAC 會提供一個相關的分支目標位址,如果分支指令命中BTAC 是預期發生的,則指令快取擷取位址會被更新爲由BTAC 参 所提供之目標位址。 因爲指令快取區會一次提供一條指令集的快取線提供 至指令緩衝器,是以在分支指令後,快取線中可能仍會有 指令位元組存在。而在分支指令後的這些指令位元組不應 被執行。然而,指令緩衝器不會一次全被淸除掉(如上所 述,在沒有BTAC的處理器中會被淸除掉),因爲可能直 到現在在尙未被解碼的指令緩衝器中,仍有有效指令存 在。特別是,分支指令本身(即任何在快取線中優先於分 支指令的指令位元組)必須被解碼及執行。 可是,在分支指令仍在指令緩衝器中且尙未被格式化 的情況下,在指令緩衝器中接續於分支指令的指令的位置 亦不得而知,這是因爲分支指令在快取線中的長度及位置 在分支指令被格式化之前無法得知,是以在指令緩衝器中 的分支指令的位置未知。據此,在分支指令後的指令的位 置亦無法得知。 此外,亦可能在分支指令解碼前,包含分支的目標指 令的快取線會被儲存至指令緩衝器中,而在快取線中,處 於目標指令之前的指令位元組不會被執行,更複雜點的, 分支指令可能會由多位元組(multiple bytes)組成,而造 成分支指令會涵蓋橫跨多個快取線。 本紙張夂度適用中(¾國家標準(CNS)A.丨規格(21〇 X 297公坌) ------1 ------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 530205 Λ7 I《7 8 4 15twf. doc/0 0 6 五、發明說明(6) 一般說來,在管線微處理器的設計中,去設計指令格 式邏輯,使之在處理器的循環週期中進行指令格式函數’ 是很困難的事,因此’儘可能在格式化指令位兀組上提供 更多的循環週期,會比將指令位元組自指令緩衝器中位 移,更有助益。而如果是利用一個指令緩衝器使之儘可能 提供時間,亦是相當有助益之事,因爲可讓指令格式化邏 輯格式化由指令緩衝器提供之指令位兀組。除此之外’利 用微處理器中一個具有較大儲存空間的指令緩衝器’以減 少指令解碼階層飢餓的可能性’亦很有幫助。特別是關於 這一點在當微處理器管線處理指令的速度增加時會特別重 要。這在與記憶體的存取時間’或是與擷取階層在發生分 支情況下,自指令快取區中擷取指令所需的時間有關的速 度增加上尤其正確。 因此,在管線處理器中的分支控制裝置是必須的,使 得基於BTAC的指令快取擷取位址在利用上’可以與一個 具有較大儲存空間的指令緩衝器結合’而此具有較大儲存 空間的指令緩衝器可以提供有效的處理時間特性及適當的 程式執行。 發明槪述 有馨於此,本發明在管線處理器中提出一種分支控制 裝置,使得預先解碼(pre-decode) BTAC的利用,可以與 多位元組寬度結合,而多重階層指令緩衝器則提供指令解 碼邏輯,以增加格式化指令的時間。依據上述欲達成之目 的,本發明的特徵在於提供一微處理器,而此微處理器包 本紙張尺/|適用中阀國家標準(CNS)A丨規格(210 x 297公楚) -----^----— — --------訂--------•線 (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 經濟部智慧財產局員Η消費合作社印製 530205 五、發明說明(q) 括一個指令緩衝器,具有數個階層,用以暫存自指令快取 區接收之指令位元組。此微處理器也包括一個分支指標, 係關連於數個儲存指標用的階層,用以檢測微處理器是否 有分支到暫存於關聯階層中之分支指令的目標位址。微處 理器亦包含一個多工器(multiplexer ),鍋接於指令緩衝器, 依據與分支指標相關聯的階層,選擇其中之一個階層。 本發明另在微處理器中亦提供一種預先解碼階層,此 預先解碼階層包括一個指令緩衝器,至少具有階層A、B 以及C,用以暫存指令位元組。此預先解碼階層亦包括一 個多工器,係耦接於指令緩衝器,用以選擇階層A、B及C 其中之一個階層以提供至指令格式化邏輯。預先解碼階層 亦包含一分支指標,係耦接於多工器,依據呈現於階層A 的分支指令以指示微處理器是否發生分支。預先解碼階層 亦包含一涵蓋指標(wrap indicator),耦接於多工器,係 指出被指令格式化邏輯格式化的指令是否涵蓋橫跨階層A 及B,以進一步格式化指令。其中,多工器係依據分支指 標及涵蓋指標,從階層A、B及C中選擇其中之一個階層 以提供給指令格式化邏輯。 本發明又提供一種分支控制裝置·,係適用於微處理 器。此分支控制裝置包括指令緩衝器,具有第一、第二及 第三階層,用以暫存自指令快取區接收之第一、第二及第 三快取線,其中,第一及第二快取線各自包含分支指令的 一部份,而第三快取線則是包含分支指令的目標指令。分 支控制裝置亦包括一分支目標位址快取區(branch target 本紙張尺度適用中國國家標準(CNSM!規恪(210 x 297公餐) I I I I I I I i I I ·1111111 « — — — — — — I— (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員Η消費合作社印製 530205 五、發明說明(公) address cache ;簡稱BTAC),耦接於指令緩衝器,係輸出 一個指標,以顯示第三快取線是由BTAC所提供之分支指 令的目標位址自指令快取區中選取得到。分支控制裝置亦 , 包括一多工器,耦接指令緩衝器與指令格式化邏輯,用以 選取第一、第二及第三階層中的一個階層,以提供至指令 格式化邏輯,其中,多工器會在選取第一及第二階層後, 依據BTAC輸出之指標及指令格式化邏輯判斷的分支指令 長度,選取第三階層。 本發明又再提出一種暫存指令位元組以提供至指令格 式化邏輯的方法,係適用於一微處理器。此方法包括儲存 一分支指標,以判斷處理器是否有分支於相對應於指令緩 衝器的第一快取線,接著,產生第一快取線的第一指令長 度,之後,依據第一指令的長度,判斷第一指令是否涵蓋 超過第一快取線,此方法亦包括依據分支指標及上述之判 斷步驟,選取儲存於指令緩衝器的第二快取線以格式化第 二指令。 本發明具有的一個優點是使多重位元組寬度的指令緩 衝器在連接預先解碼BTAC時,可以在多數情況中,達到 零分支代價,因爲本發明是在將指令緩衝器中的階層提供 給指令格式化邏輯後,才進行階層位移(shift),而不是 先位移指令緩衝器的已格式化階層,再提供最底層的階層 予指令格式化邏輯。而藉由位移階層的減少,本發明可以 將有效的週期時間數量,增加於指令格式化邏輯在格式化 目前的指令上。 12 本紙張尺度適用中國國家標準(CNS)A l規格(210 X 297公g ) ---I I --I* I I -----------— — (請先閱讀背面之注意事項再填寫本頁) 530205 Λ7 1^7 8415twf.doc/006 五、發明說明(1 ) 爲讓本發明之上述和其他目的、特徵、和優點能更明 顯易懂,下文特舉較佳實施例,並配合所附圖式,作詳細 說明如下: 圖式之簡單說明: 第1圖繪示的是依據本發明之包含一分支控制裝置之 一管線微處理器之一方塊圖; 第2圖繪示的是本發明依據圖〗關於位移指令緩衝器 之一流程圖; 第3圖繪示的是本發明依據圖丨關於指令緩衝器在階 層選擇上之一流程圖;以及 第4A-4F圖繪示的是本發明依據圖丨及圖3關於選取 指令緩衝器階層爲例之一資料表。 標號說明 100 :微處理器 102 :指令快取區 104,174 :暫存器 106 :階層置換多工器 1〇8 :位兀組智慧型排列多工器(byte-wise alignment mux) 112 :指令緩衝器 114 :指令格式化邏輯 116 ··分支目標位址快取區(BTAC) 118,128 :多工器 122 :控制邏輯 124 :增加器 本紙張&度適用中0國家標準(CNSM丨規格(21〇 I I I I I .s I I I · I I i I I I I I I ·11111111 Aw (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 297公坌) 530205 經濟部智慧財產局員工消費合作社印製 五、發明說明(/p) 126 :階層 132,138 :目標位址 134 :命中訊號(HIT signal) 136 :理論性分支資訊(SBI signal) 142,144,146,148,166 :資料匯流排 152 : 擷取位址 154, 156,168 :控制訊號 158 : 現行指標 162 : 次一循序擷取位址 164 : 分解目標位址 172 : 指令長度 176 : 及閘 178 : 比較器 184 : 現行指標暫存器 186 : B WRAP訊號 188 : 移位訊號 192, 193 : BTAC分支指標 194 : 涵蓋訊號(fwrap signal) 196 : 進位訊號 198 : 和(sum) 步驟202至步驟228係本發明一較佳實施例之一實施步驟 步驟302至步驟326係本發明另一較佳實施之一實施步驟 較佳實施例 請參照第1圖,其繪示的是依照本發明一較佳實施例 本紙張&度過用中阀阀家標準(CNSM1处格297公發) ----------*--i ------訂·--- (請先閱讀背面之注意事項再填寫本頁) 530205 Λ7 8 415twf. doc/0 Ο 6 8415twf.doc/ 0 0 6_^_ 五、發明說明(f I) (請先閱讀背面之注意事項再填寫本頁) 的一種包含分支控制裝置之管線微處理器100之一部分方 塊圖。在本實施例中,微處理器100包括一 X86架構處理 器,而在本實施例中,微處理器100包含一 13-階層管線, ^ 包括指令擷取階層、多重指令快取存取階層、指令格式化 階層、指令解碼或轉換階層、暫存器存取階層、位址計算 階層、多重資料快取存取階層、多重執行階層、儲存階層 及寫回階層。 微處理器100包括指令快取區102,用以快取指令位元 組,係經由資料匯流排166自記憶體中接收這些指令位元 組,而指令快取區102包括儲存指令位元組用之快取線陣 列,此快取線陣列是藉由擷取位址152來進行索引,即擷 取位址152是在陣列中選擇其中一條快取線,而指令快取 區102會經由資料匯流排142輸出被選取之指令位元組的 快取線。 在本實施例中,指令快取區102包含一個64KB的4-way集合關聯式快取,具有每道(way) 32_位元組之快取 線,在本實施例中,指令快取區102 —次會提供已選取的 經濟部智慧財產局員工消費合作社印製 指令位元組的一半快取線,例如,在每兩個間隔週期中, 會提供16個位元組。在本實施例中,指令快取區102是類 似於美國專利案號09/849,736,名稱爲非實際的分支目標 位址快取(SPECULATIVE BRANCH TARGET ADDRESS CACHE)(文件編號CNTR: 2021 )中所描述的指令快取 區’其中此申請案與本發明具有共同之申請人(assignee), 在此亦將其申請標的倂入本發明作參考。 15 本紙張尺度適用中S國家標準(CNSM丨規格(210 X 297公g ) 530205 Λ7 8415twf.doc/006 五、發明說明(/2) (請先閱讀背面之注意事項再填寫本頁) 微處理器100亦包含分支目標位址快取區(branch target address cache ;以下簡稱 BTAC) 116,此 BTAC 116 係接收指令快取區102的擷取位址152,BTAC 116包括儲 , 存元素的陣列,用以快取目前已執行的分支指令及其相關 分支目標位址的擷取位址,而儲存的元素亦包括其他關於 分支指令的理論性分支資訊,作爲快取的目標位址,特別 是,所儲存的元素包括多重位元組分支指令是否涵蓋橫跨 兩個指令快取線的指標。擷取位址152會指向位於BTAC 116中儲存元素的陣列,以選擇其中之一個儲存元素。 BTAC 116會藉由擷取位址152,從被選取的儲存元素 中,輸出一個目標位址132及理論性分支資訊(speculative branch information ;以下簡稱SBI) 136。在本實施例中, SBI 136包括分支指令長度,位於快取線中的分支指令位 置,分支指令爲呼叫(call)或返回(return)指令,以及 分支指令預期發生與否,這些皆在美國專利案號 09/849,736,名稱爲非實際的分支目標位址快取 (SPECULATIVE BRANCH TARGET ADDRESS CACHE) 中有所描述,在此將其申請標的亦倂入本發明之參考。 經濟部智慧財產局員工消費合作社印製 BTAC 116亦輸出一個命中訊號(HIT signal) 134,用 以指示擷取位址152是否命中BTAC 116,在本實施例中, BTAC 116是類似於上述參考的美國專利案中描述的 BTAC,其中,BTAC 116是一個非實際的BTAC,因爲微 處理器100在指令快取區102提供之指令快取線被解碼 前,會分支連結到BTAC 116所提供之目標位址132,不論 16 本紙張&度適用中0國家標準(CNSM丨規格(210 X 297公:¥ ) 經濟部智慧財產局員工消費合作社印製 530205 8 4 1 5 t w f · do c / ◦ 6 五、發明說明(1^) 目前在擷取位址選取的快取線中的分支指令是否爲已知狀 態,因此,理論上,微處理器100會分支連結到BTAC 116 所提供之目標位址132,即使目前分支指令可能不存在於擷 ^ 取位址選取以作爲命中BTAC 116的快取線中。 BTAC 116亦輸出一個BWRAP訊號186,用以確認分 支指令是否涵蓋橫跨兩個快取線,其中,BWRAP訊號186 之値是BTAC 116在分支指令執行之後,隨著分支指令目標 位址而快取得到的,但BWRAP訊號186之値在僅顯示上 次分支指令是否涵蓋橫跨快取線的情況下,是非實際之 値。然而,如在上述參考的美國專利案中所描述的,在本 實施例中,在上次所執行的分支指令或快取線的擷取位址 152是虛擬別名的狀況中,快取線會被進行修正。 微處理器100亦包括控制邏輯122,上述的HIT訊號 134、SBI 136以及BWRAP訊號186皆是當作輸入訊號輸 入至控制邏輯122,以下會對控制邏輯122的操作進行更詳 細的描述。 微處理器100亦包括一個多工器118,此多工器118 在其輸入端至少接收三個位址,且會選取其中一個輸入位 址作爲輸出至指令快取區102的擷取位址152,以回應從控 制邏輯122傳送之控制訊號168。多工器118會自BTAC 116 接收目標位址132,也會接收次一循序擷取位址162,此次 一循序擷取位址162,係依循指令快取區1〇2的快取線大小 而增加’且會藉由增加器124所接收的擷取位址152以提 供至多工器118。 17 本紙張尺心⑽中關家標準(CNS)A丨㈣⑵Gx」)97公餐) 丨丨丨丨丨-‘丨丨丨"丨丨·丨丨丨丨-丨丨訂·丨丨丨丨丨丨丨· *5^ (請先閱讀背面之注意事項再填寫本頁) 五 經濟部智慧財產局員工消費合作社印製 530205 8415twf.doc/〇〇6 發明說明(/[[) 多工器118亦接收一個分解目標位址(res〇lved target address) 164,係由微處理器loo中的執行邏輯所提供,此 執行邏輯係依據分支指令的完整解碼來計算分解目標位址 164。如果微處理器1〇〇在分支連結到BTAC 116提供之目 標位址132後,經判斷發覺其所分支連結到的位址是錯誤 的,則微處理器100會進行錯誤修正,藉由淸除(flush) 管線以及分支連結至分解目標位址164或是快取線的擷取 位址,包括接續於分支指令的指令位址,來進行修正。在 本實施例中,如果微處理器100推測判斷出在目前的快取 線142中沒有分支指令,則微處理器100會藉由淸除管線 以及分支連結至包括分支指令本身指令位址的快取線擷取 位址,來修正錯誤,此錯誤修正係描述於美國專利案號 09/849,658,名稱爲偵測及修正錯誤的非實際分支目標位址 快取分支之裝置、系統及方法(APPARATUS,SYSTEM AND METHOD FOR DETECTING AND CORRECTING ERRONEOUS SPECULATIVE BRANCH TARGET ADDRESS CACHE BRANCHES)(文件編號 CNTR : 2022 ),此案與 本發明具有相同之申請人,在此將之申請標的倂入本案作 參考。 在本實施例中,多工器Π8亦接收其他來自於分支預 測元素預測的目標位址,例如一個呼叫/返回堆疊以及一個 分支目標緩衝器(branch target buffer ;簡稱BTB ) ’其中 BTB是依據分支指令指標,快取間接分支指令的目標位 址。多工器118會選擇性地使BTAC 116提供之目標位址因 ----!‘i I,---------!訂-----I--•線 (請先閱讀背面之注意事項再填寫本頁) 本紙張复適用中國國家標準(CNSM1規格do X 297公坌) 530205 8415twf.doc/006 Λ7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(/5) 呼叫/返回堆疊及BTB提供之目標位址而無效,此在美國專 利案號〇9/849,799,名稱爲依據分支指令型態藉由第二預 測器使非實際的分支目標位址快取選擇性無效 (SPECULATIVE BRANCH TARGET ADDRESS VACHE WITH SELECTIVE OVERRIDE BY SECONDARY PREDICTOR BASED ON BRANCH INTRUCTION TYPE) (文件編號CNTR: 2052),此案與本發明具有相同之申請 人,在此將之申請標的倂入本案作參考。 微處理器1〇〇亦包括一指令緩衝器112,此指令緩衝器 112包括數個階層,或暫存器,會集體或個別地稱爲jg層 126,以儲存自指令快取區102經資料匯流排142傳送之指 令位元組。在本實施例中,指令緩衝器112會自指令快取 區102中一次接收16-位元組的快取線,在本實施例中,指 令緩衝器112的階層126是16-位元組寬,在本實施例中, 指令緩衝器112包含一個由8階層所組成的128-位元組緩 衝空間,每個階層用以儲存16個指令位元組。圖1僅顯示 指令緩衝器112的較低4層階層,最底層階層記爲階層A 126A,下一個階層是在階層A 126A之上的階層B 126B, 再下一個階層是在階層B 126B之上的階層C 126C,再下 下一個階層是在階層C 126C之上的階層D 126D。 指令緩衝器Π2是由一個具有頂層及底層的先進先出 (first-in-first-out)移位暫存器所組成,會自指令快取區 102接收指令位元組儲存於頂層,然後將階層126移出底 層。指令緩衝器112可以一次自底層移出一個或兩個階層 19 (請先閱讀背面之注意事項再填寫本頁) 裝--------訂—11 秦· 本紙張尺度適用中國國家標準(CNS)八1規格Gl〇x」97公爱) 530205 五、發明說明(/6) 126,也就是說,指令緩衝器112可以在一個時脈週期中移 出階層A 126A,或是在一個時脈週期中將階層A 126A及 階層B 126B —起移出。控制邏輯122會提供一個移位訊 號,即是用以判斷移出指令緩衝器112的階層126數目, 以下將會詳述之。當指令快取區1〇2提供一個快取限制指 令緩衝器Π2,則快取線會被置入最接近指令緩衝器112 底層的未使用階層126。 微處理器1〇〇亦包括數個暫存器174,每一個暫存器 174係儲存自BTAC 116傳送之目標位址132,每一個暫存 器174係連接於相對應於指令緩衝器112中的階層126。圖 1中即顯示連結於階層126A〜D的4個暫存器174A〜D,儲 存於暫存器174的目標位址是被BTAC 116用來預測儲存在 相連的階層126中的分支指令。 微處理器1〇〇亦包括數個暫存器104,每一個暫存器 104係用以儲存自控制邏輯122傳送之BTAC分支指標 192,每一個暫存器104是對應連接於數個指令緩衝器112 的階層126以及目標位址暫存器174,圖1即繪示4個暫存 器104A〜D對應連接階層126A〜D及目標位址暫存器 174A〜D,其中,儲存於暫存器104的BTAC分支指標192, 係用以確認微處理器1〇〇是否會如推測般,分支連結到自 BTAC 116傳送且儲存於相對應暫存器174之目標位址,進 而推測目前相對應階層126中的分支指令。如果BTAC 116 在確認擁有HIT訊號且預期分支指令發生的情況下,微處 理器1〇〇會分支連結至BTAC 116所提供之目標位址132, 本紙張尺度適用中國國家標準(CNSM丨規格GIG X 297公釐) (請先閱讀背面之注意事項再填寫本頁) 裂--------訂---- 拳 經濟部智慧財產局員工消費合作社印製 530205 Λ7 B7 8 415twf. doc/0 0 6 五、發明說明( 在本實施例中,BTAC 116會在SBI 136中提供一個預期訊 號,無論分支指令是否會發生,其中一個存在於暫存器104 的BTAC分支指標會被提供以作爲輸出至控制邏輯122的 輸出訊號193。 在本實施例中,控制訊號122會輸出一個16-位元値的 BTAC分支指標,以儲存於暫存器104且會被作爲輸出訊號 193提供至控制邏輯122,這16位元(bits)係相對應於階 層126的16位元組(bytes ),其中具有真値(true value ) 的位元會指出在階層126中相對應的位元組,作爲分支指 令的第一位元組,用以使微處理器1〇〇可分支連結至BTAC 116所提供之目標位址132。 微處理器1〇〇亦包括一個具有3_輸入端的階層置換多 工器106,此階層置換多工器106係經由資料匯流排 144A〜C,接收自指令緩衝器112分別傳送之關於指令位元 組的三個階層126A〜C。階層置換多工器106會依據控制邏 輯122產生的控制訊號154,自三個階層126A〜C選擇其中 一個階層,關於階層置換多工器1〇6的操作將會詳述於下。 在本實施例中,每一個資料匯流排144A〜C都是26-位 元組寬,資料匯流排144A〜C會分別提供階層126A〜C 16 個位元組,另外,會提供上一個階層前1〇個位元組做映像 (shadow)。以資料匯流排144A爲例,資料匯流排144A 會提供階層A 126A 16個位元組[0: 15],此外,階層A 126A 的16個位元組[0 : 15]中的前10個位元組[0 : 9]會提供給 階層B 126B。 ·---:---裝-----1--訂--------- (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印焚. 本纸張尺度適用中國國家標準(CNS)Al规格mo X 297公釐) 經濟部智慧財產局員工消費合作社印製 530205 五、發明說明(/§) 在x86處理器中的指令長度是可變動的,且可能會變 爲Π個位元組長,因此,一個11-位元組的指令在其第一 位元組的是階層A 126A最後一個位元組位置的情況下’指 令的最後1〇個位元組會是在階層B 126B的前10個位元組 位置。進一步地說,藉由所提供之16-位元組及上一個階層 的10-位元組映像,階層置換多工器1〇6會提供足夠的指令 位元組,以確保目前至少有一個完整的x86指令會被資料 匯流排144A〜C其中之一所選取,不管在26-位元組的資料 匯流排144中的下一個指令是從何處開始。 微處理器1〇〇亦包括一個位元組智慧型排列多工器 (byte-wise alignment mux) 108,此位元組智慧型排列多工 器108所接收的指令位元組,是階層置換多工器106經由 資料匯流排146自其中之一個匯流排144A〜C選取得到。在 本實施例中,位元組智慧型排列多工器108包括一組多工 器,用以排列自階層置換多工器106接收之指令位元組, 使得下一個位元組被格式化,例如,下一個被格式化指令 的第一個位元組,會被輸出在11-位元組的資料匯流排148 的第一位元組線上。位元組智慧型排列多工器108係依據 控制邏輯122產生之控制訊號156來排列位元組,控制邏 輯122則是依據現行指標(current pointer)訊號158來產 生控制訊號156,其中現行指標訊號158會指向下一個被格 式化指令的第一位元組。 舉例來說,假設最後一個被格式化指令的最後一個位 元組是在資料匯流排146的位元組3中,則下一個被格式 本紙張尺度適用中國國家標準(CNSM1規烙Uj(jx 297公釐) ί------裝--------訂----I I I I (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印制衣 530205 8415twf.d〇c/006 / -^^- _ U7___ 五、發明說明(^ ) 化指令的第一位元組會是在資料匯流排146的位元組4 中。位元組智慧型排列多工器1〇8會從資料匯流排146排 列位元組,使得資料匯流排146的位元組4會被提供於資 … 料匯流排148的位元組0上,資料匯流排146的位元組5 會被提供於資料匯流排148的位元組1上,直至四次上升 排列,使得位元組14被提供於資料匯流排148的位元組10 爲止。 微處理器100亦包括指令格式化邏輯114,係接收指令 緩衝器112經由資料匯流排148傳送之指令位元組,此指 令格式化邏輯Π4會檢查,或審視,指令緩衝器112的階 層126以及相關的映像內容,這些內容是由階層置換多工 器106所選取,以及由位元組智慧型排列多工器1〇8進行 排列。指令格式化邏輯Π4會將接收到的指令位元組進行 格式化,或分析,爲指令,特別是’指令格式化邏輯H 4 會決定指令的位元組大小。指令格式化邏輯丨14會提供已 格式化指令給剩餘的微處理器100管線,用以更進一步的 解碼及執行,而指令緩衝器112爲了減少指令格式化邏輯 114飢餓的可能性,會暫存指令位元組。 指令格式化邏輯114會經由控制訊號172,提供目前已 格式化的指令長度。在本實施例中,指令長度172包括4 個位元,會藉由控制邏輯Π2 (改爲122)產生之控制訊號 188,來控制指令緩衝器112的移位,亦即,控制訊號188 會爲指令緩衝器112供應如移位計數的服務’而控制邏輯 122亦會利用移位計數188來控制指令位元組至指令緩衝 ‘ .---Μ----------------- (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中國國家標準(CNSM1規格(2】〇χ297公釐) 530205 五、發明說明(>) 器112的載入。 在本實施例中,指令格式化邏輯114可以在每個處理 器100的時脈週期中格式化多重指令,而指令長度訊號172 會顯示多重格式化指令的指令長度和(sum )。在本實施例 / · 中,指令長度訊號172上所顯示的最大和(sum)是15位 元組。 也就是,階層置換多工器1〇6會提供一個裝置,讓指 令格式化邏輯114可以得到最適的指令位元組階層126,用 以格式化而不需指令緩衝器Π2位移已格式化的階層 126。之後,自指令緩衝器112位移一個階層126的時間, 就會從提供階層126至指令格式化邏輯114所減少的時間 而來,而這對微處理器在時脈的時間上是相當有助益的。 經濟部智慧財產局員工消費合作社印製 ------·------裝---- (請先閱讀背面之注意事項再填寫本頁) 微處理器1〇〇亦包括暫存器184,用以儲存及輸出現行 指標158,此現行指標158係用以確認在指令緩衝器112 階層126中的位置,是目前被指令格式化邏輯114格式化 ,的指令,亦即現行指標158會指向被指令格式化邏輯114 格式化指令的第一位元組。另,現行指標158亦會被提供 給控制邏輯122,而控制邏輯122會利用現行指標158產生 控制訊號154、156及188。在本實施例中,現行指標158 包括4個位元,用以確認任一 16位元組是在其中之一指令 緩衝器112的階層126中。 微處理器1〇〇亦包括加法器182,用以接收指令長度 172及現行指標158,以及產生它們的和(sum) 198。如果 下一個指令是循序的,例如目前被格式化指令不是一個發 本纸張尺度適用中國國家標準(CNSM〗規烙(2】ϋ X 297公釐) 530205 Λ7 P>7 4 15 twf. do c/0 0 6 五、發明說明(Z|) 生的分支指令,則指令長度Π2及現行指標158的和198 即是次一指標198,或是指向下一個被格式化指令的指標。 次一指標198是提供給多工器128,而此多工器128 亦接收儲存於其中一個暫存器174的目標位址的較低4個 位元,且暫存器174是關連於階層置換多工器106所選取 的階層126。如果BTAC分支指標193顯示目前格式化指令 並非一發生分支指令,則控制邏輯122會控制多工器12S 去選取次一指標198,但如果BTAC分支指標193顯示目前 格式化指令是一發生分支指令,則控制邏輯U2會控制多 工器128選擇自暫存器174傳送之目標位址138,即分支指 令會使微處理器1〇〇分支連結到BTAC116所提洪之目標位 址132。其中,多工器128的輸出會儲存於現行指標暫存器 184 中。 加法器182亦會產生進位訊號(carry signal) 196,而 進位訊號196在現行指標158及指令長度172的和爲真時 ,會產生一個進位,特別是,進位訊號196會顯示目前格式 化指令的一個位元組是否有佔據現階層126的最後一個位 元組。舉例來說,假設目前格式化指令是開始於選取階層 126的位元組13,例:現行指標158是OxD,然後假設指 令格式化邏輯Π4決定目前格式化指令有一個3位元組的 指令長度172,例:此指令佔據階層126的位元組13、14 及15是階層126的最後3個位元組,而在本例中,現行指 標158及指令長度172之和爲0x10,因此,加法器182產 生之次一指標198即會是0x0,且進位196會是1,或真値。 本紙張尺度適用中國國家標準(CNS)八1規格(2】0 X 297公釐) -----ί------Aw --------^-------- (請先閱讀背面之注意事項再填寫本頁) 經齊邹智慧財產局員工消費合作社印製 經濟部智慧財產局員工消費合作社印製 530205 五、發明說明(21) 相較之下,假設目前格式化指令是開始於位元組12, 即指令會佔據階層126位元組位置12、13及14,但不是位 元組位置15。在這個情況中,和是OxF,因此,次一指標 198是OxF,而進位196之値是0,或僞値。進位訊號196 是提供至控制邏輯122,而控制邏輯122會利用進位訊號 196產生控制訊號154、156及188。 微處理器100亦包括比較器(comparator) 178,用以 接收次一指標198及將次一指標198與0進行比較,如果 次一指標198不等於0,則比較器178會輸出真値(true value),但如果次一指標198等於0,則比較器178會輸 出僞値(false value)。 比較器178輸出的値會提供給及閘(AND gate) 176, 且及閘176亦會接收進位訊號196。另,及閘176輸出的訊 號是一個涵蓋訊號(fwrap signal) 194,用以顯示目前格式 化指令所涵蓋的階層126是否如指令格式化邏輯114所決 定的。舉例來說,假設目前被格式化指令是開始於所選取 階層126的位元組13,例現行指標158是OxD,然後假設 指令格式化邏輯114決定目前格式化指令有一個3位元組 的指令長度172,假設此指令佔據階層126的位元組13、 14及15是階層126的最後3個位元組。在此例中,現行指 標158及指令長度172之和爲0x10,因此,加法器182產 生之次一指標198即會是0x0,進位196是1,或真値。而 由於次一指標198等於0 (非不等於〇),則比較器178的 輸出値爲僞値(false value),接下來,由於及閘176的其 26 -----:------Aw ^--------^------1— (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中國國家標準(CNS)Al規烙(210x297公g ) 經濟部智慧財產局員工消費合作社印製 530205 8415twf.doc/006 ‘ ______B7 ___ 五、發明說明(2>) 中一個輸入訊號(即比較器Π8的輸出訊號)爲僞値,是 以涵蓋訊號194會是僞値。 相較之下,假設目前格式化指令是開始於位元組14, 即假設指令的前兩個位元組會佔據階層中的後兩個位元組 位置,而指令的最後一個位元組會佔據下一個階層上的第 一位元組位置。在這種情況中,和是0x11,因此,次一指 標198是0x1,而進位196之値爲真,由於次一指標198不 等於〇,即非並不等於〇,是以比較器178的輸出値爲真値 (true value),接下來,由於比較器178的輸出訊號爲真 且進位訊號196亦爲真,是以涵蓋訊號194亦爲真。 涵蓋訊號(fwrapsignal) 194會提供至控制邏輯122, 而控制邏輯122會利用涵蓋訊號194產生控制訊號154、156 及188。由於涵蓋訊號194是依據指令位元組在階層126 中解碼而來,是以涵蓋訊號194會提供一個真實指示於格 式化指令是否有涵蓋橫跨於兩個指令緩衝器112階層 126,相較之下,BWRAP訊號186是在指令解碼前產生出 來,是以BWRAP訊號186會提供一個非實際指示於分支 指令是否有涵蓋橫跨兩個快取線。 請參考第2圖,其繪示的是本發明依據圖1關於指令 緩衝器112動作之流程圖,此流程開始於步驟202。 在步驟202中,圖1中的次一循序擷取位址162是由 圖1的多工器118選取,作爲圖1的擷取位址152,以提供 給圖1的指令快取區102及圖1的BTAC 116。接著,流程 程序自步驟202至步驟204。 27 1^氏張尺度適用中國國家標準(CNS)A、1規格(210x297公t ) ~ - —*------^--------^--------- (請先閱讀背面之注意事項再填寫本頁) 經齊卽智慧財產局員工消費合作钍印製 530205 五、發明說明(1) 在步驟204中,指令快取區102會輸出快取線於圖1 的資料匯流排142,此快取線是由步驟202提供之擷取位址 所選取。接著,流程程序自步驟204至步驟206。 在步驟206中,經由步驟204的指令快取區所輸出的 已選取快取線,會被儲存於指令緩衝器112,且此快取線是 儲存在接近指令緩衝器112底層的第一未使用階層126。此 已選取快取線包括一個分支指令,係BTAC 116快取的目標 位址。接著,流程程序自步驟206至步驟208。 在判斷步驟208中,控制邏輯122會判斷BTAC 116 的分支是否發生,亦即,控制邏輯122會檢測BTAC HIT訊 號134,以判斷擷取位址152對在步驟202的BTAC 116是 否發生命中情形,以及與BTAC 116輸出的目標位址132 有關連的分支指令,是否有預期性的發生。如果沒有,則 流程會返回步驟202以擷取下一個循序快取線,否則流程 會進行至步驟212。 在步驟212中,目標位址132會由BTAC 116輸出以儲 存在其中一個暫存器174,此暫存器174是與步驟206分支 指令所儲存的階層126有關聯。另外,控制邏輯122會輸 出一個具有真値的BTAC分支指標192,此BTAC分支指標 192是儲存在其中一個暫存器104,而此暫存器104係與步 驟206分支指令儲存的階層126有關聯。在本實施例中’ BTAC分支指標192中的位元係與階層126分支指令的第一 位元組有關聯,此位元値爲真,表示微處理器1〇0會分支 連結到將在步驟224中發生且由BTAC 116所提供之目標位 28 (請先閱讀背面之注意事項再填寫本頁) ^--------^------ 本纸張尺度適用中國國家標準(CN‘S)A1規格(2]〇xL)()7公釐) 530205 經齊邹智慧財產局員工消費合作社印製 84l5twf. doc/006 五、發明說明Of) 址132。接著,流程從步驟212至判斷步驟214繼續進行。 在判斷步驟214中,控制邏輯122會判斷BTAC 116 是否預期分支指令會涵蓋橫跨快取線,也就是,圖1的控 制邏輯122會判斷圖1的BWRAP訊號是否爲真,如果是, 則流程會進入步驟216,否則流程會進入步驟224。 在步驟216中,次一循序擷取位址162會提供至指令 快取區102。如果流程進到步驟216,而目前只有分支指令 的第一部份儲存在步驟206的指令緩衝器112的快取線 中,則此情形會藉由步驟214中的BWRAP訊號186來表 示,也就是說,這個分支指令位元組的第二部份還沒有被 指令快取區102輸出以儲存至指令緩衝器112內。因此, 有必要在分支指令的第二部分被指令快取區102輸出以儲 存在指令緩衝器Π2後,才可將BTAC 116所提供之目標位 址132應用於指令緩衝區102中。流程自步驟216至步驟 218繼續進行。 在步驟218中,指令快取區102輸出由步驟216提供 的次一循序擷取位址162所選取的快取線,所輸出的快取 線包括非實際BWRAP訊號186所指示的分支指令第二部 份。流程自步驟218至步驟222繼續進行。 在步驟222中,包含分支指令第二部分的快取線,是 儲存於指令緩衝器112中,其中,包含分支指令第二部分 的快取線係儲存於指令緩衝器112的階層126中,而緊連 的上一層階層126中,則是包含分支指令的第一部分。流 程自步驟222至步驟224繼續進行。 -----1------^--------^--------- (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中國國家標準(CNS)A4规格x 公釐) 530205 五、發明說明(>G) 在步驟224中,多工器118選取BTAC 116提供之目標 位址132,作爲下一個指令快取區102的擷取位址152,在 此,整個分支指令已儲存於指令緩衝器112中。如果’流 程是從判斷步驟214至步驟224,則分支指令是包含在指令 緩衝器112中的一個階層126,如果,流程是從步驟222 至步驟224,則分支指令是包含在指令緩衝器112中兩個緊 鄰的階層126。流程自步驟224至步驟226繼續進行。 在步驟226中,指令快取區102輸出的快取線,是由 目標位址132因應步驟224的指令快取區102而選取,所 選取的快取線,包括分支指令的目標指令,或指令集。流 程自步驟226至步驟228繼續進行。 在步驟228中,包含目標指令的快取線是儲存於指令 緩衝器112中,其中,包含目標指令的快取線會儲存於指 令緩衝器112的階層126中,而緊接在上一層的階層126 是包含整個分支指令或是分支指令的第二部分,則是依據 分支指令是否涵蓋橫跨多重快取線而定。流程自步驟228 返回至步驟202進行。 請參考第3圖,其繪示的是本發明依據圖1的指令緩 衝器112之階層126的選擇之一流程圖。流程開始於步驟 302 〇 在步驟302中,圖1的指令格式化邏輯114,係格式化 圖1指令緩衝器112的階層A 126A中的指令,而指令格式 化邏輯114係對圖1的現行指標158指向的指令進行格式 化,且會產生指令在圖1的指令長度Π2。流程自步驟302 (請先閱讀背面之注意事項再填寫本頁) 裝.丨丨——訂---------#. 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A.l規格(21U>^97公t ) 530205 Λ7 B7 8415twf.doc/006 五、發明說明ο7]) 至步驟304進行。 在步驟304中,圖1的加法器182會將指令長度Π2 加向現行指標158,以產生圖1的次一指標198及圖1的進 位訊號196,且及閘176會產生圖1的涵蓋訊號(fwrap signal) 194。另外,儲存於暫存器104A的BTAC分支指標 會被輸出在圖1的BTAC分支指標訊號193上。流程自步 驟304至步驟306進行。 在判斷步驟306中,控制邏輯122會判斷步驟302的 格式化指令,是否爲圖2步驟224微處理器100分支連結 的分支指令,亦即,控制邏輯122會判斷步驟304的BTAC 分支指標193是否爲真。在本實施例中,控制邏輯122會 判斷在BTAC分支指標193中,與現行指標158相對應的 位元是否爲真,如果不是,則流程會進到判斷步驟308 , 否則流程會進行到判斷步驟316。 在判斷步驟308中,控制邏輯122會判斷進位訊號196 是否爲真,如果不是,則流程會進到步驟312 ,否則流程 會進行到步驟314。 在步驟312中,控制邏輯122會產生控制訊號154,以 控制圖1的階層置換多工器106選取階層A 126A,使階層 A 126A提供於資料匯流排146中,進一步讓指令格式化邏 輯114進行格式化。另外,控制邏輯122會在移位訊號188 上產生〇的値。流程自步驟312至步驟324進行。
在步驟314中,控制邏輯122產生控制訊號154以控 制圖1的階層置換多工器106選取階層B 126B,使階層B 本紙張尺度適用中國國家標準(CNS)A丨規格(210 X 297公釐) ----i·—.—Aw --------^--------- (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 530205 8415twf.doc/006 Λ7 B7 五、發明說明on (請先閱讀背面之注意事項再填寫本頁) 126B提供於資料匯流排146中,以進一步讓指令格式化邏 輯114進行格式化。另外,控制邏輯122會在移位訊號188 上產生1的値。流程自步驟314至步驟324進行。 在判斷步驟316中,控制邏輯122會判斷圖1的涵蓋 訊號194是否爲真,如果不爲真,則流程進入步驟318,否 則,流程進入步驟322。 在步驟318中,控制邏輯122產生控制訊號154以控 制圖1的階層置換多工器106選取階層B 126B,使階層B 126B提供於資料匯流排146中,以進一步讓指令格式化邏 輯114進行格式化。另外,控制邏輯122會在移位訊號188 上產生1的値。接著,流程自步驟318至步驟324進行。 在步驟322中,控制邏輯122會產生控制訊號154,以 控制圖1的階層置換多工器106選取階層C 126C,以提供 於資料匯流排146上,作爲指令格式化邏輯114格式化之 用。除此之外,控制邏輯122還會產生値爲2的移位訊號 188。接著,流程自步驟322至步驟324進行。 經齊邹智慧財產局員工消費合作钍印製 在步驟324中,對現行指標158進行更新,亦即,圖1 的多工器128會選取圖1的次一指標198或是目標位址 138,且會儲存選取之値於暫存器184中。如果流程是由步 驟312或314而來,則多工器12S會選取次一指標19S,否 則,多工器128會選取目標位址138。另外,指令格式化邏 輯114會格式化已更新現行指標158指向之指令,其中, 已更新現行指標158所在的階層,係由步驟312、314、318 或322的階層置換多工器106選取而得。流程自步驟324 本紙張尺度適用中國國家標準(CNS)A、1規恪(210 X 297公釐) 530205 Λ7 Γ>7 4l5twf.doc/006 五、發明說明( 至步驟326進行。 在步驟326中,指令緩衝器112會在312、314、318 或322的步驟中,位移移位訊號188確認的階層數目,使 得階層A又可再次位於指令緩衝器112的底層,且f曰令緩 衝器112會在階層置換多工器1〇6選取適當的階層126以 提供指令格式化邏輯114後,才位移確認的階層數目。 請合倂參考第4A〜F圖,一同作爲圖4來參考,其繪示 的是本發明之圖1依據圖3的指令緩衝器I12階層126 ^ 取的6個資料表例子。在圖4的每個資料表中包括4列’ 相對應於指令緩衝器112的階層A〜D 126A〜D,且以這些階 層名稱爲標籤,每一個資料表包括16行,相對應每個階層 126的16個位元位置,從左而右分別標示〇至15。在資料 表中的每個單位(cell)不是空白的,就是被移植關於指令 位元組的內容。有三個不同的指令常被用來說明·’ 3_位元 組ADD(x86加法指令)、4-位元組SUB(x86減法指令) 及2-位元組JCC(x86條件式跳躍指令、或是分支指令), 每個指令的位元組會以括弧圈住數字來標示相對應的指令 位元組。例如,”SUB[2]”表示爲第3位元組,係SUB指令 的位元組2。 這6個不同的資料表即是說明6個關於目前格式化指 令的不同組合內容,包括分支/非分支、涵蓋訊號194真/ 僞値,以及進位訊號196真/僞値。在每個情形中,現行指 標158、指令長度172'BTAC分支指標193及目標位址138 較低4個位元的初始條件値皆爲確定的値。除此之外,次 33 ----l·---.---^裝--------訂--------- (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A4規格(2丨0 x㊇7公釐) 530205 Λ7 B7 84l5twf.doc/006 五、發明說明($⑺ 一指標198、進位訊號196及涵蓋訊號194之値,係在每個 狀況中,由圖1的控制裝置從初始條件値產生而來,而由 階層置換多工器1〇6選取的指令緩衝器112階層,以及由 控制邏輯122產生之移位訊號値188,皆會在每個情況中, 顯示於回應初始條件値及所產生的値中。雖然在圖4的實 施例中,位元組是以大印地安格式(big-endian)存放,但 在其他的實施例中,微處理器1〇〇可爲小印地安(little-endian)的微處理器1〇〇,在圖4中會顯示位元組的相反編 號。 圖4 A即是說明狀況1 ’目即格式化指令是一^個非分支 指令(non-branch),並沒有涵蓋橫跨兩個指令緩衝器112 階層,且亦沒有佔據階層的最後一個位元組,3-位元組的 ADD指令是位於階層A 126A的位元組8〜10,而4-位元組 的SUB指令是位於階層A 126A的位元組11〜14。現行指標 158之値爲8,指向ADD指令的第一位元組,且由指令格 式化邏輯114在圖3的步驟302中所產生的指令長度172 爲3,BTAC分支指標193在圖3的步驟304所輸出的値爲 僞(false),另外,由於目前格式化指令並非分支指令, 是以在步驟324輸出的目標位址138是非可應用之値。 在圖3的步驟304中,由加法器182產生之次一指標 198之値爲11,加法器182產生之進位訊號196之値爲僞, 且由及閘176產生之涵蓋訊號194亦爲僞値。因爲目前格 式化指令是一個非分支指令,並不會佔據其階層的最後位 元組,是以下一個被指令格式化邏輯114格式化的指令, 本紙張尺度適用中國國家標準(CNS)A丨規格(210x297公釐) 裝---- (請先閱讀背面之注意事項再填寫本頁) tr---------. 經齊部智慧財產局員工消費合作社印t 530205 經濟部智慧財產局員工消費合作社印製
MiStwf.doc / 0 五、發明說明(孑丨) 會開始於與目前格式化指令相同的階層。接著’控制邏輯 122會控制階層置換多工器1〇6選擇階層A 126A,且位移〇 個階層,這個動作是對應圖3的步驟312。 圖4B即是說明狀況2,目前格式化指令是一個非分支 指令(non-branch),並沒有涵蓋橫跨兩個指令緩衝器112 階層,但卻佔據階層的最後一個位元組。其中’ 3_位元組 的ADD指令是位於階層A 126A的位元組13〜15,而4-位 元組的SUB指令是位於階層B 126B的位元組0〜3。現行指 標158之値爲13,指向ADD指令的第一位元組,且由指令 格式化邏輯Π4在圖3的步驟302中所產生的指令長度172 爲3,而BTAC分支指標193在步驟304所輸出的値爲僞 (false),另外,由於目前格式化指令並非分支指令,是 以在步驟324輸出的目標位址138是非可應用之値。 在圖3的步驟304中,由加法器182產生之次一指標 198之値爲0,加法器182產生之進位訊號196之値爲真, 且由及閘176產生之涵蓋訊號194是爲僞値。因爲目前格 式化指令是一個會佔據其階層的最後位元組的非分支指 令,是以下一個被指令格式化邏輯114格式化的指令會開 始於目前被格式化指令的上一層階層。接著,控制邏輯122 會控制階層置換多工器106選擇階層B 126B,且位移1個 階層,這個動作是對應圖3的步驟314。 圖4C即是說明狀況3,目前格式化指令是一個非分支 指令(non-branch),此非分支指令涵蓋橫跨兩個指令緩衝 器Π2階層,且佔據階層的最後一個位元組。其中,3_位 本紙張尺度適用中國國家標準(CNS)Al規烙(210 X 297公釐) ’ ^-----I--^--------I (請先閱讀背面之注意事項再填寫本頁) 530205 ^4l5twf. doc/ 006 1 ---____ U7_ 五、發明說明 元組的ADD指令的前兩個位元組是位於階層A 126A的位 元組14〜15,而3-位元組的ADD指令的第三位元組是位於 階層B 126B的位元組0,另,4-位元組的SUB指令是位於 階層B 126B的位元組1〜4。現行指標158之値爲14,指向 ADD指令的第一位元組,且由指令格式化邏輯114在圖3 的步驟302中所產生的指令長度172爲3,而BTAC分支指 標193在步驟304所輸出的値爲僞(false),另外,由於 目前格式化指令並非分支指令,是以在步驟324輸出的目 標位址138是非可應用之値。 在圖3的步驟304中,由加法器182產生之次一指標 198之値爲1,加法器182產生之進位訊號196之値爲真, 及閘Π6產生之涵蓋訊號194亦爲真値。因爲目前格式化 指令是一個會佔據其階層的最後位元組的非分支指令,是 以下一個被指令格式化邏輯114格式化的指令會開始於目 前被格式化之指令的上一層階層。接著,控制邏輯122會 控制階層置換多工器106選擇階層B 126B,且位移1個階 層,這個動作是對應圖3的步驟314。 圖4D是說明狀況4,目前格式化指令是一個分支 (branch)指令,並沒有涵蓋橫跨兩個指令緩衝器112階 層,且亦沒有佔據階層的最後一個位元組,2-位元組的JCC 指令是位於階層A 126A的位元組7〜8,而4-位元組的SUB 指令是分支指令的目標指令,位於階層B 126B的位元組 1卜14。現行指標158之値爲7,指向JCC指令的第一位元 組,且由指令格式化邏輯114在圖3的步驟302中所產生 (請先閱讀背面之注意事項再填寫本頁) -----I--訂----- 經齊邹智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)Al規格(210x297公釐) 530205 8415twf. doc/006 ----B7______ 五、發明說明(多}) (請先閱讀背面之注意事項再填寫本頁) 的指令長度172爲2,另外,由於階層A 126A的位元組7 包含JCC指令的第一位元組,且此分支指令是目前BTAC 116分支的指令,是以,BTAC分支指標193的位元7在圖 3的步驟304所輸出的値爲真(true),而在步驟324輸出 的目標位址138是11,用以指向目標指令。 在圖3的步驟304中,由加法器182產生之次一指標 198之値爲9,然而,由於BTAC分支指標193之値爲真, 是以多工器128會選擇値爲11的目標位址138。而加法器 182產生之進位訊號196之値爲僞,且由及閘176產生之涵 盡訊號19 4亦爲僞値。另外’雖然目前格式化指令是一個 沒有涵蓋橫跨兩個指令緩衝器112階層的分支指令,但下 一個被指令格式化邏輯114格式化的指令,即目標指令, 卻會開始於目前被格式化指令的上一層階層。接著,控制 邏輯122會控制階層置換多工器1〇6選擇階層b 126B,且 位移1個階層,這個動作是對應圖3的步驟318。 涇齊茚智i財i咼員X.消費合泎fl印製 圖4E是說明狀況5,即目前格式化指令是一個分支指 令,並沒有涵蓋橫跨兩個指令緩衝器Π2階層,但卻佔據 階層的最後一個位元組。其中,2-位元組的JCC指令是位 於階層A 126A的位元組14〜15,而4-位元組的SUB指令 是分支指令的目標指令,位於階層B 126B的位元組 11〜14。現行指標158之値爲14,指向JCC指令的第一位 兀組,且由指令格式化邏輯114在步驟302中所產生的指 令長度172爲2,另外,由於階層a 126A的位元組14包 含JCC指令的第一位元組,且此分支指令是目前BTAC 116 37 本紙張尺度適F中國國家標準(CNSM4規格mo X 297公釐了---- 530205 8415twf. doc/ 0 0 6 A7 1-------B7__ 五、發明說明(%) 分支的指令,是以,BTAC分支指標193的位元14在步驟 3〇4所輸出的値爲真(true),而在步驟324輸出的目標位 址138是11,用以指向目標指令。 在圖3的步驟304中,由加法器182產生之次一指標 198之値爲〇,然而,由於BTAC分支指標193之値爲真, 是以多工器128會選擇値爲11的目標位址138。而加法器 182產生之進位訊號196之値爲真,但由及閘176產生之涵 蓋訊號194是爲僞値。另外,雖然目前格式化指令是一個 '沒有涵蓋橫跨兩個指令緩衝器112階層的分支指令,但下 一個被指令格式化邏輯114格式化的指令,即目標指令, 卻會開始於目前被格式化指令的上一層階層。接著,控制 邏輯122會控制階層置換多工器106選擇階層B 126B,且 位移1個階層,這個動作是對應圖3的步驟318。 圖4F即是說明狀況6,目前格式化指令是一個分支指 令,且涵蓋橫跨兩個指令緩衝器112階層。其中,2-位元 組的JCC指令的前一個位元組是位於階層A 126A的位元組 15,而2-位元組的JCC指令的第二位元組是位於階層B 126B的位元組〇,另,4-位元組的SUB指令是此分支指令 的目標指令,位於階層C 126C的位元組11〜14。現行指標 158之値爲15,指向JCC指令的第一位元組,且由指令格 式化邏輯114在圖3的步驟302中所產生的指令長度172 爲2,另外,由於階層A 126A的位元組15包含JCC指令 的第一位元組,且此分支指令是目前BTAC 116分支的指 令,是以,BTAC分支指標193的位元15在步驟304所輸 (請先閱讀背面之注意事項再填寫本頁) ▼•裝--------訂----I I I I —^w.. 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A丨規格(21ϋχ297公釐) 530205 8415twf.doc/006 Λ7 P)7 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 五、發明說明爻) 出的値爲真(true),而在步驟324輸出的目標位址138是 Π,用以指向目標指令。 在圖3的步驟304中,由加法器182產生之次一指標 198之値爲1,然而,由於BTAC分支指標193之値爲真, 是以多工器128會選擇値爲11的目標位址138。而加法器 182產生之進位訊號196之値爲真,且由及閘176產生之涵 蓋訊號194亦爲真。因爲目前格式化指令是一個涵蓋橫跨 兩個指令緩衝器112階層的分支指令,是以下一個被指令 格式化邏輯114格式化的指令,即目標指令,會開始於目 前格式化指令的上兩層階層。接著,控制邏輯122會控制 階層置換多工器106選擇階層C 126C,且位移2個階層, 這個動作是對應圖3的步驟322。 雖然本發明已以較佳實施例揭露如上,然其並非用以 限定本發明,舉例來說,指令緩衝器的寬度及儲存空間是 可變換的,也就是說,本發明可以使用較大寬度及儲存空 間的指令緩衝器進行操作。 是以任何熟習此技藝者,在不脫離本發明之精神和範 圍內,當可作各種之更動與潤飾,因此本發明之保護範圍 當視後附之申請專利範圍所界定者爲準。 39 本紙張尺度適用中國國家標準(CNS)A 1規格(210 X 297公爱) -----^-------裝--------訂----I I I I (請先閱讀背面之注意事項再填寫本頁)

Claims (1)

  1. 530205 經濟部智慧財產局員工消費合作社印製 A8 B8 8415twf.doc/006 C8 D8 六、申請專利範圍 1. 一種微處理器,包括: 一指令緩衝器,包括複數個階層,用以暫存自一指令 快取區接收之指令位元組; 一分支指標,係關連每一該些階層,用以儲存一指標, 該指標係用以檢測該微處理器是否有分支到暫存於關聯之 該階層中之一分支指令的一目標位址;以及 一多工器,耦接該指令緩衝器,係依據與該些階層其 中之一相關聯之該分支指標,選擇該些階層其中之一。 2. 如申請專利範圍第1項所述之微處理器,其中該多工 器提供所選取之該階層至一指令格式化邏輯。 3. 如申請專利範圍第2項所述之微處理器,其中該指令 緩衝器包括該些階層之一底層階層。 4. 如申請專利範圍第3項所述之微處理器,其中該指令 格式化邏輯係判斷在該底層階層中之一指令的長度。 5. 如申請專利範圍第4項所述之微處理器,其中該多工 器係依據與該底層階層相關之該分支指標,選取階層其中 之一。 6. 如申請專利範圍第5項所述之微處理器,更包括: 一涵蓋指標,耦接該多工器,依據該指令長度,顯示 該指令是否有涵蓋超過該底層階層。 7. 如申請專利範圍第6項所述之微處理器,其中如果該 分支指標指出該微處理器發生分支,則該多工器會依據該 涵蓋指標是否指示該分支指令涵蓋超過該底層階層,以選 取階層其中之一。 (請先閱讀背面之注意事項再填寫本頁) - I I I 訂---- Φ 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 530205 A8 B8 8415twf.doc/ 0 0 6_^ 六、申請專利範圍 (請先閱讀背面之注意事項再填寫本頁) 8. 如申請專利範圍第7項所述之微處理器,其中如果該 分支指標指出該微處理器有發生分支,且該涵蓋指標亦指 出該分支指令係涵蓋超過該底層階層,則該多工器會選取 該底層階層上兩層階層的其中之一。 9. 如申請專利範圍第8項所述之微處理器,其中該指令 緩衝器會位移兩個階層。 10. 如申請專利範圍第8項所述之微處理器,其中如果 該分支指標指出該微處理器有發生分支,且該涵蓋指標指 出該分支指令並未涵蓋超過該底層階層,則該多工器會選 取該底層階層上層階層其中之一。 11. 如申請專利範圍第10項所述之微處理器,其中指令 緩衝器會位移其中一個該階層。 12. 如申請專利範圍第10項所述之微處理器,更包括: 一進位指標,耦接該多工器,依據該指令長度,顯示 該指令之一位元組是否佔據該底層階層的一最後位元組。 經濟部智慧財產局員工消費合作社印製 13. 如申請專利範圍第12項所述之微處理器,其中如果 該分支指標指出該微處理器並無發生分支,則該多工器會 依據該進位指標是否指出該指令佔據該底層階層之該最後 位元組,來選取階層其中之一。 14. 如申請專利範圍第13項所述之微處理器,其中如果 該分支指標指出該微處理器並無發生分支,且該進位指標 指出該指令係佔據該底層階層之該最後位元組,則該多工 器會選取該底層階層上層的其中之一階層。 15. 如申請專利範圍第14項所述之微處理器,其中該指 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 530205 A8 B8 B415twf.doc/〇〇6_^_ 六、申請專利範圍 令緩衝器會位移該些階層之其中之一。 (請先閱讀背面之注意事項再填寫本頁) 16. 如申請專利範圍第14項所述之微處理器,其中如果 該分支指標指出該微處理器並無發生分支,且該進位指標 亦指出該指令並未佔據該底層階層之該最後位元組’則該 多工器會選取該底層階層。 17. 如申請專利範圍第16項所述之微處理器’其中該指 令緩衝器不位移任何階層。 18. 如申請專利範圍第1項所述之微處理器,更包括: 一分支目標位址快取區,耦接以接收該指令快取區之 一擷取位址,用以提供該分支指令之該目標位址至該指令 快取區,以作爲一次一擷取位址。 19. 如申請專利範圍第18項所述之微處理器,其中該分 支目標位址快取區會提供該指令快取擷取位址是否命中於 該分支目標位址快取區之一指令。 20. 如申請專利範圍第19項所述之微處理器,更包括: 一控制邏輯,耦接該多工器,依據該指令快取擷取位 址是否命中該分支目標位址快取區之該指示,以殖入該分 支指標。 經濟部智慧財產局員工消費合作社印製 21·—種預先解碼階層,係適用於一微處理器,該預先 解碼階層包括: 一指令緩衝器,包括至少階層A、B及C,用以暫存指 令位元組; 一多工器,耦接該指令緩衝器,用以選取該些階層A、 B及C之其中之一,以提供至一指令格式化邏輯; 42 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 530205 A8 B8 8415twf.doc/006 C8 六、申請專利範圍 一分支指標,耦接該多工器,用以依據呈現於該階層A 之一分支指令,指示該微處理器是否發生分支;以及 一涵蓋指標,耦接該多工器,用以指示被該指令格式 化邏輯格式化之一指令,是否涵蓋橫跨該些階層A及B ; 其中該多工器會依據該分支指標及該涵蓋指標’選取 該些階層A、B及C其中之一,以提供至該指令格式化邏 輯。 22. 如申請專利範圍第21項所述之預先解碼階層,更包 括一加法器,耦接該多工器,該加法器包括: 一第一輸入端,用以接收一指標,該指標係指向該階 層A中的該指令的一位置; 一第二輸入端,係自該指令格式化邏輯接收該指令之 一長度; 一第一輸出端,用以指示該第一及該第二接收該指標 及該長度之一和;以及 一第二輸出端,用以指出該和之一進位。 23. 如申請專利範圍第22項所述之預先解碼階層’其中 該涵蓋指標只在該進位爲真値及該和不等於〇的情況下’顯 不出真値。 24. 如申請專利範圍第23項所述之預先解碼階層’其中 該多工器在該分支指標指示爲真及該涵蓋指標指示爲真的 情況下,會選取該階層C。 25. 如申請專利範圍第24項所述之預先解碼階層,其中 該指令緩衝器會在該多工器選取階層C後,位移該階層A及 本紙張尺度適用中國國家標準(CNS)A4規格(2〗〇 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) ,· I 1 I 1 I I 丨 ^ 1111111 鲁· ίι齊邹智g讨轰咼員X.消費合阼杜印製 530205 8415twf.doc/006 A8 B8 C8 D8 痤齊郎智i材查咼員I.消費合作钍印製 六、申請專利範圍 B。 26. 如申請專利範圍第23項所述之預先解碼階層,其中 該多工器會在該分支指標指示爲真及該涵蓋指標指示爲僞 . 的情況下,選取該階層B。 27. 如申請專利範圍第26項所述之預先解碼階層,其中 該指令緩衝器在該多工器選取該階層B後,位移該階層A。 28. 如申請專利範圍第23項所述之預先解碼階層,其中 該多工器在該分支指標指示爲僞及該第二輸出端指示爲真 的情況下,選取該階層B。 29. 如申請專利範圍第28項所述之預先解碼階層,其中 該指令緩衝器在該多工器選取該階層B後,即位移該階層 A。 30. 如申請專利範圍第23項所述之預先解碼階層,其中 該多工器在該分支指標指示爲僞及該第二輸出端指示爲僞 的情況下,選取該階層A。 31. 如申請專利範圍第30項所述之預先解碼階層,其中 該指令緩衝器在該多工器選取該階層A後,不會位移該些階 層A、B及C的任一階層。 32. 如申請專利範圍第21項所述之預先解碼階層,其中 該多工器亦將被選取之該些階層A、B及C其中之一提供至 該指令格式化邏輯,而被選取之其中之一該些階層A、B及 C會具有上層該些階層A、B及C其中之一的一映像部分。 33. 如申請專利範圍第32項所述之預先解碼階層,其中 該指令包括一可變長度指令。 --------------- (請先閱讀背面之注意事項再填寫本頁) 訂--------- 參· 本紙張尺度適用中國國家標準(CNS)A4規格(210x297公f ) 經濟邹智慧財產局員X消費合作钍印製 530205 A8 DO 8415twf.doc/006 C8 __ D8 六、申請專利範圍 34·如申請專利範圍第33項所述之預先解碼階層,其中 該可變長度指令包括一 x86指令。 35·如申請專利範圍第34項所述之預先解碼階層,其中 該映像部分包括至少10指令位元組。 36.—種分支控制裝置,係適用於一微處理器,包括: 一指令緩衝器,包括一第一、一第二及一第三階層, 用以暫存自一指令快取區接收之一第一、一第二及一第三 快取線,該第一及該第二快取線分別包括部分之一分支指 令’該第三快取線包括該分支指令之一目標指令; —分支目標位址快取區(BTAC),耦接該指令緩衝器, 用以輸出一指示,指示已藉由該分支目標位址快取區提供 $該分支指令的一目標位址,從該指令快取區中選取該第 二快取線;以及 〜多工器,耦接於該指令緩衝器及一指令格式化邏輯 之間,係自該第一、該第二及該第三階層選取其中之一, &胃供至該指令格式化邏輯; 其中該多工器選取該第一階層後選取該第三階層,係 $據該分支目標位址快取區輸出之該指示及該指令格式化 所判斷該分支指令之一長度而來。 37·如申請專利範圍第36項所述之分支控制裝置,更包 栝: 〜指標至該第一階層,用以確認該分支指令之一起始 位址。 38·如申請專利範圍第37項所述之分支控制裝置,更包 ^ 中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) --------訂· —---1 11 « · 唾齊郎智i財查苟員X消費合ftTi印製 530205 A8 B8 8415twf.d〇c/006 uo /、、申清專利範圍 括: 一加法器,用以產生該分支指令之該指標及該長度之 一和; 其中該和係指出包含部分該分支指令之該第一及該第 二快取線。 39. 如申請專利範圍第38項所述之分支控制裝置,其中 該多工器所選取之該第三快取線,係依據該分支指令之該 指標及該長度之該和,以及該分支目標位址快取區輸出之 該指示。 40. 如申請專利範圍第38項所述之分支控制裝置,更包 括: 一第二多工器,耦接該指標,用以選取該和及該目標 位址,其中之一,以作爲一次一指標。 41. 一種暫存指令位元組以提供至指令格式化邏輯之方 法,係適用於一微處理器,該暫存指令位元組以提供至指 令格式化邏輯之方法包括: 一儲存指示步驟,其中儲存之該指示,係關於該微處 理器是否分支連結至相對應之一第一快取線,其中該第一 快取線是儲存於一指令緩衝器中; 一產生第一指令長度步驟,係產生一第一指令之一長 度,其中該第一指令係位於儲存該指令緩衝器之該第一快 取線中; 一判斷步驟,係依據該第一指令之該長度,判斷該第 〜指令是否涵蓋超過該第一快取線·,以及 46 (請先閱讀背面之注意事項再填寫本頁) .裝 1T---------. 本紙 國家標準(CNS)A4^見格(210 X 297公餐"7 530205 A8 B8 C8 D8 六、申請專利範圍 一選取步驟,係依據該指示及該判斷步驟’選取儲存 於該指令緩衝器之一第二快取線以格式化一第二指令。 4 2.如申請專利範圍第41項所述之暫存指令位元組以提 供至指令格式化邏輯之方法,其中如果該指示指出該微處 理器有發生分支且該第一指令係涵蓋超過該第一快取線’ 則該第二快取線是位於該第一快取線上之兩個該快取線° 43. 如申請專利範圍第42項所述之暫存指令位元組以提 供至指令格式化邏輯之方法’更包括:在該選取步驟後’ 自該指令緩衝器中位移該第一快取線及該第一快取線上之 一該快取線。 44. 如申請專利範圍第41項所述之暫存指令位元組以提 供至指令格式化邏輯之方法,其中如果該指示指出該微處 理器有發生分支且該第一指令並未涵蓋超過該第一快取 線,則該第二快取線是位於該第一快取線上之一個該快取 線。 45. 如申請專利範圍第44項所述之暫存指令位元組以提 供至指令格式化邏輯之方法,更包括··在該選取步驟後, 自該指令緩衝器中位移該第一快取線。 46. 如申請專利範圍第41項所述之暫存指令位元組以提 供至指令格式化邏輯之方法’更包括:判斷在該第一指令 中之一位元組是否佔據該指令緩衝器中之該第一快取線之 一最後位元組位置。 47. 如申請專利範圍第46項所述之暫存指令位元組以提 供至指令格式化邏輯之方法,其中如果該指示指出該微處 ^紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) -------------- (請先閱讀背面之注意事項再填寫本頁) 訂- ABCD 530205 8415twf.doc/006 六、申請專利範圍 理器尙未發生分支且該第一指令之該位元組佔據該第一快 取線之該最後位元組位置,則該第二快取線是位於該第一 快取線上之一個該快取線。 48. 如申請專利範圍第47項所述之暫存指令位元組以提 供至指令格式化邏輯之方法,更包括··在該選取步驟後’ 自該指令緩衝器中位移該第一快取線。 49. 如申請專利範圍第46項所述之暫存指令位元組以提 供至指令格式化邏輯之方法,其中如果該指示指出該微處 理器尙未發生分支且該第一指令之該位元組並未佔據該第 一快取線之該最後位元組位置,則該第二快取線是該第一 快取線。 50. 如申請專利範圍第49項所述之暫存指令位元組以提 供至指令格式化邏輯之方法’更包括:在該選取步驟後’ 不自該指令緩衝器中位移任一該第一快取線。 (請先閱讀背面之注音?事項再填寫本頁) 裝 涇齊^i曰i讨轰笱員!-消費合阼fi印製 本紙張尺度適用中國國家標準(CNS)A4規格(2川X 297公釐)
TW090127267A 2001-07-03 2001-11-02 Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap TW530205B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/898,832 US6823444B1 (en) 2001-07-03 2001-07-03 Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap

Publications (1)

Publication Number Publication Date
TW530205B true TW530205B (en) 2003-05-01

Family

ID=25410095

Family Applications (1)

Application Number Title Priority Date Filing Date
TW090127267A TW530205B (en) 2001-07-03 2001-11-02 Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap

Country Status (3)

Country Link
US (2) US6823444B1 (zh)
CN (1) CN1279442C (zh)
TW (1) TW530205B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
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
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
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
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7203824B2 (en) * 2001-07-03 2007-04-10 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
US7234045B2 (en) * 2001-07-03 2007-06-19 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
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
TWI242744B (en) * 2003-01-14 2005-11-01 Ip First Llc Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
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
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
TWI232403B (en) * 2003-04-23 2005-05-11 Ip First Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
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
US8719837B2 (en) 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
US20060200655A1 (en) * 2005-03-04 2006-09-07 Smith Rodney W Forward looking branch target address caching
US7461307B2 (en) * 2005-05-06 2008-12-02 Lsi Corporation System and method for improving transition delay fault coverage in delay fault tests through use of an enhanced scan flip-flop
US8212823B2 (en) 2005-09-28 2012-07-03 Synopsys, Inc. Systems and methods for accelerating sub-pixel interpolation in video processing applications
US20080243047A1 (en) * 2007-03-27 2008-10-02 Babaev Eilaz P Ultrasound wound care device
US7840786B2 (en) * 2007-04-16 2010-11-23 Advanced Micro Devices, Inc. Techniques for storing instructions and related information in a memory hierarchy
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
US9317293B2 (en) 2012-11-28 2016-04-19 Qualcomm Incorporated Establishing a branch target instruction cache (BTIC) entry for subroutine returns to reduce execution pipeline bubbles, and related systems, methods, and computer-readable media
CN103235715B (zh) * 2013-03-27 2016-08-03 青岛中星微电子有限公司 一种片上系统SoC命令处理的方法、装置及芯片
CN107026711A (zh) * 2016-12-23 2017-08-08 阿里巴巴集团控股有限公司 Base64解码方法及装置

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CA2124333A1 (en) 1992-02-27 1993-09-02 John A. Saba 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
SG52391A1 (en) 1994-01-03 1998-09-28 Intel Corp Method and apparatus for implementing a four stage branch resolution system in a computer processor
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
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
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
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
US7134005B2 (en) 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US6895498B2 (en) 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
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
US20020194461A1 (en) 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6886093B2 (en) 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7200740B2 (en) 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7203824B2 (en) 2001-07-03 2007-04-10 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
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
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
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
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

Also Published As

Publication number Publication date
US7159098B2 (en) 2007-01-02
CN1279442C (zh) 2006-10-11
CN1376977A (zh) 2002-10-30
US6823444B1 (en) 2004-11-23
US20050044343A1 (en) 2005-02-24

Similar Documents

Publication Publication Date Title
TW530205B (en) Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
TW526451B (en) 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
JP3423310B2 (ja) 仮想アドレス能力が保持され、パイプライン命令ユニットと実効アドレス計算ユニットとを有するcpu
JP3798404B2 (ja) 2レベルの分岐予測キャッシュによる分岐予測
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US6253287B1 (en) Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions
US5878245A (en) High performance load/store functional unit and data cache
US6106573A (en) Apparatus and method for tracing microprocessor instructions
US5680564A (en) Pipelined processor with two tier prefetch buffer structure and method with bypass
US5822575A (en) Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US6360317B1 (en) Predecoding multiple instructions as one combined instruction and detecting branch to one of the instructions
US20070130448A1 (en) Stack tracker
US6018798A (en) Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6542986B1 (en) Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
US6202142B1 (en) Microcode scan unit for scanning microcode instructions using predecode data
US6460132B1 (en) Massively parallel instruction predecoding
US6212621B1 (en) Method and system using tagged instructions to allow out-of-program-order instruction decoding
US5987235A (en) Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions
JP3794918B2 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
US6934903B1 (en) Using microcode to correct ECC errors in a processor
US5946468A (en) Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) Branch misprediction recovery in a reorder buffer having a future file
US6205541B1 (en) System and method using selection logic units to define stack orders
US6363474B1 (en) Process switching register replication in a data processing system
US6625726B1 (en) Method and apparatus for fault handling in computer systems

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent
MK4A Expiration of patent term of an invention patent