免费色播,亚洲国产欧美国产第一区二区三区,毛片看,日本精品在线观看视频,国产成人精品一区二区免费视频,日本黄色免费网站,一级毛片免费

基于雙核處理器平臺(tái)的數(shù)控系統(tǒng)數(shù)控軟件架構(gòu)設(shè)計(jì)

來源:互聯(lián)網(wǎng)

點(diǎn)擊:1530

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞:數(shù)控系統(tǒng) 雙核處理 數(shù)控軟件

    0 前言

      隨著數(shù)控系統(tǒng)的不斷發(fā)展,控制周期越來越短,控制精度越來越高,控制算法越來越復(fù)雜,要同時(shí)運(yùn)行的功能模塊也越來越多,這都對(duì)當(dāng)前普遍采用的單核處理器平臺(tái)提出了嚴(yán)峻的挑戰(zhàn)。要在單核平臺(tái)上提高現(xiàn)有數(shù)控系統(tǒng)的性能或者集成更多的應(yīng)用,主要可以從以下方面考慮:一是采用更高性能的單核處理器,二是優(yōu)化現(xiàn)有數(shù)控系統(tǒng)的軟件架構(gòu),三是從各個(gè)細(xì)節(jié)上著手優(yōu)化具體的代碼和算法。但是這幾種方法都面臨著各種不同的困難。比如第一種方法,一般情況下性能或主頻的提升往往伴隨著功耗和發(fā)熱的增加,而數(shù)控系統(tǒng)的特點(diǎn)決定了其功耗不能太高,用于散熱裝置的空間有限,在這些約束下單核處理器的性能提升是有限的,因此這種方法有一定的局限性。

      本文主要采用雙核處理器平臺(tái)以解決前述問題。使用雙核處理器只需額外增加少量硬件和軟件設(shè)計(jì)工作,即可使系統(tǒng)性能有很大的提升,一些專門針對(duì)雙核處理器設(shè)計(jì)的軟件的性能提升甚至能接近兩倍。本文基于該平臺(tái),借鑒開源EMC2數(shù)控系統(tǒng)的軟件設(shè)計(jì),研究了雙核平臺(tái)上的數(shù)控軟件設(shè)計(jì)方案,并提出在類似平臺(tái)上進(jìn)行數(shù)控軟件設(shè)計(jì)和優(yōu)化的一般方法(同樣適用于有超過兩個(gè)核心的多核處理器)。

    1 雙核處理器的硬件結(jié)構(gòu)

      1.1 緩存結(jié)構(gòu)

      高速緩存(這里只考慮L2 Cache)是衡量處理器圖中處理器有兩個(gè)核心Core0和Corel,每個(gè)核心有各自的L2 Cache,兩個(gè)核心之間通過總線接口連接到前端總線。兩個(gè)核心可以同時(shí)各執(zhí)行一個(gè)任務(wù),當(dāng)兩邊緩存需要保持一致性時(shí)則通過前端總線進(jìn)行通信。程序運(yùn)行時(shí)的局部性好壞會(huì)影響緩存命中率,因此應(yīng)該把重要的實(shí)時(shí)任務(wù)安排到一個(gè)固定的核心上,并防止其他無關(guān)任務(wù)擠占對(duì)應(yīng)的緩存,這樣可以提高實(shí)時(shí)任務(wù)運(yùn)行速度和實(shí)時(shí)性。

    圖1 獨(dú)立緩存結(jié)構(gòu)的CPU

      1.2 中斷管理

      中斷處理會(huì)對(duì)程序的運(yùn)行速度和實(shí)時(shí)性產(chǎn)生影響。高頻率外部中斷會(huì)不停地打斷正常的程序執(zhí)行流,如果中斷處理程序也比較耗時(shí),就可能會(huì)導(dǎo)致實(shí)時(shí)任務(wù)在運(yùn)行過程中不斷被打斷和推遲,超過要求的時(shí)間限度。目前在中斷管理上普遍采用可編程中斷控制器,可以通過編程的方式控制每個(gè)核心上的中斷響應(yīng),比如可以在某個(gè)核心上開啟或者關(guān)閉某個(gè)中斷。這樣就可以在運(yùn)行重要實(shí)時(shí)任務(wù)的核心上關(guān)閉無關(guān)的中斷,避免了實(shí)時(shí)任務(wù)被頻繁打斷,保證了任務(wù)的性能和實(shí)時(shí)性。

    2 雙核平臺(tái)需要的軟件支持

      2.1 操作系統(tǒng)支持

      要發(fā)揮雙核處理器的性能優(yōu)勢(shì),需要操作系統(tǒng)的密切配合。數(shù)控系統(tǒng)設(shè)計(jì)中應(yīng)用較多的實(shí)時(shí)系統(tǒng)有RTAI、RTLinux和Vxworks等,這些系統(tǒng)提供的實(shí)時(shí)控制功能大同小異,本文采用的系統(tǒng)平臺(tái)是RTcore(前身是RTLinux Pro)。

      RTCore是一款硬實(shí)時(shí)系統(tǒng),采用了雙內(nèi)核H1結(jié)構(gòu)。實(shí)時(shí)內(nèi)核運(yùn)行在最底層,直接管理時(shí)鐘和硬件中斷。實(shí)時(shí)任務(wù)運(yùn)行在實(shí)時(shí)內(nèi)核層,而Linux作為一個(gè)最低優(yōu)先級(jí)任務(wù)運(yùn)行,只有當(dāng)前沒有實(shí)時(shí)任務(wù)需要占用處理器時(shí),才會(huì)調(diào)度Linux系統(tǒng)運(yùn)行。RTcore支持sMP對(duì)稱多處理平臺(tái),提供了豐富的實(shí)時(shí)進(jìn)程調(diào)度、進(jìn)程通信和中斷管理等功能,可以滿足在雙核處理器平臺(tái)上設(shè)計(jì)數(shù)控系統(tǒng)的需求。

      2.2 應(yīng)用程序的支持

      僅有硬件和操作系統(tǒng)的支持還不夠,要充分利用多核平臺(tái)的性能優(yōu)勢(shì),還需要應(yīng)用程序本身的支持。在這方面可以采用的方法主要是多線程編程,把原來由一個(gè)線程串行處理的工作交由多個(gè)線程并行處理,可以大幅度提高處理速度。

      除了多線程技術(shù),多核處理器上的軟件開發(fā)還有一些其他需要考慮的問題。比如對(duì)實(shí)時(shí)性有要求的應(yīng)用,可以采用線程.處理器綁定、處理器預(yù)留和中斷屏蔽等技術(shù),提高應(yīng)用的性能和實(shí)時(shí)性。

    3 單核平臺(tái)上的數(shù)控軟件架構(gòu)

      3.1 EMC2數(shù)控軟件架構(gòu)

      EMC2開放數(shù)控系統(tǒng)的軟件架構(gòu)主要由四個(gè)功能模塊組成(圖2)。其中運(yùn)動(dòng)控制器(MOTION)完成軸的插補(bǔ)和伺服控制,對(duì)響應(yīng)時(shí)間要求很高,作為一個(gè)硬實(shí)時(shí)任務(wù)運(yùn)行;PLC控制離散IO,也作為硬實(shí)時(shí)任務(wù)運(yùn)行;任務(wù)控制器(TASK)和人機(jī)操作界面(HMI)則完成對(duì)系統(tǒng)整體運(yùn)行的操作和控制,作為非實(shí)時(shí)任務(wù)運(yùn)行。

    圖2 EMC2軟件架構(gòu)

      在運(yùn)行RTCore系統(tǒng)的單核處理器上,任意時(shí)刻只有一個(gè)線程在CPu上運(yùn)行,RTCore會(huì)按照設(shè)定的調(diào)度策略優(yōu)先調(diào)度上述兩個(gè)實(shí)時(shí)模塊運(yùn)行,當(dāng)所有實(shí)時(shí)模塊的時(shí)間片消耗完而被內(nèi)核中斷或者完成一個(gè)周期循環(huán)并主動(dòng)放棄處理器進(jìn)入休眠以后,實(shí)時(shí)內(nèi)核會(huì)調(diào)度Linux運(yùn)行非實(shí)時(shí)線程。

      3.2 單核平臺(tái)上存在的問題

      在基于單核處理器的數(shù)控系統(tǒng)中,當(dāng)實(shí)時(shí)模塊數(shù)量增加,或者單個(gè)實(shí)時(shí)模塊CPU占用時(shí)間過長,或者出現(xiàn)高頻率中斷,都可能會(huì)導(dǎo)致各種問題。比如CPU占用率過高,多個(gè)周期實(shí)時(shí)線程無法合理調(diào)度,這將導(dǎo)致某些實(shí)時(shí)任務(wù)尚未完成就被迫讓出處理器,或者某些任務(wù)長時(shí)間占用處理器而影響其他實(shí)時(shí)任務(wù)的執(zhí)行,實(shí)時(shí)性和可靠性受到影響。

      同樣,對(duì)于運(yùn)行于Linux中的非實(shí)時(shí)任務(wù),當(dāng)加入的監(jiān)控、調(diào)試等數(shù)控實(shí)用程序增多時(shí),這些任務(wù)要共享分配給Linux的CPU時(shí)間,可能會(huì)出現(xiàn)嚴(yán)重的延時(shí)執(zhí)行問題,比如人機(jī)界面反應(yīng)遲鈍、Linux中斷處理過度延時(shí)或丟失數(shù)據(jù)等問題。

      通過采用雙核處理器,可以把負(fù)載按照一定的要求均衡地分布到兩個(gè)核心上,避免負(fù)載增大導(dǎo)致的實(shí)時(shí)性和可靠性問題。

    4 雙核平臺(tái)上的數(shù)控軟件線程模型

      PLC和MOTl0N模塊中實(shí)際執(zhí)行實(shí)時(shí)控制任務(wù)的是若干個(gè)實(shí)時(shí)線程。當(dāng)實(shí)時(shí)模塊加載入RTCore時(shí),會(huì)創(chuàng)建實(shí)時(shí)線程,這些實(shí)時(shí)線程按照規(guī)定的周期進(jìn)行循環(huán),每次循環(huán)中執(zhí)行一些操作然后休眠。PLc中有兩個(gè)低優(yōu)先級(jí)實(shí)時(shí)線程,TaskThread用來執(zhí)行用在RTCore中創(chuàng)建實(shí)時(shí)線程之前可以設(shè)置運(yùn)行該線程的核心,同時(shí)采用處理器預(yù)留技術(shù)把該核心預(yù)留給實(shí)時(shí)應(yīng)用,這樣就可以把實(shí)時(shí)和非實(shí)時(shí)部分隔離到不同的核心上。

    圖3 實(shí)時(shí)與非實(shí)時(shí)分開處理的架構(gòu)

      4.3 關(guān)于任務(wù)的可調(diào)度性問題

      采用線程綁定和處理器預(yù)留技術(shù)可以直接把模塊按照實(shí)時(shí)和非實(shí)時(shí)分配到兩個(gè)核心上運(yùn)行,但是具體實(shí)現(xiàn)上還有一些需要深入考慮的問題。比如多個(gè)周期性實(shí)時(shí)線程能否在單個(gè)核心上合理調(diào)度?如果能合理調(diào)度的話,這兩個(gè)核心上的負(fù)載分配如何?前一個(gè)問題就是任務(wù)的可調(diào)度性問題,后面一個(gè)就是負(fù)載均衡問題。

      針對(duì)實(shí)時(shí)任務(wù)的可調(diào)度性問題,目前應(yīng)用最廣泛的是速率單調(diào)(簡稱RM)算法,該算法適用于可搶占靜態(tài)優(yōu)先級(jí)周期性實(shí)時(shí)任務(wù)的調(diào)度。理想的RM算法模型基于一系列假設(shè),而本文所采用的數(shù)控系統(tǒng)實(shí)現(xiàn)從一定程度上滿足這些假設(shè)條件,因此可以直接使用RM算法對(duì)可調(diào)度性進(jìn)行判定。

      RM算法的可調(diào)度性判定公式為:

      其中n為周期線程的數(shù)目,Ci是線程i的周期內(nèi)最大運(yùn)行時(shí)間,Ti是線程i的周期。只要某核心上所有的實(shí)時(shí)線程滿足上面的條件,就是可調(diào)度的。本文采用的數(shù)控軟件在某種參數(shù)配置下的線程時(shí)間如下。

      如果把這三個(gè)實(shí)時(shí)線程都放到同一個(gè)核心上,用RM算法判定結(jié)果是U=0.6215<0.7798,滿足可調(diào)度性條件,所有實(shí)時(shí)線程可以按照預(yù)定的時(shí)間要求運(yùn)行,這時(shí)該核心的負(fù)載約為62.15%。下面是該數(shù)控系統(tǒng)在另外一種參數(shù)配置下的線程時(shí)間。

      判定結(jié)果是U=0.816>0.7798,因而是不可調(diào)度的,這意味著在這種參數(shù)配置下,如果所有線程都安排到同個(gè)核心上,則線程無法按照預(yù)定的時(shí)間要求運(yùn)行,低優(yōu)先級(jí)實(shí)時(shí)線程可能出現(xiàn)不同程度的延遲,可能會(huì)影響到數(shù)控機(jī)床的正常運(yùn)行。

      4.4 不可調(diào)度情況下的線程重分配

      在表2所示情況下,線程無法合理調(diào)度,這時(shí)可以考慮減少這個(gè)核心上的實(shí)時(shí)線程數(shù),多出的實(shí)時(shí)線程分配到另外一個(gè)核心Core0上。那么選擇哪幾個(gè)線程與Linux共享Core0呢?這里要重點(diǎn)考慮兩個(gè)問題:一是線程的重要性和優(yōu)先級(jí),二是線程交互的情況。首先,應(yīng)盡量保證最重要的線程在專用核心corel上運(yùn)行,一般來說循環(huán)周期短、優(yōu)先級(jí)高的線程相對(duì)比較重要,比如emcmotTask線程,因而不應(yīng)該把該線程移到Core0上。其次,考慮線程交互情況,互相之間存在頻繁數(shù)據(jù)通信的幾個(gè)線程應(yīng)該盡量放到同一個(gè)核心上,比如PLCThread和emcmotTask線程之間共享大量數(shù)據(jù),則把這兩個(gè)線程一起放在Corel上,而把TaskThread放到Core0上。這種情況下的線程安排如圖4。

    圖4另外一種線程分配

      這樣安排完之后還要再次進(jìn)行測(cè)算,保證各核心上的實(shí)時(shí)線程滿足調(diào)度要求。Core0上只有Task.Thread這一個(gè)實(shí)時(shí)線程,一定可以調(diào)度。而Corel上,U=0.7135<0.8284,滿足可調(diào)度性條件,因而這種安排是合理的。

      4.5 負(fù)載均衡

      假設(shè)所有實(shí)時(shí)線程按照?qǐng)D3的方案分配到Corel上,對(duì)于表3所示的線程時(shí)間,計(jì)算出u=0.7265<0.7798,滿足可調(diào)度性條件,但是該核心負(fù)載比較高;而core0上只有Linux,負(fù)載比較低。從負(fù)載均衡的角度考慮,可以把一些低優(yōu)先級(jí)和實(shí)時(shí)性要求相對(duì)較低的實(shí)時(shí)線程(比如TaskThread)放到core0上,使兩個(gè)核心上的負(fù)載更均衡一些。另外,如果各核心負(fù)載都比較低,并且緩存失效和線程調(diào)度等造成的時(shí)間消耗遠(yuǎn)小于實(shí)時(shí)線程運(yùn)行時(shí)間的話,也可以考慮直接采用RTCore默認(rèn)線程分配策略,即由調(diào)度器動(dòng)態(tài)地在兩個(gè)核心上調(diào)度線程運(yùn)行,線程與核心沒有固定的對(duì)應(yīng)關(guān)系。

    5 雙核平臺(tái)上的中斷管理

      在運(yùn)行RTCore系統(tǒng)的雙核平臺(tái)上,中斷管理比較靈活,用戶可以根據(jù)需要對(duì)中斷進(jìn)行精細(xì)的控制,比如單獨(dú)為每個(gè)中斷設(shè)置處理器親和性。設(shè)計(jì)實(shí)時(shí)數(shù)控系統(tǒng)時(shí),要區(qū)分實(shí)時(shí)和非實(shí)時(shí)中斷。實(shí)時(shí)中斷是直接與數(shù)控系統(tǒng)相關(guān)的中斷,必須馬上予以處理;而其他的則是非實(shí)時(shí)中斷,比如IDE接口、網(wǎng)卡和串口等占用的中斷,不必馬上處理。注冊(cè)了實(shí)時(shí)中斷后,每當(dāng)產(chǎn)生這中斷,處理器立即停止正在執(zhí)行的任何實(shí)時(shí)和非實(shí)時(shí)代碼,轉(zhuǎn)而執(zhí)行對(duì)應(yīng)的實(shí)時(shí)中斷處理程序;而如果產(chǎn)生的是非實(shí)時(shí)中斷,則RTCore只是簡單地做一個(gè)標(biāo)記,表明產(chǎn)生了一個(gè)需要由Linux來處理的中斷請(qǐng)求,等處理器在空閑時(shí)間運(yùn)行Linux時(shí),存在于Linux內(nèi)核中的中斷處理程序才真正處理這個(gè)請(qǐng)求。

      一般情況下實(shí)時(shí)中斷處理程序和數(shù)控實(shí)時(shí)線程之間存在著頻繁的數(shù)據(jù)通信。這時(shí)可以使實(shí)時(shí)中斷請(qǐng)求指向?qū)崟r(shí)專用核心,而其他非實(shí)時(shí)中斷則指向另外一個(gè)核心。這樣做有一個(gè)前提,即實(shí)時(shí)中斷處理不能導(dǎo)致實(shí)時(shí)線程過度延期。通常情況下中斷處理時(shí)間遠(yuǎn)遠(yuǎn)小于應(yīng)用程序運(yùn)行時(shí)間,因而可以忽略其影響。但是如果實(shí)時(shí)中斷頻率比較高,處理時(shí)間又比較長,就必須考慮中斷對(duì)實(shí)時(shí)線程的影響。通常外部中斷的產(chǎn)生具有一定的隨機(jī)性,在此可以進(jìn)行一些簡化,認(rèn)為實(shí)時(shí)中斷是一個(gè)周期性中斷。這樣就會(huì)有中斷周期和周期內(nèi)最大處理時(shí)間,可以把該中斷處理程序看成一個(gè)周期性實(shí)時(shí)線程,然后采用RM算法判定其可調(diào)度性。比如表4的例子,U=0.495<0.7798,因此把該中斷指向?qū)崟r(shí)專用核心是可以的。

    6 總結(jié)

      設(shè)計(jì)基于雙核處理器平臺(tái)的數(shù)控軟件架構(gòu)時(shí)要考慮的問題主要包括緩存局部性、任務(wù)可調(diào)度性、負(fù)載均衡和中斷管理。在線程分派方面,

      (1)如果線程的實(shí)時(shí)性要求不高,線程調(diào)度等導(dǎo)致的延遲不會(huì)影響實(shí)時(shí)性的話,可以采用內(nèi)核默認(rèn)的自由調(diào)度方案。

      (2)從性能和實(shí)時(shí)性方面考慮,可以直接把實(shí)時(shí)線程和非實(shí)時(shí)線程分派到不同核心上。

      (3)經(jīng)RM算法判定實(shí)時(shí)線程無法在一個(gè)核心上合理調(diào)度的話,取出若干個(gè)重要性和實(shí)時(shí)性要求較低的實(shí)時(shí)線程放到非實(shí)時(shí)線程所在核心上。

      (4)在各核心上實(shí)時(shí)線程滿足可調(diào)度性要求的前提下,從負(fù)載均衡方面考慮,也可以取出若干個(gè)重要性和實(shí)時(shí)性要求較低的實(shí)時(shí)線程放到非實(shí)時(shí)線程所在核心上。

      在中斷管理方面,要根據(jù)中斷的實(shí)時(shí)性要求以及與實(shí)時(shí)線程的交互關(guān)系,把中斷請(qǐng)求指向不同的核心。在實(shí)際應(yīng)用中,要綜合考慮線程的實(shí)時(shí)性要求、線程交互、調(diào)度器損耗和中斷干擾等因素,結(jié)合本文提出的方法,對(duì)數(shù)控軟件架構(gòu)進(jìn)行設(shè)計(jì),以充分利用雙核處理器平臺(tái)的性能優(yōu)勢(shì)。

    (審核編輯: 智匯張瑜)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。