CN112445724B - 针对片上存储器重用的链接时地址分配方法 - Google Patents

针对片上存储器重用的链接时地址分配方法 Download PDF

Info

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
Application number
CN201910805599.9A
Other languages
English (en)
Other versions
CN112445724A (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.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology 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 Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201910805599.9A priority Critical patent/CN112445724B/zh
Publication of CN112445724A publication Critical patent/CN112445724A/zh
Application granted granted Critical
Publication of CN112445724B publication Critical patent/CN112445724B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures 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中获得的重用段的物理空间大小,用作该重用段空间分配时的空间大小。
CN201910805599.9A 2019-08-29 2019-08-29 针对片上存储器重用的链接时地址分配方法 Active CN112445724B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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