集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1092|回复: 0

X86体系结构上拥有丰富的应用软件

[复制链接]
zhiweiqiang33 发表于 2014-10-22 15:06:46 | 显示全部楼层 |阅读模式
目前,国内外的数控系统大多采用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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 04:27 , Processed in 0.605473 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表