TWI469044B - 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 - Google Patents
於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 Download PDFInfo
- Publication number
- TWI469044B TWI469044B TW101149820A TW101149820A TWI469044B TW I469044 B TWI469044 B TW I469044B TW 101149820 A TW101149820 A TW 101149820A TW 101149820 A TW101149820 A TW 101149820A TW I469044 B TWI469044 B TW I469044B
- Authority
- TW
- Taiwan
- Prior art keywords
- ifu
- isb
- instruction
- pipeline
- tag
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 39
- 238000000605 extraction Methods 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims 1
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 241001408627 Agriopis marginaria Species 0.000 description 1
- 240000005523 Peganum harmala Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000007787 solid Substances 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/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
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明大體上係有關於微處理器之領域。特定言之,本發明係有關於使用與指令位元組存取解耦之標籤查找來處置快取未命中。
處理器核心通常包括一指令提取單元,其用於產生自指令快取記憶體(IC)擷取指令的提取請求。當指令可用(亦即,快取命中)時,通常將所提取指令儲存於一提取佇列中。當指令不可用(亦即,快取未命中)時,通常產生一記憶體請求且將其發送至記憶體之較低階層來擷取指令。管線接著可停滯直至指令藉由服務該快取未命中而變得可用為止。
在最近處理器中,指令提取包括一分支預測單元(BPU)。提供一當前IP,處理器核心使用該當前IP來存取BPU,BPU產生對於屬於與當前IP相關聯之當前指令提取區
塊之分支的預測。BPU之預測粒度為N位元組(例如,32B等)。基於預測結果,BPU將產生下一提取IP,其將為當前IP+N位元組(在未進行預測跳開的情況下),或為預測跳開分支之目標位址。此下一IP變為下一循環中之當前IP,且回饋至BPU來產生下一IP。
指令提取單元(IFU)由3個單元構成。1)指令轉譯後備緩衝器(ITLB),其將當前IP轉譯為實體位址,2)由實體位址存取之IC,其傳回對應指令位元組,及3)指令串流緩衝器(ISB),其在較低階層記憶體(例如,L2)所發送之快取行被寫入至IC(其可處置IC未命中)中之前暫時儲存該等快取行。IFU之提取存取可以M位元組粒度(例如,16B)而發生,其可等於或小於BPU之預測頻寬(N=M或N>M)。
IFU為BPU之從屬且在獨立管線中操作。IFU之提取在BPU所產生之IP之後。若BPU之預測頻寬高於IFU之提取頻寬(例如,N=32B對M=16B),則存在稱作分支預測佇列(BPQ)之FIFO佇列,其橋接兩管線之間的頻寬間隙。BPU進行每循環32B之預測,且分配含有提取IP之多達兩個項目。BPU項目寫入之數目由N/M判定。IFU一次讀取一個BPU項目,獲得提取IP,依序存取ITLB及IC,接著沿管線向下發送對應指令位元組(例如,16B)以用於指令解碼。
由於頻寬失配(例如,N>M)及IFU中之可能停滯條件(例如,IC未命中),所以BPU傾向於在IFU前運行且BPU傾向於保持告知IFU在未來需要自何處提取指令的多個有效項目。BPQ可變滿,其可導致BPQ之預測管線停滯直至
其找到空閒BPQ項目為止。同時,IFU將繼續消耗BPQ項目且沿著管線向下發送指令位元組。
當IFU不能發送指令位元組時,ITLB或IC中可能存在快取未命中。當ITLB找不到與對應於當前提取IP之實體位址匹配的項目時,發生ITLB未命中。在此狀況下,IFU停滯且發送一請求至頁面未命中處理常式(PMH)。IFU在PMH傳回實體位址後繼續提取。以類似方式,當IC找不到與對應於當前實體提取位址之指令位元組匹配的項目時,發生IC未命中。在此狀況下,IFU停滯,分配一ISB項目(針對未命中),且發送一提取請求至較低階層記憶體。該提取在較低階層記憶體將快取行傳回至ISB後繼續。ISB中之快取行將最終被寫入至IC中,此係基於與包含處置及IC寫入埠可用性相關之幾個限制來判定。在將ISB位元組寫入回至IC後,允許IFU直接自ISB或自IC發送指令位元組。
此停滯可導致指令執行之延遲,且因此降低處理器核心之效能。為了改良處理器之效能,在IFU在嘗試隱藏延遲時遭遇實際未命中之前,IFU可產生對較低階層記憶體的推測式提取請求。若匹配快取行已存在於IFU中,則推測式提取請求可能為浪費的。因為除非查找IFU否則不知道快取行之存在,所以處理器可使用一機制來濾出不必要的推測式提取請求,或可存取未使用之讀取埠,而IFU停滯而等待服務先前未命中。
依據本發明之一實施例,係特地提出一種處理
器,其包含:一分支預測單元(BPU),其具有用以創建分支預測及提取位址之邏輯;一指令提取單元(IFU)標籤,其與該BPU耦合,具有用以進行以下動作之邏輯:執行指令轉譯後備緩衝器(ITLB)及指令快取記憶體(IC)標籤查找,及當一ITLB未命中發生時將一提取請求發送至一頁面未命中處理常式(PMH),或當一IC未命中及一指令串流緩衝器(ISB)未命中發生時將一提取請求發送至較低階層記憶體;及IFU資料,其與該BPU及該IFU標籤解耦,具有用以進行以下動作之邏輯:基於該等標籤查找而自該IC或該ISB擷取指令位元組,及經由解碼邏輯將該等指令位元組發送至一執行管線。
100‧‧‧處理器核心/環境
102‧‧‧指令快取記憶體(IC)
104‧‧‧指令串流緩衝器(ISB)
106‧‧‧指令提取單元(IFU)
108‧‧‧分支預測單元(BPU)
110‧‧‧較低階層記憶體
112‧‧‧指令轉譯後備緩衝器(ITLB)
114‧‧‧頁面未命中處理常式(PMH)
116‧‧‧μ
OP發佈
118‧‧‧執行級
120‧‧‧引退級
200、500‧‧‧管線
202、502‧‧‧BPU/IFU標籤管線
204‧‧‧指令提取資料管線
206‧‧‧BPU
208‧‧‧IFU標籤
210‧‧‧IFU資料
300、400、600‧‧‧處理程序
301~320、402~414、508~520、602~616‧‧‧操作
322‧‧‧命中向量佇列(HVQ)
504‧‧‧IFU資料管線
506‧‧‧第一查找
700‧‧‧系統
702-1、702-N‧‧‧處理器
704、704-1、704-M‧‧‧處理器核心
706‧‧‧邏輯
708-1、708-M‧‧‧暫存器檔案
710‧‧‧整合式記憶體控制器
(IMC)
712‧‧‧記憶體
714‧‧‧共用快取記憶體
716‧‧‧區域互連
718‧‧‧儲存器
720‧‧‧圖形控制器(GFX)
722‧‧‧系統代理程式
724‧‧‧集線器
726‧‧‧顯示引擎
728‧‧‧PCIe
730‧‧‧DMI
732‧‧‧指令或程式
734‧‧‧作業系統(OS)
736‧‧‧通信器件
738‧‧‧網路
740‧‧‧輸入/輸出(I/O)器件
參考附圖來描述【實施方式】。在圖中,參考數字之最左側數字識別參考數字首次出現之圖。不同圖中之相同參考數字指示類似或相同條目。
圖1為說明性處理器核心之方塊圖。
圖2展示包括與指令提取資料管線解耦之分支預測管線的說明性管線。
圖3為使用指令快取標籤查找來處置指令快取未命中之說明性處理程序的流程圖。
圖4為用來執行指令快取資料存取之說明性處理程序之流程圖。
圖5展示包括實例指令快取未命中及未命中之後的預取資料之說明性管線。
圖6為用來管理命中向量佇列之說明性處理程序的流程圖。
圖7為使用與指令位元組存取解耦之標籤查找來處置快取未命中之系統的說明性架構的方塊圖。
本發明提供藉由使ITLB及IC標籤查找與IC資料(指令位元組)存取解耦以及使ITLB及IC標籤查找在IC資料存取前運行來實現IC及ITLB未命中的早期、運行前處置的技術及裝置。此允許ITLB及IC未命中停滯循環與較舊指令位元組讀取或較舊IC未命中重疊,從而產生改良之效能。
本文描述之技術及裝置可以多種方式來實施。下文參考附圖來提供實例實施方案。
圖1為說明性處理器核心100之方塊圖。處理器核心100可為處理器單元中所包括之複數個處理器核心中之一者。處理器核心100可包括指令快取記憶體(IC)102、指令串流緩衝器(ISB)104、指令提取單元(IFU)106及分支預測單元(BPU)108。IFU 106可與IC 102及ISB 104通信。IFU 106亦可與BPU 108通信。處理器核心100亦可包括與頁面未命中處理常式(PMH)114通信之指令轉譯後備緩衝器(ITLB)112。ITLB 112可與IFU 106、IC 102及ISB 104通信。
IC 102可儲存指令,該等指令可經擷取、解碼
及發佈而由處理器核心100執行。IFU 106可使用自BPU 108獲得之預測來執行針對ISB 104、IC 102及較低階層記憶體110的提取(及預取)操作。
在一些實施例中,處理器核心100可包括μOP發佈116來發佈對應於指令集資料及/或指令串流緩衝器104中之指令的微操作,以用於由執行級118執行。處理器亦可包括一引退級120以在由執行級118完成該等微操作的執行後便引退該等微操作。
圖2展示包括與指令提取資料管線204解耦之分支預測單元(BPU)/IFU標籤管線202的說明性管線200。在各種實施例中,BPU/IFU標籤管線包括BPU 206及IFU標籤208。IFU分解為IFU標籤208及IFU資料210。IFU標籤208包括一指令轉譯後備緩衝器(ITLB)、一IC標籤(亦即,使用一實體提取位址來識別將存取哪一快取行的快取行標籤匹配)及一ISB標籤。IFU資料210包括一IC資料(其含有IC中之指令位元組)及ISB資料(其含有ISB中之指令位元組)。
根據各種實施例,使屬於IFU標籤208之單元在BPU/IFU標籤管線202中可存取,使得可與BPU查找並行發現ITLB及IC命中/未命中結果。此允許IFU標籤存取在較高頻寬管線(N>M)中發生,且在IFU資料210實際提取IFU資料管線204中之指令位元組之前遭遇ITLB或IC未命中。若IFU標籤存取(與BPU並行)在IFU資料存取前充分運行,則ITLB或IC未命中潛時部分或完全隱藏,此在下文中進一步詳細論述。
在解耦IFU中,IFU資料210不再執行位址轉譯或標籤查找,但其仍需要知道自何處提取指令位元組。此可使用命中向量佇列(HVQ)來完成。HVQ可具有與BPQ相同數目之項目,且讀取/寫入可以相同方式來進行管理。替代分支預測資訊及IP,HVQ儲存告知IC設定及方式或ISB項目索引之命中向量。
與BPU查找並行,IFU標籤208藉由提取位址IP來查找。此查找可導致以下狀況:(1)ITLB未命中可發生,其可引起BPU/IFU標籤管線停滯。接著可將ITLB未命中請求發送至PMH。稍後某時,PMH傳回位址轉譯,接著BPU/IFU標籤查找繼續。
(2)ITLB命中及IC標籤命中可發生,其可導致IC設定及方式位址寫入至HVQ中。稍後,IFU資料讀取HVQ項目,且使用給定之設定及方式位址來存取IC行。
(3)ITLB命中、IC標籤未命中及ISB標籤未命中可發生(亦即,IFU不含有必要的指令快取行之「真未命中」狀況)。在此狀況下,可分配ISB項目且將外部提取請求發送至較低階層記憶體(例如,L2)。IFU標籤208將新分配ISB項目之索引寫入至HVQ中。然而,BPU/IFU標籤管線202在不停滯的情況下繼續運行,直至其他停滯條件(例如,ISB或BPQ充滿)發生為止。稍後,IFU資料210讀取HVQ項目,且檢查對應ISB項目是否已自較低階層記憶體接收快取行。若指令位元組尚未可用,則IFU資料將被停
滯直至較低階層記憶體傳回對應快取行為止。若指令位元組在ISB中可用,則IFU資料將其沿管線向下發送。
(4)ITLB命中、IC標籤未命中及ISB標籤命中可發生,其中匹配ISB項目已由先前之真未命中分配。IFU標籤208將剛剛命中之ISB項目之索引寫入至HVQ中。此處,BPU/IFU標籤管線202在不停滯的情況下繼續運行,直至其他停滯條件(例如,ISB或BPQ/HVQ充滿)發生為止。稍後,IFU資料讀取HVQ項目,且檢查對應ISB項目是否已自較低階層記憶體接收快取行。若快取行尚未可用,則IFU資料將被停滯直至較低階層記憶體傳回對應快取行為止。若指令位元組在ISB中可用,則IFU資料210將指令位元組沿管線向下發送。
存在IFU標籤最初具有真未命中或ISB標籤命中(因此將ISB索引寫入至HVQ中)的狀況,但將來自ISB之快取行寫入至IC中,使得IFU資料需要自IC而不是ISB得到指令位元組。此可藉由如參看圖6詳細論述而更新HVQ項目來處置。ISB項目可自較低階層記憶體接收快取行。當已將此快取行寫入至IC中時,可檢查HVQ中之所有有效項目來查看有效項目中之任一者是否具有匹配ISB索引。接著,可更新HVQ項目而使得其具有被寫入ISB項目的IC項目之設定及方式位址。接著,ISB項目(標籤及資料兩者)無效且變得針對新分配而就緒。
一旦ISB IC充滿且HVQ更新完成,IFU資料210中先前想要存取ISB項目之所有隨後查找便將替代地自IC
項目得到指令位元組。IFU標籤208中之所有隨後查找現在可在IC項目中命中。在一些情況下,可存在IFU標籤最初在IC或ISB中命中的狀況,但快取行在IFU資料使用該快取行之前被替換或移除。在提供「管線包含」之處理器核心中,處理器核心保證原始快取行在自提取至引退的指令之整個壽命期間的可用性。因此,此情形(一行在使用之前被替換)為無效的且此處不需要加以定址。該包含性質可藉由獨立機制來實施。若機器未原生地提供必要的包含性質,則可實施一類似IC使用中機制來支援管線包含。
當前揭示內容之「ITLB/IC未命中之基於BPU之運行前處置」部分未必需要HVQ。在一些實施例中,實施方案可在不依賴HVQ的情況下受益於相同運行前性質,但HVQ可實現便宜的實施方案。其他可能之組態包括:(1)複製IFU標籤,且使其在BPU管線中可存取。可在無HVQ的情況下以習知方式來執行對IFU資料的所有存取。(2)將整個IFU移動至BPU管線中以得到運行前性質。可將BPQ轉換為指令位元組緩衝器。當ISB自較低階層記憶體接收快取行時,對應位元組緩衝器項目直接自ISB接收快取行。可直接自位元組緩衝器進行所有指令提取(先前來自IFU資料)。
圖3、圖4及圖6以邏輯流程圖來展示被說明為區塊集合的處理程序,其表示可在硬體、軟體或其組合中實
施之一序列操作。描述該等操作之次序並不意欲被解釋為限制,且任何數目之所描述區塊可以任何次序及/或以並行關係來組合而實施該處理程序。參考環境100及管線200來描述處理程序。當然,可在其他類似及/或不同環境中執行處理程序。
圖3為使用指令快取標籤查找來處置指令快取未命中之說明性處理程序300的流程圖。處理程序300包括一BPU管線流程(使用BPU 206)及一IFU標籤管線流程(使用IFU標籤208),該等流程並行地執行。處理程序300可在301處於重設之後開始。
在302,BPU管線流程開始。針對當前位址,BPU預測一或多個指令之下一位址。在一些實施例中,操作302可為每循環32個位元組預測。因此,BPU預測當前位址中之分支來預測後續位址。
在304,將所預測位址寫入至BPQ中。在一些情況下,可將多達兩個項目寫入至BPQ中(例如,每項目16位元組)。可重複操作302及304直至BPQ充滿為止。
在一些實施例中,IFU標籤208與BPU所執行之操作302至304並行地執行操作306至320。
在306,針對當前位址(在操作302處判定),IFU標籤208執行ITLB、IC及ISB標籤之查找。
在308,IFU標籤208偵測ITLB命中是否發生。當ITLB未命中發生時(跟隨來自決策操作308之「否」路線),在310,處理器發送一請求至PMH用於位址轉譯。
在312,處理程序偵測ITLB未命中是否得以解決。當未命中未解決時(跟隨來自決策操作312之「否」路線),在314,BPU及IFU管線停滯直至PMH傳回一位址轉譯為止。當未命中得以解決時(跟隨來自決策操作312之「是」路線),則再次自操作302開始查找當前位址。返回至決策操作308,在ITLB命中的情況下,ITLB提供經轉譯位址且移動至操作316(跟隨來自決策操作308之「是」路線)。
在316,IFU標籤208偵測IC命中抑或ISB命中發生。在IC命中的情況下,指令已處於IC中。當ISB命中發生時,指令位元組可能可用或可能並不可用。然而,IFU標籤僅檢查以查看ISB命中是否發生,而在與處理程序300解耦之獨立處理程序中偵測指令命中之狀態。
在318,當在316發生命中時(跟隨來自決策操作316之「是」路線),則IFU標籤具有設定及方式位址,且IFU標籤將IC設定/方式位址或ISB索引寫入至命中向量佇列(HVQ)322中。在一些情況下,HVQ可接收每項目16位元組之多達兩個項目。在318,IFU標籤將位址記錄至HVQ中。稍後,IFU資料管線自HVQ 322讀取(參看圖4描述),且IFU資料接著基於在操作318處寫入之命中向量而知道自何處讀取位元組。
當在決策操作316處無IC命中或ISB命中發生時,則處理在操作320處繼續(跟隨來自決策操作316之「否」路線)。在320,IFU標籤分配用於當前位址之ISB項
目,且產生對較低階層記憶體之提取請求。IFU標籤可發送新分配之ISB項目之索引,該索引用於接著描述之解耦處理程序400中。在操作320後,IFU標籤208進行至操作318以將ISB索引(在320處剛剛分配)寫入至HVQ 322中。
返回至操作318,可發生三種不同結果:(1)IC命中可在操作306處發生,(2)ISB命中可在操作306處發生,或(3)新分配之ISB索引可具有來自操作320之提取請求。
圖4為用來執行指令快取資料存取之說明性處理程序400之流程圖。處理程序400結合處理程序300來操作。如上文描述且在下文中更詳細描述,處理程序400可受益於在處理程序300中之操作320處執行的提取請求,其可減少或防止處理程序400中之停滯。處理程序400可至少部分由IFU資料210來執行。
在402,處理程序400自HVQ 322中之HVQ項目讀取一命中向量。HVQ 322可儲存IC設定/方式位址或ISB索引,而非在先前實施方案中通常由BPQ儲存之完整提取位址。
在404,處理程序400判定HVQ 322是否為空的。當HVQ為空的時(跟隨「是」路線),則處理程序可停滯直至HVQ中之項目變得可用為止。否則,處理程序400可前進至操作406(跟隨來自決策操作404之「否」路線)。因此,操作402及404自HVQ 322擷取資料,該資料接著由IFU資料210處理,如以下論述。
在406,IFU資料210可接收命中向量。IFU資料210可判定自何處存取IC或ISB以擷取指令。
在408,IFU資料210可偵測命中向量是否在IC中。當命中向量在IC中時,則IFU資料210具有位元組。因此,當命中向量指向IC時(跟隨「是」路線),則在410,IFU可讀取位元組且將指令向下發送至管線。
當命中向量未指向IC時(跟隨來自決策操作408之「否」路線),則命中向量指向ISB。在412,IFU資料210偵測命中向量是否指向ISB及位元組是否就緒(該等位元組預先在操作320處之提取請求中被請求)。若位元組就緒(跟隨「是」路線),則在操作410中,IFU資料210讀取位元組且將該等位元組向下發送至管線。在此情況下,IFU資料210由於位元組被預先請求且在IFU資料210需要時被接收而未停滯。
當在決策操作412處位元組未就緒時(跟隨「否」路線),則IFU資料210可等待直至自記憶體接收資料為止,且可在接收後儲存資料。此處,IFU資料210在位元組未就緒時停滯。處理程序400在決策操作408處繼續,且在操作410處當位元組就緒時自ISB退出。
如參看圖3及圖4描述,ISB為IC與較低階層記憶體之間的橋接器。當提取請求未處理時,IFU標籤可具有針對ISB之位址的對應項目(在操作318處寫入),但位元組可能針對IFU資料210未就緒。因此,在操作414,IFU資料210可能必須等待ISB自較低階層記憶體(例如,L2)擷取位
元組。
當處理程序300在處理程序400前充分運行時,在318,IFU標籤208可在一第一時間發送提取請求。在一第二時間,在決策操作412,IFU資料210可判定位元組是否就緒。若ISB可在第一時間與第二時間之間自較低階層記憶體擷取位元組,則在414,IFU資料210將不停滯,但將使該等位元組就緒且經由操作410而將其發送至管線。因此,當在決策操作412處在IFU資料210尋找位元組的時間前在操作318處IFU標籤充分執行提取請求時,IFU標籤208與IFU資料210之管線的解耦可減少停滯。
圖5展示包括實例指令快取未命中及未命中之後的預取資料之說明性管線500。管線500包括BPU/IFU標籤管線502及IFU資料管線504。
在此實例中,在BPU/IFU標籤管線502中,針對位址0x40(其可由於BPU之32B提取粒度而涵蓋位址0x40及0x50兩者)之第一查找506可發生且可為一真未命中(由操作周圍之虛線邊界指示)。在管線中位置STG4處,IFU標籤可分配ISB項目且經由操作320而發送針對位址0x40之請求。由於IFU標籤管線不需要指令位元組,所以IFU標籤管線502在不被停滯的情況下繼續處理下一行(其可為0x60)。針對位址0x60之第二查找可在由先前查找506所分配之ISB項目中命中,此係因為位址0x40及0x60可屬於同一快取行(在此實例中為64B粒度)。
繼續實例,在508、510處,BPU/IFU標籤管線
502可在0x10、0x200處具有命中,其可經由操作318而由IFU標籤處理。BPU/IFU標籤管線502接著可在0x800再次未命中(512),且經由操作320發出另一提取請求。BPU/IFU標籤管線502在發送請求後保持移動。
同時,IFU資料管線504可自HVQ 322讀出命中向量。在0x40(514),IFU資料210可必須停滯,且等待指令在圖4中操作414處由ISB擷取。因此,IFU資料210可停滯直至位元組變得可用為止。在位元組返回且針對0x40在410處成功發送至管線(516)後,則IFU資料管線504可在402讀取下一命中向量,因此至0x50(518)。IFU管線繼續處理且具有命中,其可經由操作410向下發送至管線。舉例而言,IFU標籤管線可在316處具有IC命中,其導致處理程序400自決策操作408移動至操作410(自IC資料讀取)。
繼續實例,IFU標籤管線502藉由在IFU資料管線504前運行而已發送針對0x800之位元組的提取請求。當IFU資料管線504讀取針對0x800之命中向量(520)時,則位元組由於IFU標籤管線502進行之先前請求512而就緒。因此,IFU資料管線504可偵測到在決策操作412處位元組針對位址0x800而就緒,且進行(經由「是」操作)至操作410,且經由操作414在無需停滯的情況下將位元組向下發送至管線。因為IFU標籤管線在此位址之處理前發送針對位元組之請求,所以停滯在IFU資料管線504處理針對此位址之對應命中向量之前得以避免。因此,在IFU資料管線504中可避免一些停滯,此可增加處理核心之輸送量及效率。
圖6為用來管理命中向量佇列之說明性處理程序600的流程圖。如圖3中論述,在操作320,IFU標籤208可使用ISB來起始針對位元組之一提取請求。在操作318,IFU標籤208可將一ISB索引寫入至HVQ中。然而,在IFU資料210讀取針對ISB之命中向量之前,串流緩衝器可能已將位元組寫入至IC且解除分配串流緩衝器。在此情況下,需要更新位元組之命中向量來反映IC中之位置。處理程序600完成此更新。在一些實施例中,處理程序600可藉由處理程序300及/或處理程序400來實施。
在602,IFU標籤208可根據IFU標籤查找來判定IC或ISB中位元組之位置,且接著產生一寫入(經由圖3中之操作318),該寫入包括針對IC之設定/方式位址或ISB項目索引。
在604,IFU標籤208可將命中向量儲存至FIFO佇列中之「標頭」項目中。操作602及604可類似於操作318。
在606,處理程序600可偵測ISB至IC填充是否已發生(例如,將ISB索引x填充至IC設定/方式位址y中),當該填充已發生時(跟隨「是」路線)此可引起命中向量之更新。
在608,自決策操作606跟隨「是」路線,處理程序600可查找HVQ以定位具有匹配ISB索引之項目。
在610,處理程序可修改HVQ以更新命中向量。舉例而言,處理程序可將{ISB,索引x}更新為{IC,設定/
方式位址y}。接著,ISB項目(標籤及資料兩者)可為無效的且變得針對新分配而就緒。因此,當IFU資料210讀取命中向量時,則經由圖4中所示之操作408及410,IFU資料210可將命中向量處理為IC命中。處理程序可自操作610繼續至操作612。
當在決策操作606未發生填充時(跟隨「否」路線),或在完成操作608至610後,則在612,處理程序可偵測IFU資料210是否已讀取操作406處之HVQ。若不存在讀取(跟隨「否」路線),則處理程序600可環回至操作602。當存在讀取時(跟隨自決策操作612之「是」路線),則在614處理可繼續。
在614,處理程序600可自FIFO佇列之「標尾」項目讀取命中向量。
在616,處理程序可發送命中向量至IFU資料210,該命中向量在圖4中展示之操作406處接收。操作614及616可類似於操作402。
圖7為使用與指令位元組存取解耦之標籤查找來處置快取未命中之系統的說明性架構的方塊圖。系統700可包括一或多個處理器702-1、...、702-N(其中N為1之正整數),其每一者可包括一或多個處理器核心704-1、...、704-M(其中M為1之正整數)。在一些實施方案中,如上文論述,處理器702可為單核心處理器,而在其他實施方案中,處理器702可具有大量處理器核心,其每一者可包
括圖7中說明之組件中之一些或全部。舉例而言,每一處理器核心704-1、...、704-M可包括邏輯706之執行個體,其用於與暫存器檔案708-1、...、708-M互動及/或執行本文論述之操作中之至少一些。邏輯706可包括專用電路、邏輯單元、微程式碼或類似者中之一或多者。
處理器702及處理器核心704可經由結合區域互連716之整合式記憶體控制器(IMC)710而操作以對記憶體712進行讀取及寫入。處理器702及處理器核心704亦可執行儲存於記憶體712或其他電腦可讀媒體中之電腦可讀指令。記憶體712可包括以任何類型之技術實施之揮發性及非揮發性記憶體及/或可移除及不可移除媒體,用於儲存諸如電腦可讀指令、資料結構、程式模組或其他資料之資訊。此類記憶體可包括(但不限於)RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術。在存在多個處理器核心704之狀況下,在一些實施方案中,多個處理器核心704可共用一共用快取記憶體714,該共用快取記憶體714可經由區域互連716而存取。另外,可提供儲存器718以用於儲存資料、程式碼、程式、記錄檔及類似者。儲存器718可包括固態儲存器、磁碟儲存器、RAID儲存系統、儲存陣列、網路附接儲存器、儲存區域網路、雲端儲存器、CD-ROM、數位影音光碟(DVD)或其他光學儲存器、匣式磁帶、磁帶、或可用來儲存所要資訊及可由計算器件存取之任何其他媒體。取決於系統700之組態,記憶體712及/或儲存器718可為一類型之電腦可讀儲存媒體且可為一
非暫時性媒體。
在各種實施例中,區域互連716亦可與圖形控制器(GFX)720通信以提供圖形處理。在一些實施例中,區域互連716可與系統代理程式722通信。系統代理程式722可與集線器724通信,其連接顯示引擎726、PCIe 728及DMI 730。
記憶體712可儲存可由處理器702執行之功能組件。在一些實施方案中,此等功能組件包含可由處理器702執行之指令或程式732。圖7中說明之實例功能組件進一步包括一作業系統(OS)734來管理系統700之操作。
系統700可包括一或多個通信器件736,其可包括一或多個介面及硬體組件以用於經由一通信鏈路(諸如,一或多個網路738)來實現與各種其他器件的通信。舉例而言,通信器件736可經由網際網路、纜線網路、蜂巢式網路、無線網路(例如,Wi-Fi、蜂巢式)及有線網路中之一或多者來促進通信。用於通信之組件可至少部分取決於所選擇網路及/或環境之類型。用於經由此類網路通信之協定及組件為眾所周知的且將在本文中不再詳細論述。
系統700可進一步配備各種輸入/輸出(I/O)器件740。此類I/O器件740可包括顯示器、各種使用者介面控制件(例如,按鈕、搖桿、鍵盤、觸控螢幕等)、音訊揚聲器、連接埠等等。可提供一互連724來實現處理器702、記憶體712、儲存器718、通信器件736及I/O器件740之間的通信,該互連724可包括系統匯流排、點對點介面、晶片
組或其他合適連接及組件。
儘管已在針對結構特徵及/或方法動作特定之語言中描述了標的,但應理解在隨附申請專利範圍中界定之標的未必限於所描述之特定特徵或動作。更確切而言,將特定特徵及動作作為實施申請專利範圍之說明性形式來揭示。
100‧‧‧處理器核心
102‧‧‧指令快取記憶體(IC)
104‧‧‧指令串流緩衝器(ISB)
106‧‧‧指令提取單元(IFU)
108‧‧‧分支預測單元(BPU)
110‧‧‧較低階層記憶體
112‧‧‧指令轉譯後備緩衝器(ITLB)
114‧‧‧頁面未命中處理常式(PMH)
116‧‧‧μOP發佈
118‧‧‧執行級
120‧‧‧引退級
Claims (21)
- 一種處理器,其包含:一分支預測單元(BPU),其具有用以創建分支預測及提取位址之邏輯;一指令提取單元(IFU)標籤,其與該BPU耦合,具有用以進行以下動作之邏輯:執行指令轉譯後備緩衝器(ITLB)及指令快取記憶體(IC)標籤查找,及當一ITLB未命中發生時將一提取請求發送至一頁面未命中處置器(PMH),或當一IC未命中及一指令串流緩衝器(ISB)未命中發生時將該提取請求發送至較低階層記憶體;及IFU資料,其與該BPU及該IFU標籤解耦,具有用以進行以下動作之邏輯:基於該等標籤查找而自該IC或該ISB擷取指令位元組,及經由解碼邏輯將該等指令位元組發送至一執行管線。
- 如申請專利範圍第1項之處理器,其中該IFU標籤將一IC設定及方式位址或一ISB索引儲存至一命中向量佇列(HVQ)中。
- 如申請專利範圍第2項之處理器,其中該IFU資料自該HVQ擷取一命中向量,該命中向量包括該IC設定及方式 位址或該ISB索引。
- 如申請專利範圍第3項之處理器,其中該HVQ在一對應指令被寫入至該IC中之後替換該ISB索引,該HVQ針對寫入至該IC中之該對應指令而用該IC設定及方式位址替換該ISB索引。
- 如申請專利範圍第1項之處理器,其中該BPU及該IFU標籤執行一BPU/IFU標籤管線中之操作,該BPU/IFU標籤管線於一IFU資料管線前運行,該IFU資料管線自該IC或該ISB擷取該等指令位元組。
- 如申請專利範圍第1項之處理器,其中當在該IFU資料存取由一命中向量索引之一ISB項目後該提取請求未得以滿足且位元組未就緒時,該IFU資料停滯。
- 如申請專利範圍第1項之處理器,其中當一ITLB未命中發生時該BPU/IFU標籤管線停滯。
- 如申請專利範圍第1項之處理器,其中該BPU及該IFU標籤並行操作,該IFU標籤自與該BPU共用之下一指令指標邏輯接收一當前提取位址。
- 如申請專利範圍第1項之裝置,其中該BPU將該等分支預測寫入至一分支預測佇列(BPQ)中,且其中該BPU/IFU標籤管線當該BPQ充滿時停滯直至該IFU資料消耗且解除分配來自該BPU之一項目為止。
- 一種裝置,其包含:一第一邏輯,其用以創建分支預測及提取位址;一第二邏輯,其與該第一邏輯耦合,用以當一指令 轉譯緩衝器(ITLB)未命中發生時將一ITLB請求發送至一頁面未命中處置器(PMH),及當一指令快取記憶體(IC)未命中及一指令串流緩衝器(ISB)未命中針對該等提取位址而發生時將一提取請求發送至較低階層記憶體;及一第三邏輯,其與該第一邏輯及該第二邏輯解耦,用以基於該等標籤查找而自該IC或該ISB擷取指令位元組,該等所擷取位元組被發送至一執行管線。
- 如申請專利範圍第10項之裝置,其中該第二邏輯由一指令提取單元(IFU)標籤執行,該IFU標籤將一IC設定及方式位址或一ISB索引儲存至一命中向量佇列(HVQ)中。
- 如申請專利範圍第11項之裝置,其中該第三邏輯由IFU資料執行,該IFU資料自該HVQ擷取一命中向量,該命中向量包括該IC設定及方式位址或該ISB索引。
- 如申請專利範圍第10項之裝置,其中該第一及第二邏輯在該第三邏輯前運行,使得該提取請求在該第三邏輯自該ISB擷取該等指令位元組之前得以滿足。
- 如申請專利範圍第10項之裝置,其中當在存取由一命中向量索引之該ISB項目後該提取請求未得以滿足且對應位元組在該ISB中未就緒時,該第三邏輯停滯。
- 如申請專利範圍第10項之裝置,其中該第一邏輯及該第二邏輯在一共用管線中並行執行。
- 一種電腦實施之方法,其包含:在一第一管線中產生分支預測及提取位址;在該第一管線中執行針對該等提取位址之指令轉 譯後備緩衝器(ITLB)及指令快取記憶體(IC)標籤查找;當一IC未命中及一指令串流緩衝器(ISB)未命中發生時,在該第一管線中將一提取請求發送至較低階層記憶體;及使用與該第一管線解耦之一第二管線而基於該等標籤查找自該IC或該ISB擷取指令位元組,來自該ISB之該等指令位元組包括自該提取請求預先擷取之指令位元組。
- 如申請專利範圍第16項之方法,進一步包含:在一第一管線中將該IC設定及方式位址或一ISB索引儲存至一命中向量佇列(HVQ)中;及在該第二管線中自該HVQ擷取該IC設定及方式位址或該ISB索引。
- 如申請專利範圍第16項之方法,進一步包含在將一對應指令寫入至該IC中後用該IC設定及方式位址替換該ISB索引。
- 如申請專利範圍第16項之方法,其中該第一管線在該第二管線前運行,使得該提取請求在該自該ISB擷取指令位元組前執行以避免該第二管線中之一停滯。
- 如申請專利範圍第16項之方法,其中該產生該等分支預測與該執行該等ITLB及IC標籤查找並行發生。
- 如申請專利範圍第16項之方法,進一步包含當該提取請求在對應指令位元組之該擷取之前未得以滿足時停滯該第二管線。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067772 WO2013101031A1 (en) | 2011-12-29 | 2011-12-29 | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342216A TW201342216A (zh) | 2013-10-16 |
TWI469044B true TWI469044B (zh) | 2015-01-11 |
Family
ID=48698270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101149820A TWI469044B (zh) | 2011-12-29 | 2012-12-25 | 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9158696B2 (zh) |
TW (1) | TWI469044B (zh) |
WO (1) | WO2013101031A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9658963B2 (en) * | 2014-12-23 | 2017-05-23 | Intel Corporation | Speculative reads in buffered memory |
US10078581B2 (en) | 2016-11-14 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processor with instruction cache that performs zero clock retires |
US10067875B2 (en) * | 2016-11-14 | 2018-09-04 | Via Alliance Semiconductor Co., Ltd. | Processor with instruction cache that performs zero clock retires |
US11113069B1 (en) * | 2020-07-09 | 2021-09-07 | Huaxia General Processor Technologies Inc. | Implementing quick-release VLV memory access array |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW497051B (en) * | 1998-12-01 | 2002-08-01 | Ibm | Database having table for storing queries |
US6591343B1 (en) * | 2000-02-22 | 2003-07-08 | Ip-First, Llc | Predecode in parallel with TLB compare |
TW200530912A (en) * | 2003-12-03 | 2005-09-16 | Advanced Micro Devices Inc | Transitioning from instruction cache to trace cache on label boundaries |
TW200713033A (en) * | 2005-05-18 | 2007-04-01 | Qualcomm Inc | Handling cache miss in an instruction crossing a cache line boundary |
US7406581B2 (en) * | 2003-04-24 | 2008-07-29 | Stmicroelectronics Limited | Speculative instruction load control |
US20090019257A1 (en) * | 2007-07-10 | 2009-01-15 | Shen Gene W | Method and Apparatus for Length Decoding and Identifying Boundaries of Variable Length Instructions |
US20110296136A1 (en) * | 2005-03-29 | 2011-12-01 | O'connor Dennis M | Locking Entries Into Translation Lookaside Buffers |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5692152A (en) * | 1994-06-29 | 1997-11-25 | Exponential Technology, Inc. | Master-slave cache system with de-coupled data and tag pipelines and loop-back |
US6076159A (en) * | 1997-09-12 | 2000-06-13 | Siemens Aktiengesellschaft | Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline |
GB2459652B (en) * | 2008-04-28 | 2010-09-22 | Imagination Tech Ltd | Controlling instruction scheduling based on the space in a trace buffer |
US9304774B2 (en) * | 2011-02-04 | 2016-04-05 | Qualcomm Incorporated | Processor with a coprocessor having early access to not-yet issued instructions |
-
2011
- 2011-12-29 US US13/992,228 patent/US9158696B2/en not_active Expired - Fee Related
- 2011-12-29 WO PCT/US2011/067772 patent/WO2013101031A1/en active Application Filing
-
2012
- 2012-12-25 TW TW101149820A patent/TWI469044B/zh not_active IP Right Cessation
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW497051B (en) * | 1998-12-01 | 2002-08-01 | Ibm | Database having table for storing queries |
US6591343B1 (en) * | 2000-02-22 | 2003-07-08 | Ip-First, Llc | Predecode in parallel with TLB compare |
US7406581B2 (en) * | 2003-04-24 | 2008-07-29 | Stmicroelectronics Limited | Speculative instruction load control |
TW200530912A (en) * | 2003-12-03 | 2005-09-16 | Advanced Micro Devices Inc | Transitioning from instruction cache to trace cache on label boundaries |
US20110296136A1 (en) * | 2005-03-29 | 2011-12-01 | O'connor Dennis M | Locking Entries Into Translation Lookaside Buffers |
TW200713033A (en) * | 2005-05-18 | 2007-04-01 | Qualcomm Inc | Handling cache miss in an instruction crossing a cache line boundary |
TWI319157B (en) * | 2005-05-18 | 2010-01-01 | Qualcomm Inc | Method of handling a cache miss in an instruction crossing a cache line boundary and fetch unit and pipelined processor thereof |
US20090019257A1 (en) * | 2007-07-10 | 2009-01-15 | Shen Gene W | Method and Apparatus for Length Decoding and Identifying Boundaries of Variable Length Instructions |
Also Published As
Publication number | Publication date |
---|---|
TW201342216A (zh) | 2013-10-16 |
WO2013101031A1 (en) | 2013-07-04 |
US9158696B2 (en) | 2015-10-13 |
US20140229677A1 (en) | 2014-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7454590B2 (en) | Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores | |
US7383415B2 (en) | Hardware demapping of TLBs shared by multiple threads | |
US9170954B2 (en) | Translation management instructions for updating address translation data structures in remote processing nodes | |
KR101361928B1 (ko) | 스레드 이송 시의 캐시 프리필링 | |
KR101361945B1 (ko) | 컴퓨터 스레드들의 이종 리소스들로의 맵핑 | |
US7213126B1 (en) | Method and processor including logic for storing traces within a trace cache | |
US8639886B2 (en) | Store-to-load forwarding mechanism for processor runahead mode operation | |
US7363435B1 (en) | System and method for coherence prediction | |
US20050240733A1 (en) | Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache | |
TW201235939A (en) | Instruction sequence buffer to store branches having reliably predictable instruction sequences | |
TW202046101A (zh) | 具有中斷表之經引導中斷虛擬化 | |
JP2000222205A (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
JP2007207248A (ja) | 複数のキャッシュ・ミス後の命令リスト順序付けのための方法 | |
US10078514B2 (en) | Techniques for dynamic sequential instruction prefetching | |
TWI469044B (zh) | 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 | |
JP7025100B2 (ja) | アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理 | |
US9983880B2 (en) | Method and apparatus for improved thread selection | |
US7469332B2 (en) | Systems and methods for adaptively mapping an instruction cache | |
US20030182539A1 (en) | Storing execution results of mispredicted paths in a superscalar computer processor | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
US11513801B2 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
US20200019405A1 (en) | Multiple Level History Buffer for Transaction Memory Support | |
US20070239939A1 (en) | Apparatus for Performing Stream Prefetch within a Multiprocessor System | |
CN117632263A (zh) | 指令处理方法、处理器核、处理器、计算设备及存储介质 | |
CN116627505A (zh) | 指令缓存及操作方法、处理器核及指令处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |