指令扩展方法、系统及计算机可读存储介质与流程

文档序号:32302144发布日期:2022-11-23 08:43阅读:62来源:国知局
指令扩展方法、系统及计算机可读存储介质与流程

1.本发明涉及处理器设计技术领域,尤其涉及一种指令扩展方法、系统及计算机可读存储介质。


背景技术:

2.risc-v指令集架构由加州大学伯克利分校的开发人员在2010年提出,其指令集架构简单、完全开源并且免费,能满足从微控制器到超级计算机等各种尺寸的处理器,在iot边缘端、人工智能、工业控制等微控制器领域得到越来越广泛的应用。
3.作为一种全新的指令集架构,risc-v在工业控制领域的发展处于初期阶段,其对工业控制领域的支持依赖于基准指令,生态还不够完善。不过,由于risc-v将基准指令和扩展指令分开,可以通过扩展指令做定制化的模块和扩展。针对工业控制特定或者典型的场景,在risc-v开源架构的基础上,通过指令扩展和指令定制化,满足工业控制领域的加速。
4.目前扩展指令常用的方法是通过修改硬件对该指令进行支持,并需要在编译工具链上对做相应的修改。对于每个新增的自定义扩展指令集,用户都需要自己在编译工具链中实现相应支持,常用的有两种方法:第一、应用层的程序通过调用新定义的数据类型以及编译器内建函数来使用扩展指令;第二、优化编译器使其在进行编译阶段直接将中间代码自动转换成相应的扩展指令。
5.但是,通过修改硬件来对扩展指令进行支持,需要通过建模来权衡硬件以及编译器的修改,其开发周期长,软硬件修改难度大,且验证复杂,不适合进行版本快速迭代开发。
6.针对上述通过修改硬件方式进行指令扩展的缺点,可以通过软件方式进行指令扩展。通过将要实现的功能包装成函数调用的方式进行扩展,但是这种方式有两个缺陷:一是跟操作系统强相关,每更换一个操作系统都要重新编译适配;二是该方法实现的函数一般是基于高级语言实现,并且是在用户流程,不能直接访问硬件资源,性能不高。


技术实现要素:

7.本发明的主要目的在于提供一种指令扩展方法、系统及计算机可读存储介质。旨在解决采用软件方式进行指令扩展时造成的普适性低和性能低的问题。
8.为实现上述目的,本发明提供一种指令扩展方法,所述指令扩展方法包括步骤:
9.根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;
10.在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为opensbi;
11.在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;
12.在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由opensbi切换为操作系统,完成指令扩展。
13.可选地,所述根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令
的步骤包括:
14.根据待实现算法和指令扩展规则,生成与所述待实现算法相对应的待扩展指令;
15.在预设指令集中的预留空间中分配所述待扩展指令,并生成与所述待扩展指令相对应的指令码和操作码宏定义,其中,所述待扩展指令包括指令码和操作码宏定义。
16.可选地,所述在调用所述待扩展指令时,进入异常处理流程的步骤包括:
17.调用所述待扩展指令,并暂停当前运行程序;
18.跳转到所述处理器中的mtvec寄存器中的pc地址处执行,并更新所述处理器中的若干个预设csr寄存器,进入异常处理流程。
19.可选地,所述在所述异常处理流程中将处理器的执行环境由操作系统切换为opensbi的步骤包括:
20.在所述异常处理流程中,调用预设函数,根据所述预设函数将处理器的执行环境由操作系统切换为opensbi中的机器模式。
21.可选地,所述在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库的步骤之后,还包括:
22.更新所述处理器中的mepc寄存器的pc地址,并将所述pc地址作为预设指令指针。
23.可选地,所述在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库的步骤包括:
24.在所述opensbi执行环境下,生成与所述待扩展指令相对应的库函数;
25.根据所述库函数,得到并调用与所述库函数相对应的函数库。
26.可选地,所述在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由opensbi切换为操作系统,完成指令扩展的步骤包括:
27.在完成所述扩展指令函数库的运行后,执行所述mepc寄存器的pc地址,并再次更新所述处理器中的若干个预设csr寄存器;
28.根据所述mepc寄存器的pc地址,将所述执行环境由opensbi切换为操作系统的监管者模式,完成指令扩展。
29.可选地,所述更新所述处理器中的mepc寄存器的pc地址,并将所述pc地址作为预设指令指针的步骤之前,还包括:
30.调用预设注册函数,对所述扩展指令函数库进行注册。
31.此外,为实现上述目的,本发明还提供一种指令扩展系统,所述指令扩展系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的指令扩展程序,所述指令扩展程序被所述处理器执行时实现如上所述的指令扩展方法的步骤。
32.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有指令扩展程序,所述指令扩展程序被处理器执行时实现如上所述的指令扩展方法的步骤。
33.本发明提出一种指令扩展方法、系统及计算机可读存储介质,所述指令扩展方法包括步骤:根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为opensbi;在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常
处理流程,并将所述执行环境由opensbi切换为操作系统,完成指令扩展。通过上述方法,本发明通过基于risc-v架构的机器特权模式,利用机器模式下常驻内存的opensbi进行扩展指令支撑。可以通过将扩展的指令捕获到机器模式下,在机器模式的固件(opensbi)下实现这些扩展指令,执行完扩展库函数后返回到操作系统,解决了通过软件方式进行扩展时,造成的在更换操作系统时,每更换一个操作系统都要重新进行编译适配的问题,以及不能直接访问硬件资源,造成的性能不高的问题。
附图说明
34.图1是本发明实施例方案涉及的硬件运行环境的装置结构示意图;
35.图2是本发明指令扩展方法中一实施例的流程示意图。
36.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
37.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
38.请参照图1,图1为本发明各个实施例中所提供的指令扩展系统的硬件结构示意图。所述指令扩展系统包括通信模块01、存储器02及处理器03等部件。本领域技术人员可以理解,图1中所示出的指令扩展系统还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中,所述处理器03分别与所述存储器02和所述通信模块01连接,所述存储器02上存储有指令扩展程序,所述指令扩展程序同时被处理器03执行。
39.通信模块01,可通过网络与外部设备连接。通信模块01可以接收外部设备发出的数据,还可发送数据、指令及信息至所述外部设备,所述外部设备可以是手机、平板电脑、笔记本电脑和台式电脑等电子设备。
40.存储器02,可用于存储软件程序以及各种数据。存储器02可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据指令扩展系统的使用所创建的数据或信息等。此外,存储器02可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
41.处理器03,是指令扩展系统的控制中心,利用各种接口和线路连接整个指令扩展系统的各个部分,通过运行或执行存储在存储器02内的软件程序和/或模块,以及调用存储在存储器02内的数据,执行指令扩展系统的各种功能和处理数据,从而对指令扩展系统进行整体监控。处理器03可包括一个或多个处理单元;优选的,处理器03可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器03中。
42.本领域技术人员可以理解,图1中示出的指令扩展系统结构并不构成对指令扩展系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
43.根据上述硬件结构,提出本发明方法各个实施例。
44.请参阅图2,图2为本发明指令扩展方法第一实施例的流程示意图,本实施例提供
的指令扩展方法包括如下步骤:
45.步骤s10,根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;
46.在本实施例中,所述待实现算算法可以是根据工控领域应用分析需要进行扩展的算法;所述指令扩展规则为risc-v指令扩展规则,所述risc-v指令扩展规则中对risc-v指令扩展进行了规范,本领域技术人员可以根据需要实现的算法功能和扩展规则,扩展相对应的指令。
47.具体的,在一实施例中,所述步骤s10还包括:
48.步骤a11,根据待实现算法和指令扩展规则,生成与所述待实现算法相对应的待扩展指令;
49.步骤a12,在预设指令集中的预留空间中分配所述待扩展指令,并生成与所述待扩展指令相对应的指令码和操作码宏定义,其中,所述待扩展指令包括指令码和操作码宏定义。
50.需要说明的是,risc-v指令集被分成r类、i类、s类、sb类、u类和uj等6种,每条指令编码长度为32比特,编码格式中低7比特固定为操作码opcode,用于区分不同的指令。可以利用risc-v编码空间中保留空间以及上述6种指令中的未使用funct空间来进行指令扩展。具体的,可以在opcode中定义待扩展指令的操作码,用于区分该待扩展指令,进而在未使用funct空间中扩展与操作码对应的指令码,每种不同类型的指令格式都不相同,按照特定的机器码编排的指令有着特殊的用途。在进行指令扩展时,只需要根据risc-v扩展指令规则,定义低位的opcode以及高位对应区域数据,对应出扩展指令的二进制编码即可。例如,扩展一个功能为“乘加”功能的待扩展指令,只需要在opcode中定义乘加指令的操作码,再在funct空间定义对应的数据,即可扩展出“乘加”功能的待扩展指令。
51.步骤s20,在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为opensbi;
52.在本实施例中,由于待扩展指令还未进行注册,因此所述待扩展指令属于非法指令,处理器内核运行到该非法指令时,risc-v架构即会触发illegal instruction(非法指令异常),即会进入异常处理流程。并将处理器的执行环境由操作系统切换为opensbi中的机器模式。
53.需要说明的是,本实施例中,risc-v特权模式m-mode(machine mode,机器模式)是hart(hardware thread,硬件线程)可以执行的最高权限模式,其对内存、i/o和一些对于配置系统来说必要的底层功能有着完全的使用权限。机器模式具备拦截和处理异常的能力,可以在该模式下模拟risc-v缺少的指令功能等。
54.opensbi是运行在m模式下,为risc-v平台的操作系统提供监管二进制接口(supervisor binary interface,sbi)的开源参考实现,以便其获取和操作硬件信息。risc-v平台和片上系统供应商可以轻松扩展opensbi实现,以适应特定的硬件配置。
55.具体的,所述步骤s20还包括:
56.步骤a21,调用所述待扩展指令,并暂停当前运行程序;
57.步骤a22,跳转到所述处理器中的mtvec寄存器中的pc地址处执行,并更新所述处理器中的若干个预设csr寄存器,进入异常处理流程。
58.在本实施例中,所述处理器中包括有mepc寄存器,mtval寄存器,mstatus寄存器以
及mcause寄存器,在调用待扩展指令时,首先,处理器内核终止当前运行程序,并将当前运行程序的pc地址保存在mepc寄存器中,然后处理器再从mtvec寄存器中的pc地址开始执行,同时mcause寄存器更新为当前发生的异常类型,mepc寄存器更新为当前发生异常的指令pc,mtval寄存器更新为引起当前异常的待扩展指令编码。其中,所述pc地址是下一条待执行指令所在单元的地址,存放在处理器中的指令计数器中,可以在执行完一条指令之后,自动每执行一条指令pc增加一个字节,用于保证程序能够连续的执行下去。所述预设csr寄存器即包括有上述的mepc寄存器,mtval寄存器,mstatus寄存器以及mcause寄存器。
59.步骤a23,在所述异常处理流程中,调用预设函数,根据所述预设函数将处理器的执行环境由操作系统切换为opensbi中的机器模式。
60.在本实施例中,所述预设函数即为sbi_ecall_init,用于调用risc-v的ecall指令,从而将cpu的执行转移到更高特权的see环境——opensbi中,在该环境中调用指令扩展对应的库函数,实现了扩展函数的功能。其中,需要说明的是在本领域中,risc-v架构定义了3种工作模式,又称为特权模式(privileged mode)。包括:机器模式(machine mode),简称m模式;监督模式(supervisor mode),简称s模式;以及用户模式(user mode),简称u模式。
61.步骤s30,在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;
62.在一实施例中,所述步骤s30还包括:
63.步骤a31,在所述opensbi执行环境下,生成与所述待扩展指令相对应的库函数;
64.步骤a32,根据所述库函数,得到并调用与所述库函数相对应的函数库。
65.在本实施例中,将待扩展指令封装为库函数,并得到库函数的集合,即与待扩展指令相对应的待扩展指令函数库。所述函数库中可以包括多个与待扩展指令相对应的库函数。
66.另外,在一实施例中,所述步骤s30之后,还包括:
67.步骤a301,更新所述处理器中的mepc寄存器的pc地址,并将所述pc地址作为预设指令指针。
68.在本实施例中,由于risc-v定义,当出现异常时,处理器中断返回地址mepc的值被更新为当前发生异常的待扩展指令pc地址。如果执行扩展指令函数库调用后,会返回,接着从mepc保存的pc地址开始执行,因为mepc保存的是待扩展指令的地址,这样就造成了死循环(待扩展指令会重复执行)。因此,在扩展指令的执行opensbi处理异常的流程中改变mepc指向下一条指令,改写mepc=mepc+4即可。以使处理器在完成扩展指令函数库的执行后,防止进入待扩展指令反复执行的循环中。
69.另外,在一实施例中,所述步骤a301之前,还包括:
70.步骤a302,调用预设注册函数,对所述扩展指令函数库进行注册。
71.其中,所述预设注册函数为sbi_trap_handler,可以通过该函数进行扩展指令函数库的注册,以使处理器进行调用执行,完成指令的扩展。
72.步骤s40,在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由opensbi切换为操作系统,完成指令扩展。
73.在本实施例中,所述预设指令指针即为mepc+4,在完成扩展指令函数库的调用之
后,停止当前运行程序,并可以调用mret指令返回到操作系统的s模式,从csr寄存器mepc中定义的的地址开始执行,即mepc+4,并更新csr寄存器,包括mcause寄存器。
74.另外,本发明适用于所有risc-v架构的已有芯片进行指令扩展,具体的,只需要在opensbi相应的平台下增加对该芯片的支持,即可实现已有芯片的指令扩展。
75.本发明提出一种指令扩展方法,所述指令扩展方法包括步骤:根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为opensbi;在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由opensbi切换为操作系统,完成指令扩展。通过上述方法,本发明通过基于risc-v架构的机器特权模式,利用机器模式下常驻内存的opensbi进行扩展指令支撑。可以通过将扩展的指令捕获到机器模式下,在机器模式的固件(opensbi)下实现这些扩展指令,执行完扩展库函数后返回到操作系统,解决了通过软件方式进行扩展时,造成的在更换操作系统时,每更换一个操作系统都要重新进行编译适配的问题,以及不能直接访问硬件资源,造成的性能不高的问题。
76.此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有指令扩展程序,所述指令扩展程序被处理器执行时实现如下操作:
77.根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令;
78.在调用所述待扩展指令时,进入异常处理流程,并在所述异常处理流程中将处理器的执行环境由操作系统切换为opensbi;
79.在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库;
80.在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由opensbi切换为操作系统,完成指令扩展。
81.进一步地,所述指令扩展程序被处理器执行时还实现如下操作:
82.所述根据待实现算法和指令扩展规则,在预设指令集中生成待扩展指令的步骤包括:
83.根据待实现算法和指令扩展规则,生成与所述待实现算法相对应的待扩展指令;
84.在预设指令集中的预留空间中分配所述待扩展指令,并生成与所述待扩展指令相对应的指令码和操作码宏定义,其中,所述待扩展指令包括指令码和操作码宏定义。
85.进一步地,所述指令扩展程序被处理器执行时还实现如下操作:
86.所述在调用所述待扩展指令时,进入异常处理流程的步骤包括:
87.调用所述待扩展指令,并暂停当前运行程序;
88.跳转到所述处理器中的mtvec寄存器中的pc地址处执行,并更新所述处理器中的若干个预设csr寄存器,进入异常处理流程。
89.进一步地,所述指令扩展程序被处理器执行时还实现如下操作:
90.所述在所述异常处理流程中将处理器的执行环境由操作系统切换为opensbi的步骤包括:
91.在所述异常处理流程中,调用预设函数,根据所述预设函数将处理器的执行环境
由操作系统切换为opensbi中的机器模式。
92.进一步地,所述指令扩展程序被处理器执行时还实现如下操作:
93.所述在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库的步骤之后,还包括:
94.更新所述处理器中的mepc寄存器的pc地址,并将所述pc地址作为预设指令指针。
95.进一步地,所述指令扩展程序被处理器执行时还实现如下操作:
96.所述在所述opensbi执行环境下,生成并调用与所述待扩展指令相对应的扩展指令函数库的步骤包括:
97.在所述opensbi执行环境下,生成与所述待扩展指令相对应的库函数;
98.根据所述库函数,得到并调用与所述库函数相对应的函数库。
99.进一步地,所述指令扩展程序被处理器执行时还实现如下操作:
100.所述在完成所述扩展指令函数库的运行后,根据预设指令指针退出所述异常处理流程,并将所述执行环境由opensbi切换为操作系统,完成指令扩展的步骤包括:
101.在完成所述扩展指令函数库的运行后,执行所述mepc寄存器的pc地址,并再次更新所述处理器中的若干个预设csr寄存器;
102.根据所述mepc寄存器的pc地址,将所述执行环境由opensbi切换为操作系统的监管者模式,完成指令扩展。
103.进一步地,所述指令扩展程序被处理器执行时还实现如下操作:
104.所述更新所述处理器中的mepc寄存器的pc地址,并将所述pc地址作为预设指令指针的步骤之前,还包括:
105.调用预设注册函数,对所述扩展指令函数库进行注册。
106.本发明计算机可读存储介质的具体实施例与上述指令扩展程序各实施例基本相同,在此不作赘述。
107.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
108.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
109.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
110.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1