[go: up one dir, main page]

TWI537729B - 資料儲存裝置及其資料維護方法 - Google Patents

資料儲存裝置及其資料維護方法 Download PDF

Info

Publication number
TWI537729B
TWI537729B TW104133817A TW104133817A TWI537729B TW I537729 B TWI537729 B TW I537729B TW 104133817 A TW104133817 A TW 104133817A TW 104133817 A TW104133817 A TW 104133817A TW I537729 B TWI537729 B TW I537729B
Authority
TW
Taiwan
Prior art keywords
column
data link
segment
reverse
link relationship
Prior art date
Application number
TW104133817A
Other languages
English (en)
Other versions
TW201714088A (zh
Inventor
柯冠宇
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Priority to TW104133817A priority Critical patent/TWI537729B/zh
Priority to CN201610185972.1A priority patent/CN106598876B/zh
Application granted granted Critical
Publication of TWI537729B publication Critical patent/TWI537729B/zh
Priority to US15/286,925 priority patent/US10140026B2/en
Publication of TW201714088A publication Critical patent/TW201714088A/zh
Priority to US15/613,342 priority patent/US10073769B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

資料儲存裝置及其資料維護方法
本發明係關於一種資料儲存裝置,特別係關於以特定方式維護預取區域中之資料的資料儲存裝置。
快閃記憶體為一種普遍的非揮發性資料儲存裝置,係以電性方式抹除與程式化。以非及閘型的快閃記憶體(即NAND FLASH)為例,常用作記憶卡(memory card)、通用序列匯流排閃存裝置(USB flash device)、固態硬碟(SSD)、嵌入式快閃記憶體模組(eMMC)…等使用。
快閃記憶體(如,NAND FLASH)的儲存陣列包括複數個區塊(blocks),其中浮置閘極電晶體可用以構成快閃記憶體。浮置閘極電晶體中之浮置閘極,可捕捉的電荷以儲存資料。另外,快閃記憶體中之實體頁面與主機裝置所指定之邏輯頁面的轉換關係需要一個實體轉邏輯表紀錄。然而,需要很大的容量才可以將全部的實體邏輯表載入隨機存取記憶體中。如何有效更新管理隨機記憶體中所載入之資料是一個重要的課題。
本發明所提供之資料儲存裝置以及資料維護方法可藉由三種表來維護儲存於隨機記憶體中之資料。
本發明提供一種資料儲存裝置。資料儲存裝置包括一快閃記憶體以及一隨機存取記憶體。快閃記憶體包括複數區塊,每一區塊包括複數頁面,每一頁面具有一邏輯位址以及一實體位址,其中快閃記憶體具有一資料鏈結關係表用以紀錄所有頁面之邏輯位址以及實體位址的複數對應關係,資料鏈結關係表被分割為複數資料鏈結關係集合,每一資料鏈結關係集合具有多於一個對應關係,並且每一資料鏈結關係集合相應於一集合指標。隨機存取記憶體具有一預取區域、一順序表、一反序表以及一預取區域對應表,其中預取區域具有複數區段用以儲存資料鏈結關係表中部分之資料鏈結關係集合,預取區域對應表具有複數區段對應欄用以紀錄相應於預取區域中之資料鏈結關係集合的集合指標,順序表用以紀錄資料鏈結關係集合自預取區域中被讀取之順序,並且反序表用以紀錄資料鏈結關係集合自預取區域中被讀取之反向的順序。
其中,區段依序具有複數共用指標,預取區域對應表中之區段對應欄依序相應於預取區域中之區段,順序表具有複數順序欄依序相應於預取區域中之區段,反序表具有複數反序欄依序相應於預取區域中之區段,並且區段對應欄、順序欄、反序欄與其相應之區段具有相同之共用指標。順序表中之每一順序欄係用以儲存另一順序欄的共用指標,以分別指向在相應於順序欄之區段之前上一個被讀取之資料鏈結關係集合之區段所相應之順序欄。反序表中之每一反序欄係用以儲存另一反序欄的共用指標,以分別指向在相應於反序欄之區段之後下一個被讀取之資料鏈結關係集合之區段所相應之反序欄。
另外,資料儲存裝置更包括一控制器用以根據一讀取命令或者一寫入命令,找出包括讀取命令或者寫入命令所指定之頁面之一第一對應關係的一第一資料鏈結關係集合,並且根據預取區域對應表中是否存在相應於第一資料鏈結關係集合的一第一集合指標,判斷第一資料鏈結關係集合是否已被載入預取區域中,其中第一資料鏈結關係集合為資料鏈結關係集合中之一者,第一集合指標為集合指標中之一者,並且第一對應關係為對應關係中之一者。當預取區域對應表中存在相應於第一集合指標時,控制器根據用以儲存第一集合指標的區段對應欄之共用指標,讀取預取區域中所相應之區段,以獲得第一資料鏈結關係集合,並且讀取儲存於隨機存取記憶體中之第一資料鏈結關係集合中之資料以進行寫入命令或者讀取命令。當預取區域對應表中不存在第一集合指標時,控制器判斷預取區域是否具有空白之區段,其中當控制器判斷預取區域之區段具有空白之一第一區段時,控制器自快閃記憶體中之資料鏈結關係表讀取第一資料鏈結關係集合,將第一資料鏈結關係集合載入空白之第一區段。
在另一實施例中,隨機存取記憶體更包括一頭指標以及一尾指標,頭指標為預取區域中最後一個被讀取之區段之共用指標,並且尾指標為預取區域中最久未被讀取之區段之共用指標。當控制器判斷預取區域不具有空白之區段時,控制器根據尾指標判斷預取區域中最久未被讀取之資料鏈結關係集合,以將第一資料鏈結關係集合的資料寫入預取區域中最久未被讀取之資料鏈結關係集合所屬的區段。當控制器判斷預取 區域不具有空白之區段時,控制器根據頭指標判斷預取區域中最後被讀取之資料鏈結關係集合所相應之區段,以更新順序表以及反序表。
本發明亦提供一種資料維護方法,適用於具有一快閃記憶體之一資料儲存裝置,其中快閃記憶體包括複數區塊,每一區塊包括複數頁面,並且每一頁面具有一邏輯位址以及一實體位址。資料維護方法包括:接收一讀取命令或者一寫入命令;根據所接收之讀取命令或者寫入命令,判斷包括讀取命令或者寫入命令所指定之頁面的一第一對應關係之一第一資料鏈結關係集合;根據一預取區域對應表中是否存在相應於第一資料鏈結關係集合的一第一集合指標,判斷第一資料鏈結關係集合是否已被載入一預取區域中,其中預取區域對應表具有複數區段對應欄依序相應於預取區域中之複數區段;當預取區域對應表中不存在第一集合指標時,判斷預取區域中是否具有空白之區段;以及當預取區域之區段具有空白之一第一區段時,執行一載入程序;以及自預取區域讀取第一資料鏈結關係集合中之資料,以執行寫入命令或者讀取命令。
在一實施例中載入程序包括:自快閃記憶體中之一資料鏈結關係表讀取第一資料鏈結關係集合,以將第一資料鏈結關係集合載入空白之第一區段;將相應於第一資料鏈結關係集合之第一集合指標,寫入預取區域對應表中相應於第一區段的區段對應欄。當第一區段是預取區域中第一個被載入的資料時,載入程序更包括:將一頭指標定義為共用指標中第一區段之一第一共用指標;以及將一尾指標定義為共用指標中第一區 段之第一共用指標。當第一區段不是預取區域中第一個被載入的資料時,載入程序更包括:根據一頭指標,獲得在預取區域中最後一個被讀取之資料鏈結關係集合所屬之一第二區段;將一順序表中相應於第二區段之一第二順序欄的共用指標,寫入相應於第一區段之第一順序欄,其中順序表具有複數順序欄依序相應於預取區域中之區段,並且第一順序欄以及第二順序欄為反序欄中之兩者;將一反序表中相應於第一區段之一第一反序欄之共用指標,寫入第二區段所相應之反序欄中之一第二反序欄,其中反序表具有複數反序欄依序相應於預取區域中之區段,並且第一反序欄以及第二反序欄為反序欄中之兩者;將一頭指標定義為共用指標中第一區段之一第一共用指標;以及將一特定值寫入反序欄中相應於第一反序欄中。
在另一實施例中,當預取區域不具有空白之區段時,執行一取代程序,並且取代程序包括:根據一尾指標判斷預取區域中最久未被讀取之資料鏈結關係集合所屬的一第三區段;將第一資料鏈結關係集合的資料寫入第三區段;將相應於第一資料鏈結關係集合之第一集合指標,寫入預取區域對應表中相應於第三區段的區段對應欄;以及根據一頭指標,獲得在預取區域中最後一個被讀取之資料鏈結關係集合所屬之一第四區段;將一順序表中之相應於第四區段之一第四順序欄的共用指標,寫入順序表中相應於第三區段之一第三順序欄,其中順序表具有複數順序欄依序相應於預取區域中之區段,順序欄與所相應之區段具有相同之共用指標,並且第三順序欄以及第四順序欄為順序欄中之兩者;將一反序表中相應於第三區段 之一第三反序欄的共用指標,寫入反序表中相應於第四區段之一第四反序欄,其中反序表具有複數反序欄依序相應於預取區域中之區段,反序欄與所相應之區段具有相同之共用指標,並且第三反序欄以及第四反序欄為順序欄中之兩者;讀取第三反序欄,以獲得反序欄中一第五反序欄之共用指標;將頭指標定義為第三順序欄之一第三共用指標;以及將尾指標定義為第五反序欄之一第五共用指標;在定義尾指標為第五共用指標後,將一特定值寫入第三反序欄以及相應於第五共用指標之一第五順序欄。
又另一實施例中,當預取區域對應表中之一第六區段存在第一集合指標時,執行一更新程序,其中區段依序具有複數共用指標,更新程序更包括:讀取在一反序表中第六區段所相應之一第六反序欄,以獲得在第六區段之後下一個被讀取之一第七區段,其中反序表具有複數反序欄依序相應於預取區域中之區段,反序欄與所相應之區段具有相同之共用指標,並且第六反序欄為反序欄中之一者;在一順序表中相應於第七區段之一第七順序欄中,寫入第六區段所相應之一第六順序欄中所儲存之共用指標,其中順序表具有複數順序欄依序相應於預取區域中之區段,順序欄與所相應之區段具有相同之共用指標,並且第六順序欄以及第七順序欄為順序欄中之兩者;以及根據一尾指標判斷預取區域中最久未被讀取之資料鏈結關係集合所屬的區段是否為第六區段。當預取區域中最久未被讀取之資料鏈結關係集合所屬的區段為第六區段時,更新程序更包括:根據一頭指標,獲得在預取區域中最後一個被讀取之資料 鏈結關係集合所屬之一第八區段;在順序欄中相應於第六區段之第六順序欄中,寫入順序表中第八區段所相應之一第八順序欄的共用指標;將反序表中相應於第六區段之第六反序欄的共用指標,寫入反序表中相應於第八區段之一第八反序欄;將頭指標定義為共用指標中第六順序欄之一第六共用指標;將尾指標定義為共用指標中相應於第七區段之一第七共用指標;以及將一特定值寫入第六反序欄。當預取區域中最久未被讀取之資料鏈結關係集合所屬的區段為與第六區段相異之一第十區段時,更新程序更包括:根據一頭指標,獲得在預取區域中最後一個被讀取之資料鏈結關係集合所屬之一第八區段;讀取第六順序欄,獲得相應於在第六區段之前一個被寫入之一第九區段之一第九共用指標;將第六反序欄中所儲存之共用指標,寫入反敘欄中相應於第九共用指標之一第九反序欄;在第六反序欄中所儲存之共用指標已被寫入第九順序欄之後,在順序欄中相應於第六區段之第六順序欄中,寫入順序表中第八區段所相應之一第八順序欄的共用指標;將一反序表中相應於第六區段之一第六反序欄的共用指標,寫入反序表中相應於第八區段之一第八反序欄;將頭指標定義為共用指標中第六順序欄之一第六共用指標;以及將一特定值寫入第六反序欄。
本發明另提供一種資料維護方法,適用於一資料儲存裝置,其中快閃記憶體包括複數區塊,每一區塊包括複數頁面,每一頁面具有一邏輯位址以及一實體位址。資料維護方法包括:在快閃記憶體被上電時,根據至少一讀取命令或者至少一寫入命令,在一隨機記憶體中之一預取區域中,載入一資 料鏈結關係表中之複數資料鏈結關係集合的一部份,其中每一資料鏈結關係集合相應於一集合指標;建立一預取區域對應表,以紀錄相應於預取區域中之資料鏈結關係集合的集合指標;建立一反序表,以紀錄資料鏈結關係集合自預取區域中被讀取之反向的順序;以及建立一順序表,以紀錄資料鏈結關係集合自預取區域中被讀取之順序。
100‧‧‧電子系統
120‧‧‧主機
140‧‧‧資料儲存裝置
160‧‧‧控制器
162‧‧‧運算單元
164‧‧‧永久記憶體
166‧‧‧隨機存取記憶體
180‧‧‧快閃記憶體
TB1‧‧‧資料鏈結關係表
MR_0~MR_MX‧‧‧對應關係
TS_0~TS_M‧‧‧資料鏈結關係集合
CIX_0~CIX_N‧‧‧共用指標
CA‧‧‧預取區域
S_0~S_N‧‧‧區段
SE_TB‧‧‧順序表
SE_0~SE_N‧‧‧順序欄
SMR_TB‧‧‧預取區域對應表
SMR_0~SMR_N‧‧‧區段對應欄
RSE_TB‧‧‧反序表
RSE_0~RSE_N‧‧‧反序欄
HIX‧‧‧頭指標
TIX‧‧‧尾指標
S900~S902、S1000~S1090‧‧‧步驟
第1圖為本發明所提供之一電子系統之一種實施例的方塊圖。
第2圖為本發明所提供之一資料鏈結關係表之一種實施例的方塊圖。
第3圖為本發明所提供之一隨機存取記憶體中之複數表之一種實施例的示意圖。
第4圖為本發明所提供之一隨機存取記憶體中之複數表之另一種實施例的示意圖。
第5圖為本發明所提供之一隨機存取記憶體中之複數表之另一種實施例的示意圖。
第6圖為本發明所提供之一隨機存取記憶體中之複數表之另一種實施例的示意圖。
第7A圖為本發明所提供之一隨機存取記憶體中之複數表之另一種實施例的示意圖。
第7B圖為本發明所提供之一隨機存取記憶體中之複數表之另一種實施例的示意圖。
第8圖為本發明所提供之一隨機存取記憶體中之複數表之另一種實施例的示意圖。
第9圖為本發明所提供之一資料維護方法之一種實施例的流程圖。
第10A~10F圖為本發明所提供之一資料維護方法之另一種實施例的流程圖。
以下將詳細討論本發明各種實施例之裝置及使用方法。然而值得注意的是,本發明所提供之許多可行的發明概念可實施在各種特定範圍中。這些特定實施例僅用於舉例說明本發明之裝置及使用方法,但非用於限定本發明之範圍。
第1圖為本發明所提供之一電子系統之一種實施例的方塊圖。電子系統100包括一主機120以及一資料儲存裝置140。資料儲存裝置140包括一快閃記憶體180以及一控制器160,且可根據主機120所下達的命令操作。控制器160包括一運算單元162、一永久記憶體(如,唯讀記憶體ROM)164以及隨機存取記憶體(RAM)166。永久記憶體164與所載之程式碼、資料組成韌體(firmware),由運算單元162執行,使控制器160基於該韌體控制該快閃記憶體180。隨機存取記憶體(RAM)166用以載入程式碼與參數以提供控制器160根據所載入的程式碼與參數動作。快閃記憶體180包括複數區塊,每一區塊包括複數頁面,每一頁面具有一邏輯位址以及一實體位址,其中實體位址為頁面在快閃記憶體180中固定的位址,邏輯位址為主機120以及控制器160給頁面定義之位址。另外,快閃記憶體180中更 包括可由控制器160動態更新之一資料鏈結關係表TB1,其中資料鏈結關係表TB1用以紀錄所有頁面之邏輯位址以及實體位址的複數對應關係。值得注意的是,快閃記憶體180以區塊為最小單位進行抹除,並且頁面為最小單位進行寫入。
第2圖為本發明所提供之一資料鏈結關係表之一種實施例的方塊圖。如第2圖所示,資料鏈結關係表TB1中包括所有頁面之邏輯位址以及實體位址的對應關係MR_P0~MR_PMX,其中每一對應關係MR_P0~MR_PMX分別對應到快閃記憶體180中之一頁面,並且對應關係MR_P0~MR_PMX中之任兩者不對應到同一個頁面。另外,資料鏈結關係表TB1被分割為複數資料鏈結關係集合TS_0~TS_M,每一資料鏈結關係集合TS_0~TS_M具有多於一個對應關係。舉例而言,資料鏈結關係集合TS_0具有對應關係MR_P0~MR_PX、資料鏈結關係集合TS_1具有對應關係MR_P0~MR_P2X,依此類推。在本實施例中,每一資料鏈結關係集合TS_0~TS_M具有X+1個對應關係,但本發明不限於此。在其他實施例中,每一資料鏈結關係集合可具有不同數量之對應關係,並且資料鏈結關係集合所具有之鏈結關係的數量可由開發者自行決定或者由控制器160動態調整。值得注意的是,每一資料鏈結關係集合TS_0~TS_M相應於一集合指標。在一實施例中,集合指標可為0xAA、0xBB、0xCC、0x128等16進制數值。
當資料儲存裝置140被上電後,控制器160可將資料鏈結關係表TB1載入隨機存取記憶體166中之一預取區域,以 進行讀取以及更新。然而,隨著快閃記憶體180之記憶體容量的增加,資料鏈結關係表TB1也越來越大。在隨機存取記憶體166中所規劃的預取區域不夠儲存整個資料鏈結關係表TB1的情況下,控制器160則根據目前所需的資料將資料鏈結關係表TB1中之部分資料鏈結關係集合載入預取區域中。詳細而言,當預取區域CA還有空間可以載入資料鏈結關係集合TS_0~TS_M中之至少一者時,控制器160進行一載入程序,以將所需之資料鏈結關係集合載入預取區域的空白處。當預取區域已被寫滿並且需要載入新的資料鏈結關係集合TS_0~TS_M時,控制器160進行一取代程序,以找出最久未被讀取之資料鏈結關係集合,以將新的資料鏈結關係集合覆蓋在最久未被讀取之資料鏈結關係集合上。當控制器160所需要的資料鏈結關係集合已存在在預取區域中時,控制器160則進行一更新程序,以更新最新的讀取狀態。
第3圖為本發明所提供之一隨機存取記憶體中之表之一種實施例的方塊圖。如第3圖所示,當資料儲存裝置140被上電後,控制器160在隨機存取記憶體166中建立空白之一預取區域對應表SMR_TB、一反序表RSE_TB以及一順序表SE_TB,以記錄預取區域CA中資料的狀態。
預取區域CA具有複數區段S_0~S_N用以儲存資料鏈結關係表TB1中部分之資料鏈結關係集合,其中一個區段用以儲存一個資料鏈結關係集合。換言之,區段S_0~S_N的數量小於資料鏈結關係集合TS_0~TS_M之數量,也就是N<M。
預取區域對應表SMR_TB具有複數區段對應欄 SMR_0~SMR_N用以紀錄相應於預取區域CA中之資料鏈結關係集合TS_0~TS_M的集合指標,其中預取區域對應表SMR_TB中之區段對應欄SMR_0~SMR_N依序相應於預取區域CA中之區段S_0~S_N。值得注意的是,預取區域對應表SMR_TB中每一區段對應欄SMR_0~SMR_N的初始值皆為一特定值。在本實施例中,特定值為0xFFFF,但本發明不限於此。另外,資料鏈結關係集合TS_0~TS_M的集合指標皆不等於特定值。
順序表SE_TB用以紀錄資料鏈結關係集合TS_0~TS_M自預取區域CA中被讀取之順序,其中順序表SE_TB具有複數順序欄SE_0~SE_N依序相應於預取區域CA中之區段S_0~S_N。順序表SE_TB中之每一順序欄SE_0~SE_N係用以儲存另一順序欄的共用指標,以分別指向在相應於順序欄之區段之前上一個被讀取之資料鏈結關係集合之區段所相應之順序欄。值得注意的是,順序表SE_TB中每一順序欄SE_0~SE_N的初始值皆為一特定值。在本實施例中,特定值為0xFFFF,但本發明不限於此。
反序表RSE_TB用以紀錄資料鏈結關係集合TS_0~TS_M自預取區域CA中被讀取之反向的順序,其中反序表RSE_TB具有複數反序欄RSE_0~RSE_N依序相應於預取區域CA中之區段S_0~S_N。反序表RSE_TB中之每一反序欄RSE_0~RSE_N係用以儲存另一反序欄的共用指標,以分別指向在相應於反序欄之區段之後下一個被讀取之資料鏈結關係集合之區段所相應之反序欄。值得注意的是,反序表RSE_TB中每一反序欄RSE_0~RSE_N的初始值皆為一特定值。在本實施例 中,特定值為0xFFFF,但本發明不限於此。
值得注意的是,在一實施例中,區段S_0~S_N依序具有特定之共用指標CIX_0~CIX_N。區段對應欄SMR_0~SMR_N與其相應之區段S_0~S_N具有相同之共用指標CIX_0~CIX_N。順序欄SE_0~SE_N與其相應之區段S_0~S_N具有相同之共用指標CIX_0~CIX_N。反序欄RSE_0~RSE_N與其相應之區段S_0~S_N具有相同之共用指標CIX_0~CIX_N。詳細而言,區段S_0、順序欄SE_0、區段對應欄SMR_0以及反序欄RSE_0之共用指標皆為CIX_0。區段S_1、順序欄SE_1、區段對應欄SMR_1以及反序欄RSE_1之共用指標皆為CIX_1。區段S_2、順序欄SE_2、區段對應欄SMR_2以及反序欄RSE_2之共用指標皆為CIX_2,依此類推。值得注意的是,每一共用指標CIX_0~CIX_N皆不等於特定值。在一實施例中,共用指標CIX_0~CIX_N依序為0x0、0x1、0x2、0x3等十六進位數值,但本發明不限於此。
綜上所述,控制器160建立預取區域對應表SMR_TB,以紀錄相應於預取區域CA中之資料鏈結關係集合TS_0~TS_M的集合指標。控制器160建立反序表RSE_TB,以紀錄資料鏈結關係集合TS_0~TS_M自預取區域CA中被讀取之反向的順序。控制器160建立順序表SE_TB,以紀錄資料鏈結關係集合TS_0~TS_M自預取區域CA中被讀取之順序。在一實施例中,控制器160更用以在隨機存取記憶體166中建立一頭指標HIX以及一尾指標TIX,其中頭指標HIX以及尾指標TIX也可以建立於其他記憶體或者電路中,本發明不限於此。頭指標HIX 為預取區域CA中最後一個被讀取之區段S_0~S_N之共用指標CIX_0~CIX_N,以指向預取區域CA中最後一個被讀取之區段S_0~S_N。尾指標TIX為預取區域CA中最久未被讀取之區段S_0~S_N之共用指標CIX_0~CIX_N,以指向預取區域CA中最久未被讀取之區段S_0~S_N。值得注意的是,由於彼此相應之區段、順序欄、區段對應欄以及反序欄具有相同之共用指標,故頭指標HIX以及尾指標TIX同時也指向相應之順序欄、區段對應欄以及反序欄。在本實施例中,控制器160可根據尾指標TIX,選擇預取區域CA中之複數區段S_0~S_N中之一者。換言之,控制器160可根據尾指標TIX選擇預取區域CA中最久未被讀取之區段(最久未被讀取之資料鏈結關係集合),以將新的資料鏈結關係集合載入所選擇之區段。另外,控制器160可根據一頭指標HIX、反序表RSE_TB中之資料以及順序表SE_TB中之資料,更新反序表RSE_TB以及順序表SE_TB。接著,以下段落將自第3圖至第8圖依序說明預取區域CA、預取區域對應表SMR_TB、反序表RSE_TB以及順序表SE_TB之間的關係。
在第3圖初始狀態的實施例中,當控制器160接收到一讀取命令或者一寫入命令時,控制器160根據所接收之讀取命令或者寫入命令,找出包括讀取命令或者寫入命令所指定之頁面之一第一對應關係的一第一資料鏈結關係集合。舉例而言,讀取命令或者寫入命令指示之頁面的邏輯位址與實體位址的對應關係是儲存於資料鏈結關係集合TS_2,控制器160則根據所接收之讀取命令或者寫入命令得知所指定之頁面,並找到對應的資料鏈結關係集合TS_2。接著,控制器160根據預取區 域對應表SMR_TB中是否存在相應於第一資料鏈結關係集合TS_2的集合指標,判斷資料鏈結關係集合TS_2是否已被載入預取區域CA。舉例而言,資料鏈結關係集合TS_2的集合指標為0xAA。如第3圖所示,若預取區域CA皆未寫入任何資料鏈結關係集合時,預取區域對應表SMR_TB中所有區段對應欄SMR_0~SMR_N皆為0xFFFF。因此,在本實施例中,控制器160判斷資料鏈結關係集合TS_2的集合指標0xAA不存在於預取區域對應表SMR_TB中。換言之,控制器160根據資料鏈結關係集合TS_2的集合指標0xAA不存在於預取區域對應表SMR_TB中,判斷預取區域CA中不具有資料鏈結關係集合TS_2。接著,控制器160判斷預取區域CA是否具有空白之區段S_0~S_N。如第3圖所示,預取區域CA之區段S_0~S_N皆是空白的,控制器160選擇一空白之區段。在本實施例中,控制器160從最底部的區段開始選擇,故控制器160選擇區段S_N。接著,控制器160自快閃記憶體180中之資料鏈結關係表TB1讀取資料鏈結關係集合TS_2,以將資料鏈結關係集合TS_2載入所選擇之空白的區段S_N。接著,控制器160更新預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX,以記錄目前預取區域CA的狀態。如第4圖所示,控制器160將資料鏈結關係集合TS_2的集合指標0xAA寫入區段S_N所相應之區段對應欄SMR_N,將頭指標HIX以及尾指標TIX同時定義為區段S_N之共用指標CIX_N。值得注意的是,在本實施例中,順序表SE_TB以及反序表RSE_TB中相應於區段S_N之順序欄SE_N以及反序欄RSE_N維持特定值0xFFFF。最後,控制器160 讀取儲存於預取區域CA之資料鏈結關係集合TS_2以執行所接收到之寫入命令以及讀取命令。
接著,在第4圖的實施例中,當控制器160接收到一讀取命令或者一寫入命令時,控制器160同樣地根據所接收之讀取命令或者寫入命令,找出包括讀取命令或者寫入命令所指定之頁面之一對應關係的一資料鏈結關係集合。舉例而言,在本實施例中,讀取命令或者寫入命令所指定之頁面之一對應關係的一資料鏈結關係集合為TS_8。接著,控制器160根據預取區域對應表SMR_TB中是否存在相應於資料鏈結關係集合TS_8的集合指標,判斷資料鏈結關係集合TS_8是否已被載入預取區域CA。舉例而言,資料鏈結關係集合TS_8的集合指標為0xBB。如第4圖所示,預取區域CA只被寫入了資料鏈結關係集合TS_2,預取區域對應表SMR_TB中只有區段對應欄SMR_N為0xAA,其他皆為0xFFFF。因此,在本實施例中,控制器160判斷資料鏈結關係集合TS_8的集合指標0xBB不存在於預取區域對應表SMR_TB中。換言之,控制器160根據資料鏈結關係集合TS_8的集合指標0xBB不存在於預取區域對應表SMR_TB中,判斷預取區域CA中不具有資料鏈結關係集合TS_8。接著,控制器160判斷預取區域CA是否具有空白之區段。如第4圖所示,預取區域CA之區段S_0~S_N-1皆是空白的,控制器160選擇一空白之區段。在本實施例中,控制器160選擇區段S_N-1。接著,控制器160自快閃記憶體180中之資料鏈結關係表TB1讀取資料鏈結關係集合TS_8,以將資料鏈結關係集合TS_8載入所選擇之空白的區段S_N-1。接著,控制器160更新預取區域對應表 SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX,以記錄目前預取區域CA的狀態。如第4圖所示,控制器160根據頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合TS_2所屬之一區段S_N,並且將區段S_N所相應之順序欄SE_N的共用指標CIX_N,寫入相應於目前之區段S_N-1的順序欄SE_N-1。接著,控制器160將相應於目前之區段S_N-1的反序欄RSE_N-1之共用指標CIX_N-1,寫入區段S_N所相應之反序欄RSE_N。接著,控制器160將頭指標HIX定義為目前區段S_N-1之共用指標CIX_N-1,並且將尾指標TIX維持在共用指標CIX_N。更新後之預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX如第5圖所示。最後,控制器160讀取儲存於預取區域CA之資料鏈結關係集合TS_8以執行所接收到之寫入命令以及讀取命令。
假設控制器160陸續接收到相應於不同之資料鏈結關係集合的寫入命令以及讀取命令,控制器160則重複上述第4圖轉換到第5圖的步驟,將資料鏈結關係集合依序寫入S_N-2~S_0中,如第6圖所示。換言之,控制器160重複執行載入程序,並且寫滿所有預取區域CA。值得注意的是,在本實施例中,由於順序表SE_TB以及反序表RSE_TB的初始值即為特定值(0xFFFF),因此在載入程序中不需要再將特定值寫入目前區段所相應之反序欄以及預取區域CA中最久未被讀取之區段所相應之順序欄中。在其他實施例中,若順序表SE_TB以及反序表RSE_TB的與所設定之特定值不同,控制器160則需要在載入程序的最後一個步驟裡將特定值寫入目前區段所相應之 反序欄以及預取區域CA中最久未被讀取之區段所相應之順序欄中。
接著,以下為更新程序的說明。在第6圖的實施例中,當控制器160接收到一讀取命令或者一寫入命令時,控制器160同樣地根據所接收之讀取命令或者寫入命令,找出包括讀取命令或者寫入命令所指定之頁面之一對應關係的一資料鏈結關係集合。舉例而言,在本實施例中,讀取命令或者寫入命令所指定之頁面之一對應關係的一資料鏈結關係集合為TS_0。接著,控制器160根據預取區域對應表SMR_TB中是否存在相應於資料鏈結關係集合TS_0的集合指標0x5,判斷資料鏈結關係集合TS_0是否已被載入預取區域CA。在本實施例中,如第6圖所示,資料鏈結關係集合TS_0之集合指標0x5已存在於預取區域對應表SMR_TB中之區域對應欄SMR_2之中。因此,在本實施例中,控制器160判斷資料鏈結關係集合TS_0的集合指標0x5存在於預取區域對應表SMR_TB中。換言之,控制器160根據資料鏈結關係集合TS_0的集合指標0x5存在於預取區域對應表SMR_TB中,判斷預取區域CA中已具有資料鏈結關係集合TS_0的資料。接著,控制器160更新預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX,以記錄目前預取區域CA的狀態。如第6圖所示,控制器160讀取目前區段S_2之順序欄SE_2,以獲得相應於在目前區段S_2之前一個被寫入之區段為區段S_3。接著,控制器160將相應於目前區段S_2之反序欄RSE_2中所儲存之共用指標CIX_1,寫入相應於區段S_3之反序欄RSE_3。換言之,控制器 160將原本指向反序欄RSE_2之反序欄RSE_3,改指向反序欄RSE_1。接著,控制器160根據目前區段S_2之共用指標CIX_2,讀取反序表RSE_TB中相應於目前區段S_2之反序欄RSE_2中的值,並且根據反序欄RSE_2中之共用指標CIX_1找到在目前區段S_2之後下一個被讀取之區段S_1之共用指標CIX_1。接著,控制器160在相應於區段S_1之順序欄SE_1中寫入目前區段S_2所相應之順序欄SE_2中所儲存之共用指標CIX_3。換言之,控制器160將原本指向順序欄SE_2之順序欄SE_1,改指向順序欄SE_3。接著,控制器160根據頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合TS_1所屬之一區段S_0,並且將區段S_0所相應之順序欄SE_0的共用指標CIX_0,寫入相應於目前之區段S_2的順序欄SE_2。接著,控制器160將相應於目前之區段S_2的反序欄RSE_2之共用指標CIX_2,寫入區段S_0所相應之反序欄RSE_0。最後控制器160,將頭指標HIX定義為目前區段S_2之共用指標CIX_2,將尾指標TIX維持在共用指標CIX_N,並且將一特定值寫入目前區段S_2所相應之反序欄RSE_2中。更新後之預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX如第7A圖所示。接著,控制器160根據用以儲存集合指標0x5的區段對應欄SMR_2之共用指標CIX_2,讀取預取區域CA中所相應之區段S_2,以獲得資料鏈結關係集合TS_0。換言之,控制器160讀取儲存於預取區域CA之資料鏈結關係集合TS_0以執行所接收到之寫入命令以及讀取命令。
值得注意的是,在更新程序的另一個實施例中, 當寫入命令以及讀取命令所相應之資料鏈結關係集合為預取區域CA中最久為被讀取之資料鏈結關係集合時,控制器160的動作則與上述第7A圖所示之操作不同。舉例而言,在本實施例中,讀取命令或者寫入命令所指定之頁面之一對應關係的一資料鏈結關係集合為TS_2。接著,控制器160根據預取區域對應表SMR_TB中是否存在相應於資料鏈結關係集合TS_2的集合指標0xAA,判斷資料鏈結關係集合TS_2是否已被載入預取區域CA。在本實施例中,如第6圖所示,資料鏈結關係集合TS_2之集合指標0xAA已存在於預取區域對應表SMR_TB中之區域對應欄SMR_N之中。因此,在本實施例中,控制器160判斷資料鏈結關係集合TS_2的集合指標0xAA存在於預取區域對應表SMR_TB中。換言之,控制器160根據資料鏈結關係集合TS_2的集合指標0xAA存在於預取區域對應表SMR_TB中,判斷預取區域CA中已具有資料鏈結關係集合TS_2的資料。值得注意的是,在本實施例中,由第6圖之尾指標TIX可知,資料鏈結關係集合為TS_2為預取區域CA中最久為被讀取之資料鏈結關係集合。接著,控制器160更新預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX,以記錄目前預取區域CA的狀態。如第6圖所示,控制器160根據目前區段S_N之共用指標CIX_N,讀取反序表RSE_TB中相應於目前區段S_N之反序欄RSE_N中的值,並且根據反序欄RSE_N中之共用指標CIX_N-1找到在目前區段S_N之後下一個被讀取之區段S_N-1之共用指標CIX_N-1。接著,控制器160在相應於區段S_N-1之順序欄SE_N-1中寫入目前區段S_N所相應之順序欄 SE_N中所儲存之值,其中由於目前區段S_N係為最久未被讀取之區段,故其順序欄SE_N中所儲存之值為特定值。接著,控制器160根據頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合TS_1所屬之一區段S_0,並且將區段S_0所相應之順序欄SE_0的共用指標CIX_0,寫入相應於目前之區段S_N的順序欄SE_N。接著,控制器160將相應於目前之區段S_N的反序欄RSE_N之共用指標CIX_N,寫入區段S_0所相應之反序欄RSE_0。最後控制器160,將頭指標HIX定義為目前區段S_N之共用指標CIX_N,將尾指標TIX定義為在目前區段S_N之後下一個被讀取之區段S_N-1之共用指標CIX_N-1,並且將特定值寫入目前頭指標所指之共用指標CIX_N所相應的反序欄RSE_N中。更新後之預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX如第7B圖所示。接著,控制器160根據用以儲存集合指標0xAA的區段對應欄SMR_N之共用指標CIX_N,讀取預取區域CA中所相應之區段S_N,以獲得資料鏈結關係集合TS_2。換言之,控制器160讀取儲存於預取區域CA之資料鏈結關係集合TS_2以執行所接收到之寫入命令以及讀取命令。
接著,以下為取代程序的說明。在第7A圖的實施例中,當控制器160接收到一讀取命令或者一寫入命令時,控制器160同樣地根據所接收之讀取命令或者寫入命令,找出包括讀取命令或者寫入命令所指定之頁面之一對應關係的一資料鏈結關係集合。舉例而言,在本實施例中,讀取命令或者寫入命令所指定之頁面之一對應關係的一資料鏈結關係集合為 TS_77。接著,控制器160根據預取區域對應表SMR_TB中是否存在相應於資料鏈結關係集合TS_77的集合指標0x333,判斷資料鏈結關係集合TS_77是否已被載入預取區域CA。在本實施例中,假設預取區域CA並沒有資料鏈結關係集合TS_77之資料,故集合指標0x333也不存在於預取區域對應表SMR_TB中之任何一個區域對應欄SMR_0~SMR_N之中。控制器160根據資料鏈結關係集合TS_77的集合指標0x333不存在於預取區域對應表SMR_TB中,判斷預取區域CA中不具有資料鏈結關係集合TS_77。接著,控制器160判斷預取區域CA是否具有空白之區段。如第7A圖所示,預取區域CA之區段S_0~S_N皆不是空白的。接著,控制器160根據尾指標TIX判斷預取區域CA中最久未被讀取之資料鏈結關係集合,以將資料鏈結關係集合TS_77的資料寫入預取區域CA中最久未被讀取之資料鏈結關係集合所屬的區段。如第7A圖所示,控制器160根據尾指標TIX中之共用指標CIX_N,判斷預取區域CA中最久未被讀取之資料鏈結關係集合為資料鏈結關係集合TS_2,並且根據共用指標CIX_N獲得具有最久未被讀取之的區段為區段S_N。接著,控制器160自快閃記憶體180中之資料鏈結關係表TB1讀取資料鏈結關係集合TS_77,以將資料鏈結關係集合TS_77載入所獲得之區段S_N,以取代原本很久未被讀取之資料鏈結關係集合TS_2。接著,控制器160更新預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX,以記錄目前預取區域CA的狀態。首先,控制器160將相應於資料鏈結關係集合TS_77之集合指標0x333,寫入預取區域對應表SMR_TB中相應 於區段S_N的區段對應欄SMR_N。如第7A圖所示,控制器160根據頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合TS_0所屬之一區段S_2,並且將區段S_2所相應之順序欄SE_2的共用指標CIX_2,寫入相應於目前之區段S_N的順序欄SE_N。接著,控制器160將相應於目前之區段S_N的反序欄RSE_N之共用指標CIX_N,寫入區段S_2所相應之反序欄RSE_2。接著,控制器160讀取目前之區段S_N的反序欄RSE_N,以獲得在目前之區段S_N之後下一個被讀取之區段S_N-1的共用指標CIX_N-1。接著,控制器160將頭指標HIX定義為目前區段S_N之共用指標CIX_N,並且將尾指標TIX定義為在目前之區段S_N之後下一個被讀取之區段S_N-1的共用指標CIX_N-1。最後,控制器160將特定值寫入在目前之區段S_N之後下一個被讀取之區段S_N-1所相應的順序欄SE_N-1中,以及將特定值寫入相應於目前區段S_N之反序欄RSE_N中。更新後之預取區域對應表SMR_TB、順序表SE_TB、反序表RSE_TB、頭指標HIX以及尾指標TIX如第8圖所示。最後,控制器160讀取儲存於預取區域CA之資料鏈結關係集合TS_8以執行所接收到之寫入命令以及讀取命令。
第9圖為本發明所提供之一資料維護方法之一種實施例的流程圖。第9圖所示之資料維護方法適用於第1圖所示之資料儲存裝置140。流程開始於步驟S900。
在步驟S900中,在快閃記憶體160被上電後,控制器160根據所接收之至少一讀取命令或者至少一寫入命令,在隨機記憶體166中之一預取區域CA中,載入一資料鏈結關係表 TB1中之複數資料鏈結關係集合TS_0~TS_N的一部份。
接著,在步驟S902中,控制器160根據所載入之資料鏈結關係表TB1的被讀取的順序,在隨機記憶體166中建立一預取區域對應表SMR_TB、一反序表RSE_TB以及一順序表SE_TB。詳細而言,控制器160在隨機記憶體166中建立預取區域對應表SMR_TB,以紀錄相應於預取區域CA中之資料鏈結關係集合的集合指標。控制器160在隨機記憶體166中建立反序表RSE_TB,以紀錄在預取區域CA中之資料鏈結關係集合自預取區域CA中被讀取之反向的順序。控制器160在隨機記憶體166中建立順序表SE_TB,以紀錄在預取區域CA中之資料鏈結關係集合自預取區域CA中被讀取之順序。值得注意的是,在步驟S902中所述之被讀取的順序係指資料鏈結關係表TB1自預取區域CA中被控制器160讀取以執行寫入命令以及讀取命令之順序。另外,在另一實施立中,控制器160亦可根據所載入之資料鏈結關係表TB1的被讀取的順序,設置一頭指標HIX以及一尾指標TIX。當預取區域CA已被寫滿並且需要載入新的資料鏈結關係集合時,根據尾指標TIX,選擇預取區域CA中之區段S_0~S_N中之一者,以將新的資料鏈結關係集合載入所選擇之區段。在新的上述資料鏈結關係集合載入所選擇之上述區段後,控制器160可根據頭指標、反序表中之資料以及順序表SE_TB中之資料,更新上序表以及順序表。
第10圖為本發明所提供之一資料維護方法之一種實施例的流程圖。第10圖所示之資料維護方法適用於第1圖所示之資料儲存裝置140。流程開始於步驟S1000。
在步驟S1000中,控制器160接收一讀取命令或者一寫入命令。讀取命令以及寫入命令係用以對快閃記憶體180中之特定的頁面進行讀取或者寫入,讀取命令以及寫入命令可為自主機120所接收之命令或者由控制器160本身維護資料所需要的讀取以及寫入動作所產生的寫入命令以及讀取命令。
接著,在步驟S1002中,控制器160根據在步驟S1000中所接收之讀取命令或者寫入命令,判斷包括讀取命令或者寫入命令所指定之頁面的一第一對應關係之一第一資料鏈結關係集合。舉例而言,讀取命令或者寫入命令指示之頁面的邏輯位址與實體位址的對應關係是儲存於資料鏈結關係集合TS_2,控制器160則根據所接收之讀取命令或者寫入命令得知所指定之頁面,並找到對應的資料鏈結關係集合TS_2。
接著,在步驟S1004中,控制器160根據預取區域對應表SMR_TB中是否存在相應於第一資料鏈結關係集合的一第一集合指標,判斷第一資料鏈結關係集合是否已被載入預取區域CA中。當第一資料鏈結關係集合未被載入預取區域CA時,流程進行至步驟S1006;否則,流程進行至步驟S1060,以進行一更新程序。
在步驟S1006中,控制器160判斷預取區域CA中是否具有空白之區段。值得注意的是,在本實施例中,空白的區段表示在預取區域CA中尚未被載入任何資料鏈結關係集合的區段。當預取區域CA中具有空白之區段時,流程進行至步驟S1008以執行一載入程序;否則,流程進行至步驟S1030,以執行一取代程序。
在步驟S1008中,控制器160自快閃記憶體180中之一資料鏈結關係表TB1讀取第一資料鏈結關係集合,以將第一資料鏈結關係集合載入所選擇之空白的一第一區段。舉例而言,如第3圖所示,預取區域CA之區段S_0~S_N皆是空白的,控制器160選擇一空白之區段。在本實施例中,控制器160從最底部的區段開始選擇,故控制器160選擇區段S_N。接著,控制器160自快閃記憶體180中之資料鏈結關係表TB1讀取資料鏈結關係集合TS_2,以將資料鏈結關係集合TS_2載入所選擇之空白的區段S_N。在另一實施例中,如第4圖所示,預取區域CA之區段S_0~S_N-1皆是空白的,控制器160則自區段S_0~S_N-1中選擇一空白之區段。在本實施例中,由於控制器160係用以從最底部的區段開始選擇,故控制器160選擇區段S_N,控制器160選擇區段S_N-1,但本發明不限於此。接著,控制器160自快閃記憶體180中之資料鏈結關係表TB1讀取資料鏈結關係集合TS_8,以將資料鏈結關係集合TS_8載入所選擇之空白的區段S_N-1。
接著,在步驟S1010中,控制器160將相應於第一資料鏈結關係集合之第一集合指標,寫入預取區域對應表SMR_TB中相應於第一區段的區段對應欄。舉例而言,在第4圖之實施例中,控制器160係將集合指標為0xAA的資料鏈結關係集合TS_2寫入區段S_N。因此,控制器160則在步驟S1010中將資料鏈結關係集合TS_2的集合指標0xAA寫入區段S_N所相應之區段對應欄SMR_N。在第5圖之實施例中,控制器160係將集合指標為0xBB的資料鏈結關係集合TS_8寫入區段S_N-1。因 此,控制器160則在步驟S1010中將資料鏈結關係集合TS_8的集合指標0xBB寫入區段S_N-1所相應之區段對應欄SMR_N-1。
接著,在步驟S1012中,控制器160判斷第一區段是否為預取區域CA中第一個被載入的資料鏈結關係集合。換言之,控制器160判斷預取區域CA中之其他區段是否皆為空白。當預取區域CA中第一個被載入的資料鏈結關係集合時,流程進行至步驟S1014;否則,流程進行至步驟S1018。值得注意的是,控制器160亦可在步驟S1006中判斷是否有空白之區段的過程中進行判斷第一區段是否為預取區域CA中第一個被載入的資料鏈結關係集合的步驟。
在步驟S1014中,控制器160將一頭指標HIX以及一尾指標TIX同時定義為第一區之一第一共用指標。舉例而言,在第4圖的實施例中,資料鏈結關係集合TS_2係第一個被寫入預取區域CA的資料鏈結關係集合,其中資料鏈結關係集合TS_2係被寫入區段S_N。因此,在步驟S1014中,控制器160將將頭指標HIX以及尾指標TIX同時定義為區段S_N之共用指標CIX_N。接著,流程進行至步驟S1090。
在步驟S1018中,控制器160根據頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合所屬之一第二區段。值得注意的是,在本實施例中,預取區域CA最後一個被讀取之資料鏈結關係集合指的是,目前之預取區域CA中最後一個被控制器160自預取區域CA中讀取以進行所接收之讀取命令或者寫入命令之資料鏈結關係集合。
接著,在步驟S1020中,控制器160將順序表SE_TB 中相應於第二區段所相應之一第二順序欄的共用指標,寫入相應於第一區段的第一順序欄。舉例而言,在第五圖的實施例中,資料鏈結關係集合TS_8不係第一個被寫入預取區域CA的資料鏈結關係集合,其中資料鏈結關係集合TS_8係被寫入區段S_N-1(第一區段)。在更新隨機存取記憶體166中之表前,控制器160在步驟S1018中,根據目前頭指標HIX(如第4圖所示),獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合TS_2所屬之一區段S_N(第二區段)。接著,在步驟S1020中,控制器160將區段S_N(第二區段)所相應之順序欄SE_N(第二順序欄)的共用指標CIX_N,寫入相應於目前之區段S_N-1(第一區段)的順序欄SE_N-1(第一順序爛)。
接著,在步驟S1022中,控制器160將反序表RSE_TB中相應於第一區段之第一反序欄的共用指標,寫入第二區段所相應之一第二反序欄。舉例而言,在第五圖的實施例中,控制器160在步驟S1022中將相應於目前之區段S_N-1(第一區段)的反序欄RSE_N-1(第一反序欄)之共用指標CIX_N-1,寫入區段S_N(第二區段)所相應之反序欄RSE_N中。
接著,在步驟S1024中,控制器160將頭指標HIX定義為第一區段之一第一共用指標。舉例而言,在第五圖的實施例中,控制器160在步驟S1024中,將頭指標HIX定義為目前區段S_N-1(第一區段)之共用指標CIX_N-1(第一共用指標),並且將尾指標TIX維持在共用指標CIX_N(第二共用指標)。接著,流程進行至步驟S1090。
在步驟S1030中,控制器160根據尾指標TIX判斷預 取區域CA中最久未被讀取之資料鏈結關係集合所屬的一第三區段。值得注意的是,在本實施例中,預取區域CA中最久未被讀取之資料鏈結關係集合指的是,目前之預取區域CA中最久未被控制器160自預取區域CA中讀取以進行所接收之讀取命令或者寫入命令之資料鏈結關係集合。
接著,在步驟S1032中,控制器160將第一資料鏈結關係集合的資料寫入第三區段。舉例而言,在第8圖之實施例中,讀取命令或者寫入命令所指定之頁面之一對應關係包括於資料鏈結關係集合TS_77(第一資料鏈結關係集合)。控制器160在步驟S1004中已判斷預取區域對應表SMR_TB中不存在相應於資料鏈結關係集合TS_77的集合指標0x333,並且控制器160在步驟S1006中已判斷預取區域CA中已不具有空白之區段。因此,在步驟S1030中,控制器160根據更動前之第7A圖所示之尾指標TIX判斷預取區域CA中最久未被讀取之資料鏈結關係集合為資料鏈結關係集合TS_2,並且資料鏈結關係集合TS_2所相應之區段為區段S_N(第三區段)。因此,在步驟S1032中,控制器160自快閃記憶體180中之資料鏈結關係表TB1讀取資料鏈結關係集合TS_77(第一資料鏈結關係集合),以將資料鏈結關係集合TS_77載入所獲得之區段S_N(第三區段),以取代原本很久未被讀取之資料鏈結關係集合TS_2。。
接著,在步驟S1034中,控制器160將相應於第一資料鏈結關係集合之第一集合指標,寫入預取區域對應表SMR_TB中相應於第三區段的區段對應欄。在第8圖之實施例中,控制器160接著在步驟S1034中將相應於資料鏈結關係集合 TS_77(第一資料鏈結關係集合)之集合指標0x333(第一集合指標),寫入預取區域對應表SMR_TB中相應於區段S_N(第三區段)的區段對應欄SMR_N。
接著,在步驟S1036中,控制器160根據頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合所屬之一第四區段。
接著,在步驟S1038中,控制器160將順序表SE_TB中之相應於第四區段之一第四順序欄的共用指標,寫入順序表SE_TB中相應於第三區段之一第三順序欄。舉例而言,在第8圖之實施例中,控制器160在步驟S1036中根據更動前第7A圖所示之頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合TS_0係屬於之區段S_2(第四區段)。接著,在步驟S1038中,控制器160將區段S_2(第四區段)所相應之順序欄SE_2(第四順序欄)的共用指標CIX_2,寫入相應於目前之區段S_N(第三區段)的順序欄SE_N(第三順序欄)。
接著,在步驟S1040中,控制器160將反序表RSE_TB中相應於第三區段之一第三反序欄的共用指標,寫入反序表RSE_TB中相應於第四區段之一第四反序欄。舉例而言,在第8圖之實施例中,控制器160將相應於目前之區段S_N(第三區段)的反序欄RSE_N(第三反敘欄)之共用指標CIX_N,寫入區段S_2(第四區段)所相應之反序欄RSE_2(第四反序欄)。
接著,在步驟S1044中,控制器160讀取第三反序欄,以獲得反序欄RSE_0~RSE_N中一第五反序欄 RSE_0~RSE_N之共用指標。換言之,控制器160讀取目前被寫入之第三區段所相應之第三反序欄,以獲得原本在目前之第三區段之後下一個被讀取之一第五區段。
接著,在步驟S1044中,控制器160將尾指標TIX定義為相應於第五反序欄之一第五共用指標以及將頭指標HIX定義為第三順序欄之一第三共用指標。舉例而言,在第8圖之實施例中,控制器160在步驟S1044中讀取目前之區段S_N(第三區段)的反序欄RSE_N(第三反序欄),以獲得原本在目前之區段S_N(第三區段)之後下一個被讀取之區段S_N-1的共用指標CIX_N-1(第五反序欄的共用指標)。接著,控制器160將頭指標HIX定義為目前區段S_N(第三區段)之共用指標CIX_N,並且將尾指標TIX定義為原本在目前之區段S_N之後下一個被讀取之區段S_N-1(第五區段)的共用指標CIX_N-1(第五共用指標)。
接著,在步驟S1046中,控制器160將一特定值寫入第三反序欄以及相應於第五共用指標之一第五順序欄。換言之,控制器160將特定值寫入目前頭指標所指向之共用指標所相應的反序欄中,並且將特定值寫入目前尾指標所指向之共用指標所相應的順序欄中。如第8圖所示,控制器160將特定值寫入相應於目前區段S_N(第三區段)之反序欄RSE_N以及共用指標CIX_N-1(第五反序欄的共用指標)所相應之順序欄SE_N-1(第五順序欄)。接著,流程進行至步驟S1090。
在步驟S1060中,控制器160讀取相應於儲存第一資料鏈結關係集合之一第六區段所相應的一第六反序欄,以獲得在第一資料鏈結關係集合之後下一個被讀取之第七區段。換 言之,控制器160讀取在一反序表RSE_TB中一第六區段所相應之一第六反序欄,以獲得在第六區段之後下一個被讀取之一第七區段。舉例而言,在第7A圖的實施例中,讀取命令或者寫入命令所指定之頁面之一對應關係包括於資料鏈結關係集合為TS_0。如更動前的第6圖所示,資料鏈結關係集合TS_0之集合指標0x5已存在於預取區域對應表SMR_TB中之區域對應欄SMR_2之中。因此,控制器160在步驟S1004中已根據預取區域對應表SMR_TB存在相應於資料鏈結關係集合TS_0的集合指標0x5,判斷資料鏈結關係集合TS_0已被載入預取區域CA。接著,控制器160在步驟S1060中根據目前區段S_2(第六區段)之共用指標CIX_2,讀取反序表RSE_TB中相應於目前區段S_2(第六區段)之反序欄RSE_2(第六反序欄)中的值,並且根據反序欄RSE_2(第六反序欄)中之共用指標CIX_1找到在目前區段S_2(第六區段)之後下一個被讀取之區段為區段S_1。在第7B圖的實施例中,讀取命令或者寫入命令所指定之頁面之一對應關係包括於資料鏈結關係集合為TS_2。如更動前的第6圖所示,資料鏈結關係集合TS_2之集合指標0xAA已存在於預取區域對應表SMR_TB中之區域對應欄SMR_N之中。因此,控制器160在步驟S1004中已根據預取區域對應表SMR_TB存在相應於資料鏈結關係集合TS_N的集合指標0xAA,判斷資料鏈結關係集合TS_2已被載入預取區域CA。接著,控制器160在步驟S1060中根據目前區段S_N(第六區段)之共用指標CIX_N,讀取反序表RSE_TB中相應於目前區段S_N(第六區段)之反序欄RSE_N(第六反序欄)中的值,並且根據反序欄RSE_N(第六反序 欄)中之共用指標CIX_N-1找到在目前區段S_N(第六區段)之後下一個被讀取之區段為區段S_N-1。
接著,在步驟S1062中,控制器160在順序表SE_TB中相應於第七區段之一第七順序欄中,寫入第六區段所相應之一第六順序欄中所儲存之共用指標。舉例而言,在第7A圖的實施例中,控制器160在步驟S1060中已獲得在目前區段S_2(第六區段)之後下一個被讀取之區段為區段S_1(第七區段)。因此,在步驟S1062中,控制器160在相應於區段S_1(第七區段)之順序欄SE_1(第七順序欄)中寫入目前區段S_2(第六區段)所相應之順序欄SE_2(第六順序欄)中所儲存之共用指標CIX_3。換言之,控制器160將原本指向順序欄SE_2(第六順序欄)之順序欄SE_1(第七順序欄),改指向在第一資料鏈結關係集合之前上一個被讀取之區段S_3所相應之順序欄SE_3。在第7B圖的實施例中,控制器160在步驟S1060中已獲得在目前區段S_N(第六區段)之後下一個被讀取之區段為區段S_N-1(第七區段)。因此,在步驟S1062中,控制器160在相應於區段S_N-1(第七區段)之順序欄SE_N-1(第七順序欄)中寫入目前區段S_N(第六區段)所相應之順序欄SE_N(第六順序欄)中所儲存之值。
接著,在步驟S1064中,控制器160根據頭指標HIX,獲得在預取區域CA中最後一個被讀取之資料鏈結關係集合所屬之一第八區段。
接著,在步驟S1065中,控制器160根據尾指標TIX,判斷預取區域CA中最久未被讀取之資料鏈結關係集合所屬的區段是否為第六區段。當最久未被讀取之資料鏈結關係集 合所屬的區段為第六區段時,流程進行至步驟S1080;否則,流程進行至步驟S1066。換言之,控制器160在本步驟中判斷目前所要讀取之資料鏈結關係集合是否為預取區域CA中最久未被讀取的資料鏈結關係集合。
在步驟S1066中,控制器160讀取相應於第六區段之第六順序欄,以獲得相應於在第六區段之前一個被寫入之一第九區段之一第九共用指標。在第7A圖之實施例中,控制器160在步驟S1065中,根據尾指標TIX判斷目前區段S_2(第六區段)所儲存之資料鏈結關係集合TS_0不是預取區域CA中最久未被讀取之資料鏈結關係集合。接著,控制器160在步驟S1066中讀取相應於目前區段S_2(第六區段)之順序欄SE_2(第六順序欄),以獲得相應於在目前區段S_2(第六區段)之前一個被寫入之區段為區段S_3(第九區段)。
接著,在步驟S1068中,控制器160將第六反序欄中所儲存之共用指標,寫入相應於第九共用指標之一第九反序欄。舉例而言,在第7A圖的實施例中,控制器160在步驟S1068中將相應於目前區段S_2(第六區段)之反序欄RSE_2(第六反序欄)中所儲存之共用指標CIX_1,寫入相應於區段S_3(第九區段)之反序欄RSE_3(第九反序欄)。
接著,在步驟S1070中,控制器160在順序欄SE_0~SE_N中相應於第六區段之第六順序欄中,寫入順序表SE_TB中第八區段所相應之一第八順序欄的共用指標。舉例而言,在第7A圖的實施例中,控制器160在步驟S1064中根據第6圖中之頭指標HIX,獲得在預取區域CA中最後一個被讀取之資 料鏈結關係集合TS_1所屬之一區段S_0(第八區段),並且將區段S_0(第八區段)所相應之順序欄SE_0(第八順序欄)的共用指標CIX_0,寫入相應於目前之區段S_2(第六區段)的順序欄SE_2(第六順序欄)。
接著,在步驟S1072中,控制器160將反序表RSE_TB中相應於第六區段之第六反序欄的共用指標,寫入反序表RSE_TB中相應於最後一個被讀取之第八區段之一第八反序欄。舉例而言,在第7A圖的實施例中,控制器160在步驟S1072中將相應於目前之區段S_2(第六區段)的反序欄RSE_2(第六反序欄)之共用指標CIX_2,寫入區段S_0(第八區段)所相應之反序欄RSE_0(第八反序欄)。
接著,在步驟S1074中,控制器160將頭指標HIX定義為第六順序欄之一第六共用指標。舉例而言,在第7A圖的實施例中,控制器160在步驟S1074中將頭指標HIX定義為目前區段S_2之共用指標CIX_2,並且將尾指標TIX維持在共用指標CIX_N。
接著,在步驟S1076中,控制器160將一特定值寫入第六反序欄。舉例而言,在第7A圖的實施例中,控制器160在步驟S1076中,將一特定值寫入目前區段S_2(第六區段)所相應之反序欄RSE_2(第六反序欄)中。接著,流程進行值步驟S1090。
在步驟S1080中,控制器160在相應於第六區段之第六順序欄中,寫入順序表SE_TB中第八區段所相應之一第八順序欄的共用指標。在第7B圖之實施例中,控制器160在步驟 S1065中,根據尾指標TIX判斷目前區段S_N(第六區段)所儲存之資料鏈結關係集合TS_2不是預取區域CA中最久未被讀取之資料鏈結關係集合。接著,控制器160在步驟S1080中讀取相應於目前區段S_2(第六區段)之順序欄SE_2(第六順序欄),以獲得相應於在目前區段S_2(第六區段)之前一個被寫入之區段為區段S_3(第九區段)。
接著,在步驟S1082中,控制器160將反序表RSE_TB中相應於第六區段之第六反序欄的共用指標,寫入反序表RSE_TB中相應於最後一個被讀取之第八區段之一第八反序欄。舉例而言,在第7B圖之實施例中,控制器160已在步驟S1064中獲得最後一個被讀取之區段為區段S_0(第八區段)。因此,控制器160在步驟S1082中將相應於目前之區段S_N(第六區段)的反序欄RSE_N(第六反序欄)之共用指標CIX_N,寫入區段S_0(第八區段)所相應之反序欄RSE_0(第八反序欄)。
接著,在步驟S1084中,控制器160將頭指標HIX定義為第六順序欄之一第六共用指標,並且將尾指標TIX定義為第七區段之一第七共用指標。舉例而言,在第7B圖之實施例中,控制器160在步驟S1084中將頭指標HIX定義為目前區段S_2(第六區段)之共用指標CIX_2,將尾指標TIX維持在共用指標CIX_N。
接著,步驟S1086中,控制器160將一特定值寫入第六反序欄。換言之,控制器160將特定值寫入目前頭指標所指之共用指標CIX_N所相應的反序欄RSE_N中。接著,流程進行至步驟S1090。
在步驟S1090中,控制器160自預取區域CA讀取第一資料鏈結關係集合中之資料,以執行在步驟S1000中所接收之寫入命令或者讀取命令。流程結束於步驟S1090。
本發明所提供之資料儲存裝置140以及資料維護方法可藉由指標、反序表、順序表以及一預取區域對應表紀錄預取區域中資料被讀取的狀態以更新預取區域中之資料,其中指標、反序表以及順序表可使得預取區域對應表在每次更新的過程中所需修正資料數不超五欄。
本發明之方法,或特定型態或其部份,可以以程式碼的型態存在。程式碼可儲存於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限於外在形式之電腦程式產品,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之裝置。程式碼也可透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之裝置。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應用特定邏輯電路之獨特裝置。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。另外本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限 制本發明之權利範圍。
100‧‧‧電子系統
120‧‧‧主機
140‧‧‧資料儲存裝置
160‧‧‧控制器
162‧‧‧運算單元
164‧‧‧永久記憶體
166‧‧‧隨機存取記憶體
180‧‧‧快閃記憶體
TB1‧‧‧資料鏈結關係表

Claims (22)

  1. 一種資料儲存裝置,包括:一快閃記憶體,包括複數區塊,每一上述區塊包括複數頁面,每一上述頁面具有一邏輯位址以及一實體位址,其中上述快閃記憶體具有一資料鏈結關係表用以紀錄所有上述頁面之上述邏輯位址以及上述實體位址的複數對應關係,上述資料鏈結關係表被分割為複數資料鏈結關係集合,每一上述資料鏈結關係集合具有多於一個上述對應關係,並且每一上述資料鏈結關係集合相應於一集合指標;以及一隨機存取記憶體,具有一預取區域、一順序表、一反序表以及一預取區域對應表,其中上述預取區域具有複數區段用以儲存上述資料鏈結關係表中部分之上述資料鏈結關係集合,上述預取區域對應表具有複數區段對應欄用以紀錄相應於上述預取區域中之上述資料鏈結關係集合的上述集合指標,上述順序表用以紀錄上述資料鏈結關係集合自上述預取區域中被讀取之順序,並且上述反序表用以紀錄上述資料鏈結關係集合自上述預取區域中被讀取之反向的順序。
  2. 根據申請專利範圍第1項之資料儲存裝置,其中上述區段依序具有複數共用指標,上述預取區域對應表中之上述區段對應欄依序相應於上述預取區域中之上述區段,上述順序表具有複數順序欄依序相應於上述預取區域中之上述區段,上述反序表具有複數反序欄依序相應於上述預取區域中之上述區段,並且上述區段對應欄、上述順序欄、上述 反序欄與其相應之上述區段具有相同之上述共用指標。
  3. 根據申請專利範圍第2項之資料儲存裝置,其中上述順序表中之每一上述順序欄係用以儲存另一上述順序欄的上述共用指標,以分別指向在相應於上述順序欄之上述區段之前上一個被讀取之上述資料鏈結關係集合之上述區段所相應之上述順序欄。
  4. 根據申請專利範圍第2項之資料儲存裝置,其中上述反序表中之每一上述反序欄係用以儲存另一上述反序欄的上述共用指標,以分別指向在相應於上述反序欄之上述區段之後下一個被讀取之上述資料鏈結關係集合之上述區段所相應之上述反序欄。
  5. 根據申請專利範圍第2項之資料儲存裝置,更包括一控制器用以根據一讀取命令或者一寫入命令,找出包括上述讀取命令或者上述寫入命令所指定之上述頁面之一第一對應關係的一第一資料鏈結關係集合,並且根據上述預取區域對應表中是否存在相應於上述第一資料鏈結關係集合的一第一集合指標,判斷上述第一資料鏈結關係集合是否已被載入上述預取區域中,其中上述第一資料鏈結關係集合為上述資料鏈結關係集合中之一者,上述第一集合指標為上述集合指標中之一者,並且上述第一對應關係為上述對應關係中之一者。
  6. 根據申請專利範圍第5項之資料儲存裝置,其中當上述預取區域對應表中存在相應於上述第一集合指標時,上述控制器根據用以儲存上述第一集合指標的上述區段對應欄之上 述共用指標,讀取上述預取區域中所相應之上述區段,以獲得上述第一資料鏈結關係集合,並且讀取儲存於上述隨機存取記憶體中之上述第一資料鏈結關係集合中之資料以進行上述寫入命令或者上述讀取命令。
  7. 根據申請專利範圍第6項之資料儲存裝置,其中當上述預取區域對應表中不存在上述第一集合指標時,上述控制器判斷上述預取區域是否具有空白之上述區段,其中當上述控制器判斷上述預取區域之上述區段具有空白之一第一區段時,上述控制器自上述快閃記憶體中之上述資料鏈結關係表讀取上述第一資料鏈結關係集合,將上述第一資料鏈結關係集合載入空白之上述第一區段。
  8. 根據申請專利範圍第6項之資料儲存裝置,其中上述隨機存取記憶體更包括一頭指標以及一尾指標,上述頭指標為上述預取區域中最後一個被讀取之上述區段之上述共用指標,並且上述尾指標為上述預取區域中最久未被讀取之上述區段之上述共用指標。
  9. 根據申請專利範圍第8項之資料儲存裝置,其中當上述控制器判斷上述預取區域不具有空白之上述區段時,上述控制器根據上述尾指標判斷上述預取區域中最久未被讀取之上述資料鏈結關係集合,以將上述第一資料鏈結關係集合的資料寫入上述預取區域中最久未被讀取之上述資料鏈結關係集合所屬的上述區段。
  10. 根據申請專利範圍第8項之資料儲存裝置,其中當上述控制器判斷上述預取區域不具有空白之上述區段時,上述控制 器根據上述頭指標判斷上述預取區域中最後被讀取之上述資料鏈結關係集合所相應之上述區段,以更新上述順序表以及上述反序表。
  11. 一種資料維護方法,適用於具有一快閃記憶體之一資料儲存裝置,其中上述快閃記憶體包括複數區塊,每一上述區塊包括複數頁面,每一上述頁面具有一邏輯位址以及一實體位址,並且上述資料維護方法包括:接收一讀取命令或者一寫入命令;根據所接收之上述讀取命令或者上述寫入命令,判斷包括上述讀取命令或者上述寫入命令所指定之上述頁面的一第一對應關係之一第一資料鏈結關係集合;根據一預取區域對應表中是否存在相應於上述第一資料鏈結關係集合的一第一集合指標,判斷上述第一資料鏈結關係集合是否已被載入一預取區域中,其中上述預取區域對應表具有複數區段對應欄依序相應於上述預取區域中之複數區段;當上述預取區域對應表中不存在上述第一集合指標時,判斷上述預取區域中是否具有空白之上述區段;當上述預取區域之上述區段具有空白之一第一區段時,執行一載入程序,上述載入程序包括:自上述快閃記憶體中之一資料鏈結關係表讀取上述第一資料鏈結關係集合,以將上述第一資料鏈結關係集合載入空白之上述第一區段;以及 將相應於上述第一資料鏈結關係集合之上述第一集合指標,寫入上述預取區域對應表中相應於上述第一區段的上述區段對應欄;以及自上述預取區域讀取第一資料鏈結關係集合中之資料,以執行上述寫入命令或者上述讀取命令。
  12. 根據申請專利範圍第11項之資料維護方法,其中上述資料鏈結關係表用以紀錄所有上述頁面之上述邏輯位址以及上述實體位址的複數對應關係,上述資料鏈結關係表被分割為複數資料鏈結關係集合,每一上述資料鏈結關係集合具有多於一個上述對應關係,每一上述資料鏈結關係集合相應於一集合指標,上述第一資料鏈結關係集合為一資料鏈結關係集合中之一者,並且上述第一對應關係為上述對應關係中之一者。
  13. 根據申請專利範圍第12項之資料維護方法,其中上述預取區域之上述區段用以儲存上述資料鏈結關係表中部分之上述資料鏈結關係集合,上述預取區域對應表之上述區段對應欄用以紀錄相應於上述預取區域中之上述資料鏈結關係集合的上述集合指標。
  14. 根據申請專利範圍第11項之資料維護方法,其中上述區段依序具有複數共用指標,並且當上述第一區段是上述預取區域中第一個被載入的資料時,上述載入程序更包括:將一頭指標定義為上述共用指標中上述第一區段之一第一共用指標;以及 將一尾指標定義為上述共用指標中上述第一區段之上述第一共用指標。
  15. 根據申請專利範圍第11項之資料維護方法,其中上述區段依序具有複數共用指標,當上述第一區段不是上述預取區域中第一個被載入的資料時,上述載入程序更包括:根據一頭指標,獲得在上述預取區域中最後一個被讀取之上述資料鏈結關係集合所屬之一第二區段;將一順序表中相應於上述第二區段之一第二順序欄的上述共用指標,寫入相應於上述第一區段之上述第一順序欄,其中上述順序表具有複數順序欄依序相應於上述預取區域中之上述區段,並且上述第一順序欄以及上述第二順序欄為上述反序欄中之兩者;將一反序表中相應於上述第一區段之一第一反序欄之上述共用指標,寫入上述第二區段所相應之上述反序欄中之一第二反序欄,其中上述反序表具有複數反序欄依序相應於上述預取區域中之上述區段,並且上述第一反序欄以及上述第二反序欄為上述反序欄中之兩者;將一頭指標定義為上述共用指標中上述第一區段之一第一共用指標;以及將一特定值寫入上述反序欄中相應於上述第一反序欄中。
  16. 根據申請專利範圍第11項之資料維護方法,更包括當上述預取區域不具有空白之上述區段時,執行一取代程序,並且上述取代程序包括: 根據一尾指標判斷上述預取區域中最久未被讀取之上述資料鏈結關係集合所屬的一第三區段;將上述第一資料鏈結關係集合的資料寫入上述第三區段;以及將相應於上述第一資料鏈結關係集合之上述第一集合指標,寫入上述預取區域對應表中相應於上述第三區段的上述區段對應欄。
  17. 根據申請專利範圍第16項之資料維護方法,其中上述區段依序具有複數共用指標,上述取代程序更包括:根據一頭指標,獲得在上述預取區域中最後一個被讀取之上述資料鏈結關係集合所屬之一第四區段;將一順序表中之相應於上述第四區段之一第四順序欄的上述共用指標,寫入上述順序表中相應於上述第三區段之一第三順序欄,其中上述順序表具有複數順序欄依序相應於上述預取區域中之上述區段,上述順序欄與所相應之上述區段具有相同之上述共用指標,並且上述第三順序欄以及上述第四順序欄為上述順序欄中之兩者;將一反序表中相應於上述第三區段之一第三反序欄的上述共用指標,寫入上述反序表中相應於上述第四區段之一第四反序欄,其中上述反序表具有複數反序欄依序相應於上述預取區域中之上述區段,上述反序欄與所相應之上述區段具有相同之上述共用指標,並且上述第三反序欄以及上述第四反序欄為上述順序欄中之兩者; 讀取上述第三反序欄,以獲得上述反序欄中一第五反序欄之上述共用指標;將上述頭指標定義為上述第三順序欄之一第三共用指標;以及將上述尾指標定義為上述第五反序欄之一第五共用指標;在定義上述尾指標為上述第五共用指標後,將一特定值寫入上述第三反序欄以及相應於上述第五共用指標之一第五順序欄。
  18. 根據申請專利範圍第11項之資料維護方法,其中上述區段依序具有複數共用指標,資料維護方法更包括當上述預取區域對應表中之一第六區段存在上述第一集合指標時,執行一更新程序,其中上述區段依序具有複數共用指標,上述更新程序更包括:讀取在一反序表中上述第六區段所相應之一第六反序欄,以獲得在上述第六區段之後下一個被讀取之一第七區段,其中上述反序表具有複數反序欄依序相應於上述預取區域中之上述區段,上述反序欄與所相應之上述區段具有相同之上述共用指標,並且上述第六反序欄為上述反序欄中之一者;在一順序表中相應於上述第七區段之一第七順序欄中,寫入上述第六區段所相應之一第六順序欄中所儲存之上述共用指標,其中上述順序表具有複數順序欄依序相應於上述預取區域中之上述區段,上述順序欄與所相應之上述區段 具有相同之上述共用指標,並且上述第六順序欄以及上述第七順序欄為上述順序欄中之兩者;以及根據一尾指標判斷上述預取區域中最久未被讀取之上述資料鏈結關係集合所屬的上述區段是否為上述第六區段。
  19. 根據申請專利範圍第18項之資料維護方法,當上述預取區域中最久未被讀取之上述資料鏈結關係集合所屬的上述區段為上述第六區段時,上述更新程序更包括:根據一頭指標,獲得在上述預取區域中最後一個被讀取之上述資料鏈結關係集合所屬之一第八區段;在上述順序欄中相應於上述第六區段之上述第六順序欄中,寫入上述順序表中上述第八區段所相應之一第八順序欄的上述共用指標;將上述反序表中相應於上述第六區段之上述第六反序欄的上述共用指標,寫入上述反序表中相應於上述第八區段之一第八反序欄;將上述頭指標定義為上述共用指標中上述第六順序欄之一第六共用指標;將上述尾指標定義為上述共用指標中相應於上述第七區段之一第七共用指標;以及將一特定值寫入上述第六反序欄。
  20. 根據申請專利範圍第18項之資料維護方法,其中上述區段依序具有複數共用指標,當上述預取區域中最久未被讀取之上述資料鏈結關係集合所屬的上述區段為與上述第六區段相異之一第十區段時,上述更新程序更包括: 根據一頭指標,獲得在上述預取區域中最後一個被讀取之上述資料鏈結關係集合所屬之一第八區段;讀取上述第六順序欄,獲得相應於在上述第六區段之前一個被寫入之一第九區段之一第九共用指標;將上述第六反序欄中所儲存之上述共用指標,寫入上述反敘欄中相應於上述第九共用指標之一第九反序欄;在上述第六反序欄中所儲存之上述共用指標已被寫入上述第九順序欄之後,在上述順序欄中相應於上述第六區段之上述第六順序欄中,寫入上述順序表中上述第八區段所相應之一第八順序欄的上述共用指標;將一反序表中相應於上述第六區段之一第六反序欄的上述共用指標,寫入上述反序表中相應於上述第八區段之一第八反序欄;將上述頭指標定義為上述共用指標中上述第六順序欄之一第六共用指標;以及將一特定值寫入上述第六反序欄。
  21. 一種資料維護方法,適用於具有一快閃記憶體之一資料儲存裝置,其中上述快閃記憶體包括複數區塊,每一上述區塊包括複數頁面,每一上述頁面具有一邏輯位址以及一實體位址,並且上述資料維護方法包括:在上述快閃記憶體被上電時,根據至少一讀取命令或者至少一寫入命令,在一隨機記憶體中之一預取區域中,載入一資料鏈結關係表中之複數資料鏈結關係集合的一部份,其中每一上述資料鏈結關係集合具有多於一個上述頁面之 上述邏輯位址以及實體位址的對應關係,並且每一上述資料鏈結關係集合相應於一集合指標;建立一預取區域對應表,以紀錄相應於上述預取區域中之上述資料鏈結關係集合的上述集合指標;建立一反序表,以紀錄上述資料鏈結關係集合自上述預取區域中被讀取之反向的順序;以及建立一順序表,以紀錄上述資料鏈結關係集合自上述預取區域中被讀取之順序。
  22. 根據申請專利範圍第20項之資料維護方法,更包括:當上述預取區域已被寫滿並且需要載入新的上述資料鏈結關係集合時,根據一尾指標,選擇上述預取區域中之複數區段中之一者;將新的上述資料鏈結關係集合載入所選擇之上述區段;以及在新的上述資料鏈結關係集合載入所選擇之上述區段後,根據一頭指標、上述反序表中之資料以及上述順序表中之資料,更新上述反序表以及上述順序表。
TW104133817A 2015-10-15 2015-10-15 資料儲存裝置及其資料維護方法 TWI537729B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
TW104133817A TWI537729B (zh) 2015-10-15 2015-10-15 資料儲存裝置及其資料維護方法
CN201610185972.1A CN106598876B (zh) 2015-10-15 2016-03-29 数据储存装置及其数据维护方法
US15/286,925 US10140026B2 (en) 2015-10-15 2016-10-06 Data storage device and data maintenance method thereof
US15/613,342 US10073769B2 (en) 2015-10-15 2017-06-05 Data storage device and data maintenance method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW104133817A TWI537729B (zh) 2015-10-15 2015-10-15 資料儲存裝置及其資料維護方法

Publications (2)

Publication Number Publication Date
TWI537729B true TWI537729B (zh) 2016-06-11
TW201714088A TW201714088A (zh) 2017-04-16

Family

ID=56755879

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104133817A TWI537729B (zh) 2015-10-15 2015-10-15 資料儲存裝置及其資料維護方法

Country Status (3)

Country Link
US (1) US10140026B2 (zh)
CN (1) CN106598876B (zh)
TW (1) TWI537729B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106569959A (zh) * 2016-10-28 2017-04-19 郑州云海信息技术有限公司 一种基于ssd的缓存替换方法及系统
CN107943711A (zh) * 2016-10-12 2018-04-20 慧荣科技股份有限公司 数据储存装置及其数据维护方法
US10073769B2 (en) 2015-10-15 2018-09-11 Silicon Motion, Inc. Data storage device and data maintenance method thereof
US10140026B2 (en) 2015-10-15 2018-11-27 Silicon Motion, Inc. Data storage device and data maintenance method thereof

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9547441B1 (en) * 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
TWI631508B (zh) * 2017-04-28 2018-08-01 慧榮科技股份有限公司 記憶裝置、記憶裝置的控制方法及存取系統
JP6815277B2 (ja) * 2017-05-24 2021-01-20 ルネサスエレクトロニクス株式会社 半導体装置及びデータ処理システム
KR102687593B1 (ko) * 2018-03-12 2024-07-24 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
TWI664527B (zh) * 2018-03-20 2019-07-01 慧榮科技股份有限公司 用來於一記憶裝置中進行初始化之方法、記憶裝置及其控制器以及電子裝置
KR102739745B1 (ko) * 2018-08-14 2024-12-09 에스케이하이닉스 주식회사 컨트롤러의 동작 방법, 메모리 시스템 및 그 동작 방법
KR102612911B1 (ko) * 2018-08-31 2023-12-13 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US11922012B2 (en) 2019-09-10 2024-03-05 Micron Technology, Inc. Memory mapping device and method
CN111190835B (zh) * 2019-12-29 2022-06-10 北京浪潮数据技术有限公司 一种数据写入方法、装置、设备及介质
US12056048B2 (en) * 2021-11-11 2024-08-06 Samsung Electronics Co., Ltd. System and method for management of electronic memory
CN116541419A (zh) * 2023-07-06 2023-08-04 美云智数科技有限公司 数据导入导出方法、装置、电子设备及可读存储介质
CN120803372B (zh) * 2025-09-10 2025-11-21 湖南融创微电子股份有限公司 基于查表算法的高效闪存管理方法、装置和设备

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067608A (en) * 1997-04-15 2000-05-23 Bull Hn Information Systems Inc. High performance mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis
GB0030226D0 (en) 2000-12-12 2001-01-24 Ibm A data storage system and a method of storing data including a multi-level cache
US7017024B2 (en) 2002-12-12 2006-03-21 International Business Machines Corporation Data processing system having no system memory
JP3934569B2 (ja) 2003-03-12 2007-06-20 株式会社東芝 信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム
US7058784B2 (en) 2003-07-04 2006-06-06 Solid State System Co., Ltd. Method for managing access operation on nonvolatile memory and block structure thereof
KR100833512B1 (ko) * 2006-12-08 2008-05-29 한국전자통신연구원 태그의 센싱 데이터 저장 장치 및 그 방법
KR100885181B1 (ko) * 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
TWI334565B (en) 2007-05-09 2010-12-11 Phison Electronics Corp Secure storage apparatus and method for controlling the same
TWI413931B (zh) 2009-01-15 2013-11-01 Phison Electronics Corp 快閃記憶體資料之存取方法及其儲存系統與控制系統
WO2012014140A2 (en) * 2010-07-27 2012-02-02 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
CN101980177B (zh) * 2010-10-21 2013-07-31 北京握奇数据系统有限公司 一种操作Flash的方法和装置
TWI544334B (zh) * 2012-05-30 2016-08-01 慧榮科技股份有限公司 資料儲存裝置與資料儲存裝置操作方法
TWI495999B (zh) 2012-07-05 2015-08-11 Compal Electronics Inc 切換資料傳輸路徑以傳輸資料的方法及儲存裝置
US20140304453A1 (en) * 2013-04-08 2014-10-09 The Hong Kong Polytechnic University Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems
US9329992B2 (en) 2013-12-04 2016-05-03 Silicon Motion, Inc. Data storage device and flash memory control method
US9684568B2 (en) 2013-12-26 2017-06-20 Silicon Motion, Inc. Data storage device and flash memory control method
US20160070507A1 (en) * 2014-09-08 2016-03-10 Kabushiki Kaisha Toshiba Memory system and method of controlling memory device
TWI546666B (zh) 2014-11-03 2016-08-21 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
US10387318B2 (en) 2014-12-14 2019-08-20 Via Alliance Semiconductor Co., Ltd Prefetching with level of aggressiveness based on effectiveness by memory access type
TWI537729B (zh) 2015-10-15 2016-06-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US10459635B2 (en) 2016-02-11 2019-10-29 SK Hynix Inc. Window based mapping

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10073769B2 (en) 2015-10-15 2018-09-11 Silicon Motion, Inc. Data storage device and data maintenance method thereof
US10140026B2 (en) 2015-10-15 2018-11-27 Silicon Motion, Inc. Data storage device and data maintenance method thereof
CN107943711A (zh) * 2016-10-12 2018-04-20 慧荣科技股份有限公司 数据储存装置及其数据维护方法
TWI646461B (zh) * 2016-10-12 2019-01-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
CN106569959A (zh) * 2016-10-28 2017-04-19 郑州云海信息技术有限公司 一种基于ssd的缓存替换方法及系统

Also Published As

Publication number Publication date
TW201714088A (zh) 2017-04-16
CN106598876A (zh) 2017-04-26
US20170109042A1 (en) 2017-04-20
US10140026B2 (en) 2018-11-27
CN106598876B (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
TWI537729B (zh) 資料儲存裝置及其資料維護方法
CN113168408B (zh) 利用压缩的键值存储树数据块溢出
TWI653533B (zh) 資料儲存裝置以及其操作方法
EP1923792A1 (en) Apparatus and method of managing nonvolatile memory
CN103890856B (zh) 支持内存储数据结构的可移位存储器
US8819376B2 (en) Merging arrays using shiftable memory
CN110058796A (zh) 数据储存装置
US20170285954A1 (en) Data storage device and data maintenance method thereof
KR20100042455A (ko) 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법
KR20130030238A (ko) 비휘발성 메모리를 갖는 시스템을 위한 고속 트리 플래트닝
CN107102819A (zh) 向固态硬盘写入数据的方法及设备
CN112470132B (zh) 控制nand操作延时
KR20140006234A (ko) 데이터 저장 장치 및 그 동작 방법
TWI556103B (zh) 記憶體裝置及其資料存取方法
CN111831576A (zh) 包括多个存储数据的区域的存储器系统及其操作方法
CN113253926A (zh) 提升新型存储器的查询和存储性能的存储内索引构建方法
CN116774937A (zh) 数据存储方法、装置、处理设备、存储介质
TWI450271B (zh) 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US9880930B2 (en) Method for operating controller and method for operating device including the same
TWI646461B (zh) 資料儲存裝置及其資料維護方法
US20130080690A1 (en) Method to emulate eeprom using flash memory
US20140351298A1 (en) Method and apparatus for distributed processing of file
JP2013109404A (ja) 情報処理装置
US20260023499A1 (en) Method and non-transitory computer-readable storage medium and apparatus for collecting data based on data type
JP4539621B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法