I2858417p,doc 功能步驟或階段而處理。每—處理階段通f在一單個的時 脈週期内完成其要素操作。 非管線(n〇n-Pipeiined)處理器是完成每一指令的處理 之後才開始下-指令的處理,和—非管線的處理器不同, -管線todined)處理器在此管線之不同的處理階段 ㈤喊理祕指令。管線階段可由-設計者任意 但通常來說,包括如下這些:即指令獲取階段、 ^解碼階段、指令執行階段以及執行分解(execution resolution)階段。 取階段從指令當前存儲的任何地方(比如一主 己憶體或-指令件列)查找一指— v 筱執由疋才日令所指定的一或多個操作。 (::=rr通常涉及將此指令執行而產生二 用ΐ)’寫叫—❹料存料記_,用以作 段轉:Ϊ令更適宜於在—蚊週_顧裏,從一管線階 ^轉到下-個階段。從而,在第— 獲取階段從存儲中獲取—第 似曰令 的硬體寄存器内,由此而進行解y。在入相關聯 好,邀此取一第二指令,並將其排列 的郝’在執補段襄,此指令起動-執行操 6 1285841 17007pif.doc 如:一邏輯的、數學的、定址的,或索引的操作), =時廷指令解碼器階段對此第二指令解碼,而此指= 儲中獲取—第三指令。管線操作已知繼續 刀白#又,在14樣的方式下,此處理器整體的 比非管線的_有__縣的提高。 物作速度’ 超量化的架構,可同時處理和/或執行兩條 或多個執行(或 -鮮八= 丁的、同時並且獨立地執行 入“”。&篁的(Scalar)系統在每個週期只能執行一條 二非St指令是形成於一串管線的指令,還是此指令‘ “的方式執彳了。多條指令的同時執行,進—步地 尚了一處理器的性能。 扞的ΐΪΐ作已何置疑地提供了性能的好處,只要被執 β、"序職持⑧度的雜,或者是可刪。但不幸的 部分触令糊’包含㈣可轉致_序執行路 徑的“令。所謂的,,分支指令,,(包括比如:跳轉、返回,以 2件分支指令等),在—管線處理器裏產生了顯著的性能 ^ 除非可以實施一個有效的分支預測之方式。當一 =有預/則(或者是錯誤地預測)分支指令引起從這樣的指令 歹J離開時,即從當前在此處理器中管線排列的指令序 = 性能損失就發生了。當這樣的損失發生,當前的管 指令序列必須被扔掉或,,沖洗掉,,(fluShed),而一新的 札序列必須載入進到此管線裏。管線的沖洗操作浪費了 很夕時脈週期,並通常降低了處理器的執行速度。 7 1285841 17007pif.doc 、:個提升和一分支指令相關的執行性能之方法,是預 測这分支指令的結果,並插入一預測的指令到此管線 讓其直接跟在這分支指令的後面。如^ ' = 裏實施’那麼這和管線沖洗相關的性能 Ϊ圭在如果此分支指令的結果被錯誤地預測時發 傳統的技術和分析已經確認了許多分支指 果疋^被正確地預測的,這有—很高的確定性— 對一一應用程式來說,有接近80%的確定性。 因此,幾種分支預測機制的傳統類型已被發展 ^預測機制的其中一種類型’是利用—分支目標緩衝器 來存儲很多的資料條目,其中每一資料條目和一分支= 相關聯。從而’這分支目標緩衝器存儲有許多的所謂,,分^ 位址標籤”(branch address tag),每-分支位址標藏,作為 -分支指令分個索引。除此分支健標籤之外,每 -分支目標緩衝器的條目’更包括一目標位址过 address)、^指令操作碼(〇pc〇de)、分支歷史資訊,以友可 • 能其他的資料。在利用-分支目標緩衝器的-處理器中, 此刀支預測機制監控每條進入此管線的指令。通當 令的位址被監控,而且當此指令位址和這分二 的一條目相匹配時,此指令就被識別為一分支指令。從相 關的分支歷史資訊,此分支預測機制去確定此分支是否會 被執行。分支歷史資訊一般地是由一狀態機(state maehin^ ^確定,此狀態機監控每條索引在這分支目標緩衝器裏的 分支指令,並定義作為分支歷史資訊而存儲的資料,此資 8 1285841 17007pif.doc 訊涉及此分支在之前的操作中是否被執行過。 當此分支歷史資訊指出這分支很可能會被執行時,一 或多條預測的指令就被插入到這管線裏。按照慣例,每一 分支目標緩衝器的資料條目,包括有和這分支指令相關聯 的指令操作碼,這分支指令是正在被評估關於其分支歷^ ί δίΐ的扎令。在適當的由這分支預測機制指明之後,這此 操作碼可被直接地插入到這管線之中。同樣地,每一^ 目標緩衝器的資料條目,包括有一,,目標位址,,,它和1 被評估這分支指令相關聯。此外,在適當 機制指明之後,這目標似止被此分支預測單元作為刀一測 位址”而輸出,並被用於獲取此指令序列中的下測 對此分支指令及其隨後指令的處理,在此管線、曰^ 1幾7,朗在執行階段中這分㈣令t 止/、有在廷一時點上,此分支預測的 丁為 γ此分支齡的絲之賴正確地賴,=77。 器的執行,間斷的連續進行。】=此3理 ΐ:果::沒有被正確地預測到’那麼此管線被ί、先::令 須被沖洗掉。 夕兩倍數篁的指令必 9 1285841 17007pif.doc 箱、si =說明—傳統的分支目標緩衝11 1,其連接到分支 和相關的硬體。分支目標緩衝器‘二ΐ Γ 解碼②3、—記賴陣列4,以及-讀出放大器
沪namp hfier)5。位址解碼器3從一指令獲取單元接收一 二址,並選擇—條和這已解碼的指令位址相關聯的字 兀線。字讀選擇是按照慣例崎行的,但其通常包括施 力Π-字元線電壓到選中的字元線上。按照f慣…批字元 線以一逐列之方式,從位址解碼器3伸展到記憶體陣列4。 S己憶體陣列4包括很多記憶胞,每個記憶胞存儲至少 了資料位元。而資料條目,其每個包括許多的㈣位元, 被&且地以列的方式存儲,由此—具體字元線的選擇,基 本上存取-對應的資料條目。資料條目包括至少—資料棚 位(data field) ’其定義一分支位址標籤,更包括另一資料欄 位,其定義一目標位址。一字元線選擇的資料條目,被按 慣例的從記憶體陣列4經由讀出放大器5輸出。 從讀出放大器5 ,此分支位址標籤被傳達到一標籤比 較寄存器(tag compare register)6,此寄存器也接收這指令的 位址。來自a貝出放大^§ 5的目標位址,連同和非分支的指 令序列(例如一 32位元的指令字處理器的一程式計數值 (PC)+4)相關聯的一位址一起,被傳達到多工器 (multiplexer)7。多工器的這兩個輸入的其中之一,被選擇 出來而傳達到此指令4宁列(在此展示為一程式計數值多工 器(PC multiplexer) 8),此傳達是通過這樣的操作,即一邏 輯閘9接收來自標籤比較寄存器6之結果和來自分支預測 I28584107pifdoc 邏輯走/不取走”(恤_财—)標識。 -,在此統的分支目標緩衝11遭受許多的缺點。第 二體i t :示餘下的配置中,此分支目標緩衝器的記 破每條分支指令存取,而不管這指令可能的結 果。對刀支目標緩衝器的存取,一 ^ 取(READ)摔作,m 瓜涉及執仃一傳統之讀 nm/、由址解碼輯選巾的字元線。 €_取電能’以便提供記憶胞能源並 ❿ 彳° 出貝料’其中這些記憶胞與選中字it線相關聯。 ’、、' L應此浪費的情形’其他傳統分支目標緩衝器的設 口已巴一致能線(enable iine)整合到此記憶體陣列的設計 之中。美國專利號Νο·574〇417就是一個例子。在此文檔中 頦示〜此提4的分支目標緩衝器包括一致能線,其啟動或 Τ閉字元線軸H,這些字元線驅_在讀取操作的過程 中,和這記憶體陣列相關聯。這些字元線驅動器根據一,, 取走/不取走”標識的狀態而被啟動或關閉,此標識預測一 具體的指令是否不太可能地被執行。例如,當一具體指令 •的,走/不取走,,標識指出一,,強烈的不取走,,狀^二 致能線轉變到一禁動準位,由此使得此記憶體陣 線驅動器失去能力。 于几 不幸的是,這傳統的方法,在分支目標緩衝器存取操 作過程中節省電能的同時,也帶來了很大的開銷。也就是= 這分支預測機制對此致能訊號之生成,需要不僅時間^有 資源來,,預解碼”(pre-decode)此指令,然後確定其分支辦史 資料和取走/不取走的狀態,然後並在需要時,改變此二能 I2858iUc 訊號的準位。 隨著指令執行的速度以及指令管線深度的增加,分支 的準確性和速度變得越來越重要。基於對此重要性的 認識’很多傳統的處理器都整合了擴展的預解碼方案,由 此所有的指令都被評估,分支指令被識別,而分支歷史資 t被查找出來’或對於正被評估和預解碼的分支指令,此 分,歷5資訊則被動態地計算出來。不用說,這種預測分 ^指令行為的方法,需要很多的時間和很多的額外資源。 列,理中,額外的延遲和複雜性,在-分支預測 描㈣疋不期望的特性。然而’這正是很多傳統方法所 提供的。 電能消耗的問題,進一步使設計出勝 變匕。不令人驚_,當代的處理器都= 上’即其特徵在於電能消耗上都有嚴格 電腦和移練置,比如手機和個人數位助 最小雷& 些裝置現成的例子,其整合了寧願消耗 最少電能之處理器。 $ 型的述#此分支目標緩衝11是—高賴衝記憶體類 目心:幻可能Ϊ儲很多的資料條目。因此,這分支 有—記憶體_,並適宜於是一揮發 的 5£M(v〇latlieme咖y)_ 大量資 早乃其對電ι的祕,有的渴望 制對此分支目標緩衝器的每一個存取,都意味著對此^支 12 1285841 17007pif.doc 目標缓衡器之記憶體陣列的一”讀取”操作。所有人都同意 分支目標缓衝器的存取正在增加,並且一些估計提出,對 此分支目標缓衝器之記憶體陣列的,,讀取,,操作,占了傳統 處理器中電能消耗的足足10%。
明顯的,很需要在新出現的處理器中,以一更好的方 法來實施分支預測的機制。傳統的方法對分支指令需要時 間很長的、即時的評估,以及/或者對分支歷史資^動能的 搜索或計算W慢。另外,在許㈣f二的 由不間斷地、但又是必須的存取此分支目標緩衝器之記憶 體陣列而導致的電能消耗,完全是浪費。 。 " 【發明内容】 在本發明-實施例中提供一分支目標緩衝器記憶 列,其包含-字元線和-相關的字元線選通電 circuit)。此字讀選通電路包括—職體電路, g 一字元線選通值。 >、仔储者 此記憶體陣列更好地適合存儲和此字元線相 =電選Γ路除了存儲著一字元線選通: 的5己憶體電路之外’歧適宜包括—選通邏 = 4】定的例子中,此字元線選通電路回應—字元 ^壓是施加麻字元線以及這字元_通_ ^此使^ 可以對這條目資料進行存敗菸从 ^ 由此使侍 操作,其響應在此分支7::二==可;是-寫 此存取操作或者是-讀操作,=中接㈣的—寫訊號, 憶體陣列。 、’、作關涉及這字it線之記 13 1285841 17007pif.doc 之揮爰匕器ί記議車列’適宜於包括-個陣列 -靜態隨機存取記憶二:子列中並 r的記憶體電路包含一個一位元的靜 在-相關的特定例子中’此 邏輯閘,其接收這字元射匕括第 值作為其輸人,由此產生儲起來的字元線選通 包括一 m_、s 產生第一璉輯輸出,此選通邏輯電 $作為輯閘,其接收這第—邏輯輸出以及寫訊 號作為其輸由此產生—第二邏輯訊號。 處一ίΓ!還提供—分支目標緩衝器之記憶體陣列,其回 包括厂記紐電路,翻以麵這字元線選通值,此字元 線選通電路更包括—選通邏輯電路,其接收—寫訊號以及 此字兀線選通值作為輸人,由此在這寫減指出—肯定標 識的情況下’使得在此寫操作的過程中允許存取這資料條 目,亚^僅僅在此字元線選通值指出一肯定標識的情況 下,使知在一讀操作的過程中,允許有條件地存取這資料 ::鉻Γ。儲一資料條目,並回應一讀操作而輸出此 一貝"”廷刀支目標緩衝器之記憶體陣列,適宜於包括 -字兀線魏電路,其使得纽寫操狀過程巾允許存取 這貢料條目,並回應在此字元線選通電路中存儲著的-字 瓜if通值’使得在此讀操作之過財,允許有條件地存 取這負料條目。在另一特定的例子中,此字元線選通電路 條目0 I2858iW,〇c 憶體陣列的實施例,可容易地和—分支目標緩衝 :勹广上,結合起來。例如’本發明的另-實施例,提供 人=二、°己憶體陣列的一分支目標緩衝器,此記憶體陣列 通閘的字元線。每條有閘的字元線適宜於包括一選 分,更包括一字元線選通電路,其包括一用 -一子兀線選通值的記憶體電路,每條有閘的字元線 ^ ^ 有選通閘的字元線部分。此分支目標緩衝器通常 而if解碼β,其接收-指令健,並回應此指令位址 些!閑的字元線的其中之-,此分支目標緩衝器 收停^資^岐大器’其適合為從選中的㈣字元線接 ί讀,以細應接收到此解碼H巾的這指令位址。 路,的特㈣子中’此讀出放大器包括這樣的線 、言此·ν=子讀觀值傳轴各自的記憶體電路中,而 和這些有閘的,此讀出放大 :門:的線路’即其將一寫訊號傳達到和這此 有閘子讀相關聯之各自的字元線選通電路中。、- 此分支目標緩衝器的實施例,八 ,括分支預測邏輯,其用以:以施: :::::這:心 此分支目標緩衝器適宜於包括 有選通閘的字元線’每條有閘的字元線;:1=: 15
I2858iU 並包含一字元線選通電路,而字元線選通電路包括一記憶 體電路,其存儲著一字元線選通值,此選通值得自於這分 支歷史資料。 在一相關的特定例子中,此分支歷史單元包括一狀態 機,其依照一指令以往的分支執行歷史,確定此指令的分 支歷史資料。 按照本發明,分支預測單元的另一實施例包括一分支 歷史單元,其用以存儲分支歷史資料,此實施例更包括一 分支目標緩衝器,其包含一批有選通閘的字元線,每條有 閘的字元線被經由一字元線選通電路而存取,其中此分支 目標緩衝器輸出一資料條目,以此回應接收到這分支目標 緩衝器中的一指令部分,此分支目標緩衝器還輸出一字元 線選通值,此選通值得自於這分支歷史資料。 按照本發明,此分支預測單元的實施例,可容易地整 合到一處理器中。例如,此處理器包括一指令獲取單元, 其用以接收一指令並提供一對應的指令位址,此處理器更 包括一分支預測單元,其接收此指令位址並提供一預測的 位址給這指令獲取單元,此處理器也更包括一指令解碼器/ T行單元,其用以接收這指令並提供一已解碼的指令,並 回應此已解碼的指令而提供一更新的位址。 时一在一特定的例子中,此整合到這處理器中的分支預測 單t,包括一分支歷史單元,其用以存儲分支歷史資料, 此分支預測單元更包括分支預測邏輯,其用以接收此指令 位址以及這已更新的位址,由此提供這預測的位址,並由 1285841 17007pif.doc 史資料,此分支預測單元更包括-分支目 I °八用以接收此指令位址並輸出條目資料。這分 ^目標緩衝器適宜於包括如上述實施例說明的-記憶^ 本發明可容易地應用到超量化的處理, =器/執行單元包括-批執行路徑,每條路徑^ 早獨的解碼H和執行單元。超量化處理㈣ 不限於這些,…處理器和單指令多資 (g e instruction-muitiple-data,SIMD)處理器。 對-提供了各種的方法。—較佳的方法使得可以 十有閘的字元線進行一讀操作,此字元線是在一分 列中的。這方法包括:在和這有閉的 I胃聯的予疋線選通電路中,存儲一字元線選通 ^應此字元_通值,使得有條件地允許此讀操作。 ,在相關的實施例中,此方法更包括:接收這分支目 衝討的—指令部分,回應這指令部分而選擇此有問 =字兀^,並在這選中的有閘字元線上施加一字元線電 堅’再回應這字猶電壓和這字元線選通值,而有條件地 允許此讀操作。 、在另一相關的實施例中,此方法更包括:定義 ,於此&7部分的分支歷史資料,並從這分支歷史資料中 獲得這字元線選通值。 發巧,另—相關的實施例中,此方法更包括:從這分支 才丁、農衝w中輪出一資料條目,以回應一已被允許的讀操 17 1285841 17007pif.d〇c 作 j明還在—實施例中,提供一運作—分支目衡 益的方法,正如上述所描述的方法。此方法適宜於二11 ^一,指令中的每—條指令,在這批有閘字元線的=之 一,存儲一對應的資料條目,並且,在此字元=甲之 中’存儲-對應的字元線選通值,此字元線選通雷3路
其中之一相關聯。在接收到從這= ^出來的-當前指令之後,這分支目標緩衝器有條件二 輸出對應此當前指令的資料條目,此輸出是從這樣的八 目標緩衝器進行的,即其涉及對應存儲起來的字元線甬 在一相關的實施例中,有條件地輸出此資料條目更包 括:從涉及這當前指令的這批有閘的字元線中,選擇一= 閘的字元線,對此選中的有閘字元線施加一字元線電壓, 並通過此相關聯的字元線選通電路,閘控這字元線電壓, 以此回應這存儲起來的字元線選通值。 在此指令執行完之後,至少一字元線選通值會被更新。 本發明還在另一實施例中,提供一運作一分支預測單 元的方法。此方法適宜於包括在一分支歷史單元中,為— 指令存儲分支歷史資料,從這分支歷史資料中獲得一字元 線選通值,此方法更包括存儲一資料條目,而這資料條目 涉及一分支目標緩衝器記憶體陣列中的此指令,其中這資 料條目被經由一有閘的字元線,在此分支目標緩衝器中存 取,此方法也更包括在一字元線選通電路中存儲一字元線 1285841 17007pif.doc 選通值,而這字元線選通電路和這有閘的字元線相關聯, 此方法還有條件地允許從這分支目標緩衝器之記憶體陣列 中,輸出此資料條目,以此回應在此分支預測單元中接收 的這指令,以及涉及這存儲起來的字元線選通值。 在一相關的實施例中,此方法更包括··在執行每條指 令之後,更新這分支歷史資料以及對應的字元線選通值: 為讓本發明之上述和其他目的、特徵和優點能更明顯 易懂,下文特舉較佳實施例,並配合所附圖式,作詳細說 ® 明如下。 【實施方式】 為讓本發明之上述和其他目的、特徵和優點能更明顯 易II,下文特舉較佳貫施例,並配合所附圖式,作詳細說 明如下。本發明之保護範圍當視後附之申請專利範圍所界 定者為準。 在通常的應用中,本發明的實施例提供一分支目樣缓 衝器’使得處理器在執行以及運作時具有較低的功率消 鲁耗’並提高了分支指令的執行速度,還減少了整體的複雜 性。在一方面,此處理器電能的消耗,通過有條件地使得 不允許對此分支目標緩衝器之讀操作而減少了。在一相關 的方面,此處理器中對分支指令的處理,沒有了由需要搜 索和/或計算分支歷史資訊的操作而產生的延遲。但在另一 方面,此處理器從一基礎構造之分支預測單元中減少了的 複雜性而得到益處。 術語”處理器”廣泛地包括任何數位邏輯裝置或系統, 1285841 17007pif.doc 其可以執行或回應一指令序列。此術語包括,比如這樣一 些例子’如中央處理器(CPU)、微處理器、數位訊號處理 器(digital signal processors,DPSs)、精簡指令集電腦 (reduced instruction set computer)處理器,以及單指令多資 料(single-instruction-multiple-data,SIMD)處理器。 官線式的處理器,特別適合於整合到依照本發明的敍 述而設計的一分支預測單元中。因此,多管線式的處理器 將作為說明駐作例子,並作為本發明的構造和應用而描 述,而且由此描述本發明所提供的一些優點。圖2以一方 塊圖的層面,說明第一個示範性的管線式處理器。 處理器10經由匯流排14,採用許多傳統的資料傳輸 技術的其巾任何之-,將㈣傳麵記龍12,或從其取 得資料。記憶體12假定存儲-或多個軟體程式或程式: -程式或套裝程式含-串的指令。記,_ 12還假定存儲盘 这指令序列串相關的資料。這資料可包括由這處理用、 ,以及/或者由處理器10存儲在記憶體J 果舅料。指令從記憶體12返回到處理琴 #虛搜哭社山从, ° 以此回應從 坆處理态扎出的一位址。一位址的指出可有报多的 但一程式計數器(program counter,Ρ〇是一妯良劣》 技術,通過此程式計數器,處理器1〇指出記 哪一個記憶體位置(即記憶體位址),存 ;;二中的 被獲取之指令。 #㈣T-條”要 如上所述,指出一條要從記憶體中查 指令的簡單方法,當指令中的-或多條分支指2條 20 1285841 17007pif.doc 變得非常的複雜,此分支指八 址,而在另-條件下指出另件下指出-個下〜仇 理器來說,尤其正確。 下一位址。這對管綠式處 請參考圖2,管線式處理A、 元13,指令獲取單元13從記:通常包括一指令獲取翠 提供一預測的位址(如一程式^體。12接收一指令(取),迷 獲取單元13將這指令提佴终一 ^值)給記憶體丨2。指令 器1S解碼這指令,即通常提H令解 15。指令解螞 到一執行單元17。執行單礼令至少的一操作碼部分 (或指令部分),此已解瑪二^矣枚到的這已解石馬的指令 個或多個操作。這些操作初始化執行單元中-寫回到記髓12❹、統中料他H㈣結果資料,即其 ===令解:15之外,指令獲取單元 括-指令位址Me二:^^單元19°指令部分通常包 還接收-由執杆--^括其他資訊。分支預測單元I9 3在之確定的”下-位址'也就 指令確實知n執後令序列中要執行的下一條 下-位址的ί出:此分支指令的條件被確定了)。因此, 分支預測單饋到分支預測單元19。利用此資訊, 上的下入焚這捕賴的下—條齡是否實際 -指令位Γ從執行單元17指出的此下-位址,一般是 八位二21仃單7017指出的此下—位址’和之前預測的指 " 配時(即一”擊中”條件),此處理器就繼續向前 21 17007pif.doc 1285841 處理這管線的指令序列。但是,如果指出的此下一位址, 和之前預測的指令位址不相匹配時(即—,,擊不中”條件), 那麼’此處理器就沖洗掉這管線’並加載入由這下一位址 指示的指令。 下一位址指示的指令和先前預測的指令位址的比較, 適宜在分支預測單元19中進行。在如下所描述的另外一些 細節中,管線式處理器10内也提供有分支預測單元19了 由此提供一預測的位址到指令獲取單元13。 在繼續對此較佳實施例作一更詳細的描述之前,應該 特別地注意此發明也特別的適合超量化的處理器。圖3說 明一作了很大簡化的超量化的處理器。這裏,記憶體12 一樣地經由匯流排14,將指令和/或資料供給到超量^匕處 理器11。分支預測單元39和指令獲取單元33,除了指令 獲取單元33把指令提供給多執行路徑34、35和%之外, 通常如上描述那樣地操作。類似地,每一執行路徑34、35 和36提供一下一位址指示給分支預測單元39。 在此說明的超量化處理器之例子中,繪示了三個執行 路徑,不過這一數目僅僅是一示範,並且是任意選擇的。 此外,每一執行路徑的特徵在於一組合的解碼器/執行單 元,其從一公共的指令獲取單元接收指令。 和這被圖解的處理器之示範環境相關聯之硬體和功能 性的邊界,完全是一設計者之常規設計的課題。例如,解 碼和執行功能可容易的在一單獨部分的硬體中執行(比 如,一積體電路(1C))或者在多個部分的硬體中執行,即互 22 1285841 17007pif.doc 相合作的積體電路。解碼和/或執行,可以肖硬體、軟體、 固件’或此三種通常的平臺類型之任一組合而執行。類似 的,此指令獲取單元和指令解碼器單元、和/或分支預 元之間的硬體和功能性的邊界,在此實施例中只是說明性 的。可以預期的,在本發明的背景内,可有很 更動與潤飾。 •二論此整合的處理㈣型,本發明適宜於提供一分支 制料’其包括某娜式的分支刪賴、某些存儲與 分支指令相關資料的機制,以及某種形式的分支歷史資料 的存儲和/或計算。® 4還以方塊圖的形式,說明圖 的分支預測單元19。 圖4中,分支預測邏輯2〇提供一預測位址,它是至少 提供到指令獲取單元Π的典騰^。分支賴邏輯如從 此,令獲取單元η接收—指令位址,並通常和分支目標緩 衝益22以及分支歷史單元24溝通資訊。這三個功能模組 被選作圖解說明的目的。本發明並不限制於在一硬體層面 • ㈣70件,定組合。例如,在本發明的實際實施中,與 分支歷史單元24相_ (如下所述)此#料存儲功能,可以 和與刀支目標緩衝器22相關的—記憶體陣列結合起來,或 者和與分支預測邏輯20相關的一記憶體裝置結合起來。類 似的,和分支歷史單元24相關的計算功能,可採用由分支 預測邏輯2〇所提供的硬體或軟體資源來實施。 更確徹地說,分支預測邏輯2〇從指令獲取單元13接 收心·部分,典型的是—指令位址(即一當前程式計數器 23 I28m_ 的值),然後預測此處理器是否應該分支到和此指令相關的 一目標位址,或執行指令序列串中的下一條指令。此術語,, 預測”通常指由這分支預測邏輯所產生的一邏輯的或計算 後的輸出’此輸出的生成是涉及到所接收到的指令位址, 還涉及與接收到的指令位址相關的分支歷史資訊。因此, 分支預測邏輯20可包含很多邏輯結構專用的組合、計算電
硌、舅料寄存器、比較電路,和/或類似的硬體資源 可能嵌入的控制器軟體,其用以驅動這硬體資源。 正如當前所適宜的,分支預測邏輯2〇提供一寫 (WRITE)訊號給分支目冑緩衝$ 22。此寫訊號控制在分支 目払緩衝器22中的一寫操作。此術語,,讀(READ),,和,,寫 (WRITE)”在這裏一般是用於描述相應、的操作,這些操作 在普通記憶體裝置的操作中是熟知的,比如—靜態&機存 取記憶體⑼atic Random Access Memory,sram)以及動 態隨機存取記憶體(Dynamic Random Aceess M DRAM) 〇 由分支預簡輯2 0所作的這樣—個確定,即分支到這 η = τ冉為一”取走”條件。由分支預測邏輯2〇所作 即不分支到這目標位址,而是執行此指 ^1、羅輯20 條指令,被稱為―”不取走,,條件。分支預 歷ΐ資料二Λ走或不取走的條件,是依賴於分支 址所指出的此:令二::的狀’癌’是和此接收到的指令位 ,和/或為至少分支 分支歷史單元24負責計算、存儲 24 I285m 預測邏輯20提供分支歷史資料。 的資料,即盆有用㈣支歷史貝枓疋任何這樣 ^ 條件之間選擇其—。大量傳統的演曾 二if“已經提出’它們建議區分這樣的資料之計算; 法1 匕身料指出一分支指令是否會被執行。 本發明易於採用這些方法學中的 ^ ^ 算法或:法對分支指令的行為提供測:要此演 軍=史資料的存儲和提供,適宜於由一和 的記㈣元件而提供。每—在此分支 儲有—對應資料條目的分支的指令,應該適宜ί Ϊ =歷史單元中’存儲有某種形式的分支的歷史資 Ϊ料L ΐ面所提到的,分支歷史資料可以和對應二 同存儲在此分支目標緩衝器中)。一指令的 貝料,可以實驗性地通過運行—衫個包含此指令的 ‘式而較,由此較此指令實際上分支的頻率。一 ^生地確定了,那麼此分支歷史#料就存儲在這分支歷史 ^中’準備作隨後的應用。正如當前所適宜的,最初確 ^的分支歷史讀,如果存在的話,在此指令隨後每一個 執行之後,當必需時就被得以更新。在這樣的方式下,暫 時的分支行為,被用以更新存在的分支歷史資料。當然, 刀支歷史負料不必以某種方式而預先地確定,但可以,,在運 作中”(on-the-fly)產生,以此回應實際的指令執行。 無論何時確定下來和不管用何種方法得到更新,分支 歷史資料可容易地利用一狀態機而確定。一個有競爭性的 25 I2858iUc 狀態機之複雜性和設計,是一常規設計的選擇。然而,如 當前所適宜的,本發明整合了— 2位元的、向上/向下的飽 和計數器(saturation counter),其作為分支歷史單元24的計 异部分。此2位元的、向上/向下飽和計數器的操作和應 用,在圖5的流程圖中得以說明。這裏,一 2位元的分支 歷史資料值,在一分支指令的執行之後,被增加了或減少 了,這涉及在執行過程中,此指令是否實際地被取走或不 被取走。這分支歷史資料指出了此指令一具體之,,取走情 況”的程度。 例如,一條之前不被取走的分支指令,從一,,強烈地不 取走”狀態,轉變到一,,弱的不取走,,狀態。這一狀態的轉 變,是通過將對應的分支歷史資料值從”〇〇,,增加到”〇1,,而 指出。一條之前有一,,強烈地取走,,狀態,,的指令,通過減少 對應的分支歷史資料值,而改變到一,,弱的取走”狀態,這 -改變是跟著—執行週期之後,在這週射,此指^沒被 取走。 一在當前較佳的實施例中,對大多數的應用程式,2個 位元已被S忍為足夠於預測一條指令是否會被取走的可能 ,。然而,這對所有應用程式來說,並不是一定正確的, 它們其中的-些,可能需要更大數量(比如更多的 的分支歷史資料,以此作出—精確的取走/不取走的判定。 ,此’這分支歷史=#料具義定義,還有計算這分 貢料所用演算法崎擇,錢/或者實施此選中 ς 一 狀態機之一個定義,都是一設計上的選擇。、/ 、 26
1285841 17007pif.doc 圖4戶斤示的分支目標緩衝器,通過炎 ,,描述。這裏,-解碼器43接收—指^二而更= 指出的字元 元峻你紐说哭乂傳先的分支目標緩衝器,一批字 r 到記憶體陣列40。然而,在本發: 有二;::質、操作,和實施都作了更改。術語,, 子赠,,應用在以下蝴的雜實施例中,以此 描述本發明所預期的字元線。 °己隐體陣列4G適宜於用非揮發性的(non.vGlatile)記憶 胞’比如靜悲隨機存取記憶胞,但也可採用其他形式的記 憶胞。類似一傳統的分支目標緩衝器之記憶體陣列,本發 明的記憶體陣列,適宜於存儲一批資料條目,其中每一資 料條目對應於一指令,並適宜於包含炱少一分支位址標籤 和一目標位址。每一資料條目中,還<雜關聯有其他類型 的資料,但通常來說,需要有某種形式的分支位址標籤和 目標位址。 一當前較佳的有選通閘的字元線,在圖7得以繪示。 一有閘的字元線通常包括一字元線7〇和一字元線選通電 路60之結合。如圖6所示,這些字元線選通電路,適宜於 以一對一的原則,和一對應的字元線相關聯。這批字元線 選通電路,適宜於在記憶體陣列4〇内以列的方式來配置。 這種配置對存儲在這些字元線選通電路中各自的字元線選 通值,允許經由傳統的寫技術而容易地更新。在一較佳的 實施例中,記憶體陣列40包括一靜態隨機存取記憶體陣 27 1285841 17007pif.doc ::===括一記憶體電路’它由-單 J月’心酼機存取記憶胞而形成。 可疋此予元線選通電路的實際配置,每一字 ,路按,-,,字元線選通值,,而L:,l= 線相關的指令之分支歷史資料而得到的,由 粗。許對—對應字元線的存取,而此分支歷史資 部八,、ί疋#,每—接收在分支目標緩衝器中的分支指令 元線存健-資料條目,其包二=:::和1 二它們和這接收到的分支指令部分相關=二 :43:携的字元線是一有間的字元線,即這樣 料的字元線選通值而控制:此字元元 疋侍自於和這指令相關的分支歷史資料。 和、二支的仏’一字70線選通值,是適宜於得自 的分支歷史資料。一較佳的得自方法,將以 ^貫施例的背景而描述。這得自方法只是—個例子。許 =同的方法可以應賴從這分支較資料中,得出一字 ^線選通值1這些方法將按照如下這卵素的不同而變 U巧歷史資料的性質、用於㈣此分支歷史資料的 t法、子疋線選通值的大小(即位元的數量),以及/或者 此字元線選通電路之結構和作為其構造基礎的記憶體電 路0 28 I28m_c 、假設採取關於圖5所描述之2位元的分支歷史資料, 並,一步採取一單個位元的記憶體電路,而這記憶體電路 和每一字元線選通電路相關聯,那麼,簡單地通過利用此 为支歷史資料中最有意義的一個位元,就可以得出一勝任 的,字元線選通值。在此例子中,一最有意義的位元之邏輯 值”1”,指示此指令一,,強烈地取走”或,,弱取走,,的狀態。而 一最有意義的位元之邏輯值’,〇,,,指示此指令一,,弱^不取 走或”強烈地不取走”的狀態。通過存儲此位元到和這字元 線選通電路相關聯的一單個位元的記憶胞,那麼,此指八 之取走情況的-可接受精確度的指示,被用於控制此 的字元線。 =到^圖7,—解選中字元線7。,並在傳統 丄 > 式下,一子兀線電壓施加到字元線70。通常來講,這 =加的字元線電壓’將會提高橫跨此字 ^ =勢位元。㈣,在本發財,此字元線電壓橫 電=〇線所長Λ的,,是有條件地由—關聯之字元線選通 =60所允和字元線選通電路⑼適宜於包括—記 電路61和一選通邏輯電路62。 μ 一 的4= 路二!會按照要存儲起來的字元線選通值 尺寸大小砂料尺寸。在制關子巾,存儲有 。然而,字元線控制值任何合理的尺寸大小, j起來朗於控制對此有閘字元線的存取。在圖7 /, 四個N-類型的電晶體’它們用於為這記憶二;二 29 ,07Pif.doc 1285841 元線選通值。 、、存儲起來的字元線選通值之邏輯值(“1”或”〇”),被用作 為選通邏輯電路62的一輸入。明確的說,此字元線選通值 =為輸^,施加到一第一邏輯閘82,此邏輯閘也從這分 支預測邏輯接收一寫訊號。由於此第一邏輯閘是一或類型 =t,ype)的邏輯閘,在其中—個或同時兩個輸人的一邏輯 ^ ,都將導致一第一邏輯輸出,τ,。此第一邏輯輸出, 輯,,°1,此^^電壓值(即…由此第二邏輯閘解釋為一邏 或υ的―高或低的電壓),被施加到一第二邏輯閘 兩侗ί於ί第二邏輯閘是一與類型(AND切e)的邏輯閘, 個輸入都必須是,τ,,才導致—第二邏 較佳實施例中,這從第-遴親卩卩 在此 被作輯輸出的第二邏輯輸出, -:字部分,即 元線部分71可回應一指令位址而被-X線ΓΓ2,字 的字元線科72,其只可_此字^ ^擇’而有間 被允許存取。在-實施例中,此選擇的電路的操作而 於從這解碼器接收一字元線電壓。、子元線部分被適合 此字元線電壓,可作為與字元線7g 通電路的一個輸入。當有條件地被存儲聯的子π線選 路60中的字元線選通值允許,此字 ^字★線選通電 的有閘字元線72。 、、電&被傳送到對應 I2858iUc 有條件地傳送(即”閘控選 Ϊ字元線,-對應的有二::線 ίΓί的!"#作°也就是說,當此字元線選通值指出八去 歷史資料齡卜分支指令很可纟 θ刀支 元線的-讀操作就被允許= 分支歷史資料褚、目丨丨…、田此子兀線選通值指出 的字元令可能不被取走時,對此選擇 的子几、,泉的一一操作就被不允許。 這樣的有條件之,,存取操作,,授 寫操作之過程中是不必要的,在此寫操二在^ 目被更新。因此’這寫訊號對此第一 姐山I、=σ ’§—有閘字元線被此解碼器選中時,就直 二==通值而進行。在此方式下,不僅有條件之讀 ϋ和無條件的(對應這字元線親縣說)寫操作,都有 效地利用一最少的硬體資源。 抑圖6所不之讀的分支目標緩衝器,更包括一讀出放 大~ 5八在成功的(比如,一允許的)讀操作之後,從 δ己憶,陣列4G接收-資料條目。正如當前所適宜的,讀出 放大器45咖於載入(寫或更新)字元線控制值(word line control values ’ WLCV)到和此字元線選通電路相關聯的各 個記憶體電路。 按照本發明,操作—分支預測單元的一示範方法,將 參考圖8在下面作出描述。對應於—批分支指令的資料條 目,存儲在此分支目標緩衝器之記憶體陣列中(1〇〇)。每一 31 I28584107p,doc 才"的刀^歷史貝料’通過採用—勝任的演算法而揭露出 來(1〇1)。每一指令各自的字元線選通值(word line gating values,WLGV),從分支歷史資料而得到(1〇2),並存儲 到對應於_字70線選通電路的記憶體電路中⑽)。 、在口這些資料條目和字元線選通值存奴來後,此分支 預測單it就準備好接收—指令部分,比如一指令位址 (104)。此指令部分被解碼⑽),並且一對應的字元線被選 ,出來(1G6)。此字兀線被選擇出來後,此存儲起來的字元 線選通值,有條件地確定此字元線—有閘的部分是否被存 取一”肯定的”字元線選通值的指示(即一此分支指令可能 會被取走的指示),導致—允許的字元線存取(108),並輸 出對應的資料條目(109)。一”否定的,,字元線選通值的指示 (即-此分支指令可能不會被取走的指示),導致不作進一 的存取,並由此記憶體陣列產生輸出(11Q)。上面提到的 k否疋的和”肯定的”字元線選通值指*,將通常對應到 一具體指令的標識為取走/不取走之狀態。 、抑上述的例子說明了經由按照本發明所設計的一分支預 測單元而得_方便性和有效性,其可接彳卜分支指令, 並有,=地允許存取存儲在一分支目標緩衝器中的資料條 1 /這資料條目只從這分支目標緩衝器中讀出,這分支目 才不、、爰衝裔中對應的分支歷史資料,删此資料條目可能需 被用到有低的取走”此分支可能性的指令,不會導 致對此分支目標緩衝允許的讀操作。因此,花費在不 必要之續操作的電能被節省下來了。 32 I285841〇7p_ 例如,圖9是一圖表,其說明一 EEMBC基準測試的 模擬運行結果,此模擬是採用按照本發明設計的一分支預 測單元而進行。沿著水平軸所指出的一系列的基準測試程 式的上方,繪示這樣的一比較,即分支指令一預測的機率 和分支指令-實際的機率的比較。這具體的類比揭示了分 支指令的大約4G%,是和-”不取走,,的狀態相關聯,因 此,和分支目標緩衝器記憶體陣列的讀操作相關的電能消 耗可以減少40%。 但是,本發明並不提供對這樣的電能節省,即對複雜 性之增加和運作速度降低的代價。當—指令被接收到這分 支預測單元時’此指令直接地由一解碼器處理, 許時’接著直接產生-對應的資料條目輸出。對^ 處理,沒有為了如下這些操作而產生的延遲,即為^ 預解碼,查找和/或計#此指令齡支歷史資料,並只 後產生一訊號,此訊號允許/不允許對此分二 憶體作-對應_操作。 i讀&己 本發明中,不需要另外複雜的線路或功能, 條件地允許對此分支目標緩衝器記憶體作讀操作。Λ 而代之以的,一對應的字元線選通值,,等^,, 中接收的每條指令。在一簡單的字元 爰的子兀線選通值之應用,其允許/不允許〜_通電路 取,字元線存儲騎應於此接收到指令==線的存 每條指令的執行之後,此字元線選通值的可;=。在 在此字元線選通電路裏得到更新。 w>確地 33 I2858ilP,doc 雖然本發明已以較佳實施例揭露如上,然其並非用以 限^本發明,任何熟習此技藝者,在不脫離本發明之精神 和範圍内,當可作些許之更動與潤飾,因此本發明之保護 範圍當視後附之申請專利範圍所界定者為準。 術S吾較佳的”和”適宜”貫通上面的描述。這些術語只 是在這些展示的實施例中,指出當前的優先選擇。這些術 語還承認,隨著技術不斷地改進其他電路,各種機制,以 及各種方法將會產生出來,通過它們,可有效地實施本發 明。 【圖式簡單說明】 為讓本發明之上述和其他目的、特徵和優點能更明顯 易懂,下文特舉較佳實施例,並配合所附圖式,作詳細說 明如下。其中: 圖1說明一傳統的分支目標緩衝器,以及從此分支目 標缓衝器輸出一資料條目所需要的元件。 圖2是一方塊圖,其繪示一示範的處理器,按照本發 明,此處理器可容易地整合到一分支預測單元和/或按照本 發明的方法中。 圖3是一方塊圖,其繪示一示範的超量化處理器,按 照本發明,此處理器可容易地整合到一分支預測單元和/ 或按照本發明的方法中。 圖4是一方塊圖’其按照本發明,進一步說明一分支 預測單元一些另外的細節。 圖5是一流程圖,其按照本發明,說明一易於包含在 34 1285841 17007pif.doc 一分支歷史單元中的狀態機。 圖6是一方塊圖,其按照本發明,說明一分支目標緩 衝器的記憶體陣列的一實施例。 圖7是一電路圖,其按照本發明的一實施例,進一步 說明一有選通閘的字元線的結構。 圖8是一流程圖,其按照本發明,說明一較佳的操作 一分支預測單元之方法。 圖9是一圖表,其按照本發明,說明一分支預測單元 之基準測試的類比結果。 【主要元件符號說明】 I :分支目標緩衝器 2:分支預測邏輯
3:指令位址解碼器 4 :記憶體陣列 5、45 :讀出放大器 標籤比較寄存器 多工器 程式計數值多工器 邏輯閘 10 :管線式處理器 II :超量化處理器 12 :記憶體 13、33 :指令獲取單元 14 ·匯流排 35 1285841 17007pif.doc 15 :指令解碼器 17 :執行單元 19、39 :分支預測單元 20 :分支預測邏輯 22 :分支目標緩衝器 24 :分支歷史單元 34、35、36 :執行路徑 40 :記憶體陣列 43 :解碼器 60 :字元線選通電路 61 :記憶體電路 62 :選通邏輯電路 70 :字元線 71 :選擇的字元線部分 72 :有閘的字元線部分 80 :第二邏輯閘 82 :第一邏輯閘 36