CN103207782B - 基于multi-kernel MOS 的分区系统构建方法 - Google Patents

基于multi-kernel MOS 的分区系统构建方法 Download PDF

Info

Publication number
CN103207782B
CN103207782B CN201310102233.8A CN201310102233A CN103207782B CN 103207782 B CN103207782 B CN 103207782B CN 201310102233 A CN201310102233 A CN 201310102233A CN 103207782 B CN103207782 B CN 103207782B
Authority
CN
China
Prior art keywords
subregion
processor core
core
kernel
processor
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.)
Expired - Fee Related
Application number
CN201310102233.8A
Other languages
English (en)
Other versions
CN103207782A (zh
Inventor
龙翔
杨经纬
高小鹏
万寒
姜博
郑思遥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201310102233.8A priority Critical patent/CN103207782B/zh
Publication of CN103207782A publication Critical patent/CN103207782A/zh
Application granted granted Critical
Publication of CN103207782B publication Critical patent/CN103207782B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明是一种基于multi-kernel MOS的分区系统构建方法,适用于多核、众核异构处理器平台。本发明基于负载均衡及通信延迟最小化的原则,将系统中各分区映射到合适的处理器核心上;再依次在每个处理器核心上启动并运行与自身ISA相匹配的操作系统内核(MOS kernel),并为映射到该处理器核心的分区建立并初始化通信信道及附属的管理数据结构,分区之间基于消息传递方式实现通信;最后MOS kernel启动映射到其所在处理器核心的各个分区内部的操作系统及任务。本发明使多种ISA架构的处理器核心能同时运行于同一分区系统,并且在有效提升系统效能及可扩展性的基础上,最大程度地保证程序运行的实时确定性。

Description

基于multi-kernel MOS 的分区系统构建方法
技术领域
本发明涉及一种基于multi-kernel MOS(Module Operating System)的分区系统构建方法,适用于当前乃至今后多核、众核平台上分区系统的构建,可应用在航电系统、汽车电子、实时控制等领域。
背景技术
随着电子工艺技术的进步,深亚微米时代单个处理器芯片上所能集成的晶体管数可达数十亿之多,今后芯片制造工艺将继续按照摩尔定律发展。为了避开功耗、频率等限制因素,将更多的晶体管和能量用于有效的计算,目前处理器设计正呈现由单核、多核(几个~十几个核心)向众核(几十个、甚至成百上千个核心)转变的趋势,在某些领域(科学计算、消费类电子),异构处理架构也开始投入实用。为了充分有效利用处理器芯片上越来越多的计算能力,提高系统的效能,工业和学术界近些年开始倾向于采用服务和资源整合的方式(如虚拟化技术、分区系统等),将更多相对独立的应用综合到同一个计算平台运行,从而充分发挥现代多核、众核处理器的计算能力,并进一步降低应用的总体功耗与成本。Aeronautical Radio公司提出的ARINC653分区系统规范为面向关键应用的服务和资源综合化技术提供了相应的标准,定义了系统与应用之间的接口及API(Application Programming Interface)服务功能,主要服务于航空航天、汽车电子、医疗器械等安全攸关领域。
分区系统使得多个关键应用整合在一台计算机成为可能,其关键在于在时间和空间两个维度将不同的应用以分区的形式隔离开来,同一系统中各分区运行于共有的操作系统环境MOS,彼此之间拥有独立的地址空间和处理器时间片,分区间的功能不会相互干扰,一个分区的失效或者故障不会传播到另一个分区,这使得整个系统的可靠性大大增强,并且分析与验证也更加容易。分区内部拥有自己的分区操作系统(POS:Partition Operating System),POS上的执行单元为任务,多个任务相互协调,共同构成功能完整的分区应用。一般情况下,POS与任务运行在同一特权级,且任务往往可以无限制地访问整个分区所属地址空间。
传统的ARINC653分区系统的实现大多基于单核系统,随着多核、众核系统的普及,ARINC653面临着多处理器核心所带来的一系列挑战,如系统的可扩展性、核间通信延迟的不确定性、通信带宽的保障、共享总线的争用、通信拓扑结构的有效性以及处理器核心失效等问题。另外,对于日渐兴起的异构处理器平台,现有ARINC653分区系统标准也尚未提供相应规范。操作系统是解决分区系统多核问题的关键,目前分区系统所采用的MOS主要有VxWorks653、INTEGRITY-178B、PikeOS等,这些MOS普遍采用共享存储式架构模型,系统中所有处理器核心共享同一份操作系统内核代码及相应的数据结构,所有处理器ISA架构也必须相同。除此之外,传统的实时操作系统如RTEMS(Real Time Executive for MultiprocessorSystems)、uC/OS-II、RT-Linux等均采用共享存储式架构,在一个或者有限的几个处理器核心上具有较好的效率,但是在处理器核数增多的情况下,系统中由于数据结构共享而造成的互斥锁、cache(高速缓冲存储器)false-sharing(伪共享)与ping-pong效应等严重限制了多核并发性,并降低了系统总体效率,从而抵消多核所带来的性能优势,当处理器核数增多时,传统操作系统表现出了严重的可扩展性以及实时性问题。
发明内容
本发明针对分区系统在多核、众核平台上面临的问题,提出一种基于multi-kernel MOS的分区系统构建方法,以提升系统的可扩展性和实时性,并适应未来体系结构发展趋势。
一种基于multi-kernel MOS的分区系统构建方法,针对多核、众核异构系统,包括如下步骤:
步骤1:为系统中的处理器核心和分区分别建立拓扑结构图,然后基于负载均衡及通信延迟最小化的原则,将系统中各分区映射到合适的处理器核心上运行;负载均衡是指系统中各处理器核心负载(分区)均衡,通信延迟最小化是指系统中各分区间通信延迟加权和最小化;
所述的映射的约束条件为:
1)每个分区被映射到指令集架构(Instruction Set Architecture,简称ISA)匹配的处理器核心;
2)每个分区需要的处理器核心数与映射的处理器核心数相符;
3)每个处理器核心上映射的分区集合满足实时可调度性要求。
步骤2:基于multi-kernel MOS的架构模型,依次在每个处理器核心上启动并运行与其ISA相匹配的独立操作系统内核(MOS kernel),处理器核心之间不共享内核代码与数据结构。根据分区的通信需求,为映射到各处理器核心的分区建立并初始化通信信道及附属的管理数据结构,分区之间基于消息传递方式实现通信;通信信道附属的管理数据结构包括:信道所属的源分区、目的分区;信道优先级;以及各子信道地址、容量、优先级、数量和读写指针等。
步骤3:每个处理器核心上的MOS Kernel启动之后,会像启动传统操作系统的流程一样,依次启动被映射到其所属处理器核心的上各个分区内部的操作系统(POS)及任务,分区开始执行。
本发明的优点和积极效果在于:
(1)采用本发明方法构建的分区系统,消除了系统中各处理器之间的数据共享,使得各处理器核心拥有自己独立的内核数据结构拷贝,避免了传统共享存储多核系统中由于cache一致性协议造成的系统性能下降,在有效降低系统开销的基础上,最大程度保证程序运行的确定性。
(2)采用本发明方法构建的分区系统,在系统级消除了共享存储给多核实时系统建模带来的不利影响,便于用户对实时应用进行WCET(West Case Execution Time,最坏情况执行时间)分析。
(3)本发明方法通过采用消息传递方式实现分区间通信,系统中各模块运行于固定的处理器核心,可以有效降低cache-line的false-sharing、ping-pong效应,不仅有助于提升cache有效利用率,还可以提升cache的命中率。而且,消息传递架构模型既能在支持核间共享存储的处理器上实施,也能在不支持核间共享存储的处理器上实施,对体系结构具有良好的适应性。
(4)本发明方法构建的系统中各处理器核心之间代码耦合度大大降低,这使得在同一分区系统之中同时支持多种ISA架构的处理器核心成为可能,各异构处理器核心之间基于消息方式实现数据一致性维护和函数调用,各分区可以根据自身属性特点选择有益于系统效能最大化的处理器架构,使得RISC、CISC、ASIC以及FPGA等多种计算平台可以集成于同一系统。
(5)本发明方法中采用显式的消息传递方式,核间通信得以暴露给软件层,加大了用户对软件进行优化的空间和力度,从而可以更近一步提升系统性能;分区间通信也具备可调度性,因此其延迟确定性可得以保障,为分区系统的实时确定性提供了良好的底层支撑技术。
附图说明
图1为采用本发明方法所构建的一个分区系统的结构示意图;
图2为本发明实施例中异构系统的处理器核心拓扑结构简图;
图3为本发明实施例中异构系统的分区的拓扑结构简图;
图4为本发明构建分区系统方法中采用启发式算法实现分区映射的步骤流程图;
图5为图2和图3所示实施例中最终实现的分区映射图;
图6为本发明构建分区系统方法中分区系统启动的流程示意图。
具体实施方式
在下述具体实施示例中,结合附图对本发明进行进一步的详细说明。通过足够详细的描述这些实施示例,使得本领域技术人员能够理解和实践本发明。在不脱离本发明的主旨和范围的情况下,可以对实施做出逻辑的、实现的和其他的改变。因此,以下详细说明不应该被理解为限制意义,本发明的范围仅仅由权利要求来限定。
如图1所示,为本发明所构建的一个分区系统,该分区系统可以拥有多个处理器核心,其规模为几个~几十个不等,其ISA架构涵盖桌面系统常用的X86架构,航空航天领域常用的PowerPC架构,嵌入式手持设备常用的ARM架构以及数字型号领域常用的DSP等多种选择,分区系统在设计阶段根据需要将以上一种或者多种架构的多个处理器核心集成于同一硬件平台,以满足不同分区应用的差异化需求及最优化配置。在软件层,系统被划分为3个层次,自下而上依次为MOS,POS,以及任务,POS可以是诸如VxWorks、uC/OS-II、RTEMS等一些实时或/实时操作系统或运行时(run-time)服务,其中POS与任务运行于同一特权级且共享地址空间。MOS是分区系统的关键,决定着整个系统的架构方式。传统操作系统往往采用单一内核(monolithic-kernel)、微内核(micro-kernel)或者二者混合架构方式,所有处理器核心共享同一份操作系统内核代码和数据结构。而本发明的MOS采用multi-kernel架构方式,每个处理器核心上运行一份独立的MOS kernel,采用消息传递取代共享存储式编程模型。这与传统操作系统架构有着本质的不同,能有效提升分区系统的多核可扩展性以及实时性。
本发明中构建的分区系统,每个处理器核心上的MOS kernel采用微内核架构。MOS kernel运行在处理器的内核态,仅实现系统必须的中断管理、时钟管理、分区管理、分区通信以及内存分页机制等,内核规模小,易于验证,系统中的其他功能模块如页面分配、文件系统、网络协议栈以及设备驱动等则以用户态应用的形式运行在固定的处理器核心之上。由于每个处理器核心运行独立的MOS kernel,各kernel之间不再共享存储空间,因此各处理器核心所运行的kernel代码不存在相关性依赖,所操作的存储地址空间不存在一致性约束,kernel结构与特性可以根据处理器核心的属性而自由配置。这使得该类型kernel对于异构处理器具有天然的支持能力,例如在一个X86、ARM混合ISA的多核处理器上,需要配置两份不同的内核代码镜像,分别基于X86和ARM指令集。假设主核为X86架构,则系统在启动引导过程中,主核需要执行基于X86指令集的引导程序,这通过系统配置可以实现。主核上的引导程序完成硬件的初始化以及自身MOS kernel的运行环境配置(代码区、数据区、堆栈等)之后,会跳入MOS kernel代码空间执行从核的启动工作,根据从核的ISA将相应指令集的MOSkernel加载到内存,并为其分配相应的内存空间(如数据区、堆栈等)。然后初始化数据区,将从核MOS kernel的起始地址写入从核的程序计数器(PC:Program Counter),堆栈栈顶地址写入从核的堆栈计数器(SP:Stack Pointer),之后从核便开始自主运行,主核上的引导程序会继续加载其他从核的MOS kernel并启动其运行。在启动每个处理器核(包括主核)上MOS Kernel的过程中,主核上的引导程序还会根据系统启动配置文件为映射到各处理器核心上的分区建立通信信道及附属的管理数据结构,如信道所属的源分区、目的分区,信道优先级,各子信道地址、容量、优先级、数量、读写指针等,然后在处理器核心开始运行MOS kernel之前将相关参数传递给MOS kernel。对于同构多核处理器,各处理器核心上的MOS kernel启动流程与异构多核处理器系统相同。一般情况下,通信信道同时属于两个分区,每当启动一个处理器核心上的MOS kernel之前,引导程序会检测该处理器核心上具有通信需求的分区并建立相应的通信信道,无论该分区是通信信道的源分区还是目的分区。在之后的处理器核心启动过程中,当启动程序检测到已经建立的通信信道所属的另一个分区时无需再次分配内存和管理数据结构,可直接将之前配置好的信道参数传递给另一个分区所映射的处理器核心上的MOSkernel。当然,如果具有通信关系的两个不同分区运行于同一处理器核心,其通信信道参数只需传递一个MOS kernel。在MOS kernel启动的过程中,引导程序除了传递信道参数之外,还会传递一些其他相关参数,如分区配置信息、分区代码地址等。当MOS kernel在所属的处理器核心上启动之后,完成一系列的本地初始化过程,然后开始按着分区配置信息启动各个分区的运行,并将具有通信需求的各分区与相应分区通信信道“连接”,之后各分区便可在分区调度算法的调度下持续运行,完成既定的功能。
本发明提供的基于multi-kernel MOS的分区系统构建方法,主要包括如下3个步骤。
步骤1:基于负载均衡及通信延迟最小化的原则,将系统中各分区映射到合适的处理器核心,系统初始化时能够按着映射结果在各处理器核心上启动对应的分区。
本发明多构建的分区系统,MOS运行于处理器的内核态,而POS连同分区任务运行于用户态,且共享同一地址空间。根据不同应用的需求,POS可以选用各种具有不同特性的操作系统内核,甚至对于非关键性应用,POS也可以采用非实时内核。分区系统存在的主要目的在于将物理上独立的多个计算机上的应用以分区形式集中于同一计算机系统,该系统包含一个或者多个处理器核心。若原有独立的计算机系统包括多个处理器核心,那么在分区系统上,该计算机系统上应用所构成的分区也应该被映射到相同数量的处理器核心,以保证对原有系统的兼容性。当然,对于只具有一个处理器核心的计算机系统,所对应的分区也只被映射到一个处理器核心。一般情况下,分区在处理器核心上映射是静态的,因此在分区系统启动之后,分区不允许发生迁移,否则会引起通信信道、分区最坏情况执行时间、分区可调度性等系统属性的不确定性变化,这对于实时系统来说是不可接受的。在多核、众核系统,尤其是基于NoC(Networks on Chip)互联架构的系统上,分区映射的主要依据在于分区间通信互联拓扑结构,根据分区之间的通信频率(单位时间内通信的次数)决定分区在处理器核心上的物理排布。对于通信频率越高的分区,对应分区所在处理器核心之间的物理距离越近,在处理器性能允许的情况下,具有高通信频率的两个分区会尽量分配在同一处理器核心运行,以使得分区间通信数据可以基于处理器的一级cache传输,并附加相应的机制如cache分区、cache锁等,从而保证通信延迟尽可能短。
每个处理器核心的MOS上可以运行多个不同分区,分区内可以采用如前所述的不同POS,用于实现对分区资源和分区任务的个性化管理。另外,对于并发度要求较高的应用,分区还可以跨越处理器核心,即在同一时刻或者不同时刻一个分区内部有多个处理器核心运行,这需要MOS提供相应的支持,以使得上层分区能实现核间地址空间的共享,从而支持传统的共享存储式操作系统,如RTEMS。
基于应用的需求,每个分区分别被映射到不同的ISA架构的处理器核心之上,根据分区对性能的要求,分区可以映射到多个处理器核心,由于一个处理器核心上可能会有多个分区运行,因此不同分区在处理器核心上会有不同程度的交集,随着运行分区数目的不同,每个处理器核心的负载也不同,负载均衡是分区映射的重要指标。另外,由于分区之间存在固有的通信关系,分区的映射也应考虑通信延迟问题,具有密切通信关系的普通任务分区应该位于相同或者临近的处理器核心,以使得系统的通信延迟加权和最小。总之,在满足性能和ISA要求的前提下,分区映射的最优化目标是负载均衡、通信延迟小,且最终满足应用的实时性能要求。
在进行分区映射之前,需要分别对处理器核心和分区建立拓扑结构图,以描述分区之间的通信属性以及处理器核心之间的互联线路属性,除此之外,处理器核心拓扑结构图还需包括各处理器核心的ISA信息、性能属性。
本发明实施例中,处理器核心的互联拓扑结构图用图G(V,E)描述,V表示节点集合,每个节点表示一个处理器核心,E为边的集合,每条边表示两个处理器核心之间的物理互联线路。V中节点vi表示第i个处理器核心,每个处理器核心节点上附属有该处理器核心的ISA信息和性能参数等,边(vi,vj)∈E,表示处理器核心vi与处理器核心vj之间的物理互联线路,边上标记有两个处理器核心之间的通信延迟参数。i,j为正整数。分区间的互联拓扑结构通过图T(P,L)描述,P表示节点集合,每个节点表示一个分区,P中元素pi表示第i个分区,每个分区节点上附属有分区的ISA信息和需要的处理器核心数。L为边的集合,每条边表示分区间的通信信道,边(pi,pj)∈L,表示分区pi与分区pj之间的通信信道,每条边上标记两个分区之间的通信频率。步骤1中分区到处理器核心的映射就是完成有向图G(V,E)到有向图T(P,L)的映射。
如图2和图3所示,分别为本发明实施例一个多核系统的处理器核心的拓扑结构图和分区的拓扑结构图。如图2所示,该多核系统是包含8个处理器核心的异构系统,其中2个为DSP架构:vD1、vD2,6个为ARM架构:vA1、vA2、vA3、vA4、vA5、vA6。相邻的处理器核心之间具有直接的物理互联线路,物理互联线路上标注的数字为相邻处理器核心之间的通信延迟。通信延迟根据处理器核心的通信性能模型得出,在同一处理器核心上的分区间通信延迟最小,同构相邻处理器核心之间通信延迟比同一处理器核心上的通信延迟大,但小于异构相邻处理器核心之间的通信延迟。本发明实施例中设分区在同一处理器核心上通信延迟为0,同构相邻处理器核心之间的通信延迟均为1,异构相邻处理器核心之间的通信延迟为2。不相邻的处理器核心之间的通信延迟为数据传输所经过路径的通信延迟之和。在这8个处理器核心之上,需要映射12分区:p1、p2、…、p12,分区间的互联关系如图3所示,分区节点之间的连线表示分区之间存在通信关系,连线上所标注的数字为通信频率。各分区的属性信息如表1所示,分区属性主要包括所支持的处理器ISA,所需要的处理器核心数,以及在每个处理器核心上的CPU利用率。各分区的CPU利用率基于系统中ARM或者DSP处理器性能模型得出,为了实施方便,这里按上界取整处理。其中分区p1,p2各需要两个处理器核心,均采用基于局部调度策略的多核实时调度算法,即分区中的任务只在固定的处理器核心上运行而不会发生核间迁移,基于某种实时调度算法,分区在每一个处理器核心上都会有固定的CPU利用率。
表1 各分区属性信息
分区 处理器ISA 需要的处理器核心数 CPU利用率
p1 ARM 2 (31%,35%)
p2 ARM 2 (33%,31%)
p3 ARM 1 13%
p4 ARM 1 61%
p5 ARM 1 53%
p6 ARM 1 33%
p7 ARM 1 47%
p8 ARM 1 25%
p9 ARM 1 13%
p10 DSP 1 31%
p11 DSP 1 61%
p12 DSP 1 33%
由于分区计算与分区通信的密切关系,分区间通信是本发明中分区的映射的一个重要优化目标。映射结果需要满足以下几点约束:
1)分区pi的ISA需要与处理器核心vj的ISA匹配;
2)分区pi需要的处理器核心数与映射的处理器核心数相符;
3)每个处理器核心上的分区集合满足实时可调度性要求,即每个分区映射到处理器核心之后该处理器核心上所有分区的实时可调度性可以得到保证。
映射的最优化目标为:
1)系统中各分区间通信延迟加权和最低或尽量低;
2)系统中各处理器核心的负载均衡或尽量均衡。
本发明实施例中以混合了ARM和DSP两种ISA的异构处理器系统为例,有向图G(V,E)到有向图T(P,L)的映射,可通过以下启发式算法来实现,步骤如图4所示。
本发明实施例中,将处理器核心v上映射的分区集合记为MAP(v);将处理器核心v上映射的所有分区的CPU利用率之和记为uused(v,MAP(v));基于某种实时调度算法,在满足处理器核心v上映射的分区集合MAP(v)实时可调度性的条件下,将uused(v,MAP(v))可以达到的上限值记为ubound(v,MAP(v));基于某种实时调度算法,在满足处理器核心v上映射的分区集合MAP(v)实时可调度性的条件下,处理器核心v的空闲率记为ufree(v,MAP(v)),且ufree(v,MAP(v))=ubound(v,MAP(v))-uused(v,MAP(v));将分区p需要映射的处理器核心数记为n(p);将分区pi和pj映射到处理器核心之后的通信延迟记为Delay(pi,pj);将分区pi和pj之间的通信频率记为Freq(pi,pj);将分区p支持的指令集架构记为ISA(p);将所有分区构成的集合记为P;将所有处理器核心构成的集合记为V;将处理器核心集合V中所有ARM架构的处理器核心集合记为VARM;将处理器核心集合V中所有DSP架构的处理器核心集合记为VDSP
步骤1.1:构建数据队列Q并初始化,Q用于暂存分区映射过程中的处理器核心及分区信息。
步骤1.2:建立分区集合P,将系统中所有分区加入集合P中。将系统中处理器核心按照所支持的ISA的类型分类,并建立相应的处理器核心集合,然后所有处理器核心加入对应的集合。
本发明实施例中,构建处理器核心集合VARM和处理器核心集合VDSP,将系统中所有ARM处理器核心加入集合VARM,将系统中所有DSP处理器核心加入集合VDSP
步骤1.3:基于某种实时调度算法,将系统中每个处理器核心v的空闲率ufree(v,MAP(v)),预先设置为满足分区任务实时性要求之后该处理器核心可以达到的利用率上限值ubound(v,MAP(v))。
步骤1.4:判断集合P是否为空,如果为空,结束本分区映射方法,否则执行步骤1.5。
步骤1.5:首先从集合P中选择需要映射的处理器核心数最大的分区pm,分区pm需要映射的处理器核心数为n(pm)。
步骤1.6:设分区pm的ISA为ISA(pm),系统中指令集架构为ISA(pm)的处理器核心集合为
Figure BDA00002974140000081
判断与分区pm的ISA相匹配的处理器集合
Figure BDA00002974140000082
中的处理器核心数是否小于n(pm),若是,则结束本分区映射方法,否则,继续执行步骤1.7。
本发明实施例中,只有两种ISA:ARM与DSP,如果分区pm对应ISA的处理器核心集合VARM或者VDSP中处理器核心数小于n(pm),则结束本分区映射方法,否则继续执行步骤1.7。
下面步骤1.7~步骤1.11为分区pm尝试多种处理器核心映射方案并将相关结果保存到Q。
步骤1.7:判断与分区pm的ISA相匹配的处理器集合
Figure BDA00002974140000091
中的处理器核心数是否小于n(pm),若是,执行步骤1.12,否则,继续执行步骤1.8。
步骤1.8:按照空闲率ufree(v,MAP(v))由大到小的顺序从集合中选择n(pm)个处理器核心作为分区pm的映射目标,并将所选择的n(pm)个处理器核心构成集合Vnp
本发明实施例中,如果分区pm对应的ISA为ARM,按着空闲率ufree(v,MAP(v))由大到小的顺序从集合VARM中选择n(pm)个处理器核心作为分区pm的映射目标;如果分区pm对应的ISA为DSP,按着空闲率ufree(v,MAP(v))由大到小的顺序从集合VDSP中选择n(pm)个处理器核心作为分区pm的映射目标。将这n(pm)个处理器核心构成集合Vnp
步骤1.9:将分区pm映射到处理器集合Vnp之后,统计集合Vnp中空闲率大于等于0的处理器核心的数量I。
设定计数值I,I的初始值为0,将分区pm映射到处理器集合Vnp之前,集合Vnp中处理器核心vi上映射的分区集合为MAP(vi),MAP(vi)∪pm表示将分区pm映射到处理器集合Vnp之后处理器核心vi上的分区集合,依次对集合Vnp中的处理器核心进行如下处理:计算集合Vnp中处理器核心vi的空闲率ufree(vi,MAP(vi)∪p),i=1,2,…,n(pm),并检查该空闲率的值是否大于等于0,如果是则计数值I加1,否则计数值I不变。如此循环,直至集合Vnp中的处理器核心处理完毕。
步骤1.10:判断I的值是否等于n(pm),如果是,执行步骤1.11,否则执行步骤1.12。
步骤1.11:首先,计算分区pm与之前已经映射到处理器核心的其他分区pk(pk∈{MAP(vi)|vi∈V},pk≠pm)之间的通信延迟加权和D:D=∑Freq(pm,pk)*Delay(pm,pk);其中,Delay(pm,pk)为分区pm与分区pk映射到处理器核心之后的通信延迟,Freq(pm,pk)为分区pm与分区pk之间的通信频率。
然后,将Vnp中具有最大空闲率的处理器核心标记为vmax-free,将处理器核心vmax-free从集合
Figure BDA00002974140000093
中删除。本发明实施例中将vmax-free从集合VARM或者集合VDSP中移除。
将由处理器核心vmax-free,处理器核心集合Vnp以及通信延迟加权和D构成的数据结构单元存入队列Q中,然后执行步骤1.7。
下面步骤1.12~步骤1.14是从多种映射方案中选择具有最佳延迟表现的方案。
步骤1.12:设定分区pm所映射的处理器核心集合为Vmap,并初始化为空,设定延迟值Dmin为无穷大。
步骤1.13:判断队列Q是否为空,若是,执行步骤1.15,否则执行步骤1.14。
步骤1.14:从队列Q中取出一个数据结构单元,并将该单元内各元素的值分别赋予变量vmax-free、Vnp以及D,将处理器核心vmax-free重新加入对应的集合VARM或者VDSP,如果D<=Dmin,将D值赋予Dmin,集合Vnp值赋予集合Vmap,然后执行步骤1.13,否则直接执行步骤1.13。
步骤1.15:判断Vmap是否为空,若是,结束本分区映射方法,否则,执行步骤1.16。
步骤1.16:将分区pm映射到集合Vmap中的处理器核心上,更新Vmap中所有处理器核心vi的空闲率ufree(vi,MAP(vi))。将分区pm从集合P中删除,然后执行步骤1.4。
对图2和图3所示的实施例,假设该系统中的所有分区采用的是RMS实时调度算法,系统中所有处理器核心的空闲率预置为处理器利用率的上限ln2≈69%。依据步骤1所述的分区映射方法,从分区集合P={p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12}中选择处理器核心数最多的分区p1,其需要的处理器核心数量为2,ISA为ARM,系统中ARM处理器核心的数量为6,因此具备满足分区p1对处理器核数的需求。从系统中选择2个具有最大空闲率的ARM处理器核心vA1,vA2,构成集合V2。将p1映射到处理器核心vA1,vA2之后,vA1,vA2的CPU空闲率为(69%-31%)=38%,(69%-35%)=34%。对于集合V2中的每一个处理器核心,将p1映射之后其CPU空闲率均大于0,因此该映射能满足分区p1的调度要求。接下来,测试分区p1与系统中已经映射的其他分区之间的通信延迟加权和D,由于在p1映射之前尚无分区映射,因此D=0。然后,将处理器核心vA1,集合V2以及延迟值D构成的队列元素(vA1,{vA1,vA2},0)存入队列Q,然后将vA1从处理器核心集合VARM中删除。接下来,系统会继续尝试将p1映射到其它的处理器核心。从处理器核心集合VARM中选择2个最具高空闲率的ARM处理器核心vA2,vA3构成集合V2,并重复上述分区的可调度性测试、分区通信延迟计算过程,并将相关结果存入队列Q,至此,队列Q中便暂存了分区p1的两种映射方案。如此往复,系统接下来会依次尝试将分区映射到处理器集合{vA3,vA4}、{vA4,vA5}、{vA5,vA6}等多种方案并将相关结果暂存入队列Q,待所有映射方案尝试完毕之后,系统开始选择通信延迟加权和最小的映射方案。在选择保存在队列Q中的映射方案之前,将分区p1映射的处理器集合Vmap预置为空,分区p1映射之后与系统中已经映射的其他分区的通信延迟值加权和Dmin设为无穷大。接下来,本方法从Q中取出最后的队列元素,其值(vmax-free,Vnp,D)=(vA5,{vA5,vA6},0),将处理器核心vmax-free(vA5)重新加入对应的集合VARM,这里D=0,小于Dmin,因此将D值赋予Dmin,集合{vA5,vA6}赋予Vmap。然后再次从队列Q中取出最后的队列元素(vA4,{vA4,vA5},0),继续按着上述方法实施赋值,如此往复,直至Q为空。对于本实例中的p1来说,每种方案的D值均为0,系统最终一一比较队列Q中的所有映射方案的通信延迟值加权和之后选择最初的映射方案{vA1,vA2},更新vA1,vA2的CPU空闲率为38%,34%,分区p1从分区集合P中移除。
完成分区p1的映射之后,系统按着以上描述的相同流程完成其他分区的映射。从P中选择分区p2进行映射,基于负载均衡的考虑,按着处理器空闲率从大到小的顺序,系统会首先选择vA3,vA4作为要映射的处理器核心,并将该映射方案的相关结果存入队列Q,然后再尝试映射方案{vA4,vA5}、{vA5,vA6}、{vA6,vA1}、{vA1,vA2}并将结果存储队列Q。在方案选择过程中,由于分区p2与已经映射的分区p1之间存在通信关系,将分区p2映射到vA1,vA2之后分区p1,p2通信延迟加权和D=0,是所有方案中的最小值,因此分区p2最终也会被映射到处理器核心vA1,vA2,更新vA1,vA2的CPU空闲率为:38%-33%=5%,34%-31%=3%。
接下来,分区集合更新为{p3,p4,p5,p6,p7,p8,p9,p10,p11,p12},所有尚未映射的分区的处理器核心需求数均为1。p3为下一个要映射的分区,其ISA为ARM,系统从处理器集合VARM中选择具有最大空闲率的处理器核心vA3,将p3映射到vA3之后vA3的空闲率为69%-13%=56%,基于p3与p2之间的通信频率(Freq:2)以及处理器核心vA1、vA3之间的延迟参数(Delay:1),p2与p3之间通信延迟加权和D=Freq(p2,p3)*Delay(p2,p3)=2*1=2。然后,系统将该方案及相关结果存入队列Q,并继续尝试将p3映射到处理器核心vA4、vA5、vA6、vA1、vA2,但是由于vA1的空闲率过低而不满足实时可调度性的充要条件,系统终止对具有更低空闲率的处理器核心vA2的尝试。最后,系统从vA3、vA4、vA5、vA6四个处理器核心中选择最优映射方案,p2与p3之间通信延迟加权和D=Freq(p2,p3)*Delay(p1,p2)依次为:2*1=2、2*1=2、2*2=4、2*2=4。根据通信延迟加权和最小化的原则,系统最终选择第一个映射方案vA3作为分区p3的映射处理器核心,并将vA3的空闲率更新为69%-13%=56%,p3从集合P中删除。之后,分区p4会被依次映射到vA4、vA5、vA6,而处理器核心vA3、vA1、vA2的空闲率显然不满足可调度性的充要条件。由于p4与已经映射的分区p1、p2、p3不具备通信关系,因此p4在处理器核心vA4、vA5、vA6上的通信延迟加权和均为0,系统最终选择将p4映射到vA4,vA4的空闲率更新为69%-61%=8%,p4从集合P中删除。
分区p5依次映射到满足可调度性充要条件的处理器核心vA5、vA6、vA3之后,与此前已经映射的分区p1、p3之间通信延迟加权和D=Freq(p5,p1)*Delay(p5,p1)+Freq(p5,p3)*Delay(p5,p3)依次为:3*2+6*1=12,3*2+6*2=18,3*1+6*0=3。方案{vA3}具有最低D值,因此,p5最终被映射到处理器核心vA3,vA3的空闲率更新为56%-53%=3%,p5从集合P中删除。
在接下来的映射过程中,分区p6被映射到处理器核心vA5,p7被映射到处理器核心vA6,p8被映射到处理器核心vA5,p9被映射到处理器核心vA6,具体方法如前所述。处理器核心vA5的空闲率为69%-33%-25%=11%,vA6的空闲率为69%-47%-13%=9%。至此,系统中所有ISA为ARM的分区映射完毕。p10、p11、p12为DSP分区,基于同样的负载均衡和通信延迟加权和最小原则,p10、p12被映射到vD2,p11被映射到vD1。vD1的空闲率为69%-61%=8%,vD2的空闲率为69%-31%-33%=5%,分区映射完毕,映射结果如图5所示。
分区映射过程发生在系统综合阶段,在分区系统启动之前,系统需要创建配置文件,将分区映射结果以及分区之间的通信属性参数传递给MOS kernel。由于实施例系统采用的为ARM、DSP混合的异构处理器,因此需要两份MOS kernel镜像用于支持不同ISA的处理器。
步骤2:依次在每个处理器核心上启动并运行与自身ISA相匹配的MOS kernel,根据处理器核心上映射的分区的通信需求,为每个分区建立并初始化通信信道及管理数据结构,分区之间基于消息传递方式实现通信。
在消息传递模型下,系统服务模块以应用程序方式运行在固定的处理器核心上,当系统中各处理器核心的分区应用程序需要请求服务模块的服务时,先将服务请求以消息方式打包并写入所在分区与服务模块之间的通信信道。完成消息的打包与信道写入之后,分区应用程序有两种选择:1)原地阻塞,待服务模块同样以消息方式回传相应的处理结果之后继续当前执行过程;2)注册一个回调函数,当前应用程序执行过程结束,系统转而执行其他应用程序。当分区收到服务模块回传的消息之后,调度先前注册的回调函数,执行相应程序过程。为了满足分区系统中实时应用的时限要求,消息数据中包含优先级信息用于支持分区对其内部应用的实时调度。
具有通信关系的分区两两之间具有专用双向通信信道,分区间的通信信道被划分为多个具有不同优先级的子信道,在每个子信道上,各消息的优先级相同。在消息接收端,当来自某个分区的多个通信子信道同时具有待处理的消息时,分区会持续选择处理当前优先级最高的消息,并触发相应的程序运行,如此往复,直至该通信信道没有待处理消息为止。对于与N个不同分区间有通信关系的分区来说,会存在N个通信信道,当N个通信信道中有M(M<=N)个信道同时具有待处理消息时,需要优先选择最合适的消息处理。另外,由于分区间通信信道是相互独立的,每个通信信道内部的子信道优先级只在所连接的两个分区间有效,与其他通信信道内部子信道不具备直接可比性,分区无法选择出合适的消息进行处理。鉴于此,本发明方法根据分区的重要程度为对应的分区间的通信信道设置优先级,或者采用时间片轮转机制,来决定处理每个通信信道内部消息的处理顺序与时间。对于优先级机制,由于每个通信信道内部有多个具有不同优先级的子信道,当消息接收分区面临多个通信信道内部有消息待处理时,会首选当前优先级最高的通信信道,然后在该信道内部再选择优先级最高的子信道进行消息处理,这就形成了两级优先级消息处理机制。对于时间片轮转机制,每个通信信道内部的子信道仍然按着优先级方式进行处理,而当每个通信信道的处理时间用完之后,消息接收分区便会转而处理下一个通信信道。
步骤2中处理器核心上的操作系统(multi-kernel MOS)的启动流程,如图6所示,包括步骤2.1~步骤2.10。
步骤2.1:系统引导程序bootloader启动主处理器核心,完成基本的软硬件初始化和MOSkernel的运行环境配置。以下将主处理器核心简称主核,其他处理器核心简称为从核。
步骤2.2:为主核加载与其ISA相匹配的MOS kernel,申请并初始化包括内核堆栈和数据区的内存区域。
步骤2.3:为主核上的分区创建通信信道及附属的管理数据结构,并进行相应的初始化。
步骤2.4:启动主核MOS kernel,并传递分区的通信信道及附属的管理数据结构信息。
步骤2.5:主核MOS kenrel获得主核硬件的控制权。
步骤2.6:主核MOS kernel查询系统中是否还有未启动的从核,如果有,执行步骤2.7,否则结束对从核的启动过程,并开始启动所在核心上各分区POS及任务。
步骤2.7:根据从核ISA,加载从核的MOS kernel,申请并初始化包括内核堆栈和数据区等的内存区域。
步骤2.8:为从核上的分区创建通信信道及附属的管理数据结构,并进行相应的初始化。
步骤2.9:启动从核MOS kernel,并传递当前从核上的分区的通信信道及附属的管理数据结构信息,执行步骤2.6。
结合图5的实施例说明,分区系统启动时,bootloader先引导ID号为0的主核vA1,完成硬件初始化及主核MOS kernel的运行环境配置。然后,将支持ARM指令集的MOS kernel装载到vA1的地址空间,处理器将控制权交给该MOS kernel。主核MOS kernel进一步完成本地软硬件环境初始化之后,启动从核{vA2,vA3,vA4,vA5,vA6,vD1,vD2},并在各处理器核心上运行独立的MOS kernel。主核MOS kernel中的启动代码会根据所启动的从核的ISA将相应的MOS kernel镜像加载到该从核对应的内存空间,并为其分配一定量的数据空间(如数据区、堆栈等)。然后初始化从核MOS kernel的数据区,将从核MOS kernel的起始地址写入从核的程序计数器(PC:Program Counter),堆栈栈顶地址写入从核的堆栈计数器(SP:Stack Pointer),之后从核便开始自主运行,主核上的引导程序会继续加载其他从核的MOS kernel并启动其运行,如此往复,直至系统中的7个从核全部启动完毕。在启动每个处理器核(包括主核)上MOSKernel的过程中,启动程序(bootloader或主核MOS kernel)还根据配置文件为处理器核心上具有通信需求的分区分配内存,建立相应的通信信道及附属的管理数据结构,管理数据结构包括:信道所属的源分区、目的分区,信道优先级,各子信道地址、容量、优先级、数量和读写指针等,然后在处理器核心开始运行MOS kernel之前将相关参数传递给MOS kernel。一般情况下,通信信道同时属于两个分区,每当启动一个MOS kernel之前,引导程序会检测该MOS kernel所属处理器核心上所有具有通信需求的分区并建立相应的通信信道,无论该分区是通信信道的源分区还是目的分区。在之后的处理器核心启动过程中,当启动程序检测到已经建立的通信信道所属的另一个分区时,不再为相应的通信信道分配内存和管理数据结构,可直接将之前配置好的内存及附属的管理数据结构传递给另一个分区所映射的处理器上的MOS kernel。如果具有通信关系的两个不同分区运行于同一MOS kernel,其通信信道及附属的管理数据结构信息只需一次性传递给该MOS kernel即可。
图5所示的分区系统中,vA1上的MOS kernel被bootloader启动时,同时得到分区p1、p2的代码镜像以及相应通信信道及附属的管理数据结构。vA1上的MOS kernel开始运行并完成对其他处理器核心的启动之后,依次启动分区p1、p2,并将事先被bootloader创建的通信信道的管理数据结构交由分区POS管理,这些通信信道依次为:分区p1、p2的通信信道(p1<=>p-2),分区p2、p3的通信信道(p2<=>p3),分区p1、p5的通信信道(p1<=>p5)。主处理器核心vA1上的MOS kernel在启动处理器核心vA2时,只需将ARM架构的MOS kernel代码加载到vA2的内存空间,分区p1、p2的代码以及通信通道的数据结构此前已经被加载到内存。主处理器核心vA1上的MOS kernel在启动处理器核心vA3时,将ARM架构的MOS kernel、分区p3、p5的代码依次加载到vA3的内存空间,并为分区对(p3,p5)、(p5,p6)分别申请通信信道并建立管理数据结构,并传递给vA3的MOS kernel,同时,对于分区对(p1,p5)、(p2,p3)之间的通信信道,由于此前处理器核心vA1上的MOS kernel启动时已经得到了相应的信道管理数据结构,vA3启动时无需再次创建,vA1上的MOS kernel直接将通信信道的管理数据结构传递给vA3的MOS kernel。vA3的MOS kernel自主运行之后便开始引导分区p3、p5的代码,将分区之间的通信信道的管理数据结构传递给对应分区的POS进行管理。vA1上的MOS kernel在启动vA4时,同样创建并传递如下通信信道的管理数据结构给vA4上的MOS kernel:(p4<=>p6),(p4<=>p-7),(p4<=>p9),待启动p6、p7、p9所在处理器核心时无需再次创建相应的管理数据结构,直接使用即可。按着如上所述流程,系统中的所有处理器核心及处理器核心上映射的分区都按要求启动,并完成分区之间的通信信道的“连接”,具体过程这里不再赘述。信道的具体管理由分区内部的POS和任务根据应用需求实施。
步骤3:每个处理器核心上的MOS kernel启动之后,再依次启动被映射到本处理器核心的各个分区内部的操作系统(POS)及任务,分区正式开始执行。
分布内部的POS启动过程与传统共享存储架构方式的操作系统启动过程相同或类似。对于如图5所示的分区映射方案来说,由于分区p1、p2均被映射到2个处理器核心,因此其POS启动过程与多核心操作系统的启动过程类似,POS在核心VA1、VA2上的用户级地址空间共享存储,兼容共享存储式编程模式。其他处理器核心的POS只运行在固定的单核心上,所以其启动过程较为简单,与传统单核处理器上的操作系统启动过程相同或类似。每个处理器核心上的POS均采用与之相匹配的指令集,如VA1~VA6上的POS采用ARM指令集,而VD1、VD2上的POS则采用DSP指令集。同样,对于每个POS上运行的具体任务也是如此,这使得每个分区可以根据需要选择最合适的处理器核心,满足不同分区应用的差异化需求以及系统性能的最优化目标。通信信道中的子信道由POS具体负责实施管理,根据任务的重要程度,为分区内每个任务分配优先级与之相匹配的子信道,实现与其他处理器核心或本处理器核心上的分区之间的实时通信。将分区之间的通信过程暴露并交由POS管理,结合实时调度机制,与分区中的实时任务进行统筹优化,一定程度上降低了系统实时性能建模的难度,系统中更多的时序信息得以暴露,从而更有利于控制和提升系统的实时性能。

Claims (5)

1.一种基于multi-kernel MOS(Module Operating System)的分区系统构建方法,针对多核、众核异构系统,其特征在于,通过如下步骤进行分区系统构建:
步骤1:为系统中的处理器核心和分区建立拓扑结构图,然后基于负载均衡及通信延迟最小化的原则,将系统中各分区映射到合适的处理器核心上;负载均衡是指系统中各处理器核心负载均衡,通信延迟最小化是指系统中各分区间通信延迟加权和最小化;
映射的约束条件为:
1)每个分区被映射到指令集架构(ISA:Instruction Set Architecture)匹配的处理器核心;
2)每个分区需要的处理器核心数与映射的处理器核心数相符;
3)每个处理器核心上的分区集合满足实时可调度性要求;
步骤2:依次在每个处理器核心上启动并运行与自身ISA相匹配的操作系统内核(MOSkernel),处理器核心之间不共享内核代码与数据结构;根据分区的通信需求,为映射到各处理器核心的分区建立并初始化通信信道及附属的管理数据结构,分区之间基于消息传递方式实现通信;通信信道附属的管理数据结构包括:信道所属的源分区、目的分区;信道优先级;以及各子信道地址、容量、优先级、数量和读写指针;
步骤2中所述的分区之间基于消息传递方式实现通信,具体是:
(1)具有通信关系的分区两两之间具有通信信道,分区间的通信信道被划分为一个以上具有不同优先级的子信道,在每个子信道上,各消息的优先级相同;分区间通信信道内部的子信道优先级只在所连接的两个分区间有效;当一个分区与两个以上的分区之间具有通信信道时,根据分区的重要程度为每个通信信道设置优先级,或者采用时间片轮转机制,实现对每个通信信道内部消息的处理顺序与处理时间的决策;
(2)系统服务模块以应用程序方式运行在固定的处理器核心上,系统中处理器核心的分区应用程序需要请求服务模块的服务时,分区应用程序先将服务请求以消息方式打包并写入所在分区与服务模块之间的通信信道,然后分区应用程序有两种选择:1)原地阻塞,待服务模块同样以消息方式回传相应的处理结果之后继续当前执行过程;2)注册一个回调函数,当前应用程序执行过程结束,当分区收到服务模块回传的消息之后,调度先前注册的回调函数,执行相应过程;消息数据中包含优先级信息;
步骤3:每个处理器核心上的MOS Kernel启动之后,依次启动被映射到各处理器核心上的各个分区内部的操作系统(POS:Partition Operating System)及任务,分区开始执行。
2.根据权利要求1所述的分区系统构建方法,其特征在于,步骤1中所述的为系统中的处理器核心和分区建立拓扑结构图,具体是:
(1)处理器核心的拓扑结构图用图G(V,E)描述,V表示节点集合,V中节点vi表示第i个处理器核心,节点上附属有该处理器核心的ISA信息和性能参数,E表示边的集合,E中的边(vi,vj)表示处理器核心vi与处理器核心vj之间的物理互联线路,边上标记两个处理器核心之间的通信延迟;i,j为正整数;
(2)分区的拓扑结构图用图T(P,L)描述,P表示节点集合,P中节点pi表示第i个分区,节点上附属有该分区的ISA信息和需要的处理器核心数,L为边的集合,L中的边(pi,pj)表示分区pi与分区pj之间的通信信道,每条边上标记两个分区之间的通信频率。
3.根据权利要求2所述的分区系统构建方法,其特征在于,所述的通信延迟,根据处理器核心的通信性能模型得出,在同一处理器核心上的分区间通信延迟最小,同构相邻处理器核心之间通信延迟比同一处理器核心上的通信延迟大,但小于异构相邻处理器核心之间的通信延迟,不相邻的处理器核心之间的通信延迟为数据传输所经过路径的通信延迟之和。
4.根据权利要求1或2或3所述的分区系统构建方法,其特征在于,所述的步骤1,采用启发式算法实现分区的映射,具体步骤是:
步骤1.1:构建数据队列Q并初始化;
步骤1.2:建立分区集合P,将系统中所有分区加入集合P中,将系统中处理器核心按照所支持的ISA的类型分类,并建立相应的处理器核心集合,然后所有处理器核心加入对应的集合;
步骤1.3:基于实时调度算法,将系统中每个处理器核心v的空闲率,设置为满足分区任务实时性要求之后该处理器核心的利用率上限值;
步骤1.4:判断集合P是否为空,若是,结束本分区映射方法,否则,继续执行步骤1.5;
步骤1.5:首先从集合P中选择需要映射的处理器核心数最大的分区pm,设分区pm需要映射的处理器核心数为n(pm);
步骤1.6:设分区pm的ISA为ISA(pm),系统中指令集架构为ISA(pm)的处理器核心集合为判断与分区pm的ISA相匹配的处理器集合
Figure FDA0000397464330000022
中的处理器核心数是否小于n(pm),若是,结束本分区映射方法,否则,继续执行步骤1.7;
步骤1.7:判断与分区pm的ISA相匹配的处理器核心集合
Figure FDA0000397464330000023
中处理器核心数是否小于n(pm),若是,执行步骤1.12,否则,继续执行步骤1.8;
步骤1.8:按照空闲率由大到小的顺序从集合
Figure FDA0000397464330000024
中选择n(pm)个处理器核心作为分区pm的映射目标,并将所选择的n(pm)个处理器核心构成集合Vnp
步骤1.9:将分区pm映射到处理器集合Vnp之后,统计集合Vnp中空闲率大于等于0的处理器核心的数量I;
步骤1.10:判断I是否等于n(pm),如果是,执行步骤1.11,否则执行步骤1.12;
步骤1.11:计算分区pm与已经映射到处理器核心的分区pk(pk∈{MAP(vi)|vi∈V},pk≠pm)之间的通信延迟加权和D:D=∑Freq(pm,pk)*Delay(pm,pk);其中,V表示系统中所有处理器核心的集合,MAP(vi)表示映射到处理器核心vi的分区集合;Freq(pm,pk)表示分区pm与分区pk之间的通信频率,Delay(pm,pk)表示分区pm与分区pk映射到处理器核心之后的通信延迟;再将集合Vnp中具有最大空闲率的处理器核心vmax-free从集合
Figure FDA0000397464330000031
中删除,将由处理器核心vmax-free、集合Vnp以及通信延迟加权和D构成的数据结构单元存入队列Q中,然后转步骤1.7执行;
步骤1.12:设Vmap表示分区pm所映射的处理器核心的集合,并初始化为空,设延迟值Dmin为无穷大;
步骤1.13:判断队列Q是否为空,若是,执行步骤1.15,否则执行步骤1.14;
步骤1.14:从队列Q中取出一个数据结构单元,并将该数据结构单元内各元素的值分别赋予变量vmax-free、Vnp以及D,将处理器核心vmax-free重新加入集合中;如果D<=Dmin,将D赋值给Dmin,将集合Vnp赋予集合Vmap,然后执行步骤1.13,否则,直接执行步骤1.13;
步骤1.15:判断集合Vmap是否为空,若是,结束本分区映射方法,否则,执行步骤1.16;
步骤1.16:将分区pm映射到集合Vmap中的处理器核心上,更新集合Vmap中所有处理器核心的空闲率,将分区pm从集合P中删除,然后执行步骤1.4。
5.根据权利要求1所述的分区系统构建方法,其特征在于,所述的步骤2具体包括如下子步骤:
步骤2.1:系统引导程序启动主核,完成软硬件初始化和MOS kernel的运行环境配置;
步骤2.2:为主核加载与其ISA相匹配的MOS kernel,申请并初始化包括内核堆栈和数据区的内存区域;
步骤2.3:为主核上的分区创建通信信道及附属的管理数据结构,并进行相应的初始化;
步骤2.4:启动主核MOS kernel,并传递分区的通信信道及附属的管理数据结构;
步骤2.5:主核MOS kernel获得主核硬件的控制权;
步骤2.6:主核MOS kernel查询系统中是否还有未启动的从核,如果有,执行步骤2.7,否则结束对从核的启动过程,并开始启动所在核心上各分区POS及任务;
步骤2.7:根据从核ISA,加载从核的MOS kernel,申请并初始化包括内核堆栈和数据区的内存区域;
步骤2.8:为从核上的分区创建通信信道及附属的管理数据结构,并进行相应的初始化;
步骤2.9:启动从核MOS kernel,并传递当前从核上的分区的通信信道及附属的管理数据结构,执行步骤2.6。
CN201310102233.8A 2013-03-27 2013-03-27 基于multi-kernel MOS 的分区系统构建方法 Expired - Fee Related CN103207782B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310102233.8A CN103207782B (zh) 2013-03-27 2013-03-27 基于multi-kernel MOS 的分区系统构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310102233.8A CN103207782B (zh) 2013-03-27 2013-03-27 基于multi-kernel MOS 的分区系统构建方法

Publications (2)

Publication Number Publication Date
CN103207782A CN103207782A (zh) 2013-07-17
CN103207782B true CN103207782B (zh) 2014-02-26

Family

ID=48755014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310102233.8A Expired - Fee Related CN103207782B (zh) 2013-03-27 2013-03-27 基于multi-kernel MOS 的分区系统构建方法

Country Status (1)

Country Link
CN (1) CN103207782B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104484286B (zh) * 2014-12-16 2017-10-31 中国人民解放军国防科学技术大学 片上Cache网络中基于位置感知的数据预取方法
CN105045666B (zh) * 2015-07-09 2018-06-01 西北工业大学 Windows操作系统环境下的分区调度方法
FR3043808B1 (fr) * 2015-11-12 2017-12-08 Peugeot Citroen Automobiles Sa Procede de controle commande de taches fonctionnelles par un microprocesseur multicoeurs
CN106874072B (zh) * 2015-12-14 2020-12-29 中国航空工业第六一八研究所 一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断的处理方法
CN106776272B (zh) * 2016-11-11 2019-11-05 西北工业大学 嵌入式系统实时性能测试方法
CN110471647B (zh) * 2019-08-13 2023-10-03 上海航天计算机技术研究所 基于微内核架构的嵌入式分区操作系统及其设计方法
CN111381894B (zh) * 2020-02-21 2023-06-13 杨百涛 一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法
CN111475202A (zh) * 2020-03-31 2020-07-31 北京经纬恒润科技有限公司 基于异构多处理系统的核间通信方法及系统
CN111506433A (zh) * 2020-04-30 2020-08-07 中科院计算所西部高等技术研究院 具有ooda多分区可替换机制的处理器
CN114625424B (zh) * 2020-12-09 2023-09-29 博泰车联网科技(上海)股份有限公司 基于硬隔离的资源重分配方法、系统和设备
CN114625427B (zh) * 2020-12-09 2023-09-29 博泰车联网科技(上海)股份有限公司 基于硬隔离的分区启动方法、系统和设备
CN114625426B (zh) * 2020-12-09 2023-09-29 博泰车联网科技(上海)股份有限公司 一种硬隔离实现系统
CN113312299B (zh) * 2021-04-12 2023-03-28 北京航空航天大学 一种多核异构域控制器核间安全通信系统
CN113434087B (zh) * 2021-06-28 2022-09-23 山东航天电子技术研究所 基于共享空间的多核启动方法
CN116627520B (zh) * 2023-07-26 2023-09-29 苏州浪潮智能科技有限公司 基板管理控制器的系统运行方法以及基板管理控制器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100524286C (zh) * 2007-10-29 2009-08-05 中国科学院计算技术研究所 一种多核处理系统及其管理方法
US8316368B2 (en) * 2009-02-05 2012-11-20 Honeywell International Inc. Safe partition scheduling on multi-core processors

Also Published As

Publication number Publication date
CN103207782A (zh) 2013-07-17

Similar Documents

Publication Publication Date Title
CN103207782B (zh) 基于multi-kernel MOS 的分区系统构建方法
Durand et al. Euroserver: Energy efficient node for european micro-servers
CN102855216B (zh) 改进多处理器计算机系统的性能
CN103793255B (zh) 可配置的多主模式多os内核实时操作系统架构的启动方法
CN103870314A (zh) 一种单节点同时运行不同类型虚拟机的方法及系统
Han et al. Synchronization-aware energy management for VFI-based multicore real-time systems
CN103229146A (zh) 用于处理计算任务的计算机集群布置及其操作方法
CN1323362C (zh) 网络设备及其外围器件互连资源的分配方法
CN102831011A (zh) 一种基于众核系统的任务调度方法及装置
CN103617087A (zh) 一种适合迭代计算的MapReduce优化方法
Attiya et al. Two phase algorithm for load balancing in heterogeneous distributed systems
CN102609295A (zh) 虚拟机作业动态调度系统
CN106598731A (zh) 基于异构多核架构的运行时系统及其控制方法
TW201732620A (zh) 扁平化入口橋接器
Sun et al. A ugni-based asynchronous message-driven runtime system for cray supercomputers with gemini interconnect
CN103414767A (zh) 将应用软件部署在云计算平台上的方法和装置
CN102708003A (zh) 一种云平台下的资源分配方法
Benoit et al. Performance and energy optimization of concurrent pipelined applications
Muhammad et al. TOP-Storm: A topology-based resource-aware scheduler for Stream Processing Engine
Elnashar Parallel performance of MPI sorting algorithms on dual-core processor windows-based systems
Simhadri Program-centric cost models for locality and parallelism
Chen et al. PIMCloud: QoS-Aware Resource Management of Latency-Critical Applications in Clouds with Processing-in-Memory
AkashKumar Heuristic for accelerating run-time task mapping in NoC-based heterogeneous MPSoCs
CN100336019C (zh) 基于服务体/执行流结构的操作系统
US11392415B2 (en) Electronic devices and methods for 5G and B5G multi-core load balancing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140226

Termination date: 20170327