TWI805831B - 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體 - Google Patents

用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體 Download PDF

Info

Publication number
TWI805831B
TWI805831B TW108130611A TW108130611A TWI805831B TW I805831 B TWI805831 B TW I805831B TW 108130611 A TW108130611 A TW 108130611A TW 108130611 A TW108130611 A TW 108130611A TW I805831 B TWI805831 B TW I805831B
Authority
TW
Taiwan
Prior art keywords
memory access
access instruction
pipeline
memory
tlb
Prior art date
Application number
TW108130611A
Other languages
English (en)
Other versions
TW202018516A (zh
Inventor
普利塔 高夏爾
奈克 喬杜里
拉菲 拉賈勾帕蘭
派翠克 艾伯爾
布萊恩 史丹普
大衛史考克 瑞
湯瑪士飛利浦 史畢爾
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW202018516A publication Critical patent/TW202018516A/zh
Application granted granted Critical
Publication of TWI805831B publication Critical patent/TWI805831B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Apparatus For Radiation Diagnosis (AREA)

Abstract

提供了一種用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和系統。一種裝置包括:記憶體存取指令流水線、耦合至該記憶體存取指令流水線的轉譯後備緩衝器,以及耦合至該TLB和該記憶體存取指令流水線兩者的TLB未命中佇列。該TLB未命中佇列被配置成選擇性地儲存作為第一記憶體存取指令在TLB中未命中的結果而已經從記憶體存取指令流水線中移除的第一記憶體存取指令連同與第一記憶體存取指令相關聯的資訊。TLB未命中佇列進一步被配置成與相關於第一記憶體存取指令的位址轉譯的返回相關聯地將第一記憶體存取指令重新引入記憶體存取指令流水線。

Description

用於減少由於位址轉譯未命中而引起的流水線停頓的方法、 裝置和電腦可讀取媒體
本專利申請案主張於2018年8月27日提出申請的題為「METHOD,APPARATUS,AND SYSTEM FOR REDUCING PIPELINE STALLS DUE TO ADDRESS TRANSLATION MISSES(用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和系統)」的非臨時申請案第16/113,141的優先權,該申請案已被轉讓給本案受讓人並由此經由援引明確納入於此。
本案的各態樣大體而言係關於減少流水線停頓,尤其係關於減少與位址轉譯未命中相關聯的流水線停頓。
現代計算設備可採用虛擬記憶體技術來管理其記憶體階層。作為管理虛擬記憶體的一部分,此類計算設備經由記憶體管理單元(MMU)將應用程式所使用的虛擬記憶體位址轉譯成實體位址。該轉譯可隨後由記憶體佇列或類似的硬體塊用來與主記憶體進行互動。由於對此類轉譯的需求可能很頻繁,因此亦開發了對已知或最新近 使用的轉譯進行快取的機制,其習知地被稱為轉譯後備緩衝器(TLB)。TLB用作虛擬到實體轉譯的快取記憶體,其可以經由避免每次遇到記憶體存取操作時皆需要遍歷記憶體階層以執行虛擬到實體位址轉譯來改良記憶體存取操作的等待時間,因為此類遍歷可以是相對較長等待時間的操作。
當記憶體存取操作在TLB中具有其虛擬位址未命中並且必須等待來自MMU的轉譯時,可能會導致進一步的複雜化。處理如前述的TLB未命中的常見辦法是在等待轉譯時使計算設備的流水線停頓。此舉意味著記憶體存取操作之後的指令亦被延後。然而,該等後續指令可能不會導致TLB未命中,亦不一定取決於TLB中未命中的記憶體存取操作的結果。因此,處理器保持停頓且等待轉譯的循環實際上是浪費的,因為在該時間段期間存在可被執行的可用後續指令,但該等指令將被指派給的流水線被等待其轉譯的記憶體存取操作阻塞。
因此,期望提供一種機制,用於在計算設備等待將返回的與TLB未命中相關聯的位址轉譯時允許在TLB中未命中的記憶體存取操作之後的且不取決於要被執行的記憶體存取操作的指令。
以下提供了一或多個態樣的簡要概述以提供對此類態樣的基本理解。此概述不是所有構想到的態樣的詳盡綜覽,並且既非意欲標識出所有態樣的關鍵性或決定 性元素亦非試圖界定任何或所有態樣的範疇。其唯一的目的是以簡化形式提供一或多個態樣的一些概念以作為稍後提供的更詳細描述之序言。
在一個態樣,一種裝置包括:記憶體存取指令流水線、耦合至該記憶體存取指令流水線的轉譯後備緩衝器,以及耦合至該TLB和該記憶體存取指令流水線兩者的TLB未命中佇列。TLB未命中佇列被配置成選擇性地儲存作為第一記憶體存取指令在TLB中未命中的結果而已經從記憶體存取指令流水線中移除的第一記憶體存取指令連同與第一記憶體存取指令相關聯的資訊。TLB未命中佇列可進一步被配置成與相關於第一記憶體存取指令的位址轉譯的返回相關聯地將第一記憶體存取指令重新引入記憶體存取指令流水線。
在另一態樣,一種方法包括以下步驟:從記憶體存取指令流水線中移除在TLB中未命中的第一記憶體存取指令,以使該記憶體存取指令流水線可用於其他記憶體存取指令。該方法進一步包括以下步驟:在等待第一記憶體存取指令的位址轉譯時,在TLB未命中佇列中選擇性地儲存第一記憶體存取指令和相關聯資訊。該方法可進一步包括以下步驟:與同第一記憶體存取指令相關聯的位址轉譯的返回相關聯地將第一記憶體存取指令重新引入記憶體存取指令流水線。
在又一態樣,一種包括指令的非暫時性電腦可讀取媒體,該等指令在由處理器執行時使得該處理器從記 憶體存取指令流水線中移除在TLB中未命中的第一記憶體存取指令,以使該記憶體存取指令流水線可用於其他記憶體存取指令。該等指令進一步使得該處理器在等待第一記憶體存取指令的位址轉譯時,在TLB未命中佇列中選擇性地儲存第一記憶體存取指令和相關聯資訊。
在又一態樣,一種裝置包括:用於執行記憶體存取指令的構件、耦合至該用於執行記憶體存取指令的構件的用於對位址轉譯進行快取的構件,以及耦合至該用於對位址轉譯進行快取的構件和該用於執行記憶體存取指令的構件的用於儲存在該用於對位址轉譯進行快取的構件中未命中的指令的構件。用於儲存未命中的指令的構件被配置成選擇性地儲存作為第一記憶體存取指令在用於對位址轉譯進行快取的構件中未命中的結果而已經從用於執行記憶體存取指令的構件中移除的第一記憶體存取指令,以及與第一記憶體存取指令相關聯的資訊。
一或多個所揭示態樣的一個優點在於,所揭示的各態樣允許經由從流水線中移除產生TLB未命中的操作並允許進行後續記憶體存取操作來實現如前述的TLB未命中佇列的計算設備的改良的輸送量。在一些態樣,此舉可以減少功耗並改良整體系統效能。
100:計算設備
110:中央處理單元(CPU)
111:記憶體存取指令
112:載入/儲存流水線
114:轉譯後備緩衝器(TLB)
116:TLB未命中佇列
120:記憶體管理單元(MMU)
140:系統匯流排
200:詳細示圖
202:TLB未命中佇列
210:儲存結構
211a:條目
211b:條目
211c:條目
211d:條目
212:指令欄位
214:「需要請求」欄位
216:「具有轉譯」欄位
300:實現
302:載入流水線
304:儲存流水線
308:共用TLB
310:階段LD1
312:階段LD2
314:階段LD3
316:階段LD4
318:載入TLB未命中佇列
320:階段ST1
322:階段ST2
324:階段ST3
326:階段ST4
328:儲存TLB未命中佇列
370:載入指令
380:儲存指令
400:方法
410:方塊
420:方塊
430:方塊
500:計算設備
502:處理器
522:晶片上系統設備
526:顯示器控制器
528:顯示器
530:輸入設備
534:編碼器/解碼器(CODEC)
536:揚聲器
538:話筒
540:無線控制器
542:無線天線
544:電源
570:有線網路控制器
572:網路
580:主記憶體系統
圖1圖示根據本案的某些態樣的被配置成減少由於位址轉譯未命中而引起的流水線停頓的計算設備的方塊圖。
圖2圖示根據本案的某些態樣的示例性TLB未命中佇列的詳細示圖。
圖3圖示根據本案的某些態樣的與載入流水線和儲存流水線相關聯的TLB未命中佇列的實現的詳細示圖。
圖4圖示根據本案的某些態樣的減少由於位址轉譯未命中而引起的流水線停頓的方法的方塊圖。
圖5圖示根據本案的某些態樣的被配置成減少由於位址轉譯未命中而引起的流水線停頓的計算設備的系統級示圖。
本發明教示的各態樣在本文中針對具體態樣在以下描述和相關附圖中揭示。可構想出替換性態樣而不背離本文中的本發明概念的範疇。另外,環境中眾所周知的元素可不被詳細描述或可被省去以免湮沒本文中的本發明教示的相關細節。
措辭「示例性」在本文中用於意指「用作示例、實例,或說明」。本文中描述為「示例性」的任何態樣不必被解釋為優於或勝過其他態樣。類似地,術語「本發明的諸態樣」並不要求本發明的所有態樣皆包括所論述的特徵、優點或操作模式。
本文所用的術語是僅出於描述特定態樣的目的,而不意在限制本發明的諸態樣。如本文中所使用的,單數形式的「一」、「某」和「該」意欲亦包括複數形式, 除非上下文另外明確指示。將進一步理解,術語「包括」、「具有」、「包含」及/或「含有」在本文中使用時指明所陳述的特徵、整數、步驟、操作、元素,及/或元件的存在,但並不排除一或多個其他特徵、整數、步驟、操作、元素、元件及/或其群組的存在或添加。
此外,許多態樣以由例如計算設備的元件執行的動作序列的形式來描述。將認識到,本文中所描述的各種動作能由專用電路(例如,特殊應用積體電路(ASIC))、由正被一或多個處理器執行的程式指令,或由該兩者的組合來執行。另外,本文中所描述的該等動作序列可被認為是完全體現在任何形式的電腦可讀取儲存媒體內,該電腦可讀取儲存媒體內儲存有一經執行就將使相關聯的處理器執行本文所描述的功能性的相應電腦指令集。由此,本發明的各個態樣可以用數種不同的形式來體現,所有該等形式皆已被構想落在所主張保護的標的的範疇內。另外,對於本文中描述的每一態樣,任何此類態樣的對應形式可在本文中被描述為例如「被配置成執行所描述的動作的邏輯」。
就此而言,圖1圖示根據本案的某些態樣的被配置成減少由於位址轉譯未命中而引起的流水線停頓的計算設備100的方塊圖。該計算設備包括耦合至記憶體管理單元(MMU)120的中央處理單元(CPU)110。CPU 110進一步包括耦合至轉譯後備緩衝器(TLB)114和TLB未命中佇列116兩者的載入/儲存流水線112。TLB 114和TLB未命中佇列116彼此耦合,並耦合至MMU 120。MMU 120可被耦合至主記憶體系統(未圖示),並可被配置成執行頁表遍歷以便將位址轉譯提供回TLB 114和TLB未命中佇列116,如將在本文中進一步描述的。
在操作期間,CPU 110可能會遇到其可以分派到載入/儲存流水線112的記憶體存取指令111(亦即,載入或儲存指令)。為了執行記憶體存取指令111,載入/儲存流水線112可以從TLB 114請求記憶體存取指令111的位址轉譯。若TLB 114已經具有記憶體存取指令111的位址轉譯,則TLB 114可以將該轉譯提供回載入/儲存流水線112,並且可以繼續執行記憶體存取指令111。然而,若TLB 114不具有記憶體存取指令111的位址轉譯,則TLB 114必須從MMU 120請求轉譯,該MMU 120執行頁表遍歷以決定該轉譯。頁表遍歷可能涉及多個循環,並且在此期間記憶體存取指令111無法繼續執行。然而,可能存在等待從CPU 110分派到載入/儲存流水線112的其他後續記憶體存取指令。
為了在等待與已在TLB 114中未命中的記憶體存取指令111相關聯的位址轉譯時允許該等後續記憶體存取指令存取載入/儲存流水線112,記憶體存取指令111暫時被從載入/儲存流水線112中移除並被儲存在TLB未命中佇列116的條目中。TLB未命中佇列116包括複數個條目,每個條目可儲存與至少一條記憶體存取指 令(例如,記憶體存取指令111)相關聯的資訊。TLB未命中佇列116可在統一佇列中儲存載入和儲存指令兩者,或者可維護對載入和儲存指令執行基本相似的未命中佇列功能的單獨結構。
無論是實現為統一佇列還是單獨的載入和儲存TLB未命中佇列,TLB未命中佇列116均可追蹤儲存在該佇列中的特定記憶體存取指令是否需要將對位址轉譯的請求提交給MMU 120,並且可追蹤是否已從MMU 120接收到針對該條目的轉譯。取決於TLB未命中佇列116在何處以及如何被配置成將所儲存的記憶體存取指令(諸如記憶體存取指令111)重新引入載入/儲存流水線112,TLB未命中佇列116可進一步儲存與每個所儲存的記憶體存取指令相關聯的危險資訊(若所儲存的記憶體存取指令將在執行危險檢查之後的階段被重新插入到載入/儲存流水線112中)。
熟習此項技術者將認識到,某些種類的指令可能不適合被放置在TLB未命中佇列116中,並且在此類指令的情形中,流水線可停頓。具體而言,強制具體次序的指令可不被放入TLB未命中佇列116中(因為如此做可能允許較年輕的指令向前移動,此舉在定義上是不被准許的)。同樣地,強制具體次序的其他指令(諸如屏障指令)可不被放置在TLB未命中佇列116中,以便避免鎖死場景。
此外,若記憶體存取指令在TLB 114中未命中,但已知與該記憶體存取指令相關聯的轉譯已經被請求並且將在相對較短的循環次數內可用,則停頓流水線達該循環次數而不是使用來自TLB未命中佇列116的另一個條目可能更有益。例如,可以對閾值循環次數進行程式設計,並且若轉譯將在該循環次數內可用,則計算設備100可以停頓並等待轉譯,而不是在TLB未命中佇列116中儲存記憶體存取指令。決定閾值可取決於許多因素,諸如轉譯請求的等待時間、流水線和TLB的架構、TLB未命中佇列116的大小和(諸)流水線重新進入策略,以及其他相關因素。或者,代替使載入/儲存流水線112中就緒的記憶體存取指令停頓,該記憶體存取指令可如前述作為停頓載入/儲存流水線112達某個循環次數的替換或附加而被重新引入到載入/儲存流水線112中。
就此而言,圖2圖示根據本案的某些態樣的示例性TLB未命中佇列202的詳細示圖200。TLB未命中佇列202包括包含複數個條目211a-d的儲存結構210。條目211a-d中的每一者包括指令欄位212、「需要請求」欄位214和「具有轉譯」欄位216。指令欄位212可被用於儲存具體的記憶體存取指令(諸如參照圖1描述的記憶體存取指令111),並且亦可被用作索引以決定已經請求轉譯的相關記憶體頁。「需要請求」欄位214儲存與該條目相關聯的記憶體存取指令是否需要提交對位址轉譯的請求,或對相關記憶體頁的位址轉譯請求是否已提交的指 示符。例如,此舉可在兩條記憶體存取指令皆在TLB 114中未命中並且皆以相同記憶體頁為目標時發生。兩個記憶體存取指令中的第一指令將被放置在TLB未命中佇列202中,並將觸發MMU 120中的頁表遍歷。第二記憶體存取指令將被儲存在TLB未命中佇列202中,但是TLB未命中佇列202可被配置成將第二記憶體存取指令與當前儲存在TLB未命中佇列中且具有待決位址轉譯請求的任何其他記憶體存取指令(亦即TLB未命中佇列中的活躍條目)進行比較,並可設置「需要請求」欄位214以指示在第二記憶體存取指令以已運行位址轉譯請求的頁面為目標的情況下不應產生任何相關聯的位址轉譯請求。「具有轉譯」欄位216指示是否已經接收到針對特定條目的轉譯。
熟習此項技術者將認識到,是將TLB未命中佇列實現為統一的結構還是單獨的載入/儲存結構,(諸)佇列包含多少個條目,(諸)佇列在何處將指令重新引入流水線(載入、儲存或經組合的載入/儲存),並且因此要使用多少儲存空間來儲存與佇列中儲存的指令相關的資料(例如,「需要請求」、「具有轉譯」、危險資訊等)全是設計選擇的問題,並且在本案的教示的範疇內。為此,圖3圖示根據一個態樣的與載入流水線和儲存流水線相關聯的TLB未命中佇列的實現300的詳細示圖。
所圖示的實現300具有單獨的載入流水線302和儲存流水線304,其各自具有四個所圖示的階段 (針對載入流水線302的階段LD1 310、階段LD2 312、階段LD3 314和階段LD4 316;針對儲存流水線304的階段ST1 320、階段ST2 322、階段ST3 324和階段ST4 326)。載入流水線302和儲存流水線304耦合至共用TLB 308。載入流水線302與載入TLB未命中佇列318相關聯,該載入TLB未命中佇列318被配置成在載入流水線302的LD1階段310處重新插入指令。儲存流水線304與儲存TLB未命中佇列328相關聯,該儲存TLB未命中佇列328被配置成在儲存流水線304的ST3階段324處重新插入指令。載入TLB未命中佇列318和儲存TLB未命中佇列328耦合在一起,以使得能夠偵測和抑制冗餘頁面轉譯請求,如先前關於圖3所論述的(亦即,需要與已經向更高級別的TLB或MMU發出頁面轉譯請求的儲存指令380相同的頁面轉譯的載入指令370將不會發出其自己的獨立轉譯請求,反之亦然)。
在所圖示的態樣,載入TLB未命中佇列318可對應於圖2的TLB未命中佇列202,並且可包含各自儲存指令、「需要請求」欄位和「具有轉譯」欄位的4個條目。因為載入TLB未命中佇列318不追蹤與條目相關聯的危險,所以載入TLB未命中佇列318可以在指令流過載入流水線302時在將針對危險對彼等指令進行重新檢查的階段處將彼等指令重新引入到載入流水線302中。在所圖示的態樣,危險檢查在LD1階段310和LD2階段312中被執行,因此載入TLB未命中佇列318在LD1階段310之前 將指令重新引入到載入流水線302中。相反,儲存TLB未命中佇列328可僅包含單個條目,但是因為儲存TLB未命中佇列328具有較少條目,所以儲存TLB未命中佇列328可包含與載入TLB未命中佇列318相同的資訊,並且可附加地包含完整的危險檢查資訊,以允許儲存在儲存TLB未命中佇列328中的指令在等待相關聯轉譯(亦即,來自較高級別的TLB或來自頁表遍歷的相關聯轉譯)時參與危險檢查。因為儲存TLB未命中佇列328針對儲存在其中的指令實現了完整的危險檢查,所以儲存TLB未命中佇列328可以在指令被從流水線移除的相同階段處(在所說明的實例中,在ST3階段324中)將該指令重新引入到儲存流水線304中。
熟習此項技術者將認識到,在載入TLB未命中佇列318和儲存TLB未命中佇列328中的每一者中儲存多少條目和多少資訊的選擇是設計選擇,並且可取決於諸如以下因素:與儲存指令和資訊相關聯的實體結構所消耗的面積、與載入指令和儲存指令相關聯的相對頻率和等待時間懲罰。此外,針對指令的重入點的選擇可取決於類似因素。另外,具有多個載入、多個儲存或多個經組合的載入/儲存流水線的實現是可能的,並且只要多個流水線關於重入點和危險檢查和資訊儲存實現類似的辦法,載入或儲存指令就可以重新進入能夠服務該類型指令的任何流水線。
圖4圖示根據本案的某些態樣的減少由於位址轉譯未命中而引起的流水線停頓的方法400的方塊圖。方法400開始於方塊410,從記憶體存取流水線中移除在TLB中未命中的第一記憶體存取指令,以使該流水線可用於其他記憶體存取指令。例如,參照圖1,在記憶體存取指令111在TLB 114中未命中之後,將其從載入/儲存流水線112中移除,以允許後續記憶體存取指令使用該載入/儲存流水線112。
方法400在方塊420中繼續,在等待第一記憶體存取指令的位址轉譯時,在TLB未命中佇列中選擇性地儲存第一記憶體存取指令和相關聯資訊。例如,參照圖1,記憶體存取指令111被儲存在TLB未命中佇列116的條目中。在一些態樣,TLB未命中佇列可對應於圖2的TLB未命中佇列202、圖3的載入TLB未命中佇列318,或圖3的儲存TLB未命中佇列328。
方法400可以在方塊430中進一步繼續,將第一記憶體存取指令重新引入到記憶體存取流水線中。例如,參照圖1,記憶體存取指令111可被重新引入到載入/儲存流水線112中。如關於圖1-圖3所論述的,將第一記憶體存取指令重新引入到流水線中可以以各種方式來完成,所有該等方式皆在本案的教示的範疇內。此外,將第一記憶體存取指令重新引入到流水線中的時序可以變化。在一個態樣,系統可以等待直到相關聯的位址轉譯已經從較高級別的TLB或頁表遍歷返回之後,才將第一記 憶體存取指令重新引入到流水線中。在另一態樣,系統可以追蹤並預期位址轉譯的返回,並且可以將第一記憶體存取指令重新引入到流水線中,使得其將到達在相關聯的位址轉譯之前或與相關聯的位址轉譯併發地執行位址轉譯的流水線階段。
現在將關於圖5論述可以利用本案的各態樣的示例性裝置。圖5圖示計算設備500的示圖,該計算設備500納入如關於圖1、圖2和圖3所描述的且可根據圖4中描述的方法可操作的用於減少由於位址轉譯未命中而引起的流水線停頓的結構。就此而言,系統500包括處理器502,其可以納入圖1的載入/儲存流水線112、TLB 114和TLB未命中佇列116(其可進一步對應於圖2的TLB未命中佇列202以及圖3的實現300的任何元素)。系統500進一步包括經由系統匯流排140耦合至處理器502的主記憶體系統580。主記憶體系統580可以進一步儲存非暫時性電腦可讀取指令,該等指令在由處理器502執行時可以執行圖4的方法400。
圖5亦以虛線圖示可任選區塊,諸如耦合至處理器502的編碼器/解碼器(CODEC)534(例如,音訊及/或語音CODEC);耦合至CODEC 534的揚聲器536和話筒538;及耦合至無線控制器540的無線天線542,該無線控制器540耦合至處理器502。此外,系統502亦圖示耦合至處理器502和顯示器528的顯示器控制器526,以及耦合至處理器502和網路572的有線網路控制 器570。在該等可任選區塊中的一者或多者存在的情形中,在特定態樣,處理器502、顯示器控制器526、記憶體580和無線控制器540可被包括在系統級封裝或晶片上系統設備522中。
相應地,在特定態樣,輸入設備530和電源544被耦合至晶片上系統設備522。此外,在特定態樣,如圖5中所圖示的,在一或多個可任選區塊存在的情形中,顯示器528、輸入設備530、揚聲器536、話筒538、無線天線542和電源544在晶片上系統設備522的外部。然而,顯示器528、輸入設備530、揚聲器536、話筒538、無線天線542和電源544中的每一者可被耦合至晶片上系統設備522的元件,諸如介面或控制器。
應當注意,儘管圖5大體圖示了計算設備,但是處理器502和記憶體580亦可被整合到行動電話、通訊設備、電腦、伺服器、膝上型設備、平板、個人數位助理、音樂播放機、視訊播放機、娛樂單元和機上盒或其他類似設備中。
熟習此項技術者將領會,資訊和信號可使用各種不同技術和技藝中的任何一種來表示。例如,貫穿上文說明始終可能被述及的資料、指令、命令、資訊、信號、位元、符號和碼片可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子,或其任何組合來表示。
此外,熟習此項技術者將領會,結合本文中所揭示的態樣描述的各種說明性邏輯區塊、模組、電路和演 算法步驟可被實現為電子硬體、電腦軟體,或兩者的組合。為清楚地說明硬體與軟體的該可互換性,各種說明性元件、方塊、模組、電路,以及步驟在上文是以其功能性的形式作一般化描述的。此類功能性是被實現為硬體還是軟體取決於具體應用和施加於整體系統的設計約束。技術者可針對每種特定應用以不同方式來實現所描述的功能性,但此類實現決策不應被解讀為致使脫離本發明的範疇。
結合本文所揭示的各態樣描述的方法、序列及/或演算法可直接在硬體中、在由處理器執行的軟體模組中,或在該兩者的組合中體現。軟體模組可常駐在RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、可移除磁碟、CD-ROM或者本領域中所知的任何其他形式的儲存媒體中。示例性儲存媒體耦合到處理器以使得該處理器能從/向該儲存媒體讀寫資訊。或者,儲存媒體可被整合到處理器。
儘管前述揭示展示本發明的說明性態樣,但是應當注意,可對本文作出各種改變和修改而不脫離如由所附請求項限定的本發明的範疇。根據本文中所描述的本發明的各態樣的方法請求項中的功能、步驟及/或動作不一定要以任何特定次序執行。此外,儘管本發明的元素可能是以單數來描述或主張權利的,但是複數亦是已料想了的,除非顯式地聲明了限定於單數。
100:計算設備
110:中央處理單元(CPU)
111:記憶體存取指令
112:載入/儲存流水線
114:轉譯後備緩衝器(TLB)
116:TLB未命中佇列
120:記憶體管理單元(MMU)

Claims (24)

  1. 一種用於減少流水線停頓的裝置,包括:一記憶體存取指令流水線;耦合至該記憶體存取指令流水線的一轉譯後備緩衝器(TLB);及耦合至該TLB和該記憶體存取指令流水線的一TLB未命中佇列;其中該TLB未命中佇列被配置成選擇性地儲存下述兩者:作為一第一記憶體存取指令在該TLB中未命中的一結果而已經從該記憶體存取指令流水線中移除的該第一記憶體存取指令;以及與該第一記憶體存取指令相關聯的資訊。
  2. 根據請求項1之裝置,其中該TLB未命中佇列進一步被配置成:與相關於該第一記憶體存取指令的一位址轉譯的一返回相關聯地將該第一記憶體存取指令重新引入該記憶體存取指令流水線。
  3. 根據請求項1之裝置,其中該TLB未命中佇列進一步被配置成:將與該第一記憶體存取指令相關聯的一記憶體頁和與該TLB未命中佇列的所有活躍條目相關聯的記憶體頁進行比較;及在與該第一記憶體存取指令相關聯的該記憶體頁不 匹配與該TLB未命中佇列的該等活躍條目中的任一條目相關聯的該等記憶體頁的情況下產生一轉譯請求,或者在與該第一記憶體存取指令相關聯的該記憶體頁匹配與該TLB未命中佇列的該等活躍條目中的任一條目相關聯的該等記憶體頁的情況下抑制一轉譯請求。
  4. 根據請求項1之裝置,其中該TLB未命中佇列進一步被配置成:將與該第一記憶體存取指令相關聯的一記憶體頁與預期要接收的位址轉譯進行比較,並且若預期將在一特定循環次數內接收到對應於與該第一記憶體存取指令相關聯的該記憶體頁的該位址轉譯,則抑制在該TLB未命中佇列中儲存該第一記憶體存取指令和相關聯資訊,並使該記憶體存取指令流水線停頓直到接收到該位址轉譯。
  5. 根據請求項1之裝置,其中該等記憶體存取指令包括載入指令和儲存指令。
  6. 根據請求項5之裝置,其中該TLB未命中佇列是被配置成儲存載入指令和儲存指令兩者的一統一TLB未命中佇列。
  7. 根據請求項5之裝置,其中該TLB未命中佇列包括一單獨的被配置成儲存在該TLB中未命中的載入指令和相關聯資訊的載入TLB未命中佇列以及 被配置成儲存在該TLB中未命中的儲存指令和相關聯資訊的一儲存TLB未命中佇列。
  8. 根據請求項7之裝置,其中該載入TLB未命中佇列和該儲存TLB未命中佇列是異構設計。
  9. 根據請求項2之裝置,其中與該第一記憶體存取指令相關聯的該資訊不包括危險偵測資訊,並且其中該TLB未命中佇列進一步被配置成將該第一記憶體存取指令重新引入該記憶體存取指令流水線,使得該記憶體存取指令流水線將如同該第一記憶體存取指令是一新指令一樣對其執行危險偵測。
  10. 根據請求項2之裝置,其中與該第一記憶體存取指令相關聯的該資訊包括危險偵測資訊,並且其中該TLB未命中佇列進一步被配置成將該第一記憶體存取指令重新引入該記憶體存取指令流水線,使得該記憶體存取指令流水線不如同該第一記憶體存取指令是一新指令一樣對其執行危險偵測。
  11. 根據請求項2之裝置,其中該TLB未命中佇列進一步被配置成:比相關於該第一記憶體存取指令的該位址轉譯的該返回提前數個循環而將該第一記憶體存取指令重新引入該記憶體存取指令流水線。
  12. 根據請求項1之裝置,其中該TLB未命中佇列進一步被配置成:與相關於該第一記憶體存取指 令的一位址轉譯的一返回相關聯地將該第一記憶體存取指令重新引入一第二記憶體存取指令流水線。
  13. 根據請求項1之裝置,其中該裝置被整合到一計算設備中。
  14. 根據請求項13之裝置,其中該計算設備進一步被整合到從包括以下各項的群組中選擇的一設備中:一行動電話、一通訊設備、一電腦、一伺服器、一膝上型設備、一平板、一個人數位助理、一音樂播放機、一視訊播放機、一娛樂單元和一機上盒。
  15. 一種用於減少流水線停頓的方法,包括以下步驟:從一記憶體存取指令流水線中移除在一轉譯後備緩衝器(TLB)中未命中的一第一記憶體存取指令,以使該記憶體存取指令流水線可用於其他記憶體存取指令;及在等待該第一記憶體存取指令的一位址轉譯時,在一TLB未命中佇列中選擇性地儲存下述兩者:該第一記憶體存取指令和相關聯資訊,其中該TLB未命中佇列被耦合至該TLB及該記憶體存取指令流水線。
  16. 根據請求項15之方法,其中與同該第一記憶體存取指令相關聯的該位址轉譯的一返回相關聯地將該第一記憶體存取指令重新引入該記憶體存取指令 流水線。
  17. 根據請求項15之方法,進一步包括以下步驟:將與該第一記憶體位址指令相關聯的一記憶體頁和與該TLB未命中佇列的所有活躍條目相關聯的記憶體頁進行比較;及在與該第一記憶體存取指令相關聯的該記憶體頁不匹配與該TLB未命中佇列的該等活躍條目中的任一條目相關聯的該等記憶體頁的情況下產生針對該第一記憶體存取指令的一轉譯請求;或者在與該第一記憶體存取指令相關聯的該記憶體頁匹配與該TLB未命中佇列的該等活躍條目中的任一條目相關聯的該等記憶體頁中的任一記憶體頁的情況下抑制針對該第一記憶體存取指令產生一轉譯請求。
  18. 根據請求項15之方法,進一步包括以下步驟:將與該第一記憶體存取指令相關聯的一記憶體頁與預期要接收的位址轉譯進行比較;並且若預期將在一特定循環次數內接收到對應於與該第一記憶體存取指令相關聯的該記憶體頁的該位址轉譯,則抑制在該TLB未命中佇列中儲存該第一記憶體存取指令和相關聯資訊,並使該記憶體存取指令流水線 停頓直到接收到對應於與該第一記憶體存取指令相關聯的該記憶體頁的該位址轉譯。
  19. 根據請求項16之方法,其中與該第一記憶體存取指令相關聯的該資訊不包括危險偵測資訊,並且其中將該第一記憶體存取指令重新引入該記憶體存取指令流水線在該記憶體存取指令流水線的一階段被執行,使得該記憶體存取指令流水線將如同該第一記憶體存取指令是一新指令一樣在其重新引入之後對其執行危險偵測。
  20. 根據請求項16之方法,其中與該第一記憶體存取指令相關聯的該資訊包括危險偵測資訊,並且其中將該第一記憶體存取指令重新引入該記憶體存取指令流水線在該記憶體存取指令流水線的一階段被執行,使得該記憶體存取指令流水線將不如同該第一記憶體存取指令是一新指令一樣在其重新引入之後對其執行危險偵測。
  21. 根據請求項16之方法,其中將該第一記憶體存取指令重新引入該記憶體存取指令流水線比與該第一記憶體存取指令相關聯的該位址轉譯的該返回提前數個循環來執行。
  22. 根據請求項15之方法,進一步包括以下步驟:與同該第一記憶體存取指令相關聯的該位址轉譯 的一返回相關聯地將該第一記憶體存取指令重新引入一第二記憶體存取指令流水線。
  23. 一種包括指令的非暫時性電腦可讀取媒體,該等指令在由一處理器執行時使得該處理器進行以下操作:從一記憶體存取指令流水線中移除在一轉譯後備緩衝器(TLB)中未命中的一第一記憶體存取指令,以使該記憶體存取指令流水線可用於其他記憶體存取指令;及在等待該第一記憶體存取指令的位址轉譯時,在一TLB未命中佇列中選擇性地儲存下述兩者:該第一記憶體存取指令和相關聯資訊,該TLB未命中佇列被耦合至該TLB及該記憶體存取指令流水線。
  24. 一種用於減少流水線停頓的裝置,包括:用於執行記憶體存取指令的構件;耦合至該用於執行記憶體存取指令的構件的用於對位址轉譯進行快取的構件;及耦合至該用於對位址轉譯進行快取的構件和該用於執行記憶體存取指令的構件的用於儲存在該用於對位址轉譯進行快取的構件中未命中的指令的構件;其中該用於儲存未命中的指令的構件被配置成選擇性地儲存下述兩者: 作為一第一記憶體存取指令在該用於對位址轉譯進行快取的構件中未命中的一結果而已經從該用於執行記憶體存取指令的構件中移除的該第一記憶體存取指令;以及與該第一記憶體存取指令相關聯的資訊。
TW108130611A 2018-08-27 2019-08-27 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體 TWI805831B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/113,141 US11061822B2 (en) 2018-08-27 2018-08-27 Method, apparatus, and system for reducing pipeline stalls due to address translation misses
US16/113,141 2018-08-27

Publications (2)

Publication Number Publication Date
TW202018516A TW202018516A (zh) 2020-05-16
TWI805831B true TWI805831B (zh) 2023-06-21

Family

ID=67902628

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108130611A TWI805831B (zh) 2018-08-27 2019-08-27 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體

Country Status (5)

Country Link
US (1) US11061822B2 (zh)
EP (1) EP3844624B1 (zh)
CN (1) CN112639749A (zh)
TW (1) TWI805831B (zh)
WO (1) WO2020046844A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11580031B2 (en) * 2019-07-31 2023-02-14 Intel Corporation Hardware for split data translation lookaside buffers
CN117453435B (zh) * 2023-12-20 2024-03-15 北京开源芯片研究院 缓存数据读取方法、装置、设备及存储介质
CN117573573B (zh) * 2024-01-15 2024-04-23 北京开源芯片研究院 缓存请求的处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010034854A1 (en) * 2000-04-19 2001-10-25 Mukherjee Shubhendu S. Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit
US20070174584A1 (en) * 2006-01-20 2007-07-26 Kopec Brian J Translation lookaside buffer manipulation
US20110138149A1 (en) * 2009-12-09 2011-06-09 Sun Microsystems, Inc. Preventing duplicate entries in a non-blocking tlb structure that supports multiple page sizes
TW201824010A (zh) * 2016-12-20 2018-07-01 日商索尼互動娛樂股份有限公司 資訊處理裝置及記憶體存取方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7406613B2 (en) * 2004-12-02 2008-07-29 Qualcomm Incorporated Translation lookaside buffer (TLB) suppression for intra-page program counter relative or absolute address branch instructions
US8782374B2 (en) 2008-12-02 2014-07-15 Intel Corporation Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor
US8386748B2 (en) 2009-10-29 2013-02-26 Apple Inc. Address translation unit with multiple virtual queues
US20120173843A1 (en) * 2011-01-04 2012-07-05 Kamdar Chetan C Translation look-aside buffer including hazard state
GB2542771B (en) * 2015-09-25 2020-07-08 Advanced Risc Mach Ltd Hazard Checking

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010034854A1 (en) * 2000-04-19 2001-10-25 Mukherjee Shubhendu S. Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit
US20070174584A1 (en) * 2006-01-20 2007-07-26 Kopec Brian J Translation lookaside buffer manipulation
US20110138149A1 (en) * 2009-12-09 2011-06-09 Sun Microsystems, Inc. Preventing duplicate entries in a non-blocking tlb structure that supports multiple page sizes
TW201824010A (zh) * 2016-12-20 2018-07-01 日商索尼互動娛樂股份有限公司 資訊處理裝置及記憶體存取方法

Also Published As

Publication number Publication date
CN112639749A (zh) 2021-04-09
US11061822B2 (en) 2021-07-13
TW202018516A (zh) 2020-05-16
EP3844624B1 (en) 2023-07-26
EP3844624A1 (en) 2021-07-07
WO2020046844A1 (en) 2020-03-05
US20200065260A1 (en) 2020-02-27
EP3844624C0 (en) 2023-07-26

Similar Documents

Publication Publication Date Title
TWI545435B (zh) 於階層式快取處理器中之協調預取
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
CN106537362B (zh) 数据处理装置和在数据处理装置中处理地址转换的方法
JP6279508B2 (ja) 事前充填能力を有するメモリ管理ユニット
US8667225B2 (en) Store aware prefetching for a datastream
TWI805831B (zh) 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體
TWI620123B (zh) 用以管理來自指令快取之指令快取預取的處理器、電腦系統、電腦程式產品及方法
US9047198B2 (en) Prefetching across page boundaries in hierarchically cached processors
US9418018B2 (en) Efficient fill-buffer data forwarding supporting high frequencies
US9489203B2 (en) Pre-fetching instructions using predicted branch target addresses
US20120079202A1 (en) Multistream prefetch buffer
US20090006777A1 (en) Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor
US20090031088A1 (en) Method and apparatus for handling excess data during memory access
US11157285B2 (en) Dynamic modification of instructions that do not modify the architectural state of a processor
US20200065006A1 (en) Method, apparatus, and system for prefetching exclusive cache coherence state for store instructions
TW202311938A (zh) 用於管線化控制的設備以及方法
US20120151150A1 (en) Cache Line Fetching and Fetch Ahead Control Using Post Modification Information