TWI534617B - 用於操作記憶體裝置之方法及電腦可讀媒體 - Google Patents

用於操作記憶體裝置之方法及電腦可讀媒體 Download PDF

Info

Publication number
TWI534617B
TWI534617B TW103102153A TW103102153A TWI534617B TW I534617 B TWI534617 B TW I534617B TW 103102153 A TW103102153 A TW 103102153A TW 103102153 A TW103102153 A TW 103102153A TW I534617 B TWI534617 B TW I534617B
Authority
TW
Taiwan
Prior art keywords
data
mapping
read
page
length
Prior art date
Application number
TW103102153A
Other languages
English (en)
Other versions
TW201443640A (zh
Inventor
厄爾T 柯罕
Original Assignee
Lsi公司
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
Application filed by Lsi公司 filed Critical Lsi公司
Publication of TW201443640A publication Critical patent/TW201443640A/zh
Application granted granted Critical
Publication of TWI534617B publication Critical patent/TWI534617B/zh

Links

Classifications

    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • 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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

用於操作記憶體裝置之方法及電腦可讀媒體 相關申請案之交叉參考
本申請案主張隨附申請資料表、請求或傳送文件(適時,若存在)之優先權權利。在由本申請案之類型允許之範圍內,本申請案出於全部目的以引用方式併入在創作本發明時與本申請案共同擁有之全部下列申請案:2010年3月22日申請、第一發明人為Radoslav DANILAK及名稱為「ACCESSING COMPRESSED DATA OF VARYING-SIZED QUANTA IN NON-VOLATILE MEMORY」之美國臨時申請案(檔案號SF-10-02及專利申請號61/316,373);2010年12月1日申請、第一發明人為Jeremy Isaac Nathaniel WERNER及名稱為「DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS」之美國臨時申請案(檔案號SF-10-10及專利申請號61/418,846);2011年10月5日申請、第一發明人為Earl T.COHEN及名稱為「SELF-JOURNALING AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORAGE」之美國臨時申請案(檔案號SF-10-10及專利申請號61/543,707);及2013年1月22日申請、第一發明人為Earl T.COHEN及名稱為「STORAGE ADDRESS SPACE TO NVM ADDRESS,SPAN,AND LENGTH MAPPING/CONVERTING」之美國臨時申請案(檔案號SF-10-12及專利申請號61/755,169)。
領域:需要改進快閃記憶體儲存技術以改良效能、效率及使用效用。
相關技術:若未被明確識別為公開或熟知,則本文所提及之技術及概念(其包含背景、定義或比較目的)不應被解譯為承認此等技術及概念為先前公開已知或否則為先前技術之部分。本文所引用之全部參考(若存在)(其包含專利、專利申請案及公開案)之全部內容以引用方式併入本文中用於全部目的,無論具體是否併入。
可以諸多方式將本發明實施為(例如)一程序、一製品、一器具、一系統、一物質組合物及一電腦可讀媒體,諸如一電腦可讀儲存媒體(例如一光學及/或磁性大容量儲存裝置(諸如一磁碟)中之媒體、具有非揮發性儲存器(諸如快閃儲存器)之一積體電路)或一電腦網路(其中通過光學或電子通信鏈路而發送程式指令)。【實施方式】提供實現上文所識別之領域中之成本、利潤率、效能、效率及使用效用之改良的本發明之一或多項實施例之一說明。【實施方式】包含[序論]以促進【實施方式】之剩餘部分之理解。[序論]包含根據本文所描述之概念之系統、方法、製品及電腦可讀媒體之一或多者之[實例性實施例]。如[結論]中更詳細所討論,本發明涵蓋所發佈之技術方案之範疇內之全部可能修改及變動。
100‧‧‧固態磁碟/碟機(SSD)控制器
101‧‧‧固態磁碟/碟機(SSD)
102‧‧‧主機
103‧‧‧(選用)交換器/網狀架構/中間控制器
104‧‧‧中間介面
105‧‧‧作業系統(OS)
106‧‧‧韌體(FW)
107‧‧‧驅動程式
107D‧‧‧虛線箭頭(主機軟體與輸入/輸出(I/O)裝置之間之通信)
109‧‧‧應用程式
109D‧‧‧虛線箭頭(經由驅動程式之應用程式與輸入/輸出(I/O)裝置之間之通信)
109V‧‧‧虛線箭頭(經由虛擬函式(VF)之應用程式與輸入/輸出(I/O)裝置之間之通信)
110‧‧‧外部介面
111‧‧‧主機介面
112C‧‧‧(選用)卡片記憶體
113‧‧‧標籤追蹤
114‧‧‧多裝置管理軟體
115‧‧‧主機軟體
116‧‧‧輸入/輸出(I/O)卡
117‧‧‧輸入/輸出(I/O)及儲存裝置/資源
118‧‧‧伺服器
119‧‧‧區域網路(LAN)/廣域網路(WAN)
121‧‧‧資料處理
123‧‧‧引擎
131‧‧‧緩衝區
133‧‧‧直接記憶體存取(DMA)
135‧‧‧錯誤校正碼(ECC)-X
137‧‧‧記憶體
141‧‧‧映射
143‧‧‧表
151‧‧‧回收器
161‧‧‧錯誤校正碼(ECC)
171‧‧‧中央處理單元(CPU)
172‧‧‧中央處理單元(CPU)核心
173‧‧‧命令管理
175‧‧‧緩衝區管理
177‧‧‧轉譯管理
179‧‧‧連貫性管理
180‧‧‧記憶體介面
181‧‧‧裝置管理
182‧‧‧識別碼管理
190‧‧‧裝置介面
191‧‧‧裝置介面邏輯
192‧‧‧快閃裝置
193‧‧‧排程
194‧‧‧快閃晶粒
199‧‧‧非揮發性記憶體(NVM)
211‧‧‧邏輯區塊位址(LBA)
213‧‧‧邏輯頁碼(LPN)
215‧‧‧邏輯位移
221‧‧‧邏輯頁碼(LPN)之映射資訊
223‧‧‧讀取單元位址
225‧‧‧讀取單元長度
311‧‧‧讀取資料
313‧‧‧第一讀取單元
315‧‧‧最後讀取單元
401A‧‧‧讀取單元(RU)
401B‧‧‧讀取單元(RU)
410B‧‧‧標頭標記(HM)
411A‧‧‧標頭1
411B‧‧‧標頭1
412B‧‧‧標頭2
419A‧‧‧標頭N
419B‧‧‧標頭N
421A‧‧‧資料位元組
421B至429B‧‧‧資料位元組
431A‧‧‧選用之填充位元組
431B‧‧‧選用之填充位元組
501‧‧‧標頭
511‧‧‧類型
513‧‧‧最後指示符
515‧‧‧旗標
517‧‧‧邏輯頁碼(LPN)
519‧‧‧長度
521‧‧‧位移
600‧‧‧分割方向
610.0至610.65‧‧‧快閃晶粒
610.0B0至610.65BB‧‧‧區塊
610.0P0至610.65PP‧‧‧頁面
610.0R0至610.65RR‧‧‧讀取單元(RU)
660.0至660.R‧‧‧R區塊
700‧‧‧邏輯區塊位址(LBA)至非揮發性記憶體(NVM)位置之映射
710‧‧‧第一層級映射(FLM)
710.1至710.M‧‧‧第二層級映射(SLM)頁面/長度
710S‧‧‧第二層級映射(SLM)指標
720‧‧‧第二層級映射(SLM)頁面
720.1至720.N‧‧‧邏輯區塊(LB)頁面/長度
720L‧‧‧邏輯區塊(LB)指標
721‧‧‧邏輯區塊位址(LBA)
722‧‧‧整數除法器
722Q‧‧‧第一層級映射(FLM)索引
722R‧‧‧第二層級映射(SLM)頁面索引
723‧‧‧第二層級映射(SLM)項/第二層級映射(SLM)頁面(CSR)
822‧‧‧編碼長度資訊
830‧‧‧長度/跨度解碼
832‧‧‧跨度
832A‧‧‧跨度
834‧‧‧長度
834A‧‧‧長度
850‧‧‧資料
852‧‧‧讀取單元(RU)
854‧‧‧資料影像
圖1A繪示一固態磁碟/碟機(SSD)之一實施例之選定細節,該SSD包含:一SSD控制器,其使用(諸如)一位址映射功能之表項內之位置及長度相關資訊之各種編碼技術來實施儲存位址空間對非揮發性記憶 體(NVM)位址、跨度及長度映射/轉換;及電路,其用於管理非揮發性儲存器,諸如快閃記憶體。
圖1B繪示包含圖1A之SSD之一或多個例項之系統之各種實施例之選定細節。
圖2繪示映射一邏輯區塊位址(LBA)之一邏輯頁碼(LPN)部分之一實施例之選定細節。
圖3繪示將一非揮發性記憶體(NVM)存取於一讀取單元位址處以產生組織為各種讀取單元之讀取資料(共同具有以讀取單元之量子量測之一長度)之一實施例之選定細節。
圖4A繪示一讀取單元之一實施例之選定細節。
圖4B繪示一讀取單元之另一實施例之選定細節。
圖5繪示具有某數目個欄位之一標頭之一實施例之選定細節。
圖6繪示多個NVM裝置之區塊、頁面及讀取單元之一實施例之選定細節。
圖7繪示經由具有一第一層級映射(FLM)頁面及一或多個第二層級映射(SLM)頁面之一兩層級映射而將LBA映射至儲存於一NVM中之邏輯區塊(LB)之一實施例之選定細節。
圖8係繪示資料長度及跨度及解碼經編碼之長度資訊以獲得該資料長度及該跨度之值之實例之一概念圖。
下文中提供本發明之一或多項實施例之一詳細描述及繪示本發明之選定細節之附圖。結合該等實施例而描述本發明。本文之該等實施例應被理解為僅具例示性,本發明決不受限於本文之該等實施例之任何者或全部,且本發明涵蓋諸多替代例、修改方案及等效物。為避免說明千篇一律,可將各種標示用語(其包含(但不限於)第一、最後、某些、各種、進一步、其他、特定、選定、一些及顯著)應用於單獨 實施例組;如本文所使用,此等標示決不意謂傳達品質或任何形式之偏好或偏見,而是僅意謂使該等單獨組便於區別。可在本發明之範疇內變更所揭示程序之一些操作之順序。儘管多項實施例用以描述程序、方法及/或程式指令特徵之變動,但可考量根據一預定準則或一動態判定準則而執行分別對應於複數個該多項實施例之複數個操作模式之一者之靜態及/或動態選擇之其他實施例。下列描述中闡釋諸多特定細節以提供本發明之一透徹理解。該等細節僅供例示,且可在不具有該等細節之部分或全部之情況下根據申請專利範圍而實踐本發明。出於清楚之目的,未詳細描述本發明之相關技術領域中已知之技術材料,使得本發明不會徒然不清楚。
[序論]
包含此[序論]以僅促進【實施方式】之更快理解;本發明不受限於[序論]中所呈現之概念(其包含詳述實例,若存在),此係因為任何序論之段落必然為整個主題之一精簡觀點且並非意謂一詳盡或限制描述。例如,下列序論僅對某些實施例提供受限於空間及組織之概述資訊。存在諸多其他實施例,其包含最終將在本說明書之全部剩餘部分中繪製、討論其主張之實施例。
[縮寫詞]
此處所定義之各種速記縮寫(例如縮寫詞)之至少部分意指本文所使用之某些元件。
由一固態儲存系統之一控制器執行儲存位址空間對NVM位址、跨度及長度映射/轉換,該控制器包含一映射功能以將來自一主機之一邏輯區塊位址轉換成該NVM之一最小讀取單元之一位址。該映射功能提供對應於該邏輯區塊位址之跨度及長度資訊。該跨度資訊指定待讀取之鄰接最小讀取單元之數目以將資料(其對應於該邏輯區塊位址)提供至該主機。該長度資訊指定與提供至該主機之該資料相關之該等鄰接最小讀取單元之數目。該經轉換之位址及該長度資訊可用於改良該NVM之不再需要(例如釋放)部分之回收,且可用於促進自斷電及/或非所欲服務中斷恢復。在各種實施例中,經由一或多個映射而實施該映射功能。
根據各種實施例,該映射為下列之一或多者:單層級映射;兩層級映射;多層級映射;直接映射;相關聯映射;及使主機協定之LBA與NVM中之實體儲存位址相關聯之任何其他方法。例如,在一些實施方案中,兩層級映射包含使一LBA之一第一函式與複數個第二層級映射頁面之一者之NVM中之一各自位址相關聯之一第一層級映射,且該等第二層級映射頁面之各者使該LBA之一第二函式與對應於該LBA之資料之NVM中之一各自位址相關聯。在進一步實施例中,該LBA之該第一函式及該LBA之該第二函式之一實例為將一LBA除以 等於該等第二層級映射頁面之各者中所包含之項數之整數時所獲得之一商及一餘數。將該複數個第二層級映射頁面統稱為一第二層級映射。在本文中,一映射之一或多個項之涉及內容意指任何類型之映射(其包含單層級映射、兩層級映射之一第一層級、兩層級映射之一第二層級、及多層級映射之任何層級、或具有項之任何其他類型之映射)之一或多個項。
根據各種實施例,一第二層級映射(或多層級映射之一較低層級)之映射頁面之各者進行下列之一或多者:包含與該等映射頁面之其他者相同之項數;包含與該等映射頁面之至少一些其他者不同之項數;包含具有與該等映射頁面之其他者相同之細微度之項;包含具有與該等映射頁面之其他者不同之細微度之項;包含全部具有相同細微度之項;包含具有多個細微度之項;包含指定映射頁面之內容之一格式及/或佈局之一各自標頭;及具有任何其他格式、佈局或組織以表示映射頁面之項。例如,一第一第二層級映射頁面具有每項4KB之一細微度之一規格,且一第二第二層級映射頁面具有每項8KB之一細微度之一規格且僅為該第一第二層級映射頁面之項之一半。
在進一步實施例中,一較高層級映射之項包含對應較低層級映射頁面之格式及/或佈局資訊。例如,一第一層級映射中之項之各者包含相關聯之第二層級映射頁面中之項之一細微度規格。
在一些實施例中,映射包含複數個項,該等項之各者使一或多個LBA與選擇性包含NVM(其中儲存該等LBA之資料)中之一各自位置之資訊相關聯。例如,LBA指定512B磁區,且映射中之各項與該等LBA之一對準八磁區(4KB)區域相關聯。
根據各種實施例,映射之項之資訊包含下列之一或多者:NVM中之一位置;NVM中之一讀取單元之一位址;用於獲得儲存於NVM中之相關聯LBA之資料的待讀取之讀取單元之數目;儲存於NVM中 之相關聯LBA之資料之一大小,該大小具有視情況及/或選擇性大於1個位元組之一細微度;相關聯LBA之資料不存在於NVM中(諸如歸因於相關聯LBA之資料被修整)之一指示;相關聯LBA之資料之一性質;及相關聯LBA之資料之任何其他後設資料、性質或本性。
在一些實施例中,將NVM中之位址分組成若干區域以減少表示該等位址之一者所需之位元數。例如,若將I/O裝置之LBA分成64個區域且將NVM分成64個區域(其等各用於該等LBA區域之各者),則與一特定LBA相關聯之一映射項需要六個或更少位址位元,此係因為NVM中之區域之一者能夠由該特定LBA之區域判定。根據各種實施例,LBA之區域與NVM之區域之間之相關聯性取決於下列之一或多者:等式;一直接相關聯,諸如1對1數值函式;一查詢表;一動態映射;及用於使兩組數字相關聯之任何其他方法。
在各種實施例中,NVM中之位置包含複數個讀取單元之一者之一位址及讀取單元中之一長度及/或一跨度。該長度為儲存於NVM中之複數個資料項之一特定者之一大小,該特定資料項與包含該長度之映射之項相關聯。根據各種實施例,該長度具有下列之一或多者之一細微度:一個位元組;一個以上位元組;一個讀取單元;一讀取單元之一指定小數;根據該等資料項之一者之一最大容許壓縮速率之一細微度;及用於追蹤儲存使用率之任何其他細微度。該跨度為儲存該特定資料項之整數個讀取單元,例如,經由存取該數目個讀取單元而存取該特定資料項。在進一步實施例及/或使用案例中,該跨度之讀取單元中之一第一讀取單元及/或該跨度之讀取單元中之一最後讀取單元視情況及/或選擇性儲存該等資料項之多者之部分或全部。在一些實施例及/或使用案例中,(諸如)藉由將該跨度(有時稱為具有經編碼之長度及/或跨度之一背景之大小)儲存為與該長度之一位移而儲存經編碼之該長度及/或該跨度。在一些實施例及/或使用案例中,該長度 及/或該跨度之未使用編碼編碼額外資訊,諸如與一相關聯之資料項是否存在於NVM中有關之一指示。
將NVM中之位置編碼為一位址及長度相關資訊使儲存於NVM中之資料能夠變動大小。在一些實施例中,將長度儲存為一定點數<X.Y>,其中X為整數部分且Y為小數部分。在進一步實施例中,將長度儲存為一值組<X.Y,S>,其中X.Y為表示長度之一定點數,S為一「跨度指示」,且將跨度編碼為X+S。根據各種實施例,S為表示0或1之1位元數;S為表示-1、0或1之2位元數;S為N位元帶符號或無符號數;及S為儲存為位移預定量之帶符號或無符號數。
[實例性實施例]
在結束【實施方式】之[序論]之後,下列內容為實例性實施例之一集合,其包含明確列舉為「EC(實例組合)」之至少一些實施例以根據本文所描述之概念而提供各種實施例類型之額外描述;此等實例並不意謂相互排斥、具詳盡性或具限制性;且本發明不受限於此等實例性實施例,而是涵蓋所發佈之申請專利範圍之範疇內之全部可能修改及變動。
EC1)一種方法,其包括:將一儲存位址空間中之複數個頁面之各者第一映射至可自一非揮發性記憶體讀取之複數個最小量之可校正資料之一者之一各自位址;將該等頁面之各者第二映射至指定可自該非揮發性記憶體讀取之該等最小量之可校正資料之整數數目之一各自跨度;將該等頁面之各者第三映射至具有比可自該非揮發性記憶體讀取之該等最小量之可校正資料更精細之一細微度之單元之一各自長度;至少部分地基於該等頁面之一特定者之該各自位址及該各自跨 度而讀取儲存於該非揮發性記憶體中且與該特定頁面相關聯之資料;回應於寫入與該特定頁面相關聯之該資料,至少部分地基於該特定頁面之該各自長度而更新該非揮發性記憶體之空間使用資訊;及其中由該特定頁面之該各自位址及該各自跨度指定之可自該非揮發性記憶體讀取之該等最小量之可校正資料之一或多者同時儲存與該特定頁面相關聯之該資料及與該等頁面之至少另一者相關聯之至少一些資料兩者。
EC2)如EC1之方法,其進一步包括:存取一映射表之複數個項之一特定者,該映射表使該等頁面之各者與該等映射表項之一各自者相關聯,該特定頁面與該特定映射表項相關聯;及其中該存取包括該特定頁面之該一映射、該特定頁面之該第二映射及該特定頁面之該第三映射。
EC3)如EC2之方法,其中該特定映射項包括該各自跨度、該各自位址及該各自長度。
EC4)如EC1之方法,其中該等單元具有比一單一位元組之單元更粗糙之一細微度。
EC5)如EC1之方法,其中該非揮發性記憶體包括複數個可單獨寫入之非揮發性記憶體頁面;及其中該等可單獨寫入之非揮發性記憶體頁面之各者包括可自該非揮發性記憶體讀取之該等最小量之可校正資料之至少部分。
EC6)如EC1之方法,其中該讀取該資料包括:剖析儲存於由該特定頁面之該各自位址及該各自跨度指定之可自該非揮發性記憶體讀取之該等最小量之可校正資料之該一或多者中之一標頭,該標頭包括儲存於該非揮發性記憶體中且與該特定頁面相關聯之該資料之一位移, 該位移位於由該特定頁面之該各自位址及該各自跨度指定之可自該非揮發性記憶體讀取之該等最小量之可校正資料之該一或多者內。
EC7)如EC1之方法,其進一步包括:回應於該寫入與該特定頁面相關聯之該資料,根據與該特定頁面相關聯之該資料之一長度而更新該特定頁面之該各自長度。
EC8)如EC7之方法,其中該寫入與該特定頁面相關聯之該資料包括:減小與該特定頁面相關聯之該資料之一大小,且該特定頁面之該各自長度係根據與該特定頁面相關聯之該減小大小之該資料之一長度。
EC9)如EC8之方法,其中該減小包括壓縮。
EC10)如EC8之方法,其進一步包括:回應於該寫入與該特定頁面相關聯之該資料,根據可自用於擷取與該特定頁面相關聯之該減小資料之該待存取之非揮發性記憶體讀取之該等最小量之可校正資料之數目而更新該特定頁面之該各自跨度。
EC11)如EC1之方法,其進一步包括:回應於該寫入與該特定頁面相關聯之該資料,根據可自用於擷取與該特定頁面相關聯之該資料之該待存取之非揮發性記憶體讀取之該等最小量之可校正資料之數目而更新該特定頁面之該各自跨度。
EC12)如EC1之方法,其中與該等頁面之一第一者相關聯之資料之一大小不同於與該等頁面之一第二者相關聯之資料之一大小。
EC13)如EC1之方法,其中該等頁面之一第一者之該各自長度不同於該等頁面之一第二者之該各自長度。
EC14)如EC1之方法,其中該等頁面之一第一者之該各自跨度不同於該等頁面之一第二者之該各自跨度。
EC15)如EC1之方法,其中該等頁面之一第一者之該各自位址等於與該等頁面之一第二者相關聯之資料之該各自位址。
EC16)一種方法,其包括:將一儲存位址空間中之複數個頁面之各者第一映射至複數個讀取量子之一者之一各自位址,該等讀取量子之各者為可自一非揮發性記憶體讀取之一最小量之可校正資料;將該等頁面之各者第二映射至指定該等讀取量子之整數數目之一各自跨度;將該等頁面之各者第三映射至具有比該等最小可校正讀取量子之任何者更精細之一細微度之單元之一各自長度;至少部分地基於該等頁面之一特定者之該各自位址及該各自跨度而讀取儲存於該非揮發性記憶體中且與該特定頁面相關聯之資料;回應於寫入與該特定頁面相關聯之該資料,至少部分地基於該特定頁面之該各自長度而更新該非揮發性記憶體之空間使用資訊;及其中該特定頁面之該各自位址及該各自跨度指定藉由該讀取該資料而存取之該等讀取量子之特定者,且該等特定讀取量子之至少一者含有與該特定頁面相關聯之該資料之至少部分及與該等頁面之另一者相關聯之至少一些資料。
EC17)一種方法,其包括:至少部分地基於一儲存空間位址中之複數個頁面之一特定者之一頁面位址而判定一或多個非揮發性記憶體之複數個讀取單元之一者之一讀取單元位址;至少部分地基於該頁面位址而判定指定該等讀取單元之整數數目之一跨度;至少部分地基於該頁面位址而判定具有比該等讀取單元更精細之一細微度之單元之一長度;至少部分地基於該讀取單元位址及該跨度而讀取與該特定頁面相關聯之資料,該讀取包括存取該等讀取單元之N者,且其中N係至 少部分地基於該跨度;回應於寫入該資料,至少部分地基於該長度而更新該等非揮發性記憶體之空間使用資訊;其中該等讀取單元之各者為可自該等非揮發性記憶體讀取之一最小量子之可校正資料;及其中該等讀取單元之該N者之至少一者含有與該特定頁面相關聯之該資料之至少部分及與該等頁面之至少另一者相關聯之至少一些資料。
EC18)如EC17之方法,其中N等於該跨度。
EC19)如EC17之方法,其中:該判定該讀取單元位址包括:將該等頁面之各者映射至該等讀取單元之各自者之各自讀取單元位址,該讀取單元位址為將該特定頁面映射至其之該各自讀取單元位址;該判定該跨度包括:將該等頁面之各者映射至指定該等讀取單元之各自整數數目之各自跨度,該跨度為將該特定頁面映射至其之該各自跨度;及該判定該長度包括:將該等頁面之各者映射至具有比該等讀取單元更精細之一細微度之單元之各自長度,該長度為將該特定頁面映射至其之該各自長度。
EC20)如EC19之方法,其進一步包括:存取一映射表之複數個項之一特定者,該映射表使該等頁面之各者與該等映射表項之一各自者相關聯,該特定頁面與該特定映射表項相關聯;及其中該存取包括該特定頁面至該讀取單元位址之該映射、該特定頁面至該跨度之該映射及該特定頁面至該長度之該映射。
EC21)如EC20之方法,其中該特定映射項包括該各自跨度、該各 自位址及該各自長度。
EC22)如EC17之方法,其中該等長度單元具有比一單一位元組之單元更粗糙之一細微度。
EC23)如EC17之方法,其中該等非揮發性記憶體包括複數個可單獨寫入之非揮發性記憶體頁面;及其中該等可單獨寫入之非揮發性記憶體頁面之各者包括複數個該等讀取單元。
EC24)如EC17之方法,其中該讀取該資料包括:剖析該等存取讀取單元中所包括之一標頭,該標頭包括識別與該特定頁面相關聯之該資料之一位移。
EC25)如EC17之方法,其進一步包括:回應於該寫入該資料,根據與該特定頁面相關聯之該資料之一長度而更新該長度。
EC26)如EC25之方法,其中該寫入該資料包括:減小與該特定頁面相關聯之該資料之一大小,且該特定頁面之該各自長度係根據與該特定頁面相關聯之該減小大小之該資料之一長度。
EC27)如EC26之方法,其中該減小包括壓縮。
EC28)如EC26之方法,其進一步包括:回應於該寫入該資料,根據用於擷取與該特定頁面相關聯之該減小資料之某數目個待存取之該等讀取單元而更新該特定頁面之該各自跨度。
EC29)如EC17之方法,其進一步包括:回應於該寫入該資料,根據用於擷取與該特定頁面相關聯之該資料之某數目個待存取之該等讀取單元而更新該特定頁面之該各自跨度。
EC30)如EC17之方法,其中與該等頁面之一第一者相關聯之資料之一大小不同於與該等頁面之一第二者相關聯之資料之一大小。
EC31)如EC17之方法,其中該長度不同於除該特定頁面之外之該 等頁面之一者之一長度。
EC32)如EC17之方法,其中該跨度不同於除該特定頁面之外之該等頁面之一者之一跨度。
EC33)如EC17之方法,其中該讀取單元位址等於除該特定頁面之外之該等頁面之一者之一讀取單元位址。
EC34)如EC33之方法,其中該長度不等於除該特定頁面之外之該等頁面之該者之一長度。
EC35)如EC34之方法,其中該跨度等於除該特定頁面之外之該等頁面之該者之一跨度。
EC36)一種系統,其包括:一映射模組,其能夠接收一主機儲存空間位址且將該主機位址轉換成一NVM之一讀取單元位址及編碼長度資訊;及一回收模組,其能夠使用該讀取單元位址及該編碼長度資訊來恢復該NVM之未使用空間,且能夠維持該NVM之自由及/或使用空間之計數。
EC37)如EC36之系統,其進一步包括用於解碼該編碼長度資訊以獲得一長度及一跨度之構件,該長度具有以預定數目個位元組為單位之一值,且該跨度具有以預定數目個讀取單元為單位之一值。
EC38)如EC37之系統,其中該等讀取單元之各者為指定數目個位元組。
EC39)如EC37之系統,其中該預定數目個位元組等於一固定長度讀取單元中之位元組之數目,且該長度具有用該等讀取單元表示之一數值。
EC40)如EC37之系統,其中用比該長度之一細微度更粗糙之一細微度表示該跨度。
EC41)如EC37之系統,其進一步包括能夠使用該讀取單元位址及 該跨度以排定至該NVM之某數目個鄰接讀取單元之存取之一排程模組,該數目等於該跨度,且該跨度指定大於或等於由該長度指定之位元組數之位元組數。
EC42)如EC36之系統,其中該映射模組進一步包括一單層級映射。
EC43)如EC37之系統,其中該映射模組進一步包括一雙層級映射。
EC44)如EC43之系統,其中該雙層級映射包括一第一層級映射及一第二層級映射,且其中將該第二層級映射分成第二層級映射頁面,一第二層級映射頁面具有預定整數個映射頁面項。
EC45)如EC44之系統,其進一步包括能夠提供可用於選擇第一層級映射頁面及第二層級映射頁面及映射頁面項之資訊之一整數除法器。
EC46)如EC45之系統,其中該整數除法器能夠使該主機儲存空間位址除以一第二層級映射頁面中之該整數個項,且進一步能夠產生一整數商及一整數餘數,該整數商能夠選擇一第一層級映射項,該第一層級映射項之一部分能夠選擇一第二層級映射頁面,且該整數餘數能夠選擇該選定第二層級映射頁面內之一項,該選定第二層級映射頁面內之該項能夠選擇該NVM之某數目個鄰接讀取單元,且該數目等於該跨度。
EC47)如EC36之系統,其中該映射模組進一步包括至少一個三層級映射。
EC48)如EC37之系統,其中將該長度編碼為具有一整數部分及一小數部分之一定點數,諸如<X.Y>。
EC49)如EC48之系統,其中將該長度及該跨度編碼為該編碼長度資訊之第一子欄位及第二子欄位,一子欄位包括該定點長度<X.Y>, 且另一子欄位包括一跨度位移S。
EC50)如EC49之系統,其中該跨度具有等於該長度之該整數部分與該跨度位移之該值之一總和之一值,使得跨度等於X+S。
EC51)如EC49之系統,其中該跨度具有等於該長度之該整數部分、整數1及該跨度位移之該值之一總和之一值,使得跨度等於X+1+S。
EC52)如EC49之系統,其中該跨度具有等於該長度之該整數部分、整數2及該跨度位移之該值之一總和之一值,使得跨度等於X+2+S。
EC53)如EC49之系統,其中該跨度位移具有選自集合{-1,0,1}之一整數值。
EC54)如EC49之系統,其中該跨度位移具有選自集合{0,1}之一整數值。
EC55)如EC49之系統,其中該跨度位移具有選自集合{0,1,2}之一整數值。
EC56)如EC37之系統,其中由正整數個讀取單元表示該編碼長度資訊之該跨度且由一長度位移表示該編碼長度資訊之該長度。
EC57)如EC56之系統,其中由具有一整數部分及一小數部分之一定點非負實數(諸如<M.N>)表示該長度位移。
EC58)如EC56之系統,其中藉由自該跨度減去該長度位移而獲得該長度之該值,使得長度等於(跨度-M.N)。
EC59)如EC36之系統,其中將該映射模組及該回收模組實施為使用NVM(諸如快閃記憶體)之一SSD之部分。
EC60)如EC59之系統,其中將該映射模組及該回收模組實施為包括一SSD控制器之一單一積體電路之部分。
EC61)如EC60之系統,其中該SSD控制器用於控制使用NVM(諸 如快閃記憶體)之一固態磁碟。
EC62)如EC61之系統,其中該等快閃記憶體由複數個晶粒組成。
EC63)如EC59之系統,其進一步包括用於使該SSD與一計算主機介接之一構件。
EC64)如EC63之系統,其中用於使該SSD與該計算主機介接之該構件與一儲存介面標準相容。
EC65)如EC59之系統,其進一步包括用於與該等快閃記憶體介接之構件。
EC66)如EC65之系統,其中用於與該等快閃記憶體介接之該構件包括一快閃記憶體介面。
EC67)如EC59之系統,其進一步包括:用於使該SSD與該計算主機介接之一構件;及用於與該等快閃記憶體介接之一構件。
EC68)如EC67之系統,其中將該等構件共同實施於一單一積體電路(IC)中。
EC69)如EC67之系統,其中將該等構件包括於一固態磁碟(SSD)中。
EC70)如EC67之系統,其進一步包括該計算主機之全部或任何部分。
EC71)一種系統,其包括:一映射表,其能夠使一邏輯頁面位址與一NVM之複數個讀取單元之一者之一位址及與編碼長度資訊相關聯;及一回收器,其能夠使用該讀取單元位址及該編碼長度資訊來判定待回收之該NVM之特定區塊。
EC72)如EC71之系統,其進一步包括用於解碼該編碼長度資訊以獲得一長度及一跨度之構件,該長度具有以預定數目個位元組為單位 之一值,且該跨度具有以預定數目個讀取單元為單位之一值。
EC73)如EC72之系統,其中該等讀取單元之各者為指定數目個位元組。
EC74)如EC72之系統,其中該預定數目個位元組等於一固定長度讀取單元中之該位元組數,且該長度具有用該等讀取單元表示之一數值。
EC75)如EC72之系統,其中該長度為非整數個讀取單元,且用比一單一讀取單元更精細之一細微度表示。
EC76)如EC72之系統,其中用比該長度之一細微度更粗糙之一細微度表示該跨度。
EC77)如EC72之系統,其進一步包括能夠使用該讀取單元位址及該跨度來存取某數目個鄰接讀取單元之一排程器,該排程器開始於位於該NVM中之該讀取單元位址處之該讀取單元且繼續至等於該跨度之一總數。
EC78)如EC71之系統,其中該映射表進一步包括一單層級映射。
EC79)如EC72之系統,其中該映射表進一步包括一雙層級映射。
EC80)如EC79之系統,其中該雙層級映射包括一第一層級映射及一第二層級映射,且其中將該第二層級映射分成第二層級映射頁面,一第二層級映射頁面具有預定整數個映射頁面項。
EC81)如EC80之系統,其進一步包括能夠提供可用於選擇第一層級映射頁面及第二層級映射頁面及映射頁面項之資訊之一整數除法器。
EC82)如EC81之系統,其中該整數除法器能夠使該邏輯頁面位址除以一第二層級映射頁面中之整數個項,且進一步能夠產生一整數商及一整數餘數,該整數商能夠選擇一第一層級映射項,該第一層級映射項之一部分能夠選擇一第二層級映射頁面,且該整數餘數能夠選擇 該選定第二層級映射頁面內之一項,該選定第二層級映射頁面內之該項能夠選擇該NVM之某數目個鄰接讀取單元,且該數目等於該跨度。
EC83)如EC71之系統,其中該映射表進一步包括至少一個三層級映射。
EC84)如EC72之系統,其中將該長度編碼為具有一整數部分及一小數部分之一定點數,諸如<X.Y>。
EC85)如EC84之系統,其中將該長度及該跨度編碼為包括該定點長度表示<X.Y>及一跨度位移S之一值組。
EC86)如EC85之系統,其中將該長度及該跨度編碼為該編碼長度資訊之第一子欄位及第二子欄位,一子欄位包括該定點長度<X.Y>,且另一子欄位包括該跨度位移S。
EC87)如EC86之系統,其中該跨度具有等於該長度之該整數部分與該跨度位移之該值之一總和之一值,使得跨度等於X+S。
EC88)如EC86之系統,其中該跨度具有等於該長度之該整數部分、整數1及該跨度位移之該值之一總和之一值,使得跨度等於X+1+S。
EC89)如EC86之系統,其中該跨度具有等於該長度之該整數部分、整數2及該跨度位移之該值之一總和之一值,使得跨度等於X+2+S。
EC90)如EC86之系統,其中該跨度位移具有選自集合{-1,0,1}之一整數值。
EC91)如EC86之系統,其中該跨度位移具有選自集合{0,1}之一整數值。
EC92)如EC86之系統,其中該跨度位移具有選自集合{0,1,2}之一整數值。
EC93)如EC72之系統,其中由正整數個讀取單元表示該編碼長度資訊之該跨度且由一長度位移表示該編碼長度資訊之該長度。
EC94)如EC93之系統,其中由具有一整數部分及一小數部分之一定點非負實數(諸如<M.N>)表示該長度位移。
EC95)如EC93之系統,其中藉由自該跨度減去該長度位移而獲得該長度之該值,使得長度等於(跨度-M.N)。
EC96)如EC71之系統,其中將該映射模組及該回收模組實施為使用NVM(諸如快閃記憶體)之一SSD之部分。
EC97)如EC71之系統,其中將該映射模組及該回收模組實施為包括一SSD控制器之一單一積體電路之部分。
EC98)如EC97之系統,其中該SSD控制器用於控制使用NVM(諸如快閃記憶體)之一固態磁碟。
EC99)如EC98之系統,其中該等快閃記憶體由複數個晶粒組成。
EC100)如EC96之系統,其進一步包括用於使該SSD與一計算主機介接之一構件。
EC101)如EC100之系統,其中用於使該SSD與該計算主機介接之該構件與一儲存介面標準相容。
EC102)如EC96之系統,其進一步包括用於與該等快閃記憶體介接之構件。
EC103)如EC102之系統,其中用於與該等快閃記憶體介接之該構件包括一快閃記憶體介面。
EC104)如EC96之系統,其進一步包括:用於使該SSD與該計算主機介接之一構件;及用於與該等快閃記憶體介接之一構件。
EC105)如EC104之系統,其中將該等構件共同實施於一單一積體電路(IC)中。
EC106)如EC104之系統,其中將該等構件包括於一固態磁碟(SSD)中。
EC107)如EC104之系統,其進一步包括該計算主機之全部或任何部分。
EC108)一種方法,其包括:至少部分地基於一主機儲存空間位址而判定描述以一轉移量細微度為單位之一轉移量值及以一空間量細微度為單位之一空間量值之一元素;至少部分地基於該元素而判定該轉移量值及該空間量值;至少部分地基於該轉移量值而自一非揮發性記憶體(NVM)讀取對應於該主機儲存空間位址之資料;至少部分地基於該空間量值而追蹤該NVM之空間使用資訊;及其中該轉移量細微度比該空間量細微度粗糙。
EC109)如EC108之方法,其中該元素之該判定係至少部分地經由一映射模組,該映射模組能夠至少部分地基於該主機儲存空間位址而提供該元素及該NVM中之該資料之一起始位址。
EC110)如EC109之方法,其中該資料之該讀取自該NVM讀取開始於該起始位址之資料。
EC111)如EC109之方法,其中該起始位址具有對應於可自該NVM讀取之一最小量子之錯誤可校正資料之一細微度。
EC112)如EC111之方法,其中可自該NVM讀取之該最小量子之錯誤可校正資料對應於一原始資料部分及保護該原始資料部分之一檢查位元部分。
EC113)如EC108之方法,其中該轉移量值表示可自該NVM讀取之一最小量子之錯誤可校正資料之整數倍。
EC114)如EC113之方法,其中可自該NVM讀取之該最小量子之 錯誤可校正資料對應於一原始資料部分及與該原始資料部分相關聯之低層級錯誤校正碼位元。
EC115)如EC113之方法,其中該元素之一第一子元素包括該轉移量值且該元素之一第二子元素包括該空間量值。
EC116)如EC113之方法,其中該元素之一第一子元素包括指示該轉移量值之一整數且該元素之一第二子元素包括指示小於可自該NVM讀取之該最小量子之錯誤可校正資料之資料量之一小數,且該整數及該小數之組合對應於該空間量值。
EC117)如EC108之方法,其進一步包括:至少部分地基於該空間量值而管理該NVM之各自部分之回收。
EC118)如EC117之方法,其進一步包括:至少部分地基於該空間量值而判定該等各自部分之一特定者之使用空間量。
EC119)如EC118之方法,其進一步包括:至少部分地基於該使用空間量而選擇用於回收之該等各自部分之該特定者。
EC120)如EC108之方法,其進一步包括:變換該資料之至少一部分且回應於來自指定該主機儲存空間位址之該主機之一讀取請求而使該變換之結果之至少一部分返回至該主機。
EC121)如EC120之方法,其中該變換包括解壓縮。
EC122)如EC120之方法,其中該變換包括解密。
EC123)一種有形非暫時性電腦可讀媒體,其具有儲存於其內之一組指令,當由一處理元件執行該組指令時,該組指令引起該處理元件執行包括下列各者之操作:至少部分地基於一主機儲存空間位址而判定描述以一轉移量細微度為單位之一轉移量值及以一空間量細微度為單位之一空間量值之一元素;至少部分地基於該元素而判定該轉移量值及該空間量值; 至少部分地基於該轉移量值而自一非揮發性記憶體(NVM)讀取對應於該主機儲存空間位址之資料;至少部分地基於該空間量值而追蹤該NVM之空間使用資訊;及其中該轉移量細微度比該空間量細微度粗糙。
EC124)如EC123之有形非暫時性電腦可讀媒體,其中該元素之該判定係至少部分地經由一映射模組,該映射模組能夠至少部分地基於該主機儲存空間位址而提供該元素及該NVM中之該資料之一起始位址。
EC125)如EC124之有形非暫時性電腦可讀媒體,其中該資料之該讀取自該NVM讀取開始於該起始位址之資料。
EC126)如EC124之有形非暫時性電腦可讀媒體,其中該起始位址具有對應於可自該NVM讀取之一最小量子之錯誤可校正資料之一細微度。
EC127)如EC126之有形非暫時性電腦可讀媒體,其中可自該NVM讀取之該最小量子之錯誤可校正資料對應於一原始資料部分及保護該原始資料部分之一檢查位元部分。
EC128)如EC123之有形非暫時性電腦可讀媒體,其中該轉移量值表示可自該NVM讀取之一最小量子之錯誤可校正資料之整數倍。
EC129)如EC128之有形非暫時性電腦可讀媒體,其中可自該NVM讀取之該最小量子之錯誤可校正資料對應於一原始資料部分及與該原始資料部分相關聯之低層級錯誤校正碼位元。
EC130)如EC128之有形非暫時性電腦可讀媒體,其中該元素之一第一子元素包括該轉移量值且該元素之一第二子元素包括該空間量值。
EC131)如EC128之有形非暫時性電腦可讀媒體,其中該元素之一第一子元素包括指示該轉移量值之一整數且該元素之一第二子元素包 括指示小於可自該NVM讀取之該最小量子之錯誤可校正資料之資料量之一小數,且該整數及該小數之組合對應於該空間量值。
EC132)如EC123之有形非暫時性電腦可讀媒體,其進一步包括:至少部分地基於該空間量值而管理該NVM之各自部分之回收。
EC133)如EC132之有形非暫時性電腦可讀媒體,其進一步包括:至少部分地基於該空間量值而判定該等各自部分之一特定者之使用空間量。
EC134)如EC132之有形非暫時性電腦可讀媒體,其進一步包括:至少部分地基於該使用空間量而選擇用於回收之該等各自部分之該特定者。
EC135)如EC123之有形非暫時性電腦可讀媒體,其進一步包括:變換該資料之至少一部分;及回應於來自指定該主機儲存空間位址之該主機之一讀取請求而使該變換之結果之至少一部分返回至該主機。
EC136)如EC135之有形非暫時性電腦可讀媒體,其中該變換包括解壓縮。
EC137)如EC135之有形非暫時性電腦可讀媒體,其中該變換包括解密。
EC138)如EC123之有形非暫時性電腦可讀媒體,其中該等操作進一步包括管理該等請求與該計算主機之介接。
EC139)如EC138之有形非暫時性電腦可讀媒體,其中該等請求與該計算主機之該介接與一儲存介面標準相容。
EC140)如EC123之有形非暫時性電腦可讀媒體,其中該儲存包括與該等快閃記憶體介接。
EC141)如EC140之有形非暫時性電腦可讀媒體,其中與該等快閃記憶體之該介接包括一快閃記憶體介面。
EC142)如EC123之有形非暫時性電腦可讀媒體,其中該等操作進 一步包括:至少部分地經由管理計算主機介面邏輯電路而管理該等請求與該計算主機之介接;及其中該儲存係至少部分地經由能夠與該等快閃記憶體介接之快閃記憶體介面邏輯電路。
EC143)如EC142之有形非暫時性電腦可讀媒體,其中將該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路共同實施於一單一積體電路(IC)中。
EC144)如EC142之有形非暫時性電腦可讀媒體,其中將該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路包括於一固態磁碟(SSD)中。
EC145)如EC123之有形非暫時性電腦可讀媒體,其中該等操作進一步包括管理該計算主機之全部或任何部分之操作。
EC146)如EC123之有形非暫時性電腦可讀媒體,其中該等操作進一步包括管理該等快閃記憶體之至少一者之操作。
EC147)如前述EC之任何項,其具有或涉及一儲存介面標準,其中該儲存介面標準包括下列之一或多者:一通用串列匯流排(USB)介面標準;一小型快閃記憶體(CF)介面標準;一多媒體卡(MMC)介面標準;一嵌入式MMC(eMMC)介面標準;一Thunderbolt介面標準;一UFS介面標準;一安全數位(SD)介面標準;一記憶棒介面標準;一xD-圖像卡介面標準; 一整合電子驅動介面(IDE)介面標準;一串列先進附接技術(SATA)介面標準;一外部SATA(eSATA)介面標準;一小型電腦系統介面(SCSI)介面標準;一串列附接小型電腦系統介面(SAS)介面標準;一光纖通道介面標準;一乙太網路介面標準;及一快速周邊組件互連(PCIe)介面標準。
EC148)如前述EC之任何項,其具有或涉及一快閃記憶體介面,其中該快閃記憶體介面與下列之一或多者相容:一開放式反及快閃介面(ONFI);一觸發模式介面;一雙倍資料速率(DDR)同步介面;一DDR2同步介面;一同步介面;及一非同步介面。
EC149)如前述EC之任何項,其具有或涉及一計算主機,其中該計算主機包括下列之一或多者:一電腦;一工作站電腦;一伺服器電腦;一儲存伺服器;一儲存附加網路(SAN);一網路附加儲存(NAS)裝置;一直接附加儲存(DAS)裝置;一儲存設備; 一個人電腦(PC);一膝上型電腦;一筆記型電腦;一迷你筆記型電腦;一平板裝置或電腦;一輕量級筆記型電腦;一電子閱讀裝置(一電子閱讀器);一個人數位助理(PDA);一導航系統;一(手持式)全球定位系統(GPS)裝置;一自動控制系統;一自動媒體控制系統或電腦;一印表機、影印機或傳真機或單體全備裝置;一銷售點(POS)裝置;一收銀機;一媒體播放器;一電視機;一媒體記錄器;一數位視訊記錄器(DVR);一數位相機;一蜂巢式手機;一無線電話手機;及一電子遊戲機。
EC150)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:反及快閃技術儲存胞;及 互斥或快閃技術儲存胞。
EC151)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:單位階胞(SLC)快閃技術儲存胞;及多位階胞(MLC)快閃技術儲存胞。
EC152)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:基於多晶矽技術之電荷儲存胞;及基於氮化矽技術之電荷儲存胞。
EC153)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:基於二維技術之快閃記憶體技術;及基於三維技術之快閃記憶體技術。
在一些實施例中,一I/O裝置(諸如一SSD)包含一SSD控制器。該SSD控制器充當該SSD之主機介面與NVM之間之一橋接器,且執行經由該SSD之一主機介面而自一計算主機發送之一主機協定之命令。該等命令之至少部分分別引導該SSD寫入及讀取具有自該計算主機發送及發送至該計算主機之資料之該NVM。在進一步實施例中,該SSD控制器能夠使用一映射來在該主機協定之LBA與該NVM中之實體儲存位址之間轉譯。在進一步實施例中,該映射之至少一部分用於該I/O裝置之私密儲存(該計算主機無法看見)。例如,由該I/O裝置使用無法由該計算主機存取之該等LBA之一部分來管理至記錄、統計或其他私密資料之存取。
在一些實施例中,將變動大小之量子之壓縮資料存取於NVM中提供一些使用案例中之改良儲存效率。例如,一SSD控制器自一計算主機接收(解壓縮)資料(例如相關於一磁碟寫入命令),壓縮該資料, 且將該壓縮資料儲存至快閃記憶體中。回應於來自該計算主機之一隨後請求(例如相關於一磁碟讀取命令),該SSD控制器自該快閃記憶體讀取該壓縮資料,解壓縮該壓縮資料,且將該解壓縮資料提供至該計算主機。根據變動大小之量子而將該壓縮資料儲存於該快閃記憶體中,該量子大小變動歸因於(例如)對各種資料之壓縮演算法、操作模式及壓縮效力。該SSD控制器藉由查閱一內含映射表以判定(若干)標頭於該快閃記憶體中之儲存位置而部分地解壓縮該資料。該SSD控制器剖析自該快閃記憶體獲得之該(等)標頭以判定適當(壓縮)資料於該快閃記憶體中之儲存位置。該SSD控制器解壓縮來自該快閃記憶體之該適當資料以產生待提供至該計算主機之該解壓縮資料。在本申請案中,解壓縮(及其變體)與減壓(及其變體)同義。
在各種實施例中,一SSD控制器包含:一主機介面,其用於與一計算主機介接;一介面,其用於與NVM(諸如快閃記憶體)介接;及電路,其用於控制該等介面且執行(及/或控制該執行之各種態樣)壓縮及解壓縮以及較低層級錯誤校正、較高層級錯誤校正及使用獨立矽元素之動態較高層級冗餘模式管理。
根據各種實施例,一些主機介面與一USB介面標準、一CF介面標準、一MMC介面標準、一eMMC介面標準、一Thunderbolt介面標準、一UFS介面標準、一SD介面標準、一記憶棒介面標準、一xD-圖像卡介面標準、一IDE介面標準、一SATA介面標準、一SCSI介面標準、一SAS介面標準及一PCIe介面標準之一或多者相容。根據各種實施例,計算主機為一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一SAN、一NAS裝置、一DAS裝置、一儲存設備、一PC、一膝上型電腦、一筆記型電腦、一迷你筆記型電腦、一平板裝置或電腦、一輕量級筆記型電腦、一電子閱讀裝置(諸如一電子閱讀器)、一PDA、一導航系統、一(手持式)GPS裝置、一自動控制系統、一自動 媒體控制系統或電腦、一印表機、影印機或傳真機或單體全備裝置、一POS裝置、一收銀機、一媒體播放器、一電視機、一媒體記錄器、一DVR、一數位相機、一蜂巢式手機、一無線電話手機及一電子遊戲機之全部或任何部分。在一些實施例中,一介接主機(諸如一SAS/SATA橋接器)用作一計算主機及/或用作至一計算主機之一橋接器。
在各種實施例中,SSD控制器包含一或多個處理器。該等處理器執行韌體以控制及/或執行SSD控制器之操作。SSD控制器與計算主機通信以發送及接收命令及/或狀態以及資料。計算主機執行一作業系統、一驅動程式及一應用程式之一或多者。計算主機與SSD控制器之通信係視情況及/或選擇性經由該驅動程式及/或經由該應用程式。在一第一實例中,至SSD控制器之全部通信係經由該驅動程式,且該應用程式將較高層級命令提供至該驅動程式,該驅動程式將該等較高層級命令轉譯成SSD控制器之特定命令。在一第二實例中,該驅動程式實施一旁路模式且該應用程式能夠經由該驅動程式而將特定命令發送至SSD控制器。在一第三實例中,一PCIe SSD控制器支援一或多個虛擬函式(VF)以使經組態之一應用程式能夠與SSD控制器直接通信(繞過該驅動程式)。
根據各種實施例,一些SSD與由磁性及/或光學非揮發性儲存器(諸如HDD、CD機及DVD機)使用之形狀因數、電介面及/或協定相容。在各種實施例中,SSD使用零或多個同位碼、零或多個RS碼、零或多個BCH碼、零或多個維特比(Viterbi)或其他格子碼及零或多個LDPC碼之各種組合。
圖1A繪示一SSD之一實施例之選定細節,該SSD包含:一SSD控制器,其使用(諸如)一位址映射功能(例如圖1A之映射141)之表項內之位置及長度相關資訊之各種編碼技術來實施儲存位址空間對非揮發性 記憶體(NVM)位址、跨度及長度映射/轉換;及電路,其用於管理非揮發性儲存器,諸如快閃記憶體。該SSD控制器用於管理(諸如)經由NVM元件(例如快閃記憶體)而實施之非揮發性儲存器。SSD控制器100經由一或多個外部介面110而通信地耦合至一主機(圖中未繪示)。根據各種實施例,外部介面110為下列之一或多者:一SATA介面;一SAS介面;一PCIe介面;一光纖通道介面;一乙太網路介面(諸如百億位元乙太網路);前述介面之任何者之一非標準版本;一自訂介面;或用於使儲存及/或通信及/或計算裝置互連之任何其他類型之介面。例如,在一些實施例中,SSD控制器100包含一SATA介面及一PCIe介面。
SSD控制器100經由一或多個裝置介面190而進一步通信地耦合至包含一或多個儲存裝置(諸如一或多個快閃裝置192)之NVM 199。根據各種實施例,裝置介面190為下列之一或多者:一非同步介面;一同步介面;一單倍資料速率(SDR)介面;一雙倍資料速率(DDR)介面;一DRAM相容DDR或DDR2同步介面;一ONFI相容介面,諸如一ONFI 2.2或ONFI 3.0相容介面;一觸發模式相容快閃介面;前述介面之任何者之一非標準版本;一自訂介面;或用於連接至儲存裝置之任何其他類型之介面。
在一些實施例中,各快閃裝置192具有一或多個個別快閃晶粒194。根據快閃裝置192之一特定者之類型,該特定快閃裝置192中之複數個快閃晶粒194視情況及/或選擇性並行存取。快閃裝置192僅表示能夠通信地耦合至SSD控制器100之一類型之儲存裝置。在各種實施例中,可使用任何類型之儲存裝置,諸如SLC反及快閃記憶體、MLC反及快閃記憶體、互斥或快閃記憶體、使用基於多晶矽或氮化矽技術之電荷儲存胞之快閃記憶體、基於二維或三維技術之快閃記憶體、唯讀記憶體、靜態隨機存取記憶體、動態隨機存取記憶體、鐵磁 記憶體、相變記憶體、賽道記憶體、ReRAM或任何其他類型之記憶體裝置或儲存媒體。
根據各種實施例,將裝置介面190組織為:每匯流排具有一或多個快閃裝置192之一或多個匯流排;每匯流排具有一或多個快閃裝置192之一或多個匯流排群組,其中大體上並行存取一群組中之匯流排;或一或多個快閃裝置192至裝置介面190上之任何其他組織。
繼續參考圖1A,SSD控制器100具有一或多個模組,諸如主機介面111、資料處理121、緩衝區131、映射141、回收器151、ECC 161、裝置介面邏輯191及CPU 171。圖1A中所繪示之特定模組及互連僅表示一實施例,且可設想該等模組之部分或全部之諸多配置及互連以及圖中未繪示之額外模組。在一些實施例之一第一實例中,存在用於提供雙埠之兩個或兩個以上主機介面111。在一些實施例之一第二實例中,資料處理121及/或ECC 161與緩衝區131組合。在一些實施例之一第三實例中,主機介面111直接耦合至緩衝區131,且資料處理121視情況及/或選擇性作用於儲存於緩衝區131中之資料。在一些實施例之一第四實例中,裝置介面邏輯191直接耦合至緩衝區131,且ECC 161視情況及/或選擇性作用於儲存於緩衝區131中之資料。
主機介面111經由外部介面110而發送及接收命令及/或資料,且在一些實施例中經由標籤追蹤113而追蹤個別命令之進展。例如,該等命令包含指定待讀取之資料之一位址(諸如一LBA)及數量(諸如LBA量子(例如磁區)之數目)之一讀取命令;作為回應,SSD提供讀取狀態及/或讀取資料。對於另一實例,該等命令包含指定待寫入之資料之一位址(諸如一LBA)及數量(諸如LBA量子(例如磁區)之數目)之一寫入命令;作為回應,SSD提供寫入狀態及/或請求寫入資料且視情況隨後提供寫入狀態。對於又一實例,該等命令包含指定不再需要被分配之一或多個位址(諸如一或多個LBA)之一解除分配命令(例如一修整命 令);作為回應,SSD相應地修改映射且視情況提供解除分配狀態。在一些背景中,一ATA相容TRIM命令為一例示性解除分配命令。對於又一實例,該等命令包含一超級電容器測試命令或一資料強化成功查詢;作為回應,SSD提供適當狀態。在一些實施例中,主機介面111與一SATA協定相容,且使用NCQ命令來使主機介面111能夠具有高達32個未決命令,該等未決命令各具有表示為自0至31之一數字之一唯一標籤。在一些實施例中,標籤追蹤113能夠在SSD控制器100之處理期間使經由外部介面110所接收之一命令之一外部標籤與用於追蹤該命令之一內部標籤相關聯。
根據各種實施例,描述下列之一或多者:資料處理121視情況及/或選擇性處理在緩衝區131與外部介面110之間發送之部分或全部資料;及資料處理121視情況及/或選擇性處理儲存於緩衝區131中之資料。在一些實施例中,資料處理121使用一或多個引擎123來執行下列之一或多者:格式化;重新格式化;轉碼;及任何其他資料處理及/或操縱任務。
緩衝區131儲存自裝置介面190發送至外部介面110/自外部介面110發送至裝置介面190之資料。在一些實施例中,緩衝區131另外儲存由SSD控制器100用於管理一或多個快閃裝置192之系統資料(諸如部分或全部映射表)。在各種實施例中,緩衝區131具有下列之一或多者:記憶體137,其用於暫時儲存資料;DMA 133,其用於控制至及/或來自緩衝區131之資料之移動;及ECC-X 135,其用於提供較高層級錯誤校正及/或冗餘功能;及其他資料移動及/或操縱功能。一較高層級冗餘功能之一實例為一似RAID能力(例如RASIE);其中冗餘位於一快閃裝置(例如多個快閃裝置192)層級及/或一快閃晶粒(例如快閃晶粒194)層級處以取代位於一磁碟層級處。
根據各種實施例,描述下列之一或多者:ECC 161視情況及/或選 擇性處理在緩衝區131與裝置介面190之間發送之部分或全部資料;及ECC 161視情況及/或選擇性處理儲存於緩衝區131中之資料。在一些實施例中,ECC 161用於(諸如)根據一或多項ECC技術而提供較低層級錯誤校正及/或冗餘功能。在一些實施例中,ECC 161實施下列之一或多者:一CRC碼;一漢明(Hamming)碼;一RS碼;一BCH碼;一LDPC碼;一維特比碼;一格子碼;一硬決策碼;一軟決策碼;一基於擦除之碼;任何錯誤偵測及/或校正碼;及前述各者之任何組合。在一些實施例中,ECC 161包含一或多個解碼器(諸如LDPC解碼器)。
裝置介面邏輯191經由裝置介面190而控制快閃裝置192之例項。裝置介面邏輯191能夠根據快閃裝置192之一協定而發送至/來自快閃裝置192之該等例項之資料。裝置介面邏輯191包含排程193以經由裝置介面190而選擇性排定快閃裝置192之該等例項之控制順序。例如,在一些實施例中,排程193能夠對快閃裝置192之該等例項進行佇列操作,且能夠在快閃裝置192(或快閃晶粒194)之該等例項之個別者可用時將該等操作選擇性發送至快閃裝置192(或快閃晶粒194)之該等例項之個別者。
映射141在用於外部介面110上之資料定址與用於裝置介面190上之資料定址之間轉換以使用表143來將外部資料位址映射至NVM 199中之位置。例如,在一些實施例中,映射141經由表143提供之映射而將用於外部介面110上之LBA轉換成以一或多個快閃晶粒194為目標之區塊及/或頁面位址。對於自碟機製造或解除分配之後從未被寫入之LBA,映射指向一預設值以在讀取該等LBA時恢復。例如,當處理一解除分配命令時,映射經修改使得對應於經解除分配之LBA之項指向預設值之一者。在各種實施例中,存在各具有一對應指標之各種預設值。複數個預設值能夠將一些經解除分配之LBA(諸如在一第一範圍內)讀取為一預設值,同時將其他經解除分配之LBA(諸如在一第二範 圍內)讀取為另一預設值。在各種實施例中,由快閃記憶體、硬體、韌體、命令及/或基本引數及/或參數、可程式化暫存器或其等之各種組合界定預設值。
在一些實施例中,映射141使用表143來執行及/或查找用於外部介面110上之位址與用於裝置介面190上之資料定址之間之轉譯。根據各種實施例,表143為下列之一或多者:單層級映射;兩層級映射;多層級映射;映射快取;壓縮映射;自一位址空間至另一位址空間之任何類型之映射;及前述各者之任何組合。根據各種實施例,表143包含下列之一或多者:靜態隨機存取記憶體;動態隨機存取記憶體;NVM(諸如快閃記憶體);快取記憶體;晶片上記憶體;晶片外記憶體;及前述各者之任何組合。
在一些實施例中,回收器151執行記憶體回收(garbage collection)。例如,在一些實施例中,快閃裝置192之例項含有必須在區塊被重新寫入之前被擦除之該等區塊。回收器151能夠(諸如)藉由掃描由映射141維持之一映射而判定快閃裝置192之該等例項之何種部分主動處於使用中(例如經分配而非經解除分配),且能夠藉由擦除快閃裝置192之該等例項之未使用(例如經解除分配)部分而使該等未使用部分可用於寫入。在進一步實施例中,回收器151能夠移動儲存於快閃裝置192之例項內之資料以使快閃裝置192之該等例項之更大鄰接部分可用於寫入。
在一些實施例中,快閃裝置192之例項經選擇性及/或動態地組態、管理及/或使用以具有用於儲存不同類型及/或性質之資料之一或多個頻帶。該等頻帶之數目、配置、大小及類型可動態變化。例如,將來自一計算主機之資料寫入至一熱(作用中)頻帶中,同時將來自回收器151之資料寫入至一冷(較少作用中)頻帶中。在一些使用案例中,若該計算主機寫入一長序列串流,則該熱頻帶之一大小生長;然 而,若該計算主機進行隨機寫入或較少寫入,則該冷頻帶之一大小生長。
CPU 171控制SSD控制器100之各種部分。CPU 171包含CPU核心172。根據各種實施例,CPU核心172為一或多個單核或多核處理器。在一些實施例中,CPU核心172中之個別處理器核心為多執行緒的。CPU核心172包含指令、及/或資料快取及/或記憶體。例如,指令記憶體含有使CPU核心172能夠執行程式(例如軟體,有時稱為韌體)以控制SSD控制器100之指令。在一些實施例中,將由CPU核心172執行之韌體之部分或全部儲存於快閃裝置192之例項上(如圖所繪示,例如作為圖1B中之NVM 199之韌體106)。
在各種實施例中,CPU 171進一步包含:命令管理173,其用於在經由外部介面110所接收之命令在進行中時追蹤及控制該等命令;緩衝區管理175,其用於控制緩衝區131之分配及使用;轉譯管理177,其用於控制映射141;連貫性管理179,其用於控制資料定址之連貫性且避免(諸如)外部資料存取與回收資料存取之間之衝突;裝置管理181,其用於控制裝置介面邏輯191;識別碼管理182,其用於控制識別碼資訊之修改及通信;及其他選用之管理單元。根據各種實施例,由硬體、軟體(諸如CPU核心172上或經由外部介面110所連接之一主機上執行之韌體)或其等之任何組合控制及/或管理由CPU 171執行之管理功能之非任何者、任何者或全部。
在一些實施例中,CPU 171能夠執行其他管理任務,諸如下列之一或多者:收集及/或報告效能統計;實施SMART;控制電力排序;控制及/或監測及/或調整電力消耗;對電力失效作出回應;控制及/或監測及/或調整時脈速率;及其他管理任務。
各種實施例包含類似於SSD控制器100且與各種計算主機之操作相容(諸如經由調適主機介面111及/或外部介面110)之一計算主機快閃 記憶體控制器。該等各種計算主機包含一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一SAN、一NAS裝置、一DAS裝置、一儲存設備、一PC、一膝上型電腦、一筆記型電腦、一迷你筆記型電腦、一平板裝置或電腦、一輕量級筆記型電腦、一電子閱讀裝置(諸如一電子閱讀器)、一PDA、一導航系統、一(手持式)GPS裝置、一自動控制系統、一自動媒體控制系統或電腦、一印表機、影印機或傳真機或單體全備裝置、一POS裝置、一收銀機、一媒體播放器、一電視機、一媒體記錄器、一DVR、一數位相機、一蜂巢式手機、一無線電話手機及一電子遊戲機之一者或任何組合。
在各種實施例中,將一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分實施於一單一IC、一多晶粒IC之一單一晶粒、一多晶粒IC之複數個晶粒或複數個IC上。例如,將緩衝區131實施於與SSD控制器100之其他元件相同之一晶粒上。對於另一實例,將緩衝區131實施於與SSD控制器100之其他元件不同之一晶粒上。
圖1B繪示包含圖1A之SSD之一或多個例項的系統之各種實施例之選定細節。SSD 101包含經由裝置介面190而耦合至NVM 199之SSD控制器100。該圖繪示各種實施例:直接耦合至一主機之一單一SSD;經由各自外部介面而各分別直接耦合至一主機之複數個SSD;及經由各種互連元件而間接耦合至一主機之一或多個SSD。
作為直接耦合至一主機之一單一SSD之一實例性實施例,SSD 101之一例項經由外部介面110而直接耦合至主機102(例如,省略、繞過或通過交換器/網狀架構/中間控制器103)。作為經由各自外部介面而各直接耦合至一主機之複數個SSD之一實例性實施例,SSD 101之複數個例項之各者經由外部介面110之一各自例項而分別直接耦合至主機102(例如,省略、繞過或通過交換器/網狀架構/中間控制器103)。作為經由各種互連元件而間接耦合至一主機之一或多個SSD之 一實例性實施例,SSD 101之一或多個例項之各者分別間接耦合至主機102。各間接耦合係經由耦合至交換器/網狀架構/中間控制器103之外部介面110之一各自例項及經由耦合至主機102之中間介面104。
包含交換器/網狀架構/中間控制器103之實施例之部分亦包含經由記憶體介面180所耦合且可由SSD存取之卡片記憶體112C。在各種實施例中,將SSD、交換器/網狀架構/中間控制器及/或卡片記憶體之一或多者包含於一實體可識別模組、卡片或可插入元件(例如I/O卡116)上。在一些實施例中,SSD 101(或其變體)對應於耦合至用作主機102之一啟動器之一SAS碟機或一SATA碟機。
主機102能夠執行主機軟體115之各種元件,諸如OS 105、驅動程式107、應用程式109及多裝置管理軟體114之各種組合。虛線箭頭107D表示主機軟體與I/O裝置之間之通信,例如,將資料自OS 105(經由驅動程式107)、驅動程式107及應用程式109(經由驅動程式107或直接作為一VF)之任何一或多者發送至SSD 101之例項之一或多者/將資料自SSD 101之例項之一或多者發送至OS 105(經由驅動程式107)、驅動程式107及應用程式109(經由驅動程式107或直接作為一VF)之任何一或多者/自SSD 101之例項之一或多者接收資料/自OS 105(經由驅動程式107)、驅動程式107及應用程式109(經由驅動程式107或直接作為一VF)之任何一或多者接收資料。
OS 105包含用於與SSD介接之驅動程式(由驅動程式107概念性繪示)及/或能夠與用於與SSD介接之驅動程式(由驅動程式107概念性繪示)一起操作。各種版本之Windows作業系統(例如95、98、ME、NT、XP、2000、Server、Vista及7)、各種版本之Linux作業系統(例如Red Hat、Debian及Ubuntu)及各種版本之MacOS(例如8、9及X)為OS 105之實例。在各種實施例中,該等驅動程式為可與一標準介面及/或協定(諸如SATA、AHCI或NVM Express)一起操作之標準及/或通用驅 動程式(有時稱為「現成套裝軟體(shrink-wrapped)」或「預安裝軟體」),或視情況經客製化及/或供應商定製以能夠使用專用於SSD 101之命令。一些碟機及/或驅動程式具有直通模式(pass-through mode)以使應用層程式(諸如經由最佳化反及存取(有時稱為ONA)或直接反及存取(有時稱為DNA)技術之應用程式109)能夠將命令直接傳送至SSD 101以使一客製化應用程式能夠使用專用於SSD 101之命令,甚至使用一通用驅動程式。ONA技術包含下列之一或多者:使用非標準修改符(modifier)(提示);使用供應商特定命令;傳送非標準統計,諸如根據可壓縮性之實際NVM使用率;及其他技術。DNA技術包含下列之一或多者:使用提供至NVM之未映射讀取、寫入及/或擦除存取之非標準或供應商特定命令;(諸如)藉由繞過I/O裝置否則將進行之資料之格式化而使用提供至NVM之更直接存取之非標準或供應商特定命令;及其他技術。該驅動程式之實例為不具有ONA或DNA支援之一驅動程式、一ONA啟用驅動程式、一DNA啟用驅動程式及一ONA/DNA啟用驅動程式。該驅動程式之進一步實例為一供應商提供、供應商開發及/或供應商增強之驅動程式及一客戶提供、客戶開發及/或客戶增強之驅動程式。
應用層程式之實例為不具有ONA或DNA支援之一應用程式、一ONA啟用應用程式、一DNA啟用應用程式及一ONA/DNA啟用應用程式。虛線箭頭109D表示應用程式與I/O裝置之間之通信(例如一應用程式之經由一驅動程式之旁路或經由一VF之旁路),例如一ONA啟用應用程式及一ONA啟用驅動程式與一SSD通信,且(諸如)該應用程式無需使用OS作為一中介機構。虛線箭頭109V表示應用程式與I/O裝置之間之通信(例如一應用程式之經由一VF之旁路),例如一DNA啟用應用程式及一DNA啟用驅動程式與一SSD通信,且(諸如)該應用程式無需使用OS或驅動程式作為中介機構。
在一些實施例中,NVM 199之一或多個部分用於韌體儲存,例如韌體106。該韌體儲存包含一或多個韌體影像(或其部分)。例如,一韌體影像具有(例如)由SSD控制器100之CPU核心172執行之韌體之一或多個影像。對於另一實例,一韌體影像具有(例如)由CPU核心在韌體執行期間引用之常數、參數值及NVM裝置資訊之一或多個影像。韌體之該等影像對應於(例如)一當前韌體影像及零或多個先前(相對於韌體更新)韌體影像。在各種實施例中,韌體提供通用操作模式、標準操作模式、ONA操作模式及/或DNA操作模式。在一些實施例中,經由密鑰或各種軟體技術(視情況由一驅動程式傳送及/或提供)而啟用該等韌體操作模式之一或多者(例如,「解鎖」一或多個API)。
在缺少交換器/網狀架構/中間控制器之一些實施例中,SSD經由外部介面110而直接耦合至主機。在各種實施例中,SSD控制器100經由一或多個中間層之其他控制器(諸如一RAID控制器)而耦合至主機。在一些實施例中,SSD 101(或其變體)對應於一SAS碟機或一SATA碟機,且交換器/網狀架構/中間控制器103對應於繼而耦合至一啟動器之一擴展器,或替代地,交換器/網狀架構/中間控制器103對應於經由一擴展器而間接耦合至一啟動器之一橋接器。在一些實施例中,交換器/網狀架構/中間控制器103包含一或多個PCIe交換器及/或網狀架構。
在各種實施例(諸如其中主機102為一計算主機(例如一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一SAN、一NAS裝置、一DAS裝置、一儲存設備、一PC、一膝上型電腦、一筆記型電腦及/或一迷你筆記型電腦)之實施例之若干者)中,該計算主機視情況能夠(例如經由選用之I/O及儲存裝置/資源117及選用之LAN/WAN 119)與一或多個本端及/或遠端伺服器(例如選用之伺服器118)通信。該通信實現(例如)SSD 101之元件之任何一或多者之本端及/或遠端存取、管理及/或使用。在一些實施例中,該通信係完全或部分經由乙太網路。 在一些實施例中,該通信係完全或部分經由光纖通道。在各種實施例中,LAN/WAN 119表示一或多個區域網路及/或廣域網路,諸如一伺服器群中之一網路、耦合伺服器群之一網路、一都會區域網路及網際網路之任何一或多者。
在各種實施例中,將與一或多個NVM組合之一SSD控制器及/或一計算主機快閃記憶體控制器實施為一非揮發性儲存組件,諸如一USB儲存組件、一CF儲存組件、一MMC儲存組件、一eMMC儲存組件、一Thunderbolt儲存組件、一UFS儲存組件、一SD儲存組件、一記憶棒儲存組件及一xD-圖像卡儲存組件。
在各種實施例中,將一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分或其功能實施於與該控制器耦合之一主機(例如圖1B之主機102)中。在各種實施例中,經由硬體(例如邏輯電路)、軟體及/或韌體(例如驅動程式軟體及/或SSD控制器韌體)或其等之任何組合而實施一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分或其功能。例如,部分地經由一主機上之軟體且部分地經由一SSD控制器中之韌體與硬體之一組合而實施一EEC單元(諸如類似於圖1A之ECC 161及/或ECC-X 135)之功能性或與該ECC單元相關聯之功能性。對於另一實例,部分地經由一主機上之軟體且部分地經由一計算主機快閃記憶體控制器中之硬體而實施一回收器單元(諸如類似於圖1A之回收器151)之功能性或與該回收器單元相關聯之功能性。
[映射操作]
圖2繪示映射一LBA之一LPN部分之一實施例之選定細節。在一些實施例中,一讀取單元為可獨立讀取之一NVM之一最精細細微度,諸如該NVM之一頁面之一部分。在進一步實施例中,該讀取單元對應於一(較低層級)錯誤校正碼之檢查位元(有時稱為冗餘)以及由該等檢查位元保護之全部資料。例如,圖1A之ECC 161經由檢查位元 (諸如經由一LDPC碼)而實施錯誤校正,且一讀取單元對應於實施該LDPC碼之編碼位元以及由該等LDPC編碼位元保護之資料位元。
在一些實施例中,映射141(諸如)經由表143(如圖1A中所繪示)而將LBA 211之LPN 213之部分映射至LPN之映射資訊221。有時將一LPN之映射資訊(諸如LPN之映射資訊221)稱為一映射項。即,映射141使一LPN與一對應映射項相關聯。在各種實施例中,映射係經由一或多個相關聯查找表,經由一或多個非相關聯查找表,及/或經由一或多項其他技術。
在一些實施例中,SSD控制器100使一個映射項維持用於可能及/或主動在使用中之各LPN。
在一些實施例中,LPN之映射資訊221包含各自讀取單元位址223及讀取單元長度225。在一些實施例中,儲存一長度及/或一跨度,其等(諸如)藉由將作為與該跨度之一位移之該長度儲存於(例如)讀取單元長度225之全部或任何部分中而編碼。在進一步實施例中,使一第一LPN與一第一映射項相關聯,使一第二LPN(其不同於該第一LPN,而是涉及具有與該第一LPN所涉及之一邏輯頁面相同之一大小之一邏輯頁面)與一第二映射項相關聯,且該第一映射項之各自讀取單元長度不同於該第二映射項之各自讀取單元長度。
在各種實施例中,在相同時間點處,使一第一LPN與一第一映射項相關聯,使一第二LPN(其不同於該第一LPN)與一第二映射項相關聯,且該第一映射項之各自讀取單元位址與該第二映射項之各自讀取單元位址相同。在進一步實施例中,將與該第一LPN相關聯之資料及與該第二LPN相關聯之資料兩者儲存於NVM 199中之一相同裝置之一相同實體頁面中。
根據各種實施例,使讀取單元位址223與下列之一或多者相關聯:NVM中之一起始位址;NVM中之一結束位址;前述各者之任何 者之一位移;及用於識別與LPN 213相關聯之NVM之一部分之任何其他技術。
圖3繪示將一NVM存取於一讀取單元位址處以產生組織為各種讀取單元之讀取資料(其共同具有以讀取單元之量子量測之一長度)之一實施例之選定細節。根據各種實施例,第一讀取單元313為下列之一或多者:在該NVM之一位址空間中具有一最低位址之讀取資料311中之讀取單元之一者;該等讀取單元之一固定者;該等讀取單元之一任意者;該等讀取單元之一可變者;及由任何其他技術選擇之該等讀取單元之一者。在各種實施例中,SSD控制器100能夠存取NVM 199且藉由讀取由讀取單元長度225指定之不超過某數目之讀取單元而產生讀取資料311。
圖4A繪示作為讀取單元401A之一讀取單元(諸如圖3之讀取單元313或315)之一實施例之選定細節。在各種實施例及/或使用案例中,標頭1 411A至標頭N 419A係鄰接的,且由該等標頭之各者識別(諸如經由各自位移)之各自資料區域鄰接於該等標頭之一最後者之後。該等資料區域共同形成資料位元組421A。依與儲存該等標頭所依之位置順序匹配之一位置順序儲存該等資料區域。例如,將一第一標頭視為處於一讀取單元之開始處,且一第二標頭及一第三標頭鄰接於該第一標頭之後。一第一資料區域(其由該第一標頭之一第一位移識別)鄰接於該第三標頭之後。一第二資料區域(其由該第二標頭之一第二位移識別)鄰接於該第一資料區域之後。類似地,一第三資料區域(其由該第三標頭識別)鄰接於該第二資料區域之後。
圖4B繪示作為讀取單元401B之一讀取單元(諸如圖3之讀取單元313或315)之另一實施例之選定細節。在各種實施例及/或使用案例中,標頭標記(HM)410B為指示下列鄰接標頭(標頭1 411B、標頭2 412B...標頭N 419B)之數目之一選用之初始欄位(諸如一單位元組欄 位)。資料區域(資料位元組421B、資料位元組422B...資料位元組429B)分別由該等標頭(標頭1 411B、標頭2 412B...標頭N 419B)識別且依與儲存該等標頭所依之位置順序相反之一位置順序儲存。標頭起始於一讀取單元之開始處,同時對應資料區域起始於一讀取單元之結束處。在一些實施例中,依一正向順序(與位置順序匹配之位元組順序)配置一資料區域內之資料位元組(例如資料位元組421B、資料位元組422B...資料位元組429B),同時在其他實施例中,依一逆向順序(與位置順序反向之位元組順序)配置該等資料位元組。在一些實施例中,將一標頭標記用於讀取單元中,其中依一相同位置順序(例如圖4A中所繪示)儲存標頭及資料位元組。
在一些實施例中,選用之填充位元組431A(或431B)係根據與一特定LPN相關聯之資料之細微度。例如,在一些實施例中,若在儲存與除一最後標頭之外之標頭1 411A至標頭N 419A(或標頭1 411B、標頭2 412B...標頭N 419B)之全部相關聯之資料之後,資料位元組421A(或全部位元組421B、資料位元組422B...資料位元組429B)具有小於固定量(諸如8個位元組)之剩餘空間,則與該最後標頭相關聯之一LPN之資料起始於後一讀取單元中。在進一步實施例中,該最後標頭中之一特定位移值(例如全部為1)指示:與該最後標頭相關聯之該LPN之該資料起始於該後一讀取單元中。
圖5繪示具有某數目個欄位之一標頭(諸如圖4A之標頭1 411A至標頭N 419A或圖4B之標頭1 411B至標頭N 419B之任何者)之一實施例之選定細節。在一些實施例中,標頭具有固定長度(例如,各標頭具有相同數目個位元組長度)。標頭501包含欄位類型511、最後指示符513、旗標515、LPN 517、長度519及位移521。欄位類型識別一類別之資料位元組。例如,欄位類型指示:該類別之資料位元組為主機資料(例如邏輯頁面資料)或系統資料(例如映射資訊或檢查點資訊)之一 者。最後欄位指示:標頭為資料位元組之前之最後標頭。在具有一標頭標記之一些實施例中,視情況省略最後欄位。LPN欄位為與標頭相關聯之LPN。LPN欄位能夠剖析標頭以藉由(例如)搜尋具有與一特定LPN匹配之一LPN欄位之一標頭而判定與該特定LPN相關聯之標頭之一特定者。長度欄位為資料位元組之長度(以位元組為單位)(例如與標頭501相關聯之資料位元組421A中具有之資料之位元組數)。在一些實施例中,根據一特定細微度(例如8位元組細微度)而使位移欄位中之一位移取整。
在各種實施例中,將與一特定LPN相關聯之部分或全部資訊儲存於與該特定LPN相關聯之一映射項、與該特定LPN相關聯之一標頭、或兩者中。例如,在一些實施例中,將長度519之部分或全部儲存於一映射項中而非一標頭中。
圖6繪示邏輯分層及/或區段中所管理之多個NVM裝置(例如一或多個快閃晶粒及/或快閃晶片)之區塊、頁面及讀取單元之一實施例之選定細節。管理功能包含讀取、回收、擦除、程式化/寫入及其他管理功能之任何一或多者。有時將該等邏輯分層及/或區段稱為R區塊。該圖繪示具有66個快閃晶粒之一實施例。圖中明確繪示該等快閃晶粒之三者(快閃晶粒610.65、610.1及610.0)且隱含繪示該等快閃晶粒之63者(610.64...610.2)。
快閃晶粒之各者(諸如快閃晶粒610.65...610.1及610.0之任何者)提供組織為區塊之儲存器(諸如快閃晶粒610.65之區塊610.65BB...610.65B1及610.65B0、快閃晶粒610.0之區塊610.0BB...610.0B1及610.0B0,等等)。該等區塊繼而包含頁面(諸如區塊610.65B0之頁面610.65PP...610.65P1及610.65P0、區塊610.0B0之頁面610.0PP...610.0P1及610.0P0,等等)。該等頁面繼而包含讀取單元(諸如頁面610.65P0之讀取單元610.65RR...610.65R1及610.65R0、頁面 610.0P0之讀取單元610.0RR...610.0R1及610.0R0,等等)。
在一些實施例中,各快閃晶粒包含整數個區塊(例如N個區塊),且一區塊為一最小量子之擦除。在一些實施例中,各區塊包含整數個頁面,且一頁面為一最小量子之寫入。根據各種實施例,描述下列之一或多者:一讀取單元為一最小量子之讀取及錯誤校正;各頁面包含整數個讀取單元;兩個或兩個以上頁面之一相關聯群組包含整數個讀取單元;及讀取單元視情況及/或選擇性跨越頁面邊界。
在各種實施例中,在R區塊之單元中執行各種NVM管理功能(例如讀取、回收、擦除及/或程式化/寫入)。將一R區塊例示為橫跨一快閃記憶體之全部晶粒之一邏輯分層或區段。例如,在具有R個快閃晶粒(各快閃晶粒具有N個區塊)之一快閃記憶體中,對於總共N個R區塊,各R區塊為來自匯總在一起之該等快閃晶粒之各者之第i個區塊。對於另一實例,在具有R個快閃晶粒之一快閃記憶體中,對於總共N/2個R區塊,各R區塊為來自該等快閃晶粒之各者之第i個區塊及第(i+1)個區塊。對於又一實例,在具有複數個雙平面裝置之一快閃記憶體中,各R區塊為來自該等雙平面裝置之各者之第i個偶數區塊及第i個奇數區塊。
在其中將區塊對或其他相關聯群組中之區塊視為一R區塊之形成部分之各種實施例中,亦將來自該等區塊之一相關聯群組之各區塊之各自頁面視為至少用於寫入以形成一更大多區塊頁面之一單元。例如,繼續前述雙平面實例,將偶數區塊之一特定者之一第一頁面及奇數區塊之一相關聯者之一第一頁面視為用於寫入之一單元且視情況及/或選擇性視為用於讀取之一單元。類似地,將該特定偶數區塊之一第二頁面及該相關聯奇數區塊之一第二頁面視為一單元。根據各種實施例,如本文所使用,NVM之一頁面意指下列之一或多者:NVM之一單一頁面;NVM之一多區塊頁面;用於寫入之NVM之一多區塊頁 面,其視情況及/或選擇性被視為用於讀取之一或多個個別頁面;及NVM之任何其他分組或相關聯頁面。
該圖繪示複數個繪示性R區塊,圖中明確繪示該等R區塊之三者(660.0、660.1及660.R)。各繪示性R區塊為來自匯總在一起之快閃晶粒之各者之第i個區塊。例如,R區塊660.0為來自快閃晶粒610.65之區塊610.65B0、來自快閃晶粒610.64之區塊610.64B0(圖中未明確繪示)...來自快閃晶粒610.1之區塊610.1B0及來自快閃晶粒610.0之區塊610.0B0。由於每快閃晶粒具有N個區塊,所以總共有N個R區塊(R區塊660.R...R區塊660.1及R區塊660.0)。
一R區塊之另一實例為來自匯總在一起之快閃晶粒之各者之第i個區塊及第(i+1)個區塊(例如來自快閃晶粒610.65之區塊610.65B0及610.65B1、來自快閃晶粒610.64(圖中未明確繪示)之區塊610.64B0及610.64B1...來自快閃晶粒610.1之區塊610.1B0及610.1B1及來自快閃晶粒610.0之區塊610.0B0及610.0B1)。若各快閃晶粒中具有N個區塊,則因此具有N/2個R區塊。一R區塊之又一實例為來自複數個雙平面裝置之各者之第i個偶數區塊及第i個奇數區塊。可考量用於管理之快閃晶粒區塊(作為R區塊)之其他配置,其包含虛擬區塊位址與實體區塊位址之間之映射以確保:R區塊具有來自各晶粒之一區塊,即使一些區塊無法實行。在各種實施例中,各快閃晶粒中之N個區塊之部分用作為備用件,使得虛擬區塊位址與實體區塊位址之間之映射具有備用(否則閒置)區塊以替換R區塊中之區塊之缺陷者。
在各種實施例中,根據一順序(諸如一「讀取單元優先」順序或一「頁面優先」順序)而執行快閃晶粒中之資訊之讀取及/或寫入。圖中所繪示之讀取單元之一讀取單元優先順序之一實例開始於讀取單元610.0R0,接著為610.1R0...610.65R0、610.0R1、610.1R1...610.65R1等等,結束於610.65RR。圖中所繪示之讀取單元之一頁面優先順序之 一實例開始於讀取單元610.0R0,接著為610.0R1...610.0RR、610.1R0、610.1R1...610.1RR...610.65R0、610.65R1等等,結束於610.65RR。
在各種實施例中,一R區塊內之資料之一寫入順序及/或一分割順序為頁面(例如最低至最高)優先(橫跨全部裝置(例如最低編號裝置至最高編號裝置,如由分割方向600概念性所提出)),接著為下一最高頁面(橫跨全部裝置)等等,繼續至R區塊之最後頁面。具體言之,相對於R區塊660.0,一實例性順序開始於頁面610.0P0(快閃晶粒610.0之第一區塊中之第一頁面),接著為頁面610.1P0(快閃晶粒610.1之第一區塊中之第一頁面)等等,繼續至頁面610.65P0(快閃晶粒610.65之第一區塊中之第一頁面,及R區塊660.0之最後區塊中之第一頁面)。該實例性順序繼續至頁面610.0P1(快閃晶粒610.0之第一區塊中之第二頁面),接著為頁面610.1P1(快閃晶粒610.1之第一區塊中之第二頁面)等等,繼續至頁面610.65P1(快閃晶粒610.65之第一區塊中之第二頁面)。該實例依一相同順序繼續。該實例性順序完成於頁面610.0PP(快閃晶粒610.0之第一區塊中之最後頁面),接著為頁面610.1PP(快閃晶粒610.1之第一區塊中之最後頁面)等等,結束於頁面610.65PP(快閃晶粒610.65之第一區塊中之最後頁面,及R區塊660.0之最後區塊中之最後頁面)。
在各種實施例中,快閃晶粒610.65...610.1及610.0對應於圖1A之一或多個個別快閃晶粒194之各自者。在一些實施例中,快閃晶粒610.65...610.1及610.0為小於NVM 199之全部之一部分。例如,在各種實施例中,橫跨多個群組之快閃晶粒而獨立地分割資料,其中該等群組之快閃晶粒之各者可獨立存取。
圖7繪示經由具有一FLM及一或多個SLM頁面之兩層級映射而將LBA映射至儲存於一NVM中之LB之一實施例之選定細節,如LBA對 NVM位置之映射700。經由耦合至一或多個第二層級元件(其概念性繪示為一單一元件SLM頁面720)之一第一層級元件(FLM 710)而實施該兩層級映射。該FLM包含複數個項(SLM頁面/長度710.1...SLM頁面/長度710.M)。該FLM之該等項之各者指向該等SLM頁面之一者(諸如SLM頁面720)。該SLM頁面包含複數個項(LB頁面/長度720.1...LB頁面/長度720.N)。該等SLM頁面之該等項之各者指向NVM中之一資料開始位置(例如至少儲存一LBA之主機寫入資料之開頭部分之一讀取單元)。一除法器(整數除法器722)自(例如)一可程式化硬體暫存器(SLM項/SLM頁面(CSR)723)接收一參數以使其除一引入LBA以判定選擇何種FLM項及選擇何種SLM項(在由選定FLM項所指向之SLM頁面內)。該除法器耦合至該FLM及該等SLM頁面。
在各種實施例中,該圖繪示圖1A之映射141及/或表143或與圖1A之映射141及/或表143相關之選定細節。例如,在一些實施例中,映射141及/或表143實施映射資訊之一或多個快取,諸如一FLM之一或多個項及/或一SLM之一或多個項。例如,當該等快取替換一先前快取之FLM及/或SLM項時,該FLM及/或該SLM之整個影像被維持於NVM(例如圖1A之NVM 199)之一部分中且被更新。在一些實施例中,經由滾動或往復檢查點而實施該FLM及/或該等SLM整個影像,該等檢查點之各者為該各自整個映射映像之一部分。
在操作中,將LBA 721提供給整數除法器722。該除法器使LBA除以每個SLM頁面之SLM項數(如由SLM項/SLM頁面(CSR)723所提供)以導致一商(FLM索引722Q)及一餘數(SLM頁面索引722R)。該商用於選擇FLM項之一者,且讀取該選定FLM項之一頁面欄位(SLM指標710S)。該頁面欄位用於選擇SLM頁面之一者(例如SLM頁面720),且該餘數(例如作為一位移)用於選擇該選定SLM頁面之一項。該選定SLM頁面項之一頁面欄位用於選擇NVM中之一特定位置(諸如一特定 讀取單元),其中至少儲存對應於該所提供之LBA之LB之開頭部分(LB指標720L)。在各種實施例中,該LB指標包含NVM之一讀取單元之一位址(例如圖2之讀取單元位址223)。在一些實施例中,該等各自SLM項之各者包含一欄位編碼,例如與各自SLM項之一各自LB之資料相關聯之長度及/或跨度。例如,該跨度描述經存取以獲得全部資訊(未校正資料及相關聯之錯誤校正檢查位元)以判定各自LB之(錯誤校正)資料之(鄰接)讀取單元之數目。繼續該實例,該長度描述對應於各自LB之資料之讀取資訊(例如在讀取單元中,諸如由圖2之讀取單元長度225所繪示)之數目。在一些實施例中,各自FLM項之各者包含一欄位編碼,例如,與由FLM項之頁面欄位指定之一各自SLM頁面之整體讀取相關聯之長度及/或跨度。例如,該跨度描述經存取以獲得全部資訊(未校正資料及相關聯之錯誤校正檢查位元)以判定各自SLM頁面之(錯誤校正)資料之(鄰接)讀取單元之數目。繼續該實例,該長度描述對應於各自SLM頁面之資料之讀取資訊(例如在讀取單元中,諸如由圖2之讀取單元長度225所繪示)之數目。
在各種實施例中,商用作為一密鑰以存取一快取,諸如SLM頁面之一完全相關聯快取。若一特定SLM頁面之快取中存在一命中,則在不存取NVM之情況下於快取中找到該特定SLM頁面之一最新複本。在一些實施例及/或使用案例中,提供至複數個SLM頁面之快速存取能夠更有效率地處理至NVM之隨機存取及/或至NVM之複數個獨立串流之連續資料存取(例如至一第一區域之LBA之一第一串流之連續資料存取散佈有至一第二區域之LBA之一第二串流之連續資料存取)。
[讀取單元長度相關資訊編碼]
用於將主機邏輯區塊位址映射至NVM邏輯頁面位址之一資料結構包含用於控制在SSD控制器100與NVM 199之間轉移之資料之鄰接讀取單元之數目(例如圖2之讀取單元長度225)的資料長度相關資訊。 如上文相對於圖2至圖5及圖7所描述,一映射結構將一主機儲存位址轉換成指定一NVM讀取單元之位址之一NVM邏輯頁碼(LPN)。由各讀取單元之開始處之標頭資訊(圖4A、圖4B)指定一讀取單元之第一位元組之非標頭資料之位置。在一些實施例及/或使用案例中,提供相對較精確之長度資訊(例如由NVM空間回收(R區塊回收)使用)改良效能及/或效率。在各種實施例中,由映射項提供該相對較精確之長度資訊,該等映射項指定相對較精確之資料大小及用於確保獲得全部資料之待轉移之鄰接讀取單元之數目兩者。圖8(一概念圖,其繪示下列實例:資料長度及跨度;及用於獲得該資料長度及該跨度之值的編碼長度資訊之一解碼)中繪示與各種實施例相關之選定細節。
圖8之上部分在概念上類似於圖2(相同參考符號對應於相同元件)。然而,由圖8繪示之實施例包含編碼長度資訊822以取代讀取單元長度225或包含編碼長度資訊822及讀取單元長度225。圖8之中間部分繪示長度/跨度解碼830以將編碼長度資訊822轉換成長度數834A及跨度數832A。在一些實施例及/或使用案例中,圖2之讀取單元長度225為跨度數832A之一實施例。
圖8之底部繪示包含資料影像854之一序列之七個鄰接讀取單元(RU 852且亦繪示為資料850)。片語「資料影像」意指所關注之特定資料位元組,如圖8中所繪示,該等資料位元組在一些使用案例中與讀取單元邊界對準且在其他使用案例中未與讀取單元邊界對準。圖8之底部部分繪示術語「長度」及「跨度」(分別為長度834及跨度832)之實例。一「跨度」數目意指在SSD控制器100與NVM 199之間轉移之鄰接讀取單元(作為一概念群組(RU 852))之數目。經轉移之讀取單元含有所關注之資料位元組,例如資料影像。另一方面,長度數意指經轉移之讀取單元內所含之資料影像854之大小。在一些條件中,如圖8中所繪示,資料影像之大小小於含有資料影像之鄰接讀取單元之 大小。(例如)由用於初始化及控制資料轉移之圖1A之裝置介面邏輯191之排程模組193使用與待轉移之讀取單元之數目有關之資訊(例如轉移跨度)。(例如)由圖1A之回收器151使用與資料影像854之大小有關之資訊(例如資料影像之長度)以在使R區塊回收時瞭解釋放及使用之NVM空間。
在各種實施例中,讀取單元具有一固定大小,例如512個位元組或2048個位元組。在其他實施例中,NVM包括一或多個區域,且各區域中之讀取單元具有一各自固定大小,但該等區域之一第一者中之讀取單元之該各自固定大小不同於該等區域之一第二者中之讀取單元之該各自固定大小。對於固定大小之讀取單元,用某數目個讀取單元表示長度及跨度,例如,長度=6.1個讀取單元且跨度=7個讀取單元,如圖8中所繪示。例如,將跨度表示為正整數個讀取單元(例如7個鄰接RU 852),且將長度表示為非負實數個讀取單元(例如資料影像854之長度為約6.1個讀取單元)。
在一些條件中,一資料影像(例如資料影像854)未與讀取單元邊界(例如一讀取單元之第一位元組及最後位元組)準確對準,而是開始於一讀取單元起始邊界之後且結束於一讀取單元結束邊界之前。在一些實施例及/或使用案例中,未對準之資料影像經定位以彼此非常接近(例如,一者之結束端緊鄰另一者之開始端)以能夠藉由最小化浪費NVM空間而將資料更緊密地封裝於NVM中。該未對準導致需要識別一資料影像之第一位元組(或等效地為一些實施例中之最後位元組)之一準確位置。圖4A、圖4B及圖5繪示使用讀取單元之開始處之標頭來精確指示一資料影像於讀取單元內之開始位置,且繪示一單一讀取單元內之多個資料影像係可能的。
考量前述概念之四個實例。對於該等實例之各者,NVM之一讀取單元具有512B之一固定長度。在實例1中,將一第一4KB區域壓縮 成400B(400個位元組)大小。可將400B儲存於一單一讀取單元(其具有剩餘空間)內。即,所儲存之資料(資料影像)具有1個讀取單元之一跨度,此係因為400B完全含於一單一讀取單元內(例如,該單一讀取單元經讀取以讀取所儲存之資料)。所儲存之資料具有約0.8個讀取單元之一長度。
在實例2中,一4KB區域無法壓縮且被儲存於8個連續讀取單元內。所儲存之資料佔據8個鄰接讀取單元之全部或部分(對應於8個讀取單元之一跨度,例如,該8個鄰接讀取單元經讀取以讀取所儲存之資料)。所儲存之資料具有4KB之一長度,當將該長度表示為某數目個讀取單元時,該長度等於約7.8個讀取單元。在實例3中,一2KB區域被壓縮成1KB大小,被儲存於2個鄰接讀取單元內(對應於2個讀取單元之一跨度,例如,該2個鄰接讀取單元經讀取以讀取所儲存之資料),且具有約2.0個讀取單元之一長度。最後,在實例4中,一1KB區域無法壓縮且被儲存於3個鄰接讀取單元內,例如,所儲存之資料開始部分地通過一第一讀取單元,完全延伸通過一第二讀取單元,且結束於一第三讀取單元內。資料全部含於3個鄰接讀取單元內(對應於3個讀取單元之一跨度,例如,該3個鄰接讀取單元經讀取以讀取所儲存之資料),且僅具有少於2.0個讀取單元之一長度。
在一些實施例中,將長度及跨度完全編碼為編碼長度資訊822內之單獨數目,且在各種其他實施例中,其更有效率及/或提供一更高精度之長度量測以使用若干位元來編碼長度且僅使用極少位元來編碼一跨度位移。接著,藉由以各種預定方式組合更精確長度數與跨度位移而導出實際跨度數(例如經轉移之鄰接讀取單元之數目)。
在各種實施例及/或使用案例中,將長度編碼為具有格式<X.Y>之一定點實數,其中X表示讀取單元之整數數目且Y表示一讀取單元之小數數目。長度之前述表示實現允許壓縮資料更準確地考量R區塊 回收之細微度。在一些實施例中,用於編碼小數部分Y之位元數k經選擇以允許2^k個壓縮邏輯區塊配備於一單一讀取單元內,同時在其他實施例中,小數部分Y之位元數經選擇以允許2^(k-1)個壓縮邏輯區塊配備於一單一讀取單元內。在一特定實例中,四個位元用於表示X部分,且額外四個位元用於Y部分。
在一些實施例中,將由符號S標示之一跨度位移編碼為編碼長度資訊822之一1位元子欄位。因此,S具有選自{0,1}之一值。為判定實際跨度數(例如待轉移之鄰接讀取單元之數目),將位移S之值添加至X+1之值,其中X為長度數<X.Y>之整數部分。由於長度數之整數部分與跨度數之間之差異可在1至2之間變動,所以所得跨度數有時將引起一額外讀取單元被轉移。考量下列實例。在一第一實例中,長度為6.1個讀取單元(資料影像854,圖8)。跨度數為X+1+S=6+1+S=7個讀取單元。接著,S具有一0值。在一第二實例中,長度為7.0個讀取單元(圖中未繪示),且跨度數為X+1+S。接著,即使S=0,一額外讀取單元仍被轉移。在一第三實例中,長度為5.1個讀取單元且資料影像開始於第一讀取單元之結束端附近且結束於最後讀取單元之開始端附近。跨度數為X+1+S=5+1+S=7個讀取單元。因此,跨度位移S之值為1。對於使用一個位元之一跨度位移之實施例,有時在轉移一額外讀取單元與使用較少位元來表示位移之間進行權衡以允許一額外位元用於長度表示。
在其他實施例中,跨度位移S由編碼長度資訊822之一2位元子欄位表示,且具有選自{0,1,2}之一值。藉由將X之值添加至跨度位移之值而獲得跨度數之一值以因此實現其中X等於跨度且S=0之一情況及其中X比跨度小2且S=2之一情況。
在又一實施例中,跨度位移S由編碼長度資訊822之一2位元子欄位表示,且具有選自{-1,0,1}之一值。藉由將X+1之值添加至跨度位 移之值而獲得跨度數之一值。當X之值比跨度之值小2(如同上文之一實例)時,實現S=1導致校正數目個讀取單元被轉移,且當X之值等於跨度之值(如同上文之另一實例)時,實現S=(-1)導致校正數目個讀取單元被轉移。
在一些實施例中,藉由將X+2之值添加至跨度位移之值而獲得跨度數之一值。因此,根據跨度位移之編碼,一些組合導致最小數目個讀取單元被轉移,且其他組合導致一額外讀取單元被轉移。
在其他實施例及/或使用案例中,編碼跨度為正整數個讀取單元,同時編碼長度為呈<N.M>個讀取單元形式之一定點位移,其自跨度之值被減去以獲得資料影像之讀取單元之長度之一值。因此,長度=(跨度-N.M)個讀取單元。
<X.Y>格式之小數Y部分之細微度根據特定實施例及/或使用案例而變動。在不浪費NVM空間之一些實施例中,可將該細微度設定為低至一個位元組。在減少儲存空間以提高位址操縱效率之一些實施例中,Y之細微度為一讀取單元之某一分數,例如1/2個讀取單元或小於1/2個讀取單元,諸如1/4個讀取單元。
在一些實施例(諸如其中並非全部讀取單元具有相同大小之實施例)中,以讀取單元量測跨度且以一固定大小之單元(諸如標稱大小之讀取單元)量測長度。例如,將長度表示為具有64B之一分數細微度之某數目個2KB單元,且跨度為含有資料影像之某數目個讀取單元。讀取單元之各者之一各自大小根據(例如)ECC需求而變動。在一些案例中,維持單元之一固定大小長度改良所考量之使用空間之準確性。維持讀取單元之單位跨度實現自NVM轉移最小量之資料以擷取一特定資料影像。
已描述其中將長度或替代地一長度位移編碼為一定點數之實施例。可考量其中將長度或替代地一長度位移編碼為一浮點數或任何其 他編碼之其他實施例。
[壓縮資料之長度編碼]
在一些實施例及/或使用案例中,儲存於NVM(例如圖1A之NVM 199)中之壓縮資料能夠改良(較低)寫入放大。由於該壓縮資料小於對應未壓縮資料,所以追蹤該資料之位置及追蹤自由空間量解釋該壓縮資料更小之原因。
基於磁區之系統(諸如SATA固態磁碟(例如圖1A之SSD 101))將資料寫入於固定大小之單元(例如磁區)中。在各種實施例中,實例性磁區大小為512個、520個及528個位元組或其他大小。在一些實施例中,一SATA SSD將複數個鄰接磁區(諸如八個鄰接磁區)儲存為一單元(例如一邏輯頁面(Lpage))以(例如)減少該SSD中之磁區位置之追蹤附加項。例如,經由該SSD之一讀取-修改-寫入而執行寫入一子集之Lpage(諸如一磁區)(且在一些操作背景中具有比不具有前一讀取之一寫入低之效能)。選擇一適當Lpage大小權衡某數目個小於邏輯頁面大小之寫入(資料寫入之效能)對系統複雜性及映射操作之效能。(更小Lpages提供更少讀取-修改-寫入,但增加映射之大小及映射活動之量。)
一些SSD具有一固定大小之映射,即,將一群組之磁區視為一Lpage,且(例如經由圖1A之映射141)將一Lpage映射至由SSD控制之NVM(例如圖1A之NVM 199)中之相同大小(忽略ECC及系統附加項)之儲存量。
一些SSD提供Lpage之資料壓縮(諸如經由無損失壓縮)以因此可變地減小Lpage之大小。映射至NVM之可變大小之區域(例如經由圖1A之映射141)解釋可變大小減小之原因。在一些實施例中,該映射係基於一位元組細微度,使得無論Lpage之可變大小如何,空間均不會被浪費。在其他實施例中,該映射係基於其他細微度(例如一讀取單 元之1/4或1/2)。
指定NVM中之一精確位置需要一相對較大位址(歸因於NVM之相對較大大小)。因此,將可變大小之Lpage映射至NVM之精細細微度(以不浪費空間)將需要一相對較大映射(例如,其中各項必須儲存一完整NVM位元組位址;圖中未繪示)。增大映射之一大小導致額外附加項,此係因為在一些實施例中,映射具有比資料多數倍之預留空間(over-provision),且因此使映射大小增大之成本乘以預留空間量。例如,在一些實施方案中,映射具有300%之預留空間(映射之所需儲存之4倍)。
在一些實施例中,將NVM實施為及/或用作單元,諸如讀取單元(例如圖6之讀取單元610.0R0、610.0R1、610.0RR、610.1R0、610.1R1、610.1RR、610.65R0、610.65R1及610.65RR)。在一些實施例中,讀取單元為可藉由(例如較低層級(諸如ECC))錯誤校正而讀取之NVM之一最精細細微度。在各種實施例中,讀取單元之使用者(非ECC)部分為下列之一或多者:512個位元組大小、1KB大小、2KB大小、任何其他大小及可變大小。在一些實施例中,可基於(諸如)含有讀取單元之NVM之區塊之磨損或位元錯誤率歷史之因數而變動讀取單元之大小(圖中未繪示)。
藉由將額外資訊儲存於讀取單元(諸如起始於讀取單元之各Lpage之一標頭)中而減小映射之一大小(圖4A、圖4B及圖5)。儘管該額外資訊使用整個NVM儲存之一資料部分來儲存該標頭(對使用一映射部分來儲存額外NVM位址資訊),但讀取/寫入映射之效率使得在一些實施例中,映射之大小較佳(圖1A之映射141及表143)。
藉由將零或多個標頭儲存於各讀取單元(圖4A及圖4B)(其指示起始於讀取單元之Lpage(若存在)且其中定位Lpage之第一位元組(圖4B及圖5))中而使映射能夠藉由NVM中之一讀取單元位址而非一位元組 位址而引用Lpage且減小映射之大小。由於必須讀取整個讀取單元(待校正),所以該讀取單元中之全部標頭可用,且該等標頭能夠提供與起始於該讀取單元之個別Lpage之定位位置有關之位元組細微度(或其他細微度)資訊(例如相對於圖4A、圖4B及圖5所繪示)。
在各種實施例中,將一Lpage之某數目個待讀取之讀取單元儲存於映射中(而非(例如)僅儲存於含有該Lpage之開端的讀取單元中之一標頭中)以(例如)使該Lpage之全部讀取能夠並行開始。在一些實施例中,映射針對各Lpage而儲存:含有Lpage之開端之讀取單元位址;及待讀取之某數目個讀取單元,諸如某數目個連續讀取單元,例如跨度(圖8之跨度832A)。
在一些使用背景中,當寫入一Lpage時,自一先前R區塊之總使用空間遞減(減去)Lpage在該先前R區塊位置中消耗之空間,且將由Lpage之新內容使用之空間遞增(添加)至將Lpage之該等新內容寫入至其中之一新R區塊之總使用空間中(大體上參見圖6)。該遞減及遞增使用Lpage之一先前長度及Lpage之一新長度。在一些實施例中,映射亦儲存Lpage長度資訊(例如圖8之編碼長度資訊822)。
根據各種實施例,一R區塊中之總可用空間為下列之一或多者:對於全部R區塊而言為常數;對於大多數R區塊而言為常數,但對於一些R區塊而言係不同的;及依據R區塊而變動。例如,在一第一實施例中,使用一實體區塊映射來(用良好區塊)替換劣質區塊。在該第一實施例中,R區塊具有一恆定大小。在一第二實例性實施例中,依一定址序列跳過一R區塊中之劣質區塊,且R區塊具有不同大小。在一第三實例性實施例中,基於(諸如)磨損、區塊/區域之錯誤歷史及區塊/區域之取樣位元錯誤率而變動各區塊(或SSD之各區域(針對某一細微度之區域))之一編碼率。該編碼率變動使每讀取單元之使用者資料量變動,且因此使各R區塊之總大小變動。
在其中資料係基於磁區且未被壓縮之一些實施例及/或使用案例中,以磁區為單位累積使用空間之計數。在其中資料係基於Lpage且未被壓縮之一些實施例及/或使用案例中,以Lpage為單位(諸如以八個磁區為單位)累積使用空間之計數。在其中Lpage經儲存壓縮之一些實施例及/或使用案例中,空間追蹤之基於Lpage或磁區之細微度導致解釋R區塊中之使用空間時之相對較大偏差。在一些情況中,該等偏差導致對效能之一相對較大影響,此係因為記憶體回收無法判定一R區塊之實際利用率,且無法選擇用於回收之最佳或相對較佳R區塊。
[額外實施方案/實施例資訊]
在各種實施例中,(例如)由一或多個狀態機實施操作及/或功能之全部或任何部分,諸如由圖2至圖8所繪示。該等狀態機之實例性實施方案包含硬體(例如邏輯閘及/或電路、專用狀態機電路或固線式控制電路)、軟體(例如韌體或微程式碼)或硬體及軟體之組合。在一些實施例中,至少部分地經由韌體、驅動程式及/或應用程式而實施該等狀態機之一或多者。在各種實施例中,部分地經由圖1A之SSD控制器100、部分地經由CPU核心172執行之韌體、部分地經由圖1B之韌體106、部分地經由驅動程式107及/或部分地藉由應用程式109而實施該等狀態機之一或多者。
在各種實施例中,(例如)經由硬體技術、軟體技術及/或韌體技術之任合組合,藉由控制及/或根據圖1A之連貫性管理179、轉譯管理177及/或映射141之任何一或多者而實施由圖2至圖8繪示之操作及/或功能之全部或任何部分。
[實例性實施方案技術]
在一些實施例中,由與一電腦系統之處理相容之一規格指定:操作之全部或部分之各種組合,其經執行以(例如)使用(諸如)一位址映射功能(例如圖1A之映射141)之表項內之長度相關資訊之各種編碼 技術、一計算主機快閃記憶體控制器及/或一SSD控制器(諸如圖1A之SSD控制器100)來實施儲存位址空間對NVM位址、跨度及長度映射/轉換;及處理器、微處理器、單晶片系統、特殊應用積體電路、硬體加速器或其他電路之部分,其提供前面所提及操作之全部或部分。該規格係根據各種描述,諸如硬體描述語言、電路描述、接線對照表描述、遮罩描述或佈局描述。實例性描述包含Verilog、VHDL、SPICE、SPICE變體(諸如PSpice)、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各種實施例中,該處理包含解譯、編譯、模擬及合成之任何組合以產生、驗證或指定適合於包含在一或多個積體電路上之邏輯及/或電路。根據各種實施例,可根據各種技術而設計及/或製造各積體電路。該等技術包含一可程式化技術(諸如一場或遮罩可程式化閘陣列積體電路)、一半訂製技術(諸如一基於完全或部分胞之積體電路)及一全訂製技術(諸如實質上特定之一積體電路)、其等之任何組合、或與積體電路之設計及/或製造相容之任何其他技術。
在一些實施例中,藉由下列各者而執行操作之全部或部分之各種組合(如由具有儲存於其內之一組指令之一電腦可讀媒體所描述):執行及/或解譯一或多個程式指令;解譯及/或編譯一或多個原始資料及/或描述性語言陳述式;或執行藉由編譯、轉譯及/或解譯用程式化及/或描述性語言陳述式表示之資訊而產生之二進位指令。該等陳述式與任何標準程式設計或描述性語言(諸如C、C++、Fortran、Pascal、Ada、Java、VBscript及Shell)相容。將該等程式指令、該等語言陳述式或該等二進位指令之一或多者視情況儲存於一或多個電腦可讀儲存媒體元件上。在各種實施例中,將該等程式指令之部分、全部或各種部分實現為一或多個函式、常式、副常式、內嵌(in-line)常式、程序、巨集指令或其等之部分。
[結論]
僅為了便於準備正文及圖式,已在描述中作出某些選擇,且若無相反指示,則該等選擇本身不應被解譯為傳達與所描述之實施例之結構或操作相關之額外資訊。該等選擇之實例包含:用於圖編號之標示之特定組織或指派;及用於識別及引用實施例之特徵及元件之元件識別符(例如圖說文字或數字指示符)之特定組織或指派。
具體言之,用語「包含」意欲被解譯為描述開放式範疇之邏輯組之抽象概念且不意謂傳達實體容量,除非後面明確地跟有用語「在...之內」。
儘管已為使描述及理解清楚而詳細地描述前述實施例,但本發明不受限於所提供之細節。存在本發明之諸多實施例。所揭示之實施例具例示性且不具限制性。
應瞭解,建構、配置及使用之諸多變動可與描述一致,且落於所發佈專利之申請專利範圍之範疇內。例如,可根據各組件區塊之各種實施例而變動互連及功能單元之位元寬度、時脈速度及所使用之技術之類型。互連及邏輯所被給予之名稱僅具例示性,而不應被解譯為限制所描述之概念。可根據各種實施例而變動流程圖及流程圖程序、動作及功能元件之順序及配置。此外,若無明確相反說明,則所指定之值範圍、所使用之最大值及最小值、或其他特定規格(諸如快閃記憶體技術類型;及暫存器及緩衝區中之項及階段之數目)僅為所描述之實施例之值範圍、最大值及最小值或其他特定規格,預期追蹤實施方案技術之改良及變化,且不應被解譯為限制。
此項技術中已知之功能等效技術可用於取代經描述以實施各種組件、子系統、操作、函式、常式、副常式、內嵌常式、程序、巨集指令或其等之部分之技術。亦應瞭解,可在硬體(例如一般專用電路)或軟體(例如經由程式化控制器或處理器之某一方式)中選擇性實現實施例之諸多功能態樣,作為實施例相依設計約束及更快速處理(促進 先前在硬體中之功能遷移至軟體中)與更高整合密度(促進先前在軟體中之功能遷移至硬體中)之技術趨向之一函式。在各種實施例中,特定變動包含(但不限於):分割差異;不同形狀因數及組態;不同作業系統及其他系統軟體之使用;不同介面標準、網路協定或通信鏈路之使用;及根據一特定應用之獨特工程及商業約束而實施本文所描述之概念時所預期之其他變動。
已描述具有完全超出所描述之實施例之諸多態樣之一最簡單實施方案所需之細節及環境背景之細節及環境背景之實施例。一般技術者將認知,一些實施例在不改動剩餘元件之間之基本協作之情況下省略所揭示之組件或特徵。因此,應瞭解,無需所揭示細節之大多數來實施所描述之實施例之各種態樣。就剩餘元件可與先前技術區分而言,被省略之組件及特徵對本文所描述之概念無限制。
全部此等設計變動未實質上改變由所描述之實施例傳達之教示。亦應瞭解,本文所描述之實施例對其他計算及網路應用具有廣泛適用性,且不受限於所描述之實施例之特定應用或工業。因此,本發明應被解譯為包含所發佈專利之申請專利範圍之範疇內所涵蓋之全部可能修改及變動。
141‧‧‧映射
211‧‧‧邏輯區塊位址(LBA)
213‧‧‧邏輯頁碼(LPN)
215‧‧‧邏輯位移
221‧‧‧邏輯頁碼(LPN)之映射資訊
223‧‧‧讀取單元位址
822‧‧‧編碼長度資訊
830‧‧‧長度/跨度解碼
832‧‧‧跨度
832A‧‧‧跨度
834‧‧‧長度
834A‧‧‧長度
850‧‧‧資料
852‧‧‧讀取單元(RU)
854‧‧‧資料影像

Claims (20)

  1. 一種用於操作一記憶體裝置之方法,其包括:至少部分地基於一儲存空間位址中之複數個頁面之一特定者之一頁面位址而判定一或多個非揮發性記憶體之複數個讀取單元之一者之一讀取單元位址;至少部分地基於該頁面位址而判定指定整數個該等讀取單元之一跨度;至少部分地基於該頁面位址而判定具有比該等讀取單元更精細之一細微度之單元之一長度;至少部分地基於該讀取單元位址及該跨度而讀取與該特定頁面相關聯之資料,該讀取包括存取整數(N)個該等讀取單元,且其中N係至少部分地基於該跨度;回應於寫入該資料,至少部分地基於該長度而更新該等非揮發性記憶體之空間使用資訊;其中該等讀取單元之各者為可自該等非揮發性記憶體讀取之一最小量子之可校正資料;及其中該整數(N)個該等讀取單元之至少一者含有與該特定頁面相關聯之該資料之至少部分及與該等頁面之至少另一者相關聯之至少一些資料。
  2. 如請求項1之方法,其中該判定該讀取單元位址包括:將該等頁面之各者映射至該等讀取單元之各自者之各自讀取單元位址,該讀取單元位址為將該特定頁面映射至其之該各自讀取單元位址;該判定該跨度包括:將該等頁面之各者映射至指定各自整數個該等讀取單元之各自跨度,該跨度為將該特定頁面映射至其 之該各自跨度;及該判定該長度包括:將該等頁面之各者映射至具有比該等讀取單元更精細之一細微度之單元之各自長度,該長度為將該特定頁面映射至其之該各自長度。
  3. 如請求項2之方法,其進一步包括:存取一映射表之複數個項之一特定者,該映射表使該等頁面之各者與該等映射表項之一各自者相關聯,該特定頁面與該特定映射表項相關聯;及其中該存取包括該特定頁面至該讀取單元位址之該映射、該特定頁面至該跨度之該映射及該特定頁面至該長度之該映射,且該特定映射項包括該各自跨度、該各自位址及該各自長度。
  4. 如請求項1之方法,其中該等非揮發性記憶體包括複數個可單獨寫入之非揮發性記憶體頁面;及其中該等可單獨寫入之非揮發性記憶體頁面之各者包括複數個該等讀取單元。
  5. 如請求項1之方法,其中該讀取該資料包括:剖析該等存取讀取單元中所包括之一標頭,該標頭包括識別與該特定頁面相關聯之該資料之一位移。
  6. 如請求項1之方法,其進一步包括:回應於該寫入該資料,根據與該特定頁面相關聯之該資料之一長度而更新該長度。
  7. 如請求項6之方法,其中該寫入該資料包括:減小與該特定頁面相關聯之該資料之一大小,且該特定頁面之該各自長度係根據與該特定頁面相關聯之該減小大小之該資料之一長度。
  8. 如請求項7之方法,其中該減小包括壓縮。
  9. 如請求項1之方法,其進一步包括:回應於該寫入該資料,根據 用於擷取與該特定頁面相關聯之該資料之某數目個待存取之該等讀取單元而更新該特定頁面之該特定跨度。
  10. 如請求項1之方法,其中該特定頁面為一第一頁面,該長度為一第一長度,且該第一長度不同於與該等頁面之一第二者相關聯之一第二長度。
  11. 一種用於操作一記憶體裝置之方法,其包括:至少部分地基於一主機儲存空間位址而判定描述以一轉移量細微度為單位之一轉移量值及以一空間量細微度為單位之一空間量值之一元素;至少部分地基於該元素而判定該轉移量值及該空間量值;至少部分地基於該轉移量值而自一非揮發性記憶體(NVM)讀取對應於該主機儲存空間位址之資料;至少部分地基於該空間量值而追蹤該NVM之空間使用資訊;及其中該轉移量細微度大於該空間量細微度。
  12. 如請求項11之方法,其中該轉移量值表示可自該NVM讀取之一最小量子之錯誤可校正資料之整數倍。
  13. 如請求項12之方法,其中可自該NVM讀取之該最小量子之錯誤可校正資料對應於一原始資料部分及與該原始資料部分相關聯之低層級錯誤校正碼位元。
  14. 如請求項11之方法,其進一步包括:變換該資料之至少一部分;及回應於來自指定該主機儲存空間位址之該主機之一讀取請求而使該變換之結果之至少一部分返回至該主機。
  15. 如請求項14之方法,其中該變換包括解壓縮及解密之至少一者。
  16. 一種非暫時性有形電腦可讀媒體,其具有儲存於其內之一組指 令,當由一處理元件執行該組指令時,該組指令引起該處理元件執行包括下列各者之操作:至少部分地基於一主機儲存空間位址而判定描述以一轉移量細微度為單位之一轉移量值及以一空間量細微度為單位之一空間量值之一元素;至少部分地基於該元素而判定該轉移量值及該空間量值;至少部分地基於該轉移量值而自一非揮發性記憶體(NVM)讀取對應於該主機儲存空間位址之資料;至少部分地基於該空間量值而追蹤該NVM之空間使用資訊;及其中該轉移量細微度大於該空間量細微度。
  17. 如請求項16之非暫時性有形電腦可讀媒體,其中該轉移量值表示可自該NVM讀取之一最小量子之錯誤可校正資料之整數倍。
  18. 如請求項17之非暫時性有形電腦可讀媒體,其中可自該NVM讀取之該最小量子之錯誤可校正資料對應於一原始資料部分及與該原始資料部分相關聯之低層級錯誤校正碼位元。
  19. 如請求項17之非暫時性有形電腦可讀媒體,其中該元素之一第一子元素包括該轉移量值且該元素之一第二子元素包括該空間量值。
  20. 如請求項17之非暫時性有形電腦可讀媒體,其中該元素之一第一子元素包括指示該轉移量值之一整數且該元素之一第二子元素包括指示小於可自該NVM讀取之該最小量子之錯誤可校正資料之資料量之一小數,且該整數及該小數之組合對應於該空間量值。
TW103102153A 2013-01-22 2014-01-21 用於操作記憶體裝置之方法及電腦可讀媒體 TWI534617B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201361755169P 2013-01-22 2013-01-22

Publications (2)

Publication Number Publication Date
TW201443640A TW201443640A (zh) 2014-11-16
TWI534617B true TWI534617B (zh) 2016-05-21

Family

ID=49958324

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103102153A TWI534617B (zh) 2013-01-22 2014-01-21 用於操作記憶體裝置之方法及電腦可讀媒體

Country Status (6)

Country Link
US (4) US9582431B2 (zh)
EP (1) EP2757480A1 (zh)
JP (1) JP6265746B2 (zh)
KR (1) KR102230227B1 (zh)
CN (1) CN103942114B (zh)
TW (1) TWI534617B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI771332B (zh) * 2017-02-20 2022-07-21 香港商阿里巴巴集團服務有限公司 資源回收方法及裝置
TWI804292B (zh) * 2021-09-30 2023-06-01 美商萬國商業機器公司 用於校準一量子解碼器之電子系統、電腦實施方法及電腦程式產品

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
US8713379B2 (en) * 2011-02-08 2014-04-29 Diablo Technologies Inc. System and method of interfacing co-processors and input/output devices via a main memory system
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
TWI506430B (zh) * 2013-03-20 2015-11-01 Phison Electronics Corp 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
WO2014163627A1 (en) * 2013-04-02 2014-10-09 Hewlett-Packard Development Company, L.P. Sata initiator addressing and storage device slicing
US9092321B2 (en) * 2013-07-24 2015-07-28 NXGN Data, Inc. System and method for performing efficient searches and queries in a storage node
US9927998B2 (en) 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
US9286209B2 (en) * 2014-04-21 2016-03-15 Avago Technologies General Ip (Singapore) Pte. Ltd. System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array
US9766972B2 (en) * 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9552289B1 (en) 2014-11-25 2017-01-24 Seagate Technology Llc Bitwise addressing of entries in a forward lookup table
JP6207765B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
JP6218971B2 (ja) 2014-12-14 2017-10-25 ヴィア アライアンス セミコンダクター カンパニー リミテッド アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択
JP6209689B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
US11036533B2 (en) 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
US10838852B2 (en) 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US11829349B2 (en) 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
US9766837B2 (en) * 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
US9727416B2 (en) * 2015-07-01 2017-08-08 Xilinx, Inc. Variable code rate solid-state drive
US10089196B2 (en) 2015-07-14 2018-10-02 Shannon Systems Ltd. Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same
CN106648439B (zh) * 2015-07-14 2019-11-29 上海宝存信息科技有限公司 于控制逻辑错误时重新配置存储控制器的方法及装置
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US10459846B2 (en) * 2015-09-10 2019-10-29 Toshiba Memory Corporation Memory system which uses a host memory
US10095622B2 (en) * 2015-12-29 2018-10-09 Intel Corporation System, method, and apparatuses for remote monitoring
US10565101B2 (en) * 2016-01-29 2020-02-18 Hewlett Packard Enterprise Development Lp Storing data in a storage device
WO2017140262A1 (zh) 2016-02-18 2017-08-24 华为技术有限公司 数据更新技术
CN106201778B (zh) * 2016-06-30 2019-06-25 联想(北京)有限公司 信息处理方法及存储设备
CN106201350B (zh) * 2016-07-07 2019-10-18 华为技术有限公司 存储数据的方法、存储器和计算机系统
US20180039422A1 (en) * 2016-08-05 2018-02-08 Alibaba Group Holding Limited Solid state storage capacity management systems and methods
KR102611638B1 (ko) * 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
US10574270B1 (en) * 2016-11-09 2020-02-25 Seagate Technology Llc Sector management in drives having multiple modulation coding
KR20180055297A (ko) 2016-11-16 2018-05-25 삼성전자주식회사 언맵 리드를 수행하는 메모리 장치 및 메모리 시스템
JP2018160059A (ja) 2017-03-22 2018-10-11 東芝メモリ株式会社 メモリコントローラ
US10585749B2 (en) 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US10719446B2 (en) * 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
CN110490213B (zh) * 2017-09-11 2021-10-29 腾讯科技(深圳)有限公司 图像识别方法、装置及存储介质
CN118051268A (zh) * 2017-09-27 2024-05-17 北京忆芯科技有限公司 电子设备及其启动方法
US10970226B2 (en) * 2017-10-06 2021-04-06 Silicon Motion, Inc. Method for performing access management in a memory device, associated memory device and controller thereof, and associated electronic device
JP7074453B2 (ja) 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
JP7074454B2 (ja) 2017-10-30 2022-05-24 キオクシア株式会社 計算機システムおよび制御方法
CN108255741A (zh) * 2017-12-19 2018-07-06 深圳忆联信息系统有限公司 一种固态硬盘原子写入的方法及固态硬盘
CN111512290B (zh) * 2017-12-27 2023-09-22 华为技术有限公司 文件页表管理技术
KR20190105869A (ko) * 2018-03-06 2019-09-18 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN108549525B (zh) * 2018-04-04 2022-07-15 北京蓝杞数据科技有限公司天津分公司 数据存储和访问方法、装置、电子设备及存储介质
US10474361B1 (en) * 2018-05-02 2019-11-12 Seagate Technology Llc Consolidating non-volatile memory across multiple storage devices for front end processing
CN110515761B (zh) * 2018-05-22 2022-06-03 杭州海康威视数字技术股份有限公司 一种数据获取方法及装置
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
KR20200076923A (ko) * 2018-12-20 2020-06-30 에스케이하이닉스 주식회사 저장 장치, 컨트롤러 및 저장 장치의 동작 방법
KR20200088713A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN109918373A (zh) * 2019-02-02 2019-06-21 上海达梦数据库有限公司 数据存储方法、装置、服务器和存储介质
KR102659832B1 (ko) * 2019-03-05 2024-04-22 삼성전자주식회사 데이터 저장 장치 및 시스템
CN111767005B (zh) * 2019-04-01 2023-12-08 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
CN111831297B (zh) * 2019-04-17 2021-10-26 中兴通讯股份有限公司 零差分升级方法及装置
US10783978B1 (en) * 2019-08-27 2020-09-22 Micron Technology, Inc. Read voltage-assisted manufacturing tests of memory sub-system
CN110765033B (zh) * 2019-10-31 2023-03-10 四川效率源信息安全技术股份有限公司 一种ahci模式下访问硬盘的方法
CN111241090B (zh) * 2019-12-23 2023-11-10 华为技术有限公司 存储系统中管理数据索引的方法和装置
CN111176583B (zh) 2019-12-31 2021-03-30 北京百度网讯科技有限公司 一种数据写入方法、装置和电子设备
JP7395388B2 (ja) 2020-03-06 2023-12-11 キオクシア株式会社 メモリシステム及びその制御方法
CN111427805B (zh) * 2020-03-19 2023-04-07 电子科技大学 一种基于页模式操作的存储器快速访问方法
US11947451B2 (en) * 2020-04-22 2024-04-02 Micron Technology, Inc. Mapping descriptors for read operations
CN112052192B (zh) * 2020-09-15 2024-04-05 广东高标智能科技股份有限公司 电动车故障记录、读取方法及装置
US11573914B2 (en) * 2021-03-19 2023-02-07 Sandisk Technologies Llc Nonconsecutive mapping scheme for data path circuitry in a storage device
CN113064555A (zh) * 2021-04-21 2021-07-02 山东英信计算机技术有限公司 一种bios的数据存储方法、装置、设备及存储介质
CN113300720B (zh) * 2021-05-25 2022-06-28 天津大学 一种针对叠加水印的长dna序列的插入删节的分段识别方法
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
CN113590502B (zh) * 2021-07-23 2024-03-22 合肥康芯威存储技术有限公司 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统
CN113590503B (zh) * 2021-07-23 2024-03-22 合肥康芯威存储技术有限公司 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
US11860775B2 (en) 2021-09-29 2024-01-02 Silicon Motion, Inc. Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware
US11972150B2 (en) 2021-09-29 2024-04-30 Silicon Motion, Inc. Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware
CN115878020A (zh) * 2021-09-29 2023-03-31 慧荣科技股份有限公司 编码历程信息的存取方法和计算机可读取存储介质和装置
CN113590051B (zh) * 2021-09-29 2022-03-18 阿里云计算有限公司 数据存储和读取方法、装置、电子设备及介质
CN114415966B (zh) * 2022-01-25 2022-08-12 武汉麓谷科技有限公司 一种kv ssd存储引擎的构建方法
US11853554B2 (en) 2022-04-05 2023-12-26 Western Digital Technologies, Inc. Aligned and unaligned data deallocation
CN115079957B (zh) * 2022-07-20 2023-08-04 阿里巴巴(中国)有限公司 请求处理方法、装置、控制器、设备及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003280979A (ja) 2002-03-20 2003-10-03 Toshiba Corp 情報記憶装置
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
KR100706242B1 (ko) 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
US7774525B2 (en) * 2007-03-13 2010-08-10 Dell Products L.P. Zoned initialization of a solid state drive
US9152496B2 (en) * 2007-12-21 2015-10-06 Cypress Semiconductor Corporation High performance flash channel interface
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8307258B2 (en) * 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8601222B2 (en) * 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8364929B2 (en) 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device
US8745353B2 (en) * 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
CN101930404B (zh) * 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
KR101636785B1 (ko) * 2010-12-01 2016-07-06 엘에스아이 코포레이션 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
JP2014507717A (ja) 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算
US8949513B2 (en) * 2011-05-10 2015-02-03 Marvell World Trade Ltd. Data compression and compacting for memory devices

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI771332B (zh) * 2017-02-20 2022-07-21 香港商阿里巴巴集團服務有限公司 資源回收方法及裝置
TWI804292B (zh) * 2021-09-30 2023-06-01 美商萬國商業機器公司 用於校準一量子解碼器之電子系統、電腦實施方法及電腦程式產品
US11803441B2 (en) 2021-09-30 2023-10-31 International Business Machines Corporation Calibrated decoders for implementations of quantum codes

Also Published As

Publication number Publication date
US11449252B2 (en) 2022-09-20
JP6265746B2 (ja) 2018-01-24
US10740011B2 (en) 2020-08-11
CN103942114B (zh) 2018-08-10
TW201443640A (zh) 2014-11-16
US20170123733A1 (en) 2017-05-04
KR20140094467A (ko) 2014-07-30
EP2757480A1 (en) 2014-07-23
US9582431B2 (en) 2017-02-28
KR102230227B1 (ko) 2021-03-18
US20180232179A1 (en) 2018-08-16
US9971547B2 (en) 2018-05-15
JP2014142931A (ja) 2014-08-07
US20140208062A1 (en) 2014-07-24
CN103942114A (zh) 2014-07-23
US20200333969A1 (en) 2020-10-22

Similar Documents

Publication Publication Date Title
TWI534617B (zh) 用於操作記憶體裝置之方法及電腦可讀媒體
JP6387231B2 (ja) 不揮発性メモリへの書き込みの管理および領域選択
US9851910B2 (en) Scalable data structures for control and management of non-volatile storage
US9886383B2 (en) Self-journaling and hierarchical consistency for non-volatile storage
TWI529734B (zh) 用於操作非揮發性儲存器之方法、有形電腦可讀媒體及非揮發性儲存系統
TWI473011B (zh) 用於非揮發性儲存之可變超量供給
TWI566254B (zh) 用於操作一記憶體之方法、記憶體系統、記憶體設備及非暫態機器可讀媒體
CN103858116A (zh) I/o设备及计算主机互操作
JP2015036982A (ja) ホストとコントローラとの間でパーティション化された変換レイヤ
TW201241615A (en) Higher-level redundancy information computation
KR20130114681A (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
TWI531902B (zh) 矽獨立元件之部分冗餘陣列

Legal Events

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