專利名稱:在嵌入式系統(tǒng)的閃存中讀寫數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在閃存中讀寫數(shù)據(jù)的方法,尤其指一種在嵌入 式系統(tǒng)的閃存中的同 一 分區(qū)同時讀寫數(shù)據(jù)的方法。
背景技術(shù):
反或型閃存(NOR Flash)是英特爾(Intel)公司研發(fā)出來的 架構(gòu),其可以在單位數(shù)據(jù)塊(Block )上進行讀寫。近年來NOR Flash 一直被廣泛運用在嵌入式系統(tǒng)領(lǐng)域中,尤其是如移動電話之類的移 動裝置上。由于NORFlash具有隨機存取的特性,因此除可作為一 般的數(shù)據(jù)儲存外,也可供系統(tǒng)用來在其上執(zhí)行程序代碼。
另一方面,為了滿足移動裝置多媒體需求的應(yīng)用,目前NOR Flash都提供了同時讀寫(read while write/erase, RWW/E )的功能, 通過針對內(nèi)部數(shù)據(jù)進行數(shù)據(jù)分區(qū)(partition )及分組(bank )的管理, 當(dāng)系統(tǒng)對NOR Flash的一個數(shù)據(jù)分區(qū)(partition)進行讀取(read) 動作時,可同時對其他數(shù)據(jù)分區(qū)進行寫入(write)或抹除(erase) 的動作。請參考圖1,圖1為現(xiàn)有技術(shù)中NOR Flash內(nèi)存10的內(nèi)存 數(shù)據(jù)管理示意圖。內(nèi)存10以邏輯層20的方式分為多個數(shù)據(jù)分區(qū)22, 其中每個數(shù)據(jù)分區(qū)22的大小可為512KB、 1MB或2MB。每一數(shù)據(jù) 分區(qū)22中則包含多個數(shù)據(jù)塊32。事實上,多個數(shù)據(jù)塊32定義于實 體層30中。如前所述,這種RWW/E的雙操作(dual operation )模 式,對于功能越來越強的移動裝置效能有相當(dāng)顯著的改善。
然而RWW/E功能有一個石更件限制,亦即"在對一個數(shù)據(jù)分區(qū) 進行讀取動作時,不能同時間對同 一數(shù)據(jù)分區(qū)進行寫入或抹除的動 作"。原因在于閃存在處理上層命令如讀取、寫入、」沐除時,以總 線周期(bus cycle)為單位來4丸行,而非以指令本身為單位來沖丸行。 舉例而言,完成一個4未除指令需要二個bus cycle,而完成一個讀取 指令則4又需要一個bus cycle,若同時對同 一凄t據(jù)分區(qū)的;也址進4亍讀 取及抹除的動作時,則該讀取指令的bus cycle極有可能會落在抹除 指令二個bus cycle間,此舉將造成存取該數(shù)據(jù)分區(qū)的地址混亂,而 造成閃存發(fā)生裝置錯誤。
發(fā)明內(nèi)容
因此,本發(fā)明的主要目的在提供一種于嵌入式系統(tǒng)的閃存中讀
寫彩::悟的方法以解決上述問題。
本發(fā)明提供一種于嵌入式系統(tǒng)的閃存中讀寫數(shù)據(jù)的方法,該嵌 入式系統(tǒng)包含閃存以及高速緩沖存儲器,其中該閃存包含多個數(shù)據(jù) 分區(qū),每個數(shù)據(jù)分區(qū)中包含多個數(shù)據(jù)塊,該方法包括偵測該閃存中 欲變更內(nèi)容的數(shù)據(jù)塊、根據(jù)特定條件將該閃存中用來變更該數(shù)據(jù)塊 的變更程序代碼復(fù)制至該高速緩沖存儲器中、以及依據(jù)儲存于該高 速緩沖存4諸器中的該變更程序代碼用以變更該凄t據(jù)塊。
由于處理器中的高速緩沖存儲器與閃存相比而言具備極快的
數(shù)據(jù)存取速度,因此數(shù)據(jù)塊# (N-l)的抹除程序代碼被加載至高速
緩沖存儲器相對于閃存的數(shù)據(jù)存取而言僅需極短的時間,且當(dāng)抹除 程序代碼;故加載至高速緩沖存儲器后,本發(fā)明即采取直接在高速緩
沖存儲器執(zhí)行該抹除程序代碼,以抹除數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊弁N的 數(shù)據(jù),如此可避免在數(shù)據(jù)塊# (N-l)上執(zhí)行抹除程序代碼所造成的 總線周期沖突,且相對于讀取凄"居塊# (N-l )的纟末除程序代碼以及 」抹除數(shù)據(jù)塊N的數(shù)據(jù)來說,可^L為同時進行,如此則實現(xiàn)了在閃存中可同時進行讀取與變更凝:據(jù)(RWW/E)的石更件特性,解決現(xiàn)有技 術(shù)中對一個凄t據(jù)分區(qū)進4亍讀取動作時,不能同時間對同 一凄t據(jù)分區(qū) 進行寫入或^末除的動作的RWW/E硬件限制。
圖1為先前4支術(shù)中NOR Flash內(nèi)存的內(nèi)存數(shù)據(jù)管理示意圖。 圖2為本發(fā)明于閃存中讀寫數(shù)據(jù)的方法的流程圖。 圖3為本發(fā)明一實施例的示意圖。
圖4為本發(fā)明產(chǎn)生無命中高速緩存的程序代碼一實施例的示意圖。
具體實施例方式
一般嵌入式系統(tǒng)內(nèi)建的處理器中多具有指令高速緩存 (instruction cache ),而指令高速緩存的大小因不同的產(chǎn)品而異,本 發(fā)明即利用具有高速運算特性的指令高速緩存以達成針對同 一數(shù) 據(jù)分區(qū)同時進行讀取以及抹除(或?qū)懭?的動作。
請參考圖2,圖2為本發(fā)明于閃存中讀寫數(shù)據(jù)的方法的流程圖。 流程圖包含下列步驟
步驟102:于嵌入式系統(tǒng)中激活^t據(jù)變更程序;
步驟104:偵測該嵌入式系統(tǒng)的閃存中欲變更的數(shù)據(jù)塊;
步驟106:偵測該閃存中用來變更該凄t據(jù)塊的變更程序代碼是 否與欲變更的該數(shù)據(jù)塊位于相同數(shù)據(jù)分區(qū)中;若否,則執(zhí)行步驟 114;步驟108:于處理器的高速緩沖存儲器中產(chǎn)生一無命中高速緩 存(instruction cache miss );
步驟110:當(dāng)嵌入式系統(tǒng)的處理器偵測到該無命中高速緩存時, 將該變更程序代碼加載至該高速緩沖存儲器;
步驟112:執(zhí)行儲存于該高速緩沖存儲器中的該變更程序代碼, 以變更該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容;執(zhí)行步驟116;
步驟114:執(zhí)行儲存于該閃存中位于另一數(shù)據(jù)分區(qū)的該變更程 序代碼,以變更該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容;
步-驟116:結(jié)束。
據(jù)塊中或抹除該數(shù)據(jù)塊的內(nèi)容。
請參考圖3,圖3為本發(fā)明于嵌入式系統(tǒng)100的閃存40中可于 同 一 分區(qū)同時進行讀取與變更數(shù)據(jù)的方法的 一 實施例的示意圖。于 嵌入式系統(tǒng)100中具有閃存40,其包含多個彩:據(jù)塊42 (在圖3中 為其中同一數(shù)據(jù)分區(qū)弁A的多個數(shù)據(jù)塊42),嵌入式系統(tǒng)100還包含 處理器50,處理器50內(nèi)具有高速緩沖存儲器52。閃存40用來儲 存嵌入式系統(tǒng)100中操作系統(tǒng)程序代碼及周邊驅(qū)動程序代碼。當(dāng)處 理器50接收到命令欲抹除數(shù)據(jù)塊弁N的數(shù)據(jù)時,若用來執(zhí)行抹除這 段區(qū)塊數(shù)據(jù)的抹除程序代碼恰好位于同一數(shù)據(jù)分區(qū)弁A內(nèi)的數(shù)據(jù)塊# (N-l ),如此則發(fā)生了已知的RWW/E的硬件限制。
在這種情況下,本發(fā)明的方法利用軟件程序?qū)?shù)據(jù)塊# (N-l) 的抹除程序代碼放進高速緩沖存儲器52中,并在高速緩沖存儲器 52中執(zhí)行該抹除程序代碼。由于處理器50中的高速緩沖存儲器屬 于硬件內(nèi)存,無法直接通過軟件程序中將特定數(shù)據(jù)寫入,因此如圖
2的流程圖中步驟108所述,先產(chǎn)生無命中高速緩存(cache miss), 接著如步驟60讓處理器50自動將數(shù)據(jù)塊# (N-l )的抹除程序代碼 加栽到高速緩沖存儲器52中,關(guān)于其程序代碼一實施例如圖4所述。
由于處理器50中的高速緩沖存儲器52與閃存40相比而言具 備極快的數(shù)據(jù)存取速度,因此數(shù)據(jù)塊# (N-l )的抹除程序代碼被加 栽至高速緩沖存儲器52相對于閃存40的數(shù)據(jù)存取而言僅需極短的 時間,且當(dāng)抹除程序代碼被加載至高速緩沖存儲器52后,本發(fā)明 即采取直接在高速緩沖存儲器52執(zhí)行該抹除程序代碼,以抹除數(shù) 據(jù)分區(qū)弁A中數(shù)據(jù)塊弁N的數(shù)據(jù),如此可避免在數(shù)據(jù)塊# (N-l )上執(zhí) 行抹除程序代碼所造成的總線周期沖突,且相對于讀取數(shù)據(jù)塊#
(N-l)的抹除程序代碼以及抹除數(shù)據(jù)塊N的數(shù)據(jù)來說,可視為同 時進行,如此則實現(xiàn)了在閃存40中可同時進行讀取與變更數(shù)據(jù)
(RWW/E)的硬件特性,解決現(xiàn)有技術(shù)中對一個數(shù)據(jù)分區(qū)進行讀取 動作時,不能同時間對同 一數(shù)據(jù)分區(qū)進行寫入或抹除的動作的 RWW/E;更件限制。
以上所述^叉為本發(fā)明的優(yōu)選實施例,凡4艮據(jù)本發(fā)明權(quán)利要求書 所做的均等變化與修飾,都應(yīng)屬本發(fā)明的涵蓋范圍。
主要組件符號說明
10,40 NOR Flash內(nèi)存
22凄t據(jù)分區(qū)
32,42 數(shù)據(jù)塊
52 高速緩沖存儲器
20 邏輯層 30 實體層 50 處理器 60,70, 102~116 步驟
100 嵌入式系統(tǒng)^
權(quán)利要求
1.一種于嵌入式系統(tǒng)的閃存中讀寫數(shù)據(jù)的方法,所述嵌入式系統(tǒng)包含閃存以及高速緩沖存儲器,其中所述閃存包含多個數(shù)據(jù)分區(qū),每個數(shù)據(jù)分區(qū)中包含多個數(shù)據(jù)塊,所述方法包括偵測所述閃存中欲變更的數(shù)據(jù)塊;根據(jù)特定條件,將所述閃存中用來變更所述數(shù)據(jù)塊的變更程序代碼復(fù)制至所述高速緩沖存儲器中;以及根據(jù)儲存于所述高速緩沖存儲器中的所述變更程序代碼來變更所述數(shù)據(jù)塊。
2. 4艮據(jù)權(quán)利要求1所述的方法,其中所述特定條件包含偵測所述 變更程序代碼是否與欲變更的所述數(shù)據(jù)塊位于相同的數(shù)據(jù)分區(qū)中。
3. 根據(jù)權(quán)利要求2所述的方法,其中將所述閃存中用來變更所述 數(shù)據(jù)塊的所述變更程序代碼復(fù)制至所述高速緩沖存儲器中,當(dāng) 所述變更程序代碼與欲變更的所述數(shù)據(jù)塊位于所述相同數(shù)據(jù) 分區(qū)時,將所述變更程序代碼復(fù)制至所述處理器的高速緩沖存 儲器中。
4. 根據(jù)權(quán)利要求1所述的方法,所述高速緩沖存儲器被包含于所 述嵌入式系統(tǒng)中的處理器中,其中將所述閃存中用來變更所述 數(shù)據(jù)塊的所述變更程序代碼復(fù)制至所述高速緩沖存儲器中的 步駛《包4舌在所述高速緩沖存儲器中產(chǎn)生無命中高速緩存;以及 所述處理器于偵測到所述無命中高速緩存時,將所述變更程序代碼加載至所述高速緩沖存儲器。
5. 根據(jù)權(quán)利要求1所述的方法,其中變更所述數(shù)據(jù)塊是將數(shù)據(jù)寫 入所述數(shù)據(jù)塊中。
6. 根據(jù)權(quán)利要求1所述的方法,其中變更所述數(shù)據(jù)塊是4未除所述 數(shù)據(jù)塊的內(nèi)容。
全文摘要
利用嵌入式系統(tǒng)中處理器的高速緩沖存儲器的高速存取數(shù)據(jù)特性,于閃存的同一數(shù)據(jù)分區(qū)發(fā)生讀取數(shù)據(jù)與寫入(抹除)數(shù)據(jù)的情況發(fā)生時,以于高速緩沖存儲器中產(chǎn)生一無命中高速緩存的方式,使處理器將欲讀取的數(shù)據(jù)加載高速緩沖存儲器中,并于高速緩沖存儲器中讀取欲讀取的數(shù)據(jù)以實現(xiàn)同時于同一數(shù)據(jù)分區(qū)中寫入(抹除)數(shù)據(jù)的特性。
文檔編號G06F12/08GK101187900SQ20061014541
公開日2008年5月28日 申請日期2006年11月15日 優(yōu)先權(quán)日2006年11月15日
發(fā)明者林俊甫 申請人:明基電通股份有限公司