您的位置 首页 培训

根据MIPS处理器和RTAI的数控系统中调度颤动的研讨

1 前言目前,国内外的数控系统大多采用X86体系结构的CPU,主要是因为X86体系结构上拥有丰富的应用软件,开发环境和技术积累,可以在一定程度上缩短数控系统的开发周期.但X86体系结构也有其自身的缺点

1 前语

现在,国内外的数控体系大多选用X86体系结构的CPU,首要是因为X86体系结构上具有丰厚的运用软件,开

发环境和技能堆集,可以在必定程度上缩短数控体系的开发周期.但X86体系结构也有其本身的缺陷,比方其指令集体系结构过于杂乱,本钱高.并且X86技能一向被国外的几家大公司所独占,将其运用在数控体系这样的战略资源上,存在必定的安全隐患.

M1PS体系结构具有灵敏敞开,本钱低的长处,在工业操控、网络、通讯、多媒体文娱等范畴得到了广泛的运用.我国现已研发出了具有自主知识产权的MIPS通用CPU.因而将MIPS结构的CPU运用在数控体系上,不只可以下降数控体系的本钱,还增加了数控体系特别是高级数控体系国产化的水平.

实时操作体系是数控体系的软件根底,数控软件中的运动操控器部分需求实时操作体系对其进行周期性的调度,对

实时操作体系的功用要求很严苛.一般来说,运用于数控体系中的实时操作体系需求具有高实时性,时刻确定性以及高可靠性,安全性和容错性….

在硬实时操作体系中,首要是依托时钟硬件发生的中止对周期进程进行调度.尽管时钟可以准确的给出守时中止,但硬件和操作体系的运作办法会对中止呼应和进程调度发生影响,然后使周期进程每次开端履行的时刻变的不确定,这便是调度颤动.调度颤动直接影响到数控加工的精度,假如数控体系的加工速度为10米/分钟,那么5O微秒的颤动就或许发生约8.3微米的随动差错.针对特定的体系结构研讨与剖析运动操控器的调度颤动,对把握并改进数控体系的功用具有重要的含义.

RTAI(Real Time Application Interface)是由意大利米兰理工学院航天工程系建议开发的一个遵从GNU GPL的开源项目,RTAI现已支撑i386,MIPS,PowerPC,ARM 和M68k-~ommu等处理器,是现在支撑处理器最多的linux实时解决方案之一.RTAI具有丰厚的功用和杰出的硬实时功用.本文针对数控体系的运动操控器,评论了在MIPS渠道上RTAI操作体系的调度颤动测验,并剖析了发生调度颤动的原因.

2 颤动测验

2.1 颤动测验办法

在本文中,用于测验的硬件渠道是龙芯2E处理器,主频为664.32MHz.该处理器具有64KB的一级缓存和512KB的二级缓存.体系内存为256M.

本文在颤动测验中选用了内部软件测验技能:记载运动操控器的第一条指令每次履行的时刻戳,并存储在同享内存中,在测验结束后,再读取同享内存中的数据以供剖析 】.时刻戳从CPU内部的高精度计时器获取,它是一个32位的寄存器(cp0L9 ),每个指令周期主动加1,类似于pentium系列CPU上的TSC(Time Stamp Count) .可以运用MFC0指令读出该计时器的值.但32位的计时器在664.32MHz的主频下,每隔6.47秒就会发生一次翻转,因而需求对得到的数据进行溢出处理.本文处理办法是保护一个64位的虚拟计时器:

union{

unsigned long long tsc;

unsigned long hltsc[2];

}tsc;

该结构将一个64位的长整型变量分成了两个32位的长整型变量,低32位用来获取计时器的值,高32位在计时器溢

出时加1,这样就得到了一个虚拟的64位的高精度计时器.在664.32MHz的主频下,64位的计时器需求880年的时刻才会发生一次翻转.可以选用下面的函数读取虚拟计时器csc的值:

inline unsigned long long rdtsc(void)

{

unsigned long count;

asm

一 volatile一(”mfcO/t%0, $9/n/t“ :”=f”

(count));

tsc.hltsc[1]+=(count tSC.~tscf0]=count;

return tsc.tsc;

}

在MIPS中,CP0协处理器中的11号寄存器可以作为实时时钟运用.11号寄存器又称为compare寄存器,它用来在

特定的时刻发生一个中止,该寄存器被写入一个初值后,便不断的将此值与计时器中的值进行比较,一但二者持平,便触发63号中止 3.因而MIPS CPU的守时精度可以到达纳秒级.

2.2 数据剖析

经过上述办法取得的时刻序列是一个递加数列,相邻两个元素之问的差值便是运动操控器的实践周期.为了尽或许

的减小测验差错的影响,本文选用最小二乘法对时刻序列进行拟合,得到时刻序列的一条最佳逼进线,运用这条最佳逼进线来核算各周期的名义值 J.时问序列中的每一个元素与最佳逼进线之间的差值便是各个周期的调度颤动.

图1是在正常负载下,前100个测验点与最佳逼进线的违背值.刚开端的几个点反映了较大的颤动,其间最大的颤动到达了228微秒.这个现象是正常的,因为运动操控器在刚开端运转的时分没有将指令和数据加载到cache中,相应的页表也没加载到TLB(Translation l_x~okaside Buffer)中,因而会不断发生cache失效反常和TLB重填反常,这加剧了体系的担负,并推迟了运动操控器的履行.从第40组数据今后,颤动趋于平稳.在后面的测验中,均将前100组数据放弃,然后可以更好的核算一般状况.

RTAI供给了两种调度形式,分别是单触发形式(oneshotmode)和周期形式(periodic mode) .在单触发形式下,在每次履行调度函数时,体系都需求依据当时的状况从头核算下次触发守时中止的时刻,并对守时器进行编程.而周期形式只在时钟初始化的时分对守时器进行编程,今后便一直依靠这个固定的时钟周期进行调度.单触发形式下,体系的担负较重,会在必定程度上影响体系的功用.本文分别在单触发形式和周期形式下测验了运动周期的颤动.

1.jpg

在单触发形式下,调度中加入了补偿,假如上一次的调度被推迟了,那么下次便会提早调度,以消除调度颤动的累积.比方前次的实践周期为2010微秒,那么下次的实践周期就应该是1990微秒.图2是在10000组测验样例中抽取的100组数据,从中可以看出,一切的测验点均以规范值为中心对称散布,反映了上面描绘的调度办法.单触发形式下最大颤动为23.476微秒,均匀颤动为414纳秒.

2.jpg

周期形式下的调度没有补偿,实时进程不会提早履行,因而调度颤动会在每次调度的时刻戳上累积.因为硬件守时器的守时周期在运动操控器的履行期间是固定的,颤动的下限是0.图3(见下页)是从10000组样例中抽取的100组数据.在所测的10000组数据中,一切元素均为正值,颤动的最大值为73.8微秒,均匀颤动为3.298微秒.周期形式下的均匀颤动时刻是单触发形式下的8倍.单触发形式的调度尽管较准确,但需求消耗很多的cpu时刻,加剧了体系的担负,在硬件功用较差的环境下,其功用或许会低于周期形式.因而,在选用调度形式时,需求针对特定的硬件渠道和软件环境进行颤动测验 .

3 颤动发生的原因剖析

RTAI选用了2种调度算法,分别为单调速率算法和最早时限优先算法.本文选用的是单调速率算法,因为该算法依据

静态优先级,可以确保最高优先级进程的安稳调度-6j.调度程序每次挑选的进程总是优先级最高的进程,在平等优先级的各进程之间则选用时刻片轮转的办法进行调度.在数控体系的一切进程中,运动操控器的优先级最高,因而,咱们只需求研讨高优先级的进程发生颤动的原因即可.依据RTAI的调度机制,运动操控器可以抢占其他进程,并且不会被其它任何进程抢占,因而没有进程可以推迟运动操控器的履行.可是存在其它要素可以推迟它的履行,比方总线上锁,关中止,中止嵌套,资源竞赛,cache失效,以及操作体系中存在不行抢占的要害区域等.在规划杰出的实时体系中,不行抢占的临界区很少,且运动操控器简直不需求内存以外的其他资源,可以对运动操控器发生影响的首要要素只要关中止,中止嵌套和cache失效.

3.jpg

前面现已介绍过了cache失效会在运动操控器刚加载时对调度颤动发生影响,实践上在运动操控器的运转进程中,其他的非实时进程,如图形显现,网络拜访,磁盘读写等都会影响cache,然后直接的影响运动操控器.为了下降cache失效对调度颤动的影响,可以尽量削减除数控软件以外的其它程序的运转.比方运用TinyX替代具有图形加快功用的XServer前面现已介绍过了cache失效会在运动操控器刚加载时对调度颤动发生影响,实践上在运动操控器的运转进程中,其他的非实时进程,如图形显现,网络拜访,磁盘读写等都会影响cache,然后直接的影响运动操控器.为了下降cache失效对调度颤动的影响,可以尽量削减除数控软件以外的其它程序的运转.比方运用TinyX替代具有图形加快功用的XServer

RTAI的进程调度是由硬件时钟的守时中止驱动的.图4简略地说明晰从时钟给出中止,到运动操控器开端履行的过

程.这个进程包含,体系关中止的时刻,中止预备时刻和中止处理时刻.在关中止的时刻内,体系不能对其他任何优先级的中止进行呼应,所以时钟中止有必要等候,直到体系开中止.中止预备阶段是指,从CPU开端呼应时钟中止到进入时钟中止的处理程序所需求的时刻,中止处理阶段是指履行中止处理程序rt—timer—handler(),即调度程序所需求的时刻 J.中止预备时问和中止处理时刻在特定的体系上是固定的,只要几微秒的时刻,并且在咱们的测验办法中不会对测验成果发生影响.单从时钟中止处理的进程来看,调度推迟首要取决于体系的最大关中止时问 J.在本文的测验渠道上最大关中止时刻为13.24微秒.

现代操作体系均答应中止嵌套,以便及时呼应紧迫的中止.那么在中止预备和中止处理阶段,时钟中止的处理有或许被其他的中止抢占,这也会对运动操控器的颤动发生影响.为了下降这种影响,应该尽或许的削减体系中的中止数量,这样不只可以下降时钟中止被抢占的或许性,也可以下降体系的负载.在数控体系中,因为不需求大批量的读写磁盘数据,不需求电源办理,可以将DMA,APM 和ACPI禁用.这些设备会发生很多的中止,并频频的对总线上锁.假如该数控体系无需网络通讯,也可以将网络禁用.

4.jpg

在禁用了上述设备后,本文在单触发形式下,对运动操控器的调度颤动进行了从头测验.最大颤动为8.02微秒,均匀颤动为392纳秒.最大颤动挨近没禁用设备曾经的1/4.图5是10000组测验样列的散点图.从图上可以看出大部分的测验点都散布在微秒内,这样的颤动在数控体系中是可以承受的.当数控体系以10米/分的速度加工的时分,8微秒的颤动最多能发生1.3微米的随动差错.

5.jpg
t.jpg

4 总结

对实时体系而言,调度颤动是不行避免的.调度颤动的巨细与硬件体系结构和操作体系的运作办法密切相关.在数控体系中,大的调度颤动会对加工精度发生影响.本文针对M1PS渠道,在不同的调度形式下测验了运动操控器的调度颤动,并选用最小二乘法对成果进行了剖析.试验标明,在该数控体系中,周期形式下的均匀颤动是单触发形式的8倍多.在数控体系中,或许引起颤动的要素有cache失效,体系关中止以及中止嵌套等,本文针对这些要素对体系做了优化,禁用了DMA,APM,ACPI等与数控体系的运转联系甚微的设备,并将具有图形加快功用的X Server替换成了对资源占用很小的Tiny X.成果在单触发形式下,最大颤动可以缩短到本来的四分之一,均匀颤动也有所改进.测验成果证明,在MIPS渠道下,RTAI彻底可以满意数控体系的需求.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/294526.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部