謝 杰
(韶關(guān)學(xué)院 物理與機(jī)電工程學(xué)院,廣東 韶關(guān)512005)
本文主要是定量分析在制作一個(gè)微控制器實(shí)時(shí)處理系統(tǒng)程序時(shí),程序結(jié)構(gòu)形式和程序長(zhǎng)短分配與控制實(shí)時(shí)性的關(guān)系,從實(shí)時(shí)控制的時(shí)間角度,相對(duì)處理器而言,定義了程序的時(shí)間效率,從實(shí)時(shí)效率角度揭示和度量了程序的時(shí)間可擴(kuò)展性.
在實(shí)時(shí)控制系統(tǒng)中,程序的目的就是實(shí)時(shí)控制對(duì)象,這個(gè)實(shí)時(shí)控制時(shí)間設(shè)為,由控制對(duì)象決定,實(shí)時(shí)程序的執(zhí)行時(shí)間與程序的實(shí)時(shí)控制時(shí)間是相等的,程序的執(zhí)行過(guò)程就是控制過(guò)程,因此程序的執(zhí)行時(shí)間也為T(mén).
程序由指令構(gòu)成,程序的執(zhí)行時(shí)間取決于程序的指令速度與程序的長(zhǎng)度,有些處理器指令速度是一樣的,如ARM系列等,有些處理器指令速度是不一樣的,如51系列[1],AVR系列[2].定義概念,程序的平均指令周期TZ,程序的運(yùn)行長(zhǎng)度為n,n包含程序中循環(huán)過(guò)程,子程序過(guò)程,中斷過(guò)程,根據(jù)上面分析可得表達(dá)式(1).
程序的執(zhí)行時(shí)間等于程序的指令長(zhǎng)度乘以平均指令周期.在表達(dá)式1中可以發(fā)現(xiàn)程序?qū)懙迷蕉蹋瑢?shí)時(shí)控制時(shí)間越短.從另一個(gè)角度來(lái)說(shuō),實(shí)時(shí)控制時(shí)間存在最小值.由于實(shí)時(shí)控制時(shí)間是固定的,那么實(shí)時(shí)控制程序的執(zhí)行時(shí)間T也是固定的,微處理器的指令平均周期TZ也是固定的,由表達(dá)式(1)可知,實(shí)時(shí)控制程序的指令長(zhǎng)度n也是固定的.
程序可分為兩類(lèi)作用的指令,一類(lèi)指令用來(lái)實(shí)現(xiàn)控制邏輯的指令,這一類(lèi)指令程序段的運(yùn)行時(shí)間設(shè)為T(mén)L,另一類(lèi)指令用來(lái)保證實(shí)時(shí)控制時(shí)間而加入的延時(shí)指令,這類(lèi)指令構(gòu)成的程序段的運(yùn)行時(shí)間設(shè)為T(mén)L,這樣程序的執(zhí)行時(shí)間可表示為表達(dá)式(2).
從表達(dá)式(2)中,程序的控制邏輯過(guò)程越短,需要延時(shí)的時(shí)間就越長(zhǎng),也就是說(shuō)微處理器的剩余時(shí)間越多,反過(guò)來(lái),程序的控制邏輯過(guò)程時(shí)間TL必須小于實(shí)時(shí)控制時(shí)間T,既要滿(mǎn)足表達(dá)式(3),否則控制超時(shí),程序就失去了控制意義.
根據(jù)表達(dá)式(1)可得:
表達(dá)式(4)表明實(shí)時(shí)控制時(shí)間固定的程序,那么程序的的運(yùn)行長(zhǎng)度也是固定的.
表達(dá)(1)代入表達(dá)式(2)可得表達(dá)式(5).
表達(dá)式(5)中,TLZ為算術(shù)邏輯運(yùn)算及控制指令平均周期,TYZ為延時(shí)指令平均周期.有些微處理器的指令周期是相等的,指令周期不相同的微處理器的大多數(shù)指令是單周期或者雙周期指令,在程序比較長(zhǎng)的時(shí)候,根據(jù)概率可以認(rèn)為指令周期是相等的[6],表達(dá)事(5)可變成表達(dá)式(6).
表達(dá)式(6)表明延時(shí)程序長(zhǎng)度nY與控制邏輯程序nL之和是固定的,控制邏輯程序越短,延時(shí)程序就越長(zhǎng).同樣,控制邏輯程序長(zhǎng)度不能大于實(shí)時(shí)程序的固定長(zhǎng)度,表達(dá)式(7),否則就失去了控制意義.
在編寫(xiě)實(shí)時(shí)控制程序之前,上面七個(gè)表達(dá)式可以對(duì)程序的長(zhǎng)度和時(shí)間起到估算作用.
在實(shí)時(shí)程序設(shè)計(jì)過(guò)程中,邏輯控制指令程序時(shí)間TL代表微處理器對(duì)控制對(duì)象的處理時(shí)間,延時(shí)指令程序時(shí)間TY表示微處理器的空閑時(shí)間,這樣就可以定義微處理器在時(shí)間上的控制效率ηT,表達(dá)式如下.
表達(dá)式(8)表明了效率越高,微處理器的空閑時(shí)間就越多,控制對(duì)象占有微處理器的時(shí)間資源就越少,同時(shí),邏輯控制時(shí)間越短,程序的效率就越高.根據(jù)表達(dá)式(6),表達(dá)式(8)可變成表達(dá)式(9).
表達(dá)式(9)表明了程序的時(shí)間效率等于延時(shí)程序長(zhǎng)度除以實(shí)時(shí)控制程序的固定長(zhǎng)度,邏輯控制程序段越短程序的效率就越高.定義實(shí)時(shí)控制程序的空閑時(shí)間與處理時(shí)間的比值K為擴(kuò)展度,可得表達(dá)式(10)如下.
表達(dá)式(10)表明了微處理器在時(shí)間上還可以再控制K個(gè)同等的對(duì)象,給出了微處理器的具體時(shí)間擴(kuò)展程度,也衡量的設(shè)計(jì)者的程序設(shè)計(jì)能力,可擴(kuò)展度數(shù)值越大,表明設(shè)計(jì)者程序編寫(xiě)能力越強(qiáng).
微處理機(jī)提供的程序運(yùn)行方式都可以歸結(jié)見(jiàn)圖1,圖中的箭頭表示程序流程,當(dāng)程序初始化后進(jìn)入主程序,主程序是一個(gè)循環(huán)程序,在主程序中可能產(chǎn)生的斷點(diǎn)是子程序、各種中斷程序,子程序產(chǎn)生的斷點(diǎn)是預(yù)先可知的,中斷程序產(chǎn)生的斷點(diǎn)是隨機(jī)的,不同的微處理器中斷個(gè)數(shù)是不一樣的,所有實(shí)時(shí)系統(tǒng)運(yùn)行方式都是一樣的,包括帶實(shí)時(shí)操作系統(tǒng)的控制系統(tǒng)[3].
可以認(rèn)為凡是要重復(fù)運(yùn)行的程序稱(chēng)為循環(huán)程序,那么微處理器提供的程序運(yùn)行方式都是是循環(huán)程序,主程序和定時(shí)中斷程序都可以看作是循環(huán)程序,外中斷程序可以看作是周期比較長(zhǎng)的循環(huán)程序,因?yàn)樗请S機(jī)的程序,它的循環(huán)周期是可變的,一次性運(yùn)行的程序,可以看作是循環(huán)一次的循環(huán)程序.原則上微處理器運(yùn)行的程序都可以歸結(jié)為循環(huán)程序.
絕大多數(shù)微處理器是單線(xiàn)程工作,各種程序不可能同時(shí)運(yùn)行,因此每個(gè)功能程序運(yùn)行有先有后[4-5].
圖1 微處理器程序結(jié)構(gòu)圖
一個(gè)實(shí)時(shí)控制系統(tǒng)常常包含著多個(gè)功能模塊,不同的程序方式一般對(duì)應(yīng)著不同的功能模塊,每個(gè)功能模塊都有自己固定的實(shí)時(shí)控制時(shí)間.每個(gè)功能模塊程序的運(yùn)行時(shí)間就是它們循環(huán)的時(shí)間,用T功能模塊表示,由于程序的運(yùn)行過(guò)程代表著控制過(guò)程,那么功能模塊的實(shí)時(shí)控制時(shí)間也是T功能模塊,事實(shí)上,由表達(dá)式(1)可知,時(shí)間與功能模塊程序的長(zhǎng)度有關(guān),用n功能模塊表示功能模塊程序長(zhǎng)度,整個(gè)系統(tǒng)的綜合實(shí)時(shí)性反應(yīng)時(shí)間用T表示.
在實(shí)時(shí)控制系統(tǒng)中,一般由多個(gè)功能模塊組成,建立一個(gè)多模塊控制系統(tǒng)模型,根據(jù)圖1,可是功能模塊主程序?yàn)锳,其它中斷模塊依次為B、C、D、E、F,也就是說(shuō),實(shí)時(shí)控制系統(tǒng)程序由這幾部分組成,當(dāng)然根據(jù)實(shí)際要求和微處理器程序結(jié)構(gòu)模塊可多可少,可以擴(kuò)展到n個(gè)功能模塊,本文只選擇了6個(gè).
功能模塊程序中也可分為兩類(lèi)指令,一類(lèi)是完成功能控制指令,另一類(lèi)是為了滿(mǎn)足時(shí)序的延時(shí)指令.設(shè)這兩類(lèi)指令時(shí)間分別用 T功能模塊L、T功能模塊Y表示.
根據(jù)圖1提供的程序結(jié)構(gòu)模型,如前所述,程序功能模塊依次為A、B、C、D、E、F.不同模塊控制的對(duì)象實(shí)時(shí)性要求不一樣,因此不同模塊有不同模塊的實(shí)時(shí)時(shí)間.用N表示模塊A、B、C、D、E、F,根據(jù)(6)表達(dá)式可得:
每個(gè)模塊都有不同的實(shí)時(shí)控制時(shí)間,但是整個(gè)程序是由每個(gè)功能模塊組成的一個(gè)整體,因此程序的效率要從整體上來(lái)分析.
每個(gè)功能模塊程序可分為邏輯運(yùn)算控制和延時(shí)等待兩部分時(shí)間,單片機(jī)是單線(xiàn)程工作的,有可能在A模塊的等待時(shí)間里面運(yùn)行B模塊的邏輯運(yùn)算控制工作,同樣的道理,在B模塊延時(shí)等待的時(shí)間里,運(yùn)行C模塊的邏輯運(yùn)算控制指令,也就是說(shuō),A模塊運(yùn)行時(shí)間包含B模塊運(yùn)行時(shí)間,B模塊運(yùn)行時(shí)間包含C模塊運(yùn)行時(shí)間,得出結(jié)論,程序運(yùn)行的方式是包含,實(shí)時(shí)控制時(shí)間最長(zhǎng)的功能模塊程序運(yùn)行,包含了其它所有功能模塊程序的運(yùn)行,因此整個(gè)程序的的執(zhí)行時(shí)間T不等于各功能模塊運(yùn)行時(shí)間之和,即:
由于包含關(guān)系,整個(gè)程序的運(yùn)行時(shí)間應(yīng)該是功能模塊中運(yùn)行時(shí)間最長(zhǎng)的,也就是實(shí)時(shí)控制周期最長(zhǎng)的那一個(gè)模塊的時(shí)間,這個(gè)模塊也是整個(gè)系統(tǒng)的程序的運(yùn)行時(shí)間,即可列如下表達(dá)式:
由于系統(tǒng)中程序運(yùn)行的包含性,系統(tǒng)模塊的運(yùn)行時(shí)間包含了每個(gè)功能模塊的邏輯控制處理部分TNL,為了保證程序的實(shí)時(shí)性,各功能模塊實(shí)現(xiàn)邏輯控制的處理時(shí)間之和必須小于等于系統(tǒng)的實(shí)時(shí)控制時(shí)間,可列得表達(dá)式(12)如下.
根據(jù)表達(dá)式(1)表達(dá)式(5),表達(dá)式(14)可變成表達(dá)式(15):
表達(dá)式(14)表明各模塊實(shí)現(xiàn)邏輯控制的程序段運(yùn)行時(shí)間之和受限于系統(tǒng)的實(shí)時(shí)控制時(shí)間,也就是功能模塊中實(shí)時(shí)時(shí)間最長(zhǎng)的時(shí)間,程序設(shè)計(jì)時(shí),一個(gè)模塊時(shí)間用多了,其它模塊的時(shí)間就少了.表達(dá)式(13)表明了一個(gè)模塊程序設(shè)計(jì)長(zhǎng)了,其它模塊程序就必須設(shè)計(jì)短一些,所有模塊的程序時(shí)間之和必須小于總時(shí)間或者說(shuō)模塊程序長(zhǎng)度之和必須小于等于固定的總長(zhǎng)n.
根據(jù)(13)表達(dá)式,(14)表達(dá)式可寫(xiě)成(14)表達(dá)式如下.
根據(jù)表達(dá)式(1)和表達(dá)式(6),表達(dá)式(15)可表示為表達(dá)式(17)
(17)式表明模塊中,實(shí)時(shí)控制最長(zhǎng)的時(shí)間必須大于等于各功能模塊算術(shù)邏輯運(yùn)算控制指令時(shí)間之和.
實(shí)現(xiàn)系統(tǒng)程序邏輯控制的指令時(shí)間是每個(gè)模塊的實(shí)現(xiàn)邏輯控制指令時(shí)間之和.
程序的延時(shí)指令時(shí)間是根據(jù)由程序效率定義可得表達(dá)式:TY=max(TA,TB,TC,TD,TE,TF)-TL
表達(dá)式(18)反映出實(shí)時(shí)控制系統(tǒng)的效率與各功能模塊實(shí)現(xiàn)邏輯控制的程序時(shí)間之和有關(guān),和的時(shí)間越小,效率越高,微處理器的空閑時(shí)間就越長(zhǎng),時(shí)間的擴(kuò)展性就越好.
根據(jù)表達(dá)式(1)和表達(dá)(6),表達(dá)試(20)可寫(xiě)成表達(dá)式(21).
根據(jù)表達(dá)式(11)和表達(dá)式(16),表達(dá)式(19)可以寫(xiě)成表達(dá)式(20).
表達(dá)式(21)實(shí)時(shí)控制程序的效率與各功能模塊的邏輯控制程序長(zhǎng)度有關(guān),各功能模塊的邏輯控制程序長(zhǎng)度之和越短,程序的效率就越高.表達(dá)式(19)可以估算程序設(shè)計(jì)之前每個(gè)功能模塊可以分配的程序長(zhǎng)度.
同樣,在實(shí)時(shí)程序完成之后評(píng)估程序的時(shí)間可擴(kuò)展性,根據(jù)表達(dá)式(10)和表達(dá)式(18)可寫(xiě)出多模塊實(shí)時(shí)系統(tǒng)的時(shí)間可擴(kuò)展度表達(dá)式(22)和表達(dá)式(23).
表達(dá)式(22)和(23)說(shuō)明程序的時(shí)間可擴(kuò)展度與程序的控制邏輯部分時(shí)間或者實(shí)現(xiàn)邏輯控制的程序長(zhǎng)度之和有關(guān),反過(guò)來(lái)說(shuō),在程序設(shè)計(jì)過(guò)程中,邏輯控制程序?qū)懙迷蕉?,程序的擴(kuò)展度越高,K的數(shù)值表示微處理器控制的實(shí)時(shí)系統(tǒng)還可以擴(kuò)展同樣系統(tǒng)的個(gè)數(shù).
以上分析主要用于微處理器實(shí)時(shí)程序設(shè)計(jì)之前的程序長(zhǎng)度計(jì)算或者估算,以及各功能模塊的時(shí)間分配與程序長(zhǎng)度的分配,避免花了大量時(shí)間編寫(xiě)實(shí)施控制程序之后不滿(mǎn)足時(shí)間控制條件,導(dǎo)至必須推倒重來(lái)的困境.
可擴(kuò)展度的建立,度量了設(shè)計(jì)程序的時(shí)間可擴(kuò)展性,衡量了一個(gè)設(shè)計(jì)程序在時(shí)間上的優(yōu)劣性,衡量了程序設(shè)計(jì)者的一個(gè)設(shè)計(jì)方面的能力,度量了各種微處理器的時(shí)間處理能力,通過(guò)時(shí)間度量來(lái)選擇合適的微處理器.
[1]李群芳,肖看,張士軍,單片微型計(jì)算機(jī)與接口技術(shù)[M].4版.北京:電子工業(yè)出版社,2012.
[2]周立功,ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].2版.北京:北京航空航天大學(xué)出版社,2008.
[3]Labrosse.嵌入式實(shí)時(shí)操作系統(tǒng) uC/OS-II[M].2 版.邵貝貝,譯.北京:北京航空航天大學(xué)出版社,2003.
[4]ATMEL 公司.ATmege 系列 User Manual[EB/OL].[2012-05-22].http://www.atmel.com.
[5]PHILIPS 公司.LPC2114/2114/2212/2214 User Manual 2004[EB/OL].[2012-05-22].http://www.zlgmcu.
[6]謝安,李東紅,概率論與數(shù)理統(tǒng)計(jì)[M].北京:清華大學(xué)出版社,2012.
韶關(guān)學(xué)院學(xué)報(bào)2013年2期