用于虚拟存储器的存储器预取的制作方法

文档序号:16595903发布日期:2019-01-14 19:38阅读:281来源:国知局
本申请大致涉及存储器预取,更具体地,涉及存储器预取以填充缓存(cache)用于虚拟存储器转换。
背景技术
::存在各种不同的可以使用存储器电路的应用,其中存储器电路包括但不限于可编程集成电路、可编程逻辑器件(pld)以及片上系统(soc)器件。一些soc器件可包括可编程逻辑,其中该可编程逻辑类似于由各种pld提供的可编程逻辑。pld是一种可编程集成电路(ic),该可编程ic可被编程以执行指定的逻辑功能。一种类型的pld(即现场可编程门阵列(fpga))可包括可编程片(tile)阵列。这些可编程片包括各种类型的逻辑块,这些各种类型的逻辑块可包括,例如输入/输出块(iob)、可配置逻辑块(clb)、专用随机存取存储块(bram)、多路复用器、数字信号处理块(dsp)、处理器、时钟管理器、延迟锁定环(dll)、总线或网络接口(如外部组件互连(pci)、高速pci(pcie)以及以太网)等。一些器件包括足够的组件和功能,以有效地用作单个ic芯片上的完整计算机系统。具有这种功能的器件有时被称为soc。soc是一种应用,其中多个主控器(master)可共享共同的物理存储器和i/o。主控器可共享存储器的一种方式是使用虚拟存储器。每个主控器可在其自己的虚拟地址空间内运行,其中所述虚拟地址空间被映射到物理地址空间。存储器管理单元(mmu)电路可被配置为将虚拟地址转换为物理地址。转换可能是提高效率的重要瓶颈。这些和其他的问题对于ic设计及其用途可能是棘手的。技术实现要素:多种实施方式针对存储器预取以填充高速缓存用于虚拟存储器转换。所述预取可在多个预取生成电路之间分配,每个预取生成电路对应于mmu电路的不同端口。特定的实施方式针对一种为虚拟存储器和多端口存储器管理单元mmu电路生成虚拟存储器预取请求的方法。tlb预取电路监控发送到所述mmu电路的特定端口的虚拟存储器访问请求,并检测至少一个触发条件的满足,所述至少一个触发条件基于所述虚拟存储器访问请求。所述tlb预取电路响应于所述至少一个触发条件的满足生成虚拟存储器预取请求。使用所述特定端口将所述虚拟存储器预取请求传送至所述mmu电路。为对应于所述虚拟存储器预取请求的物理地址监控来自所述mmu电路的物理访问请求。过滤与所述虚拟存储器预取请求相对应的物理访问。某些实施方式针对一种包括mmu电路的系统。所述mmu电路包括多个端口,其中每个端口被配置为使用相应的转换检测缓冲区tlb将虚拟存储器地址转换为物理存储器地址。所述系统包括至少一个tlb预取电路,所述至少一个tlb预取电路用于所述多个端口中的特定端口并被配置为:监控发送至所述mmu电路的特定端口的虚拟存储器访问请求;为所述虚拟存储器访问请求检测至少一个触发条件的满足;响应于所述至少一个触发条件的满足生成虚拟存储器预取请求;以及使用所述特定端口将所述虚拟存储器预取请求传送至所述mmu电路。所述系统包括至少一个tlb预取过滤电路,所述至少一个tlb预取过滤电路被配置为:为对应于所述虚拟存储器预取请求的物理地址监控来自所述mmu电路的物理访问请求;以及过滤与所述虚拟存储器预取请求相对应的物理地址。考虑到下面的详细说明和权利要求,将认识到其他的特征。附图说明通过阅读以下详细描述并参考附图,本申请的方法、器件和系统的各个方面和特征将变得显而易见,其中:图1是根据本申请的各种实施方式为多端口mmu生成虚拟存储器预取请求的系统的框图;图2是根据本申请的实施方式描绘tlb预取电路和tlb预取过滤电路的特定方面的框图;图3是根据本申请的实施方式生成虚拟存储器预取请求的流程图;图4是根据本申请的实施方式配置和使用触发条件的流程图;以及图5根据本申请的实施方式示出了被配置为使用虚拟存储器预取请求的集成电路(ic)芯片的示例。具体实施方式在以下描述中,阐述了许多具体细节以描述本申请呈现的具体示例。然而,对于本领域技术人员来说显而易见的是,可以在没有下面给出的所有具体细节的情况下实践一个或多个其他的示例和/或这些示例的变型。在其他情况下,公知的特征没有被很详细地描述,以免使本申请的示例的描述难以理解。为了便于说明,可在不同的图中使用相同的附图标记来表示相同元件或相同元件的附加示例。各种实施方式针对通过使用预取操作填充转换检测缓冲区(translationlook-asidebuffer,tlb)以改进虚拟存储器地址的转换。例如,虚拟存储器预取请求由多个预取电路产生,每个预取电路对应于虚拟存储器预取请求的来源。每个预取电路被配置为生成预取请求,而预取请求的结果是填充相应的tlb。按此方式,不同的tlb被以主动的方式相对于彼此独立地填充。某些实施方式包括多个预取电路,所述多个预取电路包括可定制选项,所述可定制选项控制如何生成和处理预取操作。可定制选项可允许每个预取电路相对于它们各自的虚拟存储器空间和虚拟存储器地址生成电路而被不同地配置。例如,每个预取电路可被配置为发出存储器预取请求,该存储器预取请求从虚拟地址范围请求数据块,其中所述虚拟地址范围对应于他们各自的虚拟存储器的页面尺寸(pagesize)。由于每个虚拟存储器地址生成电路(例如,每个中央处理单元(cpu)或图形处理单元(gpu))可能具有不同的页面尺寸,所以使用具有可定制选项的专用预取电路可以提高预取操作的效率。本申请将更详细地讨论可定制选项的各种示例。相对于在操作系统中运行的进程,虚拟存储器空间可能看起来是大而连续的存储器的部分,而数据的实际物理位置可以被分散在提供主存储器的物理存储器电路的不同区域。被配置为提供虚拟存储器空间的处理电路可使用虚拟存储器地址来生成对数据访问的请求,而不需处理主存储器内的数据的实际位置。相反,mmu电路(或简称为“mmu”)可基于存储在页表(pagetable)中的映射(mapping)来处理至物理地址的转换,其中每个可寻址的映射都被称为页表条目(pagetableentry)。根据各种实施方式,虚拟和物理(主)存储器空间之间的地址转换由mmu执行。页表可被存储在主存储器中,mmu可访问主存储器以获得用于虚拟存储器访问请求的物理地址。该过程有时被称为页面漫游(pagewalk)。页面漫游可能需要对存储在物理/主存储器中的页表进行多次访问,以便计算物理地址。然后,获得的物理地址被用作另一主存储器访问的一部分,该另一主存储器访问检索与原始虚拟存储器访问请求相对应的数据。因此,虚拟存储器访问可导致对主存储器的多次访问,因而比对主存储器的单个直接访问慢许多倍。因此,本地缓存电路可存储时常发生的页面转换,从而避免主存储器访问。这种类型的缓存电路有时被称为转换检测缓冲区(tlb)。mmu可首先检查tlb内容,以找到用于虚拟存储器访问的匹配。如果缓存包含匹配的条目(tlb“命中”),则使用适当的物理地址信息来计算物理地址。然后,mmu可使用该物理地址发出主存储器访问请求。如果缓存不包含匹配的条目(tlb“未命中”),则mmu可访问页表以检索所需的物理地址,而导致上述的页面漫游延迟。根据各种实施方式,mmu可具有多个端口,用于虚拟存储器访问请求的多个不同的来源。这些来源在本申请中被称为虚拟存储器地址生成电路或主控器(master)。每个端口可具有不同的tlb和相应的控制电路。tlb和控制电路被统称为转换检测缓冲区单元(tbu)。单个转换控制单元(tcu)电路可管理所有tbu的地址转换。各种实施方式针对虚拟存储器访问请求的生成和处理,目的在于用条目填充tlb来减少tlb未命中。这些虚拟存储器访问请求不是由主控器生成的,而是在预期主控器将来可能会请求什么的情况下,由虚拟存储器预取电路(可暂时充当主控器)生成的。因此,生成的虚拟存储器访问请求被称为虚拟存储器预取请求。更具体的方面允许为mmu的每个端口单独定制虚拟存储器预取电路。许多系统中的存储器访问都有延迟的倾向并且不可预测。许多应用程序(如视频或直接存储器访问(dma))可同时具有与大量读取/写入数据相关的带宽和固定延迟要求。在虚拟系统中移动大量的数据涉及许多待执行的mmu页面转换,这可能消耗许多时钟周期。缓存在tlb中的mmu页表在减轻转换负担方面起着至关重要的作用。示例性页表尺寸可在4kb、16kb或64kb之间变化。对于每个页面都会发生一次页表转换,同时会使用偏移(offset)在每个页面中进行索引。假设系统使用4kb页面尺寸的粒度,mmu将为访问的地址空间的每个新的4kb执行一次页表转换。如前所述,页表漫游可能非常耗时并可能使用有限的存储器资源。各种实施方式针对可配置的预取方法,所述可配置的预取方法在ic芯片的存储器系统中提供有效的数据移动,该ic芯片可被配置为soc或其他的处理系统。例如,由于可用资源的限制以及终端用户最终将如何使用soc的不确定性,许多soc中的mmu具有非常有限的预取能力。各种实施方式提供灵活性以配置或编程如何处理预取操作。示例包括,配置需要执行的预取请求的数量,以及通过限制为了支持预取请求而进行的主存储器访问的数量而减轻预取请求的负担。一些实施方式还通过在mmu及其tbu上游实现预取生成而考虑存储器系统的效率。相对于集中生成预取请求的方法(使用tcu,其处理来自多个tbu和相关端口的作业),将控制放置在更靠近虚拟存储器访问请求来源的预取生成上可允许更加个性化的控制(例如,在逐个端口的基础上)。现在参考附图,图1根据本申请的各种实施方式描述了为多端口mmu生成虚拟存储器预取请求的系统的框图。所描绘的系统组件位于ic芯片100上,ic芯片100包括多个主控器102、104、和106,这些主控器为对应的输入端口124、126和128以及对应的输出端口138、140和142生成虚拟存储器访问请求。主控器包括一个或多个处理电路,其中每个处理电路为系统提供一个或多个功能。这种电路的一些非限制性示例包括cpu或处理核、gpu和被配置为使用dma运行的电路。多端口mmu114被配置为在相应端口上从主控器接收虚拟存储器访问请求。端口具有不同的tbu132、134和136,其中每个tbu对应于相关主控器的不同虚拟存储器空间。tcu130控制和管理用于每个端口及其相应tbu的地址转换。这包括管理tbu及其各自的tlb电路,以确定是否存在tlb命中或tlb未命中。tcu130还控制地址转换,然后生成对主存储器122的相应访问。tlb预取电路108、110和112被配置为向它们各自的端口生成虚拟存储器预取请求,从而将端口的预取生成彼此解耦。在具体实施方式中,tlb预取电路108、110和112被设计为允许主控器102、104和106调整参数,其中所述参数用于确定何时以及如何生成预取请求。此调整能力由控制(ctrl)箭头表示。例如,可提供一组或多组配置寄存器144、146和148,以便定制每个电路。配置寄存器可由所描述的主控器102、104和106访问,或由具有足够权限的其他主控器访问。配置寄存器的内容可由tlb预取电路访问,tlb预取电路根据存储在寄存器中的值来进行配置。在一些实施方式中,主控器直接访问tlb预取电路,以发送规定配置设置的数据。tlb预取电路可在可编程逻辑中实现,终端用户可在设计文件中设置一个或多个参数。可设置和调整参数的方式不限于这些示例,并可使用不同解决方案的各种组合。解耦和可配置性都对于填充tbu(针对各个主控器的不同特性以定制的方式填充tbu)特别有用。这些特性的示例包括虚拟存储器空间的配置(例如,页面尺寸)和预期的存储器访问配置情况(例如,数据访问的频率和尺寸)。根据一些实施方式,包括tlb预取过滤电路116、118和120,以滤除对主存储器122的访问。具体地,过滤电路被配置为滤除自预取请求生成的物理访问请求。例如,预取电路108可生成对于虚拟存储器地址x的预取请求。然后,mmu114和tcu130确定tbu132不包含用于虚拟存储器地址x的条目。作为响应,tcu130通过访问存储在主存储器122中的页表来执行页面漫游。预取过滤电路116监控对主存储器的物理访问请求,并允许对页表的访问请求到达主存储器。一旦tcu130完成页面漫游,通过存储对应于虚拟存储器地址x的转换条目和对应的物理存储器地址y而更新tbu132中的tlb。然后,mmu114通过发送对于物理地址y的物理存储器访问请求而尝试完成对于虚拟存储器地址x的预取。预取过滤电路116将对于地址y的物理存储器访问请求识别为对应于虚拟存储器地址x的初始预取,并防止(过滤)该请求到达主存储器122。根据某些实施方式,预取过滤电路116还被配置为向tlb预取电路108生成作业完成通知。该通知可指示预取请求已完成且不再是未解决的。预取过滤电路116的过滤能力对于迁移自mmu114做出的进程和决定特别有用。在具体实施方式中,mmu114功能可能与系统(不包括tlb预取电路或tlb预取过滤电路)中所使用的mmu114无法区分。图2是根据本申请的实施方式描绘tlb预取电路和tlb预取过滤电路的特定方面的框图。图2示出了单个的tlb预取电路204,然而,可包括附加的tlb预取电路用于mmu214的附加端口(例如,如图1所示)。尽管不限于此,但是图2的各种组件的描述通常与图1中以及本申请在其他地方呈现的类似组件一致。访问请求生成器202在虚拟存储器空间中运行,所述虚拟存储器空间被映射到由访问响应生成器226提供的物理存储器空间。在某些实施例中,图2的系统是使用主-从互连解决方案的soc的部分,比如amba(高级微控制器总线架构)可扩展接口(axi)互连/总线。其他互连和总线解决方案也是可能的。根据具体实施方式,tlb预取电路204被配置为监控发送到mmu214的特定端口的虚拟存储器访问请求。例如,预取作业生成器模块206可被连接到地址请求总线。预取作业生成器模块206识别并跟踪出现在地址请求总线上的虚拟存储器访问请求的地址。然后,预取作业生成器模块206可确定是否已经满足触发条件。在具体实施方式中,基于一个或多个可配置参数,设置用于预取作业生成器模块206的触发条件。例如,预取作业生成器模块206可配置有触发条件,该触发条件将虚拟存储器地址与tlb的当前内容进行比对。特定触发条件可以是基于tlb相对于当前虚拟存储器地址是否包含足以覆盖设定数量的未来顺序虚拟存储器地址的条目。例如,当前虚拟存储器地址可以是x,触发条件可以是三个后续的地址请求。预取作业生成器模块206确定tlb是否包含用于x+1、x+2和x+3的条目。如果不包含,则满足触发条件,并可为丢失的条目生成一个或多个预取请求。预取作业生成器模块206将生成的预取请求发送到mmu214。在某些实施方式中,预取作业生成器模块206向控制逻辑210提供传输的指示。多路复用器电路208控制mmu214是否从访问请求生成器202或预取作业生成器206接收虚拟存储器访问请求,从而允许预取作业生成器模块206临时充当主控器而不需要与访问请求生成器202的复杂仲裁(arbitration)。例如,访问请求生成器202可在没有预取作业生成器206的直接知识的情况下运行。作为触发条件的另一示例,预取作业生成器206可被配置为延迟预取请求的传输,直到检测到(axi)互连/总线进入空闲状态。将预取请求限制到空闲状态/时间对于减轻来自预取请求的附加存储器访问的不利影响可能是有用的。在某些实施例中,可禁用对空闲状态的响应,以在不考虑总线的空闲状态的情况下允许发送预取请求。mmu214接收虚拟存储器预取请求,然后通常可通过检查tbu216和所包括的tlb来处理与虚拟存储器访问请求对应的条目的请求。检查tbu通常会导致tlb未命中,因为预取作业生成器206为预期不在tlb中的条目生成虚拟存储器预取请求。tlb未命中导致对存储在存储器电路中的页表的页面漫游,其中所述存储器电路可通过访问响应生成器226访问。一旦找到所需的物理地址信息,mmu214更新tlb以包括相应的条目。根据各种实施方式,mmu214不区分源自访问请求生成器202的虚拟存储器访问请求和源自预取作业生成器模块206的虚拟存储器预取访问请求。因此,mmu214接下来将通过向访问响应生成器226发送物理访问请求来尝试完成虚拟存储器访问请求。预取过滤电路218被配置为监控来自mmu和至访问响应生成器226的物理访问请求。在检测到存在源自预取访问请求的物理访问请求时,过滤/阻止模块220可过滤该物理访问请求以阻止其到达访问响应生成器226。具体实施方式在物理访问请求中使用标识符(id)来识别应该被过滤的物理访问请求。例如,进程唯一的id可伴随虚拟存储器(预取)访问请求和相应的物理存储器访问请求。可为预取作业生成器模块206分配特定的id,该特定的id由预取过滤电路218识别,从而过滤相应的物理访问请求。根据各种实施方式,当物理访问请求完成时,访问响应生成器226生成至访问请求生成器202的通知。访问响应生成器226不为过滤的物理访问请求生成通知。这可意味着mmu和预取作业生成器模块206都不知道预取操作何时完成。因此,响应生成器222可被配置为向过滤的预取生成完成通知。多路复用器电路224允许响应生成器222临时访问通信总线,所述通信总线用于路由响应。预取响应过滤器212被配置为将来自响应生成器的通知通过mmu路由到预取作业生成器模块206。图3是根据本申请的实施方式生成虚拟存储器预取请求的流程图。根据方框302,tlb预取电路监控虚拟存储器(vm)访问请求。例如,tlb预取电路可被连接至主控器和mmu之间的地址总线。作为监控工作的一部分,tlb预取电路因此可访问用于虚拟存储器访问的虚拟存储器地址值。根据各种实施方式,根据方框304,tlb预取电路使用监控的信息来确定何时满足触发条件。如果未满足触发条件,则tlb预取电路继续监控虚拟存储器访问。根据方框306,如果满足触发条件,则tlb预取电路生成一个或多个虚拟存储器预取请求。在一些情况下,可在tlb预取电路开始生成预取请求之前检查多个触发条件。例如,tlb预取电路可配置有第一触发事件,该第一触发时间与tlb中的预取请求的深度相对应(相对于用于当前虚拟存储器请求的地址)。第二触发事件可对应于主控器和mmu之间的数据总线的空闲状态。一旦满足两个触发事件,则tlb预取电路开始生成预取。本申请将更详细地讨论触发条件的各种示例。根据方框308,tlb预取电路将生成的预取请求传送到mmu。在某些实施方式中,该传送包括使用多路复用器电路以允许tlb预取电路暂时作为存储器系统中的主控器。作为预取请求的一部分,tlb预取电路还可包括标记预取请求的指示。该标记可用于确定特定虚拟存储器访问是一个不源自主控器的预取。这种标记的特定示例是相对于主控器使用的进程id而唯一标识tlb预取电路的id。根据方框310,预取过滤电路监控mmu和物理/主控器之间的互连总线上的物理访问请求。在具体实施方式中,预取过滤电路可通过从每个访问请求中检索标识访问请求来源的唯一id来监控物理访问请求。根据方框312,预取过滤电路可使用该信息来确定访问请求是否是由预取驱动的。例如,预取过滤电路查找包含对应于tlb预取电路的唯一id的访问请求。根据方框310,如果访问请求不是由预取驱动的,则预取过滤电路继续监控物理访问请求。根据方框314,如果访问请求是由预取驱动的,则预取过滤电路过滤相应的访问请求。例如,预取过滤电路可包括比较器电路,该比较器电路将在访问请求中接收的id与预先存储的对应于tlb预取电路的唯一id进行比较。响应于匹配,预取过滤电路通过例如禁用输出驱动器来对访问请求进行过滤,其中输出驱动器能将接收的访问请求转发到主存储器。访问请求的过滤意味着提供至主存储器的访问的从电路从不接收访问请求。因此,从电路不会为访问请求生成完成通知。根据某些实施方式,根据方框316,预取过滤电路被设计成生成这种完成指示或通知。根据方框318,该完成通知可被提供给tlb预取电路,tlb预取电路随后可确定是否要生成额外的预取请求。方框318的确定的示例是将用于最终预取的虚拟存储器地址与tlb的期望深度进行比较。例如,如果最终虚拟存储器地址是用于地址x而预取是用于地址x+2,则如果深度被设置为3或更大,tlb预取电路将生成额外的预取请求。图4是根据本申请的实施方式用于配置和使用触发条件的流程图。该流程示出了各种配置输入420可被用于设置tlb预取电路的不同触发条件和功能。根据方框402,当tlb预取电路检测到虚拟存储器访问请求时,流程开始。根据方框404,tlb预取电路还确定用于虚拟存储器访问请求的vm地址。根据方框406,tlb预取电路可使用确定的虚拟存储器地址来确定tlb的当前内容是否足够。根据某些实施方式,方框406的确定可基于预取数量或深度。例如,预取深度为3将指示tlb应该相对于确定的虚拟存储器地址而包含三个后续条目。更具体地,如果确定的虚拟存储器地址是“x”,则tlb预取电路确定tlb是否包括x+1、x+2和x+3的条目,其中,x+1表示虚拟存储器空间中从x开始的下一个连续的页面。根据方框402,如果确定内容足够,则tlb预取电路继续监控和检测虚拟存储器访问。根据方框408,如果内容不足,则tlb预取电路确定虚拟存储器预取地址。例如,在存储器地址‘x’和深度为3的先前示例中,tlb预取电路为x+1、x+2和x+3中最低的一个生成地址。更具体地,tlb可能包含x+1的条目,但不包含x+2或x+3的条目。因此,tlb预取电路生成对应于x+2的预取地址。根据某些实施方式,tlb预取电路可配置为考虑不同的虚拟存储器页面尺寸。页面尺寸可确定用于每个条目的地址尺寸,因为虚拟地址的低序位比特不影响虚拟到物理的转换;低序位比特被用作所需页面内的偏移。用于偏移的比特数由虚拟存储器空间的页面尺寸确定。例如,4kb页面具有12个用于偏移的比特。页面尺寸设置的非限制性示例是4kb、16kb或64kb。因此,根据方框408,tlb预取电路可以使用页面尺寸配置输入420来确定适当的预取地址。在一些实施方式中,tlb预取电路可被配置以在传送预取请求之前等待地址总线变成空闲。因此,根据方框410,tlb预取电路被配置为确定是否满足空闲标准(或触发条件)。首先考虑的是是否启用空闲确定。根据方框414,如果未启用,则tlb预取电路传送虚拟存储器预取请求而不考虑总线的空闲状态。如果启用空闲确定,则tlb预取电路确定总线是否空闲。根据方框414,如果总线空闲,则tlb预取电路传送虚拟存储器预取请求。如果总线没有空闲,则tlb预取电路继续等待总线变为空闲。在等待时,可接收新的虚拟存储器访问。因此,根据方框412,tlb预取电路被配置为识别这种事件。在检测到新的访问请求时,tlb预取电路重复从方框404开始的流程。根据方框416,在tlb预取电路传送虚拟存储器预取请求之后,tlb预取电路确定tlb的结果内容是否足够。如本申请所讨论,特定的深度可以是可配置的量。例如,在上述深度为3的示例中,tlb预取电路确定tlb是否包含x+1、x+2和x+3。如果深度为4,tlb预取电路则确定tlb是否包含x+1、x+2、x+3和x+4。根据方框402,如果tlb内容足够,则tlb预取电路不会生成额外的预取请求直到检测到额外的虚拟存储器访问。如果tlb内容不足,则tlb预取电路可以生成额外的预取请求。根据方框418,在某些实施方式中,tlb预取电路可配置为限制预取请求的发布率。例如,发布率可表示为在任何给定时间未解决的预取请求的总数。完成页面漫游所需的时间长度通常足以生成和传送多个预取请求。每个额外的预取请求可消耗来自存储器系统的更多资源。同时,当预取请求仍然未决时,主控器可开始发布额外的虚拟存储器访问请求,并且附加的请求可被未解决的预取请求延迟。限制在任何给定时间未决的预取请求的总数可帮助限制延迟(可能由于使用预取请求而被引入)的量。在一些实施方式中,tlb预取电路被配置为将预取请求限制为每“n”个可用地址总线循环,其中一个总线循环对应于在地址总线上发布的后续地址请求之间的时序(timing)。因此,对于值4,在四个总线循环完成后将满足速率标准。产生的延迟可用于限制由发布预取请求引起的潜在支出。根据一些实施方式,tlb预取电路被配置为生成预取请求,所述预取请求被配置为读取请求。使用读取请求可降低数据损坏的风险,其中数据损害可能发生在未正确过滤写入请求。例如,作为写入请求的并被允许到达主存储器的预取请求可覆盖主存储器中的数据。某些实施方式允许使用被配置为写入请求的预取请求。例如,存储器系统和其mmu配置有单独的写入和读取信道。tlb预取电路通过将预取请求格式化为写入和读取而使用每个信道的带宽。例如,tlb预取电路可启用空闲标准。在启用空闲标准的情况下,tlb预取电路在进入空闲状态的第一信道上发送预取请求。预取过滤电路确保写入请求不会到达主存储器。在具体实施方式中,预取写入请求可配置使所有字节使能(allbyte-enables)禁用(de-asserted),从而即使请求到达主存储器也不会写入数据。在一些情况下,tlb预取电路被配置为确定来自主控器的虚拟存储器访问请求是读取请求还是写入请求。tlb预取电路格式化由虚拟存储器访问请求触发的任何预取请求,以匹配所确定的读取或写入类型。按此方式,预取请求将匹配底层虚拟存储器访问的访问类型(读取或写入)。根据本发明所述的各种实施方式,tlb预取电路被配置为使用相应tlb(位于mmu中)中的内容的知识。因此,tlb预取电路保持tlb内容的本地副本。本地副本不需要包含所有tlb数据或功能。具体地,对于本地副本来说,包括用于实际tlb中的当前条目的虚拟存储器地址就足够了(例如,不需要存储物理地址)。各种实施方式已在下面的情况中进行了说明:tlb预取电路使用连续的页面和相应的地址来生成虚拟存储器预取请求,连续的地址是相对于最近接收的虚拟存储器访问的地址。其他实施方式允许tlb预取电路被配置为使用非连续的地址生成算法来生成预取地址。例如,特定主控器可执行一个功能,该功能通常每隔一个虚拟页面而访问存储器。因此,tlb预取电路可被配置为向每个间隔的虚拟页面生成预取地址。可相对于确定tlb内容的充分性(相对于期望深度参数)来进行类似的调整。也可使用其他更复杂的地址生成算法。图5根据本申请的实施方式示出了被配置为使用虚拟存储器预取请求的集成电路(ic)芯片的示例。ic芯片502包括虚拟存储器访问请求的多个来源(在一些互连解决方案中也被称为主控器)。所描绘的示例包括具有一个或多个cpu506和508的微控制器电路504、gpu510和可定制的知识产权(ip)核512。访问请求来源的一些其他非限制性示例包括可连接到输入/输出电路、ip核的dsp和dma电路或其他电路。尽管本发明讨论的各种实施方式不必限于此,但ic芯片可以是可编程ic芯片。例如,可编程ic可以是包括可编程资源(例如,逻辑块和互连)的soc。可编程资源可以是现场可编程门阵列逻辑(fpga),其中fpga包括阵列中的几种不同类型的可编程逻辑块。尽管描述了可编程ic,但是本领域技术人员将认识到,所公开的方法和系统可应用于针对专用集成电路(asic)的电路设计,并不限于可编程集成电路(ic)。所描绘的ic芯片包括mmu516以及预取生成电路514和预取过滤电路518,其中的每个都可与本申请所讨论的一个或多个实施方式一致。mmu控制对主存储器520进行访问,主存储器520被描绘为在芯片外。主存储器520也可位于芯片上。所描绘的部件中的一个或多个可在可编程逻辑中实现。例如,实体部件510、512、514和518可在可编程逻辑内实现。可编程逻辑的使用可为终端用户提供更大的灵活性。例如,预取生成电路514和预取过滤电路518可作为由ic芯片制造商开发的ip核库的一部分而被提供。然后,终端用户可决定是否为这些电路实现ip核。如本发明所述,mmu可被设计为基本上独立于预取生成电路514和预取过滤电路518而运行。例如,mmu可同样地处理所有的虚拟存储器请求,无论它们是预取请求还是来自专用主控器。因此,可从设计中选择性地添加或拆下ip核,同时对mmu配置几乎没有或没有影响。可编程ic502可包括大量不同的可编程片,为了简单起见,没有明确地描绘这些可编程片。可编程片的一些示例包括多千兆位收发器(mgt)、可配置逻辑块(clb)、随机存取存储器块(bram)、输入/输出块(iob)、配置及定时逻辑(config/clocks)、数字信号处理块(dsp)、专用输入/输出块(i/o)(例如,时钟端口)及其他可编程逻辑,比如数字时钟管理器、模数转换器、系统监控逻辑等等。图5旨在示出(可编程)ic芯片架构的非限制性示例。对于本发明描述的各种流程图,块的特定顺序和相关功能仅被作为示例提供。顺序不一定是限制性的,并且可根据各种实施方式而变化。本领域技术人员将理解,各种替代的计算布置,包括一个或多个处理器和配置有程序代码的存储器布置,将适合于托管执行本申请公开的功能的进程和数据结构。另外,这些进程可通过各种计算机可读存储介质或传送信道来提供,比如,磁盘或光盘或磁带、电子存储设备或作为网络上的应用程序服务。虽然在某些情况下可能会在个别附图中描述一些方面和特征,但应当理解,即使组合没有明确地示出或明确地描述为组合,但来自一个附图的特征也可与另一个附图的特征相组合。在一个示例中,可提供一种为虚拟存储器和多端口存储器管理单元mmu电路生成虚拟存储器预取请求的方法。该方法可包括:监控发送至所述mmu电路的特定端口的虚拟存储器访问请求;检测至少一个触发条件的满足,所述触发条件可基于所述虚拟存储器访问请求;响应于所述触发条件的满足,生成虚拟存储器预取请求;使用所述特定端口将所述虚拟存储器预取请求传送至所述mmu电路;为对应于所述虚拟存储器预取请求的物理地址监控来自所述mmu电路的物理访问请求;以及过滤与所述虚拟存储器预取请求相对应的物理访问请求。该方法还可包括:为所述被过滤的物理地址生成作业完成指示,并将所述作业完成指示提供给所述mmu电路。该方法还可包括:接收所述虚拟存储器的页面尺寸的指示,并响应于所述指示调整所述至少一个触发条件。该方法还可包括:接收虚拟存储器预取请求数量的指示,以响应于所述指示生成并调整另一个触发条件。该方法还可包括:检测所述mmu电路的特定端口的空闲状态,其中所述使用特定端口将所述虚拟存储器预取请求发送至所述mmu电路可响应于所述空闲状态的检测。该方法还可包括:响应于接收相应的指示禁用对所述空闲状态的检测的响应。该方法还可包括:接收用于生成虚拟存储器预取请求的发布率的指示,并响应于所述指示在所述传送虚拟存储器预取请求之间插入延迟。在一些此类方法中,所述虚拟存储器预取请求可以是每个读取请求。在一些此类方法中,所述虚拟存储器预取请求可包括写入请求。在另一个示例中,可提供一种系统。该系统可包括:存储器管理单元mmu电路,所述mmu电路包括多个端口,每个端口被配置为使用相应的转换检测缓冲区tlb将虚拟存储器地址转换为物理存储器地址;至少一个tlb预取电路,所述至少一个tlb预取电路用于所述多个端口中的特定端口并可被配置为:监控发送至所述mmu电路的特定端口的虚拟存储器访问请求;为所述虚拟存储器访问请求检测至少一个触发条件的满足;响应于所述至少一个触发条件的满足,生成虚拟存储器预取请求;以及使用所述特定端口将所述虚拟存储器预取请求传送至所述mmu电路;以及至少一个tlb预取过滤电路,所述至少一个tlb预取过滤电路可被配置为:为对应于所述虚拟存储器预取请求的物理地址监控来自所述mmu电路的物理访问请求;以及过滤与所述虚拟存储器预取请求相对应的物理地址。在一些这样的系统中,所述至少一个tlb预取过滤电路还可被配置为为所述过滤的物理地址生成作业完成指示,并将所述作业完成指示提供给所述mmu电路。在一些这样的系统中,所述至少一个tlb预取电路还可被配置为接收所述系统的虚拟存储器的页面尺寸的指示,并响应于所述指示调整所述至少一个触发条件。在一些这样的系统中,所述至少一个tlb预取电路还可被配置为接收虚拟存储器预取请求数量的指示,以响应于所述指示生成并调整另一个触发条件。在一些这样的系统中,所述至少一个tlb预取电路还可被配置为为所述特定端口检测空闲状态,并响应于所述空闲状态的检测传送所述虚拟存储器预取请求。在一些这样的系统中,所述至少一个tlb预取电路还可被配置为响应于接收相应的指示禁用对所述空闲状态的检测的响应。在一些这样的系统中,所述至少一个tlb预取电路还可被配置为接收用于生成虚拟存储器预取请求的发布率的指示,并响应于所述指示在传送所述虚拟存储器预取请求之间插入延迟。在一些这样的系统中,所述虚拟存储器预取请求可以是每个读取请求。在一些这样的系统中,所述虚拟存储器预取请求可包括写入请求。在一些这样的系统中,所述至少一个tlb预取电路可被配置为确定发送至所述mmu电路的特定端口的虚拟存储器访问请求是写入还是读取请求,并将虚拟存储器预取请求分别配置为写入或读取请求。一些这样的系统还可包括集成电路芯片,所述集成电路芯片包括所述mmu电路、所述至少一个tlb预取电路和所述至少一个tlb预取过滤电路中的每个电路。该方法和系统被认为适用于使用ram电路的各种系统。考虑到说明书,其他方面和特征对于本领域技术人员来说是显而易见的。该方法和系统的各部分可被实现为一个或多个处理器,这些处理器被配置为作为专用集成电路(asic)或作为可编程逻辑器件上的逻辑而执行软件。此外,本申请识别的各种电路可共享硬件电路,比如,使用公共计算机处理单元或数字处理单元。说明书和附图仅旨在被视为示例,本发明的实际范围由所附权利要求书指示。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1