本申请实施例公开了一种预取地址生成方法及计算机设备,可以应用于针对非直接拓展内存的预取场景,具体可以通过计算机设备实现。本申请方法采用机器学习的方式识别内存访问地址的地址偏移随时间变化的规律,根据识别得到的访存模式计算得到指向预取地址的N个地址偏移的概率,这种方式对于各种规律或不规律变化的地址偏移也能得到相应的概率;在根据该概率从N个地址偏移中确定目标偏移后,叠加该目标偏移和最近一次内存访问请求的访问地址生成预取地址。根据本申请方法生成的预取地址进行数据预取,可以提高缓存命中率。可以提高缓存命中率。可以提高缓存命中率。
【技术实现步骤摘要】
预取地址生成方法及计算机设备
[0001]本申请涉及数据预取
,尤其涉及一种预取地址生成方法及计算机设备。
技术介绍
[0002]在应用远程直接内存访问(remote direct memory access,RDMA)技术时,远程内存访问仍有较高的延迟,因此需要采用更好的预取算法提高缓存命中率,进而降低延迟。
[0003]现有的硬件实现的分区式页面流预取算法(hardware partitioned page stream prefetcher,PPSP),是通过硬件识别并追踪所有的内存访问记录,并将这些内存访问记录按照访问地址进行分区;再对每个分区进行访存模式(memory access patter)识别,最后根据识别得到的访存模式生成预取地址,其中,访存模式是程序在访问存储器件时所体现出来的规律。
[0004]由于PPSP采用严格的访存模式识别,当访问地址的地址偏移(指两次内存访问请求的访问地址之间的偏移量)有多种,且程序不按内存地址的递增顺序访问时,PPSP识别得到的访存模式准确率低;根据该访存模式生成的预取地址进行预取,缓存命中率低。
技术实现思路
[0005]本申请提供了一种预取地址生成方法及计算机设备,根据本申请生成的预取地址进行数据预取,能够提高缓存命中率。
[0006]本申请第一方面提供了一种预取地址生成方法,该方法可以应用于计算机设备,该计算机设备具体可以是服务器、终端或其他具备多级存储介质的计算机设备,以下均以应用于服务器为例进行说明。
[0007]在内存数据预取的场景中,一般需要对历史访问数据进行访存模式的识别,进而根据识别得到的访存模式进行数据预取。因此,服务器可以先获取历史访问数据。
[0008]在获取到历史访问数据后,服务器从这些历史访问数据中获取符合获取条件的M个内存地址,该获取条件可以是:该M个内存地址为命中内存的内存访问请求的访问地址,以及该M个内存地址的差值小于第一阈值。其中,M大于1。
[0009]可以理解的是,在现有的内存访问机制下,中央处理器(central processing unit,CPU)访问内存时采用的是虚拟地址,通过内存管理单元(memory management unit,MMU)将虚拟地址转化成物理地址后再访问内存。因此,本申请中获取的内存地址为虚拟地址。
[0010]其中,用于生成预取地址的基础数据应当是有效的数据,才能作为规律识别的基础,但内存访问记录并不都是有效的,因此需要获取的内存地址为命中内存的内存访问请求的访问地址。具体地,命中内存的内存访问请求包括直接命中缓存(cache hit)的内存访问请求,以及缺页处理(handling page fault)后的页命中(page hit)的内存访问请求;此二者访问的虚拟地址均为有效的虚拟地址,具备生成预取地址所需要的参考价值。相应的,错误的、无效的内存访问不属于本申请中所述的命中内存的内存访问请求。
[0011]其中,通过获取差值小于第一阈值的M个内存地址,可以得到由同一进程产生的内存访问流的M个访问地址;也就是说,该第一阈值用于区分不同进程。根据该M个内存地址进行访存模式的识别,可以得到某一进程的访存模式,进而能够针对该进程进行数据预取。
[0012]因此可以理解的是,该第一阈值是根据不同进程访问的内存地址的差值,或不同进程被系统分配的不同地址段预先设定或动态设定的。
[0013]在服务器获取到符合获取要求的多个内存地址后,根据该M个内存地址,通过目标神经网络得到N个地址偏移中每个地址偏移的概率,其中,概率指示采用所述地址偏移与最后一次内存访问请求的访问地址叠加后的内存地址进行预取后的下一内存访问请求能够成功命中内存的概率。
[0014]其中,N为预设的大于等于1的数量值。
[0015]依据目标神经网络的类型不同、设置的输入要求不同,服务器可以将该M个内存地址进行不同的处理后得到不同的输入数据。通过将该输入数据输入到该目标神经网络,由该目标神经网络识别该M个内存地址反映的内存访问行为的规律,也即访存模式,并根据识别得到的访存模式输出指向预取地址的N个地址偏移的该概率。
[0016]根据得到的N个地址偏移中每个地址偏移的概率,服务器可以通过多种方式从该N个地址偏移中确定目标偏移。
[0017]服务器可以叠加最近一次的内存访问请求的访问地址和该目标偏移,生成预取地址。
[0018]本专利技术通过目标神经网络,采用机器学习的方式识别内存访问地址的地址偏移随时间变化的规律,根据识别得到的访存模式计算得到指向预取地址的N个地址偏移的概率,这种方式对于各种规律或不规律变化的地址偏移也能得到相应的概率;在根据该概率从N个地址偏移中确定目标偏移后,叠加该目标偏移和最近一次内存访问请求的访问地址生成预取地址。根据本申请方法生成的预取地址进行数据预取,可以提高缓存命中率。
[0019]在一种可能的实现中,该M个内存地址中任意两个相邻内存地址之间的地址偏移不完全相同。
[0020]本申请中,获取得到的M个内存地址中任意两个相邻内存地址之间的地址偏移可以不完全相同,甚至完全不相同,服务器都可以通过目标神经网络识别其中的访存模式。通过对未过滤的,完整的内存访问记录对应的访问地址进行识别,可以得到更准确的访存模式,进而使得目标神经网络能够输出更准确的指向预取地址的地址偏移的概率。
[0021]在一种可能的实现中,M小于或等于预设数量。
[0022]其中,目标神经网络的输入数据为根据该M个内存地址得到,因此,该预设数量用于限制每次生成预取地址时目标神经网络的计算量,在生成的预取地址能够保证缓存命中率的前提下,合适的预设数量可以避免目标神经网络的计算量过大导致计算时间较长,降低预取地址生成的效率。
[0023]具体地,服务器可以根据当前的负载确定获取内存地址的时机。在负载较小的情况下,服务器可以获取小于预设数量的M个内存地址,以启动预取地址的生成;在负载较大情况下,服务器可以等待该符合获取条件的内存访问地址的数量等于预设数量时,再进行获取以启动预取地址的生成。
[0024]本申请中,通过当前服务器的负载确定生成预取地址的时机,可以有效利用服务
器的资源,提高预取地址生成的效率。
[0025]在一种可能的实现中,该预设数量可以为16。
[0026]本申请中,通过将预设数量限制为16,可以有效地在生成预取地址的效率和缓存命中率之间取得较好的平衡。
[0027]在一种可能的实现中,该M个内存地址中任意一个内存地址所对应的内存访问请求的访问时间与当前时间的时间差小于第二阈值。
[0028]其中,该第二阈值用于保证该M个内存地址的时效性。当内存访问请求的访问时间与当前时间相差较远时,访问同一地址段的内存访问请求可能不属于同一进程;或即使属于同一进程,访问地址却属于不同地址段。这些来自不同进程,或同一进程但地址段不同的多个内存地址为无效样本或负样本,本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种预取地址生成方法,其特征在于,所述方法包括:获取M个内存地址,所述M个内存地址为命中内存的内存访问请求的访问地址,所述M个内存地址中任意两个内存地址差值小于第一阈值,所述M大于1;根据所述M个内存地址,通过目标神经网络得到N个地址偏移中每个地址偏移的概率,其中,所述概率指示采用所述地址偏移与最后一次内存访问请求的访问地址叠加后的内存地址进行预取后的下一内存访问请求能够成功命中内存的概率,所述N大于等于1;根据所述每个地址偏移的概率从所述N个地址偏移中确定目标偏移;叠加所述最近一次的内存访问请求的访问地址和所述目标偏移,生成预取地址。2.根据权利要求1所述的方法,其特征在于,所述M个内存地址中任意两个相邻内存地址之间的地址偏移不完全相同。3.根据权利要求1或2所述的方法,其特征在于,所述M小于或等于预设数量。4.根据权利要求1或2所述的方法,其特征在于,所述M个内存地址中任意一个内存地址所对应的内存访问请求的访问时间与当前时间的时间差小于第二阈值。5.根据权利要求1或2所述的方法,其特征在于,所述获取M个内存地址包括:当命中内存的内存访问请求的数量超过M时,按照所述内存访问请求的访问时间倒序排序所述内存访问请求;按照所述排序结果获取序列在前的M个内存访问请求所对应的内存地址。6.根据权利要求1或2所述的方法,其特征在于,所述根据所述M个内存地址,通过目标神经网络得到N个地址偏移中每个地址偏移的概率,包括:根据所述M个内存地址得到M
【专利技术属性】
技术研发人员:梁庭,袁辉,刘珂,陈明宇,李海锋,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。