TW201710908A - 用於記憶體管理單元之多執行緒轉換及異動重新排序 - Google Patents

用於記憶體管理單元之多執行緒轉換及異動重新排序 Download PDF

Info

Publication number
TW201710908A
TW201710908A TW105115829A TW105115829A TW201710908A TW 201710908 A TW201710908 A TW 201710908A TW 105115829 A TW105115829 A TW 105115829A TW 105115829 A TW105115829 A TW 105115829A TW 201710908 A TW201710908 A TW 201710908A
Authority
TW
Taiwan
Prior art keywords
translation
requests
address translation
address
scheduler
Prior art date
Application number
TW105115829A
Other languages
English (en)
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 TW201710908A publication Critical patent/TW201710908A/zh

Links

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/1024Latency reduction
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/655Same page detection
    • 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/682Multiprocessor TLB consistency
    • 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/683Invalidation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

系統及方法係關於在一多執行緒記憶體管理單元(MMU)中執行位址轉譯。兩個或兩個以上位址轉譯請求可由該多執行緒MMU接收且被並行地處理以擷取至一系統記憶體之位址的位址轉譯。若該等位址轉譯存在於該多執行緒MMU之一轉譯快取記憶體中,則可自該轉譯快取記憶體接收該等位址轉譯且將其排程以用於使用該等經轉譯位址存取該系統記憶體。若該轉譯快取記憶體中存在一遺漏,則可在兩個或兩個以上轉譯表查核行程中並行地排程兩個或兩個以上位址轉譯請求。

Description

用於記憶體管理單元之多執行緒轉換及異動重新排序 根據35 U.S.C.§119之優先權主張
本專利申請案主張2015年5月29日申請之題為「用於記憶體管理單元之多執行緒轉譯及異動重新排序(MULTI-THREADED TRANSLATION AND TRANSACTION RE-ORDERING FOR MEMORY MANAGEMENT UNITS)」之臨時申請案第62/168,712號的優先權,且該臨時申請案讓與給本受讓人且特此以引用之方式明確地併入本文中。
所揭示之態樣係關於記憶體管理單元(MMU),且更特定而言,例示性態樣係關於經組態以並行地處置多個轉譯之多執行緒MMU。
記憶體管理單元(MMU)經組態以針對處理器或周邊裝置(通常被稱作上游用戶端或裝置)執行位址轉譯(及其他記憶體管理功能)。舉例而言,MMU可包含如此項技術中已知的用以執行虛擬至實體記憶體位址轉譯的轉譯後備緩衝器(TLB)。
參看圖1,習知MMU 104自上游用戶端裝置102接收用戶端輸入異動116(例如,對讀取或寫入位址的請求),且若在MMU 104中存在針對用戶端輸入異動116之轉譯,則MMU 104執行位址轉譯。使用位址轉譯資訊將用戶端輸入異動請求116中之位址轉譯成用於用戶端輸 出異動120之位址。
圖1中更詳細地展示MMU 104。MMU 104可包括轉譯快取記憶體108,其儲存先前完成(或部分完成)的轉譯之結果。藉由使用轉譯表查核器(TTW)114執行被稱作「轉譯表查核行程」之程序而解析無法使用儲存於轉譯快取記憶體108中之資訊來轉譯的用戶端輸入異動116。使用對應於特定用戶端輸入異動116之特定輸入項(展示為TTW0 112)以針對轉譯請求執行轉譯表查核行程。在一些情況下,可經由匯流排120將轉譯表查核行程請求自匯流排124發送至系統記憶體106,其中,回應122可包括自系統記憶體106(上游裝置)接收且用於填充轉譯快取記憶體108之對應轉譯資訊。在一些情況下,可在匯流排120上發送用戶端輸出異動,其中,回應122可涉及用戶端輸出異動且被發送至上游用戶端裝置102。
因為眾多用戶端輸入異動116可在可以上述方式獲得服務之前被接收,所以用戶端輸入異動116在可存取轉譯快取記憶體108之前被置放於異動佇列110中。串列地使異動佇列110之頂部處的用戶端輸入異動116存取轉譯快取記憶體108。若在轉譯快取記憶體108中未發現針對異動佇列110之頂部處之用戶端輸入異動116的轉譯,則強制異動佇列110中之所有其他異動等待,直至使用TTW 114及對系統記憶體106之存取自轉譯表查核行程程序獲得異動佇列110之頂部處之用戶端輸入異動116的轉譯結果為止。在獲得針對異動佇列110之頂部處之用戶端輸入異動116之轉譯的時間期間,MMU 104停止,且因此MMU 104之效能降級。
因此,此項技術中需要克服包含一次僅能夠服務一個轉譯表查核行程之單一轉譯表查核器(例如,TTW 114)及一次僅能夠處理一個異動之異動佇列(例如,異動佇列110)的習知MMU之前述缺陷。
例示性態樣係關於在多執行緒記憶體管理單元(MMU)中執行位址轉譯的系統及方法。兩個或兩個以上位址轉譯請求可由多執行緒MMU接收且被並行地處理以在位址轉譯存在於多執行緒MMU之轉譯快取記憶體中的情況下擷取位址轉譯或針對在轉譯快取記憶體中遺漏之位址轉譯請求並行地執行轉譯表查核行程。
例示性多執行緒MMU可經組態以並行地執行多個用戶端請求之轉譯及異動重新排序。因此,可針對由例示性多執行緒MMU接收的多個用戶端輸入異動執行同時多執行緒轉譯。例示性多執行緒MMU亦經組態以執行允許新近轉譯之異動略過正在等待轉譯之較舊異動的異動重新排序(例如,從而避免習知MMU中之僅服務異動佇列之頂部處之異動的限制)。
在一些態樣中,例示性多執行緒MMU經組態以執行轉譯請求之「預篩選」,以便避免重複對經提供以輔助並行轉譯多個執行緒之多個轉譯表查核器的請求。在一些態樣中,亦執行轉譯結果之「後篩選」,以便避免重複轉譯快取記憶體填入。在其他態樣中,使用例示性技術以藉由減少針對多個請求之轉譯表存取中的重複或冗餘來減少轉譯表查核行程之頻寬消耗。
因此,一例示性態樣係針對一種設備,其包含經組態以自一或多個上游裝置接收兩個或兩個以上位址轉譯請求之一多執行緒記憶體管理單元(MMU)。該多執行緒MMU經進一步組態以並行地處理該兩個或兩個以上位址轉譯請求中之至少兩者,以獲得一系統記憶體之對應經轉譯位址。
另一例示性態樣係針對一種執行位址轉譯之方法,該方法包含:接收兩個或兩個以上位址轉譯請求,及在一多執行緒記憶體管理單元(MMU)中針對該兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上位址轉譯,以獲得一系統記憶體之對應經轉譯位址。
另一例示性態樣係針對一種設備,其包含:用於接收兩個或兩個以上位址轉譯請求之構件;及用於針對該兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上位址轉譯以獲得用於儲存之一構件之對應經轉譯位址的構件。
另一例示性態樣係針對一種非暫時性電腦可讀儲存媒體,其包含程式碼,該程式碼在由一處理器執行時,致使該處理器針對位址轉譯執行操作,其中該非暫時性電腦可讀儲存媒體包含:用於接收兩個或兩個以上位址轉譯請求之程式碼;及用於針對該兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上位址轉譯以獲得一系統記憶體之對應經轉譯位址的程式碼。
102‧‧‧上游用戶端裝置
104‧‧‧記憶體管理單元
106‧‧‧系統記憶體
108‧‧‧快取記憶體
110‧‧‧異動佇列
112‧‧‧轉譯表查核器
114‧‧‧轉譯表查核器
116‧‧‧用戶端輸入異動
120‧‧‧用戶端輸出異動/匯流排
122‧‧‧回應
124‧‧‧匯流排
200‧‧‧處理系統/系統單晶片裝置
202‧‧‧上游用戶端裝置
204‧‧‧多執行緒記憶體管理單元
206‧‧‧系統記憶體
208‧‧‧轉譯快取記憶體
209‧‧‧轉譯請求
210‧‧‧主級排程器
211‧‧‧轉譯結果
212a‧‧‧轉譯表查核器
212b‧‧‧轉譯表查核器
212n‧‧‧轉譯表查核器
214‧‧‧轉譯表查核器
216‧‧‧用戶端輸入異動
220‧‧‧次級排程器
222‧‧‧預取引擎
224‧‧‧預篩選器
226‧‧‧後篩選器
228‧‧‧轉譯請求
230‧‧‧轉譯請求
232‧‧‧轉譯結果
234‧‧‧轉譯結果
236‧‧‧轉譯請求
238‧‧‧轉譯結果
240‧‧‧轉譯結果
242‧‧‧用戶端輸出異動
244‧‧‧回應
302‧‧‧仲裁單元
304a‧‧‧槽
304n‧‧‧槽
308‧‧‧記憶體轉譯排程
402‧‧‧仲裁區塊
404a‧‧‧槽
404m‧‧‧槽
406‧‧‧排程區塊
500‧‧‧處理系統
504‧‧‧多執行緒記憶體管理單元
509‧‧‧轉譯請求
510‧‧‧主排程器
511‧‧‧轉譯結果
524‧‧‧預篩選區塊
526‧‧‧後篩選區塊
528‧‧‧請求
536‧‧‧轉譯請求
602‧‧‧轉譯表存取篩選器
606‧‧‧未完成TTW請求狀態區塊
608‧‧‧轉譯結果快取記憶體
612a‧‧‧暫存器/儲存構件
612b‧‧‧暫存器/儲存構件
612n‧‧‧暫存器/儲存構件
702a‧‧‧表或頁面L1
702b‧‧‧表或頁面L2
702c‧‧‧表或頁面L3
704‧‧‧表
706‧‧‧表
1100‧‧‧無線裝置
1126‧‧‧顯示控制器
1128‧‧‧顯示器
1130‧‧‧輸入裝置
1134‧‧‧編碼器/解碼器
1136‧‧‧揚聲器
1138‧‧‧麥克風
1140‧‧‧無線控制器
1142‧‧‧無線天線
1144‧‧‧電源供應器
呈現附圖以輔助描述本發明之態樣,且提供該等附圖僅僅為了說明該等態樣而非對其加以限制。
圖1說明包含習知MMU之系統。
圖2說明包含多執行緒MMU之例示性系統。
圖3A至圖3B說明圖2之多執行緒MMU之主級排程器。
圖4A至圖4B說明圖2之多執行緒MMU之次級排程器。
圖5說明包含多執行緒MMU之另一例示性系統。
圖6至圖7說明與轉譯表存取篩選器相關之態樣。
圖8至圖9說明使用轉譯表存取篩選器之方法的流程圖。
圖10為使用多執行緒MMU處理轉譯請求之方法的流程圖。
圖11說明可有利地使用本發明之態樣的例示性無線裝置。
本發明之態樣揭示於以下描述及針對本發明之特定態樣的相關圖式中。可在不脫離本發明之範疇的情況下設計出替代性態樣。另外,將不詳細描述或將省略本發明之熟知元件以免混淆本發明之相關 細節。
詞語「例示性」在本文中用以意謂「充當實例、例子或說明」。本文中描述為「例示性」之任何態樣未必被解釋為比其他態樣更佳或更有利。同樣地,術語「本發明之態樣」並不要求本發明之所有態樣皆包括所論述之特徵、優點或操作模式。
本文中所使用之術語僅係出於描述特定態樣之目的,且並不意欲限制本發明之態樣。如本文中所使用,除非上下文另有清晰指示,否則單數形式「一」及「該」亦意欲包括複數形式。將進一步理解,術語「包含」或「包括」在本文中使用時指定所陳述之特徵、整體、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群組之存在或添加。
此外,依據由(例如)計算裝置之元件執行之動作的序列描述了許多態樣。將認識到,本文中所描述之各種動作可由特定電路(例如,特殊應用積體電路(ASIC))、由正由一或多個處理器執行之程式指令或由兩者之組合來執行。另外,可認為本文中所描述之此等動作序列完全體現於任何形式之電腦可讀儲存媒體內,該電腦可讀儲存媒體中已儲存有一組對應電腦指令,該等電腦指令在被執行時將致使相關聯處理器執行本文中所描述之功能性。因此,本發明之各種態樣可以數個不同形式體現,預期所有形式均在所主張標的物之範疇內。另外,對於本文所描述之態樣中之每一者,任何此等態樣之對應形式可在本文中被描述為(例如)「經組態以執行所描述動作之邏輯」。
本發明之例示性態樣涉及經組態以並行地執行兩個或兩個以上用戶端請求之轉譯及異動重新排序的多執行緒MMU。因此,可針對由例示性多執行緒MMU接收之多個用戶端輸入異動執行同時多執行緒轉譯。例示性多執行緒MMU亦可執行允許轉譯請求之新近接收異動略過正在等待轉譯之較舊異動的異動重新排序。
在一些態樣中,例示性多執行緒MMU可執行轉譯請求之「預篩選」,以便避免重複對經提供以輔助並行地轉譯多個執行緒之多個轉譯表查核器的請求。在一些態樣中,亦可執行轉譯結果之「後篩選」,以避免重複轉譯快取記憶體填入。在其他態樣中,可使用例示性技術以藉由減少針對多個請求之轉譯表存取中的重複或冗餘來減少轉譯表查核行程之頻寬消耗。
現參看圖2,說明處理系統200,其包含被組態為根據例示性態樣之多執行緒MMU的MMU 204。一般而言,MMU 204可自下游裝置202接收用戶端輸入異動216。如本文中所使用,術語「異動」可包括對讀取/寫入系統記憶體206之請求,且在一些情況下,亦包括對該等請求之回應。舉例而言,用戶端輸入異動216可包括對讀取/寫入系統記憶體206之請求,或將位址轉譯成系統記憶體206之指定位址的位址轉譯請求。下游裝置202可不為單一裝置,但可包含包括任何通用或專用處理器之一或多個上游裝置,該等處理器諸如通用處理單元(GPU)、中央處理單元(CPU)、數字信號處理器(DSP)等。此外,在一些情況下,下游裝置202亦可包含能夠並行地處理兩個或兩個以上處理執行緒之多執行緒處理器。因而,一或多個上游裝置202可經組態以產生對系統記憶體206之位址的位址轉譯請求,其中該等位址轉譯請求可由MMU 204作為用戶端輸入異動216接收。
為了支援多執行緒轉譯(亦即,同時處理多個異動)及異動重新排序,例示性態樣係針對可包括一或多個多執行緒排程器之多執行緒MMU。如圖2中所展示,MMU 204包括兩個排程器:主級排程器210(可為多執行緒的)及次級排程器220(亦可為多執行緒的),將在以下部分中詳細描述該等排程器。
主級排程器210接收用戶端輸入異動216,且按可相同或不同於接收用戶端輸入異動216之次序來排程轉譯請求。在自轉譯快取記憶 體208接收任一個或多個轉譯結果211之前,主級排程器210可將多個轉譯請求209發出至轉譯快取記憶體208以供轉譯。在此意義上,主級排程器210可使多個轉譯請求同時操作。因此,主級排程器210可在本發明中被稱為「多執行緒」。主級排程器210可按可相同或不同於接收用戶端輸入異動216之次序將用戶端輸出異動242發送(一旦其已由轉譯快取記憶體208轉譯)至系統記憶體206。因此,主級排程器210可經組態以無序地將兩個或兩個以上轉譯請求發出至轉譯快取記憶體208。
次級排程器220接收轉譯請求230(例如,其自主級排程器210被發送至轉譯快取記憶體208,但在轉譯快取記憶體208中遺漏),或自預取引擎222接收轉譯請求228。預取引擎222可為單獨處理模組,其經組態以在產生對異動之需求之前預取異動(例如,若在程式中辨識到迴圈,則可已知將存在遵循預定型樣之重複請求,且因此,可事先提取未來請求以便避免可在產生對請求之需求之後提取請求時引發的任何潛時)。次級排程器220可按相同或不同於接收轉譯請求228、230之次序發出轉譯請求236。在接收任一個或多個轉譯結果238、240之前,次級排程器220亦可發出多個轉譯請求236。在此意義上,次級排程器220亦可使多個轉譯請求同時操作,且因此在本發明中之一些態樣中亦被稱為「多執行緒」。
在一個態樣中,次級排程器220經組態以藉由將請求236發送至轉譯表查核器(TTW)214而針對在轉譯快取記憶體208中遺漏之請求230或來自預取引擎222之請求228(或「預取位址轉譯請求」)排程轉譯表查核行程(按相同或不同於接收之次序)。就此而言,次級排程器220包括預篩選器224及後篩選器226,其功能將在下文簡要介紹且在稍後部分中解釋。
無關或冗餘請求236有可能被提供至TTW 214。預篩選器224經組 態以減少提供至TTW 214之無關或冗餘請求236。另一方面,後篩選器226經組態以減少無關或冗餘轉譯快取記憶體填入或轉譯結果238、240。
亦如自圖2所觀測到的,TTW 214包含兩個或兩個以上獨立轉譯表查核器(TTW0至TTWn-1,分別表示為TTW 212a至212n)。TTW 212a至TTW 212n可獨立且同時操作以針對多個請求236並行地執行轉譯表查核行程。因此,TTW 214亦可在本發明中被稱為「多執行緒」。
現參看圖3A,說明主級排程器210之展開圖。如所展示,主級排程器210可包括在本文中被稱為主級排程器槽之一或多個排程器輸入項。在圖3A中,展示N個主級排程器槽0至N-1,且其被表示為槽304a至304n。以下參看圖3B展示且進一步詳細描述槽304a至304n。先前所描述之用戶端輸入異動216亦展示為至主級排程器210之輸入。由主級排程器210接收之每一用戶端輸入異動216可包括位址資訊,但有可能針對一些用戶端輸入異動216不執行位址轉譯。亦展示由主級排程器210接收之對應於由主級排程器210發出的轉譯請求209的轉譯結果211。主級排程器210將針對請求或指定了位址轉譯之所有用戶端輸入異動216的轉譯請求209發送至轉譯快取記憶體208,轉譯請求209可自轉譯快取記憶體208被傳送至次級排程器220(在轉譯快取記憶體208中存在遺漏之情況下)。主級排程器210將用戶端輸出異動242輸出至記憶體206,其中輸出異動242對應於已由MMU 204處理之用戶端輸入異動216。因此,輸出異動242對應於已被轉譯之用戶端輸入異動216或不請求或執行位址轉譯之用戶端輸入異動216。
現結合參看圖3A至圖3B,在主級排程器210接收一或多個用戶端輸入異動216時,主級排程器210經組態以並行地儲存一或多個用戶端輸入異動216且對一或多個用戶端輸入異動216操作。就此而言,在處 理對應位址轉譯請求時,每一用戶端輸入異動216儲存於一或多個槽304a至304n之對應槽中,(例如)直至接收到針對轉譯請求之回應且隨後自主級排程器210移除對應用戶端輸入異動216為止。在判定將不執行轉譯之情況下,則對應轉譯請求之處理亦將被視為已完成,且將自主級排程器210移除對應用戶端輸入異動216。槽304a至304n(例如,對應於圖3B中具體說明之槽0至7)可以可程式化方式分配(例如,基於代理程式之某些分類分配至不同代理程式)或可以固定方式分配以對應於上游用戶端裝置202之特定代理程式。
舉例而言,上游用戶端裝置202可由一或多個代理程式(例如,代理程式A、B等)組成,其中一或多個請求之群組可對應於代理程式。代理程式可按群組或類別來分類。每一分類可基於每一群組/類別之代理程式可發出至主級排程器210之轉譯請求之量的最小及最大限制。如圖3B中所見,可保留一些槽以用於特定代理程式(例如,用於代理程式A之槽0及1,用於代理程式B之槽2及3),且一些槽(例如,槽4至7)可供用於所有代理程式。在以下條件為真時,上游用戶端裝置202之特定代理程式可使其轉譯請求由主級排程器210處理:(1)代理程式具有可用於發出至MMU 204之用戶端輸入異動216(例如,轉譯請求);(2)主級排程器210具有足夠的空閒且可用槽304a至n,以用於滿足對應於所有代理程式之槽304a至304n的最小分配;及(3)主級排程器210當前服務之槽304a至304n的數目少於對於該代理程式允許之槽304a至304n的最大數目。
為了推行或實施以上條件,在主級排程器210中提供仲裁單元302。在用戶端上游裝置202之多個代理程式同時滿足以上三個條件之情況下,仲裁單元302經組態以實施仲裁原則以判定主級排程器210首先接受哪一代理程式之用戶端輸入異動216。就此而言,可由仲裁單元302實施若干類型之仲裁原則,諸如,循環或固定優先級(例如,首 先服務最舊的用戶端輸入異動216)、可程式化優先級(例如,來自代理程式A之請求可經程式化以具有比來自代理程式B之請求更高的優先級)或此項技術中已知的任何其他基於優先級之仲裁原則。
在經過仲裁單元302之後,經判定為適於由主級排程器210處理之用戶端輸入異動216被排入佇列或置放於可用或空槽304a至304n中。儘管未明確地展示,但槽304a至304n中之每一者亦可具有與其相關聯之狀態,其中槽之狀態包含針對被儲存於槽中之用戶端輸入異動216之位址轉譯的狀態。以下狀態可與本發明中之排程器之槽相關聯,但其並非窮盡性的清單,且變化/添加係可能的:(1)「等待轉譯快取記憶體查找」(例如,在待排程轉譯請求209且執行位址轉譯時);(2)「轉譯進行中」(例如,在轉譯請求209已被排程且正等待轉譯結果211時);(3)「由於將不執行轉譯而等待記憶體存取」(例如,在用戶端輸出異動242不指定待執行轉譯但針對記憶體存取排程轉譯時;(4)「轉譯已完成」(例如,在已接收對應轉譯結果211時,此時,轉譯被認為已完成且異動作為用戶端輸出異動242被排程用於記憶體存取)。
因此,置放有用戶端輸入異動216之槽的狀態被更新為以下各項中之一者:「等待轉譯快取記憶體查找」(在待執行位址轉譯之情況下)或「由於將不執行轉譯而等待記憶體存取」(在將不執行位址轉譯之情況下)。
由主級排程器210以上述方式接收且儲存於槽304a至304n中之一者中的每一用戶端輸入異動216最終由MMU 204處理。若用戶端輸入異動216被表示為針對其將執行轉譯之異動,則使用排程演算法排程對應轉譯請求。在此時,將理解,次級排程器220亦具有類似於主級排程器210之槽304a至304n的槽,且將在以下部分中進一步詳細解釋次級排程器220之槽。關於排程轉譯請求,若次級排程器220中有未經 分配或空槽可用且主級排程器210之一或多個槽304a至304n保持狀態被設定成「等待轉譯快取記憶體查找」之用戶端輸入異動216,則將針對用戶端輸入異動216之轉譯請求發出至轉譯快取記憶體208或次級排程器220。
在槽304a至304n中之多個用戶端輸入異動216之狀態被設定為「等待轉譯快取記憶體查找」的情況下,被描繪為主級排程器210之記憶體轉譯排程308的區塊經組態以藉由排程演算法在各自被儲存於槽304a至304n中之一者中的多個用戶端輸入異動216間仲裁。排程演算法可包括仲裁演算法,諸如循環或固定優先級(例如,首先排程之最舊用戶端輸入異動216)、可程式化優先級(例如,基於代理程式之優先級,或與用戶端輸入異動216相關聯的基於優先級之傳訊)或此項技術中已知的其他合適的基於優先級之選擇機制。
當選擇將用戶端輸入異動216作為轉譯請求209發出至轉譯快取記憶體208時,用戶端輸入異動216之對應槽304a至304n被更新為「轉譯進行中」。轉譯快取記憶體208接收一或多個轉譯請求209,且執行快取記憶體查找以檢查轉譯快取記憶體208是否包含對應轉譯。若在轉譯快取記憶體208中存在一或多個命中(hit),亦即,若在轉譯快取記憶體208中存在針對特定轉譯請求209(在本發明中亦被稱作「命中位址轉譯請求」)之對應轉譯,則隨後轉譯快取記憶體208將轉譯結果211轉遞至主級排程器210,且特定轉譯請求209被發送自的對應槽的狀態被更新為「轉譯已完成」。另一方面,若存在一或多個遺漏,且在轉譯快取記憶體208中不存在針對一或多個轉譯請求209(在本發明中亦被稱作「遺漏位址轉譯請求」)之對應轉譯,則存取次級排程器220以將對應一或多個轉譯請求236排程至轉譯表查核器(TTW)214(見圖2)之TTW 212a至212n中的一或多者。當自TTW 214接收轉譯結果238/240時,轉譯結果被轉遞至主級排程器210(經由轉譯結果 232/234轉遞至轉譯快取記憶體208且緊接著經由轉譯結果211轉遞至主級排程器)。
當轉譯快取記憶體208或次級排程器220經由TTW 214完成針對特定轉譯請求209之轉譯且轉譯結果211傳回至主級排程器210時,主級排程器210藉由執行以下動作來處理轉譯結果211:(1)將轉譯結果211儲存於供發出轉譯請求209之對應槽304a至304n中;及(2)將對應槽304a至304n之狀態標記為「轉譯已完成」。在多個轉譯結果211同時可用之情況下,主級排程器210經組態以選擇應首先接收哪一轉譯結果211以供處理。就此而言,TTW 214經組態以基於演算法(諸如,循環或固定優先級(首先處理最舊的轉譯結果211)、可程式化優先級或此項技術中已知的其他基於優先級之選擇機制)在轉譯結果211間仲裁。
因此,主級排程器210可無次序地(OOO)接收轉譯結果211,轉譯結果211可使用上文所論述之仲裁方案來處理。對於狀態指示處理「已完成」之所有槽304a至304n(包括未請求/執行轉譯之槽),使用排程演算法來判定將哪一已完成異動242發出至系統記憶體206。就此而言,排程演算法經設計以確保遵循排序規則,且槽304a至304n中將產生排序危險之任何用戶端輸入異動216不適於被排程至系統記憶體206。在下文部分中解釋用以避免危險之例示性重新排序規則。排程演算法可經設計以選擇被判定為適於發出至系統記憶體206之最高優先級輸出異動242。輸出異動242之優先級可與每一用戶端輸入異動216或為與發出用戶端輸入異動216之代理程式(亦被稱作用戶端下游裝置202之「主控器」)的類型相關聯的優先級(例如,基於服務品質(QoS)量度)相關聯。將輸出異動242發出至系統記憶體206進一步涉及自主級排程器210移除對應用戶端輸入異動216,亦即,自對應用戶端輸入異動216之對應槽304a至304n解除分配該對應用戶端輸入異動216。
現將描述用於避免重新排序危險之可適用重新排序規則。若系統記憶體206為弱有序記憶體,為了避免重新排序危險,則主級排程器210經組態以確保(1)重新排序任何兩個輸出異動242不應產生寫後讀(RAW)危險;(2)重新排序任何兩個輸出異動242不應產生寫後寫(WAW)危險;及(3)重新排序任何兩個輸出異動242不應產生讀後寫(WAR)危險,RAW、WAW及WAR危險在此項技術中已知。
另一方面,若系統記憶體206為強有序或嚴格有序記憶體,為了避免重新排序危險,則主級排程器210經組態以確保重新排序任何兩個輸出異動242不應產生嚴格排序危險。若兩個輸出異動242源自由同一代理程式產生之用戶端輸入異動216且兩個輸出異動242被指定用於嚴格排序,則輸出異動242無法被重新排序。
在一些情況下,以下額外重新排序規則亦可適用。就此而言,主級排程器必須確保重新排序不產生以下危險:(1)重新排序任何兩個輸出異動242不應產生按次序(in-order)危險。若兩個輸出異動242源自由同一代理程式產生之用戶端輸入異動216且代理程式僅能夠按與發出兩個輸出異動242相同之次序接收回應244,則代理程式被認為「指定按次序回應」,且在不實施回應重新排序緩衝器(如此項技術中已知)之情況下,兩個輸出異動242(皆被標記為「按次序」)無法被重新排序。若實施回應重新排序緩衝器,則上文所提及之兩個輸出異動242可被重新排序,且回應重新排序緩衝器經組態以重建構初始次序,使得「指定按次序回應」代理程式按預期次序接收回回應244。
現參看圖4A至圖4B,將詳細解釋次級排程器220。返回參看圖2,在分別自預取引擎222或轉譯快取記憶體208接收轉譯請求228/230時,次級排程器亦經組態以並行地儲存一或多個(例如,M個)轉譯請求228/230且對一或多個轉譯請求228/230操作。類似於主級排程器210之槽304a至304n,由次級排程器220接收之轉譯請求228/230被儲存於 展示為槽0至M-1且表示為槽404a至404m之M個次級排程器槽中的一或多者中,直至自TTW 214接收到轉譯結果238/240為止。
槽404a至404m可基於代理程式(其發起用戶端輸入異動216(如先前所論述))之不同分類以可程式化或固定方式分配至代理程式。同樣,每一分類可基於可自每一群組/類別之代理程式發出至次級排程器220之轉譯請求之量的最小/最大限制。在滿足以下條件時,代理程式適於使其轉譯請求228/230由次級排程器220處理:(1)代理程式具有可用的轉譯請求228/230;(2)次級排程器220具有足夠的可用槽404a至404m以滿足對所有代理程式之最小槽分配;及(3)次級排程器220當前服務之槽404a至404m的數目少於對於請求代理程式允許之槽404a至404m的最大數目。由此,自圖4B所見,可保留一些槽以用於某些代理程式(例如,用於代理程式A之槽0及1,用於代理程式B之槽2及3),且一些槽(例如,槽4至7)可供用於所有代理程式。
在多個代理程式同時滿足以上條件之情況下,仲裁區塊402經組態以實施仲裁原則以判定首先處理哪一轉譯請求228/230。仲裁原則可為循環或固定優先級(例如,首先處理最舊轉譯請求228/230)、可程式化優先級(例如,來自用戶端輸入異動216之轉譯請求230的優先級高於來自預取引擎222之轉譯請求228)或此項技術中已知的其他基於優先級之仲裁原則。
在接收轉譯請求228/230且由仲裁區塊402選擇轉譯請求228/230後,轉譯請求228/230即刻被指派給對應槽404a至404m,且槽(未圖示)之狀態被標記為「等待轉譯」(在轉譯請求228/230不適於預篩選之情況下,如將在下文部分中參考圖2之預篩選區塊224而論述)或「等待X」(在轉譯請求228/230適於預篩選之情況下,且其中X對應於先前轉譯請求236之槽)。
被接收且儲存於槽404a至404m中之每一轉譯請求228/230最終被 發出至TTW 214之TTW 212a至212n中之一者(每一TTW 212a至212n經組態以一次服務一個轉譯表查核行程)。若未經分配之TTW 212a至212n可用於接收轉譯請求228/230且一或多個槽404a至404m保持狀態為「等待轉譯」之轉譯請求228/230,則轉譯請求228/230被發出至TTW 212a至212n。
在被儲存於槽404a至404m中之一個以上轉譯請求228/230具有狀態「等待轉譯」的情況下,排程區塊406經組態以基於排程演算法(諸如,循環或固定優先級(例如,首先排程最舊轉譯請求228/230)、可程式化優先級(例如,基於發起轉譯請求228/230之代理程式的優先級)或此項技術中已知的其他基於優先級之選擇機制)在其間仲裁。
當轉譯請求228/230經排程以被發出至TTW 212a至212n中之一者時,保持轉譯請求228/230之槽404a至404m的狀態被更新為「轉譯進行中」。對應TTW 212a至212n將執行以下動作中的一或多者以處理轉譯請求228/230:(1)諮詢次級轉譯快取記憶體(未圖示);(2)執行轉譯表查核行程以完成轉譯;(3)將來自TTW 212a至212n之結果傳回至能夠儲存完整或部分轉譯之轉譯快取記憶體(例如,轉譯快取記憶體208);或(4)將來自TTW 212a至212n之結果傳回至次級排程器220。
當次級排程器220自TTW 212a至212n接收轉譯結果238/240時,次級排程器220在槽404a至404m中處理轉譯結果238/240且將對應槽標記為「轉譯完成」。在同時傳回一個以上轉譯結果238/240之情況下,TTW 214(例如)基於演算法(諸如,循環或固定優先級(例如,首先處理最舊轉譯結果238/240)、可程式化優先級(例如,基於發起轉譯請求228/230之代理程式的優先級)或此項技術中已知的其他基於優先級之選擇機制)而選擇首先處理哪一結果。
以以下方式傳回或自佇列移除由次級排程器接收之轉譯結果238/240。選擇狀態被標記為「轉譯完成」之槽404a至404m,且其中 所含之轉譯結果238/240(經由轉譯快取記憶體208)傳回至主級排程器210。對於包含對應於預取請求(轉譯請求228)之轉譯結果238/240的槽404a至404n,不採取進一步動作,因為不針對預取請求產生輸出異動242,且因此槽404a至404m可被解除分配(釋放)。
若準備同時傳回一個以上轉譯結果238/240,則來自狀態為「轉譯完成」之所有槽404a至404m的轉譯結果238/240可經由仲裁程序來發送。仲裁程序可包括循環或固定優先級(例如,首先傳回最舊轉譯結果238/240)、可程式化優先級(例如,基於發起對應轉譯請求230之代理程式的優先級)或此項技術中已知的其他基於優先級之選擇機制。一旦轉譯結果238/240傳回至發起轉譯請求230之代理程式,對應槽404a至404m即被解除分配(釋放)。
如上文所提及,兩個或兩個以上TTW 212a至212n可同時操作。每一TTW 212a至212n可執行必要的轉譯快取記憶體查找及記憶體存取(轉譯表查核行程)以轉譯針對所接收轉譯請求236之位址。每一TTW 212a至212n可發出快取記憶體填入請求且將轉譯結果238/240轉遞至次級排程器220。次級排程器220可仲裁轉譯結果238/240且視需要將其轉遞至適當目的地。
返回參看圖2,現將進一步詳細解釋預篩選區塊224。次級排程器220經組態以執行預篩選,使得並行地轉譯多個轉譯請求236之程序中所牽涉的冗餘被最小化。自以上論述可見,轉譯多個轉譯請求236(亦即,遺漏位址轉譯請求)之程序包括針對轉譯表查核行程之記憶體存取(例如,存取至系統記憶體206)、轉譯快取記憶體查找、分配用以處理轉譯請求236之資源(諸如,TTW 212a至212n)等。
舉例而言,當多個轉譯請求236請求針對給定位址空間之相同轉譯區組(granule)大小(例如,4KB區組大小,其可為例示性MMU 204之最小轉譯區組大小)的轉譯時,預篩選區塊224經組態以篩選出、遏 止(suppress)或避免重複除減少之數目個(例如,一個)以外的所有類似遺漏位址轉譯請求,且將多個轉譯請求236中的該減少之數目個(例如,一個)轉譯請求中之僅一者轉遞至TTW 212a至212n以供處理。預篩選區塊224可接著將該一個轉譯或「初始」轉譯的轉譯結果238/240用於一或多個後續轉譯請求236。為了判定哪些請求類似,預篩選區塊224檢查在次級排程器220處分別自預取引擎222或主級排程器210接收之轉譯請求228/230(其在轉譯快取記憶體208中遺漏)。判定與轉譯請求230有關之位址(及用以識別操作環境/位址空間之其他資訊)且將其與當前正由次級排程器220服務之所有其他轉譯請求236(亦即,在其對應槽404a至404m中之狀態為「轉譯進行中」或「等待轉譯」)的位址相比。若輸入位址屬於相同轉譯區組(例如,相同4KB區塊),且識別操作環境/位址空間之所有其他資訊相同,則發現匹配或類似請求。
若發現匹配,則包含新近接收之轉譯請求236之槽404a至404m的狀態被標記為「等待X」而非「等待轉譯」,其中X為包含匹配轉譯請求236之槽404a至404m。當TTW 212a至212n傳回槽X之轉譯結果238/240時,藉由轉譯結果238/240更新狀態為「等待X」之槽404a至404m,且其狀態被更新為「轉譯完成」。在替代態樣中,可推遲針對「等待X」槽之轉譯快取記憶體查找(或藉由TTW 212a至212n之處理)直至已更新針對槽X之轉譯結果238/240為止,而非更新狀態為「等待X」之槽404a至404m。
在一些態樣中,預篩選區塊224可實施基於「窗」之處理。在基於窗之處理中,當TTW 212a至212n處理轉譯請求236時,除了提取針對所存取位址空間之最小轉譯區組的表或頁面映射以外,亦提取鄰近表或頁面映射之經對準窗。若同時轉譯請求236請求針對由此窗覆蓋之位址的轉譯,則預篩選區塊224可經組態以確保僅執行一次轉譯表 查核行程,且每一後續轉譯請求236等待將在轉譯結果238/240上傳回之表或頁面映射之窗。
在一些其他態樣中,可使用最小轉譯區組大小(例如,4KB轉譯區塊)之遺漏下遺漏(miss-under-miss)預篩選。遺漏下遺漏預篩選在許多態樣上類似於上文所描述的基於窗之處理。值得注意的是,遺漏下遺漏處理之差異如下。若針對初始及後續轉譯請求236之位址屬於同一經對準窗(例如,最小轉譯區組之倍數,諸如4KB,而非受限於4KB之最小轉譯區組窗大小),則後續轉譯請求236(例如,在將由MMU 204執行虛擬至實體位址轉譯之情況下,針對自TTW 212a至212n傳回之虛擬位址)被視為相同或與初始轉譯請求236匹配。
再次參看圖2,現將進一步詳細解釋後篩選區塊226。由於多執行緒TTW 214可同時處理多個轉譯,因此可能的是同時轉譯結果238/240可將冗餘/重複資訊填入轉譯快取記憶體208。可由後篩選區塊226使用遺漏下遺漏後篩選以便消除(或最小化)寫入至轉譯快取記憶體208之重複資訊的量。後篩選區塊226可自一或多個TTW 212a至212n接收一或多個轉譯結果238/240,且若一或多個轉譯結果238/240中之兩者或兩者以上為類似轉譯結果,則僅將類似轉譯結果中之一者轉遞至轉譯快取記憶體208,同時遏止其餘類似轉譯結果。
因此,在後篩選之一個態樣中,後篩選區塊226經組態以在填入轉譯快取記憶體208之前探測或查找轉譯快取記憶體208,以便確保重複資訊不會填入轉譯快取記憶體208中。然而,轉譯快取記憶體208查找之頻寬(其可能被用於處理來自(例如)主級排程器210之其他轉譯請求209)可受由後篩選區塊226執行之查找影響。舉例而言,當在次級排程器220處接收到來自TTW 212a至212n之轉譯快取記憶體填入請求(例如,轉譯結果238/240)時,後篩選區塊226可探測轉譯快取記憶體208以檢查對應於轉譯結果238/240之轉譯是否已存在於轉譯快取記憶 體208中。若探測傳回匹配,則後篩選區塊226可捨棄自TTW 212a至212n接收之轉譯結果238/240。否則,後篩選區塊226可允許轉譯快取記憶體208被轉譯結果238/240填入。
在後篩選之另一態樣中,可維持近期填入之轉譯結果238/240之單獨快取記憶體(未圖示)。此單獨快取記憶體在本文中被稱作「近期填入快取記憶體」,其保持近期填入之轉譯結果238/240。可在新的轉譯結果232/234被最終填入轉譯快取記憶體208中之前諮詢近期填入快取記憶體以檢查重複轉譯結果238。近期填入快取記憶體可小於轉譯快取記憶體208,例如,近期填入快取記憶體之輸入項的數目可與可由TTW 212a至212n同時處理之轉譯請求236的數目成比例。雖然在以此方式使用近期填入快取記憶體時仍有可能在轉譯快取記憶體208中填入重複資訊,但對轉譯快取記憶體208查找之頻寬影響極小或無影響,此係由於未執行額外的轉譯快取記憶體探測。
在將近期填入快取記憶體用於後篩選的一個態樣中,當在後篩選區塊226處接收到未經篩選之轉譯結果(例如,尚未經後篩選之轉譯結果238)時,諮詢或探測近期填入快取記憶體。若探測傳回針對特定轉譯結果238之匹配,則後篩選區塊226可捨棄匹配轉譯結果238且防止匹配轉譯結果238填入轉譯快取記憶體208(此係由於在本文中假定若響應於近期發出之轉譯請求236而接收到匹配轉譯結果238,則匹配轉譯結果238仍駐留於轉譯快取記憶體208中之可能性很高)。若探測不產生匹配,則後篩選區塊226發出轉譯結果238以填入轉譯快取記憶體208以及近期填入快取記憶體。
在一些態樣中,可以以下方式組態基於近期填入快取記憶體的後篩選。當由次級排程器220接收未經篩選之轉譯結果(例如,轉譯結果238)時,檢查次級排程器220之每一槽404a至404m以查看是否存在與轉譯結果238之匹配。如先前所描述,槽404a至404m可包含轉譯請 求230(例如,虛擬位址)及與轉譯請求230相關聯之上下文資訊。對於與具有未決轉譯請求之槽404a至404m中之任一者中之未決轉譯請求230匹配的轉譯結果238,包含匹配轉譯請求230之槽404a至404m的狀態被標記為「轉譯快取記憶體填入捨棄」。若後續轉譯結果238亦匹配狀態為「轉譯快取記憶體填入捨棄」之槽的轉譯請求230,則此後續轉譯結果238被判定為重複,且由後篩選區塊226捨棄,而非允許後續(重複)轉譯結果238填入轉譯快取記憶體208。將不捨棄對應於被儲存於狀態不被標記為「轉譯快取記憶體填入捨棄」之任何槽404a至404m中之轉譯請求230的轉譯結果238,而是允許其填入轉譯快取記憶體208(例如,經由圖2中所展示之轉譯快取記憶體填入(經篩選)結果232)。判定轉譯結果238是否對應於或匹配被儲存於槽404a至404m中之任一者中的轉譯請求230可涉及此項技術中已知之用以匹配位址欄位及上下文資訊(例如,虛擬機識別符、位址空間識別符等)的任何匹配/查找機制,且可類似於搜尋轉譯快取記憶體208之程序。
現參看圖5,展示例示性多執行緒MMU之替代實施。圖5說明包含MMU 504之處理系統500。處理系統500在許多態樣上類似於圖2之處理系統200,且因此已維持相同參考數字以表示此等兩種處理系統之類似特徵。集中於處理系統200與500之間的顯著差異而不重複類似特徵,自圖5可見,MMU 504用單一主排程器510來代替MMU 204之主級排程器210及次級排程器220,主排程器510經組態以執行主級排程器210及次級排程器220兩者之功能。MMU 504亦具有用以執行被發送至轉譯快取記憶體208之轉譯請求509之預篩選的預篩選區塊524。在轉譯結果238/240被填入轉譯快取記憶體208中之前,後篩選區塊526執行對轉譯結果238/240之後篩選功能。預取引擎222直接將請求528(或本發明中之「預取位址轉譯請求」)發送至主排程器510,亦可由預篩選區塊524將預篩選應用於請求528。轉譯結果511(來自轉 譯快取記憶體208或來自由TTW 214(包含針對在轉譯快取記憶體208中遺漏之轉譯請求536的TTW 212a至212n)提供之轉譯結果238/240)被直接提供至主排程器510。MMU 504之其餘程序及功能類似於MMU 204,且因此將在本文中避免對此等程序及功能之進一步詳細論述。
現參看圖6,將描述涉及減少對轉譯表之存取的態樣。由於例示性多執行緒MMU(例如,204/504)可同時執行多個轉譯表查核行程,因此若用於此等同時轉譯表查核行程之狀態機不協調,則狀態機(例如,TTW 212a至212n)可重複工作且共同地將轉譯表記憶體請求多於一次地發出至同一轉譯表位址。因此,一些態樣涉及消除重複/冗餘記憶體存取,從而相對應地減少對轉譯表查核器之存取及多執行緒MMU之存取頻寬。就此而言,圖6展示先前所描述的TTW 214之TTW 212a至212n,且另外,轉譯表存取篩選器602經組態以藉由減少/消除重複轉譯表查核行程請求/存取而減少轉譯表查核行程頻寬。
轉譯表存取篩選器602可被組態或置放於TTW 212a至212n與記憶體206之間。圖6中亦展示轉譯表存取篩選器602之分解圖。轉譯表存取篩選器602包含經組態以保持對TTW 214之未完成請求的未完成TTW請求狀態區塊606。提供對應於TTW 212a至212n之對應暫存器或儲存構件612a至612n以保持與特定TTW 212a至212n有關之未完成請求。在一些態樣中亦可提供視情況選用之轉譯結果快取記憶體608,以儲存轉譯表查核行程之一些轉譯結果(亦即,記憶體206之經轉譯位址)。轉譯表存取篩選器602可使用未完成TTW請求狀態606及暫存器612a至612n且視情況使用轉譯結果快取記憶體608來偵測對記憶體206之重複/冗餘存取且減少或消除重複/冗餘存取,同時僅允許對記憶體206之唯一存取。
將參看圖7描述例示性多執行緒MMU(204/504)中之轉譯表存取篩選器602的影響。與兩個分開的表查核器(例如,TTW 212a至212b) 相關聯之兩個表查核行程序列被描繪為圖7中之查核行程A及查核行程B。在一實例中,TTW 212a至212b可使用同一轉譯表同時針對同一位址空間中之位址「A」及位址「B」執行轉譯表查核行程。若位址「A」及位址「B」駐留於不同轉譯區組(例如,虛擬記憶體之4KB區塊)中但屬於記憶體之同一區塊(例如,虛擬記憶體之2MB區塊),則可看到TTW 212a至212b具有針對位址「A」及位址「B」之轉譯表查核行程的共同元件。此共同性導致對表或頁面L1 702a及L2 702b中之相同轉譯表輸入項之重複記憶體存取,如所展示。表704說明在不篩選之情況下(例如,在不使用轉譯表存取篩選器602之情況下)針對與位址「A」及「B」有關之表查核行程的記憶體存取之清單,且表706說明在篩選之情況下(例如,在使用轉譯表存取篩選器602之情況下)針對與位址「A」及「B」有關之表查核行程的記憶體存取之清單。將表704與706比較,可看到存在於表704中之重複轉譯表存取(「在針對位址「B」之表查核行程中部署的TTW 212b之步驟1(L1)及步驟2(L2))在表706中被消除。因此,當在例示性態樣中部署轉譯表存取篩選器602時,存取之數目減少,此導致頻寬減少。
現參看圖8,說明涉及用於遏止對轉譯表之無關/冗餘存取之演算法或流程圖的方法800。可選擇性地啟用方法800。當啟用方法800時,對於針對TTW 212a至212n中之任一者接收之每一新的轉譯請求236,方法800可用於遏止對記憶體206之無關/冗餘存取。該啟用可為對例如所有類型的對MMU 204之存取的全域啟用,或個別啟用可應用於特定轉譯表存取類型。轉譯表存取類型之一些實例包括階段1,層級1至3,及階段2,層級1至3。
進一步詳細考慮方法800,在區塊802中,方法800可以(例如)每一新的轉譯請求236開始。在區塊804中,判定是否(例如)啟用轉譯表存取篩選器602。若其被啟用(「是」路徑),則方法800進行至區塊 806,在區塊806中判定是否針對特定請求類型啟用轉譯表存取篩選器602。若在區塊804中判定不啟用轉譯表存取篩選器602,則方法800進行至區塊810。類似地,在區塊806中,若判定不針對特定請求類型啟用轉譯表存取篩選器602,則方法800進行至區塊810。
若在區塊806中判定針對特定請求類型啟用轉譯表存取篩選器602,則方法800進行至區塊808,在區塊808中檢查是否已存在將滿足新的轉譯表請求的未完成重疊轉譯表存取(例如,來自圖6之未完成TTW請求狀態區塊606或暫存器612a至612n)。若在區塊808中判定為「否」,則方法800進行至區塊810。在區塊810中,執行轉譯表存取(例如,自TTW 214至記憶體206)以便滿足在區塊802處到達之新的轉譯請求236。在區塊808中,若判定為「是」,則方法800進行至區塊812,在區塊812中針對轉譯請求236遏止新的轉譯表請求(例如,使用轉譯表存取篩選器602)。方法800隨後進行至區塊814以等待重疊轉譯表存取完成,以便使用其結果來滿足新的轉譯請求236。自區塊814及810,方法800進行至區塊820,在區塊820中,方法800完成或結束。
在一些態樣中,區塊820可包含儲存自區塊810獲得之頁面表資料,以滿足新的轉譯請求236,該等頁面表資料將儲存於轉譯結果快取記憶體608中。然而,在一些其他態樣中,可在決定將頁面表資料儲存於轉譯結果快取記憶體608中之前執行額外篩選步驟。舉例而言,在區塊810之後,方法800可涉及可在儲存頁面表資料之前執行的額外篩選步驟。下文將參看圖9解釋該等額外篩選步驟。
圖9說明涉及用於遏止對轉譯表(例如,TTW 214)之無關/冗餘存取之演算法或流程圖的另一例示性方法900。區塊802、804、806及810類似於上文所描述之方法800的區塊,且因此將不再描述。以區塊902開始,若區塊806中之判定為「是」,則到達區塊902,其中在區塊902中,查找視情況選用之轉譯結果快取記憶體608。若在轉譯結果快 取記憶體608中發現針對轉譯請求236之經請求轉譯表資料,則在區塊904中,方法900進行至區塊906。在區塊906中,遏止針對轉譯請求236之新的轉譯表請求且使用來自轉譯結果快取記憶體608之資料來服務轉譯請求236,且自此處,方法900進行至區塊914,在區塊914中,方法900完成或結束。
另一方面,若在轉譯結果快取記憶體608中未發現針對轉譯請求236之轉譯資料,則在區塊904中,方法900進行至區塊810,自區塊810執行區塊908至912中之額外步驟。在區塊908中,再次判定是否啟用轉譯表存取篩選器602,且若否,則方法900在區塊914中結束。若啟用轉譯表存取篩選器602,則在區塊910中判定是否針對轉譯請求236之特定轉譯表請求類型啟用轉譯表存取篩選器602,且若否,則方法900在區塊914中結束。若在區塊910中判定針對轉譯請求236之特定轉譯表請求類型啟用轉譯表存取篩選器602,則在區塊912中,將針對轉譯請求236之頁面表資料儲存於轉譯結果快取記憶體608中,且方法900在區塊914中結束。
在一些例示性態樣中,由於本端快取記憶體(例如,轉譯結果快取記憶體608)可保持轉譯表資料,因此在對由例示性MMU接收之無效化命令(例如,TLB無效化命令,如此項技術中已知)作出回應時應注意。當由MMU 204接收到任何TLB無效化命令時,(例如)整個轉譯結果快取記憶體608之內容被視為無效。因此,當前未完成的對記憶體206之所有轉譯表存取被加上旗標,使得在其結果傳回時,不將其填充於轉譯結果快取記憶體608中。在一些情況下,轉譯結果快取記憶體608中之所有輸入項被相對應地無效化。在此類情況下,整個轉譯結果快取記憶體608在收到任何此類MMU無效化命令時被無效化,此係由於可實體地對轉譯結果快取記憶體608加標籤。在本發明之範疇內可實施其他類似無效化程序,如熟習此項技術者將理解。
將瞭解,態樣包括用於執行本文中所揭示之程序、功能及/或演算法的各種方法。舉例而言,圖10說明執行位址轉譯之方法1000。方法1000包含:接收兩個或兩個以上位址轉譯請求(例如,來自上游用戶端裝置202之用戶端輸入異動216);及在多執行緒記憶體管理單元(例如,MMU 204)中針對兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上位址轉譯,以獲得系統記憶體(例如,記憶體206)之對應經轉譯位址。
在一些態樣中,方法1000可包括:將兩個或兩個以上位址轉譯請求儲存於至少一個排程器中(例如,主級排程器210之槽304a至304n中);及將兩個或兩個以上位址轉譯請求(例如,209)發送至多執行緒MMU中之轉譯快取記憶體(例如,轉譯快取記憶體208)。在一些態樣中,至少一個排程器(例如,主級排程器210)可按相同或不同於由至少一個排程器接收兩個或兩個以上位址轉譯請求之次序的次序將兩個或兩個以上位址轉譯請求發出至轉譯快取記憶體。在一些態樣中,方法1000亦可包括在轉譯快取記憶體中存在針對位址轉譯請求之命中的情況下,自轉譯快取記憶體接收針對兩個或兩個以上位址轉譯請求中之位址轉譯請求的轉譯(例如,轉譯結果211),或將在轉譯快取記憶體中遺漏之位址轉譯請求(例如,230)轉遞至轉譯表查核器(例如,經由次級排程器220轉遞至TTW 214)。可由兩個或兩個以上轉譯表查核器(例如,212a至212n)針對兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上轉譯表查核行程。
在一些態樣中,方法1000可包括在將在轉譯快取記憶體中遺漏之位址轉譯請求轉遞至轉譯表查核器之前預篩選位址轉譯請求(例如,在預篩選區塊224中)以避免將位址轉譯請求重複轉遞至轉譯表查核器。在一些態樣中,方法1000亦可包括後篩選自轉譯表查核器獲得之轉譯結果(例如,在後篩選區塊226中)以避免重複填入至轉譯快取 記憶體。在一些態樣中,方法1000亦可包括藉由減少對系統記憶體之存取的重複或冗餘(例如,藉由在如上文所描述之方法800或900中使用轉譯表存取篩選器602)來減少由轉譯表查核器執行之轉譯表查核行程之頻寬消耗。
現參看圖11,描繪根據例示性態樣而被組態之無線裝置之方塊圖,且該無線裝置通常表示為1100。無線裝置1100包括圖2之處理系統200之某些態樣,如下文將解釋。特定說明上游用戶端裝置202,其亦可為耦接至多執行緒MMU 204及系統記憶體206之處理器(例如,數字信號處理器(DSP)、中央處理單元(CPU)等)。除了經由MMU 204連接至記憶體206以外,在一些情況下自處理器202直接連接至記憶體206亦係可能的。
圖11亦展示耦接至處理器202及顯示器1128之顯示控制器1126。編碼器/解碼器(CODEC)1134(例如,音訊及/或語音CODEC)可耦接至處理器202。亦說明諸如無線控制器1140(其可包括數據機)之其他組件。揚聲器1136及麥克風1138可耦接至CODEC 1134。圖11亦指示可耦接至無線天線1142之無線控制器1140。在一個特定態樣中,處理器202、顯示控制器1126、MMU 204、記憶體206、CODEC 1134及無線控制器1140包含於系統200中,系統200可被整合或封裝為系統級封裝或系統單晶片裝置。
在一個特定態樣中,輸入裝置1130及電源供應器1144耦接至系統單晶片裝置200。此外,在一個特定態樣中,如在圖11中說明,顯示器1128、輸入裝置1130、揚聲器1136、麥克風1138、無線天線1142及電源供應器1144在系統單晶片裝置200外部。然而,顯示器1128、輸入裝置1130、揚聲器1136、麥克風1138、無線天線1142及電源供應器1144中之每一者可耦接至系統單晶片裝置200之組件,諸如介面或控制器。
應注意,儘管圖11描繪無線通信裝置,但處理器202、MMU 204及記憶體206亦可整合至機上盒、音樂播放器、視訊播放器、娛樂單元、導航裝置、個人數位助理(PDA)、固定位置資料單元、電腦、膝上型電腦、平板電腦、行動電話或其他類似裝置中。
熟習此項技術者將瞭解,可使用多種不同技藝及技術中之任一者來表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子或其任何組合表示可貫穿以上描述參考之資料、指令、命令、資訊、信號、位元、符號及碼片。
此外,熟習此項技術者將瞭解,結合本文中所揭示之態樣而描述的各種說明性邏輯區塊、模組、電路及演算法步驟可實施為電子硬體、電腦軟體或兩者之組合。為了清晰說明硬體與軟體之此互換性,各種說明性組件、區塊、模組、電路及步驟已在上文大體在其功能性方面加以描述。此功能性被實施為硬體抑或軟體取決於特定應用及強加於整個系統之設計約束。熟習此項技術者可針對每一特定應用以變化方式實施所描述功能性,但此等實施決策不應被解譯為導致脫離本發明之範疇。
結合本文中所揭示之態樣而描述的方法、序列及/或演算法可直接在硬體中、在由處理器執行之軟體模組中或在兩者之組合中體現。軟體模組可駐留於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、可移除式磁碟、CD-ROM,或此項技術中已知的任何其他形式之儲存媒體中。例示性儲存媒體耦接至處理器,使得處理器可自儲存媒體讀取資訊且將資訊寫入至儲存媒體。在替代方案中,儲存媒體可與處理器成一體式。
因此,本發明之一態樣可包括體現用於管理/排程多執行緒處理器之執行緒之方法的電腦可讀媒體。因此,本發明不限於所說明之實例,且用於執行本文中所描述之功能性的任何構件包括於本發明之態 樣中。
雖然前述揭示內容展示本發明之說明性態樣,但應注意,在不脫離如由所附申請專利範圍所界定之本發明之範疇的情況下,可在本文中作出各種改變及修改。無需按任何特定次序執行根據本文中所描述之本發明之態樣的方法請求項之功能、步驟及/或動作。此外,儘管可以單數形式描述或主張本發明之要素,但除非明確陳述限於單數形式,否則亦預期複數形式。
200‧‧‧處理系統/系統單晶片裝置
202‧‧‧上游用戶端裝置
204‧‧‧多執行緒記憶體管理單元
206‧‧‧系統記憶體
208‧‧‧轉譯快取記憶體
209‧‧‧轉譯請求
210‧‧‧主級排程器
211‧‧‧轉譯結果
212a‧‧‧轉譯表查核器
212b‧‧‧轉譯表查核器
212n‧‧‧轉譯表查核器
214‧‧‧轉譯表查核器
216‧‧‧用戶端輸入異動
220‧‧‧次級排程器
222‧‧‧預取引擎
224‧‧‧預篩選器
226‧‧‧後篩選器
228‧‧‧轉譯請求
230‧‧‧轉譯請求
232‧‧‧轉譯結果
234‧‧‧轉譯結果
236‧‧‧轉譯請求
238‧‧‧轉譯結果
240‧‧‧轉譯結果
242‧‧‧用戶端輸出異動
244‧‧‧回應

Claims (51)

  1. 一種設備,其包含:一多執行緒記憶體管理單元(MMU),其經組態以自一或多個上游裝置接收兩個或兩個以上位址轉譯請求,其中該多執行緒MMU經進一步組態以並行地處理該兩個或兩個以上位址轉譯請求中之至少兩者,以獲得一系統記憶體之對應經轉譯位址。
  2. 如請求項1之設備,其中該一或多個上游裝置包含經組態以產生兩個或兩個以上位址轉譯請求之一通用處理器、專用處理器或一多執行緒處理器中的一或多者。
  3. 如請求項1之設備,其中該多執行緒MMU包含一主級排程器,該主級排程器經組態以接收該兩個或兩個以上位址轉譯請求且發出該兩個或兩個以上位址轉譯請求以用於在一轉譯快取記憶體中轉譯。
  4. 如請求項3之設備,其中該主級排程器經組態以按一次序將該兩個或兩個以上位址轉譯請求發出至該轉譯快取記憶體,該次序不同於由該主級排程器接收該兩個或兩個以上位址轉譯請求之次序。
  5. 如請求項3之設備,其中該主級排程器包含兩個或兩個以上主級排程器槽,該兩個或兩個以上主級排程器槽經組態以在該兩個或兩個以上位址轉譯請求被處理時儲存該兩個或兩個以上位址轉譯請求。
  6. 如請求項5之設備,其中該兩個或兩個以上主級排程器槽被分配至該一或多個上游裝置之兩個或兩個以上代理程式。
  7. 如請求項6之設備,其中該分配基於該兩個或兩個以上代理程式 之分類而可程式化。
  8. 如請求項6之設備,其中該分配係基於一仲裁原則,該仲裁原則包含循環、固定優先級或與該兩個或兩個以上代理程式相關聯之可程式化優先級。
  9. 如請求項5之設備,其中該兩個或兩個以上主級排程器槽包含對應的兩個或兩個以上狀態,其中每一狀態包含儲存於一對應主級排程器槽中之一位址轉譯請求之一狀態。
  10. 如請求項3之設備,其中若在該轉譯快取記憶體中存在針對由該主級排程器發出之該兩個或兩個以上位址轉譯請求之一或多個命中位址轉譯請求的命中,則該轉譯快取記憶體經組態以將對應一或多個轉譯結果提供至該主級排程器,該一或多個轉譯結果包含該系統記憶體之針對該一或多個命中位址轉譯請求的一或多個經轉譯位址。
  11. 如請求項10之設備,其中該主級排程器經組態以排程對該系統記憶體之針對一或多個命中位址轉譯請求的該一或多個經轉譯位址之存取。
  12. 如請求項11之設備,其中該主級排程器經組態以基於與對應一或多個命中位址轉譯請求相關聯之優先級或與產生該一或多個命中位址轉譯請求之該一或多個上游裝置相關聯的服務品質(QoS)量度而排程對該系統記憶體之該一或多個經轉譯位址的該等存取。
  13. 如請求項12之設備,其中該主級排程器經組態以基於重新排序該等存取而排程對該系統記憶體之該一或多個經轉譯位址的該等存取,以避免該等存取之間的危險。
  14. 如請求項3之設備,其中若在該轉譯快取記憶體中存在針對由該主級排程器發出之一或多個遺漏位址轉譯請求的遺漏,則該轉 譯快取記憶體經組態以將該一或多個遺漏位址轉譯請求轉遞至一次級排程器。
  15. 如請求項14之設備,其中該次級排程器經組態以接收該一或多個遺漏位址轉譯請求,且排程該一或多個遺漏位址轉譯請求以用於在一或多個轉譯表查核器(TTW)中轉譯成該系統記憶體之位址。
  16. 如請求項15之設備,其中該次級排程器包含兩個或兩個以上次級排程器槽,該兩個或兩個以上次級排程器槽經組態以儲存該一或多個遺漏位址轉譯請求中之兩者或兩者以上,直至自該一或多個TTW接收到包含該系統記憶體的對應於該兩個或兩個以上遺漏位址轉譯請求之經轉譯位址的轉譯結果且該等經轉譯位址傳回至該轉譯快取記憶體為止。
  17. 如請求項16之設備,其中該兩個或兩個以上次級排程器槽包含對應兩個或兩個以上狀態,其中每一狀態包含儲存於一對應次級排程器槽中之一遺漏位址轉譯請求之一狀態。
  18. 如請求項16之設備,其中該兩個或兩個以上次級排程器槽被分配至該一或多個上游裝置之兩個或兩個以上代理程式。
  19. 如請求項18之設備,其中該分配基於該兩個或兩個以上代理程式之分類而可程式化。
  20. 如請求項18之設備,其中該分配係基於一仲裁原則,該仲裁原則包含循環、固定優先級或與該兩個或兩個以上代理程式相關聯之可程式化優先級。
  21. 如請求項15之設備,其進一步包含一預篩選區塊,該預篩選區塊經組態以接收該一或多個遺漏位址轉譯請求,且若該一或多個遺漏位址轉譯請求之兩個或兩個以上遺漏位址轉譯請求為類似遺漏位址轉譯請求,則僅將該兩個或兩個以上類似遺漏位址 轉譯請求中之一者轉遞至該一或多個TTW且遏止該兩個或兩個以上類似遺漏位址轉譯請求中之其餘者。
  22. 如請求項21之設備,其中該預篩選區塊經組態以在兩個或兩個以上遺漏位址轉譯請求之待轉譯輸入位址屬於同一轉譯區組或屬於該同一轉譯區組之一指定倍數的情況下判定該兩個或兩個以上遺漏位址轉譯請求為類似遺漏位址轉譯請求。
  23. 如請求項15之設備,其進一步包含一後篩選區塊,該後篩選區塊經組態以自該一或多個TTW接收針對該一或多個遺漏位址轉譯請求之一或多個轉譯結果,且若該一或多個轉譯結果中之兩者或兩者以上為類似轉譯結果,則僅將該等類似轉譯結果中之一者轉遞至該轉譯快取記憶體且遏止其餘類似轉譯結果。
  24. 如請求項23之設備,其中該後篩選區塊經組態以探測該轉譯快取記憶體以判定該一或多個轉譯結果中之兩者或兩者以上是否為類似轉譯結果。
  25. 如請求項23之設備,其進一步包含一近期填入快取記憶體,該近期填入快取記憶體經組態以儲存該一或多個轉譯結果,其中該後篩選區塊經組態以探測該近期填入快取記憶體以判定該一或多個轉譯結果中之兩者或兩者以上是否為類似轉譯結果。
  26. 如請求項15之設備,其進一步包含一轉譯表存取篩選器,該轉譯表存取篩選器經組態以判定該一或多個遺漏位址轉譯請求中之兩者或兩者以上是否涉及該系統記憶體之冗餘存取,且僅允許執行對該系統記憶體之唯一存取。
  27. 如請求項26之設備,其中該轉譯表存取篩選器經組態以在針對兩個或兩個以上遺漏位址轉譯請求之該等經轉譯位址屬於記憶體之同一區塊的情況下判定該兩個或兩個以上遺漏位址轉譯請求是否涉及冗餘存取。
  28. 如請求項26之設備,其中該轉譯表存取篩選器包含一轉譯結果快取記憶體,該轉譯結果快取記憶體經組態以保持一或多個遺漏位址轉譯請求之一或多個轉譯結果。
  29. 如請求項28之設備,其中該轉譯表存取篩選器經組態以提供來自該轉譯快取記憶體之針對該一或多個遺漏位址轉譯請求的一或多個轉譯結果。
  30. 如請求項3之設備,其中該多執行緒MMU包含一主排程器,該主排程器經組態以接收該兩個或兩個以上位址轉譯請求及來自一預取引擎之一或多個預取位址轉譯請求,且發出該兩個或兩個以上位址轉譯請求或一或多個預取位址轉譯請求中之至少一者以用於在一轉譯快取記憶體中轉譯。
  31. 一種執行位址轉譯之方法,該方法包含:接收兩個或兩個以上位址轉譯請求;及在一多執行緒記憶體管理單元(MMU)中,針對該兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上位址轉譯,以獲得一系統記憶體之對應經轉譯位址。
  32. 如請求項31之方法,其包含將該兩個或兩個以上位址轉譯請求儲存於該多執行緒MMU之一主級排程器中,及將該兩個或兩個以上位址轉譯請求自該主級排程器發出至一轉譯快取記憶體以供轉譯。
  33. 如請求項32之方法,其包含按一次序將該兩個或兩個以上位址轉譯請求自該主級排程器發出至該轉譯快取記憶體,該次序不同於由該主級排程器接收該兩個或兩個以上位址轉譯請求之次序。
  34. 如請求項32之方法,其包含在該兩個或兩個以上位址轉譯請求被處理時將該兩個或兩個以上位址轉譯請求儲存於該主級排程 器之兩個或兩個以上主級排程器槽中。
  35. 如請求項34之方法,其包含基於該兩個或兩個以上代理程式之分類或一仲裁原則將該兩個或兩個以上主級排程器槽分配至該一或多個上游裝置之兩個或兩個以上代理程式,該仲裁原則包含循環、固定優先級或與該兩個或兩個以上代理程式相關聯之可程式化優先級。
  36. 如請求項32之方法,其包含將一或多個轉譯結果自該轉譯快取記憶體提供至該主級排程器,該一或多個轉譯結果包含該系統記憶體之一或多個經轉譯位址,該一或多個經轉譯位址係針對在該轉譯快取記憶體中命中之一或多個命中位址轉譯請求。
  37. 如請求項36之方法,其包含由該主級排程器基於與對應一或多個命中位址轉譯請求相關聯之優先級或與產生該一或多個命中位址轉譯請求之該一或多個上游裝置相關聯的服務品質(QoS)量度而排程對該系統記憶體之該一或多個經轉譯位址的存取。
  38. 如請求項36之方法,其包含由該主級排程器重新排序對該系統記憶體之該一或多個經轉譯位址的該等存取,以避免該等存取之間的危險。
  39. 如請求項32之方法,其包含將在該轉譯快取記憶體中遺漏之一或多個遺漏位址轉譯請求轉遞至一次級排程器。
  40. 如請求項32之方法,其進一步包含排程由該次級排程器接收之該一或多個遺漏位址轉譯請求以用於在一或多個轉譯表查核器(TTW)中位址轉譯。
  41. 如請求項40之方法,其包含將該一或多個遺漏位址轉譯請求中之兩者或兩者以上儲存於兩個或兩個以上次級排程器槽中,直至自該一或多個TTW接收到包含該系統記憶體的對應於該兩個或兩個以上遺漏位址轉譯請求之經轉譯位址的轉譯結果且該等 經轉譯位址傳回至該轉譯快取記憶體為止。
  42. 如請求項41之方法,其包含基於該兩個或兩個以上代理程式之分類或一仲裁原則將該兩個或兩個以上次級排程器槽分配至該一或多個上游裝置之兩個或兩個以上代理程式,該仲裁原則包含循環、固定優先級或與該兩個或兩個以上代理程式相關聯之可程式化優先級。
  43. 如請求項40之方法,其進一步包含在兩個或兩個以上遺漏位址轉譯請求為類似遺漏位址轉譯請求的情況下,僅將該兩個或兩個以上類似遺漏位址轉譯請求中之一者轉遞至該一或多個TTW且遏止該兩個或兩個以上類似遺漏位址轉譯請求中之其餘者。
  44. 如請求項43之方法,其包含在兩個或兩個以上遺漏位址轉譯請求之待轉譯輸入位址屬於同一轉譯區組或屬於該同一轉譯區組之一指定倍數的情況下,判定該兩個或兩個以上遺漏位址轉譯請求為類似遺漏位址轉譯請求。
  45. 如請求項40之方法,其進一步包含在該一或多個轉譯結果中之兩者或兩者以上為類似轉譯結果的情況下,僅將該等類似轉譯結果中之一者轉遞至該轉譯快取記憶體且遏止其餘類似轉譯結果。
  46. 如請求項45之方法,其包含探測該轉譯快取記憶體以判定該一或多個轉譯結果中之兩者或兩者以上是否為類似轉譯結果。
  47. 如請求項40之方法,其進一步包含判定經排程以用於在該一或多個轉譯表查核器(TTW)中位址轉譯的該一或多個遺漏位址轉譯請求中之兩者或兩者以上是否涉及該系統記憶體之冗餘存取,及僅允許執行對該系統記憶體之唯一存取。
  48. 如請求項47之方法,其包含在針對兩個或兩個以上遺漏位址轉譯請求之該等經轉譯位址屬於記憶體之同一區塊的情況下,判 定該兩個或兩個以上遺漏位址轉譯請求涉及冗餘存取。
  49. 如請求項47之方法,其進一步包含在一轉譯結果快取記憶體中保持一或多個遺漏位址轉譯請求之一或多個轉譯結果,及提供來自該轉譯快取記憶體之針對該一或多個遺漏位址轉譯請求的一或多個轉譯結果。
  50. 一種設備,其包含:用於接收兩個或兩個以上位址轉譯請求之構件;及用於針對該兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上位址轉譯以獲得用於儲存之一構件之對應經轉譯位址的構件。
  51. 一種非暫時性電腦可讀儲存媒體,其包含程式碼,該等程式碼在由一處理器執行時,致使該處理器執行用於位址轉譯之操作,其中該非暫時性電腦可讀儲存媒體包含:用於接收兩個或兩個以上位址轉譯請求之程式碼;及用於針對該兩個或兩個以上位址轉譯請求並行地執行兩個或兩個以上位址轉譯以獲得一系統記憶體之對應經轉譯位址的程式碼。
TW105115829A 2015-05-29 2016-05-20 用於記憶體管理單元之多執行緒轉換及異動重新排序 TW201710908A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562168712P 2015-05-29 2015-05-29
US14/859,351 US10007619B2 (en) 2015-05-29 2015-09-20 Multi-threaded translation and transaction re-ordering for memory management units

Publications (1)

Publication Number Publication Date
TW201710908A true TW201710908A (zh) 2017-03-16

Family

ID=57397568

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105115829A TW201710908A (zh) 2015-05-29 2016-05-20 用於記憶體管理單元之多執行緒轉換及異動重新排序

Country Status (9)

Country Link
US (1) US10007619B2 (zh)
EP (1) EP3304320A1 (zh)
JP (1) JP2018519581A (zh)
KR (1) KR20180013924A (zh)
CN (1) CN107710173A (zh)
BR (1) BR112017025625A2 (zh)
CA (1) CA2983797A1 (zh)
TW (1) TW201710908A (zh)
WO (1) WO2016195850A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11573911B2 (en) 2018-10-15 2023-02-07 Arm Limited Memory access control
TWI812748B (zh) * 2018-08-21 2023-08-21 南韓商三星電子股份有限公司 記憶體系統及刪除重複記憶體系統

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830224B2 (en) * 2013-03-15 2017-11-28 Nvidia Corporation Selective fault stalling for a GPU memory pipeline in a unified virtual memory system
US10509729B2 (en) * 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US10228981B2 (en) * 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US10635654B2 (en) * 2017-06-12 2020-04-28 Samsung Electronics Co., Ltd. Data journaling for large solid state storage devices with low DRAM/SRAM
US10649912B2 (en) * 2017-07-14 2020-05-12 International Business Machines Corporation Method and apparatus for an efficient TLB lookup
US20190087351A1 (en) * 2017-09-20 2019-03-21 Qualcomm Incorporated Transaction dispatcher for memory management unit
US11636043B2 (en) 2021-08-30 2023-04-25 International Business Machines Corporation Sleeping and waking-up address translation that conflicts with translation level of active page table walks

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010052053A1 (en) 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
EP1182571B1 (en) * 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
US20040103248A1 (en) * 2002-10-08 2004-05-27 Hass David T. Advanced telecommunications processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US8347065B1 (en) 2006-11-01 2013-01-01 Glasco David B System and method for concurrently managing memory access requests
US7814253B2 (en) * 2007-04-16 2010-10-12 Nvidia Corporation Resource arbiter
US7904692B2 (en) * 2007-11-01 2011-03-08 Shrijeet Mukherjee Iommu with translation request management and methods for managing translation requests
US8271700B1 (en) * 2007-11-23 2012-09-18 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US8108584B2 (en) * 2008-10-15 2012-01-31 Intel Corporation Use of completer knowledge of memory region ordering requirements to modify transaction attributes
EP2441005A2 (en) 2009-06-09 2012-04-18 Martin Vorbach System and method for a cache in a multi-core processor
US8301865B2 (en) 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US8386748B2 (en) * 2009-10-29 2013-02-26 Apple Inc. Address translation unit with multiple virtual queues
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US9606936B2 (en) * 2010-12-16 2017-03-28 Advanced Micro Devices, Inc. Generalized control registers
US8954986B2 (en) * 2010-12-17 2015-02-10 Intel Corporation Systems and methods for data-parallel processing
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US9921967B2 (en) * 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
CN103348333B (zh) * 2011-12-23 2017-03-29 英特尔公司 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置
CN102763086A (zh) * 2012-01-18 2012-10-31 华为技术有限公司 分布式计算任务处理系统和任务处理方法
US9152566B2 (en) * 2012-06-15 2015-10-06 International Business Machines Corporation Prefetch address translation using prefetch buffer based on availability of address translation logic
US9069690B2 (en) 2012-09-13 2015-06-30 Intel Corporation Concurrent page table walker control for TLB miss handling
US10037228B2 (en) * 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US20150100733A1 (en) 2013-10-03 2015-04-09 Synopsys, Inc. Efficient Memory Organization
US9411745B2 (en) 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
CN104484228B (zh) * 2014-12-30 2017-12-29 成都因纳伟盛科技股份有限公司 基于Intelli‑DSC的分布式并行任务处理系统
US20160210069A1 (en) * 2015-01-21 2016-07-21 Bitdefender IPR Management Ltd. Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
US10019380B2 (en) * 2015-09-25 2018-07-10 Qualcomm Incorporated Providing memory management functionality using aggregated memory management units (MMUs)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI812748B (zh) * 2018-08-21 2023-08-21 南韓商三星電子股份有限公司 記憶體系統及刪除重複記憶體系統
US11573911B2 (en) 2018-10-15 2023-02-07 Arm Limited Memory access control
TWI807094B (zh) * 2018-10-15 2023-07-01 英商Arm股份有限公司 記憶體存取控制

Also Published As

Publication number Publication date
CN107710173A (zh) 2018-02-16
US20160350234A1 (en) 2016-12-01
JP2018519581A (ja) 2018-07-19
WO2016195850A1 (en) 2016-12-08
KR20180013924A (ko) 2018-02-07
BR112017025625A2 (pt) 2018-08-07
US10007619B2 (en) 2018-06-26
CA2983797A1 (en) 2016-12-08
EP3304320A1 (en) 2018-04-11

Similar Documents

Publication Publication Date Title
TW201710908A (zh) 用於記憶體管理單元之多執行緒轉換及異動重新排序
KR102407128B1 (ko) 메모리 컨트롤러
US8751746B2 (en) QoS management in the L2 cache
US9418018B2 (en) Efficient fill-buffer data forwarding supporting high frequencies
US9135177B2 (en) Scheme to escalate requests with address conflicts
US9690720B2 (en) Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US10331357B2 (en) Tracking stores and loads by bypassing load store units
JP2022511377A (ja) 並び替えの間のキャッシュ一貫性を維持する方法
US9378144B2 (en) Modification of prefetch depth based on high latency event
CN111684427A (zh) 高速缓存控制感知的存储器控制器
CN111684430A (zh) 支持同一信道上对不统一等待时间的存储器类型的响应
US7529876B2 (en) Tag allocation method
CN113485643B (zh) 用于数据存取的方法及数据写入的控制器
US11893413B2 (en) Virtual channel support using write table
US11748107B2 (en) Complex I/O value prediction for multiple values with physical or virtual addresses
CN117940908A (zh) 动态分配高速缓存存储器作为ram
US20140173225A1 (en) Reducing memory access time in parallel processors
US9811467B2 (en) Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor
US20140136796A1 (en) Arithmetic processing device and method for controlling the same
EP4293505A1 (en) Instruction retirement unit, instruction execution unit, processing unit, cumputing device, and instruction processing method
EP4293502A1 (en) Processing unit, computing device and instruction processing method
US10853070B1 (en) Processor suspension buffer and instruction queue
KR20220083849A (ko) 메모리 컨트롤러
CN113515234A (zh) 一种用于控制数据读出到主机的方法及控制器