TW201426303A - 資料讀取方法、記憶體控制器與記憶體儲存裝置 - Google Patents
資料讀取方法、記憶體控制器與記憶體儲存裝置 Download PDFInfo
- Publication number
- TW201426303A TW201426303A TW101149591A TW101149591A TW201426303A TW 201426303 A TW201426303 A TW 201426303A TW 101149591 A TW101149591 A TW 101149591A TW 101149591 A TW101149591 A TW 101149591A TW 201426303 A TW201426303 A TW 201426303A
- Authority
- TW
- Taiwan
- Prior art keywords
- logical
- memory
- logical address
- range
- read
- Prior art date
Links
Classifications
-
- 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
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- 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/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種資料讀取方法、記憶體控制器與記憶體儲存裝置。此讀取方法是用於包括多個實體抹除單元的可複寫式非揮發性記憶體模組,包括:配置多個邏輯位址以映射至部分的實體抹除單元;接收來自主機系統的多個讀取指令,其中這些讀取指令指示讀取上述邏輯位址中的多個第一邏輯位址;執行這些讀取指令,並且判斷第一邏輯位址是否為連續;以及若第一邏輯位址為連續,從實體抹除單元中預讀取屬於一個邏輯範圍的資料至緩衝記憶體。藉此,可以提升讀取資料的速度。
Description
本發明是有關於一種資料讀取方法,且特別是有關於一種用於可複寫式非揮發性記憶體模組的資料讀取方法,以及使用此方法的記憶體控制器與記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,可複寫式非揮發性記憶體模組會由一個記憶體控制器來控制,並且記憶體控制器會接收來自於主機系統的讀取指令。記憶體控制器會根據所接收到的讀取指令從可複寫式非揮發性記憶體模組中讀取資料。記憶體控制器可建立一個指令佇列,其中儲存了來自於主機系統的讀取指令。記憶體控制器可自行決定指令佇列中讀取指令的執行順序。並且,記憶體控制器可從可複寫式非揮發性記憶體模組預讀(pre-read)一些資料至一個緩衝記憶體,以便當主機系統要讀取多個連續的位址時可增加讀取資料的速度。然而,主機系統下達讀取指令給記憶體控制器不一定會依序,此會造成預讀的資料從緩衝記憶體中被清除。
因此,如何增加讀取資料的速度,為此領域技術人員所關心的議題。
本發明的範例實施例中提出一種資料讀取方法、記憶體控制器與記憶體儲存裝置,可以增加讀取資料的速度。
本發明一範例實施例提出一種資料讀取方法,用於控制一可複寫式非揮發性記憶體模組。此可複寫式非揮發性記憶體模組包括多個實體抹除單元。上述的資料讀取方法包括:配置多個邏輯位址以映射至部分的實體抹除單元;接收來自主機系統的多個第一讀取指令,其中第一讀取指令指示讀取上述邏輯位址中的多個第一邏輯位址;執行第一讀取指令,並且判斷第一邏輯位址是否為連續;以及若第一邏輯位址為連續,從實體抹除單元中預讀取屬於第一邏輯範圍的資料至緩衝記憶體。
在一範例實施例中,上述的資料讀取方法,更包括:接收來自於主機系統的一個第二讀取指令,其中第二讀取指令指示讀取一個第二邏輯位址;判斷第二邏輯位址是否在上述邏輯位址中的一預定範圍內,其中預定範圍包括第一邏輯範圍;若第二邏輯位址在預定範圍內,判斷第二邏輯位址是否為第一邏輯範圍的起始邏輯位址;以及若第二邏輯位址為起始邏輯位址,則傳送屬於第二邏輯位址的資料給主機系統。
在一範例實施例中,上述的資料讀取方法,更包括:
若第二邏輯位址為起始邏輯位址,從實體抹除單元中預讀取屬於一個第二邏輯範圍的資料至緩衝記憶體中,其中第二邏輯範圍是接續在第一邏輯範圍之後。
在一範例實施例中,上述的資料讀取方法更包括:若第二邏輯位址不為起始邏輯位址,維持屬於第一邏輯範圍的資料在緩衝記憶體中並且啟動一個計時器;以及若計時器所記錄的數值大於一個臨界值,清除緩衝記憶體中屬於第一邏輯範圍的資料。
在一範例實施例中,上述的臨界值正比於可複寫式非揮發性記憶體模組的讀取時間。
在一範例實施例中,上述的資料讀取方法更包括:接收來自於主機系統的一個第三讀取指令,其中第三讀取指令指示讀取邏輯位址中的一個第三邏輯位址;以及若第三邏輯位址為起始邏輯位址,重置計時器並且傳送屬於第三邏輯位址的資料至主機系統。
在一範例實施例中,上述的資料讀取方法更包括:若第二邏輯位址不在預定範圍內,清除緩衝記憶體中屬於第一邏輯範圍的資料。
在一範例實施例中,上述的資料讀取方法更包括:接收來自於主機系統的一個第二讀取指令,其中第二讀取指令指示讀取邏輯位址中的一個第二邏輯位址;判斷第二邏輯位址是否在預定範圍內,其中預定範圍包括第一邏輯範圍;若第二邏輯位址在預定範圍內,判斷第二邏輯位址是否在第一邏輯範圍內;若第二邏輯位址在第一邏輯範圍
內,傳送屬於第二邏輯位址的資料給主機系統。
在一範例實施例中,上述的資料讀取方法更包括:若第二邏輯位址不在第一邏輯範圍內,維持屬於第一邏輯範圍的資料在緩衝記憶體中並且啟動一計時器;以及若計時器所記錄的數值大於臨界值,清除緩衝記憶體中屬於第一邏輯範圍的資料。
在一範例實施例中,上述第一邏輯範圍的大小等於緩衝記憶體的記憶體空間的大小。
以另外一個角度來說,本發明一範例實施例提出一種記憶體儲存裝置,包括連接器、可複寫式非揮發性記憶體模組與記憶體控制器。連接器是用以耦接至一主機系統。可複寫式非揮發性記憶體模組包括多個實體抹除單元。記憶體控制器是耦接至連接器與可複寫式非揮發性記憶體模組,用以配置多個邏輯位址以映射至部分的實體抹除單元,並且接收來自主機系統的多個第一讀取指令。這些第一讀取指令指示讀取上述邏輯位址中的多個第一邏輯位址。記憶體控制器也用以執行這些第一讀取指令,並且判斷第一邏輯位址是否為連續。若第一邏輯位址為連續,記憶體控制器用以從實體抹除單元中預讀取屬於上述邏輯位址中第一邏輯範圍的資料至一個緩衝記憶體。
在一範例實施例中,上述的記憶體控制器更用以接收來自於主機系統的第二讀取指令,其中第二讀取指令指示讀取邏輯位址中的第二邏輯位址。記憶體控制器更用以判斷第二邏輯位址是否在邏輯位址中的預定範圍內,其中預
定範圍包括第一邏輯範圍。若第二邏輯位址在預定範圍內,記憶體控制器更用以判斷第二邏輯位址是否為第一邏輯範圍的起始邏輯位址。若第二邏輯位址為起始邏輯位址,記憶體控制器更用以傳送屬於第二邏輯位址的資料給主機系統。
在一範例實施例中,若第二邏輯位址不為起始邏輯位址,記憶體控制器更用以維持屬於第一邏輯範圍的資料在緩衝記憶體中並且啟動計時器。若計時器所記錄的數值大於臨界值,記憶體控制器更用以清除緩衝記憶體中屬於第一邏輯範圍的資料。
在一範例實施例中,上述的記憶體控制器更用以接收來自於主機系統的第三讀取指令,其中第三讀取指令指示讀取邏輯位址中的第三邏輯位址。若第三邏輯位址為起始邏輯位址,記憶體控制器更用以重置計時器並且傳送屬於第三邏輯位址的資料至主機系統。
在一範例實施例中,上述的記憶體控制器更用以接收來自於主機系統的第二讀取指令,其中第二讀取指令指示讀取邏輯位址中的第二邏輯位址。記憶體控制器更用以判斷第二邏輯位址是否在邏輯位址中的預定範圍內。若第二邏輯位址在預定範圍內,記憶體控制器更用以判斷第二邏輯位址是否在第一邏輯範圍內。若第二邏輯位址在第一邏輯範圍內,記憶體控制器更用以傳送屬於第二邏輯位址的資料給主機系統。
在一範例實施例中,若第二邏輯位址不在第一邏輯範
圍內,記憶體控制器更用以維持屬於第一邏輯範圍的資料在緩衝記憶體中並且啟動計時器。若計時器所記錄的數值大於臨界值,記憶體控制器更用以清除緩衝記憶體中屬於第一邏輯範圍的資料。
以另外一個角度來說,本發明一範例實施例提出一種記憶體控制器,用於控制一可複寫式非揮發性記憶體模組。此記憶體控制器包括主機介面、記憶體介面與記憶體管理電路。主機介面是用以耦接至一主機系統。記憶體介面是用以耦接至可複寫式非揮發性記憶體模組,並且此可複寫式非揮發性記憶體模組包括多個實體抹除單元。記憶體管理電路是耦接至主機介面與記憶體介面,用以配置多個邏輯位址以映射至部分的實體抹除單元,並且接收來自主機系統的多個第一讀取指令。其中這些第一讀取指令指示讀取上述邏輯位址中的多個第一邏輯位址。記憶體管理電路也用以執行第一讀取指令,並且判斷第一邏輯位址是否為連續。若第一邏輯位址為連續,記憶體管理電路用以從實體抹除單元中預讀取屬於上述邏輯位址中第一邏輯範圍的資料至一個緩衝記憶體。
在一範例實施例中,上述的記憶體管理電路更用以接收來自於主機系統的第二讀取指令,其中第二讀取指令指示讀取邏輯位址中的第二邏輯位址。記憶體管理電路更用以判斷第二邏輯位址是否在邏輯位址中的預定範圍內,其中預定範圍包括第一邏輯範圍。若第二邏輯位址在預定範圍內,記憶體管理電路更用以判斷第二邏輯位址是否為第
一邏輯範圍的起始邏輯位址。若第二邏輯位址為起始邏輯位址,記憶體管理電路更用以傳送屬於第二邏輯位址的資料給主機系統。
在一範例實施例中,若第二邏輯位址為起始邏輯位址,記憶體管理電路更用以從實體抹除單元中預讀取屬於第二邏輯範圍的資料至緩衝記憶體中,其中第二邏輯範圍是接續在第一邏輯範圍之後。
在一範例實施例中,若第二邏輯位址不為起始邏輯位址,記憶體管理電路更用以維持屬於第一邏輯範圍的資料在緩衝記憶體中並且啟動計時器。若計時器所記錄的數值大於臨界值,記憶體管理電路更用以清除緩衝記憶體中屬於第一邏輯範圍的資料。
在一範例實施例中,上述的記憶體管理電路更用以接收來自於主機系統的第三讀取指令,其中第三讀取指令指示讀取邏輯位址中的第三邏輯位址。若第三邏輯位址為起始邏輯位址,記憶體管理電路更用以重置計時器並且傳送屬於第三邏輯位址的資料至主機系統。
在一範例實施例中,若第二邏輯位址不在預定範圍內,記憶體管理電路更用以清除緩衝記憶體中屬於第一邏輯範圍的資料。
在一範例實施例中,上述的記憶體管理電路更用以接收來自於主機系統的第二讀取指令,其中第二讀取指令指示讀取邏輯位址中的第二邏輯位址。記憶體管理電路更用以判斷第二邏輯位址是否在邏輯位址中的預定範圍內。若
第二邏輯位址在預定範圍內,記憶體管理電路更用以判斷第二邏輯位址是否在第一邏輯範圍內。若第二邏輯位址在第一邏輯範圍內,記憶體管理電路更用以傳送屬於第二邏輯位址的資料給主機系統。
在一範例實施例中,若第二邏輯位址不在第一邏輯範圍內,記憶體管理電路更用以維持屬於第一邏輯範圍的資料在緩衝記憶體中並且啟動計時器。若計時器所記錄的數值大於臨界值,記憶體管理電路更用以清除緩衝記憶體中屬於第一邏輯範圍的資料。
基於上述,本發明所提出的資料讀取方法、記憶體控制器與記憶體儲存裝置會根據已經執行完畢的讀取指令是否讀取了連續的邏輯位址來判斷是否要預讀資料。藉此,可以增加讀取資料的速度。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1A是根據一範例實施例所繪示的主機系統與記憶
體儲存裝置。
請參照圖1A,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108與資料傳輸介面1110。輸入/輸出裝置1106包括如圖1B的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖1B所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,記憶體儲存裝置100是透過資料傳輸介面1110與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的運作可將資料寫入至記憶體儲存裝置100或從記憶體儲存裝置100中讀取資料。例如,記憶體儲存裝置100可以是如圖1B所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216等的可複寫式非揮發性記憶體儲存裝置。
一般而言,主機系統1000為可實質地與記憶體儲存裝置100配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例中主機系統1000可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)1310時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick)1316、CF卡1318或嵌入式儲
存裝置1320(如圖1C所示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
請參照圖2,記憶體儲存裝置100包括連接器102、記憶體控制器104與可複寫式非揮發性記憶體模組106。
在本範例實施例中,連接器102是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接器102亦可以是符合並列先進附件(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)標準或其他適合的標
準。
記憶體控制器104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組106是耦接至記憶體控制器104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體模組106具有實體抹除單元304(0)~304(R)。例如,實體抹除單元304(0)~304(R)可屬於同一個記憶體晶粒(die)或者屬於不同的記憶體晶粒。每一實體抹除單元分別具有複數個實體程式化單元,並且屬於同一個實體抹除單元之實體程式化單元可被獨立地寫入且被同時地抹除。例如,每一實體抹除單元是由128個實體程式化單元所組成。然而,必須瞭解的是,本發明不限於此,每一實體抹除單元是可由64個實體程式化單元、256個實體程式化單元或其他任意個實體程式化單元所組成。
更詳細來說,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。每一實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體存取位址用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,控制資訊與錯誤更正碼)。在本範例實施例中,每一個實體程式化單元的資料位元區中會包含
4個實體存取位址,且一個實體存取位址的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體存取位址,本發明並不限制實體存取位址的大小以及個數。例如,實體抹除單元為實體區塊,並且實體程式化單元為實體頁面或實體扇。
在本範例實施例中,可複寫式非揮發性記憶體模組106為多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組,即一個記憶胞中可儲存至少2個位元資料。然而,本發明不限於此,可複寫式非揮發性記憶體模組106亦可是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組、複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖3是根據一範例實施例所繪示之記憶體控制器的概要方塊圖。
請參照圖3,記憶體控制器104包括記憶體管理電路202、主機介面204與記憶體介面206。
記憶體管理電路202用以控制記憶體控制器104的整體運作。具體來說,記憶體管理電路202具有多個控制指令,並且在記憶體儲存裝置100運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
在本範例實施例中,記憶體管理電路202的控制指令是以韌體型式來實作。例如,記憶體管理電路202具有微
處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組106的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路202具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有驅動碼,並且當記憶體控制器104被致能時,微處理器單元會先執行此驅動碼段來將儲存於可複寫式非揮發性記憶體模組106中之控制指令載入至記憶體管理電路202的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路202包括微控制器、記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元。記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元是耦接至微控制器。其中,記憶體管理單元用以管理可複寫式非揮發性記憶體模組106的實體區塊;記憶體寫入單元用以對可複寫式非揮發性記憶體模組106下達寫入指令以將資料寫入至可複寫
式非揮發性記憶體模組106中;記憶體讀取單元用以對可複寫式非揮發性記憶體模組106下達讀取指令以從可複寫式非揮發性記憶體模組106中讀取資料;記憶體抹除單元用以對可複寫式非揮發性記憶體模組106下達抹除指令以將資料從可複寫式非揮發性記憶體模組106中抹除;而資料處理單元用以處理欲寫入至可複寫式非揮發性記憶體模組106的資料以及從可複寫式非揮發性記憶體模組106中讀取的資料。
主機介面204是耦接至記憶體管理電路202並且用以接收與識別主機系統1000所傳送的指令與資料。也就是說,主機系統1000所傳送的指令與資料會透過主機介面204來傳送至記憶體管理電路202。在本範例實施例中,主機介面204是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面204亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面206是耦接至記憶體管理電路202並且用以存取可複寫式非揮發性記憶體模組106。也就是說,欲寫入至可複寫式非揮發性記憶體模組106的資料會經由記憶體介面206轉換為可複寫式非揮發性記憶體模組106所能接受的格式。
在本發明一範例實施例中,記憶體控制器104還包括
緩衝記憶體252、電源管理電路254與錯誤檢查與校正電路256。
緩衝記憶體252是耦接至記憶體管理電路202並且用以暫存來自於主機系統1000的資料與指令或來自於可複寫式非揮發性記憶體模組106的資料。
電源管理電路254是耦接至記憶體管理電路202並且用以控制記憶體儲存裝置100的電源。
錯誤檢查與校正電路256是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路202從主機系統1000中接收到寫入指令時,錯誤檢查與校正電路256會為對應此寫入指令的資料產生對應的錯誤檢查與校正碼(Error Checking and Correcting Code,ECC Code),並且記憶體管理電路202會將對應此寫入指令的資料與對應的錯誤檢查與校正碼寫入至可複寫式非揮發性記憶體模組106中。之後,當記憶體管理電路202從可複寫式非揮發性記憶體模組106中讀取資料時會同時讀取此資料對應的錯誤檢查與校正碼,並且錯誤檢查與校正電路256會依據此錯誤檢查與校正碼對所讀取的資料執行錯誤檢查與校正程序。
圖4是根據一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
必須瞭解的是,在此描述可複寫式非揮發性記憶體模組106之實體區塊的運作時,以“提取”、“交換”、“分組”、“輪替”等詞來操作實體區塊是邏輯上的概念。也就是說,
可複寫式非揮發性記憶體模組之實體區塊的實際位置並未更動,而是邏輯上對可複寫式非揮發性記憶體模組的實體區塊進行操作。
請參照圖4,記憶體控制器104可將可複寫式非揮發性記憶體模組的實體區塊304(0)~304(R)邏輯地分組為多個區域,例如為資料區410、閒置區420、系統區430與取代區440。在另一範例實施例中,取代區440亦可與閒置區420共用包含無效資料之實體區塊。
資料區410與閒置區420的實體區塊是用以儲存來自於主機系統1000的資料。具體來說,資料區410是已儲存資料的實體區塊,而閒置區420的實體區塊是用以替換資料區410的實體區塊。因此,閒置區420的實體區塊為空或可使用的實體區塊,其中並沒有儲存資料或是儲存了標記為已沒用的無效資料。也就是說,在閒置區420中的實體區塊已被執行抹除運作,或者當閒置區420中的實體區塊被提取用於儲存資料之前所提取之實體區塊會先被執行抹除運作。因此,閒置區420的實體區塊為可被使用的實體區塊。
邏輯上屬於系統區430的實體區塊是用以記錄系統資料,其中此系統資料包括關於記憶體晶片的製造商與型號、記憶體晶片的實體區塊數、每一實體區塊的實體頁面數等。
邏輯上屬於取代區440中的實體區塊是替代實體區塊。例如,可複寫式非揮發性記憶體模組於出廠時會預留
4%的實體區塊作為更換使用。也就是說,當資料區410、閒置區420與系統區430中的實體區塊損毀時,預留於取代區440中的實體區塊是用以取代損壞的實體區塊(即,壞實體區塊(bad block))。因此,倘若取代區440中仍存有正常之實體區塊且發生實體區塊損毀時,記憶體控制器104會從取代區440中提取正常的實體區塊來更換損毀的實體區塊。倘若取代區440中無正常之實體區塊且發生實體區塊損毀時,則記憶體控制器104會將整個記憶體儲存裝置100宣告為寫入保護(write protect)狀態,而無法再寫入資料。
特別是,資料區410、閒置區420、系統區430與取代區440之實體區塊的數量會依據不同的記憶體規格而有所不同。此外,必須瞭解的是,在記憶體儲存裝置100的運作中,實體區塊關聯至資料區410、閒置區420、系統區43(0與取代區440的分組關係會動態地變動。例如,當閒置區中的實體區塊損壞而被取代區的實體區塊取代時,則原本取代區的實體區塊會被關聯至閒置區。
在本範例實施例中,記憶體控制器104會配置邏輯位址450(0)~450(E)以利於在儲存資料之實體區塊中進行資料存取。例如,當記憶體儲存裝置100被作業系統1110透過檔案系統(例如,FAT 32)格式化時,邏輯位址450(0)~450(E)分別地映射至資料區410的實體區塊304(0)~304(A)。在此,記憶體管理電路202(或記憶體控制器104)會建立邏輯位址-實體抹除單元映射表(logical
address-physical erasing unit mapping table),以記錄邏輯區塊位址與實體抹除單元之間的映射關係。在此範例實施例中,每一個邏輯位址450(0)~450(E)的大小相同於一個實體抹除單元的大小,即,邏輯位址亦可被稱為邏輯區塊位址(logical block address,LBA)。然而,在其他範例實施例中,每一個邏輯位址450(0)~450(E)的大小也可以是一個實體程式化單元的大小,本發明並不限制邏輯位址450(0)~450(E)的大小。
主機系統1000會下達多個讀取指令給記憶體管理電路202(或記憶體控制器104),並且這些讀取指令是指示讀取邏輯位址450(0)~450(E)中的一或多個邏輯位址。記憶體管理電路202(或記憶體控制器104)會將這些讀取指令放入一個指令佇列(command queue)當中,並且記憶體管理電路202(或記憶體控制器104)會決定執行這些讀取指令的順序。若記憶體管理電路202(或記憶體控制器104)要執行一個讀取指令,則記憶體管理電路202(或記憶體控制器104)會取得此讀取指令所要讀取的邏輯位址,並取得此邏輯位址所映射的一個實體抹除單元,從此實體抹除單元中讀取資料,並將這些資料傳送給主機系統1000。然而,在執行一個讀取指令之前,記憶體管理電路202(或記憶體控制器104)會從實體抹除單元304(0)~304(B)中預讀一些資料至記憶體控制器104中的緩衝記憶體252;接下來,若此讀取指令所要讀取的資料已經在緩衝記憶體252中,記憶體管理電路202(或記憶體控制器104)便可以將緩衝記憶體
252中的資料傳送給主機系統1000,藉此增加讀取資料的速度。在另一範例實施例中,記憶體管理電路202(或記憶體控制器104)預讀的資料也可以放在記憶體控制器104以外的一個緩衝記憶體中,本發明並不在此限。
圖5是根據一範例實施例繪示記錄檔的範例示意圖。
請參照圖5,記憶體管理電路202(或記憶體控制器104)從主機系統1000接收到多個讀取指令(亦稱第一讀取指令)並且執行完這些讀取指令以後,會把執行完畢的讀取指令存在記錄檔510中。例如,記錄檔510中紀錄了已被執行完畢的讀取指令511~515,其分別指示讀取邏輯位址450(2)、450(4)、450(1)、450(0)與450(3)(亦稱第一邏輯位址)。記憶體管理電路202(或記憶體控制器104)是先從主機系統1000接收到讀取指令511、再依序地接收到讀取指令512~515;換言之,依照接收到讀取指令511~515的順序,記憶體管理電路202(或記憶體控制器104)並不會發現主機系統1000要讀取連續的邏輯位址。然而,在此範例實施例中,記憶體管理電路202(或記憶體控制器104)在執行完讀取指令511~515後會判斷讀取指令511~515所要讀取的邏輯位址是否為連續。例如,記憶體管理電路202(或記憶體控制器104)在排序完讀取指令511~515所要讀取的邏輯位址以後,會發現邏輯位址450(0)~450(4)為連續。此表示雖然主機系統1000是依序的傳送讀取指令511~515給記憶體管理電路202(或記憶體控制器104),但主機系統1000正在讀取連續的邏輯位址450(0)~450(4)。由於邏輯位
址450(0)~450(4)為連續,主機系統1000接下來要讀取的邏輯位址也可能是連續。因此,記憶體管理電路202(或記憶體控制器104)會預讀取屬於一個邏輯範圍的資料。
在此範例實施例中,記錄檔510中紀錄了5個讀取指令511~515。然而,在其他範例實施例中,記錄檔510中也可以紀錄數目更多或更少的讀取指令。並且,記憶體管理電路202(或記憶體控制器104)是在判斷記錄檔510中有n個讀取指令為連續以後開始預讀取資料,其中n為正整數。然而,本發明並不限制n的數值。
圖6A是根據一範例實施例繪示預讀取屬於一個邏輯範圍的資料的示意圖。
請參照圖6A,由於記錄檔510中的讀取指令所讀取的邏輯位址450(0)~450(4)為連續,因此記憶體管理電路202(或記憶體控制器104)會預讀取屬於邏輯範圍610的資料至緩衝記憶體252。記憶體管理電路202(或記憶體控制器104)也會設定一個預定範圍630,並且預定範圍630會包括邏輯範圍610。然而,本發明並不限制邏輯範圍610以及預定範圍630的大小。接下來,記憶體管理電路202(或記憶體控制器104)會接收來自主機系統1000的一個讀取指令(亦稱第二讀取指令)。此第二讀取指令指示讀取邏輯位址620(亦稱第二邏輯位址)。記憶體管理電路202(或記憶體控制器104)會先判斷邏輯位址620是否在預定範圍630內。若邏輯位址620在預定範圍630內,記憶體管理電路202(或記憶體控制器104)還會判斷邏輯位址620是否
為邏輯範圍610的起始邏輯位址(即,邏輯位址450(5))。若邏輯位址620為邏輯位址450(5),則記憶體管理電路202(或記憶體控制器104)會從緩衝記憶體252中讀取屬於邏輯位址620的資料,並將這些資料傳送給主機系統1000。
另一方面,若邏輯位址620在預定範圍630內但不為邏輯位址450(5),則記憶體管理電路202(或記憶體控制器104)會維持屬於邏輯範圍610的資料在緩衝記憶體252中並且啟動一個計時器。本發明並不限制用軟體或是硬體的方式實現此計時器。在此,雖然主機系統1000目前沒有要讀取邏輯位址450(5),但由於邏輯位址620還在預定範圍630內,因此主機系統1000在接下來的一段時間內有可能會再讀取邏輯位址450(5)。所以,記憶體管理電路202(或記憶體控制器104)並不會在取得第二讀取指令以後就清除緩衝記憶體252中屬於邏輯範圍610的資料。然而,若此計時器所記錄的數值大於一個臨界值,則記憶體管理電路202(或記憶體控制器104)會清除緩衝記憶體252中屬於邏輯範圍610的資料。此外,若邏輯位址620不在預定範圍630內,則記憶體管理電路202(或記憶體控制器104)也會清除緩衝記憶體252中屬於邏輯範圍610的資料。
在計時器被啟動以後,若記憶體管理電路202(或記憶體控制器104)接收到來自主機系統1000的下一個讀取指令(亦稱第三讀取指令),並且此第三讀取指令指示讀取的邏輯位址(亦稱第三邏輯位址)為邏輯位址450(5)時,則記憶體管理電路202(或記憶體控制器104)會重置此計時器,
並且將屬於邏輯位址450(5)的資料傳送給主機系統1000。
換句話說,記憶體管理電路202(或記憶體控制器104)會維持屬於邏輯範圍610的資料在緩衝記憶體252中,直到主機系統1000要讀取預定範圍630以外的邏輯位址或是在一預設時間內主機系統1000都沒有讀取邏輯位址450(5)(即,計時器所紀錄的數值大於一個臨界值)。在一範例實施例中,此臨界值是正比於可複寫式非揮發性記憶體模組106的一個讀取時間。此讀取時間表示可複寫式非揮發性記憶體模組106執行一個讀取指令所需要的時間。若此讀取時間越大,記憶體管理電路202(或記憶體控制器104)會增加此臨界值,藉此增加屬於邏輯範圍610的資料儲存在緩衝記憶體252的時間。例如,記憶體管理電路202(或記憶體控制器104)可設定此臨界值為兩倍的讀取時間,但本發明並不在此限。
在一範例實施例中,記憶體管理電路202(或記憶體控制器104)也可以一次傳送屬於多個邏輯位址的資料給主機系統1000。例如,記憶體管理電路202(或記憶體控制器104)是先接收到讀取邏輯位址450(6)的讀取指令再接收到讀取邏輯位址450(5)的讀取指令,並且讀取邏輯位址450(6)的讀取指令會先被儲存在指令佇列當中。當判斷主機系統1000要讀取邏輯位址450(5)時,記憶體管理電路202(或記憶體控制器104)會將屬於邏輯位址450(5)、450(6)的資料傳送給主機系統1000。在一範例實施例中,將屬於邏輯位址450(5)、450(6)的資料傳送給主機系統1000的步驟也可
以由另一個電路(未繪示)來執行,本發明並不在此限。
在此範例實施例中,邏輯範圍610的大小等於緩衝記憶體252的記憶體空間的大小。但在另一範例實施例中,邏輯範圍610的大小也可以小於緩衝記憶體252的記憶體空間的大小,本發明並不在此限。並且,當邏輯位址620為邏輯位址450(5),並且屬於邏輯位址450(5)的資料已被傳送給主機系統1000以後,記憶體管理電路202(或記憶體控制器104)也可以從實體抹除單元304(0)~304(R)中預讀取屬於邏輯範圍640(亦稱第二邏輯範圍)的資料至緩衝記憶體252。邏輯範圍640是接續在邏輯範圍610之後,但本發明並不限制邏輯範圍640的大小。例如,若記憶體管理電路202(或記憶體控制器104)一次將屬於邏輯位址450(5)、450(6)的資料傳送給主機系統1000,則邏輯範圍640可以包括兩個邏輯位址。然而,在另一範例實施例中,記憶體管理電路202(或記憶體控制器104)也可以在主機系統1000讀取至邏輯位址450(F)或其它邏輯位址時,預讀取屬於邏輯範圍640的資料,本發明並不在此限。
在此範例實施例中,邏輯範圍610是接續在邏輯位址450(0)~450(4)之後。然而,在其他範例實施例中,邏輯範圍610也可以在邏輯位址450(0)~450(4)之前。舉例來說,主機系統1000是從大到小地讀取連續的邏輯位址,因此在執行完多個邏輯位址為連續的讀取指令以後,記憶體管理電路202(或記憶體控制器104)所預讀取的邏輯範圍610會在這些連續邏輯位址之前。並且,邏輯範圍640會在邏輯
範圍610之前。
圖6B是根據一範例實施例繪示判斷預讀取資料以後的系統流程圖。
請參照圖6B,在步驟S602中,記憶體管理電路202(或記憶體控制器104)會預讀取屬於邏輯範圍610的資料至緩衝記憶體252。
在步驟S604中,記憶體管理電路202(或記憶體控制器104)會接收一個讀取指令,並且此讀取指令指示讀取邏輯位址620。
在步驟S606中,記憶體管理電路202(或記憶體控制器104)會判斷此邏輯位址620是否在預定範圍630內。
若步驟S606的結果為否,在步驟S608中,記憶體管理電路202(或記憶體控制器104)清除緩衝記憶體252中屬於邏輯範圍610的資料。
若步驟S606的結果為是,在步驟S610中,記憶體管理電路202(或記憶體控制器104)判斷邏輯位址620是否為邏輯範圍610的起始邏輯位址450(5)。
若步驟S610的結果為否,在步驟S612中,記憶體管理電路202(或記憶體控制器104)會等待一段時間,若超過此時間則清除緩衝記憶體252中屬於邏輯範圍610的資料。
若步驟S610的結果為是,在步驟S614中,記憶體管理電路202(或記憶體控制器104)會將屬於邏輯位址620的資料傳送給主機系統1000。
第二範例實施例與第一範例實施例類似,在此僅描述不同之處。請參照回圖6A,在第一範例實施例中,記憶體管理電路202(或記憶體控制器104)是在邏輯位址620為邏輯位址450(5)時傳送資料給主機系統。但在第二範例實施例中,記憶體管理電路202(或記憶體控制器104)可以在邏輯位址620為邏輯範圍610中的任何一個邏輯位址時便傳送資料給主機系統1000。
具體來說,在預讀取屬於邏輯範圍610的資料以及接收到讀取邏輯位址620的讀取指令以後,記憶體管理電路202(或記憶體控制器104)會判斷邏輯位址620是否在預定範圍630之內。若邏輯位址620不在預定範圍630之內,記憶體管理電路202(或記憶體控制器104)會清除緩衝記憶體252中屬於邏輯範圍610的資料。若邏輯位址620是在邏輯範圍630之內,記憶體管理電路202(或記憶體控制器104)會再判斷邏輯位址620是否在邏輯範圍610內。若邏輯位址620是在邏輯範圍610內,則記憶體管理電路202(或記憶體控制器104)會將屬於邏輯位址620的資料傳送給主機系統1000。若邏輯位址620在預定範圍630之內但不在邏輯範圍610之內,則記憶體管理電路202(或記憶體控制器104)會維持屬於邏輯範圍610的資料在緩衝記憶體252中並且啟動計時器。若此計時器所記錄的數值大於臨界值,記憶體管理電路202(或記憶體控制器104)會清除緩衝記憶體252中屬於邏輯範圍610的資料。
圖7是根據一範例實施例繪示資料讀取方法的流程圖。值得注意的是,圖7所示的流程圖可以搭配第一範例實施例或第二範例實施例一起實施,或是單獨實施,本發明並不在此限。
請參照圖7,在步驟S702中,記憶體管理電路202(或記憶體控制器104)會配置多個邏輯位址以映射至部分的實體抹除單元。
在步驟S704中,記憶體管理電路202(或記憶體控制器104)會接收來自主機系統的多個讀取指令並且執行這些讀取指令。其中這些讀取指令指示讀取多個第一邏輯位址。
在步驟S706中,記憶體管理電路202(或記憶體控制器104)會判斷第一邏輯位址是否為連續。若步驟S706的結果為否,記憶體管理電路202(或記憶體控制器104)會回到步驟S704,接收下一個讀取指令並且判斷已經執行完畢的n個讀取指令所要讀取的邏輯位址是否為連續。若步驟S706的結果為是,記憶體管理電路202(或記憶體控制器104)會進行步驟S708。
在步驟S708中,記憶體管理電路202(或記憶體控制器104)會從實體抹除單元中預讀取屬於一個邏輯範圍的資料至一個緩衝記憶體中。此緩衝記憶體可以配置在記憶體控制器104之內或之外。
圖7中各步驟已詳細說明如上,在此便不再贅述。另一方面,圖7中各步驟可被實作為多個程式碼或是電路,本發明並不限制用軟體或硬體的方式來實作圖7所示的資
料讀取方法。
綜上所述,本發明實施例提出的資料讀取方法、記憶體控制器與記憶體儲存裝置可以判斷主機系統是否進行讀取連續的邏輯位址,藉此判斷是否要預讀取資料。並且,會根據主機系統下一個要讀取的邏輯位址(或者是在指令佇列中一個讀取指令所要讀取的邏輯位址)是否在一個預定範圍內,藉此判斷是否要將被預讀的資料維持在緩衝記憶體中。如此一來,可以增加讀取資料的速度。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
1000‧‧‧主機系統
1100‧‧‧電腦
1102‧‧‧微處理器
1104‧‧‧隨機存取記憶體
1106‧‧‧輸入/輸出裝置
1108‧‧‧系統匯流排
1110‧‧‧資料傳輸介面
1202‧‧‧滑鼠
1204‧‧‧鍵盤
1206‧‧‧顯示器
1208‧‧‧印表機
1212‧‧‧隨身碟
1214‧‧‧記憶卡
1216‧‧‧固態硬碟
1310‧‧‧數位相機
1312‧‧‧SD卡
1314‧‧‧MMC卡
1316‧‧‧記憶棒
1318‧‧‧CF卡
1320‧‧‧嵌入式儲存裝置
100‧‧‧記憶體儲存裝置
102‧‧‧連接器
104‧‧‧記憶體控制器
106‧‧‧可複寫式非揮發性記憶體模組
304(0)~304(R)‧‧‧實體抹除單元
202‧‧‧記憶體管理電路
204‧‧‧主機介面
206‧‧‧記憶體介面
252‧‧‧緩衝記憶體
254‧‧‧電源管理電路
256‧‧‧錯誤檢查與校正電路
410‧‧‧資料區
420‧‧‧閒置區
430‧‧‧系統區
440‧‧‧取代區
450(0)~450(E)‧‧‧邏輯位址
510‧‧‧記錄檔
511~515‧‧‧讀取指令
610、640‧‧‧邏輯範圍
620‧‧‧邏輯位址
630‧‧‧預定範圍
S602、S604、S606、S608、S610、S612、S614‧‧‧系統流程圖的步驟
S702、S704、S706、S708‧‧‧資料讀取方法的步驟
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖1B是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖1C是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
圖3是根據一範例實施例所繪示之記憶體控制器的概要方塊圖。
圖4是根據一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
圖5是根據一範例實施例繪示記錄檔的範例示意圖。
圖6A是根據一範例實施例繪示預讀取屬於一個邏輯範圍的資料的示意圖。
圖6B是根據一範例實施例繪示判斷預讀取資料以後的系統流程圖。
圖7是根據一範例實施例繪示資料讀取方法的流程圖。
S702、S704、S706、S708‧‧‧資料讀取方法的步驟
Claims (26)
- 一種資料讀取方法,用於一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體抹除單元,該資料讀取方法包括:配置多個邏輯位址以映射至部分的該些實體抹除單元;接收來自一主機系統的多個第一讀取指令,其中該些第一讀取指令指示讀取該些邏輯位址中的多個第一邏輯位址;執行該些第一讀取指令,並且判斷該些第一邏輯位址是否為連續;以及若該些第一邏輯位址為連續,從該些實體抹除單元中預讀取屬於該些邏輯位址中一第一邏輯範圍的資料至一緩衝記憶體。
- 如申請專利範圍第1項所述之資料讀取方法,更包括:接收來自於該主機系統的一第二讀取指令,其中該第二讀取指令指示讀取該些邏輯位址中的一第二邏輯位址;判斷該第二邏輯位址是否在該些邏輯位址中的一預定範圍內,其中該預定範圍包括該第一邏輯範圍;若該第二邏輯位址在該預定範圍內,判斷該第二邏輯位址是否為該第一邏輯範圍的一起始邏輯位址;以及若該第二邏輯位址為該起始邏輯位址,則傳送屬於該第二邏輯位址的資料給該主機系統。
- 如申請專利範圍第2項所述之資料讀取方法,更包括:若該第二邏輯位址為該起始邏輯位址,從該些實體抹除單元中預讀取屬於該些邏輯位址中一第二邏輯範圍的資料至該緩衝記憶體中,其中該第二邏輯範圍是接續在該第一邏輯範圍之後。
- 如申請專利範圍第2項所述之資料讀取方法,更包括:若該第二邏輯位址不為該起始邏輯位址,維持屬於該第一邏輯範圍的資料在該緩衝記憶體中並且啟動一計時器;以及若該計時器所記錄的一數值大於一臨界值,清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 如申請專利範圍第4項所述之資料讀取方法,其中該臨界值正比於該可複寫式非揮發性記憶體模組的一讀取時間。
- 如申請專利範圍第4項所述之資料讀取方法,更包括:接收來自於該主機系統的一第三讀取指令,其中該第三讀取指令指示讀取該些邏輯位址中的一第三邏輯位址;以及若該第三邏輯位址為該起始邏輯位址,重置該計時器並且傳送屬於該第三邏輯位址的資料至該主機系統。
- 如申請專利範圍第2項所述之資料讀取方法,更包 括:若該第二邏輯位址不在該預定範圍內,清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 如申請專利範圍第1項所述之資料讀取方法,更包括:接收來自於該主機系統的一第二讀取指令,其中該第二讀取指令指示讀取該些邏輯位址中的一第二邏輯位址;判斷該第二邏輯位址是否在該些邏輯位址中的一預定範圍內,其中該預定範圍包括該第一邏輯範圍;若該第二邏輯位址在該預定範圍內,判斷該第二邏輯位址是否在該第一邏輯範圍內;以及若該第二邏輯位址在該第一邏輯範圍內,傳送屬於該第二邏輯位址的資料給該主機系統。
- 如申請專利範圍第8項所述之資料讀取方法,更包括:若該第二邏輯位址不在該第一邏輯範圍內,維持屬於該第一邏輯範圍的資料在該緩衝記憶體中並且啟動一計時器;以及若該計時器所記錄的一數值大於一臨界值,清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 如申請專利範圍第1項所述之資料讀取方法,其中該第一邏輯範圍的大小等於該緩衝記憶體的一記憶體空間的大小。
- 一種記憶體儲存裝置,包括: 一連接器,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,包括多個實體抹除單元;以及一記憶體控制器,耦接至該連接器與該可複寫式非揮發性記憶體模組,用以配置多個邏輯位址以映射至部分的該些實體抹除單元,並且接收來自該主機系統的多個第一讀取指令,其中該些第一讀取指令指示讀取該些邏輯位址中的多個第一邏輯位址,其中,該記憶體控制器用以執行該些第一讀取指令,並且判斷該些第一邏輯位址是否為連續,若該些第一邏輯位址為連續,該記憶體控制器用以從該些實體抹除單元中預讀取屬於該些邏輯位址中一第一邏輯範圍的資料至一緩衝記憶體。
- 如申請專利範圍第11項所述之記憶體儲存裝置,其中該記憶體控制器更用以接收來自於該主機系統的一第二讀取指令,其中該第二讀取指令指示讀取該些邏輯位址中的一第二邏輯位址,該記憶體控制器更用以判斷該第二邏輯位址是否在該些邏輯位址中的一預定範圍內,其中該預定範圍包括該第一邏輯範圍,若該第二邏輯位址在該預定範圍內,該記憶體控制器更用以判斷該第二邏輯位址是否為該第一邏輯範圍的一起始邏輯位址,若該第二邏輯位址為該起始邏輯位址,該記憶體控制 器更用以傳送屬於該第二邏輯位址的資料給該主機系統。
- 如申請專利範圍第12項所述之記憶體儲存裝置,若該第二邏輯位址不為該起始邏輯位址,該記憶體控制器更用以維持屬於該第一邏輯範圍的資料在該緩衝記憶體中並且啟動一計時器,若該計時器所記錄的一數值大於一臨界值,該記憶體控制器更用以清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 如申請專利範圍第13項所述之記憶體儲存裝置,該記憶體控制器更用以接收來自於該主機系統的一第三讀取指令,其中該第三讀取指令指示讀取該些邏輯位址中的一第三邏輯位址,若該第三邏輯位址為該起始邏輯位址,該記憶體控制器更用以重置該計時器並且傳送屬於該第三邏輯位址的資料至該主機系統。
- 如申請專利範圍第11項所述之記憶體儲存裝置,該記憶體控制器更用以接收來自於該主機系統的一第二讀取指令,其中該第二讀取指令指示讀取該些邏輯位址中的一第二邏輯位址,該記憶體控制器更用以判斷該第二邏輯位址是否在該些邏輯位址中的一預定範圍內,其中該預定範圍包括該第一邏輯範圍,若該第二邏輯位址在該預定範圍內,該記憶體控制器更用以判斷該第二邏輯位址是否在該第一邏輯範圍內, 若該第二邏輯位址在該第一邏輯範圍內,該記憶體控制器更用以傳送屬於該第二邏輯位址的資料給該主機系統。
- 如申請專利範圍第15項所述之記憶體儲存裝置,若該第二邏輯位址不在該第一邏輯範圍內,該記憶體控制器更用以維持屬於該第一邏輯範圍的資料在該緩衝記憶體中並且啟動一計時器,若該計時器所記錄的一數值大於一臨界值,該記憶體控制器更用以清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 一種記憶體控制器,用於控制一可複寫式非揮發性記憶體模組,該記憶體控制器包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體抹除單元;以及一記憶體管理電路,耦接至該主機介面與該記憶體介面,用以配置多個邏輯位址以映射至部分的該些實體抹除單元,並且接收來自該主機系統的多個第一讀取指令,其中該些第一讀取指令指示讀取該些邏輯位址中的多個第一邏輯位址,其中,該記憶體管理電路用以執行該些第一讀取指令,並且判斷該些第一邏輯位址是否為連續,若該些第一邏輯位址為連續,該記憶體管理電路用以 從該些實體抹除單元中預讀取屬於該些邏輯位址中一第一邏輯範圍的資料至一緩衝記憶體。
- 如申請專利範圍第17項所述之記憶體控制器,其中該記憶體管理電路更用以接收來自於該主機系統的一第二讀取指令,其中該第二讀取指令指示讀取該些邏輯位址中的一第二邏輯位址,該記憶體管理電路更用以判斷該第二邏輯位址是否在該些邏輯位址中的一預定範圍內,其中該預定範圍包括該第一邏輯範圍,若該第二邏輯位址在該預定範圍內,該記憶體管理電路更用以判斷該第二邏輯位址是否為該第一邏輯範圍的一起始邏輯位址,若該第二邏輯位址為該起始邏輯位址,該記憶體管理電路更用以傳送屬於該第二邏輯位址的資料給該主機系統。
- 如申請專利範圍第18項所述之記憶體控制器,若該第二邏輯位址為該起始邏輯位址,該記憶體管理電路更用以從該些實體抹除單元中預讀取屬於該些邏輯位址中一第二邏輯範圍的資料至該緩衝記憶體中,其中該第二邏輯範圍是接續在該第一邏輯範圍之後。
- 如申請專利範圍第18項所述之記憶體控制器,若該第二邏輯位址不為該起始邏輯位址,該記憶體管理電路更用以維持屬於該第一邏輯範圍的資料在該緩衝記憶體中並且啟動一計時器, 若該計時器所記錄的一數值大於一臨界值,該記憶體管理電路更用以清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 如申請專利範圍第20項所述之記憶體控制器,其中該臨界值正比於該可複寫式非揮發性記憶體模組的一讀取時間。
- 如申請專利範圍第20項所述之記憶體控制器,該記憶體管理電路更用以接收來自於該主機系統的一第三讀取指令,其中該第三讀取指令指示讀取該些邏輯位址中的一第三邏輯位址,若該第三邏輯位址為該起始邏輯位址,該記憶體管理電路更用以重置該計時器並且傳送屬於該第三邏輯位址的資料至該主機系統。
- 如申請專利範圍第18項所述之記憶體控制器,若該第二邏輯位址不在該預定範圍內,該記憶體管理電路更用以清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 如申請專利範圍第17項所述之記憶體控制器,該記憶體管理電路更用以接收來自於該主機系統的一第二讀取指令,其中該第二讀取指令指示讀取該些邏輯位址中的一第二邏輯位址,該記憶體管理電路更用以判斷該第二邏輯位址是否在該些邏輯位址中的一預定範圍內,其中該預定範圍包括該第一邏輯範圍,若該第二邏輯位址在該預定範圍內,該記憶體管理電 路更用以判斷該第二邏輯位址是否在該第一邏輯範圍內,若該第二邏輯位址在該第一邏輯範圍內,該記憶體管理電路更用以傳送屬於該第二邏輯位址的資料給該主機系統。
- 如申請專利範圍第24項所述之記憶體控制器,若該第二邏輯位址不在該第一邏輯範圍內,該記憶體管理電路更用以維持屬於該第一邏輯範圍的資料在該緩衝記憶體中並且啟動一計時器,若該計時器所記錄的一數值大於一臨界值,該記憶體管理電路更用以清除該緩衝記憶體中屬於該第一邏輯範圍的資料。
- 如申請專利範圍第25項所述之記憶體控制器,其中該第一邏輯範圍的大小等於該緩衝記憶體的一記憶體空間的大小。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101149591A TWI456393B (zh) | 2012-12-24 | 2012-12-24 | 資料讀取方法、記憶體控制器與記憶體儲存裝置 |
US13/802,770 US9304900B2 (en) | 2012-12-24 | 2013-03-14 | Data reading method, memory controller, and memory storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101149591A TWI456393B (zh) | 2012-12-24 | 2012-12-24 | 資料讀取方法、記憶體控制器與記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201426303A true TW201426303A (zh) | 2014-07-01 |
TWI456393B TWI456393B (zh) | 2014-10-11 |
Family
ID=50976035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101149591A TWI456393B (zh) | 2012-12-24 | 2012-12-24 | 資料讀取方法、記憶體控制器與記憶體儲存裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9304900B2 (zh) |
TW (1) | TWI456393B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547480A (zh) * | 2015-09-17 | 2017-03-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据读取方法 |
TWI615771B (zh) * | 2015-09-17 | 2018-02-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料讀取方法 |
CN109933545A (zh) * | 2017-12-18 | 2019-06-25 | 慧荣科技股份有限公司 | 数据储存装置与存储器装置的数据处理方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI556249B (zh) * | 2014-11-07 | 2016-11-01 | 群聯電子股份有限公司 | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI563507B (en) * | 2015-07-01 | 2016-12-21 | Phison Electronics Corp | Memory management method, memory control circuit unit and memry storage apparatus |
US10621096B2 (en) * | 2016-09-08 | 2020-04-14 | Seagate Technology Llc | Read ahead management in a multi-stream workload |
JP7020989B2 (ja) * | 2018-04-23 | 2022-02-16 | 株式会社メガチップス | 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法 |
US10572185B2 (en) * | 2018-06-01 | 2020-02-25 | Western Digital Technologies, Inc. | Non-volatile storage system with command replay |
KR20200059780A (ko) * | 2018-11-21 | 2020-05-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
TWI797464B (zh) * | 2020-07-28 | 2023-04-01 | 群聯電子股份有限公司 | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 |
CN112286452A (zh) * | 2020-10-24 | 2021-01-29 | 北京东方百士电子有限公司 | 一种stm32单片机flash存储器存储、读取算法 |
Family Cites Families (6)
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 |
US8055833B2 (en) * | 2006-10-05 | 2011-11-08 | Google Inc. | System and method for increasing capacity, performance, and flexibility of flash storage |
US20070106849A1 (en) * | 2005-11-04 | 2007-05-10 | Sun Microsystems, Inc. | Method and system for adaptive intelligent prefetch |
WO2007132457A2 (en) * | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
US7958301B2 (en) * | 2007-04-10 | 2011-06-07 | Marvell World Trade Ltd. | Memory controller and method for memory pages with dynamically configurable bits per cell |
US8427875B2 (en) * | 2010-12-07 | 2013-04-23 | Silicon Motion Inc. | Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory |
-
2012
- 2012-12-24 TW TW101149591A patent/TWI456393B/zh active
-
2013
- 2013-03-14 US US13/802,770 patent/US9304900B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547480A (zh) * | 2015-09-17 | 2017-03-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据读取方法 |
TWI615771B (zh) * | 2015-09-17 | 2018-02-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料讀取方法 |
CN106547480B (zh) * | 2015-09-17 | 2019-04-12 | 慧荣科技股份有限公司 | 数据储存装置及其数据读取方法 |
CN109933545A (zh) * | 2017-12-18 | 2019-06-25 | 慧荣科技股份有限公司 | 数据储存装置与存储器装置的数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI456393B (zh) | 2014-10-11 |
US9304900B2 (en) | 2016-04-05 |
US20140181372A1 (en) | 2014-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201426303A (zh) | 資料讀取方法、記憶體控制器與記憶體儲存裝置 | |
TWI409633B (zh) | 快閃記憶體儲存裝置、其控制器與資料寫入方法 | |
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
TWI607448B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI446349B (zh) | 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器 | |
TWI454913B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI486766B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
TWI525625B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI451439B (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
CN107818808B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
TWI421870B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
TWI489272B (zh) | 保護資料的方法、記憶體控制器與記憶體儲存裝置 | |
TWI656531B (zh) | 平均磨損方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI607309B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI523030B (zh) | 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI545588B (zh) | 控制方法、連接器與記憶體儲存裝置 | |
TW201403319A (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
TWI591640B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI507981B (zh) | 指令執行方法、連接器與記憶體儲存裝置 | |
TWI514141B (zh) | 記憶體位址管理方法、記憶體控制器與記憶體儲存裝置 | |
TW202004506A (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI688956B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI559141B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US9009389B2 (en) | Memory management table processing method, memory controller, and memory storage apparatus |