數(shù)據(jù)讀取方法、存儲器存儲裝置及存儲器控制電路單元的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明是有關(guān)于一種數(shù)據(jù)讀取方法,且特別是有關(guān)于一種數(shù)據(jù)讀取方法、存儲器 存儲裝置及存儲器控制電路單元。
【背景技術(shù)】
[0002] 數(shù)碼相機、移動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對存 儲媒體的需求也急速增加。由于可復(fù)寫式非易失性存儲器模塊(例如,快閃存儲器)具有 數(shù)據(jù)非易失性、省電、體積小,以及無機械結(jié)構(gòu)等特性,所以非常適合內(nèi)裝于上述所舉例的 各種可攜式多媒體裝置中。
[0003] 在存儲器存儲裝置中,預(yù)讀?。╬re-read)是指在接收到某一筆來自主機系統(tǒng)的 讀取指令時,除了從可復(fù)寫式非易失性存儲器模塊中讀取此讀取指令所要求的數(shù)據(jù)外,額 外讀取此數(shù)據(jù)的下一筆連續(xù)數(shù)據(jù)。藉此,可加快循序讀?。╯equential read)的讀取速度。 然而,若無法有效地協(xié)調(diào)前端的指令接收與后端的數(shù)據(jù)管理(例如,錯誤處理),則可能使 得此預(yù)讀取的效能下降。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種數(shù)據(jù)讀取方法、存儲器存儲裝置及存儲器控制電路單元,可讓前 端的指令接收與后端的數(shù)據(jù)管理相互配合。
[0005] 本發(fā)明的一實施例提供一種數(shù)據(jù)讀取方法,其用于可復(fù)寫式非易失性存儲器模 塊,所述數(shù)據(jù)讀取方法包括:配置多重觸發(fā)隊列(Multi Trigger Queue,簡稱MTQ);從主機 系統(tǒng)接收第一讀取指令;根據(jù)所述第一讀取指令于所述多重觸發(fā)隊列中配置多個第一讀取 事件,其中所述第一讀取事件包括一個一般讀取事件與至少一快取讀取事件,其中所述一 般讀取事件所對應(yīng)的欲讀取數(shù)據(jù)與所述快取讀取事件所對應(yīng)的欲讀取數(shù)據(jù)是屬于連續(xù)數(shù) 據(jù),所述一般讀取事件所對應(yīng)的欲讀取數(shù)據(jù)是被所述第一讀取指令所請求,并且所述快取 讀取事件所對應(yīng)的欲讀取數(shù)據(jù)不被所述第一讀取指令所請求;根據(jù)所述第一讀取事件的至 少其中之一發(fā)送至少一第一讀取指令序列并且接收反應(yīng)于所述第一讀取指令序列的來自 所述可復(fù)寫式非易失性存儲器模塊的第一數(shù)據(jù);解碼所述第一數(shù)據(jù);以及若所述第一數(shù)據(jù) 解碼失敗,重置所述多重觸發(fā)隊列,并且根據(jù)重置后的所述多重觸發(fā)隊列中的至少一第二 讀取事件發(fā)送至少一第二讀取指令序列,其中所述第二讀取事件包括所述快取讀取事件中 的至少一第一快取讀取事件。
[0006] 在本發(fā)明的一實施例中,所述可復(fù)寫式非易失性存儲器模塊包括存儲區(qū)與緩沖 區(qū),其中所述第一讀取指令序列指示從所述存儲區(qū)中讀取所述第一數(shù)據(jù),并且所述第二讀 取指令指示從所述存儲區(qū)中讀取第二數(shù)據(jù),其中所述第一數(shù)據(jù)是從所述存儲區(qū)中被讀取至 所述緩沖區(qū)并且被從所述緩沖區(qū)傳送至存儲器控制電路單元的緩沖存儲器,其中所述第二 數(shù)據(jù)是從所述存儲區(qū)中被讀取至所述緩沖區(qū)并且被從所述緩沖區(qū)傳送至所述緩沖存儲器。
[0007] 在本發(fā)明的一實施例中,所述重置所述多重觸發(fā)隊列的步驟包括:將所述第一讀 取事件中對應(yīng)至解碼失敗的數(shù)據(jù)的讀取事件設(shè)定為待執(zhí)行事件,其中所述待執(zhí)行事件是所 述第二讀取事件中排序最前面的讀取事件。
[0008] 在本發(fā)明的一實施例中,所述重置所述多重觸發(fā)隊列的步驟包括:將所述第一讀 取事件中對應(yīng)至解碼失敗的數(shù)據(jù)的讀取事件設(shè)定為待執(zhí)行事件,其中所述待執(zhí)行事件不存 在于所述多重觸發(fā)隊列中。
[0009] 在本發(fā)明的一實施例中,在所述根據(jù)重置后的所述多重觸發(fā)隊列中的所述第二讀 取事件發(fā)送所述第二讀取指令序列的步驟之前,所述數(shù)據(jù)讀取方法還包括:重復(fù)執(zhí)行所述 待執(zhí)行事件直到獲得正確數(shù)據(jù)為止。
[0010] 在本發(fā)明的一實施例中,所述數(shù)據(jù)讀取方法還包括:將所述第一數(shù)據(jù)暫存于存儲 器控制電路單元的緩沖存儲器;以及若所述第一數(shù)據(jù)沒有解碼失敗,將所述第一數(shù)據(jù)中由 所述第一讀取指令所請求的數(shù)據(jù)從所述緩沖存儲器傳送至所述主機系統(tǒng),并且根據(jù)所述第 一讀取事件中尚未被執(zhí)行的至少一第三讀取事件發(fā)送至少一第三讀取指令序列,其中所述 第三讀取事件包括所述快取讀取事件中的至少一第二快取讀取事件。
[0011] 在本發(fā)明的一實施例中,所述數(shù)據(jù)讀取方法還包括:接收反應(yīng)于所述第三讀取指 令序列的來自所述可復(fù)寫式非易失性存儲器模塊的第三數(shù)據(jù);解碼所述第三數(shù)據(jù);以及若 所述第三數(shù)據(jù)解碼失敗,重置所述多重觸發(fā)隊列,并且根據(jù)重置后的所述多重觸發(fā)隊列中 的至少一第四讀取事件發(fā)送至少一第四讀取指令序列,其中所述第四讀取事件包括所述快 取讀取事件中的至少一第三快取讀取事件。
[0012] 在本發(fā)明的一實施例中,所述根據(jù)所述第一讀取指令于所述多重觸發(fā)隊列中配置 所述第一讀取事件的步驟包括:由存儲器控制電路單元所運行的隊列管理固件(firmware) 根據(jù)所述第一讀取指令于所述多重觸發(fā)隊列中配置所述第一讀取事件,其中根據(jù)所述第一 讀取事件的所述至少其中之一發(fā)送所述第一讀取指令序列的步驟包括:由所述存儲器控制 電路單元中的存儲器管理電路查詢所述多重觸發(fā)隊列并且根據(jù)所述第一讀取事件的所述 至少其中之一發(fā)送所述第一讀取指令序列。
[0013] 在本發(fā)明的一實施例中,在所述根據(jù)所述第一讀取事件的所述至少其中之一發(fā)送 所述第一讀取指令序列的步驟之前,所述數(shù)據(jù)讀取方法還包括:將所述第一讀取事件的其 中之一的第一讀取事件信息寫入至緩沖存儲器中的第一寄存器;將所述第一讀取事件的其 中之另一的第二讀取事件信息寫入至所述緩沖存儲器中的第二寄存器;以及依照預(yù)定規(guī)則 讀取所述第一寄存器中的所述第一讀取事件信息與所述第二寄存器中的所述第二讀取事 件信息。
[0014] 本發(fā)明的一實施例提供一種存儲器存儲裝置,其包括連接接口單元、可復(fù)寫式非 易失性存儲器模塊及存儲器控制電路單元。所述連接接口單元用以電性連接至主機系統(tǒng)。 所述存儲器控制電路單元電性連接至所述連接接口單元與所述可復(fù)寫式非易失性存儲器 模塊,其中所述存儲器控制電路單元用以配置多重觸發(fā)隊列,其中所述存儲器控制電路單 元還用以從所述主機系統(tǒng)接收第一讀取指令,其中所述存儲器控制電路單元還用以根據(jù)所 述第一讀取指令于所述多重觸發(fā)隊列中配置多個第一讀取事件,其中所述第一讀取事件包 括一個一般讀取事件與至少一快取讀取事件,其中所述一般讀取事件所對應(yīng)的欲讀取數(shù)據(jù) 與所述快取讀取事件所對應(yīng)的欲讀取數(shù)據(jù)是屬于連續(xù)數(shù)據(jù),所述一般讀取事件所對應(yīng)的欲 讀取數(shù)據(jù)是被所述第一讀取指令所請求,并且所述快取讀取事件所對應(yīng)的欲讀取數(shù)據(jù)不被 所述第一讀取指令所請求,其中所述存儲器控制電路單元還用以根據(jù)所述第一讀取事件的 至少其中之一發(fā)送至少一第一讀取指令序列并且接收反應(yīng)于所述第一讀取指令序列的來 自所述可復(fù)寫式非易失性存儲器模塊的第一數(shù)據(jù),其中所述存儲器控制電路單元還用以解 碼所述第一數(shù)據(jù),其中若所述第一數(shù)據(jù)解碼失敗,所述存儲器控制電路單元還用以重置所 述多重觸發(fā)隊列并且根據(jù)重置后的所述多重觸發(fā)隊列中的至少一第二讀取事件發(fā)送至少 一第二讀取指令序列,其中所述第二讀取事件包括所述快取讀取事件中的至少一第一快取 讀取事件。
[0015] 在本發(fā)明的一實施例中,所述存儲器控制電路單元重置所述多重觸發(fā)隊列的操作 包括:將所述第一讀取事件中對應(yīng)至解碼失敗的數(shù)據(jù)的讀取事件設(shè)定為待執(zhí)行事件,其中 所述待執(zhí)行事件是所述第二讀取事件中排序最前面的讀取事件。
[0016] 在本發(fā)明的一實施例中,所述存儲器控制電路單元重置所述多重觸發(fā)隊列的操作 包括:將所述第一讀取事件中對應(yīng)至解碼失敗的數(shù)據(jù)的讀取事件設(shè)定為待執(zhí)行事件,其中 所述待執(zhí)行事件不存在于所述多重觸發(fā)隊列中。
[0017] 在本發(fā)明的一實施例中,在所述存儲器控制電路單元執(zhí)行根據(jù)重置后的所述多重 觸發(fā)隊列中的所述第二讀取事件發(fā)送所述第二讀取指令序列的操作之前,所述存儲器控制 電路單元還用以重復(fù)執(zhí)行所述待執(zhí)行事件直到獲得正確數(shù)據(jù)為止。
[0018] 在本發(fā)明的一實施例中,所述存儲器控制電路單元還用以將所述第一數(shù)據(jù)暫存于 所述存儲器控制電路單元的緩沖存儲器,其中若所述第一數(shù)據(jù)沒有解碼失敗,所述存儲器 控制電路單元還用以將所述第一數(shù)據(jù)中由所述第一讀取指令所請求的數(shù)據(jù)從所述緩沖存 儲器傳送至所述主機系統(tǒng)并且根據(jù)所述第一讀取事件中尚未被執(zhí)行的至少一第三讀取事 件發(fā)送至少一第三讀取指令序列,其中所述第三讀取事件包括所述快取讀取事件中的至少 一第二快取讀取事件。
[0019] 在本發(fā)明的一實施例中,所述存儲器控制電路單元還用以接收反應(yīng)于所述第三讀 取指令序列的來自所述可復(fù)寫式非易失性存儲器模塊的第三數(shù)據(jù),其中所述存儲器控制電 路單元還用以解碼所述第三數(shù)據(jù),其中若所述第三數(shù)據(jù)解碼失敗,所述存儲器控制電路單 元還用以重置所述多重觸發(fā)隊列,根據(jù)重置后的所述多重觸發(fā)隊列中的至少一第四讀取事 件發(fā)送至少一第四讀取指令序列,并且接收反應(yīng)于所述第四讀取指令序列的來自所述可復(fù) 寫式非易失性存儲器模塊的第四數(shù)據(jù),其中所述第四讀取事件包括所述快取讀取事件中的 至少一第三快取讀取事件。
[0020] 在本發(fā)明的一實施例中,所述存儲器控制電路單元根據(jù)所述第一讀取指令于所述 多重觸發(fā)隊列中配置所述第一讀取事件的操作包括:由所述存儲器控制電路單元所運行的 隊列管理固件根據(jù)所述第一讀取指令于所述多重觸發(fā)隊列中配置所述第一讀取事件,其中 所述存儲器控制電路單元根據(jù)所述第一讀取事件的所述至少其中之一發(fā)送所述第一讀取 指令序列的操作包括:由所述存儲器控制電路單元中的存儲器管理電路查詢所述多重觸發(fā) 隊列并且根據(jù)所述第一讀取事件的所述至少其中之一發(fā)送所述第一讀取指令序列。
[0021 ] 在本發(fā)明的一實施例中,所述存儲器控制電路單元包括緩沖存儲器,所述緩沖存 儲器包括第一寄存器與第二寄存器,而在所述存儲器控制電路單元執(zhí)行根據(jù)所述第一讀取 事件的所述至少其中之一發(fā)送所述第一讀取指令序列的操作之前,所述存儲器控制電路單 元還用以:將所述第一讀取事件的其中之一的第一讀取事件信息寫入至所述第一寄存器; 將所述第一讀取事件的其中之另一的第二讀取事件信息寫入至所述第二寄存器;以及依照 預(yù)定規(guī)則讀取所述第一寄存器中的所述第一讀取事件信息與所述第二寄存器中的所述第 二讀取事件息。
[0022] 本發(fā)明的一實施例提供一種存儲器控制電路單元,其用于控制可復(fù)寫式非易失性 存儲器模塊,所述存儲器控制電路單元包括主機接口、存儲器接口、錯誤檢查與校正電路、 緩沖存儲器及存儲器管理電路。主機接口用以電性連接至主機系統(tǒng)。存儲器接口用以電性 連接至所述可復(fù)寫式非易失性存儲器模塊。存儲器管理電路電性連接至所述主機接口、所 述存儲器接口、所述錯誤檢查與校正電路及所述緩沖存儲器,其中所述存儲器管理電路用 以配置多重觸發(fā)隊列于所述緩沖存儲器,其中所述存儲器管理電路還用以從所述主機系統(tǒng) 接收第一讀取指令,其中所述存儲器管理電路還用以根據(jù)所述第一讀取指令于所述多重觸 發(fā)隊列中配置多個第一讀取事件,其中所述第一讀取事件包括一個一般讀取事件與至少一 快取讀取事件,其中所述一般讀取事件所對應(yīng)的欲讀取數(shù)據(jù)與所述快取讀取事件所對應(yīng)的 欲讀取數(shù)據(jù)是屬于連續(xù)數(shù)據(jù),所述一般讀取事件所對應(yīng)的欲讀取數(shù)據(jù)是被所述第一讀取指 令所請求,并且所述快取讀取事件所對應(yīng)的欲讀取數(shù)據(jù)不被所述第一讀取指令所請求,其 中所述存儲器管理電路還用以根據(jù)所述第一讀取事件的至少其中之一發(fā)送至少一第一讀 取指令序列并且接收反應(yīng)于所述第一讀取指令序列的來自所述可復(fù)寫式非易失性存儲器 模塊的第一數(shù)據(jù),其中所述錯誤檢查與校正電路用以解碼所述第一數(shù)據(jù),其中若所述第一 數(shù)據(jù)解碼失敗,所述存儲器管理電路還用以重置所述多重觸發(fā)隊列并且根據(jù)重置后的所述 多重觸發(fā)隊列中的至少一第二讀取事件發(fā)送至少一第二讀取指令序列,其中所述第二讀取 事件包括所述快取讀取事件中的至少一第一快取讀取事件。
[0023] 在本發(fā)明的一實施例中,所述存儲器管理電路重置所述多重觸發(fā)隊列的操作包 括:將所述第一讀取事件中對應(yīng)至解碼失敗的數(shù)據(jù)的讀取事件設(shè)定為待執(zhí)行事件,其中所 述待執(zhí)行事件是所述第二讀取事件中排序最前面的讀取事件。
[0024] 在本發(fā)明的一實施例中,所述存儲器管理電路重置所述多重觸發(fā)隊列的操作包 括:將所述第一讀取事件中對應(yīng)至解碼失敗的數(shù)據(jù)的讀取事件設(shè)定為待執(zhí)行事件,其中所 述待執(zhí)行事件不存在于所述多重觸發(fā)隊列中。
[0025] 在本發(fā)明的一實施例中,在所述存儲器管理電路執(zhí)行根據(jù)重置后的所述多重觸發(fā) 隊列中的所述第二讀取事件發(fā)送所述第二讀取指令序列的操作之前,所述存儲器管理電路 還用以重復(fù)執(zhí)行所述待執(zhí)行事件直到獲得正確數(shù)據(jù)為止。
[0026] 在本發(fā)明的一實施例中,所述存儲器管理電路還用以將所述第一數(shù)據(jù)暫存于所述 緩沖存儲器,其中若所述第一數(shù)據(jù)沒有解碼失敗,所述存儲器管理電路還用以將所述第一 數(shù)據(jù)中由所述第一讀取指令所請求的數(shù)據(jù)從所述緩沖存儲器傳送至所述主機系統(tǒng)并且根 據(jù)所述第一讀取事件中尚未被執(zhí)行的至少一第三讀取事件發(fā)送至少一第三讀取指令序列, 其中所述第三讀取事件包括所述快取讀取事件中的至少一第二快取讀取事件。
[0027] 在本發(fā)明的一實施例中,所述存儲器管理電路還用以接收反應(yīng)于所述第三讀取指 令序列的來自所述可復(fù)寫式非易失性存儲器模塊的第三數(shù)據(jù),其中所述錯誤檢查與校正電 路還用以解碼所述第三數(shù)據(jù),其中若所述第三數(shù)據(jù)解碼失敗,所述存儲器管理電路還用以 重置所述多重觸發(fā)隊列并且根據(jù)重置后的所述多重觸發(fā)隊列中的至少一第四讀取事件發(fā) 送至少一第四讀取指令序列,其中所述第四讀取事件包括所述快取讀取事件中的至少一第 二快取讀取事件。
[0028] 在本發(fā)明的一實施例中,所述存儲器管理電路根據(jù)所述第一讀取指令于所述多重 觸發(fā)隊列中配置所述第一讀取事件的