一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

自适应地址跟踪的制作方法

2022-02-20 13:13:30 来源:中国专利 TAG:


1.本公开涉及存储器,并且更具体地涉及自适应地址跟踪。


背景技术:

2.为了有效地操作,一些计算系统包含分级存储器系统,其可以包含多级存储器。这里,有效操作意味着成本效率和速度效率。较快的存储器通常比相对较慢的存储器更昂贵,因此设计者试图平衡它们的相对成本和收益。一种方法是使用较少量的较快存储器和较大量的较慢存储器。与较慢的存储器相比,较快的存储器被部署在分层存储器系统中的较高层,使得优先存取较快的存储器。相对较快的存储器的实例被称为高速缓冲存储器。相对较慢的存储器的实例是后备存储器,其可以包含主存储器、主存储器、后备存储器等。
3.高速缓冲存储器可通过使用例如高性能存储器单元来存储和检索后备存储器的数据来加速数据操作。高性能存储器单元使高速缓冲存储器能够比后备存储器更快地响应存储器请求。因此,高速缓冲存储器可以基于存在于高速缓存中的所需数据实现来自存储器系统的更快响应。一种增加所需数据存在于高速缓存中的可能性的方法是在请求数据之前预取数据。为此,预取系统试图预测处理器将请求哪些数据,然后将该预测的数据加载到高速缓存中。虽然预取系统可使高速缓冲存储器更可能加速存储器存取操作,但数据预取可引入工程师和其它计算机设计者努力克服的操作复杂性。


技术实现要素:

4.本公开的一方面提供了一种方法,其包括:接收存取与存储器地址空间的地址相关联的数据的命令的指示;响应于命令将存取元数据存储在存储器中,存取元数据存储在包括一或多个条目的数据集中,数据集的每个条目覆盖存储器地址空间的地址范围并且包括与覆盖的地址范围内的地址有关的存取元数据;以及至少部分地基于指示由数据集的条目中的一或多个覆盖的地址范围内的预取性能的一或多个度量,将一或多个位写入存储器以调整由数据集的条目中的至少一个覆盖的地址范围的大小。
5.本公开的另一方面提供了一种设备,其包括:第一存储器,其经配置以存储与地址空间有关的存取元数据,存取元数据保持在数据集的条目内,数据集的每个条目覆盖由存取元数据覆盖的地址范围集的相应地址范围;耦合到第一存储器的第一逻辑,第一逻辑经配置以响应于与由存取元数据覆盖的地址范围集内的地址相关联的命令的指示而更新存取元数据;以及第二逻辑,其经配置以:保持数据结构以定义由第二存储器内的存取元数据覆盖的地址范围集,数据集的每个条目与数据结构的相应节点相关联,数据结构定义由数据集内的条目的存取元数据覆盖的地址范围;至少部分地基于与存取元数据相关联的一或多个度量,调整由数据结构定义的地址范围集的地址范围,度量指示由存取元数据覆盖的地址范围集内的预取性能;以及向第一存储器写入一或多个位以配置数据集的条目以覆盖调整后的地址范围。
6.本公开的另一方面提供了一种系统,其包括:用于接收与存取与存储器地址空间
的地址相关联的数据的命令有关的信息的构件;用于响应于命令而将数据集的条目内的存取元数据存储在存储器内的构件,数据集的每个条目经配置以覆盖地址范围集的相应地址范围并且包括与覆盖的地址范围内的地址有关的存取元数据;以及用于至少部分地基于指示地址范围集的一或多个地址范围内的预取性能的一或多个度量调整由数据集的至少一个条目覆盖的地址范围的大小的构件。
附图说明
7.在本文中参考以下附图描述了自适应地址跟踪的一或多个方面的细节。在所有附图中使用相同的附图标记来表示相同的特征和组件:
8.图1-1图示了可以实现自适应地址跟踪的实例设备。
9.图1-2图示了可以实现自适应地址跟踪的设备的进一步实例。
10.图2图示了用于实现自适应地址跟踪的实例设备。
11.图3图示了用于实现自适应地址跟踪的设备和数据结构的实例。
12.图4图示了用于实现自适应地址跟踪的设备和数据结构的进一步实例。
13.图5-1图示了用于实现自适应地址跟踪的设备和数据结构的进一步实例。
14.图5-2至5-9图示了用于在各种自适应地址跟踪实施方案中管理地址范围的实例技术。
15.图6图示了可以实现自适应地址跟踪的另一实例设备。
16.图7图示了可以实现自适应地址跟踪的另一实例设备。
17.图8图示了可以实现自适应地址跟踪的实例高速缓冲存储器。
18.图9和10图示了描述用于自适应地址跟踪的操作的实例流程图。
19.图11图示了描绘用于修改自适应跟踪引擎的存取元数据所覆盖的地址范围和/或地址范围大小的操作的实例流程图。
20.图12-1和12-2图示了描绘用于减少由自适应跟踪引擎覆盖在存取元数据内的地址范围大小的操作的实例流程图。
21.图13-1和13-2图示了描绘用于增加自适应跟踪引擎在存取元数据内覆盖的地址范围大小的操作的实例流程图。
22.图14图示了描述用于合并自适应跟踪引擎的相关存取元数据条目的操作的实例流程图。
23.图15图示了描绘用于自适应地址跟踪的操作的实例流程图。
24.图16图示了描述用于适配存取元数据所覆盖的地址范围大小以提高预取性能的操作的实例流程图。
25.图17图示了用于实现自适应地址跟踪的系统的实例。
26.图18图示了用于实现自适应地址跟踪的系统的另一实例。
具体实施方式
27.概述
28.半导体处理技术和微体系结构的进步已经导致处理器周期时间的显著减少和处理器密度的增加。同时,存储器技术的进步已导致存储器密度的增加,但存储器存取时间的
减少相对较小。因此,以处理器时钟周期测量的存储器延迟不断增加。然而,高速缓冲存储器可有助于桥接处理器-存储器延迟间隙。可以存储后备存储器的数据的高速缓冲存储器能够比后备存储器更快地服务请求。在一些方面,高速缓冲存储器可部署在存储器层次结构中的后备存储器“上方”或“前方”,使得优选地在存取较慢的后备存储器之前存取高速缓冲存储器。
29.尤其由于成本考虑,高速缓冲存储器可能具有比后备存储器更低的容量。因此,高速缓冲存储器可以加载后备存储器的地址空间的选定子集。根据适当的标准,诸如高速缓存准入策略、驱逐策略、替换策略等,可以选择性地从高速缓冲存储器准入和/或驱逐数据。
30.在操作期间,可响应于“高速缓存未命中”而将数据加载到高速缓存中。高速缓存未命中是指与未加载到高速缓存中和/或未包含在工作集中的地址有关的请求。高速缓存未命中会显著降低性能。保持高速缓存未命中可能涉及从后备存储器中获取数据。相反,服务导致“高速缓存命中”的请求可能涉及存取相对较高性能的高速缓存而不导致存取相对较低性能的后备存储器的延迟。
31.可通过预取来增强高速缓存性能。预取涉及在请求地址之前将后备存储器的地址加载到高速缓存的工作集中。预取器可尤其基于先前请求的地址来预测即将到来的请求的地址。可以在后台操作中将预测地址加载到高速缓存中,使得当随后接收到关于预测地址的请求时,可以从高速缓冲存储器服务请求,而不引起高速缓存未命中。换言之,可以使用相对较高性能的高速缓冲存储器来服务有关预取地址的请求,而不会导致相对较低性能的后备存储器的延迟。在一些方面,可通过使用空闲资源来实现预取。例如,当需要资源来服务传入请求时,可以终止或暂停预取,并且可以在资源可用时重启或恢复预取。
32.预取的益处或“预取效用”可以根据“有用预取”或有用预取与“坏”预取的比率来量化。如本文中所使用,“有用”或“准确”预取是指对导致随后的高速缓存命中的地址的预取。有用或准确的预取可以是预取器的有用或准确的地址预测的结果。相反,“坏”预取是指对在从高速缓冲存储器中逐出之前未被存取的地址(例如,不导致随后的高速缓存命中)的预取。坏的预取可能对性能产生不利影响。坏的预取可能占用具有随后未被请求的地址的有限的高速缓冲存储器资源,否则该地址可能已被用于高速缓存其它更频繁存取的数据。因此,不准确的地址预测可导致高速缓存未命中率增加、引起系统颠簸、增加去往/来自后备存储器的带宽消耗等。
33.一些预取器试图通过尝试检测存储器被存取的模式,然后根据检测到的模式预取数据来避免这些问题。然而,存取模式可以在地址空间的区域之间变化。在特定地址范围内存取存储器的存取模式可以取决于数个因素,包含但不限于:程序利用地址区域、程序的状态、由程序执行的处理任务、程序的执行阶段、由区域内的程序存取的数据结构的类型等。由于存取模式可随地址空间的区域而变化,因此在地址空间的一个区域内产生准确预取的存取模式可导致其它区域内的不准确地址预测。作为非限制性实例,在地址空间的一个区域内运行的程序可以根据第一模式来存取存储器,在该第一模式中,连续请求的地址被偏移第一增量δ1。在地址空间的另一区域内运行的程序可以根据不同的第二模式来存取地址,在该第二模式中,连续的请求被不同的第二增量δ2分隔。尽管第一模式能够在第一区域内产生有用的预取,但是如果在第二区域中使用第一模式,则第一模式将可能产生差的结果(反之亦然),因为第二区域中的地址被偏移δ2而不是δ1。
34.可以通过跟踪地址空间的各个区域内的存取元数据来提高预取性能。存取元数据可包含关于相应区域内的存储器存取的信息,诸如先前请求的地址的序列、地址偏移、在给定时间跨度内发生了多少次存取等,其可用于确定相应区域内的存取模式。这些存取模式可用于预取可能在不久的将来被请求的数据。这些区域可以覆盖适当大小的地址范围,其中模式是一致的。例如,区域可以试图覆盖程序存取特定类型数据结构的地址范围。以这种方式跟踪存取元数据可以产生专用于各个区域的存取模式,其然后可以用于确定各个区域内的准确地址预测。
35.由于资源考虑,可以限制其中跟踪存取元数据的区域的数量,以及确定区域的固定大小的机制。这种资源考虑的实例包含硬件资源的可用性、存储器消耗、存储消耗、计算复杂度等。此外,现代计算系统的地址空间可能非常大,这会加剧资源消耗问题。许多现代计算系统的存储器管理系统利用64位或甚至更大的虚拟地址空间。为了管理资源消耗,可以在跨越至少部分地址空间的固定大小的区域或“集中区”内跟踪存取元数据。可以通过在线试错法、测试和经验等来选择区域的固定大小,因为其它计算强度更大的区域大小调整技术可能无法实时执行,并且可能产生不可接受的开销。跟踪区域的固定大小通常被设置为尽可能大,同时仍然产生可接受的预取器性能以便管理资源消耗。
36.尽管利用固定大小区域的技术可强加相对低的开销,但这些技术常常可导致次优或甚至差的结果,因为预取器性能可对地址范围大小高度敏感。更具体地,良好的预取器性能可以依赖于覆盖适当大小的地址范围的存取元数据。固定大小的跟踪区域的大小调整大小以精确地捕获存储器工作负荷的存取模式。例如,为了准确地捕获区域内的跨距存取模式,跟踪区域的固定大小应该粗略地匹配在该区域中被存取的数据结构的大小。太大的固定大小的区域可能与具有不同存取模式的工作负荷重叠。相反,太小的固定大小的区域可能不能捕获在其它工作负荷下产生的模式的全部范围,使得难以或甚至不可能提取准确、一致的存取模式。
37.此外,诸如数据结构大小之类的工作负载特征可以在程序之间以及因此在区域之间变化,这意味着适合于在地址空间的某些部分中使用的固定范围大小可能不适合于在其它部分中使用(反之亦然)。更具体地,能够精确捕获由一些程序产生的存取模式的固定范围大小可能不能精确捕获由其它程序产生的存取模式。此外,程序的工作负荷特性可以基于程序状态随时间变化,诸如执行阶段、处理任务、数据集等。尽管有可能选择能够在某些执行阶段期间捕获某些程序的存取模式的固定范围大小,但是所选择的固定范围大小可能不能在其它执行阶段期间精确地捕获存取模式,而由其它程序产生的存取模式要少得多。因此,固定大小的区域不可能实现最佳预取器性能,且甚至可导致性能下降。另外,由于存取元数据通常在诸如存储器i/o路径之类的性能敏感组件处和/或在其内部进行跟踪,因此在管理动态大小的地址区域中通常涉及的开销可导致设计者远离固定大小技术的备选方案。
38.为了解决这些和其它问题,本文描述了能够跟踪动态大小的地址区域内的存取元数据的自适应地址跟踪技术。可以调整其中跟踪存取元数据的地址区域的大小以提供具有减少的开销的改进的预取器性能。在一些方面,在一组自适应跟踪区域内保持关于地址空间的存取元数据,每一相应区域经配置以覆盖地址空间的相应地址范围。由存取元数据覆盖的地址范围的大小可以随区域而变化。可以在一组条目中跟踪存取元数据,其中每个条
目覆盖指定的地址范围。可基于相应地址区域内的预取器性能来调适相应条目的地址范围(和范围大小)。可以动态地调整范围大小,同时确保存取元数据所覆盖的地址范围是不同的(例如,不重叠)。在自适应大小的区域内捕获存取元数据可以实现改进的预取精度,同时限制资源消耗。所保持的存取元数据可以是“稀疏的”并且仅覆盖受益于预取且处于活动状态(例如,正在使用中)的地址范围。
39.所描述的自适应地址跟踪技术还可以包含使用范围管理数据结构来管理由存取元数据覆盖的地址范围。数据结构可以管理一组动态大小的存取元数据条目,其可以被存储为数据集的一部分,使得由该组覆盖的地址范围是不同的。如本文所使用的,“不同的”存取元数据条目指的是覆盖不同的、不重叠的地址范围的一组条目。数据结构可以使用例如具有多个节点的树来实现。数据结构可用于通过遵循区别性约束(例如,使由相应存取元数据条目覆盖的地址范围不同的约束)的低复杂度操作来配置和动态调整地址范围。可基于反馈(诸如与存取元数据所涵盖的相应地址范围内的预取性能有关的反馈)来调适地址范围。可调整地址范围以改进预取性能、减少开销等。以下描述的一些实例实现场景涉及高速缓冲存储器、基于相关性的预取、基于机器学习的预取、其组合等。
40.所公开的自适应地址跟踪技术可改进高速缓存性能。例如,考虑步幅预取技术,其中利用在相应地址范围内捕获的存取元数据来提取“步幅模式”,其中连续请求的地址由恒定偏移量(步幅s)分隔。可以从存取历史元数据(例如,相应地址范围内的n个最近请求的地址)中提取步幅模式。例如,覆盖地址空间的第一区域的存取元数据可以产生步幅模式,其中连续请求由第一步幅量s1分隔。响应于第一区域内的地址a处的高速缓存未命中,可将地址a、a s1、a 2s1……
至a ds1预取到高速缓冲存储器中,其中a是高速缓存未命中地址且d是预取程度。由于各区域之间的步幅模式存在显著差异,因此步幅预取器可以使用覆盖各个区域的存取元数据来检测每个区域内的单位步幅模式。然而,如本文所公开的,步幅模式的准确检测可以依赖于覆盖适当大小的地址区域的存取元数据,这可以取决于由在每个区域内操作的程序存取的数据结构的大小。因此,适当的地址范围大小可以在区域与区域之间显著变化。因此,在固定大小的区域内跟踪的存取元数据可能无法准确地建模跨越地址空间的不同区域的步幅模式。然而,本文公开的自适应地址跟踪技术可以调整其中跟踪存取元数据的地址区域的大小和/或范围,从而提高步幅模式检测的准确性,进而提高步幅预取操作的效用。
41.在其它实例中,本文所公开的自适应地址跟踪技术可改进其它预取机制,诸如相关预取器。相关预取器试图学习可能重复但不如简单步幅或增量地址模式一致的模式。相关预取技术能够检测在地址空间的各个区域中捕获的地址序列内的循环增量序列。包含两个元素(δ1,δ2)的增量序列的相关预取可以包含预取地址a δ1、a δ1 δ2、a 2δ1 δ2、a 2δ1 2δ2等等(取决于相关预取操作的程度),其中a是触发相关预取的高速缓存未命中发生的地址。由于相关预取技术试图从存取元数据中提取更复杂的模式,因此这些技术甚至对地址范围大小更敏感。因此,在相关预取中使用固定大小的跟踪区域可能由于相应区域内的适当地址范围大小与固定范围大小之间的失配而产生较差的性能。然而,本文所公开的自适应地址跟踪技术可能能够调整地址范围大小以准确地捕获地址空间的不同区域内的相关性和/或增量序列模式。
42.所公开的自适应地址跟踪技术还可以改善机器学习和/或机器学习(ml)预取实现
的性能,诸如基于分类的预取器、人工神经网络(nn)预取器、递归nn(rnn)预取器、长短期存储器(lstm)预取器等。例如,可以训练lstm预取器来对地址空间内的存储器存取的“本地上下文”建模(每个“本地上下文”对应于地址空间的相应地址范围)。这些类型的ml预取技术可试图利用本地上下文,因为如本文中所公开,由在相应本地上下文内运行的程序存取的数据结构倾向于存储在重复存取(或以规则模式)的连续块中。可以训练ml预取器以在相应的本地上下文内开发和/或细化ml模型,并且可以使用ml模型来实现预取操作。然而,由于在地址空间的各个部分内操作的程序所产生的工作负载的差异,本地上下文可以在地址空间上显著变化。例如,其中程序重复存取第一类型的数据结构的本地上下文可以显着地不同于其中其它程序可以根据不同的存取模式存取其它类型的数据结构的地址空间的其它区域的本地上下文。因此,经训练以学习地址空间的一个区域(和/或由一个程序产生)内的局部上下文的ml模型可能不能准确地对地址空间的其它区域(和/或由其它程序产生)内的局部上下文建模。
43.此外,ml模型可以依赖于覆盖适当大小的地址范围的存取元数据。用于开发、训练或应用特定本地上下文的ml模型的存取元数据的地址范围应当根据由特定本地上下文覆盖的大小、范围、区域或范围来确定大小。更具体地,地址范围的大小应当足以覆盖特定的本地上下文而不与其它本地上下文重叠。类似于范围大小,合适的本地上下文大小可以基于与本地上下文相关联的程序、程序的状态、执行阶段、在本地上下文内存取的数据结构等而显著变化。因此,在固定大小的地址范围内跟踪的存取元数据可能不适合与ml技术一起使用,更不用说尝试对可变大小的本地上下文内的存取模式建模的ml技术。然而,所公开的自适应地址跟踪技术可用于捕获、保持和/或以其它方式管理覆盖对应于不同大小的本地上下文的地址范围的存取元数据。更具体地,由各个存取元数据条目覆盖的地址范围的大小可以适于覆盖由ml预取器建模的各个本地上下文。
44.因此,所描述的用于自适应地址跟踪的技术可与高速缓存和其它分层存储器系统一起使用、与不同类型的预取一起使用、与组合预取和高速缓冲存储器的实施方案一起使用,等等。为此,将存储器系统的存储器地址空间分成多个地址范围。自适应跟踪引擎产生包含一或多个条目的数据集,每个条目覆盖地址空间的地址范围并包含所覆盖的地址范围的存取元数据。存取元数据的实例包含与所覆盖的地址范围内的存储器存取有关的信息、存取统计、存取模式统计、存取历史、存取序列、存取频率元数据、存取时间元数据、存取模式元数据、步幅模式、相关模式、增量序列、存取建模元数据、ml建模元数据、ml特征数据等。
45.在操作中,自适应跟踪引擎可以调整由存取元数据覆盖的地址范围集,其可包含调整由数据集的一或多个条目覆盖的地址范围的大小。为了便于调整地址范围大小,自适应跟踪引擎可以保持数据结构。例如,可以使用具有多个节点的至少一个树或多层地图数据结构来实现该数据结构。数据结构可以包含多个节点层,每一层对应于特定的地址范围大小。与树的相对较高层的节点相比,树的相对较低层的节点可以对应于相对较小的地址范围。每个叶节点或树分支末端的节点可以链接或指向数据集的相关联条目。因此,在树的给定节点的节点层与由给定节点指向的相关联条目指示的地址范围大小之间可以存在对应关系。数据结构可以编码节点之间的父子关系,其可以对应于由节点表示的地址范围之间的包含关系。在一些实施方案中,父节点的每个子节点表示由父节点表示的地址范围的相应子集。
46.为了调整地址范围大小,有效的数据结构操作可以操纵树的节点。例如,操作可将给定节点移动到对应于不同地址范围大小的不同节点层。此类数据结构操作包含拆分节点、合并节点等。数据结构的上层内的节点拆分成多个下层节点,每个下层节点覆盖由上层节点覆盖的地址空间的相应子集。数据结构的较低层中的一组一或多个节点可以合并到较高层节点中,较高层节点覆盖的地址范围大于并包含由较低层节点组覆盖的地址范围。对数据集的一或多个相关条目执行类似的操作,以保持数据结构的节点和数据集的条目之间的一致性。在一些情况下,数据集的条目可以与数据结构的节点一起存储。以这些方式,所描述的用于自适应地址跟踪的技术便于使用有效的存储和操作机制以可变粒度跟踪关于地址请求的元数据。存储器地址范围粒度可在操作期间自适应地改变以适应或考虑不同程序、不同程序状态、各种数据结构或数据结构类型、完全不同的预取策略(例如,相关或基于ml)等。
47.实例操作环境
48.图1-1图示了可以实现自适应地址跟踪的实例设备100。设备100可以实现为例如至少一个电子装置。实例电子装置实施方案包含物联网(iot)装置100-1、平板再装载100-2、智能电话100-3、笔记本计算机100-4、台式计算机100-5、服务器计算机100-6、服务器集群100-7等。其它设备实例包含可穿戴装置,诸如智能手表或智能眼镜;娱乐装置,诸如机顶盒或智能电视;母板或服务器叶片;消费电器;车辆;工业设备;等等。每种类型的电子装置包括一或多个组件以提供某些计算功能或特征。
49.在实例实施方案中,设备100包含至少一个主机102、至少一个处理器103、至少一个存储器控制器104和至少一个高速缓冲存储器106。设备100还可包含至少一个互连105和至少一个后备存储器108。后备存储器108可以表示主存储器、系统存储器、后备存储器、其组合等等。后备存储器108可以用任何合适的存储器设施来实现,包含但不限于:存储器阵列、半导体存储器、随机存取存储器(ram)、动态ram(dram)装置或模块、静态ram(sram)装置或模块、三维(3d)堆叠dram装置或模块、双倍数据速率(ddr)存储器、同步dram(sdram)装置或模块、高带宽存储器(hbm)装置或模块、混合存储器立方体(hmc)等。可替换地或附加地,后备存储器108可用包含存储级存储器的装置或模块来实现,诸如固态存储器、闪存、3d xpoint
tm
存储器、相变存储器(pcm)等。本文描述后备存储器108的其它实例。在一些方面,主机102可进一步包含非暂时性存储装置和/或耦合到非暂时性存储装置,非暂时性存储装置可用包括任何合适的非暂时性、持久性、固态和/或非易失性存储器的装置或模块来实现。
50.如图所示,主机102或主机装置102可包含处理器103和/或存储器控制器104。处理器103可耦合到高速缓冲存储器106-1,且高速缓冲存储器106-1可耦合到存储器控制器104。处理器103还可直接或间接地耦合到存储器控制器104。主机102可通过互连105耦合到高速缓冲存储器106-2。高速缓冲存储器106-2可以耦合到后备存储器108。
51.所描绘的设备100的组件表示具有存储器层级(或分层存储器系统)的实例计算架构。例如,高速缓冲存储器106-1可以逻辑地耦合在处理器103与高速缓冲存储器106-2之间。此外,高速缓冲存储器106-2可以逻辑地耦合在处理器103与后备存储器108之间。在图1-1的实例中,高速缓冲存储器106-1处于比高速缓冲存储器106-2更高的存储器层级。类似地,高速缓冲存储器106-2处于比后备存储器108更高的存储器层级。所指示的互连105以及耦合各种组件的其它互连可使得能够在各种组件之间或之中传送数据。互连实例包括总
线、交换结构、承载电压或电流信号的一或多条导线等。
52.尽管在图1-1中示出并在本文描述了设备100的特定实施方案,但是设备100可以以替代方式实现。例如,主机102可包含附加的高速缓冲存储器,包含多级高速缓冲存储器(例如,多个高速缓存层)。在一些实施方案中,处理器103可包含一或多个内部存储器和/或高速缓存层,诸如指令寄存器、数据寄存器、l1高速缓存、l2高速缓存、l3高速缓存等。此外,至少一个其它高速缓冲存储器和后备存储器对可耦合在所示的高速缓冲存储器106-2与后备存储器108的“下方”。高速缓冲存储器106-2和后备存储器108可以以各种方式实现。在一些情况下,高速缓冲存储器106-2和后备存储器108均设置在主板上或由母板物理地支撑,其中后备存储器108包括“主存储器”。在其它情况下,高速缓冲存储器106-2包含dram和/或由其实现,而后备存储器108包含非暂时性存储器装置或模块和/或由其实现。然而,这些组件可以以可替换的方式实现,包含在分布式或共享存储器系统中。此外,给定的设备100可包含更多、更少或不同的组件。
53.高速缓冲存储器106-2可经配置以通过尤其将后备存储器108的地址存储在相对较高性能的高速缓冲存储器106-2内来加速存储器i/o。在图1-1的实例中,高速缓冲存储器106-2可包含和/或耦合到自适应跟踪引擎110,其可经配置以捕获、保持、跟踪和/或以其它方式管理与地址空间的相应地址范围内的存取有关的元数据(存取元数据112)。存取元数据112可包含与任何合适的地址空间有关的信息,包含但不限于:存储器地址空间、存储地址空间、主机地址空间、输入/输出(i/o)地址空间、存储地址空间、后备存储器108的地址空间、主存储器地址空间、虚拟存储器地址空间、尤其由处理器103、存储器控制器104、存储器管理单元(mmu)等管理的地址空间。
54.自适应跟踪引擎110捕获与地址空间的相应区域和/或地址范围有关的存取元数据112。自适应跟踪引擎110还可经配置以基于来自存取元数据112的消费者115的反馈来适配区域和/或地址范围。如本文所使用的,消费者115是指经配置以和/或能够利用和/或以其它方式消费由自适应跟踪引擎110保持的存取元数据112的任何组件、元件、模块和/或过程,包含但不限于:处理器103、存储器控制器104、mmu、高速缓存层、高速缓冲存储器106(例如,高速缓冲存储器106-1和106-2)、高速缓存控制逻辑、高速缓存预取逻辑、预取逻辑、预取器、调度器、i/o调度器等。
55.在图1-1中,高速缓冲存储器106-2是存取元数据112的消费者115,并且可以利用存取元数据112来预取后备存储器108的地址。自适应跟踪引擎110可以接收与存取元数据112所覆盖的各个区域内的预取性能有关的反馈,并且可以调整存取元数据112所覆盖的地址范围以提高精度,从而以有限的资源开销产生更准确的地址预测。因此,自适应跟踪引擎110可通过尤其使高速缓冲存储器106-2能够提高预取性能来提高存储器i/o性能,从而导致较低的高速缓存未命中率。
56.尽管在图1-1的实例中,自适应跟踪引擎110被示为高速缓冲存储器106-2的组件,但是本公开不限于此。在其它实例中,自适应跟踪引擎110可以通过任何合适的互连耦合到任何合适的消费者115。在图1-2所示的实例中,自适应跟踪引擎110耦合到主机102的互连105,并且经配置以通过尤其监视互连105和/或存储器分级结构的互连上的流量来捕获存取元数据112,互连包含但不限于将处理器103耦合到高速缓存存储器106-1、将高速缓存存储器106-1耦合到存储器控制器104、将高速缓存存储器106-2耦合到后备存储器108等的互
连。自适应跟踪引擎110可以通过互连105或其它互连向一或多个消费者115提供存取元数据112(和/或其部分)。
57.用于自适应地址跟踪的实例方案和设备
58.图2图示了实现自适应跟踪引擎110的实例设备200。自适应跟踪引擎110经配置以捕获、保持和/或管理覆盖地址空间的多个区域和/或地址范围的存取元数据112。在图2的实例中,存取元数据112包含和/或保持在存取数据集210(或数据集210)内。存取数据集210包含一组一或多个存取元数据条目211(或多个条目211),每个条目211被定义为覆盖相应的地址范围并且包含与所覆盖的地址范围有关的存取元数据112。数据集210可包含任意数量的条目211。在图2的实例中,数据集210包括n个条目2111至211-n。可以在任何合适的存储器和/或存储资源中实现、存储和/或体现存取数据集210。在图2的实例中,存取数据集210保持在存储器208内。存储器208可经配置为存取数据集210和/或存取元数据112存储器。存储器208可由半导体集成电路、存储器阵列、存储器组、存储器芯片、存储器单元、dram、sram、sdram、自适应跟踪引擎110的板上存储器资源、主机装置102的存储器资源、主存储器、高速缓冲存储器106、高速缓存线、后备存储器108、外部存储器资源、外围存储器资源等来实现。存取数据集210可以通过使用任何合适类型的结构化数据来实现,结构化数据包含但不限于:表、查找表、映射表、数组、列表、树、前缀树、字典树、基数树等。
59.如图2所示,存取数据集210的条目211包含与指定地址范围有关的存取元数据112。因此,存取元数据条目211可经配置为范围条目211、跟踪条目211、范围跟踪条目211、存取元数据跟踪条目211等。条目211可包含与存取元数据112有关的任何合适的信息,包含但不限于:范围元数据214以指定由条目211覆盖的地址范围、存取与所覆盖的地址范围有关的元数据112,等等。范围元数据214可以使用任何合适的信息来定义所覆盖的地址范围,包含但不限于:地址边界、最小和最大地址边界、地址标签、地址标签边界、最小和最大地址标签、基地址和长度、一或多个元组等。因此,可以尤其通过向存储器208写入一或多个位(例如,向存储器208内保持的条目211的范围元数据214写入一或多个位)来指定、定义、修改和/或操纵由条目211覆盖的地址范围。
60.条目211的存取元数据112可包含与由条目211覆盖的地址范围有关的任何信息,其可包含但不限于:与所覆盖的地址范围内的存取有关的信息、存取统计、存取模式统计、存取历史、存取序列、存取频率元数据、存取时间元数据、存取模式元数据、步幅模式、相关模式、增量序列、存取建模元数据、ml建模元数据、ml特征数据等。
61.在一些实例中,自适应跟踪引擎110包含和/或耦合到逻辑220。逻辑220可经配置以实施自适应跟踪引擎110的功能性,如本文所公开。在图2的实例中,逻辑220经配置为和/或经配置以实现接口逻辑(接口222)、更新逻辑224和管理逻辑226。本文公开的逻辑220和/或其它组件可由逻辑元件提供、实施和/或实现,逻辑元件可包含但不限于:电路、逻辑电路、控制电路、接口电路、i/o电路、熔丝逻辑、模拟电路、数字电路、逻辑门、寄存器、开关、多路复用器、算术逻辑单元(alu)、状态机、微处理器、存储器中处理器(pim)电路等。可替换地或附加地,在一些实例中,自适应跟踪引擎110的部分,诸如逻辑220、接口222、更新逻辑224、管理逻辑226等,可以体现为存储在非暂时性存储媒体上的处理器可执行指令。在一些实例中,逻辑220的部分和/或其功能可由诸如处理器103等主机装置102的处理资源来实现。
62.接口222可经配置以向一或多个消费者115提供存取元数据112(和/或其部分)。接口222可以响应于数据请求向消费者115提供存取元数据112。接口222可以接收对与指定地址有关的存取元数据112的请求,并且作为响应,可以返回对应于指定地址的存取元数据112作为相应。可替换地或附加地,接口222可经配置以使消费者115能够与存取元数据112交互。接口222可以提供和/或实现应用编程接口(api)和/或其它较低级别接口,消费者115通过这些接口检索存取元数据112。接口222可以使消费者115能够发布与存取元数据112有关的查询,诸如对以下各项的查询:识别由存取元数据112的相应条目211覆盖的相应地址范围、确定由条目211覆盖的地址范围和/或范围大小、检索由指定条目211覆盖的存取元数据112、检索覆盖指定地址和/或地址范围的存取元数据112等。
63.更新逻辑224经配置以尤其响应于与存取元数据112所覆盖的地址202有关的操作而更新、细化和/或确定存取元数据112。存取元数据112可以响应于任何适当类型的操作、指令、消息、命令和/或其指示而更新,以检索、修改、操作和/或以其它方式存取数据(本文通常称为命令201),包含但不限于:数据存取请求、读取请求、写入请求、复制请求,克隆请求、修剪请求、擦除请求、删除请求、缓存未命中、缓存命中等。响应于命令201,更新逻辑224将与命令201有关的地址202(或地址范围)映射到覆盖地址202的条目211,并相应地(例如,基于事件类型、事件特性、事件数据等)更新条目211的存取元数据112。更新逻辑224可经配置以通过尤其将地址202与条目211的范围元数据214进行比较来将地址202映射到条目211。如本文更详细地公开的,与未映射到存取元数据112所覆盖的地址范围的地址202有关的命令201可能导致跟踪未命中。
64.自适应跟踪引擎110的接口222可从一或多个源215接收命令201(和/或命令201的指示)。如本文所使用的,源215指的是关于与地址空间的命令201有关的任何合适的信息源,诸如处理器103、存储器控制器104、mmu、互连105、高速缓冲存储器106、预取器、高速缓存预取逻辑等。在一些方面,接口222可经配置以通过尤其监视耦合主机装置102的存储器层级的组件的互连(诸如将处理器103耦合到高速缓冲存储器106-1、将高速缓冲存储器106-1耦合到存储器控制器104、将存储器控制器104耦合到高速缓冲存储器106-2、将高速缓冲存储器106-2耦合到后备存储器108的互连等)上的流量来获取命令201和/或与命令201有关的信息。可替换地或附加地,接口222可接收与由其它组件捕获和/或生成的命令201有关的信息,诸如对应于由高速缓冲存储器106生成的高速缓存未命中的命令201。在一些方面,消费者115可经配置为源215(反之亦然)。作为非限制性实例,高速缓冲存储器106可经配置为自适应跟踪引擎110的消费者115和源215两者。自适应跟踪引擎110可以:从高速缓冲存储器106接收与存储器地址空间有关的命令201和/或命令201的指示,诸如高速缓存未命中,并向高速缓冲存储器106(和/或其预取逻辑)提供存取元数据112。
65.自适应跟踪引擎110尤其通过接口222向消费者115提供存取元数据112。消费者115可以利用存取元数据112来实现存取元数据112所覆盖的相应地址范围内的操作,并且可以产生与这些操作有关的反馈204。反馈204可经配置以量化存取元数据112在由消费者115在相应地址范围内实现的操作中的效用。更新逻辑224可经配置以响应于与条目211的存取元数据112和/或由条目211覆盖的地址范围有关的反馈而确定、更新和/或修改存取数据集210的相应条目211的效用度量213。在一个实例中,自适应跟踪引擎110基于来自预取器的反馈204来确定效用度量213,该预取器经配置以利用覆盖相应地址范围的存取元数据
112来实现预取操作。从预取器接收的反馈204可以量化所覆盖的地址范围内的预取效用和/或性能。可替换地或附加地,自适应跟踪引擎110可以至少部分地基于与相应地址范围内的地址202有关的命令201来确定效用度量213。自适应跟踪引擎110可经配置以基于在地址范围内检测到的高速缓存命中与高速缓存未命中的频率和/或比率、高速缓存命中与预取地址的数量、预取地址的驱逐等来估计地址范围内的预取器性能。因此,为存取元数据112和/或存取数据集210的相应条目211确定的效用度量213可以量化由存取元数据112覆盖的相应地址范围内的预取器性能。效用度量213可包含与预取性能和/或效用有关的任何信息,包含但不限于:在由存取元数据112覆盖的相应地址范围内确定的有用预取的数量、在各个窗口期间的有用预取、有用预取与坏预取的比率、在各个窗口期间的有用预取与坏预取的比率、准确地址预测的数量、在各个窗口期间的准确地址预测、准确地址预测与不准确预测的比率、在各个窗口期间的准确地址预测与不准确地址预测的比率等。
66.如本文更详细地公开的,自适应跟踪引擎110的管理逻辑226可经配置以尤其根据存取元数据的效用度量213来调整由存取元数据112覆盖的地址范围和/或此类范围的大小。在一些实例中,可以扩展由具有相对较高效用度量213的存取元数据条目211覆盖的地址范围,而可以收缩(或移除)由具有相对较低效用度量213的条目211覆盖的地址范围。可以合并覆盖相邻地址范围且具有类似效用度量213的存取元数据条目211,从而降低开销。在一些方面,可以根据调整策略来调整由数据集210的相应存取元数据条目211覆盖的地址范围和/或范围大小。调整策略可以定义阈值和/或其它标准以触发对存取元数据112所覆盖的地址范围集的修改,诸如增加一或多个地址范围的大小、减小一或多个地址范围的大小、合并一或多个地址范围、拆分一或多个地址范围、移除一或多个地址范围等的修改。可替换地或附加地,可以根据优化算法来调整由存取元数据112覆盖的地址范围集。优化算法可经配置以确定以最小成本产生最优效用度量213的相应条目211的地址范围,其可以在资源需求、管理开销等方面进行量化。
67.图3图示了如本文所公开的用于实现自适应地址跟踪和/或自适应跟踪引擎110的设备300的实例。在图3的实例中,存取数据集210被实现为和/或在范围管理数据结构(数据结构310)内。数据结构310可以定义由数据集210的存取元数据条目211覆盖的地址范围。在一些方面,数据结构310可以实现和/或体现存取数据集210。可替换地,并且如本文更详细地公开的,数据结构310和存取数据集210可以单独地和/或在不同的存储器资源内保持。
68.自适应跟踪引擎110的管理逻辑226利用数据结构310来将地址202与存取元数据112的相应条目211所覆盖的地址范围进行映射、关联、相关和/或以其它方式关联。数据结构310可经配置以表示覆盖地址空间的子集的不同大小的地址范围的稀疏集合。数据结构310可以实现由数据集210的相应存取元数据条目211覆盖的地址范围,以提高精度和降低开销,同时确保独特性。数据结构310可包含和/或由任何合适类型的数据管理结构实现,包含但不限于:表、查找表、映射表、多级映射表、树、字典树、前缀树、基数树等。
69.在一些方面,管理逻辑226配置数据结构310以界定多个地址范围大小。如图3所示,数据结构310可包含多个层320,每一层320对应于多个范围大小中的相应一个。数据结构310的每一层320内的节点311可经配置以表示范围大小中的相应一个的地址范围。数据结构310的层320可以按层次组织。在一些方面,数据结构310的层320布置在范围大小层级(或大小层级)中,其中层320对应于层级的顶部处的较大地址范围,且层320对应于层级的
下层处的较小地址范围。在图3的实例中,数据结构310包含n个层320,包含对应于多个范围大小中的最小或最小地址范围大小的第一层或底层320-1、对应于下一个较大范围大小的第二层320-2等等,数据结构310的最后一层或顶层320-n对应于多个地址范围大小中的最大范围大小。
70.自适应跟踪引擎110可以使用数据结构310来将地址202划分成多个节段,包含地址标签302和最小偏移301。最小偏移301可定义在最低有效位(lsb)地址区域内。包含在最小偏移301(b
mo
)中的位数可以确定由数据结构310定义的多个范围大小中的最小或最小范围大小。最小范围大小可以表示为其中s1是最小范围大小,b
mo
是包含在最小偏移301中的位数。因此,尤其可以通过调整包含在最小偏移301中的位数来调整最小范围大小。
71.数据结构310还将地址标签302划分成多个子标签304,每个子标签304被分配给数据结构310的相应层320,并且对应于地址标签302的相应节段、部分或区域。可以根据数据结构310的范围大小层次将子标签304分配给数据结构310的层320。更具体地,子标签304可以通过范围大小(和/或基于各个层320在范围大小层次结构内的位置)分配给各个层320。在一些方面,如下面图3和表1所示,将子标签304从lsb分配到最高有效位(msb)。
[0072][0073]
表1
[0074]
表1图示了具有n个层320的实例数据结构310对64位地址的划分。通过将地址202的12lsb指定为最小偏移301并将剩余的52msb指定为地址标签302,将实例数据结构310的最小范围大小设置为4k(4096个地址)。最小范围大小可被设置为任何合适的数量。在一些方面,根据地址空间(和/或后备存储器108)的特性来设置最小范围大小。最小范围大小可被设置为存储器页大小(例如,当与具有4k页的后备存储器108、具有4k虚拟页大小的存储器控制器104等一起使用时,最小范围大小可被设置为4k)。在表1中,地址标签302被进一步划分成子标签304-1至304-n。可以根据数据结构310的范围大小层次将子标签304分配给数据结构310的层320。lsb子标签304-1可被分配给数据结构310的最底层320-1,下一个msb子标签304-2可被分配给数据结构310的下一个较高层320-2,等等,其中msb子标签304-n被分配给数据结构310的最高层320-n。尽管本文参考大字符顺序格式示出和描述了地址202,但是本公开不限于此,并且可以适用于任何适当格式、编码或字符顺序的地址202。
[0075]
子标签304可用于形成数据结构310的每一层320的区域标签332。区域标签332尤其可以通过将数据结构310的层320从分层结构的顶部(层320-n)遍历到分层结构的下层320(朝向层320-1)来形成。因此,各个层320的区域标签332可以确定由各个层320内的节点311表示的地址范围的大小。
[0076]
如图3和下面的表2所示,每一层320的区域标签332可由分配给层320的子标签304和对应的上层320的子标签304(例如,如果有的话,在大小层次中的层320之上的层320)形成,而地址的剩余部分形成层320的区域偏移331。因此,数据结构310的每一层320可以具有定义相应的区域标签332的相应的区域方案322,区域标签332经配置以唯一地标识相应大小的地址范围(每个区域的大小尤其由包含在其区域偏移331中的地址位的数目来确定):
[0077][0078]
表2
[0079]
在表2的实例中,分配给层320-n的子标签304-n包含地址标签302的12个msb。在层320-n的区域方案322-n中,区域标签332-n由子标签304-n形成(因为层320-n在大小层次结构的顶部),剩余的52位形成层320-n的区域偏移331-n。区域偏移331-n定义了层320-n的范围大小。在表2的实例中,层320-n的节点311(n层节点311)表示具有每个区域偏移331-n的范围大小2^56的地址范围。因此,数据结构310的各个n层节点311可覆盖地址空间的2^56个地址的各个不同范围,每一地址范围由各个区域标签332-n值唯一地标识。可以为层320-n和320-2之间的中间层320分配由子标签304的下一个24msb形成的子标签304(在表2或图3中未示出,以避免混淆所示实例的细节)。在数据结构310的层320-2的区域方案322-2中,分配给层320-2的子标签304-2包含8位,并且层320-2的区域标签332-2由子标签304-2和上层320的子标签304形成,包含层320-n的子标签304-n以及分配给任何中间层320的子标签304。如图所示,区域标签332-2根据由数据结构310定义的分层结构来构建,其中区域标签332-2的msb由顶层子标签304-n形成,区域标签332-2的lsb由子标签304-2形成。层320-2的区域标签332-2包含44位,剩余的20位形成区域偏移331-2。因此,数据结构310的层320-2可以对应于2^20的范围大小。数据结构310的第二层320-2的节点311(第二层节点311)可覆盖2^20个地址的相应地址范围,每个地址由相应的44位区域标签332-2值唯一地标识。在数据结构310的第一最底层320-1的区域方案322-1中,区域标签332-1由子标签304-n至304-1形成。因此,区域标签332-1可包含52位,剩余的12位定义数据结构310的最小范围大小。层320-1的第一层节点311可覆盖2^12个地址的相应范围,每个范围由相应的52位区域标签332-1值唯一地标识。
[0080]
图3图示了所公开的数据结构310的节点311的进一步实例。数据结构310的节点311可包含与地址范围有关的任何信息,包含但不限于:节点标签314、覆盖数据316等。节点标签314可经配置以唯一地标识数据结构310的各个层320内的节点311。数据结构310的各个层320内的节点311的节点标签314可以被分配对应于层320的子标签304的唯一值。节点标签314的大小可以由层320的区域方案322确定(例如,基于分配给层的子标签304中包含的位数)。在表2的实例中,数据结构310的层320-n内的节点311的节点标签314包含对应于子标签304-n(地址位63-52)的12位值,层320-2内的节点311的节点标签314是对应于子标签304-2(地址位27-20)的8位值;层320-1内的节点311的节点标签314是对应于子标签304-1(地址位19-12)的8位值,等等。
[0081]
在图3的实例中,相应节点311的覆盖范围数据316可包含和/或引用:a)经配置以覆盖由节点311定义的地址范围的存取元数据112和/或存取元数据条目211,或b)在较低级别子结构312内组织的子节点311。管理逻辑226可以配置包含在数据结构310的相应节点311内和/或由其引用的存取元数据条目211,以覆盖由相应节点311定义的地址范围。因此,
包含在数据结构310的相应节点311中和/或由其引用的存取元数据条目211可经配置以覆盖或“占用”相应节点311的地址范围。相反,具有不包含和/或引用存取元数据条目211的覆盖数据316的节点311可被指定为“开发”或“未被占用”。管理逻辑226可以要求开放节点311引用数据结构310的相邻下层320内的子结构312;具有不包含或引用存取元数据条目211或子结构312的覆盖数据316的节点311可从数据结构310中移除。管理逻辑226可以通过尤其防止被占用节点311(包含和/或引用存取元数据条目211的节点311)在数据结构310内具有子节点311、从数据结构310中移除被占用节点311的子节点311(以及从数据集210中无效和/或移除子节点311的相应条目211)等来实施地址范围区别性。在基于树的实施方案中,管理逻辑226可以将被占用的节点311配置为叶节点311(不引用任何较低级别子节点311的节点311),并且可以将开放节点311配置为非叶节点311(引用数据结构310的相邻下层320内的子节点311的节点311)。
[0082]
数据结构310可经配置以对设置在数据结构的不同层320内的节点311之间的分层父子关系进行编码。数据结构310的上层320内的父节点311可以引用数据结构310的下层内的子节点311。在数据结构310内编码的分层父子关系可以对应于地址范围包含关系。更具体地,父节点311的每个子节点311可以覆盖由父节点311覆盖的地址范围的相应的唯一子集。在表2的实例中,数据结构310的层320-n内的节点311(n层节点311)的节点标签314可被分配“0x000”。因此,n层节点311以边界{“0x0000 0000 0000”,“0x000f ffff ffff ffff”}覆盖2^52大小的地址范围。(为清楚起见,对应于区域标签332(诸如区域标签332-n“0x000”)的地址范围的部分在本文中以粗体示出)。由于子节点311的区域标签332继承了上层父节点311的节点标签314(子标签304),因此n层节点311“0x000”的子节点311将覆盖由n层节点311“0x000”覆盖的地址范围的子集。例如,n层节点311“0x000”可引用数据结构310的第二层320-2内的子(或孙子)节点311。由于第二层节点311包括其n层父节点311的“0x000”节点标签314,因此第二层节点311必须覆盖由n层父节点311覆盖的地址范围的子集。例如,第二层节点311可以具有“0x22”的节点标签314,并且中间父节点311的节点标签314可以是“0x000000”,从而导致“0x0000 0000 022”的44位区域标签332-2以及具有边界{“0x0000 0000 0220 0000”,“0x0000 0000 022f ffff”}的2^20地址范围的覆盖。如图所示,由第二层节点311“0x22”覆盖的2^20个地址范围包含在由n层父节点311“0x000”覆盖的地址范围内。类似地,数据结构310的第一最底层320-1内的第二层节点311“0x22”的子节点311覆盖由第二层节点311“0x22”覆盖的地址范围的子集(以及由包含n层节点311“0x000”的更高层父节点311覆盖的地址范围)。作为另一实例,第二层节点311“0x22”可引用具有节点标签314“0x11”的第一层子节点311,从而得到区域标签332-1“0x0000 0000 0221 1”以及具有边界{“0x0000 0000 0221 1000”,“0x0000 0000 0221 1fff”}的2^12地址空间的覆盖。如图所示,由第一层节点311“0x11”覆盖的2-12个地址范围覆盖由第二层父节点311“0x22”和其n层父节点311“0x000”覆盖的地址范围的子集。第二层节点311“0x22”的第一层子节点311可包含在子结构312中,如图3所示。数据结构310的相应下层320内的子结构312可通过其节点标签314来排列、组织和/或索引子节点311(相应子结构312内的节点311可由其节点标签314唯一地标识)。数据结构310的下层320可包含用于相邻上层320内的每个唯一父节点311的子结构312。
[0083]
如本文所公开,管理逻辑226可配置数据结构310的节点311之间的关系以表示地
址范围关系。上层节点311和下层节点311之间的父子关系可经配置以表示地址范围包含关系,其中上层父节点311的下层子节点311覆盖由上层父节点311覆盖的地址范围的相应子集。如图3所示,数据结构310可以定义上层节点311和下层节点311之间的父子关系(或包括各个上层父节点311的下层子节点311的子结构312)。如本文所公开的,父子关系可以对应于地址范围包含关系。上层父节点311的子节点311包含覆盖由父节点311覆盖的地址范围的子集的下层节点311。如上所述,管理逻辑226可以利用数据结构310来确保被占用节点311覆盖的地址范围是不同的,尤其是通过从数据结构310的下层320中移除被占用节点311的子节点(如果有的话)和/或防止被占用节点311的子节点(和/或相应的存取元数据条目211)被创建。
[0084]
管理逻辑226还可经配置以对数据结构310内的节点311之间的兄弟关系进行编码。兄弟节点311指的是以下节点311:a)设置在数据结构310的相同层320内,以及b)由数据结构310的相邻上层320内的相同父节点311引用。兄弟节点311可设置在相应的子结构312内,每个子结构312对应于数据结构310的相邻上层320内的唯一父节点311。各个子结构312内的兄弟节点311可由其节点标签314(由指派给层320的子标签304)唯一地识别,由此确保数据结构310的每一层320处的兄弟节点311所覆盖的地址范围是唯一且不同的。此外,由于数据结构310的各个层320内的子结构312对应于唯一的上层父节点311,因此各个层320内(和/或各个层320的子结构312上)的节点311是不同且唯一的。
[0085]
管理逻辑226可以利用在数据结构310内编码的分层关系来有效地定义不同大小和/或范围的不同地址范围。管理逻辑226可利用数据结构310的分层关系来实施强加低计算开销同时保证区别性的地址范围操纵。管理逻辑226可以有效地定义数据结构310内的地址范围集,并相应地配置存取元数据112。例如,管理逻辑226可以配置数据集210的存取元数据条目211以覆盖由数据结构310的相应节点311定义的地址范围集。管理逻辑226尤其可通过操纵数据结构310来有效地调适该组地址范围的大小和/或范围。管理逻辑226可以实现定义一组修改的地址范围的操纵,这些地址范围保证是唯一的且不同的(根据数据结构310的分层关系)。管理逻辑226然后可以配置数据集210的存取元数据条目211以覆盖该组修改的地址范围。
[0086]
管理逻辑226可以至少部分地基于存取元数据112的效用度量213来修改数据结构310以调整所定义的地址范围集。对数据结构310的修改可以被传播到存取数据集210和/或在存取数据集210内实现,尤其是通过重新配置由各个存取元数据条目211覆盖的地址范围集以对应于数据结构310的经调整的地址范围集。在一个实例中,管理逻辑226可以通过以下中的一或多个来增加存取元数据条目211所覆盖的地址范围的大小:将与条目211相关联的节点311与一或多个兄弟节点311合并、将节点311合并到数据结构310的上层320内的父节点311中、将节点311升级到数据结构310的较高层320,等等。在另一实例中,管理逻辑226可以通过以下中的一或多个来减小存取元数据条目211所覆盖的地址范围的大小:将与条目211相关联的节点311拆分成一或多个兄弟节点311、将节点311拆分成数据结构310的较低层320内的一或多个子节点311、将节点311降级为数据结构310的较低层320、移除节点311(并使对应条目211无效)等。
[0087]
数据结构310还可经配置以定义可从顶层320-n至较低层320搜索的分层和/或多级映射方案。由于数据结构310的父子范围包含关系,在数据结构310的较低层320执行的搜
索操作可以结合在数据结构310的较高层320执行的搜索操作的结果。搜索图3所示的n层数据结构可涉及首先搜索数据结构310的顶层320-n,然后搜索一或多个下层320(如有必要)。对覆盖指定地址202的节点311(或存取元数据条目211)的分层搜索可涉及:a)使用指定地址202的子标签304-n搜索数据结构的顶层320-n,以及b)如果没有找到匹配的顶层节点311,则返回“条目未命中”。如果找到匹配指定地址202的子标签304-n的顶层节点311,则分层搜索还可包含:c)返回顶层节点311的存取元数据条目211(如果顶层节点311的覆盖数据316包含或引用条目211),或者d)否则搜索由顶层节点311引用的较低层子结构312。分层搜索操作可以继续通过数据结构310的连续较低层320,直到找到具有包含和/或引用存取元数据条目211的覆盖数据316的节点311,或者搜索失败。
[0088]
如本文所公开的,地址空间可以非常大,并且同样地,数据结构310和对应的存取数据集210可以是“稀疏的”,因为数据结构310的节点311(以及数据集210的对应的存取元数据条目211)可以不覆盖整个地址空间。相反,自适应跟踪引擎110可以在利用地址空间的区域时(例如,如本文所公开的,在自适应跟踪引擎110处接收到命令201和/或命令201的指示时)添加节点311和对应的存取元数据条目211。管理逻辑226还可经配置以移除不包含或引用存取元数据条目211或子节点311的节点311(例如,可从数据结构310修剪开放叶节点311)。管理逻辑226还可经配置以移除或驱逐满足驱逐标准的节点311和对应的存取元数据条目211;例如,未在时间阈值内被存取、不足够频繁、具有一致较差的效用度量213、产生较差的预取等。管理逻辑226可以响应于跟踪未命中而动态地添加节点311和对应的存取元数据条目211。当命令201的地址202落在存取元数据112所覆盖的地址范围之外(落在数据集210的存取元数据条目211所覆盖的地址范围之外)时,发生跟踪未命中。响应于跟踪未命中,管理逻辑226可将节点311添加到数据结构的最底层320-1,使得对应条目211覆盖最小范围大小的地址范围。随后可以基于效用度量213(例如,基于存取元数据条目211所覆盖的地址范围内的预取器性能)来修改条目211的范围大小。
[0089]
在一些方面,管理逻辑226可以初始化和/或清除存取元数据112,其可包含移除和/或无效数据结构310的节点311和/或数据集210的对应存取元数据条目211。管理逻辑226可以在用户命令或消息、配置设置期间或响应于用户命令或消息、配置设置、响应于关闭和/或重启操作等清除存取元数据112。在初始化之后,如本文所公开的,管理逻辑226可以至少部分地基于与所覆盖的地址范围有关的效用度量213,响应于跟踪未命中和/或调整由存取元数据覆盖的地址范围而重建存取数据集210和/或数据结构310。
[0090]
虽然本文描述了定义特定配置和/或区域方案322的数据结构310的特定实例,但是本公开不限于此,并且可以适用于使用具有任何合适数量的层320和/或任何合适的区域方案322的任何合适类型的数据结构310。
[0091]
图4图示了用于实现如本文所公开的自适应跟踪引擎110的设备300的进一步实例。在图4的实例中,自适应跟踪引擎110的管理逻辑226经配置以通过使用四层数据结构310来管理由存取元数据112覆盖的地址范围。在一些实施方案中,数据集210的存取元数据条目211可以保持在数据结构310内(例如,在数据结构310的占用节点311内)。在图4的实例中,存取数据集210与数据结构310分开保持。存取数据集210可以保持在存储器208的与数据结构310不同的部分中;例如,在不同的阵列、区域、区段、存储器组、平面等内。如本文所公开的,存取数据集210可以通过合适的结构来实现,诸如:表、查找表、映射表、数组、列表、
树、前缀树、字典树、基数树等。
[0092]
如图4所示,管理逻辑226将地址标签302划分成四个子标签304-1至304-4,并将最小范围大小定义为4k(通过指定12位最小偏移量301,如图3的实例)。表3图示了包括如图4所示的4个层的实例数据结构310的区域标签332和对应的区域偏移331。
[0093][0094][0095]
表3
[0096]
如表3所示,数据结构310的最高层320-4的区域方案322-4定义了13位区域标签332-4,其唯一地标识64位地址空间的2^51个地址的相应范围(由数据结构310定义的多个范围大小的最大范围大小),层320-3的区域方案322-3定义由子标签304-4和304-3形成的26位区域标签332-3,其唯一地标识2^38地址的相应范围,区域方案322-2定义由子标签304-4到304-2形成的39位区域标签332-2,其唯一地标识2^25地址的相应范围,并且层320-1的区域方案322-1定义由子标签304-4到304-1形成的52位区域标签332-1,其唯一地标识2^12地址的相应范围(由数据结构310定义的多个范围大小的最小范围大小)。
[0097]
数据结构310的节点311可包含节点标签314,其可以保存对应于节点311被设置在其中的层320的子标签304的值,并且可以唯一地标识层320内的相应子结构312内的节点311。在图4的实例中,数据结构310的节点311还包含下一有效指示符410、下一指针411、条目有效指示符421、条目指针422等。下一有效指示符410和/或条目有效指示符421可指定节点311是开放的还是被占用的。更具体地,下一有效指示符410可以指定节点311的下一指针411是否引用数据结构310的较低层320中的有效子结构312(指示节点311是否开放),并且条目有效指示符421可以指定条目指针422是否引用覆盖由节点311定义的地址范围的有效存取元数据条目211(指示节点311是否被占用)。下一个有效指示符410和/或条目指针422可以从不能引用较低层子节点311的节点311中省略,诸如设置在数据结构310的最低层320-1中的节点311。
[0098]
图5-1图示了用于实现如本文所公开的自适应跟踪引擎110的设备300的进一步实例。在图5-1的实例中,如本文所公开的,管理逻辑226通过和/或通过使用数据结构310来管理由数据集210的相应存取元数据条目211覆盖的地址范围(和范围大小)。在图5-1的实例中,管理逻辑226使用包含三个层320-1至320-3的多层数据结构310来管理由存取元数据112覆盖的地址范围,每个层320对应于多个范围大小中的相应一个。
[0099]
自适应跟踪引擎110可包含和/或耦合到存储器208,其可由任何合适的存储器资源来实施、实现和/或提供,包含但不限于:半导体集成电路、存储器单元、存储器阵列、存储器组、存储器芯片、自适应跟踪引擎110的板上存储器、主机存储器资源、主存储器、后备存储器108、高速缓冲存储器106、消费者115和/或源215的存储器资源、ram、dram、sram、sdram等。管理逻辑226可经配置以保持存储器208内的存取元数据112和/或其部分。
[0100]
如本文所公开的,管理逻辑226可经配置以通过数据结构310管理由存取数据集
210的相应条目211覆盖的地址范围(和/或范围大小)。数据结构310的配置尤其可以由自适应跟踪引擎110的配置数据524指定。配置数据524可包含任何合适的配置信息,包含但不限于:数据结构310的配置、数据结构310的类型(例如,指定表、映射表、多级映射表、树、基数树等)、要包含在数据结构310中的多个层320、各个层320的区域方案322、各个层320的范围大小、分配给各个层320的子标签304的配置(例如,包含在各个子标签304中的地址位)、各个层320的区域标签332、各个层320的区域偏移331、各个层320的范围大小(定义多个范围大小,每个对应于数据结构310的各个层320)、数据结构310的最小范围大小、最小偏移301等。在图5-1的实例中,配置数据524指定了具有如下表4所示的三个层320的数据结构310:
[0101][0102]
表4
[0103]
根据表3的区域方案322,最小偏移301对应于地址位7至0(最小范围大小为2^8),层320-1被分配子标签304-1,对应于地址位11至8(以及最小范围大小),层320-2被分配子标签304-2,对应于地址位15-12(以及2^12的下一较大范围大小),以及层320-3被分配子标签304-3,对应于地址位23-16(以及2^16的最大范围大小)。
[0104]
如图5-1所示,数据结构310的节点311可包含节点标签314、覆盖数据316等。节点311的节点标签314可对应于设置有节点311的数据结构310的层320的子标签304。覆盖数据316可包含和/或引用:如本文所公开的,存取元数据条目211或数据结构310的下层320内的子结构312(例如,一或多个子节点311)。覆盖数据316可以将被阻止引用数据结构310的下层320中的子节点311的被占用节点311与开放节点311区分开。管理逻辑226防止数据结构310在被占用节点311之下包含子节点311,由于数据结构310定义的地址范围包含关系,其防止数据集210的存取元数据条目211覆盖重叠的地址范围。虽然图5-1图示了节点311的一个实例,但是本公开不限于此,并且可经配置以使用任何合适的技术和/或格式来表达、表示和/或编码与存取元数据112的相应地址范围和/或地址范围的覆盖有关的信息。
[0105]
自适应跟踪引擎110的管理逻辑226经配置以响应于跟踪未命中而将节点311添加到数据结构310(并创建对应的存取元数据条目211)。图5-2图示了由自适应跟踪引擎110(和/或其管理逻辑226)响应于目标地址202“0x332105”的跟踪未命中而实现的操作。管理逻辑226可以响应于与地址202有关的命令201(例如,响应于确定存取数据集210不包含覆盖目标地址202的存取元数据条目211)而检测跟踪未命中。如图5-2所示,管理逻辑226尤其通过在数据结构310的各个层320内创建表示目标地址202的节点311来处理跟踪未命中。在数据结构310的各个层320内为目标地址202创建的节点311-1至311-3的节点标签314被分配了对应于分配给各个层320的子标签304的值(根据各个层320的区域方案322)。在层320-1内创建的节点311-1覆盖包含目标地址202且具有由数据结构310定义的最小地址范围大小的地址范围。节点311-1包含和/或引用经配置以覆盖由节点311-1定义的地址范围的存取元数据条目211。因此,管理逻辑226可以将节点311-1指定为被占用,而将节点311-2和311-3指定为开放。
[0106]
在图5-2至5-9所示的实例数据结构310中,包含和/或引用存取元数据条目211的被占用节点311用对角线填充模式突出显示,以便于引用(并且区分被占用节点311与不包含对角线填充模式的开放节点311)。
[0107]
如本文所公开,管理逻辑226可通过利用数据结构310内编码的地址范围关系来确保独特性。更具体地,管理逻辑226配置数据结构310,使得在数据结构的下层320内创建的节点311被开放父节点311引用,并且子节点311从被占用节点311中移除(并且不能在其下创建)。因此,在层320-1内创建节点311-1可包含验证层320-2不包含覆盖目标地址202的被占用的第二层节点311,并且在数据结构的第二层320-2内创建父节点311-2(如果节点311-2尚不存在)。类似地,在层320-2内创建节点311-2可包含验证层320-3不包含覆盖目标地址202的被占用的第三层节点311,并且在数据结构310的第三层320-3内创建父节点311-3(如果节点311-2尚不存在)。在数据结构310的各个层320内创建的节点311的节点标签314是根据分配给各个层的子标签304从目标地址202中提取的:节点311-1的节点标签314被分配“0x1”(每个子标签304-1从目标地址202的位11至7中提取“0x332105”);节点311-2的节点标签314被分配“0x2”(每个子标签304-2从目标地址202的位15-12中提取);以及节点311-2的节点标签314被分配“0x33”(每个子标签304-3从目标地址202的8msb中提取)。
[0108]
如图5-2所示,数据结构310对节点311之间的父子关系进行编码,该关系对应于由节点311(及其存取元数据条目211)覆盖的地址范围之间的地址包含关系。顶层父节点311-3的区域标记332-n是8位值“0x33”,其以边界{“0x330000”、“0x33ffff”}唯一地标识第三层地址范围(2^16地址范围大小)。根据数据结构310的分层的地址包含关系,第三层父节点311-3的子节点311(例如,节点311-2和311-1)覆盖其覆盖的地址范围内的子集。第二层节点311-2具有“0x332”的12位区域标签332-2,并且覆盖由{“0x332000”,“0x332fff”}限定的第二层地址范围(2^12地址范围大小)。如图所示,节点311-2所覆盖的第二层地址范围包含在其上层父节点311-3所覆盖的第三层地址范围内。第一层节点311-1具有“0x3321”的16位区域标签332-1,并且覆盖由{“0x332100”,“0x3321ff”}限定的第一层地址范围(2^8个地址)。如图所示,节点311-1所覆盖的第一层地址范围包含在其第二层父节点311-2所覆盖的第二层地址范围和其第三层“祖父”节点311-3所覆盖的第三层地址范围内。
[0109]
创建第一层节点311-1还可包含配置数据集210的存取元数据条目211-1以覆盖由节点311-1定义的地址范围。如图所示,包含在节点311-1内和/或由其引用的存取元数据条目211-1包含与节点311-1所覆盖的地址范围有关的存取元数据112-1。由存取元数据条目211-1覆盖的地址范围(地址范围{“0x332100”,“0x3321ff”})可以在条目211的范围元数据214-1中指定。可替换地,由于条目211-1所覆盖的地址范围由节点311-1定义,因此可省略条目211-1的范围元数据214-1。由于节点311-1包含和/或引用存取元数据条目211-1,因此节点311-1可被指定为被占用。具有不包含和/或引用存取元数据条目211的覆盖数据316的节点311-2和311-3可被指定为开放。
[0110]
如本文所公开的,数据结构310的下层320内的节点311可被组织成相应的子结构312,每个子结构对应于相邻上层320中的相应父节点311并由节点标签314索引,节点标签314可对应于分配给层320的子标签304。如图5-2所示,第一层节点311-1包含在由其第二层父节点311-2引用的子结构312-1中,并且节点311-2包含在由其第三层父节点311-3引用的子结构312-2中。子结构312-2包含第二层节点311,其覆盖由第三层节点311-3覆盖的地址
范围的子集。更具体地,子结构312-2包含具有结合了父节点311-3(“0x33”)的第三层区域标签332-3的区域标签332-2的第二层节点311,并由此覆盖由第三层节点311-3覆盖的地址范围的子集(例如,具有结合了区域标签332-3“0x33”的区域标签332-2的第二层节点311)。类似地,由第二层节点311-2引用的子结构312-1包含覆盖由第二层节点311-2覆盖的地址范围的子集的第一层节点311。更具体地,子结构312-1包含具有区域标签332-1的第一层节点311,区域标签332-1结合了第二层节点311-2的第二层区域标签332-2(“0x332”),并由此覆盖由第二层节点311-2覆盖的第二层地址范围的子集。
[0111]
如图5-2中进一步所示,在分层查找和/或搜索操作中遍历数据结构310的各个层320可导致构建各个层320的区域标签332。对覆盖指定地址202(例如,“0x332188”)的存取元数据条目211的查找可包含:a)搜索层320-3以标识具有与指定地址202的子标签304-3(例如,“0x33”)匹配的节点标签314的第三层节点311-3,b)搜索由所标识的第三层节点311-3(和/或第三层子标签304-4“0x33”)引用的子结构312-2以标识具有与指定地址202的子标签304-2(例如,“0x2”)匹配的节点标签314的第二层节点311-2,以及c)搜索所标识的第二层节点311-2(和/或第二层子标签304-2“0x2”)所引用的子结构312-1,以标识具有与指定地址202的子标签304-1(例如,“0x1”)匹配的节点标签314的第一层节点311-1。因此,遍历数据结构310可导致为层320-1构建区域标签332-1的值(例如,为层320-1的区域标签332-1构建16位值,“0x3321”)。类似地,将数据结构310遍历到第二层320-2导致为区域标签332-2(“0x332”)构建12位值,依此类推。
[0112]
图5-3图示了由自适应跟踪引擎110响应于包含第二地址202“0x33240f”和第三地址202“0x66210b”的附加地址202的跟踪未命中而实现的进一步操作。响应于第二地址202“0x33240f”的跟踪未命中,管理逻辑226在数据结构310的第一层320-1内创建节点311-4和对应的存取元数据条目211-2。由于节点311-4覆盖由第二层节点311-2(是节点311-2的子节点)和第三层节点311-3(是节点311-3的孙节点)覆盖的区域的子集,因此节点311-4包含在子结构312-1中。响应于使用第二地址202的相应子标签304遍历数据结构310,节点311-4可包含在第一层子结构312-1中。遍历可包含:a)通过使用第二地址202(“0x33”)的子标签304-3来选择第三层节点311-3(以及由此引用的第二层子结构312-2),b)通过使用第二地址202(“0x2”)的子标签303-2来选择第二层节点311-2(以及由此引用的第一层子结构312-1),以及c)确定第一层子结构312-1不包含覆盖第二地址202的节点311(例如,确定“0x33240f”在节点311-1和/或存取元数据条目211-1所覆盖的地址范围之外)。节点311-4可包含和/或引用存取元数据条目211-2,其包含与由节点311-4指定的地址范围有关的存取元数据112-2(和/或范围元数据214-2)。
[0113]
管理逻辑226响应于第三地址202“0x66210b”的跟踪未命中而创建节点311-5、311-6和311-7。第三地址202在由第三层节点311-3和/或第二层节点311-2覆盖的地址范围之外。管理逻辑226尤其响应于将第三地址202“0x66”的子标签304-3与节点311-3“0x33”的节点标签314进行比较,可以确定第三地址202在节点311-3的第三层地址范围之外(并且由此也在节点311-2的第二层地址范围之外)。如图5-3所示,管理逻辑226在数据结构310的第一层320-1内创建子结构312-3和节点311-5,并将节点311-5的节点标签314分配给第三地址202的每个子标签304-1的“0x1”。节点311-5包含和/或引用具有与节点311-5所覆盖的地址范围(例如,地址范围{“0x662100”,“0x6621ff”})有关的存取元数据112-3的存取元数据
条目211-3。管理逻辑226在数据结构310的上部相邻层320-2内创建父节点311-6以引用子结构312-3。根据第三地址202的子标签304-2,第二层父节点311-6的节点标签314被设置为“0x2”。管理逻辑226还在数据结构310的下一层320-3内创建父节点311-7以引用第二层子结构312-4。根据第三地址202的子标签304-3,第三层父节点311-7的节点标签314被设置为“0x66”。
[0114]
返回参考图5-1,自适应跟踪引擎110可经配置以响应于与地址空间有关的命令201而更新存取元数据112。在图5-3的实例中,自适应跟踪引擎110响应于与地址范围{“0x332100”,“0x3321ff”}内的地址202有关的命令201而更新条目211-1的存取元数据112-1,响应于与地址范围{“0x332400”,“0x3324ff”}内的地址202有关的命令201而更新条目211-2的存取元数据112-2,和/或响应于与地址范围{“0x662100”,“0x6621ff”}内的地址202有关的命令201而更新条目211-3的存取元数据112-3。诸如预取逻辑515的消费者115可以使用存取元数据112在地址空间的各个区域内实现预取操作。预取逻辑515可以使用条目211-1的存取元数据112-1来实现地址范围{“0x332100”,“0x3321ff”}内的预取操作,可以使用条目211-2的存取元数据112-2来实现地址范围{“0x332400”,“0x3324ff”}内的预取操作,并且可以使用条目211-3的存取元数据112-3来实现地址范围{“0x662100”,“0x6621ff”}内的预取操作。
[0115]
预取逻辑515可以根据特定的预取技术或算法来实现预取操作。不同的预取实施方案可以利用不同类型的存取元数据112。在一个实例中,预取逻辑515实现基于步幅的预取器,其使用存取元数据112来检测相应地址区域内的步幅模式。在另一实例中,预取逻辑515实现试图检测存取元数据112所覆盖的地址序列内的循环增量序列的相关预取器。在又一实例中,预取逻辑515实现ml预取器,诸如lstm预取器,并在存取元数据112所覆盖的本地上下文的ml模型中使用存取元数据112(和/或从中提取ml特征)。管理逻辑226可经配置以将存取元数据112适配于预取逻辑515(例如,尤其基于预取逻辑515的特性)。管理逻辑226可经配置以响应于确定预取逻辑515实现基于步幅的预取而捕获地址步幅元数据,可以响应于确定预取逻辑515实现相关预取器而捕获地址序列(和/或增量序列),可以响应于确定预取逻辑515实现ml预取器而捕获ml模型数据和/或特征,等等。
[0116]
可替换地或附加地,管理逻辑226可以根据可编程元数据配置525来捕获存取元数据112。元数据配置525可包含与存取元数据112的捕获、保持和/或格式有关的任何合适的信息。管理逻辑226可将元数据配置525保持在自适应跟踪引擎110的存储器资源内(例如,使用其它配置数据524)。管理逻辑226可从诸如预取逻辑515的消费者115接收和/或导入元数据配置525。预取逻辑515可通过自适应跟踪引擎110的接口222(例如,通过由接口222实现的api或其它机制)接收元数据配置525(和/或其部分)。管理逻辑226使用元数据配置525来适配存取元数据112以用于预取逻辑515的预取实施方案。管理逻辑226可以使用元数据配置525来捕获适于由步幅预取器、相关预取器、ml预取器、nn预取器、rnn预取器、lstm预取器等中的一或多个使用的存取元数据112。
[0117]
管理逻辑226尤其可以基于来自预取逻辑515的反馈204来确定各个存取元数据条目211的效用度量213。管理逻辑226可使用效用度量213来调整地址范围的范围大小。可以通过操纵数据结构310并在存取数据集210内实现操纵来调整范围大小。更具体地,管理逻辑226可以修改数据结构310以调整由相应节点311表示的地址范围,并相应地重新配置存
取元数据条目211。管理逻辑226尤其可以通过将对应节点311升级到数据结构310的更高层320、将节点311与数据结构的一或多个其它节点311合并、将节点311合并到更高层父节点311等来增加存取元数据条目211的大小。管理逻辑226尤其可以通过将与条目211相关联的节点降级到数据结构310的较低层320、拆分节点311、将节点311拆分成数据结构310的较低层320内的一或多个子节点311、移除节点311(并使对应的存取元数据条目211无效)等来减小存取条目211的大小。
[0118]
在图5-3的实例中,存取元数据条目211-3的效用度量213-3可以触发管理逻辑226的降级操作。由于条目211-3覆盖由数据结构310定义的最小范围大小(与数据结构的第一层320-1内的节点311-5相关联),降级操作可包含从数据结构310移除存取元数据条目211-3和对应的节点311-5。移除存取元数据条目211可包含从数据集210中无效和/或移除条目211和/或从数据结构310中移除包含和/或引用条目211的节点311。移除操作还可包含移除和/或使不再引用任何子节点311的上层父节点311和/或子结构312无效,尤其是由于与存取元数据条目211相关联的节点311的移除。如图5-4所示,降级存取元数据条目211-3包含从数据集210中移除条目211-3、从数据结构310中移除第一层节点311-5、移除在数据结构310的下层320内不再引用子节点311的上层父节点311-6和311-7、移除空子结构312-3和312-4等。
[0119]
在另一实例中,存取元数据条目211-3的效用度量213-3足以触发条目211-3的升级。如本文所公开的,升级存取元数据条目211可包含增加由条目211覆盖的地址范围的大小。升级存取元数据条目211可包含修改与条目211相关联的节点311,尤其是通过将节点311合并到数据结构310的下一更高层320中,并将存取元数据条目211的地址范围设置为由修改的节点311定义的地址范围(或将存取元数据条目211与父节点311相关联并从数据结构310中移除子节点311)。在图5-5的实例中,升级存取元数据条目211-3包含将最初与条目211-3相关联的第一层节点311-5合并到第二层节点311-6中(和/或将条目211-3与第二层节点311-6相关联)。如图所示,第二层节点311-6从具有下层子节点311的开放节点311转换到被阻止具有和/或引用任何下层子节点311的被占用节点311。因此,升级存取元数据条目211-3可包含移除和/或无效第一层节点311-5(以及所得到的空子结构312-3)。由修改的存取元数据条目211-3覆盖的地址范围的大小可以从最小范围大小升级到层320-2的下一个更大的范围大小。如图5-5所示,条目211-3被修改为覆盖节点311-6的第二层地址范围{“0x662000”,“0x662fff”},而不是较小的第一层地址范围{“0x662100”,“0x6621ff”}。
[0120]
管理逻辑226可以在升级操作之后监视存取元数据条目211-3的效用度量213-3,并且至少部分地基于效用度量213-3确定是否将条目211-3保留在第二层320-2,将条目211-3降级回第一层320-1,将条目211-3升级到下一更高层320-3等。在图5-6所示的实例中,存取元数据条目211-3的效用度量213-3触发进一步将条目211-3升级到数据结构310的第三层320-3。作为响应,管理逻辑226尤其通过以下方式来合并节点311——将条目211-3与第三层节点311-7相关联:配置存取元数据条目211-3以覆盖由节点311-7定义的第三层地址范围(例如,地址范围{“0x660000”,“0x66ffff”}),设置节点311-7的覆盖数据316以包含和/或引用条目211-3,将节点311-7从开放节点311转换到被占用节点311,移除节点311-7的下层子节点311,诸如第二层节点311-6,移除下层子结构312等。
[0121]
返回参考图5-5,在升级到第二层320-2之后,存取元数据条目211-3的效用度量
213-3可以减小,而不是如图5-6所示的实例中那样增大。减少可以发生在已经捕获了与第二层地址范围{“0x662000”,“0x662fff”}有关的存取元数据112-3之后。效用度量213-3的减少可以触发存取元数据条目211-3降级回到数据结构310的下层320-1。由于与数据结构310的较低层320处的节点311相关联的存取元数据条目211比较高层320内的节点311的存取元数据条目211覆盖更小的地址范围,因此降级较高层存取元数据条目211可包含层间拆分操作,其中与存取元数据条目211相关联的较高层节点311被拆分成一组一或多个下层节点311,每个下层节点311覆盖由上层节点311覆盖的较大地址范围内的较小的下层地址范围。在一些方面,上层节点311可被拆分成跨越由上层节点311覆盖的地址范围的下层节点311。上层节点311可被拆分成2^b
lst
个下层节点311,其中b
lst
是包含在下层320的子标签304中的位数,并且其确定可与相邻上层320的相应父节点311相关联的下层的唯一节点311的最大数目。可替换地,存取元数据条目211的上层节点311可以尤其基于条目211的存取元数据112进行拆分。上层节点311可被拆分成覆盖由上层节点311所覆盖的地址范围的选定部分的下层节点311,如尤其由上层节点311的存取元数据条目211所指示。管理逻辑226可以省略对应于以下的下层节点311:在时间阈值内(和/或以阈值频率)未被存取、未能满足活动阈值、与低效用度量213相关联、与较差的预取器性能相关联的地址范围等。可以在较低层条目211中复制较高层条目211的存取元数据112。可替换地,各个下层条目211的存取元数据112可以从上层存取元数据条目211的存取元数据112的相应部分导出。下层条目211的存取元数据112可以结合与由下层条目211覆盖的地址范围的部分相对应的存取元数据112。
[0122]
图5-7图示了将与图5-5中的第二层节点311-6相关联的存取元数据条目211-3降级回数据结构310的第一层320-1的操作。降级操作可包含层间拆分操作,其中在存取元数据条目211-3内相关联的第二层节点311-6被拆分成一或多个第一层子节点311,每个子节点覆盖由第二层节点311-6覆盖的第二层地址范围的相应子集。在一些方面,存取元数据条目211-3可被拆分成16个下层条目211,每个下层条目覆盖地址范围{“0x662000”,“0x662fff”}的相应子集(根据下层320-1的4位子标签304-1)。在图5-7所示的实例中,存取元数据条目211-3被拆分成三个下层子节点311-8、311-9和311-10,其可以分别定义由存取元数据条目211-4、211-5和211-6覆盖的地址范围。可基于存取元数据条目211-3的存取元数据112-3确定地址范围(例如,可对应于地址范围的活动部分)。如图所示,存取元数据条目211-4覆盖地址范围{“0x662300”,“0x6623ff”},条目211-5覆盖地址范围{“0x662500”,“0x6625ff”},条目211-6覆盖地址范围{“0x662f00”,“0x662fff”}。可以使存取元数据条目211-3无效和/或从数据集210中移除,并且第二层节点311-6经配置以引用包括子节点311-8至311-10的第一层子结构312-3(从被占用到开放的转换)。
[0123]
返回参考图5-1,自适应跟踪引擎110的管理逻辑226还可经配置以标识和合并存取元数据条目211,其a)覆盖邻近的地址范围,并且b)具有类似的效用度量213。如本文中所使用,“邻近”地址范围是指具有相同或类似范围大小且在彼此的阈值距离内的地址范围。在一些方面,邻近地址范围是指由数据结构310的兄弟节点311覆盖的地址范围。兄弟节点311指的是在数据结构310的相同层320内并且在相邻上层320中具有公共父节点的节点311。在图5-3的实例中,包含在层320-1的子结构312-1中的节点311-1和311-4是兄弟节点。兄弟条目211-1和211-2的效用度量213-1和213-2可以触发管理逻辑226的合并操作。如图
5-8所示,合并操作可包含通过以下方式将节点311-1和311-4合并到兄弟节点的公共父节点311-2中:a)配置合并的条目211-1和211-2的目的地存取元数据条目211-7以覆盖上层节点311-2的地址范围{“0x332000”,“0x332fff”},b)将条目211-1和211-2的存取元数据112-1和112-2合并到目的地条目211-7中,c)移除和/或使合并的条目211-1和211-2以及数据结构310(和空子结构312-1)的第一层320-1内的对应节点311-1和311-4无效,和/或d)将上层节点311-2的覆盖数据316配置为包含和/或引用存取元数据条目211-7。
[0124]
诸如图5-8所示的层间合并操作之类的层间合并或升级操作涉及将较低层320内的节点311组合成数据结构310的较高层320内的节点,这可导致显著的大小增加。图5-9图示了由自适应跟踪引擎110和/或管理逻辑226实现的层内合并和/或升级操作的实例,其中节点311被合并在数据结构310的相同层320内(和/或节点311覆盖的地址范围的大小和对应的存取元数据条目211在数据结构的相同层320内增加)。在图5-9的实例中,第一层兄弟节点311-1和311-4被组合成数据结构310的相同层320-1内的复合节点311-11(与数据结构310的第二层320-2内的节点311相反)。复合节点311-11的节点标签314包含跨越合并节点311-1和311-4的节点标签314的多个值(例如,包含和/或跨越“0x1”至“0x4”)。因此,由复合节点311-11和相应的合并条目211-8定义的地址范围跨越子标签集304-1“0x1”至“0x4”或{“0x332100”,“0x3324ff”}。图5-9的实例层内合并操作可导致比层间合并更渐进的大小增加。在一些方面,管理逻辑226实施层内合并操作直到达到内部合并阈值。
[0125]
尽管描述了操纵操作的特定实例,但是本公开不限于此。管理逻辑226可经配置以实现任何适当类型的操纵操作。如图5-7所示,管理逻辑226可经配置以实现层间降级或拆分操作,其中上层节点311(和对应的存取元数据条目211)被拆分成较小的下层节点311。管理逻辑226还可经配置以实现层内降级或拆分操作,其中复合节点311和对应的存取元数据条目211被拆分成数据结构310的相同层320内的一或多个较小和/或非复合节点311。
[0126]
图6图示了用于实现自适应地址跟踪和/或自适应跟踪引擎110的设备600的进一步实例(自适应地址跟踪设备600的实例)。在一些实施方案中,数据集210的存取元数据条目211在范围管理数据结构310内保持。例如,存取元数据条目211可包含在数据结构310的相应被占用节点311中。相反,在图6的实例中,数据集210的存取元数据条目211与数据结构310分开保持。如图所示,自适应跟踪引擎110可包含和/或耦合到范围跟踪存储器(第一存储器608),其经配置以存储、保持和/或提供包括一或多个存取元数据条目211的数据集210。第一存储器608可机构配置为范围跟踪存储器和/或经配置以存储和/或实现存取数据集210,如本文所公开的。更具体地,第一存储器608经配置以保持一组存取元数据条目211,其各自覆盖相应的地址范围。在图6的实例中,存取元数据条目211包含范围元数据214,其定义由条目211覆盖的地址范围的边界(例如,具有最小和最大地址值)。
[0127]
自适应跟踪引擎110还可包含和/或耦合到保持范围管理数据结构310的范围管理存储器(第二存储器618)。第二存储器618可经配置为范围管理存储器和/或经配置以实现范围管理数据结构310。
[0128]
在一些方面,第一存储器608与第二存储器618分离和/或独立。第一存储器608可以由与实施和/或实现第二存储器618的存储器组件分离和/或独立的存储器组件来实施和/或实现。
[0129]
如本文所公开的,可以频繁地存取和/或更新存取数据集210。此外,对数据集210
的存取可以与诸如存储器i/o路径的性能敏感组件有关。因此,第一存储器608可以由诸如存储器电路、半导体存储器电路、存储器阵列、存储器组、高速缓冲存储器、高速缓存线、sram、sdram、专用存储器资源、板上存储器资源等高性能存储器资源来实施、提供和/或实现。第二存储器618可以不像第一存储器608那样对性能敏感,并且因此可以由诸如主机装置102的存储器资源、主存储器、后备存储器108、消费者115和/或源215的存储器资源、dram等其它存储器资源来实施、提供和/或实现。
[0130]
第一存储器608可包含和/或耦合到第一逻辑624。第一逻辑624耦合到接口222和第一存储器608。第一逻辑624可经配置以提供对数据集210的条目211的存取。第一逻辑624可以实现存取元数据112(和/或第一存储器608)的接口。第一逻辑624还可经配置以响应于与相应条目211所覆盖的地址范围内的地址202有关的命令201而更新相应条目211的存取元数据(例如,可包含和/或实现更新逻辑224)。在图6的实例中,第一逻辑624还包含和/或耦合到搜索逻辑625,其经配置以尤其响应于与地址202有关的命令201、来自消费者115(诸如预取逻辑515)的请求、与覆盖地址202的存取元数据112有关的反馈204等而查找对应于指定地址202的条目211。搜索逻辑625可经配置以在第一存储器608内保持的存取数据集210内实现快速、低开销搜索操作。搜索逻辑625可经配置以在不存取数据结构310和/或第二存储器618的情况下实现搜索和/或查找操作。由搜索逻辑625实现的搜索和/或查找操作可涉及将地址202和/或地址标签302与相应条目211的范围元数据214进行比较。搜索逻辑625可实现与数据结构310的各个层320内的分层搜索操作相反的直接的单层比较。搜索逻辑625可包含比较逻辑,其经配置以将地址202(和/或地址标签302)与相应条目211(如条目211的范围元数据214所定义的)覆盖的最小和/或最大地址边界进行比较。搜索逻辑625可经配置以至少部分并行地将地址202(和/或地址标签302)与多个条目211的范围元数据214进行比较。可以在硬件中提供、实施和/或实现第一逻辑624(和/或其搜索逻辑625)。搜索逻辑625可包含耦合到第一存储器608的硬件搜索引擎和/或硬件搜索电路。在一些实例中,第一逻辑624(和/或其搜索逻辑625)通过使用第一存储器608的板上逻辑组件(诸如pim电路等)来实现。在一些实施方案中,搜索逻辑625与第一存储器608集成。搜索逻辑625可以在第一存储器608的芯片和/或衬底内实现。可替换地或附加地,搜索逻辑625的硬件搜索引擎和/或硬件搜索电路可在与第一存储器608等相同的封装或模块内实现。
[0131]
自适应跟踪引擎110还可包含和/或耦合到第二逻辑626。第二逻辑626可耦合到第一存储器608、第二存储器618和/或接口222。第二逻辑626可包含和/或耦合到管理逻辑226,其经配置以尤其通过和/或通过第二存储器618内保持的数据结构310来管理存取数据集210的条目211。在一些实例中,第二逻辑626(和/或其管理逻辑226)包含在和/或耦合到第二存储器618。第二逻辑626(和/或其管理逻辑226)也可耦合到第一存储器608,并且可经配置以创建、移除、无效、修改和/或以其它方式管理数据集210的条目211。如本文更详细地公开的,管理逻辑226可经配置以尤其通过配置数据集210的条目211以覆盖由数据结构310的对应节点311定义的地址范围来实现对存取数据集210内的数据结构310执行的修改。
[0132]
如本文所公开的,可以根据配置数据524来构建数据结构310。在图6的实例中,管理逻辑226构建包括n个层320-1至320-n的数据结构310,每一层320被分配了相应的子标签304并且对应于多个范围大小中的相应范围大小。层320-1至320-n可以被组织成对应于范围大小的分层结构,其中第一层320-1对应于层次结构底部的多个范围大小中的最小范围
大小,而最后一层320-n对应于层次结构顶部的最大范围大小。数据结构的各个层320的区域方案322基于层次结构内各个层320的位置来定义层320的子标签304、区域标签332和/或区域偏移331,该层次结构尤其定义各个层320的范围大小。
[0133]
数据结构的节点311可包含节点标签314、状态数据616、条目引用621、子引用631等。节点311的状态数据616指示节点311是引用存取元数据条目211还是引用数据结构310的较低层320内的子结构312。因此,如本文所公开的,状态数据616可以指示节点311是被占用还是开放。状态数据616还可经配置以指示节点311是否引用有效存取元数据条目211和/或有效子结构312。节点311的条目引用621可以引用在第一存储器608内保持的数据集210的存取元数据条目211。在第二存储器618内保持的节点311可以使用包含但不限于:参考值、索引值、指针值(指向第一存储器608内的位置的指针)、存储器地址、地址偏移等任何合适的信息来引用在第一存储器608内保持的条目211。节点311的子引用631可包含和/或引用数据结构310的较低层320内的子结构312。可以从数据结构310的第一层320-1内的节点311中省略子引用631。
[0134]
在图6的实例中,数据结构310的节点311还包含效用度量213,其可以量化由此覆盖的地址范围的效用,如本文所公开的。被占用节点311的效用度量213可以根据预取性能来量化节点311引用的条目211的效用(或捕获覆盖由节点311定义的地址范围的存取元数据112的效用)。不直接引用条目211的开放节点311的效用度量213可以是空的。可替换地,开放节点的效用度量213可经配置以量化节点311的子节点的效用。开放节点311的效用度量213可包含开放节点311的被占用子节点311的效用度量213的平均值、均值或其它组合。
[0135]
如本文所公开,管理逻辑226对数据结构310内的地址范围关系进行编码。管理逻辑226通过节点311之间的父子关系对地址范围包含关系进行编码,其中由上层父节点311覆盖的地址范围包含由下层子节点311覆盖的地址范围。在层320内且共享数据结构310的相邻上层320中的相同上层父节点311的节点311之间的兄弟关系覆盖包含在由父节点311覆盖的上层地址范围内的地址范围。更具体地,兄弟节点311(和对应的条目211)覆盖上层父地址范围内的相应子集。
[0136]
在图6的实例中,管理逻辑226要求叶节点311被占用。因此,最低层320-1中的每个节点311引用存取元数据条目211,并且移除不引用有效条目211的节点。类似地,删除数据结构310的上层320内不引用有效存取元数据条目211或子结构312的节点311。在一些方面,管理逻辑226要求数据结构310的较低层320(除顶层320-n之外的层320)内的每个节点311在上相邻层320中具有单个唯一的父节点311,并且包含在由父节点311引用的子结构312中。子结构312内的节点311可由其节点标签314索引和/或引用。数据结构310的顶层320-n内的节点311可由其节点标签314以类似方式(例如,如同包含在相同或公共子结构312中)进行索引和/或引用。各个子结构312内的兄弟节点311可由记录在其节点标签314中的子标签值唯一地标识。因此,各个上层父节点311的下层兄弟节点311可以覆盖由各个上层父节点311覆盖的地址范围的不同子集。然而,具有不同父节点311且因此包含在不同子结构312中的节点311的节点标签314可具有相同值(此类节点311的地址范围不能重叠,因为节点311尤其具有不同父节点且因此包含在不同地址范围内)。
[0137]
管理逻辑226可以通过修改数据结构310并在存取数据集210内实现修改来调整存取元数据112所覆盖的地址范围。如本文所公开的,管理逻辑226可以尤其通过在数据结构
310内实施操纵操作来修改数据集210的一或多个条目211的范围大小,这些操纵操作可包含但不限于:合并操作、层间合并操作、层内合并操作、拆分操作、层间拆分操作、层内拆分操作、移除操作、升级操作、层间升级操作、层内升级操作、降级操作、层间降级操作、层内降级操作等。实现操纵操作可包含将在数据结构310内做出的修改传播到存取数据集210,其可包含但不限于:修改由一或多个存取元数据条目211覆盖的地址范围、增加由一或多个条目211覆盖的地址范围的大小、减小由一或多个条目211覆盖的地址范围的大小、移除和/或使一或多个条目211无效,等等。如本文所公开的,管理逻辑226可以至少部分地基于条目211的效用度量213来调整一或多个条目211的范围大小。
[0138]
管理逻辑226可经配置以评估效用度量213,并在后台操作中对存取元数据112(如果有的话)所覆盖的地址范围实施相应的修改。后台操作可经配置以利用自适应跟踪引擎110可用的空闲资源。后台操作可以在前台操作期间和/或响应于前台操作而被挂起、暂停和/或终止。前台操作可包含但不限于:在接口222处接收命令201(和/或命令201的指示),响应于命令201而更新存取元数据112,响应于反馈204(和/或命令201)而更新效用度量213,从消费者115接收对存取元数据112的请求,向消费者115提供存取元数据112,向消费者115发送存取元数据112等。当空闲资源变得可用和/或前台操作已经完成时,后台操作可以恢复和/或重新启动。管理逻辑226可实现后台扫描操作以评估效用度量213,并在以指定间隔、在空闲期间等期间周期性地实现的后台扫描操作中实现对存取元数据112所覆盖的地址范围的相应修改。后台扫描操作可包含遍历数据结构310的节点311(和/或数据集210的对应条目211)以识别用于降级、升级、合并(相关条目211)等的条目211。
[0139]
管理逻辑226还可经配置以移除和/或使数据结构310的节点311无效。数据结构310的第一层320-1内的节点311可以在降级和/或拆分操作中被移除和/或无效。管理逻辑226可以响应于确定第一层节点311的效用度量213低于阈值(和/或在确定的时间段内保持低于阈值)而移除第一层节点311。移除第一层节点311还可包含从数据集210中移除第一层节点311引用的条目211。在一些实例中,管理逻辑226可确定节点311所覆盖的地址范围不适合于预取。如本文所公开,一些地址范围可能不适于预取和/或某些预取技术。不适当的地址范围可能随着时间和在不同范围大小下表现出差的预取性能。管理逻辑226可标识不适当的地址范围,且作为响应,标识地址范围的记录无跟踪元数据612不适于预取。在一些实例中,无跟踪元数据612包含一或多个条目(无跟踪条目611),其各自标识相应的无跟踪地址范围。无跟踪元数据612可被记录在存取元数据112内和/或可供消费者115(诸如预取逻辑515)使用。预取逻辑515可以使用无跟踪元数据612来避免在不适当的地址范围内实现预取操作。类似地,管理逻辑226可使用无跟踪元数据612来防止响应于后续跟踪未命中而跟踪不适当的地址范围。无跟踪元数据612可以在数据集210、范围管理数据结构310和/或存取元数据112的其它部分中的一或多个中保持。在图6的实例中,管理逻辑226经配置以在存取数据集210内保持无跟踪元数据612。无跟踪元数据612可包含一或多个无跟踪条目611,其各自经配置以标识相应的地址范围。无跟踪条目611可以通过任何适当的机制来标识不适当的地址范围。在一些实例中,无跟踪条目611包含指示创建无跟踪条目611的时间的时间戳和/或其它信息。当满足一或多个条件时(当地址范围内的工作负载可能已经改变时),诸如在确定的时间段之后、在重启或关闭操作之后等,管理逻辑226可以清除无跟踪条目611。可替换地或附加地,管理逻辑226可经配置以在数据结构310内保持无跟踪元数据
612。管理逻辑226可以使用被标记为无跟踪指示符(例如,在节点311的状态数据616、条目引用621、子引用631、效用度量213和/或其它字段内被标记为无跟踪)的节点311来表示不合适的地址区域。
[0140]
图7图示了用于实现自适应跟踪和/或自适应跟踪引擎110的设备700的进一步实例。在图7的实例中,自适应跟踪引擎110的第二逻辑626包含和/或耦合到自适应逻辑726。适配逻辑726利用管理逻辑226来调整由存取元数据112覆盖的地址范围集,以便尤其提高预取性能。适配逻辑726可以至少部分地基于存取元数据112的效用度量213来确定要在数据集210内实现的修改操作。
[0141]
在一些方面,适配逻辑726经配置以从数据集210和/或数据结构310基本上为空的初始或初始化状态构建存取元数据112。适配726可以根据配置数据524构建存取元数据112,配置数据524可以定义响应于跟踪未命中而实现的修改操作。在一些实例中,配置数据524指定通过将最小大小的条目211添加到存取数据集210来处理跟踪未命中,其可包含将管理逻辑226配置为:修改数据结构310以将覆盖与跟踪未命中相关联的地址202的节点311添加到数据结构310的最低层320-1,并且通过创建将由节点311定义的地址范围覆盖到第一存储器608内保持的数据集210的条目211并且将节点311的覆盖数据316配置为引用条目211来实现数据集210内的修改。在另一实例中,配置数据524可指定通过向数据集210添加较大大小的条目211来处理跟踪未命中,其可包含配置管理逻辑226以创建覆盖数据结构310的较高层320内的地址202的节点311,并实现数据集210内的修改,如本文所公开的(例如,配置数据集210的存取元数据条目211以覆盖由节点311定义的地址范围)。
[0142]
适配逻辑726还可经配置以在后台操作中调谐、调整和/或优化由存取元数据112覆盖的地址范围集。适配逻辑726可以适配由存取数据集210的条目211覆盖的地址范围和/或范围大小,以尤其提高预取性能。如本文所公开的,适配逻辑726可以实现涉及通过使用管理逻辑226来操纵数据集210内的数据结构310的操作。
[0143]
适配逻辑726可以根据配置数据524的适配策略来调整存取元数据112的地址范围和/或范围大小。在一个实例中,适配策略可将适配逻辑726配置成降级被确定为具有低于阈值(例如,指定降级阈值)的效用度量213的条目211。适配逻辑726可以尤其通过扫描存取元数据112来选择条目211用于降级或其它修改,其可包含:遍历数据结构310的节点311(和/或由此引用的条目211)、扫描数据集210的条目211等。适配逻辑726可经配置以周期性地,以指定间隔,在闲置周期期间等实施后台扫描操作(且实施对应的地址范围调整)。
[0144]
如本文所公开的,降级与数据结构310的上层节点311相关联的所选条目211可包含:将上层节点311从被占用降级为开放,创建覆盖由上层节点311覆盖的地址范围的相应子集的一或多个下层子节点311,将数据集210的条目211分配给下层子节点311,将所选条目211的存取元数据112导入指定条目211中,以及移除和/或使所选条目211无效。降级数据结构310的最低层320-1内的条目211可包含从数据结构310中移除和/或使节点311无效、从数据集210中移除和/或使对应的条目211无效等。降级操作还可包含在存取元数据112中记录无跟踪指示,这可防止适配跟踪引擎110响应于随后的跟踪未命中而尝试跟踪地址范围,如本文所公开的。
[0145]
在又一实例中,适配策略配置适配逻辑726以促进被确定为具有超过阈值(例如,超过指定的促进阈值)的效用度量213的存取元数据条目211。如本文所公开的,升级条目
211可包含增加由条目211覆盖的地址范围的大小。适配逻辑726可以选择条目211(和/或对应的节点311)用于在后台扫描操作期间进行升级,如本文所公开的。适配逻辑726可以实现操作以通过使用管理逻辑226来升级条目211。管理逻辑226可以通过操纵数据结构310来升级条目211。适配逻辑726可以配置管理逻辑226以实现:其中条目211被从数据结构310的较低层320升级到较高层320的层间升级操作,其中条目211被扩展以包含数据结构310的相同层320内的附加地址范围的层内升级操作(层间合并操作)(例如,通过操纵数据结构310的复合节点311)等。将与下层节点311相关联的条目211合并到数据结构310的高层320中的父节点311中的层间合并操作可包含:将父节点311的子节点311的条目211合并到目的地条目211中,从数据集210中移除和/或使子节点311的条目211无效,从数据结构310中移除子节点311,并且将父节点311配置为引用目的地条目211(将父节点311指定为被占用而不是开放的)。
[0146]
在另一实例中,适配逻辑726经配置以合并所选择的相关存取元数据条目211的组。适配策略可以将相关条目211定义为条目211,其:a)覆盖邻近度阈值内的地址范围(和/或具有相同的范围大小),以及b)具有效用阈值内的效用度量213。如本文所公开,适配逻辑726可响应于后台扫描操作而标识相关条目211的组。适配逻辑726可以通过使用管理逻辑226来合并所标识的条目组211(例如,通过将管理逻辑226配置为实现合并操作、层间合并操作、层内合并操作等)。
[0147]
适配逻辑726还可经配置以调整、调谐和/或优化自适应跟踪引擎110的存取元数据配置725。如本文所使用的,自适应跟踪引擎110的存取元数据配置725是指与由自适应跟踪引擎110捕获和/或保持的存取元数据112的配置有关的信息。存取元数据配置725可以对应于由存取元数据112覆盖的地址范围集和/或数据集210的配置,诸如包含在数据集210中的存取元数据条目211的数目、由存取元数据条目211覆盖的地址范围集等。可替换地或另外地,存取元数据配置725可包含与数据结构310有关的信息,如本文所公开的,其可以定义由数据集210的存取元数据条目211覆盖的地址范围集。适配逻辑726可以通过以下方式调整存取元数据配置725:a)确定、监视、调整和/或以其它方式保持存取元数据配置725的效用元数据723,以及b)至少部分地基于效用元数据723来实现修改操作以修改存取元数据配置725。存取元数据配置725的效用元数据723可以至少部分地基于数据集210的存取元数据条目211的效用度量213(和/或数据结构310的对应节点311的效用度量213)。确定效用元数据723可包含但不限于:对存取元数据条目211(和/或对应节点311)的效用度量213进行平均、加权、聚集、合并和/或以其它方式组合。在一些实例中,效用度量213可以通过地址范围大小进行加权,其中对应于较大地址范围大小的效用度量213的加权比对应于较小地址范围大小的效用度量213的加权更重(例如,与相应节点311相关联的效用度量213可以乘以被分配给数据结构310(其中相应节点311被设置在其中)的层320的加权因子)。可替换地或附加地,效用度量213可根据活动水平进行加权,其中对应于具有较高活动级别(例如,较高请求频率、预取活动等)的地址范围的效用度量213的加权比对应于具有较低活动级别的地址范围的效用度量的加权更重。可基于与相应条目211(和/或对应节点)所覆盖的地址202有关的命令201的数量和/或频率来确定各个存取元数据条目211的活动级别。
[0148]
在一些实例中,适配逻辑726实现迭代调谐过程,其中每次迭代可包含但不限于:a)确定自适应跟踪引擎110的存取元数据配置725的效用元数据723,b)评估适配功能或模
型(例如,优化功能或模型)以确定存取元数据配置725的效用数量,以及c)至少部分地基于效用数量来确定是否修改存取元数据配置725。目标函数尤其可以由配置数据524的适配策略来定义。目标函数可经配置以平衡存取元数据配置725的效用(如由效用元数据723量化的)和与存取元数据配置725相关联的成本,其可以根据存储器开销、计算开销、延迟开销、复杂度、数据集210的存储器开销、数据集210的存取元数据条目211的存储器开销(例如,在第一存储器608内),包含在数据集210中的条目211的数量、数据结构310的存储器开销(例如,在第二存储器618中)、包括在数据结构310中的节点311和/或子结构312的数量、数据结构310的复杂度等来量化。
[0149]
适配逻辑726可以确定对存取元数据配置725的修改,其基于适配功能或模型将提高地址跟踪引擎110的效用(例如,导致效用度量213增加和/或成本降低)。适配逻辑726可以在后台操作中实现优化过程的迭代。适配逻辑726可以继续迭代优化过程,直到满足一或多个终止标准,诸如收敛到最优存取元数据配置725、收敛到局部最优、收敛到稳定的存取元数据配置集725、达到迭代阈值等。可替换地或附加地,适配逻辑726可经配置以响应于变化的工作负载状况而周期性地实现优化过程的迭代和/或恢复优化过程,其尤其可以导致在存取元数据配置725的一或多个地址范围内的效用度量213的减小。适配逻辑726可经配置以实现任何合适的优化过程、算法、技术或模型,包含但不限于:梯度下降、最陡下降、条件梯度、随机梯度下降、启发式算法(例如,模因算法、进化算法、微分进化算法、遗传算法、动态松弛算法、爬山算法、粒子群算法等)、ml优化算法等。
[0150]
尽管图7图示了在实例设备600中实现的适配逻辑726,其中存取数据集210和数据结构310的条目211在单独的存储器资源中保持,但是本公开不限于此,并且可以将适配逻辑726和/或其功能合并到其它实施方案中,诸如其中数据集210的存取元数据条目211包含在如图3所示的数据结构310的相应节点311中的实施方案。
[0151]
图8图示了用于实现自适应地址跟踪的设备800的进一步实例。在图8的实例中,自适应跟踪引擎110耦合到和/或包含在高速缓冲存储器106内,高速缓冲存储器106尤其包含高速缓存逻辑802和存储器阵列806。自适应跟踪引擎110包含和/或耦合到经配置为存取元数据112和/或存取数据集210的第一存储器608。在一些实例中,第一存储器608由存储器阵列806和/或在存储器阵列806内实现。第一存储器608可实施于存储器阵列806的专用区域内。搜索逻辑625还可由存储器阵列806和/或在存储器阵列806内实现(作为pim电路等)。
[0152]
自适应跟踪引擎110还包含经配置为范围管理数据结构310和管理逻辑226的第二存储器618。在一些实例中,第二存储器618由存储器阵列806和/或在存储器阵列806内实现。可替换地,第二存储器618可由其它存储器资源和/或在其它存储器资源内实现,诸如后备存储器108、板上存储器、dram等。管理逻辑226配置数据结构310以定义多个范围大小,每个范围大小对应于数据结构310的层320中的相应一个。如本文所公开的,自适应跟踪引擎110捕获与数据集210的相应条目211所覆盖的地址区域有关的存取元数据112。可以响应于诸如高速缓存命中、高速缓存未命中等的高速缓存请求来更新条目211。
[0153]
高速缓冲存储器106可经配置以高速缓存与存储器阵列806内的后备存储器108有关的地址。高速缓存逻辑802可经配置以尤其响应于高速缓存未命中而将地址加载到存储器阵列806中。高速缓存逻辑802还可经配置以至少部分地基于覆盖数据集210的条目211内所保持的相应地址范围的存取元数据112预取相应地址范围内的地址。高速缓存逻辑802可
以实现任何合适的预取技术和/或预取器类型,包含但不限于:步幅预取器、相关预取器、ml预取器等。在一些实施方案中,由高速缓存逻辑802实现的步幅预取器使用覆盖相应地址范围的存取元数据112来尤其检测相应地址范围内的步幅模式。在其它实施方案中,由高速缓存逻辑802实现的相关预取器使用覆盖相应地址范围的存取元数据112来尤其检测相应地址范围内的增量相关和/或增量序列。可替换地或附加地,诸如lstm预取器之类的ml预取器使用存取元数据112来在所覆盖的相应地址范围内开发ml模型和/或将覆盖相应地址范围的存取元数据112应用于对应于相应地址范围的ml模型。
[0154]
高速缓存逻辑802还可经配置以提供与相应条目211的地址范围内的预取性能有关的反馈。管理逻辑226使用该反馈来确定相应条目211(和/或数据结构310的对应节点311)的效用度量213。如本文所公开,设备800进一步包含适配逻辑726,其调整由条目211覆盖的范围大小和/或地址范围以提高预取性能。
[0155]
用于自适应地址跟踪的实例方法
[0156]
在本节中参考图9至15的流程图和流程图描述了实例方法。这些描述仅通过实例的方式参考图1至8中描绘的组件、实体和其它方面。图9以流程图900图示了用于实现自适应地址跟踪的设备的实例方法。流程图900包含框902至906。在一些实施方案中,主机装置102(和/或其组件)可以执行流程图900的一或多个操作。可替换地或附加地,一或多个操作可以由存储器、存储器控制器、pim逻辑、高速缓冲存储器、高速缓存逻辑、预取逻辑、嵌入式处理器等来执行。在902处,自适应跟踪引擎110接收与存储器地址空间的地址有关的命令201(和/或命令201的指示),诸如用以检索、修改、操纵和/或以其它方式存取与地址202相关联的数据的命令201。可以从诸如处理器103、存储器控制器104、互连105、高速缓冲存储器106、高速缓存预取逻辑、预取器等的源215接收和/或获取命令201。例如,当程序存取存储器地址空间的各个区域时,命令201可以对应于由在主机102的处理器103上运行的程序产生的存储器i/o工作负荷。
[0157]
在904处,将与在902处接收到的命令201有关的存取元数据112存储在存储器(例如,存储器208、第一存储器608等)中。存取元数据112可以存储在包括响应于命令201的一或多个条目211的数据集210中,其中数据集210的每个条目211覆盖存储器地址空间的地址范围,并且包括与所覆盖的地址范围内的地址有关的存取元数据112。在条目211内保持的存取元数据112可包含与由条目211覆盖的地址范围有关的任何信息,其可包含但不限于:与所覆盖的地址范围内的存取有关的信息、存取统计、存取模式统计、存取历史、存取序列、存取频率元数据、存取时间元数据、存取模式元数据、步幅模式、相关模式、增量序列、存取建模元数据、ml建模元数据、ml特征数据等。可以响应于任何合适类型的命令201来保持和/或更新存取元数据112,命令201包含但不限于:数据存取请求、读取请求、写入请求、复制请求、克隆请求、微调请求、擦除请求、删除请求、高速缓存未命中、高速缓存命中等。
[0158]
在906处,管理逻辑226至少部分地基于表示数据集210的一或多个条目211所覆盖的地址范围内的预取性能的一或多个度量214来调整数据集210的至少一个条目211所覆盖的地址范围的大小。在一些实例中,自适应跟踪引擎110向预取逻辑515提供存取元数据112,预取逻辑515使用存取元数据112来通知存取元数据112所覆盖的地址范围内的预取操作。预取逻辑515还可经配置以提供关于地址范围内的预取性能的反馈204,诸如在地址范围内执行的可用预取的数目、可用预取与不良预取的比率等。在906处,可增加由具有相对
较高预取性能的条目211覆盖的地址范围,而可减小由具有相对较低预取性能的条目211覆盖的地址范围(和/或可移除低性能条目211)。在906处,由数据结构310定义的地址范围集可尤其通过操纵其一或多个节点311来修改。数据集210的条目211可经配置以实施经修改的地址范围集。可以通过向第一存储器608写入一或多个位(写入位以修改条目211的范围元数据214)来修改由条目211覆盖的地址范围。
[0159]
图10以流程图1000图示了用于实现自适应地址跟踪的设备的方法的进一步实例。在1002处,自适应跟踪引擎110的管理逻辑226通过数据结构310的各个层320内的节点311表示存储器地址空间的地址范围,每一层320对应于多个地址范围大小中的一个。管理逻辑226还可经配置以对数据结构310内的父子关系进行编码,数据结构的不同层320处的节点311之间的父子关系表示节点311之间的地址范围包含关系。管理逻辑226还可对数据结构310内的相应兄弟关系进行编码,其中在数据结构310的上层320中具有相同的相应父节点311的节点311表示由相应父节点311表示的相同的相应较大的上层地址范围的子集。相同父节点311的兄弟节点311可组织在子结构312内,其中兄弟节点311由子标签值(例如,由节点标签314的内容)索引。如本文所公开的,管理逻辑226还可经配置以实现由数据结构310在包括存取元数据条目211的数据集210内定义的地址范围集。
[0160]
在1004处,自适应跟踪引擎110的更新逻辑224捕获和/或保持数据集210的相应条目211内的存取元数据112,数据集210的每个条目211与数据结构310的相应节点311相关联并且覆盖由相关联节点311表示的地址范围。更新逻辑224可经配置以响应于与地址空间的地址202有关的命令201而更新存取元数据112。在1004处,接收命令201,并且作为响应,更新逻辑224将与命令201有关的地址202映射到数据集210的条目211,并且相应地更新条目211的存取元数据。在1004处,自适应跟踪引擎110还可经配置以向消费者115(诸如高速缓存、高速缓冲存储器、高速缓存控制逻辑、高速缓存预取逻辑、预取逻辑、预取器等)提供与指定地址范围有关的存取元数据112,消费者115可使用存取元数据112来实现指定地址范围内的预取操作并提供与指定地址范围内的预取性能和/或效用有关的反馈。如本文所公开的,该反馈可以用于确定数据集210的各个存取元数据条目211的预取效用度量(效用度量213)。
[0161]
在1006处,管理逻辑226至少部分地基于存取元数据条目211、节点311和/或数据集210的对应地址范围的预取效用度量来修改数据结构310。管理逻辑226可以实现修改以:修改一或多个地址范围的大小、增加一或多个地址范围的大小、将一或多个条目211升级到数据结构的较高层320、将一或多个条目211降级到数据结构的较低层320、合并一或多个条目211(和/或对应节点311)、拆分一或多个条目211(和/或对应节点311),等等。对数据结构310的修改可以适于提高预取性能。修改可包含将具有效用度量213的条目211的大小减小到减小阈值以下、将具有效用度量213的条目211的大小增大到增大阈值以上、将具有效用度量213的兄弟条目211组合在接近阈值内等。管理逻辑226尤其可以通过操纵数据结构310的节点311来实现1006的修改。可以根据数据结构310的分层地址包含关系来实现这些操纵,使得由经修改的数据结构310定义的经修改的地址范围集彼此不同。
[0162]
在1008处,管理逻辑226响应于修改数据结构310而更新由数据集210的条目211中的至少一个覆盖的地址范围。管理逻辑226可经配置以在数据集210的存取元数据条目211内传播在1006处的数据结构310内实现的修改。更具体地,管理逻辑226可以将数据集210的
条目211与数据结构310的被占用节点或叶节点311链接,并且在修改之后将条目211配置为覆盖由相关联的节点311定义的地址范围。
[0163]
图11以流程图1100图示了用于实现自适应地址跟踪的设备的方法的进一步实例。在1102处,管理逻辑226保持包括存取元数据条目211的数据集210,每个条目211经配置以覆盖由数据结构310定义的地址范围集的地址范围。管理逻辑226可经配置以从数据结构310和数据集210基本上为空的初始化状态构建数据结构310和相应的数据集210。管理逻辑226还可经配置以响应于跟踪未命中(例如,响应于命令201和/或对与未被存取数据集210的条目211覆盖的地址202有关的存取元数据112的请求)而将节点311添加到数据结构310,并将对应的条目211添加到数据集210。在一些实施方案中,存取数据集210在第一存储器608中保持,数据结构310在与第一存储器608分离和/或独立的第二存储器618中保持。
[0164]
在1104处,自适应跟踪引擎110的更新逻辑224捕获数据集210的条目211内的存取元数据112。存取元数据112可以响应于与地址空间的地址202有关的命令201而被捕获。在1104处,响应于与由相应条目211覆盖的地址范围内的地址202有关的命令201而更新数据集210的相应条目211。
[0165]
在1106处,自适应跟踪引擎110的接口222向预取逻辑515提供存取元数据112(和/或其部分)。预取逻辑515可利用存取元数据112来通知存取元数据112所覆盖的地址范围内的预取操作。预取逻辑515可以基于和/或通过使用条目211的存取元数据112在由相应条目211覆盖的地址范围内实现预取操作。预取逻辑515还可经配置以返回与具有相应地址范围的预取效用有关的反馈204,其可用于确定、更新和/或修改数据集210的相应条目211的效用度量213。
[0166]
在1108处,更新逻辑224评估数据集210的各个存取元数据条目211的预取效用。条目211的预取实用程序可指示由条目211覆盖的地址范围的大小是否适合于捕获可从中导出存取模式的存取元数据112。低预取效用可指示地址范围的大小不适当和/或应降级到较小大小,而高预取效用可指示地址范围的大小适当和/或应升级到较大大小。
[0167]
在1110处,管理逻辑226(或其适配逻辑726)确定是否修改由数据结构310定义(并由数据集210的条目211实现)的地址范围集。在1110处,可以将条目211的预取效用(例如,效用度量213)与一或多个阈值进行比较:可选择具有低于第一阈值的效用度量213的条目211进行降级,可选择具有高于第二阈值的效用度量213的条目211进行升级,可选择具有阈值内的效用度量213的相关节点311进行合并操作,等等。在一些实施方案中,适配逻辑726评估适配函数(例如,优化模型的目标函数)以尤其确定是否修改由存取元数据112覆盖的地址范围集。该评估可包含确定经配置以平衡由在地址范围集内捕获的存取元数据112提供的预取性能和与存取元数据112相关联的成本的适合度量。可以按照开销、资源消耗、预取成本等来量化成本。评估可包含根据优化算法(诸如梯度下降等)确定修改地址范围集。
[0168]
如果1110处的确定是修改地址范围集,则流程在1112处继续;否则,流程在1102处继续。在1112处,管理逻辑226调整数据结构310以定义修改后的地址范围集。管理逻辑226可以通过在数据结构310内实现一或多个操纵操作来定义修改后的地址范围集,操纵操作可包含但不限于:合并操作、层间合并操作、层内合并操作、拆分操作、层间拆分操作、层内拆分操作、移除操作、升级操作、层间升级操作、层内升级操作、降级操作、层间降级操作、层内降级操作等。操纵操作可经配置以通过降级具有相对较低效用度量213的条目211、升级
具有相对较高效用度量213的条目211提高存取数据集210的预取效用。
[0169]
在1114处,管理逻辑226重新配置数据集210的存取元数据条目211以覆盖由数据结构310定义的修改后的地址范围集,并且流程可以在1102处继续。在一些实施方案中,1108至1114的部分可以在后台操作中实现。后台操作可以在空闲周期期间和/或通过使用可用于自适应跟踪引擎110的空闲资源来实现。如本文所公开,当需要资源来实施前台操作时,管理逻辑226可挂起、暂停和/或终止后台操作。
[0170]
图12-1以流程图1200图示了如本文所公开的用于增大由数据集210的存取元数据条目211覆盖的一或多个地址范围的大小的方法的实例(例如,升级数据集210的条目211)。在1202处,选择数据集210的存取元数据条目211用于升级。可基于条目211的效用度量213来选择条目211用于升级,其可指示在由条目211覆盖的地址范围内相对较高的预取性能。可以响应于确定条目211的效用度量213超过一或多个阈值而选择条目211。
[0171]
在1204处,自适应跟踪引擎110的管理逻辑226确定与所选条目211相关联的节点311是否在数据结构310的较高层内具有父节点。管理逻辑226可以确定节点311是设置在数据结构310的最后、最高层320-n内还是设置在数据结构的较低层320内(例如,在层320-n-1至层320-1中的一个内)。如果所选条目211与数据结构310的最高层320内的节点311相关联,则流程在1206处继续;否则,流程在1208处继续。在1206处,可以保留(不改变)所选条目211的当前地址范围。可替换地,所选条目211的地址范围可以通过层内升级操作(结合图12-2更详细公开的层内升级操作的实例)来扩展。
[0172]
在1208处,管理逻辑226配置数据集210的指定条目211以覆盖由在1204处标识的上层节点311(与所选条目1202相关联的节点311的父节点)定义的地址范围。指定条目211可经配置以覆盖比由所选条目211覆盖的地址空间大的地址空间。由指定条目211覆盖的地址空间可包含由所选条目211覆盖的地址空间。
[0173]
在1210处,用所选条目211的存取元数据112和所选条目211的兄弟条目的存取元数据112(如果有的话)填充指定条目211的存取元数据112。兄弟条目211可被标识为与所选条目相关联的节点311中的兄弟节点311相关联的条目211。管理逻辑226可将所选条目211和兄弟条目211(如果有的话)合并到与较高层节点311相关联的指定条目211中(例如,有效地将由所选条目211覆盖的较低层地址范围升级到较大的较高层地址范围)。
[0174]
在1212处,管理逻辑226从数据结构310中移除上层节点311的子节点。在1214处,管理逻辑226使与来自数据集210的子节点311相关联的条目无效和/或将其移除。
[0175]
图12-2以流程图1201图示了用于增加由数据集210的存取元数据条目211覆盖的一或多个地址范围的大小(例如,升级条目211)的方法的进一步实例。在1202处,如本文所公开的,选择数据集210的存取元数据条目211用于升级。在1207处,管理逻辑226配置复合节点311,其将与所选条目211相关联的节点311与在与数据结构310内的节点311相同的层320内的一或多个兄弟节点311组合。复合节点311可经配置以覆盖对应于层的多个子标签值的地址范围。因此,复合节点311的节点标签314可包含多个子标签值(与非复合节点311的单个子标签值相反)。在一些实施方案中,管理逻辑226将连续的子标签值分配给复合节点311。
[0176]
在1209处,管理逻辑226配置所选条目211以覆盖由复合节点311定义的地址范围。在1211处,管理逻辑226将与在1207处合并到复合节点311中的兄弟节点311相关联的条目
的存取元数据(如果有的话)合并到所选条目211的存取元数据112中。在1213处,从数据结构中移除兄弟节点(如果有的话)311的子节点。在1215处,使与兄弟节点311(如果有的话)相关联的条目211无效和/或将其从数据集210中移除。
[0177]
图13-1以流程图1300图示了用于减小由存取元数据112覆盖的地址范围的大小的方法的实例。图13-1图示了集间降级或拆分操作的实例。在1302处,选择数据集210的存取元数据条目211用于降级。可基于条目211的效用度量213选择条目211用于降级,其可指示由条目211覆盖的地址范围内的不良预取性能。响应于确定条目的效用度量213未能满足一或多个阈值,可以选择条目211进行降级。
[0178]
在1304处,管理逻辑226确定当前与所选条目211相关联的所标识的节点311是否设置在数据结构310的第一层或最低层320-1内。如果是,则流程在1306处继续;否则,流程在1308处继续。在1306处,从数据结构310中移除所标识的节点311,并且使对应的条目211无效和/或从数据集210中移除。在1306处,管理逻辑226还可经配置以将由条目211覆盖的地址范围指定为无跟踪地址范围,这可防止自适应跟踪引擎110响应于随后的跟踪未命中而跟踪地址范围。无跟踪指定可包含在提供给消费者115(诸如预取逻辑515)的存取元数据112中,其可以防止预取逻辑515试图在地址范围内实现预取操作。
[0179]
在1308处,管理逻辑226实施操纵操作以减小所覆盖的地址范围的大小。在图13-1所示的实例中,管理逻辑226实现层间降级操作,其包含在1310处将所标识的节点311拆分成数据结构310的下层320内的一组一或多个节点311(子节点311),该组中的每个节点经配置以覆盖由所标识的节点311覆盖的地址范围的相应子集。在一些实施方案中,节点组311经配置以覆盖所选条目211的地址范围。可替换地,节点组311可经配置以尤其基于所选条目211的存取元数据来覆盖地址范围的所选部分。节点组311可经配置以覆盖被确定为比地址范围的其它部分相对更活跃和/或对应于相对更高的效用度量213的地址范围的部分。可以将节点组311组织成由所标识的节点311引用的子结构312。因此,所标识的节点311可以从被占用转变为开放。
[0180]
在1312处,管理逻辑226配置数据集210的存取元数据条目211,以覆盖由节点组311的相应节点311定义的地址范围(并将所配置的条目211与该组的对应节点311相关联)。在1314处,管理逻辑226用所选条目211的存取元数据112填充所配置的条目211的存取元数据112。在1316处,使所选条目211无效和/或将其从数据集210中移除。
[0181]
图13-2以流程图1301图示了用于减小由与数据结构310的复合节点311相关联的存取元数据条目211覆盖的地址范围的大小的方法的实例。更具体地,图13-2图示了集内降级或拆分操作的实例。在1302处,如本文所公开的,选择数据集210的存取元数据条目211用于降级。在1303处,管理逻辑226确定所选条目211是否与复合节点311相关联。如果否,则流程在1305处继续,在此实施层间降级;否则,流程在1311处继续。
[0182]
在1311处,管理逻辑226将由复合节点311覆盖的地址范围拆分成第一组和第二组,第一组包含要由存取元数据112覆盖的地址范围的子集,第二组包含要从存取元数据112内的覆盖中排除的地址范围的子集。可以至少部分地基于所选条目211的存取元数据来区分第一组与第二组。与第二组地址范围相比,第一组可包含具有相对较高活动级别和/或与相对较高效用度量213相关联的地址范围。管理逻辑226还可经配置以创建节点311,其经配置以表示与复合节点311在数据结构310的相同层320内的第一组的相应地址范围。
[0183]
在1313处,管理逻辑226配置数据集210的条目211以覆盖第一组地址范围(和对应节点311)的相应地址范围。在1315处,用所选条目211的存取元数据填充所配置的条目211。在1317处,管理逻辑226使对应于第二组地址范围的条目211无效和/或将其从数据集210中移除。管理逻辑226还可经配置以从数据结构310中移除复合节点311,并且使所选条目211无效和/或从将其数据集210中移除。
[0184]
图14图示了描述用于合并自适应跟踪引擎的相关存取元数据条目的操作的实例流程图。在1402处,自适应跟踪引擎110的管理逻辑226标识适于合并的数据集210的相关条目211。如本文所公开的,相关条目211是指作为兄弟节点的条目211。更具体地,兄弟或相关条目211包含与节点311相关联的条目211,其a)设置在数据结构310的相同层320内,并且b)具有相同的上层父节点311。适于合并的相关条目211是指具有彼此相似的效用度量213(例如,具有相差小于阈值的效用度量213)的相关条目211。相关条目211可在后台扫描操作中被标识,如本文所公开的。
[0185]
在1404处,管理逻辑226配置目的地条目211以覆盖由所标识的条目211的上层父节点311定义的地址范围。在1406处,相关条目211的存取元数据被合并到目的地条目211的存取元数据中(例如,通过将相关条目211的存取元数据平均、聚集和/或以其它方式组合到目的地条目211中)。在1408处,管理逻辑226从数据结构310中移除上层父节点311的子节点,包含与在1402处标识的相关条目211相关联的节点311(以及相关条目211的子节点,如果有的话)。在1410处,如本文所公开的,使与上层父节点311的子节点相关联的条目211无效和/或将其从数据集210中移除。
[0186]
图15以流程图1500图示了用于实现自适应地址跟踪的设备的方法的进一步实例。在1502处,自适应跟踪引擎110的第一逻辑624配置第一存储器608以存储与数据集210的条目211内的地址空间有关的存取元数据112。
[0187]
在1504处,第一逻辑624响应于与由相应条目211的地址范围覆盖的地址有关的命令201而更新数据集210的相应条目211的存取元数据。响应于与地址202有关的命令201,第一逻辑624可利用搜索逻辑625来查找存取元数据条目211。搜索逻辑625可以在硬件中实现,并且能够至少部分并行地将地址202(和/或其部分)与数据集210的多个条目211进行比较。在1504处,第一逻辑624还可经配置以向诸如预取逻辑515等消费者115提供存取元数据112和/或其部分。预取逻辑515可利用存取元数据112来通知由存取元数据112覆盖的地址范围内的预取操作,并返回指示在相应地址范围内执行的预取操作的效用的反馈204。
[0188]
在1506处,自适应跟踪引擎110的第二逻辑626在第二存储器618内保持数据结构310,数据结构310经配置以定义由在第一存储器608内保持的数据集210的条目211覆盖的地址范围集,数据集210的每个条目211与数据结构310的定义由存取数据集210内的条目211覆盖的地址范围的相应节点311相关联。
[0189]
在1508处,第二逻辑626至少部分地基于数据集210的相应条目211的效用度量来修改由在第一存储器608内保持的存取数据集210覆盖的地址范围集。第二逻辑626可包含管理逻辑226,其改变第二存储器618内的数据结构310,以尤其修改由此定义的地址范围,并且将修改传播到第一存储器608内保持的存取数据集210。管理逻辑226可以重新配置数据集210的存取元数据条目211,以覆盖由改变的数据结构310定义的修改后的地址范围集的相应地址范围。该流程可以继续,第一逻辑624响应于与由修改后的地址范围集的相应地
址范围覆盖的地址202有关的命令201而更新存取元数据211(在1504处),并且接口222将存取元数据112(和/或其部分)提供给消费者115,诸如预取逻辑515,其利用存取元数据112在由各个存取元数据条目211覆盖的地址范围内实现预取操作,并提供与相应条目211的预取效用有关的反馈。
[0190]
图16以流程图1600图示了通过自适应跟踪引擎110的实例实现来适配存取元数据所覆盖的地址范围大小的操作。调整地址范围大小可包含调整由存取元数据112(和/或数据集210的相应条目211)覆盖的地址范围集。在1602处,如本文所公开,自适应跟踪引擎110实现地址跟踪。在1602处,自适应跟踪引擎110的更新逻辑224尤其响应于与由相应条目211覆盖的地址202有关的命令201而捕获、更新和/或以其它方式保持数据集210的相应条目内的存取元数据112。如本文所公开的,由存取元数据条目211覆盖的地址范围集可以由数据结构310定义。在1602处,自适应跟踪引擎110的管理逻辑226响应于跟踪未命中而在数据结构310内创建节点311,且对相应节点311之间的关系进行编码以表示由相应节点311覆盖的地址范围之间的关系。在一些实施方案中,至少部分地基于与由相应条目211覆盖的地址范围内的预取性能有关的反馈204来确定、更新和/或修改数据集210(和/或数据结构310的对应节点311)的相应条目211的效用度量213。因此,在1602处,自适应跟踪引擎110可开发存取元数据配置725,其尤其定义由由此捕获和/或保持的存取元数据112覆盖的地址范围集。在一些实施方案中,数据结构310和数据集210在分离的结构和/或存储器组件内保持。在一些实例中,数据集210的存取元数据条目211在第一存储器608中保持,而数据结构310在第二存储器618中保持。
[0191]
在1604处,自适应跟踪引擎110的管理逻辑226(和/或自适应逻辑726)确定是否评估存取元数据配置725。确定可基于自适应跟踪引擎110是否可尤其基于空闲资源的可用性实施一或多个后台操作、自适应跟踪引擎110是否已接收和/或正实施一或多个前台操作等。可替换地或附加地,该确定可基于时间间隔和/或其它标准(例如,评估和/或调整存取元数据配置725的操作可以周期性地实现,即使不在后台操作中)。在一些实施方案中,适配逻辑726可在1604处确定是否实现优化过程的迭代,这可基于是否已满足优化过程的一或多个终止准则,如本文所公开的。如果1604处的确定是评估存取元数据配置725(例如,实现优化操作),则流程在1606处继续;否则,流程在1602处继续。
[0192]
在1606处,自适应逻辑726量化自适应跟踪引擎110的存取元数据配置725的效用。存取元数据配置725的效用可以由效用元数据723量化和/或在效用元数据723内量化,如本文所公开的。效用元数据723可以结合数据集210(和/或数据结构310的对应节点311)的各个存取元数据条目211的效用度量213。在一些实施方案中,可以基于诸如地址范围大小、活动级别等的一或多个标准对效用度量213进行加权和/或调整。
[0193]
在1608处,自适应逻辑726确定是否修改由自适应跟踪引擎110实现的存取元数据配置725。适配逻辑726可以基于和/或通过使用适配策略来确定是否修改存取元数据配置725。如本文所公开的,适配策略可以定义触发对由存取元数据112覆盖的一或多个地址范围的修改的条件。在一些实施方案中,在存取元数据112经配置以覆盖由数据结构310定义的第一地址范围集的同时监视第一度量213,在适配存取元数据112以覆盖不同于第一地址范围集的第二地址范围集之后(例如,在修改数据结构310以定义第二地址集之后)监视第二度量213,并且至少部分地基于第一度量213和第二度量213,1608可包含以下之一:调整
由存取元数据112覆盖的地址范围集,使得存取元数据112恢复到覆盖第一地址范围集(例如,修改数据结构310以恢复到定义第一地址范围集),用经配置以覆盖第二地址范围集的存取元数据112继续操作,或者调整由存取元数据112覆盖的地址范围集,使得存取元数据112覆盖不同于第一地址范围集和第二地址范围集的第三地址范围集(例如,修改数据结构310以定义第三地址范围集)。
[0194]
可替换地或附加地,在1608处的确定可以基于由自适应跟踪引擎110的配置数据524定义和/或在其内的优化模型。优化模型可以实现优化算法或技术,该优化算法或技术经配置以平衡各个存取元数据配置725的效用与对应的成本,其可以根据资源利用率来量化,如本文所公开的。优化模型可经配置以迭代地收敛到以最小成本产生最佳效用的最佳存取元数据配置725(和/或本地或近似最佳存取元数据配置725)。适配逻辑726可经配置以通过优化模型(根据1604和1608处的判定)迭代地修改存取元数据配置725,直到获得最佳存取元数据配置725或满足优化过程的其它终止准则。如果1608处的确定是修改存取元数据配置725,则流程在1610处继续;否则,流程在1602处继续返回。
[0195]
在1610处,适配逻辑726根据优化模型修改存取元数据配置725(并在1608处确定)。修改可包含但不限于:升级一或多个存取元数据条目211(扩展条目221所覆盖的地址范围)、降级一或多个条目211(缩小条目211所覆盖的地址范围)、移除一或多个条目211等等。管理逻辑226在数据结构310内实现由自适应逻辑726确定的修改,其可包含修改由数据结构310定义的地址范围集。升级所选条目211的地址范围可包含层间合并操作,其中:a)数据集210的条目211经配置以覆盖由所选条目211(用于层间合并的目的地条目211)的上层父节点311定义的地址范围,b)与包含所选条目211的上层父节点311的子节点311相关联的条目211的存取元数据被合并到目的地条目211中,c)从数据结构310中移除子节点311,以及和d)使与子节点311相关联的条目211无效和/或将其从数据集210中移除。可替换地或另外地,升级所选条目211的地址范围可包含层内合并操作,其中a)与所选条目211相关联的节点311被转换为复合节点311,其结合数据结构的同层320内的一或多个兄弟节点311和/或地址范围,b)所选条目211经配置以覆盖由复合节点311定义的扩展地址范围,c)从数据结构310中移除兄弟节点311,以及d)使与兄弟节点311相关联的条目211无效和/或将其从数据集210中移除。降级所选条目211的地址范围可包含层间拆分操作,其中:a)在数据结构310的下一个下层320内创建与所选条目211相关联的节点311的一或多个子节点311,b)数据集210的条目211经配置以覆盖由子节点311定义的地址范围,c)在与子节点311相关联的条目211内复制所选条目211的存取元数据112,以及d)使所选条目211无效和/或将其从数据集210中移除。在层内拆分操作中降级所选条目211的地址范围可包含:a)将与所选条目211相关联的复合节点311拆分成与复合节点311在数据结构310的同层320内的一或多个非复合节点311,b)将所选条目211的存取元数据112导入到与非复合节点311相关联的条目211中,c)从数据结构310中移除复合节点311,以及d)使所选条目211无效和/或将其从数据集210中移除。降级与数据结构310的最低层320-1内的非复合节点311相关联的所选条目211的地址范围可包含:a)从数据结构310中移除节点311,以及b)使所选条目211无效和/或将其从数据集210中移除。在一些实施方案中,降级地址范围还包含在存取元数据112内将地址范围指定为无跟踪,这可防止自适应跟踪引擎110响应于随后的跟踪未命中而跟踪地址范围和/或防止预取逻辑515尝试在无跟踪地址范围内实现预取操作。在1610处实施修改
之后,流程可在1602处继续,其中自适应跟踪引擎110可根据修改后的存取元数据配置725来实施地址跟踪操作。
[0196]
用于自适应地址跟踪的实例系统
[0197]
图17图示了用于实现自适应地址跟踪的实例系统1700。系统1700包含设备1710,其可包含自适应跟踪引擎110和/或用于实现自适应跟踪引擎110的构件,如本文所公开的。图17的描述涉及上述方面,诸如自适应跟踪引擎110,其在多个其它图中(例如,图1-1至5-1和6至8)描绘。系统1700可包含接口1722,尤其用于接收命令201和/或命令201的指示,以存取对应于存储器地址空间的地址202的数据。接口1722可包含电路、逻辑电路、接口电路、接口逻辑、开关电路、开关逻辑、路由电路、路由逻辑、互连电路、互连逻辑、i/o电路、模拟电路、数字电路、逻辑门、寄存器、开关、多路复用器、alu、状态机、微处理器、嵌入式处理器、pim电路、逻辑220、接口222、第一逻辑624、互连105等。
[0198]
系统1700还可包含存储器1708,其可包含但不限于:存储器、存储器装置、存储器组件、存储器电路、存储器阵列、半导体存储器、存储器组、存储器芯片、易失性存储器、ram、dram、sram、sdram、ddr存储器、非易失性存储器、固态存储器、存储器208、第一存储器608、第二存储器618等。
[0199]
在一些方面,系统1700包含用于响应于命令201将存取元数据112存储在存储器1708内的第一组件1720。存取元数据112可以存储在数据集210的条目211中,数据集210的每个条目211经配置以覆盖地址范围集的相应地址范围,并且包括与所覆盖的地址范围内的地址202有关的存取元数据112。第一组件1720可包含但不限于:电路、逻辑电路、存储器接口电路、存储器接口逻辑、开关电路、开关逻辑、路由电路、路由逻辑、存储器互连电路、存储器互连逻辑、i/o电路、模拟电路、数字电路、逻辑门、寄存器、开关、多路复用器、alu、状态机、微处理器、嵌入式处理器、pim电路、逻辑220、更新逻辑224、第一逻辑624、搜索逻辑625、硬件搜索逻辑、硬件搜索引擎等。
[0200]
在一些实施方案中,第一组件1720包含和/或耦合到第二组件1730,用于确定、调整、调谐和/或以其它方式管理由存取元数据112覆盖的地址范围集。第二组件1730可以至少部分地基于指示地址范围集的一或多个地址范围内的预取性能的一或多个度量213来调整由数据集210的条目211中的至少一个覆盖的地址范围的大小。第二组件1730可以向存储器1708写入一或多个位,以调整由数据集211的条目211覆盖的地址范围的大小(例如,可以在条目211的范围元数据214内写入一或多个位)。第二组件1730可包含但不限于:电路、逻辑电路、存储器接口电路、存储器接口逻辑、开关电路、开关逻辑、路由电路、路由逻辑、存储器互连电路、存储器互连逻辑、i/o电路、模拟电路、数字电路、逻辑门、寄存器、开关、多路复用器、alu、状态机、微处理器、嵌入式处理器、pim电路、逻辑220、管理逻辑226、第二逻辑626、适配逻辑726等。
[0201]
在一些方面,系统1700包含预取器1740,其经配置以至少部分地基于相应条目211的存取元数据112来确定由数据集210的相应条目211覆盖的地址范围内的存取模式。预取器1740还可经配置以至少部分地基于所确定的存取模式来预取数据。预取器1740可经配置以预测即将到来的命令201的地址202且预取对应于所预测的地址202的数据。预取器1740可包含但不限于:电路、逻辑电路、存储器接口电路、存储器接口逻辑、开关电路、开关逻辑、路由电路、路由逻辑、存储器互连电路、存储器互连逻辑、i/o电路、模拟电路、数字电路、逻
辑门、寄存器、开关、多路复用器、alu、状态机、微处理器、嵌入式处理器、pim电路、硬件预取器、预取电路、预取逻辑、高速缓存逻辑、步幅预取器、相关预取器、ml预取器、lstm预取器、逻辑220等。
[0202]
第一组件1720可经配置以向诸如预取器1740的消费者115提供数据集210的条目211的存取元数据112。可至少部分地基于由条目211覆盖的地址范围内的预取性能来设置、确定和/或监视与条目211和/或由条目211覆盖的地址范围相关联的度量213。在一些实施方案中,第二组件1730设置、确定和/或监视指示由数据集210的相应条目211内保持的存取元数据112覆盖的地址范围内的预取性能的度量213。度量213可以至少部分地基于来自存取元数据112的一或多个消费者115(诸如预取器1740等)的反馈204。
[0203]
第二组件1730可经配置以至少部分地基于地址范围内的预取性能来调整由数据集210的条目211覆盖的地址范围的大小。第二组件1730可以响应于第一条目211的度量213超过第一阈值而增加由数据集210的第一条目211覆盖的地址范围的大小。相反,第二组件1730可以响应于第一条目211的度量213低于第二阈值而减小由数据集210的第一条目211覆盖的地址范围的大小。
[0204]
在一些实施方案中,第二组件1730经配置以尤其通过操纵与数据结构310内的条目211相关联的节点311来修改由数据集210的条目211覆盖的地址范围集。第二组件1730可经配置以响应于确定第一条目211的度量213在第二条目211的度量213的阈值内而将数据集210的第一条目211与数据集210的第二条目211组合。第二组件1730可经配置以响应于确定所选条目211的度量213低于阈值而将数据集210的所选条目211拆分成两个或两个以上条目211,两个或两个以上条目211中的每一个覆盖比所选条目211所覆盖的地址范围小的地址范围。可替换地或附加地,第二组件1730可以响应于条目211的度量213未能满足阈值而使数据集210的条目211无效。
[0205]
在一些方面,数据结构310包含多个层320,每一层320可对应于多个范围大小中的相应范围大小。数据结构310可包含对应于具有第一范围大小的条目211的第一层320-1和对应于具有大于第一范围大小的第二范围大小的条目211的第二层320-2。第一组件1720(和/或第二组件1730)可经配置以通过数据结构310将地址202映射到覆盖地址202的条目211。第二组件1730可通过数据结构310的多个层320将地址202映射到条目211(和/或数据结构310的节点311),例如从顶层320-n向最底层320-1。数据结构310可包含查找表、映射表、多级映射表、字典树、树、前缀树或基数树中的一或多个。
[0206]
在一些实施方案中,数据集210的条目211在数据结构310的节点311内保持。数据结构310的第一层320-1内的每个节点311可包含第一范围大小的条目211。第二层320-2中的每个节点311可以包括:a)第二范围大小的条目211,或b)对包括数据结构310的第一层320-1内的一或多个节点311的子结构312的引用。接口1722可经配置以接收与地址202有关的命令201的指示,并且作为响应,第一组件1720(和/或第二组件1730)可以搜索数据结构310的第二层320-2以选择具有与地址202匹配的第二标签数据的第二层320-2的节点311。如果所选节点311包含数据集210的条目211,则可以响应于命令201而更新条目211的存取元数据122。可替换地,如果所选节点311引用子结构312,则可搜索子结构312以标识具有与地址202匹配的第一标签数据的第一层320-1的节点311。
[0207]
第二组件1730可以确定指定地址202在由数据集210覆盖的地址范围之外,并且作
为响应,将数据结构310的第一层320-1的第一节点311映射到对应于指定地址202的第一部分的第一标签,第一节点311定义覆盖指定地址的第一范围大小的第一地址范围。数据结构310的第二层320-2的第二节点311可以被映射到对应于指定地址202的第二部分的第二标签,第二节点311引用第一节点311。第二组件可将数据集210的指定条目211与第一节点311相关联,并将指定条目211配置以覆盖由第一节点311定义的第一地址范围。
[0208]
在一些实施方案中,第二组件1730还经配置以组合或合并数据集210的条目组211。第二组件1730可以选择具有满足阈值的度量213的第一范围大小的条目211。所选条目211可以与数据结构310的第一层320-1内的第一节点311相关联,第一节点311在数据结构310的第二层320-2(第二节点311)内具有相同的父节点311。组合所选条目211可包含将第二节点311与数据集210的指定条目211相关联、配置指定条目211以覆盖由第二节点311定义的地址范围、将所选条目211的存取元数据112合并到指定条目211的存取元数据112中、从数据结构310中移除第一节点311,和/或使所选条目211无效。
[0209]
第二组件1730还可经配置以标识具有低于阈值的度量213的数据集210的条目211,所标识的条目211覆盖第二范围大小的地址范围并且由数据结构310的第二层320-2内的指定节点311引用。作为响应,第二组件1730可以在数据结构310的第一层320内创建一组节点311,该组的每个节点311覆盖由指定节点311覆盖的地址范围的相应部分,在对应于该组的相应节点311的条目211内复制所标识的条目211的存取元数据112,和/或配置指定节点311以引用在数据结构310的第一层320内创建的该组节点311。可替换地或附加地,第二组件1730可以标识数据集210的条目211,其具有低于阈值的度量213并且覆盖由数据结构310的第一层320内的节点311定义的地址范围。作为响应,第二组件1730可经配置以使所标识的条目211无效和/或从数据结构310中移除对应节点311。
[0210]
在一些实施方案中,第一组件1720将存取元数据112(例如,数据集210)存储在第一存储器608中,而第二组件1730在第二存储器618中保持数据结构310。第一存储器608可以与第二存储器618不同和/或分离。可替换地,存取元数据112(例如,数据集210)和数据结构310可以在相同的存储器(诸如图2所示的存储器208)中保持。在一些方面,数据集210可以与数据结构310一起存储和/或存储在数据结构310内。例如,数据集210的条目211可以在数据结构310的相应节点311中保持。
[0211]
图18图示了用于实现自适应地址跟踪的实例系统1800。如本文所公开的,系统1800可包含设备1810,其可包含自适应跟踪引擎110和/或用于实现自适应跟踪引擎110的构件。图18的描述涉及上述方面,诸如自适应跟踪引擎110,其在多个其它图中(例如,图1-1至5-1和6至8)描绘。系统1800可包含组件1812,其经配置以通过数据结构310的多个层320内的节点311来表示存储器地址空间的地址范围,数据结构310的多个层320中的每个层310分别对应于多个地址范围大小中的地址范围大小。组件1812可在数据集210的条目211内保持存取元数据112,数据集210的每个条目211与数据结构310的相应节点311相关联并覆盖由相关联节点311表示的地址范围。在一些方面,组件1812还经配置以至少部分地基于与预取性能有关的度量213来修改数据结构310,并且响应于修改数据结构310而更新由数据集210的条目211中的至少一个覆盖的至少一个地址范围。组件1812可包含但不限于:电路、逻辑电路、存储器接口电路、存储器接口逻辑、开关电路、开关逻辑、路由电路、路由逻辑、存储器互连电路、存储器互连逻辑、i/o电路、模拟电路、数字电路、逻辑门、寄存器、开关、多路复
用器、alu、状态机、微处理器、嵌入式处理器、pim电路、逻辑220、更新逻辑224、管理逻辑226、第一逻辑624、第二逻辑626、搜索逻辑625、硬件搜索逻辑、硬件搜索电路、硬件搜索引擎、适配逻辑726、存储器208、存储器1708、第一存储器608、第二存储器618等。
[0212]
在一些方面,系统1800包含接口1722,其用于接收关于与存储器地址空间相关联的命令201的信息(和/或命令201的指示)、向一或多个消费者115(诸如预取器1740)提供存取元数据112,和/或接收与由所提供的存取元数据112覆盖的地址范围内的预取性能有关的反馈204,如本文所公开。组件1812还可经配置以至少部分地基于反馈204来确定与预取性能有关的度量213。在一些实施方案中,组件1812设置、确定和/或监视与由数据结构310的相应节点311表示的地址范围内(和/或由数据集210的相应条目211覆盖的地址范围内)的预取性能有关的度量213。
[0213]
在一些实施方案中,组件1812包含和/或耦合到第一组件1820,用于在第一存储器608内存储、更新和/或保持包括存取元数据112的数据集210。第一组件1820可经配置以响应于与由相应条目211覆盖的地址范围内的地址202有关的命令201(和/或响应于与命令201有关的指示和/或信息)而存储和/或更新数据集210的相应条目211的存取元数据112。第一组件1820还可经配置以将地址202映射到数据集210的条目211(例如,对应于指定地址202的数据集210的查找条目211)。第一组件1820可包含但不限于:电路、逻辑电路、存储器接口电路、存储器接口逻辑、开关电路、开关逻辑、路由电路、路由逻辑、存储器互连电路、存储器互连逻辑、i/o电路、模拟电路、数字电路、逻辑门、寄存器、开关、多路复用器、alu、状态机、微处理器、嵌入式处理器、pim电路、逻辑220、更新逻辑224、第一逻辑624、搜索逻辑625、硬件搜索逻辑、硬件搜索电路、硬件搜索引擎等。
[0214]
在一些方面,组件1812包含和/或耦合到第二组件1830,用于在第二存储器618内保持数据结构310、修改由数据结构310的节点311表示的地址范围集,和/或配置存储在第一存储器608内的数据集210的条目211以覆盖由数据结构310的节点311表示的修改后的地址范围集。第二组件1830可经配置以至少部分地基于与预取性能有关的度量213来修改地址范围集。第二组件1830可经配置以确定和/或监视与由数据结构310的相应节点311表示(和/或由数据集210的相应条目211内保持的存取元数据112覆盖的)的地址范围内的预取性能有关的度量213,并至少部分地基于一或多个地址范围的度量213来修改地址范围集。第二组件1830可包含但不限于:电路、逻辑电路、存储器接口电路、存储器接口逻辑、开关电路、开关逻辑、路由电路、路由逻辑、存储器互连电路、存储器互连逻辑、i/o电路、模拟电路、数字电路、逻辑门、寄存器、开关、多路复用器、alu、状态机、微处理器、嵌入式处理器、pim电路、逻辑220、管理逻辑226、第二逻辑626、适配逻辑726等。
[0215]
在一些方面,组件1812(和/或组件1830)经配置以合并数据结构310的所选节点311。合并所选节点311可包含配置数据结构310的目标节点311以表示跨越由所选节点311中的每一个表示的地址范围的地址范围、配置数据集210的条目211以覆盖由目标节点311表示的地址范围,和/或使与数据集210内的所选节点311相关联的条目211无效。在一些实施方案中,与所选节点311相关联的条目211的存取元数据112可被组合到与目标节点311相关联的条目211的存取元数据112中。
[0216]
在一些实例中,组件1812(和/或组件1830)合并在数据结构310的第一层320-1内选择的节点311。可以至少部分地基于由所选节点311覆盖的地址范围内的预取性能来选择
节点311。所选节点311可合并到数据结构310的第二层320-2内的父节点311中,第二层320-2在由数据结构310定义的层次结构中高于第一层320-1。合并所选节点311可包含配置与父节点311相关联的数据集210的条目211以覆盖由父节点311表示的地址范围、将与所选节点311相关联的条目211的存取元数据112合并到所配置的条目211中,和/或用于使与数据结构310内的父节点311的子节点311相关联的数据集210的条目211无效。
[0217]
组件1812(和/或组件1830)还可经配置以将数据结构310的节点311拆分成一组两个或两个以上节点311。可至少部分地基于由节点311表示的地址范围内的预取性能来选择节点311。拆分所选节点311可包含配置一组两个或两个以上节点311以表示由所选节点表示的地址范围的相应子集、配置数据集210的条目211以覆盖由两个或两个以上节点311的组中的每个节点311表示的地址范围,和/或使与数据集210内的所选节点311相关联的条目211无效。此外,与所选节点311相关联的条目211的存取元数据112可以在与两个或两个以上节点311的组中的每个节点311相关联的条目211内被复制。在一些实施方案中,可以在数据结构310的下层320内设置的子结构312内创建两个或两个以上节点311的组,下层320对应于比包括所选节点310的数据结构310的上层320的地址范围大小更小的地址范围大小。所选节点311可被指定为数据结构310内的两个或多个节点311的组中的每个节点311的父节点311。可替换地,可以在数据结构310的与所选节点311相同的层320内创建两个或多个节点311的组,并且可以将所选节点311的父节点311指定为数据结构310内的两个或多个节点311的组中的每个节点311的父节点311。
[0218]
在一些方面,组件1812(和/或第二组件1830)进一步经配置以至少部分地基于由选定节点311表示的地址范围内的预取性能而从数据结构310移除选定节点311。移除所选节点311可包含使与所选节点311相关联的数据集310的条目211无效。在一些实施方案中,移除所选节点311还包含将由所选节点311表示的地址范围与无跟踪指示符相关联,该无跟踪指示符经配置以防止随后创建表示数据结构310内的地址范围的一或多个节点311(和/或防止创建包括覆盖数据集210内的地址范围的存取元数据112的条目211)。
[0219]
在一些实施方案中,组件1812(和/或第二组件1830)经配置以响应于确定指定地址202未被数据集210的条目211覆盖而将节点311添加到数据结构310的第一层320-1。节点311可经配置以表示包含指定地址202的地址范围。添加节点311还可包含配置数据集210的第一条目211以覆盖由节点311表示的地址范围。添加节点311还可包含在节点311与数据结构310的至少一个上层320内的一或多个父节点311之间建立一或多个父子关系。数据结构310可经配置以在数据结构310的各个层320内的节点310之间建立父子关系。节点311之间的父子关系可以定义和/或对应于由节点311表示的地址范围之间的关系。在一些方面,父节点311的每一子节点311可经配置以表示由父节点311表示的地址范围的相应子集。将节点311添加到数据结构310的第一层320-1可包含在节点311与数据结构310的第二层320-2内的父节点311(指定节点311)之间建立父子关系。在数据结构320定义的层次结构中,第二层320-2可以与第一层320-1相邻。第二层320-2可以对应于比第一层320-1的地址范围大小更大的地址范围大小。由节点311表示的地址范围可以是由指定节点311表示的地址范围的子集。
[0220]
在一些方面,组件1812(和/或第二组件1830)还经配置以将节点311从数据结构310的第一层320-1升级到第二层320-1。可以至少部分地基于由节点311表示的地址范围内
的预取性能来选择节点311用于升级。升级节点311可包含配置数据集210的条目211以覆盖由指定节点311表示的地址范围和/或将条目211与指定节点311(数据结构310的第二层320-2内的节点311的父节点)相关联。在一些实施方案中,升级节点311包含修改第一条目211以覆盖由指定节点311表示的较大地址范围。可替换地,数据集210的第二条目211可经配置以覆盖由指定节点311表示的地址范围。升级节点311还可包含将第一条目211的存取元数据112合并到第二条目211的存取元数据112中和/或使数据集210内的第一条目211无效。
[0221]
结论
[0222]
尽管以特定于某些特征和/或方法的语言描述了用于自适应地址跟踪的实施方案,但是所附权利要求的主题不必限于所描述的特定特征或方法。相反,作为用于自适应地址跟踪的实例实施方案公开了特定特征和方法。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献