CN114217806A - 基于cache写暗示机制的编译优化方法 - Google Patents
基于cache写暗示机制的编译优化方法 Download PDFInfo
- Publication number
- CN114217806A CN114217806A CN202110347315.3A CN202110347315A CN114217806A CN 114217806 A CN114217806 A CN 114217806A CN 202110347315 A CN202110347315 A CN 202110347315A CN 114217806 A CN114217806 A CN 114217806A
- Authority
- CN
- China
- Prior art keywords
- instruction
- cachesc
- code
- write operation
- access
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种基于cache写暗示机制的编译优化方法,自动识别对连续主存进行写操作的指令序列,并通过指令插桩,对这些指令序列的访存行为进行优化,包括以下步骤:S1:对代码中所有写操作进行识别,并通过插桩的方式进行标记;S2:对S1中识别的写操作的数据单元访问连续性进行判定,如果满足连续性要求,则更新cachesc指令参数;S3:写操作边界处理。本发明可减少因繁琐的存储管理对代码生产过程的干扰,进一步降低访存延迟,提高存储系统性能。
Description
技术领域
本发明涉及一种基于cache写暗示机制的编译优化方法,属于编译优化技术领域。
背景技术
在电子计算机发展的半个多世纪的时间里,摩尔定律表明集成电路上可以容纳的晶体管数目在大约每隔18个月便会增加一倍,即处理器的性能每隔18个月翻一倍。计算机系统性能的发展随着处理器性能的发展也在相应地增长,然而应用程序的性能还会受到存储系统的影响。人们从软硬件角度采用了多种方案提高存储器的访问性能,包括增加多级缓存部件(例如cache)、以及对缓存部件的管理机制等等。
为了减小访存延迟对程序执行性能的影响,人们设计了多种软硬件机制,其中,应用最为广泛的是高速缓冲存储器cache。围绕cache的应用,出现了很多种访问调度、数据映射、空间分配等技术、方法、策略,例如cache块淘汰策略、cache页着色算法、cache预取、cache写暗示等等。在某些性能敏感的场景下,需要用户手动地通过软硬件接口对技术、方法、策略进行配置。
在冯诺依曼体系结构下,存储墙问题一直是制约计算机系统性能提高的瓶颈之一,通过cache减小访存延迟是缓解存储墙问题的主要手段之一。但是,充分利用cache结构以提高访存性能,需要用户进行手动干预,例如识别代码可优化场景、进行代码插桩、进行代码变换等等。在代码结构复杂、代码量大的实际应用课题中,用户对代码进行手工干预,往往会引入一些异常情况,导致计算结果出错。
发明内容
本发明的目的是提供一种基于cache写暗示机制的编译优化方法,其可减少因繁琐的存储管理对代码生产过程的干扰,进一步降低访存延迟,提高存储系统性能。
为达到上述目的,本发明采用的技术方案是:提供一种基于cache写暗示机制的编译优化方法,自动识别对连续主存进行写操作的指令序列,并通过指令插桩,对这些指令序列的访存行为进行优化,包括以下步骤:
S1:对代码中所有写操作进行识别,并通过插桩的方式进行标记,具体如下:
S11、利用编译优化遍对代码的中间表示进行遍历;
S12、识别写操作;
S13、通过两条指令链结构cur_w和cur_w_r对数据单元进行写后读判断:如果指令序列中存在对该数据单元的写后读相关,则对该数据单元所在的写操作不进行后续的代码插桩,否则,执行S14;
S14、在识别到的写操作前进行代码插桩,插入定制的cachesc指令,并在cachesc指令参数中写入待写回数据单元占用的寄存器编号;
S2:对S1中识别的写操作的数据单元访问连续性进行判定,如果满足连续性要求,则更新cachesc指令参数,具体如下:
S21、利用编译优化遍对代码的中间表示进行遍历;
S22、判断S1中识别的写操作是否处于循环体中,如果存在,执行S23,如果不存在,删除已插桩的cachesc指令;
S23、判断循环体能否进行循环展开,如果能展开,执行S24,如果不能展开,删除已插桩的cachesc指令;
S24、判断循环体展开次数能否满足数据访问空间大于cache块大小的限制,如果满足限制需求,执行S25,如果不满足需求,删除已插桩的cachesc指令;
S25、判断数据访问是否存在跨步访问的情况,如果不存在,执行S26,如果存在,删除已插桩的cachesc指令;
S26、将循环体循环展开,更新未被删除的cachesc指令参数;
S3:写操作边界处理,具如下:
S31、利用编译优化遍对代码的中间表示进行遍历;
S32、对循环体中跳转指令的条件判断值进行计算;
S33、根据数据访问类型以及循环展开次数,在cachesc指令前插桩条件选择指令;
S34、根据条件选择指令,更新cachesc指令参数,通过条件判断指令,跳过对边界数据使能cachesc指令的情况。
上述技术方案中进一步改进的方案如下:
1. 上述方案中,S34中所述边界数据指写回的数据单元不在一个完整的cache块中的数据。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明提出了一种基于cache写暗示机制的编译优化方法,通过编译优化的方式,自动识别可应用cache写暗示的代码场景,自动完成代码变换,高效地利用硬件cache写暗示机制,减少因繁琐的存储管理对代码生产过程的干扰,进一步降低访存延迟,提高存储系统性能。
附图说明
附图1为基于cache写暗示机制的编译优化方法流程图。
具体实施方式
实施例:本发明提供一种基于cache写暗示机制的编译优化方法,自动识别对连续主存进行写操作的指令序列,并通过指令插桩,对这些指令序列的访存行为进行优化,包括以下步骤:
S1:对代码中所有写操作进行识别,并通过插桩的方式进行标记,具体如下:
S11、利用编译优化遍对代码的中间表示进行遍历;
S12、识别写操作;
S13、通过两条指令链结构cur_w和cur_w_r对数据单元进行写后读判断:如果指令序列中存在对该数据单元的写后读相关,则对该数据单元所在的写操作不进行后续的代码插桩,否则,执行S14;
S14、在识别到的写操作前进行代码插桩,插入定制的cachesc指令,并在cachesc指令参数中写入待写回数据单元占用的寄存器编号;
S2:对S1中识别的写操作的数据单元访问连续性进行判定,如果满足连续性要求,则更新cachesc指令参数,具体如下:
S21、利用编译优化遍对代码的中间表示进行遍历;
S22、判断S1中识别的写操作是否处于循环体中,如果存在,执行S23,如果不存在,删除已插桩的cachesc指令;
S23、判断循环体能否进行循环展开,如果能展开,执行S24,如果不能展开,删除已插桩的cachesc指令;
S24、判断循环体展开次数能否满足数据访问空间大于cache块大小的限制,如果满足限制需求,执行S25,如果不满足需求,删除已插桩的cachesc指令;
S25、判断数据访问是否存在跨步访问的情况,如果不存在,执行S26,如果存在,删除已插桩的cachesc指令;
S26、将循环体循环展开,更新未被删除的cachesc指令参数;
S3:写操作边界处理,具如下:
S31、利用编译优化遍对代码的中间表示进行遍历;
S32、对循环体中跳转指令的条件判断值进行计算;
S33、根据数据访问类型以及循环展开次数,在cachesc指令前插桩条件选择指令;
S34、根据条件选择指令,更新cachesc指令参数,通过条件判断指令,跳过对边界数据使能cachesc指令的情况。
S34中所述边界数据指写回的数据单元不在一个完整的cache块中的数据。
对上述实施例的进一步解释如下:
本发明主要从三个方面实现基于cache写暗示机制的编译优化方法:
一、识别代码中的写操作(数据写回内存指令STORE),并通过插桩的方式进行标记;
二、从已标记的写操作中,筛选出符合cache写暗示机制规范需求的连续写操作,更新写操作对应的插桩代码;
三、对更新后的写操作进行访问边界的处理,插入跳转指令,并删除冗余的插桩代码。
本发明提出了一种基于cache写暗示机制的编译优化方法,流程图如图1所示,主要由写操作识别、写操作连续性判定、写操作边界处理三部分组成:
S1:写操作识别,主要完成对代码中所有写操作进行识别,通过插桩的方式进行标记,具体如下:
1、利用编译优化遍对代码的中间表示进行遍历;
2、识别写操作;
3、通过两条指令链结构cur_w和cur_w_r对数据单元进行写后读判断,如果指令序列中存在对该数据单元的写后读相关,对该数据单元所在的写操作,不进行后续的代码插桩;
4、在识别到的写操作前进行代码插桩,插入定制的cachesc指令,在cachesc指令参数中写入待写回数据单元占用的寄存器编号。
S2:写操作连续性判定,对S1中识别的写操作的数据单元访问连续性进行判定,如果满足连续性要求,则更新cachesc指令参数,具体如下:
1、利用编译优化遍对代码的中间表示进行遍历;
2、判断S1识别的写操作是否处于循环体中,如果存在,进行第3步;如果不存在,删除已插桩的cachesc指令;
3、判断循环体能否进行循环展开,如果能展开,进行第4步;如果不能展开,删除已插桩的cachesc指令;
4、判断循环体展开次数能否满足数据访问空间大于cache块大小的限制,如果满足限制需求,进行第5步;如果不满足需求,删除已插桩的cachesc指令;
5、判断数据访问是否存在跨步访问的情况,如果不存在,进行第6步;如果存在,删除已插桩的cachesc指令;
6、循环展开,更新未被删除的cachesc指令参数。
S3:写操作边界处理,由于在代码实现过程中,cachesc指令中数据访存地址选取的是cache块空间中的最后一个数据地址。为了防止访问cache不对界产生的数据读取错误,最后一次循环体访问的数据不应该使能cachesc指令,具体操作如下:
1、利用编译优化遍对代码的中间表示进行遍历;
2、对循环体中跳转指令的条件判断值进行计算;
3、根据数据访问类型以及循环展开次数,在cachesc指令前插桩条件选择指令;
4、根据条件选择指令,更新cachesc指令参数,通过条件判断,跳过对边界数据块使能cachesc指令的情况。
采用上述一种基于cache写暗示机制的编译优化方法时,其通过编译优化的方式,自动识别可应用cache写暗示的代码场景,自动完成代码变换,高效地利用硬件cache写暗示机制,减少因繁琐的存储管理对代码生产过程的干扰,进一步降低访存延迟,提高存储系统性能。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
编译优化:通过代码变换等手段,消除高级语言翻译中可能引入的低效率,改进目标程序的性能、功耗、大小等指标。
编译优化遍:对源程序或其等价的中间语言程序从头到尾扫视并完成规定优化任务的过程。
存储墙:指的是存储系统性能严重限制处理器性能发挥的现象。
Cache:高速缓冲存储器,位于处理器和主存储器之间,规模较小,访问速度很快。
用户友好性:指用户操作系统时主观操作的复杂性,例如,主观操作复杂性越低,系统越容易被使用,说明系统的用户友好性越好。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (2)
1.一种基于cache写暗示机制的编译优化方法,其特征在于:自动识别对连续主存进行写操作的指令序列,并通过指令插桩,对这些指令序列的访存行为进行优化,包括以下步骤:
S1:对代码中所有写操作进行识别,并通过插桩的方式进行标记,具体如下:
S11、利用编译优化遍对代码的中间表示进行遍历;
S12、识别写操作;
S13、通过两条指令链结构cur_w和cur_w_r对数据单元进行写后读判断:如果指令序列中存在对该数据单元的写后读相关,则对该数据单元所在的写操作不进行后续的代码插桩,否则,执行S14;
S14、在识别到的写操作前进行代码插桩,插入定制的cachesc指令,并在cachesc指令参数中写入待写回数据单元占用的寄存器编号;
S2:对S1中识别的写操作的数据单元访问连续性进行判定,如果满足连续性要求,则更新cachesc指令参数,具体如下:
S21、利用编译优化遍对代码的中间表示进行遍历;
S22、判断S1中识别的写操作是否处于循环体中,如果存在,执行S23,如果不存在,删除已插桩的cachesc指令;
S23、判断循环体能否进行循环展开,如果能展开,执行S24,如果不能展开,删除已插桩的cachesc指令;
S24、判断循环体展开次数能否满足数据访问空间大于cache块大小的限制,如果满足限制需求,执行S25,如果不满足需求,删除已插桩的cachesc指令;
S25、判断数据访问是否存在跨步访问的情况,如果不存在,执行S26,如果存在,删除已插桩的cachesc指令;
S26、将循环体循环展开,更新未被删除的cachesc指令参数;
S3:写操作边界处理,具如下:
S31、利用编译优化遍对代码的中间表示进行遍历;
S32、对循环体中跳转指令的条件判断值进行计算;
S33、根据数据访问类型以及循环展开次数,在cachesc指令前插桩条件选择指令;
S34、根据条件选择指令,更新cachesc指令参数,通过条件判断指令,跳过对边界数据使能cachesc指令的情况。
2.根据权利要求1所述的基于cache写暗示机制的编译优化方法,其特征在于:S34中所述边界数据指写回的数据单元不在一个完整的cache块中的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110347315.3A CN114217806A (zh) | 2021-03-31 | 2021-03-31 | 基于cache写暗示机制的编译优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110347315.3A CN114217806A (zh) | 2021-03-31 | 2021-03-31 | 基于cache写暗示机制的编译优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114217806A true CN114217806A (zh) | 2022-03-22 |
Family
ID=80695885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110347315.3A Pending CN114217806A (zh) | 2021-03-31 | 2021-03-31 | 基于cache写暗示机制的编译优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114217806A (zh) |
-
2021
- 2021-03-31 CN CN202110347315.3A patent/CN114217806A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9946523B2 (en) | Multiple pass compiler instrumentation infrastructure | |
EP3028149B1 (en) | Software development tool | |
KR101081090B1 (ko) | 명령어 스트림의 효율적인 에뮬레이션을 가능하게 하기 위한 레지스터 기반의 명령어 최적화 | |
US8479176B2 (en) | Register mapping techniques for efficient dynamic binary translation | |
US7137111B2 (en) | Aggressive prefetch of address chains | |
US7243195B2 (en) | Software managed cache optimization system and method for multi-processing systems | |
US7100157B2 (en) | Methods and apparatus to avoid dynamic micro-architectural penalties in an in-order processor | |
US20080229028A1 (en) | Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization | |
US20130125096A1 (en) | Systems and Methods for Dynamic Collection of Probe Call Sites | |
WO2017114472A1 (en) | Method and apparatus for data mining from core traces | |
CN113196243A (zh) | 使用编译器生成的仿真优化元数据改进仿真和跟踪性能 | |
US20090276575A1 (en) | Information processing apparatus and compiling method | |
CN114217806A (zh) | 基于cache写暗示机制的编译优化方法 | |
US20050050534A1 (en) | Methods and apparatus to pre-execute instructions on a single thread | |
US20060036809A1 (en) | Methods and apparatus for enforcing instruction-cache coherence | |
US20200364052A1 (en) | Branch penalty reduction using memory circuit | |
US11740906B2 (en) | Methods and systems for nested stream prefetching for general purpose central processing units | |
Paul et al. | Improving efficiency of embedded multi-core platforms with scratchpad memories | |
US20050251795A1 (en) | Method, system, and program for optimizing code | |
KR102213258B1 (ko) | 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치 | |
US20220405110A1 (en) | Non-transitory computer-readable recording medium and compilation method | |
KR20080041251A (ko) | 전진 로드 값 검사 개선 | |
Paik et al. | Performance improvement for flash memories using loop optimization | |
US20100077145A1 (en) | Method and system for parallel execution of memory instructions in an in-order processor | |
CN114237612A (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 |