CN114116534B - 一种提高处理器缓存命中率的方法及装置 - Google Patents

一种提高处理器缓存命中率的方法及装置 Download PDF

Info

Publication number
CN114116534B
CN114116534B CN202210096816.3A CN202210096816A CN114116534B CN 114116534 B CN114116534 B CN 114116534B CN 202210096816 A CN202210096816 A CN 202210096816A CN 114116534 B CN114116534 B CN 114116534B
Authority
CN
China
Prior art keywords
program
block
program block
control flow
current
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.)
Active
Application number
CN202210096816.3A
Other languages
English (en)
Other versions
CN114116534A (zh
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.)
Guangdong Communications and Networks Institute
Original Assignee
Guangdong Communications and Networks Institute
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 Guangdong Communications and Networks Institute filed Critical Guangdong Communications and Networks Institute
Priority to CN202210096816.3A priority Critical patent/CN114116534B/zh
Publication of CN114116534A publication Critical patent/CN114116534A/zh
Application granted granted Critical
Publication of CN114116534B publication Critical patent/CN114116534B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供了一种提高处理器缓存命中率的方法及装置,该方法包括:步骤1:绘制超标量处理器的程序控制流图,程序控制流图中每个程序块有两个结束节点,结束节点为当前程序块下一拍将要被执行的下一程序块;步骤2:将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache;步骤3:根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行。本公开提供的一种提高处理器缓存命中率的方法及装置,通过超标量处理器的程序控制流图,将当前执行的程序块及下一个要执行的程序块提前放入cache中,使得cache中总会有个程序块可以处在执行中,极大提高了缓存的命中率,提高了超标量处理器性能。

Description

一种提高处理器缓存命中率的方法及装置
技术领域
本公开涉及计算机技术领域,尤其涉及一种提高处理器缓存命中率的方法及装置。
背景技术
超标量处理器作为当代数字化和智能化工业中的核心,已深入我们生活的方方面面。在过去,CPU访问主存速度不高一直是限制处理器提高性能的瓶颈问题,于是便有了高速缓存cache系统的出现。Cache的引入提高了处理器的整体性能,然而现代超标处理器处理速度和处理数据类型都发生了翻天覆地的变化,如何进一步挖掘超标量处理器的潜在性能,提高cache的命中率已经成为提升超标量处理器性能的重要途径之一。
Cache的命中率与cache的映射方式和替换算法息息相关。在先有的超标量处理器中,通常采用的映射方式有直接映射、组相连和全相连,全相连最灵活但是实现比较复杂,直接映射比较容易实现,但是可能产生快速抖动,组相连则是前两者的一个折衷。常用的替换策略有近期最少使用法(LRU)、随机替换法和先入先出法(FIFO)等,LRU顾名思义是替换掉近期最少使用的某个块,但是随着cache相关度的增加,相比于LRU替换来说会产生更多的cachemiss,但随着容量的增大这个差距会越来越小,FIFO替换的原则是如果某一个数据最先进入缓存中,那它应该被最早替换掉,这种方式实现起来比较容易,但是可能会把一些经常使用的程序块替换掉,导致cachemiss增多。
由于cache的容量是有限的,主存中的内容不可能全部映射到cache中,因此现有的解决方案都是利用了时间局部性和空间局部性原理,在空间局部性中,如果某项数据被访问,那么与它相邻的数据很可能很快被访问;在时间局部性中,如果某个数据被访问,那么在不久的将来很可能再次被访问。然而,所有基于这个局部性原理的技术都会导致cachemiss,如随机替换法没有固定的规律可循,高命中率难以保证;先入先出算法不能突出存储器数据的局部性,即使使用频率很高的数据也会被替换掉,命中率也不会很高;最近最少使用法最能突出局部性,然而在复杂的超标量处理器中实现成本非常高。
发明内容
本公开的目的是要提供一种提高处理器缓存命中率的方法及装置,可以解决上述现有技术问题中的一个或者多个。
根据本公开的一个方面,提供了一种提高处理器缓存命中率的方法,包括以下步骤:
步骤1:绘制超标量处理器的程序控制流图,程序控制流图中每个程序块有两个结束节点,结束节点为当前程序块下一拍将要被执行的下一程序块;
步骤2:将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache;
步骤3:根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行。
在可能的实施方式中,在步骤1中,绘制超标量处理器的程序控制流图包括:
步骤1.1:获取超标量处理器源码;
步骤1.2:将超标量处理器源码转化成抽象语法树;
步骤1.3:将程序划分为有一个开始节点和两个结束节点的程序块,完成程序控制流图的绘制。
在可能的实施方式中,在步骤2中,将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache包括,
步骤2.1:将程序控制流图中的程序块以链表数据结构存储在程序控制流图存储器内,链表数据结构由当前程序块Bc、左子树中的下一程序块Bl和右子树中的下一程序块Br构成,其中,左子树中的下一程序块Bl为与当前程序块相连的下一程序块,右子树中的下一程序块Br为与当前程序块不相连的下一程序块;
步骤2.2:加载和替换单元从程序控制流图存储器加载一定数量的程序块,并将当前要执行的程序块和将要被执行的程序块同时加载到cache中。
在可能的实施方式中,在步骤3中,根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行包括,
步骤3.1:cpu进入第一个程序块;
步骤3.2:cache判断下一拍执行的程序块是否是当前程序块相连的程序块,若不是,则执行步骤3.3,若是,则执行步骤3.4;
步骤3.3:丢弃左子树中的下一程序块Bl,并从加载和替换单元中根据程序控制流图向下加载一级右子树程序集;
步骤3.4:丢弃右子树中的下一程序块Br,并从加载和替换单元中根据程序控制流图向下加载一级左子树程序集;
步骤3.5:cpu进入未丢弃的下一程序块,并判断程序块是否结束,若程序块未结束,返回执行步骤3.2;若程序块已结束,则当前程序结束。
根据本公开的另一个方面,提供了一种提高处理器缓存命中率的装置,用于实现上述任一一种提高处理器缓存命中率的方法,包括:
程序控制流图绘制单元,用于绘制超标量处理器的程序控制流图,程序控制流图中每个程序块有两个结束节点,结束节点为当前程序块下一拍将要被执行的下一程序块;
加载和替换单元,用于将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache;
执行路径遍历单元,用于根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行。
在可能的实施方式中,在程序控制流图绘制单元中包括:
源码获取子单元,用于获取超标量处理器源码;
抽象语法树转化子单元,用于将超标量处理器源码转化成抽象语法树;
程序块划分子单元,用于将程序划分为有一个开始节点和两个结束节点的程序块,完成程序控制流图的绘制。
在可能的实施方式中,一种提高处理器缓存命中率的装置还包括程序控制流图存储器,用于将程序控制流图中的程序块以链表数据结构存储,链表数据结构由当前程序块Bc、左子树中的下一程序块Bl和右子树中的下一程序块Br构成,其中,左子树中的下一程序块Bl为与当前程序块相连的下一程序块,右子树中的下一程序块Br为与当前程序块不相连的下一程序块;
加载和替换单元从程序控制流图存储器加载一定数量的程序块,并将当前要执行的程序块和将要被执行的程序块同时加载到cache中。
在可能的实施方式中,执行路径遍历单元包括:
程序块判断子单元,用于当CPU进入当前程序块时,判断下一拍执行的程序块是否是当前程序块相连的程序块;
下一程序块选择子单元,用于根据程序判断子单元的判断结果,选择将要被执行的下一程序块,同时将不会被执行的下一程序块丢弃;
程序集加载子单元,用于根据程序控制流图,在将要被执行的下一程序块所在的子树,向下加载一级程序集;
程序块结束判断子单元,用于判断程序块是否结束,若程序块结束,则程序结束。
本公开提供的一种提高处理器缓存命中率的方法及装置,通过绘制超标量处理器的程序控制流图,将当前执行的程序块及下一个要执行的程序块提前放入cache中,使得cache中总会有一个程序块可以处在执行中,极大提高了缓存的命中率。
另外,在本公开技术方案中,凡未作特别说明的,均可通过采用本领域中的常规手段来实现本技术方案。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种提高处理器缓存命中率的方法的流程图。
图2为本公开实施例提供的一种提高处理器缓存命中率的方法中一个程序控制流图的简单示意图。
图3为本公开实施例提供的一种提高处理器缓存命中率的装置的结构示意图。
具体实施方式
本公开说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如包含了一系列的步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、系统、产品或设备固有的其他步骤或单元。
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
实施例1:
在本实施例中,参考说明书附图1,提供了一种提高处理器缓存命中率的方法,包括以下步骤:
步骤1:绘制超标量处理器的程序控制流图,程序控制流图中每个程序块有两个结束节点,结束节点为当前程序块下一拍将要被执行的下一程序块;
步骤2:将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache;
步骤3:根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行。
在可选的实施例中,在步骤1中,绘制超标量处理器的程序控制流图包括:
步骤1.1:获取超标量处理器源码;
步骤1.2:将超标量处理器源码转化成抽象语法树;
步骤1.3:根据抽象语法树将程序划分为有一个开始节点和两个结束节点的程序块,完成程序控制流图的绘制。
具体的,在本实施例中,选用基本程序块作为程序化分的最小粒度,同时将程序控制流图抽象为由节点和有向边构成的网络图。参考说明书附图2,示出了一个程序控制流图的简单示意图,图中每个节点表示一个程序块,即cache中一个cacheline中的数据,有向边表示程序块之间的执行路径。
具体的,两个结束节点分别用于进入下一个程序块和跳转到另一个程序块,即结束节点为当前程序块下一拍将要被执行的下一程序块。
在可选的实施例中,在步骤2中,将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache包括,
步骤2.1:将程序控制流图中的程序块以链表数据结构存储在程序控制流图存储器内,链表数据结构由当前程序块Bc、左子树中的下一程序块Bl和右子树中的下一程序块Br构成,其中,左子树中的下一程序块Bl为与当前程序块相连的下一程序块,右子树中的下一程序块Br为与当前程序块不相连的下一程序块;
步骤2.2:加载和替换单元从程序控制流图存储器加载一定数量的程序块,并将当前要执行的程序块和将要被执行的程序块同时加载到cache中。
由此,通过设置程序控制流图存储器专供程序控制流图使用,能够高速进行超标量处理器程序控制流图需要执行的操作,例如程序块的更新;同时通过设置专用的程序控制流图存储器,使程序控制流图和超标量处理器的互不干预,提高了程序运行稳定性,提高处理器性能。
具体的,由于程序块相当于固定数量的cacheline的集合,因此左子树中的下一程序块Bl表示继续执行cache中下一个cacheline,即左子树中的下一程序块与当前程序块相连;右子树中的下一程序块Br表示跳转执行cache中与当前程序块不相连的cacheline,即右子树中的下一程序块与当前程序块不相连。应当理解的是,此处左右子树表示的含义仅为示意性举例,在可能的实施例中,左子树中的下一程序块Bl可以表示跳转执行cache中与当前程序块不相连的cacheline,右子树中的下一程序块Br也可以表示继续执行cache中下一个cacheline。
具体的,加载和替换单元可以将程序块的地址信息发送至cache以加载程序块。
在可选的实施例中,若当前程序块Bc只有一个下一程序块,则左子树中的下一程序块Bl和右子树中的下一程序块Br地址的优先级是一样的。
在可选的实施例中,可以使用数字电路构建一个加载和替换单元,用于从程序控制流图存储器加载一定数量的程序块,并将当前要执行的程序块和将要被执行的程序块传递到cache中。
通过将当前要执行的程序块和将要被执行的程序块同时加载到cache中,使得若当前执行的程序块需要进入到下一程序块,无需通过预测进入,可以直接从cache中获取将要被执行的程序块,而从cache中加载数据通常只需几个周期,由此,避免了传统超标量处理器中未命中时需要重新从内存中导入数据的长达几十到几百周期的过程,提高了处理器的处理效率。
在可选的实施例中,在步骤3中,根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行包括,
步骤3.1:cpu进入第一个程序块;
步骤3.2:cache判断下一拍执行的程序块是否是当前程序块相连的程序块,若不是,则执行步骤3.3,若是,则执行步骤3.4;
步骤3.3:cache丢弃左子树中的下一程序块Bl,并从加载和替换单元中根据程序控制流图向下加载一级右子树程序集;
步骤3.4:cache丢弃右子树中的下一程序块Br,并从加载和替换单元中根据程序控制流图向下加载一级左子树程序集;
步骤3.5:cpu进入未丢弃的下一程序块,并判断程序块是否结束,若程序块未结束,返回执行步骤3.2;若程序块已结束,则当前程序结束。
当前程序块被CPU进入并执行时,当前程序块的两个下一程序块也已经被加载进入cache中,因此,无论将要执行的下一程序块是左子树中的还是右子树中的,都不会产生cache未命中。当CPU进入某一子树的下一程序块,另一子树都会从cache中丢弃,并且新的子树会提前加载至当前子树的叶子上,由此,根据程序控制流图动态变化的子树使得所有所需程序块都可以在cache中获得。
在可选的实施例中,当第一个程序块被加载时,由于cache还没有使用过该程序块,因此会出现强制未命中。由此,实现了除程序执行初期的强制未命中外,不存在其他的cache未命中,极大提升了缓存的命中率。
在可选的实施例中,在cache中预先定义特定深度的子树,由此,超标量处理器可实现直接从cache中进入程序块执行,而无需从主存中进入,提高处理效率,提升处理器性能。
本公开提供的一种提高处理器缓存命中率的方法,通过绘制超标量处理器的程序控制流图,将当前执行的程序块及下一个要执行的程序块提前放入cache中,避免了基于局部性原理预测带来的不确定性,使得cache中总会有一个程序块可以处在执行中,极大提高了缓存的命中率,有效提高超标量处理器的性能。
实施例2:
在本实施例中,参考说明书附图3,提供了一种提高处理器缓存命中率的装置,用于实现上述方法实施例中任一一种提高处理器缓存命中率的方法,一种提高处理器缓存命中率的装置至少包括:
程序控制流图绘制单元11,用于绘制超标量处理器的程序控制流图,程序控制流图中每个程序块有两个结束节点,结束节点为当前程序块下一拍将要被执行的下一程序块;
加载和替换单元12,用于将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache;
执行路径遍历单元13,用于根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行。
在可选的实施例中,在程序控制流图绘制单元中包括:
源码获取子单元,用于获取超标量处理器源码;
抽象语法树转化子单元,用于将超标量处理器源码转化成抽象语法树;
程序块划分子单元,用于将程序划分为有一个开始节点和两个结束节点的程序块,完成程序控制流图的绘制。
在可选的实施例中,一种提高处理器缓存命中率的装置还包括程序控制流图存储器,用于将程序控制流图中的程序块以链表数据结构存储,链表数据结构由当前程序块Bc、左子树中的下一程序块Bl和右子树中的下一程序块Br构成,其中,左子树中的下一程序块Bl为与当前程序块相连的下一程序块,右子树中的下一程序块Br为与当前程序块不相连的下一程序块;
加载和替换单元从程序控制流图存储器加载一定数量的程序块,并将当前要执行的程序块和将要被执行的程序块同时加载到cache中。
在可选的实施例中,执行路径遍历单元包括:
程序块判断子单元,用于当CPU进入当前程序块时,判断下一拍执行的程序块是否是当前程序块相连的程序块;
下一程序块选择子单元,用于根据程序判断子单元的判断结果,选择将要被执行的下一程序块,同时将不会被执行的下一程序块丢弃;
程序集加载子单元,用于根据程序控制流图,在将要被执行的下一程序块所在的子树,向下加载一级程序集;
程序块结束判断子单元,用于判断程序块是否结束,若程序块结束,则程序结束。
本公开提供的一种提高处理器缓存命中率的装置,通过绘制超标量处理器的程序控制流图,将当前执行的程序块及下一个要执行的程序块提前放入cache中,避免了基于局部性原理预测带来的不确定性,使得cache中总会有一个程序块可以处在执行中,极大提高了缓存的命中率,有效提高超标量处理器的性能。
上述本说明书实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (6)

1.一种提高处理器缓存命中率的方法,其特征在于,包括以下步骤:
步骤1:绘制超标量处理器的程序控制流图,所述程序控制流图中每个程序块有两个结束节点,所述结束节点为当前程序块下一拍将要被执行的下一程序块;在步骤1中,所述绘制超标量处理器的程序控制流图包括:
步骤1.1:获取超标量处理器源码;
步骤1.2:将超标量处理器源码转化成抽象语法树;
步骤1.3:将程序划分为有一个开始节点和两个结束节点的程序块,完成程序控制流图的绘制;
步骤2:将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache;
步骤3:根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行。
2.根据权利要求1所述的一种提高处理器缓存命中率的方法,其特征在于,在步骤2中,所述将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache包括,
步骤2.1:将所述程序控制流图中的程序块以链表数据结构存储在程序控制流图存储器内,链表数据结构由当前程序块Bc、左子树中的下一程序块Bl和右子树中的下一程序块Br构成,其中,左子树中的下一程序块Bl为与当前程序块相连的下一程序块,右子树中的下一程序块Br为与当前程序块不相连的下一程序块;
步骤2.2:加载和替换单元从程序控制流图存储器加载一定数量的程序块,并将当前要执行的程序块和将要被执行的程序块同时加载到cache中。
3.根据权利要求2所述的一种提高处理器缓存命中率的方法,其特征在于,在步骤3中,所述根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行包括,
步骤3.1:cpu进入第一个程序块;
步骤3.2:cache判断下一拍执行的程序块是否是当前程序块相连的程序块,若不是,则执行步骤3.3,若是,则执行步骤3.4;
步骤3.3:丢弃左子树中的下一程序块Bl,并从加载和替换单元中根据程序控制流图向下加载一级右子树程序集;
步骤3.4:丢弃右子树中的下一程序块Br,并从加载和替换单元中根据程序控制流图向下加载一级左子树程序集;
步骤3.5:cpu进入未丢弃的下一程序块,并判断程序块是否结束,若程序块未结束,返回执行步骤3.2;若程序块已结束,则当前程序结束。
4.一种提高处理器缓存命中率的装置,用于实现权利要求1-3中任一所述的一种提高处理器缓存命中率的方法,其特征在于,包括:
程序控制流图绘制单元,用于绘制超标量处理器的程序控制流图,所述程序控制流图中每个程序块有两个结束节点,所述结束节点为当前程序块下一拍将要被执行的下一程序块;在程序控制流图绘制单元中包括:
源码获取子单元,用于获取超标量处理器源码;
抽象语法树转化子单元,用于将超标量处理器源码转化成抽象语法树;
程序块划分子单元,用于将程序划分为有一个开始节点和两个结束节点的程序块,完成程序控制流图的绘制;
加载和替换单元,用于将当前程序块及当前程序块下一拍将要被执行的全部下一程序块均加载至cache;
执行路径遍历单元,用于根据当前程序块遍历执行路径,根据遍历后的结果在cache中选择下一程序块执行。
5.根据权利要求4所述的一种提高处理器缓存命中率的装置,其特征在于,还包括程序控制流图存储器,用于将所述程序控制流图中的程序块以链表数据结构存储,链表数据结构由当前程序块Bc、左子树中的下一程序块Bl和右子树中的下一程序块Br构成,其中,左子树中的下一程序块Bl为与当前程序块相连的下一程序块,右子树中的下一程序块Br为与当前程序块不相连的下一程序块;
加载和替换单元从程序控制流图存储器加载一定数量的程序块,并将当前要执行的程序块和将要被执行的程序块同时加载到cache中。
6.根据权利要求5所述的一种提高处理器缓存命中率的装置,其特征在于,执行路径遍历单元包括:
程序块判断子单元,用于当CPU进入当前程序块时,判断下一拍执行的程序块是否是当前程序块相连的程序块;
下一程序块选择子单元,用于根据程序判断子单元的判断结果,选择将要被执行的下一程序块,同时将不会被执行的下一程序块丢弃;
程序集加载子单元,用于根据程序控制流图,在将要被执行的下一程序块所在的子树,向下加载一级程序集;
程序块结束判断子单元,用于判断程序块是否结束,若程序块结束,则程序结束。
CN202210096816.3A 2022-01-27 2022-01-27 一种提高处理器缓存命中率的方法及装置 Active CN114116534B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210096816.3A CN114116534B (zh) 2022-01-27 2022-01-27 一种提高处理器缓存命中率的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210096816.3A CN114116534B (zh) 2022-01-27 2022-01-27 一种提高处理器缓存命中率的方法及装置

Publications (2)

Publication Number Publication Date
CN114116534A CN114116534A (zh) 2022-03-01
CN114116534B true CN114116534B (zh) 2022-05-06

Family

ID=80361976

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210096816.3A Active CN114116534B (zh) 2022-01-27 2022-01-27 一种提高处理器缓存命中率的方法及装置

Country Status (1)

Country Link
CN (1) CN114116534B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216803A (zh) * 2008-01-09 2008-07-09 四川大学 基于基路径的测试程序控制流路径集生成方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069311B2 (en) * 2007-12-28 2011-11-29 Intel Corporation Methods for prefetching data in a memory storage structure
GB201320225D0 (en) * 2013-11-15 2014-01-01 Microsoft Corp Processing search queries using a data structure
CN109600447B (zh) * 2018-12-21 2021-08-10 北京百度网讯科技有限公司 用于处理数据的方法、装置和系统
CN110322318A (zh) * 2019-06-18 2019-10-11 中国平安财产保险股份有限公司 一种客户分群方法、装置及计算机存储介质
US11132326B1 (en) * 2020-03-11 2021-09-28 Nvidia Corporation Techniques to transfer data among hardware devices
CN112702399B (zh) * 2020-12-14 2022-04-19 中山大学 网络社团协作缓存方法、装置、计算机设备和存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216803A (zh) * 2008-01-09 2008-07-09 四川大学 基于基路径的测试程序控制流路径集生成方法

Also Published As

Publication number Publication date
CN114116534A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
US10891229B2 (en) Multi-level caching method and multi-level caching system for enhancing graph processing performance
CN109254733B (zh) 用于存储数据的方法、装置和系统
JP6014925B2 (ja) メモリ回収方法および装置
US9075721B2 (en) Computer readable recording medium having stored therein information processing program, information processing apparatus and information processing method
CN110147204B (zh) 一种元数据落盘方法、装置、系统及计算机可读存储介质
US9201806B2 (en) Anticipatorily loading a page of memory
US11451629B2 (en) Distributed metadata management method for distributed file system
CN110555001B (zh) 数据处理方法、装置、终端及介质
US20120246408A1 (en) Arithmetic processing device and controlling method thereof
CN111416825A (zh) 线程间无锁日志管理方法和系统、终端、存储介质
CN111324427A (zh) 一种基于dsp的任务调度方法及装置
US20210089442A1 (en) Dynamically allocating memory pool subinstances
JP2020500368A (ja) データプリフェッチング方法、装置、およびシステム
KR101175505B1 (ko) N?스크린 환경에서 네트워크 기반 파일 시스템을 이용한 사용자 데이터 저장환경 제공 시스템
JP6951846B2 (ja) 計算機システム及びタスクの割当方法
US20220342888A1 (en) Object tagging
CN114116534B (zh) 一种提高处理器缓存命中率的方法及装置
CN112463795A (zh) 一种动态哈希方法、装置、设备及存储介质
Sun et al. Mitigating asymmetric read and write costs in cuckoo hashing for storage systems
US10606795B2 (en) Methods for managing a buffer cache and devices thereof
CN116627345A (zh) 应用于海量value键值对的高性能KV缓存方法及装置
CN112667847A (zh) 数据缓存方法、数据缓存装置和电子设备
CN114595066A (zh) 一种预留内存的处理方法、装置、电子设备和介质
JP2016114967A (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
CN114816220A (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
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Zhu Fusheng

Inventor after: Lai Wenbin

Inventor after: Zhu Xiaoming

Inventor after: Su Rina

Inventor after: Liao Shujing

Inventor before: Lai Wenbin

Inventor before: Zhu Xiaoming

Inventor before: Zhu Fusheng

Inventor before: Su Rina

Inventor before: Liao Shujing

CB03 Change of inventor or designer information