当前位置: 首页 > 专利查询>鹏城实验室专利>正文

指令扩展方法、系统及计算机可读存储介质技术方案

技术编号:35693600 阅读:21 留言:0更新日期:2022-11-23 14:43
本发明专利技术公开了一种指令扩展方法、系统及计算机可读存储介质。包括如下步骤:根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为OpenSBI;在所述OpenSBI执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由OpenSBI切换为操作系统,完成指令扩展。本发明专利技术提高了使用软件方式进行指令扩展时的性能。使用软件方式进行指令扩展时的性能。使用软件方式进行指令扩展时的性能。

【技术实现步骤摘要】
指令扩展方法、系统及计算机可读存储介质


[0001]本专利技术涉及处理器设计
,尤其涉及一种指令扩展方法、系统及计算机可读存储介质。

技术介绍

[0002]RISC

V指令集架构由加州大学伯克利分校的开发人员在2010年提出,其指令集架构简单、完全开源并且免费,能满足从微控制器到超级计算机等各种尺寸的处理器,在IoT边缘端、人工智能、工业控制等微控制器领域得到越来越广泛的应用。
[0003]作为一种全新的指令集架构,RISC

V在工业控制领域的发展处于初期阶段,其对工业控制领域的支持依赖于基准指令,生态还不够完善。不过,由于RISC

V将基准指令和扩展指令分开,可以通过扩展指令做定制化的模块和扩展。针对工业控制特定或者典型的场景,在RISC

V开源架构的基础上,通过指令扩展和指令定制化,满足工业控制领域的加速。
[0004]目前扩展指令常用的方法是通过修改硬件对该指令进行支持,并需要在编译工具链上对做相应的修改。对于每个新增的自定义扩展指令集,用户都需要自己在编译工具链中实现相应支持,常用的有两种方法:第一、应用层的程序通过调用新定义的数据类型以及编译器内建函数来使用扩展指令;第二、优化编译器使其在进行编译阶段直接将中间代码自动转换成相应的扩展指令。
[0005]但是,通过修改硬件来对扩展指令进行支持,需要通过建模来权衡硬件以及编译器的修改,其开发周期长,软硬件修改难度大,且验证复杂,不适合进行版本快速迭代开发。
[0006]针对上述通过修改硬件方式进行指令扩展的缺点,可以通过软件方式进行指令扩展。通过将要实现的功能包装成函数调用的方式进行扩展,但是这种方式有两个缺陷:一是跟操作系统强相关,每更换一个操作系统都要重新编译适配;二是该方法实现的函数一般是基于高级语言实现,并且是在用户流程,不能直接访问硬件资源,性能不高。

技术实现思路

[0007]本专利技术的主要目的在于提供一种指令扩展方法、系统及计算机可读存储介质。旨在解决采用软件方式进行指令扩展时造成的普适性低和性能低的问题。
[0008]为实现上述目的,本专利技术提供一种指令扩展方法,所述指令扩展方法包括步骤:
[0009]根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;
[0010]在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为OpenSBI;
[0011]在所述OpenSBI执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;
[0012]在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由OpenSBI切换为操作系统,完成指令扩展。
[0013]可选地,所述根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令
的步骤包括:
[0014]根据待实现算法和指令扩展规则,生成与所述待实现算法相对应的待扩展指令;
[0015]在预设指令集中的预留空间中分配所述待扩展指令,并生成与所述待扩展指令相对应的指令码和操作码宏定义,其中,所述待扩展指令包括指令码和操作码宏定义。
[0016]可选地,所述在调用所述待扩展指令时,进入异常处理流程的步骤包括:
[0017]调用所述待扩展指令,并暂停当前运行程序;
[0018]跳转到所述处理器中的MTVEC寄存器中的PC地址处执行,并更新所述处理器中的若干个预设CSR寄存器,进入异常处理流程。
[0019]可选地,所述在所述异常处理流程中将处理器的执行环境由操作系统切换为OpenSBI的步骤包括:
[0020]在所述异常处理流程中,调用预设函数,根据所述预设函数将处理器的执行环境由操作系统切换为OpenSBI中的机器模式。
[0021]可选地,所述在所述OpenSBI执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库的步骤之后,还包括:
[0022]更新所述处理器中的MEPC寄存器的PC地址,并将所述PC地址作为预设指令指针。
[0023]可选地,所述在所述OpenSBI执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库的步骤包括:
[0024]在所述OpenSBI执行环境下,生成与所述待扩展指令相对应的库函数;
[0025]根据所述库函数,得到并调用与所述库函数相对应的函数库。
[0026]可选地,所述在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由OpenSBI切换为操作系统,完成指令扩展的步骤包括:
[0027]在完成所述扩展指令函数库的运行后,执行所述MEPC寄存器的PC地址,并再次更新所述处理器中的若干个预设CSR寄存器;
[0028]根据所述MEPC寄存器的PC地址,将所述执行环境由OpenSBI切换为操作系统的监管者模式,完成指令扩展。
[0029]可选地,所述更新所述处理器中的MEPC寄存器的PC地址,并将所述PC地址作为预设指令指针的步骤之前,还包括:
[0030]调用预设注册函数,对所述扩展指令函数库进行注册。
[0031]此外,为实现上述目的,本专利技术还提供一种指令扩展系统,所述指令扩展系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的指令扩展程序,所述指令扩展程序被所述处理器执行时实现如上所述的指令扩展方法的步骤。
[0032]此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有指令扩展程序,所述指令扩展程序被处理器执行时实现如上所述的指令扩展方法的步骤。
[0033]本专利技术提出一种指令扩展方法、系统及计算机可读存储介质,所述指令扩展方法包括步骤:根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为OpenSBI;在所述OpenSBI执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常
处理流程,并将所述执行环境由OpenSBI切换为操作系统,完成指令扩展。通过上述方法,本专利技术通过基于RISC

V架构的机器特权模式,利用机器模式下常驻内存的OpenSBI进行扩展指令支撑。可以通过将扩展的指令捕获到机器模式下,在机器模式的固件(OpenSBI)下实现这些扩展指令,执行完扩展库函数后返回到操作系统,解决了通过软件方式进行扩展时,造成的在更换操作系统时,每更换一个操作系统都要重新进行编译适配的问题,以及不能直接访问硬件资源,造成的性能不高的问题。
附图说明
[0034]图1是本专利技术实施例方案涉及的硬件运行环境的装置结构示意图;
[0035]图2是本专利技术指令扩展本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种指令扩展方法,其特征在于,所述指令扩展方法包括步骤:根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为OpenSBI;在所述OpenSBI执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由OpenSBI切换为操作系统,完成指令扩展。2.如权利要求1所述的指令扩展方法,其特征在于,所述根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令的步骤包括:根据待实现算法和指令扩展规则,生成与所述待实现算法相对应的待扩展指令;在预设指令集中的预留空间中分配所述待扩展指令,并生成与所述待扩展指令相对应的指令码和操作码宏定义,其中,所述待扩展指令包括指令码和操作码宏定义。3.如权利要求1所述的指令扩展方法,其特征在于,所述在调用所述待扩展指令时,进入异常处理流程的步骤包括:调用所述待扩展指令,并暂停当前运行程序;跳转到所述处理器中的MTVEC寄存器中的PC地址处执行,并更新所述处理器中的若干个预设CSR寄存器,进入异常处理流程。4.如权利要求3所述的指令扩展方法,其特征在于,所述在所述异常处理流程中将处理器的执行环境由操作系统切换为OpenSBI的步骤包括:在所述异常处理流程中,调用预设函数,根据所述预设函数将处理器的执行环境由操作系统切换为OpenSBI中的机器模式。5.如权利要求3所述的指令扩展方法,其特征在于,所述在所述OpenSBI执行环境下,生成并调用与所述待扩展指令相对...

【专利技术属性】
技术研发人员:庞川李昂郭磊梁俊许雪松张凡
申请(专利权)人:鹏城实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1