一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于机载多核处理平台虚拟化性能监控方法和系统与流程

2022-08-17 09:33:49 来源:中国专利 TAG:


1.本发明属于航空电子系统中的机载计算机领域,特别涉及一种基于机载多核处理平台虚拟化性能监控方法和系统。


背景技术:

2.近年来,随着我国航空电子机载设备的高速发展,在军机民机机载航电领域核心设备中已经开始大量应用嵌入式多核处理器,较为典型的如powerpc架构下t1040系列、t2080系列,arm架构下的imx、ls1026、xilinx mpsoc、国产飞腾(双核、四核、八核)处理器、海思处理器以及mips架构的龙芯等等。根据当前处理器的发展趋势,诸如xilinx zynq ultrascale mpsoc这种可应用于航电领域的嵌入式soc以及越来越多,甚至内部集成的处理器核心将会以2位数计也会加速应用,处理器的集成度和复杂度在急剧上升。
3.随之而来的是其上运行的航电软件设计的难度在显著提升。当前已工程化应用的航电核心硬件设备已经成为高度通用化的资源平台,通过利用多核处理器的高集成度实现承载几十个甚至上百个不同功能和安全等级的应用,同时还必须保证这些应用互相隔离不受影响,能安全、可靠和实时的共享外部资源。在航电领域越来越强调敏捷开发的形势下,多核处理器的应用不仅对面向应用的航电系统设计提出了更高的要求,也对处理器底层软件、操作系统乃至应用软件的设计和实现带来了前所未有的挑战。


技术实现要素:

4.发明目的:提供一种基于机载多核处理平台虚拟化性能监控方法,用以解决航电系统在应用高集成度和高安全共存的情况下对软件运行状态的监控问题,为机载通用计算平台提供了处理器平台的性能监控机制。
5.技术方案:
6.提供了一种基于机载多核处理平台虚拟化性能监控方法,基于armv8架构处理器执行,包括:
7.配置pmu的事件计数器和周期计数器并使能计数;
8.读取pmu的事件计数器和周期计数器的值来获取性能数据并根据性能数据得到监控结果;
9.监控完成后,清除pmu计数器配置,清除计数使能。
10.进一步地,配置pmu的事件计数器并使能计数,具体包括:
11.使能el0访问所有pmu寄存器的权限;
12.配置eln的计数过滤以记录特定级别下的事件发生次数;
13.通过传参配置各个事件计数器计数的事件号;
14.使能计数溢出中断;
15.计数清零并使能计数。
16.进一步地,配置pmu的周期计数器并使能计数,具体包括:
17.使能el0访问所有pmu寄存器的权限;
18.配置eln计数过滤以记录应用程序在特定级别下的运行时间;
19.计数清零并使能计数。
20.进一步地,配置pmu的事件计数器,还包括:
21.增加自定义触发事件的计数,在自定义的事件触发时,对用户触发事件计数实现自定义触发事件的监控。
22.还提供了一种基于机载多核处理平台虚拟化性能监控系统,所述系统基于armv8架构处理器,包括:
23.性能监控单元配置模块,用于配置pmu的事件计数器和周期计数器并使能计数;
24.性能监控单元读取模块,用于读取pmu的事件计数器和周期计数器的值来获取性能数据并根据性能数据得到监控结果;
25.性能监控单元停止计数模块,用于在监控完成后,清除pmu计数器配置,清除计数使能。
26.进一步地,性能监控单元配置模块,具体用于:
27.使能el0访问所有pmu寄存器的权限;
28.配置eln的计数过滤以记录特定级别下的事件发生次数;
29.通过传参配置各个事件计数器计数的事件号;
30.使能计数溢出中断;
31.计数清零并使能计数。
32.进一步地,性能监控单元配置模块,具体用于:
33.使能el0访问所有pmu寄存器的权限;
34.配置eln计数过滤以记录应用程序在特定级别下的运行时间;
35.计数清零并使能计数。
36.进一步地,性能监控单元配置模块,还用于:
37.增加自定义触发事件的计数,在自定义的事件触发时,对用户触发事件计数实现自定义触发事件的监控。
38.有益效果:本发明结合armv8处理器架构的性能监控功能,研究在航空领域的应用,为高安全高实时性的机载多核处理器平台支持虚拟化的软件执行环境提供一套性能监控软件系统,从而在机载计算机平台在高复杂度软件运行环境、高安全需求的情况下,提升自监控的能力,支持高安全设计。
附图说明
39.图1为基于机载多核处理平台虚拟化性能监控系统组成图。
40.图2是性能监控系统部署方法示意图;
41.图3是系统性能数据统计获取步骤示意图;
42.图4是自定义触发事件统计获取步骤示意图。
具体实施方式
43.本发明结合嵌入式虚拟化技术,研究和探讨在航空领域的应用,为高安全高实时
性的机载多核处理器平台底层支持软件提供一套性能监控方法和系统。
44.1系统组成和执行方法
45.本发明提供了一种基于机载航电嵌入式armv8架构多核硬件平台虚拟化环境的性能监控系统,该系统包括性能监控单元配置模块、性能监控单元读取模块和性能监控单元停止计数模块和性能监控单元用户触发事件计数模块四部分。
46.(1)系统组成
47.如图1所示。该系统通过对性能监控单元(pmu)的访问来完成处理器性能数据的采集,提供接口对监控的目标参数进行选择和配置,提供获取性能数据的接口。
48.性能监控单元配置模块提供性能监控配置功能,通过配置pmu的事件计数器和周期计数器,实现对监控的目标事件进行选择和配置,实现对监控的事件进行过滤,并使能计数。
49.性能监控单元读取模块提供读取监控信息功能,通过读取pmu的事件计数器和周期计数器的值来获取性能数据。
50.性能监控单元停止计数模块负责清除pmu计数器配置,清除计数使能。
51.性能监控单元自定义触发事件计数模块负责增加自定义触发事件的计数,由用户调用模块提供的接口来实现自定义触发事件的监控。
52.(2)执行方法
53.本系统,如图2所示的性能监控系统,可以支持对el0、el1以及el2三个等级的性能监控。性能监控系统el2级部署在虚拟机管理程序(也叫hypervisor)中,性能监控系统el1和el0级部署在负责管理平台的虚拟机中,el2级的性能监控功能通过管理虚拟机中的性能监控系统_el0/el1通过系统调用来调用el2下的监控接口。本系统最终由虚拟机中的管理软件等负责平台功能的应用软件进行使用。
54.如图3,系统性能数据统计获取操作步骤如下:
55.1)配置pmu事件计数器或周期计数器;
56.2)读取事件计数器或周期计数器;
57.3)清除pmu事件计数器或周期计数器配置。
58.本系统提供一种特殊的处理器事件(sw_incr 0x00)的监控,该事件可配置到事件计数器,该事件计数器的计数值随着用户对相关寄存器的操作而增加,用户可以自定义事件触发的位置,以此来达到监控用户自定义事件的目的。
59.如图4,用户触发事件统计获取一般分为以下步骤:
60.1)配置一个pmu事件计数器配置为sw_incr事件;
61.2)在自定义触发事件时增加该事件计数器计数;
62.3)读取该事件计数器;
63.4)清除该事件计数器配置。
64.2.性能监控单元配置模块
65.性能监控单元配置模块负责对性能监控单元(pmu)的周期计数器和事件计数器的配置,并支持aarch32和aarch64两种运行模式。
66.(1)周期计数器配置
67.armv8架构的处理器的pmu包含1个64-bit的周期计数器,pmu的周期计数器可以统
计cpu的时钟周期,在使能后进行计数,可以重置清0,可用作为计时器。本系统提供的配置功能可以实现对pmu的周期计数器的配置,完成对周期计数器统计配置及使能操作。pmu的周期计数器配置接口包含以下操作:使能el0访问、根据传参配置eln计数过滤,计数清零,使能计数。
68.第1步,使能el0访问。
69.默认情况下在el0级别是不能访问pmu寄存器的,由于本系统在el0运行并需要对pmu寄存器进行配置,周期计数器配置接口首先会使能el0访问所有pmu寄存器的权限。
70.周期计数器配置接口通过在内核态配置pmuserenr_el0(aarch64运行状态下)或pmuserenr(aarch32运行状态下)来实现。
71.第2步,配置eln计数过滤。
72.armv8架构软件的执行权限分为4个异常级别:el0、el1、el2、el3:el0具有最低的软件执行特权,在el0处执行称为无特权执行;el1提供对(supervisor,abort,irq,fiq,undefined,system)模式集的支持;el2提供对处理器虚拟化的支持;el3提供对安全监控的支持。异常级别从1到3,表示软件执行特权的增加,在异常发生和返回时,异常级别会发生变化。
73.周期计数器配置模块提供参数选择在不同异常级别下周期计数器是否增加计数。例如不使能el1计数,则在el1异常级别下的周期计数器值不增加,即过滤了el1计数。周期计数器配置接口通过配置pmccfiltr_el0(aarch64运行状态下)或pmccfiltr(aarch32运行状态下)来实现。通过eln的计数过滤功能,可以记录应用程序在特定级别下运行时间。
74.第3步,计数清零。
75.在使能计数之前,需要将当前周期计数器内的计数值清零。周期计数器配置接口通过配置pmcr_el0(aarch64运行状态下)或pmcr(aarch32运行状态下)来实现。
76.(2)事件计数器配置
77.armv8架构的pmu包含的事件计数器最多有31个,事件计数器的个数可从寄存器pmcr_el0(pmcr)中获取。
78.每个事件计数器可计数32-bit或64-bit(pmu extensions v3.5),但不同的处理器可能会有不同数量的事件计数器,例如arm-a53的pmu包含6个32-bit的事件计数器:
79.pmu的事件计数器可以统计cpu架构和微架构事件,每个事件都有独立的事件号。本系统提供配置功能可以配置pmu的事件计数器,该接口传参包含事件计数器编号(0~31)、eln过滤配置、计数事件号配置。
80.执行pmu的事件计数器配置接口包含以下操作:使能el0访问、根据传参配置eln计数过滤,根据传参配置各计数器计数事件号,使能计数溢出中断,计数清零,使能计数。
81.第1步,使能el0访问。
82.默认情况下在el0级别下是不能访问pmu寄存器的,由于本系统在el0运行并需要对pmu寄存器进行配置,事件计数器配置接口首先会使能el0访问所有pmu寄存器的权限。
83.周期计数器配置接口通过在内核态配置pmuserenr_el0(aarch64运行状态下)或pmuserenr(aarch32运行状态下)来实现。
84.第2步,配置eln计数过滤
85.armv8架构软件的执行权限分为4个异常级别:el0、el1、el2、el3:el0具有最低的软件执行特权,在el0处执行称为无特权执行;el1提供对(supervisor,abort,irq,fiq,undefined,system)模式集的支持;el2提供对处理器虚拟化的支持;el3提供对安全监控的支持;
86.周期计数器配置功能提供参数选择在不同异常级别下,每个事件计数器是否增加计数。例如不使能事件计数器1的el1计数,则事件计数器1对发生在el1异常级别下的事件不计数,即过滤了el1计数。
87.事件计数器配置接口通过配置pmevtyper《n》_el0(aarch64运行状态下)或pmevtyper《n》(aarch32运行状态下)来实现。
88.通过eln的计数过滤功能,可以记录特定级别下的事件发生次数。
89.第3步,配置事件类型
90.事件计数器配置接口通过传参配置各个事件计数器计数的事件号。事件计数器配置接口通过配置pmevtyper《n》_el0(aarch64运行状态下)或pmevtyper《n》(aarch32运行状态下)来实现。
91.第4步,使能计数溢出中断
92.由于事件计数器存在计数值溢出的可能,本系统需要使能计数溢出中断,当计数溢出时,触发计数溢出中断,在计数溢出的中断处理函数中对计数溢出触发次数进行统计,在读取pmu计数值时进行计算,返回真实的计数次数。
93.pmu的周期计数器支持64-bit的计数,足够统计cpu的时钟周期(4ghz的cpu频率下,周期计数溢出需要136余年),所以可以对于周期计数器的配置并没有计数溢出的处理。同理,事件计数器的有效计数位为64-bit时(aarch64状态下),事件计数值也没有溢出的可能。
94.因此pmu的计数溢出中断只针对事件计数器的有效计数位为32-bit(aarch32状态下)时设置。事件计数器配置接口通过配置pmintenset来实现。
95.第5步,计数清零
96.在使能计数之前,需要将当前所有事件计数器内的计数值清零。同时将计数溢出次数统计清零。
97.事件计数器配置接口通过配置pmcr_el0(aarch64运行状态下)或pmcr(aarch32运行状态下)来实现。
98.第6步,使能计数
99.只有使能了pmu的事件计数器后,计数值才会开始累加。周期计数器配置接口通过配置pmcntenset_el0(aarch64运行状态下)或pmcntenset(aarch32运行状态下)来实现。
100.3性能监控单元读取模块
101.性能监控单元读取模块负责读取周期计数器和事件计数器。
102.(1)周期计数器读取
103.pmu包含64-bit的周期计数器,本系统提供读取接口对当前周期计数器的计数值进行读取。读取之前需要保证使能过el0对pmu的访问。pmu的周期计数器读取接口读取周期计数器的值,并返回64位的周期计数器值。
104.周期计数器读取模块通过读取pmccntr_el0(aarch64运行状态下)或pmccntr
(aarch32运行状态下)来读取周期计数器的值。并将64位的周期计数器的值返回。
105.(2)事件计数器读取
106.pmu包含多个事件计数器,本系统提供接口对指定的事件计数器的计数值进行读取,并返回当前计数值与实际计数值,读取接口包含参数:指定事件计数器编号。读取之前需要保证使能过el0对pmu的访问。pmu的周期计数器读取接口读取事件计数器的值,并返回实际计数值。
107.事件计数器读取模块通过读取pmevcntr《n》_el0(aarch64运行状态下)或pmevcntr《n》(aarch32运行状态下)来读取当前指定事件计数器的的计数值v1。
108.由于只针对事件计数器的有效计数位为32-bit时设置计数溢出中断,还需将溢出触发次数*事件计数器有效计数位数(32bit)得到v2,并将v1和v2一起返回,实际计数值为v2 v1。
109.而在事件计数器的有效计数位为64-bit时,返回的实际计数值就是当前指定事件计数器的的计数值v1。
110.以事件exception taken、last level cache access和last level cache mis s这三种事件为例。
111.当需要监控指定时间范围t内的串口数据响应能力时,可以通过监控exce ption taken事件来记录串口中断触发次数,在读取该事件的次数count后,计算单位时间的中断产生次数,从而能够计算出串口实际的响应频率是否能够达到期望值。
112.当需要评估cache miss对多个场景下整个多核处理器平台虚拟化软件运行效率的影响,、那么可以通过分别在各个场景配置并启动last level cache access和last level cache miss事件进行监控。通过对比这些事件次数,可以在cache使用效率上提供参考,从而可以选择更优化的运行场景来提升整个软件的运行效率。
113.(3)自定义触发事件监控方法
114.当用户利用本系统完成自定义事件监控时,可以利用事件编号为0x00(sw_incr事件)的事件计数器。自定义触发事件计数增加接口通过配置pmsw inc_el0(aarch64运行状态下)或pmswinc(aarch32运行状态下)来实现。
115.在执行性能监控单元配置模块时,增加对自定义事件的使能。
116.上层虚拟机内的应用软件或者实时操作系统可以调用本系统的自定义事件触发接口,来实现事件的触发。已配置的事件编号为0x00(sw_incr事件)的事件计数器的计数值会逐次增加1。
117.举例,当需要对虚拟机内的某周期任务进行周期确定性监控时,可以配置自定义事件触发监控功能,并在周期任务内插入触发自定义事件指令。通过统计在不同时间段(如100us、500us、1ms、5ms等)的自定义事件次数监,可以计算出该周期任务的实际周期是否准确,从而判断该周期任务的确定性。
118.4性能监控单元停止计数模块
119.当完成监控,并需要结束监控的时候可以通过性能监控单元停止技术模块停止本次监控。
120.性能监控单元停止计数模块负责停止事件计数器和周期计数器的计数。
121.周期计数器停止计数模块通过配置pmcntenset_el0(aarch64运行状态下)或
pmcntenset(aarch32运行状态下)来实现清除周期计数器的使能。
122.根据事件计数器停止计数模块输入的参数:事件计数器编号,清除对应事件计数器的使能。
123.事件计数器停止计数接口通过配置pmcntenset_el0(aarch64运行状态下)或pmcntenset(aarch32运行状态下)来实现。
124.本发明结合机载多核虚拟化技术,研究armv8性能监控功能,为高安全高实时性的机载多核处理器平台底层支持软件提供一套性能监控软件系统。可在一定程度上提高机载多核处理器平台底层的性能监控能力,有利于提升机载多核处理器虚拟化软件运行环境的可靠性,可以有效控制高集成度下虚拟机和应用之间处理器资源影响。该系统有效提升了对于航空电子系统机载计算机操作系统及底层软件的可靠性,该专利的应用独立于硬件平台,适用范围广,具有显著的市场前景和经济效益。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献