TWI521347B - 用於減少由資料預擷取引起的快取汙染之方法及裝置 - Google Patents
用於減少由資料預擷取引起的快取汙染之方法及裝置 Download PDFInfo
- Publication number
- TWI521347B TWI521347B TW103102149A TW103102149A TWI521347B TW I521347 B TWI521347 B TW I521347B TW 103102149 A TW103102149 A TW 103102149A TW 103102149 A TW103102149 A TW 103102149A TW I521347 B TWI521347 B TW I521347B
- Authority
- TW
- Taiwan
- Prior art keywords
- loop
- instruction
- data
- prefetch request
- exit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 34
- 230000006870 function Effects 0.000 claims description 29
- 238000011156 evaluation Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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/3824—Operand accessing
- G06F9/383—Operand 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/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
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)
- Executing Machine-Instructions (AREA)
Description
本發明大體上係關於處理系統之態樣,且詳言之,係關於用於減少由資料預擷取引起的快取汙染之方法及裝置。
諸如蜂巢式電話、膝上型電腦、個人資料助理(PDA)及其類似者之許多攜帶型產品利用執行諸如通信及多媒體程式之程式的處理系統。用於此等產品之處理系統可包括多個處理器、包括用於儲存指令及資料之多階快取記憶體的複雜記憶體系統、控制器、諸如通信介面之周邊器件,及組態(例如)於單一晶片上之固定功能邏輯區塊。同時,攜帶型產品具有呈電池形式之有限能量源,該等電池常常為支援由處理系統進行之高效能操作所需的。為了增加電池壽命,需要儘可能有效地執行此等操作。許多個人電腦亦經開發而具有有效設計以在總能量消耗減少之情況下操作。
為在執行程式時提供高效能,可使用基於記憶體參考之空間區域性的概念且通常用以改良處理器效能的資料預擷取。藉由自快取記憶體預擷取在接近已擷取資料元素或藉由步幅位址差量或間接指標相關且可能用於未來存取中之位址處的多個資料元素,可減小快取未命中率。快取設計通常藉由針對個別資料元素擷取而擷取資料之快取行來實施一種形式之預擷取。硬體預擷取器可藉由以推測方式預擷取資
料之一或多個額外快取行來擴充此操作,其中預擷取定址可基於順序、步幅或指標資訊而形成。用於記憶體密集型工作負載(諸如,處理大資料陣列)之此硬體預擷取器操作可顯著減少記憶體延時。然而,資料預擷取並非不具有其缺點。舉例而言,在用於處理資料陣列之軟體迴圈中,資料預擷取器電路預擷取待用於迴圈之未來反覆中的資料,該等未來反覆包括迴圈之最後反覆。然而,將不使用為迴圈之最後反覆而預擷取的資料,且由於在快取記憶體中儲存將不被使用之此資料而發生快取汙染。當展開迴圈時,快取汙染問題會加重。
在本發明之若干態樣當中,本發明認識到,提供用於預擷取之更有效方法及裝置可改良處理器系統中之效能且降低其中之功率要求。為此等目的,本發明之一實施例提出一種用於取消預擷取請求之方法。基於程式流程資訊之評估來識別迴圈退出情形。回應於識別到之迴圈退出情形而取消未決快取預擷取請求。
另一實施例提出一種用於取消預擷取請求之方法。根據被呼叫函式而以推測方式預擷取資料。回應於自被呼叫函式之函式退出而取消未決資料預擷取請求。
另一實施例提出一種用於取消預擷取請求之裝置。迴圈資料位址監視器經組態以基於程式迴圈中之記憶體存取指令的重複執行而判定資料存取步幅。資料預擷取邏輯經組態以根據資料存取步幅而以推測方式發出預擷取請求。停止預擷取電路經組態以回應於識別到之迴圈退出而取消未決預擷取請求。
另一實施例提出一種編碼有電腦可讀程式資料及程式碼之電腦可讀非暫時性媒體。基於程式流程資訊之評估來識別迴圈退出情形。回應於識別到之迴圈退出情形而取消未決快取預擷取請求。
另一實施例提出一種用於取消預擷取請求之裝置。利用用於基
於程式迴圈中之記憶體存取指令的重複執行而判定資料存取步幅的構件。利用用於根據資料存取步幅而以推測方式發出預擷取請求的構件。亦利用用於回應於識別到之迴圈退出而取消未決預擷取請求的構件。
應理解,對於熟習此項技術者而言,本發明之其他實施例將自以下詳細描述而變得容易顯而易見,在以下詳細描述中,以說明之方式來展示及描述本發明之各種實施例。應瞭解,本發明能夠實踐其他及不同實施例且其若干細節能夠在其他各方面加以修改,以上所有皆不脫離本發明之精神及範疇。因此,應將圖式及【實施方式】視為本質上說明性而非限制性的。
100‧‧‧處理器系統
110‧‧‧處理器
112‧‧‧快取記憶體系統
114‧‧‧系統記憶體
116‧‧‧輸入及輸出(I/O)系統
119‧‧‧步幅電路
120‧‧‧指令管線
121‧‧‧資料預擷取邏輯
122‧‧‧預測邏輯/預測邏輯電路
123‧‧‧堆疊邏輯電路
124‧‧‧1階指令快取記憶體(Icache)
126‧‧‧記憶體控制器
128‧‧‧1階資料快取記憶體(Dcache)
130‧‧‧擷取及預擷取級
131‧‧‧解碼級
132‧‧‧指令發出級
133‧‧‧運算元擷取級
134‧‧‧執行級
135‧‧‧完成級
140‧‧‧輸入及輸出(I/O)器件
141‧‧‧取消未決預擷取請求邏輯電路
142‧‧‧輸入及輸出(I/O)器件
146‧‧‧偵測邏輯電路
150‧‧‧篩選器
152‧‧‧條件歷史表(CHT)
155‧‧‧取消未決預擷取請求信號
162‧‧‧追蹤暫存器發出(TrI)
163‧‧‧追蹤暫存器運算元擷取
164‧‧‧追蹤暫存器執行(TrE)
165‧‧‧追蹤暫存器完成(TrC)
200‧‧‧用於在偵測到迴圈結束分支後即取消未決非必要資料預擷取請求的程序
250‧‧‧用於在偵測到函式傳回後即取消未決非必要資料預擷取請求的程序
300‧‧‧攜帶型器件
304‧‧‧系統單晶片器件
310‧‧‧處理器複合體
311‧‧‧處理器
312‧‧‧系統記憶體
314‧‧‧整合記憶體子系統
316‧‧‧預測邏輯
318‧‧‧軟體指令
322‧‧‧1階資料快取記憶體(L1 Dcache)
326‧‧‧1階指令快取記憶體(L1 Icache)
328‧‧‧快取記憶體控制器電路
334‧‧‧攝影機介面
336‧‧‧視訊攝影機
340‧‧‧顯示控制器
342‧‧‧顯示器件
344‧‧‧編碼器/解碼器(CODEC)
346‧‧‧揚聲器
348‧‧‧麥克風
350‧‧‧無線介面
352‧‧‧無線天線
356‧‧‧輸入器件
358‧‧‧電源供應器
借助於實例(且並非限制)來說明本揭示案之各種態樣,在隨附圖式中,其中:圖1說明可有利地使用本發明之一實施例的例示性處理器系統;圖2A說明用於在偵測到迴圈結束分支後即取消未決非必要資料預擷取請求的程序;及圖2B說明用於在偵測到函式傳回後即取消未決非必要資料預擷取請求的程序;及圖3說明具有處理器複合體之攜帶型器件的特定實施例,該處理器複合體經組態以取消選定未決資料預擷取請求以減少快取汙染。
下文結合隨附圖式所闡述之詳細描述意欲作為對本發明之各種例示性實施例的描述,且不意欲表示可實踐本發明之僅有實施例。該詳細描述包括出於提供對本發明之透徹理解之目的的特定細節。然而,對於熟習此項技術者將顯而易見,本發明可在無此等特定細節的情況下實踐。在一些例子中,以方塊圖形式來展示熟知之結構及組
件,以便避免使本發明之概念模糊。
圖1說明有利地使用本發明之一實施例的例示性處理器系統100。該處理器系統100包括處理器110、快取記憶體系統112、系統記憶體114以及輸入及輸出(I/O)系統116。舉例而言,快取記憶體系統112包含1階指令快取記憶體(Icache)124、記憶體控制器126及1階資料快取記憶體(Dcache)128。快取記憶體系統112亦可包括2階統一快取記憶體(未圖示)或特定實施環境所需要之其他快取記憶體組件。系統記憶體114提供對未見於Icache 124或Dcache 128中之指令及資料的存取。注意到,快取記憶體系統112可與處理器110整合,且亦可包括呈階層架構組織形式之多階快取記憶體。I/O系統116包含與處理器110介接之複數個I/O器件,諸如I/O器件140及142。
本發明之實施例可合適地用於具有條件分支指令之處理器中。舉例而言,處理器110包含指令管線120、資料預擷取邏輯121、預測邏輯122及堆疊邏輯電路123。指令管線120係由一系列級構成,諸如擷取及預擷取級130、解碼級131、指令發出級132、運算元擷取級133、執行級134(諸如,用於執行載入(Ld)及儲存(St)指令),及完成級135。熟習此項技術者將認識到,取決於處理器之操作頻率及每一級中所需之操作的複雜性,指令管線120中之每一級130至135可包含數個額外管線級。舉例而言,執行級134可包括一或多個管線級,該一或多個管線級對應於一或多個指令執行級電路,諸如加法器、乘法器、邏輯運算、載入及儲存操作、移位及旋轉操作,及具有更大或更小複雜性之其他功能電路。舉例而言,當執行載入指令時,其向Dcache 128請求資料,且若所請求之資料不存在於Dcache中,則將擷取請求發出至下一階快取記憶體或系統記憶體。將此擷取請求視為必要請求,此係因為在載入指令之狀況下該請求直接回應於指令之執行。
預擷取請求為回應於諸如對程式迴圈之偵測的程式流程資訊而產生之請求,該程式迴圈在迴圈中具有一或多個載入指令且載入位址基於(例如)步幅。資料預擷取邏輯121利用可基於經偵測迴圈之數個反覆的此程式流程資訊,以在發出預擷取請求之前更準確地識別載入指令之運算元位址的必要使用型樣。當偵測型樣時,插入填充請求。處理器110可操作以藉由使用與在處理器管線中追蹤之請求相關聯的額外旗標來區分必要請求與預擷取請求。此旗標亦可隨請求傳播至每一未處理快取行填充可識別為預擷取填充抑或必要填充的快取記憶體。管線級中之每一者可在不脫離本文中所描述之預擷取請求取消方法及裝置的情況下具有變化之實施。
為了最小化可能在程式所需之資料不在相關聯之1階Dcache 128中的情況下發生的延遲,擷取及預擷取級130記錄與在經偵測程式迴圈中執行的一或多個記憶體存取指令相關聯的程式流程資訊。程式資訊可包括來自解碼級131之如下指示:已接收載入指令,且在執行之前用於載入指令之運算元位址資訊可在管線級(諸如,運算元擷取級133或執行級134)處可用。資料預擷取邏輯121在載入位址變得可用於偵測型樣時監視該等載入位址。在(諸如)藉由在迴圈之三個或三個以上反覆期間監視載入指令來判定具有可接受可信度之型樣之後,在於迴圈中再次遇到載入指令時之前,發出對預期資料之預擷取請求。此推測性預擷取請求確保在執行級134需要時,所需資料在1階Dcache中可用。載入及儲存執行級134接著更有可能直接自1階Dcache存取所需資料,而無須等待自記憶體階層架構中之較高階層存取資料。
資料預擷取邏輯121亦可包括資料快取迴圈資料位址監視器以判定資料存取步幅。資料預擷取邏輯121接著以推測方式發出具有根據資料存取步幅設定之運算元位址的預擷取請求。舉例而言,資料預擷取邏輯121可包括步幅電路119,該步幅電路經組態以監視載入指令之
重複執行,從而判定載入指令之每一執行的運算元位址之間的差,該差表示步幅值。步幅電路119亦可包括加法函數,該加法函數經組態以將所判定之步幅值與最近執行之載入指令的運算元位址相加以產生下一運算元位址。與將步幅值作為預測位址相對比,已預擷取條件分支指令使用分支預測邏輯(諸如,含於預測邏輯電路122中)以預測是否將採用條件分支且預測分支位址。已擷取非分支指令前進至解碼級131以供解碼,在指令發出級132中經發出以供執行,在執行級134中經執行,且在完成級135中被淘汰。
預測邏輯電路122包含用於監視事件之偵測邏輯電路146、篩選器150及條件歷史表152。在一個實施例中,假定大部分條件分支指令通常針對軟體迴圈之大多數反覆而使其條件解析為同一值。
在一個實施例中,偵測邏輯電路146充當軟體迴圈偵測器,該軟體迴圈偵測器基於用於如關於圖2A所描述之軟體迴圈中的條件分支指令之動態特性而操作。偵測邏輯電路146亦可偵測自被呼叫軟體函式之退出,如關於圖2B所描述。
在具有單一進入點及單一退出點之軟體迴圈中,迴圈結束分支通常為針對迴圈之除最後反覆外的所有反覆而分支返回至軟體迴圈之開始處的條件分支指令,該最後反覆退出軟體迴圈。偵測邏輯電路146可具有關於軟體迴圈之偵測的多個實施例,如下文更詳細地且在題為「Suppressing Update of a Branch History Register by Loop-Ending Branches」、讓渡給本申請案之受讓人的美國專利申請案11/066,508中所描述,該案之全文以引用之方式併入本文中。
根據一個實施例,偵測邏輯電路146識別條件分支指令,該等條件分支指令具有小於條件分支指令位址之分支目標位址,且因此被視為反向分支,且假定標記軟體迴圈之結束。由於並非所有反向分支皆為迴圈結束分支,因此存在可需要由(例如)額外監視機制解決之某種
程度之不準確性。
又,如關於圖2B所描述,可偵測函式傳回指令(通常命名為RET)。根據一個實施例,對函式傳回之偵測適用於觸發任何非必要預擷取請求之預擷取消除。亦回應於程式流程資訊(諸如,偵測到迴圈退出)而進行預擷取請求之取消。
在另一實施例中,在簡單迴圈中可藉由辨識同一分支指令之重複執行而偵測迴圈結束分支。藉由將最後反向分支指令之程式計數器值儲存於特殊用途暫存器中及比較此所儲存值與下一反向分支指令之指令位址,可在兩個指令位址匹配時辨識出迴圈結束分支。由於程式碼可包括軟體迴圈內之條件分支指令,因此迴圈結束分支指令之判定可變得更為複雜。在此情形下,可以硬體例項化多個特殊用途暫存器以儲存每一條件分支指令之指令位址。藉由與所有所儲存值比較,可針對迴圈結束分支判定匹配。通常,迴圈分支為具有自程式計數器(PC)之固定位移的條件反向直接分支。此等類型之分支將不需要用於偵測迴圈退出之位址比較。實情為,一旦基於條件反向直接分支偵測到程式迴圈,便自分支之述詞的解析來判定迴圈退出。舉例而言,若述詞解析至用於傳回至迴圈之真條件,則將在述詞解析至假條件時指示迴圈退出。為了使得將存在未決預擷取,程式迴圈將已執行數次以觸發預擷取硬體。資料預擷取邏輯121需要數次暖機必要載入以在其開始預擷取之前辨識型樣。
又,亦可由編譯器或組譯器靜態標記迴圈結束分支。舉例而言,在一個實施例中,編譯器藉由使用唯一作業碼或藉由設定僅用於迴圈結束分支之特殊格式位元欄位來產生特定類型之分支指令。接著可易於在管線執行期間(諸如,在管線中之解碼級期間)偵測迴圈結束分支。
預測邏輯電路122包含篩選器150、條件歷史表(CHT)152及相關
聯之監視邏輯。在一個實施例中,監視程序保存預先指定之條件事件的狀態資訊,該等條件事件已在具有適合於預測之條件分支指令的軟體迴圈之一或多次先前執行中發生。為支援預測邏輯電路122,篩選器150判定是否已接收已擷取條件分支指令且是否啟用CHT 152。選擇CHT 152中之條目以提供在指令通過管線時(例如)由管線級132至135追蹤之預測資訊。
CHT 152條目記錄適用於預測執行之已擷取指令之執行歷史。舉例而言,每一CHT條目可合適地包含來自執行狀態計數器之計數值與狀態位元的組合,該等狀態位元為至預測邏輯之輸入。CHT 152亦可包含索引邏輯以允許已擷取條件分支指令索引至CHT 152中與已擷取指令相關聯的條目,此係因為多個條件分支指令可存在於軟體迴圈中。舉例而言,藉由對來自軟體迴圈之頂部的條件分支指令之數目進行計數,該計數可用作CHT 152之索引。預測邏輯電路122包括迴圈計數器,該等迴圈計數器用於對軟體迴圈之反覆進行計數且確保執行狀態計數器已有機會飽和於表示(例如)強不執行狀態之指定計數值。若執行狀態計數器已飽和,則預測邏輯經啟用以對相關聯之已擷取條件分支指令在迴圈之下一反覆上的分支方向作出預測。
預測邏輯電路122產生分別在追蹤暫存器發出(TrI)162、追蹤暫存器運算元擷取163、追蹤暫存器執行(TrE)164及追蹤暫存器完成(TrC)165中在指令發出級132、運算元擷取級133、執行級134及完成級135處追蹤之預測資訊。當(諸如)在處理器管線中之執行級134期間偵測到具有指示迴圈結束之失敗述詞或函式傳回的條件反向分支時,產生取消未決預擷取請求信號155。在另一實施例中,基於由分支預測邏輯產生之條件分支預測而取消未決預擷取請求。每一條件分支通常由分支預測邏輯預測採用或不採用該條件分支。舉例而言,在預測資訊指示採用條件分支(在此實例中,此情形使程式迴圈繼續)之情況
下,指令擷取器以推測方式擷取由該預測指示之程式迴圈上的指令。預測資訊亦耦接至可駐留於擷取及預擷取電路130中之取消未決預擷取請求邏輯電路141。取消未決預擷取請求邏輯電路141可接著基於指示不需要未決預擷取請求之程式流程資訊而以推測方式取消未決預擷取請求。舉例而言,處理器可經組態以基於弱預測性迴圈退出而不取消未決預擷取請求。藉由取消一或多個未決資料預擷取請求,在處理器110中減少了資料快取汙染且減少了用以處理此汙染之功率。取消未決預擷取請求信號155耦接至處理器指令管線120(如圖1中所展示),且由取消未決預擷取請求邏輯電路141接受,該取消未決預擷取請求邏輯電路使得取消除必要預擷取請求外之未決預擷取請求。又,由於不將不必要之資料儲存於可具有將已被擷取之已收回資料的資料快取記憶體中,改良了處理器效能,且現替代地產生命中。
在到達執行級134後,若已將指定用於迴圈結束條件分支指令之執行條件評估為與其預測相反,則(例如)藉由清空管線來校正錯誤指令路徑上之指令之任何管線推測性執行,此校正可包括取消與錯誤指令路徑相關聯之未決預擷取。舉例而言,在一個實施例中,對管線之校正包括清空管線中在作出預測之級處開始的指令。在一替代實施例中,自最初擷取迴圈結束條件分支指令之開始擷取級清空管線。又,亦可在不正確預測之後校正適當CHT條目。
充當迴圈偵測器之偵測電路146操作以偵測迴圈結束分支。舉例而言,迴圈結束分支通常為針對迴圈之除最後反覆外的所有反覆而分支返回至迴圈之開始處的條件分支指令,該最後反覆退出該迴圈。關於每一識別到之迴圈的資訊經傳遞至篩選器電路150,且在識別到迴圈退出情形後,取消未決預擷取請求邏輯電路141回應於每一識別到之迴圈退出而取消未決非必要預擷取請求。
在一個實施例中,篩選器電路150(例如)為迴圈計數器,該迴圈
計數器提供已發生軟體迴圈之設定數目個反覆(諸如,特定迴圈之三個反覆)的指示。對於迴圈之每一反覆,篩選器判定條件分支指令是否適合於預測。若入選條件分支(CB)指令在迴圈中,則將執行CB指令之狀態記錄於條件歷史表(CHT)電路152中。舉例而言,執行狀態計數器可用以記錄入選CB指令之先前常式執行的執行歷史。在一個方向上更新執行狀態計數器以指示按條件執行CB指令,且在相反方向上更新執行狀態計數器以指示按條件不執行CB指令。舉例而言,可使用兩位元執行狀態計數器,其中不執行狀態引起計數器之遞減且已執行狀態引起計數器之遞增。舉例而言,執行狀態計數器之輸出狀態被指派輸出「11」以指示先前CB指令被強指示為已執行,被指派輸出「10」以指示先前CB指令被弱指示為已執行,被指派輸出「01」以指示先前CB指令被弱指示為尚未執行,且被指派輸出「00」以指示先前CB指令被強指示為尚未執行。執行狀態計數器之「11」輸出及「00」輸出將為飽和輸出值。執行狀態計數器將與經偵測軟體迴圈中的每一CB指令相關聯或提供每一CB指令之狀態。然而,特定實施可能限制用於該實施中之執行狀態計數器的數目,且因此限制經預測之CB指令的數目。偵測電路146通常在第一次進入軟體迴圈時重設執行狀態計數器。
或者,禁用預測旗標可與待預測之每一CB指令而非執行狀態計數器相關聯。若先前已判定相關聯之CB指令已執行,則將禁用預測旗標設定為有效以禁用預測。識別經執行之先前CB指令暗示用於預測CB指令之不執行情形的可信度將低於可接受程度。
索引計數器亦可供CHT 152使用以判定軟體迴圈中之哪一CB指令被計數或評估。舉例而言,在具有五個或五個以上CB指令之迴圈中,第一CB指令可具有索引「000」,且第四入選條件分支指令可具有索引「011」。索引表示CHT 152中用以存取對應CB指令之所儲存執
行狀態計數器值的位址。
預測電路122接收特定CB指令之預測資訊(諸如,執行狀態計數器輸出值),且在(例如)圖1之解碼級131期間預測CB指令將通常分支返回至軟體迴圈開始處,且未預測出達到迴圈退出情形。在一個實施例中,預測電路122可預測藉由CB指令指定之條件評估至非分支狀態、程式碼退出或使迴圈失敗。預測電路122追蹤CB指令。若CB指令經預測為分支返回至迴圈開始處,則預測資訊指示此狀態。若判定CB指令未分支返回,則追蹤電路產生取消未決預擷取請求信號,且進行條件評估以判定是否進行了不正確預測。若進行了不正確預測,則亦可清空管線,更新CHT 152中之執行狀態計數器,且在一個實施例中,標記相關聯之CHT條目以指示特定CB指令並不自此開始預測。在另一實施例中,預測邏輯單元122亦可在判定錯誤預測了CB指令後即改變預指定之評估準則,以使預測準則自此開始更為保守。
進一步認識到,並非所有迴圈皆具有類似特性。若特定迴圈提供不良預測結果,則在預測邏輯電路122中將彼迴圈標記為禁用預測。以類似方式,特定迴圈可在操作情境之一個集合下操作而具有良好預測,且可在操作情境之不同集合下操作而具有不良預測。在此狀況下,操作情境之辨識允許啟用預測、停用預測,或僅藉由適合於操作情境之不同評估準則來啟用預測。
圖2A說明用於在偵測到迴圈結束分支後即取消未決非必要資料預擷取請求的程序200。在區塊202處,監視處理器程式碼執行以查找軟體迴圈。在決策區塊204處,作出是否已偵測到軟體迴圈之判定。舉例而言,可藉由在遍歷軟體迴圈之第一遍次識別表示至軟體迴圈之開始處的位置之反向分支來判定軟體迴圈,如上文所描述。若未判定到軟體迴圈,則程序200返回至區塊202。若已識別到軟體迴圈,則程序200繼續進行至區塊206。在程式碼中之此點處,已執行軟體迴圈之
第一循環且已準備好開始軟體迴圈之下一循環。
在區塊206處軟體迴圈之下一循環中,監視處理器程式碼以查找CB指令。在決策步驟208處,(例如)在管線解碼級(諸如,圖1之解碼級131)期間作出是否已偵測到CB指令之判定。若未偵測到CB指令,則程序200返回至區塊206。若已偵測到CB指令,則程序200繼續進行至決策區塊210。在決策區塊210處,例如,基於條件述詞之評估來作出條件分支(CB)指令是否經解析以結束迴圈的判定。存在可偵測到之數種類型之CB指令評估。舉例而言,經偵測CB指令之第一評估可解析出CB指令在軟體迴圈之結尾處,但評估以繼續迴圈處理。舉例而言,在遍歷軟體迴圈之第一遍次中識別軟體迴圈的反向分支CB指令藉由處理器程式碼中之其位址位置來標示。又,對於軟體迴圈之數個指定反覆尚未完成的狀況,CB指令解析以將處理器分支返回至軟體迴圈之開始處。經偵測CB指令之第二評估可解析出CB指令在軟體迴圈之結尾處,且評估以結束軟體迴圈。經偵測CB指令之第三評估可解析出CB指令在軟體迴圈內,但在評估為被採用或未採用時,處理器程式碼保留在軟體迴圈中。又,CB指令之第四評估可解析出CB指令在軟體迴圈內,但在評估為被採用或未採用時,處理器程式碼退出軟體迴圈。在第四評估中,將在軟體迴圈內、但解析為越過反向分支CB指令之位址位置的正向分支的CB指令視為已退出軟體迴圈。
返回至決策區塊210,若經偵測CB指令未解析為退出軟體迴圈(如在CB指令之第一及第三評估中),則程序200繼續進行至區塊212。在區塊212處,程序200繼續正常分支處理且接著返回至區塊206。若經偵測CB指令解析為退出軟體迴圈(如在CB指令之第二及第四評估中),則程序200繼續進行至區塊214。在區塊214處,程序200取消除必要資料預擷取請求外之未決資料預擷取請求,處理CB指令且返回至區塊202以開始搜尋下一軟體迴圈。
圖2B說明用於在偵測到函式傳回後即取消未決非必要資料預擷取請求的程序250。在區塊252處,監視處理器程式碼執行以查找軟體函式退出。注意到,可以推測方式執行軟體函式。舉例而言,可針對軟體迴圈中之函式呼叫而發生推測性執行。在軟體函式之推測性執行的狀況下,亦可以推測方式執行軟體函式退出(諸如,RET指令之執行)。在決策區塊254處,作出是否已偵測到軟體函式退出(諸如,藉由在處理器之執行管線中偵測傳回指令)的判定。若未偵測到軟體函式退出,則程序250返回至區塊252。
若已偵測到軟體函式退出,則程序250繼續進行至決策區塊256。在決策區塊256處,作出此經偵測退出情形是否為自中斷常式之傳回的判定。若經偵測退出為自中斷常式之傳回,則程序250返回至區塊252。若經偵測退出並非自中斷常式之傳回,則程序250繼續進行至區塊258。在區塊258處,程序250取消除必要資料預擷取請求外之未決資料預擷取請求,處理傳回指令,且接著返回至區塊252以繼續監視處理器程式碼以便查找軟體函式退出。
頻繁地,手動地抑或經由編譯器最佳化,將展開軟體迴圈使得順序地執行迴圈之多個反覆。每一展開反覆之此順序執行變成額外預擷取候選者。在迴圈之最後反覆中,每一展開候選者可接著產生加重預擷取資料快取汙染問題之不需要之預擷取請求。本發明之實施例亦適用於藉由偵測迴圈之退出或自函式之傳回及自每一展開迴圈取消所有不需要之預擷取請求而進行的迴圈展開。
圖3說明具有處理器複合體之攜帶型器件300的特定實施例,該處理器複合體經組態以取消選定之未決資料預擷取請求以減少快取汙染。器件300可為無線電子器件,且包括耦接至具有軟體指令318之系統記憶體312的處理器複合體310。系統記憶體312可包括圖1之系統記憶體114。處理器複合體310可包括:處理器311;具有1階資料快取記
憶體(L1 Dcache)322、1階指令快取記憶體(L1 Icache)326、快取記憶體控制器電路328之整合記憶體子系統314;及預測邏輯316。處理器311可包括圖1之處理器110。整合記憶體子系統314亦可包括2階統一快取記憶體(未圖示)。L1 Icache 326可包括圖1之L1 Icache 124,且L1 Dcache 322可包括圖1之L1 Dcache 128。
整合記憶體子系統314可包括於處理器複合體310中或可實施為在處理器複合體310外部之一或多個單獨器件或電路(未圖示)。在一說明性實例中,處理器複合體310根據圖1及圖2中所說明或與圖1及圖2相關聯之實施例中之任一者操作。舉例而言,如圖3中所展示,L1 Icache 326、L1 Dcache 322及快取記憶體控制器電路328可在處理器複合體310內存取,且處理器311經組態以存取儲存於整合記憶體子系統314之記憶體中或系統記憶體312中的資料或程式指令。
攝影機介面334耦接至處理器複合體310且亦耦接至攝影機(諸如,視訊攝影機336)。顯示控制器340耦接至處理器複合體310且耦接至顯示器件342。編碼器/解碼器(CODEC)344亦可耦接至處理器複合體310。揚聲器346及麥克風348可耦接至CODEC 344。無線介面350可耦接至處理器複合體310,且耦接至無線天線352使得可將經由天線352及無線介面350接收之無線資料提供至處理器311。
處理器311可經組態以執行儲存於非暫時性電腦可讀媒體(諸如,系統記憶體312)中之軟體指令318,該等軟體指令可執行以使電腦(諸如,處理器311)執行程式(諸如,圖2之程式程序200)。軟體指令318進一步可執行以使處理器311處理存取整合記憶體子系統314之記憶體及系統記憶體312的指令。
在一特定實施例中,處理器複合體310、顯示控制器340、系統記憶體312、CODEC 344、無線介面350及攝影機控制器334包括於系統級封裝或系統單晶片器件304中。在一特定實施例中,輸入器件356
及電源供應器358耦接至系統單晶片器件304。此外,在一特定實施例中,如圖3中所說明,顯示器件342、輸入器件356、揚聲器346、麥克風348、無線天線352、視訊攝影機336及電源供應器358在系統單晶片器件304外部。然而,顯示器件342、輸入器件356、揚聲器346、麥克風348、無線天線352、視訊攝影機336及電源供應器358中之每一者可耦接至系統單晶片器件304之組件(諸如,介面或控制器)。
根據本文中所描述之實施例的器件300可併入諸如以下各者之多種電子器件中:機上盒、娛樂單元、導航器件、通信器件、個人數位助理(PDA)、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、電腦、攜帶型帶你腦、平板電腦、監視器、電腦監視器、電視、調諧器、無線電、衛星無線電、音樂播放器、數位音樂播放器、攜帶型音樂播放器、視訊播放器、數位視訊播放器、數位影音光碟(DVD)播放器、攜帶型數位視訊播放器、儲存或提取資料或電腦指令之任何其他器件,或其任何組合。
結合本文中所揭示之實施例而描述的各種說明性邏輯區塊、模組、電路、元件及/或組件可藉由以下各者來實施或執行:通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯組件、離散閘或電晶體邏輯、離散硬體組件,或其經設計以執行本文中所描述之功能的任何組合。通用處理器可為微處理器,但在替代例中,處理器可為任何習知之處理器、控制器、微控制器或狀態機。亦可將處理器實施為計算組件之組合,例如,DSP與微處理器之組合、複數個微處理器、結合DSP核心之一或多個微處理器或適合於所要應用之任何其他該組態。
結合本文中所揭示之實施例而描述之方法可直接以硬體、以由處理器執行之軟體模組或以兩者之組合體現。軟體模組可駐留於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM
記憶體、暫存器、硬碟、抽取式磁碟、CD-ROM或此項技術中已知的任何其他形式之非暫時性儲存媒體中。非暫時性儲存媒體可耦接至處理器,使得處理器可自非暫時性儲存媒體讀取資訊,且將資訊寫入至非暫時性儲存媒體。在替代例中,非暫時性儲存媒體可整合至處理器。
舉例而言,圖1之處理器110或圖3之處理器311可經組態以在程式之控制下執行包括條件非分支指令之指令,該程式儲存於在本端與處理器直接相關聯之電腦可讀非暫時性儲存媒體上(諸如,經由指令快取記憶體可得)抑或可經由I/O器件(諸如,圖1之I/O器件140或142)存取。I/O器件亦可存取駐留於在本端與處理器直接相關聯之記憶體器件(諸如,Dcache 128)中或可自另一處理器之記憶體存取的資料。電腦可讀非暫時性儲存媒體可包括隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、同步動態隨機存取記憶體(SDRAM)、快閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、緊密光碟(CD)、數位影音光碟(DVD)、其他類型之抽取式磁碟,或任何其他合適的非暫時性儲存媒體。
雖然在用於處理器系統中之說明性實施例的內容脈絡中揭示本發明,但應認識到,可由一般熟習此項技術者與上文論述及下文之申請專利範圍相一致地使用廣泛多種實施。舉例而言,固定功能實施亦可利用本發明之各種實施例。
100‧‧‧處理器系統
110‧‧‧處理器
112‧‧‧快取記憶體系統
114‧‧‧系統記憶體
119‧‧‧步幅電路
120‧‧‧指令管線
121‧‧‧資料預擷取邏輯
122‧‧‧預測邏輯/預測邏輯電路
123‧‧‧堆疊邏輯電路
124‧‧‧1階指令快取記憶體(Icache)
126‧‧‧記憶體控制器
128‧‧‧1階資料快取記憶體(Dcache)
130‧‧‧擷取及預擷取級
131‧‧‧解碼級
132‧‧‧指令發出級
133‧‧‧運算元擷取級
134‧‧‧執行級
135‧‧‧完成級
141‧‧‧取消未決預擷取請求邏輯電路
146‧‧‧偵測邏輯電路
150‧‧‧篩選器
152‧‧‧條件歷史表(CHT)
155‧‧‧取消未決預擷取請求信號
162‧‧‧追蹤暫存器發出(TrI)
163‧‧‧追蹤暫存器運算元擷取
164‧‧‧追蹤暫存器執行(TrE)
165‧‧‧追蹤暫存器完成(TrC)
Claims (20)
- 一種用於取消預擷取請求之方法,該方法包含:回應於一程式迴圈中之記憶體存取指令而發出快取預擷取請求;基於程式流程資訊之一評估來識別該程式迴圈中之一迴圈退出情形;及回應於該識別到之迴圈退出情形而取消未決快取預擷取請求。
- 如請求項1之方法,其中經取消之該等未決快取預擷取請求不包括現有必要請求。
- 如請求項1之方法,其中該迴圈退出情形係基於識別評估以退出該迴圈之一迴圈結束分支。
- 如請求項1之方法,其中該迴圈退出情形係基於引起取消推測性指令擷取及執行之一不正確分支預測。
- 如請求項1之方法,其進一步包含:將已解析以結束一程式迴圈之一條件分支指令偵測為該迴圈退出情形;及取消除必要預擷取請求外之未決預擷取請求。
- 如請求項1之方法,其進一步包含:偵測未解析以結束一程式迴圈之一條件分支指令,其中繼續對該迴圈退出情形之監視。
- 一種用於取消預擷取請求之方法,該方法包含:根據一程式迴圈中之一被呼叫函式而用資料預擷取請求以推測方式預擷取資料;及回應於自該被呼叫函式之一函式退出而取消未決資料預擷取 請求。
- 如請求項7之方法,其中未取消現有必要請求。
- 如請求項7之方法,其中該函式退出係基於偵測自該被呼叫函式之一傳回的執行。
- 如請求項7之方法,其中該函式退出係基於偵測自該被呼叫函式之一傳回的推測性執行。
- 一種用於取消預擷取請求之裝置,該裝置包含:一迴圈資料位址監視器,其經組態以基於一程式迴圈中之一記憶體存取指令的重複執行而判定一資料存取步幅;資料預擷取邏輯,其經組態以根據該資料存取步幅而基於該程式迴圈中之記憶體存取指令以推測方式發出預擷取請求;及一停止預擷取電路,其經組態以回應於一識別到之迴圈退出而取消未決預擷取請求。
- 如請求項11之裝置,其中該迴圈資料位址監視器包含:一步幅電路,其經組態以監視該記憶體存取指令之該重複執行,從而針對該記憶體存取指令之每一執行來判定一運算元位址之一差,其中該運算元位址之該差為一步幅位址值;及一加法函數電路,其經組態以將該步幅位址值與最近執行之記憶體存取指令的該運算元位址相加以判定下一運算元位址。
- 如請求項11之裝置,其中未取消現有必要請求。
- 如請求項11之裝置,其中該識別到之迴圈退出係基於識別評估以退出該程式迴圈之一迴圈結束分支。
- 如請求項11之裝置,其中該識別到之迴圈退出係基於取消推測性指令擷取及執行之一不正確分支預測。
- 如請求項11之裝置,其中該停止預擷取電路經進一步組態以將已解析以結束該程式迴圈之一條件分支指令偵測為該識別到之迴 圈退出,且取消除必要預擷取請求外之未決預擷取請求。
- 如請求項11之裝置,其中該停止預擷取電路經進一步組態以偵測未解析以結束該程式迴圈之一條件分支指令,且其中該程式迴圈繼續直至識別到該識別到之迴圈退出為止。
- 如請求項11之裝置,其中該停止預擷取電路經進一步組態以基於一弱預測性迴圈退出而不取消未決預擷取請求。
- 一種編碼有電腦可讀程式資料及程式碼之電腦可讀非暫時性媒體,該電腦可讀程式資料及程式碼在執行時可操作以進行以下步驟:回應於一程式迴圈中之記憶體存取指令而發出快取預擷取請求;基於程式流程資訊來識別該程式迴圈中之一迴圈退出情形;及回應於該識別到之迴圈退出情形而取消未決快取預擷取請求。
- 一種用於取消預擷取請求之裝置,其包含:用於基於一程式迴圈中之一記憶體存取指令的重複執行而判定一資料存取步幅的構件;用於根據該資料存取步幅而回應於該程式迴圈中之記憶體存取指令以推測方式發出預擷取請求的構件;及用於回應於一識別到之迴圈退出而取消未決資料快取預擷取請求的構件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/746,000 US9519586B2 (en) | 2013-01-21 | 2013-01-21 | Methods and apparatus to reduce cache pollution caused by data prefetching |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201443645A TW201443645A (zh) | 2014-11-16 |
TWI521347B true TWI521347B (zh) | 2016-02-11 |
Family
ID=50113017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103102149A TWI521347B (zh) | 2013-01-21 | 2014-01-21 | 用於減少由資料預擷取引起的快取汙染之方法及裝置 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9519586B2 (zh) |
EP (1) | EP2946286B1 (zh) |
JP (1) | JP6143886B2 (zh) |
KR (1) | KR101788683B1 (zh) |
CN (1) | CN105074655B (zh) |
BR (1) | BR112015017103B1 (zh) |
ES (1) | ES2655852T3 (zh) |
HU (1) | HUE035210T2 (zh) |
TW (1) | TWI521347B (zh) |
WO (1) | WO2014113741A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424046B2 (en) * | 2012-10-11 | 2016-08-23 | Soft Machines Inc. | Systems and methods for load canceling in a processor that is connected to an external interconnect fabric |
US9348754B2 (en) | 2012-10-11 | 2016-05-24 | Soft Machines Inc. | Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher |
CN104133691B (zh) * | 2014-05-05 | 2016-08-31 | 腾讯科技(深圳)有限公司 | 加速启动的方法及装置 |
US20160283243A1 (en) * | 2015-03-28 | 2016-09-29 | Yong-Kyu Jung | Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system |
EP3320428A4 (en) * | 2015-07-09 | 2019-07-17 | Centipede Semi Ltd. | PROCESSOR WITH EFFICIENT MEMORY ACCESS |
US10275249B1 (en) * | 2015-10-15 | 2019-04-30 | Marvell International Ltd. | Method and apparatus for predicting end of loop |
US10528352B2 (en) | 2016-03-08 | 2020-01-07 | International Business Machines Corporation | Blocking instruction fetching in a computer processor |
US10175987B2 (en) | 2016-03-17 | 2019-01-08 | International Business Machines Corporation | Instruction prefetching in a computer processor using a prefetch prediction vector |
US10474578B2 (en) * | 2017-08-30 | 2019-11-12 | Oracle International Corporation | Utilization-based throttling of hardware prefetchers |
GB2572954B (en) * | 2018-04-16 | 2020-12-30 | Advanced Risc Mach Ltd | An apparatus and method for prefetching data items |
US10649777B2 (en) * | 2018-05-14 | 2020-05-12 | International Business Machines Corporation | Hardware-based data prefetching based on loop-unrolled instructions |
GB2574270B (en) * | 2018-06-01 | 2020-09-09 | Advanced Risc Mach Ltd | Speculation-restricted memory region type |
US11216279B2 (en) * | 2018-11-26 | 2022-01-04 | Advanced Micro Devices, Inc. | Loop exit predictor |
US10884749B2 (en) | 2019-03-26 | 2021-01-05 | International Business Machines Corporation | Control of speculative demand loads |
US10963388B2 (en) * | 2019-06-24 | 2021-03-30 | Samsung Electronics Co., Ltd. | Prefetching in a lower level exclusive cache hierarchy |
CN110442382B (zh) * | 2019-07-31 | 2021-06-15 | 西安芯海微电子科技有限公司 | 预取缓存控制方法、装置、芯片以及计算机可读存储介质 |
US11150812B2 (en) * | 2019-08-20 | 2021-10-19 | Micron Technology, Inc. | Predictive memory management |
CN111541722B (zh) * | 2020-05-22 | 2022-03-18 | 哈尔滨工程大学 | 基于密度聚类的信息中心网络缓存污染攻击检测防御方法 |
US11630654B2 (en) * | 2021-08-19 | 2023-04-18 | International Business Machines Corporation | Analysis for modeling data cache utilization |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02287828A (ja) * | 1989-04-28 | 1990-11-27 | Fujitsu Ltd | プリフェッチ制御方式 |
JPH0439733A (ja) * | 1990-06-06 | 1992-02-10 | Fujitsu Ltd | 先行制御方式 |
JPH04344935A (ja) * | 1991-05-23 | 1992-12-01 | Nec Corp | 情報処理装置 |
JPH10232775A (ja) * | 1997-02-20 | 1998-09-02 | Hitachi Ltd | プリフェッチ機構 |
US5996061A (en) * | 1997-06-25 | 1999-11-30 | Sun Microsystems, Inc. | Method for invalidating data identified by software compiler |
US6430680B1 (en) | 1998-03-31 | 2002-08-06 | International Business Machines Corporation | Processor and method of prefetching data based upon a detected stride |
US6260116B1 (en) | 1998-07-01 | 2001-07-10 | International Business Machines Corporation | System and method for prefetching data |
US6611910B2 (en) * | 1998-10-12 | 2003-08-26 | Idea Corporation | Method for processing branch operations |
US6446143B1 (en) * | 1998-11-25 | 2002-09-03 | Compaq Information Technologies Group, L.P. | Methods and apparatus for minimizing the impact of excessive instruction retrieval |
US6321330B1 (en) | 1999-05-28 | 2001-11-20 | Intel Corporation | Each iteration array selective loop data prefetch in multiple data width prefetch system using rotating register and parameterization to avoid redundant prefetch |
US6799263B1 (en) * | 1999-10-28 | 2004-09-28 | Hewlett-Packard Development Company, L.P. | Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted |
US6775765B1 (en) * | 2000-02-07 | 2004-08-10 | Freescale Semiconductor, Inc. | Data processing system having instruction folding and method thereof |
US20020144054A1 (en) * | 2001-03-30 | 2002-10-03 | Fanning Blaise B. | Prefetch canceling based on most recent accesses |
JP3683248B2 (ja) * | 2002-10-22 | 2005-08-17 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US7194582B1 (en) | 2003-05-30 | 2007-03-20 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7526604B1 (en) | 2004-08-09 | 2009-04-28 | Nvidia Corporation | Command queueing speculative write prefetch |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US8589666B2 (en) | 2006-07-10 | 2013-11-19 | Src Computers, Inc. | Elimination of stream consumer loop overshoot effects |
US7917701B2 (en) * | 2007-03-12 | 2011-03-29 | Arm Limited | Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation |
US7640420B2 (en) * | 2007-04-02 | 2009-12-29 | Intel Corporation | Pre-fetch apparatus |
GB0722707D0 (en) | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
US8479053B2 (en) | 2010-07-28 | 2013-07-02 | Intel Corporation | Processor with last branch record register storing transaction indicator |
US8661169B2 (en) | 2010-09-15 | 2014-02-25 | Lsi Corporation | Copying data to a cache using direct memory access |
US8977819B2 (en) | 2010-09-21 | 2015-03-10 | Texas Instruments Incorporated | Prefetch stream filter with FIFO allocation and stream direction prediction |
-
2013
- 2013-01-21 US US13/746,000 patent/US9519586B2/en active Active
-
2014
- 2014-01-18 BR BR112015017103-6A patent/BR112015017103B1/pt active IP Right Grant
- 2014-01-18 ES ES14704714.6T patent/ES2655852T3/es active Active
- 2014-01-18 JP JP2015553873A patent/JP6143886B2/ja active Active
- 2014-01-18 KR KR1020157021641A patent/KR101788683B1/ko active IP Right Grant
- 2014-01-18 CN CN201480005173.0A patent/CN105074655B/zh active Active
- 2014-01-18 WO PCT/US2014/012152 patent/WO2014113741A1/en active Application Filing
- 2014-01-18 EP EP14704714.6A patent/EP2946286B1/en active Active
- 2014-01-18 HU HUE14704714A patent/HUE035210T2/hu unknown
- 2014-01-21 TW TW103102149A patent/TWI521347B/zh active
Also Published As
Publication number | Publication date |
---|---|
BR112015017103A2 (pt) | 2017-07-11 |
BR112015017103B1 (pt) | 2022-01-11 |
CN105074655A (zh) | 2015-11-18 |
KR101788683B1 (ko) | 2017-10-20 |
US20140208039A1 (en) | 2014-07-24 |
KR20150110588A (ko) | 2015-10-02 |
US9519586B2 (en) | 2016-12-13 |
TW201443645A (zh) | 2014-11-16 |
WO2014113741A1 (en) | 2014-07-24 |
EP2946286A1 (en) | 2015-11-25 |
CN105074655B (zh) | 2018-04-06 |
EP2946286B1 (en) | 2017-10-25 |
HUE035210T2 (hu) | 2018-05-02 |
ES2655852T3 (es) | 2018-02-21 |
JP2016507836A (ja) | 2016-03-10 |
JP6143886B2 (ja) | 2017-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI521347B (zh) | 用於減少由資料預擷取引起的快取汙染之方法及裝置 | |
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
JP6345623B2 (ja) | 条件付き非ブランチング命令の非実行を予測するための方法および機器 | |
JP5323936B2 (ja) | 推論的割込みベクトルプリフェッチのための装置および方法 | |
US8578141B2 (en) | Loop predictor and method for instruction fetching using a loop predictor | |
US20080072024A1 (en) | Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors | |
TW201337572A (zh) | 推測式快取修改技術 | |
WO2022237585A1 (zh) | 处理方法及装置、处理器、电子设备及存储介质 | |
US9058277B2 (en) | Dynamic evaluation and reconfiguration of a data prefetcher | |
TWI789421B (zh) | 用於預執行資料相依之負載的薄片結構 | |
JP5485129B2 (ja) | コンピュータシステムにおいて割込みを処理するシステムおよび方法 | |
US9916164B2 (en) | Methods and apparatus to optimize instructions for execution by a processor |