TW201626225A - 用於使用反及頁面緩衝器來增進固態硬碟之移轉緩衝器之使用的方法和系統 - Google Patents
用於使用反及頁面緩衝器來增進固態硬碟之移轉緩衝器之使用的方法和系統 Download PDFInfo
- Publication number
- TW201626225A TW201626225A TW104127725A TW104127725A TW201626225A TW 201626225 A TW201626225 A TW 201626225A TW 104127725 A TW104127725 A TW 104127725A TW 104127725 A TW104127725 A TW 104127725A TW 201626225 A TW201626225 A TW 201626225A
- Authority
- TW
- Taiwan
- Prior art keywords
- page data
- page
- data
- controller
- nand
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/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/1072—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 multilevel memories
-
- 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
- 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
- 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- 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/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- 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
-
- 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/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/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/22—Employing cache memory using specific memory technology
- G06F2212/222—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/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- 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
-
- 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/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/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5642—Multilevel memory with buffers, latches, registers at input or output
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5643—Multilevel memory comprising cache storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5648—Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
-
- 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
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
將自主機接收之頁面資料(例如上部頁面資料)儲存於固態硬碟之控制器之移轉緩衝器中。另一個頁面資料(例如,下部頁面資料)自非依電性記憶體(例如,NAND記憶體)讀取以作為錯誤校正頁面資料來儲存於移轉緩衝器中。將錯誤校正頁面資料及頁面資料寫入非依電性記憶體。在額外實施例中,控制器將自主機接收之頁面資料(例如上部頁面資料)加載於一或多個反及頁面緩衝器中。控制器讀取來自NAND記憶體之另一個頁面資料(例如,下部頁面資料)以作為錯誤校正頁面資料儲存於移轉緩衝器中。將儲存於移轉緩衝器中之錯誤校正頁面資料加載至一或多個反及頁面緩衝器。
Description
本發明係有關於用於使用反及頁面緩衝器來增進固態硬碟之移轉緩衝器之使用的方法和系統。
固態硬碟(SSD)係使用積體電路組件作為記憶體來永久儲存資料之資料儲存裝置。SSD不具有移動機械組件並且此情況將SSD與含有旋轉磁碟及可移動讀/寫頭之傳統電機磁碟,如,硬磁碟驅動器(HDD)或軟碟區分開來。與電機磁碟相比,SSD通常更抵抗機械衝擊、運行安靜、具有較低存取時間,以及更短延時。
許多類型SSD使用基於NAND之快閃記憶體,其在沒有功率的情況下保持資料並且為一種類型的非依電性儲存器技術。NAND快閃研發之重要目標係降低每位元之成本並且增加最大晶片容量以使得快閃記憶體可與磁性儲存裝置如硬碟競爭。
在單一階儲存單元(SLC)NAND中,每個單元可
在兩個狀態之一者下存在,並且每單元儲存一個資訊位元。多階儲存單元(MLC)NAND係固態快閃記憶體,其每單元使用多階以允許使用相同數目電晶體來儲存更多位元。一些MLC NAND每單元具有四個可能狀態,因此其每單元可儲存兩個資訊位元。TLC NAND(三階儲存單元NAND)係一種類型的多級固態NAND,其每單元快閃媒體儲存三個資訊位元。在某些情況下,與每單元儲存一個或兩個資訊位元之NAND快閃記憶體相比,可能希望使用TLC NAND來製造更高儲存容量SSD。
依據本發明之一實施例,係特地提出一種方法,其包括:將自主機接收之頁面資料儲存於固態硬碟之控制器之移轉緩衝器中;讀取來自該固態硬碟中之非依電性記憶體之另一個頁面資料以作為錯誤校正頁面資料儲存於該移轉緩衝器中;及將該錯誤校正頁面資料及該頁面資料寫入該非依電性記憶體。
100‧‧‧計算環境
102‧‧‧主機
104‧‧‧SSD
106‧‧‧控制器
108‧‧‧NAND複合體
110‧‧‧移轉緩衝器
112‧‧‧ECC引擎
114‧‧‧反及頁面緩衝器
116‧‧‧NAND記憶體
202‧‧‧下部頁面資料
204‧‧‧上部頁面資料
210‧‧‧時間間隔
300、500、700、800‧‧‧流程圖
302~312、502~512、702~712、802~812‧‧‧區塊
400、600‧‧‧方塊圖
900‧‧‧系統
902‧‧‧電路
904‧‧‧處理器
906‧‧‧記憶體
908‧‧‧儲存器
910‧‧‧程式邏輯
912‧‧‧代碼
現在參看附圖,其中通篇相同參考數字代表對應部分:圖1例示根據某些實施例的主機將資料寫入SSD之計算環境之方塊圖;圖2例示示出根據某些實施例如何將下部頁面資料然後將上部頁面資料寫入SSD之另一個方塊圖;
圖3例示示出根據某些實施例的將資料寫入SSD之第一示例性操作之流程圖;圖4例示示出根據某些實施例的實施圖3示出之第一示例性操作之移轉緩衝器之尺寸要求之方塊圖;圖5例示示出根據某些實施例的將資料寫入SSD之第二示例性操作之流程圖;圖6例示示出根據某些實施例的實施圖5示出之第二示例性操作之移轉緩衝器之尺寸要求之方塊圖;圖7例示示出根據某些實施例的將資料寫入SSD之第三示例性操作之流程圖;圖8例示示出根據某些實施例的將資料寫入SSD之第四示例性操作之流程圖;及圖9例示根據某些實施例的計算裝置之方塊圖。
在以下描述中,參考形成其一部分並且例示多個實施例之附圖。應瞭解可利用其他實施例並且可產生結構及操作變化。
異位錯誤係MLC NAND之主要問題。此問題對於TLC NAND尤其更惡劣。在TLC NAND中,每單元程式規劃三個資料位元。儲存之第一位元被稱為下部頁面資料。儲存之第二位元被稱為上部頁面資料,並且儲存之第三位元被稱為額外頁面資料。因此,在程式規劃額外頁面資料之後,TLC可具有8個狀態。下部頁面資料、上部頁面資料
及額外頁面資料可各自被稱為頁面資料。
在TLC NAND中,可經由首先藉由將下部頁面資料程式規劃至TLC NAND中來寫入下部頁面資料,然後藉由將上部頁面資料程式規劃至TLC NAND中來寫入上部頁面資料來寫入資料。然而,為了寫入上部頁面資料,在將上部頁面資料程式規劃至TLC NAND中之前,必須讀取已經寫入之下部頁面資料。
在TLC NAND中,在讀取已經寫入之下部頁面資料時,可能存在讀取錯誤。由於TLC NAND(或就此而言其他NAND)不具有錯誤檢查與校正(ECC)之內部機制,因此讀取下部頁面資料之任何錯誤可在將上部頁面資料程式規劃至TLC NAND中導致異位錯誤。
由於TLC NAND不具有錯誤檢查與校正之內部機制,因此某些實施例提供使用固態硬碟之控制器之移轉緩衝器以便在寫入上部頁面資料之前執行已經寫入TLC NAND並且自TLC NAND讀取之下部頁面資料之錯誤檢查與校正,從而減少異位錯誤的機制。由於移轉緩衝器包含一種類型的依電性記憶體,如靜態隨機存取記憶體(SRAM),因此與TLC NAND之儲存空間相比,移轉緩衝器之儲存空間相對很小。移轉緩衝器可包含不同於SRAM的某種其他類型之依電性記憶體,只要依電性記憶體非常快速並且因此相對昂貴。另外,具有較大儲存空間之移轉緩衝器難以實施,因為用於預防可能導致移轉緩衝器中之資料損失之斷電的備用電源機制對於具有較大儲存空間之移轉緩衝器而
言構建昂貴。因此,移轉緩衝器之尺寸應相對較小,並且額外實施例提供藉由使用一或多個反及頁面緩衝器以便在將下部頁面資料儲存於移轉緩衝器中的同時儲存上部頁面資料來減少固態硬碟之控制器之移轉緩衝器之尺寸的機制。
圖1例示根據某些實施例的主機102將資料寫入SSD 104之計算環境100之方塊圖。SSD 102可包含控制器106及NAND複合體108,其中在某些實施例中NAND複合體108可為TLC NAND。在其他實施例中,SSD 104可包含控制某些其他類型非依電性記憶體,如NOR記憶體或某種其他合適非依電性記憶體的控制器。可指出某些實施例可實施於由非依電性記憶體製成之SSD中,該非依電性記憶體包括NAND記憶體、NOR記憶體或任何其他合適非依電性記憶體。在某些實施例中,SSD 104可儲存若干太位元組或更多之資料,並且各自儲存若干吉位元組或更多之資料的複數個TLC NAND 108可在SSD 104中發現。
在某些實施例中,控制器106可經由應用特定積體電路(ASIC)來實施。控制器106可具有移轉緩衝器110及ECC引擎112。移轉緩衝器110可為SRAM,並且ECC引擎112可實施於電路或韌體中。雖然TLC NAND可具有大約吉位元組之儲存空間,移轉緩衝器110可具有大約千位元組或兆位元組之儲存空間。
TLC NAND 108可包含複數個反及頁面緩衝器114及NAND記憶體116。反及頁面緩衝器114之數目可為約
四個(或更多)並且可具有大約千位元組之儲存空間。舉例而言,在某些實施例中,每個反及頁面緩衝器具有64千位元組之儲存空間。
在某些實施例中,主機102可包含任何合適計算裝置,如個人電腦、大型電腦、電話技術裝置、智慧型手機、儲存控制器、刀鋒電腦、具有記憶體之處理器等。在某些實施例中,主機102可經由匯流排(如周邊組件互連(PCIe)、序列先進技術附接(SATA)、串行連接小型電腦系統介面(SAS))或網路,如網際網路、儲存器區域網路(SAN)、局域網路(LAN)等與SSD 104通訊。
在某些實施例中,主機102將下部及上部頁面資料發送至SSD 104以寫入SSD 104之TLC NAND 108。頁面(下部及/或上部)由SSD 104之控制器106儲存於移轉緩衝器110中,並且控制器106向主機102傳達頁面已經寫入SSD。因此,資料藉由主機102寫入SSD 104係非同步的。當移轉緩衝器經由SRAM來實施時,頁面在幾微秒內寫入移轉緩衝器110。然而,寫入NAND記憶體116耗費大約幾毫秒之時間並且在通知主機102資料已經寫入SSD 104之後之稍後時間藉由控制器106自移轉緩衝器110執行。SSD 104之效能藉由首先將頁面儲存於快速移轉緩衝器106中然後將頁面移轉至相對較慢NAND記憶體116來改良。
圖2例示示出根據某些實施例如何將下部頁面資料202然後將上部頁面資料204自主機102寫入SSD 104之另一個方塊圖200。首先主機102將下部頁面資料202發送至
SSD 104,然後在時間間隔210之後發送上部頁面資料204。在某些實施例中,下部及上部頁面資料中之每一者可為64千位元組並且可需要約100至1000位元組之額外空間用於錯誤校正資訊。
因此,圖2例示某些實施例,其中為了將資料寫入SSD 104,主機102首先發送下部頁面資料202然後在時間間隔210之後發送上部頁面資料204。
圖3例示示出根據某些實施例的將資料寫入SSD 104之第一示例性操作之流程圖300。圖3示出之操作可藉由實施於SSD 104中之控制器106來執行。
控制開始於區塊302,其中控制器106自主機102將來自主機102之下部頁面資料202接收於控制器106之移轉緩衝器110中,並且藉由程式規劃NAND記憶體116來將下部頁面資料202寫入NAND記憶體116。一旦下部頁面資料202已經寫入NAND記憶體116,下部頁面資料可在控制器110之移轉緩衝器110中覆寫,因為移轉緩衝器110中之可獲得空間之量相對較小並且需要可獲得空間來儲存由主機102發送之額外頁面。
一段時間之後,控制器106自主機102將上部頁面資料204接收(區塊304)於控制器106之移轉緩衝器110中。除非控制器106讀取來自NAND記憶體116之下部頁面資料,否則上部頁面資料204不能程式規劃至NAND記憶體116中。因此,控制器106讀取(區塊306)來自NAND記憶體116之下部頁面資料202並且在將下部頁面資料202傳送經過ECC引
擎112以在ECC引擎112中偵測並校正下部頁面資料202中之任何錯誤之後將下部頁面資料202儲存於控制器106之移轉緩衝器110中。ECC引擎112負責將校正下部頁面資料202移轉至移轉緩衝器110。在此時間點,移轉緩衝器110同時儲存下部頁面資料202以及上部頁面資料204。
應當指出的是若下部頁面資料沒有讀取錯誤,則下部頁面資料為正確的。若下部頁面資料不正確,則下部頁面資料在ECC引擎112中校正。應當指出的是在此過程期間,下部頁面資料首先穿過ECC引擎112,其中若存在任何錯誤,則下部頁面資料得到校正。之後,校正資料自ECC引擎112移轉至移轉緩衝器110。
控制進行至區塊310,其中控制器106將校正下部頁面資料寫入NAND記憶體116。然後,控制器106藉由程式規劃NAND記憶體116將在移轉緩衝器110中接收之上部頁面資料寫入(區塊312)NAND記憶體116。
因此,圖3例示為了將上部頁面資料程式規劃至NAND記憶體116中,使用移轉緩衝器110來儲存自NAND記憶體116讀取之下部頁面資料以校正讀取錯誤的某些實施例。
圖4例示示出根據某些實施例的實施圖3示出之第一示例性操作300之移轉緩衝器110之尺寸要求之方塊圖400。
在圖4中,可以看出直接在執行圖3之區塊306示出之操作之後(即,在經由下部頁面資料202之ECC錯誤校正,
控制器106將來自NAND記憶體116之下部頁面資料202讀取至移轉緩衝器110中之後),下部頁面資料202及上部頁面資料204同時儲存於移轉緩衝器110中。因此雖然執行錯誤校正以減少異位錯誤之發生,但是存在對於移轉緩衝器110中之儲存空間之較大需求,因為下部頁面資料202及上部頁面資料204需要同時儲存於移轉緩衝器110中。
圖5例示示出根據某些實施例的將資料寫入SSD 104之第二示例性操作之流程圖500。圖5示出之操作可藉由實施於SSD 104中之控制器106來執行。圖5示出之操作減少移轉緩衝器110中需要之儲存空間的量,甚至在異位錯誤經由控制器106中之下部頁面資料202之錯誤校正來減少時亦如此。
控制開始於區塊502,其中控制器106接收來自主機102之下部頁面資料202並且藉由程式規劃NAND記憶體116將下部頁面資料202寫入NAND記憶體116中。將下部頁面資料202寫入NAND記憶體之後,下部頁面資料202可藉由移轉緩衝器110中之其他頁面覆寫。
控制進行至區塊504,其中控制器106自主機102將上部頁面資料204接收於控制器106之移轉緩衝器110中。控制器110將移轉緩衝器204之上部頁面資料204加載(區塊506)至一或多個反及頁面緩衝器114。可指出將上部頁面資料204加載至反及頁面緩衝器114非常快速(例如,大約10微秒),因為反及頁面緩衝器114為SRAM並且並非快閃記憶體單元。加載上部頁面資料204需要之反及頁面緩衝器之數目
取決於上部頁面資料204之尺寸及每個反及頁面緩衝器之尺寸。在某些實施例中,每個反及頁面緩衝器之尺寸被設計成在所有程式/讀取資料通過反及頁面緩衝器時保持單一頁面資料。應當指出的是對於本揭示案提供之實施例,現有TLC NAND之反及頁面緩衝器之尺寸不需要變化。
控制器106讀取(區塊508)來自NAND記憶體116之下部頁面資料202並且在經由ECC引擎112之下部頁面資料202之錯誤偵測及校正之後,將下部頁面資料儲存於移轉緩衝器110中。應當指出的是在將資料(例如,上部頁面資料204)加載至反及頁面緩衝器114之一者中時,可自NAND記憶體116執行讀取操作。由於此時上部頁面資料204已經在一或多個反及頁面緩衝器114中,移轉緩衝器110中之上部頁面資料204可藉由下部頁面資料202或到達以便儲存於移轉緩衝器110中之其他頁面來覆寫。
由於自NAND記憶體116讀取之下部頁面資料202可具有錯誤,控制器106之ECC引擎112判定是否下部頁面資料202為正確的(即,沒有讀取錯誤),並且若不正確,則校正下部頁面資料202並且將下部頁面資料202發送至移轉緩衝器110(即,下部頁面資料在ECC引擎112中校正,然後將校正下部頁面資料移轉至移轉緩衝器110)。
控制進行至區塊512,其中控制器106將來自移轉緩衝器110之下部頁面資料202加載至一或多個反及頁面緩衝器114中。在執行區塊512之操作之後,上部頁面資料204及下部頁面資料202同時在一或多個反及頁面緩衝器114中。
控制器106程式規劃(區塊514)將上部頁面資料204及下部頁面資料202自反及頁面緩衝器114寫入NAND記憶體116中。
因此,與圖3示出之實施例相比,圖5例示移轉緩衝器110之儲存空間要求減少之某些實施例。雖然在圖3示出之實施例中,移轉緩衝器110需要同時儲存下部頁面資料202及上部頁面資料204,但是在圖5示出之實施例中,下部頁面資料202及上部頁面資料204不需要同時儲存於移轉緩衝器110中。
圖6例示示出根據某些實施例的實施圖5示出之第二示例性操作之移轉緩衝器110之尺寸要求之方塊圖600。在圖6中,示出在執行區塊508示出之操作結束時,恰好在下部頁面資料202之錯誤校正及將下部頁面資料202儲存於移轉緩衝器110中之後的下部頁面資料202及上部頁面資料204之位置。可發現移轉緩衝器110儲存下部頁面資料202,而上部頁面資料204儲存於一或多個反及頁面緩衝器114中。因此,與下部頁面資料202及上部頁面資料204同時儲存於移轉緩衝器110中之圖4示出之實施例相比,藉由使用反及頁面緩衝器114來儲存上部頁面資料204,移轉緩衝器110之空間要求得以減少。
圖7例示示出根據某些實施例的將資料寫入SSD 104之第三示例性操作之流程圖700。圖7示出之操作可藉由實施於SSD 104中之控制器106來執行。
控制開始於區塊702,其中控制器106接收來自主機102之下部頁面資料202並且將下部頁面資料寫入NAND
記憶體116(或另一個合適非依電性記憶體,如NOR記憶體)。控制進行至區塊704,其中自主機102接收之上部頁面資料204儲存於固態硬碟104之控制器106之移轉緩衝器106中。下部頁面資料202自NAND記憶體116讀取(區塊706)以經由ECC引擎112校正之後儲存於移轉緩衝器110中。將校正下部頁面資料及上部頁面資料寫入(區塊712)NAND記憶體116。
因此,圖7例示使用控制器106之移轉緩衝器110來減少SSD 104之NAND記憶體116中之異位錯誤的某些實施例。
圖8例示示出根據某些實施例的將資料寫入SSD之第四示例性操作之流程圖800。圖8示出之操作可藉由實施於SSD 104中之控制器106來執行。
控制開始於區塊802,其中控制器106接收來自主機102之下部頁面資料202並且將下部頁面資料202寫入NAND記憶體116(或某種其他合適非依電性記憶體,如NOR記憶體)。控制進行至區塊804,其中控制器106將自主機102接收之上部頁面資料204加載於一或多個反及頁面緩衝器114中。控制器讀取(區塊806)來自NAND記憶體116之下部頁面資料202以在經由ECC引擎112校正之後儲存於移轉緩衝器110中。將儲存於移轉緩衝器110中之校正下部頁面資料202加載(區塊810)至一或多個反及頁面緩衝器114。控制進行至區塊812,其中校正下部頁面資料及上部頁面資料自一或多個反及頁面緩衝器114寫入NAND記憶體116。
因此,圖8例示某些實施例,其使用控制器106之移轉緩衝器110來減少SSD 104之NAND記憶體116中之異位錯誤,同時在將下部頁面資料202讀取至移轉緩衝器110以便錯誤校正時將上部頁面資料204儲存於反及頁面緩衝器114中來減少移轉緩衝器110之儲存要求。
因此,圖1-8示出藉由在將自主機接收之上部頁面資料寫入NAND記憶體中之前執行自NAND記憶體讀取之下部頁面資料之錯誤校正來減少固態硬碟中之異位錯誤的某些實施例。在某些實施例中,藉由在固態硬碟之控制器中對於下部頁面資料執行錯誤校正時將來自移轉緩衝器之上部頁面資料移動至一或多個反及頁面緩衝器來節約移轉緩衝器中之儲存空間。
在某些MLC NAND中,兩個資訊位元儲存於同一物理單元中。儲存之第一組位元被稱為下部頁面資料並且儲存之第二組位元被稱為上部頁面資料。舉例而言,在某些實施例中,4千位元組(即,32千位元)之下部頁面資料儲存於32K物理單元中,並且隨後上部頁面資料儲存於相同32K物理單元中。
TLC程式規劃為某些類型MLC程式規劃之母集並且在TLC程式規劃中,每單元程式規劃3個資料位元。儲存之第一位元被稱為下部頁面資料。儲存之第二位元被稱為上部頁面資料,並且儲存之第三位元被稱為額外頁面資料。因此,在程式規劃額外頁面資料之後,TLC可具有8個狀態。
圖1-8描述之實施例可實施於某些MLC NAND以及TLC NAND中。雖然圖1-8描述在程式規劃上部頁面的同時進行下部頁面校正,但是在TLC NAND中,上部或下部頁面可在額外頁面之程式規劃期間校正。
因此,在某些實施例中,自主機接收之頁面資料(例如上部頁面資料)儲存於固態硬碟之控制器之移轉緩衝器中。另一個頁面資料(例如,下部頁面資料)自NAND記憶體讀取以作為錯誤校正頁面資料來儲存於移轉緩衝器中。將錯誤校正頁面資料(例如,錯誤校正下部頁面資料)及頁面資料(例如,上部頁面資料)寫入NAND記憶體。
在額外實施例中,控制器將自主機接收之頁面資料(例如上部頁面資料)加載於一或多個反及頁面緩衝器中。控制器讀取來自NAND記憶體之另一個頁面資料(例如,下部頁面資料)以作為錯誤校正頁面資料儲存於移轉緩衝器中。將儲存於移轉緩衝器中之錯誤校正頁面資料加載至一或多個反及頁面緩衝器。
在某些實施例中,將自主機接收之頁面資料(例如額外頁面資料)儲存於固態硬碟之控制器之移轉緩衝器中。另一個頁面資料(例如,下部或上部頁面資料)自NAND記憶體讀取以作為錯誤校正頁面資料儲存於移轉緩衝器中。將錯誤校正頁面資料及頁面資料寫入NAND記憶體。
在額外實施例中,控制器將自主機接收之頁面資料(例如額外頁面資料)加載於一或多個反及頁面緩衝器中。控制器讀取來自NAND記憶體之另一個頁面資料(例如,下
部或上部頁面資料)以作為錯誤校正頁面資料儲存於移轉緩衝器中。將儲存於移轉緩衝器中之錯誤校正頁面資料加載至一或多個反及頁面緩衝器。
所描述操作可使用標準程式規劃及/或工程設計技術來實施為方法、裝置或電腦程式產品以產生軟體、韌體、硬體或其任何組合。所描述操作可實施為保持於「電腦可讀儲存媒體」中之代碼,其中處理器可讀取並執行來自電腦儲存可讀媒體之代碼。電腦可讀儲存媒體包括電子電路、儲存材料、無機材料、有機材料、生物材料、外殼、罩套、塗層及硬體中之至少一者。電腦可讀儲存媒體可包括但是不限於磁性儲存媒體(例如,硬磁碟驅動器、軟碟、磁帶等)、光儲存器(CD-ROM、DVD、光碟等)、依電性及非依電性記憶體裝置(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、快閃記憶體、韌體、可程式邏輯等)、固態裝置(SSD)等。實施所描述操作之代碼可進一步實施於在硬體裝置(例如,積體電路晶片、可程式閘陣列(PGA)、應用特定積體電路(ASIC)等)中實施之硬體邏輯中。更進一步,實施所描述操作之代碼可以「傳輸信號」來實施,其中傳輸信號可經由空間或經由傳輸媒體,如光纖、銅線等來傳播。代碼或邏輯編碼於其中之傳輸信號可進一步包括無線信號、衛星傳輸、無線電波、紅外信號、藍牙等。嵌入電腦可讀儲存媒體中之程式碼可作為傳輸信號自發射台或電腦傳輸至接收台或電腦。電腦可讀儲存媒體不僅僅包含傳輸信號。熟習此項技術者認識到此組配可產生許多改進,
並且製品可包括在此項技術中已知的帶有合適資訊之媒體。
執行某些實施例之態樣之操作之電腦程式碼可以一或多種程式規劃語言之任何組合來編寫。流程圖及方塊圖之區塊可藉由電腦程式指令來實施。
圖9例示根據某些實施例對應於控制器106、主機102或SSD 104之系統900之方塊圖。系統900可包括電路902,其可在某些實施例中包括至少處理器904。系統900亦可包括記憶體906(例如,依電性記憶體裝置),及儲存器908。儲存908可包括非依電性記憶體裝置(例如,EEPROM、ROM、PROM、RAM、快閃、韌體、可程式邏輯等)、磁碟驅動機、光碟驅動機、磁帶驅動機等。儲存器908可包括內部儲存裝置、附接儲存裝置及/或網路可存取儲存裝置。系統900可包括程式邏輯910,其包括可加載至記憶體906中並且由處理器904或電路902執行之代碼912。在某些實施例中,包括代碼912之程式邏輯910可儲存於儲存器908中。在某些其他實施例中,程式邏輯910可實施於電路902中。因此,雖然圖9示出與其他元件分開的程式邏輯910,但是程式邏輯910可實施於記憶體906及/或電路902中。
某些實施例可針對藉由個人或將電腦可讀代碼併入計算系統中之自動化處理來部署計算指令的方法,其中代碼以及計算系統能夠執行所描述實施例之操作。
用語「實施例」、「一或多個實施例」、「一些實施例」及「一個實施例」意謂「一或多個(而非全部)實施例」,
除非另外明確指定。
用語「包括」、「包含」、「具有」及其變化意謂「包括但不限於」,除非另外明確指定。
所列舉之項目清單不暗示任何或所有項目相互排斥,除非另外明確指定。
用語「一個(種)」及「該(等)」意謂「一或多個」,除非另外明確指定。
彼此通信之裝置不一定彼此連續通信,除非另外明確指定。另外,彼此通信之裝置可直接或間接地經由一或多個媒介來通信。
具有彼此通信之多個組件之實施例之描述不暗示需要所有此等組件。相反,描述各種任擇組件來示出多種可能實施例。
此外,雖然過程步驟、方法步驟、演算法等可以連續順序來描述,但是此等過程、方法及演算法可被組配來以替代順序運作。換言之,可描述之步驟之任何序列或順序不一定表明要求步驟以此順序來執行。本文描述之過程之步驟可以任何實際順序來執行。此外,一些步驟可同時執行。
當本文描述單一裝置或物件時,容易顯而易知一個以上裝置/物件(不論是否其協作)可代替單一裝置/物件來使用。同樣地,本文描述一個以上裝置或物件(不論是否其協作),容易顯而易知單一裝置/物件可代替一個以上裝置或物件來使用或不同數目之裝置/物件可代替示出數目之
裝置或程式來使用。裝置之功能及/或特徵可替代地藉由未明確描述為具有此功能/特徵之一或多個其他裝置來實施。因此,其他實施例不需要包括裝置本身。
可在附圖中示出之至少某些操作展示以一定順序發生的某些事件。在替代實施例中,某些操作可以改變或移除之不同順序來執行。此外,步驟可添加至以上描述邏輯並且仍然符合所描述實施例。此外,本文所述操作可連續地發生或某些操作可並行處理。另外,操作可藉由單一處理單元或分佈式處理單元來執行。
各種實施例之前述描述出於說明及描述之目的來提供。其不意欲為無遺漏的或限於所公開之精確形式。鑒於以上教義,許多改進及變化為可能的。
以下實例係關於進一步實施例。
實例1為一種方法,其中自主機接收之頁面資料儲存於固態硬碟之控制器之移轉緩衝器中。另一個頁面資料自非依電性記憶體讀取以作為錯誤校正頁面資料儲存於移轉緩衝器中。將錯誤校正頁面資料及頁面資料寫入非依電性記憶體。
在實例2中,實例之標的1可包括非依電性記憶體為NAND記憶體,其中頁面資料為上部頁面資料,其中另一個頁面資料為下部頁面資料,並且其中移轉緩衝器具有同時容納下部頁面資料及上部頁面資料之足夠儲存容量。
在實例3中,如請求項2之標的可包括在接收來自
主機之下部頁面資料之後,控制器接收來自主機之上部頁面資料。在接收來自主機之上部頁面資料之前,將接收下部頁面資料寫入NAND記憶體,並且將上部頁面資料寫入NAND記憶體需要讀取寫入NAND記憶體之下部頁面資料。
在實例4中,如請求項2之標的可包括主機藉由首先傳輸下部頁面資料然後傳輸上部頁面資料至固態硬碟之控制器來將資料寫入固態硬碟,其中固態硬碟包含:控制器,該控制器包括移轉緩衝器及用於至少校正下部頁面資料之錯誤檢查與校正(ECC)引擎;及包括NAND記憶體之三階儲存單元(TLC)NAND。
在實例5中,如請求項2之標的可包括控制器中之下部頁面資料之錯誤校正經由在控制器中執行之錯誤檢查與校正(ECC)引擎來執行以減少固態硬碟中之異位錯誤,其中藉由下部頁面資料之讀取錯誤造成之異位錯誤藉由控制器進行的下部頁面資料之讀取及錯誤校正來減少,並且隨後將錯誤校正下部頁面資料繼之以上部頁面資料寫入NAND記憶體。
在實例6中,如請求項1之標的可包括頁面資料為額外頁面資料,其中另一個頁面資料為下部頁面資料或上部頁面資料。
實例7為另一種方法,其中控制器將自主機接收之頁面資料加載於固態硬碟之一或多個反及頁面緩衝器中。控制器讀取來自NAND記憶體之另一個頁面資料以作為錯
誤校正頁面資料儲存於移轉緩衝器中。將儲存於移轉緩衝器中之錯誤校正頁面資料加載至一或多個反及頁面緩衝器。
在實例8中,如請求項7之標的可包括頁面資料為上部頁面資料,其中另一個頁面資料為下部頁面資料。將錯誤校正下部頁面資料及上部頁面資料自一或多個反及頁面緩衝器寫入NAND記憶體。
在實例9中,如請求項8之標的可包括移轉緩衝器之儲存容量需求減少,因為移轉緩衝器不需要同時容納下部頁面資料及上部頁面資料。在接收來自主機之下部頁面資料之後,控制器接收來自主機之上部頁面資料,並且在接收來自主機之上部頁面資料之前,將接收下部頁面資料寫入NAND記憶體。將上部頁面資料寫入NAND記憶體需要讀取寫入NAND記憶體之下部頁面資料。
在實例10中,如請求項8之標的可包括主機藉由首先傳輸下部頁面資料然後傳輸上部頁面資料至固態硬碟之控制器來將資料寫入固態硬碟。固態硬碟包含:控制器,該控制器包括移轉緩衝器及用於至少校正下部頁面資料之錯誤檢查與校正(ECC)引擎,及三階儲存單元(TLC)NAND,其包括NAND記憶體及一或多個反及頁面緩衝器。
在實例11中,如請求項8之標的可包括控制器中之下部頁面資料之錯誤校正經由在控制器中執行之錯誤檢查與校正(ECC)引擎來執行,其中藉由下部頁面資料之讀取錯誤造成之異位錯誤藉由控制器進行的下部頁面資料之讀
取及錯誤校正來減少,並且隨後將錯誤校正下部頁面資料及上部頁面資料寫入NAND記憶體。
在實例12中,如請求項7之標的可包括頁面資料為額外頁面資料,其中另一個頁面資料為下部頁面資料或上部頁面資料。
實例13為一種裝置,其包括:非依電性記憶體,及包括移轉緩衝器及錯誤檢查與校正(ECC)引擎之控制器,其中控制器控制非依電性記憶體。控制器可操作以便在移轉緩衝器中儲存自主機接收之頁面資料,讀取來自非依電性記憶體之另一個頁面資料以便作為錯誤校正頁面資料儲存於移轉緩衝器中,並且將錯誤校正頁面資料及頁面資料寫入非依電性記憶體。
在實例14中,如請求項之標的13可包括非依電性記憶體NAND記憶體,其中頁面資料上部頁面資料,其中另一個頁面資料下部頁面資料,並且其中移轉緩衝器具有同時容納下部頁面資料及上部頁面資料之足夠儲存容量。
在實例15中,如請求項14之標的可包括在接收來自主機之下部頁面資料之後,控制器接收來自主機之上部頁面資料。在接收來自主機之上部頁面資料之前,將接收下部頁面資料寫入NAND記憶體。將上部頁面資料寫入NAND記憶體需要讀取寫入NAND記憶體之下部頁面資料。
在實例16中,如請求項14之標的可包括主機藉由首先傳輸下部頁面資料然後傳輸上部頁面資料至裝置之控
制器來將資料寫入裝置,其中NAND記憶體對應於三階儲存單元(TLC)NAND。
在實例17中,實例14之標的可包括控制器中之下部頁面資料之錯誤校正經由在控制器中執行之錯誤檢查與校正(ECC)引擎來執行以減少裝置中之異位錯誤,其中藉由下部頁面資料之讀取錯誤造成之異位錯誤藉由控制器進行的下部頁面資料之讀取及錯誤校正來減少,並且隨後將錯誤校正下部頁面資料繼之以上部頁面資料寫入NAND記憶體。
在實例18中,實例13之標的可包括頁面資料為額外頁面資料,其中另一個頁面資料為下部頁面資料或上部頁面資料。
實例19為一種裝置,其包括:NAND複合體,該NAND複合體包括一或多個反及頁面緩衝器及NAND記憶體;控制器,該控制器包括移轉緩衝器及錯誤檢查與校正(ECC)引擎,其中該控制器控制該NAND複合體。控制器可操作以將自主機接收之頁面資料加載於一或多個反及頁面緩衝器中,讀取來自NAND記憶體之另一個頁面資料以作為錯誤校正頁面資料儲存於移轉緩衝器中,並且將錯誤校正頁面資料加載至一或多個反及頁面緩衝器。
在實例20中,實例19之標的可包括頁面資料為上部頁面資料,並且其中另一個頁面資料為下部頁面資料,並且其中控制器進一步可操作以將錯誤校正下部頁面資料及上部頁面資料自一或多個反及頁面緩衝器寫入NAND記
憶體。
在實例21中,如請求項20之標的可包括移轉緩衝器之儲存容量需求減少,因為移轉緩衝器不需要同時容納下部頁面資料及上部頁面資料。在接收來自主機之下部頁面資料之後,控制器接收來自主機之上部頁面資料,並且在接收來自主機之上部頁面資料之前,將接收下部頁面資料寫入NAND記憶體。將上部頁面資料寫入NAND記憶體需要讀取寫入NAND記憶體之下部頁面資料。
在實例22中,如請求項20之標的可包括主機藉由首先傳輸下部頁面資料然後傳輸上部頁面資料至裝置之控制器來將資料寫入裝置,其中NAND記憶體為三階儲存單元(TLC)NAND。
在實例23中,如請求項20之標的可包括控制器中之下部頁面資料之錯誤校正經由在控制器中執行之錯誤檢查與校正(ECC)引擎來執行,其中藉由下部頁面資料之讀取錯誤造成之異位錯誤藉由控制器進行的下部頁面資料之讀取及錯誤校正來減少,並且隨後將錯誤校正下部頁面資料及上部頁面資料寫入NAND記憶體。
在實例24中,如請求項19之標的可包括頁面資料為額外頁面資料,其中另一個頁面資料為下部頁面資料或上部頁面資料。
在實例25中,如請求項19之標的可包括該裝置進一步包括NAND裝置,該NAND裝置包括:複數個反及頁面緩衝器,及由包括NAND記憶體之複數個NAND記憶體元件
組成的NAND陣列,其中NAND裝置被組配來將進入頁面資料儲存至複數個反及頁面緩衝器之反及頁面緩衝器,然後允許對於NAND陣列之讀取操作,然後允許進一步將讀取資料移轉至控制器,而不破壞儲存於反及頁面緩衝器中之進入頁面資料。
100‧‧‧計算環境
102‧‧‧主機
104‧‧‧SSD
106‧‧‧控制器
108‧‧‧NAND複合體
110‧‧‧移轉緩衝器
112‧‧‧ECC引擎
114‧‧‧反及頁面緩衝器
116‧‧‧NAND記憶體
Claims (25)
- 一種方法,其包括:將自主機接收之頁面資料儲存於固態硬碟之控制器之移轉緩衝器中;自該固態硬碟中之非依電性記憶體讀取另一個頁面資料,儲存於該移轉緩衝器中以作為錯誤校正頁面資料;及將該錯誤校正頁面資料及該頁面資料寫入該非依電性記憶體。
- 如請求項1之方法,其中該非依電性記憶體為NAND記憶體,其中該頁面資料為上部頁面資料,且其中該另一個頁面資料為下部頁面資料,且其中該移轉緩衝器具有足夠儲存容量同時容納該下部頁面資料及該上部頁面資料。
- 如請求項2之方法,其中:在自該主機接收該下部頁面資料之後,該控制器自該主機接收該上部頁面資料;在自該主機接收該上部頁面資料之前,該接收之下部頁面資料被寫入該NAND記憶體;及將該上部頁面資料寫入該NAND記憶體需要讀取寫入該NAND記憶體之該下部頁面資料。
- 如請求項2之方法,其中該主機藉由首先傳輸該下部頁面資料然後傳輸該上部頁面資料至該固態硬碟之該控 制器來將該資料寫入該固態硬碟,其中該固態硬碟係由下列所構成:該控制器,其包括該移轉緩衝器及用於至少校正該下部頁面資料之錯誤檢查與校正(ECC)引擎;及三階儲存單元(TLC)NAND,其包括該NAND記憶體。
- 如請求項2之方法,其中該控制器中之該下部頁面資料之該錯誤校正經由在該控制器中執行之錯誤檢查與校正(ECC)引擎來執行以減少該固態硬碟中之異位錯誤,且其中由該下部頁面資料之讀取錯誤造成之異位錯誤藉由該控制器的該下部頁面資料之讀取及錯誤校正來減少,且隨後將該錯誤校正下部頁面資料繼之以上部頁面資料寫入該NAND記憶體。
- 如請求項1之方法,其中該頁面資料為額外頁面資料,且其中該另一個頁面資料為下部頁面資料或上部頁面資料。
- 一種方法,其包括:藉由控制器將自主機接收之頁面資料加載於固態硬碟之一或多個反及頁面緩衝器中;自NAND記憶體讀取另一個頁面資料,儲存於該控制器之移轉緩衝器中以作為錯誤校正頁面資料;及將該錯誤校正頁面資料加載至該一或多個反及頁面緩衝器。
- 如請求項7之方法,其中該頁面資料為上部頁面資料, 並且其中該另一個頁面資料為下部頁面資料,該方法進一步包括:將該錯誤校正下部頁面資料及該上部頁面資料自該一或多個反及頁面緩衝器寫入該NAND記憶體中。
- 如請求項8之方法,其中該移轉緩衝器之儲存容量需求減少,因為該移轉緩衝器不需要同時容納該下部頁面資料及該上部頁面資料,且其中:在自該主機接收該下部頁面資料之後,該控制器自該主機接收該上部頁面資料;在自該主機接收該上部頁面資料之前,將該接收之下部頁面資料寫入該NAND記憶體;及將該上部頁面資料寫入該NAND記憶體需要讀取寫入該NAND記憶體之該下部頁面資料。
- 如請求項8之方法,其中該主機藉由首先傳輸該下部頁面資料然後傳輸該上部頁面資料至該固態硬碟之該控制器來將該資料寫入該固態硬碟,且其中該固態硬碟係由下列所構成:該控制器,其包括該移轉緩衝器及用於至少校正該下部頁面資料之錯誤檢查與校正(ECC)引擎;及三階儲存單元(TLC)NAND,其包括該NAND記憶體及該一或多個反及頁面緩衝器。
- 如請求項8之方法,其中該控制器中之該下部頁面資料之該錯誤校正經由在該控制器中執行之錯誤檢查與校正(ECC)引擎來執行,且其中由該下部頁面資料之讀取 錯誤造成之異位錯誤藉由該控制器的該下部頁面資料之該讀取及錯誤校正來減少,且隨後將該錯誤校正下部頁面資料及該上部頁面資料寫入該NAND記憶體。
- 如請求項7之方法,其中該頁面資料為額外頁面資料,並且其中該另一個頁面資料為下部頁面資料或上部頁面資料。
- 一種裝置,其包括:非依電性記憶體;及控制器,該控制器包括移轉緩衝器及錯誤檢查與校正(ECC)引擎,其中該控制器控制該非依電性記憶體,並且其中該控制器可操作以:將自主機接收之頁面資料儲存於該移轉緩衝器中;自該非依電性記憶體讀取另一個頁面資料,儲存於該移轉緩衝器中以便作為錯誤校正頁面資料;及將該錯誤校正頁面資料及該頁面資料寫入該非依電性記憶體。
- 如請求項13之裝置,其中該非依電性記憶體為NAND記憶體,其中該頁面資料為上部頁面資料,其中該另一個頁面資料為下部頁面資料,並且其中該移轉緩衝器具有足夠儲存容量同時容納該下部頁面資料及該上部頁面資料。
- 如請求項14之裝置,其中:在自該主機接收該下部頁面資料之後,該控制器自 該主機接收該上部頁面資料;在自該主機接收該上部頁面資料之前,將該接收之下部頁面資料寫入該NAND記憶體;及將該上部頁面資料寫入該NAND記憶體需要讀取寫入該NAND記憶體之該下部頁面資料。
- 如請求項14之裝置,其中該主機藉由首先傳輸該下部頁面資料然後傳輸該上部頁面資料至該裝置之該控制器來將該資料寫入該裝置,且其中該非依電性記憶體對應於三階儲存單元(TLC)NAND。
- 如請求項14之裝置,其中該控制器中之該下部頁面資料之該錯誤校正經由在該控制器中執行之錯誤檢查與校正(ECC)引擎來執行以減少該裝置中之異位錯誤,且其中由該下部頁面資料之讀取錯誤造成之異位錯誤藉由該控制器讀取及校正該下部頁面資料來減少,且隨後將該校正下部頁面資料繼之以上部頁面資料寫入該NAND記憶體。
- 如請求項13之裝置,其中該頁面資料為額外頁面資料,並且其中該另一個頁面資料為下部頁面資料或上部頁面資料。
- 一種裝置,其包括:NAND複合體,該NAND複合體包括一或多個反及頁面緩衝器及NAND記憶體;及控制器,該控制器包括移轉緩衝器及錯誤檢查與校正(ECC)引擎,其中該控制器控制該NAND複合體,且 其中該控制器可操作以:將自主機接收之頁面資料加載於該一或多個反及頁面緩衝器中;自該NAND記憶體讀取另一個頁面資料,儲存於該移轉緩衝器中以作為錯誤校正頁面資料;及將該錯誤校正頁面資料加載至該一或多個反及頁面緩衝器。
- 如請求項19之裝置,其中該頁面資料為上部頁面資料,且其中該另一個頁面資料為下部頁面資料,且其中該控制器進一步可操作以:將該錯誤校正下部頁面資料及該上部頁面資料自該一或多個反及頁面緩衝器寫入該NAND記憶體中。
- 如請求項20之裝置,其中該移轉緩衝器之儲存容量需求減少,因為該移轉緩衝器不需要同時容納該下部頁面資料及該上部頁面資料,且其中:在自該主機接收該下部頁面資料之後,該控制器自該主機接收該上部頁面資料;在自該主機接收該上部頁面資料之前,將該接收之下部頁面資料寫入該NAND記憶體;及將該上部頁面資料寫入該NAND記憶體需要讀取寫入該NAND記憶體之該下部頁面資料。
- 如請求項20之裝置,其中該主機藉由首先傳輸該下部頁面資料然後傳輸該上部頁面資料至該裝置之該控制器來將該資料寫入該裝置,且其中該NAND複合體對 應於三階儲存單元(TLC)NAND。
- 如請求項20之裝置,其中該控制器中之該下部頁面資料之該錯誤校正經由在該控制器中執行之錯誤檢查與校正(ECC)引擎來執行,且其中由該下部頁面資料之讀取錯誤造成之異位錯誤藉由該控制器的該下部頁面資料之該讀取及錯誤校正來減少,且隨後將該錯誤校正下部頁面資料及該上部頁面資料寫入該NAND記憶體。
- 如請求項19之裝置,其中該頁面資料為額外頁面資料,並且其中該另一個頁面資料為下部頁面資料或上部頁面資料。
- 如請求項19之裝置,該裝置進一步包括:NAND裝置,其包括:複數個反及頁面緩衝器;及由包括該NAND記憶體之複數個NAND記憶體元件構成之NAND陣列,其中該NAND裝置被組配來將進入頁面資料儲存至該等複數個反及頁面緩衝器之一反及頁面緩衝器,且然後允許對該NAND陣列之讀取操作,且然後允許進一步將讀取資料移轉至該控制器,而不破壞儲存於該反及頁面緩衝器中之該進入頁面資料。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/499,010 US9529668B2 (en) | 2014-09-26 | 2014-09-26 | Method and system for using NAND page buffers to improve the transfer buffer utilization of a solid state drive |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201626225A true TW201626225A (zh) | 2016-07-16 |
TWI603191B TWI603191B (zh) | 2017-10-21 |
Family
ID=55581772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104127725A TWI603191B (zh) | 2014-09-26 | 2015-08-25 | 用於使用反及頁面緩衝器來增進固態硬碟之移轉緩衝器之使用的方法和系統 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9529668B2 (zh) |
KR (1) | KR102282879B1 (zh) |
CN (1) | CN106575250B (zh) |
DE (1) | DE112015003569B4 (zh) |
TW (1) | TWI603191B (zh) |
WO (1) | WO2016048562A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521121B2 (en) | 2016-12-29 | 2019-12-31 | Intel Corporation | Apparatus, system and method for throttling a rate at which commands are accepted in a storage device |
US9811269B1 (en) * | 2016-12-30 | 2017-11-07 | Intel Corporation | Achieving consistent read times in multi-level non-volatile memory |
KR20190135746A (ko) | 2018-05-29 | 2019-12-09 | 삼성전자주식회사 | 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US11061762B2 (en) * | 2019-02-04 | 2021-07-13 | Intel Corporation | Memory programming techniques |
WO2022040949A1 (en) * | 2020-08-26 | 2022-03-03 | Yangtze Memory Technologies Co., Ltd. | Non-destructive mode cache programming in nand flash memory devices |
US11704061B2 (en) * | 2021-03-16 | 2023-07-18 | Kioxia Corporation | Page buffer enhancements |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200302966A (en) * | 2002-01-29 | 2003-08-16 | Matsushita Electric Ind Co Ltd | Memory device, data processing method and data processing program |
US7057939B2 (en) * | 2004-04-23 | 2006-06-06 | Sandisk Corporation | Non-volatile memory and control with improved partial page program capability |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US8307241B2 (en) * | 2009-06-16 | 2012-11-06 | Sandisk Technologies Inc. | Data recovery in multi-level cell nonvolatile memory |
WO2011118114A1 (ja) * | 2010-03-26 | 2011-09-29 | パナソニック株式会社 | 不揮発性記憶装置及びメモリコントローラ |
EP2652623B1 (en) * | 2010-12-13 | 2018-08-01 | SanDisk Technologies LLC | Apparatus, system, and method for auto-commit memory |
KR20130084492A (ko) * | 2012-01-17 | 2013-07-25 | 삼성전자주식회사 | 비휘발성 메모리 시스템 |
JP5929485B2 (ja) * | 2012-05-08 | 2016-06-08 | ソニー株式会社 | 制御装置、記憶装置、データ書込方法 |
US9460018B2 (en) * | 2012-05-09 | 2016-10-04 | Qualcomm Incorporated | Method and apparatus for tracking extra data permissions in an instruction cache |
US9135106B2 (en) * | 2012-05-22 | 2015-09-15 | Hgst Technologies Santa Ana, Inc. | Read level adjustment using soft information |
US8914696B2 (en) * | 2012-08-29 | 2014-12-16 | Seagate Technology Llc | Flash memory read scrub and channel tracking |
JP2014052978A (ja) * | 2012-09-10 | 2014-03-20 | Toshiba Corp | 不揮発性半導体メモリの制御方法及びメモリシステム |
KR102025263B1 (ko) | 2012-10-05 | 2019-09-25 | 삼성전자주식회사 | 메모리 시스템 및 그것의 읽기 교정 방법 |
US9135112B2 (en) | 2012-12-11 | 2015-09-15 | Seagate Technology Llc | Policy for read operations addressing on-the-fly decoding failure in non-volatile memory |
US8819337B1 (en) * | 2014-04-16 | 2014-08-26 | Sandisk Technologies Inc. | Storage module and method for determining whether to back-up a previously-written lower page of data before writing an upper page of data |
-
2014
- 2014-09-26 US US14/499,010 patent/US9529668B2/en active Active
-
2015
- 2015-08-25 TW TW104127725A patent/TWI603191B/zh active
- 2015-08-26 CN CN201580045823.9A patent/CN106575250B/zh active Active
- 2015-08-26 WO PCT/US2015/047029 patent/WO2016048562A1/en active Application Filing
- 2015-08-26 KR KR1020177004512A patent/KR102282879B1/ko active IP Right Grant
- 2015-08-26 DE DE112015003569.9T patent/DE112015003569B4/de active Active
Also Published As
Publication number | Publication date |
---|---|
TWI603191B (zh) | 2017-10-21 |
US20160092299A1 (en) | 2016-03-31 |
KR20170035983A (ko) | 2017-03-31 |
CN106575250B (zh) | 2021-06-08 |
DE112015003569B4 (de) | 2024-04-25 |
CN106575250A (zh) | 2017-04-19 |
KR102282879B1 (ko) | 2021-07-29 |
US9529668B2 (en) | 2016-12-27 |
DE112015003569T5 (de) | 2017-06-14 |
WO2016048562A1 (en) | 2016-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI603191B (zh) | 用於使用反及頁面緩衝器來增進固態硬碟之移轉緩衝器之使用的方法和系統 | |
KR102487553B1 (ko) | 리페어 가능한 휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
US9037778B2 (en) | Method and apparatus to interface semiconductor storage device and host to provide performance throttling of semiconductor storage device | |
KR101560469B1 (ko) | 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 | |
CN101800071B (zh) | 固态盘设备及其编程失败处理方法 | |
US9448946B2 (en) | Data storage system with stale data mechanism and method of operation thereof | |
KR20210077586A (ko) | Nand 메모리 내에서의 판독 방해를 방지하기 위한 기술들 | |
US9847122B2 (en) | Multi-bit memory device and on-chip buffered program method thereof | |
US20160019160A1 (en) | Methods and Systems for Scalable and Distributed Address Mapping Using Non-Volatile Memory Modules | |
US20110202818A1 (en) | Non-volatile memory device and operation method using the same | |
US10445017B2 (en) | Memory system and operating method thereof | |
US10389380B2 (en) | Efficient data path architecture for flash devices configured to perform multi-pass programming | |
CN113196245B (zh) | 主机常驻转换层有效性检查技术 | |
US10445252B2 (en) | Storage device and operating method performed by the same | |
CN114761931A (zh) | 有限ram系统中的逻辑到物理转译技术 | |
US10254979B1 (en) | Relocating or aborting a block of data by a host, based on media policies managed by a storage device | |
US20140372831A1 (en) | Memory controller operating method for read operations in system having nonvolatile memory device | |
CN109426446A (zh) | 存储器系统及其操作方法 | |
US10795594B2 (en) | Storage device | |
TW201329999A (zh) | 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
US20220164144A1 (en) | Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same | |
KR101070511B1 (ko) | Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법 | |
US11194512B2 (en) | Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof | |
US20140149646A1 (en) | Memory systems including flash memories, first buffer memories, second buffer memories and memory controllers and methods for operating the same | |
KR100753174B1 (ko) | 플래시 메모리 기반의 대용량 저장장치 |