TWI708143B - 固態驅動機及其分配方法 - Google Patents
固態驅動機及其分配方法 Download PDFInfo
- Publication number
- TWI708143B TWI708143B TW109121230A TW109121230A TWI708143B TW I708143 B TWI708143 B TW I708143B TW 109121230 A TW109121230 A TW 109121230A TW 109121230 A TW109121230 A TW 109121230A TW I708143 B TWI708143 B TW I708143B
- Authority
- TW
- Taiwan
- Prior art keywords
- flash memory
- physical flash
- requirements
- memory blocks
- physical
- Prior art date
Links
Images
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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- Detection And Correction Of Errors (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明提供一種固態驅動機,根據使用其的儲存器的應用程式的要求來選擇物理快閃記憶體區塊及抹除及程式化方法。固態驅動機的耗損追蹤器對程式化及抹除循環進行計數,且固態驅動機的原始位元錯誤率追蹤器監測自固態驅動機讀取的資料的原始位元錯誤率。應用程式向固態驅動機提供關於可容許保持時間及平均因應時間的要求,可容許保持時間對應由應用程式所儲存的資料的預期儲存時間,平均因應時間對應快閃記憶體的程式化及讀取時間。固態驅動機辨識適於滿足要求的物理快閃記憶體區塊,且自所辨識物理快閃記憶體區塊中向應用程式分配儲存空間。
Description
根據本發明的實施例的一或多個態樣是有關於快閃記憶體,且更具體而言是有關於一種用於調整快閃記憶體裝置的運作以適應各種情況的系統及方法。
快閃記憶體是持久性儲存器的一種形式,在快閃記憶體中資料的保持時間(retention time)可相依於各種因素。舉例而言,快閃記憶體胞元中的資料的保持時間可相依於所述胞元已經歷的程式化及抹除循環的數目、所使用的抹除方法、以及所使用的程式化方法。使用快閃記憶體的各種應用程式可具有不同要求,其中,舉例而言,某些應用程式要求非常長的保持時間,而其他應用程式則僅要求短的保持時間。對於僅要求短的保持時間的應用程式,以提供長的保持時間的方式操作快閃記憶體可能是不利的,進而導致例如效能降級。
因此,需要一種用於調整快閃記憶體裝置的運作以適應各種情況的系統及方法。
本發明的實施例的各態樣是有關於一種固態驅動機,所述固態驅動機可根據使用所述固態驅動機中的儲存器的應用程式的要求來選擇物理快閃記憶體區塊以及抹除及程式化方法。固態驅動機中的耗損追蹤器可對抹除及程式化循環進行計數,且固態驅動機中的原始位元錯誤率追蹤器可監測自所述固態驅動機讀取的資料中的原始位元錯誤。所述應用程式可向固態驅動機提供關於可容許保持時間及平均因應時間的要求,所述可容許保持時間對應於由所述應用程式所儲存的資料的預期儲存時間,所述平均因應時間對應於快閃記憶體的程式化及讀取時間。固態驅動機可辨識適合於滿足所述要求的物理快閃記憶體區塊,且可自所辨識物理快閃記憶體區塊中向應用程式分配儲存空間。
根據本發明的實施例,提供一種在連接至主機的固態驅動機中分配快閃記憶體的各部分的方法,所述快閃記憶體包括多個物理快閃記憶體區塊,所述方法包括:對所述快閃記憶體執行多個讀取操作,一或多個讀取操作包括錯誤修正碼解碼操作,所述錯誤修正碼解碼操作生成位元錯誤計數;根據多個位元錯誤計數計算所述多個物理快閃記憶體區塊中的一或多者的原始位元錯誤率;對對所述多個物理快閃記憶體區塊中的每一者執行的程式化及抹除循環進行計數;對於多種程式化方法中的每一種程式化方法,對於一或多個物理快閃記憶體區塊,根據所述原始位元錯誤率及所述程式化及抹除循環的數目來計算平均因應時間以及估測可容許保持時間;自在所述主機上執行的第一應用程式接收第一組要求;判斷一或多個物理快閃記憶體區塊是否適合於滿足所述第一組要求;形成物理快閃記憶體區塊的第一清單,所述第一清單中的所述物理快閃記憶體區塊適合於滿足所述第一組要求;自所述第一應用程式接收要求分配儲存空間的請求;以及向所述應用程式分配所述第一清單中的第一物理快閃記憶體區塊。
在一個實施例中,所述多種程式化方法包括:利用第一步長的增量步進脈衝程式化(incremental step pulse programming,ISPP)方法;以及利用第二步長的增量步進脈衝程式化方法,所述第一步長大於所述第二步長。
在一個實施例中,所述第一組要求包括所要求可容許保持時間及所要求平均因應時間。
在一個實施例中,所述判斷一或多個物理快閃記憶體區塊是否適合於滿足所述第一組要求包括判斷對於所述多種程式化方法中的任一程式化方法:所述所計算平均因應時間是否小於所述所要求平均因應時間;以及所述所計算估測可容許保持時間是否大於所述所要求可容許保持時間。
在一個實施例中,所述方法更包括抹除所述第一物理快閃記憶體區塊。
在一個實施例中,所述抹除所述第一物理快閃記憶體區塊包括:當淺抹除過程(shallow erase process)的預測效應是所述第一物理快閃記憶體區塊保持適合於滿足所述第一組要求時,採用所述淺抹除過程;以及當所述淺抹除過程的預測效應是所述第一物理快閃記憶體區塊不保持適合於滿足所述第一組要求時,採用正常抹除過程(normal erase process)。
在一個實施例中,所述對於一或多個物理快閃記憶體區塊,計算估測可容許保持時間包括:作為保持時間的函數來執行與位元錯誤計數的線性擬合;以及計算其中所述線性擬合超過最大可接受原始位元錯誤率的保持時間。
在一個實施例中,所述最大可接受原始位元錯誤率是每百萬個位元一個位元錯誤。
在一個實施例中,所述方法包括:自在所述主機上執行的第二應用程式接收與所述第一組要求不同的第二組要求;判斷一或多個物理快閃記憶體區塊是否適合於滿足所述第二組要求;形成物理快閃記憶體區塊的第二清單,所述第二清單中的所述物理快閃記憶體區塊適合於滿足所述第二組要求;自所述第二應用程式接收要求分配儲存空間的請求;以及向所述應用程式分配所述第二清單中的第二物理快閃記憶體區塊。
在一個實施例中,所述方法包括抹除所述第二物理快閃記憶體區塊。
在一個實施例中,所述抹除所述第二物理快閃記憶體區塊包括:當淺抹除過程的預測效應是所述第二物理快閃記憶體區塊保持適合於滿足所述第二組要求時,採用所述淺抹除過程;以及當所述淺抹除過程的預測效應是所述第二物理快閃記憶體區塊不保持適合於滿足所述第二組要求時,採用正常抹除過程。
根據本發明的實施例,提供一種固態驅動機,所述固態驅動機包括儲存控制器,所述儲存控制器包括處理單元及快閃記憶體,所述快閃記憶體包括多個物理快閃記憶體區塊,每一所述物理快閃記憶體區塊包括多個物理頁面。所述儲存控制器包括形態引擎,所述形態引擎包括反及控制器(NAND controller)、保持預測器(retention predictor)、耗損追蹤器(wear-out tracker)、以及原始位元錯誤率追蹤器(raw bit error rate tracker);以及儲存虛擬器(storage virtualizer),所述儲存虛擬器包括虛擬儲存表(virtual storage table)、位址轉譯區塊(address translation block)、以及群集引擎(clustering engine)。所述反及控制器被配置成對所述快閃記憶體執行多個讀取操作,一或多個讀取操作包括錯誤修正碼解碼操作,所述錯誤修正碼解碼操作生成位元錯誤計數;所述原始位元錯誤率追蹤器被配置成根據多個位元錯誤計數計算所述多個物理快閃記憶體區塊中的一或多者的原始位元錯誤率;所述耗損追蹤器被配置成對對所述多個物理快閃記憶體區塊中的一或多者執行的程式化及抹除循環進行計數;所述群集引擎被配置成對於多種程式化方法中的每一種程式化方法,對於一或多個物理快閃記憶體區塊,根據所述原始位元錯誤率及所述程式化及抹除循環的數目來計算平均因應時間以及估測可容許保持時間;所述虛擬儲存表被配置成自在所述主機上執行的第一應用程式接收第一組要求;所述群集引擎被配置成自所述虛擬儲存表接收所述第一組要求,以及判斷一或多個物理快閃記憶體區塊是否適合於滿足所述第一組要求;所述群集引擎被配置成形成物理快閃記憶體區塊的第一清單,所述第一清單中的所述物理快閃記憶體區塊適合於滿足所述第一組要求;所述群集引擎被配置成自所述第一應用程式接收要求分配儲存空間的請求;並且所述群集引擎被配置成向所述應用程式分配所述第一清單中的第一物理快閃記憶體區塊。
在一個實施例中,所述多種程式化方法包括:利用第一步長的增量步進脈衝程式化方法;以及利用第二步長的增量步進脈衝程式化方法,所述第一步長大於所述第二步長。
在一個實施例中,所述第一組要求包括所要求可容許保持時間及所要求平均因應時間。
在一個實施例中,所述判斷一或多個物理快閃記憶體區塊是否適合於滿足所述第一組要求包括判斷對於所述多種程式化方法中的任一程式化方法:所述所計算平均因應時間是否小於所述所要求平均因應時間;以及所述所計算估測可容許保持時間是否大於所述所要求可容許保持時間。
在一個實施例中,所述反及控制器更被配置成抹除所述第一物理快閃記憶體區塊。
在一個實施例中,所述抹除所述第一物理快閃記憶體區塊包括:當淺抹除過程的預測效應是所述第一物理快閃記憶體區塊保持適合於滿足所述第一組要求時,採用所述淺抹除過程;以及當所述淺抹除過程的預測效應是所述第一物理快閃記憶體區塊不保持適合於滿足所述第一組要求時,採用正常抹除過程。
在一個實施例中,對於一或多個物理快閃記憶體區塊,計算估測可容許保持時間作為效能量度的函數包括:作為保持時間的函數來執行與位元錯誤計數的線性擬合;以及計算其中所述線性擬合超過最大可接受原始位元錯誤率的保持時間。
在一個實施例中,所述最大可接受原始位元錯誤率是每百萬個位元一個位元錯誤。
在一個實施例中,所述虛擬儲存表更被配置成自在所述主機上執行的第二應用程式接收與所述第一組要求不同的第二組要求;所述群集引擎更被配置成:自所述虛擬儲存表接收所述第二組要求,以及判斷一或多個物理快閃記憶體區塊是否適合於滿足所述第二組要求;形成物理快閃記憶體區塊的第二清單,所述第二清單中的所述物理快閃記憶體區塊適合於滿足所述第二組要求;自所述第二應用程式接收要求分配儲存空間的請求;以及向所述應用程式分配所述第二清單中的第二物理快閃記憶體區塊。
本發明的示例性實施例可針對各種情況來適合地調整快閃記憶體裝置的運作。因此,示例性實施例可在所述裝置的效能及壽命方面帶來益處。
以下結合附圖闡述的詳細說明旨在作為對根據本發明而提供的形態儲存裝置的示例性實施例的說明,且並非旨在表示可在其中構造或利用本發明的唯一形式。所述說明結合所示實施例來闡述本發明的特徵。然而,應理解,可藉由旨在囊括於本發明的精神及範圍內的其他實施例來達成相同的或等效的功能及結構。如本文他處所示,相同的元件編號旨在指示相同的元件或特徵。
例如固態驅動機等快閃記憶體裝置是持久性記憶體裝置,其所具有的特性在某些方面不同於例如硬碟驅動機等其他持久性記憶體裝置。在快閃記憶體中,浮動閘極上的電荷可用於儲存資訊,且所述電荷可隨時間自浮動閘極洩漏,進而致使所儲存資訊損失或部分損失。此外,資料隨時間損失的程度相依於許多因素。
參照圖1A,自快閃記憶體讀取的資料中的原始位元錯誤率可如所示相依於保持時間,即資料被寫入的時刻與資料被讀取的時刻之間的時間。位元錯誤率亦可相依於裝置的本質,由不同製造商製作的裝置會隨保持時間的變化示出不同的錯誤率。
參照圖1B,原始位元錯誤率可不僅相依於保持時間,而且相依於快閃記憶體所已歷經的程式化及抹除循環的數目,所述快閃記憶體在較長時間週期期間儲存資料的能力隨程式化及抹除循環的數目的增大而降級。在圖1B中,曲線105示出3年保持錯誤率,曲線110示出1年保持錯誤率,曲線115示出3個月保持錯誤率,曲線120示出3周保持錯誤率,曲線125示出3天保持錯誤率,曲線130示出程式干擾錯誤率(program interference error rate),曲線135示出1天保持錯誤率,曲線140示出讀取錯誤率,且曲線145示出抹除錯誤率。
參照圖2A及圖2B,當使用增量步進脈衝程式化(ISPP)時,用於程式化操作的步長(step size)可影響可在浮動閘極上放置電荷的精度。因此,在其他因數相等的情況下,所使用步長越小,則原始位元錯誤率越低。然而,使用較小的步長可能致使程式化操作耗費更長時間才能完成。其中,步長ΔV
P_large大於步長ΔV
P_small。
參照圖3A及圖3B,使用淺抹除過程抹除記憶體(圖3B)可相較於正常抹除過程(圖3A)而言得到延長的壽命(即,在大量程式化及抹除循環之後,較長的可容許保持時間),淺抹除過程會比正常抹除過程較少地使記憶體降級。本文中所述「可容許保持時間」是在維持可接受原始位元錯誤率的同時資料可儲存於快閃記憶體中的時間量。
可容許保持時間可相依於可接受原始位元錯誤率;在某些實施例中,可接受原始位元錯誤率為10
-6,即每百萬個位元一個錯誤。然而,對於具有相同歷史的裝置,使用淺抹除過程可能較使用正常抹除過程在任一給定程式化及抹除循環期間得到更高的位元錯誤率,乃因淺抹除過程可減小可在浮動閘極上儲存的電荷值的範圍。
如此一來,可慮及所適用的保持時間要求來作出對程式化及抹除過程的選擇。舉例而言,例如網頁快取(Web-caching)等某些應用程式可需要僅為幾天的保持時間,而其他應用程式則可需要為一年或一年以上的保持時間。舉例而言,對於需要為僅幾天的保持時間的應用程式,可接受的是使用已歷經大量程式化及抹除循環的快閃記憶體的物理區塊,或者可使用具有大的步長的增量步進脈衝程式化。
參照圖4,舉例而言,對於期望長時間儲存的資料,可使用快閃記憶體的物理區塊以及提供長可容許保持時間415的抹除及程式化過程(由原始位元錯誤率曲線410表示)。可使用提供較短可容許保持時間的過程425(例如,淺抹除過程)或具有大的步長的增量步進脈衝程式化來處理使用較短可容許保持時間420即足夠的資料。
參照圖5A至圖5D,例如硬碟驅動機或固態驅動機等持久性儲存裝置可具有若干相關特性。舉例而言,此種裝置可在通量(throughput)或潛時(latency)方面、或在執行讀取操作、抹除操作、或寫入(或程式化)操作所需的時間方面提供給定水準的效能(「Perf.」)。
對於固態驅動機,完成抹除操作、或程式化操作所需的時間可顯著不同於(例如,長於)完成讀取操作所需的時間,且可使用平均因應時間對裝置的效能進行表徵。此平均因應時間可根據讀取時間、抹除時間、及程式化時間來計算,且可慮及每一被寫入資料的讀取次數的典型比率、及用於減小長抹除及程式化時間的影響的緩解措施(例如,緩衝)的使用來計算所述平均因應時間。
在某些實施例中,平均因應時間可定義如下:
其中
N
read 及
N
write 分別是在特定時間週期(例如,10秒)期間由基準測試(benchmarking test)執行的讀取及寫入的次數,且其中
T
read i 及
T
write i 分別是在所述測試期間的第
i th讀取時間及第
i th寫入時間。
裝置可具有某一壽命,對於硬碟驅動機,所述壽命可藉由移動部件所經歷的耗損速率來確定,且對於固態驅動機,所述壽命則可藉由程式化及抹除循環所導致的降級來確定。裝置可具有容量(「Cap.」)(即,所述裝置能夠儲存的最大資料量)、及可容許保持時間(「Ret.」)。
舉例而言,自圖5A及圖5B可看出,硬碟驅動機可具有較固態驅動機更大的容量及更長的保持時間,但壽命較短且因應時間(即,內部效能)較慢。相似地,自圖5C及圖5D可看出,第一應用程式(「app1」,圖5D)可相較於固態驅動機的預設特性(圖5C)而言具有高效能要求及短保持時間要求,且第二應用程式(「app2」,圖5D)可具有低效能要求及長保持時間要求。
參照圖6,在一個實施例中,主機610可連接至固態驅動機615,且可使用固態驅動機615來達成持久性儲存。固態驅動機615可為被配置成提供持久性儲存的附件中的自給式單元(self-contained unit)。
固態驅動機615可經由儲存介面(例如,經由主機610在儲存操作中通常所使用的連接器及協定)連接至主機610。連接器及協定可符合例如串列高級技術附接(Serial Advanced Technology Attachment,SATA)、光纖通道(Fibre Channel)、串列附接小電腦系統介面(Serial Attached SCSI,SAS)、高速非揮發性記憶體(Non Volatile Memory Express,NVMe)、及/或類似連接器及協定,或者符合例如乙太網路(Ethernet)或通用串列匯流排(Universal Serial Bus,USB)等更通用的介面。
固態驅動機615中的快閃記憶體620可被組織成物理快閃記憶體區塊630(或「快閃區塊」或「快閃記憶體區塊」)及物理頁面635。物理快閃記憶體區塊630可為可在一個操作中抹除的記憶體的最小單元,且物理頁面635可為可在一個操作中寫入的記憶體的最小單元。每一物理快閃記憶體區塊630可包括多個物理頁面635。
主機610可利用針對邏輯頁面號碼的儲存存取請求(例如,請求將資料儲存於為任意邏輯頁面號碼的頁面中、請求儲存於欲被讀取的任意邏輯頁面號碼的頁面中的資料、或請求儲存於欲被抹除的為任意邏輯頁面號碼的頁面中的資料)來與巨量儲存裝置進行交互。對於固態驅動機615,可不使用靜態的邏輯-物理(logic to physical,L-P)映射,乃因讀取/寫入大小與抹除大小之間的差異指示持續地將資料自一個物理位置移動至另一物理位置的垃圾控制機制,因此需要動態的邏輯-物理映射。
快閃轉譯層可將邏輯頁面號碼動態地轉譯或映射成物理頁面號碼。當欲將新資料過寫入於為任意邏輯頁面號碼的頁面中的資料之上時,快閃轉譯層可接著將當前對應於所述邏輯頁面號碼的物理頁面635標記為無效(而不是抹除含有此物理頁面635的物理快閃記憶體區塊630),更新自邏輯頁面號碼至物理頁面635的映射以將所述邏輯頁面號碼映射至新物理頁面635,並將新資料寫入至新物理頁面635中。快閃轉譯層可實作於在固態驅動機615中的儲存控制器625(例如,微控制器)上運行的軟體中。
自主機610接收的欲被程式化至快閃記憶體620中的資料可編碼有錯誤修正碼(error correcting code),且當自快閃記憶體620讀取資料時,原始資料讀取可與錯誤修正碼解碼操作一起進行,此可生成錯誤得到修正的解碼資料、及位元錯誤計數(即,對被錯誤修正碼解碼操作修正的位元錯誤的數目的計數)。
快閃轉譯層可偶爾執行被稱作「垃圾收集(garbage collection)」的操作。在此操作中,在存留於物理快閃記憶體區塊630中的有效物理頁面635已被移動至位於一或多個其他物理快閃記憶體區塊630中的物理頁面635之後,可抹除含有大比例(例如,超過設定臨限值的比例)的已被標記為無效的物理頁面635的任意物理快閃記憶體區塊630,進而使得新被抹除的物理快閃記憶體區塊630可供寫入新資料使用。
多個應用程式可在主機610中運行(例如,執行)且可產生可被傳輸至固態驅動機615的輸入/輸出(input/output,I/O)請求(例如,抹除請求、程式化(寫入)請求、及讀取請求)。每一此種應用程式均可具有關於持久性儲存器的特性的要求,例如規定最大可接受平均因應時間及最小可接受保持時間的要求。
在某些實施例中,該些要求可由固態驅動機615使用以判斷哪些物理快閃記憶體區塊630可用於儲存應用程式的資料,且可由固態驅動機615使用以選擇例如欲在寫入用於應用程式的資料時使用的步長。
每一應用程式均可在自身開始運行時向固態驅動機615進行註冊,使得自身被固態驅動機615辨識並將自身的儲存要求發送至固態驅動機615。藉由此種方式,固態驅動機615可確保由任一應用程式產生的輸入/輸出請求均是以滿足此應用的要求的方式被處理。固態驅動機615根據適用的要求來適應性地因應於輸入/輸出請求的品質將在本文中被稱作「形態」。
參照圖7,在某些實施例中,儲存控制器625中可採用形態引擎710及儲存虛擬器715以在應用程式發出請求時將快閃記憶體分配至所述應用程式。形態引擎710可連接至反及快閃介面720以處理由應用程式藉由儲存虛擬器715而發送的輸入/輸出(I/O)請求。
參照圖8,在某些實施例中,形態引擎710可包括原始位元錯誤率(RBER)追蹤器810、耗損追蹤器815、保持預測器820、及反及控制器825。
原始位元錯誤率追蹤器810可監測每一物理快閃記憶體區塊630的原始位元錯誤率。原始位元錯誤率追蹤器810可藉由每當因應於主機請求自快閃記憶體讀取資料時追蹤位元錯誤計數來達成此操作。在某些實施例中,位元錯誤計數可被記錄為快閃轉譯層中的額外表項。
原始位元錯誤率追蹤器810亦可執行「採樣(sampling)」讀取操作(即,不由主機請求引起的讀取操作)以當例如在某段時間中在物理快閃記憶體區塊630中未執行過任何由主機請求的讀取操作時獲得對物理快閃記憶體區塊630中的原始位元錯誤率的更新量測。藉由此種方式,原始位元錯誤率追蹤器810可隨時間創建表,所述表列出對於每一物理快閃記憶體區塊630,所觀察到的位元錯誤率。
在某些實施例中,所述表可對於每一物理快閃記憶體區塊630具有多個表項,例如,對於藉由使用大的步長的增量步進脈衝程式化而被程式化的記憶體胞元,具有第一所觀察原始位元錯誤率,且對於藉由使用小的步長的增量步進脈衝程式化而被程式化的記憶體胞元,具有第二所觀察原始位元錯誤率。所述表可儲存於非揮發性記憶體中(例如,快閃記憶體620中),以使得所述表在對固態驅動機615的供電暫時中斷時得到保存。
耗損追蹤器815可監測在快閃記憶體上執行的程式化及抹除操作且可對對每一物理快閃記憶體區塊630執行的程式化及抹除循環的數目進行計數。在某些實施例中,亦可出於耗損平衡(wear-leveling)的目的而在快閃轉譯層中追蹤程式化及抹除循環的數目。藉由此種方式,耗損追蹤器815可隨時間創建表,所述表列出(對於每一物理快閃記憶體區塊630)已在物理快閃記憶體區塊630上執行的程式化及抹除循環的數目。
在某些實施例中,所述表可對於每一物理快閃記憶體區塊630具有多個表項,例如,使用淺抹除過程執行的程式化及抹除循環的第一計數、及使用正常抹除過程執行的程式化及抹除循環的單獨的第二計數。所述表可儲存於非揮發性記憶體中(例如,快閃記憶體620中),以使得所述表在對固態驅動機615的供電暫時中斷時得到保存。
保持預測器820可用於估測對於各種抹除及程式化方法中的每一種抹除及程式化方法,對每一物理快閃記憶體區塊630的可容許保持時間。在一個實施例中,保持預測器820可作為(自原始位元錯誤率追蹤器810報告的)保持時間的函數來執行與位元錯誤率的線性擬合(或指數擬合),並可將可容許保持時間計算為其中此擬合的原始位元錯誤率等於臨限值(即,最大可接受原始位元錯誤率(例如,每百萬個位元一個位元錯誤))的保持時間值。在某些實施例中,保持預測器820可指由耗損追蹤器815產生的用於計算可容許保持時間的表。在某些實施例中,所述臨限值可為可以程式化方式加以改變的。
反及控制器825可為可與快閃記憶體620直接交互、進而發出區塊及頁面層階的讀取命令、寫入命令、及抹除命令的驅動器常程(driver routine)。反及控制器825可處理用於偵測及修正自快閃記憶體620讀取的原始資料中的位元錯誤的錯誤修正解碼解碼演算法。反及控制器825亦可將資訊自保持預測器820中繼至儲存虛擬器715。反及控制器825可更提供對抹除過程(例如,無論使用的是淺抹除還是正常抹除)及程式化過程(例如,欲在採用增量步進脈衝程式化的程式化操作中採用的步長)的控制。
參照圖9,在儲存虛擬器715中,對於向固態驅動機615註冊的每一應用程式,虛擬儲存表910可儲存指示例如最大可接受平均因應時間及最小可容許保持時間的一組要求。所述要求亦可包括指示應用程式將潛在地使用多少區塊的容量要求。
群集引擎915可自虛擬儲存表910接收資訊並可根據保持預測器820的計算而為向固態驅動機615註冊的每一應用程式產生群集清單,所述群集為適合於滿足相應應用程式的要求的一組物理快閃記憶體區塊630,且所述群集清單為所述群集中的物理快閃記憶體區塊630的清單。
位址轉譯區塊920(其可為快閃轉譯層的一部分)可在快閃記憶體620中維持用於將邏輯頁面位址映射至物理頁面位址的交叉參考表。
每當作為一或多個群集的一員的物理快閃記憶體區塊630被抹除時,群集引擎915可重新評定物理快閃記憶體區塊630是否仍有資格作為群集中的成員(附加的程式化及抹除循環已潛在地影響了資格),並可相應地更新所述群集、及群集清單。
當物理快閃記憶體區塊630適合於滿足與群集對應的應用程式的要求時(即,當對於某些程式化方法(例如,對於欲在增量步進脈衝程式化中使用的某些步長)並行地或同時地滿足應用程式的平均因應時間要求及可容許保持時間要求時),物理快閃記憶體區塊630可被視為有資格作為群集中的成員。
若應用程式具有對於可用的物理快閃記憶體區塊630中的任一者而言過於嚴格的要求,則最接近於滿足所述要求的一或多個物理快閃記憶體區塊630可被視為有資格作為所述應用程式的群集中的成員。在此種情形中,應用程式可意識到被分配給所述應用程式的是不滿足其要求的物理快閃記憶體區塊630。此種判斷可在給定物理快閃記憶體區塊630已經受的程式化及抹除循環的歷史的條件下作出,所述判斷包括若物理快閃記憶體區塊630剛剛被抹除,則判斷最新抹除是使用淺抹除過程還是正常抹除過程來執行。
在某些實施例中,在垃圾收集期間,可拖延藉由垃圾收集而進行循環的區塊的抹除,直至所述區塊被分配至特定應用程式。在此實施例中,群集引擎915可當存在如下情形時包括群集中的區塊:若所述區塊是使用正常抹除而被抹除,則所述區塊將適合於滿足與所述群集對應的應用程式的要求。在區塊被分配至應用程式之後,可在淺抹除足以使得所述區塊能夠滿足所述應用程式的要求時使用淺抹除來抹除所述區塊;否則,使用正常抹除來抹除所述區塊。
在任意操作中,當應用程式作出要求分配持久性儲存器的請求時,可由虛擬儲存表910接收所述請求,虛擬儲存表910可向群集引擎915作出要求得到一或多個有資格物理快閃記憶體區塊630(即,滿足應用程式的要求的物理快閃記憶體區塊630)的清單的請求。位址轉譯區塊920可接著分配由有資格物理快閃記憶體區塊630中的一或多者內的應用程式所請求的一或多個儲存區域並可更新自邏輯頁面號碼至物理頁面號碼的映射。
當應用程式隨後將資料寫入至固態驅動機615時,可使用與應用程式的要求一致的程式化參數(例如,具有大到足以滿足平均因應時間要求且又小到足以滿足可容許保持時間要求的步長的增量步進脈衝程式化)來執行程式化操作。
參照圖10A及圖10B,在某些實施例中,多個固態驅動機615可連接於一起以形成用於將儲存器提供至主機610的邏輯儲存層。在此種實施例中,共享群集資訊可有助於可根據所述群集資訊來作出儲存分配決策。
舉例而言,在圖10A中,若應用程式作出要求得到大量儲存器的分配請求(經由儲存介面1010及第二介面1015),則集中式群集引擎1020可自固態驅動機615中的一或多者中的一或多個有資格物理快閃記憶體區塊630分配空間,集中式群集引擎1020會維持由固態驅動機615的相應薄群集引擎1025產生的群集清單的複本。
在圖10B所示實施例中,每一固態驅動機615可包括厚群集引擎1030,厚群集引擎1030可除維持其自身的群集清單以外亦維持其他厚群集引擎1030中的每一者的群集清單的複本。在此實施例中,當固態驅動機615接收到要求得到超過可在固態驅動機615的有資格物理快閃記憶體區塊630內得到的量的儲存量的分配請求(經由儲存介面1010及第二介面1015)時,固態驅動機615可將針對未滿足的分配要求的請求傳送至另一固態驅動機615(另一固態驅動機615轉而可在固態驅動機615無法滿足所述請求時將針對未滿足的分配要求的請求傳送至再一固態驅動機615)。
綜上所述,固態驅動機615可藉由調整抹除及程式化參數以及選擇針對應用程式的要求進行定製的物理快閃記憶體區塊630而高效地滿足各種應用程式的儲存要求。藉由此種方式,舉例而言,對於要求長保持時間的應用程式,可提供長保持時間,且對於僅需較短保持時間的應用程式,可提供較短的保持時間及例如對應的效能提高。
根據本文所述本發明的實施例的固態驅動機615及/或任意其他相關裝置或組件可利用任意適合的硬體、韌體(例如,應用專用積體電路(application-specific integrated circuit,ASIC))、軟體、或其適合的組合來實作。舉例而言,固態驅動機615的各種組件可形成於一個積體電路(integrated circuit,IC)晶片上或單獨的積體電路晶片上。此外,固態驅動機615的各種組件可實作於撓性印刷電路膜、膠帶載體封裝(tape carrier package,TCP)、或印刷電路板(printed circuit board,PCB)上,或者形成於與固態驅動機615相同的基板上。
此外,固態驅動機615的各種組件可為在一或多個計算裝置中在一或多個處理器上運行的進程或執行緒(thread),所述進程或執行緒執行電腦程式指令並與其他系統組件進行交互以執行本文所述各種功能性。電腦程式指令可儲存於可在使用標準記憶體裝置(例如(舉例而言,隨機存取記憶體(random access memory,RAM)))的計算裝置中實作的記憶體中。電腦程式指令亦可儲存於其他非暫時性電腦可讀取媒體(例如(舉例而言,唯讀光碟(CD-ROM)、快閃驅動機(flash drive))等)中。
此外,本發明所屬技術中具有通常知識者應知各種計算裝置的功能性可被組合或整合成單一計算裝置,或者特定計算裝置的功能性可跨越一或多個其他計算裝置來分佈,而此並不背離本發明的示例性實施例的範圍。
儲存控制器625本身可為處理電路,或可包括處理電路。用語「處理電路」在本文中旨在包括用於處理資料或數位訊號的硬體、韌體、及軟體的任何組合。處理電路硬體可包括例如應用專用積體電路(ASIC)、通用或專用中央處理單元(central processing unit,CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(graphics processing unit,GPU)、及例如現場可程式化柵極陣列(field programmable gate array,FPGA)等可程式化邏輯裝置。
在如本文所使用的處理電路中,每一功能可藉由被配置成(即,被固線連接成)執行此功能的硬體來執行、或藉由被配置成執行儲存於非暫時性儲存媒體中的指令的更通用的硬體(例如,中央處理單元)來執行。處理電路可製作於單一印刷配線板(printed wiring board,PWB)上或分佈於若干互連的印刷配線板之上。處理電路可含有其他處理電路;舉例而言,處理電路可包括在印刷配線板上互連的兩個處理電路,即現場可程式化柵極陣列與中央處理單元。
應理解,儘管本文中可能使用「第一(first)」、「第二(second)」、「第三(third)」等用語來闡述各種元件、組件、區、層、及/或區段,然而該些元件、組件、區、層、及/或區段不應受限於該些用語。該些用語僅用於區分各個元件、組件、區、層、或區段。因此,在不背離本發明概念的精神及範圍的條件下,以上所論述的第一元件、組件、區、層、或區段可被稱為第二元件、組件、區、層、或區段。
為易於說明,本文中可使用例如「在…之下(beneath)」、「在…下面(below)」、「下方的(lower)」、「在…以下(under)」、「在…之上(above)」、「上方的(upper)」等空間相對性用語來闡述圖中所示一個元件或特徵與另一(其他)元件或特徵的關係。應理解,此種空間相對性用語旨在除圖中所繪示的定向外亦囊括裝置在使用或操作中的其他定向。舉例而言,若圖中的裝置被翻轉,則被闡述為位於其他元件或特徵「下面」或「之下」或「以下」的元件或特徵此時將被定向為位於所述其他元件或特徵「之上」。因此,示例性用語「在…下面」及「在…以下」可囊括上方及下方兩種定向。所述裝置可具有其他定向(例如,旋轉90度或處於其他定向)且本文中所使用的空間相對性描述語應相應地進行解釋。另外,亦應理解,當稱一個層位於兩個層「之間(between)」時,所述層可為所述兩個層之間的唯一層,或亦可存在一或多個中間層。
本文所用術語僅用於闡述特定實施例且並非旨在限制本發明概念。本文所用用語「實質上(substantially)」、「大約(about)」及類似用語用作近似值用語、而並非作為程度用語,並且旨在慮及本發明所屬技術中具有通常知識者將知的量測值或計算值的固有偏差。本文所用用語「主要組分(major component)」意指在重量上構成組成物的至少一半的組分,且用語「主要部分(major portion)」當被施加至多個項時意指所述項的至少一半。
除非上下文中清楚地另外指明,否則本文所用的單數形式「一(a及an)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。本文所用用語「及/或(and/or)」包括相關所列項其中一或多個項的任意及所有組合。例如「……中的至少一者(at least one of)」等表達當出現在一系列元件之前時,是修飾整個系列的元件而並非修飾所述系列中的各別元件。此外,當闡述本發明概念的實施例時使用「可(may)」是指「本發明的一或多個實施例」。此外,用語「示例性(exemplary)」旨在指實例或說明。本文所用用語「使用(use)」、「正使用(using)」、及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
應理解,當稱一個元件或層位於另一元件或層「上(on)」,「連接至(connected to)」、「耦合至(coupled to)」、或「鄰近於(adjacent to)」另一元件或層時,所述元件或層可直接位於所述另一元件或層上,直接連接至、直接耦合至、或直接鄰近於所述另一元件或層,抑或可存在一或多個中間元件或層。相比之下,當稱一個元件或層「直接(directly)」位於另一元件或層「上(on)」,「直接連接至(directly connected to)」、「直接耦合至(directly coupled to)」、或「緊鄰於(immediately adjacent to)」另一元件或層時,則不存在中間元件或層。
本文所述的任意數值範圍旨在包括所述範圍內所包含的具有相同數值精度的所有子範圍。舉例而言,範圍「1.0至10.0」旨在包括介於所述最小值1.0與所述最大值10.0之間(且包含1.0及10.0)的所有子範圍,即,具有等於或大於1.0的最小值及等於或小於10.0的最大值(例如(舉例而言,2.4至7.6))。本文所述任意最大數值限制旨在包括其中所包含的所有較低的數值限制,且本說明書中所述的任意最小數值限制旨在包括其中所包含的所有較高的數值限制。
儘管已在本文中具體闡述及說明瞭形態儲存裝置的示例性實施例,然而對於熟習此項技術者將顯而易見,存在諸多潤飾及變型。因此,應理解,根據本發明的原理構造的形態儲存裝置可被實作成不同於本文所具體闡述者。在以下申請專利範圍及其等效範圍中亦對本發明進行定義。
105、110、115、120、125、130、135、140、145:曲線
410:原始位元錯誤率
415:長可容許保持時間
420:較短可容許保持時間
425:過程
610:主機
615:固態驅動機
620:快閃記憶體
625:儲存控制器
630:物理快閃記憶體區塊
635:物理頁面
710:形態引擎
715:儲存虛擬器
720:反及快閃介面
810:原始位元錯誤率追蹤器
815:耗損追蹤器
820:保持預測器
825:反及控制器
910:虛擬儲存表
915:群集引擎
920:位址轉譯區塊
1010:儲存介面
1015:第二介面
1020:集中式群集引擎
1025:薄群集引擎
1030:厚群集引擎
app1:第一應用程式
app2:第二應用程式
Cap.:容量
Life.:壽命
Perf.:效能
Ret.:可容許保持時間
ΔVP_large、ΔVP_small:步長
圖1A是原始位元錯誤率隨保持時間變化的曲線圖。
圖1B是原始位元錯誤率隨程式化及抹除循環的數目變化的曲線圖。
圖2A是根據本發明實施例的電壓階躍順序(voltage step sequence)的圖。
圖2B是根據本發明實施例的電壓階躍順序的圖。
圖3A是根據本發明實施例的程式化狀態及抹除狀態的電壓分佈的曲線圖。
圖3B是根據本發明實施例的程式化狀態及抹除狀態的電壓分佈的曲線圖。
圖4是根據本發明實施例的原始位元錯誤率作為保持時間函數的曲線圖。
圖5A是硬碟驅動機(hard disk drive)的四軸特性圖。
圖5B是根據本發明實施例的固態驅動機(solid state drive)的四軸特性圖。
圖5C是根據本發明實施例的固態驅動機的四軸特性圖。
圖5D是根據本發明實施例的固態驅動機的四軸特性圖。
圖6是根據本發明實施例的主機及固態驅動機的方塊圖。
圖7是根據本發明實施例的形態系統的方塊圖。
圖8是根據本發明實施例的形態引擎的方塊圖。
圖9是根據本發明實施例的儲存虛擬器的方塊圖。
圖10A是根據本發明實施例的具有多個薄群集引擎的系統的方塊圖。
圖10B是根據本發明實施例的具有多個厚群集引擎的系統的方塊圖。
610:主機
615:固態驅動機
620:快閃記憶體
625:儲存控制器
630:物理快閃記憶體區塊
635:物理頁面
Claims (21)
- 一種在連接至主機的固態驅動機中分配快閃記憶體的各部分的方法,所述快閃記憶體包括多個物理快閃記憶體區塊,所述方法包括:根據多個位元錯誤計數計算所述多個物理快閃記憶體區塊中的一或多者的原始位元錯誤率;對所述多個物理快閃記憶體區塊中的每一者執行的程式化及抹除循環進行計數;對於多種程式化方法中的每一種程式化方法,對於一或多個物理快閃記憶體區塊,根據所述原始位元錯誤率及所述程式化及抹除循環的數目來計算:平均因應時間,以及估測可容許保持時間;對於一或多個物理快閃記憶體區塊,判斷所述一或多個物理快閃記憶體區塊是否適合於滿足第一組要求;自第一應用程式接收儲存空間分配的請求;以及向所述第一應用程式分配第一清單的物理快閃記憶體區塊中的第一物理快閃記憶體區塊。
- 如請求項1所述的方法,更包括:對所述快閃記憶體執行多個讀取操作,一或多個讀取操作包括錯誤修正碼解碼操作,所述錯誤修正碼解碼操作生成所述多個位元錯誤計數中的一個位元錯誤計數。
- 如請求項1所述的方法,更包括:自在所述主機上運行的所述第一應用程式接收所述第一組要求;以及形成所述第一清單的物理快閃記憶體區塊,所述第一清單中的所述物理快閃記憶體區塊適合於滿足所述第一組要求。
- 如請求項1所述的方法,其中所述多種程式化方法包括:利用第一步長的增量步進脈衝程式化方法;以及利用第二步長的增量步進脈衝程式化方法,所述第一步長大於所述第二步長。
- 如請求項1所述的方法,其中所述第一組要求包括所要求可容許保持時間或所要求平均因應時間中的至少一者。
- 如請求項5所述的方法,其中對於一或多個物理快閃記憶體區塊,判斷所述一或多個物理快閃記憶體區塊是否適合於滿足所述第一組要求包括:判斷對於所述多種程式化方法中的任一程式化方法:所計算的所述平均因應時間是否小於所述所要求平均因應時間;以及所計算的所述估測可容許保持時間是否大於所述所要求可容許保持時間。
- 如請求項1所述的方法,更包括抹除所述第一物理快閃記憶體區塊,其中抹除所述第一物理快閃記憶體區塊包括: 當淺抹除過程的預測效應是所述第一物理快閃記憶體區塊保持適合於滿足所述第一組要求時,採用淺抹除過程;以及當淺抹除過程的預測效應是所述第一物理快閃記憶體區塊不保持適合於滿足所述第一組要求時,採用正常抹除過程。
- 如請求項1所述的方法,其中對於一或多個物理快閃記憶體區塊計算估測可容許保持時間包括:作為保持時間的函數來執行與位元錯誤計數的線性擬合,且計算其中所述線性擬合超過最大可接受原始位元錯誤率的所述保持時間。
- 如請求項1所述的方法,更包括:自在所述主機上運行的第二應用程式接收與所述第一組要求不同的第二組要求;對於一或多個物理快閃記憶體區塊,判斷所述一或多個物理快閃記憶體區塊是否適合於滿足所述第二組要求;形成第二清單的物理快閃記憶體區塊,所述第二清單中的所述物理快閃記憶體區塊適合於滿足所述第二組要求;自所述第二應用程式接收儲存空間分配的請求;以及向所述第二應用程式分配所述第二清單中的第二物理快閃記憶體區塊。
- 如請求項9所述的方法,更包括抹除所述第二物理快閃記憶體區塊,其中抹除所述第二物理快閃記憶體區塊包括:當淺抹除過程的預測效應是所述第一物理快閃記憶體區塊保 持適合於滿足所述第一組要求時,採用淺抹除過程;以及當淺抹除過程的所述預測效應是所述第一物理快閃記憶體區塊不保持適合於滿足所述第一組要求時,採用正常抹除過程。
- 一種固態驅動機,包括:儲存控制器,所述儲存控制器包括處理單元;以及快閃記憶體,包括多個物理快閃記憶體區塊,每一物理快閃記憶體區塊包括多個物理頁面,所述儲存控制器,包括:形態引擎;以及儲存虛擬器,包括:虛擬儲存表;位址轉譯區塊;以及群集引擎;所述群集引擎被配置成對於多種程式化方法中的每一種程式化方法,對於一或多個物理快閃記憶體區塊中,根據原始位元錯誤率及程式化及抹除循環的數目來計算:平均因應時間,以及估測可容許保持時間;所述虛擬儲存表被配置成自在主機上運行的第一應用程式接收第一組要求;所述群集引擎被配置成自所述虛擬儲存表接收所述第一組要求,並且對於一或多個物理快閃記憶體區塊中,判斷所述一或多 個物理快閃記憶體區塊是否適合於滿足所述第一組要求;所述群集引擎被配置成形成第一清單的物理快閃記憶體區塊,所述第一清單中的所述物理快閃記憶體區塊適合於滿足所述第一組要求;所述群集引擎被配置成自所述第一應用程式接收儲存空間分配的請求;以及所述群集引擎被配置成向所述第一應用程式分配所述第一清單中的第一物理快閃記憶體區塊。
- 如請求項11所述的固態驅動機,更包括反及控制器,所述反及控制器被配置成對所述快閃記憶體執行多個讀取操作,一或多個讀取操作包括錯誤修正碼解碼操作,所述錯誤修正碼解碼操作生成位元錯誤計數。
- 如請求項12所述的固態驅動機,更包括原始位元錯誤率追蹤器,所述原始位元錯誤率追蹤器被配置成根據多個位元錯誤計數計算所述多個物理快閃記憶體區塊中的一或多者的所述原始位元錯誤率。
- 如請求項11所述的固態驅動機,更包括耗損追蹤器,所述耗損追蹤器被配置成對所述多個物理快閃記憶體區塊中的一或多者執行的程式化及抹除循環進行計數。
- 如請求項11所述的固態驅動機,更包括保持預測器,所述保持預測器被配置成產生所述估測可容許保持時間。
- 如請求項15所述的固態驅動機,其中對於一或多個 物理快閃記憶體區塊計算估測可容許保持時間作為效能量度的函數包括:由所述保持預測器對作為保持時間的函數來執行與位元錯誤計數的線性擬合以及計算其中所述線性擬合超過最大可接受原始位元錯誤率的保持時間。
- 如請求項11所述的固態驅動機,其中所述多種程式化方法包括:利用第一步長的增量步進脈衝程式化方法;以及利用第二步長的增量步進脈衝程式化方法,所述第一步長大於所述第二步長。
- 如請求項11所述的固態驅動機,其中所述第一組要求包括所要求可容許保持時間或所要求平均因應時間中的至少一者。
- 如請求項18所述的固態驅動機,其中對於一或多個物理快閃記憶體區塊,判斷所述一或多個物理快閃記憶體區塊是否適合於滿足所述第一組要求包括:判斷對於所述多種程式化方法中的任一程式化方法:所計算的所述平均因應時間是否小於所述所要求平均因應時間;以及所計算的所述估測可容許保持時間是否大於所述所要求可容許保持時間。
- 如請求項12所述的固態驅動機,其中所述反及控制器更被配置成抹除所述第一物理快閃記憶體區塊,其中抹除所述 第一物理快閃記憶體區塊包括:當淺抹除過程的預測效應是所述第一物理快閃記憶體區塊保持適合於滿足所述第一組要求時,採用淺抹除過程;以及當淺抹除過程的所述預測效應是所述第一物理快閃記憶體區塊不保持適合於滿足所述第一組要求時,採用正常抹除過程。
- 如請求項11所述的固態驅動機,其中:所述虛擬儲存表被配置成自在所述主機上運行的第二應用程式接收不同於所述第一組要求的第二組要求;所述群集引擎被配置成:自所述虛擬儲存表接收所述第二組要求,並且對於一或多個物理快閃記憶體區塊中,判斷所述一或多個物理快閃記憶體區塊是否適合於滿足所述第二組要求;形成第二清單的物理快閃記憶體區塊,所述第二清單中的所述物理快閃記憶體區塊適合於滿足所述第二組要求;自所述第二應用程式接收儲存空間分配的請求;以及向所述第二應用程式分配所述第二清單中的第二物理快閃記憶體區塊。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662352509P | 2016-06-20 | 2016-06-20 | |
US62/352,509 | 2016-06-20 | ||
US15/242,433 US10055159B2 (en) | 2016-06-20 | 2016-08-19 | Morphic storage device |
US15/242,433 | 2016-08-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI708143B true TWI708143B (zh) | 2020-10-21 |
TW202040366A TW202040366A (zh) | 2020-11-01 |
Family
ID=60659470
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109121230A TWI708143B (zh) | 2016-06-20 | 2017-04-18 | 固態驅動機及其分配方法 |
TW106112839A TWI699647B (zh) | 2016-06-20 | 2017-04-18 | 形態儲存裝置及其分配方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106112839A TWI699647B (zh) | 2016-06-20 | 2017-04-18 | 形態儲存裝置及其分配方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10055159B2 (zh) |
JP (1) | JP6847764B2 (zh) |
KR (2) | KR102477581B1 (zh) |
CN (1) | CN107526543B (zh) |
TW (2) | TWI708143B (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US10275165B2 (en) * | 2016-09-12 | 2019-04-30 | Toshiba Memory Corporation | Memory controller |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10949113B2 (en) * | 2018-01-10 | 2021-03-16 | SK Hynix Inc. | Retention aware block mapping in flash-based solid state drives |
US11132133B2 (en) * | 2018-03-08 | 2021-09-28 | Toshiba Memory Corporation | Workload-adaptive overprovisioning in solid state storage drive arrays |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US10656847B2 (en) | 2018-05-10 | 2020-05-19 | International Business Machines Corporation | Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation |
CN108845765B (zh) * | 2018-05-31 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种nand数据读取方法、系统、设备及存储介质 |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11163452B2 (en) * | 2018-09-24 | 2021-11-02 | Elastic Flash Inc. | Workload based device access |
JP7178916B2 (ja) | 2019-01-29 | 2022-11-28 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2020149123A (ja) * | 2019-03-11 | 2020-09-17 | キオクシア株式会社 | メモリシステム、及びメモリシステムの制御方法 |
US11086705B2 (en) * | 2019-03-18 | 2021-08-10 | International Business Machines Corporation | Managing the reliability of pages in non-volatile random access memory |
US11288007B2 (en) * | 2019-05-16 | 2022-03-29 | Western Digital Technologies, Inc. | Virtual physical erase of a memory of a data storage device |
KR102680521B1 (ko) * | 2019-06-18 | 2024-07-04 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
KR20210088916A (ko) | 2020-01-07 | 2021-07-15 | 에스케이하이닉스 주식회사 | 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템 |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
KR20220021167A (ko) * | 2020-08-13 | 2022-02-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11354190B2 (en) * | 2020-08-13 | 2022-06-07 | Western Digital Technologies, Inc. | Using over provisioning space for selectively storing block parity |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US12099742B2 (en) | 2021-03-15 | 2024-09-24 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US20220365707A1 (en) * | 2021-05-12 | 2022-11-17 | Samsung Electronics Co., Ltd. | System and method for fine granular retention control in storage devices |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
CN116469442B (zh) * | 2022-03-23 | 2024-05-03 | 武汉置富半导体技术有限公司 | 芯片数据保持时间的预测方法、装置及存储介质 |
US12099410B2 (en) * | 2022-12-01 | 2024-09-24 | Solid State Storage Technology Corporation | Statistics table of solid state storage device and using method thereof |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201413736A (zh) * | 2012-06-22 | 2014-04-01 | Micron Technology Inc | 使用錯誤率之損耗平衡記憶體 |
US9007842B2 (en) * | 2013-03-12 | 2015-04-14 | Seagate Technology Llc | Retention detection and/or channel tracking policy in a flash memory based storage system |
US20160170871A1 (en) * | 2014-12-12 | 2016-06-16 | SanDisk Technologies, Inc. | Model based configuration parameter management |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4140018A1 (de) * | 1991-12-04 | 1993-06-09 | Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De | Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen |
US7903806B1 (en) * | 2000-01-05 | 2011-03-08 | Canoga Perkins Corp. | Expert call analyzer and next generation telephony network configuration system |
US20050081080A1 (en) * | 2003-10-14 | 2005-04-14 | International Business Machines Corporation | Error recovery for data processing systems transferring message packets through communications adapters |
US7593259B2 (en) * | 2006-09-13 | 2009-09-22 | Mosaid Technologies Incorporated | Flash multi-level threshold distribution scheme |
JP2008287404A (ja) * | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
JP2009163782A (ja) * | 2007-12-13 | 2009-07-23 | Toshiba Corp | 半導体記憶装置 |
JP2009251627A (ja) * | 2008-04-01 | 2009-10-29 | Panasonic Corp | メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
EP2294510B1 (en) * | 2008-06-24 | 2011-12-28 | SanDisk IL Ltd. | Method and apparatus for error correction according to erase counts of a solid-state memory |
US9170897B2 (en) | 2012-05-29 | 2015-10-27 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing solid-state storage reliability |
US8464143B2 (en) | 2009-01-12 | 2013-06-11 | Board Of Regents Of The Nevada System Of Higher Education | Error detection method |
US8433985B2 (en) | 2010-03-29 | 2013-04-30 | Intel Corporation | Error correction mechanisms for flash memories |
US8489855B2 (en) | 2010-05-07 | 2013-07-16 | Ocz Technology Group Inc. | NAND flash-based solid state drive and method of operation |
US9170933B2 (en) | 2010-06-28 | 2015-10-27 | International Business Machines Corporation | Wear-level of cells/pages/sub-pages/blocks of a memory |
KR101606718B1 (ko) * | 2010-10-27 | 2016-03-28 | 엘에스아이 코포레이션 | 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들 |
JP2013047913A (ja) * | 2011-08-29 | 2013-03-07 | Toshiba Corp | 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置 |
JP5943395B2 (ja) * | 2011-11-02 | 2016-07-05 | 国立大学法人 東京大学 | メモリコントローラおよびデータ記憶装置 |
US8862967B2 (en) * | 2012-03-15 | 2014-10-14 | Sandisk Technologies Inc. | Statistical distribution based variable-bit error correction coding |
US8862810B2 (en) | 2012-09-27 | 2014-10-14 | Arkologic Limited | Solid state device write operation management system |
JP5528525B2 (ja) * | 2012-11-19 | 2014-06-25 | 京セラ株式会社 | 携帯情報端末 |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9122589B1 (en) | 2013-06-28 | 2015-09-01 | Emc Corporation | Data storage system with unified system cache |
US9195401B2 (en) | 2014-02-18 | 2015-11-24 | University Of Florida Research Foundation, Inc. | Method and apparatus for virtual machine live storage migration in heterogeneous storage environment |
JP6174502B2 (ja) * | 2014-02-21 | 2017-08-02 | 株式会社ゼンリン | 経路探索装置、経路探索方法、コンピュータプログラム、および、データ構造 |
US9419655B2 (en) | 2014-04-04 | 2016-08-16 | Seagate Technology Llc | Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes |
WO2015155860A1 (ja) * | 2014-04-09 | 2015-10-15 | 株式会社日立製作所 | 情報記憶装置及び情報記憶装置の制御方法 |
US20160180953A1 (en) * | 2014-12-22 | 2016-06-23 | Sandisk Technologies Inc. | Predicting memory data loss based on temperature accelerated stress time |
US20170160338A1 (en) | 2015-12-07 | 2017-06-08 | Intel Corporation | Integrated circuit reliability assessment apparatus and method |
-
2016
- 2016-08-19 US US15/242,433 patent/US10055159B2/en active Active
-
2017
- 2017-02-10 KR KR1020170018819A patent/KR102477581B1/ko active IP Right Grant
- 2017-04-18 TW TW109121230A patent/TWI708143B/zh active
- 2017-04-18 TW TW106112839A patent/TWI699647B/zh active
- 2017-05-19 JP JP2017099640A patent/JP6847764B2/ja active Active
- 2017-06-16 CN CN201710455905.1A patent/CN107526543B/zh active Active
-
2018
- 2018-07-25 US US16/045,639 patent/US10489075B2/en active Active
-
2022
- 2022-12-09 KR KR1020220171596A patent/KR102546244B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201413736A (zh) * | 2012-06-22 | 2014-04-01 | Micron Technology Inc | 使用錯誤率之損耗平衡記憶體 |
US9007842B2 (en) * | 2013-03-12 | 2015-04-14 | Seagate Technology Llc | Retention detection and/or channel tracking policy in a flash memory based storage system |
US20160170871A1 (en) * | 2014-12-12 | 2016-06-16 | SanDisk Technologies, Inc. | Model based configuration parameter management |
Also Published As
Publication number | Publication date |
---|---|
US20170364298A1 (en) | 2017-12-21 |
KR20230004358A (ko) | 2023-01-06 |
CN107526543B (zh) | 2022-02-01 |
US20190018604A1 (en) | 2019-01-17 |
KR20170142841A (ko) | 2017-12-28 |
TW202040366A (zh) | 2020-11-01 |
TWI699647B (zh) | 2020-07-21 |
KR102477581B1 (ko) | 2022-12-14 |
JP6847764B2 (ja) | 2021-03-24 |
TW201800945A (zh) | 2018-01-01 |
KR102546244B1 (ko) | 2023-06-22 |
US10055159B2 (en) | 2018-08-21 |
JP2017228287A (ja) | 2017-12-28 |
US10489075B2 (en) | 2019-11-26 |
CN107526543A (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI708143B (zh) | 固態驅動機及其分配方法 | |
US11355197B2 (en) | Memory system with nonvolatile cache and control method thereof | |
US9916087B2 (en) | Method and system for throttling bandwidth based on temperature | |
US20170242625A1 (en) | Apparatus for ssd performance and endurance improvement | |
US8560770B2 (en) | Non-volatile write cache for a data storage system | |
JP5719013B2 (ja) | フラッシュ読取コマンド完了の時間推定に基づくホスト読取コマンドリターンのリオーダリング | |
US10126958B2 (en) | Write suppression in non-volatile memory | |
US10126970B2 (en) | Paired metablocks in non-volatile storage device | |
US10489076B2 (en) | Morphic storage device | |
US11645006B2 (en) | Read performance of memory devices | |
US20230244408A1 (en) | Apparatus and method for erasing data programmed in a non-volatile memory block in a memory system multiple times | |
CN110895449B (zh) | 用于在存储器系统中管理有效数据的装置和方法 | |
US20110238897A1 (en) | Memory system, personal computer, and method of controlling the memory system | |
CN112783424B (zh) | 存储装置及其控制方法 | |
KR101823983B1 (ko) | 메모리 디바이스들 및 방법들 | |
EP4198745B1 (en) | Automatic deletion in a persistent storage device | |
US12124727B2 (en) | Automatic deletion in a persistent storage device | |
CN118210438A (zh) | 非写入提升数据在写入提升器高速缓存存储器中的机会存储 |