專利名稱:用于減少數(shù)據(jù)處理設(shè)備的處理時間的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于減少數(shù)據(jù)處理設(shè)備的處理時間的方法,所述設(shè)備包括處理設(shè)備(20)、慢速可存取的存儲器(10)、快速可存取的存儲器(30)以及數(shù)據(jù)拷貝設(shè)備(40)。
背景技術(shù):
所述方法已經(jīng)在例如已出版的“美國專利申請US2003/0126364”的現(xiàn)有技術(shù)中公開。其中,在段落
中,提及了一種現(xiàn)有技術(shù)的方法,其中,存儲在諸如ROM的非臨時性內(nèi)存部分(sector)中的數(shù)據(jù)首先被拷貝到快速可存取的RAM中,然后用所述部分覆蓋原先由所述ROM所占用的地址部分。所述專利申請還公開了一種方法,其通過使用兩個單獨的高速緩沖存儲器來改善所述處理時間。
所述現(xiàn)有技術(shù)方法的缺點在于所提及的所述第一方法仍然非常慢,同時,由于需要兩個單獨的高速緩沖存儲器,因此,所述第二方法消耗了過多的內(nèi)存空間。而且,所述結(jié)構(gòu)目前還不能從商業(yè)上獲得,因此其僅能夠用于本身從事處理器開發(fā)的公司。因此,對于購買可從商業(yè)上獲得的硬件的公司,所述現(xiàn)有技術(shù)解決方案是不可行的,所述硬件諸如是處理器和存儲器。
不使用兩個高速緩沖存儲器的其它現(xiàn)有技術(shù)方法試圖通過使用更快的數(shù)據(jù)傳輸和/或數(shù)據(jù)處理算法,來縮短處理時間或者縮短拷貝時間。
發(fā)明內(nèi)容
本發(fā)明的一個目的是提供一種用于減少處理時間的方法,所述方法是快速的,不需要使用單獨的高速緩沖存儲器,并且可以被應(yīng)用到商業(yè)上可獲得的設(shè)備上。
根據(jù)本發(fā)明,可以實現(xiàn)所述目的。
在所述方法中,在將來自下一部分的數(shù)據(jù)從慢速的基于部分的數(shù)據(jù)存儲設(shè)備拷貝到快速可存取的存儲器中的期間,由所述處理設(shè)備同時處理這樣的數(shù)據(jù),所述數(shù)據(jù)是已經(jīng)駐留在所述快速可存取的存儲器中的數(shù)據(jù),以及原本屬于所述基于部分的(sector-based)數(shù)據(jù)存儲設(shè)備的前一部分的數(shù)據(jù),其中,所述慢速的基于部分的數(shù)據(jù)存儲設(shè)備例如是閃存卡(flashmemory card),所述快速可存取的存儲器例如是RAM。所述解決方案可以通過驅(qū)動軟件模塊的模塊來實現(xiàn),并且因而,照此,所述解決方案可以應(yīng)用到商業(yè)上可獲得的設(shè)備上,所述設(shè)備可由所述程序模塊來存取和控制。
在所述數(shù)據(jù)沒有被立即存儲到所述快速可存取的存儲器的一部分中時,可能需要在所述快速可存取的存儲器中進行內(nèi)部重新定位,其中,處理應(yīng)用程序的代碼也存儲在所述快速可存取的存儲器中。并不是總能直接將所述數(shù)據(jù)存儲在所述快速存儲器的所述區(qū)域中,這樣,在多數(shù)實施例中,需要所述額外的重新定位的步驟。正如將在本專利的其它段落中描述的那樣,所述額外的重新定位的步驟所需時間是較少的。
不僅僅在從基于部分的數(shù)據(jù)存儲設(shè)備的讀操作的期間,而且在寫操作的期間,這進一步保證了減少的處理時間。
這保證了根據(jù)本發(fā)明的所述方法的可操作啟動,正如還將通過驅(qū)動軟件模塊的實施例而在本文件中的說明書部分中解釋和說明的那樣。
需要注意的是,在權(quán)利要求中所使用的“耦合”不應(yīng)當被解釋為僅限于直接的連接。因此,“被耦合到設(shè)備B設(shè)備A”的范圍就不應(yīng)當限于其中設(shè)備A的輸出直接連接到設(shè)備B的輸入的設(shè)備或者系統(tǒng)。其意味著在設(shè)備A的輸出和設(shè)備B的輸入之間存在路徑,所述路徑可以是包含其它設(shè)備或裝置的路徑。
需要注意的是,在權(quán)利要求中所使用的“包括”不應(yīng)當被解釋為限于其后所列舉的裝置。因此,“包括裝置A和B的設(shè)備”的范圍就不應(yīng)當限于僅由部分A和B組成的設(shè)備。其意味著就本發(fā)明而言,所述設(shè)備的相關(guān)部件僅僅為A和B。
結(jié)合附圖,通過參考下面實施例的描述,本發(fā)明上述以及其它的目的和特征將變得更加明顯,同時也能夠更好地理解本發(fā)明本身,其中圖1給出了其中可應(yīng)用本發(fā)明的數(shù)據(jù)處理設(shè)備的圖;圖2將現(xiàn)有技術(shù)的方法與本發(fā)明進行比較;圖3顯示了包括一些實現(xiàn)本發(fā)明的基本模塊的程序模塊流程。
具體實施例方式
本發(fā)明涉及數(shù)據(jù)的高速存取和處理,特別是對基于部分的數(shù)據(jù)存儲器的數(shù)據(jù)的高速存取和處理,而不用特定的硬件緩沖來讀取例如閃存儲卡以及一些磁盤驅(qū)動器的多個部分,??蓱?yīng)用本發(fā)明的數(shù)據(jù)處理設(shè)備的結(jié)構(gòu)在圖1和圖2中示出,所述結(jié)構(gòu)包括標注為20的處理設(shè)備、標注為10的基于部分的存儲設(shè)備、標注為30的快速可存取的存儲器、以及標注為40的數(shù)據(jù)拷貝設(shè)備。需要注意的是,所述數(shù)據(jù)拷貝設(shè)備也可以被合并進所述處理設(shè)備20中。但是,為了便于理解本方法,在附圖中將其作為單獨的實體來描述。
本發(fā)明以由處理設(shè)備20存取和處理來自基于部分的存儲設(shè)備10的數(shù)據(jù)的方法來進行處理。在現(xiàn)有的通常技術(shù)解決方案中,首先,通過所述數(shù)據(jù)拷貝設(shè)備40,,將大量的數(shù)據(jù)塊拷貝到所述快速可存取的存儲器,在所述步驟之后由所述處理設(shè)備20處理所述數(shù)據(jù)塊,其中所述數(shù)據(jù)拷貝設(shè)備40例如是簡稱為DMA的直接存儲器存取(DirectMemoryAccess)拷貝功能。只有在所述處理以及隨后將所處理的數(shù)據(jù)重新存儲到所述慢速存儲設(shè)備的原來的部分內(nèi)之后,才從所述慢速基于部分的存儲設(shè)備中讀取下一塊,用于臨時存儲在所述快速可存取的存儲器以及隨后的處理。為了加快所述過程,可以使用更快速的數(shù)據(jù)存儲設(shè)備,但是其通常都昂貴得多。類似的,也可以改進所述DMA功能,從而獲得短的拷貝時間。但是,不是所有這些解決方案都能在帶來期望速度的同時,保持結(jié)構(gòu)的簡單和廉價。
然而,本發(fā)明的方法保留了同樣簡單的結(jié)構(gòu),同時在速度上獲得了相當大的改進。如圖2所示,所述方法基于塊的并行數(shù)據(jù)傳輸和處理。這意味著,當從所述基于部分的存儲設(shè)備的特定部分拷貝數(shù)據(jù)到所述快速可存取的存儲器時,其中所述特定部分例如是部分j+1,此時例如部分j的前一部分的數(shù)據(jù)已經(jīng)被存儲在所述快速可存取存儲器中,所述前一部分的數(shù)據(jù)由所述處理設(shè)備20并行處理。類似的,當正在處理部分j的數(shù)據(jù)時,部分j-1的已經(jīng)被處理的數(shù)據(jù)被從所述快速可存取的存儲器拷貝回所述慢速基于部分的數(shù)據(jù)存儲器。
在優(yōu)選的解決方案中,所述數(shù)據(jù)直接從所述基于部分的存儲設(shè)備被拷貝到所述快速可存取的存儲器中的位置,其中也存儲所述處理應(yīng)用程序的代碼。這避免了在所述快速可存取的存儲器中,就所述特定位置對所述拷貝的數(shù)據(jù)進行額外的重新定位。由于所述直接傳送并不總是可行的,因此,在一些實施例中,所述額外的數(shù)據(jù)重新定位的步驟是必需的。所述重新定位在圖1和2中通過步驟2b“在快速存儲器中內(nèi)部重新定位”所指示,而從基于部分的存儲器到快速可存取存儲器的數(shù)據(jù)傳送通過步驟1所指示。由所述處理器從所述快速存儲器所獲得的數(shù)據(jù)的數(shù)據(jù)處理通過步驟2來指示,其描述了所述數(shù)據(jù)到所述處理器的一次傳送,以及在所述處理器本身內(nèi)部的處理。
時序上的改進可以從圖2得出來,其比較了傳統(tǒng)的方法和本發(fā)明的方法,在傳統(tǒng)的方法中,在可以對數(shù)據(jù)塊開始處理之前,首先會傳送所述數(shù)據(jù)塊,而在本發(fā)明的方法中,數(shù)據(jù)的傳送和處理同時進行。在實踐中,通過下列硬件/軟件平臺可以節(jié)省30%的時間所述處理器20是PowerPCIBM 750FX@733MHz,所述基于部分的存儲器10是壓縮閃存卡(Compactflash Card)SANDISK,所述快速存儲器30是接口運行@133MHz的64位寬SDRAM,所述拷貝功能40使用DMA,以及應(yīng)用程序在所述處理器20上運行的SREC處理SW。
如圖3所示,所述方法可以通過包含在應(yīng)用程序驅(qū)動模塊中的指令來實現(xiàn)。所述應(yīng)用程序驅(qū)動以指向所述基于部分的存儲器10的部分的指針的初始化開始,其中,從所述部分中讀取所述應(yīng)用程序所要處理的數(shù)據(jù)。在開始時,所述指針將被初始化為零。然后,所述驅(qū)動程序的下一步驟將是如通過鉆石形框2所表示的那樣,檢查在所述快速存儲器30中是否已經(jīng)可以獲得所述基于部分存儲器的下一部分的數(shù)據(jù)。在開始時,由于所述數(shù)據(jù)尚未從所述基于部分的存儲器10拷貝到所述快速存儲器30,因此,這將是否定的情形。下一步驟包括準備所述慢速基于部分的數(shù)據(jù)存儲器10用于讀取所述下一部分,以及拷貝所述部分到所述快速存儲器30,雖然在其中空閑的緩沖器中,但是其不被高層應(yīng)用程序所使用。在圖3中,這由框4所指示,其涉及第二快速存儲器緩沖器用以與所使用的當前緩沖器相區(qū)分,并且所述第二快速存儲器緩沖器可以由負責(zé)所述數(shù)據(jù)處理的程序所存取。
從所述時刻起,一部分中的數(shù)據(jù)就駐留在所述第二或空閑緩沖器—被稱作下一緩沖器,其中所述部分通常是所述應(yīng)用程序所需的第一部分,然而,在所述快速存儲器中可由高層應(yīng)用程序進行存取的緩沖器仍然是空閑的。因此處理還不會執(zhí)行,并且會被推遲到所述應(yīng)用程序請求下一部分時為止。這由深色粗箭頭所指示,所述深色粗箭頭表示從所述高層應(yīng)用程序到所述應(yīng)用程序驅(qū)動的一種中斷信號,并且給出了從所述高層應(yīng)用程序到所述驅(qū)動程序的請求用于使所述部分有效。在所述時刻,所述驅(qū)動程序?qū)⑹紫热玢@石形的框5所示,檢查在所述快速存儲器中駐留于當前被指向的緩沖器里的數(shù)據(jù)是否包含所述被請求的數(shù)據(jù)。由于數(shù)據(jù)駐留于所述第二(下一)緩沖器,而不是當前所指向的緩沖器,因而這是否定的情形,因此,要通過鉆石形狀的框6來進行下一檢查,以檢查所述數(shù)據(jù)是否駐留于所述第二緩沖器中。由于現(xiàn)在是這種情形,因此,指向所述基于部分的存儲器的指針將通過框7來更新。接下來,在所述快速存儲器中所述內(nèi)部重新定位的步驟將通過框8來進行,這樣所述數(shù)據(jù)就被拷貝到所述快速存儲器中的當前緩沖器中,所述緩沖器從而是由所述高層應(yīng)用程序代碼實際存取和使用的緩沖器。接下來,如離開框8的兩個箭頭所示,將同時進行對所述當前緩沖器中的數(shù)據(jù)的處理過程,以及進行從所述基于部分的存儲器中讀取下一部分的數(shù)據(jù)的過程。其中一個箭頭指向已經(jīng)描述的指令集2、3和4,所述指令形成將所述數(shù)據(jù)從所述基于部分的存儲器到所述快速存儲器的拷貝過程;另一箭頭指向橢圓形框9,表示處理所述當前部分的數(shù)據(jù)的處理。
如果在當前或下一扇區(qū)中不能獲得所述被請求的部分,如模塊6的“否”分支所示,這表示前面執(zhí)行的所述下一扇區(qū)的讀取已經(jīng)完成,但是所述軟件希望存取在所述基于部分的設(shè)備中的完全不同的部分。在這種情況下,將用所述被請求的部分的數(shù)據(jù)來加載所述當前部分。并且將初始化所述下一部分,以獲取被所述請求部分之后的部分中已有的數(shù)據(jù),如框11所示。然后,所述程序?qū)⒃俅翁D(zhuǎn)到前面討論過的初始數(shù)據(jù)拷貝塊,在所述步驟之后,所述被請求的部分將由框8來讀取,并被交給所述應(yīng)用程序。在所述數(shù)據(jù)處理的同時,所述下一部分已被拷貝到快速存儲器。如通過模塊2、3和4所示的那樣。
需要說明的是,在圖3中給出的例子以連續(xù)的部分進行工作,所述連續(xù)的部分即當前的部分和下一部分。在所述快速存儲器具有更大緩存能力的情況下,在讀取下一部分的同時,對之前的部分進行處理(即與所述下一扇區(qū)之間具有大于1個部分的距離),這也是有可能。
還需要說明的是,如果所述應(yīng)用適于使用不同的緩沖器,并且在這里所描述的數(shù)據(jù)讀取策略被合并到所述應(yīng)用本身之中,那么所述數(shù)據(jù)可以被立即拷貝到將被所述應(yīng)用程序所使用的數(shù)據(jù)部分中。當只有一個應(yīng)用使用所述基于部分的數(shù)據(jù)存儲時,這是很有可能的,但是,在多個應(yīng)用共享相同的數(shù)據(jù)存儲設(shè)備的情況下,這將會變得很難管理。在所述情況下,僅是預(yù)先執(zhí)行將所述下一部分讀取到快速可存取存儲器,就可以獲得許多時間,而不會引入額外的復(fù)雜度。
盡管上面已經(jīng)就特定的裝置描述了本發(fā)明的原理,但是需要明確的是,所述描述僅是通過例子的方式來進行的,而不象所附權(quán)利要求那樣,作為對本發(fā)明范圍的限定。
權(quán)利要求
1.用于操作數(shù)據(jù)處理設(shè)備(D)的方法,所述設(shè)備包括處理設(shè)備(20)、慢速可存取的存儲器(10)、快速可存取的存儲器(30)以及數(shù)據(jù)拷貝設(shè)備(40),其特征在于,在將來自所述基于部分的存儲設(shè)備(10)的下一部分(j+1)的數(shù)據(jù)拷貝到所述快速可存取的存儲器(30)的期間,來自所述基于部分的存儲設(shè)備(10)的之前部分(j)的并且之前臨時存儲于所述快速可存取的存儲器(30)的數(shù)據(jù)同時由所述處理設(shè)備(20)來處理。
2.根據(jù)權(quán)利要求1的方法,其中,來自之前部分(j)的所述數(shù)據(jù)在被所述處理設(shè)備(20)處理之前,在所述快速可存取的存儲器(30)中被內(nèi)部重新定位。
3.根據(jù)權(quán)利要求1的方法,其中,當來自所述之前部分(j)的所述數(shù)據(jù)被處理并且臨時重新存儲于所述快速可存取的存儲器(30)中之后,在這樣的時間期間,將所述處理過的數(shù)據(jù)從所述快速可存取的存儲器(30)中重新拷貝到所述基于部分的存儲設(shè)備(10)中,其中,在所述時間期間內(nèi),來自下一部分(j+1)的臨時存儲在所述快速可存取的存儲器(30)中的數(shù)據(jù)被所述處理設(shè)備(20)處理。
4.根據(jù)前面權(quán)利要求中的任一個的方法,其中,所述方法包括下面的初始化步驟從所述基于部分的存儲設(shè)備(10)的第一和第二初始化部分向所述快速可存取的存儲器(30)傳送數(shù)據(jù)。
全文摘要
用于操作數(shù)據(jù)處理設(shè)備(D)的方法,所述設(shè)備包括處理設(shè)備(20)、慢速可存取的存儲器(10)、快速可存取的存儲器(30)以及數(shù)據(jù)拷貝設(shè)備(40),其特征在于,在將來自所述基于部分的存儲設(shè)備(10)的下一部分(j+1)的數(shù)據(jù)拷貝到所述快速可存取的存儲器(30)的期間,來自所述基于部分的存儲設(shè)備(10)的之前部分(j)的數(shù)據(jù)以及之前臨時存儲于所述快速可存取的存儲器(30)的數(shù)據(jù)同時由所述處理設(shè)備(20)來處理。
文檔編號G06F3/06GK1629825SQ20041009856
公開日2005年6月22日 申請日期2004年12月9日 優(yōu)先權(quán)日2003年12月17日
發(fā)明者L·沃格爾 申請人:阿爾卡特公司