[发明专利]一种多线程模式下的快速段式编址配置和访问方法有效
申请号: | 201810929684.1 | 申请日: | 2018-08-15 |
公开(公告)号: | CN109240702B | 公开(公告)日: | 2022-06-14 |
发明(设计)人: | 沈莉;王飞;钱宏;管茂林;肖谦 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 214000 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多线程 模式 快速 段式 配置 访问 方法 | ||
本发明公开一种多线程模式下的快速段式编址配置和访问方法,包括如下步骤:S101、用户程序中使用存储层次关键字;S102、编译器识别并处理用户程序中的关键字;S103、链接器处理重定位信息及多层次数据段;S104、加载器内存加载;S105、程序运行时读取内部寄存器。本发明在编译链接阶段识别和处理多层次存储关键字,程序加载阶段识别和处理多层次存储数据段,程序运行时充分利用CPU提供的内部寄存器获取本线程多层次存储数据段基址,提高了访存效率和灵活性。
技术领域
本发明涉及计算机软件编译领域,尤其涉及一种多线程模式下的快速段式编址配置和访问方法。
背景技术
程序开发者在编写多线程程序的时候都希望存储一些线程私有的数据,这一需求由线程局部存储(TLS,Thread Local Storage)机制来支持,一旦一个全局变量被定义成TLS类型的,那么每个线程都会拥有这个变量的一个副本,任何线程对该变量的修改都不会影响其他线程中该变量的副本。如果要定义一个全局变量为TLS类型的,只需要在它定义前加上相应的关键字即可,对于GCC来说,这个关键字就是__thread。正常情况下一个全局变量或静态变量会被放到“.data”或“.bss”段中,但当我们使用__thread定义一个线程私有变量的时候,编译器会把这些变量放到可执行文件的“.tbss”数据段中。当系统启动一个新的线程时,它会从进程的堆中分配一块足够大小的空间,然后把“.tbss”数据段中的内容复制到这块空间中,于是每个线程都有自己独立的一个“.tbss”数据段副本。所以对于用__thread定义的同一个变量,它们在不同线程中的地址都是不一样的。然而,现有的TLS机制存在着如下缺陷:一方面,线程自有“.tbss”数据段副本的地址与线程号一一对应,程序运行过程中或依赖操作系统获取线程号进而得到本线程“.tbss”数据段副本的地址,或开辟内存空间用于存储本线程“.tbss”数据段副本的地址,程序运行开销较大。另一方面,现有TLS机制可以支持多线程单一存储层次的线程局部存储模型,但是应对多存储层次模式则无能为力。上文中,多线程(multithread)是指计算机硬件或软件支持多个线程并发执行,每个线程有自己的上下文环境和私有数据空间,能大幅提高程序性能。线程局部存储(TLS,Thread Local Storage)是指每个线程私有的存储空间,线程之间的存储空间不相互重叠。
发明内容
本发明的目的在于通过一种多线程模式下的快速段式编址配置和访问方法,来解决以上背景技术部分提到的问题。
为达此目的,本发明采用以下技术方案:
一种多线程模式下的快速段式编址配置和访问方法,该方法包括如下步骤:
S101、用户程序中使用存储层次关键字;
S102、编译器识别并处理用户程序中的关键字;
S103、链接器处理重定位信息及多层次数据段;
S104、加载器内存加载;
S105、程序运行时读取内部寄存器。
特别地,所述步骤S101具体包括:用户程序中在存储层次类型定义前面加上相应的关键字。
特别地,所述步骤S102具体包括:编译器识别用户程序中存储层次相应的关键字,不同存储层次变量放到不同的数据段;用户程序中使用存储层次变量时,编译器生成读取内部寄存器指令,获取对应的数据段基址。
特别地,所述步骤S103具体包括:链接器将多层次存储类型变量放到对应的数据段,根据变量地址处理寻址指令的重定位信息。
特别地,所述步骤S104具体包括:加载器加载程序时识别出存储层次相应数据段,将不同的数据段基址存储到对应的CPU内部寄存器。
特别地,所述步骤S105具体包括:程序运行中遇到存储层次类型变量时,读取内部寄存器,获取变量对应的数据段基址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810929684.1/2.html,转载请声明来源钻瓜专利网。