最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能生产

基于双核处理器平台的数控系统数控软件架构设计

发布时间:2014-05-31 作者:郑玉虎 王品 陆小虎  来源:万方数据
本文针对单核处理器平台上数控系统提升性能和扩展功能方面存在的问题,研究了双核处理器平台上数控系统软件设计的一些理论问题。首先基于RTCore实时操作系统研究了双核平台上数控系统的线程模型设计方案,探讨了线程在核心上的分配方法;然后采用RM算法判定多个周期性实时任务的可调度性,并根据判定结果和负载均衡情况进行线程模型设计;最后研究了中断管理相关问题,提出了根据中断的重要性不同而分配到不同核心上的方法。提出的问题和方法对于设计基于双核和多核处理器平台的数控系统软件具有一定参考意义和实用价值。

0 前言

  随着数控系统的不断发展,控制周期越来越短,控制精度越来越高,控制算法越来越复杂,要同时运行的功能模块也越来越多,这都对当前普遍采用的单核处理器平台提出了严峻的挑战。要在单核平台上提高现有数控系统的性能或者集成更多的应用,主要可以从以下方面考虑:一是采用更高性能的单核处理器,二是优化现有数控系统的软件架构,三是从各个细节上着手优化具体的代码和算法。但是这几种方法都面临着各种不同的困难。比如第一种方法,一般情况下性能或主频的提升往往伴随着功耗和发热的增加,而数控系统的特点决定了其功耗不能太高,用于散热装置的空间有限,在这些约束下单核处理器的性能提升是有限的,因此这种方法有一定的局限性。

  本文主要采用双核处理器平台以解决前述问题。使用双核处理器只需额外增加少量硬件和软件设计工作,即可使系统性能有很大的提升,一些专门针对双核处理器设计的软件的性能提升甚至能接近两倍。本文基于该平台,借鉴开源EMC2数控系统的软件设计,研究了双核平台上的数控软件设计方案,并提出在类似平台上进行数控软件设计和优化的一般方法(同样适用于有超过两个核心的多核处理器)。

1 双核处理器的硬件结构

  1.1 缓存结构

  高速缓存(这里只考虑L2 Cache)是衡量处理器图中处理器有两个核心Core0和Corel,每个核心有各自的L2 Cache,两个核心之间通过总线接口连接到前端总线。两个核心可以同时各执行一个任务,当两边缓存需要保持一致性时则通过前端总线进行通信。程序运行时的局部性好坏会影响缓存命中率,因此应该把重要的实时任务安排到一个固定的核心上,并防止其他无关任务挤占对应的缓存,这样可以提高实时任务运行速度和实时性。

独立缓存结构的CPU
图1 独立缓存结构的CPU 

  1.2 中断管理

  中断处理会对程序的运行速度和实时性产生影响。高频率外部中断会不停地打断正常的程序执行流,如果中断处理程序也比较耗时,就可能会导致实时任务在运行过程中不断被打断和推迟,超过要求的时间限度。目前在中断管理上普遍采用可编程中断控制器,可以通过编程的方式控制每个核心上的中断响应,比如可以在某个核心上开启或者关闭某个中断。这样就可以在运行重要实时任务的核心上关闭无关的中断,避免了实时任务被频繁打断,保证了任务的性能和实时性。

2 双核平台需要的软件支持

  2.1 操作系统支持

  要发挥双核处理器的性能优势,需要操作系统的密切配合。数控系统设计中应用较多的实时系统有RTAI、RTLinux和Vxworks等,这些系统提供的实时控制功能大同小异,本文采用的系统平台是RTcore(前身是RTLinux Pro)。

  RTCore是一款硬实时系统,采用了“双内核”H1结构。实时内核运行在最底层,直接管理时钟和硬件中断。实时任务运行在实时内核层,而Linux作为一个最低优先级任务运行,只有当前没有实时任务需要占用处理器时,才会调度Linux系统运行。RTcore支持sMP对称多处理平台,提供了丰富的实时进程调度、进程通信和中断管理等功能,可以满足在双核处理器平台上设计数控系统的需求。

  2.2 应用程序的支持

  仅有硬件和操作系统的支持还不够,要充分利用多核平台的性能优势,还需要应用程序本身的支持。在这方面可以采用的方法主要是多线程编程,把原来由一个线程串行处理的工作交由多个线程并行处理,可以大幅度提高处理速度。

  除了多线程技术,多核处理器上的软件开发还有一些其他需要考虑的问题。比如对实时性有要求的应用,可以采用线程.处理器绑定、处理器预留和中断屏蔽等技术,提高应用的性能和实时性。

3
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。