计算机的缓存分区和缓存访问实时性保护方法及装置

文档序号:25042740发布日期:2021-05-14 11:14阅读:173来源:国知局
计算机的缓存分区和缓存访问实时性保护方法及装置

1.本发明涉及计算机操作系统领域,具体涉及一种计算机的缓存分区和缓存访问实时性保护方法及装置。


背景技术:

2.随着实时系统在日常生活中应用得越来越广泛,其上的应用程序逐步趋向多样化,并且这些应用程序在系统中具有不同的安全等级。但是,如果盲目地保证高安全级别应用程序的正确性,让它抢占低优先级任务的时间片,系统重新进行资源分配,则降低了系统的整体效率。例如在汽车领域,隔离安全关键应用程序的一种常见做法是增加硬件发动机控制单元(ecu),这些单元专门用于基本操作,如降低车窗,执行关键任务。但这是一种处理能力的非常低效的方法,因为这些ecu中的许多潜力没有使用。
3.针对这种对功率、时间、空间敏感的系统,为了降低设备的成本、空间、重量和功耗等非功能性需求,一个重要的趋势是在一个物理平台上集成和隔离多个操作系统,这被称为混合关键度系统。最常见的一种情况就是将实时系统和非实时系统集成在一个平台上来克服操作系统通用性和实时性的矛盾,通用系统中任务在实时系统的空闲时间调度,这样既保障了实时任务的正确性,也提高了系统整体的吞吐率。
4.混合实时系统的实现主要有三种方法:传统方法是扩展gpos(general purpose operating system)在两个内核中加入多个相互耦合的功能,将两个操作系统集成在一起,使得gpos和rtos(real

time operating system)没有逻辑上独立的环境,对彼此的有害干扰也没有有效的防御。并且它需要大量修改gpos内核,从而导致复杂性和灵活性方面的高额成本。相比之下,基于虚拟化的方法,通过在虚拟机上集成rtos和gpos,能提供更好的安全隔离和更低的复杂度,具有开发简单、隔离效果理想的优点。但是,基于虚拟化的方法严重依赖硬件支持,而且,rtos和gpos运行开销较大,性能的显着降低。trustzone技术通过对原有硬件架构进行修改,在处理器层次引入了两个不同权限的保护域——安全世界和普通世界,任何时刻处理器仅在其中的一个环境内运行。trustzone技术的特性有助于实现指标之间建立全面平衡的混合实时系统。
5.混合实时系统的正确性取决于运算逻辑的正确性和时间行为是否满足时间约束。因此需要在设计阶段就对系统的时间行为进行分析。由于任务执行会受到各种复杂因素的影响,在所有可能的执行时间中,存在目标最大值和目标最小值,分别称为最佳情况执行时间(best case execution time,bcet)和最差情况执行时间(worst case execution time,wcet)。混合实时系统时间分析的主要任务是估计最坏情况下的执行时间(wcet)。
6.分析任务的最差情况执行时间wcet,有必要考虑特定硬件结构下任务的行为以及延迟的原因。在硬件架构中,cache对程序的执行时间影响很大。并且在存储器访问期间cache命中的时间延迟通常比未命中的时间延迟小几十倍。所以cache的精准分析对任务执行时间有决定性的影响。混合实时系统中gpos和rtos使用同一个cache,在rtos任务执行完成之前,共享cache中的数据或指令会被gpos中任务替换出cache,这一现象称为任务间干
涉。任务间干涉导致一个任务的wcet不再仅仅依赖任务自身,同时也受到与其并行执行的其他任务的影响,影响了rtos的实时性和系统效率。
7.由于涉及硬件开销的优化方法不具有通用性,因此我们需要综合考虑各种问题,设计一种开销低,通用性好的cache优化方法来满足需要。


技术实现要素:

8.本发明要解决的技术问题:针对混合实时系统因为缺少cache隔离导致两个环境下任务相互干涉,增加访存不确定性的问题,提供一种计算机的缓存分区和缓存访问实时性保护方法及装置,本发明开销低,实用性强,使得rtos与gpos有独立内存的同时也有相互隔离的cache,避免了两个操作系统对cache的争用,在保障rtos的实时性的同时提高了系统效率。
9.为了解决上述技术问题,本发明采用的技术方案为:
10.一种计算机的缓存分区和缓存访问实时性保护方法,包括针对将rtos和gpos操作系统集成和隔离在同一物理平台上的混合实时系统执行的下述步骤:
11.1)确定rtos用到的内存物理地址范围{m};
12.2)按照物理内存与缓存的映射规则,计算得到rtos用到的内存物理地址范围{m}映射的缓存组{a};
13.3)根据rtos用到的内存物理地址范围{m}映射的缓存组{a},以组号反推出映射到缓存组{a}的内存地址集合{s};
14.4)限制gpos使用{{s}

{m}}这部分会映射到rtos所在缓存组的内存地址,构建一个rtos独立使用的缓存区域,使得rtos与gpos之间有相互隔离的缓存。
15.可选地,步骤2)包括:先基于组数、路数、缓存行大小计算一级缓存l1的容量,再根据一级缓存l1的容量大小确定缓存序号位数m,再通过预设的具体映射规则,根据缓存序号位数m计算出缓存与rtos用到的内存物理地址之间的对应关系,从而得到rtos用到的内存物理地址范围{m}映射的缓存组{a}。
16.可选地,所述计算一级缓存l1的容量的表达式为:一级缓存l1的容量=组数
×
路数
×
缓存行大小。
17.可选地,所述根据缓存序号位数m计算出缓存与rtos用到的内存物理地址之间的对应关系是指:根据具体物理地址中m位具体数值确定其对应的缓存组号,从而得到rtos用到的内存物理地址范围{m}中所有内存物理地址对应的缓存组号构成的缓存组{a}。
18.可选地,步骤3)中以组号反推出映射到缓存组{a}的内存地址集合{s}具体是指根据具体物理地址中m位具体数值反推出映射到缓存组{a}的内存地址集合{s},限制gpos对内存物理地址{s}的使用,使得rtos与gpos之间有相互隔离的缓存。
19.可选地,步骤4)中限制gpos使用{{s}

{m}}这部分会映射到rtos所在缓存组的内存地址是指:在编译阶段建立编译规则,通过修改gpos内核的链接文件限制gpos对内存地址{s}的使用,直接为任务指定内存地址{s}以外的存储区域。
20.可选地,步骤4)中限制gpos使用{{s}

{m}}这部分会映射到rtos所在缓存组的内存地址是指:在gpos中利用memory命令限制任务对内存地址[s]的访问。
[0021]
此外,本发明还提供一种计算机的缓存分区和缓存访问实时性保护装置,包括:
[0022]
地址划分程序单元,用于确定rtos用到的内存物理地址范围{m};
[0023]
缓存组映射程序单元,用于按照物理内存与缓存的映射规则,计算得到rtos用到的内存物理地址范围{m}映射的缓存组{a};
[0024]
内存地址反推程序单元,用于根据rtos用到的内存物理地址范围{m}映射的缓存组{a},以组号反推出映射到缓存组{a}的内存地址集合{s};
[0025]
缓存分配程序单元,用于限制gpos使用{{s}

{m}}这部分会映射到rtos所在缓存组的内存地址,构建一个rtos独立使用的缓存区域,使得rtos与gpos之间有相互隔离的缓存。
[0026]
此外,本发明还提供一种计算机的缓存分区和缓存访问实时性保护装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述计算机的缓存分区和缓存访问实时性保护方法的步骤。
[0027]
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有被编程或配置以执行所述计算机的缓存分区和缓存访问实时性保护方法的计算机程序。
[0028]
和现有技术相比,本发明具有下述优点:
[0029]
1、页着色是利用了存储器与cache的组相联映射关系,把操作系统的页划分为多种颜色,同种颜色的内存页将会映射到相同的cache区域中,调整任务cache分区的大小是通过改变已经分配的页面颜色实现,这需要将应用的数据拷贝到另一部分颜色集合的物理页上,涉及了大量的数据移动操作,本发明借助页着色原理,利用物理内存与cache的映射关系,构建一个rtos独立使用的cache区域,在编译阶段限制gpos使用映射到此缓存组的内存地址,任务运行期间不涉及大量数据移动操作,降低了开销。rtos中任务最坏情况下的执行时间wcet仅仅依赖于任务自身,不会受到与其并行执行的gpos中任务的影响,保障了rtos的实时性的同时也提升了系统效率。
[0030]
2、本发明不涉及任何硬件开销,本发明的通用性较好。
[0031]
3、与页着色技术比较,本发明在任务运行中不涉及数据迁移操作,在编译阶段就间接完成了分区,实时系统运行的开销小。
附图说明
[0032]
图1为现有技术中任务间干涉的原理示意图。
[0033]
图2为本发明实施例方法的额基本流程图。
[0034]
图3为本发明实施例中cache分区方法示意图。
具体实施方式
[0035]
本发明计算机的缓存分区和缓存访问实时性保护方法及装置重点关注了以下问题:1.在混合实时系统中,rtos和gpos如何共享cache资源。2.如何避免rtos和gpos两个环境下的任务使用cache时相互干扰。cpu共享地使用各级cache,cache的分配和替换通过cache替换算法由硬件机制直接完成,而对数据所属应用不予区分,这样的缓存管理无法感知应用语义,不能区分安全环境和普通环境下的应用。从表面看来,它平等的对待两个应用中的数据块,但是实际隐含着不公平性,gpos将rtos的缓存块替换从而造成的cache冲突增加了rtos访存时间的不确定性,影响了rtos的实时性。混合实时系统的正确性取决于运算
逻辑的正确性和时间行为是否满足时间约束。因此需要在设计阶段就需要估计rtos最坏情况下的执行时间(wcet)。利用trustzone实现混合实时系统时,trustzone地址空间控制器(tzasc)对内存进行分区,保证了内存空间隔离。在任务执行过程中,gpos和rtos有硬件隔离的内存地址,但他们分时共享同一个cache。在rtos任务执行完成之前,共享cache中的数据或指令有可能会被gpos中任务替换出cache,由此造成的cache失效,增加了访存时间的不确定性,这一现象称为任务间干涉。如图1所示,此时安全环境下的应用为a,普通环境下的应用为b,其中a
i
(b
i
)表示应用a(b)的内存块。当安全环境切换到非安全环境的时候,任务b有大量的访存操作,系统中缓存的分配和替换通过缓存替换算法由硬件机制直接完成,无法区分安全环境和普通环境下的应用,使用lru(least recently used)算法,一旦发生冲突,需要将全局最久未使用的缓存块替换出去(此时为安全环境下应用a的缓存块),但从应用语义上来说,它应该替换属于其应用的最久未被访问的块(b1)。任务间干涉导致一个任务的wcet不再仅仅依赖任务自身,同时也受到与其并行执行的其他任务的影响,影响了rtos的实时性和系统效率。
[0036]
下文将以支持trustzone的armv8处理器作为实施平台,讲述本发明计算机的缓存分区和缓存访问实时性保护方法及装置在海思的hikey960开发板上构建过程的实施例。hikey960开发平台基于华为麒麟960 octa corelittle
tm
带有四个arm和四个cortex

a53内核的处理器,3gb的lpddr4 sdram内存,32gb的ufs 2.0闪存,以及最新一代的mali
tm
g71 mp8图形处理器。
[0037]
如图2所示,本实施例计算机的缓存分区和缓存访问实时性保护方法包括针对将rtos和gpos操作系统集成和隔离在同一物理平台上的混合实时系统执行的下述步骤:
[0038]
1)确定rtos用到的内存物理地址范围{m};
[0039]
2)按照物理内存与缓存的映射规则,计算得到rtos用到的内存物理地址范围{m}映射的缓存组{a};
[0040]
3)根据rtos用到的内存物理地址范围{m}映射的缓存组{a},以组号反推出映射到缓存组{a}的内存地址集合{s};
[0041]
4)限制gpos使用{{s}

{m}}这部分会映射到rtos所在缓存组的内存地址,构建一个rtos独立使用的缓存区域,使得rtos与gpos之间有相互隔离的缓存。其中,{{s}

{m}}是物理内存地址,cpu访存时会将这部分内存的内容提前放到缓存里面,而这部分地址会映射到rtos所在的缓存组,因此会产生冲突。
[0042]
本实施例中,步骤2)包括:先基于组数、路数、缓存行大小计算一级缓存l1的容量,再根据一级缓存l1的容量大小确定缓存序号位数m,再通过预设的具体映射规则,根据缓存序号位数m计算出缓存与rtos用到的内存物理地址之间的对应关系,从而得到rtos用到的内存物理地址范围{m}映射的缓存组{a}。
[0043]
本实施例中,计算一级缓存l1的容量的表达式为:一级缓存l1的容量=组数
×
路数
×
缓存行大小。
[0044]
本实施例中,步骤2)中根据具体物理地址中m位具体数值确定其对应的缓存组号。具体地,本实施例中l1 cache 8路相联,缓存行为64b,64个组,可通过公式1:一级缓存l1的容量=组数
×
路数
×
缓存行大小,计算出一级缓存l1的容量为32kb。一级缓存l1的序号一共有12位,其中六位是不受操作系统控制的、且用于决定缓存组号。那么我们最多控制26个
缓存组,每个组有8个缓存行(因为l1 cache为8路相连)。假设rtos的具体地址为00000000~00000fff(4kb),其中0到5决定cache行中具体的字节,6到11决定缓存组号。通过rtos的内存地址可知rtos映射到的缓存组号为{000000,000001..........111111}。并且映射到每组的数据只有一行,此时gpos没有可以独立使用的缓存组,映射到每个缓存组的数据最多有7个缓存行。如果超过7个缓存行,这个缓存组就会使用缓存替换策略将最久未使用的cache行替换,此时可能为rtos的数据。最后计算出gpos不会与rtos产生冲突的地址为28kb。对l1 cache分区发现gpos仅可以使用28kb的内存,大部分内存空置,影响了系统效率。因此对l1 cache进行gpos物理地址划分进而实现cache分区的方法需要改进。有文献指明二级cache缺失造成处理器几十甚至数百个周期的延时,二级高速缓存不命中比一级高速缓存不命中对操作系统性能的影响更大,所以可以实现l2 cache的分区来达到性能的优化。此时l2是256kb,8路相联,缓存行为64b,512个组。则地址低6位决定字节偏移(0~5),6~14位决定组号。由rtos内存地址可计算出它能映射到64个缓存组。那么剩余的448个缓存组可以由gpos独立使用,此时gpos的低15位为001000000000000~111111111111111(约为28kb),这样的组合有2
(32

15)
个,因此gpos可使用内存大小为3584mb(2
17
×
28kb),远远大于划分l1 cache的时候只能用28kb的内存。l2 cache分区使得两个环境下的任务相互隔离,如图3所示,避免了竞争访问,虽然gpos仍可以将rtos在l1 cache的数据替换,但是当rtos再次运行时,数据可以从l2 cache中获取,降低了访存时延。
[0045]
本实施例中,根据缓存序号位数m计算出缓存与rtos用到的内存物理地址之间的对应关系是指:根据具体物理地址中m位具体数值确定其对应的缓存组号,从而得到rtos用到的内存物理地址范围{m}中所有内存物理地址对应的缓存组号构成的缓存组{a}。
[0046]
本实施例中,步骤3)中以组号反推出映射到缓存组{a}的内存地址集合{s}具体是指根据具体物理地址中m位具体数值反推出映射到缓存组{a}的内存地址集合{s},限制gpos对内存物理地址{s}的使用,使得rtos与gpos之间有相互隔离的缓存。
[0047]
本实施例中,步骤4)中限制gpos使用{{s}

{m}}这部分会映射到rtos所在缓存组的内存地址是指:在编译阶段建立编译规则,通过修改gpos内核的链接文件限制gpos对内存地址{s}的使用,直接为任务指定内存地址{s}以外的存储区域,以此实现缓存的划分,使得rtos有相互隔离的缓存,避免了两个操作系统对缓存的争用。具体地,通过串口程序看到混合实时系统调试信息,找到rtos与gpos分别使用的内存地址,通过计算得到linux系统中不会与rtos产生冲突的物理内存地址。修改linux内核,将新的虚地址映射规则写入kenel.lds文件中。kenel.lds文件主要用于规定如何把输入文件的section放入输出文件内,并且可以控制输出文件在程序地址空间内的布局。在默认的情况下连接器可以为section分配任意位置的存储区域,也可以使用memory命令定义存储区域。
[0048]
此外,作为一种可选的实施方式,步骤4)中限制gpos使用{{s}

{m}}这部分会映射到rtos所在缓存组的内存地址也可以采用下述方式:在gpos中利用memory命令限制任务对内存地址[s]的访问。
[0049]
本实施例中,步骤4)之后还包括编写获得rtos访存时延的测试程序。修改实时系统rtos的内核,在内核中加入测试读写内存数据所需cpu周期数的任务t
i
代码。当通用操作系统gpos运行有大量访存行为测试程序时观察cache优化前后t
i
输出数据的变化。
[0050]
综上所述,本实施例具体环境中确定rtos用到的内存物理地址范围,按照物理内
存与缓存的映射规则,计算得到rtos映射的缓存组。以组号反推出映射的内存地址集合,限制gpos使用这些内存地址集合。组相联映射中内存映射到的组号是固定的,但映射到组中的行号是任意的。按照改进的页着色技术,使得gpos的物理内存对应的缓存组和rtos的缓存组隔离,在替换时不会产生冲突。本实施例基于分配的物理地址范围,通过计算获取编译参数,建立编译规则,修改gpos内核的链接文件,根据编译规则,为section分配合适存储区域,也可以使用memory命令定义存储区域。修改rtos内核,在内核中增加可以获得rtos访存时延的任务。完成编译后加载系统,记录rtos访存时延的数据。本实施例基于改进页着色技术,利用物理内存与cache的映射关系,构建一个rtos独立使用的cache区域,在编译阶段限制gpos使用映射到此缓存组的内存地址。rtos中任务的wcet仅仅依赖于任务自身,不会受到与其并行执行的gpos中任务的影响,保障了rtos的实时性的同时也提升了系统效率。
[0051]
此外,本实施例还提供一种计算机的缓存分区和缓存访问实时性保护装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行前述计算机的缓存分区和缓存访问实时性保护方法的步骤,或者所述存储器中存储有被编程或配置以执行前述计算机的缓存分区和缓存访问实时性保护方法的计算机程序。
[0052]
此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有被编程或配置以执行前述计算机的缓存分区和缓存访问实时性保护方法的计算机程序。
[0053]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0054]
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1