CN116467133A - 测试缓存性能的方法和装置 - Google Patents

测试缓存性能的方法和装置 Download PDF

Info

Publication number
CN116467133A
CN116467133A CN202310390136.7A CN202310390136A CN116467133A CN 116467133 A CN116467133 A CN 116467133A CN 202310390136 A CN202310390136 A CN 202310390136A CN 116467133 A CN116467133 A CN 116467133A
Authority
CN
China
Prior art keywords
cache
target
data request
address
target cache
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
Application number
CN202310390136.7A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202310390136.7A priority Critical patent/CN116467133A/zh
Publication of CN116467133A publication Critical patent/CN116467133A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供一种测试缓存性能的方法和装置,能够实现对缓存性能的测试。所述方法包括:连续向缓存中的目标缓存区域发送数据请求,并使所述目标缓存区域中的全部缓存行均被占用;对所述目标缓存区域的缓存性能进行测试。

Description

测试缓存性能的方法和装置
技术领域
本申请实施例涉及存储领域,并且更具体地,涉及一种测试缓存性能的方法和装置。
背景技术
缓存作为处理器中访问外部存储时的暂存数据设备,影响着处理器的性能。在缓存设计过程中,如果能够对其架构的合理性,例如缓存容量的大小、缓存中的缓存库的数量、缓存集的数量等预先作出评估,则对于设计出满足性能需求的缓存具有重要意义。为此,需要对缓存的性能进行测试。
发明内容
本申请实施例提供一种测试缓存性能的方法和装置,能够实现对缓存性能的测试。
第一方面,提供一种测试缓存性能的方法,所述方法包括:连续向缓存中的目标缓存区域发送数据请求,并使所述目标缓存区域中的全部缓存行均被占用;对所述目标缓存区域的缓存性能进行测试。
在一种实现方式中,在所述连续向缓存中的目标缓存区域发送数据请求之前,所述方法还包括:根据所述目标缓存区域,确定所述数据请求的地址。
在一种实现方式中,所述缓存包括至少一个缓存库,每个缓存库包括至少一个缓存集,每个缓存集包括至少一个缓存行,所述目标缓存区域包括以下中的任意一种:所述缓存中的全部缓存库;所述缓存中的目标缓存库;所述目标缓存库中的目标缓存集。
在一种实现方式中,所述数据请求的地址从低位至高位依次包括缓存库寻址位、缓存集寻址位和缓存行寻址位,所述缓存库寻址位、所述缓存集寻址位和所述缓存行寻址位分别为N比特、M比特和K比特。
在一种实现方式中,所述目标缓存库包括全部缓存库中的边缘地址的缓存库,和/或,所述目标缓存集包括所述目标缓存库中的边缘地址的缓存集。
在一种实现方式中,所述缓存包括不同层级的缓存区域,所述层级从高至低的缓存区域依次为缓存库、缓存集和缓存行,其中,所述目标缓存区域中的全部缓存行均被占用,包括:根据所述目标缓存区域,确定所述数据请求的地址,使得对于所述目标缓存区域中相邻两个层级的缓存区域,全部高层级的缓存区域中相同地址的低层级的缓存区域依次被占用后,所述全部高层级的缓存区域中下一个地址的低层级的缓存区域依次被占用。
在一种实现方式中,相邻两次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位之间连续。
在一种实现方式中,所述目标缓存区域中的全部缓存行均被占用,包括:所述目标缓存区域中的全部缓存行均被占用且依次被命中,或者所述目标缓存区域中的全部缓存行均被占用且依次未命中。
在一种实现方式中,若所述目标缓存区域包括所述缓存中的全部缓存库,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:根据Ai+1=Ai+1或者Ai+1=Ai-1,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址;其中,所述数据请求的地址变化范围为0至2M×2N×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×2N×(K-1);或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,若所述目标缓存区域包括目标缓存库,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:根据Ai+1=Ai+1<<N或者Ai+1=Ai-1<<N,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使缓存库寻址位不变;其中,所述数据请求的地址变化范围为0至2M×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×(K-1);或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,若所述目标缓存区域包括目标缓存集,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:根据Ai+1=Ai+1<<(M+N)或者Ai+1=Ai-1<<(M+N),确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使缓存库寻址位和缓存集寻址位不变;其中,所述数据请求的地址变化范围为0至K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤K-1;或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,第一次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位为随机值。
在一种实现方式中,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:根据所述目标缓存区域,确定所述数据请求的初始地址;对所述数据请求的初始地址进行哈希处理,得到所述数据请求的哈希地址;对所述数据请求的哈希地址进行逆哈希处理,得到所述数据请求的实际输入地址;其中,所述连续向缓存中的目标缓存区域发送数据请求,包括:根据所述数据请求的实际输入地址,连续向所述目标缓存区域发送数据请求。
在一种实现方式中,所述对所述目标缓存区域的缓存性能进行测试,包括:根据向所述目标缓存区域发送所述数据请求的速度、以及所述目标缓存区域向所述目标缓存区域中的下级缓存区域分发所述数据请求的速度,检测所述目标缓存区域是否处于反压状态;在检测到所述目标缓存区域处于所述反压状态的时长大于或等于预设阈值时,确定所述目标缓存区域不满足缓存性能要求。
在一种实现方式中,所述在检测到所述目标缓存区域处于所述反压状态的时长大于或等于预设阈值时,确定所述目标缓存区域不满足缓存性能要求,包括:在检测到向所述目标缓存区域发送所述数据请求与接收其返回的数据之间的时延大于或等于所述预设阈值时,确定所述目标缓存区域不满足缓存性能要求;或者,在检测到所述目标缓存区域无法继续接收所述数据请求所持续的时间大于或等于所述预设阈值时,确定所述目标缓存区域不满足缓存性能要求。
在一种实现方式中,所述目标缓存区域包括全部缓存库,所述缓存性能为向所述全部缓存库分发所述数据请求的性能,和/或所述全部缓存库响应于所述数据请求而返回数据时所述缓存的数据仲裁性能;所述目标缓存区域包括目标缓存库,所述缓存性能为所述目标缓存库向所述目标缓存库中的全部缓存集分发所述数据请求的性能;所述目标缓存区域包括目标缓存集,所述缓存性能为所述目标缓存集向所述目标缓存集中的全部缓存行分发所述数据请求的性能。
第二方面,提供一种测试缓存性能的装置,所述装置包括:收发模块,用于连续向缓存中的目标缓存区域发送数据请求,并使所述目标缓存区域中的全部缓存行均被占用;处理模块,用于对所述目标缓存区域的缓存性能进行测试。
在一种实现方式中,所述处理模块还用于:根据所述目标缓存区域,确定所述数据请求的地址。
在一种实现方式中,所述缓存包括至少一个缓存库,每个缓存库包括至少一个缓存集,每个缓存集包括至少一个缓存行,所述目标缓存区域包括以下中的任意一种:所述缓存中的全部缓存库;所述缓存中的目标缓存库;所述目标缓存库中的目标缓存集。
在一种实现方式中,所述数据请求的地址从低位至高位依次包括缓存库寻址位、缓存集寻址位和缓存行寻址位,所述缓存库寻址位、所述缓存集寻址位和所述缓存行寻址位分别为N比特、M比特和K比特。
在一种实现方式中,所述目标缓存库包括全部缓存库中的边缘地址的缓存库,和/或,所述目标缓存集包括所述目标缓存库中的边缘地址的缓存集。
在一种实现方式中,所述缓存包括不同层级的缓存区域,所述层级从高至低的缓存区域依次为缓存库、缓存集和缓存行,其中,所述目标缓存区域中的全部缓存行均被占用,包括:对于所述目标缓存区域中相邻两个层级的缓存区域,全部高层级的缓存区域中相同地址的低层级的缓存区域依次被占用后,所述全部高层级的缓存区域中下一个地址的低层级的缓存区域依次被占用。
在一种实现方式中,相邻两次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位之间连续。
在一种实现方式中,所述目标缓存区域中的全部缓存行均被占用,包括:所述目标缓存区域中的全部缓存行均被占用且依次被命中,或者所述目标缓存区域中的全部缓存行均被占用且依次未命中。
在一种实现方式中,若所述目标缓存区域包括所述缓存中的全部缓存库,所述处理模块还用于:根据Ai+1=Ai+1或者Ai+1=Ai-1,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址;其中,所述数据请求的地址变化范围为0至2M×2N×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×2N×(K-1);或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,若所述目标缓存区域包括目标缓存库,所述处理模块还用于:根据Ai+1=Ai+1<<N或者Ai+1=Ai-1<<N,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使缓存库寻址位不变;其中,所述数据请求的地址变化范围为0至2M×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×(K-1);或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,若所述目标缓存区域包括目标缓存集,所述处理模块还用于:根据Ai+1=Ai+1<<(M+N)或者Ai+1=Ai-1<<(M+N),确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使缓存库寻址位和所述缓存集寻址位不变;其中,所述数据请求的地址变化范围为0至K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤K-1;或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,第一次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位为随机值。
在一种实现方式中,所述处理模块具体用于:根据所述目标缓存区域,确定所述数据请求的初始地址;对所述数据请求的初始地址进行哈希处理,得到所述数据请求的哈希地址;对所述数据请求的哈希地址进行逆哈希处理,得到所述数据请求的实际输入地址;根据所述数据请求的实际输入地址,连续向所述目标缓存区域发送数据请求。
在一种实现方式中,所述处理模块具体用于:根据向所述目标缓存区域发送所述数据请求的速度、以及所述目标缓存区域向所述目标缓存区域中的下级缓存区域分发所述数据请求的速度,检测所述目标缓存区域是否处于反压状态;在检测到所述目标缓存区域处于所述反压状态的时长大于或等于预设阈值时,确定所述目标缓存区域不满足缓存性能要求。
在一种实现方式中,所述处理模块具体用于:在检测到向所述目标缓存区域发送所述数据请求与接收其返回的数据之间的时延大于或等于所述预设阈值时,确定所述目标缓存区域不满足缓存性能要求;或者,在检测到所述目标缓存区域无法继续接收所述数据请求所持续的时间大于或等于所述预设阈值时,确定所述目标缓存区域不满足缓存性能要求。
在一种实现方式中,所述目标缓存区域包括全部缓存库,所述缓存性能为向所述全部缓存库分发所述数据请求的性能,和/或所述全部缓存库响应于所述数据请求而返回数据时所述缓存的数据仲裁性能;所述目标缓存区域包括目标缓存库,所述缓存性能为所述目标缓存库向所述目标缓存库中的全部缓存集分发所述数据请求的性能;所述目标缓存区域包括目标缓存集,所述缓存性能为所述目标缓存集向所述目标缓存集中的全部缓存行分发所述数据请求的性能。
第三方面,提供一种测试缓存性能的设备,包括存储器和处理器,所述存储器存储计算机指令,所述处理器调用所述计算机指令以使所述设备实现根据上述第一方面或第一方面的任一实现方式中所述的测试缓存性能的方法。
第四方面,提供一种计算机可读存储介质,用于存储计算机程序,当所述计算机程序被计算设备执行时,使得所述计算设备实现上述第一方面或第一方面的任一实现方式中所述的测试缓存性能的方法。
第五方面,提供一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述第一方面或第一方面的任一实现方式中所述的测试缓存性能的方法。
基于该技术方案,针对缓存中可能存在的性能瓶颈选择目标缓存区域,通过向目标缓存区域连续输入数据请求,以保证足够大的测试压力,同时使该目标缓存区域的输出达到最大带宽,以保证如果出现性能瓶颈,是由于数据请求分发所导致的,而不是下游的性能瓶颈导致的,从而能够对缓存的不同性能点进行冲击。也就是说,连续向目标缓存区域发送数据请求且使目标缓存区域的输出带宽最大。在这样的状态下,便能够对目标缓存区域的缓存性能进行有效的测试。
附图说明
图1是本申请实施例的缓存的一种可能的架构的示意图。
图2是本申请实施例的测试缓存性能的方法的示意性流程图。
图3是本申请实施例的数据请求的地址的示意图。
图4是本申请实施例的缓存性能模型的示意图。
图5是本申请实施例的访问全部缓存库中全部缓存行的示意图。
图6是本申请实施例的访问目标缓存库中全部缓存行的示意图。
图7是本申请实施例的访问目标缓存集中全部缓存行的示意图。
图8是本申请实施例的测试缓存性能的装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
通常,我们希望缓存能够连续接收来自上游的数据请求,并及时返回所请求的数据,但是由于缓存本身的微架构的设计、以及缓存的下游对数据请求的响应速度等原因,缓存可能出现无法连续接收来自上游的数据请求而产生反压的情况,从而使缓存无法达到其预期的性能。
为了帮助设计人员能够在设计初期快速地对缓存可能存在的性能问题作出评估,提高缓存设计的效率,减少迭代次数,本申请实施例提供了一种测试缓存性能的方案,能够针对缓存可能存在的不同性能瓶颈,进行相应的性能测试。
图1示出了本申请实施例的缓存的一种可能的架构的示意图。如图1所示,缓存中包括至少一个缓存库(bank),每个缓存库包括至少一个缓存集(set),每个缓存集包括至少一个缓存行(cacheline)。缓存的上游发送的数据请求中携带所请求访问的缓存地址,缓存会以缓存库为单位检查该数据请求是否命中,例如,查找该地址对应的缓存库中的缓存集中的每条缓存行对应的标号(tag)是否和数据请求的地址中的缓存标号相等,如果和缓存集中任一条缓存行的标号相等,则表示命中(hit),该数据请求直接在缓存内部进行处理,这样,对该数据请求的处理速度最快;如果和缓存集中所有缓存行的标号均不一样,则表示未命中(miss)。此时,未命中时对该数据请求的处理速度会比命中时对该数据请求的处理速度慢,因为该数据请求的地址的数据并没有存储在缓存行中,需要向下游发起数据请求(allocation)。
图2示出了本申请实施例的测试缓存性能的方法,该方法能够提供一种通用的缓存性能的测试集,用于使待测试的缓存区域进入测试状态,在该测试状态下对缓存性能进行测试。如图2所示,方法100包括以下步骤中的部分或者全部。
在步骤110中,连续向缓存中的目标缓存区域发送数据请求,并使目标缓存区域中的全部缓存行均被占用。
在步骤120中,对目标缓存区域的缓存性能进行测试。
目标请求区域中的全部缓存行均被占用,可以理解为,目标请求区域的输出带宽为最大。也就是说,在步骤110中,需要连续向目标缓存区域发送数据请求且使目标缓存区域的输出带宽为最大。
其中,连续发送数据请求的地址是变化的,从而使目标缓存区域中的不同缓存行均能够被访问,即全部缓存行均被占用。
可见,针对缓存中可能存在的性能瓶颈选择目标缓存区域,通过向目标缓存区域连续输入数据请求,以保证足够大的测试压力,同时使该目标缓存区域的输出达到最大带宽,以保证如果出现性能瓶颈,是由于数据请求分发所导致的,而不是下游的性能瓶颈导致的,从而能够对缓存的不同性能点进行冲击。在这样的状态下,便能够对目标缓存区域的缓存性能进行有效的测试。
该数据请求也可以称为缓存请求、输入请求或者缓存输入请求等。可以理解,这里所述的数据请求为连续发送的多个数据请求的统称。该数据请求中携带需要访问的地址。
例如,如图3所示,该数据请求的地址从低位至高位依次包括缓存库寻址位、缓存集寻址位和缓存行寻址位。其中,缓存库寻址位用于指示该地址属于缓存中的哪个缓存库;缓存集寻址位用于指示该地址属于缓存中的哪个缓存集;缓存行寻址位也称标号位,用于指示数据请求所访问的缓存行。
本申请实施例中,假设缓存库寻址位、缓存集寻址位和缓存行寻址位分别为N比特、M比特和K比特。那么,缓存包括2N个缓存库,每个缓存库包括2M个缓存集,每个缓存集包括K条缓存行,该缓存的总缓存行数为2M×2N×K。
如上所述,缓存包括至少一个缓存库,每个缓存库包括至少一个缓存集,每个缓存集包括至少一个缓存行,因此,该目标缓存区域例如可以包括以下中的任意一种:
缓存中的全部缓存库;
缓存中的目标缓存库中,该目标缓存库例如可以包括边缘缓存库,即全部缓存库中位于边缘地址的缓存库;
目标缓存库中的目标缓存集,该目标缓存集例如可以包括边缘缓存集,即目标缓存库中位于边缘地址的缓存集。
例如,如图2所示,从左至右的多个缓存库对应的缓存库寻址位的值依次增大,边缘缓存库可以是全部缓存库中缓存库寻址为最小或者最大的缓存库,即图2中位于最左侧或者最右侧的缓存库;类似地,如图2所示,在每个缓存库中,从上至下的多个缓存集对应的缓存集寻址位的值依次增大,边缘缓存集可以是该缓存库中缓存集寻址为最小或者最大的缓存集,即图2中位于最上方或者最下方的缓存库。
在对缓存性能进行测试时,所选择的目标缓存库区域不同,所针对的性能瓶颈点也不同。例如,目标缓存区域包括全部缓存库时,对目标缓存区域的缓存性能进行测试,包括针对该缓存的输入性能和/或输出性能的测试,即性能瓶颈点在于缓存的输入输出层面;缓存性能就是目标缓存库的性能,也就是说性能瓶颈点在目标缓存库;目标缓存区域包括目标缓存集时,对目标缓存区域的缓存性能进行测试,包括对该目标缓存库的性能测试,也就是说性能瓶颈点在缓存库层面;所述目标缓存区域包括所述目标缓存集时,对目标缓存区域的缓存性能进行测试,包括对该目标缓存集的性能测试,也就是说性能瓶颈点在缓存集层面。
可以针对缓存中可能存在的性能瓶颈选择目标缓存区域,例如,目标缓存区域为全部缓存库,可以测试的缓存性能为向全部缓存库分发数据请求的性能,和/或全部缓存库响应于数据请求而返回数据时缓存的数据仲裁性能;又例如,目标缓存区域为目标缓存库,可以测试的缓存性能为目标缓存库向目标缓存库中的全部缓存集分发数据请求的性能;再例如,目标缓存区域为目标缓存集,可以测试的缓存性能为目标缓存集向目标缓存集中的全部缓存行分发数据请求的性能。
以下,结合图4进行具体描述。图4示出了本申请实施例的缓存性能模型。其中,图4从架构层面描述了可能对缓存性能产生影响的所有性能瓶颈点。如图4所示,该缓存性能模型从数据流由上游到下游的输入输出层面、缓存库层面和缓存集层面三个层面提出了缓存可能具有的4个性能瓶颈点。
1)输入输出层面
对于向缓存库分发数据请求而言,该数据请求将按照所请求的缓存库寻址位,将数据请求分配至不同的缓存库中并行处理,如果缓存设计无法满足持续接收连续的数据请求并将其及时分发至不同的缓存库中进行处理,则缓存无法持续接收该数据请求,进而出现数据请求的反压。
缓存库在接收到数据请求后,会返回数据。不同缓存库因为并行处理数据请求,可能同时向上游返回数据,各个缓存库返回的数据会进行仲裁后返回给上游。如果仲裁器的设计不合适,例如仲裁结果永远只选择同一个缓存库返回的数据,则会导致其他缓存库的数据无法返回,从而在对返回数据进行仲裁时形成数据的反压,形成性能瓶颈。
2)缓存库层面
每个缓存库接收上游分发下来的数据请求,根据该数据请求的缓存集寻址位分发给不同的缓存集进行处理。对于缓存库向缓存集分发数据请求而言,如果向某个缓存库发送连续请求的速度超过了该缓存库向缓存集分发数据请求的速度,则会导致该缓存库无法继续的接收数据请求,导致该缓存库出现数据请求的反压,形成性能瓶颈。
3)缓存集层面
缓存按照缓存集的粒度进行是否命中的判断、以及新缓存行的分配。如果该数据请求未命中,则会为该数据请求分配一条缓存行,进而向下游发起数据请求;如果向某一个缓存集连续发送数据请求,导致该缓存集中所有缓存行都被占用,那么后续向这个缓存集发送的数据请求如果未命中且该缓存集中所有缓存行均被占用并且未释放,则无法为该数据请求分配缓存行,从而导致缓存集出现数据请求的反压,形成性能瓶颈。
针对缓存的上述4个性能瓶颈,本申请分别提出将能够覆盖不同性能点的数据请求作为激励,以形成性能测试集,能够更好地对缓存的不同性能点进行冲击,暴露性能瓶颈。该激励需要满足如下要求,即连续输入数据请求,以保证足够大的测试压力,同时输出达到最大带宽,以保证如果出现性能瓶颈,是由于分发数据请求所导致的,而不是下游的性能瓶颈导致的。
对于上述第1)点,向缓存库分发数据请求时,期望数据请求能够连续发送,达到最大的测试压力,同时期望向多个缓存库分发数据请求后多个缓存库的输出也能够达到最大带宽,即缓存中的所有缓存库、缓存库中的所有缓存集、缓存集中的所有缓存行都能得到有效利用。
另外,多个缓存库可能同时返回数据,需要进行仲裁,因此期望向多个缓存库均发送数据请求,从而使多个缓存库同时返回数据,实现最大压力的测试场景,以对数据仲裁性能进行测试的。
对于上述第2)点,缓存库向缓存集分发数据请求时,也期望达到最大压力的测试场景,需要连续对待测试的缓存库发送数据请求。同时,需要使该缓存库的输出达到最大带宽,即该缓存库的所有缓存集的所有行均被充分利用,以保证性能瓶颈不是由下游的性能瓶颈导致。
对于上述第3)点,需要对同一个缓存集连续发送数据请求,直至达到最大的测试压力,同时保证该缓存集中的所有缓存行均能够被有效利用,以使该缓存集的输出达到最大带宽。
在一种实现方式中,在步骤110中,连续向目标缓存区域发送数据请求,以使该目标缓存区域中的全部缓存行依次被命中,或者使该目标缓存区域中的全部缓存行依次未命中。
可以理解,向缓存发送数据请求是测试手段,本身并不是缓存性能指标的一部分。缓存性能例如可以通过数据请求时的反压时间,或者接收数据请求与返回数据之间的延时时间等指标来评价。
在上述第1)点所述的输入输出层面,在连续向缓存中输入数据请求,该数据请求无法及时地被分发至各个缓存库中,可能出现反压,如果在输入输出层面上反压状态持续的时长超过一定的阈值,则会出现输入输出层面的性能瓶颈。
在上述第2)点所述的缓存集层面,在连续向某个缓存库发送数据请求,该缓存库下游的缓存结构又都被占用时,如果继续向该缓存库发送数据请求,向该缓存库发送数据请求的速度,可能会超过该缓存库向下游分发数据请求的速度,从而出现数据请求的反压,这时,缓存库接收数据请求的能力会降低,甚至可能导致无法接收来自上游的数据请求,如果这一反压状态持续的时长超过一定的阈值,可以认为向该缓存库发送数据请求所带来的输入压力,超过了该缓存库中各个缓存集对数据请求的处理能力,而出现缓存库性能瓶颈。
在上述第3)点所述的缓存集层面,在连续向某个缓存集发送数据请求,该缓存集下游的缓存结构又都被占用时,继续向该缓存集发送数据请求,向该缓存集发送数据请求的速度,可能会超过该缓存集向下游分发数据请求的速度,从而出现数据请求的反压,如果反压时长超过一定的阈值,则会出现缓存集性能瓶颈。
因此,在向目标缓存区域连续发送数据请求并使其输出带宽最大,即目标缓存区域达到上述的测试状态后,在一种实现方式中,在步骤120中,对目标缓存区域的缓存性能进行测试,包括:根据向目标缓存区域发送数据请求的速度、以及目标缓存区域向该目标缓存区域中的下级缓存区域分发数据请求的速度,检测该目标缓存区域是否处于反压状态;在检测到该目标缓存区域处于反压状态的时长大于或等于预设阈值时,确定该目标缓存区域不满足缓存性能要求。
例如,可以根据向目标请求区域发送数据请求与接收其返回的数据之间的时延,确定目标缓存区域是否满足缓存性能要求,比如该时延大于预设的第一阈值时,认为目标缓存区域不能够满足缓存性能要求,时延小于该第一阈值时,认为目标缓存区域能够满足缓存性能要求;又例如,可以根据测试数据请求反压时目标缓存区域无法继续接收该数据请求所持续的时间,确定目标缓存区域是否满足缓存性能需求,比如持续时间大于预设的第二阈值时,认为目标缓存区域不能够满足缓存性能要求,持续时间小于该第二阈值时,认为目标缓存区域能够满足缓存性能要求。对于如何评价目标缓存区域的缓存性能是否满足要求,还可能具有其他方式,本申请对此不做限定,只要采用本申请实施例提供的方法使目标缓存区域进入上述的测试状态即可。
可以理解,在根据向目标缓存区域发送数据请求的速度、以及目标缓存区域向该目标缓存区域中的下级缓存区域分发数据请求的速度,检测该目标缓存区域是否满足缓存性能要求时,进一步地,可以具体检测到该目标缓存区域中的缓存节点是否满足相应的缓存性能。例如,当目标缓存区域为全部缓存库时,待测试的缓存节点可以是全部缓存库中的某个特定的缓存库,当目标缓存区域为目标缓存库时,待测试的缓存节点可以该目标缓存库中某个特定的缓存集,等等。这时,可以根据向目标缓存区域的待测缓存节点发送数据请求的速度、以及待测缓存节点向其下游分发数据请求的速度,检测待测缓存节点是否处于反压状态,并根待测缓存节点是否处于反压状态的时长大于或等于预设阈值时,确定该待测缓存节点不满足相应的缓存性能要求。其中,需要进行检测的缓存节点的数量可以是一个也可以是多个。也就是说,目标缓存区域包括多个缓存节点,可以根据实际的反压情况,定位到某个缓存节点,从而了解该缓存节点的缓存性能的好坏。
对于上述的针对不同性能瓶颈点的激励,如果所有数据请求除首次访问外都能命中缓存,则该数据请求直接在缓存中进行处理,处理速度最快,在该状态下,能够测试到该性能瓶颈点对应的最优性能;如果所有数据请求都未命中缓存,则缓存需要从下游请求数据,这样,每次请求数据时都需要消耗额外的下游取数据时间,速度最慢,这样能够测试该性能瓶颈点对应的最差性能。
因此,在步骤120中,连续向缓存中的目标缓存区域发送数据请求时,可以实现两种测试状态,即目标缓存区域中的全部缓存行依次被命中,以及目标缓存区域中的全部缓存行依次未命中。
其中,目标缓存区域中的全部缓存行依次被命中时,该目标缓存库的性能为最佳;目标缓存区域中的全部缓存行依次未命中时,相应的缓存性能为最差。
在一种实现方式中,在步骤110之前,方法100还包括:根据目标缓存区域,确定数据请求的地址。通过合理地设置数据请求的地址,能够快速地使目标缓存区域中的全部缓存行依次被占用,使其尽快达到测试状态。
缓存是由缓存行、缓存集、缓存库形成的多级结构,其包括不同层级的缓存区域,层级从高至低的缓存区域依次为缓存、缓存库、缓存集和缓存行,也就是说,缓存库为缓存的下一层级,缓存集为缓存库的下一层级,缓存行为缓存集的下一层级。
目标缓存区域可能是任一层级的缓存区域,当目标缓存库包括整个缓存即全部缓存库时,需要确定该数据请求的地址中的缓存库寻址位、缓存集寻址位和标号位;当目标缓存库包括目标缓存库时,该数据请求的地址中的缓存库寻址位固定为该目标缓存库的地址,这时,需要确定该数据请求的地址中的缓存集寻址位和标号位;当目标缓存库包括目标缓存集时,该数据请求的地址中的缓存集寻址位固定为该目标缓存集的地址,缓存库寻址位固定为该目标缓存集所属的目标缓存库的地址,这时,需要确定该数据请求的地址中的标号位。
本申请实施例中,可以通过设置连续发送的数据请求的地址变化范围,使目标缓存区域中的全部缓存行依次被命中,或者使目标缓存区域中的全部缓存行依次未命中。从而能够针对不同性能点的最优性能和最差性能进行测试,直观地展示不同性能点对应的最优性能和最差性能,便于对不同程度的缓存性能进行分析。
以下,结合图5至图7,针对不同的目标缓存区域,分别描述如何使目标缓存区域达到相应的测试状态。
在一种实现方式中,相邻两次发送的数据请求的地址中用于访问该目标缓存区域中各个缓存行的寻址位之间连续,即相差1。这里,用于访问该目标缓存区域中各个缓存行的寻址位是指,数据请求的地址中比目标缓存区域的层级低的存储区域对应的寻址位。例如,目标缓存区域包括全部缓存库时,其对应的寻址位包括缓存库寻址位、缓存集寻址位和缓存行寻址位;目标缓存区域全部目标缓存库时,由于缓存库寻址为固定,该目标缓存区域对应的寻址位包括缓存集寻址位和缓存行寻址位;目标缓存区域全部目标缓存集时,由于缓存集寻址为固定,该目标缓存区域对应的寻址位包括缓存行寻址位。
需要说明的是,本申请实施例中,连续发送数据请求,是指在时间上连续发送数据请求,从而使测试压力达到最大,这时,目标缓存区域可能会出现数据请求的反压的情况,这样便能够更好地测试目标缓存区域对数据请求的处理速度。而数据请求的地址连续,是指地址值的连续,其目的是为了方便使目标缓存区域中的全部缓存行均能够被占用,从而使目标缓存区域的输出带宽达到最大。
在一种实现方式中,目标缓存区域中的全部缓存行均被占用,包括:对于目标缓存区域中相邻两个层级的缓存区域,全部高层级的缓存区域中相同地址的低层级的缓存区域依次被占用后,全部高层级的缓存区域中下一个地址的低层级的缓存区域依次被占用。可以理解,所述的相同地址和下一个地址,是指低层级的缓存区域的地址,即数据请求中低层级的缓存区域对应的寻址位,例如,低层级的缓存区域为缓存集,则该地址为缓存集寻址位,低层级的缓存区域为缓存行,则该地址为标号位。以下,结合图5至图7进行详细说明。
情况1
在一种实现方式中,若目标缓存区域包括全部缓存库,则根据Ai+1=Ai+1或者Ai+1=Ai-1,确定数据请求的地址,Ai+1为第i+1次发送的数据请求的地址,Ai为第i次发送的数据请求的地址。
其中,可选地,数据请求的地址变化范围为0至2M×2N×K,以使目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×2N×(K-1);或者,对数据请求的地址变化范围不限制,以使目标缓存区域中的全部缓存行依次未命中。
作为示例,如图5所示,对于连续发送的数据请求,从初始地址开始每次产生的数据请求为上一次产生的数据请求的地址加1,该实施例中以Ai+1=Ai+1为例进行说明。当然,也可以采用Ai+1=Ai-1,即从初始地址开始每次产生的数据请求为上一次产生的数据请求的地址加减1。
如图5所示,在数据请求的地址中,低位为缓存库寻址位,中间位为缓存集寻址位,高位为标号位。因此,每次地址加1,新地址都会被分发至下一个缓存库中,当遍历所有缓存库一遍之后,会回到初始地址对应的缓存库。这时,地址持续加1,则会直接向缓存集寻址位进位,继续遍历各个缓存库中新的缓存集。当所有缓存集都遍历之后,地址持续加1,则会直接向标号位进位,访问到初始地址对应的缓存集,因为是之前未产生过的新地址,该数据请求会被分配到该缓存集中新的缓存行。以此类推,如图5中的箭头所示的缓存行遍历顺序,数据请求的地址持续加1,数据请求则会遍历所有缓存库的所有缓存集的所有缓存行,从而有效利用缓存中的所有缓存行,使其输出带宽达到最大。
可选地,为了测试不同初始地址对向全部缓存库分发数据请求的性能的影响,第一次发送的数据请求的地址为随机值,即初始地址为随机值。
要达到最优性能,需要数据请求持续命中缓存,因此该数据请求的地址变化范围的大小为缓存中全部缓存行的大小,例如设置为0至2M×2N×K,当发送数据请求的数量达到缓存中全部缓存行的大小之后,回到初始地址重新发送数据请求。这样,在第一次将缓存中全部缓存行遍历之后,后续回到初始地址重新发送的数据请求还存于缓存行中,从而达到缓存中的全部缓存行依次被命中的测试状态。
要达到最差性能,需要数据请求持续未命中缓存,当数据请求的地址连续加1,如果不设置地址变化范围,则遍历过缓存中全部缓存行一次之后,重新遍历全部缓存行,通常,数据请求的地址范围空间的大小远大于缓存容量的大小,因此,重新遍历缓存行的数据请求的地址为之前从未产生过的新地址,从而达到缓存中的全部缓存行依次未命中的测试状态。
由于持续向不同缓存库发送数据请求,不同缓存库会向缓存上游持续返回数据,因此,上述的数据请求也适用于缓存库返回数据的仲裁性能的测试。
也就是说,通过设置地址变化范围为0至2M×2N×K和不设置地址变化范围两种方式,分别达到缓存中的全部缓存行依次被命中的测试状态、以及缓存中的全部缓存行依次未命中的测试状态,从而在两种测试状态下分别测试全部缓存库处理数据请求的最优性能和最差性能,以及分别测试全部缓存库响应于数据请求返回数据时缓存的数据仲裁的最优性能和最差性能。
情况2
在一种实现方式中,若目标缓存区域包括目标缓存库,则根据Ai+1=Ai+1<<N或者Ai+1=Ai-1<<N,确定数据请求的地址,Ai+1为第i+1次发送的数据请求的地址,Ai为第i次发送的数据请求的地址,<<表示左移以使缓存库寻址位不变。
其中,可选地,数据请求的地址变化范围为0至2M×K,以使目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×(K-1);或者,对所述数据请求的地址变化范围不限制,以使目标缓存区域中的全部缓存行依次未命中。
作为示例,如图6所示,保持缓存库的地址固定,每次产生的数据请求为上一次产生的数据请求的地址加1,该实施例中以Ai+1=Ai+1<<N为例进行说明。当然,也可以采用Ai+1=Ai-1<<N,即保持缓存库的地址固定,每次产生的数据请求为上一次产生的数据请求的地址减1。
如图6所示,由于缓存库寻址位不变,即为目标缓存库的地址中的缓存库寻址位,因此会向目标缓存库持续发送数据请求,使目标缓存库的输入压力达到最大。每次地址加1,数据请求都会访问目标缓存库中的下一个缓存集,直至遍历目标缓存库中的所有缓存集后,会回到初始地址对应的缓存集。之后,地址持续加1,则会直接向标号位进位,产生与之前不同的新地址,该数据请求会被分配到该缓存集中新的缓存行。以此类推,如图6中的箭头所示的缓存行遍历顺序,数据请求的地址持续加1,数据请求会遍历目标缓存库的所有缓存集的所有缓存行,从而有效利用目标缓存库中的所有缓存行,使其输出带宽达到最大。
可选地,为了测试不同初始地址对目标缓存库向该目标缓存库中的全部缓存集分发数据请求的性能的影响,第一次发送的数据请求的地址中的缓存集寻址位和缓存行寻址位为随机值。
要达到最优性能,需要数据请求持续命中目标缓存库,因此该数据请求的地址变化范围的大小为目标缓存库中全部缓存行的大小,例如设置为0至2M×K,当发送数据请求的数量达到目标缓存库中全部缓存行的大小,回到初始地址重新发送数据请求。这样,在第一次将目标缓存库中全部缓存行遍历一次之后,后续回到初始地址重新发送的数据请求还存于缓存行中,从而达到目标缓存库中全部缓存行依次被命中的测试状态。
要达到最差性能,需要数据请求持续未命中目标缓存库,仅保持缓存库寻址位不变,不限制数据请求的地址变化范围,当目标缓存库中全部缓存行都被遍历之后,随着缓存集寻址位的地址的增加,会产生之前未产生的新地址,从而达到目标缓存库中全部缓存行依次未命中的测试状态。
情况3
在一种实现方式中,若目标缓存区域包括目标缓存集,则根据Ai+1=Ai+1<<(M+N)或者Ai+1=Ai-1<<(M+N),确定数据请求的地址,Ai+1为第i+1次发送的数据请求的地址,Ai为第i次发送的数据请求的地址,<<表示左移以使缓存库寻址位和缓存集寻址位不变。
其中,可选地,数据请求的地址变化范围为0至K,以使目标缓存区域中的全部缓存行依次被命中,0≤i≤K-1;或者,对数据请求的地址变化范围不限制,以使目标缓存区域中的全部缓存行依次未命中。
作为示例,如图7所示,保持缓存库和缓存集的地址固定,每次产生的数据请求为上一次产生的数据请求的地址加1,该实施例中以Ai+1=Ai+1<<(M+N)为例进行说明。当然,也可以采用Ai+1=Ai-1<<(M+N),即保持缓存库和缓存集的地址固定,每次产生的数据请求为上一次产生的数据请求的地址减1。
如图7所示,由于缓存库寻址位和缓存集寻址位不变,即为目标缓存库中目标缓存集的地址中的缓存库寻址位和缓存集寻址位,因此会向目标缓存集持续发送数据请求,使目标缓存集的输入压力达到最大。以此类推,如图7中的箭头所示的缓存行遍历顺序,连续发送数据请求可以遍历目标缓存集中的所有缓存行,充分利用目标缓存集的所有缓存行,使其输出带宽达到最大。
可选地,为了测试不同初始地址对目标缓存集向该目标缓存集中的全部缓存行分发数据请求的性能的影响,第一次发送的数据请求的地址中的缓存行寻址位为随机值。
要达到最优性能,需要数据请求持续命中缓存,因此该数据请求的地址变化范围的大小为目标缓存集中全部缓存行的大小,例如设置为0至K,当发送数据请求的数量达到目标缓存集中全部缓存行的大小,回到初始地址重新发送数据请求。这样,在第一次将目标缓存集中全部缓存行遍历之后,后续回到初始地址重新发送的数据请求还存于缓存行中,从而达到目标缓存集中的全部缓存行依次被命中的测试状态。
要达到最差性能,需要数据请求持续未命中缓存,仅保持缓存库寻址位和缓存集寻址位不变,不限制输入的数据请求的地址变化范围,当目标缓存集中全部缓存行都被遍历一次之后,随着标号位的地址的增加,后续输入的数据请求为之前未产生过的地址,从而达到目标缓存集中全部缓存行依次未命中的测试状态。
可以理解,由于缓存最初都是空的,因此,在第一次遍历目标缓存区域中的全部缓存行时,目标缓存区域中的全部缓存行均未命中,在继续发送数据请求以遍历目标缓存区域中的全部缓存行时,根据设置的数据请求的地址变化范围,可能出现依次命中目标缓存区域中全部缓存的情况,或者依次未命中目标缓存区域中全部缓存的情况。
为了使数据请求能够更加平均地分配到不同的缓存库和缓存集中,在一种实现方式中,根据目标缓存区域,确定数据请求的地址,包括:根据目标缓存区域,确定数据请求的初始地址;对数据请求的地址进行哈希处理,得到数据请求的哈希地址;对数据请求的哈希地址进行逆哈希处理,得到数据请求的实际输入地址;这时,在步骤110中,可以根据数据请求的实际输入地址,连续向目标缓存区域发送数据请求。也就是说,根据哈希算法对输入缓存的数据请求的地址进行处理,以确定该数据请求被分配到的缓存库和缓存集。这时,在根据上述方式的得到数据请求的地址后,再经过逆哈希变换得到实际输入至缓存的数据请求的实际输入地址。
作为示例,表一示出了以上三种情况下的性能测试集的地址产生方式、地址产生公式、地址变化范围、以及相应的示例等。
表一
/>
/>
可以看出,在本申请提供的缓存性能模型的基础上,针对缓存性能模型中的每个性能瓶颈点,提供了连续数据请求且使输出达到最大带宽的测试方式,并提供可缓存性能测试集,该测试集中的每条测试激励可以覆盖不同的性能点,从而在利用该测试集使缓存达到测试状态时,对缓存的测试可以全面地对相应的性能点进行覆盖和冲击,以快速的分析出缓存的可能的性能瓶颈点,加快缓存的设计迭代速度。
同时,从上述表一所示的伪代码列可以看出,用于产生缓存性能测试集的代码结构简单,便于实现,可以快速的构建该性能测试激励,进一步地,该测试集的不同测试激励可以通过参数化的方式形成统一化的一套测试代码,使其可以方便地被复用到不同的缓存设计性能测试中,节省不同缓存性能测试激励的构建时间。
本申请还提供一种测试缓存性能的装置,如图8所示,装置200包括收发模块210和处理模块220。
其中,收发模块210用于连续向缓存中的目标缓存区域发送数据请求,并使目标缓存区域中的全部缓存行均被占用。
处理模块220用于对目标缓存区域的缓存性能进行测试。
在一种实现方式中,处理模块220还用于:根据所述目标缓存区域,确定所述数据请求的地址。
在一种实现方式中,所述缓存包括至少一个缓存库,每个缓存库包括至少一个缓存集,每个缓存集包括至少一个缓存行,所述目标缓存区域包括以下中的任意一种:所述缓存中的全部缓存库;所述缓存中的目标缓存库;所述目标缓存库中的目标缓存集。
在一种实现方式中,所述数据请求的地址从低位至高位依次包括缓存库寻址位、缓存集寻址位和缓存行寻址位,所述缓存库寻址位、所述缓存集寻址位和所述缓存行寻址位分别为N比特、M比特和K比特。
在一种实现方式中,所述目标缓存库包括全部缓存库中的边缘地址的缓存库,和/或,所述目标缓存集包括所述目标缓存库中的边缘地址的缓存集。
在一种实现方式中,所述缓存包括不同层级的缓存区域,所述层级从高至低的缓存区域依次为缓存库、缓存集和缓存行,其中,所述目标缓存区域中的全部缓存行均被占用,包括:对于所述目标缓存区域中相邻两个层级的缓存区域,全部高层级的缓存区域中相同地址的低层级的缓存区域依次被占用后,所述全部高层级的缓存区域中下一个地址的低层级的缓存区域依次被占用。
在一种实现方式中,相邻两次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位之间连续。
在一种实现方式中,所述目标缓存区域中的全部缓存行均被占用,包括:所述目标缓存区域中的全部缓存行均被占用且依次被命中,或者所述目标缓存区域中的全部缓存行均被占用且依次未命中。
在一种实现方式中,若所述目标缓存区域包括所述缓存中的全部缓存库,所述处理模块还用于:根据Ai+1=Ai+1或者Ai+1=Ai-1,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址;其中,所述数据请求的地址变化范围为0至2M×2N×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×2N×(K-1);或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,若所述目标缓存区域包括目标缓存库,所述处理模块还用于:根据Ai+1=Ai+1<<N或者Ai+1=Ai-1<<N,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使所述缓存库寻址位不变;其中,所述数据请求的地址变化范围为0至2M×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×(K-1);或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,若所述目标缓存区域包括目标缓存集,所述处理模块还用于:根据Ai+1=Ai+1<<(M+N)或者Ai+1=Ai-1<<(M+N),确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使所述缓存库寻址位和所述缓存集寻址位不变;其中,所述数据请求的地址变化范围为0至K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤K-1;或者,不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
在一种实现方式中,第一次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位为随机值。
在一种实现方式中,处理模块220具体用于:根据所述目标缓存区域,确定所述数据请求的初始地址;对所述数据请求的初始地址进行哈希处理,得到所述数据请求的哈希地址;对所述数据请求的哈希地址进行逆哈希处理,得到所述数据请求的实际输入地址;根据所述数据请求的实际输入地址,连续向所述目标缓存区域发送数据请求。
在一种实现方式中,处理模块220具体用于:根据向所述目标缓存区域发送所述数据请求的速度、以及所述目标缓存区域向所述目标缓存区域中的下级缓存区域分发所述数据请求的速度,检测所述目标缓存区域是否处于反压状态;在检测到所述目标缓存区域处于所述反压状态的时长大于或等于预设阈值时,确定所述目标缓存区域不满足缓存性能要求。
在一种实现方式中,处理模块220具体用于:在检测到向所述目标缓存区域发送所述数据请求与接收其返回的数据之间的时延大于或等于所述预设阈值时,确定所述目标缓存区域不满足缓存性能要求;或者,在检测到所述目标缓存区域无法继续接收所述数据请求所持续的时间大于或等于所述预设阈值时,确定所述目标缓存区域不满足缓存性能要求。
在一种实现方式中,所述目标缓存区域包括所述全部缓存库,所述缓存性能为向所述全部缓存库分发所述数据请求的性能,和/或所述全部缓存库响应于所述数据请求而返回数据时所述缓存的数据仲裁性能;所述目标缓存区域包括所述目标缓存库,所述缓存性能为所述目标缓存库向所述目标缓存库中的全部缓存集分发所述数据请求的性能;所述目标缓存区域包括所述目标缓存集,所述缓存性能为所述目标缓存集向所述目标缓存集中的全部缓存行分发所述数据请求的性能。
本申请还提供一种测试缓存性能的设备,包括存储器和处理器,存储器存储计算机指令,处理器调用计算机指令以使装置实现根据上述任一实施例中所述的测试缓存性能的方法。
本申请还提供一种计算机可读存储介质,用于存储计算机程序,当计算机程序被计算设备执行时,使得计算设备实现上述任一实施例中所述的测试缓存性能的方法。
本申请还提供一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当计算机可读代码在电子设备中运行时,电子设备中的处理器执行上述任一实施例中所述的测试缓存性能的方法。
上述的存储器可以是易失性存储器或者非易失性存储器,或者,存储器可以同时包括易失性存储器和非易失性存储器。其中,易失性存储器例如包括随机存取存储器(Random Access Memory,RAM);非易失性存储器例如包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。
需要说明的是,在不冲突的前提下,本申请描述的各个实施例和/或各个实施例中的技术特征可以任意的相互组合,组合之后得到的技术方案也应落入本申请的保护范围。
本申请实施例中所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略或者不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
应理解,本申请实施例中的具体的例子只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围,本领域技术人员可以在上述实施例的基础上进行各种改进和变形,而这些改进或者变形均落在本申请的保护范围内。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (19)

1.一种测试缓存性能的方法,其特征在于,所述方法包括:
连续向缓存中的目标缓存区域发送数据请求,并使所述目标缓存区域中的全部缓存行均被占用;
对所述目标缓存区域的缓存性能进行测试。
2.根据权利要求1所述的方法,其特征在于,在所述连续向缓存中的目标缓存区域发送数据请求之前,所述方法还包括:
根据所述目标缓存区域,确定所述数据请求的地址。
3.根据权利要求2所述的方法,其特征在于,所述缓存包括至少一个缓存库,每个缓存库包括至少一个缓存集,每个缓存集包括至少一个缓存行,所述目标缓存区域包括以下中的任意一种:
所述缓存中的全部缓存库;
所述缓存中的目标缓存库;
所述目标缓存库中的目标缓存集。
4.根据权利要求3所述的方法,其特征在于,所述目标缓存库包括全部缓存库中的边缘地址的缓存库,和/或,所述目标缓存集包括所述目标缓存库中的边缘地址的缓存集。
5.根据权利要求2至4中任一项所述的方法,其特征在于,所述数据请求的地址从低位至高位依次包括缓存库寻址位、缓存集寻址位和缓存行寻址位,所述缓存库寻址位、所述缓存集寻址位和所述缓存行寻址位分别为N比特、M比特和K比特。
6.根据权利要求2至4中任一项所述的方法,其特征在于,所述缓存包括不同层级的缓存区域,所述层级从高至低的缓存区域依次为缓存库、缓存集和缓存行,其中,所述目标缓存区域中的全部缓存行均被占用,包括:
对于所述目标缓存区域中相邻两个层级的缓存区域,全部高层级的缓存区域中相同地址的低层级的缓存区域依次被占用后,所述全部高层级的缓存区域中下一个地址的低层级的缓存区域依次被占用。
7.根据权利要求2至4中任一项所述的方法,其特征在于,相邻两次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位之间连续。
8.根据权利要求5所述的方法,其特征在于,所述目标缓存区域中的全部缓存行均被占用,包括:
所述目标缓存区域中的全部缓存行均被占用且依次被命中;或者,
所述目标缓存区域中的全部缓存行均被占用且依次未命中。
9.根据权利要求8所述的方法,其特征在于,若所述目标缓存区域包括所述缓存中的全部缓存库,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:
根据Ai+1=Ai+1或者Ai+1=Ai-1,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址;
其中,所述数据请求的地址变化范围为0至2M×2N×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×2N×(K-1);或者,
不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
10.根据权利要求8所述的方法,其特征在于,若所述目标缓存区域包括目标缓存库,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:
根据Ai+1=Ai+1<<N或者Ai+1=Ai-1<<N,确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使缓存库寻址位不变;
其中,所述数据请求的地址变化范围为0至2M×K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤2M×(K-1);或者,
不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
11.根据权利要求8所述的方法,其特征在于,若所述目标缓存区域包括目标缓存集,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:
根据Ai+1=Ai+1<<(M+N)或者Ai+1=Ai-1<<(M+N),确定所述数据请求的地址,Ai+1为第i+1次发送的所述数据请求的地址,Ai为第i次发送的所述数据请求的地址,<<表示左移以使缓存库寻址位和缓存集寻址位不变;
其中,所述数据请求的地址变化范围为0至K,以使所述目标缓存区域中的全部缓存行依次被命中,0≤i≤K-1;或者,
不设置所述数据请求的地址变化范围,以使所述目标缓存区域中的全部缓存行依次未命中。
12.根据权利要求2至4中任一项所述的方法,其特征在于,第一次发送的所述数据请求的地址中用于访问所述目标缓存区域中各个缓存行的寻址位为随机值。
13.根据权利要求2至4中任一项所述的方法,其特征在于,所述根据所述目标缓存区域,确定所述数据请求的地址,包括:
根据所述目标缓存区域,确定所述数据请求的初始地址;
对所述数据请求的初始地址进行哈希处理,得到所述数据请求的哈希地址;
对所述数据请求的哈希地址进行逆哈希处理,得到所述数据请求的实际输入地址;
其中,所述连续向缓存中的目标缓存区域发送数据请求,包括:
根据所述数据请求的实际输入地址,连续向所述目标缓存区域发送数据请求。
14.根据权利要求2至4中任一项所述的方法,其特征在于,所述对所述目标缓存区域的缓存性能进行测试,包括:
根据向所述目标缓存区域发送所述数据请求的速度、以及所述目标缓存区域向所述目标缓存区域中的下级缓存区域分发所述数据请求的速度,检测所述目标缓存区域是否处于反压状态;
在检测到所述目标缓存区域处于所述反压状态的时长大于或等于预设阈值时,确定所述目标缓存区域不满足缓存性能要求。
15.根据权利要求2至4中任一项所述的方法,其特征在于,
所述目标缓存区域包括全部缓存库,所述缓存性能为向全部缓存库分发所述数据请求的性能,和/或所述全部缓存库响应于所述数据请求而返回数据时所述缓存的数据仲裁性能;
所述目标缓存区域包括目标缓存库,所述缓存性能为所述目标缓存库向所述目标缓存库中的全部缓存集分发所述数据请求的性能;
所述目标缓存区域包括目标缓存集,所述缓存性能为所述目标缓存集向所述目标缓存集中的全部缓存行分发所述数据请求的性能。
16.一种测试缓存性能的装置,其特征在于,所述装置包括:
收发模块,用于连续向缓存中的目标缓存区域发送数据请求,并使所述目标缓存区域中的全部缓存行均被占用;
处理模块,用于对所述目标缓存区域的缓存性能进行测试。
17.一种测试缓存性能的设备,其特征在于,包括存储器和处理器,所述存储器存储计算机指令,所述处理器调用所述计算机指令以使所述设备实现根据上述权利要求1至15中任一项所述的测试缓存性能的方法。
18.一种计算机可读存储介质,其特征在于,用于存储计算机程序,当所述计算机程序被计算设备执行时,使得所述计算设备实现根据权利要求1至15中任一项所述的测试缓存性能的方法。
19.一种计算机程序产品,其特征在于,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行权利要求1至15中任一项所述的测试缓存性能的方法。
CN202310390136.7A 2023-04-12 2023-04-12 测试缓存性能的方法和装置 Pending CN116467133A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310390136.7A CN116467133A (zh) 2023-04-12 2023-04-12 测试缓存性能的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310390136.7A CN116467133A (zh) 2023-04-12 2023-04-12 测试缓存性能的方法和装置

Publications (1)

Publication Number Publication Date
CN116467133A true CN116467133A (zh) 2023-07-21

Family

ID=87181811

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310390136.7A Pending CN116467133A (zh) 2023-04-12 2023-04-12 测试缓存性能的方法和装置

Country Status (1)

Country Link
CN (1) CN116467133A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484539A (zh) * 2016-10-13 2017-03-08 东北大学 一种处理器缓存特性的检测分析方法
CN115495297A (zh) * 2022-09-29 2022-12-20 苏州浪潮智能科技有限公司 一种服务器硬盘测试的方法及装置、电子设备、存储介质
CN115527603A (zh) * 2022-09-30 2022-12-27 苏州浪潮智能科技有限公司 一种硬盘性能测试方法、中央控制机及测试机
CN115712397A (zh) * 2023-01-05 2023-02-24 摩尔线程智能科技(北京)有限责任公司 缓存验证装置、方法及系统
CN115938464A (zh) * 2023-02-13 2023-04-07 江苏芯盛智能科技有限公司 固态硬盘的测试方法、系统、电子设备及可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484539A (zh) * 2016-10-13 2017-03-08 东北大学 一种处理器缓存特性的检测分析方法
CN115495297A (zh) * 2022-09-29 2022-12-20 苏州浪潮智能科技有限公司 一种服务器硬盘测试的方法及装置、电子设备、存储介质
CN115527603A (zh) * 2022-09-30 2022-12-27 苏州浪潮智能科技有限公司 一种硬盘性能测试方法、中央控制机及测试机
CN115712397A (zh) * 2023-01-05 2023-02-24 摩尔线程智能科技(北京)有限责任公司 缓存验证装置、方法及系统
CN115938464A (zh) * 2023-02-13 2023-04-07 江苏芯盛智能科技有限公司 固态硬盘的测试方法、系统、电子设备及可读存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
中关村在线: "2019十款固态硬盘大横评:贵的不一定好", Retrieved from the Internet <URL:https://www.163.com/dy/article/F0O45Q7B051189P5.html> *
存储极客: "跑分一样性能却差5倍,TLC固态硬盘写入速度研究", Retrieved from the Internet <URL:https://www.sohu.com/a/230094671_615464> *
少数派SSPAI: "除了价格「香不香」,选购固态硬盘时你还需要注意这 7 件事", Retrieved from the Internet <URL:https://www.163.com/dy/article/GOC6F39105119NPR.html> *
管家评测室: "宏碁掠夺者GM7 1TB固态硬盘开箱评测:有底气的高性能方案", Retrieved from the Internet <URL:https://it.sohu.com/a/621317733_99943927> *
范欣欣: "HBase BlockCache系列 - 性能对比测试报告", Retrieved from the Internet <URL:http://hbasefly.com/2016/05/06/hbase-blockcache-3/> *

Similar Documents

Publication Publication Date Title
US10950292B1 (en) Method and apparatus for mitigating row hammer attacks
KR102521053B1 (ko) 하이브리드 dram/낸드 메모리에서 읽기-수정-쓰기 오버헤드를 감소시키기 위한 기술들
US6098152A (en) Method and apparatus for miss sequence cache block replacement utilizing a most recently used state
US8185694B2 (en) Testing real page number bits in a cache directory
US10397362B1 (en) Combined cache-overflow memory structure
US10007615B1 (en) Methods and apparatus for performing fast caching
US20150186280A1 (en) Cache replacement policy methods and systems
CN110018811B (zh) Cache数据处理方法以及Cache
TW202145010A (zh) 數據儲存方法、電子設備及儲存媒體
US8707006B2 (en) Cache index coloring for virtual-address dynamic allocators
CN112579595A (zh) 数据处理方法、装置、电子设备及可读存储介质
US20200257473A1 (en) Memory system
JP2014186397A (ja) キャッシュメモリ装置、情報処理装置及びキャッシュメモリ制御方法
Ghandeharizadeh et al. CAMP: A cost adaptive multi-queue eviction policy for key-value stores
Olanrewaju et al. A study on performance evaluation of conventional cache replacement algorithms: A review
US20200409846A1 (en) Dual controller cache optimization in a deterministic data storage system
CN114253458B (zh) 内存缺页异常的处理方法、装置、设备及存储介质
US11429299B2 (en) System and method for managing conversion of low-locality data into high-locality data
CN116467133A (zh) 测试缓存性能的方法和装置
EP3970021A1 (en) Processor-side transaction context memory interface systems and methods
KR102073474B1 (ko) 비트스트림의 임의성을 검증하는 방법 및 그 시스템
CN110442469A (zh) 一种基于局部随机映射的缓存侧信道攻击防御方法
US9824028B2 (en) Cache method and cache apparatus
US11048637B2 (en) High-frequency and low-power L1 cache and associated access technique
WO2021008552A1 (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