用于调整预取流的程度的自适应机制的制作方法

文档序号:9524141阅读:444来源:国知局
用于调整预取流的程度的自适应机制的制作方法
【专利说明】用于调整预取流的程度的自适应机制
[0001]本申请要求于2014年7月17日提交第62/026,004号以及2015年6月3日提交的第14/730,217号美国临时专利申请的优先权。此在先申请的主题通过应用合并于此。
技术领域
[0002]本申请涉及存储数据,更具体地讲,涉及高速缓存管理。
【背景技术】
[0003]通常,计算机和由计算机执行的程序对无限量的快速存储器具有贪婪的需求。不幸地是,存储器(特别是快速存储器)通常在成本和芯片面积(die area)方面昂贵。对无限快速存储器的期望的传统解决方案是存储器层次结构,或者存储器层叠或层次系统。通常,分层存储器系统包括多级存储器,每一级比前一层慢但比前一层大。
[0004]典型的计算机存储器层次结构可包括三级。最快且最小的存储器(通常被称为“级别I(Ll)高速缓存”)最靠近处理器,并包括静态随机存取存储器(RAM和SRAM)。下一层或级通常被称为级别2(L2)高速缓存,并且比LI高速缓存大但比LI高速缓存慢。第三级是主存储器,并且一般包括通常被插入到存储器模块中的动态RAM(DRAM)。然而,其它系统可具有更多或更少的存储器层。此外,在一些系统中,处理器寄存器和永久或半永久存储装置(例如,硬盘驱动器、固态驱动器等)可被认为是存储器系统的一部分。
[0005]存储器系统通常利用包容原则,其中,最慢但最大的层(例如,主存储器等)包括所有的可用数据。第二层(例如,L2高速缓存等)包括所述可用数据的子集,下一层(例如,LI高速缓存等)包括第二层的数据子集的第二子集。结果,包括在更快层中的所有数据也被更慢层所包括。
[0006]通常,高速缓存基于位置原则(例如,时间位置、空间位置等)决定什么样子集的数据被包括。假设,程序将希望访问它最近已访问的数据或作为它最近已访问的数据的下一个数据的数据。例如,如果电影播放程序正在访问数据,则很可能电影播放器将要访问电影接下来的几秒等等。
[0007]然而,程序偶尔会请求在最快高速缓存(例如,LI高速缓存等)中不可用的一条数据。这通常被称为“高速缓存未命中”,并且使最快高速缓存向下一存储器层(例如,L2高速缓存)请求所述数据。由于在确定发生高速缓存未命中、由LI高速缓存搜索数据以及将其提供给处理器的过程中发生了延迟,因此对于存储器性能来说这是昂贵的。偶尔,下一存储器层(例如,L2高速缓存等)也不包括请求的数据,并且必须向下一层(例如,主存储器等)请求所述数据。这通常造成更多的延迟。

【发明内容】

[0008]根据一个总的方面,一种方法可包括:监视与数据流相关联的多个预取高速缓存请求。所述方法还可包括:评估所述多个预取高速缓存请求的准确性。所述方法还可包括:至少部分基于所述准确性,调整比所述数据流对数据的当前实际需求多且可允许被预取的数据的最大量。
[0009]根据另一总的方面,一种设备可包括预取确认器和存储器。预取确认器可被配置为:监视与数据流相关联的多个预取高速缓存请求,评估所述多个预取高速缓存请求的准确性,至少部分基于所述准确性,调整比所述数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。存储器可被配置为:存储第一数据结构,其中,第一数据结构指示所述多个预取高速缓存请求的准确性;存储第二数据结构,其中,第二数据结构指示比所述数据流对数据的当前实际需求多且允许被预取的数据的最大量。
[0010]根据另一总的方面,一种预取单元可包括模式表、自适应预取表和发射队列。模式表可包括与数据流相关联的模式数据结构。自适应预取表可包括自适应预取数据结构,其中,所述自适应预取数据结构与所述数据流相关联并指示比所述数据流对数据的当前实际需求多且可允许被预取的数据的最大量。发射队列可被配置为发出用于针对数据流预取数据的多个预取高速缓存请求。预取单元可被配置为:评估所述多个预取高速缓存请求的准确性,至少部分基于所述准确性,调整比所述数据流对数据的当前实际需求多且可允许被预取的数据的最大量。
[0011]—个或更多个实现方式的细节在附图和以下描述中被阐述。从所述描述和附图并从权利要求,其它特征将是明显的。
[0012]用于存储数据的系统和/或方法,更具体地讲,用于高速缓存管理的系统和/或方法基本上如至少一个附图中所示,和/或如结合至少一个附图被描述,如在权利要求中被更全面地阐述。
【附图说明】
[0013]图1是根据公开的主题的系统的示例实施例的框图;
[0014]图2是根据公开的主题的数据结构的示例实施例的框图;
[0015]图3是根据公开的主题的状态机的示例实施例的框图;
[0016]图4是根据公开的主题的系统的示例实施例的框图;
[0017]图5是根据公开的主题的技术的示例实施例的流程图;
[0018]图6是可包括根据公开的主题的原理形成的装置的信息处理系统的示意框图。
[0019]在各种附图中的相同参考符号指示相同元件。
【具体实施方式】
[0020]在下面将参照示出一些示例实施例的附图更充分地描述各种示例实施例。然而,可以以许多不同的形式来实施本公开的主题,并且本公开的主题不应被解释为局限于在此阐述的示例实施例。相反,提供这些示例实施例使得本公开将会是彻底和完整的,并将充分地将本公开主题的范围传达给本领域的技术人员。在附图中,为了简明,可夸大层和区域的大小和相对大小。
[0021]应该理解,当元件或层被称作在另一元件或层“之上”、“连接”或“结合”到另一元件或层时,该元件或层可能直接在所述另一元件或层之上、连接或结合到另一元件或层,或者可能存在中间元件或层。相反,当元件被称作“直接”在另一元件或层“之上”、“直接连接”或“直接结合”到另一元件或层时,不存在中间元件或层。相同的标号始终代表相同的元件。如这里所使用的,术语“和/或”包括一个或更多个相关所列项的任何或全部组合。
[0022]应该理解,尽管在这里可使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应被这些术语所限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离本公开主题的教导的情况下,下面讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
[0023]在这里使用空间相对术语(诸如“在…下方”、“在…之下”、“下面的”、“在…之上”、“上面的”等)来轻松地描述在附图中示出的一个元件或特征与另一元件或特征的关系。应该理解,空间相对术语是为了包括除了附图中描述的方位之外的在使用或运行中的装置的不同方位。例如,如果附图中的装置被翻转,则被描述为在其它元件或特征“下方”或“之下”的元件将随后被定位为在所述其它元件或特征“之上”。因此,示例性术语“在…之下”可包括上面和下面两种方位。可将装置朝向另外的方位(旋转90度或在其它方位),并相应地解释在这里使用的空间相对描述符。
[0024]在这里使用的术语仅用于描述特定示例实施例的目的,而不意图限制本公开主题。如这里所使用的,单数形式也意图包括复数形式,除非上下文另有清楚的指示。还应该理解,当在本说明书中使用术语“包括”和/或“包括有”时,其表示存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或更多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。
[0025]参照作为理想化的示例实施例(和中间结构)的示意性示意图的剖面图,在这里描述示例实施例。同样地,预计会出现例如由制造技术和/或公差引起的图示的形状的变化。因此,示例实施例不应被解释为限于这里示出的区域的特定形状,而将包括例如由制造产生的形状的偏差。例如,示出为矩形的注入区域在其边缘通常具有圆形或弯曲特性和/或注入浓度的梯度,而不是从注入区域到非注入区域的二元(binary)改变。同样地,通过注入形成的埋区可能导致在埋区和通过其发生注入的面之间的区域中的一些注入。因此,在附图中示出的区域实际上是示意性的,所述区域的形状不是为了示出装置的区域的实际形状,也不是为了限制本公开主题的范围。
[0026]除非另有定义,否则这里使用的所有术语(包括技术和科学术语)具有与公开的主题所属领域的普通技术人员通常理解的含义相同的含义。还应该理解,除非这里明确定义,否则术语(诸如在常用词典中定义的)应被解释为具有与所述术语在相关领域的上下文中的含义一致的含义,而不应理想化或过于正式地被解释。
[0027]在下文中,将参照附图详细地解释示例实施例。
[0028]在各种实施例中,系统(例如,处理器、片上系统等)可包括被配置为执行或处理一个或更多个指令的执行单元。在这种实施例中,这些指令可构成程序或应用(或它们的一部分)。在各种实施例中,执行单元可被处理器或其它更大的计算机组件包括。在各种实施例中,这些指令可偶尔访问存储在存储器系统(例如,LI高速缓存、L2高速缓存和主存储器等)中的数据(例如,从存储器系统读取数据、将数据写入存储器系统等)。
[0029]在这种实施例中,当这些指令访问数据时,它们可首先向作为存储器系统的第一层或最快层的LI高速缓存请求数据。如果请求的数据被包括在高速缓存中(即,高速缓存命中),则LI高速缓存可提供所述数据(或在写指令的情况下更新存储的数据),并且执行单元可顺利进行操作。
[0030]然而,在各种实施例中,如果请求的数据未包括在高速缓存中(S卩,高速缓存未命中),则LI高速缓存可转而向L2高速缓存(即,存储器系统中的下一级或下一层)请求所述数据。这可能会对执行单元的能力产生不利影响或产生不期望的影响,并可使执行单元延迟或拖延指令的处理。
[0031]传统地,LI高速缓存一次仅向L2高速缓存请求一条数据。然而,在一些实施例中,系统可包括LI填充缓冲器,LI填充缓冲器被配置为使由LI高速缓存或其代表提出的对L2高速缓存的数据请求排队。在这种实施例中,LI高速缓存能够容纳来自执行单元的对数据的另外的请求,同时等待引起高速缓存未命中的数据的完成(fulfillment)。
[0032]类似地,L2高速缓存可存储数据的子集。如果高速缓存未命中的数据被包括在高速缓存中,则该数据可
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1