CN118093020A - 数据预取方法、装置、电子设备、电子装置和介质 - Google Patents
数据预取方法、装置、电子设备、电子装置和介质 Download PDFInfo
- Publication number
- CN118093020A CN118093020A CN202410391499.7A CN202410391499A CN118093020A CN 118093020 A CN118093020 A CN 118093020A CN 202410391499 A CN202410391499 A CN 202410391499A CN 118093020 A CN118093020 A CN 118093020A
- Authority
- CN
- China
- Prior art keywords
- memory
- prefetcher
- level
- performance data
- average access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 230000015654 memory Effects 0.000 claims abstract description 280
- 230000008569 process Effects 0.000 claims description 16
- 230000001105 regulatory effect Effects 0.000 claims description 10
- 230000016571 aggressive behavior Effects 0.000 claims description 7
- 230000001276 controlling effect Effects 0.000 claims description 7
- 230000001960 triggered effect Effects 0.000 claims description 7
- 230000002829 reductive effect Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 13
- 101150015860 MC1R gene Proteins 0.000 description 11
- 102100034216 Melanocyte-stimulating hormone receptor Human genes 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 230000004913 activation Effects 0.000 description 9
- 238000013519 translation Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000000630 rising effect Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 239000000306 component Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开的实施例提供了一种数据预取方法、装置、电子设备、电子装置和介质。根据本公开的实施例的数据预取方法适用于电子设备,其包括内存、缓存和预取器。该方法包括:获取表征内存的使用率的性能数据;根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量;以及根据调节后的激进级别进行预取操作。
Description
技术领域
本公开的实施例涉及一种数据预取方法、装置、电子设备、电子装置和介质。
背景技术
现代多发射的高性能CPU(中央处理器,Central Processing Unit)中包括至少一个处理器核心(CPU Core,或者称为CPU核、处理器核),每个CPU核可以包括多个执行单元来执行指令。现有CPU架构中,程序指令与数据一般保存在DRAM内存(动态随机存取存储器,Dynamic Random Access Memory)中。CPU核运行频率远远高于DRAM内存运行频率,因此,从内存获取数据与指令需要上百个CPU核的时钟周期,这必然会造成CPU核由于等待相关指令与数据而空转,导致性能下降。针对于此,现代高性能CPU通过设置多级缓存架构来保存最近被访问的数据,同时利用预取器发现CPU进行数据访问的规律,从而提前预取即将被访问的数据、指令到缓存中。
然而,过多不精准的预取请求会导致访存延迟变长和缓存污染增加等问题,这些问题会对CPU的性能产生较大的负面影响,最终导致运行性能下降。这一问题对于支持SMT(同步多线程,Simultaneous Multithreading,又称并发多线程)的CPU的影响更加明显。
发明内容
本公开的实施例提供了一种数据预取方法、装置、电子设备、电子装置和介质,用于根据表征内存的使用率的性能数据,调节预取器进行预取的激进级别,从而使得预取器能够根据设置的激进级别,来动态地控制预取产生的条件,由此提高预取的准确率和覆盖率,进而提高电子设备的整体运行性能。
根据本公开的一方面,提供了一种数据预取方法。该方法适用于电子设备,电子设备包括内存、缓存和预取器,该方法包括:获取表征内存的使用率的性能数据;根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量;以及根据调节后的激进级别进行预取操作。
根据本公开的一些实施例,性能数据包括以下中的一种或多种:内存的平均访问延迟;电子设备的未命中状态处理寄存器的占用率;内存的带宽使用率;以及电子设备的片上互联网络中队列的占用率。
根据本公开的一些实施例,在性能数据包括内存的平均访问延迟的情况下,获取表征内存的使用率的性能数据包括:获取内存在时间窗口之前的历史平均访问延迟时间;获取内存在时间窗口内的当前平均访问延迟时间;以及计算历史平均访问延迟时间和当前平均访问延迟时间的加权平均值,其中,加权平均值作为内存的平均访问延迟。
根据本公开的一些实施例,电子设备内配置有时间窗口计数器、延迟计数器、回填计数器以及历史延迟计数器,获取表征内存的使用率的性能数据包括:利用时间窗口计数器记录时间窗口,其中,当时间窗口计数器达到设定阈值时,触发计算平均访问延迟并根据平均访问延迟来调节激进级别;利用延迟计数器记录时间窗口内未命中缓存的总延迟时间;利用回填计数器记录时间窗口内未命中缓存的访问回填个数;利用历史延迟计数器记录时间窗口之前的历史平均访问延迟时间;以及基于时间窗口内未命中缓存的总延迟时间以及访问回填个数计算当前平均访问延迟时间,以及对当前平均访问延迟时间和历史平均访问延迟时间进行加权平均,计算得到平均访问延迟。
根据本公开的一些实施例,根据性能数据调节预取器的激进级别包括:在平均访问延迟小于第一阈值的情况下,增加预取器的激进级别,以使得增加对于内存的预取量;以及在平均访问延迟大于第二阈值的情况下,降低预取器的激进级别,以使得减少对于内存的预取量。
根据本公开的一些实施例,电子设备同步处理多个线程,获取表征内存的使用率的性能数据包括:针对多个线程中的每个线程,分别获取表征内存的使用率的性能数据;以及根据性能数据调节预取器的激进级别包括:针对每个线程,根据各自的性能数据分别调节预取器的激进级别,其中,预取器中针对各个线程分别设置激进级别。
根据本公开的一些实施例,利用时间窗口计数器记录时间窗口包括以下之一:对于电子设备的处理器时钟周期,每个时钟周期计数加一;对于电子设备的缓存访问,每次访问计数加一;对于电子设备的缓存访问未命中事件,每次缓存访问未命中计数加一;或者对于预取器的预取请求,每个发送预取请求计数加一。
根据本公开的一些实施例,缓存包括多级缓存,未命中缓存为未命中多级缓存的最后一级缓存。
根据本公开的另一方面,提供了一种电子设备。该电子设备包括处理器核心、内存、缓存和预取器,该处理器核心配置成:获取表征内存的使用率的性能数据;以及根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量。该预取器配置成根据调节后的激进级别进行预取操作。
根据本公开的又一方面,提供了一种数据预取装置。该数据预取装置包括:获取单元,配置成获取表征内存的使用率的性能数据;调节单元,配置成根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量;以及预取单元,配置成根据调节后的激进级别进行预取操作。
根据本公开的又一方面,提供了一种电子装置。该电子装置包括处理器和存储器,存储器中存储有计算机可读代码,计算机可读代码在由处理器执行时使得处理器执行根据本公开实施例的数据预取方法的步骤。
根据本公开的又一方面,提供了一种非暂时性计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令在被处理器执行时,使得处理器执行根据本公开实施例的数据预取方法的步骤。
利用本公开实施例提供的数据预取方法、装置、电子设备、电子装置和介质,能够根据表征内存的使用率的性能数据,调节预取器进行预取的激进级别,从而使得预取器能够根据设置的激进级别,来动态地调节预取产生的条件,提高预取的准确率和覆盖率,进而提高电子设备的整体运行性能。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种数据预取器进行训练与预取的流程图;
图2示出了根据本公开一些实施例的数据预取方法的示意性流程图;
图3示出了根据本公开一些实施例的调节预取器激进级别的示意图;
图4示出了根据本公开一些实施例的针对SMT调节预取器激进级别的示意图;
图5示出了根据本公开一些实施例的电子设备的示意性框图;
图6示出了根据本公开一些实施例的数据预取装置的示意性框图;
图7示出了根据本公开一些实施例的电子装置的示意性框图;
图8示出了根据本公开一些实施例的计算机可读存储介质的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
此外,如本公开和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
本公开中使用了流程图来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。
可以理解的是,本文中涉及的专业术语、名词等描述具有本领域技术人员所公知的含义。
随着人工智能等更广泛的通用计算场景发展,对于处理器芯片的算力、处理效率、带宽等方面均提出了更高的要求。如何在软件、硬件方面提供高性能的电子设备成为重要研究方向。
本公开的至少一些实施例可能涉及的术语的解释如下。
电子设备通常包括一个或多个处理器核心(CPU Core)以及多级的缓存,在多级缓存的架构中,一级(L1)缓存存储器的访问速度最快,但是容量最小,通常设置在处理器核心内;最后一级(LLC,一般为第三级)缓存存储器容量最大,访问速度最慢,通常由多个处理器核心共享;二级(L2)缓存存储器的访问速度和容量都介于L1缓存存储器与LLC缓存存储器之间,通常也设置在处理器核心内。
数据预取(Data Prefetch):在CPU架构中,程序指令与数据可以保存在动态随机存取存储器(Dynamic Random Access Memory,DRAM)中。处理器核心的运行频率远远高于DRAM内存的运行频率,因此,从内存获取数据与指令需要上百个处理器核心的时钟周期,使得处理器核心由于等待相关指令与数据而空转,造成性能损失。因此,现代高性能电子设备都包含多级缓存架构来保存最近被访问的数据,同时利用预取器发现CPU的数据访问规律,以提前预取即将被访问的数据、指令到缓存中。
预取器(Prefetcher):用于预取指令的预取器被称为指令预取器;用于预取数据的预取器被称为数据预取器。例如,数据预取器可以划分为一级数据预取器(也即,将目标数据预取到第一级缓存存储器(L1 Cache)中的数据预取器),二级数据预取器(也即,将目标数据预取到第二级缓存存储器(L2Cache)中的数据预取器),末级(Last Level)数据预取器(也即,将目标数据预取到最后一级缓存存储器(LLC Cache)中的数据预取器)等。
作为示例,图1示出了一种数据预取器进行训练与预取的流程图。图1所示的预取器为第一级预取器,也即,将目标数据或指令预取到第一级缓存存储器中的预取器。此外,图1所示的预取器使用虚拟地址对预取器进行训练。
如图1所示,预取器通过以下的步骤S11-步骤S16进行训练与预取。
步骤S11:预取器接收来自CPU核的至少部分(例如所有)的访问请求(例如,历史访问请求)的虚拟地址及其他属性,利用上述访问请求(例如,历史访问请求)的虚拟地址及其他属性进行训练,以获取CPU核的访问规律,并基于上述访问规律形成预取请求。
步骤S12:通过地址翻译器101将预取请求的预取虚拟地址翻译为预取物理地址。基于预取物理地址确定该预取请求的目标数据或指令是否存在于第一级缓存存储器中。如果该预取请求的目标数据或指令存在于第一级缓存存储器中,则丢弃该预取请求。对应地,针对该预取请求,无需执行下面的步骤S13-步骤S16。
步骤S13:如果该预取请求的目标数据或指令不存在于第一级缓存存储器,则基于该预取物理地址向第二级缓存存储器获取所需预取的预取对象(例如,目标数据或指令)。例如,向未命中地址缓存存储器(MAB)102申请一个存储项,并将该存储项分配给上述预取请求。
步骤S14:未命中地址缓存存储器102基于该存储项向下一级的缓存存储器(例如,第二级缓存存储器)请求该目标数据或指令。
步骤S15:下一级的缓存存储器获取该目标数据或指令,并将该目标数据或指令返还给未命中地址缓存存储器102。
如图1所示,在预取请求的目标数据或指令存储在第二级缓存存储器中的情况下,第一级缓存存储器从第二级缓存存储器中获取数据预取请求的目标数据或指令。在预取请求的目标数据或指令不存储在第二级缓存存储器中的情况下,第二级缓存存储器可以从位于第二级缓存存储器下一级的存储器(例如,最后一级缓存存储器或内存)获取该预取请求的目标数据或指令。例如,位于第二级缓存存储器下一级的存储器可以是第三级缓存存储器(例如,最后一级缓存存储器,Last Level Cache)或者内存(例如,DRAM)。
步骤S16:未命中地址缓存存储器102在收到将该目标数据或指令后,将该目标数据或指令放入至第一级缓存存储器中,以完成预取操作。
需要说明的是,在预取器进行训练与预取的同时,CPU核还可以进行读取数据或指令的操作,以执行相关线程的处理。对应地,为方便描述,图1还示出了CPU核读取数据或指令的流程的部分。例如,CPU核读取数据或指令的流程包括以下步骤。
步骤S10:CPU核输出访问请求的目标数据/指令的虚拟地址至地址翻译器101(例如,地址翻译流水线),地址翻译器101将上述虚拟地址翻译为物理地址,然后,CPU核确定该访问请求的目标数据/指令是否在第一级缓存存储器中。
例如,如果访问请求的目标数据或指令存在于第一级缓存存储器中,则从第一级缓存存储器取出访问请求的目标数据或指令;如果访问请求的目标数据或指令不存在于第一级缓存存储器中,则向未命中地址缓存存储器(MAB)申请一个存储项,并将该存储项分配给上述访问请求。未命中地址缓存存储器基于该存储项向下一级的缓存存储器(例如,第二级缓存存储器,L2 Cache)请求该访问请求的目标数据或指令。下一级的缓存存储器获取该访问请求的目标数据或指令,并将该访问请求的目标数据或指令返还给未命中地址缓存存储器102。然后,未命中地址缓存存储器将该访问请求的目标数据或指令写入至第一级缓存存储器中。然后,第一级缓存存储器将访问请求的目标数据或指令提供给CPU核以供CPU核完成读取数据或指令的操作。
在高性能CPU中,对于数据/指令的虚拟地址的预取往往与正常的数据/指令读取共享地址翻译器/地址翻译流水线。在高频率高性能CPU中,该地址翻译流水线可能是多级的,而由于预取操作的重要性和优先级均低于CPU读取数据或指令的重要性和优先级,因此,一个预取操作可能需要等待多个时钟周期才能够进入地址翻译流水线。同时由于地址翻译的多个流水时钟周期,这样一个预取需要多个时钟才能够发给下一级缓存。在许多情况下,预取操作是有时效性的,相对应的CPU核访问请求往往很快就会发生,上述地址翻译造成的时延往往会造成预取数据过晚到达第一级缓存存储器,从而无法完全避免缓存未命中(Cache Miss)。
在许多高性能CPU中,未命中地址缓存存储器(MAB)的存储数据量决定了同时错过第一级缓存存储器的请求的数量,因此,未命中地址缓存存储器(MAB)是相对稀缺的资源。在未命中地址缓存存储器已满的情况下,一个新的请求会被拒绝,然后需要再重新走一遍地址翻译流水线后,重新确定可以分配未命中地址缓存存储器的存储项。这会进一步增加对于缓存存储器预取的时延,降低系统的有效性。
预取性能指标(Prefetch Metrics):预取性能指标是评价预取器进行预取性能的标准,其可以包括准确率(Accuracy),覆盖率(Coverage)以及延迟率(Lateness)。Accuracy是预取中正确的数量与预取总数的比值;Coverage是指Demand请求(程序中访存指令产生的请求)命中了预取数据的数量与Demand请求总数的比值;Lateness是指预取正确但是发出过晚的数量与预取总数的比值。Accuracy和Coverage往往很难同时兼顾。
预取激进级别(Prefetcher Aggressiveness):预取器进行预取的预取激进级别越高,则产生预取的条件越松,同时产生的预取数量越多;预取器进行预取的预取激进级别越低,则产生预取的条件越严格,同时产生的预取数据量也越少。通常来讲,针对同一预取器而言,设置的激进级别越高,由于其预取的条件宽松且一次可以预取的数量也较多,从而能够相对保证预取的覆盖率,然而由此消耗的处理器资源以及内存带宽就越多,这也将不可避免的降低预取的准确性;另一方面,针对同一预取器而言,设置的激进级别越低,由于其预取的条件严格且一次可以预取的数量也较少,从而能够相对保证预取的准确率,减少内存带宽占用,然而这也将不可避免的降低预取的覆盖性。
并发多线程(Simultaneous Multithreading,SMT)技术(也称为同步多线程)是一个提高CPU整体性能的重要技术。它利用高性能CPU核的多发射、乱序执行等机制,来同时执行多个线程的指令,这样一个物理CPU核呈现给软件、操作系统是多个虚拟的CPU核。现代多发射的高性能CPU核在执行单线程时,它内部的多个执行单元及硬件资源在绝大部分时间无法被充分利用;当该线程由于某些原因(比如L2缓存Miss(未命中)时)运行停顿时,硬件执行单元只能空转,这些都造成硬件资源的浪费、降低性能功耗比。相比较地,在SMT模式下,当一个线程运行停顿时,其他线程仍然能够运行,这提高了硬件资源的利用率,从而提高了CPU核的多线程吞吐量、整体性能及性能功耗比。需要注意的是,由于要和其他线程共享CPU核资源,一个线程运行在SMT下的性能往往低于其单线程模式下的性能。根据支持的最大活跃线程的个数,SMT可以被称为SMT 2(最多两个活跃线程)、SMT 4(最多四个活跃线程)等等。为便于描述,能够实施SMT技术的电子设备可以描述为SMT电子设备或SMT处理器等。
在SMT的情况下,访存子系统,各级Cache(L1、L2、LLC)以及内存都需要同时处理来自于多个线程的Demand请求以及预取请求,每线程可用的缓存容量将会大幅减少,访问内存的压力也会成倍增加。这种情况在SMT4下更加严重。预取器进行预取的过程中,过多不精准的预取请求会导致访存延迟变长和缓存污染增加等问题,这些预取器性能下降问题会对CPU的性能产生较大的负面影响,最终导致性能下降。这一问题对于支持SMT的CPU的影响更加明显。
由此,如何动态地调节预取器的激进级别,从而兼顾预取器的准确率和覆盖率,从而提高预取性能,变得尤为重要。
针对以上问题,本公开的实施例提出了一种数据预取方法、装置、电子设备、电子装置和介质,能够根据表征内存的使用率的性能数据,调节预取器进行预取的激进级别,从而使得预取器能够根据设置的激进级别,来动态地调节预取产生的条件,提高预取的准确率和覆盖率,进而提高电子设备的整体运行性能。
根据本公开实施例提供的数据预取方法适用于电子设备,该电子设备可以包括内存、缓存和预取器。例如,该内存可以是指上述DRAM内存。缓存可以是指多级缓存架构,作为示例,可以是包括三级缓存存储器的缓存架构。预取器可以是指任意类型的预取器,作为示例,可以是指步长预取器(Stride Prefetcher),此外,预取器可以是第一级缓存预取器或者任意级缓存预取器,在此不作限制,进一步地,预取器的数目可以是一个或多个,根据本公开实施例的数据预取方法可以针对不同的预取器分别设置激进级别或者针对两个或更多个预取器设置相同的激进级别。此外,可以理解的是,尽管表述为数据预取方法,本文提及的方法能够适用于数据预取器以及指令预取器两者。
具体的,根据本公开实施例提供的方法包括:获取表征内存的使用率的性能数据;根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量;以及根据调节后的激进级别进行预取操作。
作为一种实现方式,上述电子设备可以是同步多线程(SMT)处理器,即,能够在一个操作周期内,同时执行来自多个线程的指令。
下面将结合附图对本公开的数据预取方法进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的附图标记表示。
图2示出了根据本公开一些实施例的数据预取方法的示意性流程图,该方法包括步骤S101-S103。
步骤S101:获取表征内存的使用率的性能数据;
步骤S102:根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量;以及
步骤S103:根据调节后的激进级别进行预取操作。
针对电子设备中的预取器,为了保证准确性,可以控制预取器发出较少的预取请求,例如通过设置较为严格的预取条件,然而这将不可避免的损失预取覆盖率。如果设置使得产生较多的预取请求以提高覆盖率,则准确率将下降,并且,不可避免的增加访存压力,这使得预取延迟增加。特别地,在SMT的情况下,访存子系统,各级Cache(L1、L2、LLC)以及内存都需要同时处理来自于多个线程的Demand请求以及预取请求,每线程可用的缓存容量会大幅减少,访问内存的压力会成倍增加,这种情况在SMT 4下更加严重。过多不精准的预取请求会导致访存延迟变长和缓存污染增加等问题,这些问题会对CPU的性能产生较大的负面影响,最终导致性能下降。在SMT下动态调节预取器的激进程度,就显得尤为重要了。
针对以上预取特性,本公开提出根据表征内存的使用率的性能数据来对预取器的激进级别进行动态地调整,这是由于内存的使用率的性能数据能够反映出预取的状态,如果内存的使用率较高,即,对内存的访问、预取操作处于相对较高水平,内存带宽占用率增加,这将使得预取的准确率下降,预取延迟增加,在这种情况下,可以调整使得预取条件更严格,以减少预取操作对内存的访问;如果内存的使用率较低,即,对内存的访问、预取操作处于相对较低水平,内存带宽占用率较低,预取延迟较小,但这将使得预取的覆盖率下降,在这种情况下,可以调整使得预取条件更宽松,以增加预取操作对内存的访问。
根据本公开的一些实施例,上述性能数据包括以下中的一种或多种:内存的平均访问延迟;电子设备的未命中状态处理寄存器的占用率;内存的带宽使用率;以及电子设备的片上互联网络中队列的占用率。
作为示例,内存的平均访问延迟可以体现为针对缓存进行数据预取时在一段时间窗口内的平均访问延迟。如果访问延迟处于较高水平,则表明内存带宽占用率增加,如果访问延迟处于较低水平,则表明内存带宽占用率较为宽松,有能力进行更多的预取操作。关于获取内存的平均访问延迟的具体步骤,将在下文结合附图进行详细的描述。
作为示例,电子设备的未命中状态处理寄存器(Miss-status HandlingRegisters,MSHR)是用来记录每一项未完成的Cache Miss事件,其记录的信息通常包括地址、线程标识等信息。MSHR的占用率可以表征内存的使用率,如果MSHR的占用率较高,则能够反映出预取器的Cache Miss事件较多,即,预取准确性下降,此时的内存的使用率处于相对较高水平。作为一种实现方式,可以在电子设备中新增硬件来统计MSHR在一段时间内的平均占用率,或者,也可以在MSHR Entry中增加计数器来记录MSHR在一段时间内的平均占用率。
作为示例,可以利用电子设备中的内存控制器提供DRAM内存的带宽使用率,以作为调节预取器激进级别的性能数据。作为示例,可以由片上互联网络给出统计的占用率,以作为调节预取器激进级别的性能数据。
根据本公开实施例的方法中,能够根据获取的性能数据来动态地调整预取器的激进级别,从而控制预取器产生预取的置信度条件以及预取数量。激进级别调整的逻辑为:如果性能数据表示内存的使用率较高,即,对内存的访问、预取操作处于相对较高水平,内存带宽占用率增加,这将使得预取的准确率下降,预取延迟增加,在这种情况下,可以调整使得预取条件更严格,以减少预取操作对内存的访问;如果性能数据表示内存的使用率较低,即,对内存的访问、预取操作处于相对较低水平,内存带宽占用率较低,预取延迟较小,但这将使得预取的覆盖率下降,在这种情况下,可以调整使得预取条件更宽松,以增加预取操作对内存的访问。
作为一种实现方式,接下来将描述在性能数据包括内存的平均访问延迟的情况下,获取内存的平均访问延迟的具体过程。
根据本公开的一些实施例,获取内存的平均访问延迟包括:获取内存在时间窗口之前的历史平均访问延迟时间;获取内存在时间窗口内的当前平均访问延迟时间;以及计算历史平均访问延迟时间和当前平均访问延迟时间的加权平均值。该计算得到的加权平均值作为内存的平均访问延迟。具体的,根据加权平均值来调整预取器的激进级别。
根据本公开的一些实施例,为了获取平均访问延迟,可以对CPU的架构做一些改进,例如,在电子设备内配置一些计数器。根据本公开的一些实施例,电子设备配置有时间窗口计数器、延迟计数器、回填计数器以及历史延迟计数器,具体的,获取表征内存的使用率的性能数据包括:利用时间窗口计数器记录时间窗口,其中,当时间窗口计数器达到设定阈值时,触发计算平均访问延迟并根据平均访问延迟来调节激进级别;利用延迟计数器记录时间窗口内未命中缓存的总延迟时间;利用回填计数器记录时间窗口内未命中缓存的访问回填个数;利用历史延迟计数器记录时间窗口之前的历史平均访问延迟时间;以及基于时间窗口内未命中缓存的总延迟时间以及访问回填个数计算当前平均访问延迟时间,以及对当前平均访问延迟时间和历史平均访问延迟时间进行加权平均,计算得到平均访问延迟。
作为示例,可以在CPU内新增时间窗口计数器,用于进行CPU时钟周期(Cycle)的计数,例如,每个时钟周期计数加一。如果到达时间间隔阈值,则进行预取器激进级别调整,并将时间窗口计数器清零。可以理解的是,时间窗口计数器用于作为预取器激进级别调整的触发条件,每次达到设置的时间窗口阈值,将触发一次计算平均访问延迟,并根据计算得到的平均访问延迟来调整预取器激进级别。
可以理解的是,本文中描述的调整预取器激进级别可以是增加激进级别、降低激进级别,或者也可以是保持当前激进级别。
作为其他实现方式,时间窗口计数器不仅可以使用Cycle进行计数,也可以使用缓存访问(Cache Access)的次数,即,每次访问计数加一;或者,可以使用缓存访问未命中事件(Cache Miss),即,每次缓存访问未命中计数加一;或者,也可以使用预取器的预取请求(Prefetch Sent)事件进行计数,即,每个发送预取请求计数加一。可以理解的是,时间窗口计数器也可以采用其他的计数触发条件,在此不再一一列举。
作为示例,可以在CPU内新增延迟计数器,用于统计一个时间窗口内,访问的平均延迟。此外,还可以在MSHR Entry中新增时间戳域,在Cache Miss时,将当时的时间戳写入到MSHR中的新增时间戳域。当一笔Cache Miss的请求数据回填时,使用当时的时间减去MSHR中的时间戳,得到这笔访问的延迟时间间隔,并将其累加到延迟计数器上,每次时间窗口计数器到达阈值时延迟计数器的数据清零。
根据本公开的一些实施例,上文提及的电子算设备中的缓存可以是多级缓存架构,例如,包括L1 Cache、L2 Cache以及LLC Cache,作为示例,延迟计数器记录的未命中缓存(Cache Miss)为未命中多级缓存的最后一级缓存,即,LLC Miss。作为其他的示例,也可以是L1 Miss或者L2 Miss。可以理解的是,由于LLC Cache最接近内存,相比于L1 Miss或者L2 Miss,记录LLC Miss更能反映内存的使用率情况。
作为示例,可以在CPU内新增回填计数器,用于统计一个时间窗口内,Cache Miss访问回填的总数量,当一笔Cache Miss的请求数据回填时,回填计数器加一,每次时间窗口计数器到达阈值时回填计数器的数据清零。
作为示例,可以在CPU内新增历史延迟计数器,用于保存过去各个时间窗口内计算的平均延迟。
具体的,在时间窗口计数器到达计数阈值(例如,记录达到N个CPU时钟周期)时,利用延迟计数器除以回填计数器可以得到当前窗口的当前平均访问延迟时间,然后,对当前平均访问延迟时间和历史延迟计数器记录的历史平均访问延迟时间进行加权平均,可以计算得到平均访问延迟。作为示例,当前平均访问延迟时间和历史平均访问延迟时间的权重值可以设置为相同。此外,可以利用当前计算得到的新的平均访问延迟更新至历史延迟计数器,作为下一次计算过程中使用的历史平均访问延迟时间。
根据以上过程,能够获得固定时间窗口内的平均访问延迟,然后接下来可以根据平均访问延迟来调节预取器的预取激进级别。预取器根据激进级别,调节预取产生的过程,提高预取的准确率/覆盖率,进而提高CPU的整体性能;
根据本公开的一些实施例,根据性能数据调节预取器的激进级别包括:在平均访问延迟小于第一阈值的情况下,增加预取器的激进级别,以使得增加对于内存的预取量;以及在平均访问延迟大于第二阈值的情况下,降低预取器的激进级别,以使得减少对于内存的预取量。
作为示例,第一阈值也可以称为上升阈值,例如,可以设置为等于80ns,第二阈值也可以称为下降阈值,例如,可以设置为等于120ns。
图3示出了根据本公开一些实施例的调节预取器激进级别的示意图。首先,时间窗口计数器每个Cycle加一,当时间窗口计数器达到设定阈值时,开始进行预取器激进程度的调节。然后,可以根据延迟计数器和回填计数器计算当前时间窗口内Cache Miss的当前平均访问延迟,将(当前窗口平均访问延迟+历史访问延迟计数器)/2的值更新到历史访问延迟计数器,并将其与设置的上升阈值和下降阈值进行比较,以用于调整预取器的激进级别。如果,大于下降阈值,则降低预取器的激进级别;如果小于上升阈值,则提高预取器的激进级别。
总得来说,预取器激进级别调节的过程可以包括:一方面,如果计算得到的CacheMiss的平均访问延迟的时间大于下降阈值(120ns),则表示当前预取访问延迟较高,预取准确度下降,为了避免过多不精准的预取请求导致访存延迟变长和污染缓存数据增加等问题,由此可以降低预取器的激进级别,从而使得预取器产生条件更严格,例如,要求更高的置信度条件,并且适当减少一次性预取的个数,从而减少内存访问压力,提高预取准确度;另一方面,如果计算得到的Cache Miss的平均访问延迟的时间小于上升阈值(80ns),则表示当前预取访问延迟较低,即,内存使用率较低,能够进行更多的访问操作,由此可以提高预取器的激进级别,从而使得预取器产生条件更宽松,例如,要求更低的置信度条件,并且适当增加一次性预取的个数,从而提高预取覆盖率。作为另一方面,如果计算得到的CacheMiss的平均访问延迟位于上升阈值与下降阈值之间,可以保持当前的激进级别。
以预取器为Stride预取器作为示例,表1示出了Stride预取器激进级别示例表:
表1
激进级别 | 预取产生条件 | 预取数量 |
0 | Confidence>=6 | 1 |
1 | Confidence>=5 | 2 |
2 | Confidence>=4 | 2 |
3 | Confidence>=3 | 3 |
4 | Confidence>=2 | 3 |
作为示例,对于Stride预取器,初始激进级别可以设置为2,即,产生预取的置信度条件为置信度(Confidence)大于等于4,且一次性预取数量最多为2个。然后,可以参考结合图3描述的过程来调整Stride预取器的激进级别,激进级别与置信度条件以及预取数量可以参考表1所示出的数据。
作为一些实施方式,根据激进级别对预取器参数的调整包括但不局限于产生预取的置信度条件和每次产生预取的个数,还可以调整预取的地址距离等参数,在此不作限制。
如上文所描述的,在多线程SMT的情形下,相比于单线程,必然会进一步增加内存访问压力,过多不精准的预取请求会导致访存延迟变长和缓存污染增加等问题,这些问题会对CPU的性能产生较大的负面影响,最终导致运行性能下降。
根据本公开实施例提供的数据预取方法适用于SMT处理器。具体的,在SMT的情况下,获取表征内存的使用率的性能数据包括:针对多个线程中的每个线程,分别获取表征内存的使用率的性能数据;以及根据性能数据调节预取器的激进级别包括:针对每个线程,根据各自的性能数据分别调节预取器的激进级别,其中,预取器中针对各个线程分别设置激进级别。
也就是说,对于多线程的情形,可以针对不同的线程分别统计计算内存的平均访问延迟,从而针对各个线程来分别设置激进级别。
图4示出了根据本公开一些实施例的针对SMT调节预取器激进级别的示意图,如图4所示,对于结合图3描述的动态调节激进级别的过程,针对多个线程分别设置激进级别。例如,CPU能同时处理4个线程的指令,即n等于3,针对线程0、线程1、线程2和线程3可以分别调节其进行预取的激进级别。作为示例,MSHR中记录的信息包括线程号等信息,由此能够区分出来自不同线程的预取请求,从而分别统计其平均访问延迟。
作为一些实现方式,调节过程中,不局限于单独统计每个线程的平均访问延迟,也可以使用线程间共享的访问延迟量对预取器中线程间共享的激进等级进行调节,在此不作限制。
本公开实施例提供了一种数据预取方法,能够动态调节预取器激进级别,其通过MSHR监测访存的延迟,并根据延迟动态地调整预取器的激进级别。上述方法尤其适用于SMT的情形,在开启SMT并且访问延迟较高的情况下,减少预取的激进程度,从而减少预取数量以提高预取准确度,缓解内存带宽紧张以及缓存污染的问题。在开启SMT并且访问延迟不高的情况下,增加预取的激进程度,增加预取数量以提高预取的覆盖率。
根据本公开实施例提供的方法,监控访问延迟并动态地对预取器的激进程度进行调整,不仅限于对预取器进行节流,还可以增加预取器激进程度,这使得调整方案更具有实时性和针对性。此外,还可以同时集成多个预取器,并对多个预取器的激进程度进行动态调控,针对不同预取器,可以根据激进级别进行更精细的调整,以发挥预取器的最优性能。
总得来说,利用本公开实施例提供的数据预取方法,能够根据表征内存的使用率的性能数据,调节预取器进行预取的激进级别,作为一种实现方式,能够将内存的平均访问延迟与设置的阈值进行比较,来实现动态地调节预取器的激进级别,从而使得预取器能够根据设置的激进级别,来动态地调节预取产生的条件,提高预取的准确率和覆盖率,进而提高电子设备的整体运行性能。
根据本公开的另一方面,还提供了一种电子设备。根据本公开实施例的电子设备可以包括处理器核心(CPU core,或者称为CPU核)、内存、缓存和预取器。该处理器核心可以配置成实现以下步骤:获取表征内存的使用率的性能数据;根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量。预取器可以配置成根据调节后的激进级别进行预取操作。
作为一种实现方式,上述电子设备可以是同步多线程(SMT)处理器,即,能够在一个操作周期内,同时执行来自多个线程的指令。
图5示出了根据本公开一些实施例的电子设备的示意性框图。如图5所示,电子设备1000可以包括处理器1010以及非易失性存储器(Non Volatile Memory)NVM 1060以及动态随机存储器DRAM 1070。具体的,处理器1010可以由CPU核1020、内存控制器1030、缓存1040以及预取器1050组成。可以理解的是,电子设备的组成不仅限于此,还可以包括其他的必要部件。
其中,DRAM 1070和NVM 1060均为电子设备1000的内存。图5所示的电子设备的连接关系仅仅是具有混合内存架构的电子设备的一种示例,图5中所示的DRAM 1070和NVM1060仅仅是电子设备中的多级存储器的一种示例。实际应用中,并不对电子设备中的内部结构进行具体的限定,且电子设备中还可以包括除DRAM 1070和NVM 1060之外的其他存储器。
处理器1010是电子设备1000的核心部件,处理器1010可以调用电子设备1000中不同的软件程序实现不同的功能。例如,处理器1010能够实现对DRAM 1070、NVM 1060的访问。处理器1010可以是中央处理器(Central Processing Unit,CPU)。除了CPU外,处理器还可以是其他特定集成电路(application specific integrated circuit,ASIC)。电子设备还可以包括多个处理器。另外,处理器可以是单核处理器,也可以是多核处理器。在多核处理器架构中,处理器中可以包括多个处理器核心(CPU core)。例如,如图5所示,处理器1010中可以包括一个或多个CPU核1020。
内存控制器1030是电子设备1000内部控制内存并且使内存与处理器1010(例如CPU)之间交换数据的重要组成部分。一种情况下,内存控制器1030可以位于北桥芯片内部。在另一种情况下,可以将内存控制器1030集成在处理器1010中(如图5所示),具体的,内存控制器1030可以集成在处理器1010的基板上。可以理解的是,当内存控制器1030位于北桥芯片内部时,内存控制器需要通过北桥芯片与处理器交换数据,导致数据的延迟较大。内存控制器1030可以集成在处理器1010中时,内存控制器1030可以直接与处理器交换数据。
如图5所示,内存控制器1030可以耦合NVM控制器以及DRAM控制器。DRAM控制器用于控制对DRAM 1070的访问,NVM控制器用于控制对NVM 1060的访问。NVM控制器以及DRAM控制器又可以被称为介质控制器。实际应用中,一种情况下,NVM控制器和DRAM控制器可以独立于内存控制器1030。另一种情况下,NVM控制器和DRAM控制器也可以集成在内存控制器1030中,在逻辑上作为内存控制器1030一部分(如图5所示)。在本公开实施例中,内存控制器1030可以通过内存总线(例如,双倍速率DDR总线)连接NVM 1060和DRAM 1070。可以理解的是,实际应用中,NVM控制器还可以通过PCI高速总线、直接管理接口(Direct MediaInterface,DMI)总线等其他类型的总线与NVM 1060通信。
内存控制器1030除了可通过图5所示的方式连接NVM 1060和DRAM 1070之外,还可以采取其他方式,比如内存控制器1030可以通过内存总线直接连接DRAM 1070。换一种表达方式,内存控制器1030可以通过内存总线连接DRAM 1070,DRAM 1070通过内存总线连接NVM1060。
如前所述,在图5所示的电子设备中,DRAM 1070可以通过内存总线与处理器1010连接。DRAM 1070具有访问速度快的优点。处理器1010能够高速访问DRAM 1070,对DRAM1070进行读或写操作。通常DRAM 1070用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。然而,DRAM 1070是易失性的,当关闭电源后,DRAM 1070中的信息将不再保存。
由于新型NVM能够按字节(Byte)寻址,将数据以位(bit)为单位写入非易失性存储器中,因而能够作为内存使用。在本公开实施例中,NVM 1060可以与DRAM 1070共同作为电子设备1000的内存。与DRAM 1070相比,由于NVM 1060具有非易失性的特点,从而能够更好地保存数据。在本公开实施例中,可以将能够作为内存使用的非易失性存储器称为存储级内存(Storage Class Memory,SCM)。
需要说明的是,DRAM是易失性内存(volatile memory)的一种,实际应用中还可以采用其他的随机存储器(Random Access Memory,RAM)作为计算机系统的内存。例如,还可以采用静态随机存储器(Static Random Access Memory,SRAM)作为计算机系统的内存。图5中所示的NVM 1060可以包括:相变存储器(Phase-change Random Access memory,PCM)、阻变存储器(Resistive Random Access Memory,RRAM)、磁性存储器(Magnetic RandomAccess Memory,MRAM)或铁电式存储器(Ferroelectric Random Access Memory,FRAM)等新型非易失性存储器,在此不对本公开实施例中的NVM的具体类型进行限定。
由于与DRAM 1070相比,NVM 1060的访问速度相对较慢,因此,通常将NVM 1060作为系统的主存(main memory)使用,将DRAM 1070作为NVM 1060的缓存(Cache)使用,以弥补主存NVM 1060访问速度慢的缺陷,提高内存访问速度。如图5所示,在图5所示的电子设备中,DRAM 1070作为NVM 1060的缓存。当内存控制器1030接收到处理器1010发送的访存请求时,首先确定访存请求中的目标地址(即,待访问的内存块的地址)是否命中DRAM 1070,以确定待访问的数据是否存储于DRAM 1070中。当确定访存请求中的目标地址命中DRAM 1070时,内存控制器1030可以直接从DRAM 1070中获取待访问的数据,以缩短访问延时。当内存控制器1030确定访存请求中的目标地址没有命中DRAM 1070时,内存控制器1030才从NVM1060中获取待访问的数据。
根据本公开实施例,对于图5示出的电子设备1000,CPU核1020可以配置成获取表征内存(例如,DRAM 1070)的使用率的性能数据;以及,根据性能数据调节预取器1050的激进级别,其中,激进级别用于控制预取器1050产生预取的置信度条件以及预取数量。预取器1050可以配置成根据调节后的激进级别进行预取操作。
根据本公开的一些实施例,性能数据包括以下中的一种或多种:内存的平均访问延迟;电子设备的未命中状态处理寄存器的占用率;内存的带宽使用率;以及电子设备的片上互联网络中队列的占用率。
根据本公开的一些实施例,预取器1050为步长预取器(Stride Prefetcher)。
根据本公开的一些实施例,在性能数据包括内存的平均访问延迟的情况下,CPU核1020获取表征内存的使用率的性能数据包括:获取内存在时间窗口之前的历史平均访问延迟时间;获取内存在时间窗口内的当前平均访问延迟时间;以及计算历史平均访问延迟时间和当前平均访问延迟时间的加权平均值,其中,加权平均值作为内存的平均访问延迟。
根据本公开的一些实施例,电子设备内配置有时间窗口计数器、延迟计数器、回填计数器以及历史延迟计数器,CPU核1020获取表征内存的使用率的性能数据包括:利用时间窗口计数器记录时间窗口,其中,当时间窗口计数器达到设定阈值时,触发计算平均访问延迟并根据平均访问延迟来调节激进级别;利用延迟计数器记录时间窗口内未命中缓存的总延迟时间;利用回填计数器记录时间窗口内未命中缓存的访问回填个数;利用历史延迟计数器记录时间窗口之前的历史平均访问延迟时间;以及基于时间窗口内未命中缓存的总延迟时间以及访问回填个数计算当前平均访问延迟时间,以及对当前平均访问延迟时间和历史平均访问延迟时间进行加权平均,计算得到平均访问延迟。
根据本公开的一些实施例,CPU核1020根据性能数据调节预取器的激进级别包括:在平均访问延迟小于第一阈值的情况下,增加预取器的激进级别,以使得增加对于内存的预取量;以及在平均访问延迟大于第二阈值的情况下,降低预取器的激进级别,以使得减少对于内存的预取量。
根据本公开的一些实施例,电子设备同步处理多个线程,获取表征内存的使用率的性能数据包括:针对多个线程中的每个线程,分别获取表征内存的使用率的性能数据。根据性能数据调节预取器的激进级别包括:针对每个线程,根据各自的性能数据分别调节预取器的激进级别,其中,预取器中针对各个线程分别设置激进级别。
根据本公开的一些实施例,CPU核1020利用时间窗口计数器记录时间窗口包括以下之一:对于电子设备的处理器时钟周期,每个时钟周期计数加一;对于电子设备的缓存访问,每次访问计数加一;对于电子设备的缓存访问未命中事件,每次缓存访问未命中计数加一;或者对于预取器的预取请求,每个发送预取请求计数加一。
根据本公开的一些实施例,缓存1040可以包括多级缓存,未命中缓存为未命中多级缓存的最后一级缓存,即,LLC Miss。
根据本公开实施例的电子设备能够实现数据访问、预取等功能的具体执行过程,此外,根据本公开实施例的电子设备具体能够实现以上结合附图描述的根据本公开一些实施例的数据预取方法的步骤,在此不再重复描述。利用本公开实施例的电子设备能够进行类似的数据预取过程并实现相似的技术效果。
根据本公开的又一方面,提供了一种数据预取装置。图6示出了根据本公开一些实施例的数据预取装置的示意性框图。
如图6所示,数据预取装置2000包括获取单元2010、调节单元2020以及预取单元2030。根据本公开的一些实施例,获取单元2010可以配置成获取表征内存的使用率的性能数据。调节单元2020可以配置成根据性能数据调节预取器的激进级别,其中,激进级别用于控制预取器产生预取的置信度条件以及预取数量。预取单元2030可以配置成根据调节后的激进级别进行预取操作。
根据本公开的一些实施例,性能数据包括以下中的一种或多种:内存的平均访问延迟;电子设备的未命中状态处理寄存器的占用率;内存的带宽使用率;以及电子设备的片上互联网络中队列的占用率。
根据本公开的一些实施例,在性能数据包括内存的平均访问延迟的情况下,获取单元2010获取表征内存的使用率的性能数据包括:获取内存在时间窗口之前的历史平均访问延迟时间;获取内存在时间窗口内的当前平均访问延迟时间;以及计算历史平均访问延迟时间和当前平均访问延迟时间的加权平均值,其中,加权平均值作为内存的平均访问延迟。
根据本公开的一些实施例,获取单元2010获取表征内存的使用率的性能数据包括:利用时间窗口计数器记录时间窗口,其中,当时间窗口计数器达到设定阈值时,触发计算平均访问延迟并根据平均访问延迟来调节激进级别;利用延迟计数器记录时间窗口内未命中缓存的总延迟时间;利用回填计数器记录时间窗口内未命中缓存的访问回填个数;利用历史延迟计数器记录时间窗口之前的历史平均访问延迟时间;以及基于时间窗口内未命中缓存的总延迟时间以及访问回填个数计算当前平均访问延迟时间,以及对当前平均访问延迟时间和历史平均访问延迟时间进行加权平均,计算得到平均访问延迟。
根据本公开的一些实施例,调节单元2020根据性能数据调节预取器的激进级别包括:在平均访问延迟小于第一阈值的情况下,增加预取器的激进级别,以使得增加对于内存的预取量;以及在平均访问延迟大于第二阈值的情况下,降低预取器的激进级别,以使得减少对于内存的预取量。
根据本公开的一些实施例,获取单元2010获取表征内存的使用率的性能数据包括:针对多个线程中的每个线程,分别获取表征内存的使用率的性能数据;以及调节单元2020根据性能数据调节预取器的激进级别包括:针对每个线程,根据各自的性能数据分别调节预取器的激进级别,其中,预取器中针对各个线程分别设置激进级别。
根据本公开的一些实施例,利用时间窗口计数器记录时间窗口包括以下之一:对于电子设备的处理器时钟周期,每个时钟周期计数加一;对于电子设备的缓存访问,每次访问计数加一;对于电子设备的缓存访问未命中事件,每次缓存访问未命中计数加一;或者对于预取器的预取请求,每个发送预取请求计数加一。
根据本公开的一些实施例,缓存包括多级缓存,未命中缓存为未命中多级缓存的最后一级缓存。
根据本公开的一些实施例,预取器为步长预取器。
具体的,根据本公开实施例的数据预取装置2000能够实施上文结合附图描述的根据本公开实施例的数据预取方法的步骤,并实现相似的技术效果,在此不再赘述。
根据本公开的又一方面,提供了一种电子装置。图7示出了根据本公开一些实施例的电子装置的示意性框图。
如图7所示,电子装置3000可以包括处理器3010以及存储器3020。根据本公开的一些实施例,存储器3020中存储有计算机可读代码,该计算机可读代码当由处理器3010运行时,可以执行根据本公开实施例提供的数据预取方法。
处理器3010可以根据存储在存储器3020中的程序执行各种动作和处理。具体地,处理器3010可以是一种集成电路,具有信号处理能力。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。例如,该处理器可以是指能够实现SMT的处理器。
存储器3020存储有计算机可读代码,该代码在被处理器3010执行时能够促使处理器实施根据本公开一些实施例的数据预取方法。存储器3020可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的存储器可以是任何适合类型的存储器。作为示例,通过执行存储器3020中的计算机可读代码,处理器能够实现以上结合附图描述的数据预取方法的步骤。
根据本公开的又一方面,还提供了一种非暂时性计算机可读存储介质。图8示出了根据本公开一些实施例的计算机可读存储介质的示意图。
如图8所示,计算机可读存储介质4000上存储有计算机可读指令4010。当计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的数据预取方法。计算机可读存储介质包括但不限于易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机可读存储介质4000可以连接于诸如计算机等的电子设备,接着,在电子设备运行计算机可读存储介质4000上存储的计算机可读指令4010的情况下,可以进行如上所描述的根据本公开实施例提供的数据预取方法。
本公开的实施例提供了一种数据预取方法、装置、电子设备、电子装置和介质,用于根据表征内存的使用率的性能数据,调节预取器进行预取的激进级别,从而使得预取器能够根据设置的激进级别,来动态地调节预取产生的条件,提高预取的准确率和覆盖率,进而提高电子设备的整体运行性能。
此外,虽然本公开对根据本公开的实施例的电子设备、电子装置中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。单元仅是说明性的,并且方法、电子设备、电子装置的不同方面可以使用不同单元。
本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过计算机程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
除非另有定义,这里使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。
Claims (20)
1.一种数据预取方法,其特征在于,所述方法适用于电子设备,所述电子设备包括内存、缓存和预取器,所述方法包括:
获取表征所述内存的使用率的性能数据;
根据所述性能数据调节所述预取器的激进级别,其中,所述激进级别用于控制所述预取器产生预取的置信度条件以及预取数量;以及
根据调节后的激进级别进行预取操作。
2.根据权利要求1所述的方法,其特征在于,所述性能数据包括以下中的一种或多种:
所述内存的平均访问延迟;
所述电子设备的未命中状态处理寄存器的占用率;
所述内存的带宽使用率;以及
所述电子设备的片上互联网络中队列的占用率。
3.根据权利要求2所述的方法,其特征在于,在所述性能数据包括所述内存的平均访问延迟的情况下,所述获取表征所述内存的使用率的性能数据包括:
获取所述内存在时间窗口之前的历史平均访问延迟时间;
获取所述内存在所述时间窗口内的当前平均访问延迟时间;以及
计算所述历史平均访问延迟时间和所述当前平均访问延迟时间的加权平均值,其中,所述加权平均值作为所述内存的平均访问延迟。
4.根据权利要求3所述的方法,其特征在于,所述电子设备内配置有时间窗口计数器、延迟计数器、回填计数器以及历史延迟计数器,所述获取表征所述内存的使用率的性能数据包括:
利用所述时间窗口计数器记录时间窗口,其中,当所述时间窗口计数器达到设定阈值时,触发计算所述平均访问延迟并根据所述平均访问延迟来调节所述激进级别;
利用所述延迟计数器记录所述时间窗口内未命中缓存的总延迟时间;
利用所述回填计数器记录所述时间窗口内未命中缓存的访问回填个数;
利用所述历史延迟计数器记录所述时间窗口之前的历史平均访问延迟时间;以及
基于所述时间窗口内未命中缓存的总延迟时间以及所述访问回填个数计算所述当前平均访问延迟时间,以及对所述当前平均访问延迟时间和所述历史平均访问延迟时间进行加权平均,计算得到所述平均访问延迟。
5.根据权利要求4所述的方法,其特征在于,所述根据所述性能数据调节所述预取器的激进级别包括:
在所述平均访问延迟小于第一阈值的情况下,增加所述预取器的激进级别,以使得增加对于所述内存的预取量;以及
在所述平均访问延迟大于第二阈值的情况下,降低所述预取器的激进级别,以使得减少对于所述内存的预取量。
6.根据权利要求1所述的方法,其特征在于,所述电子设备同步处理多个线程,所述获取表征所述内存的使用率的性能数据包括:
针对所述多个线程中的每个线程,分别获取表征所述内存的使用率的性能数据;以及
所述根据所述性能数据调节所述预取器的激进级别包括:
针对每个线程,根据各自的性能数据分别调节所述预取器的激进级别,其中,所述预取器中针对各个线程分别设置激进级别。
7.根据权利要求4所述的方法,其特征在于,所述利用所述时间窗口计数器记录时间窗口包括以下之一:
对于所述电子设备的处理器时钟周期,每个时钟周期计数加一;
对于所述电子设备的缓存访问,每次访问计数加一;
对于所述电子设备的缓存访问未命中事件,每次缓存访问未命中计数加一;或者
对于所述预取器的预取请求,每个发送预取请求计数加一。
8.根据权利要求4所述的方法,其特征在于,所述缓存包括多级缓存,所述未命中缓存为未命中所述多级缓存的最后一级缓存。
9.一种电子设备,其特征在于,所述电子设备包括处理器核心、内存、缓存和预取器,
所述处理器核心配置成:获取表征所述内存的使用率的性能数据,以及根据所述性能数据调节所述预取器的激进级别,其中,所述激进级别用于控制所述预取器产生预取的置信度条件以及预取数量;以及
所述预取器配置成:根据调节后的激进级别进行预取操作。
10.根据权利要求9所述的电子设备,其特征在于,所述性能数据包括以下中的一种或多种:
所述内存的平均访问延迟;
所述电子设备的未命中状态处理寄存器的占用率;
所述内存的带宽使用率;以及
所述电子设备的片上互联网络中队列的占用率。
11.根据权利要求10所述的电子设备,其特征在于,在所述性能数据包括所述内存的平均访问延迟的情况下,所述处理器核心获取表征所述内存的使用率的性能数据包括:
获取所述内存在时间窗口之前的历史平均访问延迟时间;
获取所述内存在所述时间窗口内的当前平均访问延迟时间;以及
计算所述历史平均访问延迟时间和所述当前平均访问延迟时间的加权平均值,其中,所述加权平均值作为所述内存的平均访问延迟。
12.根据权利要求11所述的电子设备,其特征在于,所述电子设备内配置有时间窗口计数器、延迟计数器、回填计数器以及历史延迟计数器,所述处理器核心获取表征所述内存的使用率的性能数据包括:
利用所述时间窗口计数器记录时间窗口,其中,当所述时间窗口计数器达到设定阈值时,触发计算所述平均访问延迟并根据所述平均访问延迟来调节所述激进级别;
利用所述延迟计数器记录所述时间窗口内未命中缓存的总延迟时间;
利用所述回填计数器记录所述时间窗口内未命中缓存的访问回填个数;
利用所述历史延迟计数器记录所述时间窗口之前的历史平均访问延迟时间;以及
基于所述时间窗口内未命中缓存的总延迟时间以及所述访问回填个数计算所述当前平均访问延迟时间,以及对所述当前平均访问延迟时间和所述历史平均访问延迟时间进行加权平均,计算得到所述平均访问延迟。
13.根据权利要求12所述的电子设备,其特征在于,所述处理器核心根据所述性能数据调节所述预取器的激进级别包括:
在所述平均访问延迟小于第一阈值的情况下,增加所述预取器的激进级别,以使得增加对于所述内存的预取量;以及
在所述平均访问延迟大于第二阈值的情况下,降低所述预取器的激进级别,以使得减少对于所述内存的预取量。
14.根据权利要求9所述的电子设备,其特征在于,所述电子设备同步处理多个线程,所述获取表征所述内存的使用率的性能数据包括:
针对所述多个线程中的每个线程,分别获取表征所述内存的使用率的性能数据;以及
所述根据所述性能数据调节所述预取器的激进级别包括:
针对每个线程,根据各自的性能数据分别调节所述预取器的激进级别,其中,所述预取器中针对各个线程分别设置激进级别。
15.根据权利要求12所述的电子设备,其特征在于,所述缓存包括多级缓存,所述未命中缓存为未命中所述多级缓存的最后一级缓存。
16.一种数据预取装置,其特征在于,所述装置包括:
获取单元,配置成获取表征内存的使用率的性能数据;
调节单元,配置成根据所述性能数据调节预取器的激进级别,其中,所述激进级别用于控制所述预取器产生预取的置信度条件以及预取数量;以及
预取单元,配置成根据调节后的激进级别进行预取操作。
17.根据权利要求16所述的数据预取装置,其特征在于,在所述性能数据包括内存的平均访问延迟的情况下,所述获取表征所述内存的使用率的性能数据包括:
获取所述内存在时间窗口之前的历史平均访问延迟时间;
获取所述内存在所述时间窗口内的当前平均访问延迟时间;以及
计算所述历史平均访问延迟时间和所述当前平均访问延迟时间的加权平均值,其中,所述加权平均值作为所述内存的平均访问延迟。
18.根据权利要求16所述的数据预取装置,其特征在于,所述数据预取装置同步处理多个线程,所述获取表征所述内存的使用率的性能数据包括:
针对所述多个线程中的每个线程,分别获取表征所述内存的使用率的性能数据;以及
所述根据所述性能数据调节所述预取器的激进级别包括:
针对每个线程,根据各自的性能数据分别调节所述预取器的激进级别,其中,所述预取器中针对各个线程分别设置激进级别。
19.一种电子装置,其特征在于,所述电子装置包括处理器和存储器,所述存储器中存储有计算机可读代码,所述计算机可读代码在由所述处理器执行时使得所述处理器执行如权利要求1-8中任一项所述的方法的步骤。
20.一种非暂时性计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令在被处理器执行时,使得所述处理器执行如权利要求1-8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410391499.7A CN118093020A (zh) | 2024-04-01 | 2024-04-01 | 数据预取方法、装置、电子设备、电子装置和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410391499.7A CN118093020A (zh) | 2024-04-01 | 2024-04-01 | 数据预取方法、装置、电子设备、电子装置和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118093020A true CN118093020A (zh) | 2024-05-28 |
Family
ID=91149544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410391499.7A Pending CN118093020A (zh) | 2024-04-01 | 2024-04-01 | 数据预取方法、装置、电子设备、电子装置和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118093020A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235764A (zh) * | 2013-04-11 | 2013-08-07 | 浙江大学 | 线程感知多核数据预取自调方法 |
CN105955709A (zh) * | 2016-04-16 | 2016-09-21 | 浙江大学 | 基于机器学习的预取能效优化自适应装置及方法 |
CN109408412A (zh) * | 2018-10-24 | 2019-03-01 | 龙芯中科技术有限公司 | 内存预取控制方法、装置及设备 |
US20190370176A1 (en) * | 2018-06-01 | 2019-12-05 | Qualcomm Incorporated | Adaptively predicting usefulness of prefetches generated by hardware prefetch engines in processor-based devices |
CN112231243A (zh) * | 2020-10-29 | 2021-01-15 | 海光信息技术股份有限公司 | 一种数据处理方法、处理器及电子设备 |
CN112256205A (zh) * | 2020-10-28 | 2021-01-22 | 中国科学院微电子研究所 | 非易失缓存数据预取方法、装置、电子设备及存储介质 |
CN115934170A (zh) * | 2022-12-29 | 2023-04-07 | 海光信息技术股份有限公司 | 预取方法及装置、预取训练方法及装置、存储介质 |
CN116662219A (zh) * | 2022-02-18 | 2023-08-29 | 慧与发展有限责任合伙企业 | 从存储装置中动态预取数据 |
-
2024
- 2024-04-01 CN CN202410391499.7A patent/CN118093020A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235764A (zh) * | 2013-04-11 | 2013-08-07 | 浙江大学 | 线程感知多核数据预取自调方法 |
CN105955709A (zh) * | 2016-04-16 | 2016-09-21 | 浙江大学 | 基于机器学习的预取能效优化自适应装置及方法 |
US20190370176A1 (en) * | 2018-06-01 | 2019-12-05 | Qualcomm Incorporated | Adaptively predicting usefulness of prefetches generated by hardware prefetch engines in processor-based devices |
CN109408412A (zh) * | 2018-10-24 | 2019-03-01 | 龙芯中科技术有限公司 | 内存预取控制方法、装置及设备 |
CN112256205A (zh) * | 2020-10-28 | 2021-01-22 | 中国科学院微电子研究所 | 非易失缓存数据预取方法、装置、电子设备及存储介质 |
CN112231243A (zh) * | 2020-10-29 | 2021-01-15 | 海光信息技术股份有限公司 | 一种数据处理方法、处理器及电子设备 |
CN116662219A (zh) * | 2022-02-18 | 2023-08-29 | 慧与发展有限责任合伙企业 | 从存储装置中动态预取数据 |
CN115934170A (zh) * | 2022-12-29 | 2023-04-07 | 海光信息技术股份有限公司 | 预取方法及装置、预取训练方法及装置、存储介质 |
Non-Patent Citations (2)
Title |
---|
张建勋等: "深度学习在多核缓存预取中的应用研究综述", 《计算机应用研究》, vol. 41, no. 2, 29 February 2024 (2024-02-29), pages 341 - 347 * |
李鹏;王剑;曾露;王焕东;: "多核片上系统主控式内存控制器预取", 高技术通讯, no. 05, 15 May 2019 (2019-05-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3676712B1 (en) | Multi-line data prefetching using dynamic prefetch depth | |
US6983356B2 (en) | High performance memory device-state aware chipset prefetcher | |
US8924651B2 (en) | Prefetch optimization in shared resource multi-core systems | |
Stuecheli et al. | The virtual write queue: Coordinating DRAM and last-level cache policies | |
Kaseridis et al. | Minimalist open-page: A DRAM page-mode scheduling policy for the many-core era | |
US20210073152A1 (en) | Dynamic page state aware scheduling of read/write burst transactions | |
EP3676713B1 (en) | Utilization-based throttling of hardware prefetchers | |
US20120059983A1 (en) | Predictor-based management of dram row-buffers | |
US20110072218A1 (en) | Prefetch promotion mechanism to reduce cache pollution | |
JP5328792B2 (ja) | プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 | |
CN107592927B (zh) | 管理扇区高速缓存 | |
CN118093020A (zh) | 数据预取方法、装置、电子设备、电子装置和介质 | |
CN116662219A (zh) | 从存储装置中动态预取数据 | |
US11526278B2 (en) | Adaptive page close prediction | |
TWI317065B (en) | Method of accessing cache memory for parallel processing processors | |
Jeon et al. | DRBAC: Dynamic row buffer access control for power and performance of DRAM systems | |
JP7553062B2 (ja) | メモリ管理技術及びコンピュータシステム | |
US12099723B2 (en) | Tag and data configuration for fine-grained cache memory | |
CN115729860A (zh) | 处理系统、处理方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |