CN112445724B - 针对片上存储器重用的链接时地址分配方法 - Google Patents
针对片上存储器重用的链接时地址分配方法 Download PDFInfo
- Publication number
- CN112445724B CN112445724B CN201910805599.9A CN201910805599A CN112445724B CN 112445724 B CN112445724 B CN 112445724B CN 201910805599 A CN201910805599 A CN 201910805599A CN 112445724 B CN112445724 B CN 112445724B
- Authority
- CN
- China
- Prior art keywords
- segment
- reuse
- chip memory
- link
- compiler
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种针对片上存储器重用的链接时地址分配方法,包括以下步骤:S1、在编译器上构建片上存储器的重用段类型,生成片上存储器的访存模式;S2、在执行S1中操作的同时,对链接脚本进行配置;S31、链接器对S2中所述的链接脚本进行信息扫描,进入链接器的重用处理函数;S32、从二进制文件格式描述符文件中获取段信息;S33、循环处理S32中获取的段信息,识别并找出重用段;S34、解析出S12中所述的重用段属性的数据结构中所带的重用段名字,对满足同一个重用段名字的段分配相同的虚拟内存地址;S35、从S32中获取的段信息中找出最大的段,用作该重用段空间分配时的空间大小。本发明通过链接时地址分配方法实现空间重用,有效提高片上存储器的空间利用率、提升程序性能。
Description
技术领域
本发明涉及一种针对片上存储器重用的链接时地址分配方法,属于计算机技术领域。
背景技术
由于处理器性能和存储器性能的巨大差异,导致了“存储墙”问题的出现,使得存储系统成为系统的瓶颈。传统计算机体系结构采用硬件管理的cache来缓解“存储墙”问题,但随着应用和工艺的发展,cache在面积、功耗和访问时间上都暴露出一些问题。微处理器要想达到最佳性能,进一步解决“存储器”问题,采用片上存储器是一个有效应对的办法。在当前的时钟速度下,只有片上存储器能支持零等待状态访问速度。同时,与片外存储器相比,片上存储器有较好的功耗效率,减少了电磁干扰,并具备更确定的行为特征。
目前,软件管理的片上存储器已被普遍运用于嵌入式系统、流处理器和图形处理器中,并被逐渐运用到新型高性能计算机体系结构中。与硬件管理的cache不同,软件管理的片上存储器需要由软件显式地管理片上与片外存储器之间的数据传输,决定数据进入存储器的时机和位置。软件管理的片上存储器给编译提出了重要的挑战。
如何在保证程序正确性的基础上,尽可能提高有限的片上存储器空间的利用率,尽量避免存储器碎片;充分捕获数据复用,优化存储层次间的通信,从而最小化存储器带宽需求;开发计算与访存并行,有效隐藏存储器访问延迟,是提高基于软件管理片上存储器的系统上程序性能的关键。这其中,对片上存储器空间的重用,一般由用户直接管理。用户需要根据处理工作量和数据生存周期,来具体划分和管理缓冲空间,达到复用的目的,用户的负担较重,而且容易出错。或者利用特定的语义,例如CUDA在kernel中用__shared__声明的数据空间,虽然具备一定的重用功能,但不够灵活,生命期只在本kernel内,kernel间直接就是天然复用shared memory的,且不能支持多段空间的重用
发明内容
本发明的目的是提供一种针对片上存储器重用的链接时地址分配方法,该针对片上存储器重用的链接时地址分配方法通过链接时地址分配方法实现空间重用,有效提高片上存储器的空间利用率、提升程序性能。
为达到上述目的,本发明采用的技术方案是:一种针对片上存储器重用的链接时地址分配方法,包括以下步骤:
S1、在编译器上构建片上存储器的重用段类型,并在编译器前端对重用段类型进行识别、解析,设置重用段属性,生成片上存储器的访存模式,具体步骤如下:
S11、构建片上存储器的重用段类型,即编译器通过提供关键字的方式,对片上存储器重用段的类型进行修饰,输入关键字对希望进行片上存储器重用的程序变量进行修饰,同时提供重用段名;
S12、识别、解析并设置重用段属性,即编译器前端对输入程序的所有变量进行关键字的解析识别,当识别解析到S11中所述的片上存储器重用段类型关键字修饰的变量时,则将该变量设置上重用段属性标志,并将S11中所述的重用段名以及使用该变量的函数名信息添加在重用段属性的数据结构中;
S13、生成片上存储器的访存模式,即编译器对S12中设置成重用段属性的变量生成片上存储器的访存模式;
S2、在执行S1中操作的同时,对链接脚本进行配置,具体步骤如下:
S21、设置overlay关键字,即在链接脚本中加入“OVERLAY :”关键字,用于链接时重用段的识别处理;
S22、设置入口重用段,即在S21设置的OVERLAY关键字之后加入一个重用段入口信息;
S3、采用链接器,对以上步骤中获得的信息进行处理,具体如下:
S31、链接器对S2中所述的链接脚本进行信息扫描,当扫描到S21中所述的链接脚本的OVERLAY关键字后,通过S22中设置的重用段入口信息进入链接器的重用处理函数;
S32、在重用处理函数中,链接器循环处理链接对象文件,并在处理链接对象文件的循环体开始时,提前打开二进制文件格式描述符文件,从二进制文件格式描述符文件中获取段信息;
S33、循环处理S32中获取的段信息,并根据S1中设置的重用段属性识别并找出重用段;
S34、解析出S12中所述的重用段属性的数据结构中所带的重用段名字,对满足同一个重用段名字的段分配相同的虚拟内存地址;
S35、从S32中获取的段信息中找出最大的段,并将最大的段的物理空间大小作为S33中获得的重用段的物理空间大小,用作该重用段空间分配时的空间大小。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明针对片上存储器重用的链接时地址分配方法,其构建了片上存储器重用段类型,通过编译器和链接器的相互配合,让用户更加方便直观地根据需求重用片上存储器空间,通过链接时地址分配方法实现空间重用,有效提高片上存储器的空间利用率、提升程序性能;还可以在链接器中针对多个链接对象文件能准确识别相同标识的重用段,分配相同的虚拟内存地址,并计算出重用段的大小,用作空间分配时的空间大小。
附图说明
附图1为本发明针对片上存储器重用的链接时地址分配方法流程图。
具体实施方式
实施例:一种针对片上存储器重用的链接时地址分配方法,基于大规模异构系统,包括以下步骤:
S1、在编译器上构建片上存储器的重用段类型,并在编译器前端对重用段类型进行识别、解析,设置重用段属性,生成片上存储器的访存模式,具体步骤如下:
S11、构建片上存储器的重用段类型,即编译器通过提供关键字的方式,对片上存储器重用段的类型进行修饰,输入关键字对希望进行片上存储器重用的程序变量进行修饰,同时提供重用段名;
S12、识别、解析并设置重用段属性,即编译器前端对输入程序的所有变量进行关键字的解析识别,当识别解析到S11中所述的片上存储器重用段类型关键字修饰的变量时,则将该变量设置上重用段属性标志,并将S11中所述的重用段名以及使用该变量的函数名信息添加在重用段属性的数据结构中;
S13、生成片上存储器的访存模式,即编译器对S12中设置成重用段属性的变量生成片上存储器的访存模式;
S2、在执行S1中操作的同时,对链接脚本进行配置,具体步骤如下:
S21、设置overlay关键字,即在链接脚本中加入“OVERLAY :”关键字,用于链接时重用段的识别处理;
S22、设置入口重用段,即在S21设置的OVERLAY关键字之后加入一个重用段入口信息;
S3、采用链接器,对以上步骤中获得的信息进行处理,具体如下:
S31、链接器对S2中所述的链接脚本进行信息扫描,当扫描到S21中所述的链接脚本的OVERLAY关键字后,通过S22中设置的重用段入口信息进入链接器的重用处理函数;
S32、在重用处理函数中,链接器循环处理链接对象文件,并在处理链接对象文件的循环体开始时,提前打开二进制文件格式描述符文件,从二进制文件格式描述符文件中获取段信息;
S33、循环处理S32中获取的段信息,并根据S1中设置的重用段属性识别并找出重用段;
S34、解析出S12中所述的重用段属性的数据结构中所带的重用段名字,对满足同一个重用段名字的段分配相同的虚拟内存地址;
S35、从S32中获取的段信息中找出最大的段,并将最大的段的物理空间大小作为S33中获得的重用段的物理空间大小,用作该重用段空间分配时的空间大小。
实施例进一步解释如下:
本发明方案提供了一种针对片上存储器重用的链接时地址分配方法,具体流程如图1所示,包括编译器、链接脚本和链接器三部分的工作。
S1:首先,编译器构建片上存储器重用段类型,在编译器前端识别、解析并设置重用段属性,生成片上存储器的访存模式,具体如下:
S11、构建片上存储器重用段类型
编译器提供关键字的方式对片上存储器重用段的类型进行修饰,输入程序使用提供的关键字对希望进行片上存储器重用的程序变量进行修饰,同时提供重用段名。
S12、前端识别、解析并设置重用段属性
编译器前端对输入程序的所有变量进行关键字的解析识别,当识别解析到S11中所述的片上存储器重用段类型关键字修饰的变量,则将该变量设置上重用段属性标志,并将S11所述的重用段名、以及使用该变量的函数名信息添加在重用段属性的数据结构中。
S13、生成片上存储器的访存模式
编译器对S12中设置成重用段属性的变量生成片上存储器的访存模式。
S2:S2与S1同时进行,进行链接脚本的处理步骤:
S21、设置overlay关键字
在链接脚本中加入“OVERLAY :”关键字,用链接时重用段的识别处理。
S22、设置入口重用段
在S21设置的OVERLAY关键字之后加入一个重用段入口信息。
S3:S1与S2执行完后,进入本步骤,本步骤进行链接器的处理过程。
S31、链接器对S2中所述链接脚本进行信息扫描,当扫描到S21中所述的链接脚本的OVERLAY关键字后,会通过S22中所设置的入口重用段进入链接器的重用处理函数。
S32、在重用处理函数中,链接器循环处理链接对象文件。在处理链接对象文件的循环体一开始,就提前打开bfd文件;从bfd文件中获取段信息。
S33、循环处理段信息,根据S1设置的段属性识别并找出重用段。
S34、解析出S12中所述的重用段属性的数据结构中所带的重用段名字,对满足同一个重用段名字的段分配相同的虚拟内存地址。
S35、找出最大的段大小作为该重用段大小。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
片上存储器:与CPU集成在一个芯片上的存储系统。
链接器:将一个或多个目标文件、库等链接为一个可执行文件。
Cache:高速缓冲存储器,是一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问,可以分为多个级别。
CUDA:由NVIDIA公司推出的通用并行计算架构。
shared memory:GPU上的片上存储器。
采用上述针对片上存储器重用的链接时地址分配方法时,其构建了片上存储器重用段类型,通过编译器和链接器的相互配合,让用户更加方便直观地根据需求重用片上存储器空间,通过链接时地址分配方法实现空间重用,有效提高片上存储器的空间利用率、提升程序性能;还可以在链接器中针对多个链接对象文件能准确识别相同标识的重用段,分配相同的虚拟内存地址,并计算出重用段的大小,用作空间分配时的空间大小。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (1)
1.一种针对片上存储器重用的链接时地址分配方法,其特征在于:包括以下步骤:
S1、在编译器上构建片上存储器的重用段类型,并在编译器前端对重用段类型进行识别、解析,设置重用段属性,生成片上存储器的访存模式,具体步骤如下:
S11、构建片上存储器的重用段类型,即编译器通过提供关键字的方式,对片上存储器重用段的类型进行修饰,输入关键字对希望进行片上存储器重用的程序变量进行修饰,同时提供重用段名;
S12、识别、解析并设置重用段属性,即编译器前端对输入程序的所有变量进行关键字的解析识别,当识别解析到S11中所述的片上存储器重用段类型关键字修饰的变量时,则将该变量设置上重用段属性标志,并将S11中所述的重用段名以及使用该变量的函数名信息添加在重用段属性的数据结构中;
S13、生成片上存储器的访存模式,即编译器对S12中设置成重用段属性的变量生成片上存储器的访存模式;
S2、在执行S1中操作的同时,对链接脚本进行配置,具体步骤如下:
S21、设置overlay关键字,即在链接脚本中加入“OVERLAY :”关键字,用于链接时重用段的识别处理;
S22、设置入口重用段,即在S21设置的OVERLAY关键字之后加入一个重用段入口信息;
S3、采用链接器,对以上步骤中获得的信息进行处理,具体如下:
S31、链接器对S2中所述的链接脚本进行信息扫描,当扫描到S21中所述的链接脚本的OVERLAY关键字后,通过S22中设置的重用段入口信息进入链接器的重用处理函数;
S32、在重用处理函数中,链接器循环处理链接对象文件,并在处理链接对象文件的循环体开始时,提前打开二进制文件格式描述符文件,从二进制文件格式描述符文件中获取段信息;
S33、循环处理S32中获取的段信息,并根据S1中设置的重用段属性识别并找出重用段;
S34、解析出S12中所述的重用段属性的数据结构中所带的重用段名字,对满足同一个重用段名字的段分配相同的虚拟内存地址;
S35、从S32中获取的段信息中找出最大的段,并将最大的段的物理空间大小作为S33中获得的重用段的物理空间大小,用作该重用段空间分配时的空间大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910805599.9A CN112445724B (zh) | 2019-08-29 | 2019-08-29 | 针对片上存储器重用的链接时地址分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910805599.9A CN112445724B (zh) | 2019-08-29 | 2019-08-29 | 针对片上存储器重用的链接时地址分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445724A CN112445724A (zh) | 2021-03-05 |
CN112445724B true CN112445724B (zh) | 2022-09-13 |
Family
ID=74741192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910805599.9A Active CN112445724B (zh) | 2019-08-29 | 2019-08-29 | 针对片上存储器重用的链接时地址分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445724B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880497A (zh) * | 2012-09-28 | 2013-01-16 | 无锡江南计算技术研究所 | 一种编译器及软件管理存储器的重用优化方法 |
CN109240702A (zh) * | 2018-08-15 | 2019-01-18 | 无锡江南计算技术研究所 | 一种多线程模式下的快速段式编址配置和访问方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2017279610A1 (en) * | 2017-12-19 | 2019-07-04 | Canon Kabushiki Kaisha | Memory access optimisation using per-layer computational mapping and memory allocation for CNN application |
-
2019
- 2019-08-29 CN CN201910805599.9A patent/CN112445724B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880497A (zh) * | 2012-09-28 | 2013-01-16 | 无锡江南计算技术研究所 | 一种编译器及软件管理存储器的重用优化方法 |
CN109240702A (zh) * | 2018-08-15 | 2019-01-18 | 无锡江南计算技术研究所 | 一种多线程模式下的快速段式编址配置和访问方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112445724A (zh) | 2021-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Breß et al. | Gpu-accelerated database systems: Survey and open challenges | |
US20160085546A1 (en) | Source Code Separation and Generation for Heterogeneous Central Processing Unit (CPU) Computational Devices | |
CN102495723B (zh) | 小块通信算子 | |
US10133827B2 (en) | Automatic generation of multi-source breadth-first search from high-level graph language | |
US9164735B2 (en) | Enabling polymorphic objects across devices in a heterogeneous platform | |
CN102541612B (zh) | 数据平行代码中的映射变换 | |
EP3254191A1 (en) | Apparatus and method for using parameterized intermediate representation for just-in-time compilation in database query execution engine | |
Noaje et al. | Source-to-source code translator: OpenMP C to CUDA | |
JP2011060279A (ja) | 自律的メモリアーキテクチャー | |
Alvanos et al. | Improving communication in PGAS environments: Static and dynamic coalescing in UPC | |
Miyoshi et al. | FLAT: A GPU programming framework to provide embedded MPI | |
US9910650B2 (en) | Method and apparatus for approximating detection of overlaps between memory ranges | |
Tran et al. | Performance optimization of Aho-Corasick algorithm on a GPU | |
CN112445724B (zh) | 针对片上存储器重用的链接时地址分配方法 | |
Tran et al. | High throughput parallel implementation of Aho-Corasick algorithm on a GPU | |
Wei et al. | Deploying and scaling distributed parallel deep neural networks on the Tianhe-3 prototype system | |
CN115600664A (zh) | 算子处理方法、电子设备及存储介质 | |
CN116710891A (zh) | 子图的编译、执行方法及相关设备 | |
Bhimani et al. | Design space exploration of GPU Accelerated cluster systems for optimal data transfer using PCIe bus | |
US8984473B2 (en) | Methods for type analysis in systems for code generation | |
Yang et al. | Support OpenCL 2.0 Compiler on LLVM for PTX Simulators | |
EP4083785B1 (en) | Profiling and optimization of compiler-generated code | |
Nourian | Analysis of Finite State Automata and Transducers Processing Acceleration on Disparate Hardware Technologies | |
dos Santos et al. | Advancing Database System Operators with Near-Data Processing | |
Jin et al. | Bob Jenkins Lookup3 Hash Function on OpenCL FPGA Platform |
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 |