TWI556249B - 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 - Google Patents
資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 Download PDFInfo
- Publication number
- TWI556249B TWI556249B TW103138734A TW103138734A TWI556249B TW I556249 B TWI556249 B TW I556249B TW 103138734 A TW103138734 A TW 103138734A TW 103138734 A TW103138734 A TW 103138734A TW I556249 B TWI556249 B TW I556249B
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- data
- event
- memory
- control circuit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明是有關於一種資料讀取方法,且特別是有關於一種資料讀取方法、記憶體儲存裝置及記憶體控制電路單元。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
在記憶體儲存裝置中,預讀取(pre-read)是指在接收到某一筆來自主機系統的讀取指令時,除了從可複寫式非揮發性記憶體模組中讀取此讀取指令所要求的資料外,額外讀取此資料的下一筆連續資料。藉此,可加快循序讀取(sequential read)的讀取速度。然而,若無法有效地協調前端的指令接收與後端的資料管理(例如,錯誤處理),則可能使得此預讀取的效能下降。
本發明提供一種資料讀取方法、記憶體儲存裝置及記憶體控制電路單元,可讓前端的指令接收與後端的資料管理相互配合。
本發明的一範例實施例提供一種資料讀取方法,其用於可複寫式非揮發性記憶體模組,所述資料讀取方法包括:配置多重觸發隊列(Multi Trigger Queue,MTQ);從主機系統接收第一讀取指令;根據所述第一讀取指令於所述多重觸發隊列中配置多個第一讀取事件,其中所述第一讀取事件包括一個一般讀取事件與至少一快取讀取事件,其中所述一般讀取事件所對應之欲讀取資料與所述快取讀取事件所對應之欲讀取資料是屬於連續資料,所述一般讀取事件所對應之欲讀取資料是被所述第一讀取指令所請求,並且所述快取讀取事件所對應之欲讀取資料不被所述第一讀取指令所請求;根據所述第一讀取事件的至少其中之一發送至少一第一讀取指令序列並且接收反應於所述第一讀取指令序列之來自所述可複寫式非揮發性記憶體模組的第一資料;解碼所述第一資料;以及若所述第一資料解碼失敗,重置所述多重觸發隊列,並且根據重置後的所述多重觸發隊列中的至少一第二讀取事件發送至少一第二讀取指令序列,其中所述第二讀取事件包括所述快取讀取事件中的至少一第一快取讀取事件。
在本發明的一範例實施例中,所述可複寫式非揮發性記
憶體模組包括儲存區與緩衝區,其中所述第一讀取指令序列指示從所述儲存區中讀取所述第一資料,並且所述第二讀取指令指示從所述儲存區中讀取第二資料,其中所述第一資料是從所述儲存區中被讀取至所述緩衝區並且被從所述緩衝區傳送至記憶體控制電路單元的緩衝記憶體,其中所述第二資料是從所述儲存區中被讀取至所述緩衝區並且被從所述緩衝區傳送至所述緩衝記憶體。
在本發明的一範例實施例中,所述重置所述多重觸發隊
列的步驟包括:將所述第一讀取事件中對應至解碼失敗之資料的讀取事件設定為待執行事件,其中所述待執行事件是所述第二讀取事件中排序最前面的讀取事件。
在本發明的一範例實施例中,所述重置所述多重觸發隊
列的步驟包括:將所述第一讀取事件中對應至解碼失敗之資料的讀取事件設定為待執行事件,其中所述待執行事件不存在於所述多重觸發隊列中。
在本發明的一範例實施例中,在所述根據重置後的所述
多重觸發隊列中的所述第二讀取事件發送所述第二讀取指令序列的步驟之前,所述資料讀取方法更包括:重複執行所述待執行事件直到獲得正確資料為止。
在本發明的一範例實施例中,所述資料讀取方法更包
括:將所述第一資料暫存於記憶體控制電路單元的緩衝記憶體;以及若所述第一資料沒有解碼失敗,將所述第一資料中由所述第一讀取指令所請求的資料從所述緩衝記憶體傳送至所述主機系
統,並且根據所述第一讀取事件中尚未被執行的至少一第三讀取事件發送至少一第三讀取指令序列,其中所述第三讀取事件包括所述快取讀取事件中的至少一第二快取讀取事件。
在本發明的一範例實施例中,所述資料讀取方法更包
括:接收反應於所述第三讀取指令序列之來自所述可複寫式非揮發性記憶體模組的第三資料;解碼所述第三資料;以及若所述第三資料解碼失敗,重置所述多重觸發隊列,並且根據重置後的所述多重觸發隊列中的至少一第四讀取事件發送至少一第四讀取指令序列,其中所述第四讀取事件包括所述快取讀取事件中的至少一第三快取讀取事件。
在本發明的一範例實施例中,所述根據所述第一讀取指
令於所述多重觸發隊列中配置所述第一讀取事件的步驟包括:由記憶體控制電路單元所運行的隊列管理韌體(firmware)根據所述第一讀取指令於所述多重觸發隊列中配置所述第一讀取事件,其中根據所述第一讀取事件的所述至少其中之一發送所述第一讀取指令序列的步驟包括:由所述記憶體控制電路單元中的記憶體管理電路查詢所述多重觸發隊列並且根據所述第一讀取事件的所述至少其中之一發送所述第一讀取指令序列。
在本發明的一範例實施例中,在所述根據所述第一讀取
事件的所述至少其中之一發送所述第一讀取指令序列的步驟之前,所述資料讀取方法更包括:將所述第一讀取事件的其中之一的第一讀取事件資訊寫入至緩衝記憶體中的第一暫存器;將所述
第一讀取事件的其中之另一的第二讀取事件資訊寫入至所述緩衝記憶體中的第二暫存器;以及依照預定規則讀取所述第一暫存器中的所述第一讀取事件資訊與所述第二暫存器中的所述第二讀取事件資訊。
本發明的一範例實施例提供一種記憶體儲存裝置,其包
括連接介面單元、可複寫式非揮發性記憶體模組及記憶體控制電路單元。所述連接介面單元用以耦接至主機系統。所述記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組,其中所述記憶體控制電路單元用以配置多重觸發隊列,其中所述記憶體控制電路單元更用以從所述主機系統接收第一讀取指令,其中所述記憶體控制電路單元更用以根據所述第一讀取指令於所述多重觸發隊列中配置多個第一讀取事件,其中所述第一讀取事件包括一個一般讀取事件與至少一快取讀取事件,其中所述一般讀取事件所對應之欲讀取資料與所述快取讀取事件所對應之欲讀取資料是屬於連續資料,所述一般讀取事件所對應之欲讀取資料是被所述第一讀取指令所請求,並且所述快取讀取事件所對應之欲讀取資料不被所述第一讀取指令所請求,其中所述記憶體控制電路單元更用以根據所述第一讀取事件的至少其中之一發送至少一第一讀取指令序列並且接收反應於所述第一讀取指令序列之來自所述可複寫式非揮發性記憶體模組的第一資料,其中所述記憶體控制電路單元更用以解碼所述第一資料,其中若所述第一資料解碼失敗,所述記憶體控制電路單元更用以重置所
述多重觸發隊列並且根據重置後的所述多重觸發隊列中的至少一第二讀取事件發送至少一第二讀取指令序列,其中所述第二讀取事件包括所述快取讀取事件中的至少一第一快取讀取事件。
在本發明的一範例實施例中,所述記憶體控制電路單元
重置所述多重觸發隊列的操作包括:將所述第一讀取事件中對應至解碼失敗之資料的讀取事件設定為待執行事件,其中所述待執行事件是所述第二讀取事件中排序最前面的讀取事件。
在本發明的一範例實施例中,所述記憶體控制電路單元
重置所述多重觸發隊列的操作包括:將所述第一讀取事件中對應至解碼失敗之資料的讀取事件設定為待執行事件,其中所述待執行事件不存在於所述多重觸發隊列中。
在本發明的一範例實施例中,在所述記憶體控制電路單
元執行根據重置後的所述多重觸發隊列中的所述第二讀取事件發送所述第二讀取指令序列的操作之前,所述記憶體控制電路單元更用以重複執行所述待執行事件直到獲得正確資料為止。
在本發明的一範例實施例中,所述記憶體控制電路單元
更用以將所述第一資料暫存於所述記憶體控制電路單元的緩衝記憶體,其中若所述第一資料沒有解碼失敗,所述記憶體控制電路單元更用以將所述第一資料中由所述第一讀取指令所請求的資料從所述緩衝記憶體傳送至所述主機系統並且根據所述第一讀取事件中尚未被執行的至少一第三讀取事件發送至少一第三讀取指令序列,其中所述第三讀取事件包括所述快取讀取事件中的至少一
第二快取讀取事件。
在本發明的一範例實施例中,所述記憶體控制電路單元更用以接收反應於所述第三讀取指令序列之來自所述可複寫式非揮發性記憶體模組的第三資料,其中所述記憶體控制電路單元更用以解碼所述第三資料,其中若所述第三資料解碼失敗,所述記憶體控制電路單元更用以重置所述多重觸發隊列,根據重置後的所述多重觸發隊列中的至少一第四讀取事件發送至少一第四讀取指令序列,並且接收反應於所述第四讀取指令序列之來自所述可複寫式非揮發性記憶體模組的第四資料,其中所述第四讀取事件包括所述快取讀取事件中的至少一第三快取讀取事件。
在本發明的一範例實施例中,所述記憶體控制電路單元根據所述第一讀取指令於所述多重觸發隊列中配置所述第一讀取事件的操作包括:由所述記憶體控制電路單元所運行的隊列管理韌體根據所述第一讀取指令於所述多重觸發隊列中配置所述第一讀取事件,其中所述記憶體控制電路單元根據所述第一讀取事件的所述至少其中之一發送所述第一讀取指令序列的操作包括:由所述記憶體控制電路單元中的記憶體管理電路查詢所述多重觸發隊列並且根據所述第一讀取事件的所述至少其中之一發送所述第一讀取指令序列。
在本發明的一範例實施例中,所述記憶體控制電路單元包括緩衝記憶體,所述緩衝記憶體包括第一暫存器與第二暫存器,而在所述記憶體控制電路單元執行根據所述第一讀取事件的
所述至少其中之一發送所述第一讀取指令序列的操作之前,所述記憶體控制電路單元更用以:將所述第一讀取事件的其中之一的第一讀取事件資訊寫入至所述第一暫存器;將所述第一讀取事件的其中之另一的第二讀取事件資訊寫入至所述第二暫存器;以及依照預定規則讀取所述第一暫存器中的所述第一讀取事件資訊與所述第二暫存器中的所述第二讀取事件資訊。
本發明的一範例實施例提供一種記憶體控制電路單元,
其用於控制可複寫式非揮發性記憶體模組,所述記憶體控制電路單元包括主機介面、記憶體介面、錯誤檢查與校正電路、緩衝記憶體及記憶體管理電路。主機介面用以耦接至主機系統。記憶體介面用以耦接至所述可複寫式非揮發性記憶體模組。記憶體管理電路耦接至所述主機介面、所述記憶體介面、所述錯誤檢查與校正電路及所述緩衝記憶體,其中所述記憶體管理電路用以配置多重觸發隊列於所述緩衝記憶體,其中所述記憶體管理電路更用以從所述主機系統接收第一讀取指令,其中所述記憶體管理電路更用以根據所述第一讀取指令於所述多重觸發隊列中配置多個第一讀取事件,其中所述第一讀取事件包括一個一般讀取事件與至少一快取讀取事件,其中所述一般讀取事件所對應之欲讀取資料與所述快取讀取事件所對應之欲讀取資料是屬於連續資料,所述一般讀取事件所對應之欲讀取資料是被所述第一讀取指令所請求,並且所述快取讀取事件所對應之欲讀取資料不被所述第一讀取指令所請求,其中所述記憶體管理電路更用以根據所述第一讀取事
件的至少其中之一發送至少一第一讀取指令序列並且接收反應於所述第一讀取指令序列之來自所述可複寫式非揮發性記憶體模組的第一資料,其中所述錯誤檢查與校正電路用以解碼所述第一資料,其中若所述第一資料解碼失敗,所述記憶體管理電路更用以重置所述多重觸發隊列並且根據重置後的所述多重觸發隊列中的至少一第二讀取事件發送至少一第二讀取指令序列,其中所述第二讀取事件包括所述快取讀取事件中的至少一第一快取讀取事件。
在本發明的一範例實施例中,所述記憶體管理電路重置
所述多重觸發隊列的操作包括:將所述第一讀取事件中對應至解碼失敗之資料的讀取事件設定為待執行事件,其中所述待執行事件是所述第二讀取事件中排序最前面的讀取事件。
在本發明的一範例實施例中,所述記憶體管理電路重置
所述多重觸發隊列的操作包括:將所述第一讀取事件中對應至解碼失敗之資料的讀取事件設定為待執行事件,其中所述待執行事件不存在於所述多重觸發隊列中。
在本發明的一範例實施例中,在所述記憶體管理電路執
行根據重置後的所述多重觸發隊列中的所述第二讀取事件發送所述第二讀取指令序列的操作之前,所述記憶體管理電路更用以重複執行所述待執行事件直到獲得正確資料為止。
在本發明的一範例實施例中,所述記憶體管理電路更用
以將所述第一資料暫存於所述緩衝記憶體,其中若所述第一資料
沒有解碼失敗,所述記憶體管理電路更用以將所述第一資料中由所述第一讀取指令所請求的資料從所述緩衝記憶體傳送至所述主機系統並且根據所述第一讀取事件中尚未被執行的至少一第三讀取事件發送至少一第三讀取指令序列,其中所述第三讀取事件包括所述快取讀取事件中的至少一第二快取讀取事件。
在本發明的一範例實施例中,所述記憶體管理電路更用
以接收反應於所述第三讀取指令序列之來自所述可複寫式非揮發性記憶體模組的第三資料,其中所述錯誤檢查與校正電路更用以解碼所述第三資料,其中若所述第三資料解碼失敗,所述記憶體管理電路更用以重置所述多重觸發隊列並且根據重置後的所述多重觸發隊列中的至少一第四讀取事件發送至少一第四讀取指令序列,其中所述第四讀取事件包括所述快取讀取事件中的至少一第三快取讀取事件。
在本發明的一範例實施例中,所述記憶體管理電路根據
所述第一讀取指令於所述多重觸發隊列中配置所述第一讀取事件的操作包括:由所述記憶體管理電路所運行的隊列管理韌體根據所述第一讀取指令於所述多重觸發隊列中配置所述第一讀取事件,其中所述記憶體管理電路根據所述第一讀取事件的所述至少其中之一發送所述第一讀取指令序列的操作包括:由所述記憶體管理電路中的記憶體讀取單元查詢所述多重觸發隊列並且根據所述第一讀取事件的所述至少其中之一發送所述第一讀取指令序列。
在本發明的一範例實施例中,所述緩衝記憶體包括第一暫存器與第二暫存器,而在所述記憶體管理電路執行根據所述第一讀取事件的所述至少其中之一發送所述第一讀取指令序列的操作之前,所述記憶體管理電路更用以:將所述第一讀取事件的其中之一的第一讀取事件資訊寫入至所述第一暫存器;將所述第一讀取事件的其中之另一的第二讀取事件資訊寫入至所述第二暫存器;以及依照預定規則讀取所述第一暫存器中的所述第一讀取事件資訊與所述第二暫存器中的所述第二讀取事件資訊。
基於上述,根據接收到的讀取指令,本發明可在多重觸發隊列中配置一般讀取指令與快取讀取指令。在發生解碼失敗時,本發明可重置多重觸發隊列並且根據重置後的多重觸發隊列來進行後續的資料讀取操作。藉此,可讓前端的指令接收與後端的資料管理相互配合。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
10‧‧‧記憶體儲存裝置
11‧‧‧主機系統
12‧‧‧電腦
122‧‧‧微處理器
124‧‧‧隨機存取記憶體
126‧‧‧系統匯流排
128‧‧‧資料傳輸介面
13‧‧‧輸入/輸出裝置
21‧‧‧滑鼠
22‧‧‧鍵盤
23‧‧‧顯示器
24‧‧‧印表機
25‧‧‧隨身碟
26‧‧‧記憶卡
27‧‧‧固態硬碟
31‧‧‧數位相機
32‧‧‧SD卡
33‧‧‧MMC卡
34‧‧‧記憶棒
35‧‧‧CF卡
36‧‧‧嵌入式儲存裝置
402‧‧‧連接介面單元
404‧‧‧記憶體控制電路單元
406‧‧‧可複寫式非揮發性記憶體模組
502‧‧‧記憶胞陣列
504‧‧‧字元線控制電路
506‧‧‧位元線控制電路
508‧‧‧行解碼器
510‧‧‧資料輸入/輸出緩衝器
512‧‧‧控制電路
602‧‧‧記憶胞
604‧‧‧位元線
606‧‧‧字元線
608‧‧‧共用源極線
612、614‧‧‧電晶體
700(0)~700(N)‧‧‧實體抹除單元
802‧‧‧記憶體管理電路
804‧‧‧主機介面
806‧‧‧記憶體介面
808‧‧‧錯誤檢查與校正電路
810‧‧‧緩衝記憶體
812‧‧‧電源管理電路
901‧‧‧緩衝區
902‧‧‧儲存區
903‧‧‧系統區
710(0)~710(3)‧‧‧實體程式化單元
1001、1002、1003、1004‧‧‧資料
1010‧‧‧多重觸發隊列
1020‧‧‧一般讀取事件
1030、1040、1050‧‧‧快取讀取事件
S1301~S1309‧‧‧步驟
圖1是根據本發明之一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2是根據本發明的一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖3是根據本發明的一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖4是繪示圖1所示的記憶體儲存裝置的概要方塊圖。
圖5是根據本發明的一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。
圖6是根據本發明的一範例實施例所繪示的記憶胞陣列的示意圖。
圖7是根據本發明的一範例實施例所繪示的可複寫式非揮發性記憶體模組的示意圖。
圖8是根據本發明的一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的示意圖。
圖9是根據本發明的一範例實施例所繪示的管理可複寫式非揮發性記憶體模組的示意圖。
圖10a至圖10d是根據本發明的一範例實施例所繪示的讀取資料的示意圖。
圖11a至圖11f是根據本發明的一範例實施例所繪示的讀取資料的示意圖。
圖12是根據本發明的一範例實施例所繪示的讀取資料的示意圖。
圖13是根據本發明的一範例實施例所繪示的資料讀取方法的流程圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1是根據本發明的一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。圖2是根據本發明的一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
請參照圖1,主機系統11一般包括電腦12與輸入/輸出(input/output,I/O)裝置13。電腦12包括微處理器122、隨機存取記憶體(random access memory,RAM)124、系統匯流排126與資料傳輸介面128。輸入/輸出裝置13包括如圖2的滑鼠21、鍵盤22、顯示器23與印表機24。必須瞭解的是,圖2所示的裝置非限制輸入/輸出裝置13,輸入/輸出裝置13可更包括其他裝置。
在一範例實施例中,記憶體儲存裝置10是透過資料傳輸介面128與主機系統11的其他元件耦接。藉由微處理器122、隨機存取記憶體124與輸入/輸出裝置13的運作可將資料寫入至記憶體儲存裝置10或從記憶體儲存裝置10中讀取資料。例如,記憶體儲存裝置10可以是如圖2所示的隨身碟25、記憶卡26或固態硬碟(Solid State Drive,SSD)27等的可複寫式非揮發性記憶體儲存裝置。
圖3是根據本發明的一範例實施例所繪示的主機系統與
記憶體儲存裝置的示意圖。
一般而言,主機系統11為可實質地與記憶體儲存裝置10
配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統11是以電腦系統來作說明,然而,另一範例實施例中,主機系統11可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)31時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡32、MMC卡33、記憶棒(memory stick)34、CF卡35或嵌入式儲存裝置36(如圖3所示)。嵌入式儲存裝置36包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖4是繪示圖1所示的記憶體儲存裝置的概要方塊圖。
請參照圖4,記憶體儲存裝置10包括連接介面單元402、記憶體控制電路單元404與可複寫式非揮發性記憶體模組406。
在本範例實施例中,連接介面單元402是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元402亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、安全數位
(Secure Digital,SD)介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、崁入式多媒體儲存卡(Embedded Multimedia Card,eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。連接介面單元402可與記憶體控制電路單元404封裝在一個晶片中,或者連接介面單元402是佈設於一包含記憶體控制電路單元404之晶片外。
記憶體控制電路單元404用以執行以硬體型式或韌體型
式實作的多個邏輯閘或控制指令,並且根據主機系統11的指令在可複寫式非揮發性記憶體模組406中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組406是耦接至記憶體控制
電路單元404,並且用以儲存主機系統11所寫入之資料。可複寫式非揮發性記憶體模組406可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元資料的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元資料的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特
性的記憶體模組。
圖5是根據本發明的一範例實施例所繪示的可複寫式非
揮發性記憶體模組的概要方塊圖。圖6是根據本發明的一範例實施例所繪示的記憶胞陣列的示意圖。
請參照圖5,可複寫式非揮發性記憶體模組406包括記憶
胞陣列502、字元線控制電路504、位元線控制電路506、行解碼器(column decoder)508、資料輸入/輸出緩衝器510與控制電路512。
在本範例實施例中,記憶胞陣列502可包括用以儲存資
料的多個記憶胞602、多個選擇閘汲極(select gate drain,SGD)電晶體612與多個選擇閘源極(select gate source,SGS)電晶體614、以及連接此些記憶胞的多條位元線604、多條字元線606、與共用源極線608(如圖6所示)。記憶胞602是以陣列方式(或立體堆疊的方式)配置在位元線604與字元線606的交叉點上。當從記憶體控制電路單元404接收到寫入指令或讀取指令時,控制電路512會控制字元線控制電路504、位元線控制電路506、行解碼器508、資料輸入/輸出緩衝器510來寫入資料至記憶胞陣列502或從記憶胞陣列502中讀取資料,其中字元線控制電路504用以控制施予至字元線606的電壓,位元線控制電路506用以控制施予至位元線604的電壓,行解碼器508依據指令中的列位址以選擇對應的位元線,並且資料輸入/輸出緩衝器510用以暫存資料。
可複寫式非揮發性記憶體模組406中的每一個記憶胞是
以臨界電壓的改變來儲存一或多個位元。具體來說,每一個記憶胞的控制閘極(control gate)與通道之間有一個電荷捕捉層。透過施予一寫入電壓至控制閘極,可以改變電荷補捉層的電子量,因而改變了記憶胞的臨界電壓。此改變臨界電壓的程序亦稱為”把資料寫入至記憶胞”或”程式化記憶胞”。隨著臨界電壓的改變,記憶胞陣列502的每一個記憶胞具有多個儲存狀態。並且透過讀取電壓可以判斷記憶胞是屬於哪一個儲存狀態,藉此取得記憶胞所儲存的一或多個位元。
圖7是根據本發明的一範例實施例所繪示的可複寫式非揮發性記憶體模組的示意圖。
請參照圖7,可複寫式非揮發性記憶體模組406的記憶胞會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體抹除單元700(0)~700(N)。具體來說,同一條字元線上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞可儲存2個以上的位元,則同一條字元線上的實體程式化單元至少可被分類為下實體程式化單元與上實體程式化單元。例如,一記憶胞的最低有效位元(Least Significant Bit,LSB)是屬於下實體程式化單元,並且一記憶胞的最高有效位元(Most Significant Bit,MSB)是屬於上實體程式化單元。一般來說,在MLC NAND型快閃記憶體中,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度,或下實體程式化單元的可靠度是高於上實體程式化單元的可靠度。在此範例實施例中,實體程式化單元為程式化的最小
單元。即,實體程式化單元為寫入資料的最小單元。例如,實體程式化單元為實體頁面或是實體扇(sector)。若實體程式化單元為實體頁面,則每一個實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體扇,用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤更正碼)。在本範例實施例中,每一個資料位元區包含32個實體扇,且一個實體扇的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,本發明並不限制實體扇的大小以及個數。另一方面,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊。
可複寫式非揮發性記憶體模組406可以是以第一程式化模式或第二程式化模式來使用。例如,以第一程式化模式或第二程式化模式來使用可複寫式非揮發性記憶體模組4065中的一個實體程式化單元是指以第一程式化模式或第二程式化模式來程式化此實體程式化單元中的記憶胞。第一程式化模式亦稱為多層記憶胞模式。若是以第一程式化模式來使用一個實體程式化單元,則此實體程式化單元中的每一個記憶胞儲存有一第一數量的位元資料,其中此第一數量不小於2。例如,此第一數量為2或3。第二程式化模式包括單層記憶胞模式(SLC mode)、下實體程式化模式(lower physical programming unit programming mode)、混合程式化模式(mixture programming mode)及少層記憶胞模式的至少其中之
一。若是以單層記憶胞模式來使用一個實體程式化單元,則此實體程式化單元中的每一個記憶胞只儲存一個位元資料。若是以下實體程式化模式來使用可複寫式非揮發性記憶體模組406,則可複寫式非揮發性記憶體模組406中只有屬於下實體程式化單元的實體程式化單元會被程式化,而下實體程式化單元所對應的上實體程式化單元可以不被程式化。若是以混合程式化模式來使用可複寫式非揮發性記憶體模組406,則有效資料(或真實資料)會被程式化至屬於下實體程式化單元的實體程式化單元中,而不會被程式化至屬於上實體程式化單元的實體程式化單元中,但對應於有效資料(或真實資料)的無效資料(或虛擬資料)則會被程式化至屬於上實體程式化單元的實體程式化單元中。若是以少層記憶胞模式來使用一個實體程式化單元,則此實體程式化單元中的每一個記憶胞儲存有一第二數量的位元資料,其中此第二數量小於第一數量。例如,此第二數量為1或2。一般來說,使用第二程式化模式的實體程式化單元的程式化速度會高於使用第一程式化模式的實體程式化單元的程式化速度。
圖8是根據本發明的一範例實施例所繪示的記憶體控制
電路單元的概要方塊圖。
請參照圖8,記憶體控制電路單元404包括記憶體管理電
路802、主機介面804、記憶體介面806、錯誤檢查與校正電路808及緩衝記憶體810。
記憶體管理電路802用以控制記憶體控制電路單元404
的整體運作。具體來說,記憶體管理電路802具有多個控制指令,並且在記憶體儲存裝置10運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路802的操作時,等同於說明記憶體控制電路單元404的操作,以下並不再贅述。
在本範例實施例中,記憶體管理電路802的控制指令是以韌體型式來實作。例如,記憶體管理電路802具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置10運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在另一範例實施例中,記憶體管理電路802的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路802具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路802的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在另一範例實施例中,記憶體管理電路802的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路802包
括微控制器、記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元。記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元是耦接至微控制器。其中,記憶體管理單元用以管理可複寫式非揮發性記憶體模組406的實體抹除單元;記憶體寫入單元用以對可複寫式非揮發性記憶體模組406下達寫入指令以將資料寫入至可複寫式非揮發性記憶體模組406中;記憶體讀取單元用以對可複寫式非揮發性記憶體模組406下達讀取指令以從可複寫式非揮發性記憶體模組406中讀取資料;記憶體抹除單元用以對可複寫式非揮發性記憶體模組406下達抹除指令以將資料從可複寫式非揮發性記憶體模組406中抹除;而資料處理單元用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。
主機介面804是耦接至記憶體管理電路802並且用以接收與識別主機系統11所傳送的指令與資料。也就是說,主機系統11所傳送的指令與資料會透過主機介面804來傳送至記憶體管理電路802。在本範例實施例中,主機介面804是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面804亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面806是耦接至記憶體管理電路802並且用以
存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面806轉換為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路802要存取可複寫式非揮發性記憶體模組406,記憶體介面806會傳送對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
錯誤檢查與校正電路808是耦接至記憶體管理電路802
並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路802從主機系統11中接收到寫入指令時,錯誤檢查與校正電路808會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC)及/或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路802會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路802從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路808會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。
緩衝記憶體810是耦接至記憶體管理電路802並且用以暫存來自於主機系統11的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。
在一範例實施例中,記憶體控制電路單元404還包括電源管理電路712。電源管理電路712是耦接至記憶體管理電路802並且用以控制記憶體儲存裝置10的電源。
在本範例實施例中,錯誤檢查與校正電路808所使用的
是低密度奇偶檢查校正碼(low density parity code,LDPC)。然而,在另一範例實施例中,錯誤檢查與校正電路808所使用的也可以是BCH碼、迴旋碼(convolutional code)、渦輪碼(turbo code),本發明不加以限制。
在本範例實施例中,錯誤檢查與校正電路808會根據一
個低密度奇偶檢查演算法來編碼與解碼。在低密度奇偶檢查校正碼中,是用一個奇偶檢查矩陣來定義有效的碼字。以下將奇偶檢查矩陣標記為矩陣H,並且一碼字標記為CW。依照以下方程式(1),若奇偶檢查矩陣H與碼字CW的相乘是零向量,表示碼字CW為有效的碼字。其中運算子表示模2(mod 2)的矩陣相乘。換言之,矩陣H的零空間(null space)便包含了所有的有效碼字。然而,本發明並不限制碼字CW的內容。例如,碼字CW也可以包括用任意演算法所產生的錯誤更正碼或是錯誤檢查碼。
其中矩陣H的維度是m-乘-n(m-by-n),碼字CW的維度是1-乘-n。m與n為正整數。碼字CW中包括了訊息位元與奇偶位元,即碼字CW可以表示成[M P],其中向量M是由訊息位元所組成,向量P是由奇偶位元所組成。向量M的維度是1-乘-(n-m),
而向量P的維度是1-乘-m。以下將訊息位元與奇偶位元統稱為資料位元。換言之,碼字CW中具有n個資料位元,其中訊息位元的長度為(n-m)位元,並且奇偶位元的長度是m位元,即碼字CW的碼率(code rate)為(n-m)/n。
一般來說,在編碼時會使用一個產生矩陣(以下標記為G),使得對於任意的向量M都可滿足以下方程式(2)。其中產生矩陣G的維度是(n-m)-乘-n。
由方程式(2)所產生的碼字CW為有效的碼字。因此可將方程式(2)代入方程式(1),藉此得到以下方程式(3)。
由於向量M可以是任意的向量,因此以下方程式(4)必定會滿足。也就是說,在決定奇偶檢查矩陣H以後,對應的產生矩陣G也可被決定。
在解碼一個碼字CW時,會先對碼字中的資料位元執行一個奇偶檢查程序,例如將奇偶檢查矩陣H與碼字CW相乘以產生一個向量(以下標記為S,如以下方程式(5)所示)。若向量S是零向量,則可直接輸出碼字CW。若向量S不是零向量,則表示碼字CW不是有效的碼字。
向量S的維度是m-乘-1,其中每一個元素亦稱為校驗子
(syndrome)。若碼字CW不是有效的碼字,則錯誤檢查與校正電路808會執行一個解碼程序,以嘗試更正碼字CW中的錯誤位元。在一範例實施例中,錯誤檢查與校正電路808所執行的解碼程序為一迭代(iteration)解碼程序。也就是說,解碼的程序會不斷的重覆執行,直到成功的解出碼字或執行次數到達一預定門檻值為止。若成功的解出碼字,表示解碼成功;反之,則表示解碼失敗。例如,在對於碼字CW的解碼程序的執行次數到達上述預設門檻值時,若還無法確定碼字CW中的錯誤位元,表示錯誤檢查與校正電路808對於碼字CW解碼失敗。
在本範例實施例中,若對於某一個碼字解碼失敗,則記憶體管理電路802會調整讀取電壓,並且利用調整後的讀取電壓來取得另一個碼字。例如,假設原先用來讀取某一個實體程式化單元中的記憶胞的讀取電壓是預設讀取電壓,則在對於讀取出的資料解碼失敗之後,記憶體管理電路802會指示可複寫式非揮發性記憶體模組406使用與預設讀取電壓不同的另一個讀取電壓來再次讀取此實體程式化單元中的記憶胞以取得另一個碼字。在取得另一個碼字之後,錯誤檢查與校正電路808會對此另一個碼字進行解碼;若可解碼成功,則錯誤檢查與校正電路808會輸出此碼字;若解碼失敗,則記憶體管理電路802會重複執行上述調整讀取電壓等操作,直到可成功解碼或切換讀取電壓的次數達到一預設次數為止。
圖9是根據本發明的一範例實施例所繪示的管理可複寫
式非揮發性記憶體模組的示意圖。必須瞭解的是,在此描述可複寫式非揮發性記憶體模組406之實體抹除單元的運作時,以“選擇”、“分組”、“劃分”、“關聯”等詞來操作實體抹除單元是邏輯上的概念。也就是說,可複寫式非揮發性記憶體模組406之實體抹除單元的實際位置並未更動,而是邏輯上對可複寫式非揮發性記憶體模組的實體抹除單元進行操作。
請參照圖8,記憶體管理電路802可將可複寫式非揮發性
記憶體模組406的實體抹除單元700(0)~700(N)邏輯地劃分為多個區域,例如為緩衝區901、儲存區902及系統區903。
緩衝區901的實體抹除單元700(0)~700(A)是用以暫存主
機系統11欲寫入或接收的資料。例如,在記憶體管理電路802接收到主機系統11欲寫入至儲存區902的資料之後,此資料會被暫存在緩衝記憶體810;爾後,此資料會被從緩衝記憶體810傳送到緩衝區901並且從緩衝區901複製到儲存區902。例如,在記憶體管理電路802從儲存區902讀取出一筆資料之後,此資料會被暫存在緩衝區901;爾後,此資料會被從緩衝區901傳送至緩衝記憶體810並且可被從緩衝記憶體810傳送至主機系統11。
儲存區902的實體抹除單元700(A+1)~700(B)是用以儲存
來自主機系統11的資料。儲存區902中會儲存有效資料與無效資料。例如,當主機系統11要刪除一份有效資料時,被刪除的資料可能還是儲存在儲存區902中,但會被標記為無效資料。沒有儲存有效資料的實體抹除單元亦被稱為閒置(spare)實體抹除單元。
例如,被抹除以後的實體抹除單元便會成為閒置實體抹除單元。若緩衝區901、儲存區902或系統區903中有實體抹除單元損壞時,緩衝區901或儲存區902中的實體抹除單元也可以用來替換損壞的實體抹除單元。倘若緩衝區901或儲存區902中沒有可用的實體抹除單元來替換損壞的實體抹除單元時,則記憶體管理電路802會將整個記憶體儲存裝置10宣告為寫入保護(write protect)狀態,而無法再寫入資料。
系統區903的實體抹除單元700(B+1)~700(N)是用以記錄系統資料,其中此系統資料包括關於記憶體晶片的製造商與型號、記憶體晶片的實體抹除單元數、每一實體抹除單元的實體程式化單元數等。
緩衝區901、儲存區902及系統區903的實體抹除單元的數量會依據不同的記憶體規格而有所不同。此外,必須瞭解的是,在記憶體儲存裝置10的運作中,實體抹除單元關聯至緩衝區901、儲存區902及系統區903的分組關係會動態地變動。例如,當系統區903中的實體抹除單元損壞而被儲存區902的實體抹除單元取代時,則原本在儲存區902的實體抹除單元會被關聯至系統區903。
在本範例實施例中,緩衝區901的實體抹除單元是使用上述第二程式化模式,而儲存區902的實體抹除單元是使用上述第一程式化模式。然而,在另一範例實施例中,緩衝區901也可以是使用上述第一程式化模式及/或儲存區902的實體抹除單元也
可以是使用上述第二程式化模式。此外,系統區903的實體抹除單元也可以是使用上述第一程式化模式或上述第二程式化模式,本發明不加以限制。此外,亦可以不劃分緩衝區901。例如,在一範例實施例中,實體抹除單元700(0)~700(N)僅被劃分為儲存區902與系統區903;藉此,資料可直接從緩衝記憶體810傳送到儲存區902或者直接從儲存區902傳送到緩衝記憶體810。或者,在另一範例實施例中,緩衝區901的數目也可以是更多,本發明不加以限制。
在本範例實施例中,記憶體管理電路802會配置多重觸
發隊列(Multi Trigger Queue,MTQ)。例如,此多重觸發隊列儲存於緩衝記憶體810。記憶體管理電路802會從主機系統11接收一個讀取指令(亦稱為第一讀取指令)。記憶體管理電路802會根據第一讀取指令於此多重觸發隊列中配置多個讀取事件(亦稱為第一讀取事件)。第一讀取事件包括一個一般讀取事件與至少一快取讀取事件。一般讀取事件所對應之欲讀取資料與每一個快取讀取事件所對應之欲讀取資料是屬於連續資料,一般讀取事件所對應之欲讀取資料是被第一讀取指令所請求,並且每一個快取讀取事件所對應之欲讀取資料不被第一讀取指令所請求。也就是說,快取讀取事件是指示執行預讀取(pre-read)操作。由於一般讀取事件所對應之欲讀取資料與每一個快取讀取事件所對應之欲讀取資料是屬於連續資料,因此快取讀取事件中排序最前面者所對應之欲讀取資料的起始邏輯位址會是接續於一般讀取事件所對應之欲讀取資
料的結束邏輯位址;快取讀取事件中排序第二者所對應之欲讀取資料的起始邏輯位址會是接續於快取讀取事件中排序最前面者所對應之欲讀取資料的結束邏輯位址;快取讀取事件中排序第三者所對應之欲讀取資料的起始邏輯位址會是接續於快取讀取事件中排序第二者所對應之欲讀取資料的結束邏輯位址,以此類推。根據第一讀取事件在多重觸發隊列中的排序,由前至後,第一讀取指令所請求的資料與多筆預讀取資料會依序被讀取。
記憶體管理電路802會根據第一讀取事件的至少其中之一發送至少一個讀取指令序列(亦稱為第一讀取指令序列)至可複寫式非揮發性記憶體模組406並且接收反應於第一讀取指令序列之來自可複寫式非揮發性記憶體模組406的資料(亦稱為第一資料)。在此,第一讀取指令序列包括至少一個指令碼或程式碼並且用以指示從儲存區902中讀取第一資料。在接收到第一資料之後,第一資料會被暫存在緩衝記憶體810並且錯誤檢查與校正電路808會對第一資料進行解碼。關於錯誤檢查與校正電路808如何解碼已於前述說明,在此便不贅述。在另一範例實施例中,第一資料也可以是先被傳送至錯誤檢查與校正電路808進行解碼,解碼成功後才會被暫存到緩衝記憶體810;若解碼失敗則不將第一資料暫存於緩衝記憶體810。
記憶體管理電路802會判斷第一資料是否解碼失敗。若第一資料解碼失敗,記憶體管理電路802會重置多重觸發隊列,根據重置後的多重觸發隊列中的至少一讀取事件(亦稱為第二讀
取事件)發送至少一讀取指令序列(亦稱為第二讀取指令序列)至可複寫式非揮發性記憶體模組406,並且接收反應於第二讀取指令序列之來自可複寫式非揮發性記憶體模組406的資料(亦稱為第二資料)。在此,第二讀取指令序列包括至少一個指令碼或程式碼並且用以指示從儲存區902中讀取第二資料。在接收到第二資料之後,第二資料會被暫存在緩衝記憶體810並且錯誤檢查與校正電路808會對第二資料進行解碼。在另一範例實施例中,第二資料也可以是先被傳送至錯誤檢查與校正電路808進行解碼,解碼成功後才會被暫存到緩衝記憶體810;若解碼失敗則不將第二資料暫存於緩衝記憶體810。特別是,所述第二讀取事件會包括所述快取讀取事件的至少其中之一(亦稱為第一快取讀取事件)。
值得一提的是,在本範例實施例中,當重置多重觸發隊
列時,記憶體管理電路802會將第一讀取事件中對應至解碼失敗之資料的讀取事件設定為待執行事件。其中,待執行事件是所述第二讀取事件中排序最前面的讀取事件。藉此,對應至解碼失敗之資料的讀取事件會在重置後的多重觸發隊列中被再次執行。
若第一資料沒有解碼失敗,記憶體管理電路802會將第
一資料中由第一讀取指令所請求的資料從緩衝記憶體810傳送至主機系統11。若第一讀取事件中還有尚未被執行的至少一讀取事件(亦稱為第三讀取事件),記憶體管理電路802會根據第三讀取事件發送至少一讀取指令序列(亦稱為第三讀取指令序列)至可複寫式非揮發性記憶體模組406,並且接收反應於第三讀取指令序列之
來自可複寫式非揮發性記憶體模組406的資料(亦稱為第三資料)。在此,第三讀取指令序列包括至少一個指令碼或程式碼並且用以指示從儲存區902中讀取第三資料。在接收到第三資料之後,第三資料會被暫存在緩衝記憶體810並且錯誤檢查與校正電路808會對第三資料進行解碼。在另一範例實施例中,第三資料也可以是先被傳送至錯誤檢查與校正電路808進行解碼,解碼成功後才會被暫存到緩衝記憶體810;若解碼失敗則不將第三資料暫存於緩衝記憶體810。特別是,所述第三讀取事件會包括所述快取讀取事件的至少其中之一(亦稱為第二快取讀取事件)。在另一範例實施例中,若第一資料已經是第一讀取事件所指示的最後一筆須讀取的資料,則記憶體管理電路802不會發送三讀取指令序列。
在接收到第三資料之後,記憶體管理電路802會判斷第三資料是否解碼失敗。若第三資料解碼失敗,記憶體管理電路802會重置多重觸發隊列,根據重置後的多重觸發隊列中的至少一讀取事件(亦稱為第四讀取事件)發送至少一讀取指令序列(亦稱為第四讀取指令序列),並且接收反應於第四讀取指令序列之來自可複寫式非揮發性記憶體模組406的資料(亦稱為第四資料)。在此,第四讀取指令序列包括至少一個指令碼或程式碼並且用以指示從儲存區902中讀取第四資料。在接收到第四資料之後,第四資料會被暫存在緩衝記憶體810並且錯誤檢查與校正電路808會對第四資料進行解碼。在另一範例實施例中,第四資料也可以是先被傳送至錯誤檢查與校正電路808進行解碼,解碼成功後才會被暫存
到緩衝記憶體810;若解碼失敗則不將第四資料暫存於緩衝記憶體810。特別是,所述第四讀取事件會包括所述快取讀取事件的至少其中之一(亦稱為第三快取讀取事件)。
另一方面,在接收到第二資料之後,記憶體管理電路802
會判斷第二資料是否解碼失敗。若第二資料解碼失敗,記憶體管理電路802會再次重置多重觸發隊列,根據再次重置後的多重觸發隊列中的至少一讀取事件(亦稱為第五讀取事件)發送至少一讀取指令序列(亦稱為第五讀取指令序列),並且接收反應於第五讀取指令序列之來自可複寫式非揮發性記憶體模組406的資料(亦稱為第五資料)。在此,第五讀取指令序列包括至少一個指令碼或程式碼並且用以指示從儲存區902中讀取第五資料。在接收到第五資料之後,第五資料會被暫存在緩衝記憶體810並且錯誤檢查與校正電路808會對第五資料進行解碼。在另一範例實施例中,第五資料也可以是先被傳送至錯誤檢查與校正電路808進行解碼,解碼成功後才會被暫存到緩衝記憶體810;若解碼失敗則不將第五資料暫存於緩衝記憶體810。特別是,所述第五讀取事件包括所述快取讀取事件的至少其中之一(亦稱為第四快取讀取事件)。
也就是說,若某一筆資料沒有解碼失敗,則記憶體管理電路802會判斷多重觸發隊列中是否還存在尚未被執行的讀取事件。若是,則根據多重觸發隊列中尚未被執行的讀取事件,更多的資料會被讀取、對應的解碼程序會被執行並且根據解碼是否失敗多重觸發隊列可能會被重置,在此便不贅述。
在接收到第一讀取指令之後,記憶體管理電路802可接
收另一讀取指令(亦稱為第二讀取指令)。記憶體管理電路802會判斷第二讀取指令所請求的資料是否包含在上述第一資料、第二資料、第三資料或第四資料中。若第二讀取指令所請求的資料已包含在上述第一資料、第二資料、第三資料或第四資料中,則記憶體管理電路802會將第二讀取指令所請求的資料從緩衝記憶體810傳送至主機系統11。藉此,可加快資料讀取速度。
圖10a至圖10d是根據本發明的一範例實施例所繪示的
讀取資料的示意圖。
請參照圖10a,在接收到第一讀取指令之後,多重觸發隊
列1010中會被配置多個讀取事件,例如,一般讀取事件1020與快取讀取事件1030~1050。一般讀取事件1020是指示讀取第一讀取指令所請求的資料,而快取讀取事件1030~1050是指示讀取不是第一讀取指令所請求的資料。也就是說,快取讀取事件1030~1050不是由主機系統11發起的,而是由記憶體管理電路802發起的用以執行預讀取操作的指示。其中,一般讀取事件1020與快取讀取事件1030~1050所指示讀取的資料是屬於連續資料。關於連續資料的定義已於前述說明,在此便不贅述。值得一提的是,在此雖然是以根據一個讀取指令配置一個一般讀取事件與多個快取讀取事件作為範例,然而,在另一範例實施例中,根據一個讀取指令也可能配置多個一般讀取事件與多個快取讀取事件,本發明不加以限制。其中,若根據一個讀取指令配置多個一般讀取事
件,則此些一般讀取事件所對應之欲讀取的資料都是屬於此讀取指令所請求的資料。此外,多重觸發隊列1010中可被配置的快取讀取事件的數目也可以更多或更少。例如,可根據緩衝記憶體810的容量及/或緩衝區901的容量來決定多重觸發隊列1010中可被配置的快取讀取事件的數目。若緩衝記憶體810的容量及/或緩衝區901的容量越大,則多重觸發隊列1010中可被配置的快取讀取事件的數目可以越多;若緩衝記憶體810的容量及/或緩衝區901的容量越小,則多重觸發隊列1010中可被配置的快取讀取事件的數目越少。
在本範例實施例中,一般讀取事件1020排序在最前面,而快取讀取事件1030~1050排序在相對應的一般讀取事件1020之後,如圖10a所示。也就是說,在執行順序上,一般讀取事件1020會先被執行;爾後,快取讀取事件1030會被執行;爾後,快取讀取事件1040會被執行;最後,快取讀取事件1050會被執行。在本範例實施例中,一個指標可以用來指示目前正在執行多重觸發隊列1010中的哪一個讀取事件,並且在一個讀取事件被執行完畢之後,此指標會下移而指示下一個需被執行的讀取事件。然而,在執行此些讀取事件的過程中,若多重觸發隊列1010被重置,則前一個被執行的讀取事件會被重複執行。例如,若多重觸發隊列1010被重置,則此指標會停留在前一個被執行完畢的讀取事件,而不會往下移動。
如圖10a所示,假設第一讀取指令是請求某一邏輯位址
的資料1001,則根據一般讀取事件1020,資料1001會被從實體程式化單元710(0)讀取至緩衝區901。資料1001會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1001進行解碼。假設資料1001可以成功地解碼,解碼後的資料1001會被傳送至主機系統11,並且快取讀取事件1030會接續被執行。
請參照圖10b,根據快取讀取事件1030,資料1002會被從實體程式化單元710(1)讀取至緩衝區901。資料1002會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1002進行解碼。假設資料1002可以成功地解碼,則解碼後的資料1002會被暫存於緩衝記憶體810,並且快取讀取事件1040會接續被執行。爾後,若接收到請求讀取資料1002的讀取指令,則資料1002可隨即被從緩衝記憶體810傳送至主機系統11。
請參照圖10c,根據快取讀取事件1040,資料1003會被從實體程式化單元710(2)讀取至緩衝區901。資料1003會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1003進行解碼。假設資料1003可以成功地解碼,則解碼後的資料1003會被暫存於緩衝記憶體810,並且快取讀取事件1050會接續被執行。爾後,若接收到請求讀取資料1003的讀取指令,則資料1003可隨即被從緩衝記憶體810傳送至主機系統11。
請參照圖10d,根據快取讀取事件1050,資料1004會被從實體程式化單元710(3)讀取至緩衝區901。資料1004會被從緩
衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1004進行解碼。假設資料1004可以成功地解碼,則解碼後的資料1004會被暫存於緩衝記憶體810。爾後,若接收到請求讀取資料1004的讀取指令,則資料1004可隨即被從緩衝記憶體810傳送至主機系統11。
圖11a至圖11f是根據本發明的一範例實施例所繪示的讀取資料的示意圖。
請參照圖11a,根據第一讀取指令,多重觸發隊列1010中同樣被配置多個讀取事件,例如,一般讀取事件1020與快取讀取事件1030~1050。假設第一讀取指令是請求某一邏輯位址的資料1001,則根據一般讀取事件1020,資料1001會被從實體程式化單元710(0)讀取至緩衝區901。資料1001會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1001進行解碼。假設資料1001解碼失敗,則多重觸發隊列1010會被重置,並且一般讀取事件1020會被再次執行。
請參照圖11b,根據被重置的多重觸發隊列1010,資料1001會再次被從實體程式化單元710(0)讀取至緩衝區901。資料1001會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1001進行解碼。假設再次讀取的資料1001解碼成功,則資料1001會被從緩衝記憶體810傳送至主機系統11,並且快取讀取事件1030會接續被執行。
請參照圖11c,根據快取讀取事件1030,資料1002會被
從實體程式化單元710(1)讀取至緩衝區901。資料1002會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1002進行解碼。假設資料1002可以成功地解碼,則解碼後的資料1002會被暫存於緩衝記憶體810,並且快取讀取事件1040會接續被執行。爾後,若接收到請求讀取資料1002的讀取指令,則資料1002可隨即被從緩衝記憶體810傳送至主機系統11。
請參照圖11d,根據快取讀取事件1040,資料1003會被從實體程式化單元710(2)讀取至緩衝區901。資料1003會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1003進行解碼。假設資料1003解碼失敗,則多重觸發隊列1010會再次被重置,並且快取讀取事件1040會被再次執行。
如圖11e所示,根據快取讀取事件1040,資料1003會被從實體程式化單元710(2)讀取至緩衝區901。資料1003會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808會對資料1003進行解碼。假設再次讀取的資料1003可以成功地解碼,則解碼後的資料1003會被暫存於緩衝記憶體810,並且快取讀取事件1050會接續被執行。爾後,若接收到請求讀取資料1003的讀取指令,則資料1003可隨即被從緩衝記憶體810傳送至主機系統11。
如圖11f所示,根據快取讀取事件1050,資料1004會被從實體程式化單元710(3)讀取至緩衝區901。資料1004會被從緩衝區901傳送至緩衝記憶體810,並且錯誤檢查與校正電路808
會對資料1004進行解碼。假設資料1004可以成功地解碼,則解碼後的資料1004會被暫存於緩衝記憶體810。爾後,若接收到請求讀取資料1004的讀取指令,則資料1004可隨即被從緩衝記憶體810傳送至主機系統11。
值得一提的是,在另一範例實施例中,重置多重觸發隊
列的方式可能不同。例如,當重置多重觸發隊列時,記憶體管理電路802可以清空多重觸發隊列並且將排序在對應至解碼失敗之資料的讀取事件之後的讀取事件重新加入至清空後的多重觸發隊列。記憶體管理電路802可以將此對應至解碼失敗之資料的讀取事件設定為待執行事件。其中,待執行事件不存在於重置後的多重觸發隊列中。爾後,記憶體管理電路802可以重複執行此不存在於重置後的(即,當前的)多重觸發隊列中的待執行事件直到獲得正確資料(即,解碼成功)為止。在獲得正確資料之後,記憶體管理電路802可以接續執行重置後的(即,當前的)多重觸發隊列中尚未被執行的讀取事件。
圖12是根據本發明的一範例實施例所繪示的讀取資料的
示意圖。
請參照圖12,本範例實施例與前述範例實施例的差別在
於,在本範例實施例中,根據第一讀取指令,只有第一讀取指令所請求的資料1001會被暫存在緩衝記憶體810,而預讀取的資料1002~1004會被暫存在緩衝區901。當接收到請求預讀取之資料的讀取指令時,資料1002~1004中被請求的資料才會被傳送至緩衝
記憶體810並且被從緩衝記憶體810傳送至主機系統11。
值得一提的是,雖然在上述範例實施例中,實體程式化單元710(0)~710(3)都是屬於實體抹除單元700(A+1),然而,在另一範例實施例中,實體程式化單元710(0)~710(3)也可以是屬於儲存區902中的多個實體抹除單元。此外,雖然在上述範例實施例中,重置多重觸發隊列的操作不會改變讀取事件在多重觸發隊列中的位置與讀取事件的總數,然而,在另一範例實施例中,重置多重觸發隊列的操作會改變讀取事件在多重觸發隊列中的位置及/或多重觸發隊列中的讀取事件的總數。例如,在另一範例實施例中,每當多重觸發隊列中的一個讀取事件被執行完畢,則此讀取事件就會被從多重觸發隊列中移除,及/或其餘尚未被執行的讀取事件在多重觸發隊列中的位置會被上移一個位置。
在一範例實施例中,在接收到第二讀取指令之後,若第
二讀取指令所請求的資料不包含在預讀取的資料(例如,資料1002~1004)中,則多重觸發隊列中原先根據第一讀取指令而配置的讀取事件會被清空,並且對應於第二讀取指令的讀取事件會被配置到多重觸發隊列中。例如,對應於第二讀取指令的讀取事件包括至少一個一般讀取指令與多個快取讀取指令。關於如何配置讀取事件已於前述說明,在此便不贅述。
在本範例實施例中,上述根據讀取指令於多重觸發隊列
中配置讀取事件的操作是由一隊列管理韌體(firmware)所執行。例如,此隊列管理韌體是由記憶體管理電路802或記憶體控制電路
單元404中的微處理器所運行;而根據多重觸發隊列中的讀取事件來發送讀取指令序列的操作則是由記憶體控制電路單元404中的硬體電路(例如,記憶體管理電路802)執行。例如,記憶體管理電路802中的記憶體讀取單元可以查詢多重觸發隊列並且多重觸發隊列中的讀取事件來發送讀取指令序列。此外,在另一範例實施例中,配置讀取事件的操作與發送對應的讀取指令序列的操作也可以皆是由軔體或硬體電路執行,本發明不加以限制。
在本範例實施例中,緩衝記憶體810包括至少兩個暫存器(以下以第一暫存器與第二暫存器作為範例)。在將多筆讀取事件加入至多重觸發隊列時,記憶體管理電路802會將此些讀取事件的其中之一的讀取事件資訊(亦稱為第一讀取事件資訊)寫入至第一暫存器並且將此些讀取事件的其中之另一的讀取事件資訊(亦稱為第二讀取事件資訊)寫入至第二暫存器。藉此,記憶體管理電路802可依照一預定規則來讀取第一暫存器中的第一讀取事件資訊與第二暫存器中的第二讀取事件資訊以執行發送對應的讀取指令序列的操作。例如,此預定規則可以是先進先出(First In First Out,FIFO)規則或其他規則。例如,若某一個讀取事件在多重觸發隊列中的排序是在另一個讀取事件之前,則此讀取事件的讀取事件資訊會先被讀取以執行發送對應的讀取指令序列的操作。其中,上述讀取事件資訊包括讀取的辨識碼及/或記憶體位址等與讀取資料有關的資訊。此外,緩衝記憶體810中的暫存器的數量也可以是更多(例如,2個、3個或4個),本發明不加以限制。或者,緩衝
記憶體810中的暫存器的數量也可以是與多重觸發隊列中可配置的讀取事件的最大數量相等。
圖13是根據本發明的一範例實施例所繪示的資料讀取方法的流程圖。
請參照圖13,在步驟S1301中,配置多重觸發隊列。在步驟S1302中,從主機系統接收第一讀取指令。在步驟S1303中,根據第一讀取指令於多重觸發隊列中配置多個第一讀取事件,其中所述第一讀取事件包括一般讀取事件與至少一快取讀取事件,其中一般讀取事件所對應之欲讀取資料與快取讀取事件所對應之欲讀取資料是屬於連續資料,一般讀取事件所對應之欲讀取資料是被第一讀取指令所請求,並且快取讀取事件所對應之欲讀取資料不被第一讀取指令所請求。在步驟S1304中,根據所述第一讀取事件的至少其中之一發送至少一第一讀取指令序列並且接收反應於所述第一讀取指令序列之來自可複寫式非揮發性記憶體模組的第一資料。在步驟S1305中,解碼第一資料。在步驟S1306中,判斷第一資料是否解碼失敗。若第一資料解碼失敗,在步驟S1307中,重置多重觸發隊列,根據重置後的多重觸發隊列中的至少一第二讀取事件發送至少一第二讀取指令序列,並且接收反應於所述第二讀取指令序列之來自可複寫式非揮發性記憶體模組的第二資料,其中所述第二讀取事件包括所述快取讀取事件中的至少一第一快取讀取事件。若第一資料沒有解碼失敗,在步驟S1308中,將第一資料中由第一讀取指令所請求的資料從緩衝記憶體傳送至
主機系統。在步驟S1309中,根據所述第一讀取事件中尚未被執行的至少一第三讀取事件發送至少一第三讀取指令序列,並且接收反應於所述第三讀取指令序列之來自可複寫式非揮發性記憶體模組的第三資料。
然而,圖13中各步驟已詳細說明如上,在此便不再贅述。
值得注意的是,圖13中各步驟可以實作為多個程式碼或是電路,本發明不加以限制。此外,圖13的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明不加以限制。
綜上所述,根據接收到的讀取指令,本發明可在多重觸
發隊列中配置一般讀取指令與快取讀取指令。在發生解碼失敗時,本發明可重置多重觸發隊列並且根據重置後的多重觸發隊列來進行後續的資料讀取操作。藉此,可讓前端的指令接收與後端的資料管理相互配合。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S1301~S1309‧‧‧步驟
Claims (27)
- 一種資料讀取方法,用於一可複寫式非揮發性記憶體模組,該資料讀取方法包括:配置一多重觸發隊列(Multi Trigger Queue,MTQ);從一主機系統接收一第一讀取指令;根據該第一讀取指令於該多重觸發隊列中配置多個第一讀取事件,其中該些第一讀取事件包括一個一般讀取事件與至少一快取讀取事件,其中該一般讀取事件所對應之欲讀取資料與該至少一快取讀取事件所對應之欲讀取資料是屬於一連續資料,該一般讀取事件所對應之欲讀取資料是被該第一讀取指令所請求,並且該至少一快取讀取事件所對應之欲讀取資料不被該第一讀取指令所請求;根據該些第一讀取事件的至少其中之一發送至少一第一讀取指令序列並且接收反應於該至少一第一讀取指令序列之來自該可複寫式非揮發性記憶體模組的第一資料;解碼該第一資料;以及若該第一資料解碼失敗,重置該多重觸發隊列,並且根據重置後的該多重觸發隊列中的至少一第二讀取事件發送至少一第二讀取指令序列,其中該至少一第二讀取事件包括該至少一快取讀取事件中的至少一第一快取讀取事件。
- 如申請專利範圍第1項所述的資料讀取方法,其中該可複寫式非揮發性記憶體模組包括一儲存區與一緩衝區, 其中該至少一第一讀取指令序列指示從該儲存區中讀取該第一資料,並且該至少一第二讀取指令序列指示從該儲存區中讀取一第二資料,其中該第一資料是從該儲存區中被讀取至該緩衝區並且被從該緩衝區傳送至一記憶體控制電路單元的一緩衝記憶體,其中該第二資料是從該儲存區中被讀取至該緩衝區並且被從該緩衝區傳送至該緩衝記憶體。
- 如申請專利範圍第1項所述的資料讀取方法,其中重置該多重觸發隊列的步驟包括:將該些第一讀取事件中對應至解碼失敗之資料的一讀取事件設定為一待執行事件,其中該待執行事件是該至少一第二讀取事件中排序最前面的讀取事件。
- 如申請專利範圍第1項所述的資料讀取方法,其中重置該多重觸發隊列的步驟包括:將該些第一讀取事件中對應至解碼失敗之資料的一讀取事件設定為一待執行事件,其中該待執行事件不存在於該多重觸發隊列中。
- 如申請專利範圍第4項所述的資料讀取方法,其中在根據重置後的該多重觸發隊列中的該至少一第二讀取事件發送該至少一第二讀取指令序列的步驟之前,該資料讀取方法更包括:重複執行該待執行事件直到獲得一正確資料為止。
- 如申請專利範圍第1項所述的資料讀取方法,更包括: 將該第一資料暫存於一記憶體控制電路單元的一緩衝記憶體;以及若該第一資料沒有解碼失敗,將該第一資料中由該第一讀取指令所請求的資料從該緩衝記憶體傳送至該主機系統,並且根據該些第一讀取事件中尚未被執行的至少一第三讀取事件發送至少一第三讀取指令序列,其中該至少一第三讀取事件包括該至少一快取讀取事件中的至少一第二快取讀取事件。
- 如申請專利範圍第6項所述的資料讀取方法,更包括:接收反應於該至少一第三讀取指令序列之來自該可複寫式非揮發性記憶體模組的一第三資料;解碼該第三資料;以及若該第三資料解碼失敗,重置該多重觸發隊列,並且根據重置後的該多重觸發隊列中的至少一第四讀取事件發送至少一第四讀取指令序列,其中該至少一第四讀取事件包括該至少一快取讀取事件中的至少一第三快取讀取事件。
- 如申請專利範圍第1項所述的資料讀取方法,其中根據該第一讀取指令於該多重觸發隊列中配置該些第一讀取事件的步驟包括:由一記憶體控制電路單元所運行的一隊列管理韌體(firmware)根據該第一讀取指令於該多重觸發隊列中配置該些第一讀取事件,其中根據該些第一讀取事件的該至少其中之一發送該至少一 第一讀取指令序列的步驟包括:由該記憶體控制電路單元中的一記憶體管理電路查詢該多重觸發隊列並且根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列。
- 如申請專利範圍第1項所述的資料讀取方法,其中在根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列的步驟之前,該資料讀取方法更包括:將該些第一讀取事件的其中之一的一第一讀取事件資訊寫入至一緩衝記憶體中的一第一暫存器;將該些第一讀取事件的其中之另一的一第二讀取事件資訊寫入至該緩衝記憶體中的一第二暫存器;以及依照一預定規則讀取該第一暫存器中的該第一讀取事件資訊與該第二暫存器中的該第二讀取事件資訊。
- 一種記憶體儲存裝置,包括:一連接介面單元,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組;以及一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組,其中該記憶體控制電路單元用以配置一多重觸發隊列,其中該記憶體控制電路單元更用以從該主機系統接收一第一讀取指令,其中該記憶體控制電路單元更用以根據該第一讀取指令於該 多重觸發隊列中配置多個第一讀取事件,其中該些第一讀取事件包括一個一般讀取事件與至少一快取讀取事件,其中該一般讀取事件所對應之欲讀取資料與該至少一快取讀取事件所對應之欲讀取資料是屬於一連續資料,該一般讀取事件所對應之欲讀取資料是被該第一讀取指令所請求,並且該至少一快取讀取事件所對應之欲讀取資料不被該第一讀取指令所請求,其中該記憶體控制電路單元更用以根據該些第一讀取事件的至少其中之一發送至少一第一讀取指令序列並且接收反應於該至少一第一讀取指令序列之來自該可複寫式非揮發性記憶體模組的第一資料,其中該記憶體控制電路單元更用以解碼該第一資料,其中若該第一資料解碼失敗,該記憶體控制電路單元更用以重置該多重觸發隊列並且根據重置後的該多重觸發隊列中的至少一第二讀取事件發送至少一第二讀取指令序列,其中該至少一第二讀取事件包括該至少一快取讀取事件中的至少一第一快取讀取事件。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該可複寫式非揮發性記憶體模組包括一儲存區與一緩衝區,其中該至少一第一讀取指令序列指示從該儲存區中讀取該第一資料,並且該至少一第二讀取指令序列指示從該儲存區中讀取一第二資料,其中該第一資料是從該儲存區中被讀取至該緩衝區並且被從 該緩衝區傳送至一記憶體控制電路單元的一緩衝記憶體,其中該第二資料是從該儲存區中被讀取至該緩衝區並且被從該緩衝區傳送至該緩衝記憶體。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制電路單元重置該多重觸發隊列的操作包括:將該些第一讀取事件中對應至解碼失敗之資料的一讀取事件設定為一待執行事件,其中該待執行事件是該至少一第二讀取事件中排序最前面的讀取事件。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制電路單元重置該多重觸發隊列的操作包括:將該些第一讀取事件中對應至解碼失敗之資料的一讀取事件設定為一待執行事件,其中該待執行事件不存在於該多重觸發隊列中。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中在該記憶體控制電路單元執行根據重置後的該多重觸發隊列中的該至少一第二讀取事件發送該至少一第二讀取指令序列的操作之前,該記憶體控制電路單元更用以重複執行該待執行事件直到獲得一正確資料為止。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以將該第一資料暫存於該記憶體控制電路單元的一緩衝記憶體,其中若該第一資料沒有解碼失敗,該記憶體控制電路單元更 用以將該第一資料中由該第一讀取指令所請求的資料從該緩衝記憶體傳送至該主機系統並且根據該些第一讀取事件中尚未被執行的至少一第三讀取事件發送至少一第三讀取指令序列,其中該至少一第三讀取事件包括該至少一快取讀取事件中的至少一第二快取讀取事件。
- 如申請專利範圍第15項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以接收反應於該至少一第三讀取指令序列之來自該可複寫式非揮發性記憶體模組的一第三資料,其中該記憶體控制電路單元更用以解碼該第三資料,其中若該第三資料解碼失敗,該記憶體控制電路單元更用以重置該多重觸發隊列,根據重置後的該多重觸發隊列中的至少一第四讀取事件發送至少一第四讀取指令序列,並且接收反應於該至少一第四讀取指令序列之來自該可複寫式非揮發性記憶體模組的第四資料,其中該至少一第四讀取事件包括該至少一快取讀取事件中的至少一第三快取讀取事件。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制電路單元根據該第一讀取指令於該多重觸發隊列中配置該些第一讀取事件的操作包括:由該記憶體控制電路單元所運行的一隊列管理韌體根據該第一讀取指令於該多重觸發隊列中配置該些第一讀取事件,其中該記憶體控制電路單元根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列的操作包括: 由該記憶體控制電路單元中的一記憶體管理電路查詢該多重觸發隊列並且根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制電路單元包括一緩衝記憶體,該緩衝記憶體包括一第一暫存器與一第二暫存器,而在該記憶體控制電路單元執行根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列的操作之前,該記憶體控制電路單元更用以:將該些第一讀取事件的其中之一的一第一讀取事件資訊寫入至該第一暫存器;將該些第一讀取事件的其中之另一的一第二讀取事件資訊寫入至該第二暫存器;以及依照一預定規則讀取該第一暫存器中的該第一讀取事件資訊與該第二暫存器中的該第二讀取事件資訊。
- 一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組,該記憶體控制電路單元包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組;一錯誤檢查與校正電路;一緩衝記憶體;以及一記憶體管理電路,耦接至該主機介面、該記憶體介面、該錯誤檢查與校正電路及該緩衝記憶體, 其中該記憶體管理電路用以配置一多重觸發隊列於該緩衝記憶體,其中該記憶體管理電路更用以從該主機系統接收一第一讀取指令,其中該記憶體管理電路更用以根據該第一讀取指令於該多重觸發隊列中配置多個第一讀取事件,其中該些第一讀取事件包括一個一般讀取事件與至少一快取讀取事件,其中該一般讀取事件所對應之欲讀取資料與該至少一快取讀取事件所對應之欲讀取資料是屬於一連續資料,該一般讀取事件所對應之欲讀取資料是被該第一讀取指令所請求,並且該至少一快取讀取事件所對應之欲讀取資料不被該第一讀取指令所請求,其中該記憶體管理電路更用以根據該些第一讀取事件的至少其中之一發送至少一第一讀取指令序列並且接收反應於該至少一第一讀取指令序列之來自該可複寫式非揮發性記憶體模組的第一資料,其中該錯誤檢查與校正電路用以解碼該第一資料,其中若該第一資料解碼失敗,該記憶體管理電路更用以重置該多重觸發隊列並且根據重置後的該多重觸發隊列中的至少一第二讀取事件發送至少一第二讀取指令序列,其中該至少一第二讀取事件包括該至少一快取讀取事件中的至少一第一快取讀取事件。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其 中該可複寫式非揮發性記憶體模組包括一儲存區與一緩衝區,其中該至少一第一讀取指令序列指示從該儲存區中讀取該第一資料,並且該至少一第二讀取指令序列指示從該儲存區中讀取一第二資料,其中該第一資料是從該儲存區中被讀取至該緩衝區並且被從該緩衝區傳送至該緩衝記憶體,其中該第二資料是從該儲存區中被讀取至該緩衝區並且被從該緩衝區傳送至該緩衝記憶體。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中該記憶體管理電路重置該多重觸發隊列的操作包括:將該些第一讀取事件中對應至解碼失敗之資料的一讀取事件設定為一待執行事件,其中該待執行事件是該至少一第二讀取事件中排序最前面的讀取事件。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中該記憶體管理電路重置該多重觸發隊列的操作包括:將該些第一讀取事件中對應至解碼失敗之資料的一讀取事件設定為一待執行事件,其中該待執行事件不存在於該多重觸發隊列中。
- 如申請專利範圍第22項所述的記憶體控制電路單元,其中在該記憶體管理電路執行根據重置後的該多重觸發隊列中的該至少一第二讀取事件發送該至少一第二讀取指令序列的操作之前,該記憶體管理電路更用以重複執行該待執行事件直到獲得一 正確資料為止。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中該記憶體管理電路更用以將該第一資料暫存於該緩衝記憶體,其中若該第一資料沒有解碼失敗,該記憶體管理電路更用以將該第一資料中由該第一讀取指令所請求的資料從該緩衝記憶體傳送至該主機系統並且根據該些第一讀取事件中尚未被執行的至少一第三讀取事件發送至少一第三讀取指令序列,其中該至少一第三讀取事件包括該至少一快取讀取事件中的至少一第二快取讀取事件。
- 如申請專利範圍第24項所述的記憶體控制電路單元,其中該記憶體管理電路更用以接收反應於該至少一第三讀取指令序列之來自該可複寫式非揮發性記憶體模組的一第三資料,其中該錯誤檢查與校正電路更用以解碼該第三資料,其中若該第三資料解碼失敗,該記憶體管理電路更用以重置該多重觸發隊列並且根據重置後的該多重觸發隊列中的至少一第四讀取事件發送至少一第四讀取指令序列,其中該至少一第四讀取事件包括該至少一快取讀取事件中的至少一第三快取讀取事件。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中該記憶體管理電路根據該第一讀取指令於該多重觸發隊列中配置該些第一讀取事件的操作包括:由該記憶體管理電路所運行的一隊列管理韌體根據該第一讀 取指令於該多重觸發隊列中配置該些第一讀取事件,其中該記憶體管理電路根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列的操作包括:由該記憶體管理電路中的一記憶體讀取單元查詢該多重觸發隊列並且根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中該緩衝記憶體包括一第一暫存器與一第二暫存器,而在該記憶體管理電路執行根據該些第一讀取事件的該至少其中之一發送該至少一第一讀取指令序列的操作之前,該記憶體管理電路更用以:將該些第一讀取事件的其中之一的一第一讀取事件資訊寫入至該第一暫存器;將該些第一讀取事件的其中之另一的一第二讀取事件資訊寫入至該第二暫存器;以及依照一預定規則讀取該第一暫存器中的該第一讀取事件資訊與該第二暫存器中的該第二讀取事件資訊。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103138734A TWI556249B (zh) | 2014-11-07 | 2014-11-07 | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 |
US14/583,118 US9507658B2 (en) | 2014-11-07 | 2014-12-25 | Data reading method, memory storage device and memory controlling circuit unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103138734A TWI556249B (zh) | 2014-11-07 | 2014-11-07 | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201618114A TW201618114A (zh) | 2016-05-16 |
TWI556249B true TWI556249B (zh) | 2016-11-01 |
Family
ID=55912300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103138734A TWI556249B (zh) | 2014-11-07 | 2014-11-07 | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9507658B2 (zh) |
TW (1) | TWI556249B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018152146A (ja) * | 2017-03-09 | 2018-09-27 | 東芝メモリ株式会社 | 半導体記憶装置及びデータ読み出し方法 |
TWI640865B (zh) * | 2017-09-05 | 2018-11-11 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
US11042492B2 (en) | 2017-10-24 | 2021-06-22 | Rambus Inc. | Memory module with programmable command buffer |
WO2019095190A1 (en) * | 2017-11-16 | 2019-05-23 | Qualcomm Incorporated | Reduced overhead error detection code design for decoding a codeword |
TWI664527B (zh) * | 2018-03-20 | 2019-07-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行初始化之方法、記憶裝置及其控制器以及電子裝置 |
TWI678621B (zh) * | 2018-06-01 | 2019-12-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI800764B (zh) | 2020-10-30 | 2023-05-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
CN112347010B (zh) * | 2020-11-09 | 2023-07-04 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7188282B2 (en) * | 2002-12-02 | 2007-03-06 | Silverbrook Research Pty Ltd | Tamper resistant shadow memory |
US20120158679A1 (en) * | 2010-12-16 | 2012-06-21 | International Business Machines Corporation | Controlling Database Trigger Execution with Trigger Return Data |
US20120216079A1 (en) * | 2011-02-22 | 2012-08-23 | Apple Inc. | Obtaining Debug Information from a Flash Memory Device |
US20120239858A1 (en) * | 2010-07-07 | 2012-09-20 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
US20130148457A1 (en) * | 2008-07-10 | 2013-06-13 | Sanmina-Sci Corporation | Fast startup hybrid memory module |
US20140222805A1 (en) * | 2013-02-01 | 2014-08-07 | B-Line Medical, Llc | Apparatus, method and computer readable medium for tracking data and events |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7238218B2 (en) * | 2004-04-06 | 2007-07-03 | International Business Machines Corporation | Memory prefetch method and system |
US7644224B2 (en) * | 2005-11-15 | 2010-01-05 | Sandisk Il Ltd. | Flash memory device and method |
TWI435215B (zh) * | 2009-08-26 | 2014-04-21 | Phison Electronics Corp | 下達讀取指令與資料讀取方法、控制器與儲存系統 |
TWI454906B (zh) * | 2009-09-24 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、快閃記憶體控制器與儲存系統 |
KR101835605B1 (ko) * | 2011-11-24 | 2018-03-08 | 삼성전자 주식회사 | 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법 |
TWI456393B (zh) * | 2012-12-24 | 2014-10-11 | Phison Electronics Corp | 資料讀取方法、記憶體控制器與記憶體儲存裝置 |
US9535777B2 (en) * | 2013-11-22 | 2017-01-03 | Intel Corporation | Defect management policies for NAND flash memory |
-
2014
- 2014-11-07 TW TW103138734A patent/TWI556249B/zh active
- 2014-12-25 US US14/583,118 patent/US9507658B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7188282B2 (en) * | 2002-12-02 | 2007-03-06 | Silverbrook Research Pty Ltd | Tamper resistant shadow memory |
US20130148457A1 (en) * | 2008-07-10 | 2013-06-13 | Sanmina-Sci Corporation | Fast startup hybrid memory module |
US20120239858A1 (en) * | 2010-07-07 | 2012-09-20 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
US20120158679A1 (en) * | 2010-12-16 | 2012-06-21 | International Business Machines Corporation | Controlling Database Trigger Execution with Trigger Return Data |
US20120216079A1 (en) * | 2011-02-22 | 2012-08-23 | Apple Inc. | Obtaining Debug Information from a Flash Memory Device |
US20140222805A1 (en) * | 2013-02-01 | 2014-08-07 | B-Line Medical, Llc | Apparatus, method and computer readable medium for tracking data and events |
Also Published As
Publication number | Publication date |
---|---|
TW201618114A (zh) | 2016-05-16 |
US20160132384A1 (en) | 2016-05-12 |
US9507658B2 (en) | 2016-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI556249B (zh) | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI595498B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI600024B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN105653199B (zh) | 数据读取方法、存储器存储装置及存储器控制电路单元 | |
TWI640865B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI606333B (zh) | 資料處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI672698B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201913383A (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI545581B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI670595B (zh) | 主動錯誤更正失敗處理方法 | |
TW202013377A (zh) | 資料存取方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI634556B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI529530B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI678621B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201913388A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI533309B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI709850B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI691961B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI597731B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI596477B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI573033B (zh) | 資料搜尋方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW202125259A (zh) | 資料讀取方法、儲存控制器與儲存裝置 | |
TWI799031B (zh) | 解碼電路模組、記憶體控制電路單元及記憶體儲存裝置 | |
TWI834149B (zh) | 表格管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI777519B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |