国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      具有預填充能力的存儲器管理單元的制作方法

      文檔序號:6494731閱讀:253來源:國知局
      具有預填充能力的存儲器管理單元的制作方法
      【專利摘要】本發(fā)明揭示用于存儲器管理單元MMU的系統(tǒng)和方法,其經(jīng)配置以用預期將在未來使用的地址翻譯(202-204)條目自動地預填充翻譯旁視緩沖器TLB(206、208),進而減少TLB未中率且改善性能。所述TLB可以翻譯條目預填充,其中對應于所述預填充的地址可基于預測來選擇。預測可從外部裝置(214)導出,或基于跨度值,其中所述跨度值可為預定常數(shù)或基于存取模式(216)而動態(tài)更改。預填充所述TLB可有效地移除在從關鍵路徑確定針對TLB未中的地址翻譯時涉及的等待時間。
      【專利說明】具有預填充能力的存儲器管理單元
      [0001]依據(jù)35U.S.C.§ 119主張優(yōu)先權(quán)
      [0002]本專利申請案主張2011年3月3日申請的題目為“具有預填充能力的存儲器管理單元(MEMORY MANAGEMENT UNIT WITH PRE-FILLING CAPABILITY) ” 的第 61/448,839 號臨時申請案的優(yōu)先權(quán),所述臨時申請案轉(zhuǎn)讓給本受讓人且特此以引用方式并入本文。
      【技術(shù)領域】
      [0003]所揭示的實施例是針對用于管理存儲器地址從虛擬地址到物理地址的翻譯的存儲器管理單元(MMU)。更特定來說,示范性實施例是針對用于管理翻譯高速緩沖存儲器的高效技術(shù),例如預填充,其中翻譯高速緩沖存儲器可用于虛擬到物理地址翻譯。
      【背景技術(shù)】
      [0004]現(xiàn)代操作系統(tǒng)經(jīng)常使用虛擬地址方案以便使處理器中的物理存儲空間的使用最大化。虛擬存儲器是此項技術(shù)中眾所周知的。虛擬存儲器可通過虛擬地址來尋址。與程序相關的虛擬地址空間常規(guī)上劃分為若干頁。頁是鄰接虛擬存儲器地址的塊。雖然可參考虛擬地址來寫入程序,但對于處理器對程序指令的執(zhí)行來說,到物理地址的翻譯可為必要的??刹捎庙摫韥韺⑻摂M地址映射到對應的物理地址。
      [0005]存儲器管理單元(MMU)常用以處置虛擬地址到物理地址的翻譯。MMU可查找包含虛擬到物理地址映射的頁表條目(PTE),以便處置翻譯??赏ㄟ^動態(tài)地分配和釋放物理存儲器或數(shù)據(jù)緩沖器的塊來管理物理存儲器空間。在此動態(tài)分配和釋放的過程中,通常自由物理存儲器空間變?yōu)榻?jīng)分段的,包括不鄰接的自由塊。因此,鄰接虛擬地址范圍可變?yōu)橛成涞饺舾刹秽徑游锢泶鎯ζ鲏K。因此,可能需要頻繁地執(zhí)行頁表查找過程,也稱為“頁表巡行”,因為鄰接虛擬地址可能未常規(guī)上映射到鄰接物理地址。這些頻繁的頁表查找可顯著影響性倉泛。
      [0006]解決頻繁的頁表查找的一種常規(guī)技術(shù)包含使用翻譯高速緩沖存儲器,也稱為翻譯旁視緩沖器(TLB)。TLB可將用于頻繁存取的頁的翻譯高速緩沖存儲在經(jīng)標記硬件查找表中。因此,如果虛擬地址在TLB中命中,那么對應物理地址翻譯可從TLB再使用,而不必招致與頁表巡行相關聯(lián)的成本。
      [0007]參見圖1,說明TLB的常規(guī)實施方案。如圖示,TLB100經(jīng)配置以將虛擬地址(VA) 102翻譯為物理地址(PA) 104。虛擬地址A、B、C和D存儲在內(nèi)容可尋址存儲器(CAM) 112中。虛擬地址的一部分形成標簽110,所述標簽與虛擬地址102進行比較以確定用于虛擬地址102的翻譯是否存在于TLB100中。如果存在命中,那么使用多路分用器邏輯108從隨機存取存儲器(RAM) 106讀出對應物理地址:P、Q、R或S,以便形成物理地址104。例如A、B、C或D等虛擬地址連同其對應物理地址翻譯P、Q、R或S可組合地稱為TLB100中的條目。
      [0008]例如TLB100的TLB中的條目可以若干方式填充。用于評估TLB中的填充或更新的常用準則包含:何時將填充TLB條目;新條目在TLB中可放置于何處;以及在TLB的每次更新期間可填充多少TLB條目。此項技術(shù)中已知兩種常規(guī)技術(shù)用于更新或填充TLP條目。[0009]稱為“軟件填充”的第一種技術(shù)如下滿足以上用于填充TLB的準則:依據(jù)在軟件中起始的填充命令來執(zhí)行填充;在由軟件指定的地址處執(zhí)行填充;以及常規(guī)上,軟件填充適用于TLB中的單個條目。
      [0010]稱為“需求填充”的第二種技術(shù)通常在用于中央處理單元(CPU)的MMU中使用。需求填充如下滿足用于填充TLB的準則:依據(jù)TLB中的未中執(zhí)行填充;在造成未中的地址處執(zhí)行填充;以及需求填充常規(guī)上適用于TLB中對應于造成未中的地址的單個條目。需求填充的一個優(yōu)點是依據(jù)未中僅在需要時填充TLB條目。然而,伴隨的缺點是每次TLB在等待填充所需TLB條目時對TLB用戶引起暫停。
      [0011]需求填充可為用于CPU的足夠解決方案,因為程序通常包含較高的時間局部性程度,即相同地址在時間上是靠近在一起存取。然而,串流存取可能有時不展現(xiàn)時間局部性。串流存取可通常包括可在突發(fā)中執(zhí)行的若干組一次或一次以上存取。舉例來說,可能不展現(xiàn)較高的時間局部性程度的串流存取可包含從多媒體加速器(例如,顯示引擎)的存取、在存儲器復制期間從CPU的存取。與再使用相同地址相比,缺乏時間局部性的此些串流存取可每次針對新地址。因此,需求填充可造成TLB性能的降級。此降級可尤其在為除了 CPU以外的裝置設計的MMU中可見,所述MMU例如系統(tǒng)MMU或輸入/輸出(I/0)MMU。
      [0012]關于除了串流存取以外的存取(稱為“非串流存取”),TLB的大小在有限情況下可增加以實現(xiàn)TLB未中的減少。然而,對于串流存取,增加TLB大小并不賦予相同益處。事實上,即使理論上TLB大小朝向無限大增加,在若干情況下也可表現(xiàn)出TLB性能可能因未中和伴隨的暫停而持續(xù)嚴重降級。
      [0013]因此,尤其相對于不具有時間局部性的存取,此項技術(shù)中需要不受因高未中率造成的性能降級的危害的TLB填充技術(shù)。

      【發(fā)明內(nèi)容】

      [0014]示范性實施例是針對用于存儲器管理單元(MMU)的系統(tǒng)和方法,其經(jīng)配置以用預期將在未來使用的地址翻譯條目自動地預填充翻譯旁視緩沖器(TLB),進而減少TLB未中率且改善性能。
      [0015]舉例來說,實施例是針對經(jīng)配置以用翻譯條目自動預填充TLB的MMU,其中對應于所述預填充的地址可基于預測來選擇。一個或一個以上實施例可以超過對應于TLB中的未中條目的地址的預定數(shù)目的鄰近地址來預填充TLB條目。實施例還可基于從接收自MMU外部的代理的提示地址值導出的預測而預填充TLB。
      [0016]在示范性實施例中,TLB預填充可基于跨度值而執(zhí)行,使得從因以跨度值遞增(或遞減)未中條目的地址而形成的地址預取條目??缍戎悼蔀轭A定的,且可進一步以軟件編程且存儲在寄存器中??缍戎狄部赏ㄟ^使用跨度預測器邏輯來動態(tài)計算,所述邏輯經(jīng)配置以分析由TLB中的未中條目形成的跨度模式。
      [0017]示范性實施例還可針對用于多次串流存取的TLB預填充。多次串流存取可從要求從系統(tǒng)MMU的串流存取的多個外部代理導出,其中所述多次串流存取可不共享共同屬性或跨度值??刹捎枚鄠€跨度預測器來支持多次串流存取的地址翻譯需要。
      [0018]示范性實施例是針對一種充填翻譯旁視緩沖器(TLB)的方法,所述方法包括:接收用于通過所述TLB翻譯成物理地址的第一虛擬地址;以及在單個突發(fā)中,以用于從所述第一虛擬地址導出的一個或一個以上預填充虛擬地址的第一流的翻譯預填充所述TLB。
      [0019]另一示范性實施例是針對一種用于充填翻譯旁視緩沖器(TLB)的設備,所述設備包括:經(jīng)配置以產(chǎn)生用于通過所述TLB翻譯成物理地址的第一虛擬地址的邏輯;以及經(jīng)配置以在單個突發(fā)中以用于從所述第一虛擬地址導出的一個或一個以上預填充虛擬地址的第一流的翻譯預填充所述TLB的邏輯。
      [0020]另一示范性實施例是針對一種充填翻譯旁視緩沖器(TLB)的方法,所述方法包括:以用于在第一速率下產(chǎn)生的虛擬地址的第一流的地址翻譯充填所述TLB的第一組條目;以及以用于在第二速率下產(chǎn)生的虛擬地址的第二流的地址翻譯充填所述TLB的第二組條目。
      [0021]另一示范性實施例是針對一種地址產(chǎn)生單元(AGU),其包括:經(jīng)配置以在第一速率下產(chǎn)生虛擬地址的第一流以用于翻譯旁視緩沖器(TLB)中的翻譯的邏輯;以及經(jīng)配置以在第二速率下產(chǎn)生虛擬地址的第二流以用于TLB中的翻譯的邏輯。
      [0022]另一示范性實施例是針對一種用于充填翻譯旁視緩沖器(TLB)的系統(tǒng),所述系統(tǒng)包括:用于接收用于通過所述TLB翻譯成物理地址的第一虛擬地址的裝置;以及用于在單個突發(fā)中以用于從所述第一虛擬地址導出的一個或一個以上預填充虛擬地址的第一流的翻譯預填充所述TLB的裝置。
      [0023]另一示范性實施例是針對一種用于充填翻譯旁視緩沖器(TLB)的系統(tǒng),所述系統(tǒng)包括:用于以用于在第一速率下產(chǎn)生的虛擬地址的第一流的地址翻譯充填所述TLB的第一組條目的裝置;以及以用于在第二速率下產(chǎn)生的虛擬地址的第二流的地址翻譯充填所述TLB的第二組條目的裝置。
      [0024]另一示范性實施例是針對一種包括代碼的非暫時性計算機可讀存儲媒體,所述代碼在由處理器執(zhí)行時致使所述處理器執(zhí)行用于充填翻譯旁視緩沖器(TLB)的操作,所述非暫時性計算機可讀存儲媒體包括:用于接收用于通過所述TLB翻譯成物理地址的第一虛擬地址的代碼;以及用于在單個突發(fā)中以用于從所述第一虛擬地址導出的一個或一個以上預填充虛擬地址的第一流的翻譯預填充所述TLB的代碼。
      [0025]另一示范性實施例是針對一種包括代碼的非暫時性計算機可讀存儲媒體,所述代碼在由處理器執(zhí)行時致使所述處理器執(zhí)行用于充填翻譯旁視緩沖器(TLB)的操作,所述非暫時性計算機可讀存儲媒體包括:用于以用于在第一速率下產(chǎn)生的虛擬地址的第一流的地址翻譯充填所述TLB的第一組條目的代碼;以及以用于在第二速率下產(chǎn)生的虛擬地址的第二流的地址翻譯充填所述TLB的第二組條目的代碼。
      【專利附圖】

      【附圖說明】
      [0026]呈現(xiàn)附圖旨在幫助描述本發(fā)明的實施例,且提供附圖僅用于實施例的說明且不是對其進行限制。
      [0027]圖1說明常規(guī)TLB的示意性表示。
      [0028]圖2A到2B說明具有作用TLB和未來TLB分類的示范性MMU的示意性表示。
      [0029]圖3A到3B說明包括根據(jù)示范性實施例的用于充填TLB的地址產(chǎn)生單元的系統(tǒng)。
      [0030]圖4說明具有發(fā)射多次串流存取的多個客戶端的示范性系統(tǒng)MMU。
      [0031]圖5說明根據(jù)示范性實施例的充填TLB的方法的流程圖?!揪唧w實施方式】
      [0032]在針對本發(fā)明的具體實施例的以下描述和相關圖式中揭示本發(fā)明的方面。在不脫離本發(fā)明范圍的情況下可設想替代實施例。另外,將不詳細描述或者將省略本發(fā)明的眾所周知的元件,以免混淆本發(fā)明的相關細節(jié)。
      [0033]本文使用詞語“示范性”來表示“充當實例、例子或說明”。本文描述為“示范性”的任何實施例均不一定解釋為比其它實施例優(yōu)選或有利。同樣,術(shù)語“本發(fā)明的實施例”不要求本發(fā)明的所有實施例均包含所討論的特征、優(yōu)點或操作模式。
      [0034]本文使用的術(shù)語是僅為了描述特定實施例的目的,且既定不限制本發(fā)明的實施例。如本文使用,單數(shù)形式“一”和“所述”既定也包含復數(shù)形式,除非上下文清楚地另外指示。將進一步了解,術(shù)語“包括”和/或“包含”在本文使用時指定所陳述特征、整體、步驟、操作、元件和/或組件的存在,但不排除一個或一個以上其它特征、整體、步驟、操作、元件、組件和/或其群組的存在或添加。
      [0035]此外,在例如計算裝置的元件將執(zhí)行的動作序列方面描述許多實施例。將認識到,本文描述的各種動作可由特定電路(例如,專用集成電路(ASIC))執(zhí)行,由正由一個或一個以上處理器執(zhí)行的程序指令執(zhí)行,或由兩者的組合執(zhí)行。另外,本文描述的這些動作序列可視為完全在任一形式的計算機可讀存儲媒體內(nèi)體現(xiàn),所述計算機可讀存儲媒體中存儲有對應的計算機指令集,所述計算機指令在執(zhí)行后將即刻致使相關聯(lián)處理器執(zhí)行本文描述的功能性。因此,本發(fā)明的各種方面可以若干不同形式體現(xiàn),所述形式全部已預期在所主張標的物的范圍內(nèi)。另外,對于本文描述的實施例中的每一者,任何此類實施例的對應形式可在本文描述為例如“經(jīng)配置以”執(zhí)行所描述動作的“邏輯”。
      [0036]示范性實施例包含TLB填充技術(shù),其克服了常規(guī)TLB填充技術(shù)的若干限制。此些示范性TLB填充可由存儲器管理單元(MMU)執(zhí)行。舉例來說,與例如軟件填充和需求填充等常規(guī)技術(shù)相比,示范性TLB填充技術(shù)可不受高未中率影響。示范性TLB填充可不需要等待軟件命令或TLB未中,而是可事先預測TLB填充且事先預填充TLB。以此方式,可避免暫停,且可從關鍵路徑中隱藏和移除用于未來存取的頁表巡行所花費的時間。舉例來說,可在正存取TLB中的當前條目的同時執(zhí)行TLB預填充,使得通過在已依據(jù)未中而建立對地址的要求之后起始TLB填充過程而不招致長延遲。在示范性實施例中可以若干方式執(zhí)行此些TLB預填充。
      [0037]—個實施例包括對常規(guī)需求填充的修改,本文稱為“具有空間預取的需求填充”。在此實施例中,依據(jù)未中在TLB中填充的條目的數(shù)目被增加超過在所述未中時正在未中的單個條目??梢罁?jù)未中而填充數(shù)目“N”個鄰近條目。與常規(guī)需求填充相比,示范性實施例中的具有空間預取的需求填充可滿足用于如下評估TLB中的填充的準則:可依據(jù)TLB未中執(zhí)行填充;可在造成未中的地址處執(zhí)行填充;以及可填充鄰近于對應于未中的地址的多達N個鄰近地址。可見,對常規(guī)需求填充的一個改進是在TLB中事先預測未來填充且填充N個鄰近地址。
      [0038]具有空間預取的需求填充可利用串流存取的地址中的任何現(xiàn)存空間局部性。如本文描述,串流存取或流可通常指代可在單個突發(fā)中執(zhí)行的一組一個或一個以上存取或事務??臻g局部性通常指代在地址空間中彼此靠近的地址所展現(xiàn)的性質(zhì)。換句話說,鄰近地址展現(xiàn)空間局部性。因此,如果串流存取可能展現(xiàn)空間局部性,那么事先預取鄰近地址將確保在未來存取期間在TLB中存取預取的數(shù)據(jù),因此產(chǎn)生TLB命中。
      [0039]利用地址中的空間局部性的過程可類似于增加常規(guī)數(shù)據(jù)高速緩沖存儲器的高速緩沖存儲器線大小,因此高速緩沖存儲器線通常包括鄰近地址。因此,關于TLB填充,具有空間預取的需求填充可利用大于頁表條目(PTE)的大小的總線寬度。舉例來說,在單個循環(huán)中可獲取一個以上PTE。通過說明,假定PTE是32位寬。假設PTE2是對應于128位寬數(shù)據(jù)總線的128位對準線中的第三條目,且PTE2對應于需求填充。在此情境中,頁表巡行邏輯可經(jīng)配置以在與獲取PTE2所需的持續(xù)時間相同的持續(xù)時間中獲取鄰近于PTE2的再3個PTE0因此,在單個存取中可獲取鄰近PTE的集合:{PTE0,PTEl,PTE2,PTE3},而不是單獨獲取 PTE2。
      [0040]另一實施例包含本文稱為“流預填充”的TLB填充技術(shù)。流預填充可識別串流存取內(nèi)的地址流,且在將需要地址流中的條目時事先起始TLB填充。流預填充的一方面是實現(xiàn)用原本將依據(jù)常規(guī)需求填充而填充的一個或一個以上條目的準確序列填充TLB。然而,與常規(guī)需求填充的明顯不同在于,流預填充可經(jīng)配置以在需求填充可起始TLB填充之前起始相同的TLB填充。因此,流預填充可有效地隱藏常規(guī)需求填充中依據(jù)TLB未中由頁表巡行招致的等待時間。
      [0041]流預填充如下滿足用于評估TLB中的填充的準則:在TLB未中之前如有效地隱藏由頁表巡行招致的等待時間所要求那樣長的時間執(zhí)行TLB填充;針對已經(jīng)預測為潛在地未中的地址執(zhí)行TLB填充,所述地址即在常規(guī)需求填充的過程中原本已遇到且未中的地址;流預填充每次填充單個TLB條目。
      [0042]示范性實施例可以若干方式中的一種執(zhí)行在TLB中將潛在地未中的地址的預測以用于流預填充。一個此實施例包含從在實施流預填充的示范性MMU外部的代理接收預測。預填充提示可由外部代理產(chǎn)生。先入先出(FIFO)機制可由預填充提示充填。MMU可經(jīng)配置以從預填充FIFO接收預填充提示。
      [0043]作為說明性實例,顯示單元的顯示器控制器可經(jīng)配置以連續(xù)地掃描過單調(diào)增加的地址(虛擬地址)。顯示器控制器的地址產(chǎn)生單元可經(jīng)配置以同時產(chǎn)生對應單調(diào)增加的頁地址集合。通常,頁大小(例如4KB)大于顯示器控制器的個別存取(例如128B)。因此,由地址產(chǎn)生單元產(chǎn)生的若干地址可共享同一頁,且因此對于每一個別存取可能不需要新頁翻譯。因此,流預填充可需要僅在其中地址產(chǎn)生單元橫越4KB頁邊界的實例中產(chǎn)生與頁地址翻譯相關的新預測。
      [0044]在用于顯示器控制器的上述流預填充技術(shù)的實施方案中,可跟蹤由地址產(chǎn)生單元產(chǎn)生的地址的一個位。舉例來說,第12個最低有效位,位12可指示4KB(4096B或2~12B)邊界上的地址改變。因此,可在4KB的跨度上觸發(fā)預測,因為位12可在每個4KB跨度上改變。替代地,預測可經(jīng)配置以在4KB的倍數(shù)上觸發(fā),因為外部代理可能正在以大于4KB跨度橫越地址空間。以此方式,可充分事先做出預測,以便隱藏在做出預測本身時涉及的等待時間。作為任選特征,地址或預填充提示向預填充FIFO的傳輸可被截斷,以便保留資源。因此,在以上實例中,對于4KB頁大小,可能需要傳輸僅32位地址的上部20位,其已經(jīng)移位到4KB粒度(例如,通過移出最低有效12位)。因此,預填充FIFO的寬度可減少12位的量。
      [0045]作為示范性MMU中的流預填充的另一實施方案,不限于頁大小的跨度值可用于預測。舉例來說,跨度值可由軟件編程,且可進一步存儲在MMU中的寄存器中。因此,如果MMU的外部代理或其它客戶端請求用于翻譯的特定地址,那么MMU可內(nèi)部地產(chǎn)生與所述特定地址遞增(或遞減)所述跨度值的地址。此內(nèi)部產(chǎn)生的地址可用作用于流預填充的預測,使得如果內(nèi)部產(chǎn)生的地址當前不在TLB中,那么MMU可事先產(chǎn)生對內(nèi)部產(chǎn)生的地址的預填充請求。因此,可隱藏與用于內(nèi)部產(chǎn)生的地址的頁表巡行相關聯(lián)的任何延遲。
      [0046]流預填充的又一實施方案涉及通過使用跨度預測器動態(tài)地檢測和更改跨度值。舉例來說,每一 TLB未中可經(jīng)確定為在距前一未中的固定偏移或跨度值處遇到。此確定可從跨度預測器獲得。跨度預測器可經(jīng)配置以存儲最新或當前TLB未中的地址、可經(jīng)初始化為默認值的當前跨度值,以及與預測器置信值相關聯(lián)的任選的一個或一個以上位。在遇到下一 TLB未中后,可用下一 TLB未中與存儲的當前TLB未中之間的地址差來更新跨度值;可用下一 TLB未中來代替當前TLB的地址;且可遞增置信值。此過程可重復,使得可基于當前存儲的TLB未中地址與遇到的下一 TLB未中地址之間的地址差而將當前存儲的跨度值與實際跨度值進行比較。如果跨度值匹配,那么當前存儲的跨度值可經(jīng)證實為用于未來跨度值的良好預測符;且對應地可遞增置信值。一旦置信水平達到預定水平,跨度預測器便可基于當前存儲的TLB未中地址和當前存儲的跨度值而產(chǎn)生對所預測地址的預填充請求。
      [0047]在具有動態(tài)確定的跨度值的流預填充的以上實施方案中,MMU可進一步經(jīng)配置以在基于需求填充而填充的TLB條目與通過流預填充而填充的TLB條目之間進行區(qū)分。舉例來說,通過流預填充而填充的TLB條目可由預填充指示符位標記或充填經(jīng)指定為“未來TLB”的TLB的選定區(qū)段中??缍阮A測器可經(jīng)配置以監(jiān)視需求未中以及預填充命中(由預填充指示符標記或位于未來TLB部分中)。為了計算跨度的目的,可將需求未中以及預填充命中兩者視為未中。將認識到,如果以此方式未考慮預填充命中,那么跨度預測器可能不準確,因為已經(jīng)預填充的潛在需求未中可產(chǎn)生命中,但跨度預測器在其跨度計算中原本已忽視此潛在需求未中,因為原本已遇到命中。
      [0048]實施例也可包含經(jīng)配置以確保使用動態(tài)預測的跨度值的流預填充實現(xiàn)用以隱藏由TLB未中造成的等待時間的充分預先的預填充與并不過于預先地填充TLB而使得TLB可以充填有過多未使用預填充條目而結(jié)束之間的所要平衡的邏輯。實現(xiàn)所要平衡的一個示范性技術(shù)可包含對TLB中已通過預填充用指示符位充填的每一條目加標簽。當首次存取此加標簽的條目時,可清除指示符位,且可起始基于預測跨度值的針對下一地址的預填充。作為任選特征,TLB中通過預填充充填的第一條目可由軟件建立。
      [0049]現(xiàn)在參見圖2A到2B,參考TLB200說明用于實現(xiàn)平衡的另一示范性技術(shù),其中TLB200可經(jīng)配置以將虛擬地址202翻譯為物理地址204。TLB200可經(jīng)分割為作用TLB206和未來TLB208。雖然作用TLB206和未來TLB208兩者是依據(jù)地址翻譯請求來存取,但僅未來TLB208是用預填充充填。作用TLB206和未來TLB208可被同時或按順序存取。如圖2A中的動作210說明,作用TLB206中的未中可檢查未來TLB208是否有未中條目??杉せ铐摫硌残衅?20以搜索未中條目或預填充未來TLB208。此外,來自外部源214的提示也可用于潛在TLB填充的預測,事先激活頁表巡行器220以便隱藏對應的等待時間。而且,可在未來TLB中帶來命中的地址請求可致使命中條目遷移到作用TLB(如圖2中的動作212說明)。
      [0050]參見圖2B,可修改動作210以使得作用TLB206中的未中可檢查未來TLB208是否有未中條目,激活跨度預測器216且進而起始潛在預填充以充填未來TLB208。[0051]在一個或一個以上實施例中,跨度值可為可編程的,使得程序員可動態(tài)地調(diào)整跨度值以用于特定應用。而且,實施例也可包含從接收自例如多媒體裝置等外部裝置的提示導出的跨度值。
      [0052]現(xiàn)在將參見圖3A到3B描述與流預填充相關的其它實施例。如例如圖3A到3B中說明,裝置302可經(jīng)配置以存取TLB306以用于虛擬地址(VA)到對應于存儲器308的物理地址(PA)的翻譯。裝置302可為產(chǎn)生虛擬地址的需求流以用于TLB306中的翻譯的任一裝置。舉例來說,裝置302可為處理器或例如顯示器控制器等串流裝置,其經(jīng)配置以讀取鄰近存儲器地址以便讀出顯示數(shù)據(jù)。因此,在此些實例中裝置302可產(chǎn)生對應于存儲器308中的鄰近地址的需求流。如圖示,裝置302可包含用于產(chǎn)生此需求流的地址產(chǎn)生單元(AGU) 304。
      [0053]在示范性實施例中,AGU304可另外經(jīng)配置以除了需求流以外還產(chǎn)生虛擬地址的預填充流。由AGU304為預填充流產(chǎn)生的虛擬地址可從需求流偏移所要的量,使得預填充流可包含處于需求流之前的地址。舉例來說,預填充流中的地址可處于需求流中的地址之前一個對應于頁大小的偏移值。所要偏移值可為正或負的,且可從可編程寄存器導出。在一些實施例中,AGU304可經(jīng)配置以僅在頁交叉處產(chǎn)生用于預填充流的新地址。舉例來說,如果頁大小是4KB,那么AGU304可在每次需求流的第12個最低有效位切換時產(chǎn)生新預填充地址請求。因此,AGU304可經(jīng)配置以在兩個不同速率下產(chǎn)生兩個相異流。舉例來說,第一流(需求流)可在第一速率(例如,對應于對可每個時鐘循環(huán)產(chǎn)生的鄰近存儲器地址的請求)下產(chǎn)生,且第二流(例如,預填充流)可在第二速率(例如,在需求流橫越頁邊界的每個實例處)下產(chǎn)生。因此,TLB306可由來自第一和第二流兩者的翻譯請求同時充填。如先前描述,可包含指示符以跟蹤TL306的由第一和第二流充填的條目,且可基于TLB306中的基于需求的條目與預填充條目之間的所要平衡來調(diào)整相應的第一和第二產(chǎn)生速率。
      [0054]在一些實施例中,預填充流可經(jīng)指定為包括作為只讀請求的預填充請求,以便避免更改存儲器308。在這些實施例中,裝置302可經(jīng)配置以跟蹤突出的需求請求且忽略從存儲器裝置308返回的針對預填充請求的數(shù)據(jù)。在一些實施例中,裝置302還可高速緩沖存儲從預填充請求返回的預填充數(shù)據(jù),因為預先知道預填充數(shù)據(jù)將僅是未來需求請求所需要的。
      [0055]如圖3A所示,需求流和預填充流兩者可在從裝置302到TLB306的共同請求通道、通道307上傳送。然而,涉及共同通道的此配置可致使預填充請求阻礙更為時間關鍵的需求請求的進程。為了避免對需求請求的此種妨礙,可用指示符位界定預填充請求,進而使TLB306能夠區(qū)分預填充請求與對存儲器308的需求請求(讀/寫)。TLB306可因此避免將額外讀取事務轉(zhuǎn)發(fā)到存儲器308,因為裝置302將不會預期返回對應于預填充請求的讀取數(shù)據(jù)。
      [0056]在涉及共同通道307的一些配置中,需求流和預填充流可通過采用較低等級鏈路協(xié)議而在邏輯上分離。在操作中,此些配置可邏輯上等效于為需求流和預填充流配置單獨的通道。
      [0057]在另外的實施例中,單獨通道可事實上經(jīng)配置以用于需求流和預填充流。舉例來說,參見圖3B,如圖示可提供單獨通道、需求請求通道309和預填充請求通道310以用于裝置302與TLB306之間的通信。此些單獨通道可減少例如對共同通道307上的需求請求的妨礙等影響。配置單獨通道還可避免對用以界定預填充請求的指示符位的需要,因為可基于從哪一通道接收到請求來提供此指示。
      [0058]返回參見圖2A,將認識到說明包括用于需求流和預填充流的單獨通道的另一配置。包括虛擬地址202的通道描繪需求流,而如先前說明的經(jīng)配置以用于做出預測的外部源214產(chǎn)生預填充流。因此可見,需求流和預填充流可從單獨裝置產(chǎn)生且無需如圖3A到3B中描繪從同一裝置302產(chǎn)生。舉例來說,在視頻解碼應用的情況下,外部源214可為幀預處理裝置,其經(jīng)配置以在高速下剖析數(shù)據(jù)流,而不執(zhí)行對數(shù)據(jù)流的全解碼以便確定將由全幀解碼器調(diào)用的存儲器頁。組成外部源214的預處理裝置可在全幀解碼器裝置之前運行,其中所述預處理裝置可能夠代表全幀解碼器產(chǎn)生預填充請求。到全幀解碼器可需要存取存儲器頁時,這些存儲器頁可能已經(jīng)預填充到TLB (例如,未來TLB208)中,進而確保全幀解碼器將不需要等待TLB未中被服務。
      [0059]又一實施例包含本文稱為“具有空間預取的流預填充”的TLB填充技術(shù)。本質(zhì)上,具有空間預取的流預填充可在流預填充的每次填充上獲取一個以上條目。具有空間預取的流預填充可如下滿足用于評估TLB中的填充的準則:可在預測TLB未中之前足夠長的時間填充TLB以例如隱藏由頁表巡行招致的等待時間;可在預測未中的地址處起始TLB填充;以及可填充多達數(shù)目“N”個鄰近地址。因此,與流預填充相比,具有空間預取的流預填充可在每次存取時在TLB中填充N個鄰近地址。因此,具有空間預取的流預填充可組合如上論述的流預填充和具有空間預取的填充的有益方面。
      [0060]示范性實施例還可包含用于多次串流存取的TLB填充,其由以過濾能力增強的跨度預測器支持。舉例來說,示范性MMU可迎合一個或一個以上客戶端且進而支持多個地址流。產(chǎn)生對MMU的存取的所有地址流可能不共享共同跨度值。因此,共享共同跨度預測器可能不能充分支持多個地址流。為了支持多個地址流,可采用多個跨度預測器或具有多個跨度寄存器的跨度預測器。因此,可基于地址流中的特定代表位來將兩個或兩個以上地址流導向兩個或兩個以上預測器。地址流中可用以確定地址流所導向的預測器邏輯的位的實例包含:來自給定客戶端的發(fā)源流的邏輯主ID (或MID),讀/寫指示符位,事務大小指示符位等等。
      [0061]現(xiàn)在參見圖4,說明采用TLB預填充用于多次串流存取的示范性MMU系統(tǒng)。多次串流存取可為并行的和/或同時的。如圖示,系統(tǒng)MMU (SMMU) 400為若干多媒體客戶端402a-402n提供翻譯服務??蛻舳?02a_402n可為包含CPU的任何裝置,且可經(jīng)由例如總線
      410等共享總線與SMMU400通信。每一客戶端402a_402n可將地址流供應到SMMU400以用于翻譯。多個地址流可不具有相同跨度值。舉例來說,第一流(例如,來自客戶端402a)可具有第一跨度值,其中第一流是基于對應于第一虛擬地址(可從客戶端402a接收)的第一提示值。類似地,第二流(例如,來自客戶端402b)可具有第二跨度值,其中第二流是基于對應于第二虛擬地址(可從客戶端402b接收)的第二提示值。SMMU400可包括TLB404,其可與第二流同時和/或并行地以第一流預填充。對應于第一流和第二流,用于兩個或兩個以上預測器的邏輯可存在于圖4中指定為預測器406的框中,以幫助TLB404翻譯例如第一流和第二流的多個地址流。頁表巡行器408也可經(jīng)配置以支持多個同時和/或并行操作以獲得翻譯(例如,對應于第一流和第二流)。
      [0062]因此,本文描述的示范性實施例可經(jīng)配置以預填充TLB以使得示范性MMU可得到改善的性能、節(jié)省資源成本且消耗較少的功率。如先前描述,常規(guī)TLB可經(jīng)配置以通過僅增加TLB大小而減少針對非串流存取的未中率。然而,常規(guī)TLB無法針對串流存取實現(xiàn)減少的未中率,即使TLB大小理論上無限增加也是如此。然而,示范性實施例可經(jīng)配置以減少TLB未中率且可有效地消除TLB未中,即使在串流存取的情況下也是如此。
      [0063]而且,示范性實施例可通過使用空間預取將多個頁表巡行組合為單個事務,這可有效地減少系統(tǒng)中的相異存儲器事務的數(shù)目。因此,可改善存儲器效率且可減少資源競爭,進而還改善可能不直接要求TLB存取的系統(tǒng)組件的性能。
      [0064]將了解,實施例包含用于執(zhí)行本文揭示的過程、功能和/或算法的各種方法。舉例來說,如圖5中說明,實施例可包含充填翻譯旁視緩沖器(TLB)(例如,作用TLB206和未來TLB208)的方法,所述方法包括:接收用于通過TLB翻譯成物理地址的第一虛擬地址(例
      如,虛擬地址202和物理地址204)-框502 ;以及在單個突發(fā)中,以用于從第一虛擬地址
      導出的預填充虛擬地址流的翻譯預填充TLB(例如,通過跨度預測器216和頁表巡行器220預填充未來TLB208)——框504。
      [0065]所屬領域的技術(shù)人員將了解,可使用多種不同技藝和技術(shù)中的任一者來表示信息和信號。舉例來說,在整個以上描述中可能參考的數(shù)據(jù)、指令、命令、信息、信號、位、符號和碼片可通過電壓、電流、電磁波、磁場或粒子、光場或粒子或其任一組合來表示。
      [0066]此外,所屬領域的技術(shù)人員將了解,結(jié)合本文揭示的實施例描述的各種說明性邏輯塊、模塊、電路和算法步驟可實施為電子硬件、計算機軟件或兩者的組合。為了清楚地說明硬件與軟件的這種可互換性,上文已大體上在其功能性方面描述了各種說明性組件、塊、模塊、電路和步驟。將此功能性實施為硬件還是軟件取決于特定應用或?qū)傮w系統(tǒng)強加的設計約束。所屬領域的技術(shù)人員可針對每一特定應用以不同方式實施所描述的功能性,但此實施方案決策不應解釋為造成脫離本發(fā)明的范圍。
      [0067]結(jié)合本文揭示的實施例描述的方法、序列和/或算法可直接以硬件、以由處理器執(zhí)行的軟件模塊或以兩者的組合來體現(xiàn)。軟件模塊可駐留在RAM存儲器、快閃存儲器、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可裝卸式盤、CD-ROM或此項技術(shù)中已知的任一其它形式的存儲媒體。示范性存儲媒體耦合到處理器,使得處理器可從存儲媒體讀取信息以及向存儲媒體寫入信息。在替代例中,存儲媒體可與處理器成一體式。
      [0068]參見圖6,描繪包含根據(jù)示范性實施例配置的多核心處理器的無線裝置的特定說明性實施例的框圖,且將所述裝置一股地指定為600。裝置600包含數(shù)字信號處理器(DSP) 664,其可包括例如圖2的作用TLB206、未來TLB208、頁表巡行器220等邏輯,其可耦合到如圖示的存儲器632??蓮南挛拿枋龅耐獠垦b置接收虛擬地址202和下一虛擬頁預測(提示值)。舉例來說,圖6還展示例如顯示器控制器626的外部裝置,其耦合到DSP664和顯示器628。例如譯碼器/解碼器(CODEC) 634 (例如,音頻和/或話音CODEC)等外部裝置也可耦合到DSP664。還說明其它組件/外部裝置,例如無線控制器640 (可包含調(diào)制解調(diào)器)。揚聲器636和麥克風638可耦合到C0DEC634。圖6還指示無線控制器640可耦合到無線天線642。在特定實施例中,DSP664、顯示器控制器626、存儲器632、C0DEC634以及無線控制器640包含在系統(tǒng)級封裝或芯片上系統(tǒng)裝置622中。
      [0069]在特定實施例中,輸入裝置630和電源644耦合到芯片上系統(tǒng)裝置622。而且,在特定實施例中,如圖6中說明,顯示器628、輸入裝置630、揚聲器636、麥克風638、無線天線642以及電源644在芯片上系統(tǒng)裝置622外部。然而,顯示器628、輸入裝置630、揚聲器636、麥克風638、無線天線642以及電源644中的每一者可耦合到芯片上系統(tǒng)裝置622的組件,例如接口或控制器。
      [0070]應注意,雖然圖6描繪無線通信裝置,但DSP664和存儲器632也可集成到機頂盒、音樂播放器、視頻播放器、娛樂單元、導航裝置、個人數(shù)字助理(PDA)、固定位置數(shù)據(jù)單元或計算機中。處理器(例如,DSP664)也可集成到此裝置中。
      [0071]因此,本發(fā)明的實施例可包含體現(xiàn)通過預填充TLB來充填TLB的方法的計算機可讀媒體。因此,本發(fā)明不限于所說明的實例,且用于執(zhí)行本文描述的功能性的任何裝置均包含在本發(fā)明的實施例中。
      [0072]雖然前述揭示內(nèi)容展示本發(fā)明的說明性實施例,但應注意,在不脫離如所附權(quán)利要求書界定的本發(fā)明范圍的情況下可在其中做出各種改變和修改。本文描述的根據(jù)本發(fā)明實施例的方法權(quán)利要求的步驟和/或動作無需以任何特定次序執(zhí)行。此外,雖然可能以單數(shù)形式描述或主張本發(fā)明的元件,但復數(shù)形式是預期的,除非明確陳述限于單數(shù)形式。
      【權(quán)利要求】
      1.一種充填翻譯旁視緩沖器TLB(206、208)的方法,所述方法包括: 接收(502)用于通過所述TLB翻譯成物理地址(204)的第一虛擬地址(202);以及 在單個突發(fā)中,以用于從所述第一虛擬地址導出的一個或一個以上預填充虛擬地址的第一流的翻譯預填充(504)所述TLB。
      2.根據(jù)權(quán)利要求1所述的方法,其中所述第一虛擬地址是從接收自第一外部裝置的第一提示地址值導出的。
      3.根據(jù)權(quán)利要求1所述的方法,其中一個或一個以上預填充虛擬地址的所述第一流包括基于第一可編程跨度值從所述第一虛擬地址導出的虛擬地址。
      4.根據(jù)權(quán)利要求3所述的方法,其中所述第一可編程跨度值是通過軟件動態(tài)確定的。
      5.根據(jù)權(quán)利要求3所述的方法,其中所述第一可編程跨度值是預定常數(shù)。
      6.根據(jù)權(quán)利要求3所述的方法,其中所述第一可編程跨度值是通過分析TLB未中的模式來確定的。
      7.根據(jù)權(quán)利要求3所述的方法,其中所述第一可編程跨度值是基于從外部裝置導出的提示值。
      8.根據(jù)權(quán)利要求1所述的方法,其中一個或一個以上預填充虛擬地址的所述第一流鄰近于所述第一虛擬地址。
      9.根據(jù)權(quán)利要求1所述的方法,其中以用于一個或一個以上預填充虛擬地址的所述第一流的翻譯預填充所述TLB是在所述TLB接收到針對對應于所述一個或一個以上預填充虛擬地址的地址翻譯的需求請求之前執(zhí)行。
      10.根據(jù)權(quán)利要求1所述的方法,其中所述第一虛擬地址造成所述TLB中的未中。
      11.根據(jù)權(quán)利要求1所述的方法,其進一步包括: 接收用于通過所述TLB翻譯成物理地址的第二虛擬地址;以及 在單個突發(fā)中,以用于從所述第二虛擬地址導出的一個或一個以上預填充虛擬地址的第二流的翻譯預填充所述TLB,其中以用于所述第二流的翻譯預填充所述TLB是與以用于所述第一流的翻譯預填充所述TLB同時地和/或并行地執(zhí)行。
      12.根據(jù)權(quán)利要求11所述的方法,其中所述第二虛擬地址是從接收自第二外部裝置的第二提示地址值導出的。
      13.一種用于充填翻譯旁視緩沖器TLB(206、208)的設備,所述設備包括: 經(jīng)配置以接收用于通過所述TLB翻譯成物理地址(204)的第一虛擬地址(202)的邏輯;以及 經(jīng)配置以在單個突發(fā)中以用于從所述第一虛擬地址導出的一個或一個以上預填充虛擬地址的第一流的翻譯預填充所述TLB的邏輯(216、220)。
      14.一種設備,其包括用于執(zhí)行根據(jù)權(quán)利要求1到12中任一權(quán)利要求所述的方法的裝置。
      15.一種包括計算機可讀媒體的計算機程序產(chǎn)品,所述計算機可讀媒體包括用于致使計算機或處理器執(zhí)行根據(jù)權(quán)利要求1到12中任一權(quán)利要求所述的方法的至少一個指令。
      【文檔編號】G06F12/10GK103443777SQ201280015340
      【公開日】2013年12月11日 申請日期:2012年3月5日 優(yōu)先權(quán)日:2011年3月3日
      【發(fā)明者】博胡斯拉夫·雷赫利克, 托馬斯·安德魯·薩托里烏斯, 邁克爾·威廉·莫羅, 雷蒙德·P·帕爾馬 申請人:高通股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1