專利名稱:動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法
技術(shù)領域:
本發(fā)明為一種有關于數(shù)據(jù)處理方法,特別指一種應用于串行端口驅(qū)動程序(serial driver)中,可根據(jù)數(shù)據(jù)傳輸量進行緩沖區(qū)(FIFO buffer)長度動態(tài)調(diào)整來控制中斷請求間隔的方法。
背景技術(shù):
在既有串行數(shù)據(jù)傳輸處理的結(jié)構(gòu)里(如圖1中所示),串行端口驅(qū)動程序(serial driver)30往往被用來作為負責微處理器10和外圍裝置50之間數(shù)據(jù)傳輸?shù)闹饕獪贤蛄?。當外圍裝置50有任務要執(zhí)行,需要進行數(shù)據(jù)傳輸處理的時候,便會由對應負責的串行端口驅(qū)動程序30負責向微處理器10發(fā)出中斷(interrupt)請求,而在微處理器10接收到來自串行端口驅(qū)動程序30的中斷請求之后,便會立刻分配一定的資源并允許對應的外圍裝置50開始執(zhí)行所請求的數(shù)據(jù)傳輸處理。
特別是在數(shù)據(jù)傳輸處理的過程中,串行端口驅(qū)動程序30主要用來負責微處理器10與外圍裝置50之間數(shù)據(jù)的輸入/輸出傳輸。而輸入/輸出傳輸通常會分別透過串行端口驅(qū)動程序30中的輸入緩沖區(qū)31及輸出緩沖區(qū)32來進行,所謂的緩沖區(qū)(FIFO buffer)即是可用來暫時保留等待傳輸處理數(shù)據(jù)的內(nèi)存,主要用來作為微處理器10與外圍裝置50之間數(shù)據(jù)傳輸處理的緩沖之用。
關于緩沖區(qū)的用途已為現(xiàn)有技術(shù)范疇,在此不多作贅述。但是由于過去對于緩沖區(qū)的使用上,都是采取固定長度(fixed length)的模式在進行(如圖1中輸入緩沖區(qū)31及輸出緩沖區(qū)32),也就是緩沖區(qū)的長度大小及可容納的數(shù)據(jù)量為固定的,因此往往在需要傳輸處理的數(shù)據(jù)量相當大的時候,這種固定長度的緩沖區(qū)就經(jīng)常會因為數(shù)據(jù)處理速率的不一致,而導致暫存在緩沖區(qū)中的數(shù)據(jù)超出緩沖區(qū)可容納的最大范圍而發(fā)生溢位的錯誤情形;反之,當需要傳輸處理的數(shù)據(jù)量非常小的時候,這種固定長度的緩沖區(qū)卻也經(jīng)常會因為緩沖區(qū)中的暫存數(shù)據(jù)量不足,而無法產(chǎn)生中斷請求加以傳輸處理,影響到整體的運作效果。
因此,在實際數(shù)據(jù)傳輸處理過程中,串行端口驅(qū)動程序30中的緩沖區(qū)確實有必要隨時依據(jù)數(shù)據(jù)傳輸量來進行緩沖區(qū)長度的動態(tài)調(diào)整,以使得串行端口驅(qū)動程序30能夠在最適當?shù)臅r機向微處理器10發(fā)出中斷請求進行數(shù)據(jù)傳輸處理,如此才能夠使微處理器10與外圍裝置50之間的數(shù)據(jù)傳輸處理能夠維持在最佳化的狀態(tài),同時使整體的效果也能夠達到最佳化的狀況。如何設計一種可以依據(jù)實際數(shù)據(jù)傳輸量來動態(tài)調(diào)整串行端口驅(qū)動程序30中緩沖區(qū)長度的方法,是本發(fā)明的重點所在。
發(fā)明內(nèi)容根據(jù)現(xiàn)有的串行數(shù)據(jù)傳輸處理所存在的問題點,本發(fā)明的目的在于提供一種動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法。
為實現(xiàn)上述目的,本發(fā)明所提供的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法可依據(jù)數(shù)據(jù)傳輸量來進行動態(tài)調(diào)整的模式,也即具有動態(tài)長度(dynamic length)的緩沖區(qū)模式,該方法包含有下列步驟首先取得起始傳輸時間、數(shù)據(jù)傳輸總量、及終止傳輸時間;透過運算求得數(shù)據(jù)傳輸量;判斷是否符合標準區(qū)間?當該數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi),且相對數(shù)值落于接近該標準區(qū)間上限時,增長緩沖區(qū)長度;當該數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi),且相對數(shù)值落于接近該標準區(qū)間下限時,縮短緩沖區(qū)長度;最后,依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)產(chǎn)生中斷請求,開始進行傳輸數(shù)據(jù)處理。
相較于現(xiàn)有技術(shù),本發(fā)明可避免數(shù)據(jù)傳輸量大時,增長緩沖區(qū)的長度以減少數(shù)據(jù)溢位的情況發(fā)生;同時也可減少數(shù)據(jù)傳輸量小時,縮短緩沖區(qū)的長度以提升整體的運作效果。
圖1是現(xiàn)有的串行數(shù)據(jù)傳輸處理的結(jié)構(gòu)框圖。
圖2是本發(fā)明所提的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法的結(jié)構(gòu)框圖。
圖3是本發(fā)明所提的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法的運作流程圖。
具體實施方式本發(fā)明提出一種動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法。由圖1的現(xiàn)有結(jié)構(gòu)及圖2的本發(fā)明結(jié)構(gòu)中可清楚發(fā)現(xiàn),本發(fā)明的主要技術(shù)特征在于能夠?qū)⒓扔写卸丝隍?qū)動程序30(serial driver)中的緩沖區(qū)(FIFO buffer)(包括輸入緩沖區(qū)31及輸出緩沖區(qū)32)從以往的固定長度(fixed length)的模式更改為可依據(jù)實際數(shù)據(jù)傳輸量來進行動態(tài)調(diào)整的模式,也即具有動態(tài)長度(dynamiclength)的緩沖區(qū)模式。
本發(fā)明方法主要應用于計算機可執(zhí)行平臺之上,特別是用來提升計算機可執(zhí)行平臺中微處理器10與外圍裝置50之間的數(shù)據(jù)傳輸處理的效果(如圖2中所示),因此只要具有微處理器10的計算機可執(zhí)行平臺均可以應用本發(fā)明方法,例如手持式移動通信裝置(handheld device)中的智能型手機(Smartphone)。
本發(fā)明方法的運作流程,將配合圖3的部分加以說明(請搭配參考圖2的部分)。當外圍裝置50對串行端口驅(qū)動程序30發(fā)出數(shù)據(jù)傳輸處理的請求時,此時串行端口驅(qū)動程序30會在向微處理器10發(fā)出中斷(interrupt)之前,執(zhí)行本發(fā)明方法進行關于緩沖區(qū)長度的動態(tài)調(diào)整,完成之后才向微處理器10發(fā)出中斷并開始數(shù)據(jù)傳輸處理的作業(yè)。至于本發(fā)明方法的詳細說明如下首先,當串行端口驅(qū)動程序30接收到來自外圍裝置50所發(fā)出的數(shù)據(jù)傳輸處理請求時,便開始啟動本發(fā)明方法并取得啟動時的起始傳輸時間(步驟100);啟動之后,串行端口驅(qū)動程序30便向外圍裝置50請求讀取所需傳輸處理數(shù)據(jù)的總數(shù)據(jù)量(步驟110);并同時預估并取得外圍裝置50將所有傳輸處理數(shù)據(jù)傳送至串行端口驅(qū)動程序30上的終止傳輸時間(步驟120);然后根據(jù)預設的表達式來計算出數(shù)據(jù)傳輸量(步驟130),表達式可以下列公式來加以表示M=D/(T2-T1);其中,M為數(shù)據(jù)傳輸量,其單位為字節(jié)/滴答(byte/tick);D為數(shù)據(jù)傳輸總量,其單位為字節(jié)(byte);T1及T2分別為起始傳輸時間及終止傳輸時間,其單位為滴答(tick),為一般計算機可執(zhí)行平臺中所產(chǎn)生的內(nèi)部時序單位。
計算出數(shù)據(jù)傳輸量之后,便進一步判斷此數(shù)據(jù)傳輸量是否符合所預設的標準區(qū)間?(步驟140)此一標準區(qū)間,為可提供使用者依照計算機可執(zhí)行平臺狀態(tài)而自行調(diào)整定義的默認值,包含有數(shù)據(jù)傳輸上限及下限的范圍區(qū)間,依照數(shù)據(jù)傳輸量落于此區(qū)間的數(shù)值來決定應該對緩沖區(qū)進行增長長度或是縮短長度。
當計算出的數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi)(即符合標準區(qū)間),則判斷該數(shù)據(jù)傳輸量是否接近標準區(qū)間上限?(步驟150)當數(shù)據(jù)傳輸量相對數(shù)值落于接近標準區(qū)間上限時,便執(zhí)行將緩沖區(qū)增長的程序(步驟151),理論上所增長的緩沖區(qū)長度最大為1/2緩沖區(qū)的長度,此增長限制僅為本發(fā)明方法中的較佳實施例而已,實際上此限制也可提供使用者自行加以定義。
當計算出的數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi)(即符合標準區(qū)間),且數(shù)據(jù)傳輸量相對數(shù)值未落于接近標準區(qū)間上限時,則判斷該數(shù)據(jù)傳輸量是否接近標準區(qū)間下限?(步驟152)當數(shù)據(jù)傳輸量相對數(shù)值落于接近標準區(qū)間下限時,便執(zhí)行將緩沖區(qū)縮短的程序(步驟153),理論上所縮短的緩沖區(qū)長度最小為1字節(jié)的長度,同樣地此縮短限制僅為本發(fā)明方法中的較佳實施例而已,實際上此限制也可提供使用者自行加以定義。當計算出的數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi)(即符合標準區(qū)間),且數(shù)據(jù)傳輸量相對數(shù)值未落于接近標準區(qū)間下限時,此時串行端口驅(qū)動程序30便會依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)實時產(chǎn)生中斷請求,并將中斷請求發(fā)送至微處理器10中并開始進行傳輸數(shù)據(jù)處理(步驟160)。
完成上述步驟100至步驟151、步驟153之后,即已經(jīng)完成整個動態(tài)調(diào)整緩沖區(qū)的流程,此時串行端口驅(qū)動程序30便會依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)實時產(chǎn)生中斷請求,并將中斷請求發(fā)送至微處理器10中并開始進行傳輸數(shù)據(jù)處理(步驟160)。由于此時緩沖區(qū)長度已經(jīng)過最佳化的動態(tài)調(diào)整,所以任何來自外圍裝置50的待傳輸處理數(shù)據(jù)在緩沖區(qū)中都能夠以最順利、最有效率的方式傳輸至微處理器10中處理。
標準區(qū)間為使用者自定義的部分,可以隨時視整體運作狀態(tài)而作實時的調(diào)整,進而使緩沖區(qū)長度的動態(tài)調(diào)整與微處理器10和外圍裝置50之間的數(shù)據(jù)傳輸處理能夠更加順利。舉例來說,若以使用于智能型手機的通用異步收發(fā)器(Universal Asynchronous Receiver-Transmitter,UART)的串行傳輸作業(yè)來看,較佳的標準區(qū)間上限為160字節(jié)/秒,標準區(qū)間下限為5字節(jié)/秒。
以上所述僅為本發(fā)明其中的較佳實施例而已,并非用來限定本發(fā)明的實施范圍,事實上只要應用在計算機可執(zhí)行平臺上并且透過串行端口驅(qū)動程序所進行的任何數(shù)據(jù)傳輸處理程序都可以套用本發(fā)明方法。
權(quán)利要求
1.一種動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,作用于一計算機可執(zhí)行平臺之上,在外圍裝置透過串行端口驅(qū)動程序(serial driver)請求執(zhí)行數(shù)據(jù)傳輸處理時,可對串行端口驅(qū)動程序中的緩沖區(qū)(FIFO buffer)進行動態(tài)調(diào)整以提升數(shù)據(jù)傳輸處理效果,其特征在于該方法包含下列步驟取得一起始傳輸時間(T1)、讀取一數(shù)據(jù)傳輸總量(D)及一終止傳輸時間(T2);進行運算求得一數(shù)據(jù)傳輸量(M);判斷該數(shù)據(jù)傳輸量是否落于一標準區(qū)間內(nèi);當該數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi),且相對數(shù)值落于接近該標準區(qū)間上限時,增長緩沖區(qū)長度;當該數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi),且相對數(shù)值落于接近該標準區(qū)間下限時,縮短緩沖區(qū)長度;及依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)產(chǎn)生中斷請求,開始進行傳輸數(shù)據(jù)處理。
2.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于該計算機可執(zhí)行平臺是指具微處理器的手持式移動通信裝置(handhelddevice)。
3.根據(jù)權(quán)利要求2所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于該計算機可執(zhí)行平臺是指智能型手機(Smartphone)。
4.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于該起始傳輸時間(T1)及該終止傳輸時間(T2),均是以該計算機可執(zhí)行平臺中所產(chǎn)生的內(nèi)部時序單位為準,此單位為滴答(tick)。
5.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于該數(shù)據(jù)傳輸總量(D),是以字節(jié)(byte)為單位。
6.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于該數(shù)據(jù)傳輸量(M)的求取,可透過下列表達式來計算得出M=D/(T2-T1);其單位為字節(jié)/滴答(byte/tick)。
7.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于該標準區(qū)間為使用者可自定義的默認值,包含有數(shù)據(jù)傳輸上限及下限的范圍。
8.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于增長緩沖區(qū)長度的步驟中,所增長的緩沖區(qū)長度最大為1/2緩沖區(qū)的長度。
9.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,其特征在于縮短緩沖區(qū)長度的步驟中,所縮短的緩沖區(qū)長度最小為1字節(jié)的長度。
全文摘要
一種動態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長度的方法,于串行端口驅(qū)動程序(serialdriver)執(zhí)行數(shù)據(jù)傳輸處理時,依數(shù)據(jù)傳輸量動態(tài)調(diào)整緩沖區(qū)(FIFO buffer)長度。該方法包含有下列步驟首先取得起始傳輸時間、數(shù)據(jù)傳輸總量、及終止傳輸時間;透過運算求得數(shù)據(jù)傳輸量;判斷是否符合標準區(qū)間?當該數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi),且相對數(shù)值落于接近該標準區(qū)間上限時,增長緩沖區(qū)長度;當該數(shù)據(jù)傳輸量落于標準區(qū)間內(nèi),且相對數(shù)值落于接近該標準區(qū)間下限時,縮短緩沖區(qū)長度;最后,依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)產(chǎn)生中斷請求,開始進行傳輸數(shù)據(jù)處理。如此將可避免數(shù)據(jù)傳輸量大時,因緩沖區(qū)長度不足且中斷請求間隔過長而造成數(shù)據(jù)溢位;同時也可減少數(shù)據(jù)傳輸量小時,因緩沖區(qū)長度過長且中斷請求間隔過長而造成整體效果不明顯。
文檔編號G06F13/38GK1773476SQ200410052088
公開日2006年5月17日 申請日期2004年11月8日 優(yōu)先權(quán)日2004年11月8日
發(fā)明者葉承溱 申請人:佛山市順德區(qū)順達電腦廠有限公司, 神達電腦股份有限公司