TWI559138B - 記憶體裝置及記憶體管理方法 - Google Patents
記憶體裝置及記憶體管理方法 Download PDFInfo
- Publication number
- TWI559138B TWI559138B TW103144424A TW103144424A TWI559138B TW I559138 B TWI559138 B TW I559138B TW 103144424 A TW103144424 A TW 103144424A TW 103144424 A TW103144424 A TW 103144424A TW I559138 B TWI559138 B TW I559138B
- Authority
- TW
- Taiwan
- Prior art keywords
- segment
- logical
- physical memory
- memory
- memory segment
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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
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)
- Memory System (AREA)
Description
本發明是有關於包括記憶體管理之記憶體裝置及系統。
用於大型儲存器之儲存媒體可以比用於高速存取之主記憶體裝置之媒體慢三個數量級以上。在主記憶體與儲存器之間的這種性能差距,已經變成計算系統的一個重要設計議題,這是因為多數應用程式需要在主記憶體與儲存器之間密集的輸入/輸出。某些類型的非揮發性記憶體(例如相變化記憶體),因為其位元組可定址能性、非揮發性、容量擴展性,以及高存取效能,故可被使用於主記憶體及存儲器兩者。然而,非揮發性記憶體常具有耐寫度限制。對於非揮發性記憶體(例如相變化材料式的記憶體)之耐寫度限制可以是大約106-109循環,而對於動態隨機存取記憶體(DRAM)之讀取/寫入限制可以是1015循環以上。在不需要關於循環計算之記憶體管理的情況下,某些部分之儲存媒體可能被過度使用,且過早地磨損或甚至導致系統故障。這些問題特別有可能發生在將非揮發性記憶體使用於主記憶體及大量儲存兩
者時的狀況。
理想上是可提供一種記憶體管理方案,以允許非揮發性記憶體(例如相變化記憶體)用於多個目的(例如供主記憶體及大量儲存兩者使用),同時保持低的輸入/輸出流量。
提供一種方法,用於管理一種具有複數個實體記憶體區段之記憶體裝置。基於使用規格(例如用以適合主記憶體之快速讀取規格之類別,及用以適合大量儲存之耐久性規格之類別),一邏輯記憶體空間係被分類成複數個分類。基於複數個分類中之邏輯位址之分類,及基於實體記憶體區段之使用統計,複數個實體記憶體區段係被配置至對應的邏輯位址。一個資料結構係被維持以記錄邏輯記憶體空間中之邏輯位址與實體記憶體區段之實體位址之間的轉換。資料結構可包括關於各個分類之邏輯至實體轉換表,以及一轉譯後備緩衝器(Translation Lookaside Buffer,TLB)被一記憶體管理系統使用以改善邏輯至實體位址轉換之速度。複數個分類可包括一第一分類(例如適合長期儲存使用),以及一第二分類(例如適合主記憶體使用),第二分類具有不同於第一分類之使用統計需求。具有第二分類之邏輯位址所映射至之高度使用的實體區段,可藉由將它們的邏輯位址重新定址到被配置至具有第一分類之邏輯位址之實體區段,而受到保護免於超過耐久度限制。資料結構可被更新,以記錄重新定址的邏輯位址。
在於此所說明之技術中,閒置實體記憶體區段之複
數組儲存桶(bucket)所包含之識別符,係可基於閒置記憶體區段之使用統計而被維持。一儲存桶係為一資料結構,可包括一連串的實體區段,該些實體區段具有符合應用至儲存桶之使用基準的使用統計。複數組儲存桶可一對一或多對一地對應至複數個分類。一閒置記憶體區段可例如藉由更新邏輯至實體位址的映射,而被配置至對應於符合特定分類之使用統計的一邏輯位址,該邏輯位址係為一儲存桶之複數個分類之一特定分類中的邏輯位址。當一閒置記憶體區段被配置時,閒置記憶體區段係從儲存桶被移除。舉例而言,如果作業系統釋放記憶體空間,或如果其不再符合關於分類之使用基準的話,則一實體記憶體區段可被取消配置。當一實體記憶體區段被取消配置並變成一閒置記憶體區段時,該實體記憶體區段係被加至複數組儲存桶之一組中的一儲存桶,其中該取消配置的實體記憶體區段具有一使用統計,該使用統計與該實體記憶體區段所加入之該儲存桶的使用統計相符合。
提供鏈結及取消鏈結命令,以將主記憶體使用之邏輯記憶體區段重新定址至配置為長期儲存器使用配置之實體區段,而不是實體上從一長期儲存裝置複製資料至一主記憶體裝置,藉以降低在主記憶體與長期儲存器之間的載入及儲存資料方面的成本。提供一閒置命令,以允許主機系統釋放一不再被主機系統所使用之一邏輯記憶體區段給主記憶體使用。
本發明之其他實施樣態及優點可在圖式、詳細說明與隨後之申請專利範圍獲得瞭解。
100‧‧‧記憶體管理系統
101‧‧‧邏輯主記憶體空間
102‧‧‧邏輯儲存空間
110‧‧‧主機系統
121‧‧‧主記憶體裝置驅動器
122‧‧‧儲存裝置驅動器
130‧‧‧記憶體控制器/記憶體轉換層
132‧‧‧主記憶體管理器
134‧‧‧儲存管理器
136‧‧‧空間管理器
138‧‧‧轉譯後備緩衝器
140‧‧‧記憶體控制器
170‧‧‧記憶體裝置/實體區段碼
180‧‧‧實體記憶體空間
190‧‧‧管理空間
210‧‧‧記憶體區段項目
211‧‧‧實體位址/實體記憶體區段位址
212‧‧‧分頁碼
213‧‧‧區段碼
214‧‧‧間接位元
215‧‧‧實體記憶體分頁/邏輯儲存分頁
280‧‧‧記憶體區段項目
284‧‧‧數值
290‧‧‧儲存區段項目
291‧‧‧實體記憶體區段位址
310‧‧‧區段位址
320‧‧‧區段偏移
330‧‧‧“硬體查找表”部件
340‧‧‧實體區段位址
350‧‧‧實體裝置位址
410‧‧‧區段位址
420‧‧‧區段偏移
430‧‧‧位址轉換
440‧‧‧實體區段位址
450‧‧‧實體位址
510‧‧‧方塊
518‧‧‧方塊
528‧‧‧頭部
538‧‧‧圓形
540‧‧‧捨棄閾值
550‧‧‧降級閾值
610至680‧‧‧步驟
710至750‧‧‧步驟
810至890‧‧‧步驟
910至950‧‧‧步驟
1010至1060‧‧‧步驟
1210至1230‧‧‧步驟
1310至1350‧‧‧步驟
第1圖為記憶體管理系統之一例的方塊圖。
第1A圖顯示一主機系統中之主記憶體空間及儲存空間及一記憶體裝置中之對應的實體記憶體區段。
第2圖顯示一種資料結構,用以在邏輯記憶體空間中之邏輯位址與實體記憶體區段之實體位址之間轉換用。
第2A圖顯示使用第2圖所顯示之資料結構之邏輯至實體位址轉換之例子。
第3圖顯示主記憶體管理器之一實施例。
第4圖顯示儲存器管理器之一實施例。
第5圖顯示空間管理器之一實施例。
第6圖為用於將一閒置記憶體區段配置至記憶體裝置之邏輯記憶體空間中具有第一分類之邏輯記憶體區段之流程圖。
第7圖為用於捨棄一實體記憶體區段之流程圖。
第8圖為用於將一閒置記憶體區段配置至記憶體裝置之邏輯記憶體空間中具有第二分類之邏輯記憶體區段之流程圖。
第9圖為用於降級一實體記憶體區段之流程圖。
第10圖為關於一鏈結命令之流程圖。
第11圖為使用如第10圖中之鏈結命令之一例子。
第12圖為關於一取消鏈結命令之流程圖。
第13圖為關於一閒置命令之流程圖。
以下參考圖式提供本發明之實施例之詳細說明。下
述說明一般將參考特定的構造實施例及方法。應理解的是,本發明並非限制於揭露的實施例及方法,本發明可藉由使用其他特徵、元件、方法及實施例而被實行。較佳實施例係被描述以說明本發明,而非限制其範圍,其範圍是由申請專利範圍所定義。熟習本項技藝者將認定在隨後之說明上之各種等效變化。各種實施例中之相同的元件通常指向具有相同的參考數字。
第1圖為記憶體管理系統100之一例的方塊圖,記憶體管理系統100包括一主機系統110、一記憶體控制器140及一記憶體裝置170。主機系統110係耦接至一主記憶體裝置驅動器121及一儲存裝置驅動器122。記憶體控制器140包括一記憶體轉換層130,記憶體轉換層130包括一主記憶體管理器132、一儲存管理器134、一空間管理器136以及一轉譯後備緩衝器(TLB)138。記憶體裝置170包括實體記憶體空間180(包括數個實體記憶體區段),以及一管理空間190。實體記憶體空間180中之實體記憶體區段可被配置,以供主記憶體使用或較長期儲存使用。管理空間可儲存一記憶體區段表、一儲存區段表、一閒置實體記憶體區段之儲存桶清單(bucket list),以及由鏈結及取消鏈結命令所使用之鏈結資訊,如說明書中所說明的。記憶體控制器140係耦接至主機系統110、主記憶體裝置驅動器121、儲存裝置驅動器122與記憶體裝置170。雖然只顯示一個記憶體裝置,但記憶體控制器可被耦接至並控制多個記憶體裝置。主機系統經由主記憶體裝置驅動器121及儲存裝置驅動器122發佈主記憶體需求、
儲存需求、一閒置命令、一鏈結命令以及一取消鏈結命令給記憶體控制器。
如果一邏輯位址係由一主記憶體請求而被要求以供主記憶體使用,則主記憶體管理器132操作從請求的邏輯位址至記憶體裝置中之對應的實體位址之位址轉換。如果一邏輯位址係由一儲存請求而被要求以供長期儲存使用,則儲存管理器134操作從請求的邏輯位址至記憶體裝置中之對應的實體位址之位址轉換。如果請求的邏輯位址並未映射至任何實體位址,則調用空間管理器136,以基於耐寫度配置供主記憶體管理器或儲存管理器用之一實體記憶體區段。轉譯後備緩衝器(TLB)138儲存一邏輯位址及一實體位址之間的轉換結果,用於改善位址轉換之性能,其中該邏輯位置係由主機系統110所使用之一邏輯區段之邏輯位址,以及該實體位置係由記憶體裝置170所使用之一實體區段之一對應的實體位址。
記憶體裝置之邏輯記憶體空間係基於使用規格而被分類成複數個分類。這些使用規格可包括具有短期儲存使用且供一中央處理單元(CPU)快速存取之主記憶體,以及具有長期儲存使用之儲存記憶體。複數個分類可包括一第一分類(例如適合長期儲存使用),以及一第二分類(例如適合主記憶體使用),第二分類具有不同於第一分類之使用統計需求。
第1A圖顯示主機系統中之主記憶體空間及儲存空間,以及在一記憶體裝置中之對應的實體記憶體區段。在一個實
施例中,在具有64.1GB(十億位元組)大小之一記憶體裝置中,64.1GB之100MB(亦即,0.1GB)可被保存以供管理空間(例如190)用,而64.1GB之64GB可被保存以供實體記憶體空間(例如180)中之實體記憶體區段用。主機系統可維持對應於實體記憶體空間180之64GB之一邏輯記憶體空間,包括供主記憶體使用之一邏輯主記憶體空間(例如101),以及供長期儲存使用之一邏輯儲存空間(例如102)。例如,邏輯主記憶體空間101可具有8GB,而邏輯儲存空間102可具有56GB。雖然於此例子中,供主記憶體使用之記憶體與供長期儲存使用之記憶體之比率係為8比56,但此比率可以由記憶體管理系統所定義。
第2圖顯示一種資料結構,用以在邏輯記憶體空間中之邏輯位址與記憶體裝置中之實體記憶體區段之實體位址之間轉換用。資料結構可包括一個供為長期儲存使用所配置之實體記憶體區段之儲存區段表,以及一個供主記憶體使用所配置之實體記憶體區段之記憶體區段表。儲存區段表與記憶體區段表可被儲存於管理空間(例如190)中。
在一個實施例中,複數個實體記憶體區段中之每個實體記憶體區段可具有一固定大小,例如4MB(百萬位元組),並可被使用作為供記憶體配置及位址轉換用之單元。每個實體記憶體區段可更進一步被分為固定大小的實體分頁(例如,4KB分頁),且每個實體分頁可包括一固定數目之實體線,其中一實體線之大小係與一CPU(中央處理單元)之快取線大小(例如,64B)相
同。一快取線係為CPU用以存取記憶體之基本單元。記憶體裝置中之每個實體記憶體區段可輪流地被配置以供主記憶體使用,藉由儘可能公平地分配寫入至每個實體記憶體區段,以使非揮發性記憶體作為主記憶體之耐寫度問題可被解決。
記憶體裝置之邏輯記憶體空間係基於使用規格被分類成複數個分類。例如,使用規格可包括關於主記憶體使用及關於長期儲存使用之規格。每個分類可更進一步分為固定大小的邏輯記憶體區段,其具有與實體記憶體區段相同的大小。每個邏輯記憶體區段可更進一步分為具有與實體分頁相同大小之固定大小的邏輯分頁,以及具有與實體線相同大小之邏輯線。因此,一邏輯記憶體區段可被映射至一實體記憶體區段。
儲存區段表包括數個儲存區段項目。每個儲存區段項目(例如290)包括映射至一對應的邏輯區段之一實體記憶體區段之位址(例如291)以供長期儲存使用。當記憶體裝置中之一實體區段被配置至儲存空間中之一邏輯記憶體區段時,實體區段之實體位址被記錄在儲存區段項目中。同樣地,記憶體區段表包括數個記憶體區段項目(例如210、280)。每個記憶體區段項目(例如210)包括映射至一對應的邏輯區段之一實體記憶體區段之位址(例如211)以供主記憶體使用。當記憶體裝置中之一實體區段係被配置至主記憶體空間中之一邏輯記憶體區段時,實體區段之實體位址係被記錄在記憶體區段項目中。
每個記憶體區段項目(例如210)亦可包括一分頁碼
(例如212)、一區段碼(例如213)以及關於主記憶體空間中之一區段中的每個分頁之一間接位元(例如214),間接位元係連結至供長期儲存使用所配置之一實體區段中的一分頁。例如,如果一記憶體區段具有4,096KB之大小,而一分頁具有4KB(千位元組)之大小,則記憶體區段包括4,096KB/4KB=1024記憶體分頁,而供記憶體區段用之記憶體區段項目可包括高達1024組之分頁碼、區段碼與間接位元。分頁碼、區段碼與間接位元係被一鏈結命令及一取消鏈結命令所使用。鏈結及取消鏈結命令係更進一步結合第10及11圖作說明。
第2A圖顯示使用第2圖所顯示之資料結構之邏輯至實體位址轉換之例子。如顯示於第2A圖之例子中,一實體記憶體空間具有64GB之大小並包括實體記憶體區段0-16383。每個實體記憶體區段具有4MB之大小。實體記憶體區段0、1、2、3及16383係分別位於實體位址0GB、0.004GB、0.008GB、0.012GB以及63.996GB。實體記憶體區段1包括一實體記憶體分頁215,實體記憶體分頁215係同時由記憶體區段表與儲存區段表所使用。如果一實體記憶體區段係被配置以供主記憶體使用或長期儲存使用的話,則此實體記憶體區段為已使用,否則此實體記憶體區段為閒置以被配置。例如,實體記憶體區段0-3係已使用,而實體記憶體區段16383係閒置。
如於第2A圖之例子中所顯示的,記憶體區段表包括供邏輯主記憶體空間(例如第1A圖之101)中之邏輯記憶體區段
用之數個記憶體區段項目。邏輯主記憶體空間具有8GB之大小(從邏輯記憶體位址0GB開始),並包括邏輯記憶體區段0-2047。每個邏輯記憶體區段具有與實體記憶體空間中之每個實體記憶體區段相同的大小,譬如4MB。邏輯記憶體區段0及2047係分別位於邏輯位址0GB及7.996GB。
供邏輯記憶體區段0用之記憶體區段項目包括實體位址0GB(例如211),藉以指出位於實體位址0GB之一實體記憶體區段已被配置至邏輯主記憶體空間中之邏輯記憶體區段0。
供邏輯記憶體區段0用之記憶體區段項目亦包括一具有'0'之數值之分頁碼(例如212)、一具有'0'之數值之區段碼(例如213)、以及一具有'1'之數值之間接位元(例如214),藉以指出邏輯記憶體區段0之最終邏輯分頁已被連結至實體記憶體區段'1'中的邏輯儲存區段0之邏輯儲存分頁0(例如215),從而使主記憶體空間中之邏輯記憶體區段0之最終分頁並未被轉換至位於實體位址0GB之實體區段0(例如211)。分頁碼212、區段碼213以及間接位元214表示邏輯記憶體區段0之最終分頁被映射至邏輯儲存區段0之第一邏輯儲存LBA(邏輯區塊位址)。
如使用於本發明說明書中的,一分頁表示一邏輯主記憶體空間中之基本單元,而一LBA(邏輯區塊位址)表示一邏輯儲存空間中之基本單元。在一個實施例中,一分頁之大小係與一LBA之大小相同,以使在一分頁與一LBA之不同大小之間的轉換可被消除。例如,一分頁可具有4KB之大小,而一LBA可具
有4KB之相同的大小。
如果一邏輯記憶體分頁之間接位元具有'0'之數值,則邏輯記憶體區段係被轉換至記憶體區段項目中之實體位址(例如211)。例如,供邏輯記憶體區段2047用之記憶體區段項目中的實體位址係為0.012GB,而間接位元具有供邏輯記憶體區段2047中之所有邏輯分頁用之'0'之數值(例如284)。因此,邏輯記憶體區段2047中之每個邏輯記憶體分頁係被轉換至位於實體位址0.012GB之實體記憶體區段3中之一對應的記憶體分頁。
當供一邏輯記憶體分頁用之一記憶體區段項目中的間接位元具有'0'之數值時,記憶體區段項目中之分頁碼及區段碼具有'NULL'之數值,表示主記憶體空間中之邏輯記憶體分頁並未連結至任何實體記憶體區段中之任何實體分頁。
如於第2A圖之例子中所顯示的,儲存區段表包括供邏輯儲存空間(例如第1A圖之102)中之邏輯儲存段區用之數個儲存區段項目。邏輯儲存空間具有56GB之大小(從0GB之邏輯儲存位址開始),並包括邏輯記憶體區段0-14335。每個邏輯記憶體區段具有與實體記憶體空間中之每個實體記憶體區段相同的大小,譬如4MB。邏輯記憶體區段0、1及14335係分別位於邏輯位址0GB、0.004GB及55.996GB。
供長期儲存使用之邏輯儲存空間(例如102)中的邏輯儲存區段0用之儲存區段項目包括實體位址0.004GB,藉以指出位於實體位址0.004GB之一實體記憶體區段已被配置至供位於
邏輯儲存空間中之邏輯儲存位址0.000GB之長期儲存使用之邏輯儲存區段0。同樣地,供長期儲存使用之邏輯儲存空間(例如102)中的邏輯儲存區段1之儲存區段項目包括實體位址0.008GB,藉以指出位於實體位址0.008GB之一實體記憶體區段已被配置至供位於邏輯儲存空間中之邏輯儲存位址0.004GB之長期儲存使用之輯儲存區段1。
第3圖顯示主記憶體管理器(例如第1圖之132)之一實施例。由於允許主記憶體需求執行位址轉換之時間有限,主記憶體管理器係被位址轉換硬體所支援,用以將請求位址轉換成其對應的實體位址。如第3圖之例子所示,當接收一主記憶體需求以存取主記憶體時,請求位址係分為一區段位址(例如310)及一區段偏移(例如320)。區段位址表示請求位址駐留之邏輯記憶體區段,以使其可被作為一索引來使用,以藉由查儲存於位址轉換硬體之“硬體查找表(hardware lookup)”部件(例如330)中之記憶體區段表發現其存在邏輯區段之對應的實體記憶體區段之位址。由“硬體查找表”部件所產生之實體區段位址(例如340),係藉由如以一具有加號之圓形表示之硬體電路而與區段偏移(例如320)結合,用以導出接收的主記憶體需求之實體裝置位址(例如350)。可使用導出的實體區段位址以存取記憶體裝置170中之一實體記憶體區段。
記憶體區段表(第2圖)可依需求而被儲存於管理空間(例如第1圖之190)中並載入至“硬體查找表”部件(例如
330)。如果記憶體區段表可適合於位址轉換硬體,記憶體區段表亦可儲存於位址轉換硬體中。
第4圖顯示儲存管理器之一實施例。儲存管理器(例如第1圖之134)管理儲存於管理空間中之儲存段區表(第2圖),以供從請求位址轉換至它們對應的實體位址。儲存區段表可從記憶體裝置中之管理空間被載入。對於儲存需求之位址轉換(例如430)並不需要如主記憶體需求所需要的位址轉換硬體之支援,這是因為對於服務儲存需求只花一小部分的時間。然而,即使一非揮發性記憶體裝置(例如一相變化記憶體裝置)係為位元組可定址,且接收需求後係以處理器字或快取線之單位來存取記憶體位址,來自主機系統之儲存需求還是以一分頁為單位(例如4096位元組)中。因此,從主機系統發佈之存取資料分頁之一儲存需求,可被一裝置驅動器所預先處理,以使儲存需求被轉換成為相關於分頁之對應的記憶體位址之一連串的需求,如第4圖所示。當儲存管理器接收一轉換的儲存需求時,請求位址被分為一區段位址(例如410)及一區段偏移(例如420)。區段位址表示請求位址駐留之邏輯區段,於其中,以使請求位址被作為一索引使用,以查找關於其對應的邏輯區段之實體區段之儲存區段表。導出的實體區段位址(例如440)係與區段偏移(例如420)合併,用以導出接收的儲存需求之實體位址(例如450)。接著可使用實體位址(例如450),以存取記憶體裝置170中之一實體記憶體區段。
第5圖顯示空間管理器之一實施例,使用對應於複
數個分類之閒置記憶體區段的數組儲存桶。空間管理器(例如第1圖之136)基於複數個分類中之分類,以及基於實體記憶體區段之使用統計,來管理並配置閒置實體區段。空間管理器係被主記憶體管理器132調用,以將閒置實體區段配置至邏輯記憶體區段以供主記憶體使用,或被儲存管理器134調用以將閒置實體段配置至邏輯記憶體區段以供長期儲存使用。
空間管理器可藉由使用實體記憶體區段之使用統計中的資訊,來維持閒置記憶體區段之複數組儲存桶。例如,使用統計可包括閒置記憶體區段之寫入次數(write count)。在一個實施例中,當針對實體記憶體區段執行一寫入操作時,增加了一實體記憶體區段之寫入次數。如第5圖之例子所示,儲存桶8至0係按照較高寫入次數來維護,其中儲存桶8具有最低寫入次數,而儲存桶0具有最高的寫入次數。每個儲存桶鏈結具有類似的寫入次數之閒置實體區段。當實體區段被主機系統所釋放時,可將一閒置實體區段加至一對應的儲存桶之尾部,例如以每個儲存桶之一圓形(例如儲存桶8之538)來表示。當閒置實體區段係被配置至一邏輯區段時,一閒置實體區段可從儲存桶之頭部(例如儲存桶8之528)被移除。
一實體記憶體區段之剩下的寫入次數,可藉由從對應於記憶體裝置之耐寫度之剩下的寫入次數上限,減去實體記憶體區段之寫入次數而被導出。一實體記憶體區段之寫入次數可以是實體記憶體區段中之實體分頁及/或實體線之寫入次數之最高
者。如第5圖之例子所示,儲存桶8中之實體記憶體區段之剩下的寫入次數大約是108,如方塊518所示,而儲存桶0中之實體記憶體區段之剩下的寫入次數大約是100,如方塊510所示。於此例子中,剩下的寫入次數上限可以是108。鄰近儲存桶之寫入次數或剩下的寫入次數可以不同一個數量級。
在一個實施例中,第一分類(例如供長期儲存使用)係對應至包括在一捨棄閾值(例如540)與一降級閾值(例如550)之間的儲存桶3與4之一組儲存桶,而第二分類(例如供主記憶體使用)係對應至包括在降級閾值550之上的儲存桶5至8之一組儲存桶。如果一閒置實體區段之剩下的寫入次數係在降級閾值以下,則閒置實體區段可被移動至在降級閾值以下之一儲存桶,並重新被配置至供長期儲存使用之邏輯位址。在降級閾值之上的閒置實體區段可被稱為年輕區段,在捨棄閾值與降級閾值之間的閒置實體段可被稱為年老區段。因為儲存桶0至2之剩下的寫入次數太低,例如大約100至102,所以在捨棄閾值540(例如在儲存桶0至2)以下之閒置實體區段可被捨棄。
雖然第5圖藉由使用閒置記憶體區段之複數組儲存桶說明空間管理器之一實施例,但空間管理器可利用其他資料結構(例如一種樹狀結構(tree-base structure),樹狀結構可被應用至主記憶體及儲存轉換層的一接合點來實施。
第6圖係為用以將一閒置記憶體區段分配至記憶體裝置之邏輯記憶體空間中具有第一分類之一邏輯記憶體區段之
流程圖,其中第一分類具有不同於第二分類之使用統計需求。
於步驟610,接收一需求以將一閒置記憶體區段配置至具有第一分類(例如供長期儲存使用)之一邏輯記憶體區段。於步驟620,執行一搜尋,用以尋找一閒置記憶體區段,其寫入次數符合第一分類,並小於符合第一分類之其他閒置記憶體區段之寫入次數。參考第5圖,可從降級閾值550朝向捨棄閾值540之方向搜尋。於步驟630,決定閒置記憶體區段是否被找到。於步驟680,如果找到閒置記憶體區段,則將閒置記憶體區段配置至邏輯記憶體區段。
否則,於步驟640,執行一搜尋,用以尋找一閒置記憶體區段,其寫入次數符合第二分類,並大於符合第二分類(例如供主記憶體使用)之其他閒置記憶體區段之寫入次數。參考第5圖,可從降級閾值550朝向具有最低寫入次數(例如儲存桶8)之儲存桶之方向搜尋。於步驟650,決定第二閒置記憶體區段是否被找到。如果找到第二閒置記憶體區段,則於步驟660,將第二閒置記憶體區段配置至具有第一分類之邏輯記憶體區段。如果第二閒置記憶體區段並未被找到,則於步驟670,將記憶體裝置設定為一磨損裝置(worn out device),這是因為記憶體裝置已到達其壽命之末端。
第7圖係為用以捨棄一實體記憶體區段之流程圖。於步驟710,接收一需求以寫入至被配置於具有第一分類(例如供長期儲存使用)之一邏輯記憶體區段之一實體記憶體區段。於步驟
720,更新實體記憶體區段之使用統計,其中使用統計可包括實體記憶體區段之一寫入次數。於步驟730,決定寫入次數是否高於一捨棄閾值(例如第5圖之540)。如果是,則於步驟740,將具有小於捨棄閾值之一寫入次數之一閒置記憶體區段配置至具有第一分類之邏輯記憶體區段。於步驟750,捨棄原始要求被寫入之實體記憶體區段。
第8圖係為用以將一閒置記憶體區段配置至記憶體裝置之邏輯記憶體空間中具有第二分類之一邏輯記憶體區段之流程圖。於步驟810,接收一需求以將一閒置記憶體區段配置至具有第二分類(例如供主記憶體使用)之一邏輯記憶體區段。於步驟820,執行一搜尋,尋找一閒置記憶體區段,其寫入次數符合第二分類,並小於符合第二分類之其他閒置記憶體區段之寫入次數。參考第5圖,可從具有最低寫入次數(例如儲存桶8)之儲存桶朝向降級閾值(例如550)之方向搜尋。於步驟830,決定閒置記憶體區段是否被找到。如果是,則於步驟890,將閒置記憶體區段配置至邏輯記憶體區段。
否則,於步驟840,執行一搜尋,尋找一第二記憶體區段,其寫入次數符合第一分類,且小於符合第一分類之其他記憶體區段之寫入次數。於步驟850,決定第二是否被發現。如果是,則於步驟860,執行一搜尋,尋找符合第一分類之寫入次數之一第二閒置記憶體區段,而於步驟870,將第二記憶體區段中之資料移動至第二閒置記憶體區段。於步驟880,第二記憶體
區段被重新配置至具有第二分類之邏輯記憶體區段。
第9圖係為用以降級一實體記憶體區段之流程圖。於步驟910,接收一需求以寫入至被配置至具有第二分類(例如供主記憶體使用)之一邏輯記憶體區段之一實體記憶體區段。於步驟920,更新實體記憶體區段之使用統計,使用統計可包括實體記憶體區段之一寫入次數。於步驟930,決定寫入次數是否高於一降級閾值(例如第5圖之550)。如果是,則於步驟940,將具有小於降級閾值之一第二寫入次數之一閒置記憶體區段配置至邏輯記憶體區段。於步驟950,將原始要求被寫入之實體記憶體區段,從適合配置至第二分類(例如供主記憶體使用)降級至適合配置至第一分類(例如供長期儲存使用)。
第10圖係為一鏈結命令之流程圖。主機系統可經由儲存裝置驅動器發佈一鏈結命令給記憶體控制器,以將供主記憶體使用之邏輯記憶體區段重新定址至被配置供長期儲存使用之實體區段,而不是發佈一命令以從一長期儲存裝置實體上複製資料至一主記憶體裝置。
如於第10圖之例子所顯示的,於步驟1010,接收一命令以將具有第一分類(例如供長期儲存使用)之一第一範圍之邏輯位址鏈結至具有第二分類(例如供主記憶體使用)之一第二範圍之邏輯位址。於步驟1020,決定實體記憶體區段是否被配置至在第一範圍之邏輯位址及第二範圍之邏輯位址中之邏輯記憶體區段。如果不是,則於步驟1030,將閒置實體記憶體區段配置至
邏輯記憶體區段。於步驟1040,設定指示符(indicators),指示符表示具第二範圍之邏輯位址被重新定址。於步驟1050,設定鏈結資訊,將具有第二分類之第二範圍之邏輯位址,重新定址至被至具有第一分類之第一範圍之邏輯位址的實體區段。鏈結資訊可包括記憶體區段表之記憶體區段項目中的分頁碼及區段碼(如第2圖所說明的)。指示符及鏈結資訊可被儲存在管理空間(例如第1圖之190)中。於步驟1060,鏈結資訊可被載入至一表格後備緩衝器(Table Lookaside Buffer),以供記憶體管理系統使用,用於以改善邏輯至實體位址轉換之速度(例如1060)。
第11圖係為使用鏈結命令之一例,如在第10圖中所說明的。此例子假設邏輯記憶體空間具有64GB之大小,包括從0GB至8GB之主記憶體空間以及從8GB至64GB之儲存空間。實體記憶體空間具有供實體記憶體區段用之64GB之大小,實體記憶體區段可被配置供主記憶體使用及儲存使用。假設一邏輯記憶體區段具有4MB之大小並包括多個邏輯記憶體分頁,並假設一實體記憶體區段具有4MB之大小並包括多個實體LBA(邏輯區塊位址)。如本發明說明書中所使用的,一分頁表示在邏輯主記憶體空間中之一基本單元,而一LBA表示在邏輯儲存空間中之一基本單元。在一個實施例中,分頁之大小係與LBA之大小相同,以使在分頁與LBA之不同大小之間的轉變可被消除。例如,一分頁可具有4KB之大小,而一LBA可具有4KB之相同大小。
如於第11圖之例子中所顯示的,儲存裝置驅動器
(例如第1圖之122)接收來自主機系統之一鏈結命令,以將儲存空間中之一第一範圍之邏輯位址鏈結至主記憶體空間中之一第二範圍之邏輯位址。鏈結命令包括第一範圍之一第一起始LBA位址LBA_L、第二範圍之一第二起始分頁位址Page_P,以及一長度len,表示第一範圍中之連續LBA之數目以及第二範圍中之連續分頁之數目。於此例子中,LBA_L=0,Page_P=1024,而len=6。因此,第一範圍係從LBA_L至(LBA_L+len),而第二範圍係從Page_P至(Page_P+len)。
在一個實施例中,當由主機系統之第一範圍及第二範圍分別為LBA單位與分頁單位時,實體記憶體係為位元組單位(如同位元組可定址)。裝置驅動器分別將LBA單位之請求的第一範圍及分頁單位之請求的第二範圍,轉變成對應於實體記憶體位址之位元組單位中之一連串的需求。裝置驅動器將以LBA單位及以分頁單位之邏輯記憶體空間LBA起始位址LBA_L與分頁起始位址Page_P,轉變成位元組單位之實體記憶體區段的對應的起始位元組位址Addr_L及Addr_P。裝置驅動器將邏輯位址之第一範圍(例如LBA_L至(LBA_L+len)),轉變成實體位址之第一範圍(例如Addr_L至(Addr_L+size)),並將邏輯位址之第二範圍(例如Page_P至(Page_P+len))轉變成實體位址之第二範圍(例如Addr_P至(Addr_P+size)),其中size為等於len LBAs及len分頁中之資料大小之連續的位元組數目,以使在實體記憶體區段中之邏輯位址之第二範圍Page_P至(Page_P+len)可一對一映射至之邏輯位
址的第一範圍LBA_L至(LBA_L+len)。
如於第11圖之例子中所顯示的,假設一分頁具有4096位元組而一LBA具有4096位元組,LBA_L=0 LBA,Page_P=1024分頁,主記憶體空間具有從0GB開始之位址,而儲存空間具有從8GB開始之位址,Addr_L=8GB+LBA_L * 4096位元組=8GB+0 * 4096位元組=8GB;Addr_P=0GB+Page_P * 4096位元組=1024 * 4096位元組=4MB。
然後,裝置驅動器藉由使用位元組單位之實體位址之第二範圍(例如Addr_P至(Addr_P+size))與位元組單位之實體位址之第一範圍(例如Addr_L至(Addr_L+size)),將一鏈結命令傳送至記憶體控制器。
回應於來自裝置驅動器之鏈結命令,記憶體控制器可藉由使用LBA大小(例如4096位元組)、區段大小(例如4MB)以及儲存空間之起始位址(例如8GB),而將起始位元組位址Addr_L(例如8GB)轉變成相對於儲存空間之一起始記憶體區段中的一起始LBA之一第一相對區段碼之一相對的LBA數目。於此例子中,相對LBA數目係為0,而第一相對區段碼係為0,因此起始位元組位址Addr_L係對應至儲存空間之起始實體記憶體區段中的起始LBA。
記憶體控制器可藉由使用分頁大小(例如4096位元
組)、區段大小(例如4MB)與主記憶體空間之起始位址(例如0GB),而將位元組位址Addr_P(例如4MB)轉變成相對於主記憶體空間之一起始記憶體區段中的一起始分頁之一第二相對區段碼之一相對的分頁數目。於此例子中,相對的分頁碼係為0,而第二相對區段碼係為1,因此起始位元組位址Addr_P係對應至主記憶體空間之第二實體記憶體區段中的第一分頁。
記憶體控制器可記錄記憶體區段表之記憶體區段項目中的數個指示符,指示符表示第二範圍之邏輯位址係被重新定址。這些指示符可包括供主記憶體空間之一邏輯記憶體區段中的每個邏輯記憶體分頁用之一間接位元。每個間接位元可表示其對應的邏輯記憶體分頁是否被連結至為長期儲存使用配置之一實體分頁。例如,數值'1'可表示一邏輯記憶體分頁係被連結,而數值'0'可表示一邏輯記憶體分頁並未被連結。
在執行鏈結命令之後,第一分類(例如供長期儲存使用)中之第一範圍之邏輯位址係被連結至一實體分頁碼及一實體區段碼,藉以指出為長期儲存使用配置之一實體記憶體分頁。因此,從主機系統之觀點而言,記憶體裝置採取的行動猶如資料係從一長期儲存裝置實體上被複製至一主記憶體裝置。
第12圖係為關於一取消鏈結命令之流程圖。主機系統可經由儲存裝置驅動器發佈一取消鏈結命令給記憶體控制器,而不是發佈一命令從一主記憶體裝置實體上寫入資料返回至一長期儲存裝置。
如於第12圖之例子中所顯示的,於步驟1210,接收一命令以取消鏈結具有第二分類(例如供主記憶體使用)之一範圍之邏輯位址,以及取消被配置至具有第一分類(例如供長期儲存使用)之邏輯位址之實體區段。於步驟1220,重設數個指示符,這些指示符表示具有第二分類之範圍之邏輯位址係被重新定址。於步驟1230,重設鏈結資訊,鏈結資訊將具有第二分類之此範圍之邏輯位址重新定址至具有第一分類之邏輯位址。
在一個實施例中,此範圍之邏輯位址可以從Page_P至(Page_P+len),其中Page_P係為一起始分頁位址,而len係為於Page_P開始之連續分頁之數目。裝置驅動器將分頁單元中之邏輯記憶體空間的起始分頁位址Page_P,轉變成位元組單元中之實體記憶體區段的對應的位元組位址Addr_P。裝置驅動器將此範圍之邏輯位址(例如Page_P至(Page_P+len)),轉變成一範圍之實體位址(例如Addr_P至(Addr_P+size)),此size係為等於在len分頁中之資料之大小之一些連續的位元組。接著,裝置驅動器將一取消鏈結命令傳送至記憶體控制器,以取消鏈結此範圍之實體位址(例如Addr_P至(Addr_P+size))。
回應於來自裝置驅動器之取消鏈結命令,記憶體控制器重設此些指示符,此些指示符表示第二分類中之此範圍之邏輯位址係被重新定址;且記憶體控制器重設鏈結資訊,此鏈結資訊重新定址此範圍之邏輯位址,此鏈結資訊可包括供記憶體區段表中之記憶體區段項目用的分頁碼及區段碼(第2圖)。
第13圖係為關於一閒置命令之流程圖。可提供一閒置命令以允許主機系統釋放一邏輯記憶體區段以供主記憶體使用,邏輯記憶體區段係不再被主機系統所使用。例如,在主機系統中,每個流程可具有映射至一範圍之邏輯記憶體區段之其自己的位址空間,並可在其執行期間從主機系統要求更多記憶體(亦即,分頁),或釋放記憶體至主機系統。當終止此流程時,配置至此流程之記憶體分頁係回復至主機系統。
在第13圖所顯示之例子中,主機系統(例如第1圖之110)決定落在供主記憶體使用之一範圍之一邏輯記憶體區段中的所有邏輯記憶體分頁是否不再被使用。如果是這樣,主機系統發佈一閒置命令給主記憶體裝置驅動器(例如第1圖之121),以閒置被配置至邏輯記憶體區段之實體記憶體區段(步驟1310)。閒置命令參照供邏輯記憶體區段用之一邏輯區段碼。由閒置命令所參照之邏輯區段碼,係為相對於供主機系統之邏輯記憶體空間中的所有邏輯記憶體區段使用之一起始邏輯記憶體區段碼。
回應於來自主機系統之閒置命令,主記憶體裝置驅動器將起始邏輯記憶體區段碼加至由閒置命令所參照之邏輯區段碼,用於導出一第二邏輯區段碼。第二邏輯區段碼可被轉變成記憶體裝置中之一對應的實體區段碼(例如第1圖之170)(步驟1320)。接著,主記憶體裝置驅動器發佈一具有第二邏輯段碼之閒置命令給記憶體控制器(例如第1圖之130)(步驟1330)。
然後,記憶體控制器藉由使用記憶體區段表將第二
邏輯區段碼轉變成記憶體裝置中之一對應的實體區段碼(第2圖)(步驟1340)。記憶體控制器(例如第1圖140)接著發佈一閒置命令給具有相對應的實體區段碼之記憶體裝置,用於釋放具有相對應的實體區段碼之實體記憶體區段(步驟1350)。在一個實施例中,釋放的實體記憶體區段可被插入至閒置記憶體區段之複數組儲存桶之一組中的一儲存桶。
舉例而言,主機系統中之邏輯記憶體區段之邏輯區段碼係為5,主機系統中之所有邏輯記憶體區段之起始邏輯記憶體區段碼係為0,且第二邏輯區段碼因此係為0+5=5。記憶體區段表將5之第二邏輯區段數轉變成7之實體區段數。因此,具有7之實體區段數之實體記憶體區段係被釋放。
於此所說明之技術係適合於非揮發性記憶體,包括相變化記憶體、NOR快閃、磁性隨機存取記憶體以及電阻式隨機存取記憶體。於此所說明之主記憶體及儲存轉換層可在一記憶體管理系統之硬體或任何硬體層(包括記憶體管理單元(Memory Management Unit,MMU)、中央處理單元(Central Processing Unit,CPU)以及硬體IP(Intellectual Property)核心層或區塊中被實現。於此所說明之主記憶體及儲存轉換層,可被應用至包括整合式主記憶體及儲存裝置(包括將主記憶體及儲存記憶體整合在一個裝置中之混合式架構)之系統。
雖然本發明係參考上述詳細說明的較佳實施例及例子而被揭露,但應理解到這些例子係呈現一種說明而非限制的意
義。考慮到熟習本項技藝者將輕易地想到修改及組合,其修改及組合將是在本發明之精神以及以下申請專利範圍之範疇之內。
610至680‧‧‧步驟
Claims (12)
- 一種用以管理具有複數個實體記憶體區段之記憶體裝置之方法,該方法包括:基於複數個使用規格,將一邏輯記憶體空間中之複數個邏輯位址分為複數個分類,其中該些使用規格包括關於主記憶體使用之規格及關於長期儲存使用之規格;及基於該些分類以及該些實體記憶體區段之複數個使用統計,將該些實體記憶體區段配置給對應的該些邏輯位址;其中該些分類包括一第一分類及一第二分類,該第二分類具有不同於該第一分類之該些使用統計之需求。
- 如申請專利範圍第1項所述之方法,包括:維持一資料結構,該資料結構記錄該邏輯記憶體空間中之該些邏輯位址與該些實體記憶體區段之複數個實體位址之間的轉換;其中將該些實體記憶體區段配置給對應的該些邏輯位址包括:基於複數個閒置實體記憶體區段之複數個使用統計,維持該些閒置實體記憶體區段之複數組儲存桶;將一閒置實體記憶體區段配置至一邏輯位址,該邏輯位址位於該些分類中的一特定分類之該複數組儲存桶之一組中的一儲存桶,該複數組儲存桶之一組中的該儲存桶係對應於符合該特定分類之該些使用統計,並在該配置之後從該些儲存桶移除該閒置實體記憶體區段;及 取消配置一實體記憶體區段,並將該實體記憶體區段加至該複數組儲存桶之一組中的該儲存桶;其中該實體記憶體區段具有一使用統計,該實體記憶體區段之該使用統計符合該實體記憶體區段所加入之該儲存桶之使用統計。
- 如申請專利範圍第1項所述之方法,其中該些使用統計包括一寫入次數,該方法包括:將具有該第二分類之該些邏輯位址,重新定址到被配置具有該第一分類之該些邏輯位址之該些實體記憶體區段,並更新一資料結構以記錄重新定址的該些邏輯位址,其中該資料結構維持記錄該邏輯記憶體空間中之該些邏輯位址與該些實體記憶體區段之複數個實體位址之間的轉換;接收一需求以將一閒置實體記憶體區段配置至具有該第一分類之一邏輯記憶體區段;搜尋該閒置實體記憶體區段,該閒置實體記憶體區段具有一寫入次數,該閒置實體記憶體區段之該寫入次數符合該第一分類且小於符合該第一分類之其他閒置實體記憶體區段之寫入次數;如果找到該閒置實體記憶體區段,則將該閒置實體記憶體區段配置至該邏輯記憶體區段,否則搜尋一第二閒置實體記憶體區段,該第二閒置實體記憶體區段具有一第二寫入次數,該第二閒置實體記憶體區段之該第二寫入次數符合該第二分類且高於符合該第二分類之其他閒置實體記憶體區段之寫入次數;及 如果找到該第二閒置實體記憶體區段,則將該第二閒置實體記憶體區段配置至具有該第一分類之該邏輯記憶體區段。
- 如申請專利範圍第1項所述之方法,其中該使用統計包括一寫入次數,該方法包括:接收一需求以將一閒置實體記憶體區段配置至具有該第二分類之一邏輯記憶體區段;搜尋該閒置實體記憶體區段,該閒置實體記憶體區段具有一寫入次數,該閒置實體記憶體區段之該寫入次數符合該第二分類且小於符合該第二分類之其他閒置實體記憶體區段之寫入次數;如果找到該閒置實體記憶體區段,則將該閒置實體記憶體區段配置至該邏輯記憶體區段,否則搜尋一第二實體記憶體區段,該第二實體記憶體區段具有一寫入次數,該第二實體記憶體區段之該寫入次數符合該第一分類且小於符合該第一分類之其他實體記憶體區段之寫入次數;如果找到該第二實體記憶體區段,則搜尋一第二閒置實體記憶體區段,該第二閒置實體記憶體區段具有一寫入次數,該第二閒置實體記憶體區段之該寫入次數符合該第一分類,移動該第二實體記憶體區段中之資料至該第二閒置實體記憶體區段,以及將該第二實體記憶體區段重新配置至具有該第二分類之該邏輯記憶體區段;接收該需求以寫入至一實體記憶體區段,該實體記憶體區段被配置至具有該第一分類之一邏輯記憶體區段; 更新該實體記憶體區段之該些使用統計;以及如果該更新的使用統計具有高於一捨棄閾值之寫入次數,則將具有小於該捨棄閾值之一第二寫入次數之該閒置實體記憶體區段配置至具有該第一分類之該邏輯記憶體區段,以及捨棄該實體記憶體區段。
- 如申請專利範圍第1項所述之方法,其中該使用統計包括一寫入次數,該方法包括:接收一需求以寫入至一實體記憶體區段,該實體記憶體區段被配置至具有該第二分類之一邏輯記憶體區段;更新該實體記憶體區段之使用統計;及如果該更新的使用統計具有高於一降級閾值之寫入次數,則將具有小於該降級閾值之一第二寫入次數之一閒置實體記憶體區段配置至該邏輯記憶體區段;接收一命令以將具有該第一分類之一第一範圍之該些邏輯位址鏈結至具有該第二分類之一第二範圍之該些邏輯位址;如果該實體記憶體區段並未被配置至該第一範圍中之該些邏輯位址之邏輯記憶體區段或未被配置至該第二範圍中之該些邏輯位址之邏輯記憶體區段,則將該閒置實體記憶體區段配置至該第一範圍中之該些邏輯位址之邏輯記憶體區段或該第二範圍中之該些邏輯位址之邏輯記憶體區段;設定複數個指示符,該些指示符表示具有該第二分類之該第二範圍之該些邏輯位址被重新定址;及 設定一鏈結資訊,該鏈結資訊將具有該第二分類之該第二範圍之該些邏輯位址,重新定址至該些實體記憶體區段,該些實體記憶體區段為被配置至具該第一分類之該第一範圍之該些邏輯位址的實體記憶體區段。
- 如申請專利範圍第1項所述之方法,包括:接收一命令以取消具有該第二分類之一範圍之該些邏輯位址與被配置至具有該第一分類之該些邏輯位址之該些實體記憶體區段之鏈結;重設複數個指示符,該些指示符表示具有該第二分類之該範圍之該些邏輯位址被重新定址;重設一鏈結資訊,該鏈結資訊重新定址具有該第二分類之該範圍之該些邏輯位址;接收該命令以閒置一邏輯記憶體區段,該邏輯記憶體區段具有一第一邏輯區段碼,該第一邏輯區段碼對應於該邏輯記憶體空間中之複數個邏輯記憶體區段之一起始邏輯區段碼;基於該第一邏輯區段碼與該起始邏輯區段碼,導出一第二邏輯區段碼;將該第二邏輯區段碼轉換至一實體區段碼;以及釋放一實體記憶體區段,該實體記憶體區段具有該第一分類之該些邏輯位址之該些實體記憶體區段中之該實體區段碼。
- 一種記憶體管理設備,包括:一記憶體裝置,具有複數個實體記憶體區段;及 一記憶體控制器,耦接至該記憶體裝置,包括:一第一邏輯電路,用以基於複數個使用規格,將一邏輯記憶體空間中之複數個邏輯位址分為複數個分類,其中該些使用規格包括關於主記憶體使用之規格及關於長期儲存使用之規格;及一第二邏輯電路,用以基於該些分類以及該些實體記憶體區段之複數個使用統計,將該些實體記憶體區段配置給對應的該些邏輯位址;其中該些分類包括一第一分類及一第二分類,該第二分類具有不同於該第一分類之該些使用統計之需求。
- 如申請專利範圍第7項所述之設備,該記憶體控制器包括:一第三邏輯電路,用以維持一資料結構,該資料結構記錄該邏輯記憶體空間中之該些邏輯位址與該些實體記憶體區段之複數個實體位址之間的轉換;一第四邏輯電路,用以接收一命令以將具有該第一分類之一第一範圍之該些邏輯位址鏈結至具有該第二分類之一第二範圍之該些邏輯位址;一第五邏輯電路,用以如果一實體記憶體區段並未被配置至該第一範圍中之該些邏輯位址之邏輯記憶體區段或未被配置至該第二範圍中之該些邏輯位址之邏輯記憶體區段,則將一閒置實體記憶體區段配置至該第一範圍中之該些邏輯位址之邏輯記憶體區段或該第二範圍中之該些邏輯位址之邏輯記憶體區段; 一第六邏輯電路,用以設定複數個指示符,該些指示符表示具有該第二分類之該第二範圍之該些邏輯位址被重新定址;一第七邏輯電路,用以設定一鏈結資訊,該鏈結資訊將具有該第二分類之該第二範圍之該些邏輯位址,重新定址至該些實體記憶體區段,該些實體記憶體區段為被配置至具該第一分類之該第一範圍之該些邏輯位址的實體記憶體區段;及一第八邏輯電路,用以將具有該第二分類之該些邏輯位址,重新定址到被配置具有該第一分類之該些邏輯位址之該些實體記憶體區段,並更新該資料結構以記錄重新定址的該些邏輯位址,其中該資料結構維持記錄該邏輯記憶體空間中之該些邏輯位址與該些實體記憶體區段之該些實體位址之間的轉換。
- 如申請專利範圍第8項所述之設備,其中該記憶體控制器包括:一第九邏輯電路,用以基於複數個閒置實體記憶體區段之複數個使用統計,維持該些閒置實體記憶體區段之複數組儲存桶;一第十邏輯電路,用以將該閒置實體記憶體區段配置至該邏輯位址,該邏輯位址位於該些分類中的一特定分類之該複數組儲存桶之一組中的一儲存桶,該複數組儲存桶之一組中的該儲存桶係對應於符合該特定分類之該些使用統計,並在該配置之後從該些儲存桶移除該閒置實體記憶體區段;及一第十一邏輯電路,用以取消配置該實體記憶體區段,並將該實體記憶體區段加至該複數組儲存桶之一組中的該儲存桶; 其中該實體記憶體區段具有一使用統計,該實體記憶體區段之該使用統計符合該實體記憶體區段所加入之該儲存桶之使用統計。
- 如申請專利範圍第8項所述之設備,其中該使用統計包括一寫入次數,且該記憶體控制器包括:一第十二邏輯電路,用以接收一需求以將一閒置實體記憶體區段配置至具有該第一分類之該邏輯記憶體區段;一第十三邏輯電路,用以搜尋該閒置實體記憶體區段,該閒置實體記憶體區段具有一寫入次數,該閒置實體記憶體區段之該寫入次數符合該第一分類且小於符合該第一分類之其他閒置實體記憶體區段之寫入次數;一第十四邏輯電路,用以如果找到該閒置實體記憶體區段,則將該閒置實體記憶體區段配置至該邏輯記憶體區段,否則搜尋一第二閒置實體記憶體區段,該第二閒置實體記憶體區段具有一第二寫入次數,該第二閒置實體記憶體區段之該第二寫入次數符合該第二分類且高於符合該第二分類之其他閒置實體記憶體區段之寫入次數;及一第十五邏輯電路,用以如果找到該第二閒置實體記憶體區段,則將該第二閒置實體記憶體區段配置至具有該第一分類之該邏輯記憶體區段;一第十六邏輯電路,用以接收該需求以將該閒置實體記憶體區段配置至具有該第二分類之該邏輯記憶體區段; 一第十七邏輯電路,用以搜尋該閒置實體記憶體區段,該閒置實體記憶體區段具有該寫入次數,該閒置實體記憶體區段之該寫入次數符合該第二分類且小於符合該第二分類之其他閒置實體記憶體區段之寫入次數;一第十八邏輯電路,用以如果找到該閒置實體記憶體區段,則將該閒置實體記憶體區段配置至該邏輯記憶體區段,否則搜尋一第二實體記憶體區段,該第二實體記憶體區段具有一寫入次數,該第二實體記憶體區段之該寫入次數符合該第一分類且小於符合該第一分類之其他實體記憶體區段之寫入次數;及一第十九邏輯電路,用以如果找到該第二實體記憶體區段,則搜尋該第二閒置實體記憶體區段,該第二閒置實體記憶體區段具有該寫入次數,該第二閒置實體記憶體區段之該寫入次數符合該第一分類,移動該第二實體記憶體區段中之資料至該第二閒置實體記憶體區段,以及將該第二實體記憶體區段重新配置至具有該第二分類之該邏輯記憶體區段。
- 如申請專利範圍第8項所述之設備,其中該使用統計包括一寫入次數,且該記憶體控制器包括:一第二十邏輯電路,用以接收一需求以寫入至該實體記憶體區段,該實體記憶體區段被配置至具有該第一分類之一邏輯記憶體區段;一第二十一邏輯電路,用以更新該實體記憶體區段之該些使用統計;以及 一第二十二邏輯電路,用以如果該更新的使用統計具有高於一捨棄閾值之寫入次數,則將具有小於該捨棄閾值之一第二寫入次數之一閒置實體記憶體區段配置至具有該第一分類之該邏輯記憶體區段,以及捨棄該實體記憶體區段;一第二十三邏輯電路,用以接收該需求以寫入至該實體記憶體區段,該實體記憶體區段被配置至具有該第二分類之該邏輯記憶體區段;一第二十四邏輯電路,用以更新該實體記憶體區段之該些使用統計;及一第二十五邏輯電路,用以如果該些更新的使用統計具有高於一降級閾值之寫入次數,則將具有小於該降級閾值之該第二寫入次數之該閒置實體記憶體區段配置至該邏輯記憶體區段。
- 如申請專利範圍第8項所述之設備,其中該記憶體控制器包括:一第二十六邏輯電路,用以接收該命令以取消具有該第二分類之一範圍之該些邏輯位址與被配置至具有該第一分類之該些邏輯位址之複數個實體記憶體區段之鏈結;一第二十七邏輯電路,用以重設複數個指示符,該些指示符表示具有該第二分類之該範圍之該些邏輯位址被重新定址;一第二十八邏輯電路,用以重設該鏈結資訊,該鏈結資訊重新定址具有該第二分類之該範圍之該些邏輯位址;一第二十九邏輯電路,用以接收該命令以閒置該邏輯記憶體 區段,該邏輯記憶體區段具有一第一邏輯區段碼,該第一邏輯區段碼對應於該邏輯記憶體空間中之複數個邏輯記憶體區段之一起始邏輯區段碼;一第三十邏輯電路,用以基於該第一邏輯區段碼與該起始邏輯區段碼,導出一第二邏輯區段碼;一第三十一邏輯電路,用以將該第二邏輯區段碼轉換至一實體區段碼;及一第三十二邏輯電路,用以釋放該實體記憶體區段,該實體記憶體區段具有該第一分類之該些邏輯位址之該些實體記憶體區段中之該實體區段碼。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361918616P | 2013-12-19 | 2013-12-19 | |
US201462005816P | 2014-05-30 | 2014-05-30 | |
US14/523,006 US9513815B2 (en) | 2013-12-19 | 2014-10-24 | Memory management based on usage specifications |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201539186A TW201539186A (zh) | 2015-10-16 |
TWI559138B true TWI559138B (zh) | 2016-11-21 |
Family
ID=53400066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103144424A TWI559138B (zh) | 2013-12-19 | 2014-12-19 | 記憶體裝置及記憶體管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9513815B2 (zh) |
CN (1) | CN104731717B (zh) |
TW (1) | TWI559138B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8914603B2 (en) * | 2010-07-30 | 2014-12-16 | Motorola Mobility Llc | System and method for synching Portable Media Player content with storage space optimization |
US9317446B2 (en) * | 2014-09-23 | 2016-04-19 | Cisco Technology, Inc. | Multi-level paging and address translation in a network environment |
CA2876379A1 (en) * | 2014-12-29 | 2016-06-29 | Adam J. Storm | Memory management in presence of asymmetrical memory transfer costs |
US9760479B2 (en) * | 2015-12-02 | 2017-09-12 | Pure Storage, Inc. | Writing data in a storage system that includes a first type of storage device and a second type of storage device |
US11762764B1 (en) | 2015-12-02 | 2023-09-19 | Pure Storage, Inc. | Writing data in a storage system that includes a first type of storage device and a second type of storage device |
US9836243B1 (en) * | 2016-03-31 | 2017-12-05 | EMC IP Holding Company LLC | Cache management techniques |
JP6666813B2 (ja) | 2016-08-24 | 2020-03-18 | キオクシア株式会社 | 記憶装置及びその制御方法 |
CN106897026B (zh) * | 2016-10-07 | 2020-02-07 | 威盛电子股份有限公司 | 非易失性存储器装置及其地址分类方法 |
US10733107B2 (en) | 2016-10-07 | 2020-08-04 | Via Technologies, Inc. | Non-volatile memory apparatus and address classification method thereof |
IT201700020134A1 (it) * | 2017-02-22 | 2018-08-22 | St Microelectronics Srl | Procedimento per gestire memorie a semiconduttore, interfaccia, memoria e dispositivo corrispondenti |
US10437734B2 (en) * | 2017-08-31 | 2019-10-08 | Micron Technology, Inc. | Memory constrained translation table management |
KR102691851B1 (ko) * | 2018-08-29 | 2024-08-06 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법 |
US11340810B2 (en) * | 2018-10-09 | 2022-05-24 | Western Digital Technologies, Inc. | Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints |
US11150812B2 (en) * | 2019-08-20 | 2021-10-19 | Micron Technology, Inc. | Predictive memory management |
US11049585B1 (en) | 2020-03-27 | 2021-06-29 | Macronix International Co., Ltd. | On chip block repair scheme |
US20210303204A1 (en) * | 2020-03-30 | 2021-09-30 | Kioxia Corporation | Simple elastic file-based multi-class storage layer (efms) |
DE102020212897A1 (de) * | 2020-10-13 | 2022-04-14 | Robert Bosch Gesellschaft mit beschränkter Haftung | Zugriffsverfahren auf Daten in einem externen Speicher eines Mikrocontrollers |
US11983066B2 (en) | 2022-05-05 | 2024-05-14 | Nanya Technology Corporation | Data storage device storing associated data in two areas |
TWI825802B (zh) * | 2022-05-05 | 2023-12-11 | 南亞科技股份有限公司 | 一種資料儲存裝置的控制方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100046285A1 (en) * | 2008-08-19 | 2010-02-25 | Macronix International Co., Ltd. | Multiple phase change materials in an integrated circuit for system on a chip application |
US20120170359A1 (en) * | 2011-01-05 | 2012-07-05 | Macronix International Co., Ltd. | Phase Change Memory With Fast Write Characteristics |
TW201232550A (en) * | 2011-01-19 | 2012-08-01 | Phison Electronics Corp | Data writing method for a non-volatile memory module, memory controller and memory storage apparatus |
US20120198128A1 (en) * | 2011-02-02 | 2012-08-02 | Van Aken Stephen P | Control arrangements and methods for accessing block oriented nonvolatile memory |
WO2012164986A2 (en) * | 2011-06-03 | 2012-12-06 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
TW201324147A (zh) * | 2011-09-30 | 2013-06-16 | Intel Corp | 用於非揮發性系統記憶體之統計平均抹寫 |
TW201337562A (zh) * | 2011-12-19 | 2013-09-16 | Sandisk Technologies Inc | 用於執行變數快閃耗損平均之系統與方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6975595B2 (en) * | 2001-04-24 | 2005-12-13 | Atttania Ltd. | Method and apparatus for monitoring and logging the operation of a distributed processing system |
WO2003025755A2 (en) * | 2001-09-14 | 2003-03-27 | Seagate Technology Llc | sETHOD AND SYSTEM FOR CACHE MANAGEMENT ALGORITHM SELECTION |
US9152349B2 (en) * | 2007-03-23 | 2015-10-06 | Emc Corporation | Automated information life-cycle management with thin provisioning |
US8966155B1 (en) * | 2008-04-01 | 2015-02-24 | Daniel P. Mulligan | System and method for implementing a high performance data storage system |
US9189385B2 (en) * | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
WO2012164718A1 (ja) * | 2011-06-02 | 2012-12-06 | 株式会社日立製作所 | ストレージ管理システム、計算機システム、及びストレージ管理方法 |
US8935493B1 (en) * | 2011-06-30 | 2015-01-13 | Emc Corporation | Performing data storage optimizations across multiple data storage systems |
WO2013043503A1 (en) * | 2011-09-19 | 2013-03-28 | Marvell World Trade Ltd. | Systems and methods for monitoring and managing memory blocks to improve power savings |
KR20140112303A (ko) * | 2013-03-13 | 2014-09-23 | 삼성전자주식회사 | 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템 |
US9378136B1 (en) * | 2014-06-30 | 2016-06-28 | Emc Corporation | Techniques for selecting write endurance classification of flash storage based on read-write mixture of I/O workload |
-
2014
- 2014-10-24 US US14/523,006 patent/US9513815B2/en active Active
- 2014-12-19 TW TW103144424A patent/TWI559138B/zh active
- 2014-12-19 CN CN201410797820.8A patent/CN104731717B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100046285A1 (en) * | 2008-08-19 | 2010-02-25 | Macronix International Co., Ltd. | Multiple phase change materials in an integrated circuit for system on a chip application |
US20120170359A1 (en) * | 2011-01-05 | 2012-07-05 | Macronix International Co., Ltd. | Phase Change Memory With Fast Write Characteristics |
TW201232550A (en) * | 2011-01-19 | 2012-08-01 | Phison Electronics Corp | Data writing method for a non-volatile memory module, memory controller and memory storage apparatus |
US20120198128A1 (en) * | 2011-02-02 | 2012-08-02 | Van Aken Stephen P | Control arrangements and methods for accessing block oriented nonvolatile memory |
WO2012164986A2 (en) * | 2011-06-03 | 2012-12-06 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
TW201324147A (zh) * | 2011-09-30 | 2013-06-16 | Intel Corp | 用於非揮發性系統記憶體之統計平均抹寫 |
TW201337562A (zh) * | 2011-12-19 | 2013-09-16 | Sandisk Technologies Inc | 用於執行變數快閃耗損平均之系統與方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104731717B (zh) | 2018-01-09 |
US20150178010A1 (en) | 2015-06-25 |
US9513815B2 (en) | 2016-12-06 |
TW201539186A (zh) | 2015-10-16 |
CN104731717A (zh) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI559138B (zh) | 記憶體裝置及記憶體管理方法 | |
US10761777B2 (en) | Tiered storage using storage class memory | |
JP5907739B2 (ja) | 不揮発性記憶装置 | |
US8180954B2 (en) | Flash management using logical page size | |
KR101324688B1 (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
US8185778B2 (en) | Flash management using separate metadata storage | |
US20100115175A9 (en) | Method of managing a large array of non-volatile memories | |
US8914570B2 (en) | Selective write-once-memory encoding in a flash based disk cache memory | |
US20090259806A1 (en) | Flash management using bad page tracking and high defect flash memory | |
CN108595349B (zh) | 大容量存储设备的地址转换方法与装置 | |
WO2012158455A1 (en) | Fast translation indicator to reduce secondary address table checks in a memory device | |
US12086467B2 (en) | Read performance of memory devices | |
US10769062B2 (en) | Fine granularity translation layer for data storage devices | |
US11954031B2 (en) | Enhancing cache dirty information | |
WO2018093442A1 (en) | Storage operation queue | |
CN110968527B (zh) | Ftl提供的缓存 | |
US20240069771A1 (en) | Read operations for mixed data | |
US10698621B2 (en) | Block reuse for memory operations | |
CN109960667B (zh) | 大容量固态存储设备的地址转换方法与装置 | |
CN109840219B (zh) | 大容量固态存储设备的地址转换系统与方法 | |
US12001717B2 (en) | Memory device operations for unaligned write operations | |
CN110968525B (zh) | Ftl提供的缓存、其优化方法与存储设备 | |
JP6027479B2 (ja) | 半導体メモリ装置 | |
CN117369715A (zh) | 基于存储设备中的引用更新使用回收单元的系统、方法和设备 |