CN112199217A - 一种软硬协同的线程私有数据访问优化方法 - Google Patents

一种软硬协同的线程私有数据访问优化方法 Download PDF

Info

Publication number
CN112199217A
CN112199217A CN202011144938.2A CN202011144938A CN112199217A CN 112199217 A CN112199217 A CN 112199217A CN 202011144938 A CN202011144938 A CN 202011144938A CN 112199217 A CN112199217 A CN 112199217A
Authority
CN
China
Prior art keywords
thread
private data
thread private
instruction
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.)
Granted
Application number
CN202011144938.2A
Other languages
English (en)
Other versions
CN112199217B (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 CN202011144938.2A priority Critical patent/CN112199217B/zh
Publication of CN112199217A publication Critical patent/CN112199217A/zh
Application granted granted Critical
Publication of CN112199217B publication Critical patent/CN112199217B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开一种软硬协同的线程私有数据访问优化方法,包括以下步骤:S1:编译器前端为线程私有变量节点生成带有标记的中间表达式;S2:编译器后端的代码生成模块判断线程私有变量节点所携带的标记值是否为TRUE,若为TRUE,则通过后端指令生成模板使用读线程号指令替换系统调用指令,并将读线程号指令返回值写入函数返回值专用寄存器$r0;S3:编译器根据读线程号指令返回值与线程私有数据空间地址关系在后端代码生成模块中添加线程私有数据基址计算相关指令;S4:根据S3中获取的线程私有数据基址与线程私有变量偏移,计算线程私有变量地址。本发明可以克服原始线程私有数据访问效率低下的问题,显著提升线程私有数据访问的性能。

Description

一种软硬协同的线程私有数据访问优化方法
技术领域
本发明涉及内存访问和编译器优化技术领域,特别是一种软硬协同的线程私有数据访问优化方法。
背景技术
在单线程程序中,我们经常要用到“全局变量”以实现多个函数间共享数据。在多线程环境下,进程内所有线程共享进程的数据空间,全局变量或静态变量为所有线程共有。如果线程调用的函数使用全局变量或静态变量,则很可能引起编程错误。因为这些函数使用的全局变量和静态变量无法为不同的线程保存各自的值,当同一进程内的不同线程几乎同时调用这样的函数时就无法保证程序的正确性。而解决这一问题的一种方式就是使用线程私有数据(Thread-specific data, TSD),线程私有数据在线程内可以被所有函数访问,但对其他线程是屏蔽的,比如我们常见的返回标准错误码变量errno,就是一个线程私有数据。《UNIX高级编程环境》中阐述线程私有数据是一种存储和查询与某个线程相关数据的机制,采用一种被称为一键多值的技术,即一个键对应多个数值。使用线程私有数据时,首先要为每个线程数据创建一个相关联的键;在每个线程内部,都使用这个公用的键来指代线程数据,在不同的线程中,这个键关联不同的数据。因此每个线程都可以独立地访问自己的私有数据,不用担心与其他线程的同步访问问题。
编译器是计算机系统不可或缺的底层软件,它的核心思想是把同样的逻辑结构和思想从高级语言转化为机器语言,最终成为硬件执行的物理信号。编译器是实现软件从设计到能在硬件上运行的桥梁,几乎所有的可执行代码都是通过编译器编译后产生的。编译器的编译过程分为前端、中端和后端。前端主要通过词法分析、语法分析将各种源语言解析为一种通用的抽象语法树—GENERIC树;中端将GENERIC树转化为GIMPLE三地址中间代码,最后转换成为基于底层的RTL语言;后端在RTL语言上执行一系列的优化遍,进行代码生成、寄存器分配等优化工作。
线程私有数据访问原始实现为编译器根据程序特征生成系统调用指令,程序执行时,线程访问私有数据执行系统调用,从用户态切换到内核态;然后通过特权装入指令获取线程私有数据基址;最后,退出系统调用,从内核态切换到用户态,计算线程私有数据地址并进行访问,具体流程见附图1。然而,现有技术中的线程私有数据访问效率较低。
发明内容
本发明的目的是提供一种软硬协同的线程私有数据访问优化方法,该一种软硬协同的线程私有数据访问优化方法可以克服原始线程私有数据访问效率低下的问题,显著提升线程私有数据访问的性能,在一定范围内提升多核环境下的多线程应用性能。
为达到上述目的,本发明采用的技术方案是:一种软硬协同的线程私有数据访问优化方法,包括以下步骤:
S1:编译器前端识别程序中线程私有数据访问行为,为线程私有变量节点生成带有标记的中间表达式;
S2:编译器后端的代码生成模块根据S1中生成的带有标记的中间表达式,判断中间表达式中线程私有变量节点所携带的标记值是否为TRUE,若为TRUE,则通过后端指令生成模板使用读线程号指令替换系统调用指令,并将读线程号指令返回值写入函数返回值专用寄存器$r0,否则,按非私有数据访问进行代码生成;
S3:编译器根据读线程号指令返回值与线程私有数据空间地址关系在后端代码生成模块中添加线程私有数据基址计算相关指令,用于获取线程私有数据基址;
S4:根据S3中获取的线程私有数据基址与通过线程私有变量索引计算获得的线程私有变量地址偏移,计算线程私有变量地址,实现对线程私有变量的访问。
上述技术方案中进一步改进的方案如下:
1. 上述方案S1中编译器前端根据词法、语法分析识别程序中线程私有数据访问行为,生成带有线程私有数据标记的中间表达式。
2. 上述方案S2中编译器后端根据中间表达式线程私有变量标记值自动匹配后端模板,生成读线程号指令。
3. 上述方案S3中编译器根据寻址模式生成相应的线程私有数据基址计算指令。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明一种软硬协同的线程私有数据访问优化方法,其使用用户级指令实现线程私有数据访问,可以克服原始线程私有数据访问进入操作系统实现带来系统调用与特权指令开销而导致效率低下的问题,显著提升线程私有数据访问的性能,在一定范围内提升多核环境下的多线程应用性能;另外,通过编译器自动进行线程私有数据识别与指令生成优化实现,对用户透明,不需增加额外操作,进一步提升线程私有数据访问的性能。
附图说明
附图1为现有技术中线程私有数据访问进入操作系统实现示意图;
附图2为本发明基于软硬协同的线程私有数据访问实现示意图。
具体实施方式
实施例:如图2所示,本发明一种软硬协同的线程私有数据访问优化方法,包括以下步骤:
步骤1、编译器前端根据词法、语法分析,识别程序中线程私有数据访问行为,为线程私有变量节点生成带有线程私有数据标记的中间表达式;
步骤2、编译器后端的代码生成模块根据步骤1中生成的带有标记的中间表达式,首先判断中间表达式中变量节点所携带的标记值是否为TRUE,如果为TRUE,则通过后端指令生成模板使用读线程号指令替换系统调用指令,并将读线程号指令返回值写入函数返回值专用寄存器$r0,否则,按非私有数据访问进行代码生成;
步骤3、编译器根据读线程号指令返回值与线程私有数据空间地址关系在后端代码生成模块中添加线程私有数据基址计算相关指令,用于获取线程私有数据基址;
步骤4、根据步骤3中获取的线程私有数据基址与通过线程私有变量索引计算获得的线程私有变量地址偏移,计算线程私有变量地址,实现对线程私有变量的访问。
采用上述软硬协同的线程私有数据访问优化方法时,其使用用户级指令实现线程私有数据访问,可以克服原始线程私有数据访问进入操作系统实现带来系统调用与特权指令开销而导致效率低下的问题,显著提升线程私有数据访问的性能,在一定范围内提升多核环境下的多线程应用性能;
另外,通过编译器自动进行线程私有数据识别与指令生成优化实现,对用户透明,不需增加额外操作,进一步提升线程私有数据访问的性能。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (4)

1.一种软硬协同的线程私有数据访问优化方法,其特征在于,包括以下步骤:
S1:编译器前端识别程序中线程私有数据访问行为,为线程私有变量节点生成带有标记的中间表达式;
S2:编译器后端的代码生成模块根据S1中生成的带有标记的中间表达式,判断中间表达式中线程私有变量节点所携带的标记值是否为TRUE,若为TRUE,则通过后端指令生成模板使用读线程号指令替换系统调用指令,并将读线程号指令返回值写入函数返回值专用寄存器$r0,否则,按非私有数据访问进行代码生成;
S3:编译器根据读线程号指令返回值与线程私有数据空间地址关系在后端代码生成模块中添加线程私有数据基址计算相关指令,用于获取线程私有数据基址;
S4:根据S3中获取的线程私有数据基址与通过线程私有变量索引计算获得的线程私有变量地址偏移,计算线程私有变量地址,实现对线程私有变量的访问。
2.根据权利要求1所述的一种软硬协同的线程私有数据访问优化方法,其特征在于:S1中编译器前端根据词法、语法分析识别程序中线程私有数据访问行为,生成带有线程私有数据标记的中间表达式。
3.根据权利要求1所述的一种软硬协同的线程私有数据访问优化方法,其特征在于:S2中编译器后端根据中间表达式线程私有变量标记值自动匹配后端模板,生成读线程号指令。
4.根据权利要求1所述的一种软硬协同的线程私有数据访问优化方法,其特征在于,S3中编译器根据寻址模式生成相应的线程私有数据基址计算指令。
CN202011144938.2A 2020-10-23 2020-10-23 一种软硬协同的线程私有数据访问优化方法 Active CN112199217B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011144938.2A CN112199217B (zh) 2020-10-23 2020-10-23 一种软硬协同的线程私有数据访问优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011144938.2A CN112199217B (zh) 2020-10-23 2020-10-23 一种软硬协同的线程私有数据访问优化方法

Publications (2)

Publication Number Publication Date
CN112199217A true CN112199217A (zh) 2021-01-08
CN112199217B CN112199217B (zh) 2022-07-12

Family

ID=74010996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011144938.2A Active CN112199217B (zh) 2020-10-23 2020-10-23 一种软硬协同的线程私有数据访问优化方法

Country Status (1)

Country Link
CN (1) CN112199217B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114879962A (zh) * 2021-02-05 2022-08-09 华为技术有限公司 一种实现批量系统调用的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054470A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Optimization system, optimization method, and compiler program
CN104252392A (zh) * 2013-06-28 2014-12-31 华为技术有限公司 一种访问数据缓存的方法和处理器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054470A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Optimization system, optimization method, and compiler program
CN104252392A (zh) * 2013-06-28 2014-12-31 华为技术有限公司 一种访问数据缓存的方法和处理器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LI XIONG: "《Adaptive Differentially Private Data Release for Data Sharing and Data Mining》", 《2013 IEEE 13TH INTERNATIONAL CONFERENCE ON DATA MINING WORKSHOPS》 *
刘雪娇 等: "《混合云模式下数据安全存储方案》", 《北京理工大学学报》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114879962A (zh) * 2021-02-05 2022-08-09 华为技术有限公司 一种实现批量系统调用的方法及装置
WO2022166553A1 (zh) * 2021-02-05 2022-08-11 华为技术有限公司 一种实现批量系统调用的方法及装置
CN114879962B (zh) * 2021-02-05 2024-06-04 华为技术有限公司 一种实现批量系统调用的方法及装置

Also Published As

Publication number Publication date
CN112199217B (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
Albano et al. An object data model with roles
Alfred et al. Compilers principles, techniques & tools
Chambers et al. An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
KR100518584B1 (ko) 공유 라이브러리 시스템 및 상기 시스템 구축 방법
US9047583B2 (en) Ontology context logic at a key field level
US8255887B2 (en) Method and apparatus for re-using memory allocated for data structures used by software processes
JPH01166141A (ja) デバッグ情報提供方法
US7992141B2 (en) Method and apparatus for building executable computer programs using compiled program libraries
US20080052693A1 (en) Method of simd-ization through data reshaping, padding, and alignment
US5367683A (en) Smart recompilation of performing matchup/difference after code generation
EP2049992B1 (en) Software transactional protection of managed pointers
US20080005728A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US9465594B2 (en) Distributed implementation of sequential code that includes a future
Aho Compilers: Principles, Techniques and Tools (for VTU)
US5625822A (en) Using sorting to do matchup in smart recompilation
CN112199217B (zh) 一种软硬协同的线程私有数据访问优化方法
Metcalf The seven ages of fortran
US5446899A (en) Hint generation in smart recompilation
CN108664238A (zh) 一种解释型脚本语言c-sub的执行方法及装置
US5535392A (en) Using hint generation to cause portions of object files to remain the same
Shaw et al. A comparison of programming languages for software engineering
CN103019801B (zh) 一种应用于高速数字io波形引擎的编译器
Dowd et al. Run time type information in Mercury
Goeckelmann et al. Compiler Support for Reference Tracking in a type-safe DSM
Maliavko et al. Functionally Imperative Programming Language El and its Implementation

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