TWI242744B - Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition - Google Patents

Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition Download PDF

Info

Publication number
TWI242744B
TWI242744B TW093100763A TW93100763A TWI242744B TW I242744 B TWI242744 B TW I242744B TW 093100763 A TW093100763 A TW 093100763A TW 93100763 A TW93100763 A TW 93100763A TW I242744 B TWI242744 B TW I242744B
Authority
TW
Taiwan
Prior art keywords
instruction
cache
branch
address
target address
Prior art date
Application number
TW093100763A
Other languages
English (en)
Other versions
TW200416603A (en
Inventor
Thomas C Mcdonald
Original Assignee
Ip First Llc
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 Ip First Llc filed Critical Ip First Llc
Publication of TW200416603A publication Critical patent/TW200416603A/zh
Application granted granted Critical
Publication of TWI242744B publication Critical patent/TWI242744B/zh

Links

Landscapes

  • Advance Control (AREA)

Description

1242744 __ ^ >1 Hf___ 五、發明說明(1) 發明所屬之技術領域 本發明是有關於一種微處理器之分支預測(branch p r e d i c t i ο η ),且特別是有關於一種利用預測性分支目標 位址快取之分支預測。 先前技術 現代的微處理器都是管線化之微處理器。亦即,在微 處理器之不同方塊或管線階段中,可同時操作數個指令。 由John L. Hennessy 與David A. Patterson 在其著作:電
腦架構:量化法(Computer Architecture: A
Quantitative Approach)(由摩根霍夫曼出版社(加州,舊 金山)在1996所出之第二版)中,定義管線為:,,在執行 =,多個指示彼此重疊之實施技術。其提供管線之絕佳描 述: 各牛:iim 車輛裝配線中,有許多步驟, 各步驟對車輛之組裝做出某些貢獻。 各步驟之操作平行於其他其不冋車輛, 管線完成指令之一部份。類:於=:;中,管線之各 平行之不同指令之不同部份。各=驟π —同步驟完成了 部份。這些階段彼此相連以形^線冉,=線階段或管線 經由這些階段處理,並在另—4曰々從一端進入, 理車輛般。 r顆,〗出,就如同裝配線處 同步微處理器係根據時 各時脈周期,指令從該微處 一階段。在車輛裝配線中, 脈周期而操作。 理器之管線之一 如果因為沒有車 一般而言,在 階段前進至另 輛要裝配使得
1242744 五、發明說明(2) 線上工作員處於閒置,則該線之產量或性能會下降。相似 的,如果在一時脈周期中,某一微處理器之管線因為沒有 指令要操作而處於閒置,通常指此狀態為管線氣泡,則該 微處理器之性能會下降。 造成管線氣泡之可能原因之一是分支指令。當處理分 支指令時,處理器必需決定該分支指令之目的位址並開始 在該目標位址處而非在該分支指令後之下一位址處擷取指 令。甚至,如果該分支指令是一狀況分支指令(亦即’必 需根據一特定狀況是否存在而決定該分支是否要執行)’ 除了決定該目標位址外,該處理器更必需決定該分支指令 是否要執行。因為最後決定該目標位址及/或分支結果(亦 即分支是否要執行)之該管線階段通常處於指令擷取階段 之下方,可能會產生氣泡。 為解決此問題,現代微處理器一般應用分支預測機制 以在管線之早期預測目標位址與分支結果。分支預測機制 之一例是分支@標位址快取(branch target address c a c h e,B T A C ),其平行於從該微處理器之一指令快取擷取 指令而預測該分支結果與目標位址。當微處理器執行分支 指令且最後決定要執行該分支與決定其目標位址時,該分 支指令之位址與其目標位址係寫入至該B T A C内。下次從該 指令快取擷取該分支指令時,該分支指令位址會命中於該 BTAC内且該BTAC可在管線早期輸出該分支指令目標位址。 有效的B T A C可排除或減少要等待分支指令決定之氣泡 數量,以改善處理器性能。然而,當該BTAC預測錯誤時,
12830twf1.ptd 第8頁 1242744 五、發明說明(3) ----- 錯誤擷取指令之管線之部份必泰、 確指令,當指令放棄與榻取 %被放棄,以及必需擷取正 泡。當微處理器之營線更、、業二走時,會在管線内造成氣 性能之關鍵處。 /寸,BTAC之有效性更會是影響 BTAC之有效性主要是BTa 命中率之因素之一是复所戗六之命中率之作用。影響btac 量。儲存更多的分支指令ί ί /目標位址之不同分支指令數 在微處理器晶片面積蝻是有=立址,BTAC更有效。然而, 方塊(比如之面限影因二^ 素是將目標位址與相關眘切二響只際面積之一因 小。U,輩迫曰? 儲存於BTAC内之儲存晶胞之大 特別疋早埠曰曰胞之面積小於多埠晶胞之面積。 =胞^旦巧之BTAC在一既定時脈周期内只能讀或寫,無法 二蚪進行讀寫,但由多埠晶胞組成之BTAC可在—卩无定& 周期内同日:進行讀寫。然而’多埠BTAC之面積大於單埠 。這思味著,假設給定BTAC之被允許實際面積多埠 AC可儲存之目標位址數量必需小於單埠^…可 ,位址數量,因而會降低BTAC之有效性。因此,由^ 來看,單埠BTAC是較佳的。 規”、占 然而,由於單埠BTAC在一既定時脈周期内只能讀 寫,無法同時進行讀寫,此事實會因為偽性未命中 而降低BTAC有效性。在”虹需要被讀取之周 ^ ^BTAC正被寫入,比如利用新目標位址來更新打 要使某一目標位址無效時,會發生偽性未一 下,BTAC必需對該讀取產生未命中,因為其無法供給^能
1242744 五、發明說明(4) 已存在於BTAC内之該目標位址,因為該BTAC正被寫入。 因而,需要一種能降低單埠BTAC内之偽性未命中之方 法與裝置。 可能會降低BTAC有效性之另一現象是BTAC會多次儲存 分支指令之目標位址。此現象可能發生於多向指令集聯^ (multi—way set-associative)BTAC内。因為BTAC空間 限,多餘的目標位址儲存會降mBTAC有效性,因為多飲 BTAC項目可儲存另一分支指令之目標位址。管線愈長;'' 即階段數愈大’多餘目標位址愈可能會存於内。 辟之Ξ: ΐ i Ϊ令ί BTAf:被多次快取之最常見情況是在 碼之緊湊迴圈内。弟-次執行分支指令且其 入至該BTAC ,比如寫至2向,因氧9 & 3曰々主 单馬 四為」向疋取久未用。鋏而,
在目標位址寫入至BTAC之前"分支指令;: BTAC查調未命中之該指令快取掏取位址’因$ $ H 尚未寫入至該BTAC内。接著,會將目標位址㊁工= 該BTAC。如果在該指令集内插人不 寫=
造成2向不再是最久未用,則另A „上! I 力一向,比如1向,合祜撰槎 成第二次寫入該目標位址。現在,同—分支指令
址一次存在於5亥BTAC内。!4是—種BTAC BTAC有效性,因為第二次寫入卵亦处a费貧,賈且曰丨牛低 之有效目標位址。 〜艮可-會覆盍另-分支指令
空間 測性 因此,需要一種能避 餘快取所造成之有用BTAC 甚至,相關於BTAC預 一分支指令之目標位址之多 浪費之方法與裝置。 之某些情況之級合會造成微
弟10頁 1242744 五、發明說明(5) 處理内之死結。B T A C之分支預測之組合,跨越指令快取邊 界線之分支指令,以及處理器匯流排會交易預測性指令擷 取之事實,會造成錯誤情況,導致某些情況下之死結。 因而,需要一種能避免應用預測性BTAC之微處理器内 之死結情況之方法與裝置。 發明内容 本發明提供一種解決微處理器中分支目標位址快取 (BTAC )死結提取條件之裝置與方法,此一分支目標位址快 取預測一分支指令的目標位址也許會跨越快取線的邊界。 在一觀點中,本發明提供一微處理器内具有一推測分支目 標位址快取(BTAC)之一死結避免裝置,該裝置包括: 一第一信號產生模組,用以指示一指令快取記憶體中的一 提取位址未命中,其中該提取位址係由該分支目標位址快 取所提供之一推測分支指令目標位址。該裝置又包括一第 二信號產生模組,用以指示該分支指令跨越兩條快取線。 該裝置還包括一第三信號產生模組,用以指示該分支目標 位址快取預測該分支指令並未跨越兩條快取線,其中該兩 條快取線之一第二快取線因此而並未提取。該裝置更包括 一控制邏輯電路,耦合至該第一、第二及第三信號產生模 組,以回應於該第一、第二及第三信號產生模組的真值指 示而將該分支目標位址快取内之該目標位址無效。 在另一觀點中,本發明提供一種避免死結條件之管線 微處理器,該微處理器包括一分支目標位址快取,用以提 供一分支指令之一推測目標位址以回應一指令快取提取位
12830twfl.ptd 第11頁 1242744 五、發明說明(6) 址,該微處理器也包括一控制邏輯電路,耦合至該分支目 標位址快取,以回應於一偵測條件而將該分支目標位址快 取内之該推測目標位址無效,其中該偵測條件為在該指令 快取記憶體回應該提取位址而提供一第一快取線之後,該 推測目標位址產生未命中,其中該第一快取線僅含有一部 份的該分支指令,同時該分支目標位址快取錯誤地預測該 分支指令完全存在於該第一快取線中而導致含有該分支指 令另一部份的一第二快取線並未從該指令快取記憶體中提 取° · 在又一觀點中,本發明提供一種避免微處理器内死結 條件的方法,該微處理器包含有一指令快取記憶體及一推 ·_ 測分支目標位址快取。該方法係包括產生一推測目標位址 部分存在於由該指令快取記憶體中的一第一快取線以回應 使用於該分支目標位址快取的一第一提取位址,該方法且 包括提供該目標位址作為一第二提取地址給該指令快取記 憶體而沒有提取該第一快取線之後的下一快取線,以回應 該部分存在於由該指令快取記憶體中的一第一快取線以回 應完全存在於該第一快取線中的該分支目標位址快取預測 之該分支指令,該方法又包括判斷該分支目標位址快取錯 誤地預測該分支指令完全存在於該第一快取線中,該方法 另包括偵測一未命中於該指令快取記憶體中的該目標位 址,該方法還包括將該分支目標位址快取内之該目標位址 _ 無效以回應於該判斷與該偵測。 _ 在另一觀點中,本發明提供一種可以執行避免死結條
12830twf1.ptd 第12頁 1242744 #換員Ί 沪日丨 _ 五、發明說明(7) 件之電腦可讀取程式碼的儲存媒體,包括電腦可讀式程式 碼,提供給一微處理器,該程式碼包括第一程式碼,提供 一分支目標位址快取(B T A C )’及提供一分支指令之一推測 目標位址以回應於一指令快取提取位址,該程式碼也包括 第二程式碼’提供給輕接至一分支目標位址快取(β T a C )之 控制邏輯電路’將該分支目標位址快取中的該推測目標位 址無效以回應一偵測條件,其中在該指令快取記憶體提供 一第一快取線以回應該提取位址後,該推測目標位址未命 中該指令快取記憶體,其中該第一快取線僅包含一第一部 分的該分支指令,以及該分支目標位址快取錯誤地預測該 分支指令完全存在於該第一快取線中,以至於包含該分支 指令的一第二部分的一第二快取線未被從該指令快取記憶 體中提取。 在另一觀點中,本發明提供一種可以執行避免死結條 件之電腦可讀取程式碼的儲存媒體,包括電腦可讀式程式 碼,提供給一具有一推測分支目標位址快取(B T A C )之一死 結避免裝置的一微處理器,該程式碼包括第一程式碼,提 供一第一信號用以指示一指令快取記憶體中的一提取位址 未命中,其中該提取位址係由該分支目標位址快取所提供 之一推測分支指令目標位址,該程式碼也包括第二程式 碼,提供一第二信號,用以指示該分支指令跨越兩條快取 線,該程式碼又包括第三程式碼,提供一第三信號’用以 指示該分支目標位址快取預測該分支指令並未跨越兩條快 取線,其中該兩條快取線之一第二快取線因此而並未提
12830twf1.ptd 第13頁
1242744 五、發明說明(8) 取,該程式碼還包括第四程式碼提供給一控制邏輯電路, 耦合至該第一、第二及第三信號,以回應於該第一、第二 及第三信號的真值指示而將該分支目標位址快取内之該目 標位址無效。 本發明之優點在於,能夠使得採用此一分支目標位址 快取預測一分支指令的目標位址可以跨越快取線的邊界的 微處理器提供正確的程式設計操作。 為讓本發明之上述和其他目的、特徵、和優點能更明 顯易懂,下文特舉一較佳實施例,並配合所附圖式,作詳 細說明如下: 實施方式: 現參考第1圖,顯示根據本發明之一微處理器1 〇 〇之方 塊圖。該微處理器1 0 0包括一管線微處理器。 微處理器1 0 0包括一指令擷取器1 0 2。指令擷取器1 0 2 係從耦合至該微處理器1 0 0之一記憶體(比如,系統記憶 體)擷取出指令1 3 8。在一實施例中,指令擷取器1 0 2從快 取線之基本單位中之記憶體擷取指令。在一實施例中,指 令是長度可變式指令。亦即,微處理器1 0 0之指令集内之 所有指令之長度都不相同。在一實施例中,微處理器1 〇 〇 包括指令集本質上相容於指令長度可變之X 8 6架構指令集 之一微處理器。 微處理器1 0 0也包括一指令快取1 0 4,耦合至指令擷取 器1 0 2。指令快取1 0 4接收指令擷取器1 0 2輸出之指令位元 組之快取線並快取該微處理器1 0 0後續所用之指令快取
12830twf1.ptd 第14頁 1242744 五、發明說明(9) 線。在一實施例中,指令快取1 0 4包括6 4 K B之4向指令集聯 合L 1快取。當一指令未命中於該指令快取1 0 4内時,指令 快取1 0 4會通知指令擷取器1 0 2,其回應地從記憶體擷取包 括該未命中指令之該快取線。一目前擷取位址1 6 2輸入至 指令快取1 〇 4以選擇快取線。在一實施例中’指令快取1 〇 4 内之快取線包括3 2位元組。指令快取1 0 4也產生一指令快 取閒置信號1 5 8。當指令快取1 0 4閒置時,指令快取1 0 4產 生為真值之指令快取閒置信號1 5 8。當指令快取1 0 4未被讀 取時,指令快取1 0 4會閒置。在一實施例中’如果指令快 取104未被讀取,則該微處理器之BTAC142(將於底下詳細 討論)也未被讀取。 微處理器1 0 0也包括一指令缓衝器1 0 6,耦合至指令快 取1 0 4。指令緩衝器1 〇 6從指令快取1 0 4接收指令位元組之 快取線並暫存該些快取線直到其被規格化成可被微處理器 1 0 0執行之明確性指令。在一實施例中,指令緩衝器丨〇 6包 括4個項目(entry)以儲存高達4條的快取線。指令緩衝器 1 0 6產生指令緩衝器全滿信號丨5 6。當指令緩衝器丨〇 6全滿 時令緩衝器1 0 6產生為真之指令緩衝器全滿信號丨5 6。 在一貫施例中’如果指令緩衝器丨〇 6全滿,則B T a c丨4 2不能 被讀取。 /微處理器1 0 0也包括一指令規格化器1 0 8,耦合至指令 緩衝器10 6。指令規格化器丨〇 8從指令緩衝器丨〇 6接收指令 位元組並彳文而產生規格化指令。亦即,指令規格化器丨〇 8 檢視指令緩衝器丨06内之一串指令位元組,決定哪些位元
12830twf1.ptd 第15頁 1242744 五、發明說明(10) 組包括下一指令與其長度,並輸出下一指令與其長度。在 一實施例中,規袼化指令包括本質上相容於X 8 6架構指令 集之指令。 指令規格化器丨〇 8也包括產生分支目標位址之邏輯電 路,稱為取代預測目標位址1 7 4。在一實施例中,分支目 標位址產生邏輯電路包括一加法器,將一相對分支指令之 偏差加至分支指令位址以產生取代預測目標位址1 7 4。在 一實施例中,該邏輯電路包括一分支目標緩衝器以產生間 接分支指令之目標位址。在一實施例中,該邏輯電路包括 一呼叫/回傳堆疊,以產生呼叫與回傳指令之目標位址。 指令規格化器1 0 8也包括一預測取代信號1 5 4。指令規格化 器1 0 8產生為真之預測取代信號1 5 4以取代該微處理器1 0 0 内之BTAC1 42所做之分支預測,將於底下詳細描述。亦 即,如果指令規格化器1 0 8内之邏輯電路所產生之目標位 址不符合BTAC1 42所產生目標位址,則指令規格化器1 08產 生為真之預測取代信號154以使得該BTAC 142之預測所擷取 之指令被放棄並使得微處理器1 0 0分支至該取代預測目標 位址1 7 4。在一實施例中,在指令被放棄且微處理器1 〇 0分 支至該取代預測目標位址174之時間内,BTAC 142不能被讀 取。 微處理器1 〇 〇也包括一規格化指令佇列1 1 2,耦合至指 令規格化器1 0 8。規格化指令佇列1 1 2接收從指令規格化器 1 〇 8輸出之規格化指令並暫存該些規格化指令直到其被轉 譯成微指令。在一實施例中,規格化指令佇列1 1 2包括儲
12830twf1.ptd 第16頁 ? 1 .夕 ? 1 .夕 1242744 五、發明說明(11) 目,雖然第1 2圖只顯示出4個 存高達1 2個規格化指令之 項目。 器。1(10也包括—栺令轉譯器114,耦合至規格化 ,7 τ 日令轉澤器1 1 4將存於該規格化指令仔列 乂上1ΪΓ匕指令轉譯成微指令。在-實施例中,微 處理益100包括精簡指令集電腦(reduced instruction computer,RISC)核心,其執行本身或精 微指令。 ▲韓ί ί iTr t 一轉譯後指令仔列116,麵合至指 1。轉澤後指令佇列1 1 6接收從指令轉譯器1 1 4 ,來之轉譯後微指令並暫存該些微指令 σ
處理器之管線執行為止。 饭八餘U 微處理器1 0 0也包括一暫存器階段丨丨8,耦合至 指^佇列1 1 6。暫存器階段丨丨8包括複數暫存器以儲^人 運算子與結果。暫存器階段丨丨8包括使用者可視暫曰7 案以儲存微處理器1 〇 〇之使用者可視狀態。 田 小土處理态1 0 〇也包括一位址階段1 2 2,耗合至暫广即比 段1 1 8。位址階段丨2 2包括位址產生邏輯電路,產 ^ =階 存取指令(比如載入或儲存指令及分支指令)之記憶^ =體 微處理器1 0 0也包括一資料階段丨2 4,耦合至位址 凡 1 2 2。資料階段1 2 4包括從記憶體載入資料之邏輯電自段 取從記憶體所載入資料之一或多快取。 及快 微處理器1 0 0也包括一執行階段1 2 6,耦合至眘^L μ 王貝枓階段
12830twfl.ptd 第17頁 1242744 五、發明說明(12) 1 2 4。執行階段1 2 6包括執行指令之執行單元,比如執行算 數與邏輯指令之算數與邏輯單元。在一實施例中,執行階 段1 2 6包括整數執行單元,浮點執行單元,μ μ X執行單元與 SSE執行單元。執行階段丨26也包括分支指令決定邏輯電 路。特別是,執行階段1 2 6決定分支指令是否要執行及 BTAC 1 4 2先前誤測之分支指令是否要執行。此外,執行階 段1 2 6決定B T A C 1 4 2先前預測之分支目標位址是否被 B T A C 1 4 2誤測’亦即是否不正嫁。如果執行階段1 2 6決定先 前分支預測是不正確的,執行階段1 2 6產生為真值之分支 誤測#號1 5 2,以使得由於b T A C 1 4 2誤測所擷取之指令被放 棄且使得該微處理器1 〇 〇分支至該正確位址丨7 2。在—實施 例中,在指令被放棄且使得該微處理器丨〇 〇分支至該正確 位址172之期間内,BTAC 142不能被讀取。 微處理器1 0 〇也包括一儲存階段丨2 8,耦合至執行階段 1 2 6。儲存階段1 2 8包括回應於儲存微指令而將資料存至記 憶體之邏輯電路。儲存階段1 2 8產生一正確位址丨7 2。正確 位址1 72包括分支指令之正確分支目標位址。亦即,正確 位址1 72是分支指令之非預測性目標位址。當執行與確定 分支指令時,正確位址172也寫入至BTAC142,這將於 詳細描述。儲存階段128也產生一BTAC寫入要求176争 BTAC 1 42。BTAC寫入要求1 76將參考第γ圖做詳細描述。, 微處理器100也包括一寫回階段132,耦合至儲存階段 1 2 8。寫回階段1 3 2包括將指令結果寫至暫存器階段丨丨8之 邏輯電路。
12830twfl.ptd 第18頁 1242744 五、發明說明(13) 微處理器1 〇〇也包括BTAC1 42。BTAC1 42包括可快取目 標位址與其他分支預測資訊之快取記憶體。BTAC 1 4 2回應 於攸一多工器1 4 8接收之一位址1 8 2而產生一預測目標位址 1 6 4。在一實施例中,B T A C 1 4 2包括單埠快取記憶體,被 BTAC142之讀取與寫入存取所共享,因而使得BTAC142有偽 性未命中(false miss)之機率。BTAC142與多工器148將於 底下詳述。 微處理器1 0 0也包括一第二多工器1 3 6,耦合至 BTAC142。多工器136選擇6個輸入之一以輸出成一目前擷 取位址1 6 2。輸入之一是由一加法器1 3 4所產生之一下一擷 取位址1 6 6,加法器1 3 4對目前擷取位址1 6 2加上快取線之 大小以產生該下一擷取位址1 6 6。在從指令快取1 0 4正常擷 取一快取線後,多工器1 3 6選擇該下一擷取位址1 6 6以輸出 成該目前擷取位址162。另一輸入是目前擷取位址162。另 一輸入是BTAC預測目標位址1 64,如果BTAC1 42指示一分枝 指令存在於從該指令快取1 〇 4之該目前擷取位址1 6 2所擇出 之該快取線内且BTAC 1 4 2預測出該分支指令要被執行,則 多工器136選擇BTAC預測目標位址164。另一輸入是從儲存 階段1 2 8接收之正確位址1 7 2,多工器1 3 6選擇正確位址1 7 2 以校正一分支誤測。另一輸入是從指令規格化器1 〇 8接收 之取代預測目標位址1 7 4,多工器1 3 6選擇該取代預測目標 位址1 7 4以取代該B T A c測試目標位址1 6 4。另一輸入是一目 前指令指標1 6 8 ’其指向目前正被該指令規格化器1 〇 8規格 化之指令之位址。多工器1 3 6選擇該目前指令指標1 6 8以避
12830twfl.ptd 第 19 頁 1242744 五、發明說明(14) 免死結情況,如下述。 微處理器1 0 0也包括一 B T A C寫入佇列(B w Q ) 1 4 4,耦合 至BTAC142 °BTAC寫入佇列144包括複數儲存元件以暫存 BTAC寫入要求176 ’直到其可被寫入至BTAC142為止。BTAC 寫入仔列144接收該分支誤測信號丨52,該預測取代信號 1 5 4 ’该指令緩衝器全滿信號丨5 6,與該指令快取閒置信號 1 58。有利的是’ BTAC寫入佇列丨44能利用BTAC寫入要求 176來延遲BTAC142之更新,直到輸入信號152〜158所指示 之適當時間,亦即BTAC 142未被讀取之時間,以增加 BTAC142之效率,將於底下詳述。 BTAC寫入佇列144產生一 BTAC寫入佇列位址178,其輸 ^ ^夕工為1 48。BTAC寫入佇列1 44也包括儲存一目前佇列 /木二之一暫存器。佇列深度丨46指出目前存於BWQ1 44内 之有—效fTAC寫人要求176之數量。件列深度146之初始值為 。母-人將一BTAC寫入要求176存至BTAC寫入 1歹==6都會增加。每次將一 btau人要求176從 :麻下ί叫宁列深度146都會減少。BTAC寫人仔列將 农低卜時*述。 邱於ί第2圖’顯示根據本發明之第1圖之微處理器之 :二二田夕塊圖。第2圖顯示BTAC寫入件列144,BTAC142
CbtacW*器148 ’另增加一仲裁器2 0 2,以及耦合於 =缺镇〗岡,列114與該BTAC142間之3~輸入多工器2〇6。 •、'l 圖之夕工器1 4 8只接收2個輸入,多工器丨4 8是4 一輸 入多工器,如第2圖所示。如第2圖所示,BTAC^ 428包 1 一輸
12830twf1.ptd 第20頁
十 -j 〇ti C : 3 iK v; 1242744 五、發明說明(15) 讀/寫輸入,一位址輸入與一資料輸入。 如第1圖所示,多工器1 4 8接收該目前掘取位址1 6 2與 該B W Q位址1 7 8。此外’多工器1 4 8也接收一多餘τ a位址2 3 4 與一死結位址2 3 6,將分別參考第1 〇 — ;[ }圖與第丨2 —丨3圖做 詳細描述。多工器1 4 8根據該仲裁器2 〇 2所產生之一控制信 號2 5 8而選擇其4個輸入之一以輸出成第1圖之一位址資料 1 82,該位址資料1 82係輸入至該BTAC1 42之該位址輸入。 該多工器2 0 6接收一多餘τ A資料信號2 4 4與一死結資料 4吕號2 4 6,將分別參考第1 〇 — 1 1圖與第1 2 _ 1 3圖做詳細描 述。多工器2 0 6也接收從該BTAC寫入佇列144傳來之一BWQ 資料信號2 4 8,其為該目前BTAC寫入佇列144需要 BTAC142之資料。多工器2 0 6根據該仲^器2 0 2;f/生^一 控制k號2 6 2而選擇三個輸入之一以輸出成一資料信號 256,其輸入至該BTAC142之資料輸入。 仲裁器g02仲裁對該BTAC142要求存取之複數來源。當 BTAC142被讀或寫時,仲裁器202產生一信號252至該 BTAC142之該讀/寫輸入以控制之。仲裁器2〇2接收一BTAC 項取要求信號2 1 2,其代表平行於也利用目前擷取位址丨6 2 而對指令快取104之讀取之利用目前擷取位址162而讀取 BTAC142之一要求。仲裁器202也接收一多餘目標位址(TA) 要求信號214,其代表要無效該^仳142内之該多餘TA位址 234所選扎令集内之相同分支指令之_多餘項目之一要 求’將於底下描述。仲裁器2 〇 2也接收一死結要求信號 2 1 6 ’其代表要將誤測該死結位址2 3 6所選之指令集内之一
12830twf1.ptd 第21頁 i J.h i J.h 2d 1242744 五、發明說明(16) 分支指令未跨越快取邊界線之該β TA c丨4 2内之一項目無效 化之一要求’將於底下描述。仲裁器2()2也接收從該BTAC 寫入佇列144輸出之一BWQ非空信號218,其代表有待處理 之至少一要求以更新該Bwq位址丨78所選指令集内之該 BTAC142内之一項目’這將於底下描述。仲裁器2〇2也接收 ,該BTAC寫入佇列144輪出之一BWQ全滿信號2 2 2,其代表 該BTAC寫入佇列144填滿了要更新該BWq位址178所選指令 集内之泫B T A C 1 4 2内之一項目之待處理要求,將於底下描 述。 一 在一實施例中,仲裁器2 0 2指定優先權,如底下表i所 示,其中1代表最高優先權而5代表最低優先權: 1-死結要求216 2 - BMQ 全滿 222 3- BTAC讀取要求212 4- 多餘TA要求214 5- BWQ 非空2 1 8 現參考第3圖’顯示根據本發明之第1圖之btac142之 詳細方塊圖。如第3圖,該BTAC 142包括一目標位址陣列 3 0 2,一標籤陣列3 0 4,與一計數器陣列3 〇 6。各陣列3 〇 2, 3 0 4與3 0 6接收第1圖之位址182。第3圖之實施例顯示4向指 令集聯合B T A C 1 4 2快取記憶體。在另一實施例中,b τ a C 1 4 2 包括2向指令集聯合快取記憶體。在一實施例中,該目標 位址陣列3 0 2與該標籤陣列3 0 4是單埠,但計數器陣列3 〇""6 疋具有一璜取埠與一寫入埠之雙埠,因為計數器陣列3 〇 6
12830twf1.ptd 第22頁
12830twfl.ptd 第23頁 1242744 五、發明說明(18) 列項目3 1 2之内容。 該目標位址陣列項目3 1 2包括一分支目標位址(T A ) 4 0 2。在一實施例中,目標位址4 0 2包括3 2 -位元位址,從 分支指令之先前執行快取得。BTAC1 42提供關於預測τA輸 出1 6 4之目標位址4 〇 2。 該目標位址陣列項目3 1 2也包括一開始攔位4 0 4。開始 欄位4 0 4代表回應於該目前擷取位址1 6 2而從該指令快取 1 〇 4輸出之一快取線内之該分支指令之第一位元組之位元 組偏差(b y t e 〇 f f s e t )。在一實施例中,一快取線包括3 2 位元組;因此,開始欄位4 〇 4包括5位元。 該目標位址陣列項目3 1 2也包括一跨越(wrap)位元 4 0 6 °如果該預測分支指令係跨越指令快取丨〇 4之兩快取線 的話’跨越位元4 0 6為真。BTAC142提供關KB_wrap信號 1214之跨越位元4 06,將參考第12圖而於底下討論。 請參考第5圖,顯示根據本發明之第3圖之標籤陣列項 目3 1 4之内容。 該標籤陣列項目3 1 4包括一標籤5 0 2。在一實施例中, 標戴5 0 2包括該分支指令之位址之南階2 0位元’該分支指 令使該目標位址陣列3 0 2内之相關項目儲存一預測目標位 址4 0 2。如果該項目為有效的話,BT A C 1 4 2比較標籤5 〇 2與 第1圖之位址1 8 2之高階2 0位元以決定該項目是否叹配於位 址182,亦即位址182是否命中於BTAC 142内。 該標籤陣列項目3 1 4也包括一 A有效位元5 0 4,如果該 目標位址陣列3 〇 2内之相關項目之A部份内之該目標位址
12830twfl.ptd 第24頁 1242744 / __ X 94. 5. 2 4 五、發明說明(19) 4 0 2為有效的話,a有效位元5〇4為真。該標籤陣列項目314 也包括一B有效位元5 0 6,如果該目標位址陣列3〇2内之相 關項目之B部份内之該目標位址4〇2為有效的話, 位元5 0 6為真。 該標籤陣列項目314也包括一3—位元lriI攔位5〇8,其 指不所,指令集之該4向之哪一向是lru(Least RecenUy Used,最久未用)。在一實施例中,當執行BtAC*支時, B T A C 1 4 2八更新該1 r u攔位5 〇 8。亦即,只有當Β τ a c 1 4 2預測 一分支指令將被執行且該微處理器丨〇 〇根據預測而分支至 該BTAC142所提供之該預測目標位址164時,BTAC142才會 更新忒1 r u攔位5 0 8。當B T A C分支正被執行時,於Β τ a ◦ 1 4 2 未被讀取且不需要使用BTAC寫入佇列144之期間内, BTAC142會更新lru欄位5 0 8。 請參考第6圖,顯示根據本發明之第3圖之計數器陣列 項目3 1 6之内容。 計數器陣列項目3 1 6包括一預測狀態a計數器6 〇 2。在 一實施例中,該預測狀態A計數器6 0 2是2-位元飽和計數 為’母次该微處理裔1 0 0決疋要執行相關分支指令時,其 往上計數;每次不執行相關分支指令時,其往下計數。往 上计數時’該預測狀怨A计數器6 0 2飽和於b ‘ 1 1之二進位 值;往下計數時,該預測狀態A計數器6 0 2飽和於b ‘ 0 0之二 進位值。在一實施例中,如果該預測狀態A計數器6 0 2之值 是b ‘ 1 1或b ‘ 1 0,則B T A C 1 4 2預測相關於所選目標位址陣列 項目3 1 2之A部份之分支指令要被執行;否則,b T A C 1 4 2預
12830twf1.ptd 第25頁 1242744
測分支指令不要被執行0 〇 測狀態Β計數器6 Ο 4,1摔^,态陣列項目3 1 6也包括一預 6〇2,但其相關於所選、目W目似f該預測狀態A計數器 位元6〇6内之b‘丨之二進位也匕/ 一 A/Blru位元606 °A/Blru 312之A部份是最久未用.表所選目標位址陣列項目 目312之B部份是最久^用^,則是所選目標位址陣列項 達合決定八主:用。纟-實施例中’當分支指令到 i18V,二 f - fn分支要執行與否)之該儲存階段 604二起被更1。Γ — L連同該預測狀態A與B計數器6〇2與 I被更斤在貫施例中,更新計數器陣列項目3 i 6 不而要使用到BTAC寫入佇列144,因為計數器陣㈣ 一讀取埠與一寫入槔,如第3圖所示。 現請參考第7圖,顯示根據本發明之第1圖之btac 要求176之内容。第7圖顯示輸入至BTAC寫入佇列144之·、 BTAC寫入要求信號176内之由儲存階段128所產生之用於更 新一 BTAC142之項目之資訊,其也是存於BTAC寫入佇列、144 之項目内之内容,如第8圖所示。 BTAC寫入要求176包括一分支指令位址搁位了 〇2,苴是 要更新該BTAC142之先前執行分支指令之位址。當該寫入 要求176接者更新BTAC142時,分支指令位址攔位古 階2 0位元係存至第5圖之標籤陣列項目3 1 4之標鐵棚位问 5 0 2。分支指令位址攔位7 0 2之低階7位元[1 1 : 5 ]係當成 BTAC 1 42之索引。在一實施例中,分支指令位址攔位7〇2是 3 2 -位元爛位。
12830twf1.ptd 第26頁 1242744 五、發明說明(21) BTAC寫入要求1 76也包括一開始攔位708,以儲存於第 4圖之開始攔位4 0 4内。BTAC寫入要求丨76也包括一跨越位 元712,以儲存於第4圖之跨越位元4〇6内。 BTAC寫入要求1 76也包括_寫入致能a攔位了丨斗,其代 表疋否要利用BTAC寫入要求176指定之資訊來更新所選目 標位址陣列項目312内之A部份。BTAC寫入要求176也包括 寫^入^致能B欄位716,其代表是否要利用BTAC寫入要求 U6 ‘疋之資訊來更新所選目標位址陣列項目31 2内之B部 入要求176也包括一無效人欄位718,其代表是 所選目、^ Ϊ所Ϊ目丨標位址陣列項目312内之Α部份。無效化 ϊίΑ Λ Λ陣列項目312内之A部份係包括:清除第$圖 7 2 2^,丨5^4 °BTAC寫人要求176也包括一無效^闌位 括·、、主除、、第" 1目‘位址陣列項目3 1 2内之B部份係包 括· π除第5圖之該B有效位 BTAC寫入要求176也包扭7 要更新所選指令集之四向之4—位元向欄位7 24,其指定 碼。在一每^ ,"之哪一向。向欄位7 2 4是全解 支預測時幾二二中,當微處理器100讀取BTAC 142以得到分 二處理器1〇0決定要放於向攔位…内之值並透 將該值往下送至儲存階段…以包含於該 内之二sf古求176内。如果微處理器100正在更新BTAC142 BTAC142内項目占’亦即’如果目前擷取位址162命中於 BTACU2内’微處理器1〇〇將既有項目之向設於向欄位π*
12830twf1.ptd 第27頁 1242744 五、發明說明(22) 内。如果微處理為100正在寫入新項目於BTAC142内, 如,新分支指令,微處理器1 0 〇將所選之B T A c丨4 2指 最久未用向設於向搁位7 2 4内。在— I之 器1〇〇讀取BTACH2以得到分支預測H 圖之lru欄位5 0 8來決定最久未用向。 攸弟5 現參考第8圖,顯示根據本發 列144之方塊圖。 月之弟3圖之BTAC寫入佇 BTAC寫入仔列144包括複數儲六—丄 -BTAC ^,176 ; ^;c〇 ν^Λ"7 ® 括6個儲存元件8 0 2以儲存6筆^ ”了 丁 44包 BTAC寫人仵列144也包括—右^人要求176 ’如所示。 BTAC寫入要求項目8()2 . 士 =效位兀8 0 4,相關於各 元8 0 4 Α畫 果相關項目為有效’則有效位 BTAC . ^ ^ ^ ^'1 ^^ ^8 04VJ 0 存元件8 0 2與有效Τ元包括批控制邏輯電路8 〇 6,耦合至儲 列深度暫存5§〗Λ 木古。控制邏輯電路8 0 6也耦合至佇 -,11 44V! „ ί ί ;BTAC ^ - ^ - ^btac ^ BTAC寫人要求控路8”增加仵列深度U6 ;當 路8 0 6減少佇列况4 寫入佇列Η4移出時,控制邏輯電 儲存階段1 28傳^ 控人制^輯,路8 0 6接收從第1圖之 求存於項目8 〇 2 ,r ^ 要未彳s唬1 7 6並將所接收之要 測信號152,預電路8 0 6也接收第1圖之分支誤 邏^ 信::9當仔列深度146大於〇日夺= 產生為真之弟2圖之BWQ非空信號218。當當仔
1242744
列深度146之值等於項目8 0 2之總數量(在第8圖之實施例中 為8)時’控制邏輯電路8 06產生為真之第2圖之BWQ全滿信 號222。當控制邏輯電路8〇β產生為真之BWq非空信號218 時,控制邏輯電路8 0 6將BTAC寫入佇列144之最舊(或最底 部)項目8 0 2之分支指令位址7 〇 2設於第1圖之b W Q位址信號 1 78内。此外,當控制邏輯電路8〇6產生為真之MWQ非空信b 號218時,控制邏輯電路8〇 6也將BTAC寫入佇列144之最^ (或最底部)項目802之第7圖之欄位706〜724設於BWQ資料传 號248内。 ' ° 現參考第9圖,顯示根據本發明之第1圖之B T A c寫入作 列1 44之操作流程圖。流程開始於決定方塊9 〇 2。 丁 在決定方塊902,BTAC寫入佇列144藉由決定第1圖之 佇列深度146是否等於BTAC寫入佇列丨44内之總項目數量來 決定BTAC寫入佇列144是否全滿。如果全滿,流程跳至方 塊9 1 8以更新B T A C 1 4 2 ;否則,流程跳至決定方塊9 〇 $。 在決定方塊9 0 4,BTAC寫入佇列丨44藉由檢查該指令快 取閒置彳έ號1 5 8來決定第1圖之該指令快取1 〇 4是否閒置。 如果閒置,必要時,流程跳至決定方塊9 2 2以更新BTAC142 因為B T A C 1 4 2可能未被讀取;否則,流程跳至決定方塊 9 0 6 ° 。在決定方塊9 0 6,B T A C寫入佇列丨4 4藉由檢查該指令緩 衝裔全滿彳5號156來決疋弟1圖之指令緩衝哭1 〇 6是否全 滿。如果全滿,必要時,流程跳至決定方塊9 2 2以更新 BTAC142因為BTAC142可能未被讀取;否則,流程跳至決定
12830twfl.ptd 第29頁 1242744 ^汇賢钱:f 年94.贫 ·_--****-— 五、發明說明(24) 方塊9 0 8。
蜊取 果 為 〇 支誤 果 為 〇 生該 ;否 在決定方塊9 0 8,BTAC寫入佇列144藉由檢查該預 代#说1 5 4來決定B T A C 1 4 2分支預測是否已被取代。如 是,必要時,流程跳至決定方塊9 22以更新BTAC1 42因 B T A C 1 4 2可能未被讀取;否則,流程跳至決定方塊9 i 2 在決定方塊912,BTAC寫入佇列144藉由檢查該分 測仏遽1 5 2來決定B T A C 1 4 2分支預測是否已被校正。如 疋,必要時,流程跳至決定方塊9 2 2以更新B T A c丨4 2因 BTAC 142可能未被讀取;否則,流程跳至決定方塊914 在決定方塊914,BTAC寫入佇列144決定是否已產 B T A C寫入要求1 7 6。如果否,流程跳回至決定方塊9 〇 2 則,流程跳至方塊9 1 6。 在決定方塊916,BTAC寫入佇列丨44載入該BTAC寫入| 求176並增加佇列深度146。該BTAC寫入要求176被載入 B 一T A C寫入仔列1 4 4之最頂端之無效項目,接著該項目被標 示為有效。流程跳回至決定方塊9 〇 2。 不 在決定方塊918,BTAC寫入佇列1 44利用BTAC寫入佇列 144内之最舊或底部項目來更新BTAC1 42,並減少佇列深产 146 〇BTAC寫入佇列144接著往下移一個項目。藉由將最^ 項目之第7圖之分支指令位址欄位702之值設成BWQ位址信 號178,以及將最舊BTAC寫入要求176之其他部份設於BWQ 資料信號2 4 8,BTAC寫入佇列144利用BTAC寫入佇列144内 之隶舊項目來更新BTAC142。此外,BTAC寫入仔列144發出 為真之BWQ非空信號21 8至第2圖之仲裁器2 0 2。如果流程係
1242744
4 五、發明說明(25)
從決定方塊9 0 2跳至方塊918,BTAC寫入仵列144也發出為 真之BWQ全滿信號2 2 2 8至第2圖之仲裁器2 0 2。流程;^方塊 9 1 8跳至決定方塊9 1 4。 A 要注思’如果在B T A C讀取要求信號2 1 2也在待處理期 間内,BTAC寫入佇列144發出該BWQ全滿信號2 2 2且該仲裁 器2 0 2允許BTAC寫入佇列144存取BTAC142 ;則BTAClh將會 未命中,但如果BT AC 1 4 2所預測之分支指令之有效目標位曰 址存在於BT AC 1 4 2内之目前擷取位址1 6 2所指定之快取$線的 話,此未命中係為偽性未命中。然而,有利的是,藉由在 大部份情況下將BTAC1 42之寫入延遲到BTAC1 42未被讀取, BTAC寫入佇列144可降低BTAC 142之偽性未命中之可能性, 如第9圖所示。 在決定方塊9 2 2,控制邏輯電路8 〇 6藉由決定佇列深度 146是否等於〇來決定是否BTAC寫入佇列144為空。如果 是,流程跳至決定方塊914 ;否則,流程跳至決定方塊922 以更新BTAC142因為BTAC142可能未被讀取。 ^ 現參考第1 0圖,顯示根據本發明之第1圖之該微處理 器100内之將該BTAC内多餘目標位址無效化之邏輯電路之 方塊圖。 第10圖顯不第3圖之BTAC142之標籤陣列304接收第1圖 之位址1 82並回應性產生4個標籤,標示為^“丨〇〇2A, tagl lOMB,tag2 l〇〇2C 與 tag3 1 0 0 2 D,總稱為標籤 1 0 0 2。標,籤1 0 0 2包括從標籤陣列3〇4之*向之各向傳來之第 5圖之標藏5 0 2 °此外’標籤陣列3〇4回應性產生8個有效位
12830twf1.ptd 第31頁 ;5.2 4 1242744 五、發明說明(26) 元[7 ·〇]’標示為1〇〇4,其為從標蕺陣列304之4向之各向 傳來之A有效位元504與B有效位元506。 微處理器1 0 0也包括比較器丨〇丨2,耦合至標籤陣列 3 0 4,該比較器1 〇 1 2接收位址1 8 2。在第1 0圖之實施例中, 比較器1 0 1 2包括4個2 0 ~位元比較器,各比較器比較位址 1 8 2之高階2 0位元與相關標籤丨0 〇 2以產生四個匹配信號, 標示為matchO 1006A ’matchl 1006B ,match2 1006C 與 ma t ch 3 1 0 0 6 D,總稱為匹配信號丨〇 0 6。如果位址丨8 2匹配 於相關標籤1 0 0 2 ’則比較器1 〇 1 2產生為真值之匹配信號 1 0 0 6 〇 微處理器1 0 0也包括控制邏輯電路丨0丨4,耦合至比較 器1 0 1 2,該電路1 〇 1 4接收匹配信號1 〇 〇 6與有效信號1 〇 〇 4。 如果標籤陣列304之所選指令集之向中有複數向具有為真 值之匹配信號1 0 0 6與至少一個為真值之有效位元1〇〇4 /、則 控制邏輯電路1014儲存一真值於多餘TA旗標暫存器1〇24 内,以代表同一分支指令之一個以上之有效目標位D址係存 於BTAC142内。此外,控制邏輯電路1〇14使得位址182載入 至於多餘TA位址暫存器1 0 2 6内。最後,控制邏輯電路1〇14 載入多餘TA無效資料至多餘TA無效資料暫存哭1〇22内。在 一實施例中,存於多餘TA無效資料暫存器1〇G内之資料係 相似於第7圖之BTAC寫入要求176,除了未儲存分支指令位 ,:=外内,.VA分V旨令之位址係存於多餘TA位址暫存 益1 0 2 6内,且也未儲存目標位址7 06,開始位元7〇8,盥跨 越位元712,因為其在盔效BT AC 1 4 2 j苜b & e 、 1,、隹…双項目内是無關緊要的; 94. 5. 2 4 1242744 五、發明說明(27) =’當進行多餘TA無效化時,目標位址陣列3〇2不會被 口,1Ϊ籤陣列3〇4被更新以無效該多餘BTAC142項 ΐτΑ Ϊ夕 效資料暫存器1〇22之輸出包括第2圖之多 f i _貝料信號244。、該多餘ΤΑ旗標暫存器1 0 24之輸出 匕 圖之多餘τ Α要求2 1 4。該多餘τ Α位址暫存器1 〇 2 6之 輸出包括第2圖之多餘τa位址2 3 4。在一實施例中了存於該 多餘TA無效資料暫存器1〇22與該多餘TA旗 之該向值724之產生等式係顯示於底下之表2暫:表。2丨〇中24内 有效位元[3]包括A有效位元[3] 5 0 4與B有效位元[3] 5 0 6之 邏輯OR結果;有效位元[2 ]包括A有效位元[2 ] 5 0 4與B有效 位元[2] 5 0 6之邏輯〇R結果;有效位元[丨]包括a有&位元 [1] 5 0 4與B有效位元[1] 5 0 6之邏輯OR結果;以及有效位元 [0]包括A有效位元[〇]504與B有效位元[0]506之邏輯〇R結 果。 、
RedundantInvalWay[3]^(valid[3]&match[3])&((valid [0]&match[0])|(valid[l]&match[l])|(valid[2]&match [2] ));
RedundantInvalWay[2]=(valid[2]&match[2])&((valid [0]&match[0])|(valid[l]&match[l]));
RedundantInvalWay[1]=(valid[1]&match[1])&(valid[0] &match[0]);
RedundantInvalWay[0] = 0; /*Way 0 永遠不會被無效*/ RedundanInAFlag=((valid[3]&match[3])&(valid[2] &match[2]))I
12830twfl.ptd 第33頁 1242744 五、發明說明(28) ((valid[3]&match[3])&(valid[l]&match [1]))1 ((valid[3]&match[3])&(valid[0]&niatch
[〇])) I ((valid[2]&match[2])&(valid[l]&match [l]))l ((valid[2]&match[2])&(valid[0]&match
[〇])) I ((valid[l]&match[ l])&(valid[0]&match [〇])); 為使第10圖之多餘目標位址無效邏輯電路之適當操 作,如第1 1圖所示,將一串的指令執行為例做說明,其可 在BTAC142内產生同一分支指令之多餘目標位址項目。 第1圖之第一目前擷取位址1 6 2係輸入至指令快取1 〇 4 與BTAC1 42。第一目前擷取位址1 62所選之快取線包括一分 支指令,稱為分支-A。第一目前擷取位址162選擇BTAC142 内之一指令集,稱為指令集N。指令集N之向内沒有一個標 籤1002匹配於第一目前擷取位址162 ;因此,BTAC142產生 未命中。在此例中,Iru值5 0 8所代表之最久未用向是2。 因此’關於分支-A之更新BTAC 142之資訊係沿著管線往下 送’連同代表向2必需被更新之分支-A。 接著,輸入一第二目前擷取位址1 6 2至該指令快取1 〇 4 與BTAC1 42。由第二目前擷取位址162所選之快取線包括一 分支指令,稱為分支-B。第二目前擷取位址1 62也選擇指
12830twfl.ptd 第34頁 1242744 五、發明說明(29) 令集N且命中於指令集n之3向;接著,BTAC142產生一命 中。此外,BTAC142更新指令集n之iru值508為1向。 接著’因為分支-A是碼之緊湊迴圈之一部份,再次輸 入該第一目前擷取位址1 62至該指令快取1 04與BTAC1 42, 並再-人适擇指令集N。因為分支—a之第一次執行未到達第1 圖之儲存階段1 28,BTAC1 42未利用分支-A之目標位址做更 新。接著,BTAC142再次產生未命中。然而,此次之丨^值 508所指之最久未用向是1 ,因為iru5〇8回應於分支—B之命 中而被更新。因此,關於分支-A之第二次執行之更新 BTAC 142之資訊係沿著管線往下送,連同代表向1必需被更 新之分支-A之第二次執行。 接著’該第一分支—A到達該儲存階段1 2 8並產生一 B T A C寫入要求1 7 6以利用分支-a之目標位址來更新指令集n 之向2,這將於後續進行。 接著,該第二分支-A到達該儲存階段1 2 8並產生一 B T A C寫入要求1 7 6以利用分支-A之目標位址來更新指令集N 之向1 ,這將於後續進行。因此,同一分支指令,分支一 A,之兩個有效項目存在於BTAC142内。該些項目之一是多 餘的且造成BTAC142之使用較無效率,因為該多餘項目可 以被另’分支指令使用及/或會佔去另一分支指令之有效 目標位址。 現參考第1 1圖,顯示根據本發明之第丨〇圖之多餘目標 位址裝置之操作流程圖。流程開始於方塊1 1 〇 2。 在方塊1102,仲裁器2 0 2允許第2圖之BTAC讀取要求
12830twf1.ptd
第35頁 1242744 五、發明說明(30)
212對BTAC142之存取,造成多工器148選擇目前擷取位址 1 6 2以設於第1圖之位址信號1 8 2上並產生第2圖之控制信號 252以代表BTAC142之讀取。接著,目前擷取位址162之低 階位元透過位址1 82而當成選擇BTAC1 42之指令集之索引。 流程接續至方塊1 1 0 4。 在方塊1104,比較器1〇12比較所選BTAC 142之指令集 之所有4個向之第1 〇圖之標籤丨0 0 2與設於位址信號182上之 目前擷取位址1 6 2之高階位元以產生第丨〇圖之匹配信號 1 0 0 6。控制邏輯電路1 〇 1 4接收第1 〇圖之匹配信號1 〇 〇 6與有 效位元1 0 0 4。流程接續至方塊1 1 〇 6。 在方塊1 1 0 6 ’控制邏輯電路1 〇 1 4決定是否發生一個以 上之有效標籤匹配。亦即,根據有效位元丨〇 〇 4與匹配信號 1 0 0 6,控制邏輯電路1〇14決定是否有目前擷取位址162所
1之指令集内之2個以上的向有-有效匹配標籤 是’流程接續至方塊1 1 〇 8 ;否則,流程結束。 方鬼11〇8,控制邏輯電路1〇14儲存一直值;a ^ ^ 1 0 24,„ # 82 ^ , #TA ^ ^TA :以及儲存無效資料於多餘ta無效資料暫 7Μ、寫入儲存為真值之寫入致能Α攔位 於多餘TA盔咬月匕:”! 、無效A欄位718與無效B攔位722 將=戶;1暫存器1 0 2 2。此外,控制邏輯電路m4 效資料位址暫存Hi表ϋ搁j立724之值存於多餘ΤΑ無 & t , 流程接續至方塊1112。 在方塊1112,仲裁器2 0 2允許第2圖之多㈣要求214
1242744 年.月· w、 五、發明說明(31) 對BTAC142>之存取,造成多工器148選擇多餘TA位址2 3 4以 設於位址信號1 8 2上且產生第2圖之控制信號2 5 2以指示 BTAC142之寫入。接著,多餘TA位址2 3 4之低階位元透過位 址182而當成選擇BTAC142之指令集之索引。BTAC142接收 多餘TA資料暫存器丨〇 2 2所輸出之多餘資料信號244並將所 k ^曰々集内之向攔位7 2 4所指向之該些向無效化。流程結 束於方塊1 1 1 2。 現參考第1 2圖’顯示根據本發明之該微處理器丨〇 〇内 之死結避免邏輯電路之方塊圖。 ^抑第12圖顯示第1圖之BTAC1 42,指令快取1〇4,指令緩 衝裔1 0 6,,令格式器丨〇 8,格式後指令佇列丨丨2與多工器 136 ’以及第1〇圖之控制邏輯電路1〇14。 ^ 如第1 2圖,微處理器1 〇 〇也包括一死結無效資料暫存 器1 2 2 2,一死結旗標暫存器1 2 24,與一死結位址 12 2 6。 田廿郎 指令袼式器1 0 8解碼存於該指令緩衝器丨〇 6内之指八, 以及如果指令格式器丨〇 8解碼出跨越兩快取線之分支指7 ’ 令,則產生為真之F —wrap信號丨2 0 2。特別是,在指人日 器1 0 8解碼出跨越兩快取線之分支指令時,一旦已解°式 存於指令緩衝器1 〇 6内之一第一快取線内之一跨越分】出^ 令之遠第一部份,不論指令格式器丨〇 8是否已解碼尚心 於指令緩衝器1 〇 6内之該第二快取線内之該跨越分支存 之其他部份,指令格式器丨〇8產生為真之F —wrap信號曰令 1 2 0 2。F — wrap信號1 2 0 2係輸入至控制邏輯電路l〇i4\
12830twf1.ptd 第37頁 1242744 五、發明說明(32) 當目前擷取位址1 6 2未命中時,指令快取1 〇 4產生為真 值之未命中信號1 2 0 6。未命中信號丨2 〇 6係輸入至控制邏輯 電路1 0 1 4。 當輸入至指令快取1 0 4之目前擷取位址丨6 2是預測的, 亦即’當目前擷取位址1 6 2是一預測性位址時,指令快取 1 〇 4產生為真值之一預測信號1 2 0 8,比如當多工器1 3 6選擇 B T A C預測目標位址1 6 4為目前掏取位址1 β 2時。預測信號 1 2 0 8係輸入至指令快取1 〇 4。在一實施例中,指令快取丨〇 4 將預測信號1 2 0 8送至第1圖之指令擷取器1 〇 2,使得指令擷 取器1 0 2放棄從記憶體之預測記憶體位址處擷取未命中於 指令快取1 0 4内之快取線,理由將參考第丨3圖而於底下描 述。 BTAC142產生一執行/不執行(T/NT)信號1212,其輸出 至控制邏輯電路1014。為真值之T/NT信號1212代表位址 182命中於BTAC 142内,代表BTAC 142預測一分支指令係包 括於回應於目前擷取位址1 6 2而由指令快取1 〇 4提供之快取 線内’代表該分支指令要被執行,以及代表BTAC1 42將分 支指令之目標位址設於BTAC預測目標位址信號1 64 上。B T A C 1 4 2根據第6圖之預測狀態a 6 0 2或預測狀態B 6 0 4 之值而產生T/NT信號1212,取決於該BTAC142在分支預測 時係使用A或B部份。 BTAC142也產生B —wrap信號1214,輸出至控制邏輯電 路1 0 1 4。所選之B T A C目標位址陣列項目3 1 2之第4圖之跨越 位元406之值係設成B_wrap信號1214。因此,B_wrap信號
12830twf1.ptd 第38頁 1242744 五、發明說明(33) 偽ί代表,BTAC142預測成該分支指令未跨越於兩 快取線。在—實施例中,控制邏輯電路丨〇 1 4暫存B ^ 2 = M以維持從先前BTAC142存取所得之、wrap信-號i2i4。 輯電路1〇14也產生第1圖之目前指令指標168。 控制邈輯電路1014也產生一控制信 ^ 136之輸入選擇信號。 /、疋夕工杰 如果控制邏輯電路丨〇丨4偵測出死結狀態(亦 = 7信號1214為偽值,與F-Wrap信號12〇2、未命中 仏號1 2 0 6與預測信號12〇8為真值), 甲 存-真值於-死,二
Kit::;:;控制邏輯電路1014載入死結無效資 入要求丨76 ;除了。未^存内八之/貝/入係/目似於第7圖之MAC寫 指令之位UA未存支令址7 0 2外,因為該分支 挪y 4址係存於死結位址暫存器1 2 2 6内;以及去伐户乏 標位址m,開始位元7 0 8與跨越位元7内,,以及未儲,子目 BTAC142j苜曰向 、古u> 一 乙 口為在一播致 死結無效化日士,,目位元是無關緊要的;®而,當執行 1= 3 0 4被更新以將誤測之BTAC142之項目益而仆、有 效貝料暫存器1222之輪 ...... 化死、、、。無 死結旗桿暫;W 翰出包括圖之死結資料信號2 4 6。 再&暫存杰1224之輸出包括第2 結位址暫存器1226之輸出包括第2圖之;;
12830twf1.ptd 第39頁 1242744 五、發明說明(34) 死結無效資料暫存器1 2 2 2内之該向值724係由造成該死結 狀態之該B T A C 1 4 2之該向填入。 如果控制邏輯電路1 〇 1 4偵測出死結狀態,則在將誤測 項目無效化後,控制邏輯電路丨〇丨4也產生一值於控制信號 1 2 0 4上以使得該多工器丨3 〇 6選擇該目前指令指標丨6 8以造 成试處理器1 0 0之分支,使得包括該誤測分支指令之該快 取線可被再次擷取。 現參考第1 3圖,顯示根據本發明之第丨2圖之死結避免 邏輯電路之操作流程圖。流程開始於方塊丨3 〇 2。 在方塊1 3 0 2 ’目前擷取位址1 6 2係經由位址信號1 8 2而 輸入至指令快取104與輸入至BTAC142。在第13圖中,該目 前擷取位址1 6 2係稱為擷取位址A。流程接續至方塊丨3 0 4。 在方塊1 3 0 4,指令快取1 〇 4將擷取位址a所指定之快取 線(稱為快取線A )提供至指令緩衝器1 〇 6,快取線a包括分 支指令之第一部份,但並無包括該分支指令之全部。流程 接續至方塊1 3 0 6。 在方塊1 3 0 6,回應於擷取位址A,B T A C 1 4 2預測快取線 A内之分支指令將被執行並設於T/NT信號1212上,產生為 偽值之B_wrap信號1 2 1 4,並將一預測目標位址設於BTAC預 測目標位址1 6 4上。流程接續至方塊1 3 0 8。 在方塊1 3 0 8,控制邏輯電路1 0 1 4控制多工器1 3 6以選 擇B T A C預測目標位址1 6 4為下一個目前揭取位址1 β 2,稱為 擷取位址Β。控制邏輯電路1 〇 1 4也產生為真值之預測信號… 1 2 0 8,因為B T A C預測目標位址1 6 4是預測性的。流程接巧
12830twf1.ptd 第40頁 1242744
五、發明說明(35) i方塊1 3 1 2 在方塊1312,指令快取104產生為真值之未命中信 12〇6以代表分支位址B係未命中於指令快取1〇4内。正"化 下’指令擷取器1 〇 2可能從記憶體擷取該未命中快取線. 然而,因為預測信號1 2 0 8為真,指令格式器1〇8並不記情 體擷取該未命中快取線,理由將於底下描述。流^ 方塊1 3 1 4。 文、、、貝主 在方塊1 3 1 4,指令格式器1 〇 8解碼指令缓衝器丨〇 6内 快取線A並產生為真值之F —wrap信號1 2 0 2,因為該分支於 令跨越兩快取線。指令格式器丨〇 8等待要存於指令緩衝器曰 1 〇 6内之下一快取線,使得其可完成對分支指令之格式^ 將之輸出至格式後指令佇列1 1 2。流程接續至方塊丨3丨6。 在方塊1 3 1 6,控制邏輯電路丨〇丨4決定··所暫存之 B —wrap信號1214是否為偽值,f —wr*ap信號1202是否為真 值,未命中信號1 2 0 6是否為真值與預測信號丨2 〇 8是否為真 值;這包括了底下所描述之死結狀態。如果是,流程接鋒、 至方塊1 3 1 8 ;否則,流程結束。 々 在方塊1 3 1 8,控制邏輯電路丨〇丨4將造成死結狀態之該 BTAC142項目無效化,如參考第12圖所述。接著,當下次 將擷取位址Α輸入至BTAC142時,BTAC142將產生一未命 中’因為造成死結狀態之該項目現已被無效化。流程接鱗 至方塊1 3 2 2。 $ 在方塊1 3 2 2,控制邏輯電路丨〇丨4控制多工器丨3 6以分 支至目前指令指標1 6 8,如參考第丨2圖之描述。此外,當
12830twf1.ptd 第41頁
ΠΞίί'νΓ"亥多工器136選擇目前指令指標168 k、,抆制逯軏電路1014產生為偽值之預測信 目前指令指標1 6 8不是預測性記愔fi μ '、 八如炉1 R«合人二體 很可能目前指 :扎私168會中中於指令快取1〇4内;然而,如 1242744 五、發明說明(36) 活,指令擷取器丨〇2將從記憶體擷取目前指令 / . Γ ^ ^ ^,Ht #ϋ12〇δ § 疋預測性。流程結束於方塊丨3 2 2。 於= = 為真時,存在有死結狀態之理由在 於,足成死結之必要情況是存在的。造成死結 是跨越於兩不同快取線之多位元組分支指人 ^ 支指令位元組之第一部份係位於第一快取“尾3 : 分支指令位元組之第二部份係位於下一快 為跨越分支指令之可能性’該BTAC142必需健1存一 支指令是否跨越快取線之資訊’使得控制邏輯電路丨〇丨4得 知是否要操取下一快取線以在擷取位於目標位址丨6 4之快 取線之如就取得分支指令位元組之下半部。如果B T a c 1 4 2 儲存了錯誤的預測資訊’BTAC1 42可能會錯誤地預測為該 分支指令未跨越’但實際上有跨越。在此例下,該指令格 式器1 0 8將利用分支指令之前半部來解碼該快取線並偵測 出已存在有一分支指令’但並非分支指令之全部位元組已 可用於解碼。該指令格式器1 0 8會等待下一快取線。該管 線會一直等待要被格式之更多指令以將之執行。 造成死結情況之第二情況是,因為該BTAC1 42預測該 分支指令未跨越,該分支控制邏輯電路1 0 1 4擷取該
12830twfl.ptd 第42頁 1正朁榑良丨 1242744 γ 日|_ 五、發明說明(37) B T A C 1 4 2輸出之目標位址1 6 4所暗指之快取線(並無擷取下 一快取線)。然而,該目標位址1 6 4未命中於該指令快取 1 0 4内。因此,該指令格式器1 0 8所等待之下一快取線必需 從記憶體擷取。 造成死結情況之第三情況是,微處理器之晶片組並無 預期到會有從某些記憶體位址範圍内擷取出指令,以及如 果該微處理器從未預期之記憶體位址範圍產生指令擷取 時,微處理器之晶片組可能會使得系統閒置或產生其他不 良之系統情況。預測性位址,比如B T A C 1 4 2所輸出之目標 位址1 6 4,可能會從未預期之記憶體位址範圍造成指令擷 取。因而,該微處理器1 0 0並無從記憶體之一預測性BTAC 預測目標位址1 6 4擷取一未命中快取線。 因此,指令格式器1 0 8與管線之其他部份係等待另一 快取線。同時,該指令擷取器1 0 2係等待該管線以告知要 執行一非預測性擷取。在非死結情況下,比如,如果該目 標位址1 6 4命中於指令快取1 0 4内,指令格式器1 0 8會將分 支指令格式(雖然是利用不正確的位元組)與將格式後之分 支指令提供至分支之執行階段,執行階段會偵測出誤測並 將BTAC1 42之誤測校正,因而使得該預測信號1 2 0 8變成偽 值。然而,在死結情況下,該執行將永遠無法偵測出誤 測,因為指令格式器1 0 8未將格式後之分支指令提供至分 支之執行階段,因為指令格式器1 0 8仍在等待下一快取 線。因此,發生死結情況。然而,第1 2圖之死結避免邏輯 電路可有效避免死結情況之發生,如第1 2圖與第1 3圖所
12830twf1.ptd 第43頁 1242744 五、發明說明(38) 述,因而使得微處理器1 0 0可適當操作。 雖然已詳細描述本發明與其目的,特徵與優點,本發 明仍可包括其他實施例。比如,雖然該寫入佇列係相關於 單埠BTAC,在某些微處理器架構中,偽性未命中也可能發 生於多埠BTAC中,儘管頻率較低。因此,可應用該寫入佇 列以減少多埠BTAC之偽性未命中率。此外,在未讀取BTAC 之某些微處理器中,可能也有除了在此所描述情況外之其 他情況,其中佇列於該寫入佇列内之要求可寫入至BTAC。 另,雖然已詳細描述本發明與其目的,特徵與優點, 本發明仍可包括其他實施例。除了利用硬體來實施本發明 外,本發明也可實施於電腦可用式(比如,可讀式)媒介内 之電腦可讀碼(比如,電腦可讀程式碼,資料等)。電腦碼 可完成所揭露之本發明之功能或製造或兩者皆可。比如, 可利用一般程式語言(比如,C,C + +,JAVA等);GDSI I資 料庫;硬體描述語言(hard description language, HDL),包括Verilog HDL, VHDL, Altera HDL(AHDL)等; 或現有之其他程式及/或電路(亦即概要式)擷取工具。電 腦碼可載入於包括半導體記憶體,磁碟,光碟(比如,〇0-R0M,DVD-ROM等)之任意習知電腦可用式(比如,可讀式) 媒介内;以及以電腦資料信號之形式實施於電腦可用式 (比如,可讀式)傳輸媒介(比如,載波,或包括數位,光 學或類比式媒介之其他媒介)。因此,電腦碼可傳輸於包 括網際網路與企業網路(指令t r a n e t )通訊網路上。要知 道,本發明可實施於電腦碼(比如,I P (智財權)核心之一
12830twf1.ptd 第44頁 1242744 五、發明說明(39) 部份,比如為微處理器核心,或為系統級設計,比如系統 單晶片(SOC))與轉換成積體電路之部份硬體。另,本發明 可實施成硬體與電腦碼之組合。 雖然本發明已以一較佳實施例揭露如上,然其並非用 以限定本發明,任何熟習此技藝者,在不脫離本發明之精 神和範圍内,當可作些許之更動與潤飾,因此本發明之保 護範圍當視後附之申請專利範圍所界定者為準。
12830twf1.ptd 第45頁 1242744 圖式簡單說明 第1圖顯示根據本發明之微處理器之方塊圖。 第2圖顯示根據本發明之第1圖之微處理器之部份詳細 方塊圖。 第3圖顯示根據本發明之第1圖之BTAC之部份詳細方塊 圖。 第4圖顯示根據本發明之第3圖之目標位址陣列項目内 容之方塊圖。 第5圖顯示根據本發明之第3圖之標籤陣列項目内容之 方塊圖。 第6圖顯示根據本發明之第3圖之計數器陣列項目内容 之方塊圖。 第7圖顯示根據本發明之第1圖之BTAC寫入要求内容之 方塊圖。 第8圖顯示根據本發明之第3圖之BTAC寫入佇列之方塊 圖。 第9圖顯示根據本發明之第1圖之BTAC寫入佇列之操作 流程圖。 第1 0圖顯示根據本發明之第1圖之該微處理器内之該 BTAC之多餘目標位址無效邏輯電路之方塊圖。 第1 1圖顯示根據本發明之第1 0圖之多餘目標位址裝置 之操作流程圖。 第1 2圖顯示根據本發明之第1圖之該微處理器内之死 結避免邏輯電路之方塊圖。 第1 3圖顯示根據本發明之第1 2圖之死結避免邏輯電路
12830twf1.ptd 第46頁 勢 1242744 圖式簡單說明 之操作流程圖 圖式標不說明 100 102 104 106 108 112 1 14 116 118 122 124 126 128 132 134 136 138 142 144 146 152 154 微處理器 指令擷取器 指令快取 指令緩衝器 指令格式器 格式指令彳宁列 指令轉譯器 轉譯後指令佇列 暫存器階段 位址階段 資料階段 執行階段 儲存階段 寫回階段 加法器 148 , 206 :多工器 指令
BTAC BTAC寫入佇列(BWQ) 佇列深度 分支誤測信號 預測取代信號
12830twf1.ptd 第47頁 1242744 I气瞀 # f 丄Z4Z/44 r ^ 2%i_ 圖式簡單說明 1 5 6 :指令緩衝器全滿信號 1 5 8 :指令快取閒置信號 1 6 2 :目前擷取位址 1 6 4 :預測目標位址 1 6 6 :下一擷取位址 1 6 8 :目前指令指標 1 7 2 :正確位址 1 7 4 ·•取代預測目標位址 1 76 : BTAC寫入要求 178 : BTAC寫入作歹U位址 1 8 2 :位址 2 0 2 :仲裁器 212 : BTAC讀取要求信號 214 :多餘目標位址(TA)要求信號 2 1 6 :死結要求信號 218 : BWQ非空信號 2 2 2 : BWQ全滿信號 2 3 4 :多餘TA位址 2 3 6 :死結位址 2 44 :多餘TA資料信號 2 4 6 :死結資料信號 248 : BWQ資料信號 2 5 2,2 5 8,2 6 2,1 2 0 4 :控制信號 2 5 6 :資料信號
12830twf1.ptd 第48頁 1242744
圖式簡單說明 302 目標位址陣列 304 標籤陣列 306 計數器陣列 3 12 目標位址陣列項目 314 標籤陣列項目 31 6 計數器陣列項目 402 分支目標位址 404 ,7 0 8 :開始棚位 406 跨越位元 502 標籤 504 A有效位元 506 B有效位元 508 1 r u欄位 602 預測狀態A計數器 604 預測狀態B計數器 606 A / B 1 r u位元 702 分支指令位址攔位 706 目標位址 712 跨越位元 714 寫入致能A欄位 716 寫入致能B欄位 718 無效A欄位 722 無效B欄位 724 向欄位 12830twf1.ptd 第49頁 1242744 圖式簡單說明 8 0 2 :儲存元件 804,1004 :有效位元 8 ◦ 6,1 0 1 4 :控制邏輯電路 1 0 0 2 :標籤 1 0 0 6 :匹配信號 1 0 1 2 :比較器 1 0 2 2 :多餘TA無效資料暫存器 1 0 2 4 :多餘TA旗標暫存器 1 0 2 6 :多餘TA位址暫存器 1202 :F_wrap 信號 1 2 0 6 :未命中信號 1 2 0 8 :預測信號 1212 :執行/不執行(T/NT)信號 1214 :B_wrap 信號 1 2 2 2 :死結無效資料暫存器 1 2 2 4 :死結旗標暫存器 1 2 2 6 ·•死結位址暫存器
12830twf1.ptd 第50頁

Claims (1)

  1. 理器内具有一推測分支目標位址快取 避免裝置,該裝置包括: 第一信號產生模組,用以指示一指令快取記憶體中 命中,其中該提取位址係由該分支目標位 一推測分支指令目標位址; 產生模組,用以指示該分支指令跨越兩條 1242744 六、申請專利範圍 1 . 一種微處 (BTAC)之一死結 的一提取位址未 址快取所提供之 一第二信號 快取線; 一第三信號產生模組,用以指示該分 預測該分支指令並未跨越兩條快取線,其 之一第二快取線因此而並未提取;以及 控制邏輯電路,耦合至該第一、第二 模組,以回應於該第一、第二及第三信號 指示而將該分支目標位址快取内之該目標 2. 如申請專利範圍第1項所述之裝置 邏輯電路更組態為在將該分支目標位址快 址無效之後會使該微處理器分支至該分支 3. 如申請專利範圍第1項所述之裝置 格式器,其中該指令格式器藉由解碼該兩 一快取線來決定該分支指令是否跨越兩條 4 ·如申請專利範圍第3項所述之裝置 取記憶體提供該兩條快取線之該第一快取 5.如申請專利範圍第1項所述之裝置 標位址是推測的係因該目標位址僅是預測 是該分支指令一個正確的目標位址。 支目標位址快取 中該兩條快取線 及第三信號產生 產生模組的真值 位址無效。 ,其中所述控制 取内之該目標位 指令。 ,更包含一指令 條快取線之一第 快取線。 ,其中該指令快 線。 *該分支指令目 的並不保證一定
    12830twf1.ptd 第51頁
    1242744 六、申請專利範圍 6 .如申請專利範圍第1項所述之裝置,該分支指令目 標位址是推測的係因該目標位址也許是另一分支指令的一 目標位址。 7 ·如申請專利範圍第1項所述之裝置,該分支指令目 標位址是推測的係因該分支指令也許現在不存在於該兩條 快取線中。 8 .如申請專利範圍第1項所述之裝置,其中該兩條快 取線之一第二快取線並未提取係包含該兩條快取線之一第 二快取線並未從與耦接至該微處理器的一記憶體中提取。 9 · 一種避免死結條件之管線微處理器,包括: 一分支目標位址快取,用以提供一分支指令之一推測 目標位址以回應一指令快取提取位址;以及 一控制邏輯電路,耦合至該分支目標位址快取,以回 應於一偵測條件而將該分支目標位址快取内之該推測目標 位址無效,其中: 在該指令快取記憶體回應該提取位址而提供一第一快 取線之後,該推測目標位址產生未命中,其中該第一快取 線僅含有一部份的該分支指令; 該分支目標位址快取錯誤地預測該分支指令完全存在 於該第一快取線中而導致含有該分支指令另一部份的一第 二快取線並未從該指令快取記憶體中提取。 1 〇.如申請專利範圍第9項所述之微處理器,其中所述 控制邏輯電路更組態為在回應該偵測條件而將該分支目標 位址快取内之該推測目標位址無效之後會使該微處理器分
    12830twf1.ptd 第52頁 1242744 _ 六、申請專利範圍 支回該提取位址。 1 1 .如申請專利範圍第9項所述之微處理器,更包括: 一指令提取器,耦合至該控制邏輯電路,將未命中的 該些快取線自耦接至該微處理器的一記憶體中提取,其中 該指令提取器係組態為不會由該分支目標位址快取所提供 的推測目標位址中提取該些未命中的快取線。 1 2.如申請專利範圍第9項所述之微處理器,更包括: 一指令格式器,耦合至該控制邏輯電路,藉由解碼該 第一快取線來產生一信號至該控制邏輯電路以指示該分支 指令係不完全存在於該第一快取線中。 1 3.如申請專利範圍第1 2項所述之微處理器,更包 括: 一指令緩衝器,耦合至該指令快取記憶體,用以自該 指令快取記憶體接收該第一快取線並在該指令格式器解碼 該第一快取線時儲存該第一快取線。 1 4.如申請專利範圍第1 2項所述之微處理器,更包 括: 執行邏輯電路,耦合至該控制邏輯電路,用以偵測並 更正該分支目標位址快取的錯誤預測,其中該執行邏輯電 路並不偵測因為該指令格式器等待該第二快取線提取的停 頓而造成該分支目標位址快取錯誤地預測該分支指令完全 存在於該第一快取線中。 1 5.如申請專利範圍第1 4項所述之微處理器,其中該 執行邏輯電路位於該微處理器管線該指令格式器之後的階
    12830twf1.ptd 第53頁 1242744 六、申請專利範圍 段。 1 6 .如申請專利範圍第9項所述之微處理器,其中該微 處理器的一指令集包含可變長度的指令。 17. 如申請專利範圍第1 6項所述之微處理器,其中指 令集大致上與X 8 6架構的指令集相符。 18. 一種避免微處理器内死結條件的方法,該微處理 器包含有一指令快取記憶體及一推測分支目標位址快取, 該方法係包括: 產生一推測目標位址部分存在於由該指令快取記憶體 中的一第一快取線以回應使用於該分支目標位址快取的一 第一提取位址; 提供該目標位址作為一第二提取地址給該指令快取記 憶體而沒有提取該第一快取線之後的下一快取線,以回應 該部分存在於由該指令快取記憶體中的一第一快取線以回 應完全存在於該第一快取線中的該分支目標位址快取預測 之該分支指令; 判斷該分支目標位址快取錯誤地預測該分支指令完全 存在於該第一快取線中; 偵測一未命中於該指令快取記憶體中的該目標位址; 以及 將該分支目標位址快取内之該目標位址無效以回應於 該判斷與該偵測。 1 9.如申請專利範圍第1 8項所述之方法,更包括: 在該無效動作後,將該微處理器分支至一分支指令的
    12830twf1.ptd 第54頁 1242744 申請專利範圍 位址。 處理I0.八如古ζ請專利範圍第19項所述之方法,其中將該微 址仏5二5也I分支指令的位址係包含提供該第一提取位 、^牦々快取記憶體作為下一個提取位址。 理哭八^申睛專利範圍第1 9項所述之方法,其中將該微處 位二1i ΐ二分支指令的位址係包含分派該分支指令之該 4址而该被處理器中的一指令指標暫存器。 ^ 一種可以執行避免死結條件之電腦可讀取程式碼 的儲存媒體,包括: 電腦可讀式程式碼,提供給一微處理器,該程式碼包 括: 口口 一=一程式碼,提供一分支目標位址快取(BTAC),及提 供一分支指令之一推測目標位址以回應於一指令快取提取 位址;以及 弟一程式碼,提供給輕接至一分支目標位址快取 (BTAC)之控制邏輯電路,將該分支目榡位^快取中的該推 測目標位址無效以回應一偵測條件,其中: 在該指令快取記憶體提供一第一快取線以回應該提取 位址後’該推測目標位址未命中該指令快取記憶體,其中 该第一快取線僅包含一苐一部分的該分支指令;以及 該分支目標位址快取錯誤地預測該分^ ^令完全存在 於該第一快取線中,以至於包含該分支指令^三第二部分 的一第二快取線未被從該指令快取記憶體中提取。 2 3 · —種可以執行避免死結條件之電腦可讀取程式碼
    12830twfl.ptd 第55頁 1242744 六、申請專利範圍 的儲存媒體,包括: 電腦可讀式程式碼,提供給一具有一推測分支目標位 址快取(BTAC)之一死結避免裝置的一微處理器,該程式碼 包括: 第一程式碼,提供一第一信號用以指示一指令快取記 憶體中的一提取位址未命中,其中該提取位址係由該分支 目標位址快取所提供之一推測分支指令目標位址; 第二程式碼,提供一第二信號,用以指示該分支指令 跨越兩條快取線; 第三程式碼,提供一第三信號,用以指示該分支目標 位址快取預測該分支指令並未跨越兩條快取線,其中該兩 條快取線之一第二快取線因此而並未提取;以及 第四程式碼提供給一控制邏輯電路,耦合至該第一、 第二及第三信號,以回應於該第一、第二及第三信號的真 值指示而將該分支目標位址快取内之該目標位址無效。
    12830twf1.ptd 第56頁
TW093100763A 2003-01-14 2004-01-13 Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition TWI242744B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US44006203P 2003-01-14 2003-01-14

Publications (2)

Publication Number Publication Date
TW200416603A TW200416603A (en) 2004-09-01
TWI242744B true TWI242744B (en) 2005-11-01

Family

ID=34312105

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093100763A TWI242744B (en) 2003-01-14 2004-01-13 Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition

Country Status (2)

Country Link
CN (1) CN100397365C (zh)
TW (1) TWI242744B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7552318B2 (en) * 2004-12-17 2009-06-23 International Business Machines Corporation Branch lookahead prefetch for microprocessors
US7434033B2 (en) * 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
CN104106046B (zh) * 2012-02-14 2018-05-15 瑞萨电子株式会社 数据处理装置
TWI509408B (zh) * 2013-01-23 2015-11-21 Realtek Semiconductor Corp 死結偵測方法以及機器可讀媒體
CN106919367B (zh) * 2016-04-20 2019-05-07 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法
CN111459551B (zh) * 2020-04-14 2022-08-16 上海兆芯集成电路有限公司 具高度领先分支预测器的微处理器
TWI739556B (zh) * 2020-08-19 2021-09-11 瑞昱半導體股份有限公司 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體
CN112579175B (zh) * 2020-12-14 2023-03-31 成都海光微电子技术有限公司 分支预测方法、分支预测装置和处理器核

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in 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
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
TW564369B (en) * 2001-07-16 2003-12-01 Ip First Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines

Also Published As

Publication number Publication date
TW200416603A (en) 2004-09-01
CN100397365C (zh) 2008-06-25
CN1521635A (zh) 2004-08-18

Similar Documents

Publication Publication Date Title
US10768939B2 (en) Load/store unit for a processor, and applications thereof
US10430340B2 (en) Data cache virtual hint way prediction, and applications thereof
TWI238966B (en) Apparatus and method for invalidation of redundant branch target address cache entries
EP1441284B1 (en) Apparatus and method for efficiently updating branch target address cache
US7647475B2 (en) System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US8032734B2 (en) Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US7472260B2 (en) Early retirement of store operation past exception reporting pipeline stage in strongly ordered processor with load/store queue entry retained until completion
US9009445B2 (en) Memory management unit speculative hardware table walk scheme
KR20020087928A (ko) 긴밀하게 연결된 다중 프로세서들을 위한 고속 다중 스레딩
JPH10124391A (ja) マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法
EP1439459B1 (en) Apparatus and method for avoiding instruction fetch deadlock in a processor with a branch target address cache
JP5513744B2 (ja) 動的自動減衰デバイスアーキテクチャ
CN107885530A (zh) 提交高速缓存行的方法和指令高速缓存
US8078846B2 (en) Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
TWI242744B (en) Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition
US20080082793A1 (en) Detection and prevention of write-after-write hazards, and applications thereof
US10983801B2 (en) Load/store ordering violation management
TWI283827B (en) Apparatus and method for efficiently updating branch target address cache

Legal Events

Date Code Title Description
MK4A Expiration of patent term of an invention patent