TWI637262B - Translation layer partitioned between host and controller - Google Patents

Translation layer partitioned between host and controller Download PDF

Info

Publication number
TWI637262B
TWI637262B TW103127357A TW103127357A TWI637262B TW I637262 B TWI637262 B TW I637262B TW 103127357 A TW103127357 A TW 103127357A TW 103127357 A TW103127357 A TW 103127357A TW I637262 B TWI637262 B TW I637262B
Authority
TW
Taiwan
Prior art keywords
data
volatile memory
host
memory
mapping
Prior art date
Application number
TW103127357A
Other languages
Chinese (zh)
Other versions
TW201518944A (en
Inventor
厄爾T 柯罕
蘇密特 普利
Original Assignee
司固科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/060,799 external-priority patent/US9329991B2/en
Application filed by 司固科技公司 filed Critical 司固科技公司
Publication of TW201518944A publication Critical patent/TW201518944A/en
Application granted granted Critical
Publication of TWI637262B publication Critical patent/TWI637262B/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本發明揭示一種用於使用一經劃分快閃轉變層之方法。步驟(A)在一設備處自一主機接收具有第一寫入資料之一寫入命令。步驟(B)藉由在該設備中壓縮該第一寫入資料而產生第二寫入資料。該第二寫入資料通常具有一可變大小。步驟(C)將該第二寫入資料儲存於一非揮發性記憶體中之一實體位置處。該實體位置係下一未寫入位置。步驟(D)回應於該寫入命令而將該實體位置之一指示自該設備傳回至該主機。 A method for using a divided flash transition layer is disclosed. Step (A) receives a write command having a first write data from a host at a device. Step (B) generates a second write data by compressing the first write data in the device. The second write data typically has a variable size. Step (C) storing the second written data in one of the non-volatile memory locations. This entity location is the next unwritten location. Step (D) in response to the write command indicates that one of the physical locations is returned from the device to the host.

Description

主機與控制器之間的轉換層劃分 Conversion layer division between host and controller

此申請案係關於2013年10月21日提出申請之美國臨時申請案第61/893,383號、2013年10月9日提出申請之美國臨時申請案第61/888,681號、2013年9月3日提出申請之美國臨時申請案第61/873,357號、2013年8月16日提出申請之美國臨時申請案第61/866,672號及2013年1月22日提出申請之美國臨時申請案第61/755,169號,該等美國臨時申請案中之每一者特此以其全文引用方式併入。 This application is filed on US Provisional Application No. 61/893,383, filed on October 21, 2013, and US Provisional Application No. 61/888,681, filed on October 9, 2013, and filed on September 3, 2013. Application US Provisional Application No. 61/873,357, US Provisional Application No. 61/866,672, filed on August 16, 2013, and US Provisional Application No. 61/755,169, filed on January 22, 2013, Each of these U.S. Provisional Applications is hereby incorporated by reference in its entirety.

此申請案係關於2011年3月21日提出申請之U.S.第13/053,175號,該U.S.第13/053,175號係關於2010年3月22日提出申請之美國臨時申請案第61/316,373號,該U.S.第13/053,175號及該等美國臨時申請案中之每一者特此以其全文引用方式併入。 This application is related to US Provisional Application No. 13/053,175, filed on March 21, 2011, which is incorporated herein by reference. Each of the US Provisional Application Nos.

此申請案亦係關於具有國際申請日期2012年10月4日之國際申請案PCT/US2012/058583,該國際申請案主張2011年10月5日提出申請之美國臨時申請案第61/543,707號之權益,該國際申請案及該美國臨時申請案中之每一者以其全文引用方式併入。 This application is also related to the international application PCT/US2012/058583, which has the international filing date of October 4, 2012, which claims the US Provisional Application No. 61/543,707 filed on October 5, 2011. Equity, each of the International Application and the U.S. Provisional Application is incorporated by reference in its entirety.

此申請案係關於2013年7月10日提出申請之U.S.第13/936,010號,該U.S.第13/936,010號係關於具有國際申請日期2012年8月8日之國際申請案PCT/US2012/049905,該國際申請案主張2011年9月6日提出申 請之美國臨時申請案第61/531,551號及2011年8月9日提出申請之美國臨時申請案第61/521,739號之權益,該U.S.第13/936,010號、該國際申請案及該等美國臨時申請案中之每一者以其全文引用方式併入。 This application is related to US Patent No. 13/936,010 filed on July 10, 2013, which is hereby incorporated herein by reference in its entirety the entire entire entire entire entire entire entire entire entire entire entire entire entire entire entire entire entire entire entire entire The international application claims to be filed on September 6, 2011. U.S. Provisional Application No. 61/531,551 and U.S. Provisional Application No. 61/521,739, filed on August 9, 2011, the U.S. Serial No. 13/936,010, the International Application, and the U.S. Provisional Each of the applications is incorporated by reference in its entirety.

本發明一般而言係關於運算主機及輸入/輸出裝置技術,且更特定而言係關於提供在一主機與一控制器之間劃分之一轉變層之一方法及/或設備。 The present invention relates generally to computing mainframe and input/output device technology, and more particularly to a method and/or apparatus for providing a transition layer between a host and a controller.

習用固態磁碟機在一非揮發性記憶體之每一頁中儲存固定整數個主機邏輯區塊。當一使用者資料大小或非揮發性記憶體之每一頁之一可用大小不固定時,會出現儲存效率問題。用於固態磁碟機中之可變大小快閃轉變層之架構為硬體密集的。頁標頭用於識別使用者資料儲存在固態磁碟機之若干頁內之多個讀取單元當中之何處,且提取資料涉及首先讀取並剖析頁標頭。 A conventional solid state disk drive stores a fixed number of host logical blocks in each page of a non-volatile memory. A storage efficiency problem occurs when the size of a user data or the available size of one of each page of the non-volatile memory is not fixed. The architecture for variable size flash transition layers in solid state drives is hardware intensive. The page header is used to identify where the user data is stored in a plurality of reading units within a plurality of pages of the solid state disk drive, and extracting the data involves first reading and parsing the page header.

本發明係關於一種用於使用一經劃分快閃轉變層之方法。步驟(A)在一設備處自一主機接收具有第一寫入資料之一寫入命令。步驟(B)藉由在該設備中壓縮該第一寫入資料而產生第二寫入資料。該第二寫入資料通常具有一可變大小。步驟(C)將該第二寫入資料儲存於一非揮發性記憶體中之一實體位置處。該實體位置係下一未寫入位置。步驟(D)回應於該寫入命令而將該實體位置之一指示自該設備傳回至該主機。 The present invention relates to a method for using a divided flash transition layer. Step (A) receives a write command having a first write data from a host at a device. Step (B) generates a second write data by compressing the first write data in the device. The second write data typically has a variable size. Step (C) storing the second written data in one of the non-volatile memory locations. This entity location is the next unwritten location. Step (D) in response to the write command indicates that one of the physical locations is returned from the device to the host.

100‧‧‧非揮發性記憶體頁 100‧‧‧Non-volatile memory page

104‧‧‧子頁位址 104‧‧‧Subpage address

110‧‧‧位址/標籤LBA[M:U] 110‧‧‧Address/Label LBA[M:U]

111‧‧‧邏輯區塊位址LBA[U-1:0] 111‧‧‧Logic block address LBA[U-1:0]

113‧‧‧子頁內之區段 113‧‧‧ Sections within the subpage

204‧‧‧完整位元組位址 204‧‧‧Complete byte address

206‧‧‧位元組資料長度 206‧‧‧byte data length

404‧‧‧讀取單元位址 404‧‧‧Reading unit address

406‧‧‧跨度 406‧‧‧ span

500‧‧‧讀取單元 500‧‧‧Reading unit

501‧‧‧標頭 501‧‧‧ Header

510‧‧‧讀取單元 510‧‧‧Reading unit

610‧‧‧主標頭 610‧‧‧ main header

620‧‧‧冗餘區塊標頭 620‧‧‧Redundant block headers

630‧‧‧額外經緊縮標頭 630‧‧‧Additional tightening header

640‧‧‧延續資料 640‧‧‧Continuation information

650‧‧‧經緊縮資料 650‧‧‧ condensed data

810‧‧‧資料標頭 810‧‧‧Information Header

820‧‧‧第二層次映射標頭/日誌/檢查點標頭 820‧‧‧Second level mapping header/log/checkpoint header

830‧‧‧時期標頭 830‧‧‧ period header

840‧‧‧其他類型之標頭 840‧‧‧Other types of headers

870‧‧‧主標頭 870‧‧‧ main header

880‧‧‧冗餘區塊標頭 880‧‧‧Redundant block headers

900‧‧‧映射項目 900‧‧‧ mapping project

1010‧‧‧未壓縮映射項目 1010‧‧‧Uncompressed mapping project

1020‧‧‧具有與一先前映射項目相同之一非揮發性記憶體頁位址之映射項目 1020‧‧‧A mapping item with one of the same non-volatile memory page addresses as a previously mapped project

1030‧‧‧具有與先前映射項目相同之一非揮發性記憶體頁位址且在先前資料結束之一位移處開始 之映射項目 1030‧‧‧ has one of the same non-volatile memory page address as the previous mapping item and starts at one of the displacements of the previous data Mapping project

1040‧‧‧具有與先前映射項目相同之一非揮發性記憶體頁位址、在先前資料結束之一位移處開始且具有與先前映射項目相同之一長度之映射項目 1040‧‧‧A mapping item with one of the same non-volatile memory page address as the previous mapping item, starting at one of the previous data ends and having the same length as the previous mapping item

1100‧‧‧固態磁碟機控制器/控制器 1100‧‧‧Solid Disk Drive Controller/Controller

1100a至1100n‧‧‧固態磁碟機控制器 1100a to 1100n‧‧‧Solid Disk Drive Controller

1101a至1101n‧‧‧固態磁碟機 1101a to 1101n‧‧‧ solid state disk drive

1102‧‧‧主機 1102‧‧‧Host

1103‧‧‧交換器/網狀架構/中間控制器 1103‧‧‧Switch/Mesh Architecture/Intermediate Controller

1104‧‧‧中間介面 1104‧‧‧Intermediate interface

1105‧‧‧作業系統 1105‧‧‧Operating system

1106a至1106n‧‧‧韌體 1106a to 1106n‧‧‧ firmware

1107‧‧‧驅動程式 1107‧‧‧Driver

1107D‧‧‧虛線箭頭 1107D‧‧‧dotted arrow

1108‧‧‧映射 1108‧‧‧ mapping

1109‧‧‧應用程式 1109‧‧‧Application

1109D‧‧‧虛線箭頭 1109D‧‧‧dotted arrow

1109V‧‧‧虛線箭頭 1109V‧‧‧dotted arrow

1110‧‧‧讀取器 1110‧‧‧Reader

1111‧‧‧外部介面 1111‧‧‧ external interface

1111a至1111n‧‧‧外部介面 1111a to 1111n‧‧‧ external interface

1112C‧‧‧卡記憶體 1112C‧‧‧ card memory

1112H‧‧‧主機記憶體 1112H‧‧‧Host memory

1114‧‧‧多裝置管理軟體 1114‧‧‧Multi-device management software

1115‧‧‧主機軟體 1115‧‧‧Host software

1116‧‧‧輸入/輸出卡 1116‧‧‧Input/Output Card

1117‧‧‧輸入/輸出及儲存裝置/資源 1117‧‧‧Input/Output and Storage Devices/Resources

1118‧‧‧伺服器 1118‧‧‧Server

1119‧‧‧區域網路/廣域網路 1119‧‧‧Regional/Wide Area Network

1120‧‧‧寫入器 1120‧‧‧Writer

1130‧‧‧讀取定序器 1130‧‧‧Read sequencer

1140‧‧‧寫入定序器 1140‧‧‧Write sequencer

1141a至1141n‧‧‧映射 1141a to 1141n‧‧‧ mapping

1150-1‧‧‧資料路徑單元 1150-1‧‧‧ Data Path Unit

1150-2‧‧‧資料路徑單元 1150-2‧‧‧ Data Path Unit

1180‧‧‧記憶體介面 1180‧‧‧ memory interface

1190‧‧‧資料路徑分段 1190‧‧‧ Data path segmentation

1190a至1190n‧‧‧裝置介面 1190a to 1190n‧‧‧ device interface

1199a至1199n‧‧‧非揮發性記憶體 1199a to 1199n‧‧‧ non-volatile memory

自以下詳細說明及隨附申請專利範圍以及圖式將明瞭本發明之實施例,其中:圖1係一邏輯區塊位址至一非揮發性記憶體頁內之固定大小區域 之映射之一實施例之選定細節之一圖解;圖2係一邏輯區塊位址至視情況橫跨非揮發性記憶體頁之一可變大小區域之映射之一實施例之選定細節之一圖解;圖3係包括整數個讀取單元之一非揮發性記憶體頁之一實施例之一圖解;圖4係一邏輯區塊位址至橫跨一或多個讀取單元之一可變大小區域之映射之一實施例之選定細節之一圖解;圖5係包括標頭及資料之一讀取單元之一實施例之選定細節之一圖解;圖6係包括標頭及資料之一非揮發性記憶體頁之一實施例之選定細節之一圖解;圖7係包括標頭及資料之一非揮發性記憶體頁之另一實施例之選定細節之一圖解;圖8係各種類型之標頭之一實施例之選定細節之一圖解;圖9係一映射項目之一實施例之選定細節之一圖解;圖10係各種經壓縮映射項目之一實施例之選定細節之一圖解;圖11A係一固態磁碟機控制器之一實施例之選定細節之一圖解;圖11B係一資料路徑分段之一實施例之選定細節之一圖解;圖11C係根據本發明之一實施例之系統之各種實施例之選定細節之一圖解;圖12係將資料寫入至一非揮發性記憶體之一流程圖;圖13係自一非揮發性記憶體讀取資料之一流程圖;且圖14係使資料在一非揮發性記憶體中回收之一流程圖。 Embodiments of the present invention will be apparent from the following detailed description and the accompanying claims and claims, wherein: FIG. 1 is a logical block address to a fixed size area within a non-volatile memory page. One of the selected details of one of the embodiments is illustrated; Figure 2 is one of the selected details of one of the embodiments of a logical block address to a mapping of one of the variable size regions of the non-volatile memory page as appropriate Figure 3 is an illustration of one of the embodiments of a non-volatile memory page comprising one of a plurality of read cells; Figure 4 is a logical block address variable to one of the one or more read cells One of the selected details of one of the embodiments of the mapping of the size regions; Figure 5 is an illustration of one of the selected details of an embodiment of the reading unit including the header and the data; Figure 6 includes one of the headers and the data. One of the selected details of one embodiment of a volatile memory page; Figure 7 is an illustration of one of the selected details of another embodiment of a non-volatile memory page including a header and data; Figure 8 is of various types One of the selected details of one of the embodiments of the header; Figure 9 is an illustration of one of the selected details of one of the embodiments of the mapping; Figure 10 is an illustration of one of the selected details of one of the various compressed mapping items; 11A is a solid state disk drive controller One of the selected details of the embodiment is illustrated; Figure 11B is an illustration of selected details of one embodiment of a data path segment; Figure 11C is an illustration of selected details of various embodiments of the system in accordance with an embodiment of the present invention Figure 12 is a flow chart for writing data to a non-volatile memory; Figure 13 is a flow chart for reading data from a non-volatile memory; and Figure 14 is for making the data in a non-volatile memory. One of the flow diagrams in the body recovery.

本發明之實施例包含提供在一主機與一控制器之間劃分之一轉變層,該轉變層可:(i)支援一寬範圍之資料大小;(ii)以非基於區塊 之資料進行操作;(iii)回應於寫入資料而將一控點傳回至一主機;(iv)利用該控點來讀取資料;及/或(v)實施為一或多個積體電路及/或相關聯韌體。 Embodiments of the invention include providing a transition layer between a host and a controller, the transition layer: (i) supporting a wide range of data sizes; (ii) non-based blocks (iii) returning a control point to a host in response to writing data; (iv) using the handle to read data; and/or (v) implementing one or more integrated bodies Circuit and / or associated firmware.

一主機耦合至一輸入/輸出裝置(諸如一固態磁碟機(例如,SSD)控制器),且該輸入/輸出裝置耦合至及/或包含一非揮發性記憶體(例如,NVM)。一主機之實例包含一運算主機、一伺服器、一個人電腦、一膝上型電腦、一筆記型電腦、一工作站電腦、一個人數位助理、一智慧電話、一蜂巢式手機、一媒體播放器或記錄器、一輸入/輸出控制器、一晶片上廉價/獨立磁碟冗餘陣列(例如,RAID)(例如,ROC)控制器及包括一處理器或電腦之任何其他裝置。主機發起用以經由輸入/輸出裝置存取(例如,讀取或寫入)非揮發性記憶體之請求,且該等請求由主機之一組合(例如,至少部分地由主機上運行之軟體)且由輸入/輸出裝置(例如,至少部分地由輸入/輸出裝置上運行之韌體)執行。 A host is coupled to an input/output device (such as a solid state disk drive (eg, SSD) controller) and the input/output device is coupled to and/or includes a non-volatile memory (eg, NVM). An example of a host includes a computing host, a server, a personal computer, a laptop, a notebook, a workstation computer, a number of assistants, a smart phone, a cellular phone, a media player or a record , an input/output controller, a redundant/independent disk redundant array (eg, RAID) (eg, ROC) controller on a die, and any other device including a processor or computer. The host initiates a request to access (eg, read or write) non-volatile memory via the input/output device, and the requests are combined by one of the hosts (eg, at least partially by software running on the host) And performed by an input/output device (eg, at least partially by a firmware running on the input/output device).

在某些實施例中,快閃轉換層(例如,FTL)將一邏輯區塊位址空間(諸如由一主機用來對一輸入/輸出裝置執行輸入/輸出操作)中之邏輯區塊位址(例如,LBA)映射至(或轉換成)一非揮發性記憶體(諸如一NAND快閃非揮發性記憶體)中之實體位置(例如,一實體位址空間中之實體儲存位址)。根據各種實施例,一邏輯區塊位址空間中之一邏輯區塊位址之映射係經由以下各項中之一或多者而進行:一個一層次映射;一個兩層次映射;一多層次映射;一直接映射;一相關聯映射;一雜湊表;一B樹;一線索;映射之一部分之一快取記憶體;及使邏輯區塊位址與非揮發性記憶體中之實體位置相關聯之任何其他構件。在其他實施例中,映射包括複數個項目,諸如用於邏輯區塊位址空間中之每一邏輯區塊位址之一個項目。 In some embodiments, a flash translation layer (e.g., FTL) places a logical block address in a logical block address space, such as used by a host to perform input/output operations on an input/output device. (eg, LBA) maps to (or translates to) an entity location in a non-volatile memory (such as a NAND flash non-volatile memory) (eg, a physical storage address in a physical address space). According to various embodiments, the mapping of one of the logical block addresses in a logical block address space is performed by one or more of: a one-level mapping; a two-level mapping; a multi-level mapping a direct mapping; an associated mapping; a hash table; a B-tree; a clue; one of the mapping parts of the cache memory; and the logical block address associated with the physical location in the non-volatile memory Any other component. In other embodiments, the mapping includes a plurality of items, such as an item for each logical block address in the logical block address space.

在其他實施例中,快閃轉變層將各別資料之標籤或其他唯一識 別符映射至一非揮發性記憶體中之實體位置。舉例而言,該標籤可為各別資料之一雜湊函數(諸如一SHA-256或SHA-512雜湊函數),或儲存為各別資料或儲存於各別資料中之一各別物件之一物件識別符,或各別資料之一檔案系統識別符(諸如索引節點)(其中各別資料為一檔案系統物件)。根據各種實施例,各別資料之標籤或其他唯一識別符之映射係經由以下各項中之一或多者而進行:一個一層次映射;一個兩層次映射;一多層次映射;一直接映射;一相關聯映射;一雜湊表;一B樹;一線索;映射之一部分之一快取記憶體;及使標籤或其他唯一識別符與非揮發性記憶體之實體位置相關聯之任何其他構件。在其他實施例中,映射包括複數個項目,諸如用於每一現存標籤或其他唯一識別符之一個項目。在仍其他實施例中,映射在大小上係動態的且其隨現存標籤或其他唯一識別符之數目增加或減少而增長或緊縮。在一實例中,映射之大小隨現存標籤或其他唯一識別符之數目增加或減少而線性地增長或緊縮。在另一實例中,映射之大小隨現存標籤或其他唯一識別符之數目增加或減少超過一各別臨限值而步進式(以離散區塊形式)增長或緊縮。 In other embodiments, the flash transition layer labels or otherwise uniquely identifies the individual data. The ambiguity maps to the physical location in a non-volatile memory. For example, the tag can be a hash function of a separate piece of data (such as a SHA-256 or SHA-512 hash function), or can be stored as a separate piece of data or an object stored in one of the individual items. An identifier, or one of the individual files, a file system identifier (such as an index node) (where the individual data is a file system object). According to various embodiments, the mapping of tags or other unique identifiers of individual data is performed via one or more of: a one-level mapping; a two-level mapping; a multi-level mapping; a direct mapping; An associated map; a hash table; a B-tree; a clue; one of the portions of the map cache memory; and any other component that associates the label or other unique identifier with the physical location of the non-volatile memory. In other embodiments, the mapping includes a plurality of items, such as an item for each existing tag or other unique identifier. In still other embodiments, the mapping is dynamic in size and it grows or contracts as the number of existing tags or other unique identifiers increases or decreases. In one example, the size of the map grows or contracts linearly as the number of existing tags or other unique identifiers increases or decreases. In another example, the size of the map grows or contracts stepwise (in discrete blocks) as the number of existing tags or other unique identifiers increases or decreases by more than a respective threshold.

在各種實施例中,一多層次映射用於提供唯一識別符及/或限制唯一識別符之一範圍。舉例而言,在一第一相關聯映射中查找一標籤以產生長度比該標籤短之一唯一識別符。然後在一第二映射中查找該唯一識別符以產生非揮發性記憶體中之一實體位置。在其他實施例中,第二映射係複數個映射,諸如用於非揮發性記憶體之複數個實體上單獨部分(例如,存在於不同固態磁碟中)及/或功能上不同部分(例如,不同類型)中之每一者之一個映射。 In various embodiments, a multi-level mapping is used to provide a unique identifier and/or to limit a range of unique identifiers. For example, a tag is looked up in a first associated map to produce a unique identifier that is shorter than the tag. The unique identifier is then looked up in a second map to produce one of the physical locations in the non-volatile memory. In other embodiments, the second mapping is a plurality of mappings, such as a plurality of physically separate portions for non-volatile memory (eg, present in different solid state disks) and/or functionally distinct portions (eg, A mapping of each of the different types).

複數個標籤(或控點或邏輯區塊位址或識別符或其他類似術語)中之每一者通常對應於一各別資料物件(或區段或區塊或項目或其他類似術語),且快閃轉變層使標籤中之每一者與對應資料物件在非揮發 性記憶體中之一實體位置相關聯。標籤與對應資料物件在非揮發性記憶體中之實體位置之關聯性據稱係經由一映射而做出,而不管如何執行該關聯性。儘管本文中之各種實例使用邏輯區塊位址之映射,且其他實例使用物件標籤或物件識別符之映射,但在本文中之教示之精神中,可使用諸多類似資料標記技術連同相關聯映射技術。 Each of a plurality of tags (or handles or logical block addresses or identifiers or other similar terms) generally corresponds to a respective data item (or section or block or item or other similar term), and The flash transition layer causes each of the labels and the corresponding data object to be non-volatile One of the physical locations in the memory is associated. The association of the tag with the physical location of the corresponding data item in the non-volatile memory is said to be made via a mapping regardless of how the association is performed. Although the various examples herein use mapping of logical block addresses, and other examples use mapping of object tags or object identifiers, in the spirit of the teachings herein, many similar material tagging techniques can be used along with associated mapping techniques. .

如本文中所使用,術語「映射單元」係指正由快閃轉變層映射之資料物件之一大小。在某些實施例中,映射單元為一固定大小,而在其他實施例中,資料物件之大小係可變的(且因此映射單元之大小不係固定的)。 As used herein, the term "mapping unit" refers to the size of one of the data objects being mapped by the flash transition layer. In some embodiments, the mapping unit is of a fixed size, while in other embodiments, the size of the data item is variable (and thus the size of the mapping unit is not fixed).

在某些實施例中,映射在一或多個邏輯區段或區塊之經對準單元上操作。每一映射單元係一或多個邏輯區段或區塊之一經對準單元。每一映射單元具有其中儲存映射單元之資料之一對應實體位置(若映射單元從未被寫入或被修整,則包含一NULL實體位置之可能性)。舉例而言,在4千位元組(例如,KB)映射單元之情況下,將八個相連(及通常八區段對準的)串列進階技術附接(例如,SATA)512位元組區段映射為一單個單元。通常,用於邏輯區塊位址之一映射具有每映射單元一個項目以儲存自與映射單元相關聯之邏輯區塊位址至非揮發性記憶體中之一實體位址之一各別轉換及/或其他控制資訊。 In some embodiments, mapping is performed on one or more logical segments or aligned units of the blocks. Each mapping unit is one or more logical segments or one of the blocks aligned with the unit. Each mapping unit has one of the data in which the mapping unit is stored, corresponding to the physical location (possibility of including a NULL entity location if the mapping unit has never been written or trimmed). For example, in the case of a 4 kilobyte (eg, KB) mapping unit, eight connected (and typically eight-segment aligned) serial technology attached (eg, SATA) 512 bits Group segments are mapped to a single unit. Typically, one of the mappings for a logical block address has an item per mapping unit to store a logical conversion from a logical block address associated with the mapping unit to one of the physical addresses of the non-volatile memory and / or other control information.

在各種實施例中,正映射之資料物件之一大小(每一映射單元之大小)及/或儲存於非揮發性記憶體中之資料物件之一大小變化。在一實例中,映射中之項目中之每一者儲存各別資料物件之一大小。繼續該實例,在一密鑰/值儲存中,根據密鑰而儲存用於存取映射之一項目之一標籤,且值為一各別資料物件,該值之大小在密鑰中之不同者當中不同。在另一實例中,映射中之項目中之每一者儲存用以讀取以擷取所儲存資料物件之非揮發性記憶體之一量之一指示。在另一實例之一變化形式中,由映射之一項目規定之非揮發性記憶體之量包括由 映射之項目規定之非揮發性記憶體之量中的定位一或多個所儲存資料物件或其部分當中之各別所儲存資料物件之標頭。在另一實例之另一變化形式中,用以讀取以擷取各別資料物件之非揮發性記憶體之量規定非揮發性記憶體之一頁中之各別所儲存資料物件之確切大小及位置,而不管非揮發性記憶體錯誤校正如何。額外運算用於判定用以讀取以擷取各別所儲存資料物件及足以對自非揮發性記憶體讀取之資料執行錯誤校正之其他資訊之非揮發性記憶體之一較大量。 In various embodiments, the size of one of the data objects being mapped (the size of each mapping unit) and/or the size of one of the data objects stored in the non-volatile memory varies. In one example, each of the items in the map stores a size of one of the individual data items. Continuing with the example, in a key/value store, a tag for accessing one of the items of the mapping is stored according to the key, and the value is a separate data item, the value of which is different in the key. It is different. In another example, each of the items in the map stores an indication of one of the amounts of non-volatile memory used to read the retrieved data item. In a variation of another example, the amount of non-volatile memory specified by one of the mapping items includes The number of non-volatile memory items specified in the mapped item locates the header of each of the stored data items or portions of the stored data items or portions thereof. In another variation of another example, the amount of non-volatile memory used to read the respective data items specifies the exact size of each of the stored data items in one page of the non-volatile memory and Location, regardless of non-volatile memory error correction. The additional operations are used to determine a larger amount of non-volatile memory for reading the information stored in the respective data and other information sufficient to perform error correction on the data read from the non-volatile memory.

根據各種實施例,非揮發性記憶體係以下各項中之一或多者:NAND快閃,其每單元儲存一個位元(例如,單層單元)、兩個位元(例如,多層單元)、三個位元(例如,三層單元)或三個以上位元且為平面的(二維)或三維的(例如,3D);NOR快閃;任何其他類型之快閃記憶體或電可抹除記憶體;相變記憶體(例如,PCM);磁性隨機存取記憶體(例如,MRAM);跑道形記憶體;電阻式隨機存取記憶體(例如,ReRAM);一電池支援之靜態隨機存取記憶體(例如,SRAM)或動態隨機存取記憶體(例如,DRAM);任何磁性或光學儲存媒體;或任何其他非揮發性記憶體。 According to various embodiments, the non-volatile memory system has one or more of the following: NAND flash, which stores one bit per cell (eg, a single layer cell), two bits (eg, a multi-level cell), Three bits (eg, three-layer cells) or more than three bits and are planar (two-dimensional) or three-dimensional (eg, 3D); NOR flash; any other type of flash memory or electrically erasable In addition to memory; phase change memory (eg, PCM); magnetic random access memory (eg, MRAM); runway memory; resistive random access memory (eg, ReRAM); Access memory (eg, SRAM) or dynamic random access memory (eg, DRAM); any magnetic or optical storage medium; or any other non-volatile memory.

在某些實施例中,非揮發性記憶體(諸如)藉由實體地隔離於不同輸入/輸出裝置中(例如,不同固態磁碟中)或藉由具有不同實體位置或存取機構而組織成一或多個群組(例如,非揮發性記憶體之一個部分為NAND快閃,且一第二部分為相變記憶體)。在實施例中之某些實施例中,映射為一全域映射,其中每一項目規定一輸入/輸出裝置標識(例如,ID)及彼輸入/輸出裝置中之一實體位置。在其他實施例中,將映射劃分成多個部分,諸如每輸入/輸出裝置一個部分,且一較高層次映射及/或各別標籤之函數判定輸入/輸出裝置中之一選定者。 In some embodiments, non-volatile memory, such as by being physically isolated from different input/output devices (eg, in different solid state disks) or organized by having different physical locations or access mechanisms Or multiple groups (eg, one portion of the non-volatile memory is NAND flash, and a second portion is phase change memory). In some embodiments of the embodiments, the mapping is a global mapping, where each entry specifies an input/output device identification (e.g., ID) and one of the physical locations of the input/output devices. In other embodiments, the mapping is divided into portions, such as one portion per input/output device, and a higher level mapping and/or a function of the respective labels determines one of the input/output devices.

某些非揮發性記憶體(諸如NAND快閃)提供稱作一非揮發性記憶體頁(或舉例而言,在係指NAND快閃時,一快閃頁)之一可寫入(或可 程式化)單元。非揮發性記憶體頁通常係非揮發性記憶體之最小可寫入單元。在某些實施例及/或使用情景中,一非揮發性記憶體頁包括若干個使用者(非錯誤校正碼)資料位元組以及用於後設資料及錯誤校正譯碼(例如,ECC)之一定量之備用空間。典型NAND快閃頁大小為8KB或16KB或32KB之使用者資料,而用於邏輯區塊位址之典型映射單元大小為4KB或8KB。(儘管關於非揮發性記憶體頁使用術語「使用者」資料,但某些非揮發性記憶體頁儲存諸如映射資料及/或檢查點資料之「系統」資料。使用者資料意欲一般係指一非揮發性記憶體頁之非錯誤校正譯碼部分)。NAND快閃頁被組織成若干區塊,通常每區塊128、256或512個快閃頁。一區塊為可被抹除之最小大小單元,且一NAND快閃頁在該頁被抹除之後才能夠被(重新)寫入。 Some non-volatile memory (such as NAND flash) provides one of a non-volatile memory page (or, for example, a fast flash page when flashing NAND flash) is writable (or Stylized) unit. Non-volatile memory pages are typically the smallest writable unit of non-volatile memory. In some embodiments and/or usage scenarios, a non-volatile memory page includes a number of user (non-error correction code) data bytes and is used for post-data and error correction decoding (eg, ECC). One of the quantitative spare spaces. A typical NAND flash page size is 8KB or 16KB or 32KB of user data, while a typical mapping unit size for a logical block address is 4KB or 8KB. (Although the term "user" data is used for non-volatile memory pages, some non-volatile memory pages store "system" data such as mapping data and/or checkpoint data. User data is generally intended to refer to Non-error correction decoding part of non-volatile memory pages). NAND flash pages are organized into blocks, typically 128, 256 or 512 flash pages per block. A block is the smallest size unit that can be erased, and a NAND flash page can be (re)written after the page is erased.

某些非揮發性記憶體(諸如NAND快閃)具有多個平面及/或庫且准許自兩個或兩個以上平面中之每一者平行地存取(讀取或程式化或抹除)一頁及/或一區塊之「多平面」操作。使用一多平面程式化有利地增加寫入頻寬,且致使基本寫入單元為多平面頁而非一單個單平面頁。根據使用非揮發性記憶體之一方式,如本文中所使用之術語非揮發性記憶體頁(或非揮發性記憶體區塊)表示一單個非揮發性記憶體頁(或區塊)或一多平面非揮發性記憶體頁(或區塊)。 Certain non-volatile memories, such as NAND flash, have multiple planes and/or banks and are permitted to be accessed (read or programmed or erased) in parallel from each of two or more planes. One-page and/or one-block "multi-plane" operation. Using a multi-plane stylization advantageously increases the write bandwidth and causes the basic write unit to be a multi-planar page rather than a single single-plan page. The term non-volatile memory page (or non-volatile memory block) as used herein refers to a single non-volatile memory page (or block) or one, depending on how one of the non-volatile memory is used. Multi-planar non-volatile memory pages (or blocks).

儘管本文中使用術語「快閃」轉換層(例如,FTL),但邏輯位址與實體位址之間的一轉換層之一概念適用於多種類型之非揮發性記憶體。在一實例中,在重新寫入之前,在大單元中抹除特定類型之非揮發性記憶體,諸如NAND快閃。在另一實例中,某些類型之非揮發性記憶體經受磨損,從而導致平均磨損(將資料自非揮發性記憶體之較多磨損部分移動至較少磨損部分)。在又一實例中,硬碟磁記錄之新形式(諸如疊瓦式磁記錄)不具有在不抹除大得多之數量之其他資料之情況下覆寫先前所寫入資料之一能力。在各種實施例中,為粗資料粒 度(granularity)或具有有限持久性之非揮發性記憶體類型受益於一(快閃)轉換層。 Although the term "flash" translation layer (eg, FTL) is used herein, one of the concepts of a translation layer between a logical address and a physical address applies to multiple types of non-volatile memory. In one example, a particular type of non-volatile memory, such as NAND flash, is erased in a large cell prior to rewriting. In another example, certain types of non-volatile memory are subject to wear, resulting in average wear (moving data from more worn portions of non-volatile memory to less worn portions). In yet another example, a new form of hard disk magnetic recording, such as a tiled magnetic recording, does not have the ability to overwrite one of the previously written data without erasing a much larger amount of other data. In various embodiments, the coarse material is Non-volatile memory types with granularity or limited persistence benefit from a (flash) conversion layer.

參考圖1,其展示一邏輯區塊位址至一非揮發性記憶體頁內之固定大小區域之映射之一實施例之選定細節之一圖解。某些傳統快閃轉變層假定一非揮發性記憶體頁(例如,非揮發性記憶體頁100)中之使用者資料位元組之一數目為2之冪(及/或區段大小之一倍數)並將非揮發性記憶體頁劃分成整數個映射單元(每一者在圖1中展示為資料)。舉例而言,在每非揮發性記憶體頁16KB之使用者資料及4KB之映射單元之情況下,每一非揮發性記憶體頁含有四個映射單元,且快閃轉變層將每一映射單元之一位址(例如,LBA[M:U]110)映射至一各別非揮發性記憶體頁及各別非揮發性記憶體頁內之四個映射單元中之一者。亦即,每一映射項目含有各別欄位,諸如:nonvolatile_memory_page_address[n-1:0],mapping_unit_within_nonvolatile_memory__page[k-1:0]其中nonvolatile_memory_page_address係指非揮發性記憶體中之一唯一非揮發性記憶體頁,且mapping_unit_within_nonvolatile_memory_page係指每一非揮發性記憶體頁之2k個映射單元大小部分中之一者(k對於整個非揮發性記憶體係固定的)。一子頁位址104係nonvolatile_memory_page_address與mapping__unit_within_nonvolatile_memory_page之一組合。對於基於區段(例如,比映射單元細之資料粒度)之定址,邏輯區塊位址(例如,LBA[U-1:0]111)之低位位元規定一子部分,諸如映射單元內之若干個區段(例如,一子頁內之區段113)。 Referring to FIG. 1, an illustration of selected details of one embodiment of a mapping of a logical block address to a fixed size region within a non-volatile memory page is shown. Some conventional flash transition layers assume that the number of user data bytes in a non-volatile memory page (eg, non-volatile memory page 100) is a power of two (and/or one of the segment sizes) The multiples are divided into non-volatile memory pages into an integer number of mapping units (each shown in Figure 1 as data). For example, in the case of a user data of 16 KB per non-volatile memory page and a mapping unit of 4 KB, each non-volatile memory page contains four mapping units, and the flash transition layer will each mapping unit One of the addresses (eg, LBA[M:U] 110) is mapped to one of a plurality of non-volatile memory pages and four mapping units within each non-volatile memory page. That is, each mapping item contains a separate field, such as: nonvolatile_memory_page_address[n-1:0], mapping_unit_within_nonvolatile_memory__page[k-1:0] where nonvolatile_memory_page_address refers to one of the non-volatile memory in non-volatile memory. Page, and mapping_unit_within_nonvolatile_memory_page refers to one of the 2 k mapping unit size portions of each non-volatile memory page (k is fixed for the entire non-volatile memory system). A subpage address 104 is a combination of nonvolatile_memory_page_address and one of mapping__unit_within_nonvolatile_memory_page. For addressing based on a segment (eg, a finer granularity than the mapping unit), the lower bit of the logical block address (eg, LBA[U-1:0] 111) specifies a sub-portion, such as within the mapping unit. A number of segments (eg, segment 113 within a subpage).

參考圖2,其展示一邏輯區塊位址至視情況橫跨非揮發性記憶體頁之一可變大小區域之映射之一實施例之選定細節之一圖解。可變大小快閃轉換層(例如,VFTL)概念上將一映射單元之一位址(或標 籤)(例如,LBA[M:U]110)映射至一或多個非揮發性記憶體頁之一可變大小區域(舉例而言,此乃因映射單元之資料在儲存於非揮發性記憶體中之前被壓縮及/或在另一實例中,此乃因映射單元由主機作為可變大小之段來寫入,諸如針對一物件儲存區)。然而,在每一映射項目中提供一完整位元組位址204及一位元組資料長度206使得映射項目在與傳統快閃轉變層相比時較大。 Referring to Figure 2, there is shown one of the selected details of one embodiment of a logical block address to a mapping of one of the variable size regions of a non-volatile memory page as appropriate. A variable size flash translation layer (eg, VFTL) conceptually addresses one of the mapping elements (or Sign (eg, LBA[M:U]110) maps to one of the one or more non-volatile memory pages of a variable size region (for example, this is because the mapping unit data is stored in non-volatile memory) The volume is previously compressed and/or in another instance, because the mapping unit is written by the host as a variable size segment, such as for an object storage area). However, providing a complete byte address 204 and a one-bit data length 206 in each mapping item results in a larger mapping item when compared to a conventional flash transition layer.

參考圖3,其展示包括整數個讀取單元之一非揮發性記憶體頁之一實施例之一圖解。在某些實施例中,可變大小快閃轉換層藉由映射至Epage(例如,錯誤校正譯碼頁)位址(亦稱為一「讀取單元」位址)而執行自映射單元之位址(或標籤)至實體位址之映射。一Epage(或讀取單元)為可自非揮發性記憶體讀取且藉由用於保護非揮發性記憶體之內容之錯誤校正碼校正之最小資料量。亦即,每一讀取單元含有一定量之資料及保護彼資料之對應錯誤校正譯碼檢查位元組。在某些實施例中將一非揮發性記憶體頁(諸如非揮發性記憶體頁100)或在其他實施例中將出於寫入目的而視為一單元之一非揮發性記憶體頁群組劃分成整數個讀取單元,如圖3中所圖解說明。 Referring to Figure 3, an illustration of one of the embodiments of a non-volatile memory page comprising one of a plurality of read units is shown. In some embodiments, the variable size flash translation layer performs the self mapping unit by mapping to an Epage (eg, error correction decoded page) address (also referred to as a "read unit" address). The mapping of addresses (or tags) to physical addresses. An Epage (or read unit) is the minimum amount of data that can be read from non-volatile memory and corrected by an error correction code for protecting the contents of the non-volatile memory. That is, each reading unit contains a certain amount of data and a corresponding error correction decoding check byte that protects the data. In some embodiments, a non-volatile memory page (such as non-volatile memory page 100) or in other embodiments will be considered as a unit of non-volatile memory page group for writing purposes. The group is divided into an integer number of reading units, as illustrated in FIG.

在某些類型之非揮發性記憶體(諸如NAND快閃)之情況下,儲存於非揮發性記憶體中之資料係使用者資料位元組及錯誤校正碼位元組(錯誤校正資訊)之一混合,且存取非揮發性記憶體之一較高位準控制器判定非揮發性記憶體之哪些位元組及多少位元組用於使用者資料以及非揮發性記憶體之哪些位元組及多少位元組用於錯誤校正譯碼。在各種實施例中,允許每非揮發性記憶體頁之讀取單元之數目變化。舉例而言,非揮發性記憶體之某些部分使用比其他部分強之錯誤校正碼(使用非揮發性記憶體頁中之較多位元組來用於錯誤校正譯碼資訊),且具有較少之讀取單元及/或每讀取單元較少之可用資料。在另一實例中,在使用非揮發性記憶體時每非揮發性記憶體頁之讀取單元之數 目變化,此乃因程式化/抹除循環往往弱化非揮發性記憶體,從而在較多地使用(磨損)非揮發性記憶體時導致較強之錯誤校正碼。 In the case of certain types of non-volatile memory (such as NAND flash), the data stored in the non-volatile memory is the user data byte and the error correction code byte (error correction information). A hybrid, and accessing one of the non-volatile memory higher level controllers determines which bytes and non-volatiles of non-volatile memory are used for user data and which bytes of non-volatile memory And how many bytes are used for error correction decoding. In various embodiments, the number of read units per non-volatile memory page is allowed to vary. For example, some parts of non-volatile memory use a stronger error correction code than other parts (using more bytes in a non-volatile memory page for error correction coding information), and Less reading units and/or less available data per reading unit. In another example, the number of read units per non-volatile memory page when using non-volatile memory This is because the stylized/erase cycle tends to weaken the non-volatile memory, resulting in a stronger error correction code when more (wearing) non-volatile memory is used.

根據各種實施例,所使用之錯誤校正碼為以下各項中之一或多者:一裡德-索羅門(Reed-Solomon)(例如,RS)碼;一博斯-查德胡裡-霍昆格母(Bose Chaudhuri Hocguenghem)(例如,BCH)碼;一渦輪碼;一硬決策及/或軟決策低密度同位檢查(例如,LDPC)碼;一極性碼;一非二進制碼;一廉價/獨立磁碟冗餘陣列(例如,RAID)碼;抹除碼;任何其他錯誤校正碼;前述各項之任何組合,包含合成、串接及交錯。典型碼字大小介於自512個位元組(加上錯誤校正譯碼位元組)至2176個位元組(加上錯誤校正譯碼位元組)之範圍內。錯誤校正譯碼位元組之典型數目介於僅幾個位元組至數百個位元組之範圍內。在某些多層單元NAND快閃裝置中,錯誤校正準則為每1KB之使用者資料40個位元。在某些多層單元NAND快閃裝置中,碼率(使用者位元組與一讀取單元中之總位元組之一比率)通常小於94%。舉例而言,MLC NAND快閃裝置具有大小17664個位元組之快閃頁,該等快閃頁之16384個位元組標稱地用於儲存所映射資料,且1280個位元組為標稱地用於儲存後設資料及錯誤校正譯碼位元組之「備用」位元組。用於MLC NAND快閃裝置之推薦錯誤校正譯碼強度為每1千位元組40個校正位元,其使用所映射資料位元組之每1千位元組之備用位元組中之70個位元組。 According to various embodiments, the error correction code used is one or more of the following: a Reed-Solomon (eg, RS) code; a Boss-Chad Huri-ho Bose Chaudhuri Hocguenghem (eg, BCH) code; a turbo code; a hard decision and/or soft decision low density parity check (eg, LDPC) code; a polar code; a non-binary code; Redundant array of independent disks (eg, RAID) code; erase code; any other error correction code; any combination of the foregoing, including synthesis, concatenation, and interleaving. Typical codeword sizes range from 512 bytes (plus error correction decoding bytes) to 2176 bytes (plus error correction decoding bytes). The typical number of error correction decoding bytes is in the range of only a few bytes to hundreds of bytes. In some multi-level cell NAND flash devices, the error correction criterion is 40 bits per 1 KB of user data. In some multi-level cell NAND flash devices, the code rate (the ratio of the user byte to one of the total bytes in a read cell) is typically less than 94%. For example, an MLC NAND flash device has a flash page of 17664 bytes, and 16384 bytes of the flash pages are nominally used to store the mapped data, and 1280 bytes are labeled It is used to store the data and the "alternate" byte of the error correction decoding byte. The recommended error correction decoding strength for the MLC NAND flash device is 40 correction bits per 1 kilobyte, which uses 70 of the spare bytes per 1 kilobyte of the mapped data byte. One byte.

參考圖4,其展示將一邏輯區塊位址映射至橫跨一或多個讀取單元之一可變大小區域之一實施例之選定細節之一圖解。在某些實施例中,VFTL映射將一可變大小(例如,經壓縮)映射單元之位址(或標籤)(例如,LBA[M:U]110)映射至在映射之每一項目中表示為一讀取單元位址404及一跨度(讀取單元之一數目)406之若干個讀取單元。由映射項目中之一者參考之讀取單元在一或多個(邏輯上及/或實體上)循 序非揮發性記憶體頁中,舉例而言,該若干個讀取單元視情況及/或選擇性地跨越一非揮發性記憶體頁邊界。在將資料緊縮於讀取單元內之各種實施例中,映射之一項目單獨地通常不足以定位相關聯資料(此乃因項目僅參考讀取單元且不參考讀取單元內之資料之一位置),且所參考讀取單元內之進一步資訊(諸如標頭)用於精確地定位相關聯資料。 Referring to Figure 4, there is shown an illustration of one of the selected details of mapping one logical block address to one of the variable size regions across one or more of the read cells. In some embodiments, the VFTL mapping maps an address (or tag) of a variable size (eg, compressed) mapping unit (eg, LBA[M:U] 110) to each item in the mapping. It is a read unit address 404 and a span (a number of read units) 406 of several read units. One or more (logically and/or physically) read units referenced by one of the mapping items In the non-volatile memory page, for example, the plurality of read cells optionally and/or selectively straddle a non-volatile memory page boundary. In various embodiments in which the data is compacted within the reading unit, mapping one of the items is typically insufficient to locate the associated material alone (this is because the item only references the reading unit and does not reference one of the locations within the reading unit) And further information (such as a header) within the reference reading unit is used to accurately locate the associated material.

在某些實施例中,資料以跨越非揮發性記憶體之多個晶粒條帶化之一方式寫入至非揮發性記憶體頁中。跨越多個晶粒條帶化寫入資料藉由僅將一非揮發性記憶體頁每條帶一次地寫入至一既定晶粒中而有利地達成較大寫入頻寬。跨越多個晶粒之一區塊條帶稱為一冗餘區塊,此乃因在其他實施例及/或使用情景中,使用(舉例而言)一個冗餘晶粒在一冗餘區塊基礎上添加類RAID冗餘。在各種實施例中,非揮發性記憶體之某些區塊為有缺陷的且在寫入時被跳過,以使得條帶化偶爾會具有其中晶粒中之一者被跳過(而非寫入至一壞區塊之非揮發性記憶體頁中)之「孔」。在此等實施例中,「循序」非揮發性記憶體頁按由寫入非揮發性記憶體頁之一次序判定之一邏輯次序為循序的。 In some embodiments, the data is written into the non-volatile memory page in one of a plurality of grain stripings across the non-volatile memory. Writing data across a plurality of grain strips advantageously achieves a larger write bandwidth by writing only one non-volatile memory page to each of the predetermined dies. A strip across one of a plurality of dies is referred to as a redundant block, as in other embodiments and/or usage scenarios, for example, a redundant dies are used in a redundant block. Add class RAID redundancy based on it. In various embodiments, certain blocks of non-volatile memory are defective and are skipped during writing such that striping occasionally has one of the dies being skipped (rather than The "hole" written to the non-volatile memory page of a bad block. In these embodiments, the "sequential" non-volatile memory page is sequentially ordered in a logical order determined by one of the pages written to the non-volatile memory page.

參考圖5,其展示包括標頭及資料之一讀取單元之一實施例之選定細節之一圖解。在各種實施例中,圖4中所圖解說明之映射產生在讀取單元內定位可變大小資料之一準則。如圖5中所圖解說明,每一讀取單元(例如,讀取單元500及510)具有一組零個或零個以上標頭501,且通常藉由硬體寫入該等標頭,此乃因可變大小資料被「拼貼」(例如,密集地緊縮而無浪費之空間)至一或多個讀取單元中。當讀取非揮發性記憶體時,通常藉由其他硬體來解譯標頭以提取可變大小資料。藉由具有一匹配邏輯區塊位址(或標籤)之標頭中之一者中之一各別位移及長度來定位可變大小資料,且資料視情況及/或選擇性 地橫跨若干讀取單元(諸如由「資料,開始」及「資料,繼續」所圖解說明之可變大小資料)。 Referring to Figure 5, there is shown an illustration of selected details of one embodiment of a reading unit including a header and data. In various embodiments, the mapping illustrated in Figure 4 results in a criterion for locating variable size data within the reading unit. As illustrated in Figure 5, each read unit (e.g., read units 500 and 510) has a set of zero or more headers 501, and is typically written by hardware, This is because variable size data is "collaged" (eg, densely packed without wasted space) into one or more reading units. When reading non-volatile memory, the header is usually interpreted by other hardware to extract variable size data. Positioning variable size data by one of each of the headers having a matching logical block address (or label), and the data is optionally and/or selective Across a number of reading units (such as variable size data as illustrated by "Data, Start" and "Data, Continue").

在各種實施例中,該等標頭亦用作回收(例如,廢棄項目收集及/或平均磨損)之部分-在標頭中包含邏輯區塊位址(或等效地,映射單元位址或標籤)既達成找出一讀取單元內之可變大小資料又提供一種用以判定何時讀取該等讀取單元中之一特定者、其內之可變大小資料係仍有效還是已被覆寫(藉由在映射中查找邏輯區塊位址並判定該映射是否仍參考特定讀取單元之一實體位址還是已經更新為參考讀取單元中之另一者)之方式。因此,標頭據稱形成一「逆映射」,此乃因與讀取單元之一實體位置組合之標頭具有類似於映射中之資訊但自實體位置相關聯至邏輯區塊位址(或標籤)之資訊。 In various embodiments, the headers are also used as part of recycling (eg, collection of obsolete items and/or average wear) - including logical block addresses in the header (or equivalently, mapping unit addresses or Label) both to find a variable size data within a read unit and to provide a means for determining when to read a particular one of the read units, whether the variable size data within it is still valid or has been overwritten (by way of looking up the logical block address in the map and determining if the mapping still references one of the specific read unit physical addresses or has been updated to the other of the reference read units). Therefore, the header is said to form an "inverse mapping" because the header combined with the physical location of one of the read units has information similar to that in the mapping but is associated with the logical location (or label) from the physical location. ) information.

在某些實施例中,用以基於邏輯區塊位址(或標籤)而自讀取單元提取資料之專用硬體經實施而針對隨機讀取以高效率操作。專用硬體剖析一或多個讀取單元內之標頭以找出具有一既定邏輯區塊位址(或標籤)之該等標頭中之一者且然後使用各別長度及位移來提取相關聯之可變大小資料。然而,一基於硬體之解決方案為昂貴的(在矽面積及功率上)。對於其中循序性能比隨機性能重要之一低端及/或移動環境,對可變大小快閃轉換層實施改變以減少矽面積、節省功率並達成高循序輸送量速率。 In some embodiments, dedicated hardware to extract data from the read unit based on logical block addresses (or tags) is implemented to operate with high efficiency for random reads. A dedicated hardware parses a header within one or more read units to find one of the headers having a given logical block address (or label) and then uses the respective length and displacement to extract the correlation Variable size data. However, a hardware-based solution is expensive (in terms of area and power). For low-end and/or mobile environments where sequential performance is more important than random performance, changes are made to the variable-size flash conversion layer to reduce germanium area, save power, and achieve high sequential throughput rates.

在某些實施例中,一經循序讀取最佳化之可變大小快閃轉換層(例如,SRO-VFTL)將(密集地緊縮之)資料拼貼至非揮發性記憶體頁(或在某些實施例中,出於寫入目的而視為一單元之一非揮發性記憶體頁群組)中,而資料內無用於標頭之任何間隙-所有標頭均被分組在非揮發性記憶體頁之一個部分中。在其他實施例中,標頭並不動態地用於存取資料(如在某些可變大小快閃轉換層中),而係僅用於(諸如)從未預期功率損失回收及修復。代替地,映射之項目包括用於找出非 揮發性記憶體頁內之可變大小(例如,經壓縮)資料之完整資訊。將標頭及資料分離至非揮發性記憶體頁之不同部分中導致僅包括標頭之讀取單元、包括標頭與資料之一混合之讀取單元(但如在圖6中,每非揮發性記憶體頁僅一個此類讀取單元)及僅包括資料之讀取單元。 In some embodiments, a sequentially-optimized variable size flash conversion layer (eg, SRO-VFTL) splicing (densely compacted) data onto non-volatile memory pages (or at some In some embodiments, it is considered as a unit of non-volatile memory page group for writing purposes, and there is no gap for the header in the data - all headers are grouped in non-volatile memory In one part of the body page. In other embodiments, the header is not used dynamically to access data (as in some variable size flash conversion layers), but only for recovery and repair of, for example, unexpected power loss. Instead, the mapped items include Complete information on variable size (eg, compressed) data within a volatile memory page. Separating the header and data into different portions of the non-volatile memory page results in a reading unit comprising only the header, a reading unit including a combination of the header and the data (but as in Figure 6, each non-volatile A memory page has only one such read unit) and a read unit that only includes data.

儘管針對循序讀取輸送量以低成本進行組態,但一經循序讀取最佳化之可變大小快閃轉換層能夠按其他度量(諸如每秒之隨機讀取輸入/輸出操作(例如,IOP)、每秒之隨機寫入輸入/輸出操作及循序寫入輸送量)相當好地表現。然而,對諸如在每一讀取單元中藉助標頭之VFTL式資料拼貼之功能之硬體輔助之移除會對一控制處理器造成一較大負擔。另一選擇為,在某些實施例中,一經循序讀取最佳化之可變大小快閃轉換層使用硬體來輔助資料拼貼、資料提取或其他操作。 Although configured for low-cost configuration for sequential read throughput, a variable-size flash translation layer that is optimized for sequential reads can be based on other metrics (such as random read input/output operations per second (eg, IOP) ), random write input/output operations per second, and sequential write throughput) perform quite well. However, the removal of hardware assistance, such as the functionality of the VFTL-style data collage by means of a header in each read unit, places a significant burden on a control processor. Alternatively, in some embodiments, the sequentially optimised variable size flash conversion layer uses hardware to assist with data tiling, data extraction, or other operations.

參考圖6,其展示一SRO-VFTL非揮發性記憶體頁之一實施例之一圖解。參考圖7,其展示一SRO-VFTL非揮發性記憶體頁之另一實施例之一圖解。圖6及圖7之實施例之間的一差異為來自一先前非揮發性記憶體頁之延續資料640係在標頭之前還是之後。本發明預期非揮發性記憶體頁內之資料之各種實施例及配置。 Referring to Figure 6, an illustration of one of the embodiments of a SRO-VFTL non-volatile memory page is shown. Referring to Figure 7, an illustration of another embodiment of a SRO-VFTL non-volatile memory page is shown. A difference between the embodiments of Figures 6 and 7 is that the continuation data 640 from a previous non-volatile memory page is before or after the header. The present invention contemplates various embodiments and configurations of data within a non-volatile memory page.

根據各種實施例,一非揮發性記憶體頁包括以下各項中之一或多者: According to various embodiments, a non-volatile memory page includes one or more of the following:

-標頭,其包含一主標頭610、視情況及/或選擇性地一冗餘區塊標頭620(例如,在為一冗餘區塊之每一區塊之第一頁中添加之一標頭)及零個或零個以上額外經緊縮標頭630。每個快閃頁具有接續標頭之數目之至少一計數及至資料(與該等標頭相關聯)在非揮發性記憶體頁中開始之處之一指標。在某些實施例中,該等標頭可為位元組對準的,但各自為僅6個位元組(例如,B)。該等標頭可包含但不限於資料標頭、時期(epoch)標頭及填補。資料標頭利用一映射單元位址及一長 度。暗示了位移,此乃因所有資料均被相連地緊縮。 a header comprising a main header 610, optionally and/or optionally a redundant block header 620 (eg, added to the first page of each block of a redundant block) A header) and zero or more additional punctured headers 630. Each flash page has at least one count of the number of consecutive headers and one of the indicators to the beginning of the data (associated with the headers) in the non-volatile memory page. In some embodiments, the headers may be byte aligned, but each is only 6 bytes (eg, B). Such headers may include, but are not limited to, data headers, epoch headers, and padding. Data header uses a mapping unit address and a length degree. The displacement is implied because all the data is concatenated.

-視情況及/或選擇性地,來自一先前非揮發性記憶體頁之延續資料(一映射單元之可變大小資料之一部分)640。 - Continuation data from a previous non-volatile memory page (a portion of variable size data of a mapping unit) 640, as appropriate and/or selectively.

-用以填充非揮發性記憶體頁之一或多個映射單元之經緊縮(例如,視情況及/或選擇性地經壓縮)資料650,該非揮發性記憶體頁之最後視情況及/或選擇性地在一後續非揮發性記憶體頁中繼續。 - a compacted (eg, optionally and/or selectively compressed) material 650 for filling one or more mapping units of the non-volatile memory page, the last condition and/or of the non-volatile memory page Optionally continue in a subsequent non-volatile memory page.

-在非揮發性記憶體頁之結束處之選用填補(包含於650中)。在各種實施例中,資料為位元組緊縮的(例如,無孔),但若高度壓縮(例如,過多標頭),則可能在非揮發性記憶體頁之結束處填補。舉例而言,在以下情況時使用填補:(i)添加至非揮發性記憶體頁之最後可變大小資料段剩下比一標頭之一大小少之未使用位元組(因此,無法添加一新標頭來開始另一可變大小資料段),及(ii)視情況及/或選擇性地,超過每非揮發性記憶體頁之標頭之一規定數目(因此,儲存於非揮發性記憶體頁中之映射單元之數目由標頭之規定數目而非由映射單元之一資料大小限制)。 - Fill in the end of the non-volatile memory page (included in 650). In various embodiments, the data is constricted (eg, non-porous), but if highly compressed (eg, excessive headers), it may be filled at the end of the non-volatile memory page. For example, padding is used when: (i) the last variable size data segment added to the non-volatile memory page has fewer unused bytes than one of the headers (so, cannot be added) a new header to start another variable size data segment), and (ii) optionally a specified number of headers per non-volatile memory page, as appropriate and/or selectively (thus, stored in a non-volatile The number of mapping units in a memory page is limited by the specified number of headers and not by the data size of one of the mapping units.

在某些實施例中,關於一經循序讀取最佳化之可變大小快閃轉換層之修復及/或回收(例如,廢棄項目收集)有利地經啟用以讀取及/或錯誤校正及/或檢驗非揮發性記憶體頁中之每一者之僅一標頭部分,而非如在一未經循序讀取最佳化之可變大小快閃轉換層中讀取及/或錯誤校正及/或檢驗每個讀取單元。若回收判定可重新寫入一非揮發性記憶體頁之資料,則亦可讀取彼資料且亦可對其進行錯誤校正。在某些實施例中,讀取一整個非揮發性記憶體頁以進行回收,但對僅標頭部分進行錯誤校正直至做出應使非揮發性記憶體頁中之某些資料回收之一判定為止。 In some embodiments, repair and/or recycling (eg, collection of discarded items) with respect to a sequentially read optimized variable size flash conversion layer is advantageously enabled for reading and/or error correction and/or Or verifying only one header portion of each of the non-volatile memory pages, rather than reading and/or miscorrecting in a variable size flash conversion layer that is not sequentially read optimized / or check each reading unit. If the recovery decision can be rewritten into the data of a non-volatile memory page, the data can also be read and error corrected. In some embodiments, an entire non-volatile memory page is read for recycling, but only the header portion is erroneously corrected until one of the data recovery in the non-volatile memory page is determined. until.

在各種實施例中,每非揮發性記憶體頁之標頭之一數目經限制以約束每非揮發性記憶體頁之可讀取之讀取單元之一數目,從而確保 已自非揮發性記憶體讀取所有標頭。在圖6之實施例中,僅讀取足以容納最大數目個標頭之一定數目個讀取單元。在圖7之實施例中,讀取額外數目個讀取單元以考量來自一先前非揮發性記憶體頁之結尾之資料之一最大大小(例如,延續資料640)。然而,圖7之實施例使得能夠自相關聯映射項目判定用以存取來自一先前非揮發性記憶體頁(例如,延續資料640)之資料結尾之讀取單元之一數目,此乃因資料結尾中之位元組之數目可基於相關聯映射項目之各別位移及長度以及先前非揮發性記憶體頁中之使用者(非錯誤校正碼)資料之位元組之數目而判定。此外,在資料結尾之前的僅有標頭為選用冗餘區塊標頭(僅存在於所規定非揮發性記憶體頁中,諸如每一區塊中之第一頁)及主標頭(始終存在於每一非揮發性記憶體頁中)。在圖6之實施例中,為了在不必兩次存取非揮發性記憶體之情況下讀取資料結尾,假定存在最大數目個標頭(或讀取整個非揮發性記憶體頁)。 In various embodiments, the number of one of the headers per non-volatile memory page is limited to limit the number of readable units per non-volatile memory page to ensure All headers have been read from non-volatile memory. In the embodiment of Figure 6, only a certain number of read units sufficient to accommodate a maximum number of headers are read. In the embodiment of FIG. 7, an additional number of read units are read to account for the maximum size of one of the data from the end of a previous non-volatile memory page (eg, continuation data 640). However, the embodiment of FIG. 7 enables the number of read units used to access the end of the data from a previous non-volatile memory page (eg, continuation data 640) from the associated mapping entry, which is the data. The number of bytes in the end can be determined based on the respective displacements and lengths of the associated mapping items and the number of bytes of user (non-error correction code) data in the previous non-volatile memory page. In addition, the only header before the end of the data is the selection of redundant block headers (only in the specified non-volatile memory pages, such as the first page in each block) and the main header (always Present in every non-volatile memory page). In the embodiment of Figure 6, in order to read the end of the data without having to access the non-volatile memory twice, it is assumed that there is a maximum number of headers (or the entire non-volatile memory page is read).

在某些實施例中,經循序讀取最佳化之可變大小快閃轉換層使用具有複數個映射項目之一單層次映射。在其他實施例中,經循序讀取最佳化之可變大小快閃轉換層使用一多層次映射,諸如一兩層次映射,其具有指向第二層次映射(例如,SLM)頁之一第一層次映射(例如,FLM),其中第二層次映射頁中之每一者包括複數個分葉層次映射項目。在其他實施例中,多層次映射具有兩個以上層次,諸如三個層次。在某些實施例及/或使用情景中,一多層次映射之使用使得能夠僅將映射之一相關(例如,在使用中)部分儲存(例如,快取)於局部記憶體(例如,一固態磁碟機控制器之晶片上SRAM或一主機之局部DRAM)中,從而減少維持映射之一成本。舉例而言,若典型使用型樣具有在任何時間點處作用之1十億位元組(例如,GB)之邏輯區塊位址空間,則為了快速存取僅局部地儲存映射的足以存取邏輯區塊位址空間之作用1GB部分之一部分,而非將其儲存於非揮發性記憶體中。 在邏輯區塊位址空間之作用部分之外的參考自非揮發性記憶體取得多層次映射之一或多個層次之所請求部分,從而視情況及/或選擇性地替換映射之其他局部儲存之部分。 In some embodiments, the sequentially read optimized variable size flash translation layer uses a single level mapping with one of a plurality of mapping items. In other embodiments, the sequentially read optimized variable size flash translation layer uses a multi-level mapping, such as a two-level mapping, with one of pointing to a second hierarchical mapping (eg, SLM) page first. A hierarchical mapping (eg, FLM), wherein each of the second hierarchical mapping pages includes a plurality of hierarchical mapping entries. In other embodiments, the multi-level mapping has more than two levels, such as three levels. In some embodiments and/or usage scenarios, the use of a multi-level mapping enables only one of the mappings to be correlated (eg, in use) partially stored (eg, cached) in local memory (eg, a solid state) In the SRAM of a disk drive controller or a local DRAM of a host, thereby reducing the cost of maintaining a map. For example, if a typical usage pattern has a logical block address space of 1 billion bytes (eg, GB) acting at any point in time, then only enough local storage of the map for fast access is sufficient for access. The logical block address space acts as part of the 1GB portion rather than storing it in non-volatile memory. A reference other than the active portion of the logical block address space takes the requested portion of one or more levels of the multi-level map from the non-volatile memory, thereby optionally replacing other partial stores of the map as appropriate and/or selectively Part of it.

分葉層次映射項目中之每一者與複數個映射單元中之一者之一位址(或標籤)相關聯(相對應)。在一實例中,將一邏輯區塊位址轉換為一映射單元位址,諸如藉由移除邏輯區塊位址之零個或零個以上最低有效位元(例如,LSB)及/或出於對準目的而給邏輯區塊位址添加一常數,且在映射中查找映射單元位址以判定該映射之一對應項目。在另一實例中,在一雜湊表(或其他相關聯資料結構)中查找一標籤以判定用作映射單元位址之一唯一識別符。 Each of the leaf-level mapping items is associated (corresponding) with one of the addresses (or tags) of one of the plurality of mapping units. In one example, a logical block address is converted to a mapped unit address, such as by removing zero or more least significant bits (eg, LSBs) and/or out of the logical block address. A constant is added to the logical block address for alignment purposes, and the mapping unit address is looked up in the mapping to determine one of the mappings corresponding to the item. In another example, a tag is looked up in a hash table (or other associated data structure) to determine a unique identifier that is used as one of the mapping unit addresses.

參考圖8,其展示各種類型之標頭之一實施例之細節之一圖解。在圖8之實例中,該等標頭已經格式化以各自裝入六個位元組。根據各種實施例,各種類型之標頭為以下各項中之一或多者:全部具有一相同大小;視情況及/或選擇性地具有不同大小;每一者包括規定標頭之一大小之一各別欄位;在不同非揮發性記憶體頁中大小不同;及前述各項之任何組合。 Referring to Figure 8, an illustration of one of the details of one of the various types of headers is shown. In the example of Figure 8, the headers have been formatted to fit into six bytes each. According to various embodiments, the various types of headers are one or more of: all having the same size; depending on the situation and/or selectively having different sizes; each of which includes one of the specified headers a separate field; different sizes in different non-volatile memory pages; and any combination of the foregoing.

根據各種實施例,非揮發性記憶體頁中之標頭包括以下各項中之一或多者: According to various embodiments, the header in the non-volatile memory page includes one or more of the following:

-資料標頭(810),其指示與一可變大小資料部分相關聯之資訊。在某些實施例中,與一資料標頭相關聯之資料在與該資料標頭出現之非揮發性記憶體頁相同之一非揮發性記憶體頁中開始。在其他實施例及/或使用情景中,若一非揮發性記憶體頁僅具有用於一資料標頭之剩餘空間,則所有相關聯資料在一後續非揮發性記憶體頁中開始。 - a data header (810) indicating information associated with a variable size data portion. In some embodiments, the data associated with a data header begins in a non-volatile memory page that is identical to the non-volatile memory page in which the data header appears. In other embodiments and/or usage scenarios, if a non-volatile memory page has only remaining space for a data header, all associated data begins in a subsequent non-volatile memory page.

-映射標頭,諸如第二層次映射(例如,SLM)標頭(820)。第二層次映射標頭包括用以指示(諸如針對第二層次映射回收及/或修復)正儲存哪一第二層次映射頁之一第一層次映射索引(例如,FLMI)。 A mapping header, such as a second level mapping (eg, SLM) header (820). The second level mapping header includes a first level mapping index (eg, FLMI) to indicate (eg, for the second level map to retrieve and/or repair) which second level mapping page is being stored.

-日誌/檢查點標頭(820)。日誌/檢查點標頭指示用於回收、修復、錯誤處置、除錯或其他特殊狀況之資料。 - Log/Checkpoint header (820). The log/checkpoint header indicates information for recycling, repair, error handling, debugging, or other special conditions.

-時期標頭(830)用作修復之部分,以使資料與對應映射/檢查點資訊相關聯。通常,每非揮發性記憶體頁存在至少一個時期標頭。 The epoch header (830) is used as part of the repair to associate the data with the corresponding map/checkpoint information. Typically, there is at least one epoch header per non-volatile memory page.

-主標頭(870)每非揮發性記憶體頁使用一次,以提供關於非揮發性記憶體頁中之標頭之一數目及非標頭資料在非揮發性記憶體頁內之何處開始之資訊。各種技術判定非標頭資料之一開始,諸如在圖6及圖7之實施例中所圖解說明。 - The main header (870) is used once per non-volatile memory page to provide information on the number of headers in the non-volatile memory page and where the non-header data begins in the non-volatile memory page Information. Various techniques determine the beginning of one of the non-header data, such as illustrated in the embodiments of Figures 6 and 7.

-在某些非揮發性記憶體頁(諸如為一冗餘區塊之每一區塊中之第一非揮發性記憶體頁)中使用冗餘區塊標頭(880)。 - Redundant block headers (880) are used in certain non-volatile memory pages, such as the first non-volatile memory page in each block of a redundant block.

-其他類型之標頭(840),諸如填補標頭、支援較大長度之檢查點標頭等。 - Other types of headers (840), such as padding headers, checkpoint headers that support larger lengths, etc.

在某些實施例中,某些標頭包括用以提供標頭之多個子類型之一TYPE欄位。在各種實施例中,某些標頭包括含有與標頭相關聯之資料之一長度之一LEN(長度)欄位。在各種實施例中,並非LEN欄位或除一LEN欄位之外,某些標頭亦包括含有至與標頭相關聯之資料之結束之一位移(在非揮發性記憶體頁內)之一OFFSET(位移)欄位(未展示)。(在某些實施例中,若可變大小資料段中之最後一者橫跨一非揮發性記憶體頁,則OFFSET為在一後續非揮發性記憶體頁內之一位移或後續非揮發性記憶體頁內之位元組之一數目)。通常實施一LEN欄位或一OFFSET欄位中之僅一者,此乃因在緊縮可變大小資料段而無浪費之空間之情況下,一非揮發性記憶體頁中之可變大小資料段中之每一者之開始位置及結束位置由非揮發性記憶體頁中之第一可變大小資料段之開始位置(例如,緊接在標頭之後,如在圖7中)及LEN或OFFSET欄位之列表暗示。 In some embodiments, certain headers include a TYPE field to provide one of a plurality of subtypes of the header. In various embodiments, certain headers include a LEN (length) field containing one of the lengths of the data associated with the header. In various embodiments, not a LEN field or a LEN field, some headers also include a displacement (in a non-volatile memory page) that includes the end of the data associated with the header. An OFFSET field (not shown). (In some embodiments, if the last one of the variable size segments spans a non-volatile memory page, OFFSET is one of the subsequent non-volatile memory pages or subsequent non-volatile The number of bytes in the memory page). Usually only one of the LEN field or an OFFSET field is implemented, because of the variable size data segment in a non-volatile memory page in the case of tightening the variable size data segment without waste of space. The start and end positions of each of the non-volatile memory pages are from the beginning of the first variable size data segment (eg, immediately after the header, as in Figure 7) and LEN or OFFSET The list of fields is implied.

參考圖9,其展示一映射項目900之一實施例之選定細節之一圖 解。根據各種實施例,映射之項目包括以下各項中之一或多者:-一實體非揮發性記憶體頁位址,-非揮發性記憶體頁內至一可變大小資料項目之一位移(例如,OFFSET),-可變大小資料項目之一長度(例如,LEN_M128),及-其他控制資訊。 Referring to Figure 9, a diagram showing selected details of one embodiment of a mapping item 900 is shown. solution. According to various embodiments, the mapped item comprises one or more of: - a non-volatile memory page address, - a non-volatile memory page to one of a variable size data item ( For example, OFFSET), one of the variable size data items (eg, LEN_M128), and - other control information.

在某些實施例中,對長度進行編碼(舉例而言,藉由位移)以使得為零之一值對應於一規定最小長度。舉例而言,若最小長度為128個位元組,則為0之一LEN_M128值表示128個位元組。在其他實施例中,將壓縮至小於規定最小長度之資料填補至至少規定最小長度之大小。 In some embodiments, the length is encoded (for example, by displacement) such that one of the values of zero corresponds to a specified minimum length. For example, if the minimum length is 128 bytes, then one of the 0 LEN_M128 values represents 128 bytes. In other embodiments, the data compressed to less than the specified minimum length is padded to at least a specified minimum length.

在各種實施例中,SRO-VFTL映射項目大於VFTL映射項目,此乃因SRO-VFTL映射項目儲存對應資料之一全位移及位元組長度。因此,減小映射項目在儲存於非揮發性記憶體中時之一大小可為有利的。在一典型使用中,通常至少以某一資料粒度及/或大於1之循序映射單元之一平均數目循序地讀取及寫入資料。利用寫入之循序性質之一映射項目壓縮格式實施起來亦相對廉價且產生一高映射壓縮率。藉由使循序寫入之資料進入至相同非揮發性記憶體頁中直至跨越一非揮發性記憶體頁邊界為止來進一步援助映射項目之壓縮。 In various embodiments, the SRO-VFTL mapping item is larger than the VFTL mapping item, because the SRO-VFTL mapping item stores one of the corresponding displacements and the length of the byte. Therefore, it may be advantageous to reduce the size of one of the mapping items when stored in non-volatile memory. In a typical use, the data is typically read and written sequentially, at least with a certain data granularity and/or an average number of sequential mapping units greater than one. Mapping the project compression format using one of the sequential nature of writing is also relatively inexpensive to implement and produces a high mapping compression ratio. The compression of the mapping item is further aided by having the sequentially written data enter the same non-volatile memory page until it crosses a non-volatile memory page boundary.

參考圖10,其展示各種經壓縮映射項目之一實施例之選定細節之一圖解。各種映射項目包含未壓縮(1010)、具有與一先前映射項目相同之一非揮發性記憶體頁位址(1020)、具有與先前映射項目相同之一非揮發性記憶體頁位址且在先前資料結束之一位移處開始(1030),及具有與先前映射項目相同之一非揮發性記憶體頁位址、在先前資料結束之一位移處開始且具有與先前映射項目相同之一長度(1040)。 Referring to Figure 10, an illustration of one of the selected details of one of the various compressed mapping items is shown. The various mapping items contain uncompressed (1010), one non-volatile memory page address (1020) identical to a previously mapped item, one of the same non-volatile memory page address as the previous mapped item, and previously At the end of the data, one of the displacement starts (1030), and has one of the same non-volatile memory page address as the previous mapped item, starts at one of the displacements of the previous data, and has the same length as the previous mapped item (1040) ).

在具有一多層次映射之某些實施例中,維持較低層次(諸如分葉 層次)映射頁之一快取記憶體。經快取映射頁呈一未壓縮形式,從而提供由處理器(諸如一主機或一固態磁碟機控制器之一控制處理器)進行之快速存取。當映射頁移動(諸如自非揮發性記憶體或動態隨機存取記憶體(例如,DRAM))至快取記憶體中時,該等映射頁係未壓縮的。當自快取記憶體沖洗映射頁(諸如由於被修改)時,壓縮映射頁以用於儲存(諸如儲存於非揮發性記憶體中)。根據其中使用DRAM以藉由將映射頁中之某些或全部儲存於動態隨機存取記憶體中而減少等待時間之各種實施例,以如下形式中之一或多者來儲存動態隨機存取記憶體中之映射頁:經壓縮形式;未壓縮形式;選擇性地,一經壓縮或未壓縮形式;及藉助用於存取動態隨機存取記憶體中之映射頁之(可變大小)經壓縮版本之一間接表。 In some embodiments with a multi-level mapping, maintaining a lower level (such as lobes) Level) One of the map pages caches memory. The cache map page is in an uncompressed form to provide fast access by a processor, such as a host or a solid state drive controller controlling the processor. When mapping pages are moved (such as from non-volatile memory or dynamic random access memory (eg, DRAM)) to the cache, the mapped pages are uncompressed. When the self-cache memory flushes the map page (such as due to being modified), the map page is compressed for storage (such as in non-volatile memory). According to various embodiments in which DRAM is used to reduce latency by storing some or all of the mapped pages in the DRAM, the dynamic random access memory is stored in one or more of the following forms. Mapping page in volume: compressed form; uncompressed form; optionally, compressed or uncompressed form; and (variable size) compressed version for accessing mapped pages in dynamic random access memory One of the indirect tables.

在某些實施例中,在一主機寫入命令之主機寫入資料到達一固態磁碟機控制器處時視情況及/或選擇性地壓縮該主機寫入資料,並將其以一類先進先出(例如,FIFO)之方式儲存於一局部(諸如一晶片上)記憶體中。舉例而言,在某些實施例中,將主機寫入資料連同韌體資料結構、快閃統計資料、映射之部分(諸如保存映射之一或多個頁之一快取記憶體)、來自非揮發性記憶體之讀取資料(包含回收讀取資料)、待寫入至非揮發性記憶體之資料之標頭、軟體碼、韌體碼及其他使用一起儲存於一統一緩衝器(例如,圖11A中之UBUF)中。在各種實施例中,針對固態磁碟機之各種局部儲存準則使用一或多個專用記憶體。 In some embodiments, when a host write command to a host write command arrives at a solid state drive controller, the host writes the data as appropriate and/or selectively, and uses a class of advanced The output (eg, FIFO) is stored in a local (such as a wafer) memory. For example, in some embodiments, the host writes the data along with the firmware data structure, flash statistics, portions of the mapping (such as saving one or more of the pages of the cache memory), from the non- The read data of the volatile memory (including the recovered read data), the header of the data to be written to the non-volatile memory, the software code, the firmware code, and other uses are stored together in a unified buffer (for example, In UBUF) in Fig. 11A. In various embodiments, one or more dedicated memories are used for various local storage criteria for solid state drives.

在某些實施例中,在一主機寫入命令之主機寫入資料發送至一固態磁碟機控制器之前視情況及/或選擇性地在一主機處壓縮該主機寫入資料。舉例而言,在資料庫記錄寫入至一輸入/輸出裝置之前由一主機資料庫壓縮該等資料庫記錄。 In some embodiments, the host write data is compressed at a host as appropriate and/or selectively before a host write command to a solid state drive controller is sent to a solid state drive controller. For example, the database records are compressed by a host repository before the database records are written to an input/output device.

在各種實施例中,關於自主機到達之資料之每一映射單元,向 固態磁碟機之一控制處理器(例如,圖11A中之中央處理單元CPU)通知以下各項中之一或多者:一各別映射單元位址、其中儲存與各別映射單元位址相關聯之資料之一各別局部記憶體位址及/或可變大小(例如,經壓縮)主機資料之每一映射單元之一各別長度。控制處理器經啟用以判定非揮發性記憶體頁之一寫入次序及非揮發性記憶體頁中之每一者中可用之非錯誤校正譯碼位元組之一總數目。根據非揮發性記憶體頁中之一既定者中可用之非錯誤校正譯碼位元組之總數目,控制處理器經啟用以判定放置於該既定非揮發性記憶體頁中之一標頭量及一資料量。舉例而言,控制處理器累加既定非揮發性記憶體頁之標頭(並追蹤迄今為止所使用之標頭之位元組之一數目)並一次一個地將映射單元之可變大小資料及標頭添加至既定非揮發性記憶體頁,直至該既定非揮發性記憶體頁為滿的。當既定非揮發性記憶體頁為滿時,添加至既定非揮發性記憶體頁之映射單元中之一最終者之資料之一最後部分未裝入於既定非揮發性記憶體頁中且用作非揮發性記憶體頁(例如,延續資料640)中之一後續者之一資料結尾部分,從而減少後續非揮發性記憶體頁中可用之非錯誤校正譯碼位元組之總數目,以用於新標頭及資料。 In various embodiments, with respect to each mapping unit of data arriving from the host, One of the solid state drives control processor (eg, the central processing unit CPU in FIG. 11A) notifies one or more of the following: a respective mapping unit address in which the storage is associated with the respective mapping unit address One of the associated data addresses and/or variable size (eg, compressed) one of each mapping unit of each of the mapping units. The control processor is enabled to determine a total number of non-erroneously corrected decoded byte groups available in one of the non-volatile memory page write order and each of the non-volatile memory pages. The control processor is enabled to determine the amount of headers placed in the predetermined non-volatile memory page based on the total number of non-erroneously corrected decoded byte groups available in one of the non-volatile memory pages And a quantity of information. For example, the control processor accumulates the header of the predetermined non-volatile memory page (and tracks the number of bytes of the header used so far) and maps the variable size data and the label of the unit one at a time. The header is added to a predetermined non-volatile memory page until the predetermined non-volatile memory page is full. When the predetermined non-volatile memory page is full, one of the data of one of the finalizers added to the mapping unit of the predetermined non-volatile memory page is not loaded in the predetermined non-volatile memory page and is used as The end of the data of one of the non-volatile memory pages (eg, continuation data 640), thereby reducing the total number of non-erroneously corrected decoding bytes available in subsequent non-volatile memory pages for use New headers and information.

在某些實施例中,在一特定時間點處,零個或零個以上非揮發性記憶體頁經啟用以用主機寫入資料填充且零個或零個以上非揮發性記憶體頁經啟用以用經回收資料填充。舉例而言,可分別填充至少兩個帶(例如,類FIFO系列之冗餘區塊),一個帶用「熱」資料(例如,剛自主機而來)填充且另一帶用「冷」資料(例如,經回收)填充,且將零個或零個以上非揮發性記憶體頁之有用空間自一緩衝器分配至每一帶。繼續該實例,在各種實施例中,主機寫入資料視情況及/或選擇性地經啟用以被引導至熱帶或冷帶中,且經回收資料視情況及/或選擇性地經啟用以被引導至熱帶或冷帶中。 In some embodiments, at a particular point in time, zero or more non-volatile memory pages are enabled to be filled with host write data and zero or more non-volatile memory pages are enabled It is filled with recycled data. For example, at least two bands (eg, redundant blocks of the FIFO-like series) can be filled separately, one with "hot" data (eg, just from the host) and the other with "cold" data ( For example, it is reclaimed) and the useful space of zero or more non-volatile memory pages is allocated from one buffer to each band. Continuing with the example, in various embodiments, the host writes data as appropriate and/or selectively enabled to be directed into the tropics or cold strips, and the recovered data is optionally enabled and/or selectively enabled to be Guide to a tropical or cold zone.

在某些實施例中,控制處理器經啟用以將一系列之各別映射單元位址、局部記憶體位址及各別長度轉換成以下各項中之一或多者:待寫入至一非揮發性記憶體頁而作為非揮發性記憶體頁之一標頭部分之一系列標頭;待寫入至非揮發性記憶體頁而作為非揮發性記憶體頁之一使用者資料部分之局部記憶體之一循序部分之一第一開始位址及一第一長度,該非揮發性記憶體頁之使用者資料部分包括至少一個映射單元之資料之至少一部分;待寫入至一後續非揮發性記憶體頁而作為後續非揮發性記憶體頁之一使用者資料結尾部分之局部記憶體之一循序部分之一第二開始位址及一第二長度,該使用者資料結尾部分包括一個映射單元之資料之一部分或為空的;待寫入至非揮發性記憶體頁之零個或零個以上填補位元組之一數目,其中舉例而言,在使用者資料結尾部分為空且非揮發性記憶體頁不滿之情況下使用填補位元組。有利地,控制處理器經啟用以藉由重新格式化而簡單地將該系列之各別映射單元位址、各別局部記憶體位址及各別長度轉換成該系列之標頭並產生將構成非揮發性記憶體頁之部分(該系列之標頭、一先前非揮發性記憶體頁之一結尾部分、使用者資料部分及任何填補位元組)傳送至非揮發性記憶體之小數目個直接記憶體存取(例如,DMA)命令。 In some embodiments, the control processor is enabled to convert a series of respective mapping unit addresses, local memory addresses, and respective lengths into one or more of the following: to be written to a non- Volatile memory page as a series of headers in one of the header parts of a non-volatile memory page; part of the user data portion to be written to a non-volatile memory page as a non-volatile memory page a first start address and a first length of one of the sequential portions of the memory, the user data portion of the non-volatile memory page including at least a portion of the data of the at least one mapping unit; to be written to a subsequent non-volatile The memory page is a second start address and a second length of one of the partial memories of the local memory at the end of the user data of the subsequent non-volatile memory page, and the end portion of the user data includes a mapping unit One of the pieces of data is either empty; the number of zero or more padding bytes to be written to the non-volatile memory page, for example, at the end of the user data Use to fill and empty bytes in the case of non-volatile memory page discontent. Advantageously, the control processor is enabled to simply convert the respective mapping unit address, the respective local memory address and the respective length of the series into a header of the series by reformatting and generate a non-form The fraction of the volatile memory page (the header of the series, the end of a previous non-volatile memory page, the user data portion, and any padding bytes) is transferred to a small number of non-volatile memory directly Memory access (eg, DMA) commands.

在各種實施例中,視情況及/或選擇性地啟用主機寫入資料之壓縮。在一實例中,主機寫入命令之資訊選擇性地啟用壓縮。在另一實例中,依據主機寫入命令之一邏輯區塊位址(或標籤)來選擇性地啟用壓縮。在又一實例中,若主機寫入資料之壓縮未曾減小主機寫入資料之一大小,則選擇性地停用壓縮。若不啟用壓縮,則主機寫入資料未壓縮地被儲存。根據各種實施例,映射之項目藉由以下各項中之一或多者指示對應資料係經壓縮還是未壓縮:映射之每一項目中之一各別位元;及/或儲存於每一映射項目中之長度之一值。舉例而言,若 映射單元為4KB,則映射項目中為4KB之一長度指示一映射項目之相關聯資料係未壓縮的,而小於4KB之一長度指示相關聯資料係經壓縮的。在某些實施例及/或使用情景中,與主機寫入資料之所儲存之視情況及/或選擇性地經壓縮版本相關聯之一標頭規定所儲存主機寫入資料是否係經壓縮的。 In various embodiments, compression of host write data is optionally enabled and/or selectively enabled. In an example, the information of the host write command selectively enables compression. In another example, compression is selectively enabled in accordance with one of the host write commands, a logical block address (or tag). In yet another example, if the compression of the host write data has not reduced the size of one of the host write data, the compression is selectively disabled. If compression is not enabled, the host writes the data uncompressed. According to various embodiments, the mapped item indicates whether the corresponding data is compressed or uncompressed by one or more of: mapping each of the individual bits; and/or storing each mapping One of the lengths in the project. For example, if The mapping unit is 4 KB, and a length of 4 KB in the mapping item indicates that the associated data of a mapping item is uncompressed, and a length of less than 4 KB indicates that the associated data is compressed. In some embodiments and/or usage scenarios, a header associated with the stored condition of the host write data and/or optionally the compressed version specifies whether the stored host write data is compressed. .

在某些實施例中,藉由以下操作來使資料回收:選擇待回收之一冗餘區塊、以寫入冗餘區塊之非揮發性記憶體頁之一次序來讀取該等非揮發性記憶體頁、僅僅處理含有非揮發性記憶體頁之標頭之讀取單元、在映射中查找為一資料標頭之每一標頭之一邏輯區塊位址(或等效地,一映射單元位址或標籤)以查看資料是否仍有效,及若資料仍有效,則建構適當之新標頭及DMA命令以將待回收之資料組合為一新非揮發性記憶體頁之部分。然後將新非揮發性記憶體頁寫入至非揮發性記憶體。 In some embodiments, the data is recovered by selecting one of the redundant blocks to be recovered, reading the non-volatile memory pages in the order of the redundant blocks, and reading the non-volatile Memory page, only the read unit that contains the header of the non-volatile memory page, and one of the logical block addresses of each header in the map as a data header (or equivalently, one Map the unit address or label to see if the data is still valid, and if the data is still valid, construct an appropriate new header and DMA command to combine the data to be recovered into a new non-volatile memory page. The new non-volatile memory page is then written to the non-volatile memory.

參考圖11A,其展示一固態磁碟機控制器1100之一實施例之選定細節之一圖解。在某些實施例中,固態磁碟機控制器1100經啟用以(諸如)藉由與主機協作實施快閃轉變層而實施一或多個快閃轉變層或其部分。在各種實施例中,控制器1100可實施為一或多個積體電路。 Referring to Figure 11A, an illustration of one of the selected details of one embodiment of a solid state disk drive controller 1100 is shown. In some embodiments, the solid state disk drive controller 1100 is enabled to implement one or more flash transition layers or portions thereof, such as by implementing a flash transition layer in cooperation with a host. In various embodiments, controller 1100 can be implemented as one or more integrated circuits.

如圖11A中所圖解說明,固態磁碟機控制器1100之一輸入/輸出接收器(諸如一SerDes(例如,串列化器/解串列化器))經由外部介面1111耦合至一主機。一主機介面(例如,HIF)經由SerDes接收命令(諸如讀取及寫入命令)、接收寫入資料及發送讀取資料。經由一共用記憶體(例如,OpRAM)將命令發送至一中央處理單元。中央處理單元解譯該等命令且經由共用記憶體控制固態磁碟機控制器之其他部分。舉例而言,中央處理單元經由共用記憶體將DMA命令傳遞至各種資料路徑傳輸及接收單元(諸如主機資料路徑接收分段(例如,HDRx)或快閃資料路徑傳輸分段(例如,FDTx))並自該等資料路徑傳輸及接收單 元接收回應。 As illustrated in FIG. 11A, one of the input/output receivers of the solid state drive controller 1100, such as a SerDes (eg, a serializer/deserializer), is coupled to a host via an external interface 1111. A host interface (eg, HIF) receives commands (such as read and write commands) via SerDes, receives write data, and sends read data. The commands are sent to a central processing unit via a shared memory (eg, OpRAM). The central processing unit interprets the commands and controls other portions of the solid state drive controller via the shared memory. For example, the central processing unit communicates DMA commands to various data path transmission and reception units via shared memory (such as host data path receive segments (eg, HDRx) or flash data path transport segments (eg, FDTx)) And transmitting and receiving orders from such data paths The yuan receives the response.

經由主機資料路徑接收分段(例如,HDRx)將來自主機介面之寫入資料傳送至統一緩衝器(例如,UBUF)。在各種實施例中,主機資料路徑接收分段包含用以視情況及/或選擇性地壓縮及/或加密主機寫入資料之邏輯。然後經由一快閃資料路徑傳輸分段及一泛用快閃介面(例如,GAFI)將視情況及/或選擇性地經壓縮及/或經加密之主機寫入資料自統一緩衝器發送至非揮發性記憶體。在各種實施例中,快閃資料路徑傳輸分段包含用以執行加密及/或擾碼及/或錯誤校正編碼之邏輯。回應於主機讀取命令,經由泛用快閃介面自非揮發性記憶體讀取資料並經由一快閃資料路徑接收分段(例如,FDRx)將該資料發送至統一緩衝器。在各種實施例中,快閃資料路徑接收分段併入有錯誤校正解碼及/或解密及/或解擾。在其他實施例中,一單獨錯誤校正解碼器(例如,用以實施LDPC碼之LDPC-D)經啟用以對藉由快閃資料路徑接收分段儲存於統一緩衝器中之「原始」資料進行操作。然後經由一主機資料路徑傳輸分段(例如,HDTx)將統一緩衝器中之經解碼讀取資料發送至主機介面。在各種實施例中,主機資料路徑傳輸分段包含用以視情況及/或選擇性地將經解碼讀取資料解密及/或解壓縮之邏輯。在某些實施例中,一類RAID及軟決策處理單元(例如,RASP)經啟用以產生類RAID冗餘以另外保護儲存於非揮發性記憶體中之主機寫入資料及/或系統資料及/或執行軟決策處理操作以供與LDPC-D一起使用。 A segment (eg, HDRx) is received via the host data path to transfer write data from the host interface to a unified buffer (eg, UBUF). In various embodiments, the host data path receive segment includes logic to conditionally and/or selectively compress and/or encrypt host write data. Then, via a flash data path transmission segment and a general flash interface (eg, GAFI), the optionally and/or optionally compressed and/or encrypted host write data is sent from the unified buffer to the non-volatile buffer. Volatile memory. In various embodiments, the flash data path transmission segment includes logic to perform encryption and/or scrambling and/or error correction coding. In response to the host read command, the data is read from the non-volatile memory via the general flash interface and the segment is received via a flash data path (eg, FDRx) to the unified buffer. In various embodiments, the flash data path receive segment incorporates error correction decoding and/or decryption and/or descrambling. In other embodiments, a separate error correction decoder (eg, LDPC-D for implementing the LDPC code) is enabled to receive "original" data stored in the unified buffer by the flash data path. operating. The decoded read data in the unified buffer is then sent to the host interface via a host data path transport segment (eg, HDTx). In various embodiments, the host data path transport segment includes logic to decrypt and/or decompress the decoded read data as appropriate and/or selectively. In some embodiments, a type of RAID and soft decision processing unit (eg, RASP) is enabled to generate RAID-like redundancy to additionally protect host write data and/or system data stored in non-volatile memory and/or Or perform soft decision processing operations for use with LDPC-D.

根據各種實施例,固態磁碟機控制器經啟用以不實施一或多個快閃轉變層、實施一或多個快閃轉變層中之某些快閃轉變層、全部快閃轉變層或實施一或多個快閃轉變層之部分。在一實例中,在主機上執行快閃轉變層之一較高層次映射部分,且在固態磁碟機控制器中執行快閃轉變層之一較低層次映射部分。在另一實例中,固態磁碟機控 制器將抽象實體單元位址(諸如讀取單元位址及跨度)發送至主機且自主機接收抽象實體單元位址(諸如讀取單元位址及跨度),且主機將邏輯區塊位址(或標籤)映射至抽象實體單元位址。固態磁碟機控制器經啟用以經由儲存於一標頭中之與抽象實體單元位址相關聯之特定資料之一識別符(諸如一邏輯區塊位址(或標籤))而定位該特定資料。在又一實例中,一邏輯區塊位址(或一標籤)在主機處之映射產生一非揮發性記憶體頁位址、非揮發性記憶體頁內之一位移及一位元組長度。固態磁碟機控制器經啟用以判定待在非揮發性記憶體中存取之若干個讀取單元以擷取一或多個非揮發性記憶體頁內之規定資料。有利地,在實例中之一或多者中,由固態磁碟機控制器維持錯誤校正譯碼之細節(例如,每非揮發性記憶體頁之使用者資料位元組之一數目或讀取單元之一大小),從而減小主機上之額外負擔。 According to various embodiments, the solid state disk drive controller is enabled to not implement one or more flash transition layers, implement some of the one or more flash transition layers, all flash transition layers, or implement Part of one or more flash transition layers. In one example, one of the higher level mapping portions of the flash transition layer is executed on the host and one of the lower level mapping portions of the flash transition layer is executed in the solid state drive controller. In another example, the solid state disk drive The controller sends abstract physical unit addresses (such as read unit addresses and spans) to the host and receives abstract physical unit addresses (such as read unit addresses and spans) from the host, and the host will logical block addresses ( Or label) maps to an abstract physical unit address. The solid state drive controller is enabled to locate the particular data via one of the specific data identifiers (such as a logical block address (or tag)) associated with the abstract physical unit address stored in a header . In yet another example, mapping of a logical block address (or a tag) at the host generates a non-volatile memory page address, a displacement within a non-volatile memory page, and a one-tuple length. The solid state drive controller is enabled to determine a number of read units to be accessed in the non-volatile memory to retrieve specified data in one or more non-volatile memory pages. Advantageously, in one or more of the examples, the details of the error correction decoding are maintained by the solid state drive controller (eg, the number of user data bytes per non-volatile memory page or read) One size of the unit), thereby reducing the extra burden on the host.

參考圖11B,其展示一資料路徑分段之一實施例之選定細節之一圖解。一資料路徑分段1190可圖解說明圖11A之主機資料路徑接收分段或快閃資料路徑傳輸分段。資料路徑分段1190包括一讀取定序器1130、一寫入定序器1140及零個或零個以上資料路徑單元(例如,DPU)。圖11B圖解說明具有兩個資料路徑單元1150-1及1150-2之一實例。 Referring to Figure 11B, an illustration of one of the selected details of one embodiment of a data path segment is shown. A data path segmentation 1190 can illustrate the host data path receive segment or flash data path transport segment of FIG. 11A. Data path segment 1190 includes a read sequencer 1130, a write sequencer 1140, and zero or more data path units (e.g., DPUs). FIG. 11B illustrates an example with one of two data path units 1150-1 and 1150-2.

讀取定序器1130耦合至OpRAM(參見圖11A)以接收規定待讀取/存取之資料之控制資訊。舉例而言,該資訊可為統一緩衝器中之一位址及/或一長度或至一主機介面或泛用快閃介面之一命令且可規定將與資料混雜之命令。讀取定序器1130亦耦合至一讀取器1110以(諸如)自UBUF、主機介面或泛用快閃介面讀取/存取資料。讀取定序器1130經啟用以根據自OpRAM接收之請求而將讀取資料及命令之一交錯串流發送至零個或零個以上資料路徑單元1150-1及1150-2以及一寫入定序器1140。 The read sequencer 1130 is coupled to the OpRAM (see FIG. 11A) to receive control information specifying the data to be read/accessed. For example, the information can be one of the addresses in the unified buffer and/or one length or one of the host interface or the general flash interface command and can specify commands to be mixed with the data. Read sequencer 1130 is also coupled to a reader 1110 to read/access data, such as from a UBUF, a host interface, or a general flash interface. The read sequencer 1130 is enabled to interleave one of the read data and the command to zero or more data path units 1150-1 and 1150-2 and a write set according to the request received from the OpRAM. Sequencer 1140.

寫入定序器1140經啟用以接收由讀取定序器1130發送之資料及命令之一交錯串流。寫入定序器1140耦合至一寫入器1120以將資料寫入(諸如)至UBUF、主機介面或泛用快閃介面。該資料係根據由寫入定序器1140接收之資料串流中之命令(諸如藉由規定一位址及/或一長度之命令)而寫入。寫入定序器1140亦耦合至OpRAM(參見圖11A)以根據所接收命令而發送關於已寫入之資料之狀態資訊。舉例而言,將狀態資訊寫入至OpRAM中以指示寫入資料串流之一規定部分(例如,一個4KB映射單元)之結尾。 Write sequencer 1140 is enabled to receive an interleaved stream of data and commands transmitted by read sequencer 1130. Write sequencer 1140 is coupled to a writer 1120 to write data, such as to a UBUF, a host interface, or a general flash interface. The data is written in accordance with commands in the data stream received by the write sequencer 1140, such as by specifying a single address and/or a length command. Write sequencer 1140 is also coupled to the OpRAM (see FIG. 11A) to transmit status information regarding the data that has been written in accordance with the received command. For example, state information is written to the OpRAM to indicate the end of a specified portion of a write data stream (eg, a 4 KB mapping unit).

資料路徑單元1150-1及1150-2經啟用以在資料於讀取定序器1130與寫入定序器1140之間行進時變換資料。資料串流中之由讀取定序器1130產生之命令視情況及/或選擇性地旨在由資料路徑單元1150-1及1150-2或寫入定序器1140中之一或多者接收。資料路徑單元1150-1及1150-2之實例包含: Data path units 1150-1 and 1150-2 are enabled to transform data as it travels between read sequencer 1130 and write sequencer 1140. The commands generated by the read sequencer 1130 in the data stream are optionally and/or optionally intended to be received by one or more of the data path units 1150-1 and 1150-2 or the write sequencer 1140. . Examples of data path units 1150-1 and 1150-2 include:

-一加密單元,其接收包括待用於加密之salt(初始化向量)之一命令且根據該salt而將接續之資料加密。在其他實施例中,命令亦包括一加密密鑰之一規格。 An encryption unit that receives a command including a salt (initialization vector) to be used for encryption and encrypts the connected data according to the salt. In other embodiments, the command also includes a specification of an encryption key.

-一解密單元,其接收包括待用於解密之salt(初始化向量)之一命令且根據該salt而將接續之資料解密。在其他實施例中,命令亦包括一解密密鑰之一規格。 a decryption unit that receives a command including a salt (initialization vector) to be used for decryption and decrypts the succeeding data according to the salt. In other embodiments, the command also includes a specification of a decryption key.

-一壓縮單元,其接收指示一壓縮單元(例如,映射單元)邊界之一開始之一命令且壓縮接續之資料。在各種實施例中,命令亦包括將壓縮為一單元之一資料量、一壓縮類型、用於壓縮之一最大運行時間及其他壓縮控制中之一或多者。 a compression unit that receives a command indicating one of the boundaries of a compression unit (e.g., mapping unit) and compresses the contiguous material. In various embodiments, the command also includes one or more of compressing into one of a unit of data amount, a compression type, one of compression for maximum runtime, and other compression controls.

-一解壓縮單元,其接收指示一壓縮單元邊界之一開始之一命令且將接續之資料解壓縮。在各種實施例中,命令亦包括將解壓縮為一單元之一資料量、經解壓縮資料之一預期大小、解壓縮之一類型、用 於解壓縮之一最大運行時間及其他解壓縮控制中之一或多者。 a decompression unit that receives a command indicating one of the boundaries of a compression unit and decompresses the contiguous data. In various embodiments, the command also includes decompressing one of a unit of data, an expected size of the decompressed data, decompressing one type, and using Decompress one or more of one of the maximum runtimes and other decompression controls.

-一循環冗餘檢查(例如,CRC)單元,其接收包括待用於運算一循環冗餘檢查值之salt(初始化向量)之一命令且根據該salt而運算接續之資料內之一循環冗餘檢查值。在其他實施例中,命令視情況及/或選擇性地使得循環冗餘檢查單元能夠將一先前所運算循環冗餘檢查值附加至由循環冗餘檢查值覆蓋之先前所接收資料。 a cyclic redundancy check (e.g., CRC) unit that receives a command including one of a salt (initialization vector) to be used for computing a cyclic redundancy check value and calculates a cyclical redundancy within the data according to the salt Check the value. In other embodiments, the command optionally and/or selectively enables the cyclic redundancy checking unit to append a previously computed cyclic redundancy check value to previously received data covered by the cyclic redundancy check value.

-一錯誤校正編碼及/或解碼單元,其接收包括一碼率之一命令且根據彼碼率之一錯誤校正碼而編碼及/或解碼接續之資料。在其他實施例中,命令視情況及/或選擇性地包括額外控制,諸如軟決策處理資訊、待使用之最大數目次反覆及其他編碼器及/或解碼器控制資訊。 An error correction coding and/or decoding unit that receives a command including one of the code rates and encodes and/or decodes the contiguous data based on one of the bit rate error correction codes. In other embodiments, the commands include additional controls, such as soft decision processing information, maximum number of times to be used, and other encoder and/or decoder control information, as appropriate and/or selectively.

在一實例操作中,回應於自一主機接收一寫入命令,用於主機資料路徑接收分段之一讀取定序器之一命令列表由中央處理單元建構,且根據該命令列表,主機資料路徑接收分段經啟用以經由主機介面將該寫入命令之寫入資料自主機傳輸至統一緩衝器。主機資料路徑接收分段中之一資料路徑單元經啟用以在(經壓縮)寫入資料寫入至統一緩衝器之前壓縮該寫入資料。多個(經壓縮)映射單元經啟用以緊密地緊縮於統一緩衝器中而無浪費之空間。藉由(經壓縮)映射單元中之每一者之位置及大小之寫入至OpRAM(經由主機資料路徑接收分段之一寫入定序器)之狀態資訊而通知中央處理單元。中央處理單元經啟用以根據狀態資訊而建構標頭且判定填充一個非揮發性記憶體頁之標頭及(經壓縮)映射單元之一量。中央處理單元進一步經啟用以建構用於快閃資料路徑傳輸分段之一讀取定序器之一命令列表以將標頭及資料之非揮發性記憶體頁傳輸至非揮發性記憶體。快閃資料路徑傳輸分段中之一資料路徑單元經啟用以編碼正發送至非揮發性記憶體之標頭及資料,從而將用於錯誤校正譯碼保護之額外位元組添加至複數個讀 取單元中之每一者。在自快閃資料路徑傳輸分段之一寫入定序器接收到完成NVM頁寫入之狀態後,即刻可收回(可重新使用)統一緩衝器中之由(經壓縮)映射單元所使用之空間。 In an example operation, in response to receiving a write command from a host, a command list for reading one of the host data path receiving segments is constructed by the central processing unit, and according to the command list, the host data The path receive segment is enabled to transfer the write data of the write command from the host to the unified buffer via the host interface. One of the data path receiving segments of the host data path is enabled to compress the write data before the (compressed) write data is written to the unified buffer. Multiple (compressed) mapping units are enabled to tightly shrink into the unified buffer without wasted space. The central processing unit is notified by (compressed) the status information of the location and size of each of the mapping units to the OpRAM (which receives the segment write sequencer via the host data path). The central processing unit is enabled to construct a header based on the status information and to determine the amount of the header and (compressed) mapping unit that fills a non-volatile memory page. The central processing unit is further enabled to construct a command list for one of the flash sequencer segments to read the sequencer to transfer the non-volatile memory pages of the header and data to the non-volatile memory. One of the data path segments in the flash data path transmission segment is enabled to encode the header and data being sent to the non-volatile memory, thereby adding additional bytes for error correction decoding protection to the plurality of reads Take each of the units. Immediately retrievable (reusable) from the (compressed) mapping unit in the unified buffer after the write sequencer receives the status of completing the NVM page write from one of the flash data path transfer segments space.

在另一實例操作中,回應於自一主機接收一讀取命令,用於快閃資料路徑接收分段之一讀取定序器之一命令列表由中央處理單元建構,且根據該命令列表,快閃資料路徑接收分段經啟用以經由泛用快閃介面將自非揮發性記憶體讀取之一或多個讀取單元接收至統一緩衝器。在某些實施例中,快閃資料路徑接收分段中之一資料路徑單元經啟用以使用關於每一讀取單元之用於錯誤校正譯碼保護之額外位元組而解碼正發送至非揮發性記憶體之資料。在其他實施例中,錯誤校正經由一單獨資料路徑分段(例如,圖11A中之LDPC-D)而發生。藉由自快閃資料路徑接收分段之一寫入定序器或(在其他實施例中)LDPC-D資料路徑分段之一寫入定序器之接收狀態而將統一緩衝器中之(經校正)資料之接收通知中央處理單元。中央處理單元進一步經啟用以建構用於主機資料路徑傳輸分段之一命令列表以經由主機介面將經校正資料之至少一部分自統一緩衝器傳輸至主機。主機資料路徑傳輸分段中之一資料路徑單元經啟用以在經校正資料傳輸至主機之前解壓縮經校正資料。在自主機資料路徑傳輸分段之一寫入定序器接收到已成功地傳輸經校正資料之狀態後,即刻可收回(可重新使用)統一緩衝器中之由經校正資料所使用之空間。 In another example operation, in response to receiving a read command from a host, a command list for reading one of the flash data path receiving segments is constructed by the central processing unit, and according to the command list, The flash data path receive segment is enabled to receive one or more read units from the non-volatile memory read to the unified buffer via the universal flash interface. In some embodiments, one of the flash data path receiving segments is enabled to use an additional byte for error correction coding protection for each read unit and the decoding is being sent to the non-volatile Information on sexual memory. In other embodiments, error correction occurs via a separate data path segment (eg, LDPC-D in Figure 11A). One of the LDPC-D data path segments is written into the sequencer by one of the fast flash data path receive segments, or (in other embodiments) one of the LDPC-D data path segments is written into the sequencer. The central processing unit is notified of the receipt of the corrected data. The central processing unit is further enabled to construct a command list for the host material path transport segment to transmit at least a portion of the corrected data from the unified buffer to the host via the host interface. One of the host data path transmission segments is enabled to decompress the corrected data before the corrected data is transmitted to the host. The space used by the corrected data in the unified buffer can be reclaimed (reusable) upon receipt of the state in which the corrected sequence data has been successfully transmitted from one of the host data path transmission segments.

參考圖11C,其根據本發明之一實施例而展示系統之各種實施例之選定細節之一圖解。該等實施例通常包含圖11A之固態磁碟機控制器1100之一或多項實例。數個固態磁碟機1101a至1101n通常包含分別經由裝置介面1190a至1190n耦合至非揮發性記憶體1199a至1199n之固態磁碟機控制器1100a至1100n。該圖圖解說明各種類別之實施例:直接耦合至一主機1102之一單個固態磁碟機;各自分別經由各別外部介 面1111a至1111n直接耦合至主機1102之複數個固態磁碟機;及經由各種互連元件間接耦合至主機1102之一或多個固態磁碟機。 Referring to Figure 11C, an illustration of selected details of various embodiments of the system is shown in accordance with an embodiment of the present invention. These embodiments typically include one or more instances of the solid state disk drive controller 1100 of Figure 11A. The plurality of solid state drives 1101a through 1101n typically include solid state disk drive controllers 1100a through 1100n coupled to non-volatile memory 1199a through 1199n via device interfaces 1190a through 1190n, respectively. The figure illustrates various types of embodiments: directly coupled to a single solid state drive of a host 1102; each separately via a respective external medium Faces 1111a through 1111n are directly coupled to a plurality of solid state drives of host 1102; and indirectly coupled to one or more solid state drives of host 1102 via various interconnecting elements.

作為直接耦合至一主機之一單個固態磁碟機之一實例性實施例,固態磁碟機1101a之一項實例經由一外部介面1111a直接耦合至主機1102(例如,省略、繞過或穿過一交換器/網狀架構/中間控制器1103)。作為各自經由各別外部介面直接耦合至一主機之複數個固態磁碟機之一實例性實施例,固態磁碟機1101a至1101n之複數項實例中之每一者分別經由外部介面1111a至1111n之一各別實例直接耦合至主機1102(例如,省略、繞過或穿過交換器/網狀架構/中間控制器1103)。作為經由各種互連元件間接耦合至一主機之一或多個固態磁碟機之一實例性實施例,固態磁碟機1101之一或多項實例中之每一者分別間接耦合至主機1102。每一間接耦合均經由耦合至一交換器/網狀架構/中間控制器1103之外部介面1111a至1111n及耦合至主機1102之一中間介面1104之一各別例項。 As an exemplary embodiment of a single solid state disk drive directly coupled to a host, an example of solid state disk drive 1101a is directly coupled to host 1102 via an external interface 1111a (eg, omitted, bypassed, or passed through a Switch / Mesh Architecture / Intermediate Controller 1103). As an exemplary embodiment of a plurality of solid state drives each directly coupled to a host via a respective external interface, each of the plurality of instances of solid state drives 1101a through 1101n is via external interfaces 1111a through 1111n, respectively. A separate instance is directly coupled to host 1102 (e.g., omitted, bypassed, or passed through switch/mesh architecture/intermediate controller 1103). As an example embodiment of one or more solid state drives indirectly coupled to a host via various interconnecting elements, each of one or more instances of solid state disk drive 1101 is indirectly coupled to host 1102, respectively. Each indirect coupling is via a respective instance coupled to an external interface 1111a through 1111n of a switch/mesh/intermediate controller 1103 and to an intermediate interface 1104 of one of the hosts 1102.

包含交換器/網狀架構/中間控制器1103之實施例中之某些實施例亦包含經由一記憶體介面1180耦合且可由固態磁碟機1101a至1101n及/或由主機1102存取之一卡記憶體1112C。在各種實施例中,一或多個固態磁碟機1101a至1101n、交換器/網狀架構/中間控制器1103及/或卡記憶體1112C包含於一實體可識別模組、卡或可插入元件(例如,輸入/輸出卡1116)上。在某些實施例中,一固態磁碟機1101a至1101n(或其變化形式)對應於耦合至操作為主機1102之一起始器之一串列附接SCSI(例如,SAS)磁碟機或一串列進階技術附接(例如,SATA)磁碟機。 Some of the embodiments including the switch/mesh architecture/intermediate controller 1103 also include a card coupled via a memory interface 1180 and accessible by the solid state drives 1101a through 1101n and/or by the host 1102. Memory 1112C. In various embodiments, one or more solid state drives 1101a through 1101n, switch/mesh/intermediate controller 1103, and/or card memory 1112C are included in a physically identifiable module, card, or pluggable component (for example, input/output card 1116). In some embodiments, a solid state disk drive 1101a through 1101n (or variations thereof) corresponds to a serial attached SCSI (eg, SAS) disk drive or one coupled to one of the initiators operating as one of the hosts 1102. Serial advanced technology attached (eg, SATA) drives.

主機1102經啟用以執行主機軟體1115之各種元件,諸如一作業系統(例如,OS)1105、一驅動程式1107、一應用程式1109及一多裝置管理軟體1114之各種組合。一虛線箭頭1107D表示主機軟體與輸入/ 輸出裝置之間的雙向通信(例如,經由驅動程式1107及應用程式1109(經由驅動程式1107或直接作為一(例如,PCIe)虛擬函數(例如,VF))將資料自作業系統1105中之任何一或多者發送至固態磁碟機1101a至1101n之實例中之一或多者及將資料自固態磁碟機1101a至1101n之實例中之一或多者接收至作業系統1105中之任何一或多者)。 The host 1102 is enabled to execute various components of the host software 1115, such as a combination of an operating system (eg, OS) 1105, a driver 1107, an application 1109, and a multi-device management software 1114. A dashed arrow 1107D indicates host software and input / Two-way communication between the output devices (eg, via the driver 1107 and the application 1109 (via the driver 1107 or directly as a (eg, PCIe) virtual function (eg, VF)) to feed data from any of the operating systems 1105 Or one or more of the instances sent to the solid state drives 1101a through 1101n and one or more of the data received from one or more of the instances of the solid state drives 1101a through 1101n to any one or more of the operating systems 1105 By).

在某些實施例及/或使用情景中,主機軟體1115包含與固態磁碟機1101a至1101n一起使用之一快閃轉變層中之某些快閃轉變層、全部快閃轉變層或部分。在一實例中,在各種實施例中,驅動程式1107實施與固態磁碟機1101a至1101n一起使用之快閃轉變層之至少一部分。在另一實例中,在各種實施例中,多裝置管理軟體1114實施與固態磁碟機1101a至1101n一起使用之快閃轉變層之至少一部分。 In certain embodiments and/or usage scenarios, host software 1115 includes some of the flash transition layers, all of the flash transition layers, or portions of one of the flash transition layers used with solid state drives 1101a through 1101n. In one example, in various embodiments, the driver 1107 implements at least a portion of the flash transition layer for use with the solid state drives 1101a through 1101n. In another example, in various embodiments, the multi-device management software 1114 implements at least a portion of the flash transition layer for use with the solid state drives 1101a through 1101n.

作業系統1105包含用於與固態磁碟機1101a至1101n介接之驅動程式(由驅動程式1107概念性地圖解說明)及/或經啟用而以該等驅動程式進行操作。Windows之各種版本(例如,95、98、ME、NT、XP、2000、Server、Vista、7及8)、Linux之各種版本(例如,Red Hat、Debian及Ubuntu)及MacOS之各種版本(例如,8、9及X)係作業系統1105之實例。在各種實施例中,驅動程式係可搭配一標準介面及/或協定(諸如SATA)、先進主機控制器介面(例如,AHCI)或NVM Express操作之標準及/或泛用驅動程式(有時稱為「現成套裝(shrink-wrapped)」或「預安裝」)或係視情況定製的及/或供應商特有的以使得能夠使用固態磁碟機1101a至1101n特有之命令及/或快閃轉變層。某些磁碟機及/或驅動程式具有直通模式以經由最佳NAND存取(有時稱為ONA)或直接NAND存取(有時稱為DNA)技術啟用應用程式層次程式(諸如一應用程式1109)以將命令直接傳遞至固態磁碟機1101a至1101n,從而使得一定製應用程式能夠甚至與一泛用驅動程式一起使用固態磁碟機1101a至1101n特有之命令及/或快閃轉變層。ONA技術 包含以下各項中之一或多者:非標準修飾符(提示)之使用;供應商獨特命令之使用;非標準統計資料之傳遞,諸如根據壓縮能力之實際非揮發性記憶體使用;快閃轉變層特有協定之使用,諸如傳遞讀取單元位址及跨度或諸如傳遞非揮發性記憶體頁位址、位移及位元組長度;及其他技術。DNA技術包含以下各項中之一或多者:提供對非揮發性記憶體之未經映射讀取、寫入及/或抹除存取之非標準命令或供應商獨特命令之使用;諸如藉由繞過輸入/輸出裝置原本將進行之資料之格式化來提供對非揮發性記憶體之更直接存取之非標準或供應商獨特命令之使用;及其他技術。驅動程式之實例係不支援ONA或DNA之一驅動程式、一啟用ONA之驅動程式、一啟用DNA之驅動程式及一啟用ONA/DNA之驅動程式。驅動程式之其他實例係一供應商提供、供應商開發及/或供應商增強之驅動程式及一用戶端提供、用戶端開發及/或用戶端增強之驅動程式。 The operating system 1105 includes drivers for interfacing with the solid state drives 1101a through 1101n (illustrated conceptually by the driver 1107) and/or enabled to operate with the drivers. Various versions of Windows (eg, 95, 98, ME, NT, XP, 2000, Server, Vista, 7 and 8), various versions of Linux (for example, Red Hat, Debian, and Ubuntu) and various versions of MacOS (for example, 8, 9 and X) are examples of operating system 1105. In various embodiments, the driver can be paired with a standard interface and/or protocol (such as SATA), advanced host controller interface (eg, AHCI) or NVM Express operating standard and/or general purpose drivers (sometimes called Customized and/or vendor-specific for "shrink-wrapped" or "pre-installed" to enable use of commands and/or flash transitions specific to solid state drives 1101a through 1101n Floor. Some drives and/or drivers have a pass-through mode to enable application-level programs (such as an application) via optimal NAND access (sometimes referred to as ONA) or direct NAND access (sometimes referred to as DNA) technology. 1109) to pass commands directly to the solid state drives 1101a through 1101n, thereby enabling a custom application to use commands and/or flash transition layers specific to the solid state drives 1101a through 1101n even with a general purpose driver. ONA technology Contains one or more of the following: use of non-standard modifiers (prompts); use of vendor-unique commands; delivery of non-standard statistics, such as actual non-volatile memory usage based on compression capabilities; flash Use of transition layer specific protocols, such as passing read unit address and span or such as passing non-volatile memory page address, displacement, and byte length; and other techniques. DNA technology includes one or more of the following: providing non-standard commands for non-mapping read, write, and/or erase access to non-volatile memory or the use of vendor-specific commands; The use of non-standard or vendor-specific commands that provide more direct access to non-volatile memory by formatting the data that would otherwise be performed by the input/output device; and other techniques. The driver example does not support one of ONA or DNA drivers, an ONA enabled driver, a DNA enabled driver, and an ONA/DNA enabled driver. Other examples of drivers are vendor-provided, vendor-developed and/or vendor-enhanced drivers and a client-side, client-side development and/or client-side driver.

應用程式層次程式之實例係不支援ONA或DNA之一應用程式、一啟用ONA之應用程式、一啟用DNA之應用程式及一啟用ONA/DNA之應用程式。一虛線箭頭1109D表示一應用程式與用於一應用程式(例如,一啟用ONA之應用程式及一例如在不具有應用程式之情況下使用作業系統作為一中間件與一固態磁碟機通信之一啟用ONA之驅動程式)之一輸入/輸出裝置(諸如,經由一驅動程式之旁路或經由一虛擬函數之旁路)之間的雙向通信。一虛線箭頭1109V表示一應用程式與用於一應用程式(例如,一啟用DNA之應用程式及諸如在不具有應用程式之情況下使用作業系統或驅動程式作為中間件與一固態磁碟機通信之一啟用DNA之驅動程式)之一輸入/輸出裝置(例如,經由一虛擬函數之旁路)之間的雙向通信。 An example of an application hierarchy program is one that does not support ONA or DNA applications, an ONA enabled application, a DNA enabled application, and an ONA/DNA enabled application. A dashed arrow 1109D indicates an application and one of the applications (for example, an ONA-enabled application and one of the communication systems using the operating system as a middleware and a solid-state drive without an application) Two-way communication between one of the input/output devices (such as bypassing via a driver or bypassing via a virtual function) is enabled for the ONA driver. A dashed arrow 1109V indicates an application to communicate with an application (eg, a DNA-enabled application and, for example, using an operating system or driver as a middleware to communicate with a solid-state drive without an application) Two-way communication between one of the input/output devices (eg, via a bypass of a virtual function) of a DNA-enabled driver.

在某些實施例中,非揮發性記憶體1199a至1199n之一或多個部分用於韌體儲存裝置(例如,韌體1106a至1106n)。韌體儲存裝置包含一 或多個韌體影像(或其部分)。舉例而言,一韌體影像具有(例如,由固態磁碟機控制器1100a至1100n之中央處理單元)所執行之韌體之一或多個影像。對於另一實例,一韌體影像具有(舉例而言)由中央處理單元在韌體執行期間參考之常數、參數值及非揮發性記憶體裝置資訊之一或多個影像。舉例而言,韌體之影像對應於一當前韌體影像及零個或零個以上先前(相對於韌體更新)韌體影像。在各種實施例中,韌體提供泛用、標準、ONA及/或DNA操作模式並且與一或多個快閃轉變層一起操作。在某些實施例中,啟用韌體操作模式中之一或多者(例如,經由視情況由一驅動程式傳遞及/或提供之密鑰或各種軟體技術來「解鎖」一或多個應用程式介面(例如,API))。在其他實施例中,韌體影像中之不同者用於操作模式中之不同者及/或快閃轉變層中之不同者。 In some embodiments, one or more portions of non-volatile memory 1199a through 1199n are used for firmware storage devices (eg, firmware 1106a through 1106n). The firmware storage device includes a Or multiple firmware images (or parts thereof). For example, a firmware image has one or more images of firmware (eg, by a central processing unit of the solid state disk drive controllers 1100a through 1100n). For another example, a firmware image has, for example, one or more images of constants, parameter values, and non-volatile memory device information that are referenced by the central processing unit during firmware execution. For example, the image of the firmware corresponds to a current firmware image and zero or more previous (relative to firmware update) firmware images. In various embodiments, the firmware provides a general purpose, standard, ONA, and/or DNA mode of operation and operates with one or more flash transition layers. In some embodiments, one or more of the firmware operating modes are enabled (eg, "unlocking" one or more applications via a key or various software technologies that are optionally transmitted and/or provided by a driver. Interface (for example, API)). In other embodiments, different ones of the firmware images are used for different ones of the operational modes and/or different ones of the flash transition layers.

在某些實施例中,主機1102包含作為實施一映射之一不同硬體資源之一映射1108。在其他實施例中,一映射部分地或完全地經由映射1108及/或一主機記憶體1112H及/或經由固態磁碟機控制器1100中之一映射1141及/或經由卡記憶體1112C而實施。映射1108、主機記憶體1112H、固態磁碟機控制器1100中之映射1141及卡記憶體1112C之實例係(諸如)經由DRAM、SRAM及/或快閃或其他非揮發性記憶體裝置而實施之一或多個揮發性及/或非揮發性記憶體元件。主機記憶體之其他實例係系統記憶體、主機主記憶體、主機快取記憶體、主機可存取記憶體及輸入/輸出裝置可存取記憶體。在某些實施例及/或使用情景(諸如具有一輸入/輸出卡1116且使用圖11C之選用卡記憶體1112C作為儲存裝置(針對映射之至少一部分)之某些實施例)中,一或多個輸入/輸出裝置及/或主機1102存取卡記憶體1112C中之映射。 In some embodiments, host 1102 includes one mapping 1108 of one of the different hardware resources as one of the implementation maps. In other embodiments, a mapping is implemented partially or completely via mapping 1108 and/or a host memory 1112H and/or via one of solid state disk drive controllers 1100 and/or via card memory 1112C. . Mapping 1108, host memory 1112H, mapping 1141 in solid state drive controller 1100, and instances of card memory 1112C are implemented, for example, via DRAM, SRAM, and/or flash or other non-volatile memory devices. One or more volatile and/or non-volatile memory components. Other examples of host memory are system memory, host main memory, host cache memory, host accessible memory, and input/output devices that can access memory. In certain embodiments and/or usage scenarios, such as some embodiments having an input/output card 1116 and using the card memory 1112C of FIG. 11C as a storage device (for at least a portion of the mapping), one or more The input/output devices and/or host 1102 access the mapping in card memory 1112C.

在各種實施例中,主機1102及/或固態磁碟機1101之實例中之一或多者經啟用以存取映射1108、主機記憶體1112H、卡記憶體1112C 及/或映射1141以保存並擷取可用於將邏輯區塊位址(或其他區分符,諸如標籤)轉換為以一輸入/輸出裝置非揮發性記憶體之一或多個部分(諸如非揮發性記憶體1199a至1199n之實例中之一或多者之元件)為目標之非揮發性記憶體位置(諸如區塊及/或頁位址及/或讀取單元位址)之映射資訊之全部或任何部分。概念性地,可存在一單個映射,且根據各種實施例,映射之控制及/或儲存及/或使用由主機1102中之一或多者及/或由固態磁碟機控制器1100a至1100n提供。 In various embodiments, one or more of the instances of host 1102 and/or solid state disk drive 1101 are enabled to access mapping 1108, host memory 1112H, card memory 1112C And/or mapping 1141 to save and retrieve can be used to convert a logical block address (or other specifier, such as a tag) into one or more portions of a non-volatile memory of an input/output device (such as non-volatile All of the elements of one or more of the instances of the memory 1199a through 1199n) are all mapping information for the target non-volatile memory location (such as block and/or page address and/or read unit address) Or any part. Conceptually, there may be a single mapping, and according to various embodiments, the control and/or storage and/or use of mapping is provided by one or more of the hosts 1102 and/or by the solid state disk drive controllers 1100a through 1100n. .

在缺少交換器/網狀架構/中間控制器1103之某些實施例中,固態磁碟機1101a至1101n經由外部介面1111a至1111n直接耦合至主機1102。在各種實施例中,固態磁碟機控制器1100a至1100n經由其他控制器(諸如一RAID控制器或一輸入/輸出控制器)之一或多個中間層次耦合至主機1102。在某些實施例中,固態磁碟機1101a至1101n(或其變化形式)對應於一SAS磁碟機或一SATA磁碟機,且交換器/網狀架構/中間控制器1103對應於一擴充器,該擴充器又耦合至一起始器,或替代地,交換器/網狀架構/中間控制器1103對應於一橋接器,該橋接器經由一擴充器間接耦合至一起始器。在某些實施例中,交換器/網狀架構/中間控制器1103包含一或多個PCIe交換器及/或網狀架構。 In some embodiments lacking the switch/mesh architecture/intermediate controller 1103, the solid state drives 1101a through 1101n are directly coupled to the host 1102 via external interfaces 1111a through 1111n. In various embodiments, solid state disk drive controllers 1100a through 1100n are coupled to host 1102 via one or more intermediate levels of other controllers, such as a RAID controller or an input/output controller. In some embodiments, the solid state drives 1101a through 1101n (or variations thereof) correspond to a SAS disk drive or a SATA disk drive, and the switch/mesh architecture/intermediate controller 1103 corresponds to an expansion The expander is in turn coupled to an initiator, or alternatively, the switch/mesh/intermediate controller 1103 corresponds to a bridge that is indirectly coupled to an initiator via an expander. In some embodiments, the switch/mesh architecture/intermediate controller 1103 includes one or more PCIe switches and/or mesh architectures.

在各種實施例中,諸如其中主機1102作為一運算主機(例如,一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一個人電腦、一膝上型電腦、一筆記型電腦、一迷你筆記型電腦及/或一平板電腦)之實施例中之某些實施例,運算主機視情況經啟用以與一或多個本端及/或遠端伺服器(例如,選用伺服器1118)通信(例如,經由選用輸入/輸出及儲存裝置/資源1117及選用區域網路/廣域網路(例如,LAN/WAN)1119)。舉例而言,該通信達成固態磁碟機元件中之任何一或多者之本端及/或遠端存取、管理及/或使用。在某些實施例中,該通信完全地或部分地經由乙太網路。在某些實施例中,該通信完全 地或部分地經由光纖通道。在各種實施例中,區域網路/廣域網路1119表示一或多個區域網路及/或廣域網路,諸如一伺服器陣列中之一網路、耦合伺服器陣列之一網路、一都會區網路及網際網路中之任何一或多者。 In various embodiments, such as where the host 1102 acts as a computing host (eg, a computer, a workstation computer, a server computer, a storage server, a personal computer, a laptop, a notebook, a mini In some embodiments of the notebook computer and/or a tablet computer, the computing host is optionally enabled to communicate with one or more local and/or remote servers (eg, server 1118) (For example, via the selection of input/output and storage/resources 1117 and the selection of a local area network/wide area network (eg, LAN/WAN) 1119). For example, the communication achieves local and/or remote access, management, and/or use of any one or more of the solid state disk drive components. In some embodiments, the communication is via Ethernet completely or partially. In some embodiments, the communication is completely Ground or partially via a Fibre Channel. In various embodiments, the local area network/wide area network 1119 represents one or more regional networks and/or wide area networks, such as one of a network of servers, one of a network of coupled server arrays, and a metropolitan area. Any one or more of the Internet and the Internet.

在各種實施例中,一固態磁碟機控制器及/或一運算主機非揮發性記憶體控制器結合一或多個非揮發性記憶體一起實施為一非揮發性儲存組件,諸如一通用串列匯流排(例如,USB)儲存組件、一通用快閃儲存裝置(例如,UFS)儲存組件、一緊密快閃(compact flash)(例如,CF)儲存組件、一多媒體卡(multimedia card)(例如,MMC)儲存組件、一安全數位(secure digital)(例如,SD)儲存組件、一記憶體棒(Memory Stick)儲存組件及一xD圖片卡儲存組件。 In various embodiments, a solid state disk drive controller and/or a computing host non-volatile memory controller is implemented as a non-volatile storage component, such as a universal string, in conjunction with one or more non-volatile memory. A column bus (eg, USB) storage component, a universal flash storage device (eg, UFS) storage component, a compact flash (eg, CF) storage component, a multimedia card (eg, , MMC) storage component, a secure digital (eg, SD) storage component, a memory stick storage component, and an xD picture card storage component.

在各種實施例中,一固態磁碟機控制器(或一運算主機非揮發性記憶體控制器)之全部或任何部分或其功能實施於該控制器將與其耦合之一主機(例如,圖11C之主機1102)中。在各種實施例中,一固態磁碟機控制器(或一運算主機非揮發性記憶體控制器)之全部或任何部分或其功能係經由硬體(例如,邏輯電路)、軟體及/或韌體(例如,驅動程式軟體或固態磁碟機控制韌體)或其任何組合而實施。 In various embodiments, all or any portion of a solid state disk drive controller (or a computing host non-volatile memory controller) or a function thereof is implemented in a host to which the controller will be coupled (eg, Figure 11C) Host 1102). In various embodiments, all or any portion of a solid state disk drive controller (or a computing host non-volatile memory controller) or its functionality is via hardware (eg, logic circuitry), software, and/or toughness. Implemented by a body (eg, a driver software or a solid state drive control firmware) or any combination thereof.

參考圖12,其展示將資料寫入至一非揮發性記憶體之一流程圖1200。在步驟1202中,程序開始,且在步驟1206中,做出關於將與複數個標籤(或其他唯一識別符,諸如物件標識或邏輯區塊位址)中之一特定者相關聯之資料寫入(儲存)至一非揮發性記憶體之一判定。舉例而言,該判定由一應用程式、一作業系統、一管理程式或任何其他軟體或韌體模組中之一或多者做出。在某些實施例中,寫入資料係可變大小的(例如,可能隨每一寫入操作而變化)。在其他實施例中,寫入資料係若干個固定大小之單元,諸如若干個SATA區段。 Referring to Figure 12, there is shown a flow diagram 1200 of writing data to a non-volatile memory. In step 1202, the program begins, and in step 1206, a data write is made regarding associating a particular one of a plurality of tags (or other unique identifiers, such as an object identification or a logical block address). (storage) to one of the non-volatile memory decisions. For example, the determination is made by one or more of an application, an operating system, a management program, or any other software or firmware module. In some embodiments, the write data is variable in size (eg, may vary with each write operation). In other embodiments, the write data is a number of fixed size units, such as a number of SATA segments.

在步驟1210中,接收一寫入命令及相關聯(可能可變大小之)寫入 資料。在一實例中,一應用程式使用一系統調用來將一寫入命令及寫入資料(諸如經由指向資料之一指標)發送至一驅動程式。在另一實例中,一主機將一寫入命令連同資訊一起發送至一固態磁碟機控制器從而使得固態磁碟機控制器能夠擷取相關聯寫入資料。舉例而言,寫入命令包含一SATA原生命令佇列(例如,NCQ)標籤,且原生命令佇列標籤用於取得相關聯寫入資料。 In step 1210, a write command and associated (possibly variable size) writes are received. data. In one example, an application uses a system call to send a write command and write data (such as via a pointer to one of the data) to a driver. In another example, a host sends a write command along with the information to a solid state drive controller to enable the solid state drive controller to retrieve the associated write data. For example, the write command includes a SATA native command queue (eg, NCQ) tag, and the native command queue tag is used to retrieve the associated write data.

在步驟1214中,視情況及/或選擇性地壓縮或以其他方式減小(可能可變大小之)寫入資料之大小。即使相關聯寫入資料已經係可變大小的,壓縮亦可能能夠進一步減小相關聯寫入資料之一大小。在某些實施例中,(可能可變大小、可能經壓縮)寫入資料視情況及/或選擇性地被加密。 In step 1214, the size of the write data (and possibly variable size) is optionally compressed or otherwise reduced or otherwise reduced. Even if the associated write data is already variable size, compression may be able to further reduce the size of one of the associated writes. In some embodiments, the (possibly variable size, possibly compressed) write data is optionally and/or optionally encrypted.

在步驟1218中,判定用於寫入資料之非揮發性記憶體之下一未寫入實體位置(在一實體位址空間中)。在一實例中,所判定下一未寫入實體位置緊毗鄰於先前所寫入之可變大小資料(不浪費非揮發性記憶體中之空間)。在另一實例中,所判定下一未寫入實體位置在與先前所寫入之可變大小資料相同之一讀取單元中開始。在某些實施例中,所判定下一未寫入實體位置係根據寫入命令中所規定之一帶。 In step 1218, an unwritten physical location (in a physical address space) below the non-volatile memory for writing data is determined. In one example, the next unwritten physical location is determined to be immediately adjacent to the previously written variable size data (the space in the non-volatile memory is not wasted). In another example, the determined next unwritten physical location begins in one of the read units that are the same as the previously written variable size data. In some embodiments, the next unwritten physical location determined is based on one of the bands specified in the write command.

在步驟1222中,將(可能可變大小、可能經壓縮)寫入資料儲存於非揮發性記憶體中在所判定下一未寫入實體位置處。在某些實施例中,一硬體單元將(可能可變大小、可能經壓縮)寫入資料拼貼至一非揮發性記憶體頁之一影像(例如,將寫入至非揮發性記憶體頁之一緩衝器之一部分)中。 In step 1222, the (possibly variable size, possibly compressed) write data is stored in non-volatile memory at the determined next unwritten physical location. In some embodiments, a hardware unit writes (possibly variable size, possibly compressed) a data tile to an image of a non-volatile memory page (eg, writes to non-volatile memory) One of the pages in one of the buffers).

在步驟1226中,將包括寫入資料之一識別符之一標頭儲存於與(可能可變大小、可能經壓縮)寫入資料之至少一部分相同之一非揮發性記憶體頁中。舉例而言,將標頭儲存於與如圖6中之(可能可變大小、可能經壓縮)寫入資料之至少一部分相同之一非揮發性記憶體 頁,及/或將標頭儲存於與如圖5中之(可能可變大小、可能經壓縮)寫入資料之至少一部分相同之一讀取單元。根據各種實施例,識別符係以下各項中之一或多者:與寫入資料之特定標籤相同;寫入資料之特定標籤之函數;經由一表與寫入資料之特定標籤相關聯之識別符;儲存於非揮發性記憶體中之所有資料當中之唯一識別符;及前述各項之任何組合。 In step 1226, a header including one of the identifiers of the written data is stored in a non-volatile memory page that is identical to at least a portion of the (possibly variable size, possibly compressed) write data. For example, the header is stored in one of the same non-volatile memory as at least a portion of the (possibly variable size, possibly compressed) write data as in FIG. The page, and/or the header is stored in one of the same reading units as at least a portion of the (possibly variable size, possibly compressed) write data as in FIG. According to various embodiments, the identifier is one or more of the following: the same as the particular tag that writes the data; a function that writes a particular tag of the material; and the identification associated with the particular tag that writes the data via a table The unique identifier of all the data stored in the non-volatile memory; and any combination of the foregoing.

根據各種實施例,(可能可變大小、可能經壓縮)寫入資料及/或標頭之儲存發生於步驟1222及/或1226中及/或被推遲,直至積累標頭及資料(諸如來自多個寫入操作)之非揮發性記憶體頁為止。在某些實施例中,作為儲存至非揮發性記憶體之一部分而執行錯誤校正編碼。在其他實施例中,錯誤校正編碼將若干個錯誤校正譯碼位元組附加至每一讀取單元之使用者部分以形成如儲存於非揮發性記憶體中之讀取單元。在仍其他實施例中,在錯誤校正編碼之前執行擾碼。 According to various embodiments, the storage of the data and/or headers (possibly variable size, possibly compressed) occurs in steps 1222 and/or 1226 and/or is postponed until the header and data are accumulated (such as from multiple Until the non-volatile memory page of the write operation). In some embodiments, error correction coding is performed as part of storage to non-volatile memory. In other embodiments, the error correction coding appends a number of error correction decoding bits to the user portion of each reading unit to form a reading unit as stored in the non-volatile memory. In still other embodiments, the scrambling code is performed prior to error correction coding.

在步驟1230中,傳回所判定下一未寫入實體位置之指示。在一實例中,所判定下一未寫入實體位置之指示包括讀取單元位址,諸如讀取單元中用於儲存(可能可變大小、可能經壓縮)寫入資料之第一者之位址。繼續該實例,在某些實施例中,所判定下一未寫入實體位置之指示進一步包括由(可能可變大小、可能經壓縮)寫入資料橫跨之若干個讀取單元,舉例而言,必須被讀取以擷取全部且不超過(可能可變大小、可能經壓縮)寫入資料之若干個讀取單元。該若干個讀取單元中之一或多者視情況及/或選擇性地含有與標籤中之其他資料相關聯之資料,但該若干個讀取單元中之每一者含有(可能可變大小、可能經壓縮)寫入資料中之至少某些寫入資料。在另一實例中,所判定下一未寫入實體位置之指示包括非揮發性記憶體頁之位址及/或用於儲存(可能可變大小、可能經壓縮)寫入資料之至少一部分之非揮發性記憶體頁中之位移。繼續該另一實例,在某些實施例中,所判定下一 未寫入實體位置之指示進一步包括(可能可變大小、可能經壓縮)寫入資料之位元組中之長度。進一步繼續該另一實例,在仍其他實施例中,(可能可變大小、可能經壓縮)寫入資料橫跨一個以上非揮發性記憶體頁(例如,在第一非揮發性記憶體頁中開始且繼續至一或多個後續非揮發性記憶體頁中)。舉例而言,當第一非揮發性記憶體頁中之位移處及之後的一剩餘使用者資料量小於(可能可變大小、可能經壓縮)寫入資料之位元組中之長度時,(可能可變大小、可能經壓縮)寫入資料橫跨一個以上非揮發性記憶體頁。 In step 1230, an indication is returned that the next unwritten physical location is determined. In an example, the indication of the next unwritten physical location is determined to include a read unit address, such as the first one in the read unit for storing (possibly variable size, possibly compressed) write data. site. Continuing with the example, in some embodiments, the indication of the next unwritten entity location determined further includes a number of read units spanned by (possibly variable size, possibly compressed) write data, for example, Must be read to retrieve all of the read units that do not exceed (possibly variable size, possibly compressed) write data. One or more of the plurality of reading units optionally and/or optionally contain data associated with other materials in the tag, but each of the plurality of reading units contains (possibly variable size) At least some of the data written to the data may be compressed. In another example, the indication of the next unwritten physical location is determined to include the address of the non-volatile memory page and/or to store (possibly variable size, possibly compressed) at least a portion of the written data. Displacement in non-volatile memory pages. Continuing with this other example, in some embodiments, the next decision is made The indication that the entity location is not written further includes (possibly variable size, possibly compressed) the length of the byte in which the data is written. Continuing with this further example, in still other embodiments, (possibly variable size, possibly compressed) writes data across more than one non-volatile memory page (eg, in a first non-volatile memory page) Start and continue to one or more subsequent non-volatile memory pages). For example, when the displacement in the first non-volatile memory page and the amount of remaining user data in the subsequent one are less than (possibly variable size, possibly compressed) in the byte of the data to be written, It may be variable size, possibly compressed) to write data across more than one non-volatile memory page.

在步驟1234中,維持使特定標籤與所判定下一未寫入實體位置之指示相關聯之映射。舉例而言,維持該映射使得與特定標籤相關聯之資料能夠由一後續讀取操作擷取。 In step 1234, a mapping is maintained that associates the particular tag with the indication of the determined next unwritten entity location. For example, maintaining the mapping enables data associated with a particular tag to be retrieved by a subsequent read operation.

在步驟1238中,根據寫入命令而維持統計資料。舉例而言,寫入與特定標籤相關聯之資料使用其中寫入資料之冗餘區塊中之一特定空間量且視情況及/或選擇性地釋放其中儲存與特定標籤相關聯之資料之一較舊版本之一冗餘區塊中之一特定空間量。統計資料追蹤每一冗餘區塊中之一所使用空間量(或等效地,在某些實施例中,一自由空間量)。在步驟1290處,該程序結束。 In step 1238, the statistics are maintained in accordance with the write command. For example, writing data associated with a particular tag uses one of a plurality of redundant blocks in which the data is written and optionally and/or selectively releasing one of the materials associated with the particular tag A specific amount of space in one of the redundant blocks of the older version. The statistics track the amount of space used by one of each redundant block (or equivalently, in some embodiments, a free space amount). At step 1290, the program ends.

在某些實施例中,鎖定(諸如信號量)用於防止在程序1200之至少一部分期間對映射之至少一部分之存取。舉例而言,在某些實施例中,自步驟1210至1234鎖定與特定標籤相關聯之映射之一項目以防止在正更新項目時對項目之其他存取。 In some embodiments, a lock, such as a semaphore, is used to prevent access to at least a portion of the map during at least a portion of the program 1200. For example, in some embodiments, one of the mappings associated with a particular tag is locked from steps 1210 through 1234 to prevent other access to the item while the item is being updated.

參考圖13,其展示自一非揮發性記憶體讀取資料之一流程圖1300。在步驟1302處,程序開始,且在步驟1306處,做出關於自一非揮發性記憶體讀取(擷取)與複數個標籤(或其他唯一識別符,諸如物件識別符或邏輯區塊位址)中之一特定者相關聯之資料之一判定。舉例而言,該判定由一應用程式、一作業系統、一管理程式或任何其他軟 體或韌體模組中之一或多者做出。在某些實施例中,資料係可變大小的(例如,可能隨每一讀取操作而變化)。在其他實施例中,資料係若干個固定大小單元,諸如若干個SATA區段。 Referring to Figure 13, a flow diagram 1300 of reading data from a non-volatile memory is shown. At step 1302, the process begins, and at step 1306, a read (take) and a plurality of tags (or other unique identifiers, such as object identifiers or logical block bits) from a non-volatile memory are made. One of the data associated with one of the specific ones is determined. For example, the decision is made by an application, an operating system, a management program, or any other soft One or more of the body or firmware modules are made. In some embodiments, the data is variable in size (eg, may vary with each read operation). In other embodiments, the data is a number of fixed size units, such as several SATA sections.

在步驟1310中,在一映射中查找特定標籤以判定與一標籤相關聯之資料之一所儲存版本在非揮發性記憶體中之一實體位置之一指示。根據各種實施例,映射查找藉由發起讀取操作之一軟體模組或藉由由發起讀取操作之軟體模組調用之另一軟體模組而執行。舉例而言,一應用程式發起讀取操作,且主機上之一驅動程式層或一固態磁碟機控制器上之一韌體層執行映射查找。 In step 1310, a particular tag is looked up in a map to determine that one of the stored versions of one of the tags associated with a tag is in one of the physical locations in the non-volatile memory. According to various embodiments, the mapping lookup is performed by initiating a software module of a read operation or by another software module invoked by a software module that initiates a read operation. For example, an application initiates a read operation and a mapping layer is performed by one of the driver layers or a firmware layer on a solid state disk controller.

在步驟1314中,接收具有非揮發性記憶體中之一實體位置之指示之一讀取命令。在一實例中,在主機上之一驅動程式層已執行映射查找之後,驅動程式層將一讀取命令及非揮發性記憶體中之一實體位置之指示發送至一固態磁碟機控制器。在另一實例中,在一固態磁碟機控制器中之一第一處理器已執行映射查找之後,第一處理器將一讀取命令及非揮發性記憶體中之一實體位置之指示發送至控制對非揮發性記憶體之存取之固態磁碟機控制器中之一第二處理器。 In step 1314, a read command is received that has an indication of one of the non-volatile memory locations. In one example, after a driver layer has performed a mapping lookup on the host, the driver layer sends a read command and an indication of one of the non-volatile memory locations to a solid state drive controller. In another example, after one of the first processor in a solid state disk drive controller has performed a mapping lookup, the first processor sends a read command and an indication of an entity location in the non-volatile memory. A second processor in a solid state disk drive controller that controls access to non-volatile memory.

在步驟1318中,使用非揮發性記憶體中之一實體位置之指示來判定非揮發性記憶體中含有與特定標籤相關聯之資料之所儲存版本之讀取單元之一位置及一數目。在一實例中,實體位置之指示包括一讀取單元位址,諸如用於儲存與特定標籤相關聯之資料之所儲存版本之一或多個讀取單元中之一第一者之一位址。繼續該實例,在某些實施例中,實體位置之指示進一步包括一或多個讀取單元之一數目,舉例而言,必須被讀取以擷取與特定標籤相關聯之資料之全部且不超過所儲存版本之讀取單元之一數目。(一或多個讀取單元中之一或多者視情況及/或選擇性地含有與標籤中之其他資料相關聯之資料,但一或多個讀取單元中之每一者含有與特定標籤相關聯之資料之所儲存版本 中之至少某些版本)。在另一實例中,實體位置之指示包括一非揮發性記憶體頁之一位址及/或用於儲存與特定標籤相關聯之資料之所儲存版本之至少一部分之一非揮發性記憶體頁中之一位移。繼續該另一實例,在某些實施例中,實體位置之指示進一步包括與特定標籤相關聯之資料之所儲存版本之位元組中之一長度。進一步繼續該另一實例,在仍其他實施例中,與特定標籤相關聯之資料之所儲存版本橫跨一個以上非揮發性記憶體頁(例如,在一第一非揮發性記憶體頁中開始且繼續至一或多個後續非揮發性記憶體頁中)。舉例而言,當第一非揮發性記憶體頁中之位移處及之後的一剩餘使用者資料量小於與特定標籤相關聯之資料之所儲存版本之位元組中之長度時,與特定標籤相關聯之資料之所儲存版本橫跨一個以上非揮發性記憶體頁。進一步繼續該另一實例,根據第一非揮發性記憶體頁中之讀取單元之一數目及/或一大小且根據與特定標籤相關聯之資料之所儲存版本之位元組中之位移及長度,判定第一非揮發性記憶體頁中之讀取單元中之一或多者中之一第一者及第一非揮發性記憶體頁中之讀取單元之一數目。若與特定標籤相關聯之資料之所儲存版本橫跨一個以上非揮發性記憶體頁,則關於非揮發性記憶體頁中之一或多個後續非揮發性記憶體頁使用類似程序以判定後續非揮發性記憶體頁中含有與特定標籤相關聯之資料之所儲存版本之至少一部分之額外讀取單元。 In step 1318, an indication of one of the non-volatile memory locations is used to determine a location and a number of read units in the non-volatile memory that contain the stored version of the data associated with the particular tag. In an example, the indication of the physical location includes a read unit address, such as one of a stored version for storing data associated with the particular label or one of the first one of the plurality of read units . Continuing with the example, in some embodiments, the indication of the physical location further includes a number of one or more read units, for example, must be read to retrieve all of the data associated with the particular label and not The number of reading units that exceed the stored version. (One or more of the one or more reading units optionally and/or selectively containing material associated with other materials in the tag, but each of the one or more reading units contains and Stored version of the information associated with the label At least some of the versions). In another example, the indication of the physical location includes a location of a non-volatile memory page and/or a non-volatile memory page for storing at least a portion of the stored version of the data associated with the particular tag. One of the displacements. Continuing with the other example, in some embodiments, the indication of the physical location further includes one of a set of bytes of the stored version of the material associated with the particular tag. Continuing with the further example, in still other embodiments, the stored version of the material associated with the particular tag spans more than one non-volatile memory page (eg, begins in a first non-volatile memory page) And continue to one or more subsequent non-volatile memory pages). For example, when the displacement in the first non-volatile memory page and the subsequent remaining user data amount are less than the length in the byte group of the stored version of the data associated with the specific label, The stored version of the associated data spans more than one non-volatile memory page. Further continuing the other example, based on the number and/or size of one of the read units in the first non-volatile memory page and based on the displacement in the byte of the stored version of the data associated with the particular label and The length determines a number of one of the one or more of the read units in the first non-volatile memory page and one of the read units of the first non-volatile memory page. If the stored version of the data associated with a particular tag spans more than one non-volatile memory page, a similar procedure is used for one or more subsequent non-volatile memory pages in the non-volatile memory page to determine subsequent The non-volatile memory page contains additional read units that are at least a portion of the stored version of the data associated with the particular tag.

在步驟1322中,自非揮發性記憶體讀取所判定讀取單元。在某些實施例中,對讀取單元執行錯誤校正解碼以校正在儲存於非揮發性記憶體中及/或傳送至非揮發性記憶體或自非揮發性記憶體進行傳送期間發生之任何錯誤。在其他實施例中,在錯誤校正解碼之後執行解擾碼。由於所判定讀取單元之錯誤校正編碼,因此判定將自非揮發性記憶體讀取之若干個位元組包含讀取單元中之使用者資料及讀取單元中之每一者中之錯誤校正譯碼位元組兩者。在某些實施例中,讀取單 元中之每一者中之錯誤校正譯碼位元組之一數目(諸如)在固態磁碟機控制器之控制下因非揮發性記憶體之磨損而動態地變化。在各種實施例及/或使用情景中,諸如當所判定讀取單元中之至少一者含有與標籤中之另一者相關聯之資料之至少一部分時,所判定讀取單元中之使用者資料之位元組之一總數目超過與特定標籤相關聯之資料之所儲存版本之位元組中之長度。 In step 1322, the determined read unit is read from the non-volatile memory. In some embodiments, error correction decoding is performed on the reading unit to correct any errors that occur during transmission in non-volatile memory and/or to non-volatile memory or from non-volatile memory. . In other embodiments, the descrambling code is performed after error correction decoding. Due to the error correction code of the determined reading unit, it is determined that the plurality of bytes read from the non-volatile memory include error correction in each of the user data and the reading unit in the reading unit Both bit bytes are decoded. In some embodiments, the reading list The number of one of the error correction decoding bytes in each of the elements, such as is dynamically changed by the wear of the non-volatile memory under the control of the solid state drive controller. In various embodiments and/or usage scenarios, such as when at least one of the determined reading units contains at least a portion of the data associated with the other of the tags, the user data in the determined reading unit The total number of one of the bytes exceeds the length in the byte of the stored version of the data associated with the particular tag.

在步驟1326中,自所判定讀取單元提取與特定標籤相關聯之資料之所儲存版本。在某些實施例中,提取係根據具備讀取命令之一識別符。根據各種實施例,識別符係以下各項中之一或多者:與資料之特定標籤相同;資料之特定標籤之一函數;經由一表與資料之特定標籤相關聯之一識別符;儲存於非揮發性記憶體中之所有資料當中之一唯一識別符;及前述內容之任何組合。在一實例中,讀取單元包括一或多個標頭,如圖5中所圖解說明,且使用識別符來判定標頭中之一匹配者,然後使用該匹配標頭來定位所判定讀取單元中之與特定標籤相關聯之資料之所儲存版本。在另一實例中,實體位置之指示包括規定所判定讀取單元內之與特定標籤相關聯之資料之所儲存版本之一位置之資訊。根據各種實施例,與特定標籤相關聯之資料之所儲存版本係可變大小的。舉例而言,與特定標籤相關聯之資料在儲存之前被壓縮,及/或與特定標籤相關聯之資料自身係可變大小的。 In step 1326, the stored version of the material associated with the particular tag is extracted from the determined reading unit. In some embodiments, the extraction is based on having one of the read commands identifiers. According to various embodiments, the identifier is one or more of the following: the same as the particular label of the material; a function of a particular label of the data; an identifier associated with a particular label of the data via a table; stored in One of the unique identifiers of all materials in non-volatile memory; and any combination of the foregoing. In an example, the reading unit includes one or more headers, as illustrated in FIG. 5, and uses an identifier to determine one of the headers, and then uses the matching header to locate the determined reading. The stored version of the material associated with a particular tag in the unit. In another example, the indication of the physical location includes information specifying a location of a stored version of the data associated with the particular tag within the determined reading unit. According to various embodiments, the stored version of the material associated with a particular tag is variable in size. For example, the material associated with a particular tag is compressed prior to storage, and/or the material associated with a particular tag is itself variable in size.

在步驟1330中,與特定標籤相關聯之資料之所儲存版本視情況及/或選擇性地經解密及/或視情況及/或選擇性地經解壓縮以產生與特定標籤相關聯之資料。 In step 1330, the stored version of the material associated with the particular tag is optionally decrypted and/or optionally and/or selectively decompressed to generate material associated with the particular tag.

在步驟1334中,回應於讀取操作而傳回與特定標籤相關聯之資料。 In step 1334, the material associated with the particular tag is returned in response to the read operation.

在步驟1338中,根據讀取命令而維持統計資料。在一實例中,讀取命令存取特定數目個非揮發性記憶體區塊以擷取所判定讀取單 元,且維持計數每非揮發性記憶體區塊之讀取干擾事件之一數目之統計資料。在另一實例中,讀取命令存取特定數目個非揮發性記憶體區塊以擷取所判定讀取單元,所判定讀取單元之錯誤校正校正所判定讀取單元中之每一者中之若干個各別錯誤,且維持非揮發性記憶體區塊中之每一者中之任何讀取單元中所校正之最大數目個錯誤之統計資料。在步驟1390處,該程序結束。 In step 1338, the statistics are maintained in accordance with the read command. In one example, the read command accesses a particular number of non-volatile memory blocks to retrieve the determined read order A statistic that maintains a count of the number of read disturb events per non-volatile memory block. In another example, the read command accesses a particular number of non-volatile memory blocks to retrieve the determined read unit, and the determined read unit error correction correction is determined in each of the read units A number of individual errors and maintaining statistics of the maximum number of errors corrected in any of the read units in each of the non-volatile memory blocks. At step 1390, the program ends.

通常對於讀取不橫跨多個非揮發性記憶體頁之單個映射單元之資料,待在非揮發性記憶體頁中存取以獲得映射單元之資料之所儲存版本之讀取單元之一數目小於非揮發性記憶體頁中之所有讀取單元。此外,由於映射單元之資料之所儲存版本係可變大小的,因此參考一第一邏輯區塊位址(或標籤)之針對一第一讀取命令待在非揮發性記憶體頁中存取之讀取單元之一數目不同於參考一第二邏輯區塊位址(或標籤)之針對一第二讀取命令待在非揮發性記憶體頁中存取之讀取單元之一數目,第二邏輯區塊位址不同於第一邏輯區塊位址。在某些實施例中,自非揮發性記憶體頁僅讀取待在非揮發性記憶體頁中存取之該若干讀取單元。亦即,自非揮發性記憶體僅讀取讀取單元中含有映射單元之資料之所儲存版本之一部分之讀取單元以便存取及擷取映射單元之資料之所儲存版本。 Generally, for reading data of a single mapping unit that does not span multiple non-volatile memory pages, the number of reading units to be accessed in the non-volatile memory page to obtain the stored version of the mapping unit data Less than all read cells in a non-volatile memory page. In addition, since the stored version of the data of the mapping unit is variable in size, reference to a first logical block address (or tag) is to be accessed in a non-volatile memory page for a first read command. The number of one of the read units is different from the number of read units of a second logical block address (or tag) that are to be accessed in the non-volatile memory page for a second read command, The two logical block addresses are different from the first logical block address. In some embodiments, only a number of read cells to be accessed in a non-volatile memory page are read from a non-volatile memory page. That is, only the read unit of the stored version of the data containing the mapping unit in the read unit is read from the non-volatile memory to access and retrieve the stored version of the data of the mapping unit.

參考圖14,其展示使資料在一非揮發性記憶體中回收之一流程圖。在步驟1402處,程序開始,且在步驟1406中,做出關於非揮發性記憶體之待回收之一區域之一判定。根據各種實施例及/或使用情景,該區域係以下各項中之一或多者:一冗餘區塊;一或多個非揮發性記憶體區塊;在其內維持自由空間及/或所使用空間統計資料之非揮發性記憶體之一部分;在其內維持平均磨損統計資料之非揮發性記憶體之一部分;及前述各項之任何組合。根據各種實施例及/或使用情景,對以下各項中之一或多者執行回收:非揮發性記憶體中之廢棄 項目收集(總自由空間);非揮發性記憶體之平均磨損(以保持非揮發性記憶體之區塊在一各別程式化/抹除計數中相對相等);及與非揮發性記憶體有關之程序錯誤及/或異常,諸如程式故障、過度讀取干擾及/或過度錯誤率。在其他實施例中,由一主機全域地(諸如跨越複數個固態磁碟機)執行回收。 Referring to Figure 14, there is shown a flow diagram for recycling data in a non-volatile memory. At step 1402, the process begins, and in step 1406, a determination is made as to one of the regions of non-volatile memory to be recovered. According to various embodiments and/or usage scenarios, the region is one or more of: a redundant block; one or more non-volatile memory blocks; maintaining free space therein and/or Part of the non-volatile memory of the spatial statistics used; part of the non-volatile memory in which the average wear statistics are maintained; and any combination of the foregoing. Recycling is performed on one or more of the following in accordance with various embodiments and/or usage scenarios: obsolescence in non-volatile memory Project collection (total free space); average wear of non-volatile memory (to keep blocks of non-volatile memory relatively equal in a separate stylized/erased count); and related to non-volatile memory Program errors and/or exceptions such as program failures, excessive read disturbs, and/or excessive error rates. In other embodiments, the recycling is performed by a host globally, such as across a plurality of solid state drives.

在步驟1410中,自非揮發性記憶體之區域讀取一或多個非揮發性記憶體頁。在某些實施例中,對非揮發性記憶體頁整體地進行錯誤校正。對非揮發性記憶體頁中之所有讀取單元進行錯誤校正。在其他實施例中,僅首先對判定為含有標頭(諸如圖6中所圖解說明)之非揮發性記憶體頁之一部分進行錯誤校正,且若判定(例如,步驟1426)非揮發性記憶體頁含有需要回收之資料,則對非揮發性記憶體頁之其他部分進行錯誤校正(如需要)。 In step 1410, one or more non-volatile memory pages are read from the area of the non-volatile memory. In some embodiments, error correction is performed on the non-volatile memory page as a whole. Error correction is performed on all read units in the non-volatile memory page. In other embodiments, only one portion of the non-volatile memory page that is determined to contain a header (such as illustrated in FIG. 6) is first error corrected, and if determined (eg, step 1426) non-volatile memory If the page contains information that needs to be recycled, the other parts of the non-volatile memory page are erroneously corrected (if needed).

在步驟1414中,自非揮發性記憶體頁提取標頭。在一實例中,在諸如圖5中所圖解說明之一實施例中,自非揮發性記憶體頁中之每一者中之每一讀取單元提取標頭。在另一實例中,在諸如圖6中所圖解說明之一實施例中,自非揮發性記憶體頁中之每一者之一部分(諸如非揮發性記憶體頁中之每一者中之首先一或多個讀取單元)提取標頭。 In step 1414, the header is extracted from the non-volatile memory page. In one example, in one embodiment, such as illustrated in FIG. 5, a header is extracted from each of the non-volatile memory pages. In another example, in one embodiment, such as illustrated in Figure 6, one of each of the non-volatile memory pages (such as each of the non-volatile memory pages) One or more reading units) extract headers.

在步驟1418中,剖析自非揮發性記憶體頁提取之標頭以判定非揮發性記憶體頁中之與例如開始相關聯之資料之識別符。 In step 1418, the header extracted from the non-volatile memory page is parsed to determine the identifier of the non-volatile memory page that is associated with, for example, the beginning of the data.

在步驟1422中,在一映射中查找識別符以判定與識別符相關聯之資料在非揮發性記憶體中之實體位置之各別指示。在某些實施例中,識別符與在寫入非揮發性記憶體時所使用之資料之各別標籤相同。在其他實施例中,將識別符與其他資訊(諸如一固態磁碟機識別符)組合以形成在映射中查找之標籤。在仍其他實施例中,維持使識別符與標籤相關聯及/或使識別符與關聯於識別符之資料在非揮發性 記憶體中之實體位置之指示相關聯之一映射。 In step 1422, an identifier is looked up in a map to determine a respective indication of the physical location of the data associated with the identifier in the non-volatile memory. In some embodiments, the identifier is the same as the individual tags of the material used in writing the non-volatile memory. In other embodiments, the identifier is combined with other information, such as a solid state drive identifier, to form a tag that is looked up in the map. In still other embodiments, maintaining the identifier associated with the tag and/or causing the identifier to be associated with the identifier is non-volatile An indication of the location of the entity in the memory is associated with one of the mappings.

在步驟1426中,將仍為當前(在正回收之非揮發性記憶體頁中)之與識別符相關聯之任何資料寫入至非揮發性記憶體中之一新實體位置。舉例而言,將與識別符相關聯之資料在非揮發性記憶體中之實體位置之各別指示轉換為各別讀取單元位址,且若各別讀取單元位址在正回收之非揮發性記憶體頁中,則正回收之非揮發性記憶體頁含有與識別符相關聯之資料之最新版本。在各種實施例中,類似於程序1200之步驟1218至1230而執行將與識別符相關聯之仍為當前之資料寫入至非揮發性記憶體中之一新實體位置。在各種實施例中,若壓縮及/或加密仍為當前之資料,則以經壓縮及/或經加密形式「按原樣」重新寫入仍為當前之資料。在某些實施例中,將仍為當前之資料自正回收之非揮發性記憶體頁移動至固態磁碟機控制器內之一新非揮發性記憶體頁(且不將仍為當前之資料發送至一主機以便使仍為當前之資料回收)。在其他實施例中,回收包括將仍為當前之資料發送至主機且類似於程序1200而重新寫入仍為當前之資料。在其他實施例中,跨越複數個固態磁碟機全域地執行回收,且出於回收目的,將先前儲存於固態磁碟機中之一者上之仍為當前之資料重新寫入至固態磁碟機中之另一者。 In step 1426, any data associated with the identifier (currently in the non-volatile memory page being recovered) is written to one of the new entity locations in the non-volatile memory. For example, the respective indications of the physical location of the data associated with the identifier in the non-volatile memory are converted into individual read unit addresses, and if the respective read unit addresses are in the non-recycling In the volatile memory page, the non-volatile memory page being recycled contains the latest version of the data associated with the identifier. In various embodiments, similar to the steps 1218 through 1230 of the routine 1200, the still existing data associated with the identifier is written to one of the new entity locations in the non-volatile memory. In various embodiments, if the current data is still compressed and/or encrypted, the current data is rewritten "as is" in compressed and/or encrypted form. In some embodiments, the non-volatile memory page that is still being recovered from the current data is moved to a new non-volatile memory page in the solid state drive controller (and will not be current data) Sent to a host to reclaim the current data). In other embodiments, recycling includes sending the current data to the host and rewriting the data that is still current, similar to the program 1200. In other embodiments, the recycling is performed globally across a plurality of solid state drives, and for recycling purposes, the current data previously stored on one of the solid state drives is rewritten to the solid state disk. The other one in the machine.

在步驟1430中,更新映射以反映已回收之任何資料之新實體位置之一指示。 In step 1430, the mapping is updated to reflect an indication of one of the new entity locations for any of the materials that have been recycled.

在步驟1434中,做出在區域中是否仍將處理更多非揮發性記憶體頁之一判定。若是,則程序進行至步驟1410以繼續使其他非揮發性記憶體頁回收。 In step 1434, a determination is made as to whether one of the more non-volatile memory pages will still be processed in the region. If so, the program proceeds to step 1410 to continue recovering other non-volatile memory pages.

在步驟1438中,在回收程序期間根據非揮發性記憶體之讀取及寫入而維持統計資料。在一實例中,讀取非揮發性記憶體存取特定數目個非揮發性記憶體區塊以擷取非揮發性記憶體頁,且維持計數每非 揮發性記憶體區塊之讀取干擾事件之一數目之統計資料。在另一實例中,讀取非揮發性記憶體存取特定數目個非揮發性記憶體區塊以擷取非揮發性記憶體頁,非揮發性記憶體頁之錯誤校正校正非揮發性記憶體頁之經錯誤校正解碼之讀取單元中之每一者中之若干個各別錯誤,且維持非揮發性記憶體區塊中之每一者中之任何讀取單元中所校正之最大數目個錯誤之統計資料。在又一實例中,藉由寫入非揮發性記憶體而使資料回收使用其中寫入經回收資料之一冗餘區塊中之一特定空間量,且視情況及/或選擇性地釋放正回收之冗餘區塊中之一特定空間量。統計資料追蹤每一冗餘區塊中之一所使用空間量(或等效地,在某些實施例中,一自由空間量)。在某些實施例中,當正回收之區域中之所使用空間量趨於零時,不再使該區域中之仍為當前之(並非已覆寫)資料回收,且程序1400能夠在讀取正回收之區域中之所有非揮發性記憶體頁之前完成。在步驟1490處,該程序結束。 In step 1438, the statistics are maintained during the recovery process based on the reading and writing of the non-volatile memory. In one example, the non-volatile memory is read to access a specific number of non-volatile memory blocks to retrieve non-volatile memory pages, and the count is maintained for each non-volatile memory. Statistics on the number of read disturb events for volatile memory blocks. In another example, the non-volatile memory is read to access a specific number of non-volatile memory blocks to capture non-volatile memory pages, and the non-volatile memory pages are erroneously corrected to correct non-volatile memory. The page is erroneously corrected for a number of individual errors in each of the decoded read units, and maintaining the maximum number of corrections in any of the read units in each of the non-volatile memory blocks Statistics of errors. In yet another example, data is recovered by writing non-volatile memory using a particular amount of space in one of the redundant blocks of the recovered data, and optionally released positively and/or selectively A specific amount of space in a redundant block that is recycled. The statistics track the amount of space used by one of each redundant block (or equivalently, in some embodiments, a free space amount). In some embodiments, when the amount of space used in the region being recycled tends to zero, the current (not overwritten) data in the region is no longer reclaimed, and the program 1400 can read All non-volatile memory pages in the area being recycled are completed before. At step 1490, the program ends.

在某些實施例中,鎖定(諸如信號量)用於防止在程序1400之至少一部分期間對映射之至少一部分之存取。舉例而言,在某些實施例中,自步驟1422至1430鎖定與具有當前資料之識別符中之一者相關聯之映射之一項目以防止在正更新項目時對項目之其他存取。 In some embodiments, a lock, such as a semaphore, is used to prevent access to at least a portion of the map during at least a portion of the program 1400. For example, in some embodiments, one of the mappings associated with one of the identifiers of the current data is locked from steps 1422 through 1430 to prevent other access to the item while the item is being updated.

根據各種實施例,主機選擇非揮發性記憶體之待回收之區域;固態磁碟機控制器選擇非揮發性記憶體之待回收之區域;主機出於一第一個原因而選擇非揮發性記憶體之待回收之區域,且固態磁碟機控制器出於一第二不同原因而選擇非揮發性記憶體之待回收之區域;及前述各項之任何組合。在一實例中,在主機上執行非揮發性記憶體之待回收之區域之全部選擇。在另一實例中,主機出於廢棄項目收集原因而選擇非揮發性記憶體之待回收之區域,且固態磁碟機控制器出於平均磨損原因而選擇非揮發性記憶體之待回收之區域。在又一實例中,主機出於廢棄項目收集及平均磨損原因而選擇非揮發性記憶體之 待回收之區域,且固態磁碟機控制器出於異常狀況及/或錯誤(諸如程式故障、過度錯誤校正譯碼錯誤或讀取干擾事件)原因而選擇非揮發性記憶體之待回收之區域。在其他實施例中,固態磁碟機控制器經啟用以將非揮發性記憶體之一或多個統計資料(諸如程式化/抹除計數及/或所使用空間統計資料)傳遞至主機。舉例而言,統計資料經由固態磁碟機控制器之一邏輯區塊位址空間之一保留部分或藉由用以讀取及/或寫入統計資料之特殊命令作為日誌(諸如SMART日誌)而傳遞。在某些實施例及/或使用情景中,將統計資料傳遞至主機使得主機能夠選擇非揮發性記憶體之待回收之區域,而固態磁碟機控制器經啟用以自主機卸載統計資料之維持。 According to various embodiments, the host selects the area of the non-volatile memory to be recovered; the solid state drive controller selects the area of the non-volatile memory to be recovered; the host selects the non-volatile memory for a first reason The area to be recovered, and the solid state disk drive controller selects the area of the non-volatile memory to be recovered for a second different reason; and any combination of the foregoing. In one example, all selections of non-volatile memory regions to be recovered are performed on the host. In another example, the host selects the area of the non-volatile memory to be recycled for the purpose of collecting the waste items, and the solid state disk controller selects the area to be recycled of the non-volatile memory for the average wear. . In yet another example, the host selects non-volatile memory for the purpose of waste collection and average wear. The area to be recycled, and the solid state drive controller selects the non-volatile memory area to be recycled due to abnormal conditions and/or errors such as program failure, excessive error correction decoding error, or read interference event. . In other embodiments, the solid state drive controller is enabled to pass one or more statistics of non-volatile memory, such as stylized/erased counts and/or used spatial statistics, to the host. For example, the statistics are retained as part of a logical block address space of one of the solid state drive controllers or as a log (such as a SMART log) by a special command to read and/or write statistics. transfer. In some embodiments and/or usage scenarios, passing statistics to the host enables the host to select areas of non-volatile memory to be reclaimed, while the solid state drive controller is enabled to maintain statistics from the host. .

在某些實施例中,固態磁碟機控制器經啟用以獨立於主機而使非揮發性記憶體之至少一部分回收且將經更新實體位置傳遞至主機。舉例而言,回應於異常狀況及/或錯誤,諸如程式故障、過度錯誤校正譯碼錯誤或讀取干擾事件,固態磁碟機控制器判定非揮發性記憶體之必須回收之一區域。固態磁碟機控制器讀取非揮發性記憶體之區域中之標頭且將非揮發性記憶體之區域中之任何仍為當前之資料重新定位至非揮發性記憶體之一不同部分中之各別新實體位置。根據各種實施例,在一或多項實施方案中:固態磁碟機維持映射且能夠更新該映射以反映仍為當前之資料之各別新實體位置;固態磁碟機控制器維持由固態磁碟機控制器重新定位之資料之一單獨部分映射,該單獨部分映射使非揮發性記憶體之區域中之仍為當前之資料之實體位置之指示與各別新實體位置相關聯;固態磁碟機控制器將各別新實體位置連同來自標頭之資訊(諸如仍為當前之資料之各別識別符)一起傳遞至主機,且主機更新映射;及前述各項之任何組合。有利地,可在非揮發性記憶體之區域及各別新實體位置兩者中存取仍為當前之資料直至抹除非揮發性記憶體之區域為止。在其他實施例中,不抹除非揮發性記 憶體之區域直至以各別新實體位置更新映射之後為止。舉例而言,主機告知固態磁碟機控制器已更新映射,且然後僅固態磁碟機控制器經啟用以抹除非揮發性記憶體之區域。 In some embodiments, the solid state drive controller is enabled to reclaim at least a portion of the non-volatile memory and to communicate the updated entity location to the host independent of the host. For example, in response to an abnormal condition and/or error, such as a program failure, an excessive error correction decoding error, or a read interference event, the solid state drive controller determines that one of the areas of non-volatile memory must be recovered. The solid state drive controller reads the header in the area of the non-volatile memory and relocates any still current data in the non-volatile memory area to a different portion of the non-volatile memory Individual new entity locations. According to various embodiments, in one or more embodiments: the solid state drive maintains a mapping and is capable of updating the mapping to reflect respective new physical locations that are still current data; the solid state disk drive controller is maintained by the solid state disk drive One of the data of the controller relocation is mapped separately, the individual partial mapping correlates the indication of the physical location of the current data in the non-volatile memory region with the respective new entity location; solid state drive control The respective new entity locations are passed along with information from the headers (such as individual identifiers that are still current data) to the host, and the host updates the mapping; and any combination of the foregoing. Advantageously, the data that is still current can be accessed in both the area of the non-volatile memory and the respective new physical location until the area of the volatile memory is erased. In other embodiments, no volatiles are recorded unless volatile Recall the area of the body until after the mapping is updated with the location of each new entity. For example, the host informs the solid state drive controller that the mapping has been updated, and then only the solid state drive controller is enabled to wipe out areas of the volatile memory.

在各種實施例中,主機(諸如)藉由請求待讀取之若干個非揮發性記憶體頁或待發送至主機之若干個所提取標頭而控制非揮發性記憶體頁自用於回收之非揮發性記憶體之讀取(步驟1410)。根據各種實施例,主機執行標頭剖析(步驟1418)中之至少某些步驟及/或固態磁碟機控制器(諸如)藉由預處理及/或重新格式化及/或過濾所提取標頭而執行標頭剖析中之至少某些步驟。在其他實施例中,主機執行映射查找(步驟1422)且判定是否需要重新寫入資料中之任何資料。重新寫入(步驟1426)由固態磁碟機控制器在主機之控制下(諸如藉由主機針對任何仍為當前之資料而發送一「重新寫入」命令)執行。重新寫入命令類似於一寫入命令,但不具有寫入資料,重新寫入命令如一讀取命令一樣包括非揮發性記憶體中之一實體位置(正使資料自其回收之位置)之一指示。類似於一寫入命令,重新寫入命令傳回所重新寫入資料之新實體位置之一指示,且主機執行步驟1430以更新映射。在其中主機執行程序1400之較大部分之有關實施例中,重新寫入命令包括仍為當前之資料在固態磁碟機控制器中之一緩衝位置。 In various embodiments, the host controls non-volatile memory pages from non-volatile for recycling, such as by requesting a number of non-volatile memory pages to be read or a number of extracted headers to be sent to the host. Reading of the memory (step 1410). According to various embodiments, the host performs at least some of the steps in the header parsing (step 1418) and/or the solid state drive controller (such as by preprocessing and/or reformatting and/or filtering the extracted headers) Perform at least some of the steps in the header parsing. In other embodiments, the host performs a mapping lookup (step 1422) and determines if any material in the material needs to be rewritten. Rewriting (step 1426) is performed by the solid state drive controller under the control of the host (such as by the host sending a "rewrite" command for any data that is still current). The rewrite command is similar to a write command, but does not have a write data. The rewrite command, like a read command, includes one of the physical locations in the non-volatile memory (where the data is being recovered from it). Instructions. Similar to a write command, the rewrite command returns an indication of one of the new entity locations of the rewritten data, and the host performs step 1430 to update the map. In a related embodiment in which the host executes a larger portion of the program 1400, the rewrite command includes a buffer location that is still current data in the solid state drive controller.

在某些實施例中,非標準及/或供應商獨特命令用作主機與固態磁碟機控制器之間的一通信協定之部分。根據各種實施例,通信協定係以下各項中之一或多者:SATA、小電腦系統介面(例如,SCSI)、SAS、高速周邊組件互連(例如,PCIe)、NVM Express(非揮發性記憶體)、PCIe上SCSI(例如,SOP)、Mobile Express、USB、UFS、嵌入式多媒體卡(例如,eMMC)、乙太網路、光纖通道或適合於在兩個電子裝置之間通信之任何其他協定。在一實例中,一實體位置之一指示在主機與固態磁碟機控制器之間的傳遞使用供應商獨特命令,諸如標 準讀取及寫入命令之供應商獨特版本。在另一實例中,將用於回收之所提取標頭以日誌頁(諸如SMART日誌頁)形式自固態磁碟機控制器傳遞至主機。在又一實例中,所提取標頭類似於讀取資料而處理,但藉助於一供應商獨特「讀取所提取標頭」命令而讀取。 In some embodiments, the non-standard and/or vendor unique commands are used as part of a communication protocol between the host and the solid state drive controller. According to various embodiments, the communication protocol is one or more of the following: SATA, small computer system interface (eg, SCSI), SAS, high speed peripheral component interconnect (eg, PCIe), NVM Express (non-volatile memory) SCSI (eg SOP), Mobile Express, USB, UFS, embedded multimedia card (eg eMMC), Ethernet, Fibre Channel or any other suitable for communication between two electronic devices agreement. In one example, one of the physical locations indicates that the transfer between the host and the solid state drive controller uses a vendor specific command, such as a standard A unique version of the vendor of quasi-read and write commands. In another example, the extracted header for recycling is passed from the solid state drive controller to the host in the form of a log page, such as a SMART log page. In yet another example, the extracted header is processed similar to reading the data, but is read by means of a vendor unique "read extracted header" command.

根據各種實施例,程序1200及/或程序1300及/或程序1400之步驟中之任一者由以下各項中之一或多者執行:耦合至一固態磁碟機控制器之一主機;耦合至一主機之一固態磁碟機控制器;及前述各項之任何組合。在一實例中,在主機上執行映射查找及映射維持。在另一實例中,在主機及固態磁碟機控制器中之任一者或兩者上執行讀取單元之一數目之判定。在又一實例中,在固態磁碟機控制器上執行將寫入資料拼貼至非揮發性記憶體頁中(例如,步驟1222)。在一實例中,在主機之控制下將寫入資料拼貼至固態磁碟機控制器之一緩衝器中之非揮發性記憶體頁影像中。在另一實例中,在固態磁碟機控制器上執行自讀取單元提取資料(例如,步驟1326)。在又一實例中,在固態磁碟機控制器上執行壓縮(例如,步驟1214)及解壓縮(例如,步驟1330)。在一實例中,在固態磁碟機控制器上維持統計資料(例如,步驟1238或步驟1338)。在另一實例中,在主機上執行判定非揮發性記憶體之待回收之區域(例如,步驟1406)。在又一實例中,在固態磁碟機控制器上執行將待回收之仍為當前之資料自一舊位置移動至一新位置(例如,步驟1426)。 According to various embodiments, any of the steps of program 1200 and/or program 1300 and/or program 1400 are performed by one or more of: coupling to a host of a solid state disk drive controller; coupling A solid state disk drive controller to one of the mainframes; and any combination of the foregoing. In an example, mapping lookup and mapping maintenance are performed on the host. In another example, the determination of the number of read units is performed on either or both of the host and the solid state drive controller. In yet another example, the writing of the write data to the non-volatile memory page is performed on the solid state drive controller (eg, step 1222). In one example, the write data is tiled into a non-volatile memory page image in a buffer of a solid state drive controller under the control of the host. In another example, self-reading unit extraction of data is performed on a solid state drive controller (e.g., step 1326). In yet another example, compression (eg, step 1214) and decompression (eg, step 1330) are performed on the solid state drive controller. In one example, statistics are maintained on the solid state drive controller (eg, step 1238 or step 1338). In another example, an area of the non-volatile memory to be recovered is determined on the host (eg, step 1406). In yet another example, the still-current data to be recovered is moved from an old location to a new location on the solid-state drive controller (eg, step 1426).

在某些實施例中,主機及/或固態磁碟機控制器維持使非揮發性記憶體之複數個區域中之每一者與規定性質及/或特徵相關聯之一表。在一實例中,該表使非揮發性記憶體之區域中之每一者與複數個碼率(錯誤校正碼強度)中之一特定者相關聯,從而使得儲存於區域中之每一者中之一資料量能夠根據區域中之每一者之一「健康」而變化。較健康區域使用一較高(較弱)碼率且經啟用以儲存較多使用者資 料,且較弱區域使用一較低(較強)碼率且經啟用以儲存較少使用者資料(但經啟用以校正較多錯誤)。在另一實例中,該表指示區域中有缺陷或已故障且不應被使用之區域。舉例而言,在NAND快閃之情況下,NAND快閃之複數個區塊中之某些區塊甚至在NAND快閃係新的時亦係有缺陷的,且該等區塊中之其他區塊在NAND快閃之一壽命期間可能故障。該表指示在跨越複數個NAND快閃裝置循序寫入資料(例如,使其條帶化)時必須跳過之區塊。 In some embodiments, the host and/or solid state drive controller maintains a table that associates each of a plurality of regions of non-volatile memory with specified properties and/or features. In one example, the table associates each of the regions of the non-volatile memory with a particular one of a plurality of code rates (error correction code strengths) such that it is stored in each of the regions One of the data volumes can vary depending on which one of the regions is "healthy". Use a higher (weaker) code rate for healthier areas and enable to store more user resources The weaker area uses a lower (stronger) code rate and is enabled to store less user data (but enabled to correct more errors). In another example, the table indicates an area in the area that is defective or has failed and should not be used. For example, in the case of NAND flash, some of the plurality of blocks of NAND flash are defective even when the NAND flash is new, and other areas in the blocks The block may fail during one of the NAND flash lifetimes. The table indicates the blocks that must be skipped when data is written sequentially across a plurality of NAND flash devices (eg, striped).

在某些實施例中,在主機上維持映射之一較高層次部分,且在固態磁碟機控制器上維持映射之一較低層次部分。映射之較高層次部分使標籤(或邏輯區塊位址)與非揮發性記憶體中之實體位置之各別指示相關聯。然後由固態磁碟機控制器使用映射之較低層次部分進一步轉換非揮發性記憶體中之實體位置之指示以判定非揮發性記憶體之待讀取及/或寫入之實體部分。自主機之一角度來看,實體位置之指示充當不透明控點,此乃因固態磁碟機控制器將實體位置之指示中之一者指派給在寫入之一特定資料物件,且固態磁碟機控制器經啟用以在給回實體位置之對應指示時傳回特定資料物件。換言之,非揮發性記憶體內之使用者資料組織之規定細節之知識對主機係隱藏的。有利地,固態磁碟機控制器經啟用以執行非揮發性記憶體之至少某些管理,諸如選擇碼率或判定壞區塊或非揮發性記憶體之未被主機使用之其他部分。 In some embodiments, one of the higher level portions of the map is maintained on the host and one of the lower level portions of the map is maintained on the solid state drive controller. The higher level portion of the mapping associates the tag (or logical block address) with a separate indication of the physical location in the non-volatile memory. The indication of the physical location in the non-volatile memory is then further converted by the solid state drive controller using the lower level portion of the mapping to determine the physical portion of the non-volatile memory to be read and/or written. From the perspective of the host, the indication of the physical location acts as an opaque handle, as the solid state drive controller assigns one of the indications of the physical location to one of the particular data objects being written, and the solid state disk The machine controller is enabled to return a particular data item upon returning a corresponding indication of the physical location. In other words, the knowledge of the specified details of the user profile organization in the non-volatile memory is hidden from the host system. Advantageously, the solid state drive controller is enabled to perform at least some management of non-volatile memory, such as selecting a code rate or determining other portions of the bad or non-volatile memory that are not used by the host.

在一實例中,當首先使用非揮發性記憶體之複數個區塊中之一特定者時,固態磁碟機控制器將特定區塊之複數個頁中之每一者劃分成多個(例如,八個)各別讀取單元且使用用於特定區塊之錯誤校正之複數個碼率中之一特定者。稍後,當在特定區塊被較多地磨損之後重新使用該特定區塊時,固態磁碟機控制器將該特定區塊之複數個頁中之每一者劃分成多個(例如,七個)各別讀取單元且針對該特定區塊之 錯誤校正使用碼率中之一較強者。在兩種情形中,當主機寫入儲存於特定區塊中之資料時,該特定區塊中之一實體位置之一指示獨立於該特定區塊之頁劃分成之若干個讀取單元。 In one example, when one of a plurality of blocks of non-volatile memory is first used, the solid state drive controller divides each of the plurality of pages of the particular block into a plurality (eg, , eight) each of the read units and using one of a plurality of code rates for error correction of a particular block. Later, when the particular block is reused after the particular block is worn more, the solid state drive controller divides each of the plurality of pages of the particular block into multiples (eg, seven) Each reading unit and for that particular block Error correction uses one of the stronger code rates. In both cases, when a host writes data stored in a particular block, one of the physical locations in that particular block indicates a number of read units that are divided into pages independent of that particular block.

在另一實例中,當可變大小資料橫跨非揮發性記憶體之複數個區塊中之多者時,由主機使用之實體位置之指示獨立於非揮發性記憶體之任何特定區塊係在使用中還是已標記為壞且未被使用之知識。繼續該另一實例,假設非揮發性記憶體之複數個晶粒中之一特定者之區塊7係壞的且未被使用。當該晶粒中之一先前者之區塊6中之資料橫跨至一後續區塊時,固態磁碟機控制器使用特定晶粒之區塊6。當先前晶粒之區塊7中之資料橫跨至一後續區塊時,固態磁碟機控制器跳過特定晶粒之區塊7且繼續晶粒中之下一者之區塊7中之資料。主機不具有關於資料橫跨區塊中之哪一者之知識。 In another example, when the variable size data spans the plurality of blocks of the non-volatile memory, the indication of the physical location used by the host is independent of any particular block of the non-volatile memory. In use, it has been marked as bad and not used. Continuing with this other example, it is assumed that block 7 of a particular one of the plurality of grains of the non-volatile memory is bad and unused. The solid state disk drive controller uses block 6 of a particular die when the data in one of the former tiles 6 spans to a subsequent block. When the data in block 7 of the previous die spans to a subsequent block, the solid state drive controller skips block 7 of the particular die and continues in block 7 of the lower one of the die. data. The host does not have knowledge about which of the blocks spans the data.

根據各種實施例,諸如讀取洗滌及回收之背景操作由主機、固態磁碟機控制器及其任何組合中之一或多者執行。 According to various embodiments, background operations such as read washing and recycling are performed by one or more of a host, a solid state drive controller, and any combination thereof.

根據各種實施例,主機及/或固態磁碟機控制器之一處理器之任何操作由一或多個中央處理單元中之任一者、由一或多個硬體單元及/或由前述各項之任何組合執行。 According to various embodiments, any operation of one of the host and/or solid state drive controllers is performed by any one or more of the central processing units, by one or more hardware units, and/or by the foregoing Any combination of items is executed.

根據各種實施例,一主機及/或一固態磁碟機控制器經啟用以使用以下各項中之一或多者:一傳統快閃轉變層;一可變大小快閃轉變層;一經循序讀取最佳化之可變大小快閃轉變層;任何其他類型之快閃轉換層;對非揮發性記憶體之直接存取;非揮發性記憶體之不同實體部分中之前述內容之任何組合;固態磁碟機控制器之一邏輯位址空間之不同邏輯部分之前述內容之任何組合;對非揮發性記憶體之原始實體存取;及前述各項之任何組合。 According to various embodiments, a host and/or a solid state disk drive controller is enabled to use one or more of: a conventional flash transition layer; a variable size flash transition layer; a sequential read Optimized variable size flash transition layer; any other type of flash conversion layer; direct access to non-volatile memory; any combination of the foregoing in different physical portions of non-volatile memory; Any combination of the foregoing of the logical portions of one of the logical address spaces of the solid state drive controller; access to the original entity of the non-volatile memory; and any combination of the foregoing.

根據各種實施例,主機寫入資料視情況及/或選擇性地在寫入至非揮發性記憶體之前被加密且視情況及/或選擇性地在自非揮發性記 憶體讀取之後被解密。在其他實施例中,加密在視情況及/或選擇性地壓縮主機寫入資料之後發生,且解密在將正讀取之資料視情況及/或選擇性地解壓縮以傳回至主機之前發生。 According to various embodiments, the host write data is optionally encrypted and optionally before being written to the non-volatile memory and/or optionally from the non-volatile memory before being written to the non-volatile memory. The memory is decrypted after reading. In other embodiments, the encryption occurs after the host writes the data as appropriate and/or selectively, and the decryption occurs before the data being read is optionally and/or selectively decompressed for transmission back to the host. .

儘管本文中之數項實例性實施例已使用固態磁碟機及固態磁碟機控制器,但所闡述之技術通常適用於其他輸入/輸出裝置及/或資料儲存裝置,諸如硬碟機。在各種實施例中,此等輸入/輸出裝置中所使用之非揮發性記憶體係除「固態」非揮發性記憶體之外的非揮發性記憶體,諸如硬碟機(例如,使用疊瓦式磁記錄之硬碟機)之磁片。 Although several exemplary embodiments herein have used solid state drives and solid state drive controllers, the techniques described are generally applicable to other input/output devices and/or data storage devices, such as hard disk drives. In various embodiments, non-volatile memory systems used in such input/output devices are non-volatile memory other than "solid" non-volatile memory, such as hard disk drives (eg, using shingled tiles) The magnetic disk of the magnetic recording hard disk drive).

在某些實施例中,由一多節點儲存裝置或其部分(例如一硬碟機或經啟用以與一處理器(諸如一CPU)互操作之一輸入/輸出裝置之一固態磁碟或一非揮發性記憶體控制器、一輸入/輸出控制器(諸如一晶片上RAID晶粒)及一處理器之部分、微處理器、單晶片系統、特殊應用積體電路、硬體加速器或提供前述操作之全部或部分之其他電路)執行之操作之全部或部分之各種組合由與一電腦系統進行之處理相容之一規格規定。該規格係根據各種描述,諸如硬體描述語言、電路描述、網路連線表描述、遮罩描述或佈局描述。實例描述包含但不限於:Verilog、VHDL(超高速積體電路硬體描述語言)、SPICE(積體電路通用模擬程式)、SPICE變體(諸如PSpice)、IBIS(輸入/輸出緩衝器資訊規格)、LEF(程式庫交換格式)、DEF(設計交換格式)、GDS-II(圖形資料庫系統II)、OASIS(開放藝術品系統交換標準)或其他描述。在各種實施例中,處理包含解譯、編譯、模擬及合成之任一組合以產生、驗證或規定適合包含於一或多個積體電路上之邏輯及/或電路。根據各種實施例,每一積體電路可根據多種技術來設計及/或製造。該等技術包含一可程式化技術(諸如,一場或遮罩可程式化閘陣列積體電路)、一半定製技術(諸如,一完全或部分地基於單元之積體電路)及一全定製技術(諸如,實質上專門化之一積體電路)、其任何組 合或與積體電路之設計及/或製造相容之任何其他技術。 In some embodiments, a solid state disk or a portion of an input/output device that is interoperable with a multi-node storage device or portion thereof (eg, a hard disk drive or enabled to communicate with a processor (such as a CPU) Non-volatile memory controller, an input/output controller (such as a RAID die on a wafer) and a portion of a processor, a microprocessor, a single-chip system, a special application integrated circuit, a hardware accelerator or the like Various combinations of all or part of the operations performed in whole or in part of the operation are specified by one specification compatible with the processing performed by a computer system. The specification is based on various descriptions such as hardware description language, circuit description, network connection table description, mask description or layout description. Example descriptions include, but are not limited to, Verilog, VHDL (Very High Speed Integrated Circuit Hardware Description Language), SPICE (Integrated Analog Program for Integrated Circuits), SPICE variants (such as PSpice), IBIS (Input/Output Buffer Information Specification) , LEF (Library Exchange Format), DEF (Design Exchange Format), GDS-II (Graphics Database System II), OASIS (Open Art System Exchange Standard) or other descriptions. In various embodiments, the processing includes any combination of interpretation, compilation, simulation, and synthesis to generate, verify, or specify logic and/or circuitry suitable for inclusion on one or more integrated circuits. According to various embodiments, each integrated circuit can be designed and/or fabricated in accordance with a variety of techniques. These technologies include a programmable technique (such as a field or mask programmable gate array integrated circuit), half of the custom technology (such as a fully or partially unit-based integrated circuit) and a full custom Technology (such as essentially specialized one integrated circuit), any group thereof Any other technique that is compatible with or compatible with the design and/or manufacture of the integrated circuit.

由圖1至圖14之圖式執行之功能可使用以下各項中之一或多者來實施:一習用通用處理器、數位電腦、微處理器、微控制器、RISC(精簡指令集電腦)處理器、CISC(複雜指令集電腦)處理器、SIMD(單指令多資料)處理器、信號處理器、中央處理單元(CPU)、算術邏輯單元(ALU)、視訊數位信號處理器(VDSP)及/或根據本說明書之教示程式化之類似運算機器,如熟習此項技術者將明瞭。熟練之程式設計員基於本發明之教示可容易地製備適當軟體、韌體、譯碼、常式、指令、操作碼、微碼及/或程式模組,如熟習此項技術者亦將明瞭。通常由機器實施方案之處理器中之一或多者自一媒體或數個媒體執行該軟體。 The functions performed by the diagrams of Figures 1 through 14 can be implemented using one or more of the following: a conventional general purpose processor, a digital computer, a microprocessor, a microcontroller, a RISC (Reduced Instruction Set Computer) Processor, CISC (complex instruction set computer) processor, SIMD (single instruction multiple data) processor, signal processor, central processing unit (CPU), arithmetic logic unit (ALU), video digital signal processor (VDSP) and / or a similar computing machine that is stylized according to the teachings of this specification, as will be apparent to those skilled in the art. Skilled programmers can readily prepare suitable software, firmware, decoding, routines, instructions, opcodes, microcode, and/or programming modules based on the teachings of the present invention, as will be apparent to those skilled in the art. The software is typically executed by one or more of the processors of the machine implementation from a medium or media.

本發明亦可藉由以下各項之製備來實施:ASIC(特殊應用積體電路)、平台ASIC、FPGA(場可程式化閘陣列)、PLD(可程式化邏輯裝置)、CPLD(複雜可程式化邏輯裝置)、閘海(sea-of-gate)、RFIC(射頻積體電路)、ASSP(特殊應用標準產品)、一或多個單塊積體電路、配置為覆晶模組及/或多晶片模組之一或多個晶片或晶粒,或藉由互連習用組件電路之一適當網路,如本文中所闡述,熟習此項技術者將容易明瞭該等習用組件電路之修改。 The invention can also be implemented by the following preparations: ASIC (Special Application Integrated Circuit), Platform ASIC, FPGA (Field Programmable Gate Array), PLD (Programmable Logic Device), CPLD (Complex Programmable) Logic device), sea-of-gate, RFIC (RF integrated circuit), ASSP (Special Application Standard Product), one or more monolithic integrated circuits, configured as flip chip modules and/or One or more of the multi-chip modules or dies, or a suitable network by interconnecting one of the conventional component circuits, as will be apparent to those skilled in the art, will be readily apparent to those skilled in the art.

因此,本發明亦可包含一電腦產品,其可為包含可用於程式化一機器以執行根據本發明之一或多個程序或方法之指令之一或若干儲存媒體及/或一或若干傳輸媒體。機器對電腦產品中所含有之指令之執行連同周圍電路之操作可將輸入資料變換成儲存媒體上之一或多個檔案及/或表示一實體物件或資產(諸如一音訊及/或視覺繪示)之一或多個輸出信號。該儲存媒體可包含但不限於:任何類型之碟,包含軟碟、硬碟機、磁碟、光碟、CD-ROM、DVD及磁光碟以及電路,諸如ROM(唯讀記憶體)、RAM(隨機存取記憶體)、EPROM(可抹除可程 式化ROM)、EEPROM(電可抹除可程式化ROM)、UVPROM(紫外線可抹除可程式化ROM)、快閃記憶體、磁卡、光卡及/或適合於儲存電子指令之任何類型之媒體。 Accordingly, the present invention may also comprise a computer product, which may comprise one or several storage media and/or one or several transmission media that can be used to program a machine to perform one or more of the programs or methods in accordance with the present invention. . The execution of the instructions contained in the computer product, together with the operation of the surrounding circuitry, may transform the input data into one or more files on the storage medium and/or represent a physical object or asset (such as an audio and/or visual depiction). One or more output signals. The storage medium may include, but is not limited to, any type of disc, including floppy disks, hard drives, disks, compact discs, CD-ROMs, DVDs, and magneto-optical discs and circuits, such as ROM (read only memory), RAM (random Access memory), EPROM (can be erased) ROM), EEPROM (Electrically Erasable Programmable ROM), UVPROM (UV erasable programmable ROM), flash memory, magnetic card, optical card and/or any type suitable for storing electronic instructions media.

本發明之要素可形成一或多個裝置、單元、組件、系統、機器及/或設備之部分或全部。該等裝置可包含但不限於:伺服器、工作站、儲存陣列控制器、儲存系統、個人電腦、膝上型電腦、筆記型電腦、掌上型電腦、個人數位助理、可攜式電子裝置、電池供電裝置、機上盒、編碼器、解碼器、轉碼器、壓縮器、解壓縮器、預處理器、後處理器、傳輸器、接收器、收發器、密碼電路、蜂巢式電話、數位相機、定位及/或導航系統、醫療裝備、抬頭顯示器、無線裝置、音訊記錄、音訊儲存及/或音訊回放裝置、視訊記錄、視訊儲存及/或視訊回放裝置、遊戲平台、周邊設備及/或多晶片模組。熟習此項技術者將理解,本發明之要素可在其他類型之裝置中實施以滿足一特定應用之準則。 Elements of the invention may form part or all of one or more devices, units, components, systems, machines, and/or devices. Such devices may include, but are not limited to, servers, workstations, storage array controllers, storage systems, personal computers, laptops, notebooks, palmtop computers, personal digital assistants, portable electronic devices, battery powered devices Device, set-top box, encoder, decoder, transcoder, compressor, decompressor, pre-processor, post-processor, transmitter, receiver, transceiver, crypto circuit, cellular phone, digital camera, Positioning and/or navigation system, medical equipment, heads-up display, wireless device, audio recording, audio storage and/or audio playback device, video recording, video storage and/or video playback device, gaming platform, peripherals and/or multi-chip Module. Those skilled in the art will appreciate that the elements of the present invention can be implemented in other types of devices to meet the criteria for a particular application.

術語「可」及「通常」在本文中結合「係」及動詞使用時意在傳達說明為示範性的且相信足夠廣泛以囊括該揭示內容中所呈現之特定實例以及可基於該揭示內容導出之替代實例兩者之意圖。如本文中所使用之術語「可」及「通常」不應理解為必定暗示省略一對應要素之期望或可能性。 The use of the terms "may" and "generally" in this context is intended to convey the description as exemplary and is believed to be broad enough to encompass the specific examples presented in the disclosure and may be derived based on the disclosure. The intent of the alternative examples. The terms "may" and "generally" as used herein are not to be construed as necessarily implying that the o

儘管已特別地參考本發明之實施例展示並闡述了本發明,但熟習此項技術者將理解,可在不背離本發明之範疇之情況下做出形式及細節上之各種改變。 While the invention has been shown and described with reference to the embodiments of the present invention, it will be understood

Claims (20)

一種利用一經劃分快閃轉變(partitioned flash translation)層而儲存資料之方法,其包括以下步驟:自一主機接收將被寫入之第一資料;及儲存產生自該第一資料之第二資料於一記憶體中,其中壓縮該第一資料而產生該第二資料,該第二資料具有可變之一大小儲存該第二資料於該記憶體之複數個實體位置中,保存該第二資料之該複數個實體位置之一初始實體位置係該記憶體中之一下一未寫入位置,該第二資料之大小係儲存於對該記憶體為局部之該快閃轉變層之一第一劃分中,及在該記憶體中之該第二資料之該初始實體位置係儲存於該主機之該快閃轉變層之一第二劃分中。 A method for storing data by dividing a partitioned flash translation layer, comprising the steps of: receiving a first data to be written from a host; and storing a second data generated from the first data a memory in which the first data is compressed to generate the second data, the second data having a variable size to store the second data in a plurality of physical locations of the memory, and storing the second data One of the plurality of physical locations initial physical location is one of the next unwritten locations in the memory, and the size of the second data is stored in a first partition of one of the flash transition layers local to the memory And the initial physical location of the second data in the memory is stored in a second partition of the flash transition layer of the host. 如請求項1之方法,其進一步包括以下步驟:自該主機接收具有該第二資料之該初始實體位置之一讀取命令;自該快閃轉變層之該第一劃分讀取該第二資料之該大小;及基於該初始實體位置與該第二資料之該大小藉由讀取該記憶體之一部分來擷取該第二資料。 The method of claim 1, further comprising the steps of: receiving, from the host, a read command of the initial physical location having the second data; reading the second data from the first partition of the flash transition layer The size is obtained; and the second data is retrieved by reading a portion of the memory based on the initial physical location and the size of the second data. 如請求項2之方法,其進一步包括以下步驟:藉由將如自該記憶體擷取之該第二資料解壓縮而重新形成該第一資料;及將如所重新形成之該第一資料傳回至該主機。 The method of claim 2, further comprising the steps of: reforming the first data by decompressing the second data retrieved from the memory; and transmitting the first data as reformed Go back to the host. 如請求項1之方法,其進一步包括以下步驟:將與該第一資料相關聯之一識別符儲存於該記憶體中作為與該第二資料相關聯之一標頭之至少一部分。 The method of claim 1, further comprising the step of storing an identifier associated with the first material in the memory as at least a portion of a header associated with the second material. 如請求項4之方法,其進一步包括以下步驟:在該主機中維持一映射,其中該映射使該識別符與該記憶體中之該第二資料之該初始實體位置相關聯。 The method of claim 4, further comprising the step of maintaining a mapping in the host, wherein the mapping associates the identifier with the initial physical location of the second material in the memory. 如請求項4之方法,其中該識別符係一邏輯區塊位址,該初始實體位置係在該記憶體中保存該第二資料之複數個讀取單元中之一者之一位址,且該複數個讀取單元中之每一者包括該第二資料之一各別部分及保護該第二資料之該各別部分之一各別錯誤校正資訊。 The method of claim 4, wherein the identifier is a logical block address, and the initial physical location is an address of one of a plurality of read units of the second data stored in the memory, and Each of the plurality of reading units includes a respective one of the second data and a respective one of the respective portions of the second data to correct error correction information. 如請求項6之方法,其中該記憶體具有複數個頁,該位址在保存該第二資料之該複數個頁中之一第一頁中,該第一頁包含一第一數目個保存該第二資料之該複數個讀取單元,該複數個頁中之一第二頁包含一第二數目個保存該第二資料之該複數個讀取單元,且該第一數目不同於該第二數目。 The method of claim 6, wherein the memory has a plurality of pages, the address is in a first page of the plurality of pages storing the second data, the first page includes a first number of The plurality of reading units of the second data, the second page of the plurality of pages comprising a second number of the plurality of reading units for storing the second data, and the first number is different from the second number. 如請求項1之方法,其中該下一未寫入位置鄰接該記憶體之一實體位址空間中之先前所寫入資料。 The method of claim 1, wherein the next unwritten location is adjacent to previously written data in a physical address space of one of the memories. 如請求項1之方法,其中該等步驟在一固態驅動控制器中執行。 The method of claim 1, wherein the steps are performed in a solid state drive controller. 一種利用一經劃分快閃轉變層而儲存資料之方法,其包括以下步驟:自一主機接收將被寫入之資料,其中該資料具有可變之一大小;及將該資料儲存於一記憶體中,其中該資料係儲存於該記憶體之複數個實體位置中,保存該資料之該複數個實體位置之一初始實體位置係該記憶體中之一下一未寫入位置,該資料之大小係儲存於對該記憶體為局部之該快閃轉變層之一第一劃分中,及在該記憶體中之該資料之該初始實體位置係儲存於該主機之 該快閃轉變層之一第二劃分中。 A method for storing data by dividing a flash transition layer, comprising the steps of: receiving data to be written from a host, wherein the data has a variable size; and storing the data in a memory The data is stored in a plurality of physical locations of the memory, and one of the plurality of physical locations storing the data is an initial physical location of the memory, and the size of the data is stored. The first physical partition of the flash transition layer that is local to the memory, and the initial physical location of the data in the memory is stored in the host The flash transition layer is in a second division. 如請求項10之方法,其進一步包括以下步驟:自該主機接收在該記憶體中具有保存該資料之該初始實體位置之一讀取命令;自該快閃轉變層之該第一劃分讀取該資料之該大小;及基於該初始實體位置與該資料之該大小藉由讀取該記憶體之一部分來擷取該資料。 The method of claim 10, further comprising the step of: receiving, from the host, a read command having the initial physical location in the memory that holds the data; reading the first partition from the flash transition layer The size of the data; and based on the initial physical location and the size of the data, the data is retrieved by reading a portion of the memory. 如請求項11之方法,其進一步包括以下步驟:將該資料傳回至該主機。 The method of claim 11, further comprising the step of transmitting the data back to the host. 如請求項10之方法,其進一步包括以下步驟:將與該資料相關聯之一識別符儲存於該記憶體中作為與該資料相關聯之一標頭之至少一部分。 The method of claim 10, further comprising the step of storing an identifier associated with the material in the memory as at least a portion of a header associated with the material. 如請求項13之方法,其進一步包括以下步驟:在該主機中維持一映射,其中該映射使該識別符與該記憶體中之該資料之該初始實體位置之該指示相關聯。 The method of claim 13, further comprising the step of maintaining a mapping in the host, wherein the mapping associates the identifier with the indication of the initial physical location of the material in the memory. 如請求項13之方法,其中該識別符係一邏輯區塊位址,該初始實體位置係在該記憶體中保存該資料之複數個讀取單元中之一者之一位址,且該複數個讀取單元中之每一者包括該資料之一各別部分及保護該資料之該各別部分之一各別錯誤校正資訊。 The method of claim 13, wherein the identifier is a logical block address, and the initial physical location is an address of one of a plurality of read units in the memory that holds the data, and the complex number Each of the reading units includes a respective one of the data and a respective error correction information that protects one of the respective portions of the data. 如請求項15之方法,其中該記憶體具有複數個頁,該位址在保存該資料之該複數個頁中之一第一頁中,該第一頁包含一第一數目個保存該資料之該複數個讀取單元,該複數個頁中之一第二頁包含一第二數目個保存該資料之該複數個讀取單元,且該第一數目不同於該第二數目。 The method of claim 15, wherein the memory has a plurality of pages, the address being in a first page of the plurality of pages storing the data, the first page comprising a first number of data to be saved The plurality of reading units, the second page of the plurality of pages includes a second number of the plurality of reading units for storing the data, and the first number is different from the second number. 如請求項10之方法,其中該下一未寫入位置鄰接該記憶體之一實體位址空間中之先前所寫入資料。 The method of claim 10, wherein the next unwritten location is adjacent to previously written data in a physical address space of one of the memories. 如請求項10之方法,其中該等步驟在一固態驅動控制器中執行。 The method of claim 10, wherein the steps are performed in a solid state drive controller. 一種儲存設備,其包括:一介面,其經組態以處理自一記憶體及至該記憶體之複數個讀取及寫入操作;及一控制電路,其經組態以自一主機接收第一資料,及儲存產生自該第一資料之第二資料於該記憶體中,其中壓縮該第一資料而產生該第二資料,該第二資料具有可變之一大小,儲存該第二資料於該記憶體之複數個實體位置中,保存該第二資料之該複數個實體位置之一初始實體位置係該記憶體中之一下一未寫入位置,該第二資料之大小係儲存於對該記憶體為局部之該快閃轉變層之一第一劃分中,及在該記憶體中之該第二資料之該初始實體位置係儲存於該主機之該快閃轉變層之一第二劃分中。 A storage device comprising: an interface configured to process a plurality of read and write operations from a memory and to the memory; and a control circuit configured to receive the first from a host And storing the second data generated from the first data in the memory, wherein compressing the first data to generate the second data, the second data having a variable size, storing the second data One of the plurality of physical locations of the memory, the initial physical location of the second physical location is one of the next unwritten locations in the memory, and the size of the second data is stored in the The first partition of the flash transition layer in which the memory is local, and the initial physical location of the second data in the memory is stored in a second partition of the flash transition layer of the host . 如請求項19之設備,其中該介面及該控制電路係一固態驅動控制器之一部分。 The device of claim 19, wherein the interface and the control circuit are part of a solid state drive controller.
TW103127357A 2013-08-16 2014-08-08 Translation layer partitioned between host and controller TWI637262B (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US201361866672P 2013-08-16 2013-08-16
US61/866,672 2013-08-16
US201361873357P 2013-09-03 2013-09-03
US61/873,357 2013-09-03
US201361888681P 2013-10-09 2013-10-09
US61/888,681 2013-10-09
US201361893383P 2013-10-21 2013-10-21
US61/893,383 2013-10-21
US14/060,799 2013-10-23
US14/060,799 US9329991B2 (en) 2013-01-22 2013-10-23 Translation layer partitioned between host and controller

Publications (2)

Publication Number Publication Date
TW201518944A TW201518944A (en) 2015-05-16
TWI637262B true TWI637262B (en) 2018-10-01

Family

ID=51662491

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103127357A TWI637262B (en) 2013-08-16 2014-08-08 Translation layer partitioned between host and controller

Country Status (6)

Country Link
JP (1) JP6443794B2 (en)
KR (1) KR102328612B1 (en)
CN (1) CN104679446B (en)
DE (1) DE102014111670A1 (en)
GB (1) GB2519211A (en)
TW (1) TWI637262B (en)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016139749A1 (en) * 2015-03-03 2016-09-09 株式会社日立製作所 Computer system and storage control method
CN106101096B (en) * 2016-06-10 2022-06-28 北京数盾信息科技有限公司 High-speed encryption module based on interface bus separation
US10236909B2 (en) * 2017-03-31 2019-03-19 Sandisk Technologies Llc Bit-order modification for different memory areas of a storage device
US10534718B2 (en) 2017-07-31 2020-01-14 Micron Technology, Inc. Variable-size table for address translation
US10354732B2 (en) * 2017-08-30 2019-07-16 Micron Technology, Inc. NAND temperature data management
JP6785205B2 (en) * 2017-09-21 2020-11-18 キオクシア株式会社 Memory system and control method
JP6785204B2 (en) 2017-09-21 2020-11-18 キオクシア株式会社 Memory system and control method
FR3072476A1 (en) * 2017-10-13 2019-04-19 Proton World International N.V. MEMORY LOGIC UNIT FOR FLASH MEMORY
JP6982468B2 (en) * 2017-10-27 2021-12-17 キオクシア株式会社 Memory system and control method
CN107861752A (en) * 2017-11-29 2018-03-30 英业达科技有限公司 Server system
US10878859B2 (en) 2017-12-20 2020-12-29 Micron Technology, Inc. Utilizing write stream attributes in storage write commands
CN108319429B (en) * 2018-01-10 2021-02-19 北京思特奇信息技术股份有限公司 Method for accelerating file reading and computer equipment
JP6960877B2 (en) 2018-03-22 2021-11-05 キオクシア株式会社 Memory system
US11803325B2 (en) 2018-03-27 2023-10-31 Micron Technology, Inc. Specifying media type in write commands
CN109471596B (en) * 2018-10-31 2022-03-18 北京小米移动软件有限公司 Data writing method, device, equipment and storage medium
US11048413B2 (en) * 2019-06-12 2021-06-29 Samsung Electronics Co., Ltd. Method for reducing read ports and accelerating decompression in memory systems
US11188459B2 (en) * 2019-12-23 2021-11-30 Micron Technology, Inc. Data block switching at a memory sub-system
KR102267477B1 (en) 2020-02-20 2021-06-22 삼성전자주식회사 Storage device and operating method of the same
US11481115B2 (en) * 2020-08-17 2022-10-25 Western Digital Technologies, Inc. Host-managed hardware compression with zoned namespaces
GB2603459B (en) * 2021-01-22 2023-05-10 Advanced Risc Mach Ltd Data processing systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200832440A (en) * 2007-01-25 2008-08-01 Genesys Logic Inc Flash memory translation layer system
US20090222596A1 (en) * 2007-12-06 2009-09-03 David Flynn Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9113469D0 (en) * 1991-06-21 1991-08-07 Anamartic Ltd Data storage management systems
US5943692A (en) * 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
JP3766188B2 (en) * 1997-08-22 2006-04-12 沖電気工業株式会社 Logical format conversion method and data storage medium
JP2000076117A (en) * 1998-08-31 2000-03-14 Kano Densan Hongkong Yugenkoshi Electronic device, control method therefor and storage medium
JP2001101071A (en) * 1999-09-29 2001-04-13 Victor Co Of Japan Ltd Data storage device using flash type memory and data managing method for the same memory
KR100706242B1 (en) * 2005-02-07 2007-04-11 삼성전자주식회사 Memory system and run level address mapping table forming method thereof
WO2009110377A1 (en) * 2008-03-05 2009-09-11 日本電気株式会社 Metaserver and file management system
US7933303B2 (en) 2009-06-17 2011-04-26 Sumitomo Electric Industries, Ltd. Group-III nitride semiconductor laser device, and method for fabricating group-III nitride semiconductor laser device
US9058047B2 (en) 2010-08-26 2015-06-16 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device
JP5980798B2 (en) * 2010-12-01 2016-08-31 シーゲイト テクノロジー エルエルシーSeagate Technology LLC Dynamic high-level redundancy mode management of independent silicon devices
EP2666091A2 (en) * 2011-01-18 2013-11-27 LSI Corporation Higher-level redundancy information computation
US8880839B2 (en) * 2011-04-14 2014-11-04 International Business Machines Corporation Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200832440A (en) * 2007-01-25 2008-08-01 Genesys Logic Inc Flash memory translation layer system
US20090222596A1 (en) * 2007-12-06 2009-09-03 David Flynn Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Also Published As

Publication number Publication date
JP6443794B2 (en) 2018-12-26
DE102014111670A1 (en) 2015-02-19
TW201518944A (en) 2015-05-16
JP2015036982A (en) 2015-02-23
KR20150020136A (en) 2015-02-25
KR102328612B1 (en) 2021-11-17
CN104679446B (en) 2017-10-03
CN104679446A (en) 2015-06-03
GB2519211A (en) 2015-04-15
GB201414515D0 (en) 2014-10-01

Similar Documents

Publication Publication Date Title
TWI637262B (en) Translation layer partitioned between host and controller
US9329991B2 (en) Translation layer partitioned between host and controller
US10346312B2 (en) Variable-size flash translation layer
TWI537724B (en) Management of and region selection for writes to non-volatile memory
TWI609263B (en) Variable-size flash translation layer
US10055171B2 (en) Compression and formatting of data for data storage systems
JP6265746B2 (en) Mapping / conversion between storage address space and non-volatile memory address, range, and length
KR101912596B1 (en) Non-volatile memory program failure recovery via redundant arrays
KR101562781B1 (en) Self-journaling and hierarchical consistency for non-volatile storage
US9122587B2 (en) Self recovery in a solid state drive
US9335950B2 (en) Multiple stream compression and formatting of data for data storage systems
JP2014507717A (en) Calculation of higher level redundant information
WO2014201048A1 (en) Migration of encrypted data for data storage systems
US20200301847A1 (en) Memory system for controlling nonvolatile memory
TWI648675B (en) Data storage method, memory control circuit unit and memory storage device
CN115220652A (en) Method and storage device for improving performance of NAND flash memory with dense read workload
CN109460372B (en) Data storage method, memory control circuit unit and memory storage device

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees