具有预填充能力的存储器管理单元的制作方法

文档序号:6494731阅读:225来源:国知局
具有预填充能力的存储器管理单元的制作方法
【专利摘要】本发明揭示用于存储器管理单元MMU的系统和方法,其经配置以用预期将在未来使用的地址翻译(202-204)条目自动地预填充翻译旁视缓冲器TLB(206、208),进而减少TLB未中率且改善性能。所述TLB可以翻译条目预填充,其中对应于所述预填充的地址可基于预测来选择。预测可从外部装置(214)导出,或基于跨度值,其中所述跨度值可为预定常数或基于存取模式(216)而动态更改。预填充所述TLB可有效地移除在从关键路径确定针对TLB未中的地址翻译时涉及的等待时间。
【专利说明】具有预填充能力的存储器管理单元
[0001]依据35U.S.C.§ 119主张优先权
[0002]本专利申请案主张2011年3月3日申请的题目为“具有预填充能力的存储器管理单元(MEMORY MANAGEMENT UNIT WITH PRE-FILLING CAPABILITY) ” 的第 61/448,839 号临时申请案的优先权,所述临时申请案转让给本受让人且特此以引用方式并入本文。
【技术领域】
[0003]所揭示的实施例是针对用于管理存储器地址从虚拟地址到物理地址的翻译的存储器管理单元(MMU)。更特定来说,示范性实施例是针对用于管理翻译高速缓冲存储器的高效技术,例如预填充,其中翻译高速缓冲存储器可用于虚拟到物理地址翻译。
【背景技术】
[0004]现代操作系统经常使用虚拟地址方案以便使处理器中的物理存储空间的使用最大化。虚拟存储器是此项技术中众所周知的。虚拟存储器可通过虚拟地址来寻址。与程序相关的虚拟地址空间常规上划分为若干页。页是邻接虚拟存储器地址的块。虽然可参考虚拟地址来写入程序,但对于处理器对程序指令的执行来说,到物理地址的翻译可为必要的。可采用页表来将虚拟地址映射到对应的物理地址。
[0005]存储器管理单元(MMU)常用以处置虚拟地址到物理地址的翻译。MMU可查找包含虚拟到物理地址映射的页表条目(PTE),以便处置翻译。可通过动态地分配和释放物理存储器或数据缓冲器的块来管理物理存储器空间。在此动态分配和释放的过程中,通常自由物理存储器空间变为经分段的,包括不邻接的自由块。因此,邻接虚拟地址范围可变为映射到若干不邻接物理存储器块。因此,可能需要频繁地执行页表查找过程,也称为“页表巡行”,因为邻接虚拟地址可能未常规上映射到邻接物理地址。这些频繁的页表查找可显著影响性倉泛。
[0006]解决频繁的页表查找的一种常规技术包含使用翻译高速缓冲存储器,也称为翻译旁视缓冲器(TLB)。TLB可将用于频繁存取的页的翻译高速缓冲存储在经标记硬件查找表中。因此,如果虚拟地址在TLB中命中,那么对应物理地址翻译可从TLB再使用,而不必招致与页表巡行相关联的成本。
[0007]参见图1,说明TLB的常规实施方案。如图示,TLB100经配置以将虚拟地址(VA) 102翻译为物理地址(PA) 104。虚拟地址A、B、C和D存储在内容可寻址存储器(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条目。此项技术中已知两种常规技术用于更新或填充TLP条目。[0009]称为“软件填充”的第一种技术如下满足以上用于填充TLB的准则:依据在软件中起始的填充命令来执行填充;在由软件指定的地址处执行填充;以及常规上,软件填充适用于TLB中的单个条目。
[0010]称为“需求填充”的第二种技术通常在用于中央处理单元(CPU)的MMU中使用。需求填充如下满足用于填充TLB的准则:依据TLB中的未中执行填充;在造成未中的地址处执行填充;以及需求填充常规上适用于TLB中对应于造成未中的地址的单个条目。需求填充的一个优点是依据未中仅在需要时填充TLB条目。然而,伴随的缺点是每次TLB在等待填充所需TLB条目时对TLB用户引起暂停。
[0011]需求填充可为用于CPU的足够解决方案,因为程序通常包含较高的时间局部性程度,即相同地址在时间上是靠近在一起存取。然而,串流存取可能有时不展现时间局部性。串流存取可通常包括可在突发中执行的若干组一次或一次以上存取。举例来说,可能不展现较高的时间局部性程度的串流存取可包含从多媒体加速器(例如,显示引擎)的存取、在存储器复制期间从CPU的存取。与再使用相同地址相比,缺乏时间局部性的此些串流存取可每次针对新地址。因此,需求填充可造成TLB性能的降级。此降级可尤其在为除了 CPU以外的装置设计的MMU中可见,所述MMU例如系统MMU或输入/输出(I/0)MMU。
[0012]关于除了串流存取以外的存取(称为“非串流存取”),TLB的大小在有限情况下可增加以实现TLB未中的减少。然而,对于串流存取,增加TLB大小并不赋予相同益处。事实上,即使理论上TLB大小朝向无限大增加,在若干情况下也可表现出TLB性能可能因未中和伴随的暂停而持续严重降级。
[0013]因此,尤其相对于不具有时间局部性的存取,此项技术中需要不受因高未中率造成的性能降级的危害的TLB填充技术。

【发明内容】

[0014]示范性实施例是针对用于存储器管理单元(MMU)的系统和方法,其经配置以用预期将在未来使用的地址翻译条目自动地预填充翻译旁视缓冲器(TLB),进而减少TLB未中率且改善性能。
[0015]举例来说,实施例是针对经配置以用翻译条目自动预填充TLB的MMU,其中对应于所述预填充的地址可基于预测来选择。一个或一个以上实施例可以超过对应于TLB中的未中条目的地址的预定数目的邻近地址来预填充TLB条目。实施例还可基于从接收自MMU外部的代理的提示地址值导出的预测而预填充TLB。
[0016]在示范性实施例中,TLB预填充可基于跨度值而执行,使得从因以跨度值递增(或递减)未中条目的地址而形成的地址预取条目。跨度值可为预定的,且可进一步以软件编程且存储在寄存器中。跨度值也可通过使用跨度预测器逻辑来动态计算,所述逻辑经配置以分析由TLB中的未中条目形成的跨度模式。
[0017]示范性实施例还可针对用于多次串流存取的TLB预填充。多次串流存取可从要求从系统MMU的串流存取的多个外部代理导出,其中所述多次串流存取可不共享共同属性或跨度值。可采用多个跨度预测器来支持多次串流存取的地址翻译需要。
[0018]示范性实施例是针对一种充填翻译旁视缓冲器(TLB)的方法,所述方法包括:接收用于通过所述TLB翻译成物理地址的第一虚拟地址;以及在单个突发中,以用于从所述第一虚拟地址导出的一个或一个以上预填充虚拟地址的第一流的翻译预填充所述TLB。
[0019]另一示范性实施例是针对一种用于充填翻译旁视缓冲器(TLB)的设备,所述设备包括:经配置以产生用于通过所述TLB翻译成物理地址的第一虚拟地址的逻辑;以及经配置以在单个突发中以用于从所述第一虚拟地址导出的一个或一个以上预填充虚拟地址的第一流的翻译预填充所述TLB的逻辑。
[0020]另一示范性实施例是针对一种充填翻译旁视缓冲器(TLB)的方法,所述方法包括:以用于在第一速率下产生的虚拟地址的第一流的地址翻译充填所述TLB的第一组条目;以及以用于在第二速率下产生的虚拟地址的第二流的地址翻译充填所述TLB的第二组条目。
[0021]另一示范性实施例是针对一种地址产生单元(AGU),其包括:经配置以在第一速率下产生虚拟地址的第一流以用于翻译旁视缓冲器(TLB)中的翻译的逻辑;以及经配置以在第二速率下产生虚拟地址的第二流以用于TLB中的翻译的逻辑。
[0022]另一示范性实施例是针对一种用于充填翻译旁视缓冲器(TLB)的系统,所述系统包括:用于接收用于通过所述TLB翻译成物理地址的第一虚拟地址的装置;以及用于在单个突发中以用于从所述第一虚拟地址导出的一个或一个以上预填充虚拟地址的第一流的翻译预填充所述TLB的装置。
[0023]另一示范性实施例是针对一种用于充填翻译旁视缓冲器(TLB)的系统,所述系统包括:用于以用于在第一速率下产生的虚拟地址的第一流的地址翻译充填所述TLB的第一组条目的装置;以及以用于在第二速率下产生的虚拟地址的第二流的地址翻译充填所述TLB的第二组条目的装置。
[0024]另一示范性实施例是针对一种包括代码的非暂时性计算机可读存储媒体,所述代码在由处理器执行时致使所述处理器执行用于充填翻译旁视缓冲器(TLB)的操作,所述非暂时性计算机可读存储媒体包括:用于接收用于通过所述TLB翻译成物理地址的第一虚拟地址的代码;以及用于在单个突发中以用于从所述第一虚拟地址导出的一个或一个以上预填充虚拟地址的第一流的翻译预填充所述TLB的代码。
[0025]另一示范性实施例是针对一种包括代码的非暂时性计算机可读存储媒体,所述代码在由处理器执行时致使所述处理器执行用于充填翻译旁视缓冲器(TLB)的操作,所述非暂时性计算机可读存储媒体包括:用于以用于在第一速率下产生的虚拟地址的第一流的地址翻译充填所述TLB的第一组条目的代码;以及以用于在第二速率下产生的虚拟地址的第二流的地址翻译充填所述TLB的第二组条目的代码。
【专利附图】

【附图说明】
[0026]呈现附图旨在帮助描述本发明的实施例,且提供附图仅用于实施例的说明且不是对其进行限制。
[0027]图1说明常规TLB的示意性表示。
[0028]图2A到2B说明具有作用TLB和未来TLB分类的示范性MMU的示意性表示。
[0029]图3A到3B说明包括根据示范性实施例的用于充填TLB的地址产生单元的系统。
[0030]图4说明具有发射多次串流存取的多个客户端的示范性系统MMU。
[0031]图5说明根据示范性实施例的充填TLB的方法的流程图。【具体实施方式】
[0032]在针对本发明的具体实施例的以下描述和相关图式中揭示本发明的方面。在不脱离本发明范围的情况下可设想替代实施例。另外,将不详细描述或者将省略本发明的众所周知的元件,以免混淆本发明的相关细节。
[0033]本文使用词语“示范性”来表示“充当实例、例子或说明”。本文描述为“示范性”的任何实施例均不一定解释为比其它实施例优选或有利。同样,术语“本发明的实施例”不要求本发明的所有实施例均包含所讨论的特征、优点或操作模式。
[0034]本文使用的术语是仅为了描述特定实施例的目的,且既定不限制本发明的实施例。如本文使用,单数形式“一”和“所述”既定也包含复数形式,除非上下文清楚地另外指示。将进一步了解,术语“包括”和/或“包含”在本文使用时指定所陈述特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元件、组件和/或其群组的存在或添加。
[0035]此外,在例如计算装置的元件将执行的动作序列方面描述许多实施例。将认识到,本文描述的各种动作可由特定电路(例如,专用集成电路(ASIC))执行,由正由一个或一个以上处理器执行的程序指令执行,或由两者的组合执行。另外,本文描述的这些动作序列可视为完全在任一形式的计算机可读存储媒体内体现,所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在执行后将即刻致使相关联处理器执行本文描述的功能性。因此,本发明的各种方面可以若干不同形式体现,所述形式全部已预期在所主张标的物的范围内。另外,对于本文描述的实施例中的每一者,任何此类实施例的对应形式可在本文描述为例如“经配置以”执行所描述动作的“逻辑”。
[0036]示范性实施例包含TLB填充技术,其克服了常规TLB填充技术的若干限制。此些示范性TLB填充可由存储器管理单元(MMU)执行。举例来说,与例如软件填充和需求填充等常规技术相比,示范性TLB填充技术可不受高未中率影响。示范性TLB填充可不需要等待软件命令或TLB未中,而是可事先预测TLB填充且事先预填充TLB。以此方式,可避免暂停,且可从关键路径中隐藏和移除用于未来存取的页表巡行所花费的时间。举例来说,可在正存取TLB中的当前条目的同时执行TLB预填充,使得通过在已依据未中而建立对地址的要求之后起始TLB填充过程而不招致长延迟。在示范性实施例中可以若干方式执行此些TLB预填充。
[0037]—个实施例包括对常规需求填充的修改,本文称为“具有空间预取的需求填充”。在此实施例中,依据未中在TLB中填充的条目的数目被增加超过在所述未中时正在未中的单个条目。可依据未中而填充数目“N”个邻近条目。与常规需求填充相比,示范性实施例中的具有空间预取的需求填充可满足用于如下评估TLB中的填充的准则:可依据TLB未中执行填充;可在造成未中的地址处执行填充;以及可填充邻近于对应于未中的地址的多达N个邻近地址。可见,对常规需求填充的一个改进是在TLB中事先预测未来填充且填充N个邻近地址。
[0038]具有空间预取的需求填充可利用串流存取的地址中的任何现存空间局部性。如本文描述,串流存取或流可通常指代可在单个突发中执行的一组一个或一个以上存取或事务。空间局部性通常指代在地址空间中彼此靠近的地址所展现的性质。换句话说,邻近地址展现空间局部性。因此,如果串流存取可能展现空间局部性,那么事先预取邻近地址将确保在未来存取期间在TLB中存取预取的数据,因此产生TLB命中。
[0039]利用地址中的空间局部性的过程可类似于增加常规数据高速缓冲存储器的高速缓冲存储器线大小,因此高速缓冲存储器线通常包括邻近地址。因此,关于TLB填充,具有空间预取的需求填充可利用大于页表条目(PTE)的大小的总线宽度。举例来说,在单个循环中可获取一个以上PTE。通过说明,假定PTE是32位宽。假设PTE2是对应于128位宽数据总线的128位对准线中的第三条目,且PTE2对应于需求填充。在此情境中,页表巡行逻辑可经配置以在与获取PTE2所需的持续时间相同的持续时间中获取邻近于PTE2的再3个PTE0因此,在单个存取中可获取邻近PTE的集合:{PTE0,PTEl,PTE2,PTE3},而不是单独获取 PTE2。
[0040]另一实施例包含本文称为“流预填充”的TLB填充技术。流预填充可识别串流存取内的地址流,且在将需要地址流中的条目时事先起始TLB填充。流预填充的一方面是实现用原本将依据常规需求填充而填充的一个或一个以上条目的准确序列填充TLB。然而,与常规需求填充的明显不同在于,流预填充可经配置以在需求填充可起始TLB填充之前起始相同的TLB填充。因此,流预填充可有效地隐藏常规需求填充中依据TLB未中由页表巡行招致的等待时间。
[0041]流预填充如下满足用于评估TLB中的填充的准则:在TLB未中之前如有效地隐藏由页表巡行招致的等待时间所要求那样长的时间执行TLB填充;针对已经预测为潜在地未中的地址执行TLB填充,所述地址即在常规需求填充的过程中原本已遇到且未中的地址;流预填充每次填充单个TLB条目。
[0042]示范性实施例可以若干方式中的一种执行在TLB中将潜在地未中的地址的预测以用于流预填充。一个此实施例包含从在实施流预填充的示范性MMU外部的代理接收预测。预填充提示可由外部代理产生。先入先出(FIFO)机制可由预填充提示充填。MMU可经配置以从预填充FIFO接收预填充提示。
[0043]作为说明性实例,显示单元的显示器控制器可经配置以连续地扫描过单调增加的地址(虚拟地址)。显示器控制器的地址产生单元可经配置以同时产生对应单调增加的页地址集合。通常,页大小(例如4KB)大于显示器控制器的个别存取(例如128B)。因此,由地址产生单元产生的若干地址可共享同一页,且因此对于每一个别存取可能不需要新页翻译。因此,流预填充可需要仅在其中地址产生单元横越4KB页边界的实例中产生与页地址翻译相关的新预测。
[0044]在用于显示器控制器的上述流预填充技术的实施方案中,可跟踪由地址产生单元产生的地址的一个位。举例来说,第12个最低有效位,位12可指示4KB(4096B或2~12B)边界上的地址改变。因此,可在4KB的跨度上触发预测,因为位12可在每个4KB跨度上改变。替代地,预测可经配置以在4KB的倍数上触发,因为外部代理可能正在以大于4KB跨度横越地址空间。以此方式,可充分事先做出预测,以便隐藏在做出预测本身时涉及的等待时间。作为任选特征,地址或预填充提示向预填充FIFO的传输可被截断,以便保留资源。因此,在以上实例中,对于4KB页大小,可能需要传输仅32位地址的上部20位,其已经移位到4KB粒度(例如,通过移出最低有效12位)。因此,预填充FIFO的宽度可减少12位的量。
[0045]作为示范性MMU中的流预填充的另一实施方案,不限于页大小的跨度值可用于预测。举例来说,跨度值可由软件编程,且可进一步存储在MMU中的寄存器中。因此,如果MMU的外部代理或其它客户端请求用于翻译的特定地址,那么MMU可内部地产生与所述特定地址递增(或递减)所述跨度值的地址。此内部产生的地址可用作用于流预填充的预测,使得如果内部产生的地址当前不在TLB中,那么MMU可事先产生对内部产生的地址的预填充请求。因此,可隐藏与用于内部产生的地址的页表巡行相关联的任何延迟。
[0046]流预填充的又一实施方案涉及通过使用跨度预测器动态地检测和更改跨度值。举例来说,每一 TLB未中可经确定为在距前一未中的固定偏移或跨度值处遇到。此确定可从跨度预测器获得。跨度预测器可经配置以存储最新或当前TLB未中的地址、可经初始化为默认值的当前跨度值,以及与预测器置信值相关联的任选的一个或一个以上位。在遇到下一 TLB未中后,可用下一 TLB未中与存储的当前TLB未中之间的地址差来更新跨度值;可用下一 TLB未中来代替当前TLB的地址;且可递增置信值。此过程可重复,使得可基于当前存储的TLB未中地址与遇到的下一 TLB未中地址之间的地址差而将当前存储的跨度值与实际跨度值进行比较。如果跨度值匹配,那么当前存储的跨度值可经证实为用于未来跨度值的良好预测符;且对应地可递增置信值。一旦置信水平达到预定水平,跨度预测器便可基于当前存储的TLB未中地址和当前存储的跨度值而产生对所预测地址的预填充请求。
[0047]在具有动态确定的跨度值的流预填充的以上实施方案中,MMU可进一步经配置以在基于需求填充而填充的TLB条目与通过流预填充而填充的TLB条目之间进行区分。举例来说,通过流预填充而填充的TLB条目可由预填充指示符位标记或充填经指定为“未来TLB”的TLB的选定区段中。跨度预测器可经配置以监视需求未中以及预填充命中(由预填充指示符标记或位于未来TLB部分中)。为了计算跨度的目的,可将需求未中以及预填充命中两者视为未中。将认识到,如果以此方式未考虑预填充命中,那么跨度预测器可能不准确,因为已经预填充的潜在需求未中可产生命中,但跨度预测器在其跨度计算中原本已忽视此潜在需求未中,因为原本已遇到命中。
[0048]实施例也可包含经配置以确保使用动态预测的跨度值的流预填充实现用以隐藏由TLB未中造成的等待时间的充分预先的预填充与并不过于预先地填充TLB而使得TLB可以充填有过多未使用预填充条目而结束之间的所要平衡的逻辑。实现所要平衡的一个示范性技术可包含对TLB中已通过预填充用指示符位充填的每一条目加标签。当首次存取此加标签的条目时,可清除指示符位,且可起始基于预测跨度值的针对下一地址的预填充。作为任选特征,TLB中通过预填充充填的第一条目可由软件建立。
[0049]现在参见图2A到2B,参考TLB200说明用于实现平衡的另一示范性技术,其中TLB200可经配置以将虚拟地址202翻译为物理地址204。TLB200可经分割为作用TLB206和未来TLB208。虽然作用TLB206和未来TLB208两者是依据地址翻译请求来存取,但仅未来TLB208是用预填充充填。作用TLB206和未来TLB208可被同时或按顺序存取。如图2A中的动作210说明,作用TLB206中的未中可检查未来TLB208是否有未中条目。可激活页表巡行器220以搜索未中条目或预填充未来TLB208。此外,来自外部源214的提示也可用于潜在TLB填充的预测,事先激活页表巡行器220以便隐藏对应的等待时间。而且,可在未来TLB中带来命中的地址请求可致使命中条目迁移到作用TLB(如图2中的动作212说明)。
[0050]参见图2B,可修改动作210以使得作用TLB206中的未中可检查未来TLB208是否有未中条目,激活跨度预测器216且进而起始潜在预填充以充填未来TLB208。[0051]在一个或一个以上实施例中,跨度值可为可编程的,使得程序员可动态地调整跨度值以用于特定应用。而且,实施例也可包含从接收自例如多媒体装置等外部装置的提示导出的跨度值。
[0052]现在将参见图3A到3B描述与流预填充相关的其它实施例。如例如图3A到3B中说明,装置302可经配置以存取TLB306以用于虚拟地址(VA)到对应于存储器308的物理地址(PA)的翻译。装置302可为产生虚拟地址的需求流以用于TLB306中的翻译的任一装置。举例来说,装置302可为处理器或例如显示器控制器等串流装置,其经配置以读取邻近存储器地址以便读出显示数据。因此,在此些实例中装置302可产生对应于存储器308中的邻近地址的需求流。如图示,装置302可包含用于产生此需求流的地址产生单元(AGU) 304。
[0053]在示范性实施例中,AGU304可另外经配置以除了需求流以外还产生虚拟地址的预填充流。由AGU304为预填充流产生的虚拟地址可从需求流偏移所要的量,使得预填充流可包含处于需求流之前的地址。举例来说,预填充流中的地址可处于需求流中的地址之前一个对应于页大小的偏移值。所要偏移值可为正或负的,且可从可编程寄存器导出。在一些实施例中,AGU304可经配置以仅在页交叉处产生用于预填充流的新地址。举例来说,如果页大小是4KB,那么AGU304可在每次需求流的第12个最低有效位切换时产生新预填充地址请求。因此,AGU304可经配置以在两个不同速率下产生两个相异流。举例来说,第一流(需求流)可在第一速率(例如,对应于对可每个时钟循环产生的邻近存储器地址的请求)下产生,且第二流(例如,预填充流)可在第二速率(例如,在需求流横越页边界的每个实例处)下产生。因此,TLB306可由来自第一和第二流两者的翻译请求同时充填。如先前描述,可包含指示符以跟踪TL306的由第一和第二流充填的条目,且可基于TLB306中的基于需求的条目与预填充条目之间的所要平衡来调整相应的第一和第二产生速率。
[0054]在一些实施例中,预填充流可经指定为包括作为只读请求的预填充请求,以便避免更改存储器308。在这些实施例中,装置302可经配置以跟踪突出的需求请求且忽略从存储器装置308返回的针对预填充请求的数据。在一些实施例中,装置302还可高速缓冲存储从预填充请求返回的预填充数据,因为预先知道预填充数据将仅是未来需求请求所需要的。
[0055]如图3A所示,需求流和预填充流两者可在从装置302到TLB306的共同请求通道、通道307上传送。然而,涉及共同通道的此配置可致使预填充请求阻碍更为时间关键的需求请求的进程。为了避免对需求请求的此种妨碍,可用指示符位界定预填充请求,进而使TLB306能够区分预填充请求与对存储器308的需求请求(读/写)。TLB306可因此避免将额外读取事务转发到存储器308,因为装置302将不会预期返回对应于预填充请求的读取数据。
[0056]在涉及共同通道307的一些配置中,需求流和预填充流可通过采用较低等级链路协议而在逻辑上分离。在操作中,此些配置可逻辑上等效于为需求流和预填充流配置单独的通道。
[0057]在另外的实施例中,单独通道可事实上经配置以用于需求流和预填充流。举例来说,参见图3B,如图示可提供单独通道、需求请求通道309和预填充请求通道310以用于装置302与TLB306之间的通信。此些单独通道可减少例如对共同通道307上的需求请求的妨碍等影响。配置单独通道还可避免对用以界定预填充请求的指示符位的需要,因为可基于从哪一通道接收到请求来提供此指示。
[0058]返回参见图2A,将认识到说明包括用于需求流和预填充流的单独通道的另一配置。包括虚拟地址202的通道描绘需求流,而如先前说明的经配置以用于做出预测的外部源214产生预填充流。因此可见,需求流和预填充流可从单独装置产生且无需如图3A到3B中描绘从同一装置302产生。举例来说,在视频解码应用的情况下,外部源214可为帧预处理装置,其经配置以在高速下剖析数据流,而不执行对数据流的全解码以便确定将由全帧解码器调用的存储器页。组成外部源214的预处理装置可在全帧解码器装置之前运行,其中所述预处理装置可能够代表全帧解码器产生预填充请求。到全帧解码器可需要存取存储器页时,这些存储器页可能已经预填充到TLB (例如,未来TLB208)中,进而确保全帧解码器将不需要等待TLB未中被服务。
[0059]又一实施例包含本文称为“具有空间预取的流预填充”的TLB填充技术。本质上,具有空间预取的流预填充可在流预填充的每次填充上获取一个以上条目。具有空间预取的流预填充可如下满足用于评估TLB中的填充的准则:可在预测TLB未中之前足够长的时间填充TLB以例如隐藏由页表巡行招致的等待时间;可在预测未中的地址处起始TLB填充;以及可填充多达数目“N”个邻近地址。因此,与流预填充相比,具有空间预取的流预填充可在每次存取时在TLB中填充N个邻近地址。因此,具有空间预取的流预填充可组合如上论述的流预填充和具有空间预取的填充的有益方面。
[0060]示范性实施例还可包含用于多次串流存取的TLB填充,其由以过滤能力增强的跨度预测器支持。举例来说,示范性MMU可迎合一个或一个以上客户端且进而支持多个地址流。产生对MMU的存取的所有地址流可能不共享共同跨度值。因此,共享共同跨度预测器可能不能充分支持多个地址流。为了支持多个地址流,可采用多个跨度预测器或具有多个跨度寄存器的跨度预测器。因此,可基于地址流中的特定代表位来将两个或两个以上地址流导向两个或两个以上预测器。地址流中可用以确定地址流所导向的预测器逻辑的位的实例包含:来自给定客户端的发源流的逻辑主ID (或MID),读/写指示符位,事务大小指示符位等等。
[0061]现在参见图4,说明采用TLB预填充用于多次串流存取的示范性MMU系统。多次串流存取可为并行的和/或同时的。如图示,系统MMU (SMMU) 400为若干多媒体客户端402a-402n提供翻译服务。客户端402a_402n可为包含CPU的任何装置,且可经由例如总线
410等共享总线与SMMU400通信。每一客户端402a_402n可将地址流供应到SMMU400以用于翻译。多个地址流可不具有相同跨度值。举例来说,第一流(例如,来自客户端402a)可具有第一跨度值,其中第一流是基于对应于第一虚拟地址(可从客户端402a接收)的第一提示值。类似地,第二流(例如,来自客户端402b)可具有第二跨度值,其中第二流是基于对应于第二虚拟地址(可从客户端402b接收)的第二提示值。SMMU400可包括TLB404,其可与第二流同时和/或并行地以第一流预填充。对应于第一流和第二流,用于两个或两个以上预测器的逻辑可存在于图4中指定为预测器406的框中,以帮助TLB404翻译例如第一流和第二流的多个地址流。页表巡行器408也可经配置以支持多个同时和/或并行操作以获得翻译(例如,对应于第一流和第二流)。
[0062]因此,本文描述的示范性实施例可经配置以预填充TLB以使得示范性MMU可得到改善的性能、节省资源成本且消耗较少的功率。如先前描述,常规TLB可经配置以通过仅增加TLB大小而减少针对非串流存取的未中率。然而,常规TLB无法针对串流存取实现减少的未中率,即使TLB大小理论上无限增加也是如此。然而,示范性实施例可经配置以减少TLB未中率且可有效地消除TLB未中,即使在串流存取的情况下也是如此。
[0063]而且,示范性实施例可通过使用空间预取将多个页表巡行组合为单个事务,这可有效地减少系统中的相异存储器事务的数目。因此,可改善存储器效率且可减少资源竞争,进而还改善可能不直接要求TLB存取的系统组件的性能。
[0064]将了解,实施例包含用于执行本文揭示的过程、功能和/或算法的各种方法。举例来说,如图5中说明,实施例可包含充填翻译旁视缓冲器(TLB)(例如,作用TLB206和未来TLB208)的方法,所述方法包括:接收用于通过TLB翻译成物理地址的第一虚拟地址(例
如,虚拟地址202和物理地址204)-框502 ;以及在单个突发中,以用于从第一虚拟地址
导出的预填充虚拟地址流的翻译预填充TLB(例如,通过跨度预测器216和页表巡行器220预填充未来TLB208)——框504。
[0065]所属领域的技术人员将了解,可使用多种不同技艺和技术中的任一者来表示信息和信号。举例来说,在整个以上描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片可通过电压、电流、电磁波、磁场或粒子、光场或粒子或其任一组合来表示。
[0066]此外,所属领域的技术人员将了解,结合本文揭示的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的这种可互换性,上文已大体上在其功能性方面描述了各种说明性组件、块、模块、电路和步骤。将此功能性实施为硬件还是软件取决于特定应用或对总体系统强加的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此实施方案决策不应解释为造成脱离本发明的范围。
[0067]结合本文揭示的实施例描述的方法、序列和/或算法可直接以硬件、以由处理器执行的软件模块或以两者的组合来体现。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸式盘、CD-ROM或此项技术中已知的任一其它形式的存储媒体。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息以及向存储媒体写入信息。在替代例中,存储媒体可与处理器成一体式。
[0068]参见图6,描绘包含根据示范性实施例配置的多核心处理器的无线装置的特定说明性实施例的框图,且将所述装置一股地指定为600。装置600包含数字信号处理器(DSP) 664,其可包括例如图2的作用TLB206、未来TLB208、页表巡行器220等逻辑,其可耦合到如图示的存储器632。可从下文描述的外部装置接收虚拟地址202和下一虚拟页预测(提示值)。举例来说,图6还展示例如显示器控制器626的外部装置,其耦合到DSP664和显示器628。例如译码器/解码器(CODEC) 634 (例如,音频和/或话音CODEC)等外部装置也可耦合到DSP664。还说明其它组件/外部装置,例如无线控制器640 (可包含调制解调器)。扬声器636和麦克风638可耦合到C0DEC634。图6还指示无线控制器640可耦合到无线天线642。在特定实施例中,DSP664、显示器控制器626、存储器632、C0DEC634以及无线控制器640包含在系统级封装或芯片上系统装置622中。
[0069]在特定实施例中,输入装置630和电源644耦合到芯片上系统装置622。而且,在特定实施例中,如图6中说明,显示器628、输入装置630、扬声器636、麦克风638、无线天线642以及电源644在芯片上系统装置622外部。然而,显示器628、输入装置630、扬声器636、麦克风638、无线天线642以及电源644中的每一者可耦合到芯片上系统装置622的组件,例如接口或控制器。
[0070]应注意,虽然图6描绘无线通信装置,但DSP664和存储器632也可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元或计算机中。处理器(例如,DSP664)也可集成到此装置中。
[0071]因此,本发明的实施例可包含体现通过预填充TLB来充填TLB的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且用于执行本文描述的功能性的任何装置均包含在本发明的实施例中。
[0072]虽然前述揭示内容展示本发明的说明性实施例,但应注意,在不脱离如所附权利要求书界定的本发明范围的情况下可在其中做出各种改变和修改。本文描述的根据本发明实施例的方法权利要求的步骤和/或动作无需以任何特定次序执行。此外,虽然可能以单数形式描述或主张本发明的元件,但复数形式是预期的,除非明确陈述限于单数形式。
【权利要求】
1.一种充填翻译旁视缓冲器TLB(206、208)的方法,所述方法包括: 接收(502)用于通过所述TLB翻译成物理地址(204)的第一虚拟地址(202);以及 在单个突发中,以用于从所述第一虚拟地址导出的一个或一个以上预填充虚拟地址的第一流的翻译预填充(504)所述TLB。
2.根据权利要求1所述的方法,其中所述第一虚拟地址是从接收自第一外部装置的第一提示地址值导出的。
3.根据权利要求1所述的方法,其中一个或一个以上预填充虚拟地址的所述第一流包括基于第一可编程跨度值从所述第一虚拟地址导出的虚拟地址。
4.根据权利要求3所述的方法,其中所述第一可编程跨度值是通过软件动态确定的。
5.根据权利要求3所述的方法,其中所述第一可编程跨度值是预定常数。
6.根据权利要求3所述的方法,其中所述第一可编程跨度值是通过分析TLB未中的模式来确定的。
7.根据权利要求3所述的方法,其中所述第一可编程跨度值是基于从外部装置导出的提示值。
8.根据权利要求1所述的方法,其中一个或一个以上预填充虚拟地址的所述第一流邻近于所述第一虚拟地址。
9.根据权利要求1所述的方法,其中以用于一个或一个以上预填充虚拟地址的所述第一流的翻译预填充所述TLB是在所述TLB接收到针对对应于所述一个或一个以上预填充虚拟地址的地址翻译的需求请求之前执行。
10.根据权利要求1所述的方法,其中所述第一虚拟地址造成所述TLB中的未中。
11.根据权利要求1所述的方法,其进一步包括: 接收用于通过所述TLB翻译成物理地址的第二虚拟地址;以及 在单个突发中,以用于从所述第二虚拟地址导出的一个或一个以上预填充虚拟地址的第二流的翻译预填充所述TLB,其中以用于所述第二流的翻译预填充所述TLB是与以用于所述第一流的翻译预填充所述TLB同时地和/或并行地执行。
12.根据权利要求11所述的方法,其中所述第二虚拟地址是从接收自第二外部装置的第二提示地址值导出的。
13.一种用于充填翻译旁视缓冲器TLB(206、208)的设备,所述设备包括: 经配置以接收用于通过所述TLB翻译成物理地址(204)的第一虚拟地址(202)的逻辑;以及 经配置以在单个突发中以用于从所述第一虚拟地址导出的一个或一个以上预填充虚拟地址的第一流的翻译预填充所述TLB的逻辑(216、220)。
14.一种设备,其包括用于执行根据权利要求1到12中任一权利要求所述的方法的装置。
15.一种包括计算机可读媒体的计算机程序产品,所述计算机可读媒体包括用于致使计算机或处理器执行根据权利要求1到12中任一权利要求所述的方法的至少一个指令。
【文档编号】G06F12/10GK103443777SQ201280015340
【公开日】2013年12月11日 申请日期:2012年3月5日 优先权日:2011年3月3日
【发明者】博胡斯拉夫·雷赫利克, 托马斯·安德鲁·萨托里乌斯, 迈克尔·威廉·莫罗, 雷蒙德·P·帕尔马 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1