一种解决HMP架构应用程序自动部署的方法与流程
未命名
10-18
阅读:133
评论:0
一种解决hmp架构应用程序自动部署的方法
技术领域
1.本发明属于芯片领域,具体涉及一种解决hmp架构应用程序自动部署的方法。
背景技术:
2.hmp架构的soc芯片,通常有多个cpu集群组成,每个集群有多个cpu核。多个集群共同运行一个操作系统,但是集群之间存在微架构上的区别,例如支持不同的加速扩展指令。当soc上运行的是linux类系统时,通常仅linux内核会关注核的微架构和处理能力。当应用程序需要使用扩展指令加速时需要运行到特定的cpu核上,现有技术在解决之类问题时,通常是由应用程序主动将自己绑定到特定的核上运行来使用加速指令。
3.应用程序要使用加速指令时,必须清楚的知道当前soc每个cpu核的扩展指令支持情况,才能准确的判断应该将自己绑定到哪些cpu核上运行。也就是说应用程序必须清楚当前soc的硬件细节,这对应用程序的通用性构成巨大麻烦,应用程序将无法在不同的soc平台上自动适应运行。该发明就是要解决应用程序能自适应地运行在不同的硬件平台上,在既能使用加速指令的同时,又无需关心当前各cpu核的架构实现。
4.例如:有以下一种cpu架构,该cpu架构中有2个集群,总体上属于smp,其中一个集群的几个核带有特殊加速指令,另一个集群的几个核不带特殊加速指令。
5.当程序中使用了加速指令,并且程序执行在不带加速指令的几个核上时,会触发非法指令异常。
6.当加速指令应用程序运行起来时,操作系统会随机将加速指令进程部署到8个核上运行,也即内核进程调度器无法准确的将加速指令进程或线程部署到加速指令核上。如果要指定进程或线程运行在某一个或者某一些cpu上,传统的做法要通过用户态编程将进程或者线程指定cpu核,当一个cpu中加速指令核数量和编号发生变化时,应用程序需要根据cpu架构的变化修改相应的代码,这样应用程序的移植性将会变得很差,用户体验也会很差。
技术实现要素:
7.本发明的目的在于提供一种解决hmp架构应用程序自动部署的方法,对于不同的soc芯片,执行本发明方法便可使线程自动切换到含有加速指令的核上,无需额外修改相应应用程序的代码。
8.为了达到上述目的,本发明采用如下技术方案:
9.一种解决hmp架构应用程序自动部署的方法,包括如下步骤:
10.(1)cpu中设有n个核,其中n个核包括含有加速指令的a核和不含有加速指令的b核,操作系统将指令随机运行到n个核上运行;
11.(2)当运行通用指令到b核时,通用指令运行顺畅;
12.(3)当首次运行加速指令到任一b核时,触发非法指令异常状态,进入操作系统的非法指令异常处理函数,绑定线程到含有加速指令的a核,并将该线程插入到a核的运行队
列中;
13.(4)在a核中,该线程被调度执行,会继续执行非法指令异常处理函数后半段,即恢复线程的上下文段代码,回到加速指令所在地址运行;
14.(5)再次出现加速指令时,加速指令在已绑定的a核执行。
15.优选的,通用指令包括加、减、乘、除、左移、右移指令。
16.优选的,加速指令为特殊定制指令,加速指令用于加速程序的运行。加速指令可以为矩阵乘法指令,是arm和riscv架构中不存在的指令,是一条定制的指令。
17.优选的,步骤(3)中,进入操作系统的非法指令异常处理函数时,先保存线程上下文段代码,然后把当前线程与含有加速指令的a核绑定,最后恢复线程上下文,返回到线程执行。线程上下文指的是指某一时间点cpu寄存器和程序计数器的内容。
18.优选的,步骤(3)中,触发非法指令异常状态的具体方法为:当cpu核运行到一条不支持的指令时,cpu核触发异常状态,cpu核的程序计数器跳转到异常处理函数运行。
19.优选的,步骤(3)中,绑定线程到含有加速指令的a核的具体方法为:通过查询cpu中的加速指令状态寄存器,得到对应的状态值,根据状态值判定哪些核为含有加速指令a核,哪些核为没有加速指令的b核。
20.优选的,在步骤(3)中,线程已经被插入到a核的运行队列中,当a核运行队列空闲时,a核会立刻调度执行该线程时,当a核运行队列繁忙时,运行队列中的线程会被按序调度执行,当a核调度执行该线程时,会执行步骤(3)中描述的异常处理函数的后半段,即恢复线程上下文段代码,执行后会回到加速指令所在地址运行。
21.优选的,如果cpu中a核的数量大于1,则所有a核可以在同一时间点各自执行加速指令,该cpu可以同时执行多个加速指令。
22.由于采用上述技术方案,本发明具有以下有益效果:
23.1、当需要使用加速指令的进程或线程被部署到非加速指令cpu核上运行时,会由于当前cpu核不支持该加速指令而触发非法指令异常进入内核异常中断,在内核非法指令异常处理函数中,绑定当前线程到支持加速扩展指令的cpu核上,当异常返回时,线程就直接切换到支持加速扩展指令的cpu核上正常运行。
24.2、对于不同的soc芯片,执行本发明方法便可使线程自动切换到含有加速指令的cpu核上,用户编程无需关心soc芯片架构,应用程序也无需关心当前soc上哪些cpu核支持加速指令,不需要增加额外的自我绑定代码,直接执行即可,操作更为便捷。
附图说明
25.图1为一种解决hmp架构应用程序自动部署的方法时cpu执行单个线程的流程图。
具体实施方式
26.实施例1
27.如图1所示,一种解决hmp架构应用程序自动部署的方法,包括如下步骤:
28.(1)cpu中设有8个核,其中包括4个含有加速指令的a核和4个不含有加速指令的b核,操作系统将指令随机运行到8个核上运行。
29.(2)当一个线程运行通用1指令到b核时,通用指令运行顺畅。通用指令包括加、减、
乘、除、左移、右移指令。
30.(3)当首次运行加速指令1到b核时,触发非法指令异常状态,即当cpu中的b核运行到一条不支持的指令(如本实施例中的加速指令)时,cpu核触发异常状态,cpu核的程序计数器跳转到异常处理函数运行,进入操作系统的非法指令异常处理函数先保存线程上下文段代码,然后把当前线程与含有加速指令的a核绑定,最后恢复线程上下文,返回到线程执行,绑定线程到含有加速指令的a核,即通过查询cpu中的加速指令状态寄存器,得到对应的状态值,根据状态值判定哪些核为含有加速指令a核,哪些核为没有加速指令的b核,并将该线程插入到a核的运行队列中。
31.其中,线程上下文指的是指某一时间点cpu寄存器和程序计数器的内容。
32.状态值有32个比特,每个比特代表每个cpu核是否含有加速指令,例如状态值为0x00000001,其比特0值为1,则表示核0支持加速指令,核1至核31不含有加速指令,以此来判定哪些核含有加速指令,哪些核没有加速指令。
33.非法指令异常处理函数在不同的操作系统中名字是不一致的,比如linux系统中为do_trap_insn_illegal函数。
34.本实施例中,加速指令为矩阵乘法指令,是arm和riscv架构中不存在的指令,是一条定制的指令,该指令旨在加速程序的运行。矩阵乘法运算原理如下:
35.设a为m
×
p的矩阵,b为p
×
n的矩阵,m
×
n的矩阵c为矩阵a与b的乘积,记作c=a
×
b,其中矩阵c中的第i行第j列元素可以表示为:
[0036][0037]
如下所示:
[0038][0039][0040][0041]
(4)线程已经被插入到a核的运行队列中,当a核运行队列空闲时,a核会立刻调度执行该线程时,当a核运行队列繁忙时,运行队列中的线程会被按序调度执行,当a核调度执行该线程时,会执行步骤(3)中描述的异常处理函数的后半段,即恢复线程上下文段代码,执行后会回到加速指令所在地址运行,如图1所示。
[0042]
(5)a核继续运行该线程的指令如通用指令2和加速指令2,而b核不运行该线程任何指令,b核可空闲或者运行其他线程的指令。
[0043]
以上仅为本发明的具体实施例,但本发明的技术特征并不局限于此。任何以本发
明为基础,为解决基本相同的技术问题,实现基本相同的技术效果,所作出地简单变化、等同替换或者修饰等,皆涵盖于本发明的保护范围之中。
技术特征:
1.一种解决hmp架构应用程序自动部署的方法,其特征在于,包括如下步骤:(1)cpu中设有n个核,其中n个核包括含有加速指令的a核和不含有加速指令的b核,操作系统将指令随机运行到n个核上运行;(2)当运行通用指令到b核时,通用指令运行顺畅;(3)当首次运行加速指令到任一b核时,触发非法指令异常状态,进入操作系统的非法指令异常处理函数,绑定线程到含有加速指令的a核,并将该线程插入到a核的运行队列中;(4)在a核中,该线程被调度执行,会继续执行非法指令异常处理函数后半段,即恢复线程的上下文段代码,回到加速指令所在地址运行;(5)再次出现加速指令时,加速指令在已绑定的a核执行。2.根据权利要求1一种解决hmp架构应用程序自动部署的方法,其特征在于:通用指令包括加、减、乘、除、左移、右移指令。3.根据权利要求1一种解决hmp架构应用程序自动部署的方法,其特征在于:加速指令为特殊定制指令,加速指令用于加速程序的运行。4.根据权利要求1一种解决hmp架构应用程序自动部署的方法,其特征在于:步骤(3)中,进入操作系统的非法指令异常处理函数时,先保存线程上下文段代码,然后把当前线程与含有加速指令的a核绑定,最后恢复线程上下文,返回到线程执行。5.根据权利要求1一种解决hmp架构应用程序自动部署的方法,其特征在于,步骤(3)中,触发非法指令异常状态的具体方法为:当cpu核运行到一条不支持的指令时,cpu核触发异常状态,cpu核的程序计数器跳转到异常处理函数运行。6.根据权利要求1一种解决hmp架构应用程序自动部署的方法,其特征在于,步骤(3)中,绑定线程到含有加速指令的a核的具体方法为:通过查询cpu中的加速指令状态寄存器,得到对应的状态值,根据状态值判定哪些核为含有加速指令a核,哪些核为没有加速指令的b核。7.根据权利要求1一种解决hmp架构应用程序自动部署的方法,其特征在于:在步骤(3)中,线程已经被插入到a核的运行队列中,当a核运行队列空闲时,a核会立刻调度执行该线程时,当a核运行队列繁忙时,运行队列中的线程会被按序调度执行,当a核调度执行该线程时,会执行步骤(3)中描述的异常处理函数的后半段,即恢复线程上下文段代码,执行后会回到加速指令所在地址运行。8.根据权利要求1一种解决hmp架构应用程序自动部署的方法,其特征在于:如果cpu中a核的数量大于1,则所有a核可以在同一时间点各自执行加速指令,该cpu可以同时执行多个加速指令。
技术总结
本发明公开了一种解决HMP架构应用程序自动部署的方法,当需要使用加速指令的进程或线程被部署到非加速指令CPU核上运行时,会由于当前CPU核不支持该加速指令而触发非法指令异常进入内核异常中断,在内核非法指令异常处理函数中,绑定当前线程到支持加速扩展指令的CPU核上,当异常返回时,线程就直接切换到支持加速扩展指令的CPU核上正常运行。加速扩展指令的CPU核上正常运行。加速扩展指令的CPU核上正常运行。
技术研发人员:陈林飞 俞林杰 王楚 张猛
受保护的技术使用者:进迭时空(杭州)科技有限公司
技术研发日:2023.06.30
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
