一种数据过滤方法及终端设备与流程

文档序号:13909973阅读:250来源:国知局
一种数据过滤方法及终端设备与流程

本发明涉及计算机技术领域,尤其涉及一种数据过滤方法及终端设备。



背景技术:

随着计算机技术的不断发展,存储时延已成为限制多内核系统性能的一个重要因素。为了解决上述问题,业界提出数据预取机制,即通过软件指令或硬件数据预取引擎,将数据提前取到高速缓存或专用的预取缓存。在多内核处理器系统中,可能同时运行着多个线程,这些线程间通常会共享末级高速缓存(lastlevelcache,llc)和片外存储器。为了维持处于llc和片外存储器中共享数据的一致性,如果一个正在被共享的数据块被来自于预取请求的数据替换,这个共享数据块的所有共享者都需要对该数据块在其本地的备份做无效化处理。因此,数据预取请求会导致线程间的数据无效化,以及导致缓存缺失率增加,以致降低了系统性能。



技术实现要素:

本发明实施例公开了一种数据过滤方法及终端设备,用于提高系统性能。

第一方面公开一种数据过滤方法,该方法应用于终端设备,终端设备设置有至少一个处理器,每个处理器可以包括共享高速缓存和至少两个内核,共享高速缓存被这至少两个内核所共享,接收第一数据,判断第一数据是否是预取返回的数据,当第一数据是预取返回的数据时,判断第二数据是否是共享数据,当第二数据是共享数据时,获取第一数值,当第一数值大于或等于第一预设值时,丢弃第一数据。其中,第二数据是将要被第一数据替换的数据,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量。当接收的数据是预取返回的数据,且将要被替换的数据是共享数据时,将根据上一采样周期采样的预取返回的数据中未被使用的数据的数量来确定是否过滤预取返回的数据,当采样的预取返回的数据中未被使用的数据的数量大于或等于一个阈值时才过滤预取返回的数据,而不是盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

在一个实施例中,当第一数值小于第一预设值时,获取第二数值,当第二数值大于或等于第二预设值时,获取第三数值,当第三数值小于第三预设值时,丢弃第一数据。其中,第二数值是与当前采样周期相邻的上一采样周期统计的被预取返回的数据替换的共享数据被替换后被访问的数据的数量,第三数值是与当前采样周期相邻的上一采样周期中预取返回的数据中被使用的数据的数量与预取返回的数据的总数量的比值。当上一采样周期中采样的预取返回的数据中未被使用的数据的数量小于一个阈值时,先考虑上一采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量,当被预取返回的数据替换的共享数据被替换后被访问的数据的数量大于或等于另一阈值时,考虑上一采样周期中预取返回的数据的使用概率,当使用概率小于又一阈值时,才过滤预取返回的数据,而不是盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

在一个实施例中,当第二数值小于第二预设值,或第三数值大于或等于第三预设值时,使用第一数据替换第二数据。当上一采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量小于另一阈值,或者上一采样周期中预取返回的数据的使用概率大于或等于又一阈值时,将不过滤预取返回的数据,而不是盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

在一个实施例中,根据缓存块被替换的次数确定采样周期,缓存块是高速缓存中用于存储数据的最小单位,以便根据采样周期对预取返回的数据进行处理。

在一个实施例中,统计当前采样周期中预取返回的数据的数量,统计当前采样周期中预取返回的数据中被使用的数据的数量,统计当前采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量,以便在下一采样周期使用这些统计的数值对下一采样周期预取返回的数据进行处理,从而可以提高系统性能。

第二方面公开一种终端设备,该终端设备包括用于执行第一方面或第一方面的任一种可能实现方式所提供的数据过滤方法的单元。

第三方面公开一种终端设备,该终端设备包括至少一个处理器和内存,每个所述处理器包括预取过滤器、共享高速缓存和至少两个内核,所述共享高速缓存被所述至少两个内核所共享,其中:

所述内存,用于存储数据;

每个所述处理器通过内存总线与所述内存连接,所述共享高速缓存用于缓存数据,所述内核用于:

接收第一数据;

判断所述第一数据是否是预取返回的数据;

当所述第一数据是预取返回的数据时,将所述第一数据发送给所述预取过滤器;

所述预取过滤器用于:

判断第二数据是否是共享数据中,所述第二数据是将要被所述第一数据替换的数据;

当所述第二数据是共享数据时,获取第一数值,所述第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量;

当所述第一数值大于或等于第一预设值时,丢弃所述第一数据。

第四方面公开一种可读存储介质,该可读存储介质存储了终端设备用于执行第一方面或第一方面的任一种可能实现方式所公开的数据过滤方法的程序代码。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例公开的一种终端设备的结构示意图;

图2是本发明实施例公开的另一种终端设备的结构示意图;

图3是本发明实施例公开的又一种终端设备的结构示意图;

图4是本发明实施例公开的一种数据过滤方法的流程示意图;

图5是本发明实施例公开的另一种数据过滤方法的流程示意图;

图6是本发明实施例公开的又一种终端设备的结构示意图;

图7是本发明实施例公开的一种二级共享高速缓存的示意图;

图8是本发明实施例公开的一种一级数据高速缓存的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种数据过滤方法及终端设备,用于提高系统性能。以下分别进行详细说明。

为了更好地理解本发明实施例,下面先对本发明实施例的应用场景进行描述。在本发明实施例中,数据预取是通过硬件数据预取引擎来实现的。终端设备设置有内存和至少一个中央处理器(centralprocessingunit,cpu),每个cpu中设置有至少两个内核、至少一个私有高速缓存、共享高速缓存、数据预取引擎和预取过滤器。每个私有高速缓存被一个内核所私有,即每个私有高速缓存只能被一个内核使用。共享高速缓存被至少两个内核所共享,即这至少两个内核可以共同使用共享高速缓存,共享高速缓存中的一个缓存块(cacheline)可以被一个内核独占,也可以被多个内核共享,当这个缓存块被至少两个内核共享,即存储在这个缓存块中的数据可以被这至少两个内核使用时,存储在这个缓存块中的数据即共享数据。数据预取引擎用于管理数据的预取。预取过滤器用于对预取返回的数据进行处理。

请参阅图1,图1是本发明实施例公开的一种终端设备的结构示意图。如图1所示,该终端设备可以包括至少一个处理器101和内存102,每个处理器101包括预取过滤器1011、共享高速缓存1012和至少两个内核1013,共享高速缓存1012被至少两个内核1013所共享,其中:

内存102,用于存储数据;

每个处理器101通过内存总线与内存102连接,共享高速缓存1012用于缓存数据,内核1013用于:

接收第一数据;

判断第一数据是否是预取返回的数据;

当第一数据是预取返回的数据时,将第一数据发送给预取过滤器1011;

预取过滤器1011用于:

判断第二数据是否是共享数据,第二数据是将要被第一数据替换的数据;

当第二数据是共享数据时,获取第一数值,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量;

当第一数值大于或等于第一预设值时,丢弃第一数据。

作为一种可能的实施方式,预取过滤器1011还用于:

当第一数值小于第一预设值时,获取第二数值,第二数值是与当前采样周期相邻的上一采样周期统计的被预取返回的数据替换的共享数据被替换后被访问的数据的数量;

当第二数值大于或等于第二预设值时,获取第三数值,第三数值是与当前采样周期相邻的上一采样周期中预取返回的数据中被使用的数据的数量与预取返回的数据的总数量的比值;

当第三数值小于第三预设值时,丢弃第一数据。

作为一种可能的实施方式,预取过滤器1011还用于:

当第二数值小于第二预设值,或第三数值大于或等于第三预设值时,将第一数据发送给共享高速缓存1012;

共享高速缓存1012,还用于使用第一数据替换第二数据。

作为一种可能的实施方式,内核1013,还用于根据缓存块被替换的次数确定采样周期,缓存块是高速缓存中用于存储数据的最小单位。

作为一种可能的实施方式,每个处理器101还包括采样器1014,采样器1014用于:

统计当前采样周期中预取返回的数据的数量,以及统计当前采样周期中预取返回的数据中被使用的数据的数量;

统计当前采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量。

在图1所描述的终端设备中,接收第一数据,当第一数据是预取返回的数据时,判断将要被第一数据替换的第二数据是否是共享数据,当第二数据是共享数据时,获取第一数值,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量,当第一数值大于或等于第一预设值时,丢弃第一数据,没有盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

请参阅图2,图2是本发明实施例公开的另一种终端设备的结构示意图。如图2所示,该终端设备可以包括:

接收单元201,用于接收第一数据;

第一判断单元202,用于判断接收单元201接收的第一数据是否是预取返回的数据;

第二判断单元203,用于当第一判断单元202的判断结果为第一数据是预取返回的数据时,判断第二数据是否是共享数据,第二数据是将要被第一数据替换的数据;

获取单元204,用于当第二判断单元203的判断结果为第二数据是共享数据时,获取第一数值,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量;

丢弃单元205,用于当获取单元204获取的第一数值大于或等于第一预设值时,丢弃接收单元201接收的第一数据。

在图2所描述的终端设备中,接收第一数据,当第一数据是预取返回的数据时,判断将要被第一数据替换的第二数据是否是共享数据,当第二数据是共享数据时,获取第一数值,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量,当第一数值大于或等于第一预设值时,丢弃第一数据,没有盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

请参阅图3,图3是本发明实施例公开的又一种终端设备的结构示意图。图3所示的终端设备是由图2所示的终端设备优化得到的。其中:

获取单元204,还用于当第一数值小于第一预设值时,获取第二数值,第二数值是与当前采样周期相邻的上一采样周期统计的被预取返回的数据替换的共享数据被替换后被访问的数据的数量;

获取单元204,还用于当第二数值大于或等于第二预设值时,获取第三数值,第三数值是与当前采样周期相邻的上一采样周期中预取返回的数据中被使用的数据的数量与预取返回的数据的总数量的比值;

丢弃单元205,还用于当获取单元204获取的第三数值小于第三预设值时,丢弃第一数据。

作为一种可能的实施方式,该终端设备还可以包括:

替换单元206,用于当获取单元204获取的第二数值小于第二预设值,或获取单元204获取的第三数值大于或等于第三预设值时,使用接收单元201接收的第一数据替换第二数据。

具体地,替换单元206,用于当第一判断单元201的判断结果为第一数据不是预取返回的数据,或第二判断单元203的判断结果为第二数据不是共享数据,或获取单元204获取的第二数值小于第二预设值,或获取单元204获取的第三数值大于或等于第三预设值时,使用接收单元201接收的第一数据替换第二数据。

作为一种可能的实施方式,该终端设备还可以包括:

确定单元207,用于根据缓存块被替换的次数确定采样周期,缓存块是高速缓存中用于存储数据的最小单位。

具体地,获取单元204,用于获取第一数值,第一数值是与确定单元207确定的当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量。

作为一种可能的实施方式,该终端设备还可以包括:

统计单元208,用于统计当前采样周期中预取返回的数据的数量,以及统计当前采样周期中预取返回的数据中被使用的数据的数量;

统计单元208,还用于统计当前采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量。

作为一种可能的实施方式,统计单元208,还用于统计上一采样周期中预取返回的数据的数量,以及统计上一采样周期中预取返回的数据中被使用的数据的数量;

具体地,获取单元204,用于获取第一数值,第一数值是统计单元208在与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量。

在图3所描述的终端设备中,接收第一数据,当第一数据是预取返回的数据时,判断将要被第一数据替换的第二数据是否是共享数据,当第二数据是共享数据时,获取第一数值,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量,当第一数值大于或等于第一预设值时,丢弃第一数据,没有盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

请参阅图4,图4是本发明实施例公开的一种数据过滤方法的流程示意图。如图4所示,该数据过滤方法可以包括以下步骤。

401、接收第一数据,并判断第一数据是否是预取返回的数据,当第一数据是预取返回的数据时,执行步骤402,当第一数据不是预取返回的数据时,执行步骤405。

本实施例中,终端设备接收到第一数据时,将判断第一数据是否是预取返回的数据,即判断第一数据是不是执行预取请求后返回的结果,当第一数据是执行预取请求后返回的结果时,表明第一数据是预取返回的数据,将执行步骤402。当第一数据不是执行预取请求后返回的结果时,表明第一数据不是预取返回的数据,将执行步骤405。

402、判断将要被第一数据替换的第二数据是否是共享数据,当第二数据是共享数据时,执行步骤403,当第二数据不是共享数据时,执行步骤405。

本实施例中,当第一数据是预取返回的数据时,将继续判断将要被第一数据替换的第二数据是否是共享数据,即判断将要被第一数据替换的第二数据是否被存储在被至少两个内核共享的共享高速缓存中的缓存块中,当第二数据被存储在被至少两个内核共享的共享高速缓存中的缓存块中时,表明第二数据是共享数据,将执行步骤403。当第二数据未被存储在被至少两个内核共享的共享高速缓存中的缓存块中时,表明第二数据不是共享数据,将执行步骤405。

403、获取第一数值。

本实施例中,当第二数据是共享数据时,将获取第一数据,即获取与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量。

404、当第一数值大于或等于第一预设值时,丢弃第一数据。

本实施例中,当第一数值大于或等于第一预设值时,表明预取会造成污染,将阻止预取返回的数据进行缓存块替换,即对预取返回的数据进行过滤,也即阻止第一数据替换第二数据,也即是丢弃第一数据。

405、使用第一数据替换第二数据。

本实施例中,当第一数据不是预取返回的数据,或者第二数据不是共享数据时,使用第一数据替换第二数据,即第一数据进行缓存块替换。

在图4所描述的数据过滤方法中,接收第一数据,当第一数据是预取返回的数据时,判断将要被第一数据替换的第二数据是否是共享数据,当第二数据是共享数据时,获取第一数值,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量,当第一数值大于或等于第一预设值时,丢弃第一数据,没有盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

请参阅图5,图5是本发明实施例公开的另一种数据过滤方法的流程示意图。如图5所示,该数据过滤方法可以包括以下步骤。

501、根据缓存块被替换的次数确定采样周期。

本实施例中,缓存块是高速缓存中用于存储数据的最小单位。由于缓存块替换的频率实质上反应了缓存块竞争的激烈程度,因此,可以根据共享高速缓存中缓存块被替换的次数来确定采样周期,以便能够有效地反应共享资源竞争的情况。例如:可以将共享高速缓存中缓存块被替换1024次确定为一个采样周期。

502、统计当前采样周期中预取返回的数据的数量,统计当前采样周期中预取返回的数据中被使用的数据的数量,以及统计当前采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量。

本实施例中,在当前采样周期中,可以统计当前采样周期中预取返回的数据的数量,统计当前采样周期中预取返回的数据中被使用的数据的数量,以及统计当前采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量,这些数据可以在与当前采样周期相邻的下一采样周期中进行预取返回的数据处理时进行调用。

举例说明,请参阅图6,图6是本发明实施例公开的又一种终端设备的结构示意图。如图6所示,该终端设备可以包括处理器、一级数据高速缓存、二级共享高速缓存、预取过滤器、存储器和采样器。请参阅图7,图7是本发明实施例公开的一种二级共享高速缓存的示意图。如图7所示,二级共享高速缓存中由setindex索引缓存块的行,由tag(标签)索引cacheline的列,一个setindex和一个tag可以唯一确定一个cacheline。为了统计预取返回的数据的情况,可以为二级共享高速缓存中的每个tag增加两个额外的标志位pr和pa。pr可以标识该tag位对应的cacheline中存储的数据是否是预取返回的数据,当cacheline中存储的数据是预取返回的数据时,pr位被置1,当cacheline中存储的数据不是预取返回的数据时,pr位被置0。pa可以标识该tag位对应的cacheline中存储的数据是否被访问过,pa的初始值设置为0,表示cacheline中存储的数据未被访问过,当cacheline中存储的数据被访问过时,pa位置将被置1。统计当前采样周期中预取返回的数据的数量,即统计pr位为1的tag的数量。统计当前采样周期中预取返回的数据中被使用的数据的数量,即统计pa位为1的tag的数量。

举例说明,请参阅图8,图8是本发明实施例公开的一种一级数据高速缓存的示意图。如图8所示,为了统计预取返回的数据对被替换的共享数据的影响情况,为每个set增加多个(图中示意出了2个)额外的tag位,这些额外的tag位只包括tag信息,并不指向具体的cacheline,将这些tag位称为影子tag。当发生预取返回的数据替换共享数据的情况时,将被替换的共享数据的tag信息保存在影子tag中。当在后续调用数据发生缺失时,将发生缺失的数据的地址与影子tag相比较,当两者相匹配时,表明该数据的缺失是由于预取返回的数据替换共享数据导致的。统计当前采样周期中被预取返回的数据替换的共享数据被替换后被访问的数据的数量,即统计匹配的影子tag的数量。

503、接收第一数据,并判断第一数据是否是预取返回的数据,当第一数据是预取返回的数据时,执行步骤504,当第一数据不是预取返回的数据时,执行步骤509。

本实施例中,终端设备接收到第一数据时,将判断第一数据是否是预取返回的数据,即判断第一数据是不是执行预取请求后返回的结果,当第一数据是执行预取请求后返回的结果时,表明第一数据是预取返回的数据,将执行步骤504。当第一数据不是执行预取请求后返回的结果时,表明第一数据不是预取返回的数据,将执行步骤509。

504、判断将要被第一数据替换的第二数据是否是共享数据,当第二数据是共享数据时,执行步骤505,当第二数据不是共享数据时,执行步骤509。

本实施例中,当第一数据是预取返回的数据时,将继续判断将要被第一数据替换的第二数据是否是共享数据,即判断将要被第一数据替换的第二数据是否被存储在被至少两个内核共享的共享高速缓存中的缓存块中,当第二数据被存储在被至少两个内核共享的共享高速缓存中的缓存块中时,表明第二数据是共享数据,将执行步骤505。当第二数据未被存储在被至少两个内核共享的共享高速缓存中的缓存块中时,表明第二数据不是共享数据,将执行步骤509。

505、获取第一数值。

本实施例中,当第二数据是共享数据时,将获取第一数据,即获取与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量。

506、当第一数值小于第一预设值时,获取第二数值。

本实施例中,当第一数值小于第一预设值时,表明预取不会造成污染,将获取第二数据,第二数值是与当前采样周期相邻的上一采样周期统计的被预取返回的数据替换的共享数据被替换后被访问的数据的数量。

507、当第二数值大于或等于第二预设值时,获取第三数值。

本实施例中,当第二数值大于或等于第二预设值时,表明预取返回的数据造成了危害,将获取第三数值,第三数值是与当前采样周期相邻的上一采样周期中预取返回的数据中被使用的数据的数量与预取返回的数据的总数量的比值。

508、当第一数值大于或等于第一预设值,或第三数值小于第三预设值时,丢弃第一数据。

本实施例中,当第一数值大于或等于第一预设值时,表明预取会造成污染,将阻止预取返回的数据进行缓存块替换,即对预取返回的数据进行过滤,也即阻止第一数据替换第二数据,也即是丢弃第一数据。当第三数值小于第三预设值时,表明预取返回的数据的使用率较低,将丢弃第一数据。

509、使用第一数据替换第二数据。

本实施例中,当第一数据不是预取返回的数据,或者第二数据不是共享数据,或者第二数值小于第二预设值,或者第三数值大于或等于所述第三预设值时,使用第一数据替换第二数据,即第一数据进行缓存块替换。

在图5所描述的数据过滤方法中,接收第一数据,当第一数据是预取返回的数据时,判断将要被第一数据替换的第二数据是否是共享数据,当第二数据是共享数据时,获取第一数值,第一数值是与当前采样周期相邻的上一采样周期统计的预取返回的数据中未被使用的数据的数量,当第一数值大于或等于第一预设值时,丢弃第一数据,没有盲目的过滤所有预取返回的数据,也不是所有的预取返回的数据均不过滤,因此,可以合理的对预取返回的数据进行处理,从而可以提高系统性能。

本发明实施例还公开了一种可读存储介质,该可读存储介质存储了终端设备用于执行图4或图5所示的数据过滤方法的程序代码。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

以上对本发明实施例公开的数据过滤方法及终端设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1