TW526451B - 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 - Google Patents
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 Download PDFInfo
- Publication number
- TW526451B TW526451B TW090127266A TW90127266A TW526451B TW 526451 B TW526451 B TW 526451B TW 090127266 A TW090127266 A TW 090127266A TW 90127266 A TW90127266 A TW 90127266A TW 526451 B TW526451 B TW 526451B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- branch
- byte
- microprocessor
- buffer
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 188
- 238000000034 method Methods 0.000 title claims description 24
- 238000012856 packing Methods 0.000 title description 2
- 230000002079 cooperative effect Effects 0.000 claims description 21
- 230000000875 corresponding effect Effects 0.000 claims description 11
- 238000009434 installation Methods 0.000 claims description 5
- 230000002596 correlated effect Effects 0.000 claims 2
- 238000005336 cracking Methods 0.000 claims 1
- 230000008901 benefit Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 235000012054 meals Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 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 or 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
經濟部智慧財產局員工消費合作社印奴 526451 84l4twf.doc/006
Us 五、發明說明(f ) 關於申請案之相關資料 本申請案是關於下述具有共同申請日與共同申請人的 美國專利申請案,這些申請案在此會倂入本申請案的參考 標的」___ 文件編號 序號 名稱 CNTR : 2024 建基於分支目標位 址快取區命中與指 令階段涵蓋之選擇 性存取不同指令緩 衝階段之裝置及方 法 CNTR : 2051 處理涵蓋跨越指令 快取線之分支目標 位址快取區之分支 的裝置及方法 本發明是有關於一種位於使用管線化(pipelined)微處 理器中之分支目標位址快取區,且特別是有關於一種當因 分支目標位址快取區之命中引起微處理器分支時,提供正 確指令流給指令緩衝區之方法及裝置。 發明背景 管線化微處理器包括多個管線化階層,每個階層完成 在程式指令執行裡所必要之不同功能。典型的管線化階層 功能爲指令擷取、指令解碼、指令執行、記憶體存取以及 本纸張尺度適用中國國家標準(CNS)A.l規格OMO X 297公餐) -------------------訂·——— (請先閱讀背面之注意事項再填寫本頁) 526451 五、發明說明(2〇 結果寫回。 指令擷取階層擷取在目前執行之方程式裡之下一個指 令。此下一個指令通常爲具有下一個連續之記憶體位址之 指令。然而,在一個分支指令產生的情況下,此下一個指 令爲在由此分支指令所特定的記憶體位址上的指令,此記 憶體位址通常被稱爲分支目標位址。此指令擷取階層從指 令快取區擷取指令。如果這些指令不被此指令快取區所提 供,它們會被從機器之記憶體階層中較高的記憶體,如較 高階之快取記憶體或系統記憶體,擷取至指令快取區中。 此被擷取之指令被提供至指令解碼階層。 此指令解碼階層包括指令解碼邏輯,而此指令解碼邏 輯爲用以對從指令擷取階層接收之指令位元組解碼。在支 援多變長度指令之微處理器,如X86架構之微處理器,的 情況下,指令解碼階層的一個功能就是將指令位元組串流 格式化成分離之指令。格式化指令位元組串流包括決定每 個指令之長度。也就是,指令格式化邏輯接收來自於指令 快取區之無差別之指令位元組串流,並將此指令位元組串 流格式化或剖析成分離的位元組群群組。每組位元組群是 一個指令,而這些指令組群組成處理器所執行之程式。指 令解碼階層亦包括轉換巨集指令(macro-instniction),如 X86指令,爲剩餘管線所能執行之微指令。 此執行階層包括執行邏輯以執行接收於指令解碼階 層之被格式化且被解碼之指令群。此執行邏輯根據擷取於 處理器以及/或記憶體中之一個暫存器組中之資料以進行操 本紙張尺度適用中國國家標準(CNS)A·丨規格(210x297公釐) ------------____ (請先閱讀背面之注意事項再填寫本頁) — — — — — — — — — %- 經齊部智慧財產局員工消費合作社印製 526451 Λ7 84l4twf.doc/006 五、發明說明(>) 作。寫回階層將執行邏輯所產生之結果儲存至處理器暫存 器組中。 在管線化處理器之操作中,重要的一點是維持處理器 每個階層都能忙碌於當初所設計執行之操作上。尤其是當 指令解碼階層準備解碼下一個指令,而指令擷取階層卻不 能提供指令位元組群時,處理器之運作將會受到影響。爲 了預防指令解碼階層空乏,指令緩衝區一般會放置在指令 快取區與指令格式化邏輯之間。且指令擷取階層會試著維 持由位元組所組成的幾個指令以提供給指令解碼階層解 碼,而不至於空乏。 通常來說,指令快取區在一時間內會提供一條快取線 的指令位元組群,通常爲16個或32個位元組群。指令擷 取階層擷取指令快取區中之指令位元組群中之一條或多條 快取線且儲存這些快取線至指令緩衝區中。當指令解碼階 層準備要解碼一個指令時,此指令解碼階層會存取在指令 緩衝區中之指令位元組,而不是在指令快取區中等待。 指令快取區提供指令位元組群中的一條快取線,且藉 由指令擷取層將一個擷取位址提供給指令快取區以選擇此 快取線。在正常操作期間,既然程式指令群被連續地執行 是可以預期的,因此擷取位址便根據一條快取線的容量而 單純地被增加。被增加後的擷取位址被當作爲下一個連續 擷取位址。然而,當分支指令被指令解碼邏輯解碼而被取 得(或是之前被取得)時,此擷取位址被更新爲分支指令 之目標位址(按此快取區線尺寸),而不是被更新爲下一 本紙張尺度適用中國國家標準(CI\’S)A1規格(21() X 297么、Μ ) (請先閱讀背面之注意事項再填寫本頁) 裝- ------訂--I--- 526451
五、發明說明(+ ) 經濟部智慧財產局員工消費合作社印製 個連續的擷取位址。 然而’隨著此擷取位址被更新爲分支目標位址之時 間’此位址緩衝區有可能被植入在分支指令之後之接下來 之連續指令群中之指令位元組群。因爲一個分支已經發 生’分支指令之後之指令群必須不被解碼且必須不被執 行°也就是,適當程式之執行會要求執行在分支目標位址 上之指令群,而不是在分支指令後之接下來之連續指令 群。程式中,可以預見連續指令串流較常見的情況爲··指 令緩衝區中之指令位元組群被錯誤地預先擷取。爲了補救 此錯誤,處理器必需在淸除分支指令後之所有指令位元組 群’這些指令位元組群包括在指令緩衝區中之指令位元組 群。 既然現在此指令解碼階層在指令緩衝區由指令快取區 再被植入之前爲空乏狀況,因此根據分支指令而淸除指令 緩衝區勢必付出很大的代價。此問題之一個解決方法爲, 在解碼分支指令之前先作分支。此方法可藉由使用一個分 支目標位址快取區(branch target address cash,以下簡稱 BTAC),快取包括預先被執行之分支指令群之指令快取線 的擷取位址以及與其相關之目標位址群來實現。 指令快取擷取位址被應用在BTAC上時,實質上相似 於擷取位址對於指令快取區的應用。在包含分支指令之快 取線之指令快取擷取位址的情況中,此快取取線被提供給 指令緩衝區。除此之外,如果在擷取位址命中於BTAC,此 BTAC會提供一個相關之分支目標位址。如果此分支指令命 8 (請先閱讀背面之注意事項再填寫本頁) _裝---------訂--------- 本紙張尺度適用_國國家標準(CNS)Al規格(:」Ιϋχ^97公釐) 經齊部智慧財產局員工消費合作社印製 526451 ^4l4twf.doc/006 1 ^ _ __Π/ 五、發明說明(5 ) 中於BTAC爲預期發生時,指令快取擷取位址會被更新爲 由BTAC所提供之目標位址。 因此指令快取區在一時間內會提供指令群中之一條快 取線給指令緩衝區,快取線中應存在有在分支指令之後之 指令位元組群。此在分支指令之後之指令位元組不應被執 行。更確切的說,在指令緩衝區中且在分支指令之後之指 令位元組群應該從指令位元組串流被提供至指令解碼階層 ,中被捨棄。然而,既然仍有被忽略且尙未解碼之指令存於 指令緩衝區中,因此指令緩衝區不會一次全被淸除(如上 述,在沒有BTAC的處理器中會被淸除掉)。特別是此分 支指令本身(以及任何其他在快取線中且在分支指令之前 之指令位元組群)必須被解碼以及執行。 然而,當分支指令仍存於指令緩衝區中且尙未格式化 時,指令緩衝區中隨著分支指令之後之指令群位址並不會 被知道。這是由於分支指令在格式化之前,其位於快取線 中之長度以及位置並不被知道,隨之發生地,位於指令緩 衝區中之分支指令之位置亦並不被知道。據此,隨著分支 指令之後之指令之位址也不會被知道。 最後,可變指令長度之處理器中之指令解碼階層包括 幾個部分以格式化相關之部分指令群。舉例來說,格式化 邏輯的一部份用以格式化指令之操作碼位元組,通常爲第 一個位元組,而格式化邏輯的其他部分則用以格式化指令 之其他部分。指令位元組串流之正確部分必須提供給指令 格式化邏輯之正確部分。 (請先閱讀背面之注意事項再填寫本頁) 裝--------訂--- 本紙張尺度適用中國國家標準(CNS)A.l規格(」川X的7公釐) 經齊邹智慧財產咼員X.消費合作社印製 526451 五、發明說明(G ) 通常來說,設計管線化之處理器中之指令格式化邏輯 能具有在處理器週期時間內執行指令格式化功能是一件困 難的工作。此優點在於盡可能提供足夠之週期時間以格式 化指令位元組,而不是花一部份時間在控制指令位元組至 格式化邏輯之適當部分。且此優點在於採用一個直接耦接 至指令解碼階層內之指令格式化邏輯之指令緩衝區。也就 是,此優點爲排除邏輯被要求去操縱從指令緩衝區至指令 格式化邏輯適當部分之指令位元組。 故,管線化處理器中所需要的是,具有藉由使用以指 令快取擷取位址群爲基礎之BTAC,使得指令緩衝區直接被 耦接於處理器中之指令格式化邏輯之能力之一個分支控制 裝置,以增加可利用於指令格式化時之處理器週期時間。 發明槪述 有鑑於此,本發明提供一種具有藉由相關連之一個指 令快取擷取位址群之BTAC之使用,使得指令緩衝區直接 被耦接於處理器中之指令格式化邏輯之能力之管線化處理 器中之分支控制裝置。因此,爲了達到上述目的,本發明 之特徵在於提供位於微處理器中之分支控制裝置。此裝置 包括:指令快取區、指令緩衝區、分支目標位址快取區以 及選擇邏輯。其中,指令快取區用以輸出由一個擷取位址 所選擇之指令位元組群中之一條線。指令緩衝區耦接指令 快取區且用以緩衝指令位元組群中之此線。分支目標位址 快取區(BTAC)耦接擷取位址群且用以提供有關於指令位 元組中之此線中之分支指令之一個位置之補償資訊。選擇 (請先閱讀背面之注意事項再填寫本頁) · 11 «IV ϋ n I— n 1 旬------ 本紙張尺度適用中國國家標準(CNS)Al規格00x^97公釐) 經濟部智慧財產局員工消費合作社印製. 526451 8414twf.doc/006 五、發明說明(η ) 邏輯耦接分支目標位址快取區且用以根據補償資訊使得部 份之指令位元組群以不被提供至指令緩衝區。 在其他方面,本發明之特徵在於提供一種位於微處理 器中之預先解碼階層。此預先解碼階層包括:指令緩衝區 、選擇邏輯以及分支目標位址快取區。其中,指令緩衝區 用以緩衝指令資料以提供給指令格式化邏輯。選擇邏輯耦 接指令緩衝區且用以接收來自於指令快取區且藉由擷取位 址所選擇之第一指令資料,其中第一指令資料包括分支指 令。分支目標位址快取區(BTAC)耦接選擇邏輯且用以提供 分支指令之目標位址作爲下一個擷取位址給指令快取區。 此外,選擇邏輯被配置爲接收藉由來自於指令快取區且藉 由目摞位址所選擇之第二指令資料,且第二指令資料包括 分支指令之一目標指令。而選擇邏輯被配置爲將分支指令 以及目標指令以相互緊鄰的方式寫入指令緩衝區中。 在另一其他方面,本發明之特徵更在於提供一種提供 分支指令與分支指令之目摞指令至指令緩衝區之方法,此 方法包括接收來自於指令快取區之包括分支指令之第一快 取線,以及接收來自於分支目標位址快取區(BTAC)之第一 快取線中之緊隨於分支指令之後之指令位元組群之偏移資 訊。此方法也包括接收來自於指令快取區之包括目標指令 之第二快取線。且此第二快取線爲藉由分支目標位址快取 區所提供之分支指令之目標位址所選擇。本方法也包括捨 棄在第一快取線中之分支指令之後之指令,以及捨棄第一 快取線中目標指令之前之指令。且維持在每個捨棄步驟後 本紙張尺度適用中國國家標準(CNS)Al規格(210 x 297公釐) ------------裝--------訂---------- (請先閱讀背面之注意事項再填寫本頁) 526451 B7 ^4l4twf.doc/006 五、發明說明(g ) 提供一部分之第一以及第二快取線給指令緩衝區。 (請先閱讀背面之注意事項再填寫本頁) 綜合上述,本發明具有藉由相關連之一個預先指令緩 衝之使用,使用一個位元組寬度的指令緩衝區可以直接耦 接於指令格式化邏輯。換句話說,在指令緩衝區與指令格 式化邏輯之間不需要任何多工器來選取正確指令位元組給 正確格式化部分。雖然位元組寬度之指令緩衝區通常會小 於非位元組寬度之指令緩衝區,指令緩衝區與指令格式化 邏輯間之直接耦合使得指令格式化邏輯在本質上減少了限 制格式化邏輯之時脈。此時脈限制爲藉由覆蓋掉格式化指 令時而增加之處理器時脈週期時間所減少,而不是耗費時 間去控制指令位元組群由指令緩衝區至指令格式化邏輯之 適當部分。此直接之耦合是可能的,其原因在於本發明僅 將有效位元組放入指令緩衝區內。本發明將因分支指令而 被視爲無效之指令位元組群,在其被提供至指令緩衝區 前,將其捨棄。 爲讓本發明之上述和其他目的、特徵、和優點能更明 顯易懂,下文特舉較佳實施例,並配合所附圖式,作詳細 說明如下: 痤齊郎智慧財查咼員工消費合作社印製 圖式之簡單說明: 第1圖繪示的是根據本發明較佳實施例中之包括一個 分支控制裝置之管線化處理器之部分方塊圖; 第2圖繪示的是根據第1圖之指令緩衝區對指令格式 化邏輯之耦合; 第3圖繪示的是根據第1圖中之多工邏輯之方塊圖; 本紙張尺度適用中國國家標準(CNS)A-l規格297公釐) 526451 五、發明說明(C| ) 第4圖繪示的是根據第1圖中之分支控制裝置之操作 流程說明圖;以及 第5圖繪示的是根據第1圖中之分支控制器之方塊 圖。 標號說明 100 :微處理器 - 102 :指令快取區 142,144,148,166 :資料匯流排 152,162 :擷取位址 116 :分支目標位址快取區 BEG 値:138 命中信號:134 SBI : 136 118 :多工器 156,168,172,174 ··控制信號 122 :控制邏輯 124 :加法器 142 :快取線 106 :有效位元 10 8 :多工邏輯 104,104A,104B :位元組選擇暫存器 112,112A,112B,112C :指令緩衝區 114 :指令格式化邏輯 302 :罩覆多工器 (請先閱讀背面之注意事項再填寫本頁) ,裝--------訂---- %. 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A~1規格(210x297公釐) 經齊郎智慧犲轰局員工消費合作社印製 526451 五、發明說明(/p) 304 :排整多工器 306 :維持/載入多工器 402〜424 :分支控制裝置之操作流程步驟 較佳實施例 請參考第1圖,其繪示的是根據本發明之包括一個分 支控制裝置之管線化處理器1〇〇之部分方塊圖。在一個實 施例中,微處理器100包含一個x86架構之處理器。在一 個實施例中,此微處理器1〇〇具有13階層之管線,其中包 括:一個指令擷取階層、多個指令快取存取階層、一個指 令格式化階層、一個指令解碼或是轉換階層、一個暫存存 取階層、一個位址計算階層、多個資料快取存取階層、多 個執行階層、一個儲存階層以及一個寫回階層。 微處理器100包括了一個快取指令位元組群之指令快 取區102。此指令位元組群爲從記憶體經由資料匯流排166 而被接收。指令快取區1〇2包括了儲存指令位元組群之一 個陣列的快取線。此陣列的快取線藉由一個擷取位址152 所索引。因此,擷取位址152選擇了此陣列中之一條快取 線。指令快取區1〇2經由資料匯流排142輸出指令位元組 群中之被選擇之快取線。 在一個實施例中,指令快取區102包括了一個64KB、 4通道組之關連快取區,而每個通道則具有32位元組之快 取線群。在一個實施例中,在指令位元組群中被選擇之快 取線中,一半爲藉由指令快取區102在一時間內所提供。 換言之,在每兩個分離之週期內提供16個位兀組。在一個 (請先閱讀背面之注意事項再填寫本頁) 裝--------訂ί ------- 本紙張尺度適用中國國家標準(CNSM1規格(丄川x 公釐) 經濟部智慧財產局員工消費合作社印製 526451 8414twf.doc/006 五、發明說明(丨I) 實施例中,指令快取區102類似於美國專利說明書序號爲 09/849,736,標題爲不確定分支目標位址快取區 (SPECULATIVE BRANCH TARGET ADDRESS CACHE), (標籤號碼爲CNTR:2021 )中所敘述。 微處理器100也包括了一個分支目標位址快取區 (branch target address cache,以下簡稱爲 BTAC)116。BTAC 116也接收指令快取區102之擷取位址152。BTAC 116儲 存了先前被執行之分支指令群之擷取位址群。BTAC 116包 括了一個儲存被微處理器100執行之分支指令之後之分支 指令目標位址的儲存元件。此儲存元件亦儲存有關於分支 指令之目標位址被快取時之其他不確定分支之資訊。特別 是此儲存元件儲存隨著快取線中之分支指令之後之指令之 位置資訊。擷取位址152索引在BTAC 116中陣列的儲存元 件以選擇其中一個儲存元件。 BTAC 116藉由擷取位址152選擇由儲存元件輸出一個 目標位址132以及不確定分支資訊(speculative branch inforation,以下簡稱SBI) 136。在一個實施例中,SBI 136 包含分支指令長度,不論此分支指令爲由多個指令快取線 變形而成,亦不論是分支爲一個呼叫或是一個返回指令或 是一個用來預測分支指令方向之資訊。上述可參考先前提 到標題爲「不確定分支目標位址快取區」之美國專利說明 書。 BTAC 116亦輸出一個BEG値138,其中特定了藉由擷 取位址152所選擇之指令快取線142中之相關分支指令之 (請先閱讀背面之注意事項再填寫本頁) F裝---- 訂i 本紙張尺度適用中國國家標準(CNSM-l規格(210 X 297公釐) 經濟邹智慧財產局員工消費合作社印製 526451 五、發明說明( /2) 後之指令群的偏移資訊。此BEG値138單獨隨著分支指令 執行之後之指令目標位址而在BTAC 116中被快取。此BEG 値138爲藉由增加至分支指令之長度之分支指令之指標所 計算。如果微處理器100使得由BTAC 116所提供之目標位 址13 2分支,會使得在分支指令之後之快取線中之所有宇曰 令群被視爲無效。也就是在分支指令之後之指令位元組群 將不會被執行,而其原因爲分支指令已經被取得。因此’ 對於特有程式之執行來說,隨著分支指令之後之指令位元 組群在執行前必須被捨棄。 BTAC 116亦輸出一^個命中丨目號134以指不在BTAC 116中,擷取位址152是否命中。在一個實施例中,BTAC 116 類似於一個由先前提及的美國專利說明書標題爲不確定分 支目標位址快取區(SPECULATIVE BRANCH TARGET ADDRESS CACHE)中所敘述。特別是此BTAC 116是一個 不確定之BTAC,其原因在於微處理器1〇〇在指令快取區 102所提供之指令快取線被解碼爲甚至存在於擷取位址所 選擇之快取線中之已知或未知之分支指令之前’將BTAC 116所提供之目標位址132分支。也就是說’既使有可能存 在著藉由擷取位址命中於BTAC 116以選擇之快取線中沒 有任何分支指令存在的情況時,微處理器100亦會不確定 地分支。 微處理器1〇〇也包含控制邏輯122、命中信號134、SBI 136以及BEG値138以全部被提供作爲控制邏輯122之輸 入。控制邏輯122之操作,在下列有更詳細之描述。 (請先閱讀背面之注意事項再填寫本頁) tr--------- 本紙張尺度適用中國國家標準(CNS)Al規格(210x297公釐) 526451 五、發明說明(ϋ) (請先閱讀背面之注意事項再填寫本頁) 微處理器100也包括了一個多工器118。多工器118 至少接收三種作爲輸入之位址且並對應於控制邏輯所輸出 之控制信號168選擇其中一種輸入作爲擷取位址152輸出 至指令快取區1〇2。多工器118接收由BTAC 116所輸出之 目標位址132。多工器118亦接收下一個連續擷取位址 162,並提供此下一個連續擷取位址162至多工器118。其 中,此下一個連續擷取位址162爲根據指令快取區102中 之快取線尺寸且藉由加法器124接收擷取位址152而增加 之預先擷取位址。此決定目標位址爲藉由微處理器1〇〇中 之執行邏輯所提供。 經濟部智慧財產局員工消費合作社印製 多工器118亦接收一個已剖析之目標位址164。此已剖 析之目標位址164爲藉由微處理器100中之執行邏輯所提 供。此執行邏輯根據一個分支指令之一個全解碼以計算出 已剖析之目標位址164。如果在對BTAC 116所提供之目標 位址132分支之後,且此微處理器100後來決定之分支爲 錯誤之分支時,微處理器1〇〇會藉由淸除管線以及分支其 他剖析目標位址164或是包括分支指令之後之指令群之快 取線的擷取位址,以正確化此錯誤。在一個實施例中,假 設微處理器1〇〇決定爲沒有分支指令存在於快取線142中 時,微處理器1〇〇會藉由淸除管線以及對包括分支指令本 身之快取線的擷取位址群作分支以正確化錯誤。此錯誤之 修正被描述在序號爲〇9/849,658、標題爲偵測且正確化錯 誤不確定分支目標位址快取分支且標籤編號爲CNTR2022 之美國專利說明書。 17 本紙張尺度適用中國國家標準(CNS)Al規格(210 x 297公釐) 526451 Λ7 8414twf . doc/006 五、發明說明(/ip 在一個實施例中,多工器118亦接收藉由其他分支預 測元件所預測之其他目標位址,例如一個呼叫/回堆疊以及 分支目標緩衝區(branch target buffer,以下簡稱ΒΤΒ),而 根據分支指令指標以快取間接分支指令之目標位址。多工 器118藉由呼叫/回堆疊或BTB以選擇性覆寫BTAC 116提 供之目標位址132。其被描述在序號爲〇9/849,799、標題爲 根據分支形式且藉由第二預測裝置以選擇性複寫之不確定 分支目標位址快取區且標籤編號爲CNTR2052之美國專利 說明書。 微處理器1〇〇也包括位元組選擇暫存器104以接收由 指令快取區102經資料匯流排142所輸出之指令位元組中 之被選擇之一條線。在一個實施例中,此位元組選擇暫存 器104爲具有16個位元組寬度以接收由指令快取區102在 一個時間內所輸出之16個指令位元組。 微處理器1〇〇 亦包括對應於位元組選擇暫存器104中之中之16個位元組 間之每一個之16個有效位元1〇6。有效位元106會指示位 於選擇暫存器中之對應位元組,無論微處理器1〇〇在作暫 存、格式化以及執行時,此對應位元組是否爲一個有效位 元組。控制邏輯122根據從BTAC U6所輸出之HIT 134、 SBI 136以及BEG 138輸出一控制信號,以選擇重置或是淸 除有效位元106。在位元組選擇暫存器1〇4中,一個被取得 之分支指令之後之指令位元組群係藉由控制邏輯122被標 記爲無效。除此之外,在一個分支指令之目標指令之前之 指令位元組群亦被標記爲無效。在一實施例中,有效位元 本紙張尺度適用中國國家標準(CNSM丨規格(LMO X 297公爱)
-------% (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 526451 4l4twf. doc/006 Λ7 經齊邹智慧財4局員工消費合作社印製 五、發明說明(丨s) 106被包含於控制邏輯122之中。 微處理器1〇〇也包括多工邏輯1〇8且經由資料匯流排 144接收由位元組選擇暫存器104輸出之位元組。多工邏輯 108捨棄由位元組選擇暫存器1〇4所輸出之無效位元組。多 工邏輯108以及其操作之敘述,請參考下面相關之第3及 第4圖。 微處理器1〇〇也包括了一個指令緩衝區H2以接收經 資料匯流排146由多工邏輯電路108所輸出之有效指令位 元組。其優點在於,多工邏輯1〇8根據從控制邏輯122輸 出之控制信號156僅選擇性地從位元組選擇暫存器所輸出 之位元組中,選出有效之位元組以提供給指令緩衝區112。 在位元組選擇暫存器104中對應於有效位元106且被指示 爲無效之指令位元組群,此無效位元組被多工器1〇8所捨 棄,且不被提供至指令緩衝區112。 在一個實施例中,指令緩衝區112儲存13個指令位元 組。指令緩衝區Π2包括了一個位元組寬度移位暫存器以 儲存指令位元組群。其優點在於,指令緩衝區112移出在 一個位元組顆粒性基底上之已經被格式化之指令位元組, 因此,在指令緩衝區底部留住下一個指令之第一個位元組 以格式化,而下列有更詳盡之描述。 微處理器也包括了指令格式化邏輯114以經資料 匯流排148接收由指令緩衝區in所輸出之指令位元組 群。指令格式化邏輯114檢查指令緩衝區112之內容,以 及格式化或剖析其所包含之指令位元組爲幾個分離指令。 (請先閱讀背面之注意事項再填寫本頁) ---- 訂--------- 本紙張尺度適用中國國家標準(CNS)Al規格G]0 x 297公爱) 經濟部智慧財產局員工消費合作社印製 526451 五、發明說明($) 特別是指令格式化邏輯114決定了指令緩衝區112底部之 指令之位元組尺寸。指令格式化邏輯114提供已格式化之 指令給微處理器100剩下之管線以作更多之解碼以及執 行。其優點在於,指令緩衝區112緩衝指令位元組以減少 指令格式化邏輯114空乏的機率。 指令格式化邏輯114將指令緩衝區112底部之指令尺 寸經由控制信號172提供給控制邏輯122。控制邏輯122 使用此控制信號172之指令尺寸以控制指令位元組之指令 値之移位爲經由由控制信號174從指令緩衝區Π2移出。 也就是,控制信號172對於多工邏輯1〇8以及指令緩衝區 112來說,提供了 一種移位計數的服務。控制邏輯122也使 用控制信號172去控制進入指令緩衝區112之指令位元組 之載入。控制邏輯122也使用控制信號172以透過控制信 號156去控制多工邏輯108之操作。在一個實施例中,指 令格式化邏輯114爲具有在每處理器1〇〇週期時脈格式化 多個指令之能力。 現在請參考第2圖,其繪示的是第1圖中指令緩衝區 112對指令格式化邏輯114之耦合。指令格式化邏輯114 包括幾個分離的部分,此幾個分離的部分爲用於格式化微 處理器1〇〇中之一個指令之不同之指令位元組。在第二圖 所示之實施例中,指令格式化邏輯114包括了一個用以格 式化位元組〇的部分、一個用以格式化位元組1的部分、 一個用以格式化位元組2的部分……一個用以格式化位元組 N的部分。相對應地,指令緩衝區112則包括了位元組1, 本紙張尺度適用中國國家標準(CNSM1規格(210 X 297么、釐)
----!-% (請先閱讀背面之注意事項再填寫本頁) 526451 8414twf.ci( V 0 0 6 Λ7 1]7 五、發明說明(Ιη) 2.···,Ν。 格式化邏輯114被配置爲格式化指令之位元組0之部 分經由第1圖中之資料匯流排148從指令緩衝區112直接 讀取位元組0。同樣地,格式化邏輯114被配置爲格式化指 令之位元組1之部分經由資料匯流排148從指令緩衝區112 直接讀取位元組1。格式化邏輯114被配置爲格式化指令之 位元;組2之部分用經由資料匯流排148從指令緩衝區112 直接讀取位元組2。以此類推至位元組Ν。 因此,從第2圖中,可以觀察到本發明其優點在於提 供指令緩衝區112與指令格式化邏輯114間之一個直接之 親合以致於不需要一個操控邏輯以用於操控指令位元組。 因此’微處理器100之時脈特性有可能被改善。此優點部 分在於因位元組寬度指令緩衝區112在一個時間內將一整 個指令移出,使得指令緩衝區底部之位元組總是爲下一個 指令之位元組0以被指令格式化邏輯所格式化。 經濟邹智慧財產局員工消費合作社印製 (請先閱讀背面之注意事項再填寫本頁) 鲁· 本發明優點在於不需要在指令緩衝區112與指令格式 化邏輯114間提供一個操控邏輯以操控指令位元組至格式 化邏輯114之正確部分。一般來說,操控邏輯對於時序會 有決定性的影響且因此而增加了微處理器100之時脈週 期。然而,藉由本發明之優勢,微處理器100之週期時脈 在採用一個於此所敘述之BTAC 116時,有可能被縮短。 現在請參考第3圖,其繪示的是根據本發明第1圖中 多工邏輯108之方塊圖。多工邏輯1〇8包括了一個具有13 個16 : 1之罩覆多工器302之裝置,而每個罩覆多工器302 本紙張尺度適用中國國家標準(CJNS)Al規格(L々l〇x 297公釐) 526451 8414twf.doc/0〇6 ____ Π/ 五、發明說明(^ ) 接收BSR[15 : 0],此16個位元組爲經由資料匯流排144 來自於第1圖中之位元組選擇暫存器104。每個罩覆多工器 302選擇一個位元組。位元組藉由罩覆多工器302被提供在 輸出Μ[12··0]上。 罩覆多工器302爲經第1圖之控制信號156而由控制 邏輯122所控制。罩覆多工器302以互相連接的方式對儲 存於位元組選擇暫存器104中之無效指令位元組(被有效 位元106指爲)作無罩覆或是捨棄之操作以及僅提供有效 指令位元組在罩覆多工器302輸出Μ[12:0]之底部上。也 就是在位元組選擇暫存器1〇4中之第一有效位元組將被提 供在輸出位元組Μ[0]上,第二有效位元組在輸出位元組 M[l]上....,以致於當有第13個有效位元組存在於位元組選 擇暫存器104中時,此第13個有效位元組將會被提供在輸 出位元組Μ[12]上。因此,舉例來說,假設由位元組選擇暫 存器1〇4所輸出之位元組2 (例如BSR[2])爲第一個有效 位元組,而此第一個有效位元組將會被輸出在M[0]上;假 設BSR[3]爲有效,其將會輸出在M[l]上,以此類推。 多工邏輯108包括了一個具有24個13 : 1之排整多工 器304之裝置。每個排整多工器304接收由罩覆多工器304 所輸出之13個位元組M[12: 0]。每個排整多工器304選擇 一個位元組。被選擇之位元組被提供在輸出A[23 ·· 0]上。 排整多工器304經由控制信號156受控制邏輯122所控制。 每個排整多工器304以互相連接的方式排整所接收之來自 於罩覆多工器302之M[12 : 0]上之有效位元組群至在指令 (請先閱讀背面之注意事項再填寫本頁)
裝--------訂--------I 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CN’SMl规格U】0 X 297公釐) 經濟部智慧財產局員工消費合作社印製 526451 i、發明說明(1^) 緩衝區112中之第一預先移位位置(pre-shift location)。 也就是排整多工器304排整所接收之在M[12 : 0]上之有效 位元組群至在指令緩衝區112移出已經被格式化之指令之 前之指令位元組中之空位元組位置。 . 較上面之排整多工器304不必全都是13:1之多工器。 在一個實施例中,對於位元組23來說,排整多工器304爲 僅接收作爲輸入之M[12]之一個1 : 1多工器、對於位元組 22來說,排整多工器304爲僅接收作爲輸入之M[12 : 11] 之一個2 : 1多工器、對於位元組21來說,排整多工器304 爲僅接收作爲輸入之M[12 : 10]之一個3 : 1的多工器以及 向下類推至對於位元組12來說,排整多工器304爲僅接收 作爲輸入之M[12 ·· 1]之一個12 : 1的多工器。 在一個實施例中,罩覆多工器302以及排整多工器304 可組合至一個具有多個多工器之單一裝置中以操作以上第 3圖所描述之組合功能。 多工邏輯108爲包括了一組具有13個2 : 1之維持/載 入(hold/loading)多工器之裝置306,而每個維持/載入多 工器306接收兩個輸入之位元組。其中一個爲輸入排整多 工器304對應之輸出A[n]。對於位元組0來說,維持/載入 多工器306由排整多工器304接收一個作爲輸入之A[0], 對於位元組1來說,維持/載入多工器306由排整多工器304 接收一個作爲輸入之A[l],以此類推至對於位元組12來 說,維持/載入多工器306由排整多工器304接收一個作爲 輸入之A[12]。對於維持/載入多工器306來說,第二個輸 23 本紙張尺度適用中國國家標準(CNS)A4規格公釐) (請先閱讀背面之注意事項再填寫本頁} ▼ 裝--------訂--------- 526451 五、發明說明(π) 入爲爲第1圖中指令緩衝區112提供在匯流排148上之對 應輸出ΙΒ[12 : 0]中之一個。也就是對於位元組〇來說,維 持/載入多工器306由指令緩衝區112接收第二個作爲輸入 之ΙΒ[0]、對於位元組1來說,維持/載入多工器306由指令 緩衝區112接收第二個作爲輸入之ΙΒ[1],以此類推至對於 位元組12來說,維持/載入多工器306由指令緩衝區112 接收第二個作爲輸入之ΙΒ[12]。 維持/載入多工器306會依據在指令緩衝區112中之是 否爲有效之對應位元組,而在兩個輸入中選擇一個。控制 邏輯122經由控制信號156控制維持/載入多工器306。因 此,舉例來說,假設在指令緩衝區112中之位元組5爲有 效,對於位元組5來說,對應之維持/載入多工器306選擇 ΙΒ[5]輸入,以維持在指令緩衝區112中之値,而不是由位 元組選擇暫存器112所接收一個指令位元組。相反地,假 設在指令緩衝區112中之位元組5爲無效(例如:位元組5 在指令緩衝區112中之位置是空的)時,對應之維持/載入 多工器306對於位元組5來說,選擇Α[5]輸入以由位元組 選擇暫存器104接收一個指令位元組,而不是維持住ΙΒ[5] 的値。維持/載入多工器306提供了在輸出Χ[12 : 0]上之被 選擇之輸入。 多工邏輯108包括了一組具有13個移位多工器308之 裝置,而每個移位多工器308接收包括了由排整多工器304 之輸出(Α[23 ·· 0])與維持/載入多工器306之輸出(Χ[12 : 〇])間不同組合所組成之12個輸入位元組。對於位元組〇 24 (請先閱讀背面之注意事項再填寫本頁) -裝--------訂---------. 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A l規格(210 X 297公釐) 526451 五、發明說明(ι|) 來說,移位多工器308接收X[ll : 〇],對於位元組1來說’ 移位多工器308接收X[12 : 1],對於位元組2來說,移位 多工器308接收A[13]以及X[12 : 2],對於位元組3來說’ 移位多工器308接收A[14 : 13]以及X[12 : 3],以此類推至 對於位元組12來說,移位多工器308接收A[23 : 13]以及 X[12]。 移位多工器308移下由罩覆多工器302、排整多工器 304以及維持/載入多工器306根據指令位元組被移出指令 緩衝區112之數目所選擇之位元組。也就是當指令格式化 邏輯114格式化一個指令時,會由指令緩衝區112讀取以 及決定被格式化指令之位元組尺寸,且此尺寸決定了將由 指令緩衝區112移出之位元組數目。被格式化指令之尺寸 爲第1圖中之移位計數172,且控制邏輯122使用此移位計 數172並經由控制信號156控制移位多工器308選擇適當 之輸入以產生移位。 移位多工器308之輸出爲被提供至指令緩衝區112中 之一個對應位元組位置以載入被罩覆、被排整、被維持/載 入以及被移位之指令位元組群。指令緩衝區112之載入爲 經控制信號174由控制邏輯122所控制。 因此,可以觀察到第3圖之多工邏輯108其優點在於 僅將從位元組選擇暫存器104輸出之有效指令位元組密集 地擠入指令緩衝區112中,且在下列的圖示當中,有更詳 盡之描述。 現在請參考第4圖,其繪示的是根據本發明第1圖中 本紙張尺度適用中國國家標準(CNS)A丨規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) · ϋ 1 «ϋ ϋ I n n n n ϋ *ϋ ϋ 备- 經濟部智慧財產局員工消費合作社印製 經齊郎智慧財產局員工消費合作社印製 526451 五、發明說明(2Z3 分支控制裝置之操作說明流程圖。流程開始於方塊402。 在方塊402中,第1圖中之擷取位址152被提供至第1 圖中之指令快取區102以從指令快取區102中選擇指令位 元組群中之一條線。除此之外,擷取位址152爲被提供至 第1圖中之BTAC 116,且此擷取位址152之目摞位址4儲 存在BTAC 116中時,此擷取位址152會在BTAC 116中產 生一個命中。接下來之步驟由方塊402至方塊404。 在方塊404中,在步驟402中已被選取之指令群(亦 包括分支指令)中之快取線被載入至第1圖中之位元組選 擇暫存器104中。除此之外,因爲包含分支指令之快取線 中之擷取位址152在BTAC 116中被快取,因此控制邏輯 122會偵測在BTAC 116中之擷取位址I52命中。步驟4〇6 以及步驟414以下之流程在本質上爲词時操作。先被描述 之流程包括方塊406、408以及412。 在方塊406中,控制邏輯122由BTAC 116得到BEG 値138,此特定出步驟402中所選出之在快取線中之分支指 令之後之指令位元組群之偏移資訊。因爲位元組選擇暫存 器104與一條快取線之尺寸相同,且快取線包含分支指令 之快取線在步驟404中被載入至位元組選擇暫存器104,因 此,此BEG値138爲在位元組選擇暫存器104中之分支指 令之後之指令群之偏移資訊。舉例來說’假設分支指令開 始於位元組3且爲2個位元組長度’在分支指令之後之指 令群將開始於位元組選擇暫存器中之位元組5之前,由 BTAC 116所提供之BEG値138將會爲5。接下來之步驟由 本紙張尺度適用中國國家標準(CNS)A1規格(21ϋχ297公釐) — II--I-----— — — — — — — ^ 1111111 1 (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 526451 五、發明說明(2>) 方塊406到方塊408。 在方塊408中,控制邏輯122根據步驟406中從BTAC 116所得之BEG値138,罩覆掉用於位元組選擇暫存器104 中所有在分支指令之後之指令群之有效位元群。因此,在 位元組選擇暫存器1〇4中所有被標記爲無效之指令位元組 群將會接著被捨棄,且不被提供至第1圖之指令緩衝區112 中。例如假設BEG値138爲5,在位元組選擇暫存器104 中之位元組5到15將會標記爲無效。接下來之步驟由方塊 408到方塊412。 在方塊412中,在位元組選擇暫存器104中且在步驟 408中被標記爲有效之指令位元組,爲藉由控制邏輯122 而被載入至指令緩衝區122中。相反地,在位元組選擇暫 存器104中且在步驟408中被標記爲無效之指令位元組則 不被載入至指令緩衝區112。假設在指令緩衝區112之中有 已經被格式化之指令位元組群時,這些被格式化之指令位 元組群在有效位元組由位元組選擇暫存器1〇4載入前,被 移出指令緩衝區112。從位元組選擇暫存器104進入指令緩 衝區112之有效位元組數量爲被格式化指令群移出後,指 令緩衝區112中之空位元組位置數量所限制。 根據第3圖之以上所述爲,此來自於位元組選擇暫存 器104之有效位元組在指令緩衝區中之最後一個有效且丼 被格式化之指令位元組之後,直接載入至指令緩衝區112 ° 舉例來說,假設位於位元組選擇暫存器104中有I5個位元 組爲有效,且在被格式化位元組被移出後,在指令緩衝區 本紙張尺度適用中國國家標準(CNS)A4規格(d〇x^7公爱) (請先閱讀背面之注意事項再填寫本頁) 裝---- tr----------dp· 526451 五、發明說明(>i) (請先閱讀背面之注意事項再填寫本頁) 112中有9個位元組是空的情況下,只有前9個來自於位元 組選擇暫存器104之有效位元組會被載入至指令緩衝區 112。 下面所敘述的是另一同時發生之步驟流程,包括方塊 414、416 以及 418。 在方塊414中,分支指令之目標位址爲由BTAC 116 所得到且被提供至第1圖中之多工器118。由BTAC 116所 得之目標位址132相當於與在步驟406中由BTAC 116所得 到之BEG値138。接下來步驟爲方塊414到方塊416。 在方塊416中,多工器118選擇由BTAC 116所提供之 目標位址作爲指令快取線1〇2之下一個擷取位址152。目摞 位址132之選擇將會引起微處理器1〇〇不確定地對在步驟 402中被選擇快取線中所包含之分支指令之被快取之目標 位址132作分支。也就是目標位址132將被作爲下一^個擺 取位址152以選擇來自於指令快取區102之包含分支目標 指令之快取線。接下來之步驟爲方塊416到方塊418。 經濟部智慧財產局員工消費合作社印製 在方塊41S中,一條包含分支指令之目標指令之指令 位元組群中之快取線被載入至位元組選擇暫存器104中。 在步驟418中,載入包括目標指令位元組之快取線至位元 組選擇暫存器1〇4與在步驟412中,將包括分支指令之有 效位元組由位元組選擇暫存器104載入至指令緩衝區102 之操作在本質上爲同時。接下來爲將方塊412以及方塊418 合倂且進行4Π,418到方塊422之流程。 在方塊422中,控制邏輯122罩覆掉有效位元群,且 本纸張尺度適用中國國家標準(CNS)A1規格(2】〇x 297公釐) 铿齊邹智慧时產局員工消費合作社印製 526451 五、發明說明(r5) 此有效位元組群爲用於在步驟414中根據目標位址132由 BTAC 116所得之目摞指令之前之所有位元組選擇暫存器 104中之指令位元組群。因此,所有在位元組選擇暫存器 104中被標記爲無效之指令位元組本身將會接著被捨棄且 並不被提供至指令緩衝區Π2。舉例來說,假設目標位址 132之最不重要位元(least significant bits)爲0x7,在位 元組選擇暫存器1〇4中之位元組0到位元組6將會被標記 爲無效。接下來的步驟爲方塊422到方塊424。 在方塊424中,在分支指令的最後一個位元組之後之 現在包含目標指令之有效指令位元組,由位元組選擇暫存 器104直接被載入至指令緩衝區112中。上述分支控制裝 置之操作實例可依據第5圖來作描述。 現在請參考第5圖,其繪示的是根據本發明在第1圖 中之分支控制器之一個實施例之方塊圖。第5圖顯示了位 元組選擇暫存器104在第4圖中兩個不同階層之內容,其 標注爲104A以及104B。第5圖也顯示了指令緩衝區112 在第4圖中之三個不同階層之內容,其被標注爲U2A、112B 以及112C。 指令緩衝區112A顯示了指令緩衝區112在此實施例中 之起始內容。指令緩衝區112 A包含了 7個有效位元組以 及6個空的(或無效)位元組位置。因此,在此實施例中, 每一個指令緩衝區112 A中之位元組位置〇到6包含了一 個指令位元組,其標注爲A到G。 位元組選擇暫存器104A顯示了位元組選擇暫存器104 本紙張尺度適用中國國冢標準(CNSM1規格(2】〇x 297公釐) -------------------^--------- (請先閱讀背面之注意事項再填寫本頁) 526451 8 4 1 4 twf. doc/0 0 6 五、發明說明 在被載入在第4圖中步驟404中所包含得分支指令之後, 且在第4圖中步驟408中根據由在步驟406 BTAC 116所接 收之偏移資訊而使得有效位元被罩覆掉之後之位元組選擇 暫存器104內容。 在位元組選擇暫存器104A中,位元組〇包含了 一個被 標注爲Q的指令位元組。位元組1包含了一個被標注爲R 的指令位元組。位元組2包含了一個兩位元組分支指令的 第一個位元組,其被標注爲、JCC〃且爲x86傳統跳線指令 之操作位元組。位元組3包括了此JCC指令之第二個位元 組,且代表作爲一個替代,故標注爲''disp〃。 在此實施例中,在分支指令之後之指令位元組群之位 元組偏移爲4之前,在第4圖的步驟406中,被控制邏輯 122由BTAC 116所得之BEG値138爲4。因此,在第4圖 的步驟408中,控制邏輯122使得位元組〇到3爲有效而4 到15爲無效。 指令緩衝區112B顯示了在此實施例中指令緩衝區112 在移出5個被格式化指令位元組(例如指令位元組A到E) 之後且由位元組選擇暫存器104A載入4個有效指令位元組 (例如Q、R、JCC以及disp)之後之內容。也就是指令緩 衝區112B顯示了在第4圖中步驟412執行後之內容。在分 支指令後且佔據在位元組選擇暫存器104A中位元組4到15 位置之無效指令位元組被第3圖中之罩覆多工器302捨棄 且不被載入至指令緩衝區112中。 指令緩衝區Π2Β的位元組〇包含了由指令緩衝區 30 本紙張尺度適用中國國家標準(CNSM1規格m〇x297公釐) (請先閱讀背面之注意事項再填寫本頁) tr--------- 52645ι i、發明說明(2φ 112Α的位元組5偏移下來的指令位元組F。指令緩衝區 112B的位元組1包含了由指令緩衝區Π2Α的位元組6偏 移下來的指令位元組G。也就是說’指令緩衝區112B的位 元組〇以及位元組1被維持/載入多工器306所維持。 指令緩衝區112B的位元組2中,包括了由位元組選擇 暫存器104A之位元組〇通過多工邏輯1〇8而被載入指令緩 衝區112B中且根據第4圖中之步驟412緊鄰於寫入告示移 位(post-shift)指令緩衝區112B中之最高有效位元組之指 令位元組Q。同樣地’指令緩衝區112B的位兀組3中’包 括了由位元組選擇暫存器104A之位元組1通過多工邏輯 108且被載入指令緩衝區112B之位元組3中之指令位元組 R。同樣地,指令緩衝區112B的位元組4中,包含了由位 元組選擇暫存器104A之位元組2通過多工邏輯108且被載 入指令緩衝區112B之位元組4中之JCC操作碼指令位元 組。同樣地,指令緩衝區Π2Β的位元組5包含了由位元組 選擇暫存器104A之位元組3通過多工邏輯108且被載入指 令緩衝區112B之位元組5中之JCC指令之替代位元組。位 元組選擇暫存器104B顯示了位元組選擇暫存器104於第4 圖步驟418中被載入包含分支目標指令之快取線之內容。 在此實施例中,置於位元組選擇暫存器104B之位元組13 到15中之分支目標指令被標注爲X、Y以及Z。位元組X、 Υ以及Ζ根據其指令長度建構一個或兩個或三個指令。因 爲在此實施例中,目標指令之第一個位元組被置於位元組 選擇暫存器104Β之位元組13中,因此控制邏輯122必須 (請先閱讀背面之注意事項再填寫本頁) ·裝--------訂---------· 經齊邹智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A丨規格⑵〇 X 公釐) 526451 84l4twf.doc/006 Λ7 B7
垩齊曰i讨t苟員1--^費合阼f£:p-?R 五、發明說明(β) 藉由淸除相關有效位元106以將位元組〇到12標記爲無 效。故位元組選擇暫存器1〇4Β之位元組〇到12將藉由章 覆多工器302而被捨棄且不被提供至112指令緩衝區。 指令緩衝區112C顯示了指令緩衝區112C在不移出任 何已格式化之指令位元組且載入來自於位元組選擇暫存器 104Β之目標指令之三個有效指令位元組(如X、Υ以及Ζ) 之後的內容。換句話說,指令緩衝區112C顯示了在第4圖 中步驟424執行後之內容。佔據在位元組選擇暫存器1G4B 之位元組〇到12且在目標指令之前之無效指令位元組爲藉 由罩覆多工器302而被捨棄且不被提供至指令緩衝區 112 ° 在沒有任何移出發生之前,指令緩衝區112C的位元,祖 〇到5包含了與指令緩衝區112B之位元組0到5相同之値。 其原因在於第1圖中之指令格式化邏輯114在先前的週% 時脈內不能格式化指令。而其原因的一個例子爲:在微胃 理器1〇〇管線中指令格式化邏輯114不能格式化一個爲搁 位的指令(例如由一個浮點指令或是先前分支指令的執@ 所產生,這些都需要耗費許多時脈週器來完成)。 指令緩衝區112C的位元組6包含了由位元組選擇暫存 器104B之位元組13通過多工邏輯108且根據步驟424而 被載入指令緩衝區112C之位元組6中之指令位元組X。指 令位元組X被載入指令緩衝區112C中,且緊鄰於分支指令 之最後一個位元組(例如相鄰於指令緩衝區112C中之disp 位元組)。同樣地,指令緩衝區112C的位元組7包含了由 (請先間讀背面之江意事頊再填寫本頁) _裝---- 訂--------- 本纸張尺度適用中國國家標準(CNS)A.l規格(21〇 X 297公楚) 526451 五、發明說明(”) 位元組選擇暫存器104B之位元組14通過多工邏輯108且 根據步驟424而被載入指令緩衝區112C之位元組7中之指 令位元組Y。同樣地,指令緩衝區112C的位元組8包含了 由位元組選擇暫存器104B之位元組15通過通過多工邏輯 108且根據步驟424而被載入指令緩衝區112C之位元組8 中之指令位元組Z。 値得注意的是,分支指令也許會包括在兩個不同的指 令快取102線中。在一個實施例中,BTAC 116會指派與第 一快取線(例如與包含分支指令第一部分之快取線)之擷 取位址152相關之命中信號134。在一個替換的實施例中, BTAC 116會指派與第二快取線(例如與包含分支指令第二 部分之快取線)之擷取位址152相關之命中信號134。換句 話說,BTAC 116快取分支指令第二部分之擷取位址152, 而不是第一部分。 從捨棄的例子來看,第1圖中之分支控制裝置之操作 爲僅密集將有效指令位元組擠入位元組寬度指令緩衝區 112,移出已格式化之指令位元組,且將非格式化之指令位 元組儲存於指令緩衝區112的底部。如第2圖所示,指令 緩衝區直接耦接指令格式化邏輯114,以致於在指令緩衝區 112底部之有效指令位元組在沒有增加操控邏輯的需求下 直接被提供至指令格式化邏輯Π4。此指令位元組由指令辕 衝區112至指令格式化邏輯114間之直接供應,本發明懷 點在於增加指令格式化時間之可利用性且高於在指令緩_ 區112與指令格式化邏輯114間需要操控邏輯之架構下, (請先閱讀背面之注意事項再填寫本頁) -裝--------訂---------^· 經齊郎智慧財ioF員Η消費合作社印製 本紙張尺度適用中國國家標準(CNS)A·丨規格(21G X 297公釐) 526451 Λ7 8 4 1 4 t w f · d 〇 c / Ο Ο 6 1)/ ^------— 五、發明說明(如) 指令格式化時間之可利用性。 而本發明的另一個優點在於,分支控制裝置運作時具 有位元組寬度,且直接耦接於指令緩衝區以在分支指令被 指令解碼邏輯解碼前,根據BTAC所預測之分支預測控制 被操作之分支。 雖然本發明已以較佳實施例揭露如上,然其並非用以 限定本發明,例如指令緩衝區在尺寸上也許會有變動,可 以較上述實施例中儲存更多或更少之指令位元組。此外, 位元組選擇暫存器以及指令快取線在尺寸上之變動亦是。 因此,任何熟習此技藝者,在不脫離本發明之精神和範圍 內,當可作各種之更動與潤飾,因此本發明之保護範圍當 視後附之申請專利範圍所界定者爲準。 (請先閱讀背面之注意事項再填寫本頁) 裝---- II---------AW. 座齊郢皆慧讨t苟員^消費合阼fi-rj-w 本紙張尺度適用中國國家標準(CNSM 1規格(2】〇 X 297公楚)
Claims (1)
- 經濟部智慧財產局員工消費合作社印製 526451 A8 B8 B414twf.doc/006 Qg 六、申請專利範圍 1. 一種位於微處理器中之分支控制裝置,包括: 一指令快取區,用以輸出藉由一擷取位址所選擇之指 令位元組群中之一線; 一指令緩衝區,耦接該指令快取區且用以緩衝指令位 元組群中之該線; 一分支目標位址快取區(BTAC),耦接該擷取位址且 用以提供與位於指令位元組中之該線中之一分支指令之一 位置相關之一偏移資訊;以及 一選擇邏輯,耦接該分支目標位址快取區且用以根據 該偏移資訊使得一部份指令位元組不被提供至該指令緩衝 區。 2. 如申請專利範圍第1項所述之位於微處理器中之分 支控制裝置,其中該偏移資訊明確說明緊接著指令位元組 中之該線中之該分支指令之一指令之位置。 3. 如申請專利範圍第2項所述之位於微處理器中之分 支控制裝置,其中不被提供至該指令緩衝區之該部份指令 位元組,包括在該偏移資訊被特定時,緊接於指令位元組 群中之該線之分支指令後的指令位元組群。 4. 如申請專利範圍第1項所述之位於微處理器中之分 支控制裝置,其中該選擇邏輯包括: 一暫存器,耦接於該指令快取區與該指令緩衝區間且 用以儲存指令位元組群中之該線。 5. 如申請專利範圍第4項所述之位於微處理器中之分 支控制裝置,其中該選擇邏輯更包括: -----------裝--------訂-----— I — (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 經濟部智慧財產局員工消費合作社印製 526451 A8 B8 C8 8414twf.doc/006 D8 六、申請專利範圍 複數個有效位元,耦接於該暫存器,其中該些有效位 元中之每一個爲與該暫存器中之指令位元組群中之一個相 關連。 6. 如申請專利範圍第5項所述之位於微處理器中之分 支控制裝置,其中該選擇邏輯根據由該分支目標位址快取 區所接收之該偏移資訊植入該些有效位元。 7. 如申請專利範圍第6項所述之位於微處理器中之分 支控制裝置,其中該選擇邏輯使得該暫存器中之指令位元 組群中之每一個具有一對應有效位元以指示該暫存器中之 指令位元組群中之一個爲無效而不被提供至該指令緩衝 區。 8. 如申請專利範圍第7項所述之位於微處理器中之分 支控制裝置,其中該分支目標位址快取區提供一命中信號 給該選擇邏輯以指示該擷取位址是否命中於該分支目標位 址快取區。 9. 如申請專利範圍第8項所述之位於微處理器中之分 支控制裝置,其中如果該命中信號指示該擷取位址命中於 該分支目標位址快取區時,該選擇邏輯根據由該分支目標 位址快取區所接收之該偏移資訊植入該些有效位元。 10. 如申請專利範圍第5項所述之位於微處理器中之分 支控制裝置,其中該選擇邏輯包括: 多工邏輯,耦接於該指令快取區與指令緩衝區之間’ 且用以藉由該些有效位元中之一個指示相關連之該暫存器 中之指令位元組群中之一個爲有效以被提供至該指令緩衝 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ------1 I I I I ^ in —--I — — — — — — (請先閱讀背面之注意事項再填寫本頁) 526451 A8 B8 C8 D8 8414twf.doc/006 六、申請專利範圍 區。 Π.如申請專利範圍第10項所述之位於微處理器中之 分支控制裝置,其中該多工邏輯包括一組多工器以捨棄被 相關連之該些有效位元指示爲無效之指令位元組群。 12. 如申請專利範圍第10項所述之位於微處理器中之 分支控制裝置,其中該多工邏輯包括一組多工器將被相關 連之該有效位元指示爲有效之指令位元組排整於該指令緩 衝區中之一第一空位置。 13. 如申請專利範圍第10項所述之位於微處理器中之 分支控制裝置,其中該多工邏輯包括一組多工器以藉由移 出該指令緩衝區中之一些位元組之方式,將被相關連之該 有效位元指示爲有效之指令位元組移位被相關連之。 14. 如申請專利範圍第13項所述之位於微處理器中之 分支控制裝置,其中該選擇邏輯被配置去接收由一指令格 式化邏輯而來之一移位計數,以指示該些指令位元組由該 指令緩衝區被移出之一數量。 15. 如申請專利範圍第14項所述之位於微處理器中之 分支控制裝置,其中該多工邏輯藉由該移位計數將被相關 連之該有效位元指示爲有效之指令位元組移位。 16. 如申請專利範圍第1項所述之位於微處理器中之分 支控制裝置,其中該指令緩衝區包括一移位暫存器。 17. 如申請專利範圍第16項所述之位於微處理器中之 分支控制裝置,其中該移位暫存器爲一位元組寬度。 18. 如申請專利範圍第1項所述之位於微處理器中之分 -----------裝--------訂--------- (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐〉 經濟部智慧財產局員工消費合作社印製 526451 A8 B8 pQ 8414twf. doc/ 006 D8 六、申請專利範圍 支控制裝置,其中該指令緩衝區直接耦接用以格式化指令 位元組群之一指令格式化邏輯。 19. 如申請專利範圍第18項所述之位於微處理器中之 分支控制裝置,其中該指令緩衝區中之一底部位元組直接 被提供至被配置爲用以格式化之一指令之第一位元組之一 部份該指令格式化邏輯。 20. 如申請專利範圍第1項所述之位於微處理器中之分 支控制裝置,其中該分支指令包括一 x86分支指令。 21. 如申請專利範圍第1項所述之位於微處理器中之分 支控制裝置,其中該分支目標位址快取區被配置爲回應於 該擷取位址以提供該分支指令之一目摞位址。 22·如申請專利範圍第1項所述之位於微處理器中之分 支控制裝置,其中該目標位址作爲一接下來擷取位址並選 擇性地被提供至該指令快取區,以選擇指令位元組群中之 一第二線,且該第二線包含該指令快取區中之該分支指令 之一目標指令。 23·如申請專利範圍第22項之位於微處理器中之分支 控制裝置,其中該選擇邏輯使得該目標指令被提供至該指 令緩衝區中,且與該指令緩衝區中之該分支指令相鄰。 24·如申請專利範圍第23項之位於微處理器中之分支 控制裝置,其中該選擇邏輯使得在該第二線中之該目標指 令之前之指令位元組群被捨棄且不被提供至該指令緩衝 區° 25·如申請專利範圍第1項之位於微處理器中之分支控 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) -----------^^裝--------訂-丨丨II丨丨丨-*^1^ (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 526451 A8 B8 Q4l4twf.doc/006 t、申請專利範圍 制裝置,其中該指令快取區儲存由該微處理器所執行之可 變長度之指令群。 26. —種位於微處理器中之預先解碼階層,包括: 一指令緩衝區,用以緩衝指令資料以供應給一指令格 式化邏輯; 一選擇邏輯,耦接該指令緩衝區且用以接收藉由來自 於一指令快取區中之一擷取位址所選擇之一第一指令資 料,其中該第一指令資料包括一分支指令;以及 一分支目摞位址快取區(BTAC),耦接該選擇邏輯且用 以提供該分支指令之一目標位址作爲一下一個擷取位址給 該指令快取區; 其中該選擇邏輯被配置爲接收藉由來自於該指令快取 區之該目標位址所選擇之一第二指令資料,且該第二指令 資料包括該分支指令之一目標指令;以及 其中該選擇邏輯被配置爲將該分支指令以及該目標指 令以相互緊鄰之方式寫入該指令緩衝區中。 27. 如申請專利範圍第26項所述之位於微處理器中之 預先解碼階層,其中該分支目摞位址快取區被配置爲回應 於該擷取位址以提供該目標位址。 28·如申請專利範圍第26項所述之位於微處理器中之 預先解碼階層,其中該分支目摞位址快取區被配置爲提供 緊隨於該分支指令之該第一指令資料中之一位置之一指示 給該選擇邏輯。 29·如申請專利範圍第28項所述之位於微處理器中之 39 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) -----------裝--------訂---------AW (請先閱讀背面之注意事項再填寫本頁) 526451 A8 B8 C8 D8 8 4 14 twf . do c/Ο Ο 6 六、申請專利範圍 預先解碼階層,其中該選擇邏輯根據該位置之該指示將該 分支指令以及該目標指令以相互緊鄰之方式寫入該指令緩 衝區中。 30. 如申請專利範圍第29項所述之位於微處理器中之 預先解碼階層,其中該選擇邏輯被配置爲接收該目標位 址。 31. 如申請專利範圍第30項所述之位於微處理器中之 預先解碼階層,其中該選擇邏輯根據該目標位址以及該位 置之該指示將該分支指令以及該目標指令以相互緊鄰之方 式寫入該指令緩衝區中。 32. 如申請專利範圍第28項所述之位於微處理器中之 預先解碼階層,其中該分支目標位址快取區被配置爲回應 該擷取位址以提供該指示。 33. 如申請專利範圍第26項所述之位於微處理器中之 預先解碼階層,其中該指令緩衝區包括一移位暫存器。 34. 如申請專利範圍第33項所述之位於微處理器中之 預先解碼階層,其中該移位暫存器爲一位元組寬度。 35. 如申請專利範圍第33項所述之位於微處理器中之 預先解碼階層,其中該選擇邏輯將在該指令緩衝區中之一 最後有效資料位元組之該分支指令以及該目標指令以相互 緊鄰之方式寫入該指令緩衝區中。 36·如申請專利範圍第33項所述之位於微處理器中之 預先解碼階層,其中該選擇邏輯將該分支指令以及該目標 指令寫入該指令緩衝區中之一下一個空位置。 40 -----------·裝--------訂--------- (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 本’、'氏張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐 526451 A8 B8 C8 D8 84l4twf.doc/006 六、申請專利範圍 37.如申請專利範圍第33項所述之位於微處理器中之 預先解碼階層,其中該指令緩衝區直接耦接於該指令格式 化邏輯。 3 8. —^種提供分支指令與分支指令之目標指令至指令緩 衝區之方法,其方法包括·· 接收來自於一指令快取區之包括該分支指令之一第一 快取線; 緊隨於該分支指令後,接收來自於一分支目標位址快 取區(BTAC)之該第一^快取線中之一^指令之一^偏移資, 快取線,且該第二快取線爲藉由該分支目標位址快取區所 提供之該分支指令之一目標位址所選擇; 捨棄在該第一快取線中之該分支指令之後之指令群; 捨棄在該第二快取線中之該目標指令之前之指令群; 以及 維持在每個捨棄步驟後提供該第一以及該第二快取線 之一部分給該指令緩衝區。 39. 如申請專利範圍第38項所述之提供分支指令與分 支指令之目標指令至指令緩衝區之方法,其中根據該偏移 資訊捨棄在該第一快取線中之該分支指令之後之指令群。 40. 如申請專利範圍第38項所述之提供分支指令與分 支指令之目摞指令至指令緩衝區之方法,其中根據該目標 位址捨棄在該第二快取線中之該目標指令之前之指令群。 41. 如申請專利範圍第38項所述之提供分支指令與分 -----------裝--------訂--------- (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員Η消費合作社印製 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐〉 526451 A8 B8 C8 D8 B414twf·doc/006 六、申請專利範圍 支指令之目標指令至指令緩衝區之方法,其方法更包括: 在接收來自於該指令快取區之該第一快取線之前,提 供一擷取位址給該指令快取區; 其中該指令快取區回應該擷取位址以提供該第一快取 線。 42. 如申請專利範圍第41項所述之提供分支指令與分 支指令之目標指令至指令緩衝區之方法,更包括: 在接收來自於該分支目標位址快取區之該偏移資訊之 前,提供該擷取位址給該分支目標位址快取區; 其中該分支目標位址快取區回應該擷取位址以提供該 偏移資訊。 43. 如申請專利範圍第38項所述之提供分支指令與分 支指令之目標指令至指令緩衝區之方法,其方法更包括: 在捨棄位於該第一快取線中之該分支指令之後之指令群之 前,儲存該第一快取線至一暫存器中。 44. 如申請專利範圍第43項所述之提供分支指令與分 支指令之目摞指令至指令緩衝區之方法,其中捨棄在該第 一快取線中之分支指令後面之指令群,包括將在該暫存器 中之分支指令之後之指令群標記爲無效且不提供在該暫存 器中被標記爲無效之指令群給該指令緩衝區。 45. 如申請專利範圍第38項所述之提供分支指令與分 支指令之目標指令至指令緩衝區之方法’其方法更包括: 在捨棄位於該第二快取線中之該目標指令之前之指令 群之前,儲存該第二快取線至一暫存器中。 -------------裝·-------訂·--I I (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 526451 A8 B8 8414twf.doc/006 六、申請專利範圍 46.如申請專利範圍第45項所述之提供分支指令與分 支指令之目標指令至指令緩衝區之方法,其中捨棄在該第 二快取線中之該目標指令之前之指令群,包括將在該暫存 器中之該目標指令之前指令群標記爲無效且不提供在該暫 存區中被標記爲無效之指令群給該指令緩衝區。 (請先閱讀背面之注意事項再填寫本頁) .裂--------訂---I 經濟部智慧財產局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/898,583 US7162619B2 (en) | 2001-07-03 | 2001-07-03 | 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 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW526451B true TW526451B (en) | 2003-04-01 |
Family
ID=25409669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW090127266A TW526451B (en) | 2001-07-03 | 2001-11-02 | 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 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7162619B2 (zh) |
CN (1) | CN1249575C (zh) |
TW (1) | TW526451B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
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 |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
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 |
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 |
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 |
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 |
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 |
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
US8578134B1 (en) * | 2005-04-04 | 2013-11-05 | Globalfoundries Inc. | System and method for aligning change-of-flow instructions in an instruction buffer |
US7747088B2 (en) * | 2005-09-28 | 2010-06-29 | Arc International (Uk) Limited | System and methods for performing deblocking in microprocessor-based video codec applications |
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US20080040576A1 (en) * | 2006-08-09 | 2008-02-14 | Brian Michael Stempel | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set |
JP4383496B1 (ja) * | 2008-09-29 | 2009-12-16 | Necエレクトロニクス株式会社 | マイクロコンピュータ及びその命令実行方法 |
US8180995B2 (en) * | 2009-01-21 | 2012-05-15 | Micron Technology, Inc. | Logical address offset in response to detecting a memory formatting operation |
US8423751B2 (en) * | 2009-03-04 | 2013-04-16 | Via Technologies, Inc. | Microprocessor with fast execution of call and return instructions |
CN101833436B (zh) * | 2009-05-19 | 2013-04-17 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
US10180841B2 (en) | 2014-12-22 | 2019-01-15 | Centipede Semi Ltd. | Early termination of segment monitoring in run-time code parallelization |
CN105892992B (zh) * | 2015-01-26 | 2018-05-08 | 安一恒通(北京)科技有限公司 | 用于反编译定位的方法、装置及应用 |
US10296350B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences |
US10296346B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences based on pre-monitoring |
WO2016169518A1 (zh) * | 2015-04-23 | 2016-10-27 | 上海芯豪微电子有限公司 | 一种基于指令和数据推送的处理器系统和方法 |
US10255074B2 (en) * | 2015-09-11 | 2019-04-09 | Qualcomm Incorporated | Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt |
US10901940B2 (en) | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US20180129500A1 (en) * | 2016-11-06 | 2018-05-10 | Centipede Semi Ltd. | Single-thread processing of multiple code regions |
CN113986128B (zh) * | 2021-10-26 | 2024-05-28 | 杭州宏杉科技股份有限公司 | Lun数据复制方法及装置 |
US20240028339A1 (en) * | 2022-07-25 | 2024-01-25 | Apple Inc. | Using a Next Fetch Predictor Circuit with Short Branches and Return Fetch Groups |
Family Cites Families (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US604459A (en) * | 1898-05-24 | Electric meter | ||
US635549A (en) * | 1899-02-16 | 1899-10-24 | Robert W Inglis | Permutation-lock. |
IT1000638B (it) * | 1973-12-28 | 1976-04-10 | Olivetti & Co Spa | Calcolatore elettronico con dispo sitivo di deviazione dei micropro grammi |
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 |
DE69227465T2 (de) * | 1992-02-27 | 1999-06-10 | Samsung Electronics Co. Ltd., Suwon, Kyungki | Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen. |
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 |
US5553248A (en) * | 1992-10-02 | 1996-09-03 | Compaq Computer Corporation | System for awarding the highest priority to a microprocessor releasing a system bus after aborting a locked cycle upon detecting a locked retry signal |
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 |
SG47981A1 (en) * | 1994-03-01 | 1998-04-17 | Intel Corp | Pipeline process of instructions in a computer system |
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 |
US5815726A (en) * | 1994-11-04 | 1998-09-29 | Altera Corporation | Coarse-grained look-up table architecture |
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 |
SE515339C2 (sv) * | 1999-12-16 | 2001-07-16 | Propel Ab | Användning av en värmbar matta för tillverkning av en ortos |
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 |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | 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 |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
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 |
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 |
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 |
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 |
-
2001
- 2001-07-03 US US09/898,583 patent/US7162619B2/en not_active Expired - Lifetime
- 2001-11-02 TW TW090127266A patent/TW526451B/zh not_active IP Right Cessation
-
2002
- 2002-03-07 CN CNB021071071A patent/CN1249575C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US20050198481A1 (en) | 2005-09-08 |
CN1249575C (zh) | 2006-04-05 |
US7162619B2 (en) | 2007-01-09 |
CN1375767A (zh) | 2002-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
TW530205B (en) | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap | |
KR100880686B1 (ko) | 2개 레벨의 분기 예측 캐시를 갖는 분기 예측 | |
US6106573A (en) | Apparatus and method for tracing microprocessor instructions | |
EP0957428B1 (en) | Method and apparatus for fetching non-contiguous instructions in a data processing system | |
US7133969B2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
US20050125632A1 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US5951675A (en) | Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch | |
US6499097B2 (en) | Instruction fetch unit aligner for a non-power of two size VLIW instruction | |
US20090024842A1 (en) | Precise Counter Hardware for Microcode Loops | |
US5765016A (en) | Reorder buffer configured to store both speculative and committed register states | |
US11403103B2 (en) | Microprocessor with multi-step ahead branch predictor and having a fetch-target queue between the branch predictor and instruction cache | |
US7366885B1 (en) | Method for optimizing loop control of microcoded instructions | |
US6192468B1 (en) | Apparatus and method for detecting microbranches early | |
US5987235A (en) | Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions | |
US5903910A (en) | Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline | |
EP2122462B1 (en) | Distributed dispatch with concurrent, out-of-order dispatch | |
US6314509B1 (en) | Efficient method for fetching instructions having a non-power of two size | |
US5859992A (en) | Instruction alignment using a dispatch list and a latch list | |
JP3207173B2 (ja) | 命令バッファへのロードを行うための方法および装置 | |
US6321325B1 (en) | Dual in-line buffers for an instruction fetch unit | |
US5854912A (en) | Flexible resource access in a microprocessor | |
US6175909B1 (en) | Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment | |
US6957322B1 (en) | Efficient microcode entry access from sequentially addressed portion via non-sequentially addressed portion | |
TW564369B (en) | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent | ||
MK4A | Expiration of patent term of an invention patent |