CN110083469B - 一种异构硬件组织运行统一内核方法及*** - Google Patents
一种异构硬件组织运行统一内核方法及*** Download PDFInfo
- Publication number
- CN110083469B CN110083469B CN201910391228.0A CN201910391228A CN110083469B CN 110083469 B CN110083469 B CN 110083469B CN 201910391228 A CN201910391228 A CN 201910391228A CN 110083469 B CN110083469 B CN 110083469B
- Authority
- CN
- China
- Prior art keywords
- architecture
- memory
- kernel
- code
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种异构硬件组织运行统一内核方法及***,将每种架构的代码段和与架构相关的数据段链接到存储器的不同的存储区域,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域的存储区域,从而直接共享使用架构无关的内核对象。可以使多种架构真正使用同一个内核其数据段的大部分是共享的,其代码段则是独立的,因此多种架构可以使用同样的安全策略,而且这些安全策略是自动同步而无需通信的。多种架构之间还可以直接共享使用架构无关的内核对象,并且在所有架构上无需通过内核间通信就可以直接管理所有的内核对象无需通过内核间通信。
Description
技术领域
本公开嵌入式***技术领域和操作***技术领域,具体涉及一种异构硬件组织运行统一内核方法及***,适用于不同硬件指令集的软件栈整合。
背景技术
随着物联网的兴起,以及传感器节点的数据处理能力要求的提升,整合不同架构的计算能力变得格外重要。比如在一个MCU+DSP***内,MCU负责管理***的业务逻辑,DSP则专注于计算,实现1+1>2的效果。此时,如果需要在该种平台上运行内核,其内核需要整合两种处理器子***提供的计算能力,达成应用所需的计算方案。
现有的整合方法可以分为两种:
第一种方法是,在两个架构上运行两种不同的操作***。比如,在MCU(微控制器)或者MPU(微处理器)上运行Linux,而在DSP(数字信号处理器)上运行FreeRTOS,然后使用互相发送核间中断和共享内存的方法使这两种不同的内核进行通信。
第二种方法是,在两个架构上运行同一个操作***,但是使用分别针对两个架构编译的两个内核实例,然后组织成一种多内核操作***。在两个架构之间的用户态运行一些通信守护进程来使两种架构上的内核相互通信,比如Barrelfish和Popcorn Linux。
现有的异构处理器整合方法无法应对在物联网大背景下出现的异构处理器***之间的日益紧密的合作,上述的整合方法主要有以下几个缺陷:
(1)第一种方法要求运行两种内核,这两种内核之中一种是大型内核,另一种是小型实时内核。只有大型内核具备完善的进程间保护模型和信息安全性,而小型***则不具备。这使得一旦实时内核出现安全漏洞或者故障崩溃,有可能损害大型内核的内核内存,整个***的安全性差;
(2) 第二种方法的两个内核互相之间无法直接通信,而在用户态进行内核服务的通信。这种方法使得内核之间的通信必须在用户态进行;某些第二种方法的改进方案允许内核之间在内核态通信,但两个内核仍然需要大量的通过消息队列的数据收发来维持状态同步。这大大降低了内核之间通信的效率,增加了数据同步的负担;
(3) 两种方法有共同的问题:两个内核之间的内核资源无法共享或者难以共享,即便能够共享,也难以要求两个内核采取同样的安全策略来共管内存,一旦两个内核针对某一段内存的信息安全策略不一致,则有可能导致该段内存的信息被泄露;
(4)两种方法的内核间通信都非常复杂,大大降低了异构方案的实用性;
(5)某些操作***也能在多种架构中运行,但是要同时运行多个内核才行。
发明内容
为了解决上述问题,本公开提供一种异构硬件组织运行统一内核方法及***,将每种架构的代码段和与架构相关的数据段链接到存储器的不同的存储区域,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域的存储区域,从而直接共享使用架构无关的内核对象。
为了实现上述目的,根据本公开的一方面,提供一种异构硬件组织运行统一内核方法,所述方法包括以下步骤:
步骤1,在编译内核代码时,针对不同架构类型中的每种架构编译其代码段;
步骤2,链接二进制时,将每种架构类型的架构的代码段和与该架构类型的架构相关的数据段链接到存储器的不同的存储区域;
步骤3,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域;
步骤4,将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成二进制。
进一步地,在步骤1中,所述在编译内核代码时,针对不同架构类型中的每种架构编译其代码段的方法为:编译内核代码时,由于源代码包括内核代码与不同的硬件抽象层,编译器将源代码划分成代码段和数据段;其中,代码段和数据段分为:将内核代码编译成的架构无关数据段和代码段,将硬件抽象层代码编译成的架构相关数据段和代码段;(内核代码和硬件抽象层代码部分编译的代码段均与架构相关,故内容无实质差别),即针对每一种架构类型(架构或称结构、体系架构、体系结构)的每种架构进行单独编译,所有的代码段都是已经预先针对架构类型归类好的,然后直接把架构对应的代码段传输给对应架构类型的架构的编译器进行编译。
所述架构(或称结构、组织)类型包括但不限于:MCU架构(微控制器架构)、MPU架构(微处理器架构)、DSP架构(数字信号处理器)、CPU架构(中央处理器架构)、SoC架构(片上***架构)、SOPC架构(可编程片上***架构)、PLD架构(可编程逻辑器架构)、FPGA架构(现场可编程门阵列架构)。
所述数据段分为架构相关(architecture specific)数据段和架构无关(architecture independent或architecture agnostic)的数据段;其中,架构相关的数据段为在硬件抽象层里面定义的变量;架构无关的数据段为在内核的硬件无关文件里面定义的变量;
进一步地,在步骤2中,将每种架构类型的架构的代码段和与该架构类型的架构相关的数据段链接到存储器的不同的存储区域的方法为:在一种架构类型中的架构的启动时(其他架构暂时停止运作),加载整个内核到内存中。首先,将架构相关的数据段拷贝到内存中不相互重叠的位置;然后,将架构相关的代码段拷贝到内存中不互相重叠的位置;最后,将架构无关的数据段拷贝到内存中,并跳转到内核的入口点运行;
通过已启动的架构启动所有的其他架构,并令其他架构分别跳转到相对应的架构相关的代码段的入口点运行;
在链接器链接二进制时,依次将每种架构类型的架构的代码段和与该架构相关的数据段链接到存储器中的不同的存储区域中,即在不同的架构之间,每种架构的代码段和与该架构相关的数据段存储的存储区域作为一个整体的子存储区域,每个子存储区域互相独立于存储器中;
架构相关的数据段例如,某种架构类型的架构需要通过这个架构的逻辑来维护它的几个架构相关的寄存器,则这些逻辑的数据需要专门的一块存储器中的存储区域进行存储,这就是这个架构的专属存储区域,因为其他架构用不到这些,这些是这个架构专属的全局变量,所有的内核对象都在共享区。
每种架构类型的架构的内核都存取其对应的架构相关的数据段,架构相关的数据段是不在各个架构之间共享的。
进一步地,在步骤3中,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域的方法为:链接二进制时,将所有的与架构无关的数据段存储在同一块存储器中的存储区域作为共享数据段的存储区域,使不同的架构上的各个变量实际上处于同一个内存地址,因此数据段在各个代码段之间被共享。
每种架构类型的架构的内核都存取同一个架构无关的数据段,架构无关的数据段包括但不限于内核对象,内核对象分为两类,一类是与架构相关的内核对象(架构相关的内核对象包括但不限于页表、线程上下文等),只能被创建时指定的架构使用;另一类是与架构无关的内核对象(架构无关的内核对象包括但不限于进程),可以被任意一种架构类型的架构任意使用。比如,一个进程可以同时在多种架构类型的架构上被运行,其中每种架构类型的架构运行针对该架构类型的架构编译的线程,虽然这些线程的代码段是不同的,但是这些线程的数据段则是共享的。
进一步地,不同架构类型的架构之间具备统一的安全模型,由于记录内存安全策略的内核对象也是共享的,因此在一个架构上执行的内存安全策略变更操作会被另一个架构即时知晓,无需进行核间通信。同样的,在一个架构上执行的内核对象状态变更操作也会被另一个架构立即知晓,也无需进行显式的通信。
进一步地,在步骤4中,将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成二进制没有特定顺序,即将object拼装成elf ,拼装成任意格式均可以只要能被正确加载即可。
本发明还提供了一种异构硬件组织运行统一内核***,所述***包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:
代码段编译单元,用于在编译内核代码时,针对不同架构类型中的每种架构编译其代码段;
架构独立存储单元,用于在链接二进制时,将每种架构类型的架构的代码段和与该架构类型的架构相关的数据段链接到存储器的不同的存储区域;
架构共享存储单元,用于在链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域;
二进制打包单元,用于将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成二进制。
本公开的有益效果为:本发明提供一种异构硬件组织运行统一内核方法及***,本公开的技术可以使多种架构真正使用同一个内核(其数据段的大部分是共享的,其代码段则是独立的),因此多种架构可以使用同样的安全策略,而且这些安全策略是自动同步而无需通信的。多种架构之间还可以直接共享使用架构无关的内核对象,并且在所有架构上无需通过内核间通信就可以直接管理所有的内核对象无需通过内核间通信。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本公开的上述以及其他特征将更加明显,本公开附图中相同的参考标号表示相同或相似的元素,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,在附图中:
图1所示为一种异构硬件组织运行统一内核方法的流程图;
图2所示为一种异构硬件组织运行统一内核***图。
具体实施方式
以下将结合实施例和附图对本公开的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本公开的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示为根据本公开的一种异构硬件组织运行统一内核方法的流程图,下面结合图1来阐述根据本公开的实施方式的一种异构硬件组织运行统一内核方法。
本公开提出一种异构硬件组织运行统一内核方法,具体包括以下步骤:
步骤1,在编译内核代码时,针对不同架构类型中的每种架构编译其代码段;
步骤2,链接二进制时,将每种架构类型的架构的代码段和与该架构类型的架构相关的数据段链接到存储器的不同的存储区域;
步骤3,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域;
步骤4,将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成二进制。
进一步地,在步骤1中,所述在编译内核代码时,针对不同架构类型中的每种架构编译其代码段的方法为:编译内核代码时,由于源代码包括内核代码与不同的硬件抽象层,编译器将源代码划分成代码段和数据段;其中,代码段和数据段分为:将内核代码编译成的架构无关数据段和代码段,将硬件抽象层代码编译成的架构相关数据段和代码段;(内核代码和硬件抽象层代码部分编译的代码段均与架构相关,故内容无实质差别),即针对每一种架构类型(架构或称结构、体系架构、体系结构)的每种架构进行单独编译,所有的代码段都是已经预先针对架构类型归类好的,然后直接把架构对应的代码段传输给对应架构类型的架构的编译器进行编译。
所述架构(或称结构、组织)类型包括但不限于:MCU架构(微控制器架构)、MPU架构(微处理器架构)、DSP架构(数字信号处理器)、CPU架构(中央处理器架构)、SoC架构(片上***架构)、SOPC架构(可编程片上***架构)、PLD架构(可编程逻辑器架构)、FPGA架构(现场可编程门阵列架构)。
所述数据段分为架构相关(architecture specific)数据段和架构无关(architecture independent或architecture agnostic)的数据段;其中,架构相关的数据段为在硬件抽象层里面定义的变量;架构无关的数据段为在内核的硬件无关文件里面定义的变量;
进一步地,在步骤2中,将每种架构类型的架构的代码段和与该架构类型的架构相关的数据段链接到存储器的不同的存储区域的方法为:在一种架构类型中的架构的启动时(其他架构暂时停止运作),加载整个内核到内存中。首先,将架构相关的数据段拷贝到内存中不相互重叠的位置;然后,将架构相关的代码段拷贝到内存中不互相重叠的位置;最后,将架构无关的数据段拷贝到内存中,并跳转到内核的入口点运行;
通过已启动的架构启动所有的其他架构,并令其他架构分别跳转到相对应的架构相关的代码段的入口点运行;
在链接器链接二进制时,依次将每种架构类型的架构的代码段和与该架构相关的数据段链接到存储器中的不同的存储区域中,即在不同的架构之间,每种架构的代码段和与该架构相关的数据段存储的存储区域作为一个整体的子存储区域,每个子存储区域互相独立于存储器中;
架构相关的数据段例如,某种架构类型的架构需要通过这个架构的逻辑来维护它的几个架构相关的寄存器,则这些逻辑的数据需要专门的一块存储器中的存储区域进行存储,这就是这个架构的专属存储区域,因为其他架构用不到这些,这些是这个架构专属的全局变量,所有的内核对象都在共享区。
每种架构类型的架构的内核都存取其对应的架构相关的数据段,架构相关的数据段是不在各个架构之间共享的。
进一步地,在步骤3中,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域的方法为:链接二进制时,将所有的与架构无关的数据段存储在同一块存储器中的存储区域作为共享数据段的存储区域,使不同的架构上的各个变量实际上处于同一个内存地址,因此数据段在各个代码段之间被共享。
每种架构类型的架构的内核都存取同一个架构无关的数据段,架构无关的数据段包括但不限于内核对象,内核对象分为两类,一类是与架构相关的内核对象(架构相关的内核对象包括但不限于页表、线程上下文等),只能被创建时指定的架构使用;另一类是与架构无关的内核对象(架构无关的内核对象包括但不限于进程),可以被任意一种架构类型的架构任意使用。比如,一个进程可以同时在多种架构类型的架构上被运行,其中每种架构类型的架构运行针对该架构类型的架构编译的线程,虽然这些线程的代码段是不同的,但是这些线程的数据段则是共享的。
进一步地,不同架构类型的架构之间具备统一的安全模型,由于记录内存安全策略的内核对象也是共享的,因此在一个架构上执行的内存安全策略变更操作会被另一个架构即时知晓,无需进行核间通信。同样的,在一个架构上执行的内核对象状态变更操作也会被另一个架构立即知晓,也无需进行显式的通信。
进一步地,在步骤4中,将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成二进制没有特定顺序,即将object拼装成elf ,拼装成任意格式均可以只要能被正确加载即可。
一种优选的实施例方法:在一种架构类型的架构的启动时(其他架构暂时停止运作),加载整个内核到内存中。首先,将架构相关的数据段拷贝到内存中不相互重叠的位置;然后,将架构相关的代码段拷贝到内存中不互相重叠的位置;最后,将架构无关的数据段拷贝到内存中,并跳转到内核的入口点运行;在***内核的入口点,该先启动的CPU以某种方式启动所有的其他CPU,并令其他CPU分别跳转到相对应的架构相关的代码段的入口点运行。
每种架构类型的架构的内核都存取其对应的架构相关的数据段,架构相关的数据段是不在各个架构之间共享的。
每种架构类型的架构的内核都存取同一个架构无关的数据段,架构无关的数据段包括但不限于内核对象,内核对象分为两类,一类是与架构相关的内核对象(架构相关的内核对象包括但不限于页表、线程上下文等),只能被创建时指定的架构使用;另一类是与架构无关的内核对象(架构无关的内核对象包括但不限于进程),可以被任意一种架构类型的架构任意使用。比如,一个进程可以同时在多种架构类型的架构上被运行,其中每种架构类型的架构运行针对该架构类型的架构编译的线程,虽然这些线程的代码段是不同的,但是这些线程的数据段则是共享的。
各种架构之间具备统一的安全模型,由于记录内存安全策略的内核对象也是共享的,因此在一个CPU上执行的内存安全策略变更操作会被另一个CPU即时知晓,无需进行核间通信,同样的,在一个CPU上执行的内核对象状态变更操作也会被另一个CPU立即知晓,也无需进行显式的通信。
优选地,在一种架构类型的架构上为另一种架构类型的架构创建架构相关的内核对象。架构相关的内核对象(架构相关的内核对象包括但不限于页表、线程上下文等)是和架构相关的,虽然其他架构类型的架构上不能使用这些内核对象,但可以进行这些内核对象的基本操作,所述基本操作包括但不限于创建、删除和初始化。
优选的,本实施给出一个非常简要的具体实施例,阐述该方法如何根据用户需求决定保护域的配置。某硬件***包括两中架构,分别为擅长逻辑处理的A架构(两个处理器核A1,A2)和擅长数值计算的B架构(四个处理器核B1-B4),软件则包括在A架构上运行的内核加载器As,在A架构上运行的代码段Ac,在B架构上运行的代码段Bc,被A架构独占的数据段Ad,被B架构独占的数据段Bd,以及共享数据段Sd。
首先,运行在A1上的As将Ac、Bc、Ad、Bd、Sd加载到在编译链接内核时确定好的合适位置,此时A2、B1-B4均处于不运行状态。
然后,As将内核控制权转交给A1运行的代码段Ac。运行在A1上的Ac初始化A2和B1,使A2跳转到Ac中的合适的入口点,此时A1和A2处理器的内核启动流程结束,并经过一定的初始化流程后跳转到用户态程序继续运行。
然后,A1使B1跳转到Bc中的合适的入口点,并由运行在B1上的Bc初始化B2-B4,并使其均跳转到Bc中的合适的入口点,此时B1-B4处理器上的内核启动流程结束,并经过一定的初始化流程后跳转到用户态程序继续运行。
之后,在A架构上运行的进程S创建了进程P,用于A架构的页表Ap和用于B架构的页表Bp,以及运行于A架构上的负责管理任务的线程At1、At2和运行于B架构上的负责计算任务的线程Bt1-Bt4。这些内核对象都位于共享数据段Sd中,因此B架构能够实时观察到这一更改。
最后,当进程P被调度运行时,At1、At2运行于A1、A2,Bt1-Bt4运行于B1-B4,在A架构上使用的页表为Ap,在B架构上使用的页表为Bp。整个过程中B架构专注于计算而A架构专注于内核对象管理,共享内核内存使任何对内核对象的更改都可以互相观察到,大大降低了不同架构之间合作的成本,大大增强了灵活性。
本公开的实施例提供的一种异构硬件组织运行统一内核***,如图2所示为本公开的一种异构硬件组织运行统一内核***图,该实施例的一种异构硬件组织运行统一内核***包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:
代码段编译单元,用于在编译内核代码时,针对不同架构类型中的每种架构编译其代码段;
架构独立存储单元,用于在链接二进制时,将每种架构类型的架构的代码段和与该架构类型的架构相关的数据段链接到存储器的不同的存储区域;
架构共享存储单元,用于在链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域;
二进制打包单元,用于将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成二进制。
所述一种异构硬件组织运行统一内核***可以运行于桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备中。所述一种异构硬件组织运行统一内核***,可运行的***可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述例子仅仅是一种异构硬件组织运行统一内核***的示例,并不构成对一种异构硬件组织运行统一内核***的限定,可以包括比例子更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种异构硬件组织运行统一内核***还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种异构硬件组织运行统一内核***运行***的控制中心,利用各种接口和线路连接整个一种异构硬件组织运行统一内核***可运行***的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种异构硬件组织运行统一内核***的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(SecureDigital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
尽管本公开的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本公开的预定范围。此外,上文以发明人可预见的实施例对本公开进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本公开的非实质性改动仍可代表本公开的等效改动。
Claims (6)
1.一种异构硬件组织运行统一内核方法,其特征在于,所述方法包括以下步骤:
步骤1,在编译内核代码时,针对不同架构类型中的每种架构编译其代码段;
步骤2,在链接器链接二进制时,依次将每种架构类型的架构的代码段和与该架构相关的数据段链接到存储器中的不同的存储区域中,即在不同的架构之间,每种架构的代码段和与该架构相关的数据段存储的存储区域作为一个整体的子存储区域,每个子存储区域互相独立于存储器中;
步骤3,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域;
步骤4,将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成一个二进制。
2.根据权利要求1所述的一种异构硬件组织运行统一内核方法,其特征在于,在步骤1中,所述在编译内核代码时,针对不同架构类型中的每种架构编译其代码段的方法为:编译内核代码时,编译器将程序按内容划分成代码段和数据段,针对每一种架构类型的每种架构进行单独编译,所有的代码段都是已经预先针对架构类型分类,然后直接把架构对应的代码段传输给对应架构类型的架构的编译器进行编译。
3.根据权利要求1所述的一种异构硬件组织运行统一内核方法,其特征在于,所述架构类型包括但不限于:MCU架构、MPU架构、DSP架构、CPU架构、SoC架构、SOPC架构、PLD架构、FPGA架构。
4.根据权利要求1所述的一种异构硬件组织运行统一内核方法,其特征在于,在步骤2中,将每种架构类型的架构的代码段和与该架构类型的架构相关的数据段链接到存储器的不同的存储区域的方法为:在一种架构类型中的架构的启动时,加载整个内核到内存中,首先,将架构相关的数据段拷贝到内存中不相互重叠的位置;然后,将架构相关的代码段拷贝到内存中不互相重叠的位置;最后,将架构无关的数据段拷贝到内存中,并跳转到内核的入口点运行;通过已启动的架构启动所有的其他架构,并令其他架构分别跳转到相对应的架构相关的代码段的入口点运行;在链接器链接二进制时,依次将每种架构类型的架构的代码段和与该架构相关的数据段链接到存储器中的不同的存储区域中,即在不同的架构之间,每种架构的代码段和与该架构相关的数据段存储的存储区域作为一个整体的子存储区域,每个子存储区域互相独立于存储器中。
5.根据权利要求1所述的一种异构硬件组织运行统一内核方法,其特征在于,在步骤3中,链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域的方法为:链接二进制时,将所有的与架构无关的数据段存储在同一块存储器中的存储区域作为共享数据段的存储区域,使不同的架构上的各个变量实际上处于同一个内存地址,因此数据段在各个代码段之间被共享。
6.一种异构硬件组织运行统一内核***,其特征在于,所述***包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:
代码段编译单元,用于在编译内核代码时,针对不同架构类型中的每种架构编译其代码段;
架构独立存储单元,在链接器链接二进制时,依次将每种架构类型的架构的代码段和与该架构相关的数据段链接到存储器中的不同的存储区域中,即在不同的架构之间,每种架构的代码段和与该架构相关的数据段存储的存储区域作为一个整体的子存储区域,每个子存储区域互相独立于存储器中;
架构共享存储单元,用于在链接二进制时,将与架构无关的数据段链接到存储器的同一存储区域;
二进制打包单元,用于将每种架构的代码段、架构相关的数据段、架构无关的数据段打包成一个二进制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910391228.0A CN110083469B (zh) | 2019-05-11 | 2019-05-11 | 一种异构硬件组织运行统一内核方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910391228.0A CN110083469B (zh) | 2019-05-11 | 2019-05-11 | 一种异构硬件组织运行统一内核方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083469A CN110083469A (zh) | 2019-08-02 |
CN110083469B true CN110083469B (zh) | 2021-06-04 |
Family
ID=67419686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910391228.0A Active CN110083469B (zh) | 2019-05-11 | 2019-05-11 | 一种异构硬件组织运行统一内核方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083469B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490033B (zh) * | 2021-12-27 | 2024-05-03 | 华东师范大学 | 一种多样化算力的统一性能建模和适应性变更方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101095103A (zh) * | 2004-03-26 | 2007-12-26 | 爱特梅尔股份有限公司 | 双处理器复域浮点数字信号处理片上*** |
CN101196922A (zh) * | 2007-12-24 | 2008-06-11 | 北京深思洛克数据保护中心 | 信息安全设备中的文件存储和访问方法及信息安全设备 |
CN101477458A (zh) * | 2008-12-15 | 2009-07-08 | 浙江大学 | 基于处理器和fpga混合架构的硬件线程执行方法 |
CN101963918A (zh) * | 2010-10-26 | 2011-02-02 | 上海交通大学 | 实现cpu/gpu异构平台的虚拟执行环境的方法 |
CN103473059A (zh) * | 2013-09-11 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种支持多种体系架构的通用操作*** |
CN103562870A (zh) * | 2011-05-11 | 2014-02-05 | 超威半导体公司 | 异构核心的自动加载平衡 |
CN103678131A (zh) * | 2013-12-18 | 2014-03-26 | 哈尔滨工业大学 | 多核处理器的软件故障注入与分析*** |
CN104050137A (zh) * | 2013-03-13 | 2014-09-17 | 华为技术有限公司 | 一种异构操作***中内核运行的方法及装置 |
CN104407852A (zh) * | 2014-11-05 | 2015-03-11 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种基于代码隔离的嵌入式软件构建方法和调用方法 |
CN105718287A (zh) * | 2016-01-20 | 2016-06-29 | 中南大学 | 一种智能终端的程序流式执行方法 |
CN106201636A (zh) * | 2016-08-11 | 2016-12-07 | 中国电子科技集团公司第二十九研究所 | 一种dsp片外代码动态加载方法及装置 |
CN109460369A (zh) * | 2017-09-06 | 2019-03-12 | 忆锐公司 | 基于闪存的加速器及包括该加速器的计算设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8917279B2 (en) * | 2011-01-24 | 2014-12-23 | Nec Laboratories America, Inc. | Method and system to dynamically bind and unbind applications on a general purpose graphics processing unit |
US8683243B2 (en) * | 2011-03-11 | 2014-03-25 | Intel Corporation | Dynamic core selection for heterogeneous multi-core systems |
-
2019
- 2019-05-11 CN CN201910391228.0A patent/CN110083469B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101095103A (zh) * | 2004-03-26 | 2007-12-26 | 爱特梅尔股份有限公司 | 双处理器复域浮点数字信号处理片上*** |
CN101196922A (zh) * | 2007-12-24 | 2008-06-11 | 北京深思洛克数据保护中心 | 信息安全设备中的文件存储和访问方法及信息安全设备 |
CN101477458A (zh) * | 2008-12-15 | 2009-07-08 | 浙江大学 | 基于处理器和fpga混合架构的硬件线程执行方法 |
CN101963918A (zh) * | 2010-10-26 | 2011-02-02 | 上海交通大学 | 实现cpu/gpu异构平台的虚拟执行环境的方法 |
CN103562870A (zh) * | 2011-05-11 | 2014-02-05 | 超威半导体公司 | 异构核心的自动加载平衡 |
CN104050137A (zh) * | 2013-03-13 | 2014-09-17 | 华为技术有限公司 | 一种异构操作***中内核运行的方法及装置 |
CN103473059A (zh) * | 2013-09-11 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种支持多种体系架构的通用操作*** |
CN103678131A (zh) * | 2013-12-18 | 2014-03-26 | 哈尔滨工业大学 | 多核处理器的软件故障注入与分析*** |
CN104407852A (zh) * | 2014-11-05 | 2015-03-11 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种基于代码隔离的嵌入式软件构建方法和调用方法 |
CN105718287A (zh) * | 2016-01-20 | 2016-06-29 | 中南大学 | 一种智能终端的程序流式执行方法 |
CN106201636A (zh) * | 2016-08-11 | 2016-12-07 | 中国电子科技集团公司第二十九研究所 | 一种dsp片外代码动态加载方法及装置 |
CN109460369A (zh) * | 2017-09-06 | 2019-03-12 | 忆锐公司 | 基于闪存的加速器及包括该加速器的计算设备 |
Non-Patent Citations (1)
Title |
---|
Open-MP-to-OpenCL代码自动转换工具的设计与实现;王燕燕;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150815;第2015年卷(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110083469A (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9459903B2 (en) | Techniques for routing service chain flow packets between virtual machines | |
WO2020006910A1 (zh) | 业务组件式开发方法、装置、计算机设备及存储介质 | |
US9183032B2 (en) | Method and system for migration of multi-tier virtual application across different clouds hypervisor platforms | |
US10846101B2 (en) | Method and system for starting up application | |
US20160004531A1 (en) | Interactive content development | |
US10416979B2 (en) | Package installation on a host file system using a container | |
US20140351811A1 (en) | Datacenter application packages with hardware accelerators | |
US10833955B2 (en) | Dynamic delivery of software functions | |
CN107015995B (zh) | 一种镜像文件的修改方法和装置 | |
CN110650347B (zh) | 多媒体数据的处理方法及装置 | |
JP2014516191A (ja) | 仮想パーティションを監視するためのシステムおよび方法 | |
US10048886B2 (en) | Method and system providing file system for an electronic device comprising a composite memory device | |
US9058494B2 (en) | Method, apparatus, system, and computer readable medium to provide secure operation | |
CN111736922B (zh) | 插件调用方法、装置、电子设备及存储介质 | |
US20170115980A1 (en) | Computerized system and method for patching an application by separating executables and working data using different images | |
US20210158131A1 (en) | Hierarchical partitioning of operators | |
US9053442B2 (en) | Multiple project areas in a development environment | |
US20220171846A1 (en) | Labeled security for control flow inside executable program code | |
US11467946B1 (en) | Breakpoints in neural network accelerator | |
CN110083469B (zh) | 一种异构硬件组织运行统一内核方法及*** | |
CN114090171A (zh) | 虚拟机创建方法、迁移方法及计算机可读介质 | |
CN113296891A (zh) | 基于平台的多场景知识图谱处理方法及装置 | |
CN110955415B (zh) | 一种投影多平台服务适配的方法 | |
CN111459573A (zh) | 一种智能合约执行环境的启动方法以及装置 | |
CN108089895B (zh) | 一种插件中Activity的注册方法、装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210127 Address after: No.21, Luntou Road, Guangzhou, Guangdong 510000 Applicant after: GUANGDONG University OF FINANCE & ECONOMICS Address before: Room 2703, block 3, xingxinghuayuan, 17 Yingyin Road, Chancheng District, Foshan City, Guangdong Province, 528000 Applicant before: Xiao Yinhao |
|
GR01 | Patent grant | ||
GR01 | Patent grant |