TWI723072B - 由可獲得預取精確度所動態控制的指令預取器及指令預取方法 - Google Patents
由可獲得預取精確度所動態控制的指令預取器及指令預取方法 Download PDFInfo
- Publication number
- TWI723072B TWI723072B TW105137037A TW105137037A TWI723072B TW I723072 B TWI723072 B TW I723072B TW 105137037 A TW105137037 A TW 105137037A TW 105137037 A TW105137037 A TW 105137037A TW I723072 B TWI723072 B TW I723072B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- prediction
- queue
- branch prediction
- current prediction
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 18
- 238000000605 extraction Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 description 27
- 230000010365 information processing Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 9
- 239000004065 semiconductor Substances 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000002513 implantation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012536 packaging technology Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000003826 tablet Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 235000012773 waffles Nutrition 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
根據一個一般態樣,一種裝置可包括分支預測單元、提取單元、及預取電路或預取單元。所述分支預測單元可用以輸出所預測指令。所述提取單元可用以自快取記憶體提取下一指令。所述預取電路可用以基於所述所預測指令與所述下一指令之間的關係而將先前所預測指令預取至所述快取記憶體中。
Description
本申請案根據35 U.S.C.§119主張於2016年1月07日提出申請的標題為「由可獲得預取器精確度所動態控制的指令預取器(INSTRUCTION PREFETCHER DYNAMICALLY CONTROLLED BY READILY AVAILABLE PREFETCHER ACCURACY)」、序列號為62/276,067的臨時專利申請案的優先權。此一早先提出申請的申請案的主題併入本案供參考。
本說明是有關於對資料進行預取,且更具體而言是有關於控制對指令的預取。
在電腦架構中,指令預取是用於藉由減少等待狀態而使程式執行提速的技術。預取一般發生在處理器或處理器的子單元(例如,預取單元)在實際需要之前便自主記憶體請求指令或資料區塊之時。當指令/資料區塊自主記憶體或系統記憶體返回時,
指令/資料區塊通常被放置於快取中。當請求被產生以自快取對指令/資料區塊進行存取時,自快取存取指令/資料區塊可較請求而自主記憶體或系統記憶體進行存取快得多。因此,預取隱藏記憶體存取潛時(latency)。
由於程式為一般依序執行,因此當指令以程式次序進行預取時效能可能最佳。作為另一選擇,預取可為複雜分支預測演算法的一部分,其中處理器嘗試預估計算結果並提前提取正確的指令。
在電腦架構中,分支預測器或分支預測單元是試圖在對結果進行實際計算且知曉所述結果之前猜測分支(例如,若-則-否則結構(if-then-else structure)、跳越指令)將走哪條路線的數位電路。分支預測器的目的一般是改良指令管線中的流動。分支預測器在於諸多現代帶管線微處理器架構中達成高效效能方面起關鍵作用。
雙路線分支(two-way branching)常常是利用條件跳越(conditional jump)指令而實作。條件跳越可要麼是「不被選取」且利用緊隨條件跳越之後的第一分支碼繼續執行,或者條件跳越可以是「被選取」且跳越至程式記憶體中儲存有第二分支碼的不同位置。直至在指令管線中條件已經計算且條件跳越已通過執行階段之前,經常無法確切知曉條件跳越是將被選取還是不被選取。
若不進行分支預測,則處理器通常將須進行等待直至在管線中條件跳越指令已在下一指令能夠進入提取階段之前通過執
行階段為止。分支預測器試圖藉由嘗試猜測條件跳越是最可能被選取還是不被選取來避免此種時間上的浪費。被猜測為最可能的分支接著被提取並被以推斷形式執行。若分支預測器檢測到所猜測的分支為錯誤的,則被以推斷形式執行或部分執行的指令經常會被捨棄且管線利用正確的分支重頭開始,進而引發延遲(delay)。
根據一個一般態樣,一種裝置可包括分支預測單元、提取單元、及預取電路或預取單元。所述分支預測單元可用以輸出所預測指令。所述提取單元可用以自快取記憶體提取下一指令。所述預取電路可用以基於所述所預測指令與所述下一指令之間的關係而將先前所預測指令預取至所述快取記憶體中。
根據另一一般態樣,一種方法可包括由預測電路預測將由處理器執行的所預測指令。所述方法可包括由提取電路自快取記憶體提取下一指令。所述方法亦可包括判斷所述所預測指令與所述下一指令之間的關係是否滿足一或多個預定準則的一組。所述方法可包括若所述所預測指令與所述下一指令之間的所述關係滿足所述一或多個預定準則的所述一組,則將所述所預測指令預取至所述快取記憶體中。
根據另一一般態樣,一種裝置可包括處理器、快取記憶體、分支預測單元、提取單元、及預取電路或預取單元。所述處理器可用以執行指令。所述快取記憶體可用以暫時儲存指令。所述分支預測單元可用以輸出所預測指令,其中所述所預測指令被
以推斷的形式預測以由所述處理器執行,且其中所述分支預測單元自提取單元解耦。所述提取單元可用以自快取記憶體提取下一指令。所述預取電路可用以因應於所述所預測指令與所述下一指令之間的關係滿足一或多個預定準則,而將先前所預測指令預取至所述快取記憶體中。
在附圖及以下說明中提出了一或多個實施方案的細節。藉由閱讀說明及附圖以及閱讀申請專利範圍,其他特徵將顯而易見。
如結合各圖中的至少一者所示出及/或所闡述、如在申請專利範圍中所更完整地提出,實質上闡釋了對資料進行預取的系統及/或方法,且更具體而言是有關於控制對指令的預取。
100:系統
102、410:處理器
104:系統記憶體/主記憶體
112:分支預測單元/分支預測電路
114、214、314:分支預測位址隊列
116、216:指令提取單元
118:一級指令快取
120、220:指令預取單元
172、254、254a:所預測指令
174、252:下一指令
176、177:訊號
178:記憶體存取
200、300:裝置
212、312:分支預測單元
254b:最新所預測指令
256:有效指令計數值
266:臨限值
320:指令預取單元
352、354、354a、354b:置信度水準
366:置信度水準臨限值
400:資訊處理系統
405:系統匯流排
415:組合邏輯區塊
420:揮發性記憶體
430:非揮發性記憶體
440:網路介面
450:使用者介面單元
460:硬體部件
470:軟體部件
圖1是根據所揭露主題的系統的示例性實施例的方塊圖。
圖2是根據所揭露主題的裝置的示例性實施例的方塊圖。
圖3是根據所揭露主題的裝置的示例性實施例的方塊圖。
圖4是可包括根據所揭露主題的原理而形成的元件的資訊處理系統的示意性方塊圖。
在各個圖式中相同的參考符號指示相同的組件。
在下文中將參照其中示出某些示例性實施例的附圖來更充分地闡述各種示例性實施例。然而,本發明所揭露主題可被實
施為諸多不同形式且不應被視為僅限於本文中所提出的示例性實施例。確切而言,提供該些示例性實施例是為了使此揭露內容將透徹及完整,並將向熟習此項技術者充分傳達本發明所揭露主題的範圍。在圖式中,為清晰起見,可誇大層及區的大小及相對大小。
應理解,當稱一組件或層位於另一組件或層「在」、「連接至」或「耦合至」另一組件或層時,所述組件或層可直接位於所述另一組件或層上、直接連接至或直接耦合至所述另一組件或層、抑或可存在中間組件或層。相比之下,當成一組件「直接在」、「直接連接至」或「直接耦合至」另一組件或層時,則不存在中間組件或層。通篇中相同的編號指代相同的組件。本文中所用用語「及/或」包括相關所列項其中的一或多個項的任意及全部組合。
應理解,儘管本文中可能使用用語「第一」、「第二」、「第三」等來闡述各種組件、部件、區、層、及/或區段,然而該些組件、部件、區、層、及/或區段不應受該些用語限制。該些用語僅用於區分各個組件、部件、區、層、或區段。因此,在不背離本發明所揭露主題的教示內容的條件下,可將以下所論述的第一組件、部件、區、層、或區段稱為第二組件、部件、區、層、或區段。
為易於說明,本文中可能使用例如「在...之下(beneath)」、「在...下面(below)」、「下方的(lower)」、「在...之上(above)」、「上方的(upper)」等空間相對性用語來闡述圖中所
示的一個組件或特徵與另一(其他)組件或特徵的關係。應理解,所述空間相對性用語旨在除圖中所繪示定向以外亦囊括所述元件在使用或操作中的不同定向。舉例而言,若圖中元件被翻轉,則被闡述為在其他組件或特徵「下面」或「之下」的組件此時將被定向為在其他組件或特徵「之上」。因此,示例性用語「在...下面」可囊括上方及下方兩種定向。所述元件可具有其他定向(旋轉90度或處於其他定向),且本文中所用的空間相對性描述語相應地進行解釋。
本文所用術語僅用於闡述特定示例性實施例,而並非旨在限制本發明所揭露主題。除非上下文中清楚地另外指明,否則本文所用的單數形式「一(a、an)」及「所述(the)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、組件、及/或部件的存在,但不排除一或多個其他特徵、整數、步驟、操作、組件、部件及/或其群組的存在或添加。
在本文中,參照作為理想化示例性實施例(及中間結構)的示意性說明的剖視圖闡述示例性實施例。如此一來,預期會因例如製造技術及/或容差而導致偏離圖示形狀。因此,示例性實施例不應被視為僅限於本文中所示區的特定形狀,而應包含由例如製造所造成的形狀偏差。舉例而言,被示作矩形的植入區將通常具有圓形特徵或彎曲特徵及/或在其邊緣存在植入濃度的梯度而非自植入區至非植入區的二元變化。同樣地,藉由植入而形成的隱
埋區可造成在所述隱埋區與在進行植入時所經過的表面之間的區中出現某些植入。因此,圖中所示的區為示意性的且其形狀並非旨在說明元件的區的實際形狀且亦非旨在限制本發明所揭露主題的範圍。
除非另外定義,否則本文所用的全部用語(包括技術及科學用語)的含義皆與此揭露主題所屬技術領域中具有通常知識者所通常理解的含義相同。更應理解,用語(例如在常用字典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非本文中明確地如此定義,否則不應將其解釋為具有理想化或過於正式的意義。
在下文中,將參照附圖來詳細闡釋示例性實施例。
圖1是根據所揭露主題的系統100的示例性實施例的方塊圖。在各種實施例中,系統100可包括電腦、一定數目的分立(discrete)的積體電路、或系統晶片(system-on-a-chip,SoC)。如下所述,系統100可包括一定數目的其他部件,為了不使所揭露主題模糊,未在此圖中示出所述其他部件。
在所示實施例中,系統100包括系統記憶體或主記憶體104。在各種實施例中,系統記憶體104可由動態隨機存取記憶體(dynamic random access memory,DRAM)構成。儘管,應理解以上僅為一個說明性實例,所揭露主題並非僅限於此。在此一實施例中,系統記憶體104可包括模組上記憶體(memory on module)(例如,雙列直插式記憶體模組(dual in-line memory module,
DIMM)),可為與系統100焊接於一起或以另一種方式與系統100固定地整合於一起的積體晶片,或者可甚至併作包括系統100的積體晶片(例如,系統晶片)的一部分。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
在所示實施例中,系統記憶體104可用以儲存多筆資料或資訊。該些多筆資料可包括使處理器102實行各種操作的指令。一般而言,系統記憶體104可為包括一定數目的快取的較大的記憶體層階的一部分。在各種實施例中,本文所述操作可藉由此記憶體層階的另一層或層級(tier)(例如,二級(level 2,L2)快取)來實行。熟習此項技術者應理解,儘管所述操作是參照系統記憶體104來闡述,然而所揭露主題並非僅限於此說明性實例。
在所示實施例中,系統100亦包括處理器102。處理器102可用以實行由各種指令所要求的多個操作。該些指令可藉由例如算術邏輯單元(arithmetic logic unit,ALU)、浮點單元(floating point unit,FPU)、加載/儲存單元(load/store unit,LSU)、指令提取單元(instruction fetch unit,IFU)116等各種執行單元(大多數未在圖中示出)來執行。應理解,單元僅為組於一起以實行處理器102的功能中的部分功能的電性電路的集合。通常,單元在處理器102的帶管線架構中實行一或多個操作。
在所示實施例中,處理器102可包括分支預測單元(branch prediction unit,BPU)或分支預測電路112。如上所述,當處理器102正執行一串指令時,所述指令中的一者(或多者)
可為分支指令。分支指令使所述一串指令在兩個或更多個路徑中的一者之間分支或分叉。分支指令的典型實例是若-則結構(if-then structure),在若-則結構中,若滿足某一條件(例如,使用者點擊「確認」按鈕)則將實行第一組指令,且若不滿足所述某一條件(例如,使用者點擊「取消」按鈕)則將實行第二組指令。如上所述,此在帶管線處理器架構中是一難題,乃因新指令必須在所述分支、跳越或若-則結構的結果被知曉之前(當在其中解析分支指令的管線階段在所述管線中為深層次時)進入處理器102的管線。因此,必須在分支指令被解析之前防止新指令進入管線(因此否定了帶管線架構的主要優勢),或者處理器102必須對所述一串指令將分支到哪一路線作出猜測並將該些指令以推斷的形式置於管線中。分支預測單元112可用以預測所述一串指令將如何分支。在所示實施例中,分支預測單元112可用以輸出所預測指令172或者,更精確而言,輸出儲存所預測指令172的記憶體位址。
在所示實施例中,處理器102包括分支預測位址隊列(branch prediction address queue,BPAQ)114。分支預測位址隊列114可包括用以儲存已由分支預測單元112預測的所預測指令172的多個位址的記憶體結構。分支預測位址隊列114可以先進先出(first-in-first-out,FIFO)次序儲存該些所預測指令172的位址,進而使得指令位址以與分支預測單元112預測所述指令位址的次序相同的次序自分支預測位址隊列114輸出。
在所示實施例中,處理器102包括用以自記憶體層階提
取指令並將所述指令放置於處理器102的管線中的指令提取單元(IFU)116。在此一實施例中,指令提取單元116可用以自分支預測位址隊列114選取與最久的指令或最早指令(下一指令174)相關聯的記憶體位址,並自記憶體層階請求實際指令174。理想上,指令174將自記憶體層階快速提供且被放置至處理器102的管線中。
在所示實施例中,分支預測位址隊列114用以自指令提取單元116解耦分支預測單元112。在此一實施例中,分支預測單元112以與指令提取單元116消耗指令172的速率不同的速率(例如,更快地)預測指令172。在耦合的或未緩衝的架構或實施例中,指令提取單元116可能需要與分支預測單元112預測所預測指令一樣快地提取所述所預測指令。在所示實施例中,指令提取單元116可經歷延遲(例如,快取未中(cache miss)、管線暫停(pipeline stall)等)且不影響分支預測單元112,乃因由分支預測單元112所生成的所預測指令172的任何附加位址可僅儲存於分支預測位址隊列114中。當指令提取單元116能夠重新開始消耗新的指令174的位址時,所述位址將於分支預測位址隊列114中等待。
返回至指令提取單元116的提取機制,理想上,可(藉由記憶體存取178)自一級(level 1,L1)指令快取118提取指令174。在此一實施例中,作為所述記憶體層階的頂層級或更高層級的一級指令快取118可相對快且在所述管線中引發少量延遲或不引發延遲。然而,一級指令快取118偶爾可不包括所期望的指令
174。此將導致快取未中,且所述指令將必須自記憶體層階的較低、較慢的層級(例如,系統記憶體104)提取或加載。由於指令將不以每循環一個的速率(或者所述處理器架構中的任何最大速率)輸入至所述管線中,因此此種快取未中可能在處理器102的管線中造成延時。
在所示實施例中,處理器102包括指令預取單元(instruction pre-fetcher unit,IPFU)120。指令預取單元120用以在指令提取單元116執行實際提取操作之前將指令預取至一級指令快取118中。因此,指令預取單元120減少了指令提取單元116所經歷的任何快取未中的發生。指令預取單元120可藉由在指令提取單元116自一級指令快取118請求所預測指令172之前自一級指令快取118請求所預測指令172來達成此一效果。在此一實施例中,若接著發生了快取未中,則一級指令快取118將開始進行自系統記憶體104請求未中的指令的進程。在此一實施例中,所述指令可在指令提取單元116請求所述指令時被接收並儲存於一級指令快取118中。
在各種實施例中,由於指令預取單元120的目的之一是確保一級指令快取118被預加載以任何所期望指令且並非實際上利用指令本身,因此指令預取單元120可丟棄任何返回的指令172或可不包括實際上用於接收指令172的結構。舉例而言,指令預取單元120與快取記憶體118之間的訊號177可包括為請求記憶體存取及接收關於該些請求的任何狀態更新(例如,是否存在快
取未中、請求是否被滿足)所需的控制訊號,但可不包括將載送由記憶體存取所請求的實際資料(例如,構成指令172本身的值)的資料線或訊號。應理解,以上僅為一個說明性實例,所揭露主題並非僅限於此。
在所示實施例中,指令預取單元120可用以在所預測指令172(由分支預測單元112發出的)與下一指令174(由指令提取單元116提取的)之間存在某一關係時僅對所預測指令172進行預取。在各種實施例中,所述兩個指令172與174之間的關係可為對分支預測單元112所作預測的推斷程度如何的衡量。舉例而言,若分支預測單元112不能確保其預測的正確性,則指令預取單元120可能不希望對所預測指令172進行預取。
在各種實施例中,對未正確預測指令172進行預取可具有非期望的效果。舉例而言,若未正確預測指令172被提取並放置於管線中,則未正確預測指令172隨後將必須被清除且任何所計算結果將必須被撤銷,進而使處理器102的操縱代價提高。另外,被加載至一級快取118但從未被提取或使用的任何指令可能造成快取污染(cache pollution)。在未使用資料或非希望資料填滿快取的有限空間時、逐出資料可為所期望的或可用的,快取污染為一般地。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
在某些實施例中,分支預測單元112可向指令預取單元120指示出所預測指令172的推斷程度如何。然而,在所示實施例
中,可自在分支預測位址隊列114內找到的可獲得資訊推測出推斷水準(由訊號176示出)。在此一實施例中,就其在分支預測位址隊列114中的相應位址或者分支預測位址隊列114的當前深度而言,所預測指令172與下一指令174之間的關係可為所預測指令172與下一指令174距彼此的距離。在此一實施例中,指令提取單元116越靠後,則所預測指令172的推斷程度越高。在各種實施例中,若所述距離超過預定臨限值(在圖2中進行論述),則指令預取單元120可扼制或抑制任何預取活動。然而,若所述深度低於所述臨限值,則指令預取單元120可對所預測指令172進行預取。應理解,以上僅為一個說明性實例,所揭露主題並非僅限於此。
在一個實施例中,若指令預取單元120已扼制預取且隨後接著停止扼制所述預取或繼續進行所述預取,則指令預取單元120可用以在所述扼制開始時對先前已進行預測的任何指令處開始繼續進行所述預取,以使得所有的指令(只要其位於分支預測位址隊列114中即可)皆被預取。在另一實施例中,指令預取單元120可僅不對在扼制週期期間由分支預測單元112所發出的任何所預測指令172進行預取,而是取而代之在由分支預測單元112輸出所預測指令172的新位址時開始或繼續預取。在此一實施例中,指令提取單元116可負責在即使未中的指令未被預取時亦對所述未中的指令進行提取。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
圖2是根據所揭露主題的裝置200的示例性實施例的方塊圖。在各種實施例中,如上所述,裝置200可為處理器的一部分。在某些實施例中,裝置200可為更大的或成一體的指令提取及預取單元的一部分,所述指令提取及預取單元用以預測、預取、及最終提取供處理器執行的指令。在另一實施例中,本文所述的組件可為分立的。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
在所示實施例中,裝置200包括分支預測單元(BPU)212。在所示實施例中,裝置200包括指令提取單元(IFU)216。裝置200更包括指令預取單元(IPFU)220及分支預測位址隊列(BPAQ)214。
在所示實施例中,分支預測位址隊列214的內部被突出地且顯化地示出。具體而言,儘管示出了六個隊列表項或隊列欄位;然而,應理解,以上僅為一個說明性實例,所揭露主題並非僅限於此。隨著分支預測單元212輸出所預測指令或更具體而言輸出所預測指令的記憶體位址,所述所預測指令的所述記憶體位址可以先進先出的方式列入分支預測位址隊列214內。在所示實施例中,在分支預測位址隊列214內列入有四個指令位址:所預測指令254b、254a、254的位址、以及下一指令252的位址。將最早的所預測指令稱作下一指令252,乃因所述最早的所預測指令為欲由指令提取單元216處理的下一指令(假定不發生例如管線清除(pipeline flush)等任何異常事件)。
在所示實施例中,分支預測位址隊列214維持有效指令計數值(valid instruction count value,VIC)256。在此一實施例中,有效指令計數值256可僅為對當前由分支預測位址隊列214所儲存的所預測指令的位址的數目的計數(在所示實例中為四)。在某些實施例中,有效指令計數值256可為進入至指令位址陣列中最新表項(所預測指令254b)的索引。在另一實施例中,有效指令計數值256可為下一指令252的位址與最新所預測指令254b的位址的索引之間的差。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
在此一實施例中,有效指令計數值256被提供至指令預取單元220。指令預取單元220接收有效指令計數值256作為與最新所預測指令254b相關聯的推斷水準或置信度水準的指示符。在所示實施例中,指令預取單元220可將有效指令計數值256與(由指令預取單元220儲存的)臨限值266進行比較。若有效指令計數值256低於臨限值266,則指令預取單元220可對最新所預測指令254b進行預取。若有效指令計數值256大於或等於臨限值266,則指令預取單元220可扼制或以另一種方式抑制對最新所預測指令254b進行預取。在此一實施例中,指令預取單元220可用以在與最新所預測指令254b相關聯的推斷水準過高時或置信度水準過低時終止任何預取。應理解,以上僅為一個說明性實例,所揭露主題並非僅限於此,且在其他實施例中,可基於有效指令計數值256是否小於臨限值、或任何另一比較機制(例如滑動比較(sliding
comparison))來進行扼制。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
在各種實施例中,臨限值266可被動態調整。然而,在所示實施例中,臨限值266可為靜態的預定值。在一個實施例中,儘管臨限值266可包括為2的值;然而應理解,以上僅為一個說明性實例,所揭露主題並非僅限於此。
圖3是根據所揭露主題的裝置300的示例性實施例的方塊圖。在各種實施例中,如上所述,裝置300可為處理器的一部分。在某些實施例中,裝置300可為更大的或成一體的指令提取及預取單元的一部分,所述指令提取及預取單元用以預測、預取、及最終提取供處理器執行的指令。在另一實施例中,本文所述的組件可為分立的。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
在所示實施例中,裝置300包括分支預測單元(BPU)312。在所示實施例中,裝置300包括指令提取單元(IFU)216、指令預取單元(IPFU)320及分支預測位址隊列(BPAQ)314。
儘管分支預測位址隊列314示出了六個隊列表項或隊列欄位;然而應理解,以上僅為一個說明性實例,所揭露主題並非僅限於此。在分支預測單元312輸出所預測指令或更具體而言輸出所預測指令的記憶體位址時,所述所預測指令的所述記憶體位址可以先進先出的方式列入分支預測位址隊列314內。在所示實施例中,當前在分支預測位址隊列314內列入有四個指令位址:
所預測指令254b、254a、254、以及下一指令252。
在所示實施例中,分支預測單元312輸出分別與所預測指令254b、254a、254、及下一指令252的位址相關聯的置信度水準354b、354a、354、及352。置信度水準354b、354a、354、及352可指示分支預測單元312的所述所預測指令將實際由所述處理器執行的置信度水準或推斷水準。
在某些實施例中,置信度水準354b、354a、354、及352可為二元的且指示在所述預測中是否存在絲毫的推斷。舉例而言,若在所述一串指令中尚未遇到未解析的分支指令,則所述一串指令中的所有指令將必定被選取(除非存在未預見到的錯誤(例如除以零錯誤(divide-by-zero error)))。因此,所預測指令254b、254a、254或下一指令252中的任一者可以絕對置信度被預測且可假定所預測指令254b、254a、254及下一指令252將始終需要被預取。相反地,如下所述,若已遇到未解析的分支指令,則所預測指令254b、254a、254及下一指令252皆可為推斷性的且指令預取單元320可相應地工作。
在另一實施例中,置信度水準354b、354a、354、及352指示所述一串指令中尚未解析的分支指令的數目。舉例而言,若未遇到任何未解析的分支指令,則所發出的所預測指令254可與為零的置信度水準354相關聯(其中較低的值指示較高的置信度)。一旦遇到第一未解析分支指令,置信度水準354便可提高至一。第一未解析分支指令與第二未解析分支指令之間預測的所預
測指令254亦可與為一的置信度水準相關聯,乃因分支預測單元312將不再如對作為所述指令串的此分叉或分支的開始的第一分支指令般對於該些所預測指令為正確或錯誤的。然而,當遇到第二未解析分支指令時,置信度水準354可提高至二,且所有後續指令(除非遇到第三未解析分支指令)可被標記以二值(two value)。所述二值指示該些指令具有雙倍的推斷程度且基於兩個猜測水準。
在又一實施例中,所述置信度水準(例如,置信度水準354)指示分支預測單元312的狀態機(state machine)或計數器(counter)的內部狀態。在各種實施例中,分支預測單元312可以基於其內部狀態機(圖中未示出)的預測。在某些實施例中,採用具有例如(舉例而言:強未被選取(strongly not-taken)、弱未被選取(weakly not-taken)、弱被選取(weakly taken)、及強被選取(strongly taken))等狀態的四態機(four-state machine)。在此一實施例中,關於所述狀態(例如,「強」或「弱」態樣)的資訊可包含於所述置信度水準(例如,置信度水準354)中。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
在所示實施例中,每一置信度水準354b、354a、354、及352可與相應的所預測指令254b、254a、254、及下一指令252一起儲存於分支預測位址隊列314內。在所示實施例中,下一指令252與置信度水準352相關聯;所預測指令254與置信度水準354相關聯;所預測指令254a與置信度水準352a相關聯;並且所預
測指令254b與置信度水準352b相關聯。然而,在其他實施例中,分支預測位址隊列314可不儲存置信度水準354b、354a、354、及352,進而使得指令預取單元320僅使用與最新所預測指令相關聯的置信度水準(例如,與所預測指令254b相關聯的置信度水準354b)。
在此一實施例中,指令預取單元320接收伴隨所預測指令位址的置信度水準352(例如,與所預測指令位址254相關聯的置信度水準354)。在所示實施例中,指令預取單元320可被配置成在確定對所預測指令254進行預取或扼制任何預取時考慮置信度水準342b。在所示實施例中,指令預取單元320可包括或儲存置信度水準臨限值366。在此一實施例中,若置信度水準354b(在所預測指令254b的情形中)大於置信度水準臨限值366,則可終止或扼制所述預取。然而,可對具有低於置信度水準臨限值366的置信度水準354b的所預測指令254b進行預取。
在某些實施例中,指令預取單元320可基於下一指令252的置信度水準352相對於最新所預測指令245b的置信度水準354b的差來進行預取決定。在此一實施例中,臨限值366可與相關的置信度水準而不是絕對值進行比較。換言之,下一指令252與所預測指令254b之間的置信度水準關係或差異可為預取決定的決定因素。應理解,以上僅為一個說明性實例,所揭露主題並非僅限於此。
在又一實施例中,如上所述,指令預取單元320亦可採
用有效指令計數值256。舉例而言,若分支預測單元312產生大量其高度信任的所預測指令254、但指令提取單元216僅提取少量的下一指令252,則分支預測位址隊列314的深度會變得相對大。作為結果,指令預取單元320的完全基於置信度水準354而作出預取決定的實施例可能預取過多的所預測指令254而使得快取記憶體變滿或被污染。當指令提取單元216終於能有時間提取下一指令252時,所述快取記憶體可能已將下一指令252逐出以支援隨後所預測的指令(例如,所預測指令254b),因此否定了預取的所期望益處。
在此一實施例中,可採用多準則指令預取單元320。指令預取單元320可被配置成不僅考慮置信度水準354而且考慮有效指令計數值256。若值354或256超過其相應臨限值366或266,則指令預取單元320可扼制預取操作。在此一實施例中,指令預取單元320可用以對推斷程度並不十分高的所預測指令254進行預取,且亦使所述快取不被尚未由指令提取單元216請求的指令254湧滿。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。在其他實施例中,所述實施例的指令預取單元可採用各種其他方案以判斷是否應對所預測指令進行預取。所揭露主題並非僅限於就圖2或圖3而論述的實施例。
圖4是可包括根據所揭露主題的原理而形成的半導體元
件的資訊處理系統400的示意性方塊圖。
參照圖4,資訊處理系統400可包括根據所揭露主題的原理而構造成的一或多個元件。在另一實施例中,資訊處理系統400可採用或執行根據所揭露主題的原理的一或多種技術。
在各種實施例中,資訊處理系統400可包括計算元件,例如(舉例而言)膝上型電腦、桌上型電腦、工作站、伺服器、刀鋒型伺服器(blade server)、個人數位助理(personal digital assistant)、智慧型電話、平板電腦(tablet)、及其他適合的電腦等、或者虛擬機(virtual machine)或其虛擬計算元件。在各種實施例中,資訊處理系統400可由使用者(圖中未示出)使用。
根據所揭露主題的資訊處理系統400可更包括中央處理單元(central processing unit,CPU)、邏輯器(logic)、或處理器410。在某些實施例中,處理器410可包括一或多個功能性單元區塊(functional unit block,FUB)或組合邏輯區塊(combinational logic block,CLB)415。在此一實施例中,組合邏輯區塊可包括各種布林(Boolean)邏輯運算(例如,反及、反或、反、互斥或等)、穩定邏輯元件(例如,正反器、鎖存器(latch)等)、其他邏輯元件、或其組合。該些組合邏輯運算可以簡單或複雜的方式進行配置以對輸入訊號進行處理來達成所期望結果。應理解,儘管闡述了同步組合邏輯運算的幾個說明性實例,然而所揭露主題並非僅限於此且可包括異步運算、或其組合。在一個實例中,所述組合邏輯運算可包括多個互補金屬氧化物半導體
(complementary metal oxide semiconductor,CMOS)電晶體。在各種實施例中,該些CMOS電晶體可排列於實行所述邏輯運算的閘中;然而應理解,亦可使用其他技術且所述其他技術處於所揭露主題的範圍內。
根據所揭露主題的資料處理系統400可更包括揮發性記憶體420(例如,隨機存取記憶體(Random Access Memory,RAM)等)。根據所揭露主題的資訊處理系統400可更包括非揮發性記憶體430(例如,硬驅動機、光學記憶體、反及或快閃記憶體等)。在某些實施例中,揮發性記憶體420、非揮發性記憶體430、或其組合或部分可被稱為「儲存媒體」。在各種實施例中,揮發性記憶體420及/或非揮發性記憶體430可用以以半永久或實質上永久的形式儲存資料。
在各種實施例中,資訊處理系統400可包括一或多個網路介面440,所述一或多個網路介面440用以使得資訊處理系統400能夠作為通訊網路的一部分且藉由通訊網路進行通訊。無線保真度(Wi-Fi)協定的實例可包括但不僅限於電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11g、IEEE 802.11n等。蜂巢式協定的實例可包括但不僅限於:IEEE 802.16m(亦稱為高級無線都會區域網路(Wireless-Metropolitan Area Network(Wireless-MAN)Advanced))、高級長期演進(Long Term Evolution Advanced,LTE Advanced)、增強型資料速率全球行動通訊系統(Global System for
Mobile Communication,GSM)演進技術(Enhanced Data rates for GSM Evolution,EDGE)、演進高速封包存取(Evolved High-Speed Packet Access,HSPA+)等。有線協定的實例可包括但不僅限於IEEE 802.3(亦稱為乙太網路)、光纖通道(Fibre Channel)、電力線通訊(Power Line communication)(例如,HomePlug、IEEE 1901等)等。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
根據所揭露主題的資訊處理系統400可更包括使用者介面單元450(例如,顯示配接器、觸覺式介面(haptic interface)、人機介面元件(human interface device)等)。在各種實施例中,此使用者介面單元450可用以自使用者接收輸入及/或向使用者提供輸出。亦可使用其他種類的元件來提供與使用者的交互;舉例而言,提供至使用者的回饋可為例如視覺回饋、聽覺回饋、或觸感回饋等任何形式的感覺回饋;並且可以包括聲音、語音、或觸覺輸入在內的任何形式接收來自使用者的輸入。
在各種實施例中,資訊處理系統400可包括一或多個其他元件或硬體部件460(例如,顯示器或監視器、鍵盤、滑鼠、照相機、指紋讀取器、視訊處理器等)。應理解,以上僅為幾個說明性實例,所揭露主題並非僅限於此。
根據所揭露主題的資訊處理系統400可更包括一或多個系統匯流排405。在此一實施例中,系統匯流排405可用以以通訊方式耦合處理器410、揮發性記憶體420、非揮發性記憶體430、
網路介面440、使用者介面單元450、及一或多個硬體部件460。由處理器410處理的資料或自非揮發性記憶體430外部輸入的資料可被儲存於非揮發性記憶體430或揮發性記憶體420中。
在各種實施例中,資訊處理系統400可包括或執行一或多個軟體部件470。在某些實施例中,軟體部件470可包括作業系統(operating system,OS)及/或應用。在某些實施例中,所述作業系統可用以向應用提供一或多種服務並管理或用作所述應用與資訊處理系統400的各種硬體部件(例如,處理器410、網路介面440等)之間的中介媒介。在此一實施例中,資訊處理系統400可包括一或多種本機應用(native application),所述一或多種本機應用可被安裝在本地(例如,安裝於非揮發性記憶體430內等)且被配置成由處理器410直接執行且與作業系統直接進行交互。在此一實施例中,所述本機應用可包括預編譯機器可執行碼(pre-compiled machine executable code)。在某些實施例中,所述本機應用可包括用以將源碼或目標碼轉譯成接著由處理器410執行的可執行碼的腳本解譯器(例如,C shell(csh)、AppleScript、AutoHotkey等)或虛擬執行機器(virtual execution machine,VM)(例如,爪哇虛擬機器、微軟共用語言執行環境(Microsoft Common Language Runtime)等)。
上述半導體元件可使用各種封裝技術來進行囊封。舉例而言,根據所揭露主題的原理而構造成的半導體元件可使用以下中的任意一者來進行囊封:堆疊式封裝(package on package,POP)
技術、球柵陣列(ball grid array,BGA)技術、晶片級封裝(chip scale package,CSP)技術、塑膠帶引線晶片載體(plastic leaded chip carrier,PLCC)技術、塑膠雙列直插式封裝(plastic dual in-line package,PDIP)技術、疊片內晶粒包裝(die in waffle pack)技術、晶圓內晶粒形式(die in wafer form)技術、板上晶片(chip on board,COB)技術、陶瓷雙列直插式封裝(ceramic dual in-line package,CERDIP)技術、塑膠公制方形扁平封裝(plastic metric quad flat package,PMQFP)技術、塑膠方形扁平封裝(plastic quad flat package,PQFP)技術、小輪廓封裝(small outline package,SOIC)技術、收縮型小輪廓封裝(shrink small outline package,SSOP)技術、薄小輪廓封裝(thin small outline package,TSOP)技術、薄方形扁平封裝(thin quad flat package,TQFP)技術、系統內封裝(system in package,SIP)技術、多晶片封裝(multi-chip package,MCP)技術、晶圓級製作封裝(wafer-level fabricated package,WFP)技術、晶圓級處理堆疊封裝(wafer-level processed stack package,WSP)技術、或熟習此項技術者將習知的其他技術。
各方法步驟可藉由一或多個可程式化處理器執行電腦程式來實行以藉由對輸入資料進行運算並產生輸出來實行各種功能。各方法步驟亦可藉由專用邏輯電路系統(例如現場可程式化閘陣列(field programmable gate array,FPGA)或應用專用積體電路(application-specific integrated circuit,ASIC))來實行,且裝置可被實作為所述專用邏輯電路系統。
在各種實施例中,電腦可讀取媒體可包括當被執行時使元件實行所述各方法步驟中的至少一部分的指令。在某些實施例中,所述電腦可讀取媒體可包含於磁性媒體、光學媒體、其他媒體、或其組合(例如,光碟唯讀記憶體(CD-ROM)、硬驅動機、唯讀記憶體、快閃驅動機等)中。在此一實施例中,電腦可讀取媒體可為有形地且非瞬時地實施的製品。
儘管已參照示例性實施例闡述了所揭露主題的原理,然而對於熟習此項技術者而言將顯而易見,在不背離該些所揭露概念的精神及範圍的條件下,可對其作出各種變化及潤飾。因此,應理解,以上實施例並非限制性的,而是僅為說明性的。因此,所揭露概念的範圍應由以下申請專利範圍及其等效範圍的最廣泛可容許解釋來確定,而不應受前述說明約束或限制。因此,應理解,隨附申請專利範圍旨在涵蓋落於所述實施例的範圍內的所有此種潤飾及變化。
200‧‧‧裝置
212‧‧‧分支預測單元
214‧‧‧分支預測位址隊列
216‧‧‧指令提取單元
220‧‧‧指令預取單元
252‧‧‧下一指令
254、254a‧‧‧所預測指令
254b‧‧‧最新所預測指令
256‧‧‧有效指令計數值
266‧‧‧臨限值
Claims (18)
- 一種對指令預取的裝置,包括:分支預測單元,用以輸出當下預測指令至分支預測隊列及預取器電路兩者;所述分支預測隊列用以儲存一或多個預測指令,並自提取單元解耦所述分支預測單元,其中所述當下預測指令放置為所述分支預測隊列的尾部且下一指令為所述分支預測隊列的頭部;所述提取單元,用以自快取記憶體提取由所述分支預測隊列提供的所述下一指令;以及所述預取器電路,用以至少基於所述當下預測指令與所述下一指令之間的關係而將所述當下預測指令預取至所述快取記憶體中,其中所述關係經由所述分支預測隊列提供至所述預取器電路。
- 如申請專利範圍第1項所述的裝置,其中所述預取器電路用以在所述當下預測指令與所述下一指令之間的所述關係不滿足預定準則時扼制所述預取。
- 如申請專利範圍第1項所述的裝置,其中所述分支預測隊列輸出有效指令計數至所述預取器電路,且其中所述有效指令計數指示所述當下預測指令與所述下一指令之間的所述關係及在所述分支預測隊列中所述當下預測指令與所述下一指令之間的指令的數目。
- 如申請專利範圍第1項所述的裝置,其中所述預取器電路用以在所述當下預測指令與所述下一指令之間的所預測指令的 數目不超過臨限值時對所述當下預測指令進行預取。
- 如申請專利範圍第1項所述的裝置,其中所述當下預測指令與所述下一指令之間的所述關係指示由所述分支預測單元所採用的推斷水準。
- 如申請專利範圍第1項所述的裝置,其中所述分支預測單元對所述預取器電路供應所述當下預測指令的記憶體位址。
- 如申請專利範圍第1項所述的裝置,其中所述分支預測單元輸出與所述當下預測指令相關聯的所述當下預測指令將由所述裝置執行的置信度水準;以及其中所述預取器電路用以在所述置信度水準處於臨限值或高於所述臨限值時對所述當下預測指令進行預取,且在所述置信度水準低於所述臨限值時抑制對所述當下預測指令進行預取。
- 一種對指令預取的方法,包括:由預測電路預測將由處理器執行的當下預測指令;將所述當下預測指令列入隊列中,其中所述隊列自提取電路解耦所述預測電路,其中所述當下預測指令放置為所述隊列的尾部且下一指令為所述隊列的頭部;由提取電路自快取記憶體提取如所述隊列所提供的所述下一指令;判斷所述當下預測指令與所述下一指令之間的關係是否滿足一或多個預定準則的一組;以及若所述當下預測指令與所述下一指令之間的所述關係滿足所 述一或多個預定準則的一組,則將所述當下預測指令預取至所述快取記憶體中。
- 如申請專利範圍第8項所述的方法,更包括,若所述當下預測指令與所述下一指令之間的所述關係不滿足所述一或多個預定準則的一組,則扼制所述當下預測指令預取至所述快取記憶體中。
- 如申請專利範圍第8項所述的方法,其中確定所述關係包括:由預取器電路自所述隊列接收有效指令計數,其中所述有效指令計數指示所述當下預測指令與所述下一指令之間已列入的指令的數目。
- 如申請專利範圍第8項所述的方法,其中確定所述關係包括判斷所述當下預測指令與所述下一指令之間的所預測指令的數目是否超過臨限值。
- 如申請專利範圍第8項所述的方法,其中確定所述關係包括當預測所述當下預測指令時確定所涉及的推斷水準。
- 如申請專利範圍第8項所述的方法,其中對所述當下預測指令進行預取包括自所述預測電路接收所述當下預測指令的記憶體位址。
- 一種對指令預取的裝置,包括:處理器,用以執行指令;快取記憶體,用以暫時儲存指令; 分支預測單元,用以輸出當下預測指令至分支預測隊列及預取器電路兩者,其中所述當下預測指令被以推斷的形式進行預測將由所述處理器執行,且其中所述分支預測單元自提取單元解耦;所述分支預測隊列,用以儲存一或多個預測指令,其中所述當下預測指令放置為所述分支預測隊列的尾部且下一指令為所述分支預測隊列的頭部;所述提取單元,用以自所述快取記憶體提取由所述分支預測隊列提供的所述下一指令;以及所述預取器電路,用以至少部分地因應於所述當下預測指令與所述下一指令之間的關係滿足由所述分支預測隊列定義的一或多個預定準則,而將所述當下預測指令預取至所述快取記憶體中。
- 如申請專利範圍第14項所述的裝置,其中所述分支預測隊列自所述提取單元解耦所述分支預測單元。
- 如申請專利範圍第14項所述的裝置,其中所述分支預測隊列輸出有效指令計數至所述預取器電路;並且其中所述預取器電路用以在所述有效指令計數不超過臨限值時對所述當下預測指令進行預取,且在所述有效指令計數超過所述臨限值時抑制對所述當下預測指令令進行預取。
- 如申請專利範圍第14項所述的裝置,其中所述當下預測指令與所述下一指令之間的所述關係指示由所述分支預測單元 所採用的推斷水準。
- 如申請專利範圍第14項所述的裝置,其中所述分支預測單元對所述預取器電路供應所述當下預測指令的記憶體位址。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662276067P | 2016-01-07 | 2016-01-07 | |
US62/276,067 | 2016-01-07 | ||
US15/132,230 | 2016-04-18 | ||
US15/132,230 US10296463B2 (en) | 2016-01-07 | 2016-04-18 | Instruction prefetcher dynamically controlled by readily available prefetcher accuracy |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201725508A TW201725508A (zh) | 2017-07-16 |
TWI723072B true TWI723072B (zh) | 2021-04-01 |
Family
ID=59275777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105137037A TWI723072B (zh) | 2016-01-07 | 2016-11-14 | 由可獲得預取精確度所動態控制的指令預取器及指令預取方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10296463B2 (zh) |
KR (1) | KR102615010B1 (zh) |
CN (1) | CN106951217B (zh) |
TW (1) | TWI723072B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
CN107943518B (zh) * | 2017-11-24 | 2021-07-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种局部跳转指令取指电路 |
US11106466B2 (en) | 2018-06-18 | 2021-08-31 | International Business Machines Corporation | Decoupling of conditional branches |
CN110825442B (zh) * | 2019-04-30 | 2021-08-06 | 成都海光微电子技术有限公司 | 一种指令预取方法及处理器 |
CN111984325A (zh) * | 2019-05-23 | 2020-11-24 | 三星电子株式会社 | 提高分支预测吞吐量的装置及系统 |
US11461101B2 (en) * | 2019-09-27 | 2022-10-04 | Arm Technology (China) Co. LTD | Circuitry and method for selectively controlling prefetching of program instructions |
US11567776B2 (en) * | 2020-11-03 | 2023-01-31 | Centaur Technology, Inc. | Branch density detection for prefetcher |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5553255A (en) * | 1993-12-20 | 1996-09-03 | Motorola, Inc. | Data processor with programmable levels of speculative instruction fetching and method of operation |
US5721864A (en) * | 1995-09-18 | 1998-02-24 | International Business Machines Corporation | Prefetching instructions between caches |
US5774685A (en) * | 1995-04-21 | 1998-06-30 | International Business Machines Corporation | Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions |
US6012134A (en) * | 1998-04-09 | 2000-01-04 | Institute For The Development Of Emerging Architectures, L.L.C. | High-performance processor with streaming buffer that facilitates prefetching of instructions |
US6324616B2 (en) * | 1998-11-02 | 2001-11-27 | Compaq Computer Corporation | Dynamically inhibiting competing resource requesters in favor of above threshold usage requester to reduce response delay |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6732260B1 (en) * | 2000-03-06 | 2004-05-04 | Intel Corporation | Presbyopic branch target prefetch method and apparatus |
US7085916B1 (en) * | 2001-10-26 | 2006-08-01 | Lsi Logic Corporation | Efficient instruction prefetch mechanism employing selective validity of cached instructions for digital signal processor and method of operation thereof |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3573980B2 (ja) * | 1998-11-13 | 2004-10-06 | 富士通株式会社 | 情報処理装置及び情報処理システム |
US6418525B1 (en) * | 1999-01-29 | 2002-07-09 | International Business Machines Corporation | Method and apparatus for reducing latency in set-associative caches using set prediction |
US7441110B1 (en) * | 1999-12-10 | 2008-10-21 | International Business Machines Corporation | Prefetching using future branch path information derived from branch prediction |
US6766441B2 (en) * | 2001-01-19 | 2004-07-20 | International Business Machines Corporation | Prefetching instructions in mis-predicted path for low confidence branches |
US7076640B2 (en) | 2002-02-05 | 2006-07-11 | Sun Microsystems, Inc. | Processor that eliminates mis-steering instruction fetch resulting from incorrect resolution of mis-speculated branch instructions |
JP3683248B2 (ja) * | 2002-10-22 | 2005-08-17 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
JP3811140B2 (ja) * | 2003-05-12 | 2006-08-16 | 株式会社日立製作所 | 情報処理装置 |
US7461237B2 (en) * | 2005-04-20 | 2008-12-02 | Sun Microsystems, Inc. | Method and apparatus for suppressing duplicative prefetches for branch target cache lines |
US8516226B1 (en) | 2006-01-23 | 2013-08-20 | Hewlett-Packard Development Company, L.P. | Executing a prefetching policy responsive to entry into an execution phase of an application |
US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
US7627742B2 (en) * | 2007-04-10 | 2009-12-01 | International Business Machines Corporation | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system |
US7962724B1 (en) * | 2007-09-28 | 2011-06-14 | Oracle America, Inc. | Branch loop performance enhancement |
US9021240B2 (en) * | 2008-02-22 | 2015-04-28 | International Business Machines Corporation | System and method for Controlling restarting of instruction fetching using speculative address computations |
US8443176B2 (en) * | 2008-02-25 | 2013-05-14 | International Business Machines Corporation | Method, system, and computer program product for reducing cache memory pollution |
US8176297B2 (en) * | 2008-12-31 | 2012-05-08 | Texas Instruments Incorporated | Adaptive fetch advance control for a low power processor |
CN101819523B (zh) * | 2009-03-04 | 2014-04-02 | 威盛电子股份有限公司 | 微处理器以及相关指令执行的方法 |
JP2011209905A (ja) * | 2010-03-29 | 2011-10-20 | Sony Corp | 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法 |
US9836304B2 (en) * | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
EP2798470A4 (en) * | 2011-12-29 | 2015-07-15 | Intel Corp | PRE-ACQUISITION OF ANTEMOTE BY MANAGED INSTRUCTION |
US9182991B2 (en) * | 2012-02-06 | 2015-11-10 | International Business Machines Corporation | Multi-threaded processor instruction balancing through instruction uncertainty |
US9058278B2 (en) | 2012-12-19 | 2015-06-16 | Advanced Micro Devices, Inc. | Tracking prefetcher accuracy and coverage |
US9405544B2 (en) | 2013-05-14 | 2016-08-02 | Apple Inc. | Next fetch predictor return address stack |
GB2515076B (en) * | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
US9244827B2 (en) | 2013-09-25 | 2016-01-26 | Intel Corporation | Store address prediction for memory disambiguation in a processing device |
US9569212B2 (en) | 2014-03-28 | 2017-02-14 | Intel Corporation | Instruction and logic for a memory ordering buffer |
US9823925B2 (en) | 2014-03-28 | 2017-11-21 | Intel Corporation | Instruction and logic for a logical move in an out-of-order processor |
US20150277925A1 (en) | 2014-04-01 | 2015-10-01 | The Regents Of The University Of Michigan | Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order |
JP6457836B2 (ja) * | 2015-02-26 | 2019-01-23 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
-
2016
- 2016-04-18 US US15/132,230 patent/US10296463B2/en active Active
- 2016-09-22 KR KR1020160121580A patent/KR102615010B1/ko active IP Right Grant
- 2016-11-04 CN CN201610973966.2A patent/CN106951217B/zh active Active
- 2016-11-14 TW TW105137037A patent/TWI723072B/zh active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5553255A (en) * | 1993-12-20 | 1996-09-03 | Motorola, Inc. | Data processor with programmable levels of speculative instruction fetching and method of operation |
US5774685A (en) * | 1995-04-21 | 1998-06-30 | International Business Machines Corporation | Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions |
US5721864A (en) * | 1995-09-18 | 1998-02-24 | International Business Machines Corporation | Prefetching instructions between caches |
US6012134A (en) * | 1998-04-09 | 2000-01-04 | Institute For The Development Of Emerging Architectures, L.L.C. | High-performance processor with streaming buffer that facilitates prefetching of instructions |
US6324616B2 (en) * | 1998-11-02 | 2001-11-27 | Compaq Computer Corporation | Dynamically inhibiting competing resource requesters in favor of above threshold usage requester to reduce response delay |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6732260B1 (en) * | 2000-03-06 | 2004-05-04 | Intel Corporation | Presbyopic branch target prefetch method and apparatus |
US7085916B1 (en) * | 2001-10-26 | 2006-08-01 | Lsi Logic Corporation | Efficient instruction prefetch mechanism employing selective validity of cached instructions for digital signal processor and method of operation thereof |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
Also Published As
Publication number | Publication date |
---|---|
US20170199739A1 (en) | 2017-07-13 |
CN106951217A (zh) | 2017-07-14 |
TW201725508A (zh) | 2017-07-16 |
CN106951217B (zh) | 2022-05-03 |
KR20170082965A (ko) | 2017-07-17 |
US10296463B2 (en) | 2019-05-21 |
KR102615010B1 (ko) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI723072B (zh) | 由可獲得預取精確度所動態控制的指令預取器及指令預取方法 | |
US9665491B2 (en) | Adaptive mechanism to tune the degree of pre-fetches streams | |
JP5520779B2 (ja) | 分岐誤予測バッファを用いるためのシステム及び方法 | |
US20150268961A1 (en) | Decoupling l2 btb from l2 cache to accelerate search for miss after miss | |
US10387320B2 (en) | Integrated confirmation queues | |
US9274970B2 (en) | Method and apparatus for handling processor read-after-write hazards with cache misses | |
TWI810450B (zh) | 經由跳過無分歧的快取線改善分歧預測通量的設備及系統 | |
US11113063B2 (en) | Method and apparatus to control the use of hierarchical branch predictors based on the effectiveness of their results | |
US11169810B2 (en) | Micro-operation cache using predictive allocation | |
US20190102197A1 (en) | System and method for merging divide and multiply-subtract operations | |
US9569361B2 (en) | Pre-fetch chaining | |
WO2021263156A1 (en) | Instruction address translation and instruction prefetch engine | |
US20230409325A1 (en) | Micro-operation supply rate variation | |
US10963388B2 (en) | Prefetching in a lower level exclusive cache hierarchy | |
US10719441B1 (en) | Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests | |
KR20190092245A (ko) | 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법 | |
TW202219745A (zh) | 微處理器和預取指調整方法 | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
CN108572812A (zh) | 存储器加载和算术加载单元(alu)融合 | |
TWI739159B (zh) | 基於載入路徑歷史的分支預測 | |
CN111984325A (zh) | 提高分支预测吞吐量的装置及系统 | |
CN112130905A (zh) | 计算装置和计算系统 | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions |