TWI676103B - 記憶系統 - Google Patents
記憶系統 Download PDFInfo
- Publication number
- TWI676103B TWI676103B TW107126385A TW107126385A TWI676103B TW I676103 B TWI676103 B TW I676103B TW 107126385 A TW107126385 A TW 107126385A TW 107126385 A TW107126385 A TW 107126385A TW I676103 B TWI676103 B TW I676103B
- Authority
- TW
- Taiwan
- Prior art keywords
- mapping
- memory
- page
- tables
- range
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明提出之系統、方法和設備包括電腦可讀取媒體,用以藉由重疊非揮發性記憶系統之頁面的範圍來管理記憶體。一種範例記憶系統包括:記憶體控制器,耦接到記憶體且被配置以:決定與指令關聯的邏輯位址範圍;搜尋多個特定映射表格,此些特定映射表格包括記憶體之映射頁面內的邏輯位址範圍;決定邏輯位址範圍的起始位址是否處於第一和順序之第二映射頁面的重疊範圍內,重疊範圍包括在第一和第二映射頁面中所重複的一個或多個映射表格的邏輯位址;基於起始位址是否在重疊範圍內的決定結果,決定將從第一和第二映射頁面中的哪一個來加載特定映射表格;及從所決定的映射頁面加載特定映射表格。
Description
本發明是有關於一種記憶系統,且特別是有關於一種用於重疊記憶系統中的頁面範圍的系統。
一些記憶系統,例如快閃記憶系統,具有先抹後寫(erase-before-write)的結構。為了更新快閃記憶系統中的某個位置,在新資料可被寫入此位置前,必須先抹除此位置。用於抹除的最小記憶體部分(例如,塊區(block))的尺寸大於讀取或寫入的最小記憶體部分(例如,扇區(sector)),這導致整個快閃記憶系統的主要性能下降。在某些情況下,快閃記憶轉換層(Flash Translation Layer,FTL)被引入快閃記憶系統來管理讀取、寫入和抹除操作。FTL的核心是使用邏輯到實體(logical-to-physical)的位址映射表格。如果映射到邏輯位址的實體位址位置包含先前寫入的資料,輸入資料會被寫入先前未寫入資料的空閒實體位置。接著,映射表格由於新改變的邏輯/實體位址映射而被更新。
本揭露描述用於重疊記憶系統中的頁面範圍的系統、方法和技術,例如非揮發性記憶系統,例如NAND快閃記憶體。
本揭露的一個方面的特徵在於一種記憶系統,藉由重疊映射頁面的範圍來管理記憶體。記憶系統包括記憶體控制器,記憶體控制器耦接到記憶體並且配置為:寫入輸入資料至記憶體內,所寫入的輸入資料具有對應的實體位址;添加實體位址及邏輯位址之間的映射至一個或多個映射表格於記憶體控制器的表格快取;決定表格快取內的映射表格達到一臨界數量;編程表格快取內的映射表格至記憶體內之第一映射頁面;及將在第一映射頁面之終點處所編程的一個或多個特定映射表格,拷貝(copy)到順序之第二映射頁面中之表格快取的起點,以於第一及第二映射頁面之間形成映射表格的重疊範圍。記憶系統可包含記憶體。
在一些實施方式中,記憶體控制器配置為將第一映射頁面之終點處的一個或多個特定映射表格編程到第二映射頁面中的起點。一個或多個特定映射表格係被重複(duplicate)到第一及第二映射頁面中,且一個或多個特定映射表格的邏輯位址範圍形成第一及第二映射頁面的重疊範圍。
記憶體控制器可以配置為基於實體位址及表格快取內之映射表格之資訊,以決定與實體位址映射的邏輯位址。
記憶體中的各映射頁面能夠儲存最大表格數量的映射表格,而臨界數量係相同於最大表格數量。
在一些實作方式中,記憶體控制器配置為從主機裝置接收主機讀取指令。讀取指令係被允許以讀取與記憶體內之最大讀取數量的映射表格所包含之邏輯位址範圍關聯的使用者資料,且一個或多個特定映射表格的數量係相同於最大讀取數量減1。主機讀取指令之映射表格的最大讀取數量,可基於記憶體控制器及主機裝置之間的通訊協定而被決定。邏輯位
址範圍內的邏輯位址的數量可不大於一個或多個特定映射表格內所包含之邏輯位址的數量。
本揭露的另一方面的特徵在於一種記憶系統,藉由重疊映射頁面的範圍來管理記憶體。記憶系統包括記憶體控制器,記憶體控制器耦接到記憶體並配置為:決定與讀取指令關聯的邏輯位址範圍;搜尋多個特定映射表格,此些映射表格包括記憶體內多個映射頁面的邏輯位址範圍,記憶體的一個映射頁面包含多個順序之映射表格,記憶體的一個相鄰的映射頁面包含一個或多個具有重疊範圍之重複映射表格;決定邏輯位址範圍的起始位址是否處於記憶體內之第一及第二映射頁面所對應之重疊範圍內,第二映射頁面係順序於第一映射頁面,第一及第二映射頁面包含一個或多個對應之重複映射表格,對應之重複映射表格的邏輯位址範圍形成第一及第二映射頁面所對應之重疊範圍;基於起始位址是否在第一及第二映射頁面所對應之重疊範圍內的決定結果,決定將從第一和第二映射頁面中的哪一個來加載特定映射表格;及從所決定的映射頁面加載特定映射表格。記憶系統可包含記憶體。
記憶體控制器可以配置為:回應於決定起始位置是否在第一及第二映射頁面的重疊範圍內,從第二映射頁面加載特定映射表格。
在一些實作方式中,記憶體控制器被配置以:回應於決定邏輯位址範圍的起始位置係小於重疊範圍的最小邏輯位址且位在第一映射頁面內,從第一映射頁面加載特定映射表格;及回應於決定邏輯位址範圍的起始位置係大於重疊範圍的最大邏輯位址且位在第二映射頁面內,從第二映射頁面加載特定映射表格。
在一些實作方式中,記憶體控制器配置為:基於所加載之特定映射表格,取得被映射至邏輯位址範圍之實體位址;及讀取具有從記憶體所取得之實體位址的使用者資料。
第一映射頁面包括於第一映射頁面的終點所對應重複之映射表格,且第二映射頁面包括於第二映射頁面的起點所對應重複之映射表格。
讀取指令可以允許讀取使用者資料,使用者資料與記憶體內之最大讀取數量的映射表格所包含的邏輯位址關聯;及對應重複之映射表格的數量係相同於最大讀取數量減1。用於主機讀取指令之映射表格的最大讀取數量,可基於記憶體控制器及傳送讀取指令之主機裝置之間的通訊協定而被決定。
在一些實作方式中,記憶體控制器配置為:接收第二讀取指令;決定與第二讀取指令關聯的邏輯位址的第二範圍,第二範圍被包括在記憶體控制器的表格快取中的第二特定映射表格中;基於表格快取中的第二特定映射表格,取得映射到邏輯位址的第二範圍的第二實體位址;及從記憶體讀取具有所取得的第二實體位址的使用者資料。
記憶體控制器可以配置為:回應於決定邏輯位址範圍係不包含在記憶體控制器之表格快取內的第二特定映射表格,搜尋包含記憶體之映射表格內之邏輯位址範圍的特定映射表格。
本揭露的另一方面的特徵在於一種記憶系統,藉由重疊映射頁面的範圍來管理記憶體。記憶系統包括記憶體控制器,記憶體控制器耦接到記憶體且被配置以:從主機裝置接收主機寫入指令;將與主機寫入指
令關聯之主機資料寫入至記憶體內,所寫入之主機資料具有記憶體內之對應的實體位址;添加實體位址及邏輯位址之間的映射,以將資料映射至記憶體控制器的快取內;將快取內之映射資料編程至第一及第二相鄰映射頁面內,其中第一及第二相鄰映射頁面具有包含特定映射資料的邏輯位址的重疊範圍;從主機裝置接收主機讀取指令;決定與主機讀取指令關聯的邏輯位址範圍;從記憶體內之特定映射頁面,將包含邏輯位址範圍之對應的映射資料加載至快取;基於所加載之對應的映射表格,取得映射至邏輯位址範圍的實體位址;以及從記憶體讀取具有所取得之實體位址的使用者資料。
記憶系統可以包括記憶體。在一些示例中,記憶體包括非揮發性記憶體(non-volatile memory,NVM),且快取被包括在記憶體控制器中的靜態隨機存取記憶體(static random access memory,SRAM)中。
映射資料可以是映射表格的形式。在一些實施方式中,記憶體控制器被配置以將快取內之映射資料編程至第一及相鄰之第二映射頁面內的作法,係藉由:決定快取內之映射表格的數量達到能被儲存至記憶體之記憶頁面內之映射表格的表格數量;將快取內之映射表格編程至記憶體內之第一映射頁面內;將編程在第一映射頁面之終點處的一個或多個映射表格,拷貝至表格快取的起點;及將包含第一映射頁面的一個或多個映射表格編程在第二映射頁面之起始處。一個或多個特定映射表格係第一及第二映射頁面之重複的特定映射資料,且特定映射表格的範圍可形成第一及第二映射頁面的重疊範圍。
在一些實作方式中,記憶體控制器配置為:搜尋對應於記憶體之映射頁面內的邏輯位址範圍的映射資料;決定邏輯位址範圍之起始位址是否位在記憶體內之第一及第二映射頁面的重疊範圍內;基於起始位址是否在第一及第二映射頁面之重疊範圍內的決定結果,決定將從第一和第二映射頁面中的哪一個來加載特定映射表格;及從記憶體中之特定映射頁面,將包含邏輯位址範圍之對應的映射資料加載至快取。
記憶體控制器可以配置為:回應於決定起始位址係在第一及第二映射頁面之重疊範圍內,從第二映射頁面加載對應之映射資料;回應於決定邏輯位址範圍的起始位址係小於重疊範圍之最小邏輯位址且位在第一映射範圍內,從第一映射頁面加載對應之映射資料;及回應於決定邏輯位址範圍的起始位址係大於重疊範圍之最大邏輯位址且位在第二映射範圍內,從第二映射頁面加載對應之映射資料。
在一些實作方式中,映射資料係映射表格的形式。主機讀取指令可以允許讀取與包含在記憶體中最大讀取數量的映射表格中的邏輯位址關聯的資料,並且重複的映射表格的數量可以等於最大讀取數量減1。
本揭露的第四方面的特徵在於一種記憶系統,藉由重疊頁面的範圍來管理記憶體。記憶系統包括記憶體控制器,記憶體控制器耦接到記憶體且配置為:將輸入資料寫入記憶體中,所寫入之輸入資料具有記憶體內之對應的實體位址;將所寫入的輸入資料所對應的參考資料添加到記憶體控制器的快取;將快取中的參考資料的列表編程到記憶體的第一頁;且將編程在第一頁面終點之參考資料的列表的一部分,拷貝到第二頁面的
起點,以形成第一和第二頁面的重疊範圍。參考資料列表的部分係重複於在第一頁和第二頁中以形成第一頁和第二頁的重疊範圍。
記憶體控制器可以更配置為:從記憶體中的特定頁面加載對應於讀取指令的特定參考資料;取得與所加載的特定參考資料相對應的實體位址;及從記憶體讀取具有所取得的實體位址的儲存資料。
在一些實作方式中,記憶體控制器配置為:搜尋記憶體的頁面中的特定參考資料;決定特定參考資料的起點是否處於記憶體中的第一和第二頁面的重疊範圍內;基於決定特定參考資料的起點是否處於第一和第二頁面的重疊範圍內的結果,決定將從第一和第二映射頁面中的哪一個來加載特定映射表格;及從記憶體的特定頁面加載的特定參考資料到快取。
在一些情況下,回應於決定起點處於第一和第二頁面的重疊範圍內,記憶體控制器配置為從第二頁面加載特定參考資料。在一些情況下,回應於決定特定參考資料的起點小於重疊範圍的最小值並且在第一頁面中,記憶體控制器配置為從第一頁面加載特定參考資料。在一些情況下,回應於決定特定參考資料的起點大於重疊範圍的最大值並且在第二頁面中,記憶體控制器配置為從第二頁面加載特定參考資料。
在特定示例中,參考資料是以映射表格的形式,包括實體位址與邏輯位址之間的映射。頁面可以是包括多個映射表格的映射頁面。
本揭露的第五方面的特徵在於一種記憶系統,藉由重疊頁面的範圍來管理記憶體。記憶系統包括記憶體控制器,記憶體控制器耦接到記憶體且配置為:將資料編程到記憶體的第一頁面中,且將在第一頁面的終點處所編程的資料的一部分,拷貝到第二頁面的起點處,以形成第一頁
和第二頁的重疊範圍。資料可以是例如來自寫入指令的輸入資料。資料可以是被寫入頁面的映射表格或資料。資料可以是任何形式的資料,例如任何頁面的製造資訊、測試資訊。頁面可以是邏輯頁面、映射頁面、或實體頁面。
上述技術的實施方式包括方法、系統、電腦程式產品、和電腦可讀取媒體。在一個示例中,可以通過耦接到非揮發性記憶體的記憶體控制器來執行方法,且方法可以包括由記憶體控制器執行的上述動作,例如,用於在非揮發性記憶體中映射頁面的重疊範圍的動作。在另一個示例中,這樣的一種電腦程式產品適當地實施在儲存可由一個或多個處理器執行的指令的非暫態機器可讀取媒體中。指令配置為使一個或多個處理器執行上述動作。這樣的一種電腦可讀取媒體儲存指令在由一個或多個處理器執行時,配置為使一個或多個處理器執行上述動作。
這些技術可以實作為任何類型的控制器,以從遭受超過一個記憶體頁邊界問題的記憶體讀取資料。這些技術可以提供一種快速方法,以從一個映射頁面中的映射資料取得邏輯位址、識別對應於邏輯位址的實體位址、及利用記憶體中的實體位址來擷取相應的資料。這些技術可以藉由重複在相鄰頁面中的資料而被實現,以取得相鄰頁面的重疊範圍。資料可以是映射表格的形式或者以任何其他合適的形式,例如製造資訊或測試資訊。頁面可以是映射頁面、實體頁面、或邏輯頁面。
這些技術可以應用於各種類型的NVM系統,例如NAND快閃記憶體、或其它記憶體。另外地或替代地,可以將這些技術應用於各種類型的裝置和系統,例如安全數位(secure digital,SD)卡、嵌入式多媒體卡
(embedded multimedia card,eMMC)、或固態驅動器(solid-state driver,SSD)、嵌入式系統、或其它裝置和系統。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
100‧‧‧系統
110‧‧‧裝置
112‧‧‧裝置控制器
113‧‧‧處理器
114‧‧‧內部記憶體
115‧‧‧資料緩衝器
116‧‧‧表格快取
118‧‧‧主機介面
120‧‧‧主機裝置
130‧‧‧記憶體
132‧‧‧使用者資料區域
134‧‧‧映射表格區域
200、300‧‧‧映射頁面
330、350‧‧‧表格快取
400、450‧‧‧方法
402~414、452~466‧‧‧流程步驟
第1圖繪示依照一個或多個實施方式之使用用於資料儲存和擷取之映射頁面的系統的示例。
第2A圖繪示沒有重複映射表格的映射頁面的示例。
第2B圖繪示從相同映射頁面讀取映射表格的示例時間成本。
第2C圖繪示從兩個不同映射頁面讀取映射表格的示例時間成本。
第3A圖繪示根據一個或多個實施方式之包括具有重疊範圍的重複映射表格的映射頁面的示例。
第3B圖繪示根據一個或多個實施方式之具有來自重疊範圍的重複映射表格的前端頁面的映射表格的示例表格快取。
第3C圖繪示根據一個或多個實施方式之具有來自重疊範圍的重複映射表格的後端頁面的映射表格的示例表格快取。
第4A圖繪示根據一個或多個實施方式之寫入具有記憶體頁面之映射表格的重疊範圍的主機資料的方法的示例。
第4B圖繪示根據一個或多個實施方式之讀取具有記憶體頁面的重疊範圍的使用者資料的方法的示例。
映射表格是用於管理非揮發性記憶體(nonvolatile memory,NVM)系統上的邏輯到實體位址映射的最小表格單元。映射表格與使用者資料一起儲存在NVM儲存器的映射頁面中。當主機裝置發出讀取指令時,NVM系統從NVM儲存器讀取使用者資料到快取記憶體,且NVM系統還可以存取/讀取映射頁面以將映射表格從NVM儲存器加載到快取記憶體。在某些情況下,系統無法接受很長的等待時間。例如,系統只能接受讀取一個映射頁面的等待時間。然而,實際讀取可能會花費兩次映射頁面讀取時間,這會導致超過一個使用映射頁面讀取時間的NVM頁面邊界問題。
本揭露的實作方式提供用於部分重疊映射頁面中的映射表格範圍的系統和方法,可以有效地防止NVM頁面邊界問題。例如,可以假定主機讀取指令的最大計數不超過3個映射表格,且映射頁面包含X+2個映射表格。決定2個映射表格可以重複在兩個相鄰映射頁面中以取得重疊範圍。也就是說,第一映射頁面中的最後2個映射表格(X+1、X+2)被再次寫入順序之第二映射頁面中的頭2個映射表格,第二映射表格可儲存來自X+1、X+2至2X+1、2X+2的映射表格。如果主機讀取指令需要讀取映射表格X、X+1、X+2中的邏輯位址,NVM系統能僅從第一映射頁面讀取。如果主機讀取指令需要讀取映射表格X+1、X+2、X+3中的邏輯位址,NVM系統能僅從第二映射頁面讀取。以此方式,可以防止NVM頁面邊界問題,並且可以提升NVM系統的讀取速度(也因此提升操作性能)。
第1圖繪示根據一個或多個實施方式之用於資料儲存和擷取的映射表格頁面所使用的系統100的示例。系統100包括裝置110和主機裝置
120。裝置110包括裝置控制器112和記憶體130。裝置控制器112包括處理器113、內部記憶體114和主機介面(I/F)118。主機介面118是用於使裝置控制器112與主機裝置120通訊的介面。例如,通過主機介面118,裝置控制器112可以從主機裝置120接收寫入或讀取指令和主機資料,或者發送從記憶體130所擷取的使用者資料到主機裝置120。
在一些實作方式中,裝置110是儲存設備。例如,裝置110可以是嵌入式多媒體卡(embedded multimedia card,eMMC)、安全數位(secure digital,SD)卡、固態驅動器(solid-state drive,SSD)、或一些其他合適的儲存器。在一些實作方式中,裝置110是智慧手錶、數位相機、或媒體播放器。在一些實作方式中,裝置110是耦接到主機裝置120的客戶裝置。例如,裝置110是數位相機中的SD卡或者是主機裝置120的媒體播放器。
裝置控制器112是通用微處理器或專用微控制器。在一些實作方式中,裝置控制器112是用於裝置110的記憶體控制器。以下部分描述的各種技術係基於裝置控制器112是記憶體控制器的實作方式。然而,在以下部分中描述的技術也適用於裝置控制器112是不同於記憶體控制器的另一類型的控制器的實作方式。
處理器113配置為執行指令並處理資料。這些指令包括韌體指令及/或其它程式指令,在輔助記憶體分別儲存為韌體代碼和/或其他程序代碼。資料包括與韌體及/或由處理器執行的其他程式相對應的程式資料、或其他合適的資料。在一些實作方式中,處理器113是通用微處理器或專用微控制器。處理器113也被稱為中央處理單元(central processing unit,CPU)。
處理器113存取來自內部記憶體114的指令和資料。在一些實作方式中,內部記憶體114是靜態隨機存取記憶體(Static Random Access Memory,SRAM)或動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。例如,在一些實作方式中,當裝置110是eMMC、SD卡或智慧手錶時,內部記憶體114是SRAM。在一些實作方式中,當裝置110是數位相機或媒體播放器時,內部記憶體114是DRAM。
在一些實作方式中,內部記憶體114是包括在裝置控制器112中的快取記憶體內,如第3圖所示。內部記憶體114儲存處理器113之執行指令所對應的指令代碼、以及處理器113在運行時期間所請求的資料及/或映射表格。
裝置控制器112將來自記憶體130的指令代碼和/或資料傳送到內部記憶體114。在一些實施方式中,記憶體130是被配置用於長期儲存指令及/或資料的NVM,例如NAND快閃記憶裝置、或一些其他合適的非揮發性記憶裝置,且裝置110是NVM系統。在記憶體130是NAND快閃記憶體的實作方式中,裝置110是快閃記憶裝置,例如快閃記憶卡,且裝置控制器112是NAND快閃記憶體控制器。例如,在一些實作方式中,當裝置110是eMMC或SD卡時,記憶體130是NAND快閃;在一些實作方式中,當裝置110是數位相機時,記憶體130是SD卡;且在一些實作方式中,當裝置110是媒體播放器時,記憶體130是硬碟。僅出於說明目的,以下描述使用NVM作為記憶體130的示例,使用SRAM作為內部記憶體114的示例,以及使用記憶體控制器作為裝置控制器112的示例。
如下面進一步詳細討論者,裝置控制器112配置為回應於來自主機裝置120的寫入指令而將資料和對應的映射頁面寫入記憶體130中,並回應於讀取指令從記憶體130讀取一個或多個映射表格和相應的資料。
記憶體130包括用於儲存使用者資料的使用者資料區域132和用於儲存多個映射頁面的映射表格區域134。每個映射頁面可以包含(或儲存)特定的最大數量的映射表格(例如,最大表格數量)。每個映射表格包含特定數量的順序邏輯位址。映射頁面中相鄰映射表格的邏輯位址也是順序的。映射表格中的邏輯位址對應於使用者資料區域132中相對的實體位址。使用者資料儲存在與實體位址對應的記憶體位置處的使用者資料區域132中。
內部記憶體114包括資料緩衝器115和表格快取116。資料緩衝器115可例如回應來自主機裝置120的寫入請求,快取/儲存來自主機裝置120的主機資料,此資料將被儲存在記憶體130中的使用者資料區域132中。資料緩衝器115還可以例如回應於來自主機裝置120的讀取請求,將從使用者資料區域132所擷取的使用者資料,快取/儲存在記憶體130中以被發送到主機裝置120。
當主機裝置120傳送寫入請求以儲存主機資料時,表格快取116可儲存基於待儲存或已儲存在使用者資料區域132中的主機資料所產生的映射表格。當映射表格的數量達到可包含在映射頁面中的映射表格的最大數量時,映射表格的數量被編程為映射表格區域134中的新映射頁面。
當主機裝置120傳送讀取請求以從使用者資料區域132讀取使用者資料時,如果表格快取116尚未包含用於使用者資料的對應映射表
格,裝置控制器112可決定對應於使用者資料的映射表格,且將來自映射表格區域134的對應映射頁面加載到表格快取116中。接著,裝置控制器112可以基於映射表格來識別與使用者資料對應的實體位址,且基於所識別的實體位址從使用者資料區域132擷取使用者資料。
第2A圖繪示沒有重複映射表格的映射頁面的示例200。如上所述,每個映射頁面包含特定最大數量N的映射表格,其中N是大於1的整數。每個映射表格包括特定的最大數量M的邏輯位址,其中M是大於1的整數。相鄰映射表格包括順序邏輯位址。例如,映射頁面1中的映射表格1包括從1到M的邏輯位址,而映射頁面1中的映射表格2包括從M+1到2M的邏輯位址。因此,映射頁面1中的映射表格N包括從M*(N-1)+1到M*N的邏輯位址。
映射頁面2相鄰於映射頁面1,且包括順序的映射表格直到映射頁面1中的映射表格。如第2A圖所示,映射頁面2包含從N+1到2N的映射表格,其包括從M*N+1到M*2N的邏輯位址。也就是說,映射頁面2中的第一映射表格N+1係順序於(或接續於)映射頁面1中的最後映射表格N,且映射表格N+1中的第一邏輯位址M*N+1是順序於(或接續於)映射表格N中的最後一個邏輯位址M*N。在映射頁面1和2中不存在重複的映射表格,且在映射頁面1和2中沒有重疊範圍,如第2A圖所示。
如果主機讀取指令包括例如從映射表格N+1到映射表格N+4的一個映射頁面內的邏輯位址,記憶體控制器(例如第1圖的裝置控制器112),只需讀取映射頁面2以從映射頁面2將映射表格N+1、N+2、N+3和N+4加載到表格快取,例如第1圖的表格快取116。
第2B圖繪示從相同的映射頁面讀取四個映射表格的示例時間成本。時間成本包括用於讀取主機讀取指令的指令(CMD)讀取時間、用於存取/讀取映射頁面的讀取延遲(latency)時間、以及用於將映射表格傳送到表格快取的資料傳送時間。讀取延遲是用於讀取(或存取)記憶體(例如第1圖的記憶體130)中的映射頁面的特定值。讀取延遲可以是記憶體的一個屬性,獨立於從映射頁面被傳輸的資料。例如,讀取記憶體中的映射頁面的讀取延遲時間可以是大約50微秒(μs)。在特定的例子中,四個映射表格具有2仟位元組(KB或kB)資料。CMD讀取時間小於1μs,傳輸2KB資料的資料傳輸時間約為20μs。因此,從相同的映射頁面2讀取四個映射表格的總時間成本大約為70μs。
請再參照第2A圖,如果主機讀取指令包括來自映射頁面1和映射頁面2之對應的映射表格(例如,從映射表格N-1到映射表格N+2)的邏輯位址範圍,記憶體控制器可能需要讀取映射頁面1和映射頁面2,以從映射頁面1加載兩個映射表格N-1和N以及從映射頁面2加載兩個映射表格N+1和N+2到表格快取。如上所述,從兩個不同的映射頁面讀取會導致超過NVM頁面邊界問題,從而導致更長的讀取時間。
第2C圖繪示從兩個不同映射頁面讀取四個映射表格的示例時間成本。對於讀取映射頁面1,時間成本包括CMD讀取時間(<1μs)、讀取延遲(~50μs)以及用於傳送映射表格N-1和N(~10μs)。為讀取映射頁面2,時間成本包括CMD讀取時間(<1μs)、讀取延遲(~50μs)、以及傳輸映射表格N+1和N+2中1KB資料的資料傳輸時間(~10μs)。因此,從兩個不同映射頁面讀取四個映射表格的總讀取成本大約為120μs,這比讀取來自同一映射
頁面(70μs)的四個映射表格的總讀取成本要長。特別是,當從相同的映射頁面讀取相同數量的資料時,與從兩個不同的映射頁面相比,可節省一個讀取等待時間(~50μs)。
第3A圖繪示根據一個或多個實施方式之包括具有重疊範圍的重複映射表格的映射頁面的示例300。映射頁面可以儲存在記憶裝置的記憶體,例如第1圖的裝置110的第1圖的記憶體130。記憶體耦接到記憶體控制器,例如第1圖的裝置控制器112。記憶體控制器與主機裝置(例如第1圖的主機裝置120)通訊。
記憶體控制器可以決定要從主機裝置讀取主機讀取指令的映射表格的最大數量Q,其中Q是大於1的整數。最大數量Q可以被稱為最大讀取數量。例如,主機讀取指令有關於讀取具有一定範圍的順序邏輯位址的資料。邏輯位址的最大數量不超過映射表格之特定數量的邏輯位址數量,其中P是不小於1的整數。如果主機讀取指令的邏輯位址起始於映射表格的起點,邏輯位址係包含在P映射表格中;如果主機讀取指令中的邏輯位址起始於映射表格的一位置,亦即不在映射表格的起點處,邏輯位址可以被包括在P+1映射表格中。因此,主機讀指令被讀取的映射表格的最大數目Q可以被決定為P+1,即,Q=P+1。
在一些情況下,記憶體控制器可以從記憶體裝置(例如記憶體控制器)與主機裝置之間的通訊協議,來決定映射表格的最大數量Q、邏輯位址的最大數量、或映射表格的特定數量P。例如,當主機裝置開始與記憶體裝置的通訊時,主機裝置和記憶體設備可以約定在主機讀取指令中待讀
取的邏輯位址的最大數量不大於特定數量P之映射表格中的邏輯位址的數量。
在一些情況下,記憶體控制器可基於記憶體裝置與主機裝置的通訊之間的歷史或實驗資料,來決定映射表格的最大數量Q、邏輯位址的最大數量、或映射表格的特定數量P。
為了防止超過一個NVM頁面的邊界問題,可以在記憶體的相鄰映射頁面中重複Q-1(或P)映射表格,使得儲存在相鄰映射頁面中的映射表格的範圍被重疊。以此方式,記憶體控制器可以只讀取一個映射頁面以取得主機讀取指令所需的映射表格。
如第3A圖所示,每個映射頁面包含最大數量X+2的映射表格,其中X是不小於0的整數。記憶體控制器決定被主機讀取指令讀取的映射表格的最大數量Q是3。因此,2個映射表格被決定為在相鄰映射頁面中被重複以取得重疊範圍。例如,映射頁面1包含從1到X+2的映射表格,映射頁面2包含從X+1到2X+2的映射表格。二個映射表格X+1和X+2被重複在映射頁面1和映射頁面2中。也就是說,映射頁面1中的最後二個映射表格被再次寫入映射頁面2中的頭二個映射表格。
第3B圖繪示從重疊範圍的重複映射表格的前端記憶體頁面所加載之映射表格的表格快取330的示例。例如,如果主機讀取指令需要讀取與映射表格X、X+1和X+2中的邏輯位址所關聯的資料,記憶體控制器能僅讀取記憶體頁面1並加載映射表格X、X+1、和X+2至表格快取,例如第1圖的表格快取116。
第3C圖繪示從重疊範圍的重複映射表格的後端映射頁面所加載之映射表格的表格快取350的示例。例如,如果主機讀取指令需要讀取與映射表格X+1、X+2和X+3中的邏輯位址所關聯的資料,記憶體控制器能僅讀取記憶體頁面2並加載映射表格X+1、X+2和X+3至表格快取。
第4A圖繪示根據一個或多個實施方式之寫入具有記憶體頁面之映射表格的重疊範圍的主機資料的方法400的示例。方法400可以由記憶體控制器(例如,第1圖的裝置控制器112)所執行。映射表格被儲存在記憶體控制器所耦接之記憶體(例如,第1圖的記憶體130)的映射頁面中。主機資料從主機裝置(例如,第1圖的主機裝置120)被發送。
主機資料被寫入記憶體(402)。在例如從介面(例如,第1圖的主機介面118)接收到主機資料之後,記憶體控制器可首先將主機資料緩衝在記憶體控制器之內部記憶體的資料緩衝器(例如,第1圖的資料緩衝器115),接著將主機資料從資料緩衝器寫入記憶體的使用者資料區域(例如,第1圖的使用者資料區域132)。記憶體控制器可以決定儲存在記憶體中的主機資料的實體位址。
邏輯位址和實體位址之間的映射被添加到記憶體控制器的內部記憶體的表格快取(例如,第1圖的表格快取116)中的一個或多個映射表格(404)。記憶體控制器可以基於與主機資料關聯的實體位址來決定邏輯位址。記憶體控制器可以將邏輯位址和實體位址之間的映射添加到表格快取中的最新映射表格及/或新的空白映射表格。
記憶體控制器決定是否已收集一個映射頁面的資料(406)。在記憶體中,一個映射頁面可以包含特定的最大數量的映射表格。記憶體控
制器通過決定表格快取是否包含特定的最大數量的映射表格來決定是否已收集一個映射頁面的資料。如果表格快取中的映射表格的數量小於特定的最大數量,記憶體控制器決定收集在表格快取中的映射資料小於一個映射頁面。如果表格快取中的映射表格的數量與特定的最大數量相同,則記憶體控制器決定已收集一個映射頁面的資料。
回應於決定已經在表格快取中收集少於一個映射頁面的資料,方法400返回到步驟402。回應於決定已收集一個映射頁面的資料,方法400前進到步驟408。
將一個映射頁面的資料編程到記憶體的映射頁面中(408)。記憶體控制器可以將表格快取中映射表格的數量編程到記憶體的映射表格區域的映射頁面中,例如第1圖的映射表格區域134。
從表格快取中映射表格的順序的終點將預定數量的映射表格拷貝到表格快取的起點處,以用於下一個映射頁面(410)。如上所述,記憶體控制器可以例如基於被主機讀取指令中讀取的映射表格的最大數量Q,來決定要重複的映射表格的數量P。在映射頁面中所編程的最後P個映射表格被重複到表格快取的起點處。如果有更多被寫入的主機資料,可以將映射頁面中所編程的其他映射表格從表格快取中清除,或者,如果沒有更多被寫入的主機資料,可以將映射頁面中所編程的其他映射表格保存在表格快取中。
記憶體控制器決定是否有額外的主機資料(412)。例如,記憶體控制器可以基於主機寫入請求決定是否有額外的主機資料被寫入。回應於決定有額外的主機資料,方法400返回到步驟402。回應於決定沒有額外
的主機資料,方法繼續到步驟414,其中主機寫入流程結束。記憶體控制器可以將流程中記憶體所寫入的主機資料所關聯的邏輯位址(和/或映射表格)的資訊傳輸到主機裝置。主機裝置可以使用邏輯位址來擷取儲存在記憶體中的主機資料。
第4B圖繪示根據一個或多個實施方式之讀取具有映射表格的重疊範圍的使用者資料的方法450的示例。方法450可以由記憶體控制器(例如,第1圖的裝置控制器112或第4A圖的記憶體控制器)所執行。映射表格被儲存在記憶體控制器所耦接之記憶體(例如,第1圖的記憶體130)的映射頁面中。主機資料從主機裝置(例如第1圖的主機裝置120)被發送的。
主機讀取指令被接收(452)。主機讀取指令包含的資訊指示將要從記憶體讀取的資料。資料資訊可以包括與資料關聯的邏輯位址範圍。資料資訊還可以包括包含位址範圍之映射表格的資訊。包括位址範圍之映射表格的數量不大於主機讀取指令的預定最大數量Q,如上所述。
記憶體控制器決定與主機讀取指令關聯的邏輯位址範圍是否屬於(hit)表格快取中的一個或多個映射表格(454)。表格快取可以是第1圖的表格快取116或第4A圖的表格快取。如上所述,表格快取可以儲存一個或多個編程到映射頁面中的映射表格。編程之後,如果沒有新的資料寫入,映射表格的數量可以保存在表格快取中。記憶體控制器決定與主機讀指令關聯的邏輯位址範圍,是否在表格快取中所保存的映射表格的數量之內,例如藉由決定邏輯位址範圍是在表格快取中所保存的映射表格的數量的最小邏輯位址與最大邏輯位址之間。
回應於決定與主機讀取指令關聯的邏輯位址範圍屬於表格快取中的映射表格,方法450前進到步驟464,其中與邏輯位址範圍關聯的使用者資料的實體位址係被取得。記憶體控制器可以決定包括表格快取中的邏輯位址範圍的映射表格,並基於所決定的映射表格中的映射來決定與邏輯位址範圍關聯的使用者資料的實體位址。接著,基於所取得的實體位址從記憶體讀取使用者資料(466)。
回應於決定與主機讀取指令關聯的邏輯位址範圍不在表格快取中、或者不完全在表格快取中,方法450前進到步驟456,其中記憶體控制器搜尋記憶體所儲存的映射頁面。記憶體控制器可以基於映射表格的資訊及/或與主機讀取指令關聯的邏輯位址的資訊來搜尋映射頁面中的映射表格。
記憶體控制器決定與主機讀取指令關聯的邏輯位址範圍的起始邏輯位址,是否在兩個相鄰映射頁面的重疊範圍內(458)。如上所述,相鄰的映射頁面可以包括重疊的範圍。例如,特定數量P的映射表格被重複且相鄰映射頁面中的映射表格的範圍被重疊,並且相鄰映射頁面的重疊範圍是重複的P個映射表格的邏輯位址的範圍。
回應於決定邏輯位址範圍的起始邏輯位址不在重疊範圍內,而是在兩個相鄰映射頁面中,記憶體控制器從包含邏輯位址範圍的此映射頁面加載包括起始邏輯位址的記憶體表格(460)。這個映射頁面可以是兩個相鄰映射頁面的前端或後端的映射頁面。在一些情況下,如果起始邏輯位址小於重疊範圍中的最小邏輯位址並且在前端映射頁面中,記憶體控制器從前端映射頁面加載包括邏輯位址範圍的記憶體表格。在一些情況
下,如果起始邏輯位址大於重疊範圍中的最大邏輯位址並且在後端映射頁面中,記憶體控制器從後端映射頁面加載包括邏輯位址範圍的記憶體表格。否則,回應於決定邏輯位址範圍的起始邏輯位址處於重疊範圍內,記憶體控制器從後端映射頁面加載包括邏輯位址範圍的記憶體表格(462)。
例如,如上述第3A圖所示,映射頁面1和2具有重複的映射表格X+1和X+2,且具有的重疊範圍包括映射表格X+1和X+2的邏輯位址範圍。如果起始邏輯位址在映射表格X中,亦即不在重疊範圍內,記憶體控制器決定讀取記憶體頁面1以從記憶體頁面1將記憶體表格X、X+1、X+2加載到快取表格中,如上述第3B圖所示。如果起始邏輯位址位在映射表格X+1中,亦即處於重疊範圍,記憶體控制器決定讀取記憶體頁面2以將記憶體表X+1、X+2和X+3加載到快取表格中,如第3C圖所示。在任何一種情況下,只讀取一個映射頁面以將包括邏輯位址範圍的映射頁面加載到表格快取中。
在從前端/後端映射頁面加載記憶體表格(步驟460)、或從後端映射頁面加載記憶體表格(步驟462)之後,方法450繼續進行步驟464和步驟466,如上所述。
所揭露的和其他示例可以被實現為一個或多個電腦程式產品,例如編碼在電腦可讀取媒體上的電腦程式指令的一個或多個模組,以由資料處理裝置執行或控制資料處理裝置的操作。電腦可讀取媒體可以是機器可讀取儲存裝置、機器可讀取儲存基板、記憶裝置、或上述中的一個或多個的組合。術語“資料處理裝置”涵蓋用於處理資料的所有設備、裝置和機器,例如包括可編程處理器、電腦、或多個處理器或電腦。除了硬
體之外,此設備還可包括為所討論的電腦程式創建執行環境的代碼,例如構成處理器韌體、協議堆疊(stack)、資料庫管理系統、作業系統、或者一個或多個處理器的組合的代碼。
系統可以涵蓋用於處理資料的所有設備、裝置、和機器,例如包括可編程處理器、電腦、或多個處理器或電腦。除了硬體之外,系統還可包括為所討論的電腦程式創建執行環境的代碼,例如構成處理器韌體、協議堆疊、資料庫管理系統、作業系統、或者一個或多個處理器的組合的代碼。
電腦程式(也稱為程式、軟體、軟體應用程序、指令碼(script)、或代碼)可以任何形式的編程語言而被編寫,包括編譯(compile)或解譯的語言,並且可以以任何形式部署,包括獨立程式或適合用於電腦環境的模組、組件、子程序或其他單元。電腦程式不一定對應於文件系統中的文件。程式可以儲存在保存其他程式或資料的文件(例如,標記語言文檔(markup language document)所儲存的一個或多個指令碼)的一部分中、專用於所討論的程式的單一文件中、或者儲存在多個協同文件中(例如,儲存一個或多個模組、子程式、或部分代碼的文件)。電腦程式可以部署以執行在一台電腦上、或執行在位於一個站點或分散在多個站點而通過通訊網路互連的多台電腦上。
本文檔中描述的方法和邏輯流程可以由進行一個或多個電腦程式的一個或多個可編程處理器所執行,以執行在此描述的功能。處理和邏輯流程也可以由專用邏輯電路所執行且設備也可以實現為專用邏輯電
路,例如,場可程式閘陣列(field programmable gate array,FPGA)、或特定用途積體電路(application specific integrated circuit,ASIC)。
舉例來說,適用於執行電腦程式的處理器包括通用和專用微處理器、以及任何類型的數位電腦的任何一個或多個處理器。一般而言,處理器將從唯讀記憶體或隨機存取記憶體或兩者接收指令和資料。電腦的基本元件可以包括用於執行指令的處理器和用於儲存指令和資料的一個或多個記憶裝置。一般而言,電腦還可以包括一個或多個用於儲存資料的大容量儲存裝置,例如磁碟、磁光碟(magneto optical disks)、或光碟,或者可操作地耦接以從大容量儲存裝置接收資料、或將資料傳輸到大容量儲存裝置、或兩者。然而,電腦不需要這種裝置。適用於儲存電腦程式指令和資料的電腦可讀取媒體可以包括所有形式的非揮發性記憶體、媒體、和記憶裝置,例如包括半導體記憶裝置,例如EPROM、EEPROM、快閃記憶裝置;磁碟。處理器和記憶體可以由專用邏輯電路補充或併入其中。
儘管本文件可以描述許多細節,但是這些不應該被解釋為對所請求保護的發明或可以請求保護的發明的範圍有所限制,而是作為特定實施例的特殊特徵的描述。在單獨實施例的上下文的本文檔中所描述的某些特徵,也可以在單個實施例中組合實現。相反地,在單個實施例的上下文中所描述的各種特徵,也可以在多個實施例中單獨地或以任何合適的子組合來實現。再者,雖然上文可以將特徵描述為在某些組合中作用並且甚至最初的申請專利專範圍所述者係如此,但是在一些情況下可以從所要求的組合中刪除一個或多個特徵,並且所請求保護的組合可以針對子組合或子組合的變異。類似地,雖然在附圖中以特定次序來描述操作,但這不應
被理解為該被要求按所示的特定次序或按順序的次序來執行這樣的操作,或者不應被理解該被要求執行所有示出的操作以實現期望的結果。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
Claims (20)
- 一種記憶系統,藉由重疊複數個映射頁面的範圍來管理一記憶體,該記憶系統包括:一記憶體控制器,耦接到該記憶體且配置以:寫入輸入資料至該記憶體內,所寫入的該輸入資料具有對應的實體位址;添加該些實體位址及邏輯位址之間的映射至該記憶體控制器的一表格快取內的一個或多個映射表格;決定該表格快取內的複數個映射表格是否達到一臨界數量;編程該表格快取內的該些映射表格至該記憶體內的一第一映射頁面;及將在該第一映射頁面的一終點處所編程的一個或多個特定映射表格,拷貝(copy)到接續之一第二映射頁面中的該表格快取的一起點,以於該第一映射頁面及該第二映射頁面之間形成映射表格的一重疊範圍。
- 如申請專利範圍第1項所述之記憶系統,其中該記憶控制器被配置以將該第一映射頁面的該終點處的一個或多個特定映射表格,編程到該第二映射頁面中的一起點;其中該一個或多個特定映射表格係被重複到該第一映射頁面及該第二映射頁面中,且該一個或多個特定映射表格的一邏輯位址範圍形成該第一映射頁面及該第二映射頁面的該重疊範圍。
- 如申請專利範圍第1項所述之記憶系統,其中該記憶體內的各該映射頁面係能儲存一最大表格數量的映射表格;及其中該臨界數量係相同於該最大表格數量。
- 如申請專利範圍第1項所述之記憶系統,其中該記憶體控制器配置以從一主機裝置接收一主機讀取指令;其中該主機讀取指令係允許以讀取與該記憶體內之一最大讀取數量的映射表格所包含之一邏輯位址範圍關聯的使用者資料;及其中該一個或多個特定映射表格的一數量係相同於該最大讀取數量減1。
- 如申請專利範圍第4項所述之記憶系統,其中用於該主機讀取指令之該最大讀取數量的映射表格,係基於該記憶體控制器及該主機裝置之間的通訊協定而決定。
- 如申請專利範圍第4項所述之記憶系統,其中該邏輯位址範圍內的邏輯位址的一數量係不大於該一個或多個特定映射表格內所包含的邏輯位址的一數量。
- 如申請專利範圍第1項所述之記憶系統,其中該記憶體控制器配置以基於該些實體位址及該表格快取內之映射表格之資訊,以決定與該些實體位址映射的該些邏輯位址。
- 一種記憶系統,藉由重疊複數個映射頁面的範圍來管理一記憶體,該記憶系統包括:一記憶體控制器,耦接至該記憶體,且配置以:決定與一指令關聯的一邏輯位址範圍;搜尋複數個特定映射表格,該些特定映射表格包括該記憶體內複數個映射頁面中的該邏輯位址範圍,其中該記憶體的一個映射頁面包含順序排序之複數個映射表格,而該記憶體的複數個相鄰映射頁面包含一個或多個具有重疊範圍之重複映射表格;決定該邏輯位址範圍的一起始位址是否處於該記憶體內之一第一映射頁面及一第二映射頁面的一對應的重疊範圍內,該第二映射頁面係接續於該第一映射頁面,該第一映射頁面及該第二映射頁面包含一個或多個對應的重複映射表格,該對應的重複映射表格的一邏輯位址範圍形成該第一映射頁面及該第二映射頁面之該對應的重疊範圍;基於該起始位址是否在該第一映射頁面及該第二映射頁面的該對應的重疊範圍內的決定結果,決定將從該第一映射頁面及該第二映射頁面中的哪一個來加載該些特定映射表格;以及從所決定的該映射頁面加載該些特定映射表格。
- 如申請專利範圍第8項所述之記憶系統,其中該記憶體控制器配置以:回應於決定該起始位址在該第一映射頁面及該第二映射頁面的該重疊範圍內,從該第二映射頁面加載該些特定映射表格。
- 如申請專利範圍第8項所述之記憶系統,其中該記憶體控制器配置以:回應於決定該邏輯位址範圍的該起始位址係小於該重疊範圍的一最小邏輯位址且位在該第一映射頁面內,從該第一映射頁面加載該些特定映射表格;以及回應於決定該邏輯位址範圍的該起始位址係大於該重疊範圍的一最大邏輯位址且位在該第二映射頁面內,從該第二映射頁面加載該些特定映射表格。
- 如申請專利範圍第8項所述之記憶系統,其中該記憶體控制器係配置以:基於所加載之該些特定映射表格,取得被映射至該些邏輯位址範圍之複數個實體位址;及讀取從該記憶體所取得之該些實體位址具有的使用者資料。
- 如申請專利範圍第8項所述之記憶系統,其中該第一映射頁面包括於該第一映射頁面的終點的所對應重複之該些映射表格,且該第二映射頁面包括於該第二映射頁面的起點的所對應重複之該些映射表格。
- 如申請專利範圍第8項所述之記憶系統,其中該指令係允許以讀取與該記憶體內之一最大讀取數量的映射表格所包含的複數個邏輯位址關聯的使用者資料;以及其中,對應重複之該些映射表格的數量係相同於該最大讀取數量減1。
- 如申請專利範圍第13項所述之記憶系統,其中用於該指令的該最大讀取數量的映射表格,係基於該記憶體控制器及傳送該指令之一主機裝置之間的通訊協定而決定。
- 如申請專利範圍第8項所述之記憶系統,其中該記憶體控制器係配置以:決定與一第二指令關聯之一邏輯位址的一第二範圍,該第二範圍係包含於該記憶體控制器的一表格快取內的複數個第二特定映射表格;基於該表格快取內的該些第二特定映射表格,取得映射至該邏輯位址的該第二範圍的複數個第二實體位址;及讀取從該記憶體所取得之該些第二實體位址具有的使用者資料。
- 如申請專利範圍第8項所述之記憶系統,其中該記憶體控制器係配置以:回應於決定該邏輯位址範圍係不包含在該記憶體控制器之一表格快取內的複數個第二特定映射表格,搜尋包含在該記憶體的該些映射頁面內的該邏輯位址範圍的該些特定映射表格。
- 一種記憶系統,藉由重疊複數個映射頁面的範圍來管理一記憶體,該記憶系統包括:一記憶體控制器,耦接到該記憶體,且配置以:從一主機裝置接收一主機寫入指令;將與該主機寫入指令關聯之主機資料寫入至該記憶體內,所寫入之該主機資料具有該記憶體內之對應的複數個實體位址;添加該些實體位址及邏輯位址之間的映射,以將一映射資料映射至該記憶體控制器的一快取內;將該快取內的該映射資料編程至該第一映射頁面及相鄰之該第二映射頁面內,其中該第一映射頁面及相鄰之該第二映射頁面具有包含特定映射資料的邏輯位址的一重疊範圍;從該主機裝置接收一主機讀取指令;決定與該主機讀取指令關聯的一邏輯位址範圍;從該記憶體內的一特定映射表格,將包含該邏輯位址範圍之對應的映射資料加載至該快取;基於所加載之對應的該映射資料,取得映射至該邏輯位址範圍的複數個實體位址;以及讀取從該記憶體所取得之該些實體位址具有的使用者資料。
- 如申請專利範圍第17項所述之記憶系統,其中該記憶體控制器配置以將該快取內的該映射資料編程至該第一映射頁面及相鄰之該第二映射頁面內,係藉由:決定該快取內的映射表格的一數量達到能被儲存至該記憶體的一記憶體頁面內之映射表格的一表格數量;將該快取內的該些映射表格編程至該記憶體內的該第一映射頁面內;將編程在該第一映射頁面之一終點處的一個或多個特定映射表格,拷貝至該快取的一起點;以及將該第一映射頁面的一個或多個特定映射表格,編程在該第二映射頁面的一起始處;其中該一個或多個特定映射表格係該第一映射頁面及該第二映射頁面之重複的特定映射資料,其中該一個或多個特定映射表格的一範圍形成該第一映射頁面及該第二映射頁面的該重疊範圍。
- 如申請專利範圍第17項所述之記憶系統,其中該記憶體控制器配置以:搜尋對應於該記憶體之映射頁面內的該邏輯位址範圍的該映射資料;決定該邏輯位址範圍之一起始位址是否位在該記憶體內的該第一映射頁面及該第二映射頁面的該重疊範圍內;基於該起始位址是否在該第一映射頁面及該第二映射頁面之該重疊範圍內的決定結果,決定將從該第一映射頁面和該第二映射頁面中的哪一個來加載該些特定映射表格;以及從該記憶體中之該特定映射表格,將包含該邏輯位址範圍之對應的該映射資料加載至該快取。
- 如申請專利範圍第19項所述之記憶系統,其中該記憶體控制器配置以:回應於決定該起始位址係在該第一映射頁面及該第二映射頁面之該重疊範圍內,從該第二映射頁面加載對應之該映射資料;回應於決定該邏輯位址範圍的該起始位址係小於該重疊範圍之一最小邏輯位址且位在該第一映射頁面內,從該第一映射頁面加載對應之該映射資料;及回應於決定該邏輯位址範圍的該起始位址係大於該重疊範圍之一最大邏輯位址且位在該第二映射頁面內,從該第二映射頁面加載對應之該映射資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/012,321 | 2018-06-19 | ||
US16/012,321 US10956318B2 (en) | 2018-06-19 | 2018-06-19 | Overlapping ranges of pages in memory systems |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI676103B true TWI676103B (zh) | 2019-11-01 |
TW202001573A TW202001573A (zh) | 2020-01-01 |
Family
ID=68839621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107126385A TWI676103B (zh) | 2018-06-19 | 2018-07-30 | 記憶系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10956318B2 (zh) |
CN (1) | CN110618945B (zh) |
TW (1) | TWI676103B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102018128980A1 (de) * | 2018-11-19 | 2020-05-20 | Technische Universität München | Verfahren und vorrichtung zum betreiben einer speicheranordnung |
KR20200095103A (ko) | 2019-01-31 | 2020-08-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
KR20200117256A (ko) * | 2019-04-03 | 2020-10-14 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11327907B2 (en) * | 2020-07-08 | 2022-05-10 | Macronix International Co., Ltd. | Methods and apparatus for improving SPI continuous read |
US11663185B2 (en) * | 2020-07-31 | 2023-05-30 | EMC IP Holding Company LLC | Techniques for cross-validating metadata pages |
US20220374360A1 (en) * | 2021-05-18 | 2022-11-24 | Macronix International Co., Ltd. | Memory device and method for accessing memory device |
US11977783B2 (en) | 2021-10-28 | 2024-05-07 | Silicon Motion, Inc. | Method and apparatus for performing data access control of memory device with aid of predetermined command |
US12061800B2 (en) | 2021-10-28 | 2024-08-13 | Silicon Motion, Inc. | Method and apparatus for performing data access control of memory device with aid of predetermined command |
CN114238158A (zh) * | 2021-12-17 | 2022-03-25 | 合肥沛睿微电子股份有限公司 | 数据存储管理方法和存储装置 |
US20240095024A1 (en) * | 2022-06-09 | 2024-03-21 | Nvidia Corporation | Program code versions |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101073070A (zh) * | 2004-08-24 | 2007-11-14 | 塞门铁克操作公司 | 提供数据存储器内位置的修改历史的系统和方法 |
CN1902599B (zh) * | 2003-12-30 | 2011-12-21 | 桑迪士克股份有限公司 | 将数据更新到非易失性存储器系统和操作该系统的方法 |
CN105830039A (zh) * | 2013-12-17 | 2016-08-03 | 日本电气株式会社 | 写入信息存储设备、方法和记录介质 |
TWI615771B (zh) * | 2015-09-17 | 2018-02-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料讀取方法 |
US9940129B2 (en) * | 2015-04-24 | 2018-04-10 | Optimum Semiconductor Technologies, Inc. | Computer processor with register direct branches and employing an instruction preload structure |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3610574B2 (ja) * | 2001-08-15 | 2005-01-12 | 日本電気株式会社 | ディスクアレイ装置 |
CN101425041B (zh) * | 2007-10-30 | 2010-09-15 | 安凯(广州)微电子技术有限公司 | 在nand flash存储器上建立fat文件系统的优化方法 |
KR20110086690A (ko) * | 2008-10-30 | 2011-07-29 | 인터내셔널 비지네스 머신즈 코포레이션 | 저장 장치에 데이터 쓰기를 실행하는 방법 및 시스템 |
US8825945B2 (en) * | 2011-01-31 | 2014-09-02 | Marvell World Trade Ltd. | Mapping different portions of data to different pages of multi-level non-volatile memory |
TWI587302B (zh) * | 2014-12-09 | 2017-06-11 | 華邦電子股份有限公司 | 記憶體編程方法以及記憶體裝置 |
CN105825890B (zh) * | 2015-01-09 | 2019-10-01 | 华邦电子股份有限公司 | 存储器编程方法以及存储器装置 |
CN106874216B (zh) * | 2015-12-11 | 2020-07-10 | 捷鼎新加坡私人有限公司 | 加快在不连续页面写入数据的计算机系统及其方法 |
KR102615593B1 (ko) * | 2016-05-04 | 2023-12-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2018
- 2018-06-19 US US16/012,321 patent/US10956318B2/en active Active
- 2018-07-30 TW TW107126385A patent/TWI676103B/zh active
- 2018-08-03 CN CN201810876652.XA patent/CN110618945B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1902599B (zh) * | 2003-12-30 | 2011-12-21 | 桑迪士克股份有限公司 | 将数据更新到非易失性存储器系统和操作该系统的方法 |
CN101073070A (zh) * | 2004-08-24 | 2007-11-14 | 塞门铁克操作公司 | 提供数据存储器内位置的修改历史的系统和方法 |
CN105830039A (zh) * | 2013-12-17 | 2016-08-03 | 日本电气株式会社 | 写入信息存储设备、方法和记录介质 |
US9940129B2 (en) * | 2015-04-24 | 2018-04-10 | Optimum Semiconductor Technologies, Inc. | Computer processor with register direct branches and employing an instruction preload structure |
TWI615771B (zh) * | 2015-09-17 | 2018-02-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料讀取方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190384706A1 (en) | 2019-12-19 |
US10956318B2 (en) | 2021-03-23 |
CN110618945A (zh) | 2019-12-27 |
CN110618945B (zh) | 2021-11-16 |
TW202001573A (zh) | 2020-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI676103B (zh) | 記憶系統 | |
US11188259B2 (en) | Storage device and method of operating the storage device | |
US11030094B2 (en) | Apparatus and method for performing garbage collection by predicting required time | |
US7594067B2 (en) | Enhanced data access in a storage device | |
JP7358594B2 (ja) | メモリシステム | |
US20160299715A1 (en) | Storage system capable of invalidating data stored in a storage device thereof | |
US10360155B1 (en) | Multi-tier memory management | |
US20150098271A1 (en) | System and method of storing data in a data storage device | |
CN110032333B (zh) | 存储器系统及其操作方法 | |
EP2530612A1 (en) | Mount-time unmapping of unused logical addresses in non-volatile memory systems | |
KR20200016075A (ko) | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 | |
JP7381678B2 (ja) | メモリシステム | |
KR20200043676A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR20200086143A (ko) | 저장 장치 및 그것의 데이터 처리 방법 | |
KR102281750B1 (ko) | 비-휘발성 메모리에서 데이터 유효성 추적 | |
KR20200019421A (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
CN112835811A (zh) | 存储器系统及其操作方法 | |
KR20210050592A (ko) | 저장 디바이스 상의 네임스페이스에서의 오류 검사 | |
US8782345B2 (en) | Sub-block accessible nonvolatile memory cache | |
US11126558B2 (en) | Data storage device and control method for non-volatile memory | |
US20140325168A1 (en) | Management of stored data based on corresponding attribute data | |
CN113934666B (zh) | 数据接口桥的预取 | |
US11494306B2 (en) | Managing data dependencies in a transfer pipeline of a hybrid dimm | |
KR20210039185A (ko) | 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치 | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 |