陸小虎 于 東 胡 毅 林立明
1.中國科學院大學,北京,100049 2.中國科學院沈陽計算技術研究所高檔數控國家工程研究中心,沈陽,110168
嵌入式系統具有成本低、體積小、集成度高、可靠性高等特點,目前已經在數控領域獲得一定的應用。目前嵌入式數控系統主要基于ARM(advanced RISC machines)+DSP(digital signal processor)和 ARM+DSP+FPGA(field programmable gate array)兩種硬件結構[1-2]。基于分立元件的嵌入式數控系統集成度不高,穩定性不好。不同架構處理器之間的通信方式復雜,ARM處理器和DSP處理器之間的通信帶寬小導致了系統的通信延時增加[3]。在軟件結構上,傳統的嵌入式數控系統沒有操作系統,任務之間切換開銷大,系統的可擴展性差,不能提供友好的人機接口,不同處理器之間的協同工作比較困難,數控系統效率不高[2]。
異構多核技術最大的特點就是在一個芯片內集成多個異構的處理器核[3-4],不同核心之間使用處理器內部的高速總線相連,核心之間的通信延遲可以忽略。文獻[5]在以多核處理器為核心的應用系統中,提出一種基于異構多核處理器系統在高性能并發處理應用中的三層軟件架構,為并發處理應用加速。文獻[6]提出一種主從單邊卸載模型,以及編譯框架模型,為異構多核處理器在專門計算領域的應用提供理論基礎。
在嵌入式計算領域中,異構多核處理器能夠比同構多核處理器發揮出更優的性能?;诋悩嫸嗪颂幚砥鞯那度胧綌悼叵到y具有很高的集成度和穩定性,由不同體系結構的處理器核心負責數控系統工作負載中的不同類型任務的運行機制,能有效地提高數控系統的性能[4,7]。
針對傳統基于模擬接口的伺服系統中存在的分辨率低、系統柔性弱、通信帶寬小、難以分布式控制等問題,近年來數控系統與數字伺服驅動器之間采用現場總線連接?,F場總線采用全數字通信,支持數據雙向傳輸,線纜大大簡化,從根本上突破了傳統點對點式的模擬信號或數/模信號控制的局限性,同時具有傳輸速率高、傳輸距離遠、抗干擾能力強等優點,具有較強的實時性和可靠性[5-6,8],結合現場總線的嵌入式數控系統,能夠滿足高速高精數控系統的需求。
數控系統在要求具備較高加工精度和復雜曲線計算能力的同時,還要求給用戶提供人性化的操作界面。傳統嵌入式數控由于沒有操作系統的支持,人機交互功能弱,多任務的處理能力差,不能滿足數控系統高精度控制的要求。為滿足高性能嵌入式數控系統的要求,本文基于異構嵌入式處理器平臺提出一種嵌入式數控系統體系結構。
本文提出的嵌入式數控系統體系結構如圖1所示。

圖1 系統結構
該嵌入式數控系統結構中,在異構雙核處理器的不同核心上運行不同操作系統,分別管理不同的處理器核心,充分發揮不同體系結構處理器核心的性能;使用靜態劃分的方法,將數控任務分配到不同處理器核心上,提高嵌入式數控系統的穩定性和實時性;使用基于共享內存機制實現不同核心上任務的協同工作,避免不同的處理器結構的差異帶來的潛在的內存訪問沖突;使用現場總線連接嵌入式數控系統與伺服驅動實現一種基于異構多核處理器的嵌入式數控系統。
目前異構處理器都采用主從式架構,即采用一個主核和一個專用處理核作為加速核,其中主核通常采用成熟的標量處理器核心,專用處理核則面向特定類型工作負載進行定制,使用面向特定的負載而設計特殊的指令集[4]。不同的處理器核心具有自己的處理器架構、自身的內存空間和外設,不同處理器核心的運行頻率不同,單一的操作系統不能同時發揮所有處理器核心最佳性能[6]。
在數控系統中,實時任務要求系統延遲盡量小,Linux的高度抽象機制難以滿足高實時的算法要求。
在異構處理器中,ARM核心在用戶接口控制方面具有很高的效率,DSP核心功能強大,能夠進行大量數據計算。Linux通過應用軟件模塊與硬件資源隔離機制為用戶提供了高度的資源抽象,系統穩健性強,基于ARM處理器核心的Linux+ARM子系統提供友好的用戶界面。DSP/BIOS提供了直接存取硬件中斷的機制,可以實現底層硬件所支持的最短延遲響應,對運動控制、位置控制等強實時性的任務,這種精細粒度的硬件中斷控制機制可以提供很好的實時性[9],基于DSP核心的DSP+DSP/BIOS子系統提供高精度多軸伺服控制。
在基于異構多核處理器的數控系統內部,處理器架構的差異和操作系統的差異導致任務在不同的核心上運行時間不相同,任務在不同的處理器核心之間遷移的開銷巨大[10]。異構多核架構中,提高處理系統性能的關鍵就是合理的任務分配,任務分配的目標就是找出一個任務組合,使得這些任務能夠滿足實時性要求的同時,整個系統執行效率達到最優[11]。
異構多處理機系統的任務分配被證明是一個NP完全問題,而異構多核處理器能等效為一個片上的多處理機系統,異構多核處理器的任務最優化分配同樣是一個NP完全問題。在嵌入式系統中進行任務分配時主要考慮的因素有:任務的執行時間、任務的執行頻率、優先級、通信、系統資源等[7,12]。
本文在多機系統中任務的分配方法[11]基礎上,提出異構多核嵌入式數控系統中的任務分配策略:①給同一個處理器核心分配相互通信頻繁的任務;②給同一個處理器核心分配最適合該處理器的任務;③給同一個處理器核心分配最少的任務;④均衡各個處理器核心的負載;⑤將任務靜態分配成多個子集,每一個子集對應到不同的處理器核心上。
數控系統是一個多任務和高實時并存的系統,在數控系統內部,任務主要分為實時任務和非實時任務。數控系統內部任務有用戶界面(HMI)、軟PLC、G代碼解釋、粗插補、精插補、任務控制器、手輪控制、速度規劃、運動控制等。顯示任務與圖形環境密切相關,圖形環境是Linux系統的一部分,因此將和圖形顯示相關的任務安排到Linux系統下運行。數控系統通過軟PLC實現對IO的控制,IO控制任務對實時性的要求不高,不與運動控制等任務進行交互,軟PLC既可以安排在實時系統中運行,也可以安排在非實時系統中運行。在數控加工過程中,由G代碼解析、插補算法、速度規劃、運動控制等任務構成一個加工過程。其中G代碼解釋任務既可以運行在實時系統中也可以運行在非實時系統中,G代碼解釋需要用到大量的分支判斷等操作。數控系統的運動控制任務、插補任務、速度規劃任務在獲得G解釋器的數據之后,通過實時性周期地運行實現數控加工過程的精度控制,這些任務中包含大量的數學運算,屬于計時密集型任務。數控系統中的手輪任務需要系統能夠對手輪的操作進行實時響應。
結合不同任務對實時性的要求和本文提出的任務分配策略,對數控系統內部任務進行分解,降低不同處理器核心的耦合度,從而將整個系統劃分成兩個以處理器核心為單位的并行子系統,如圖2所示。在數控系統內部的任務中,G代碼解釋任務、運動控制任務、插補任務、軌跡規劃任務之間需要進行大量的數據交互,但是G代碼解釋任務與其他任務之間的交互較少。將計算密集而且實時性要求較高,同時數據交互量大的運動控制任務、插補任務、軌跡規劃任務作為一組實時的周期任務分配到DSP核心上執行;將具有實時性要求,但不是周期任務的手輪控制任務安排在DSP核心上作為一個高優先級中斷任務執行;將與Linux系統關系緊密的圖形顯示任務分配到ARM核心下運行,用戶界面運行在ARM Linux子系統下[13];將軟PLC安排在ARM核心上執行;為實現平衡處理器核心的負載,將G代碼解釋任務安排在ARM端執行,并且通過核心之間的共享內存實現與實時任務的通信(圖1)。

圖2 靜態任務分配圖
嵌入式操作系統的引導過程與系統的硬件結構相關,本文使用主從方法加載操作系統,并提出一種基于共享內存的核心間的協同工作機制。
1.4.1 操作系統加載方式與運行方式
目前的主從架構的嵌入式結構中,通用的處理器負責所有資源的管理和操作,專用的處理器負責計算加速[6]。本文在異構雙核處理器的核心上運行不同操作系統,通過串行的啟動方式來啟動兩個核心上的操作系統。首先在ARM處理器端啟動Linux系統,然后通過Linux系統向DSP加載操作DSP/BIOS操作系統。通過運行在DSP核心的實時系統,讓實時任務常駐DSP核心上,實現數控系統內部任務的并行執行。
1.4.2 核心間的通信方法
基于異構雙核處理器的數控系統中同時存在兩種不同的操作系統(ARM Linux子系統和DSP+DSP/BIOS子系統)和三種任務間的通信模式(ARM核心內部的任務通信,DSP核心內部的任務通信,ARM與DSP核心間的通信),其中,前兩種通信模式屬于操作系統內部的通信,由操作系統維護,ARM與DSP核心間的任務通信可以通過處理器間的共享物理內存實現。在數控系統中,實時任務運行在DSP核心上,非實時任務運行在ARM處理器核心上,兩種不同的任務之間通過共享物理內存的方式進行通信。在共享內存上,定義了能夠被兩個處理器核心訪問的共享數據結構,用于兩個處理器之間信息的通信。
在硬件上,將物理內存劃分為五個區域,包括Linux的系統內存、用于兩個核心之間通信的共享內存、DSP/BIOS的系統內存和兩塊保護內存區域(圖3)。實時任務與非實時任務進行通信的共享數據結構保存在ARM處理器核心和DSP核心之間專屬的共享內存區域。這片內存區域由DSP/BIOS進行初始化,并且創建共享數據結構。共享數據結構創建成功之后,DSP/BIOS將共享內存的實際物理地址通過處理器核心間的消息總線傳遞到運行在ARM端的Linux系統中,Linux系統在獲得共享內存的信息之后,按照地址轉換協議,將該共享內存的地址信息轉換成Linux可以直接訪問的地址,并且將共享內存的地址指向該內存區域。

圖3 內存分配圖
共享內存中的數據結構采用互斥鎖的機制,在不同的操作系統中通過唯一的ID對該內存進行標識。當處理器核心的任務需要對共享數據結構進行讀寫操作時,首先需要獲得互斥鎖,然后對共享內存中的數據結構進行讀寫操作;當任務完成對共享內存數據結構的讀寫操作之后,釋放互斥鎖,并通知正在等待訪問共享內存的任務。這種互斥共享數據結構實現了不同處理核心上的各個任務之間對共享內存數據互斥的訪問,同時可以保證DSP核心和ARM核心間共享數據的同步。
通過將總線技術與嵌入式技術結合,實現高速的控制,通信專用芯片采用現場可編程邏輯門陣列(FPGA),實現SSB-III總線的鏈路層功能,整個鏈路層可以劃分為三個邏輯部分:物理層接口、鏈路層邏輯功能和用戶層接口[8]。通過將與電機控制相關的伺服單元直接與DSP核心相連,實現DSP對伺服電機的控制??偩€的驅動分布在不同的核心之上,可以獲得較高的實時性,如圖4所示。首先由ARM核心完成總線的初始化工作,然后將運動總線的控制權限交給DSP+DSP/BIOS實時子系統,由于DSP+DSP/BIOS子系統的實時性好,所以可以實現高精度的控制。

圖4 總線驅動模型
在傳統的單核的嵌入式數控系統中,數控系統內部的實時任務和非實時任務是串行的,如圖5a所示。使用ARM+DSP結構的嵌入式數控系統中,由于DSP處理器僅僅起到的是加速作用,因此數控系統內部的實時任務和非實時任務之間也是串行執行的,如圖5b所示。本文實現的基于異構處理器的嵌入式數控系統中,通過運行在不同的處理器核心上的操作系統對該處理器核心上的任務進行調度,真正實現數控系統內實時與非實時任務的并行執行,如圖5c所示。記T為數控系統一個任務周期的執行時間,tn為一個控制周期內的非實時任務的執行時間,tr為一個控制周期內的實時任務的執行時間,則傳統單核處理器嵌入式數控系統的一個控制周期的執行時間為


圖5 任務的執行流對比圖
記tt為不同處理器之間的通信時間,t′r為一個控制周期內實時任務在DSP上的執行時間。則

式(2)表示的是傳統的ARM+DSP的一個控制周期的執行時間。則本文實現的嵌入式數控系統的一個控制周期的執行時間為

本文開發了一個基于OMAP3530的嵌入式數控系統,OMAP3530是一款異構處理器,同時具備ARM核心和DSP核心,該處理器充分利用控制性能優異的ARM體系結構和計算機功能強大的DSP體系結構。使用FPGA技術實現了嵌入式數控系統與運動控制總線的集成。本文在完成的數控系統和現場總線驅動板卡上一共連接了三套伺服驅動系統,系統的拓撲結構如圖6所示。

圖6 實驗環境
為了驗證本文實現的數控系統的實時性,本文選擇中斷響應延遲和任務的周期抖動作為評價指標,對數控系統進行測試。本文開發的數控系統和基于X86的數控系統對比結果如表1所示,表中記錄的是在一個完整的加工過程中的最大調度抖動和最大中斷響應延遲。由實驗的結果可知,由于DSP的體系結構簡單,DSP/BIOS具有精簡實時性高、可以直接訪問硬件等特點,運行在DSP上的運動控制任務調度抖動比較小,DSP對中斷的響應時間要比X86平臺短,更適合實時控制。

表1 X86與DSP的實時性對比 μs
數控系統的高速高精運動控制對總線的要求主要體現在以下幾方面[13]:①實時循環周期一般在1~10ms之間;②總線傳輸的確定性;③執行命令與反饋的同步性;④支持I/O設備信號的傳遞;⑤支持非周期的數據。針對上述要求,本文在基于OMAP3530處理器和FPGA的嵌入式數控系統上,對影響總線傳輸實時性的中斷響應延遲和影響總線傳輸確定性的中斷抖動兩個性能參數開展了相關實驗測試工作。
本文采用OMAP3530處理器自身的定時器來測量中斷延遲。記gt_rate為定時器的頻率,則有

其中,式(4)表示定時器的初始值為start_tick,從start_tick開始經過n秒后定時器將產生一個溢出中斷,此時定時器會自動重載start_tick,然后繼續計時。系統響應該中斷后進入相應中斷服務函數,此時調用針對OMAP平臺的內核系統函數,用式(6)獲得定時器當前的數值end_tick,代入式(5)即可獲得中斷響應延遲intr_delay。
本文選取2ms作為SSB-Ⅲ現場總線通信周期,實驗測得的總線中斷周期數據如圖7所示,最大偏差(實際周期與理論周期2ms的最大偏離值)為34.615μs,可見基于OMAP3530處理器和FPGA的SSB-Ⅲ總線周期具有很好的確定性。

圖7 現場總線中斷周期
本文通過對數控加工中電機的控制過程的仿真,對運行在嵌入式實時系統上的數控系統中的插補任務執行時間進行了測試。
如圖8所示,該加工過程中,總共有1356段命令線段,在數控軟件的參數里將運行周期設置為1ms,實際任務周期范圍介于1.03~0.973ms之間,可以滿足實時控制和加工的要求。

圖8 數控系統任務周期
本文提出了一種基于異構雙核處理器和現場總線的嵌入式數控系統的設計與實現方法,該方法通過在異構雙核處理器的核心上同時運行兩個操作系統,結合靜態劃分的方法對數控系統任務進行劃分,實現嵌入式的數控系統,結合現場總線技術使數控系統具有良好的可擴展性。通過將基于異構多核處理器的嵌入式數控系統的中斷響應延遲和中斷抖動兩個實時性能指標和基于PC的數控系統進行對比,以及對現場總線的性能測試和數控加工過程主要任務執行時間的測試,證明了本文提出的基于異構多核處理器的嵌入式數控系統具有良好的實時性,能夠滿足數控加工的需求,可以為高性能嵌入式數控系統的體系結構提供參考。
[1]徐躍,王太勇,趙艷菊,等.基于ARM和DSP的可重構數控系統[J].吉林大學學報(工學版),2008,38(4):848-851.Xu Yue,Wang Taiyong,Zhao Yanju,et al.Reconfigurable CNC System Based on ARM and DSP[J].Journal of Jilin University(Engineering and Technology Edition),2008,38(4):848-851.
[2]孫程建.基于Linux的嵌入式數控系統底層軟件設計[D].武漢:武漢科技大學,2007.
[3]李愛朝,林桂清,陳小亮.采用ARM和DSP的數控系統硬件設計及驅動開發[J].現代制造工程,2010(5):27-29.Li Aichao,Lin Guiqing,Chen Xiaoliang.Design of NC System Hardware Based on ARM&DSP and Driver Development[J].Modern Manufacturing Engineering,2010(5):27-29.
[4]李春江,楊學軍.主從式單邊異構多核處理器編程模型和編譯架構[J].計算機工程與科學,2009,31(8):66-68.Li Chunjiang,Yang Xuejun.The Programming Model and Compilation Framework for Master-Slave One-sided Heterogeneous Multi-core Processors[J].Computer Engineering & Science,2009,31(8):66-68.
[5]汪少敏,趙猛,朱振博,等.基于多核處理器并發計算軟件構架設計與實現[J].計算機科學,2008,35(7):283-285.Wang Shaomin,Zhao Meng,Zhu Zhenbo,et al.Multi core Processor Based Software Framework Design and Implementation for Concurrent Computation[J].Computer Science,2008,35(7):283-285.
[6]胡毅,于東,李培楠,等.基于現場總線的開放式數控系統的設計與實現[J].小型微型計算機系統,2008,29(9):1745-1749.Hu Yi,Yu Dong,Li Peinan.Design and Implementation of Open CNC System Based on Fieldbus[J].Journal of Chinese Computer Systems,2008,29(9):1745-1749.
[7]王志成,于東,張曉輝,等.數控系統現場總線可靠通信機制的研究[J].機械工程學報,2011,47(3):152-158.Wang Zhicheng,Yu Dong,Zhang Xiaohui,et al.Study on Reliable Communication Mechanism of Field-bus for Numerical Control System[J].Chinese Journal of Mechanical Engineering,2011,47(3):152-158.
[8]Preissig S,Beal D,Jacquiot A.采用Linux與DSP/BIOS RTOS實施雙OS信號處理技術[J].電子設計技術,2009(3):70-73.Preissig S,Beal D,Jacquiot A.The Implementation of the Dual OS Signal Processing Technology Based on Linux and DSP/BIOS RTOS[J].EDN China,2009(3):70-73.
[9]王超,陳香蘭,周學海,等.異構多核平臺上基于任務劃分和調度的性能評估方法[J].中國科學院研究生院學報,2012,29(2):257-263.Wang Chao,Chen Xianglan,Zhou Xuehai,et al.Performance Evaluation Based on Task Division and Scheduling in Heterogeneous Multi-core Systems[J].Journal of Graduate University of Chinese Academy of Sciences,2012,29(2):257-263.
[10]蔣建春,汪同慶.異構多核處理器的任務調度算法[J].計算機工程與應用,2009,45(33):52-56.Jiang Jianchun,Wang Tongqing.Task Scheduling Algorithm for Heterogeneous Multi-core Processor[J].Computer Engineering and Applications,2009,45(33):52-56.
[11]董珍.異構多核處理器的任務調度分配問題及算法研究[D].哈爾濱:哈爾濱工程大學,2010.
[12]彭蔓蔓,徐立超,王穎.異構多核處理器的任務分配及能耗的研究[J].計算機應用研究,2010,27(5):1729-1731+1736.Peng Manman,Xu Lichao,Wang Ying.Task Allocation and Energy on Heterogeneous Multi-core Processors[J].Application Research of Computers,2010,27(5):1729-1731.
[13]林立明,于東,胡毅,等.一種嵌入式總線運動控制器的實時系統設計[J].中國機械工程,2013,24(4):494-499.Lin Liming,Yu Dong,Hu Yi,et al.Design of Realtime System for a Fieldbus-based Embedded Motion Controller[J].China Mechanical Engineering,2013,24(4):494-499.