專利名稱:降低閃存裝置使用拷貝回去指令時的數(shù)據(jù)錯誤的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)存取方法,尤其涉及一種閃存裝置的數(shù)據(jù)存取方法。
背景技術(shù):
眾所周知,閃存(flashmemory)具有抗沖擊(shock)、非易失性(nonvolatile)、 與高存儲密度等優(yōu)點。因此,閃存搭配控制電路所形成的閃存裝置(flash memory storage device)已經(jīng)廣泛的被使用。例如,閃盤(thumb drive)、壓縮閃 存裝置(compact flash,簡稱CF卡)、安全數(shù)字存儲裝置(secure digital,簡稱 SD卡)、多媒體卡存儲裝置(multi media card,簡稱MMC卡)等等。請參照圖1,其所示為閃存裝置示意圖。閃存裝置10中包括一控制電路 12與閃存16。而閃存16中可以劃分成很多的區(qū)段(block),每個區(qū)段中又包 括多個頁(page)。再者,主機(host)30則可利用一主機總線20來存取閃存裝 置10內(nèi)的數(shù)據(jù)。當然,主機總線20可為一壓縮閃存裝置(compact flash,簡 稱CF)總線、安全數(shù)字存儲裝置(secure digital,簡稱SD)總線、多媒體卡存儲 裝置(multi media card,簡稱MMC)總線、通用串接總線(universal serial bus, 簡稱USB)、正EE1394總線或者其它類似總線。而于閃存裝置10中有一內(nèi)部總線18連接于控制電路12與閃存16之間。 再者,于控制電路12中還包括一緩沖器(buffer)13以及一錯誤校正碼(error correcting codes,簡稱ECC)單元14。當主機30將數(shù)據(jù)寫入閃存16時,該錯 誤校正碼單元14會將數(shù)據(jù)進行運算并產(chǎn)生錯誤校正碼,而控制電路12會發(fā) 出一寫入指令至閃存16,并將寫入數(shù)據(jù)連同錯誤校正碼通過內(nèi)部總線18寫 入該閃存。再者,緩沖器13最主要的目的就是暫時存儲數(shù)據(jù)的用途。再者,當主機讀取閃存16內(nèi)的數(shù)據(jù)時,控制電路12會發(fā)出一讀取指令 至閃存16,因此,閃存16會同時輸出讀取數(shù)據(jù)以及錯誤校正碼經(jīng)由通過內(nèi) 部總線18至控制電路12。接著,ECC單元14可以根據(jù)錯誤校正碼來檢測 讀取數(shù)據(jù)是否有錯誤。當讀取數(shù)據(jù)無錯誤時,控制電路12即可將讀取數(shù)據(jù)通過主機總線20將讀取數(shù)據(jù)送至主機;反之,當讀取數(shù)據(jù)有錯誤時,控制電路12即可根據(jù)ECC單元產(chǎn)生的錯誤校正碼將讀取數(shù)據(jù)更正后通過主機總 線20將正確的讀取數(shù)據(jù)送至主機。當然,上述的錯誤校正碼可以是漢明碼 (Hamming Code)、瑞德所羅門碼(Reed Solomom Code)、或是其它類型的錯誤 校正碼。眾所周知,為加快閃存16的存取速度,閃存16內(nèi)部的數(shù)據(jù)區(qū)塊移動可 以利用拷貝回去指令(copybackcommand)來實現(xiàn)。也就是說,當控制電路12 需要將閃存16中第一區(qū)塊(舊區(qū)塊)的數(shù)據(jù)搬移至第二區(qū)塊(新區(qū)塊)時,只要 控制電路12發(fā)出一拷貝回去指令至閃存16,則閃存16內(nèi)部即可自行完成第 一區(qū)塊的數(shù)據(jù)搬移至第二區(qū)塊的動作。然而,由于閃存16內(nèi)部自行完成第一區(qū)塊的數(shù)據(jù)搬移至第二區(qū)塊的動 作時,這些數(shù)據(jù)并沒有經(jīng)過控制電路12,因此ECC單元14并無法保證這些 數(shù)據(jù)的正確性。也就是說,第二區(qū)塊內(nèi)的數(shù)據(jù)正確性是無法得知的。針對上 述缺點,美國專利US7187583揭示一種"降低閃存裝置使用拷貝回去指令時 的數(shù)據(jù)錯誤的方法(METHOD FOR REDUCING DATA ERROR WHEN請參照圖2A與圖2B,其所示為已知降低閃存裝置使用拷貝回去指令時 的數(shù)據(jù)錯誤流程圖及其示意圖。于圖2A中,步驟110即是控制電路12發(fā)出 一拷貝回去指令至閃存16,也就是說,閃存16中第一區(qū)塊的數(shù)據(jù)即可搬移 至第二區(qū)塊。其中,第一區(qū)塊即是舊區(qū)塊(old block),而第二區(qū)塊即是新區(qū) 塊(new block)。接著,于步驟120,控制電路12發(fā)出一讀取指令(readcommand)將第二 區(qū)塊(新區(qū)塊)中不需修改的數(shù)據(jù)頁(page that does not need to be amended)存儲 至閃存16外的緩沖器13。接著,于步驟130,控制電路12利用ECC單元14來決定緩沖器13內(nèi) 的數(shù)據(jù)是否有誤。也就是說,ECC單元14即可以利用一錯誤校正規(guī)則(error correction rule)來決定緩沖器內(nèi)的數(shù)據(jù)是否有誤。當數(shù)據(jù)無誤時,執(zhí)行步驟160,也就是執(zhí)行下一個指令或者任務(wù);反之, 當數(shù)據(jù)有誤時,ECC單元14會自行更正緩沖器內(nèi)錯誤的數(shù)據(jù)而成為正確的 的數(shù)據(jù)。因此,控制電路12接著執(zhí)行步驟140,也就是,執(zhí)行數(shù)據(jù)寫入指令將緩沖器13內(nèi)的數(shù)據(jù)寫入至一第三區(qū)塊。其中,第三區(qū)塊為另一個新區(qū)塊 (another new block)。當步驟140完成之后,控制電路12必須抹除(emse)閃存16中第二區(qū)塊 內(nèi)的數(shù)據(jù)。因此,控制電路12接著執(zhí)行步驟150,也就是,執(zhí)行抹除第二區(qū) 塊數(shù)據(jù)指令。最后,再執(zhí)行步驟160。由圖2B可知,為了要降低閃存裝置使用拷貝回去指令時的數(shù)據(jù)錯誤。 已知控制電路12先執(zhí)行拷貝回去指令,使得閃存16中第一區(qū)塊(舊區(qū)塊)lll 中的數(shù)據(jù)先存儲至第二區(qū)塊(新區(qū)塊)112。接著,控制電路12發(fā)出一讀取指令用以讀取閃存16中第二區(qū)塊(新區(qū)塊) 的數(shù)據(jù)至緩沖器13。當緩沖器13的數(shù)據(jù)利用ECC單元14確認無誤之后, 控制電路12可確認執(zhí)行拷貝回去指令之后該第二區(qū)塊(新區(qū)塊)的數(shù)據(jù)無誤。然而,當緩沖器13的數(shù)據(jù)利用ECC單元確認有誤時,ECC單元14需 先更正緩沖器13中的數(shù)據(jù)。之后,控制電路12發(fā)出數(shù)據(jù)寫入指令將緩沖器 13內(nèi)的數(shù)據(jù)寫入至一第三區(qū)塊(另一個新區(qū)塊)113。接著,再執(zhí)行抹除第二 區(qū)塊數(shù)據(jù)指令。最后,控制電路12可確認該第三區(qū)塊(另一個新區(qū)塊)113的 數(shù)據(jù)無誤。由上述內(nèi)容可知,已知控制電路12執(zhí)行拷貝回去指令之后,為了確認 第二區(qū)塊112的數(shù)據(jù)是否正確,必須再次讀取第二區(qū)塊112內(nèi)的數(shù)據(jù)至控制 電路12外的緩沖器13,并利用ECC單元14來確認緩沖器13中的數(shù)據(jù)是否 有誤,并進而決定第二區(qū)塊112內(nèi)的數(shù)據(jù)否有誤。當?shù)诙^(qū)塊112內(nèi)的數(shù)據(jù)有誤時,控制電路12必須再次將緩沖器13內(nèi) 經(jīng)過更新的數(shù)據(jù)另行存至一第三區(qū)塊(另一個新區(qū)塊)113,并且抹除第二區(qū)塊 (新區(qū)塊)112內(nèi)的數(shù)據(jù)后才可確認執(zhí)行拷貝回去指令之后該第三區(qū)塊(另一個 新區(qū)塊)113的數(shù)據(jù)無誤。發(fā)明內(nèi)容上述的流程并非最佳的數(shù)據(jù)校正方式。因此,如何使閃存執(zhí)行拷貝回去 指令并且更有效率地確認數(shù)據(jù)的正確性,為本發(fā)明的最主要的目的。本發(fā)明為一種閃存裝置使用拷貝回去指令的方法,包含下列步驟讀取 一閃存的一第一區(qū)塊中的一數(shù)據(jù)至該閃存外的一緩沖器;檢驗該緩沖器內(nèi)的該數(shù)據(jù)是否有誤;以及,當該緩沖器內(nèi)的該數(shù)據(jù)無誤時,將該閃存中該第一 區(qū)塊的該數(shù)據(jù)拷貝回去至該閃存中的一第二區(qū)塊。因此,本發(fā)明還提出一種使用拷貝回去的閃存裝置,包括 一控制電路, 具有一緩沖器與一錯誤校正碼單元;以及, 一閃存,連接至該控制電路;其 中,該控制電路讀取該閃存的一第一區(qū)塊的一數(shù)據(jù)到該緩沖器,若該錯誤校 正碼單元檢驗該緩沖器內(nèi)的該數(shù)據(jù)無誤,則該控制電路可發(fā)出一拷貝回去指 令到該閃存,使該閃存中該第一區(qū)塊的該數(shù)據(jù)拷貝回去(copy back)至該閃存 的一第二區(qū)塊。本發(fā)明的有益效果為與已知方法相比,本發(fā)明可以省略控制電路發(fā)出抹 除第二區(qū)塊的動作。再者,本發(fā)明也不需要閃存中另外的第三區(qū)塊(另一個新 區(qū)塊)。因此,本發(fā)明可以更有效率地執(zhí)行閃存拷貝回去指令,并且保持數(shù)據(jù) 的正確性。
圖l所示為閃存裝置示意圖。圖2A與圖2B所示為己知降低閃存裝置使用拷貝回去指令時的數(shù)據(jù)錯誤 的流程圖及其示意圖。圖3A與圖3B所示為本發(fā)明降低閃存裝置使用拷貝回去指令時的數(shù)據(jù)錯 誤的流程圖及其示意圖。
具體實施方式
請參照圖3A與圖3B,其所示為本發(fā)明降低閃存裝置使用拷貝回去指令 時的數(shù)據(jù)錯誤的流程圖及其示意圖。請參考圖3A、圖3B以及圖1所示,當 控制電路12欲執(zhí)行拷貝回去指令將第一區(qū)塊(舊區(qū)塊)移動至第二區(qū)塊(新區(qū) 塊)之前,先執(zhí)行步驟210,也就是,控制電路12發(fā)出一讀取指令(read command)將第一區(qū)塊(舊區(qū)塊)中的數(shù)據(jù)讀取至閃存16外的緩沖器13。接著,于步驟220,控制電路12利用ECC單元14來決定緩沖器13內(nèi) 的數(shù)據(jù)是否有誤。也就是說,ECC單元14即可以利用一錯誤校正規(guī)則(error correction rule)來決定緩沖器13內(nèi)的第一區(qū)塊(舊區(qū)塊)的數(shù)據(jù)是否有誤。當緩沖器13的數(shù)據(jù)無誤時,執(zhí)行步驟240,也就是控制電路執(zhí)行拷貝回去指令,將給閃存16第一區(qū)塊(舊區(qū)塊)數(shù)據(jù)拷貝回去至第二區(qū)塊(新區(qū)塊)上。 因此,控制電路12即可確認執(zhí)行拷貝回去指令之后該第二區(qū)塊(新區(qū)塊)的數(shù) 據(jù)無誤。最后,控制電路12再執(zhí)行步驟250,也就是執(zhí)行下一個指令或者任 務(wù)。反之,當緩沖器13內(nèi)數(shù)據(jù)有誤時,ECC單元14會先進行錯誤校正處理 并更正緩沖器13中的數(shù)據(jù)。之后,控制電路12不發(fā)出拷貝回去指令而是執(zhí) 行步驟230,也就是控制電路12發(fā)出數(shù)據(jù)寫入指令,將緩沖器13內(nèi)經(jīng)過錯 誤校正處理后的校正后數(shù)據(jù),寫入至一第二區(qū)塊(新區(qū)塊)。因ECC單元14 會先更正緩沖器13中的數(shù)據(jù)成為校正后數(shù)據(jù),所以控制電路12即可確認該 第二區(qū)塊(新區(qū)塊)的數(shù)據(jù)無誤。最后,控制電路12再執(zhí)行步驟250,也就是 執(zhí)行下一個指令或者任務(wù)。由圖3B可知,為了要降低閃存裝置使用拷貝回去指令時的數(shù)據(jù)錯誤。 本發(fā)明的特征在于控制電路12執(zhí)行拷貝回去指令欲將第一區(qū)塊(舊區(qū)塊)211 移動至第二區(qū)塊(新區(qū)塊)212之前,必須先確認第一區(qū)塊(舊區(qū)塊)211中的數(shù) 據(jù)是否有誤。也就是如路徑(I)所示,先將第一區(qū)塊(舊區(qū)塊)211內(nèi)的數(shù)據(jù)讀 取至控制電路12的緩沖器13內(nèi),利用ECC單元14來確認緩沖器13內(nèi)的 數(shù)據(jù)是否有誤,因此可以確定第一區(qū)塊(舊區(qū)塊)211內(nèi)的數(shù)據(jù)正確性。反之 若有誤,也可經(jīng)過ECC單元14來修正原先第一區(qū)塊(舊區(qū)塊)211內(nèi)的數(shù)據(jù), 以提高正確性。當?shù)谝粎^(qū)塊(舊區(qū)塊)211內(nèi)的數(shù)據(jù)是無誤時,則如路徑(II)所示,控制電 路12即可以發(fā)出拷貝回去指令至閃存16進行第一區(qū)塊(舊區(qū)塊)211的數(shù)據(jù) 搬移至第二區(qū)塊(新區(qū)塊)212。當?shù)谝粎^(qū)塊(舊區(qū)塊)211內(nèi)的數(shù)據(jù)是有誤時,則如路徑(in)所示,控制電 路12不發(fā)出拷貝回去指令,并且發(fā)出數(shù)據(jù)寫入指令至閃存16。而控制電路 12將緩沖器13中更正后正確的校正后數(shù)據(jù)搬移至第二區(qū)塊(新區(qū)塊)212。與已知方法比較,本發(fā)明可以省略控制電路12發(fā)出抹除第二區(qū)塊的動 作。再者,本發(fā)明也不需要閃存16中另外的第三區(qū)塊(另一個新區(qū)塊)。因此, 本發(fā)明可以更有效率地執(zhí)行閃存拷貝回去指令,并且保持數(shù)據(jù)的正確性。雖然本發(fā)明已以優(yōu)選實施例揭示如上,然其并非用以限定本發(fā)明。本發(fā) 明所屬技術(shù)領(lǐng)域中的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),應(yīng)當可作各種變動與潤飾。因此,本發(fā)明的保護范圍應(yīng)當視權(quán)利要求書所限定的 范圍為準。
權(quán)利要求
1.一種閃存裝置使用拷貝回去的方法,其特征是包含下列步驟讀取一閃存的一第一區(qū)塊中的一數(shù)據(jù)至上述閃存外的一緩沖器;檢驗上述緩沖器內(nèi)的上述數(shù)據(jù)是否有誤;以及當上述緩沖器內(nèi)的上述數(shù)據(jù)無誤時,將上述閃存中上述第一區(qū)塊的上述數(shù)據(jù)拷貝回去至上述閃存中的一第二區(qū)塊。
2. 根據(jù)權(quán)利要求1所述的方法,其特征是當上述緩沖器內(nèi)的數(shù)據(jù)有誤 時,將上述緩沖器的上述數(shù)據(jù)經(jīng)一錯誤校正處理后產(chǎn)生一校正后數(shù)據(jù),再將 上述校正后數(shù)據(jù)復制至上述閃存中的上述第二區(qū)塊。
3. 根據(jù)權(quán)利要求1所述的方法,其特征是其中檢驗上述緩沖器內(nèi)的上述 數(shù)據(jù)是否有誤的步驟,使用一漢明碼校正規(guī)則來檢驗。
4. 根據(jù)權(quán)利要求1所述的方法,其特征是其中決定上述緩沖器內(nèi)的上述 數(shù)據(jù)是否有誤的步驟,使用一瑞德所羅門碼校正規(guī)則來檢驗。
5. —種使用拷貝回去的閃存裝置,其特征是包括 一控制電路,具有一緩沖器與一錯誤校正碼單元;以及 一閃存,連接至上述控制電路;其中,上述控制電路讀取上述閃存的一第一區(qū)塊的一數(shù)據(jù)到上述緩沖 器,若上述錯誤校正碼單元檢驗上述緩沖器內(nèi)的上述數(shù)據(jù)無誤,則上述控制 電路可發(fā)出一拷貝回去指令到上述閃存,使上述閃存中上述第一區(qū)塊的上述 數(shù)據(jù)拷貝回去至上述閃存的一第二區(qū)塊。
6. 根據(jù)權(quán)利要求5所述的使用拷貝回去的閃存裝置,其特征是其中當上 述錯誤校正碼單元檢驗上述緩沖器內(nèi)的上述數(shù)據(jù)有誤時,上述控制電路將上 述緩沖器的上述數(shù)據(jù)經(jīng)一錯誤校正處理后產(chǎn)生一校正后數(shù)據(jù),再將上述校正 后數(shù)據(jù)復制至上述閃存中的上述第二區(qū)塊。
7. 根據(jù)權(quán)利要求5所述的使用拷貝回去的閃存裝置,其特征是其中上述 控制電路以一內(nèi)部總線連接上述閃存。
8. 根據(jù)權(quán)利要求5所述的使用拷貝回去的閃存裝置方法,其特征是其中 上述錯誤校正碼單元根據(jù)一漢明碼校正規(guī)則檢驗上述緩沖器內(nèi)的數(shù)據(jù)是否 有誤。9.根據(jù)權(quán)利要求5所述的使用拷貝回去的閃存裝置方法,其特征是其中 上述錯誤校正碼單元根據(jù)一瑞德所羅門碼校正規(guī)則檢驗上述緩沖器內(nèi)的數(shù) 據(jù)是否有誤。
全文摘要
本發(fā)明提供一種閃存裝置使用拷貝回去指令的方法。該方法包含下列步驟讀取一閃存的一第一區(qū)塊中的一數(shù)據(jù)至閃存外的一緩沖器;檢驗緩沖器內(nèi)的數(shù)據(jù)是否有誤;以及當緩沖器內(nèi)的數(shù)據(jù)無誤時,將閃存中第一區(qū)塊的數(shù)據(jù)拷貝回去至閃存中的一第二區(qū)塊。本發(fā)明可以省略控制電路發(fā)出抹除第二區(qū)塊的動作,而且也不需要閃存中另外的第三區(qū)塊(另一個新區(qū)塊)。因此,本發(fā)明可以更有效率地執(zhí)行閃存拷貝回去指令,并且保持數(shù)據(jù)的正確性。
文檔編號G11C16/06GK101226774SQ200810005678
公開日2008年7月23日 申請日期2008年2月15日 優(yōu)先權(quán)日2008年2月15日
發(fā)明者劉名哲, 陳佳欣, 黃君豪 申請人:祥碩科技股份有限公司