缓存颠簸消除方法、装置、设备及存储介质

文档序号:1921198 发布日期:2021-12-03 浏览:5次 >En<

阅读说明:本技术 缓存颠簸消除方法、装置、设备及存储介质 (Cache bump elimination method, device, equipment and storage medium ) 是由 刘洋 李宗鹏 黄浩 于 2021-08-25 设计创作,主要内容包括:本发明公开了一种缓存颠簸消除方法、装置、设备及存储介质,所述方法通过获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整,能够消除缓存颠簸,避免了性能劣化,保证了二分算法的高效性,极大程度上降低查找部分数据时因查找次数增加带来的时间消耗。(The invention discloses a cache jolt elimination method, a device, equipment and a storage medium, wherein the method comprises the steps of obtaining the peripheral cache size and the cache line size of a processor cache in an operating environment and the number of paths of an adopted group connection structure, and obtaining the size of aligned data after memory alignment of data types in an ordered data set with continuous address space and the total data amount of the ordered data set; calculating data adjustment offset and adjustment times according to the peripheral cache size, the cache line size, the number of the group connection structure paths, the alignment data size and the total data amount; and performing binary search adjustment on the ordered data set according to the data adjustment offset and the required adjustment times, so that cache jolt can be eliminated, performance degradation is avoided, the high efficiency of a binary algorithm is ensured, and time consumption caused by the increase of the search times when part of data is searched is greatly reduced.)

缓存颠簸消除方法、装置、设备及存储介质

技术领域

本发明涉及计算机科学技术领域,尤其涉及一种缓存颠簸消除方法、装置、设备及存储介质。

背景技术

处理器缓存(CPU Cache)目的是为了减少处理器访问数据的平均时间,通过减少处理器用于I/O通信的等待时间,提升处理器单位时间内的数据读取量,使其在单位时间内处理更多的数据;如今,现代化的处理器中已经集成了大量的高速缓存部件,这些部件根据其的访问读取速度划分为不同层级的缓存,例如L1、L2、L3;如果处理器通过数据地址无法直接在缓存中获取对应的数据,那么会发生缓存命中缺失,命中缺失会增加数据读取的时间,降低处理器单位时间内的数据吞吐量,导致其性能劣化;缓存中的数据以缓存行的形式组织起来,为了将数据地址与数据在缓存中的位置关联起来,缓存的结构采用了多种方式,例如:全相联、多路组相联、直接相联等方式。

一般的会采用二分查找算法对地址空间连续的有序数据进行查找,但是二分查找算法极其特殊,其程序结构与组相联或直接相联的缓存结构组合起来更容易发生缓存颠簸;如果查找所使用的数据集在地址空间上是连续的,这里以缓存结构为直接相联为例,当数据总量大小达到缓存的最大容量的四倍时,就会开始发生内存颠簸现象;因为这些数据紧密相连的布局在内存中,因此当映射到直接相联的缓存结构中时逻辑上也是紧密相连的;当数据量未达到缓存容量时,这些数据可以毫无冲突的全部映射在缓存中;随着数据量的继续增加,这些数据的映射关系开始出现冲突,即有不同的数据需要映射到同一个缓存行中,如果连续的读取这种映射关系具有冲突性的数据,就会发生连续的内存交换,导致性能劣化;当数据量达到四倍内存容量时,由于二分算法每次取数据的中间位置的数据与目标值进行比较,不难发现,第一次进行二分操作的数据集中间数据的地址映射到缓存中的位置与第二次进行二分操作时的数据集中间数据的地址映射到缓存中的位置处于同一个缓存行中,因此连续的第一、二次二分操作会导致内存命中缺失;当大量进行二分查找操作时,就会引发严重的内存颠簸。

发明内容

本发明的主要目的在于提供一种缓存颠簸消除方法、装置、设备及存储介质,旨在解决现有技术中对地址空间连续的有序数据进行二分查找时,随着缓存层级的下降,访问速度较慢,缓存颠簸造成的性能劣化严重的技术问题。

第一方面,本发明提供一种缓存颠簸消除方法,所述缓存颠簸消除方法包括以下步骤:

获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;

根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;

根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整。

可选地,所述获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量,包括:

从处理器中获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构;

从预设编程语言手册中获得有序数据集中有序数据的数据类型在进行内存对齐后的对齐数据大小以及所述有序数据集的数据总量。

可选地,所述根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数,包括:

根据所述外围缓存大小及所述N路组相连结构通过下式获得一路缓存容量:

其中,Scw为一路缓存容量,Sc为所述外围缓存大小,N为组相连结构路数;

根据所述一路缓存容量及所述对齐数据大小通过下式获得一路缓存中可容纳数据量:

其中,所述Qdcw为一路缓存中可容纳数据量,Scw为一路缓存容量,Sd为所述对齐数据大小;

根据所述一路缓存容量及所述缓存行大小通过下式获得一路缓存中缓存行数量:

其中,Qclw为一路缓存中缓存行数量,Scw为一路缓存容量,Scl为所述缓存行大小;

根据所述可容纳数据量和所述缓存行数量通过下式获得平均缓存行可容纳数据量:

其中,Qdcl为平均缓存行可容纳数据量,Qdcw为一路缓存中可容纳数据量,Qclw为一路缓存中缓存行数量;

根据所述平均缓存行可容纳数据量调整偏移量及调整次数。

可选地,所述根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整,包括:

根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号;

将所述有序数据集中对应所述预设索引号的目标数据和待查找数据进行比较,生成比较结果;

根据所述比较结果对所述有序数据集进行数据处理。

可选地,所述根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号之前,所述缓存颠簸消除方法还包括:

初始化当前二分查找过程中的已调整次数;

在检测到当前查找的有序数据集为空时,判定查找失败,结束查找过程;

记录当前查找的有序数据集的左边界索引号和右边界索引号,根据所述左边界索引号和所述右边界索引号计算当前查找的有序数据集的中间位置的索引号,将所述中间位置的索引号作为分界点索引号。

可选地,所述根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号,包括:

获取当前二分查找过程中的已调整次数,判断所述已调整次数是否小于所述需要调整次数;

在所述已调整次数小于所述需要调整次数时,将所述预设索引号设置为所述分界索引号向当前查找的有序数据集的左边界方向偏移所述数据调整偏移量的索引号,并在所述预设索引号的位置超过当前查找的有序数据集的左边界时,将所述预设索引号设置为左边界的索引号,将分界点索引号调整至预设索引号,记录索引号已调整次数;

在所述已调整次数等于所述需要调整次数时,将所述预设索引号设置为所述分界点索引号。

可选地,所述根据所述比较结果对所述有序数据集进行数据处理,包括:

在所述目标数据和所述待查找数据相同时,查找完毕;

在所述目标数据与所述待查找数据不同时,以所述预设索引号为分界点,将所述有序数据集切分为左右两份数据集;

舍弃不包含所述待查找数据的一份数据集,将剩下的一份数据集作为当前查找的有序数据集的输入。

第二方面,为实现上述目的,本发明还提出一种缓存颠簸消除装置,所述缓存颠簸消除装置包括:

获取模块,用于获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;

计算模块,用于根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;

调整模块,用于根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整。

第三方面,为实现上述目的,本发明还提出一种缓存颠簸消除设备,所述缓存颠簸消除设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的缓存颠簸消除程序,所述缓存颠簸消除程序配置为实现如上文所述的缓存颠簸消除方法的步骤。

第四方面,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有缓存颠簸消除程序,所述缓存颠簸消除程序被处理器执行时实现如上文所述的缓存颠簸消除方法的步骤。

本发明提出的缓存颠簸消除方法,通过获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整,能够消除缓存颠簸,避免了性能劣化,保证了二分算法的高效性,极大程度上降低查找部分数据时因查找次数增加带来的时间消耗。

附图说明

图1为本发明实施例方案涉及的硬件运行环境的设备结构示意图;

图2为本发明缓存颠簸消除方法第一实施例的流程示意图;

图3为本发明缓存颠簸消除方法第二实施例的流程示意图;

图4为本发明缓存颠簸消除方法第三实施例的流程示意图;

图5为本发明缓存颠簸消除方法第四实施例的流程示意图;

图6为本发明缓存颠簸消除方法第五实施例的流程示意图;

图7为本发明缓存颠簸消除方法第六实施例的流程示意图;

图8为本发明缓存颠簸消除装置第一实施例的功能模块图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的解决方案主要是:通过获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整,能够消除缓存颠簸,避免了性能劣化,保证了二分算法的高效性,极大程度上降低查找部分数据时因查找次数增加带来的时间消耗,解决了现有技术中对地址空间连续的有序数据进行二分查找时,随着缓存层级的下降,访问速度较慢,缓存颠簸造成的性能劣化严重的技术问题。

参照图1,图1为本发明实施例方案涉及的硬件运行环境的设备结构示意图。

如图1所示,该设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如Wi-Fi接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(Non-Volatile Memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的设备结构并不构成对该设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及缓存颠簸消除程序。

本发明设备通过处理器1001调用存储器1005中存储的缓存颠簸消除程序,并执行以下操作:

获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;

根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;

根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整。

本发明设备通过处理器1001调用存储器1005中存储的缓存颠簸消除程序,还执行以下操作:

从处理器中获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构;

从预设编程语言手册中获得有序数据集中有序数据的数据类型在进行内存对齐后的对齐数据大小以及所述有序数据集的数据总量。

本发明设备通过处理器1001调用存储器1005中存储的缓存颠簸消除程序,还执行以下操作:

根据所述外围缓存大小及所述N路组相连结构通过下式获得一路缓存容量:

其中,Scw为一路缓存容量,Sc为所述外围缓存大小,N为组相连结构路数;

根据所述一路缓存容量及所述对齐数据大小通过下式获得一路缓存中可容纳数据量:

其中,所述Qdcw为一路缓存中可容纳数据量,Scw为一路缓存容量,Sd为所述对齐数据大小;

根据所述一路缓存容量及所述缓存行大小通过下式获得一路缓存中缓存行数量:

其中,Qclw为一路缓存中缓存行数量,Scw为一路缓存容量,Scl为所述缓存行大小;

根据所述可容纳数据量和所述缓存行数量通过下式获得平均缓存行可容纳数据量:

其中,Qdcl为平均缓存行可容纳数据量,Qdcw为一路缓存中可容纳数据量,Qclw为一路缓存中缓存行数量;

根据所述平均缓存行可容纳数据量调整偏移量及调整次数。

本发明设备通过处理器1001调用存储器1005中存储的缓存颠簸消除程序,还执行以下操作:

根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号;

将所述有序数据集中对应所述预设索引号的目标数据和待查找数据进行比较,生成比较结果;

根据所述比较结果对所述有序数据集进行数据处理。

本发明设备通过处理器1001调用存储器1005中存储的缓存颠簸消除程序,还执行以下操作:

初始化当前二分查找过程中的已调整次数;

在检测到当前查找的有序数据集为空时,判定查找失败,结束查找过程;

记录当前查找的有序数据集的左边界索引号和右边界索引号,根据所述左边界索引号和所述右边界索引号计算当前查找的有序数据集的中间位置的索引号,将所述中间位置的索引号作为分界点索引号。

本发明设备通过处理器1001调用存储器1005中存储的缓存颠簸消除程序,还执行以下操作:

获取当前二分查找过程中的已调整次数,判断所述已调整次数是否小于所述需要调整次数;

在所述已调整次数小于所述需要调整次数时,将所述预设索引号设置为所述分界索引号向当前查找的有序数据集的左边界方向偏移所述数据调整偏移量的索引号,并在所述预设索引号的位置超过当前查找的有序数据集的左边界时,将所述预设索引号设置为左边界的索引号,将分界点索引号调整至预设索引号,记录索引号已调整次数;

在所述已调整次数等于所述需要调整次数时,将所述预设索引号设置为所述分界点索引号。

本发明设备通过处理器1001调用存储器1005中存储的缓存颠簸消除程序,还执行以下操作:

在所述目标数据和所述待查找数据相同时,查找完毕;

在所述目标数据与所述待查找数据不同时,以所述预设索引号为分界点,将所述有序数据集切分为左右两份数据集;

舍弃不包含待查找数据的一份数据集,将剩下的一份数据集作为当前查找的有序数据集的输入。

本实施例通过上述方案,通过获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整,能够消除缓存颠簸,避免了性能劣化,保证了二分算法的高效性,极大程度上降低查找部分数据时因查找次数增加带来的时间消耗。

基于上述硬件结构,提出本发明缓存颠簸消除方法实施例。

参照图2,图2为本发明缓存颠簸消除方法第一实施例的流程示意图。

在第一实施例中,所述缓存颠簸消除方法包括以下步骤:

步骤S10、获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量。

需要说明的是,获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数能够从处理器的外围缓存的缓存结构入手,为后续改善二分查找算法做准备;相应的,对地址空间连续的有序数据集进行内存对齐操作后能够获得对应的对齐数据大小以及有序数据集的数据总量。

步骤S20、根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数。

可以理解的是,通过获得的处理器缓存相关信息以及有序数据集的相关信息能够计算出数据调整偏移量及调整次数。

进一步的,所述步骤S20包括以下步骤:

根据所述外围缓存大小及所述N路组相连结构通过下式获得一路缓存容量:

其中,Scw为一路缓存容量,Sc为所述外围缓存大小,N为组相连结构路数;

根据所述一路缓存容量及所述对齐数据大小通过下式获得一路缓存中可容纳数据量:

其中,所述Qdcw为一路缓存中可容纳数据量,Scw为一路缓存容量,Sd为所述对齐数据大小;

根据所述一路缓存容量及所述缓存行大小通过下式获得一路缓存中缓存行数量:

其中,Qclw为一路缓存中缓存行数量,Scw为一路缓存容量,Scl为所述缓存行大小;

根据所述可容纳数据量和所述缓存行数量通过下式获得平均缓存行可容纳数据量:

其中,Qdcl为平均缓存行可容纳数据量,Qdcw为一路缓存中可容纳数据量,Qclw为一路缓存中缓存行数量;

根据所述平均缓存行可容纳数据量调整偏移量及调整次数。

可以理解的是,一般的,计算一路缓存的容量在如今计算机结构设计中此值必设置为整数;

计算一路缓存可以容纳的数据量设置为向上取整;

计算一路缓存中缓存行的数量在如今计算机结构设计中此值必设置为整数;

计算平均一个缓存行可以容纳的数据量设置为向上取整;

根据以上信息计算数据调整偏移量Od以及需要调整的次数Ca

在具体实现中,可以以当前环境中处理器缓存的三级缓存大小Sc=6MB、缓存行大小Scl=64B、其采用的N=12路组相联结构,在二分查找的有序数据集中,其数据的类型在进行内存对齐操作之后的大小Sd=8B。有序递增数据集的数据总量Td=8M为例;计算方式如下;

计算一路缓存的容量

计算一路缓存可以容纳的数据量

计算一路缓存中缓存行的数量

计算平均一个缓存行可以容纳的数据量

应当理解的是,根据所述平均缓存行可容纳数据量调整偏移量Od及调整次数Ca,即计算缓存开始严重颠簸时的数据量Qdct=4×Qdct=256K;

计算当前数据量为Qdct的倍数

Ca方程的整数解,解得Ca=6;

步骤S30、根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整。

应当理解的是,通过所述数据调整偏移量和所述需要调整次数能够对所述有序数据集进行二分查找算法的精细调整,从而消除对地址空间连续的有序数据进行二分查找时的缓存颠簸。

本实施例通过上述方案,通过获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整,能够消除缓存颠簸,避免了性能劣化,保证了二分算法的高效性,极大程度上降低查找部分数据时因查找次数增加带来的时间消耗。

进一步地,图3为本发明缓存颠簸消除方法第二实施例的流程示意图,如图3所示,基于第一实施例提出本发明缓存颠簸消除方法第二实施例,在本实施例中,所述步骤S10具体包括以下步骤:

步骤S11、从处理器中获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构。

需要说明的是,运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构这些信息可以从处理器的相关信息中获取。

步骤S12、从预设编程语言手册中获得有序数据集中有序数据的数据类型在进行内存对齐后的对齐数据大小以及所述有序数据集的数据总量。

可以理解的是,对齐数据大小以及所述有序数据集的数据总量可以从预先设置的编程语言的手册中获取,也可以在二分查找的有序数据集中获得对齐数据大小以及所述数据总量,本实施例对此不加以限制。

本实施例通过上述方案,通过从处理器中获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构;从预设编程语言手册中获得有序数据集中有序数据的数据类型在进行内存对齐后的对齐数据大小以及所述有序数据集的数据总量,能够保证数据的实时性和准确性,进一步确保了处理器缓存的性能,提高了二分算法的高效性。

进一步地,图4为本发明缓存颠簸消除方法第三实施例的流程示意图,如图4所示,基于第一实施例提出本发明缓存颠簸消除方法第三实施例,在本实施例中,所述步骤S30具体包括以下步骤:

步骤S31、根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号。

需要说明的是,通过所述数据调整偏移量和所述需要调整次数能够将当前查找的有序数据集的分界点索引号调整至预设索引号。

步骤S32、将所述有序数据集中对应所述预设索引号的目标数据和待查找数据进行比较,生成比较结果。

可以理解的是,所述待查找数据为需要进行二分查找的数据,将所述有序数据集中对应所述预设索引号的目标数据和待查找数据进行比较,能够生成对应的比较结果。

步骤S33、根据所述比较结果对所述有序数据集进行数据处理。

应当理解的是,根据所述比较结果能够对有序数据集采取不同的数据处理方式,进而完成对有序数据集的二分查找算法调整。

本实施例通过上述方案,通过根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号;将所述有序数据集中对应所述预设索引号的目标数据和待查找数据进行比较,生成比较结果;根据比较结果对所述有序数据集进行数据处理;能够消除缓存颠簸,避免了性能劣化,保证了二分算法的高效性,极大程度上降低查找部分数据时因查找次数增加带来的时间消耗。

进一步地,图5为本发明缓存颠簸消除方法第四实施例的流程示意图,如图5所示,基于第三实施例提出本发明缓存颠簸消除方法第四实施例,在本实施例中,所述步骤S31之前,所述缓存颠簸消除方法还包括以下步骤:

步骤S301、初始化当前二分查找过程中的已调整次数。

需要说明的是,初始化当前二分查找过程中的已调整次数,即初始化当前二分查找过程中已进行调整的次数为0。

步骤S302、在检测到当前查找的有序数据集为空时,判定查找失败,结束查找过程。

可以理解的是,在检测到当前查找的有序数据集为空时,则说明查找失败,可以结束该查找过程。

步骤S303、记录当前查找的有序数据集的左边界索引号和右边界索引号,根据所述左边界索引号和所述右边界索引号计算当前查找的有序数据集的中间位置的索引号,将所述中间位置的索引号作为分界点索引号。

应当理解的是,记录当前查找的有序数据集的左边界索引号和右边界索引号之后,可以计算当前查找的有序数据集的中间位置的索引号;

一般的,可以是通过下述公式确定中间位置的索引号,

其中,Im是当前查找的有序数据集的中间位置的索引号,相应地,Ileft为有序数据集的左边界索引号,Iright为有序数据集的右边界索引号,所述中间位置的索引号向下取整,并将其作为分界点。

本实施例通过上述方案,通过初始化当前二分查找过程中的已调整次数;在检测到当前查找的有序数据集为空时,判定查找失败,结束查找过程;记录当前查找的有序数据集的左边界索引号和右边界索引号,根据所述左边界索引号和所述右边界索引号计算当前查找的有序数据集的中间位置的索引号,将所述中间位置的索引号作为分界点索引号,能够准确确定分界点索引号,为有序数据集的数据处理做准备,提高了数据处理的速度和效率,节省了缓存颠簸消除的时间。

进一步地,图6为本发明缓存颠簸消除方法第五实施例的流程示意图,如图6所示,基于第三实施例提出本发明缓存颠簸消除方法第五实施例,在本实施例中,所述步骤S31具体包括以下步骤:

步骤S311、获取当前二分查找过程中的已调整次数,判断所述已调整次数是否小于所述需要调整次数。

需要说明的是,获取当前二分查找过程中的已进行调整的次数,进而判断所述已调整次数是否达到所述需要调整次数,即通过比较判断所述已调整次数是否小于所述需要调整次数。

步骤S312、在所述已调整次数小于所述需要调整次数时,将所述预设索引号设置为所述分界索引号向当前查找的有序数据集的左边界方向偏移所述数据调整偏移量的索引号,并在所述预设索引号的位置超过当前查找的有序数据集的左边界时,将所述预设索引号设置为左边界的索引号,将分界点索引号调整至预设索引号,记录索引号已调整次数。

在具体实现中,可以设置所述需要调整次数Ca=6,如果所述已调整次数Cac<Ca=6,将所述预设索引号Iam设置为所述分界索引号Im向当前查找的有序数据集的左边界方向偏移所述数据调整偏移量Od=256位置的索引号,即Iam=Im-Od=Im-256;如果偏移后的位置超过当前查找的有序数据集的左边界Ileft,即当Iam<Ileft时,则将Iam设置为左边界的索引号,即Iam=Ileft此步骤的最后设置所述已调整次数Cac=Cac+1,用于增加已进行调整的次数记录;即记录索引号已调整次数。

步骤S313、在所述已调整次数等于所述需要调整次数时,将所述预设索引号设置为所述分界点索引号。

可以理解的是,在所述已调整次数等于所述需要调整次数时,可以直接将所述预设索引号设置为所述分界点索引号,即Iam=Im,不进行任何调整。

本实施例通过上述方案,通过获取当前二分查找过程中的已调整次数,判断所述已调整次数是否小于所述需要调整次数;在所述已调整次数小于所述需要调整次数时,将所述预设索引号设置为所述分解索引号向当前查找的有序数据集的左边界方向偏移所述数据调整偏移量的索引号,并在所述预设索引号的位置超过当前查找的有序数据集的左边界时,将所述预设索引号设置为左边界的索引号,将分界点索引号调整至预设索引号,记录索引号已调整次数;在所述已调整次数等于所述需要调整次数时,将所述预设索引号设置为所述分界点索引号,能够准确确定分界点索引号,为有序数据集的数据处理做准备,提高了数据处理的速度和效率,节省了缓存颠簸消除的时间。

进一步地,图7为本发明缓存颠簸消除方法第六实施例的流程示意图,如图7所示,基于第三实施例提出本发明缓存颠簸消除方法第六实施例,在本实施例中,所述步骤S33具体包括以下步骤:

步骤S331、在所述目标数据和所述待查找数据相同时,查找完毕。

需要说明的是,在所述目标数据Df和所述待查找数据Ds相同时,可以直接返回预设索引号,查找完毕。

步骤S332、在所述目标数据与所述待查找数据不同时,以所述预设索引号为分界点,将所述有序数据集切分为左右两份数据集。

可以理解的是,如果Df≠Ds,则以Iam为分界点,将数据集切分为左右两份,两份集合的索引号区间分别为[Ileft,Iam-1]和[Iam+1,Iright],Ileft为左边界,Iright为右边界,如果区间左边界大于右边界可认为该索引号区间对应的有序数据集合为空。

步骤S333、舍弃不包含待查找数据的一份数据集,将剩下的一份数据集作为当前查找的有序数据集的输入。

应当理解的是,根据数据集的有序递增的特征,舍弃不包含待查找数据Ds的一份数据集;如果Df<Ds,则保留索引号区间[Iam+1,Iright]对应的数据集,如果Df>Ds,则保留索引号区间[Ileft,Iam-1]对应的数据集;进而将保留的数据集作为步骤3.2中当前查找的有序数据集的输入,跳转至步骤在所述目标数据和所述待查找数据相同时,查找完毕。

本实施例通过上述方案,通过在所述目标数据和所述待查找数据相同时,查找完毕;在所述目标数据与所述待查找数据不同时,以所述预设索引号为分界点,将所述有序数据集切分为左右两份数据集;舍弃不包含待查找数据的一份数据集,将剩下的一份数据集作为当前查找的有序数据集的输入,能够准确获得有效数据集的输入,提前筛除不包含待查找数据的数据集,减少了数据处理量,提高了数据处理的速度和效率,节省了缓存颠簸消除的时间。

相应地,本发明进一步提供一种缓存颠簸消除装置。

参照图8,图8为本发明缓存颠簸消除装置第一实施例的功能模块图。

本发明缓存颠簸消除装置第一实施例中,该缓存颠簸消除装置包括:

获取模块10,用于获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量。

计算模块20,用于根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数。

调整模块30,用于根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整。

所述获取模块10,还用于从处理器中获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构;从预设编程语言手册中获得有序数据集中有序数据的数据类型在进行内存对齐后的对齐数据大小以及所述有序数据集的数据总量。

所述计算模块20,还用于根据所述外围缓存大小及所述N路组相连结构通过下式获得一路缓存容量:

其中,Scw为一路缓存容量,Sc为所述外围缓存大小,N为组相连结构路数;

根据所述一路缓存容量及所述对齐数据大小通过下式获得一路缓存中可容纳数据量:

其中,所述Qdcw为一路缓存中可容纳数据量,Scw为一路缓存容量,Sd为所述对齐数据大小;

根据所述一路缓存容量及所述缓存行大小通过下式获得一路缓存中缓存行数量:

其中,Qclw为一路缓存中缓存行数量,Scw为一路缓存容量,Scl为所述缓存行大小;

根据所述可容纳数据量和所述缓存行数量通过下式获得平均缓存行可容纳数据量:

其中,Qdcl为平均缓存行可容纳数据量,Qdcw为一路缓存中可容纳数据量,Qclw为一路缓存中缓存行数量;

根据所述平均缓存行可容纳数据量调整偏移量及调整次数。

所述调整模块30,还用于根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号;将所述有序数据集中对应所述预设索引号的目标数据和待查找数据进行比较,生成比较结果;根据比较结果对所述有序数据集进行数据处理。

所述调整模块30,还用于初始化当前二分查找过程中的已调整次数;在检测到当前查找的有序数据集为空时,判定查找失败,结束查找过程;记录当前查找的有序数据集的左边界索引号和右边界索引号,根据所述左边界索引号和所述右边界索引号计算当前查找的有序数据集的中间位置的索引号,将所述中间位置的索引号作为分界点索引号。

所述调整模块30,还用于获取当前二分查找过程中的已调整次数,判断所述已调整次数是否小于所述需要调整次数;在所述已调整次数小于所述需要调整次数时,将所述预设索引号设置为所述分解索引号向当前查找的有序数据集的左边界方向偏移所述数据调整偏移量的索引号,并在所述预设索引号的位置超过当前查找的有序数据集的左边界时,将所述预设索引号设置为左边界的索引号,将分界点索引号调整至预设索引号,记录索引号已调整次数;在所述已调整次数等于所述需要调整次数时,将所述预设索引号设置为所述分界点索引号。

所述调整模块30,还用于在所述目标数据和所述待查找数据相同时,查找完毕;在所述目标数据与所述待查找数据不同时,以所述预设索引号为分界点,将所述有序数据集切分为左右两份数据集;舍弃不包含待查找数据的一份数据集,将剩下的一份数据集作为当前查找的有序数据集的输入。

其中,缓存颠簸消除装置的各个功能模块实现的步骤可参照本发明缓存颠簸消除方法的各个实施例,此处不再赘述。

此外,本发明实施例还提出一种存储介质,所述存储介质上存储有缓存颠簸消除程序,所述缓存颠簸消除程序被处理器执行时实现如下操作:

获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;

根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;

根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整。

进一步地,所述缓存颠簸消除程序被处理器执行时还实现如下操作:

从处理器中获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的N路组相连结构;

从预设编程语言手册中获得有序数据集中有序数据的数据类型在进行内存对齐后的对齐数据大小以及所述有序数据集的数据总量。

进一步地,所述缓存颠簸消除程序被处理器执行时还实现如下操作:

根据所述外围缓存大小及所述N路组相连结构通过下式获得一路缓存容量:

其中,Scw为一路缓存容量,Sc为所述外围缓存大小,N为组相连结构路数;

根据所述一路缓存容量及所述对齐数据大小通过下式获得一路缓存中可容纳数据量:

其中,所述Qdcw为一路缓存中可容纳数据量,Scw为一路缓存容量,Sd为所述对齐数据大小;

根据所述一路缓存容量及所述缓存行大小通过下式获得一路缓存中缓存行数量:

其中,Qclw为一路缓存中缓存行数量,Scw为一路缓存容量,Scl为所述缓存行大小;

根据所述可容纳数据量和所述缓存行数量通过下式获得平均缓存行可容纳数据量:

其中,Qdcl为平均缓存行可容纳数据量,Qdcw为一路缓存中可容纳数据量,Qdcw为一路缓存中缓存行数量;

根据所述平均缓存行可容纳数据量调整偏移量及调整次数。

进一步地,所述缓存颠簸消除程序被处理器执行时还实现如下操作:

根据所述数据调整偏移量和所述需要调整次数将当前查找的有序数据集的分界点索引号调整至预设索引号;

将所述有序数据集中对应所述预设索引号的目标数据和待查找数据进行比较,生成比较结果;

根据比较结果对所述有序数据集进行数据处理。

进一步地,所述缓存颠簸消除程序被处理器执行时还实现如下操作:

初始化当前二分查找过程中的已调整次数;

在检测到当前查找的有序数据集为空时,判定查找失败,结束查找过程;

记录当前查找的有序数据集的左边界索引号和右边界索引号,根据所述左边界索引号和所述右边界索引号计算当前查找的有序数据集的中间位置的索引号,将所述中间位置的索引号作为分界点索引号。

进一步地,所述缓存颠簸消除程序被处理器执行时还实现如下操作:

获取当前二分查找过程中的已调整次数,判断所述已调整次数是否小于所述需要调整次数;

在所述已调整次数小于所述需要调整次数时,将所述预设索引号设置为所述分解索引号向当前查找的有序数据集的左边界方向偏移所述数据调整偏移量的索引号,并在所述预设索引号的位置超过当前查找的有序数据集的左边界时,将所述预设索引号设置为左边界的索引号,将分界点索引号调整至预设索引号,记录索引号已调整次数;

在所述已调整次数等于所述需要调整次数时,将所述预设索引号设置为所述分界点索引号。

进一步地,所述缓存颠簸消除程序被处理器执行时还实现如下操作:

在所述目标数据和所述待查找数据相同时,查找完毕;

在所述目标数据与所述待查找数据不同时,以所述预设索引号为分界点,将所述有序数据集切分为左右两份数据集;

舍弃不包含待查找数据的一份数据集,将剩下的一份数据集作为当前查找的有序数据集的输入。

本实施例通过上述方案,通过获取运行环境中处理器缓存的外围缓存大小、缓存行大小以及采用的组相连结构路数,并获取对地址空间连续的有序数据集中数据类型在进行内存对齐后的对齐数据大小,有序数据集的数据总量;根据所述外围缓存大小、所述缓存行大小、所述组相连结构路数、所述对齐数据大小和所述数据总量计算数据调整偏移量及调整次数;根据所述数据调整偏移量和所述需要调整次数对所述有序数据集进行二分查找调整,能够消除缓存颠簸,避免了性能劣化,保证了二分算法的高效性,极大程度上降低查找部分数据时因查找次数增加带来的时间消耗。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据操作方法、数据操作装置、数据处理器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!