基于异构众核的轻量级线程快速触发方法_2

文档序号:9489324阅读:来源:国知局
39]对用户程序参数、环境变量、系统辅助信息等进行处理;
[0040]进行指令空间、多层次存储空间、栈空间的映射;
[0041]执行系统相关信息的告知(作业管理,特定系统调用辅助信息等);
[0042]执行运行时特定信息处理(线程私有空间、动态分配空间起止设置等);
[0043]执行运算核心运行时信号的挂载:系统调用、运算核心异常、退出等;
[0044]判断单运算控制核心、异构混合、单运算核心代码;
[0045]跳转到相应启动代码,结束加载。
[0046]也就是说,存在如下主要步骤:a)异构众核程序加载器运行在运算控制核心系统区,它将用户可执行程序映像进行解析,加载到核组内存;b)异构众核程序加载器进行核组资源、存储空间、堆栈的申请和初始化以及用户参数、环境变量等运行时初始状态的配置;c)异构众核程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。
[0047]<轻量级线程触发装置原理>
[0048]1)硬件前提
[0049]为了能够快速在没有操作系统的协处理器上进行线程管理和触发,需要硬件提供一个能进行程序执行第一条指令的10(输入输出)寄存器,程序加载器可以通过写该10寄存器来控制协处理器的第一条指令的运行入口 PC (program counter,程序计数器)值,以启动协处理器核心程序。
[0050]2)软件前提
[0051]如上所述,需要有个针对异构众核的轻量级线程库以及异构众核的程序装载器。
[0052]3)操作步骤
[0053]图4示意性地示出了根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法的流程图。
[0054]如图4所示,根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法包括:
[0055]第一步骤S1:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用(该编程模式与Pthread编程模式类似),然后完成程序代码的编译,生成一个异构融合的可执行代码a.0ut ο例如,具体示例如如图1所示。
[0056]第二步骤S2:运行该a.0ut可执行码。首先执行程序加载器Mixrun,该程序加载器的运行是在主处理器上执行(隐含有操作系统的程序装载Mixrun本身的操作),再将可执行代码a.0ut作为参数传入给程序加载器Mixrun。
[0057]例如:$Mixrun〈配置选项>./a.0ut
[0058]第三步骤S3:程序加载器Mixrun将整个a.0ut当做一个文件读入,然后解析出主处理器指令、协处理器指令、主处理器数据、协处理器数据等符合ELF (Executable andLinking Format)格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置,详细流程可如图2所示。
[0059]具体地,首先,将协处理器第一条指令的配置为任务等待操作(Waiting_for_task例程)的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器Slave_PC非空时,表示主处理器创建了新任务,则协处理器跳转到该任务入口的程序计数器值,当完成任务返回后,清空协处理器程序计数器寄存器Slave_PC,并继续进行任务等待操作,等待主处理器的下一次任务的分配。软件流程示例如图3所示。
[0060]如上所述,主处理器有显式的协处理器线程触发和回收接口,如图1中异构众核线程创建程序示例中的athread_spawn所示,slave_fun ()函数就是协处理器的任务函数,athread_spawn的主要功能就是登记该线程的属性并将slave_fun的值填入Slave_PC中。最终完成该轻量级线程的触发。
[0061]本发明无需设计协处理器针对操作系统配套的相关支持,降低了软件和硬件的设计和维护成本。而且,本发明能够快速启动和回收线程,无需经过操作系统处理,提高程序性能。此外,本发明能够在运行前对轻量级线程提前进行软硬适配,例如可用协处理器占用、栈空间大小调整、可用内存空间调整等,减少了用户编程代码的复杂度。
[0062]本发明在没有软硬件操作系统支撑机制下的协处理器线程运行机制,而且没有软硬件操作系统支撑机制下的协处理器线程触发装置。
[0063]可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
【主权项】
1.一种基于异构众核的轻量级线程快速触发方法,其特征在于包括: 在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码; 运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器; 程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。2.根据权利要求1所述的基于异构众核的轻量级线程快速触发方法,其特征在于,符合ELF格式的段信息包括主处理器指令、协处理器指令、主处理器数据和协处理器数据。3.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,将协处理器第一条指令的配置为任务等待操作的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器非空时,判断主处理器创建了新任务,使得协处理器跳转到该新任务入口的程序计数器值;在完成该新任务返回后,清空协处理器程序计数器寄存器,并继续进行任务等待操作,等待主处理器的下一次任务的分配。4.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,协处理器核心没有运行标准操作系统,无法通过标准的execve函数的方式启动程序。5.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器运行在运算控制核心系统区,而且程序加载器将用户可执行程序映像进行解析,加载到核组内存。6.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器进行核组资源、存储空间、堆栈的申请和初始化,而且程序加载器进行运行时初始状态的配置。7.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。8.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,一个协处理器上不支持运行多个线程。
【专利摘要】本发明提供了一种基于异构众核的轻量级线程快速触发方法,包括:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。
【IPC分类】G06F9/445, G06F9/46
【公开号】CN105242962
【申请号】CN201510828182
【发明人】沈莉, 漆锋滨, 李中升, 肖谦, 钱宏
【申请人】无锡江南计算技术研究所
【公开日】2016年1月13日
【申请日】2015年11月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1