TWI480733B - 資料寫入方法、記憶體控制器與記憶體儲存裝置 - Google Patents
資料寫入方法、記憶體控制器與記憶體儲存裝置 Download PDFInfo
- Publication number
- TWI480733B TWI480733B TW101111124A TW101111124A TWI480733B TW I480733 B TWI480733 B TW I480733B TW 101111124 A TW101111124 A TW 101111124A TW 101111124 A TW101111124 A TW 101111124A TW I480733 B TWI480733 B TW I480733B
- Authority
- TW
- Taiwan
- Prior art keywords
- physical
- blocks
- logical
- block
- data
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1443—Transmit or communication errors
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)
Description
本發明是有關於一種資料寫入方法,且特別是有關於一種用於可複寫式非揮發性記憶體模組的資料寫入方法以及使用此方法的記憶體儲存裝置與記憶體控制器。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,可複寫式非揮發性記憶體模組會包括多個實體區塊,並且多個邏輯區塊會被配置以映射至部分的實體區塊。當一個主機系統要存取可複寫式非揮發性記憶體模組時,會下達存取這些邏輯區塊的指令給控制可複寫式非揮發性記憶體模組的記憶體控制器。在習知技術中,記憶體控制器是以一個實體區塊為單位來管理可複寫式非揮發性記憶體模組。在根據一個寫入指令將屬於一個邏輯區塊的資料寫入至一個實體區塊時,若發生程式化錯誤,記憶體控制器會確保此邏輯區塊所映射的實體區塊所儲存的資料是未執行寫入指令前的舊資料。然而,當一個檔案資料被分散地儲存到多個邏輯區塊,且執行寫入指令時發生程式化錯誤時,則會發生多個邏輯區塊所儲存之檔案資料的完整性發生問題。詳細來說,已完成寫入動作的邏輯區塊會被映射至儲存有新資料的實體區塊,但發生程式化錯誤的邏輯區塊仍會映射至儲存有舊資料的實體區塊。如此一來,各個邏輯區塊所儲存的檔案資料會不完整(即,一部分有被更新,並且另一部分沒有被更新)。因此,如何確保被分散地儲存至多個邏輯區塊之資料的更新能夠完整,為此領域技術人員所關心的議題。
本發明的範例實施例中提出一種資料寫入方法以及使用此方法的記憶體控制器與記憶體儲存裝置,可確保被分散地儲存至多個邏輯區塊之檔案資料的更新完整性。
本發明在一範例實施例中,提出一種資料寫入方法,用於一可複寫式非揮發性記憶體模組。此可複寫式非揮發性記憶體模組包括了多個實體區塊,其中多個邏輯區塊會被配置以映射至部分的實體區塊。此資料寫入方法包括:配置多個虛擬區塊位址以映射至少部分的邏輯區塊,並將這些虛擬區塊位址提供給一主機系統;接收來自主機系統的一個寫入指令,此寫入指令是指示將一檔案資料寫入至上述虛擬區塊位址之中的多個第一虛擬區塊位址,而這些第一虛擬區塊位址是映射至上述至少部份的邏輯區塊之中的多個第一邏輯區塊。本資料寫入方法還包括:將上述的檔案資料寫入至上述邏輯區塊中的多個第二邏輯區塊所映射的實體區塊;判斷在將檔案資料寫入至第二邏輯區塊所映射的實體區塊期間是否發生一程式化錯誤;以及,當未發生程式化錯誤時,將第一虛擬區塊位址映射至第二邏輯區塊。
在一範例實施例中,上述的資料寫入方法更包括:將邏輯區塊至少劃分為儲存區與緩衝區,其中上述至少部份的邏輯區塊會被劃分為儲存區,而第二邏輯區塊是屬於緩衝區。其中當未發生程式化錯誤時,將第一虛擬區塊位址映射至第二邏輯區塊的步驟還包括:將第二邏輯區塊關聯至上述的儲存區,並將第一邏輯區塊關聯至緩衝區。
在一範例實施例中,上述的資料寫入方法更包括:將上述的多個實體區塊邏輯地至少分組為一資料區與一閒置區。其中,上述的邏輯區塊是映射至資料區的實體區塊;第一邏輯區塊是分別地映射至資料區的實體區塊之中的多個第一實體區塊;並且,第二邏輯區塊是分別地映射至資料區的實體區塊之中的多個第二實體區塊。
在一範例實施例中,上述將檔案資料寫入至邏輯區塊之中的第二邏輯區塊所映射的實體區塊的步驟包括:從閒置區的實體區塊之中選擇多個第三實體區塊;將檔案資料寫入至第三實體區塊中;將第二邏輯區塊分別地重新映射至第三實體區塊;以及,將第二實體區塊關聯至閒置區並且將第三實體區塊關聯至資料區。
在一範例實施例中,上述的資料寫入方法更包括:將屬於第一邏輯區塊的有效資料從第一實體區塊複製到第三實體區塊。
在一範例實施例中,上述的資料寫入方法更包括:建立一虛擬邏輯映射表,用以記錄上述的虛擬區塊位址與儲存區的邏輯區塊之間的映射關係。
在一範例實施例中,上述配置多個虛擬區塊位址以映射至儲存區的邏輯區塊,並將虛擬區塊位址提供給主機系統的步驟包括;提供這些虛擬區塊位址給執行於主機系統中的多個應用程式。上述建立虛擬邏輯映射表的步驟則包括:建立屬於每一個應用程式的虛擬邏輯映射表。
在一範例實施例中,上述的資料寫入方法更包括:當發生程式化錯誤時,傳送一錯誤訊息給主機系統以回應寫入指令。
在一範例實施例中,上述的第一邏輯區塊是映射至第一實體區塊,而上述的第二邏輯區塊是映射至第二實體區塊。上述將檔案資料寫入至邏輯區塊之中的第二邏輯區塊所映射的實體區塊的步驟包括:將上述的檔案資料寫入至第二實體區塊當中;以及,將屬於第一邏輯區塊的有效資料從第一實體區塊複製到第二實體區塊。
以另外一個角度來說,本發明在一範例實施例中提出一種記憶體儲存裝置,包括連接器、可複寫式非揮發性記憶體模組與記憶體控制器。其中,連接器是用以耦接至一主機系統。可複寫式非揮發性記憶體模組包括了多個實體區塊,其中多個邏輯區塊會被配置以映射至部分的實體區塊。記憶體控制器則耦接至連接器與可複寫式非揮發性記憶體模組,並會配置多個虛擬區塊位址以映射至少部份的邏輯區塊,並將這些虛擬區塊位址提供給主機系統。此外,記憶體控制器會接收來自主機系統的一寫入指令,此寫入指令是指示將一個檔案資料寫入至上述虛擬區塊位址之中的多個第一虛擬區塊位址,而這些第一虛擬區塊位址是映射至上述至少部分的邏輯區塊之中的多個第一邏輯區塊。記憶體控制器也會將檔案資料寫入至上述邏輯區塊之中的多個第二邏輯區塊所映射的實體區塊。記憶體控制器還會判斷在將檔案資料寫入至第二邏輯區塊所映射的實體區塊期間是否發生一程式化錯誤。當未發生程式化錯誤時,記憶體控制器會將第一虛擬區塊位址映射至第二邏輯區塊。
在一範例實施例中,上述的記憶體控制器更用以將上述的邏輯區塊至少劃分為儲存區與緩衝區,其中上述至少部份的邏輯區塊被劃分為儲存區,而第二邏輯區塊是屬於緩衝區。當未發生程式化錯誤時,記憶體控制器會將第二邏輯區塊關聯至儲存區,並將第一邏輯區塊關聯至緩衝區。
在一範例實施例中,上述的記憶體控制器更用以將實體區塊邏輯地至少分組為一資料區與一閒置區。其中,上述的邏輯區塊是映射至資料區的實體區塊,而第一邏輯區塊是分別地映射至資料區的實體區塊之中的多個第一實體區塊,並且,第二邏輯區塊是分別地映射至資料區的實體區塊之中的多個第二實體區塊。
在一範例實施例中,上述在將檔案資料寫入至邏輯區塊之中的第二邏輯區塊所映射的實體區塊的過程中,記憶體控制器更用以從閒置區的實體區塊之中選擇多個第三實體區塊,將檔案資料寫入至第三實體區塊中,將第二邏輯區塊分別地重新映射至第三實體區塊,將第二實體區塊關聯至閒置區,以及將第三實體區塊關聯至資料區。
在一範例實施例中,上述的記憶體控制器更用以將屬於第一邏輯區塊的有效資料從第一實體區塊複製到第三實體區塊。
在一範例實施例中,上述的記憶體控制器更用以建立一虛擬邏輯映射表,以記錄虛擬區塊位址與儲存區的邏輯區塊之間的映射關係。
在一範例實施例中,上述的記憶體控制器更用以提供上述的虛擬區塊位址給執行於主機系統中的多個應用程式,並且建立屬於每一個應用程式的虛擬邏輯映射表。
在一範例實施例中,上述的記憶體控制器更用以在發生程式化錯誤時,傳送一錯誤訊息給主機系統以回應上述的寫入指令。
以另外一個角度來說,本發明在一範例實施例中提出一種記憶體控制器,包括主機介面、記憶體介面與記憶體管理電路。其中,主機介面是用以耦接至一主機系統。記憶體介面是耦接至一可複寫式非揮發性記憶體模組,此可複寫式非揮發性記憶體模組包括了多個實體區塊,而多個邏輯區塊會被配置以映射至部分的實體區塊。記憶體管理電路則耦接至主機介面與記憶體介面,並會配置多個虛擬區塊位址以映射至少部分的邏輯區塊,並將這些虛擬區塊位址提供給主機系統。此外,記憶體管理電路會接收來自主機系統的一寫入指令,此寫入指令是指示將一檔案資料寫入至虛擬區塊位址之中的多個第一虛擬區塊位址,而這些第一虛擬區塊位址是映射至上述至少部份的邏輯區塊之中的多個第一邏輯區塊。記憶體管理電路也會將檔案資料寫入至上述邏輯區塊之中的多個第二邏輯區塊所映射的實體區塊。記憶體管理電路還會判斷在將檔案資料寫入至第二邏輯區塊所映射的實體區塊期間是否發生一程式化錯誤。當未發生程式化錯誤時,記憶體管理電路會將第一虛擬區塊位址映射至第二邏輯區塊。
在一範例實施例中,上述的記憶體管理電路更用以將上述的邏輯區塊至少劃分為儲存區與緩衝區,其中上述至少部份的邏輯區塊被劃分為儲存區,而第二邏輯區塊是屬於緩衝區。當未發生程式化錯誤時,記憶體管理電路會將第二邏輯區塊關聯至儲存區,並將第一邏輯區塊關聯至緩衝區。
在一範例實施例中,上述的記憶體管理電路更用以將實體區塊邏輯地至少分組為一資料區與一閒置區。其中,上述的邏輯區塊是映射至資料區的實體區塊;而第一邏輯區塊是分別地映射至資料區的實體區塊之中的多個第一實體區塊;並且,第二邏輯區塊是分別地映射至資料區的實體區塊之中的多個第二實體區塊。
在一範例實施例中,上述在將檔案資料寫入至邏輯區塊之中的第二邏輯區塊所映射的實體區塊的過程中,記憶體管理電路更用以從閒置區的實體區塊之中選擇多個第三實體區塊。記憶體管理電路會將檔案資料寫入至第三實體區塊中,將第二邏輯區塊分別地重新映射至第三實體區塊,並且將第二實體區塊關聯至閒置區並且將第三實體區塊關聯至資料區。
在一範例實施例中,上述的記憶體管理電路更用以將屬於第一邏輯區塊的有效資料從第一實體區塊複製到第三實體區塊。
在一範例實施例中,上述的記憶體管理電路更用以建立一虛擬邏輯映射表,以記錄虛擬區塊位址與儲存區的邏輯區塊之間的映射關係。
在一範例實施例中,上述的記憶體管理電路更用以提供上述的多個虛擬區塊位址給執行於主機系統中的多個應用程式,並且建立屬於每一個應用程式的虛擬邏輯映射表。
在一範例實施例中,上述的記憶體管理電路更用以在發生程式化錯誤時,傳送一錯誤訊息給主機系統以回應寫入指令。
基於上述,本發明範例實施例所提出的資料寫入方法、記憶體控制器與記憶體儲存裝置,可確保被分散地儲存至多個邏輯區塊之資料的更新能夠完整。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1A是根據第一範例實施例所繪示的主機系統與記憶體儲存裝置。
請參照圖1A,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108與資料傳輸介面1110。微處理器1102會執行載入至隨機存取記憶體1104中的作業系統1105與應用程式1107,以使主機系統1000根據使用者之操作而提供對應的功能。輸入/輸出裝置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是相容於安全數位(Secure Digital,SD)介面標準。然而,必須瞭解的是,本發明不限於此,連接器102亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE) 1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、序列先進附件(Serial Advanced Technology Attachment,SATA)標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。
記憶體控制器104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組106是耦接至記憶體控制器104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體模組106具有實體區塊304(0)~304(R)。例如,實體區塊304(0)~304(R)可屬於同一個記憶體晶粒(die)或者屬於不同的記憶體晶粒。每一實體區塊分別具有複數個實體頁面,並且每一實體頁面具有至少一實體扇區,其中屬於同一個實體區塊之實體頁面可被獨立地寫入且被同時地抹除。例如,每一實體區塊是由128個實體頁面所組成,並且每一實體頁面具有8個實體扇區(sector)。也就是說,在每一實體扇區為512位元組(byte)的例子中,每一實體頁面的容量為4千位元組(Kilobyte,KB)。然而,必須瞭解的是,本發明不限於此,每一實體區塊是可由64個實體頁面、256個實體頁面或其他任意個實體頁面所組成。
更詳細來說,實體區塊為抹除之最小單位。亦即,每一實體區塊含有最小數目之一併被抹除之記憶胞。實體頁面為程式化的最小單元。即,實體頁面為寫入資料的最小單元。然而,必須瞭解的是,在本發明另一範例實施例中,寫入資料的最小單位亦可以是實體扇區或其他大小。每一實體頁面通常包括資料位元區與冗餘位元區。資料位元區用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤檢查與校正碼)。
在本範例實施例中,可複寫式非揮發性記憶體模組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是相容於SD標準。然而,必須瞭解的是本發明不限於此,主機介面204亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SATA標準、MS標準、MMC標準、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與圖5是根據第一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
必須瞭解的是,在此描述可複寫式非揮發性記憶體模組106之實體區塊的運作時,以“提取”、“交換”、“分組”、“輪替”等詞來操作實體區塊是邏輯上的概念。也就是說,可複寫式非揮發性記憶體模組之實體區塊的實際位置並未更動,而是邏輯上對可複寫式非揮發性記憶體模組的實體區塊進行操作。
請參照圖4,記憶體控制器104會將可複寫式非揮發性記憶體模組的實體區塊304(0)~304(R)邏輯地分組為資料區402、閒置區404、系統區406與取代區408。
資料區402與閒置區404的實體區塊是用以儲存來自於主機系統1000的資料。具體來說,資料區402是已儲存資料的實體區塊,而閒置區404的實體區塊是用以替換資料區402的實體區塊。因此,閒置區404的實體區塊為空或可使用的實體區塊,即無記錄資料或標記為已沒用的無效資料。也就是說,在閒置區404中的實體區塊已被執行抹除運作,或者當閒置區404中的實體區塊被提取用於儲存資料之前所提取之實體區塊會被執行抹除運作。因此,閒置區404的實體區塊為可被使用的實體區塊。
邏輯上屬於系統區406的實體區塊是用以記錄系統資料,其中此系統資料包括關於記憶體晶片的製造商與型號、記憶體晶片的實體區塊數、每一實體區塊的實體頁面數等。
邏輯上屬於取代區408中的實體區塊是替代實體區塊。例如,可複寫式非揮發性記憶體模組於出廠時會預留4%的實體區塊作為更換使用。也就是說,當資料區402、閒置區404與系統區406中的實體區塊損毀時,預留於取代區408中的實體區塊是用以取代損壞的實體區塊(即,壞實體區塊(bad block))。因此,倘若取代區408中仍存有正常之實體區塊且發生實體區塊損毀時,記憶體控制器104會從取代區408中提取正常的實體區塊來更換損毀的實體區塊。倘若取代區408中無正常之實體區塊且發生實體區塊損毀時,則記憶體控制器104會將整個記憶體儲存裝置100宣告為寫入保護(write protect)狀態,而無法再寫入資料。
特別是,資料區402、閒置區404、系統區406與取代區408之實體區塊的數量會依據不同的記憶體規格而有所不同。此外,必須瞭解的是,在記憶體儲存裝置100的運作中,實體區塊關聯至資料區402、閒置區404、系統區406與取代區408的分組關係會動態地變動。例如,當閒置區中的實體區塊損壞而被取代區的實體區塊取代時,則原本取代區的實體區塊會被關聯至閒置區。
請參照圖5,如上所述,資料區402與閒置區404的實體區塊是以輪替方式來儲存主機系統1000所寫入之資料。在本範例實施例中,記憶體控制器104的記憶體管理電路202會配置邏輯區塊LBA(0)~LBA(D)以利於在以上述輪替方式來儲存資料之實體區塊中進行資料存取。具體來說,邏輯區塊LBA(0)~LBA(D)分別地具有多個邏輯頁面,並且邏輯區塊LBA(0)~LBA(D)初始地映射至資料區402的實體區塊304(0)~304(D),其中一個邏輯區塊會映射資料區402中的一個實體區塊。例如,記憶體管理電路202會建立邏輯區塊-實體區塊映射表(logical block-physical block mapping table),以記錄邏輯區塊與實體區塊之間的映射關係。
在本發明範例實施例中,記憶體控制器104的記憶體管理電路202會將邏輯區塊LBA(0)~LBA(D)區分為儲存區與緩衝區,配置虛擬區塊位址以映射儲存區的邏輯區塊,並且將所配置的虛擬區塊位址提供給主機系統1000的應用程式進行存取,其中一個虛擬區塊位址是映射一個邏輯區塊。特別是,儲存區與緩衝區的邏輯區塊是以輪替方式來映射虛擬區塊位址。也就是說,當原先關聯至緩衝區的一個邏輯區塊若被映射至一個虛擬區塊位址,此邏輯區塊會被關聯至儲存區;並且當原先關聯至儲存區的一個邏輯區塊不再被映射至一個虛擬區塊位址時,此邏輯區塊會被關聯至緩衝區。
圖6是根據第一範例實施例說明主機系統的應用程式存取虛擬區塊位址的示意圖。
請參照圖6,記憶體管理電路202將邏輯區塊LBA(0)~LBA(D)劃分出儲存區620與緩衝區640。例如,儲存區620包括邏輯區塊LBA(A)~LBA(B),而緩衝區640包括邏輯區塊LBA(B+1)~LBA(C)。並且,記憶體管理電路202會將儲存區620與緩衝區640的邏輯區塊映射到資料區402的實體區塊304(0)~304(M)。特別的是,記憶體管理電路202會配置虛擬區塊位址602(0)~602(E)以映射至儲存區620中的邏輯區塊LBA(A)~LBA(B),並且將虛擬區塊位址602(0)~602(E)提供給主機系統1000,使得安裝在主機系統1000的應用程式1107可以存取虛擬區塊位址602(0)~602(E)。值得注意的是,由於虛擬區塊位址602(0)~602(E)只映射至邏輯區塊LBA(A)~LBA(B),因此主機系統1000並無法存取邏輯區塊LBA(B+1)~LBA(C)。
此外,儘管在本範例實施例中,邏輯區塊LBA(0)~LBA(D)是被至少劃分出儲存區620與緩衝區640來進行說明,但本發明並不在此限,在本發明另一範例實施例中,邏輯區塊LBA(0)~LBA(D)亦被劃分為更多個區域來進行管理。並且,本發明並不限制儲存區620與緩衝區640中所包括的邏輯區塊個數。
例如,在一範例實施例中,記憶體管理電路202會建立屬於應用程式1107的一個虛擬邏輯映射表,用以記錄虛擬區塊位址602(0)~602(E)與儲存區620的邏輯區塊LBA(A)~LBA(B)之間的映射關係。
圖7是根據第一範例實施例說明進行寫入運作時調整邏輯區塊與實體區塊之間的映射關係的範例示意圖。
請參照圖7,在此假設應用程式1107下達將檔案資料702寫入至虛擬區塊位址602(0)的虛擬區域704與虛擬區塊位址602(1)的虛擬區域706(在此,虛擬區塊位址602(0)與602(1)亦被稱為第一虛擬區塊位址)的寫入指令給記憶體儲存裝置100。也就是說,檔案資料702會包括多個片段,並且應用程式1107欲將此些片段分別地儲存至虛擬區域704以及虛擬區域706。例如,虛擬區域704以及虛擬區域706包括了一個或多個虛擬位址以供應用程式1107來存取。特別的是,在本範例實施例中,欲寫入至虛擬區域704與虛擬區域706的檔案資料702是屬於同一個檔案,因此,記憶體管理電路202能夠確保虛擬區域704與虛擬區域706所儲存之檔案資料的更新是完整的。
例如,記憶體管理電路202在接收到此寫入指令以後,可根據虛擬邏輯映射表找到映射至虛擬區塊位址602(0)的邏輯區塊LBA(A),以及映射至虛擬區塊位址602(1)的邏輯區塊LBA(A+1)(在此,邏輯區塊LBA(A)與LBA(A+1)亦被統稱為第一邏輯區塊)。在圖7所示之範例中,邏輯區塊LBA(A)與LBA(A+1)是分別映射至資料區402的實體區塊304(0)與304(1)(在此,實體區塊304(0)與304(1)亦被統稱為第一實體區塊)。此外,邏輯區塊LBA(A)包括映射至虛擬區域708的邏輯區域718以及映射至虛擬區域704的邏輯區域714,並且邏輯區塊LBA(A+1)包括映射至虛擬區域706的邏輯區域716與映射至虛擬區域709的邏輯區域719。此外,邏輯區域718原始是映射至實體區塊304(0)的實體區域728;邏輯區域714原始是映射實體區塊304(0)的至實體區域724;邏輯區域716原始是映射至實體區塊304(1)中的實體區域726;並且邏輯區域719是原始映射至實體區塊304(1)的實體區域729。
從上述映射關係可以得知,應用程式1107是要根據檔案資料702來更新儲存在實體區域724與實體區域726中的資料。然而,在另一範例實施例中,虛擬區域708可以映射至邏輯區域714,並且邏輯區域718可以映射至實體區域724,本發明不限制虛擬區域、邏輯區域以及實體區域之間的映射關係。
在本範例實施例中,在接收到此寫入指令時,記憶體管理電路202會將檔案資料702寫入至緩衝區640的邏輯區塊LBA(B+1)與LBA(B+2)(亦被稱為第二邏輯區塊)所映射的實體區塊。具體來說,邏輯區塊LBA(B+1)包括邏輯區域738與邏輯區域734,並且邏輯區塊LBA(B+2)包括邏輯區域736與邏輯區域739。並且,邏輯區塊LBA(B+1)原始是映射至資料區402的實體區塊304(2)並且邏輯區塊LBA(B+2)原始是映射至資料區402的實體區塊304(3)(在此,實體區塊304(2)與304(3)亦被統稱為第二實體區塊)。記憶體管理電路202會下達寫入指令給可複寫式非揮發性記憶體模組106以指示將檔案資料702寫入至邏輯區域734與736所對應的實體區域。值得注意的是,由於實體區塊在被抹除之前無法寫入新的資料,因此,記憶體管理電路202會從閒置區404中提取實體區塊304(D+1)與304(D+2)(在此,實體區塊304(D+1)與304(D+2)亦被統稱為第三實體區塊),用以將檔案資料702寫入。然而,本發明不限於此,本發明亦可用第二實體區塊(實體區塊304(2)與304(3))將檔案資料702寫入。
在本範例實施例中,一個邏輯區域可包括一或多個邏輯位址,一個實體區域可包括一或多個實體位址。邏輯區域中的邏輯位址是用以映射至虛擬區域中的虛擬位址,以及實體區域中的實體位址。例如,邏輯區域718包括一或多個邏輯位址,以映射至虛擬區域708中的一或多個虛擬位址與實體區域728中的一或多個實體位址。
圖8是根據圖7的範例繪示將檔案資料寫入至實體區塊的示意圖。
請參照圖8,由於原始映射邏輯區塊LBA(A)與LBA(A+1)的實體區塊304(0)與304(1)儲存有未被更新的資料(亦稱為有效資料),因此,除了將檔案資料702寫入至實體區塊304(D+1)與304(D+2)以外,記憶體管理電路202也會將實體區塊304(0)與304(1)中的有效資料(即,實體區域728與729中所儲存的資料)複製到實體區塊304(D+1)與304(D+2)中。另一方面,由於一個實體區塊所包括的實體頁面必須依序的被程式化,因此記憶體管理電路202會先將實體區域728所儲存的有效資料複製到實體區域808,再將部份的檔案資料702寫入至實體區域804。類似地,記憶體管理電路202會先將其他部份的檔案資料702寫入至實體區域806,再將實體區域729所儲存的有效資料複製到實體區域809。最後,記憶體管理電路202會將實體區塊304(D+1)重新映射至邏輯區塊LBA(B+1),並將實體區塊304(D+2)重新映射至邏輯區塊LBA(B+2)。
請參照回圖7,在將邏輯區塊LBA(B+1)與LBA(B+2)重新映射至實體區塊304(D+1)與304(D+2)後,記憶體管理電路202會將實體區塊304(D+1)與304(D+2)關聯至資料區402,並將實體區塊304(2)與304(3)關聯至閒置區404。也就是說,由於實體區塊304(2)與304(3)所儲存的資料已是舊資料,因此可以被關聯至閒置區404,並且在經過抹除以後便於下次執行寫入運作或其他運作時用來寫入資料。此外,順利完成實體區塊304(D+1)與304(D+2)的程式化(即,未發生程式化錯誤)後,記憶體管理電路202會將虛擬區塊位址602(0)重新映射至邏輯區塊LBA(B+1),並將虛擬區塊位址602(1)重新映射至邏輯區塊LBA(B+2)。
值得注意的是,在本範例實施例中,倘若在將檔案資料702寫入至實體區塊304(D+1)與304(D+2)的期間發生程式化錯誤時,記憶體管理電路202會維持虛擬區塊位址602(0)與602(1)與邏輯區塊LBA(A)與LBA(A+1)之間的映射關係,並且傳送一個錯誤訊息給主機系統1000以回應所接收的寫入指令。具體來說,如上所述,虛擬區域704與706所儲存之的資料是屬於同一個檔案,因此,必須確保虛擬區域704與706所儲存之資料的完整性(即,皆是舊資料或皆為已被更新的資料)。因此,在本範例實施例中,記憶體管理電路202會在確認實體區塊304(D+1)與304(D+2)皆成功地完成程式化後,才將虛擬區塊位址602(0)與虛擬區塊位址602(1)重新映射至邏輯區塊LBA(B+1)與LBA(B+2),以確保虛擬區域704與706所儲存之的資料皆為已更新資料;並且當實體區塊304(D+1)與304(D+2)的任一個未完成程式化時,會維持虛擬區塊位址602(0)與602(1)與邏輯區塊LBA(A)與LBA(A+1)之間的映射關係,以確保虛擬區域704與706所儲存之的資料皆為舊資料。
特別是,在確認順利完成程式化後並且將虛擬區塊位址602(0)與虛擬區塊位址602(1)重新映射至邏輯區塊LBA(B+1)與LBA(B+2)後,記憶體管理電路202會將邏輯區塊LBA(A)與LBA(A+1)關聯至緩衝區640,並將邏輯區塊LBA(B+1)與LBA(B+2)關聯至儲存區620。也就是說,由於邏輯區塊LBA(A)與LBA(A+1)所儲存的資料為無效資料因此可以被關聯至緩衝區640並被使用於執行下個寫入指令的過程中。
值得注意的是,在另一範例實施例中,在指示將檔案資料702寫入至邏輯區塊LBA(B+1)所映射的實體區塊時,記憶體管理電路202可以先寫入屬於邏輯區域734的資料,再將屬於邏輯區域718的有效資料複製到邏輯區域738所映射的實體區塊中,本發明並不在此限。
值得一提的是,儘管在本範例實施例中,是將所有虛擬區塊位址分配給安裝於主機系統的一個應用程式來存取,然而本發明不限於此。在一範例實施例中,主機系統1000上可執行多個應用程式。特別的是,記憶體管理電路202會分配多個虛擬區塊位址給每一個應用程式。並且,對於每一個應用程式,記憶體管理電路202會建立屬於各個應用程式的虛擬邏輯映射表。如此一來,記憶體管理電路202在接收到各個應用程式所下達的存取虛擬區塊位址的寫入指令時,便可以根據各自的虛擬邏輯映射表找到正確映射的邏輯區塊。
圖9是根據一範例實施例繪示資料寫入方法的流程圖。
請參照圖9,在步驟S904中,記憶體管理電路202會配置多個虛擬區塊位址602(0)~602(E)以映射至少部份(例如,儲存區620)的邏輯區塊,並將虛擬區塊位址602(0)~602(E)提供給主機系統1000。
在步驟S906中,記憶體管理電路202會從主機系統1000接收用以指示將檔案資料寫入至多個虛擬區塊位址(以下稱為第一虛擬區塊位址)的一個寫入指令,其中第一虛擬區塊位址是映射至上述至少部份的多個邏輯區塊(以下稱為第一邏輯區塊)。
在步驟S908中,記憶體管理電路202會將上述的檔案資料寫入多個邏輯區塊(以下稱為第二邏輯區塊)所映射的實體區塊中。將資料寫入至第二邏輯區塊所映射的實體區塊中的運作已配合圖8詳細描述如上,在此不再重複描述。
之後,在步驟S910中,記憶體管理電路202會判斷在將檔案資料寫入至第二邏輯區塊所映射的實體區塊期間是否發生一程式化錯誤。若發生程式化錯誤,則在步驟S912中,記憶體管理電路202會傳送一錯誤訊息給主機系統1000以回應上述寫入指令。
若未發生程式化錯誤,則在步驟S914中,記憶體管理電路202會將第一虛擬區塊位址重新映射至第二邏輯區塊。在此,將第一虛擬區塊位址重新映射至第二邏輯區塊的運作以配合圖7詳細描述如上,在此不再重複描述。
第二範例實施例與第一範例實施例類似,以下僅就不同之處加以說明。在第一範例實施例中,儲存區與緩衝區的邏輯區塊皆是映射到資料區的實體區塊。然而,在第二範例實施例中,儲存區的邏輯區塊是映射至資料區的實體區塊,但緩衝區的邏輯區塊是映射至閒置區的實體區塊。
圖10是根據第二範例實施例說明主機系統的應用程式存取虛擬區塊位址的示意圖。
請參照圖10,記憶體管理電路202會將邏輯區塊LBA(0)~LBA(D)至少劃分出儲存區1020與緩衝區1040。儲存區1020包括了邏輯區塊LBA(F)~LBA(G),而緩衝區1040包括了邏輯區塊LBA(G+1)~LBA(H)。值得注意的是,邏輯區塊LBA(F)~LBA(G)是映射至資料區402中的實體區塊304(0)~304(K),而邏輯區塊LBA(G+1)~LBA(H)是映射至閒置區404中的實體區塊304(D+1)~304(P)。在此範例實施例中,由於分配給應用程式1107的虛擬區塊位址602(0)~602(E)僅映射至儲存區1020的邏輯區塊LBA(F)~LBA(G),因此應用程式1107並無法直接存取緩衝區1040的邏輯區塊LBA(G+1)~LBA(H)。與第一範例實施例相同的是,在記憶體管理電路202接收到指示將一檔案資料寫入至虛擬區塊位址的寫入指令時,會先將此檔案資料寫入至緩衝區1040。並且,在確定寫入此檔案資料時沒有發生程式化錯誤以後,記憶體管理電路202才會改變虛擬區塊位址與邏輯區塊之間的映射關係。
圖11是根據第二範例實施例說明進行寫入運作時調整邏輯區塊與實體區塊之間的映射關係的範例示意圖。
請參照圖11,當接收到欲將檔案資料702寫入至虛擬區塊位址602(0)與602(1)(亦稱第一虛擬區塊位址)的寫入指令以後,記憶體管理電路202會根據虛擬邏輯映射表找到映射至虛擬區塊位址602(0)的邏輯區塊LBA(F)與映射至虛擬區塊位址602(1)的邏輯區塊LBA(F+1)(在此,邏輯區塊LBA(F)與LBA(F+1)亦統稱為第一邏輯區塊)。其中,邏輯區塊LBA(F)是原始映射至實體區塊304(0),而邏輯區塊LBA(F+1)是原始映射至實體區塊304(1)。也就是說,在此範例實施例中,主機系統1000是要根據檔案資料702來更新儲存在實體區塊304(0)與304(1)的資料。特別的是,記憶體管理電路會將檔案資料702指示寫入至邏輯區塊LBA(G+1)與LBA(G+2)(亦稱為第二邏輯區塊)。其中,邏輯區塊LBA(G+1)是原始映射至實體區塊304(D+1),而邏輯區塊LBA(G+2)是原始映射至實體區塊304(D+2)。由於一個實體區塊必須先被抹除才能被重新寫入,因此記憶體管理電路202會提取實體區塊304(D+3)與304(D+4)來寫入檔案資料702。
記憶體管理電路202會將儲存在實體區塊304(0)的有效資料複製至實體區塊304(D+3),並將檔案資料702的一部分寫入至實體區塊304(D+3)。並且,記憶體管理電路202會將儲存在實體區塊304(1)的有效資料複製至實體區塊304(D+4),並將檔案資料702的另一部分寫入至實體區塊304(D+4)。在將檔案資料702寫入至實體區塊304(D+3)與304(D+4)的過程中,記憶體管理電路202還會判斷是否發生一程式化錯誤。若沒有,則會將虛擬區塊位址602(0)映射至邏輯區塊LBA(G+1),將虛擬區塊位址602(1)映射至邏輯區塊LBA(G+2)。並且,邏輯區塊LBA(G+1)與LBA(G+2)會被關聯至儲存區1020,而邏輯區塊LBA(F)與LBA(F+1)會被關聯至緩衝區1040。如此一來,可以確保虛擬區塊位址602(0)與602(1)所儲存的資料的完整性。
與第一範例實施例不同的是,原始映射至邏輯區塊LBA(G+1)與LBA(G+2)的實體區塊304(D+1)和304(D+2)是屬於閒置區404,故在本範例實施例中,記憶體管理電路202亦可將儲存在實體區塊304(0)的有效資料複製至實體區塊304(D+1),並將檔案資料702的一部分寫入至實體區塊304(D+1)。並且,記憶體管理電路202會將儲存在實體區塊304(1)的有效資料複製至實體區塊304(D+2),並將檔案資料702的另一部分寫入至實體區塊304(D+2)。
綜上所述,本發明範例實施例所提出的資料寫入方法、記憶體控制器與記憶體儲存裝置,是將檔案資料寫入的過程分為虛擬區塊位址、邏輯區塊與實體區塊三個層級來管理。並且,當在判斷實體區塊的程式化過程沒有發生程式化錯誤時,才會更新虛擬區塊位址與邏輯區塊之間的映射關係。如此一來,當欲寫入的資料是對應到多個實體區塊,且發生程式化錯誤時,可以確保虛擬區塊位址所儲存的資料的完整性,由此避免屬於同一個檔案之資料的一部份被更新,而另一部未被更新的情形。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
1000...主機系統
1100...電腦
1102...微處理器
1104...隨機存取記憶體
1105...作業系統
1106...輸入/輸出裝置
1107...應用程式
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‧‧‧記憶體介面
254‧‧‧電源管理電路
252‧‧‧緩衝記憶體
256‧‧‧錯誤檢查與校正電路
402‧‧‧資料區
404‧‧‧閒置區
406‧‧‧系統區
408‧‧‧取代區
LBA(0)~LBA(D)‧‧‧邏輯區塊
602(0)~602(E)‧‧‧虛擬區塊位址
620、1020‧‧‧儲存區
640、1040‧‧‧緩衝區
702‧‧‧檔案資料
704、706、708、709‧‧‧虛擬區域
714、716、718、719、734、736、738、739‧‧‧邏輯區域
724、726、728、729、804、806、808、809‧‧‧實體區域
S904、S906、S908、S910、S912、S914‧‧‧資料寫入方法的步驟
圖1A是根據第一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖1B是根據第一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖1C是根據第一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
圖3是根據第一範例實施例所繪示之記憶體控制器的概要方塊圖。
圖4與圖5是根據第一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
圖6是根據第一範例實施例說明主機系統的應用程式存取虛擬區塊位址的示意圖。
圖7是根據第一範例實施例說明進行寫入運作時調整邏輯區塊與實體區塊之間的映射關係的範例示意圖。
圖8是根據圖7的範例繪示將檔案資料寫入至實體區塊的示意圖。
圖9是根據一範例實施例繪示資料寫入方法的流程圖。
圖10是根據第二範例實施例說明主機系統的應用程式存取虛擬區塊位址的示意圖。
圖11是根據第二範例實施例說明進行寫入運作時調整邏輯區塊與實體區塊之間的映射關係的範例示意圖。
LBA(A)~LBA(C)...邏輯區塊
304(0)~304(M)...實體區塊
402...資料區
602(0)~602(E)...虛擬區塊位址
620...儲存區
640...緩衝區
1107...應用程式
Claims (25)
- 一種資料寫入方法,用於一可複寫式非揮發性記憶體模組,該可複寫式非揮發性記憶體模組包括多個實體區塊,其中多個邏輯區塊會被配置以映射至部分的該些實體區塊,該資料寫入方法包括:配置多個虛擬區塊位址以映射至至少部分的該些邏輯區塊,並將該些虛擬區塊位址提供給一主機系統;接收來自該主機系統的一寫入指令,其中該寫入指令是指示將一檔案資料寫入至該些虛擬區塊位址之中的多個第一虛擬區塊位址,該些第一虛擬區塊位址是映射至該至少部分的該些邏輯區塊之中的多個第一邏輯區塊;將該檔案資料寫入至該些邏輯區塊之中的多個第二邏輯區塊所映射的實體區塊;判斷在將該檔案資料寫入至該些第二邏輯區塊所映射的實體區塊期間是否發生一程式化錯誤;以及當未發生該程式化錯誤時,將該些第一虛擬區塊位址映射至該些第二邏輯區塊。
- 如申請專利範圍第1項所述的資料寫入方法,更包括:將該些邏輯區塊至少劃分為一儲存區與一緩衝區,其中該至少部分的該些邏輯區塊被劃分為該儲存區,該些第二邏輯區塊是屬於該緩衝區,其中當未發生該程式化錯誤時,將該些第一虛擬區塊位址映射至該些第二邏輯區塊的步驟還包括: 將該些第二邏輯區塊關聯至該儲存區,並將該些第一邏輯區塊關聯至該緩衝區。
- 如申請專利範圍第1項所述的資料寫入方法,更包括:將該些實體區塊邏輯地至少分組為一資料區與一閒置區,其中該些邏輯區塊是映射至該資料區的實體區塊,該些第一邏輯區塊是分別地映射至該資料區的實體區塊之中的多個第一實體區塊並且該些第二邏輯區塊是分別地映射至該資料區的實體區塊之中的多個第二實體區塊,其中該資料區的實體區塊是已儲存資料的實體區塊且該閒置區的實體區塊用以替換該資料區的實體區塊。
- 如申請專利範圍第3項所述的資料寫入方法,其中將該檔案資料寫入至該些邏輯區塊之中的該些第二邏輯區塊所映射的實體區塊的步驟包括:從該閒置區的實體區塊之中選擇多個第三實體區塊;將該檔案資料寫入至該些第三實體區塊中;將該些第二邏輯區塊分別地重新映射至該些第三實體區塊;以及將該些第二實體區塊關聯至該閒置區並且將該些第三實體區塊關聯至該資料區。
- 如申請專利範圍第4項所述的資料寫入方法,更包括:將屬於該些第一邏輯區塊的有效資料從該些第一實體區塊複製到該些第三實體區塊。
- 如申請專利範圍第2項所述的資料寫入方法,更包括:建立一虛擬邏輯映射表,用以記錄該些虛擬區塊位址與該儲存區的該些邏輯區塊之間的一映射關係。
- 如申請專利範圍第6項所述的資料寫入方法,其中配置該些虛擬區塊位址以映射至該儲存區的該些邏輯區塊,並將該些虛擬區塊位址提供給該主機系統的步驟包括:提供該些虛擬區塊位址給執行於該主機系統中的多個應用程式;其中建立該虛擬邏輯映射表的步驟包括:建立屬於每一該些應用程式的該虛擬邏輯映射表。
- 如申請專利範圍第1項所述的資料寫入方法,更包括:當發生該程式化錯誤時,傳送一錯誤訊息給該主機系統以回應該寫入指令。
- 如申請專利範圍第1項所述的資料寫入方法,其中該些第一邏輯區塊是映射至該些實體區塊中的多個第一實體區塊,該些第二邏輯區塊是映射至該些實體區塊中的多個第二實體區塊,並且將該檔案資料寫入至該些邏輯區塊之中的該些第二邏輯區塊所映射的實體區塊的步驟包括:將該檔案資料寫入至該些第二實體區塊當中;以及將屬於該些第一邏輯區塊的有效資料從該些第一實體區塊複製到該些第二實體區塊。
- 一種記憶體儲存裝置,包括: 一連接器,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,包括多個實體區塊,其中多個邏輯區塊會被配置以映射至部分的該些實體區塊;以及一記憶體控制器,耦接至該連接器與該可複寫式非揮發性記憶體模組;其中,該記憶體控制器配置多個虛擬區塊位址以映射至至少部分的該些邏輯區塊,並將該些虛擬區塊位址提供給該主機系統;其中,該記憶體控制器接收來自該主機系統的一寫入指令,其中該寫入指令是指示將一檔案資料寫入至該些虛擬區塊位址之中的多個第一虛擬區塊位址,該些第一虛擬區塊位址是映射至該至少部份的該些邏輯區塊之中的多個第一邏輯區塊;其中,該記憶體控制器將該檔案資料寫入至該些邏輯區塊之中的多個第二邏輯區塊所映射的實體區塊;其中,該記憶體控制器判斷在將該檔案資料寫入至該些第二邏輯區塊所映射的實體區塊期間是否發生一程式化錯誤;當未發生該程式化錯誤時,該記憶體控制器將該些第一虛擬區塊位址映射至該些第二邏輯區塊。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制器更用以將該些邏輯區塊至少劃分為一儲存區與一緩衝區,其中該至少部分的該些邏輯區塊 被劃分為該儲存區,該些第二邏輯區塊是屬於該緩衝區,其中當未發生該程式化錯誤時,該記憶體控制器將該些第二邏輯區塊關聯至該儲存區,並將該些第一邏輯區塊關聯至該緩衝區。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制器更用以將該些實體區塊邏輯地至少分組為一資料區與一閒置區,其中該些邏輯區塊是映射至該資料區的實體區塊,該些第一邏輯區塊是分別地映射至該資料區的實體區塊之中的多個第一實體區塊並且該些第二邏輯區塊是分別地映射至該資料區的實體區塊之中的多個第二實體區塊,其中該資料區的實體區塊是已儲存資料的實體區塊且該閒置區的實體區塊用以替換該資料區的實體區塊。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中在將該檔案資料寫入至該些邏輯區塊之中的該些第二邏輯區塊所映射的實體區塊的過程中,該記憶體控制器更用以從該閒置區的實體區塊之中選擇多個第三實體區塊,將該檔案資料寫入至該些第三實體區塊中,將該些第二邏輯區塊分別地重新映射至該些第三實體區塊,將該些第二實體區塊關聯至該閒置區,並且將該些第三實體區塊關聯至該資料區。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中該記憶體控制器更用以將屬於該些第一邏輯區塊的有效資料從該些第一實體區塊複製到該些第三實體區 塊。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該記憶體控制器更用以建立一虛擬邏輯映射表,以記錄該些虛擬區塊位址與該儲存區的該些邏輯區塊之間的一映射關係。
- 如申請專利範圍第15項所述的記憶體儲存裝置,其中該記憶體控制器更用以提供該些虛擬區塊位址給執行於該主機系統中的多個應用程式,並且建立屬於每一該些應用程式的該虛擬邏輯映射表。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制器更用以在發生該程式化錯誤時,傳送一錯誤訊息給該主機系統以回應該寫入指令。
- 一種記憶體控制器,包括:一主機介面,用以耦接至一主機系統;一記憶體介面,耦接至一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體區塊,其中多個邏輯區塊會被配置以映射至部分的該些實體區塊;以及一記憶體管理電路,耦接至該主機介面與該記憶體介面;其中,該記憶體管理電路配置多個虛擬區塊位址以映射至至少部分的該些邏輯區塊,並將該些虛擬區塊位址提供給該主機系統;其中,該記憶體管理電路接收來自該主機系統的一寫 入指令,其中該寫入指令是指示將一檔案資料寫入至該些虛擬區塊位址之中的多個第一虛擬區塊位址,該些第一虛擬區塊位址是映射至該至少部分的該些邏輯區塊之中的多個第一邏輯區塊;其中,該記憶體管理電路將該檔案資料寫入至該些邏輯區塊之中的多個第二邏輯區塊所映射的實體區塊;其中,該記憶體管理電路判斷在將該檔案資料寫入至該些第二邏輯區塊所映射的實體區塊期間是否發生一程式化錯誤;當未發生該程式化錯誤時,該記憶體管理電路將該些第一虛擬區塊位址映射至該些第二邏輯區塊。
- 如申請專利範圍第18項所述的記憶體控制器,其中該記憶體管理電路更用以將該些邏輯區塊至少劃分為一儲存區與一緩衝區,其中該至少部分的該些邏輯區塊被劃分為該儲存區,該些第二邏輯區塊是屬於該緩衝區,其中當未發生該程式化錯誤時,該記憶體管理電路將該些第二邏輯區塊關聯至該儲存區,並將該些第一邏輯區塊關聯至該緩衝區。
- 如申請專利範圍第18項所述的記憶體控制器,其中該記憶體管理電路更用以將該些實體區塊邏輯地至少分組為一資料區與一閒置區,其中該些邏輯區塊是映射至該資料區的實體區塊,該些第一邏輯區塊是分別地映射至該資料區的實體區塊之中的多個第一實體區塊並且該些第二邏輯區塊是分別地映射至該資料區的實體區塊之中的多個 第二實體區塊,其中該資料區的實體區塊是已儲存資料的實體區塊且該閒置區的實體區塊用以替換該資料區的實體區塊。
- 如申請專利範圍第20項所述的記憶體控制器,其中在將該檔案資料寫入至該些邏輯區塊之中的該些第二邏輯區塊所映射的實體區塊的過程中,該記憶體管理電路更用以從該閒置區的實體區塊之中選擇多個第三實體區塊,將該檔案資料寫入至該些第三實體區塊中,將該些第二邏輯區塊分別地重新映射至該些第三實體區塊,將該些第二實體區塊關聯至該閒置區,並且將該些第三實體區塊關聯至該資料區。
- 如申請專利範圍第21項所述的記憶體控制器,其中該記憶體管理電路更用以將屬於該些第一邏輯區塊的有效資料從該些第一實體區塊複製到該些第三實體區塊。
- 如申請專利範圍第19項所述的記憶體控制器,其中該記憶體管理電路更用以建立一虛擬邏輯映射表,以記錄該些虛擬區塊位址與該儲存區的該些邏輯區塊之間的一映射關係。
- 如申請專利範圍第23項所述的記憶體控制器,其中該記憶體管理電路更用以提供該些虛擬區塊位址給執行於該主機系統中的多個應用程式,並且建立屬於每一該些應用程式的該虛擬邏輯映射表。
- 如申請專利範圍第18項所述的記憶體控制器,其中該記憶體管理電路更用以在發生該程式化錯誤時,傳送 一錯誤訊息給該主機系統以回應該寫入指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101111124A TWI480733B (zh) | 2012-03-29 | 2012-03-29 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US13/477,068 US8812776B2 (en) | 2012-03-29 | 2012-05-22 | Data writing method, and memory controller and memory storage device using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101111124A TWI480733B (zh) | 2012-03-29 | 2012-03-29 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201339835A TW201339835A (zh) | 2013-10-01 |
TWI480733B true TWI480733B (zh) | 2015-04-11 |
Family
ID=49236631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101111124A TWI480733B (zh) | 2012-03-29 | 2012-03-29 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8812776B2 (zh) |
TW (1) | TWI480733B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI603335B (zh) * | 2016-10-19 | 2017-10-21 | 合肥兆芯電子有限公司 | 映射表載入方法、記憶體控制電路單元與記憶體儲存裝置 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104937577B (zh) * | 2013-03-15 | 2018-11-30 | 慧与发展有限责任合伙企业 | 支持扩展写入的存储器模块控制器 |
US9582205B2 (en) * | 2014-04-17 | 2017-02-28 | Sandisk Technologies Llc | Protection scheme with dual programming of a memory system |
CN104123373B (zh) * | 2014-07-28 | 2017-08-08 | 广州华多网络科技有限公司 | 确定数据处理进度的方法及装置 |
GB2539428B (en) | 2015-06-16 | 2020-09-09 | Advanced Risc Mach Ltd | Data processing apparatus and method with ownership table |
GB2539435B8 (en) | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level |
GB2539433B8 (en) | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Protected exception handling |
GB2539429B (en) * | 2015-06-16 | 2017-09-06 | Advanced Risc Mach Ltd | Address translation |
CN105808378B (zh) * | 2016-02-26 | 2018-10-30 | 华为技术有限公司 | 元数据修复方法及装置 |
US20170300422A1 (en) * | 2016-04-14 | 2017-10-19 | Micron Technology, Inc. | Memory device with direct read access |
US10445001B2 (en) * | 2017-01-10 | 2019-10-15 | Winbond Electronics Corporation | Memory control scheme for flash memory devices |
TWI639917B (zh) | 2017-04-25 | 2018-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及映射表重建方法 |
KR102727610B1 (ko) * | 2018-08-02 | 2024-11-07 | 삼성전자주식회사 | 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법 |
KR20200106739A (ko) * | 2019-03-05 | 2020-09-15 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
CN114063890A (zh) * | 2020-08-05 | 2022-02-18 | 宇瞻科技股份有限公司 | 数据备份方法及存储装置 |
US20230083104A1 (en) * | 2021-09-10 | 2023-03-16 | Vmware, Inc. | Efficiently Deleting Snapshots in a Log-Structured File System (LFS)-Based Storage System |
CN115576868B (zh) * | 2022-11-24 | 2023-03-03 | 苏州浪潮智能科技有限公司 | 一种多级映射框架、数据操作请求处理方法及系统 |
CN117632040B (zh) * | 2024-01-25 | 2024-04-30 | 合肥兆芯电子有限公司 | 数据写入方法、存储器存储装置以及存储器控制电路单元 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200900930A (en) * | 2007-01-26 | 2009-01-01 | David R Cheriton | Hierarchical immutable content-addressable memory processor |
TW200903249A (en) * | 2007-04-25 | 2009-01-16 | Apple Inc | Accessing metadata with an external host |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7444489B2 (en) * | 2005-05-13 | 2008-10-28 | 3Par, Inc. | Applications for non-disruptively moving data between logical disk regions in a data storage system |
US8086585B1 (en) * | 2008-09-30 | 2011-12-27 | Emc Corporation | Access control to block storage devices for a shared disk based file system |
US8645662B2 (en) * | 2011-12-23 | 2014-02-04 | Oracle International Corporation | Sub-lun auto-tiering |
US9251086B2 (en) * | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US20130290688A1 (en) * | 2013-04-22 | 2013-10-31 | Stanislav Victorovich Bratanov | Method of Concurrent Instruction Execution and Parallel Work Balancing in Heterogeneous Computer Systems |
-
2012
- 2012-03-29 TW TW101111124A patent/TWI480733B/zh active
- 2012-05-22 US US13/477,068 patent/US8812776B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200900930A (en) * | 2007-01-26 | 2009-01-01 | David R Cheriton | Hierarchical immutable content-addressable memory processor |
US7650460B2 (en) * | 2007-01-26 | 2010-01-19 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory processor |
TW200903249A (en) * | 2007-04-25 | 2009-01-16 | Apple Inc | Accessing metadata with an external host |
US20110154163A1 (en) * | 2007-04-25 | 2011-06-23 | Apple Inc. | Accessing metadata with an external host |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI603335B (zh) * | 2016-10-19 | 2017-10-21 | 合肥兆芯電子有限公司 | 映射表載入方法、記憶體控制電路單元與記憶體儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
TW201339835A (zh) | 2013-10-01 |
US20130262747A1 (en) | 2013-10-03 |
US8812776B2 (en) | 2014-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI480733B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI527037B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
US9037782B2 (en) | Method of programming memory cells and reading data, memory controller and memory storage apparatus using the same | |
CN103377129B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
TWI515735B (zh) | 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI579696B (zh) | 資料重建方法與系統及其記憶體控制電路單元 | |
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI592799B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI479314B (zh) | 系統資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
TWI479505B (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI438630B (zh) | 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置 | |
TWI486766B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
TWI498899B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI591482B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI421686B (zh) | 資料存取方法與系統、儲存媒體控制器與儲存系統 | |
TWI421870B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
TWI459198B (zh) | 記憶體儲存裝置、其記憶體控制器與有效資料識別方法 | |
TW201401050A (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TW201351137A (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI509615B (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
TWI448892B (zh) | 資料搬移方法、記憶體控制器與記憶體儲存裝置 | |
TW201413450A (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
TWI553477B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI533309B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 |