TWI788860B - 記憶體系統 - Google Patents
記憶體系統 Download PDFInfo
- Publication number
- TWI788860B TWI788860B TW110119612A TW110119612A TWI788860B TW I788860 B TWI788860 B TW I788860B TW 110119612 A TW110119612 A TW 110119612A TW 110119612 A TW110119612 A TW 110119612A TW I788860 B TWI788860 B TW I788860B
- Authority
- TW
- Taiwan
- Prior art keywords
- aforementioned
- data
- integrity
- verification
- lba
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Vehicle Body Suspensions (AREA)
- Iron Core Of Rotating Electric Machines (AREA)
- Soundproofing, Sound Blocking, And Sound Damping (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本發明之其中一個實施形態,係實現能夠減輕非揮發性記憶體之疲勞並且保全資料之記憶體系統。
若依據實施形態,則記憶體系統,係具備有非揮發性記憶體、和控制器。控制器,係對於將非揮發性記憶體之記憶區域邏輯性地作了分割的至少1個的記憶區域作管理。控制器,係針對關連於分別被記憶在至少1個的記憶區域之中之1個以上的記憶區域處之資料的完整性之最後被作確認的時間之資訊作管理。
Description
本發明之其中一個實施形態,係有關於對具備有非揮發性記憶體之記憶體系統作控制的技術。
[關連申請案]
本申請案,係享受以日本專利申請2020-208475號(申請日:2020年12月16日)作為基礎申請之優先權。本申請案,係藉由參照此基礎申請案,而包含基礎申請案之所有的內容。
近年來,具備有非揮發性記憶體之記憶體系統係廣泛普及。作為此種記憶體系統之其中一者,具備有NAND型快閃記憶體之固態硬碟(SSD)係為周知。SSD,係作為各種的計算裝置之主儲存裝置而被作使用。
記憶體系統與主機,係能夠分別進行用以保全被寫入至了非揮發性記憶體中之資料之處理。
記憶體系統,例如係定期性地進行被稱作巡邏(patrol)之處理。在巡邏處理中,資料係被從非揮發性記憶體而讀出,並進行有針對被讀出的資料之錯誤訂正處理。例如,當錯誤被作了訂正的位元之數量超過了臨限值的情況時,將該資料作了儲存之區塊,係成為刷新(refresh)處理或垃圾回收(garbage collection,GC)處理之對象。
又,主機,例如係定期性地進行被稱作刷洗(scrubbing)之處理。在刷洗處理中,全部資料係被從非揮發性記憶體而讀出,並進行有針對被讀出的資料之檢驗(例如校驗和(checksum)之確認)。
在巡邏處理和刷洗處理中,係產生有對於非揮發性記憶體之存取。若是對於非揮發性記憶體之存取有所增加,則係會使非揮發性記憶體疲勞。因此,係需要實現一種能夠減輕非揮發性記憶體之疲勞並且保全資料之新的功能。
其中一個實施形態,係提供一種能夠減輕非揮發性記憶體之疲勞並且保全資料之記憶體系統。
若依據實施形態,則記憶體系統,係具備有非揮發性記憶體、和控制器。控制器,係對於將非揮發性記憶體之記憶區域邏輯性地作了分割的至少1個的記憶區域作管理。控制器,係針對關連於分別被記憶在至少1個的記憶區域之中之1個以上的記憶區域處之資料的完整性之最後被作確認的時間之資訊作管理。
以下,參考圖面,針對實施形態作說明。
(第1實施形態)
首先,參考圖1,針對包含第1實施形態之記憶體系統的資訊處理系統1之構成作說明。資訊處理系統1,係包含有主機裝置2(以下,稱作主機2)、和記憶體系統3。
主機2,係身為資訊處理裝置。主機2,係可身為將大量且多樣化的資料保存於記憶體系統3中之儲存伺服器,亦可身為個人電腦。
記憶體系統,係身為以對於如同NAND型快閃記憶體一般之非揮發性記憶體而寫入資料並從非揮發性記憶體而將資料讀出的方式所構成之半導體儲存裝置。記憶體系統,係亦被稱作儲存裝置。記憶體系統,例如係可作為固態硬碟(SSD)而被實現。
記憶體系統3,係可作為主機2之儲存設備而被作使用。記憶體系統3,係可內藏於主機2中,亦可經由纜線或網路而被與主機2作連接。
用以將主機2與記憶體系統3相互作連接之介面,係準據於SCSI、Serial Attached SCSI(SAS)、ATA(AT
Attachment)、Serial ATA(SATA)、PCI Express(PCIe)(註冊商標)、Ethernet(註冊商標)、Fibre channel、NVM Express (NVMe) (註冊商標)等之規格。
記憶體系統3,例如,係具備有控制器4、NAND型快閃記憶體5以及動態隨機存取記憶體(DRAM)6。控制器4,係可藉由如同System-on-a-chip(SoC)一般之電路來實現之。控制器4,係亦可內藏有靜態隨機存取記憶體(SRAM)。又,DRAM6係亦可被內藏於控制器4中。
在DRAM6等之RAM中,係被設置有韌體(FW)21之儲存區域、邏輯物理位址轉換表22之快取區域以及驗證狀況管理表23之儲存區域。
FW21,係身為用以對於控制器4之動作進行控制的程式。FW21,例如係被從NAND型快閃記憶體5而被載入至DRAM6處。
邏輯物理位址轉換表22,係對於邏輯位址之各者與NAND型快閃記憶體5之物理位址之各者之間的映射作管理。邏輯位址,係身為為了對於記憶體系統3指定位址而被主機2所使用的位址。邏輯位址,例如係為邏輯區塊位址(LBA)。以下,主要係針對作為邏輯位址而使用LBA的情況來作例示。
驗證狀況管理表23,係針對關連於各LBA之資料的完整性之最後被作確認的時間之資訊作管理。各LBA之資料,係能夠因應於從主機2而來之驗證指令、或者是藉由附隨於巡邏處理之驗證處理,而使其之完整性被作確認。
驗證狀況管理表23,例如,係針對(A)各LBA之從資料的完整性之最後被作確認起所經過的時間、或者是(B)各LBA之資訊的完整性之最後被作確認的時刻,而進行管理。在以下之說明中,所謂「最終確認時間」之用語,係被使用來代表(A)或(B)。
圖2,係對於邏輯物理位址轉換表22之其中一構成例作展示。邏輯物理位址轉換表22,係對於LBA之各者與NAND型快閃記憶體5之物理位址之各者之間的映射作管理。控制器4,係能夠使用邏輯物理位址轉換表22,來將LBA轉換為物理位址。又,控制器4,係能夠使用邏輯物理位址轉換表22,來將物理位址轉換為LBA。
在圖2所示之例中,於LBA“0”處係被映射有物理位址“X”,於LBA“1”處係被映射有物理位址“Y”,於LBA“2”處係被映射有物理位址“Z”。
圖3,係對於驗證狀況管理表23之其中一構成例作展示。驗證狀況管理表23,係可包含有分別與複數之LBA相對應之複數之登錄(entry)。各登錄,係包含有LBA之欄位、和最終確認時間之欄位。
在對應於某一LBA之登錄中,LBA之欄位,係展示有該LBA。
又,最終確認時間之欄位,係展示有該LBA之使用者資料之最終確認時間。在最終確認時間之欄位中所展示之時間,例如,係代表從所對應之LBA之使用者資料之完整性最後被作確認起所經過了的時間。此經過時間,例如,係以分鐘單位之時間而被作表現。又,在最終確認時間之欄位中所展示之時間,係亦可代表所對應之LBA之使用者資料之完整性最後所被作了確認的時刻。
在圖3所示之例中,從LBA“1”之使用者資料之完整性被作確認起所經過了的時間,係為1分鐘。從LBA“100”之使用者資料之完整性被作確認起所經過了的時間,係為14400分鐘。從LBA“101”之使用者資料之完整性被作確認起所經過了的時間,係為108000分鐘。
驗證狀況管理表23之1個的登錄,例如,係因應於所對應的LBA之使用者資料被寫入至了NAND型快閃記憶體5中一事,而被作追加(產生)。或者是,驗證狀況管理表23之1個的登錄,係亦可在所對應的LBA之使用者資料被寫入至了NAND型快閃記憶體5中之後,因應於該使用者資料之完整性最初被作了確認一事,而被作追加。
又,驗證狀況管理表23之1個的登錄,例如,係可因應於從主機2而收訊了對於所對應的LBA作了指定之解映射(unmap)指令一事,而被刪除。亦即是,驗證狀況管理表23之1個的登錄,當所對應之LBA在邏輯物理位址轉換表22中並未被與任一之物理位址相互附加有關連的情況時,係可被刪除。
另外,LBA與最終確認時間之間之對應關係,係並不被限定於表,亦可藉由如同樹構造一般之各種的資料構造來作管理。
回到圖1。NAND型快閃記憶體5,係包含有複數之區塊B0~Bm-1。區塊B0~Bm-1之各者,係包含複數之頁面(於此係為頁面P0~Pn-1)。區塊B0~Bm-1,係作為資料刪除動作之最小單位而起作用。區塊,係亦會有被稱作「刪除區塊」或者是「物理區塊」的情形。頁面P0~Pn-1之各者,係包含有被與單一之字元線作了連接的複數之記憶體胞。頁面P0~Pn-1,係作為資料寫入動作以及資料讀取動作之單位而起作用。另外,係亦可使字元線作為資料寫入動作以及資料讀取動作之單位而起作用。
在針對各區塊B0~Bm-1之程式化/抹除循環數(P/E循環數)中,係存在有上限,而被稱作最大P/E循環數。某一區塊之1次的P/E循環,係包含有用以將此區塊內之所有的記憶體胞設為刪除狀態之刪除動作、和將資料寫入至此區塊之各頁面中的寫入動作。
控制器4,係作為以對於NAND型快閃記憶體5進行控制的方式所構成之記憶體控制器而起作用。
控制器4,係亦可作為以實行NAND型快閃記憶體5之資料管理以及區塊管理的方式所構成之快閃記憶體轉換層(Flash Translation Layer,FTL)而起作用。在此藉由FTL而被實行的資料管理中,係包含有(1)對於代表LBA之各者與NAND型快閃記憶體5之物理位址之各者之間的對應關係之映射資訊之管理以及(2)用以將頁面單位之讀取/寫入動作和區塊單位之刪除(erase)動作作隱蔽之處理。在區塊管理中,係包含有不良區塊之管理、損耗平均(wear leveling)以及GC(垃圾回收)。
LBA之各者與物理位址之各者之間的映射之管理,係使用邏輯物理位址轉換表22而被實行。控制器4,係使用邏輯物理位址轉換表22,來針對LBA之各者與物理位址之各者之間的映射而以特定之管理容量單位來作管理。對應於某一LBA之物理位址,係代表此LBA之資料所被作寫入的NAND型快閃記憶體5內之物理記憶位置。控制器4,係使用邏輯物理位址轉換表22,來對於將NAND型快閃記憶體5之記憶區域邏輯性地作了分割的複數之記憶區域作管理。此些之複數之記憶區域,係與複數之LBA分別相互對應。亦即是,此些之複數之記憶區域之各者,係藉由1個的LBA而被特定出來。邏輯物理位址轉換表22,係亦可在記憶體系統3之電源ON時而被從NAND型快閃記憶體5來載入至DRAM6處。
對於1個的頁面之資料寫入,係在1次的P/E循環中而僅能進行1次。因此,控制器4,係將對應於某一LBA之更新資料,並非寫入至對應於此LBA之以前的資料所被作儲存之物理記憶位置處,而是寫入至其他的物理記憶位置處。之後,控制器4,係藉由以將此LBA與此其他之物理記憶位置相互附加關連的方式來對於邏輯物理位址轉換表22進行更新,而將以前之資料無效化。從邏輯物理位址轉換表22而被作參照之資料(亦即是被與LBA相互附加有關連之資料),係被稱作有效資料。又,並未被與任何之LBA相互附加有關連之資料,係被稱作無效資料。有效資料,係身為之後會有從主機2而被讀取的可能性之資料。無效資料,係身為已不會有從主機2而被讀取的可能性之資料。
圖4,係對於被與1個的LBAx相互附加有關連的資料構造之例作展示。LBAx,係身為控制器4所管理的LBA空間內之任一之LBA。被與LBAx相互附加有關連的資料構造50,係身為被邏輯性地記憶在LBAx中之資料。
資料構造50,例如,係包含有LBA51、使用者資料52、保護資訊(protection information:PI)53、循環冗餘檢查(CRC)碼54以及錯誤訂正碼(ECC)55。
LBA51,係為被與此資料構造相互附加有關連之LBA(LBAx)。使用者資料52,係為與對於LBAx作了指定的寫入要求一同地而從主機2所受訊了的使用者資料。
PI53,係為用以保護使用者資料52之資訊。PI53,係能夠與寫入要求以及使用者資料52一同地而從主機2收訊,亦可由控制器4來產生。PI53,例如,係包含有Guard欄位531、Application Tag欄位532、以及Reference Tag欄位533。
Guard欄位531,係包含有針對使用者資料52所算出的CRC碼(例如CRC-16)。Application Tag欄位532,係包含有不會被控制器4所解釋的資料,而能夠為了將PI53之檢查設為無效而被作使用。Reference Tag欄位533,係包含有用以將使用者資料52與位址相互附加關連之資訊。Reference Tag欄位533,例如,係包含有藉由被與使用者資料52一同地而收訊了的寫入要求所指定之LBA之至少一部分。
CRC碼54,係身為針對使用者資料52以及PI53所算出的CRC碼。CRC碼54,係藉由控制器4而被算出。CRC碼54,係能夠為了對於從NAND型快閃記憶體5所讀出的使用者資料52以及PI53之完整性作檢驗而被作使用。
ECC55,係身為針對使用者資料52、PI53以及CRC54所算出的ECC。ECC55,係藉由控制器4而被算出。ECC55,係能夠為了對於從NAND型快閃記憶體5所讀出的使用者資料52、PI53以及CRC54之錯誤作訂正而被作使用。
另外,在資料構造50中,係亦可包含有PI53與CRC碼54之其中一者。
回到圖1。控制器4,係亦可包含有主機介面(主機I/F)11、CPU12、NAND I/F13以及DRAM介面(DRAM I/F)14。此些之主機I/F11、CPU12、NAND I/F13以及DRAM I/F14,係亦可經由匯流排10而被作連接。
主機I/F11,係作為從主機2而收訊各種之指令、例如收訊I/O指令、各種控制指令的電路而起作用。在I/O指令中,係可包含有寫入指令、讀取指令以及驗證(verify)指令。在控制指令中,係可包含有解映射(UNMAP)指令(TRIM指令)以及格式化(format)指令。格式化指令,係為用以將記憶體系統3全體解映射的指令。
NAND I/F13,係將控制器4與NAND型快閃記憶體5作電性連接。NAND I/F13,係對應於Toggle DDR、Open NAND Flash Interface(ONFI)等之介面規格。
NAND I/F13,係作為以對於NAND型快閃記憶體5進行控制的方式而被構成之NAND控制電路來起作用。NAND I/F13,係亦可經由複數之通道(Ch),來分別被與NAND型快閃記憶體5內之複數之記憶體晶片作連接。藉由使複數之記憶體晶片被平行地驅動,係能夠將對於NAND型快閃記憶體5全體之存取作廣頻寬化。
DRAM I/F14,係作為以對於DRAM6之存取進行控制的方式而被構成之DRAM控制電路而起作用。DRAM6之記憶區域,係被分配至用以儲存FW21、邏輯物理位址轉換表22、驗證狀況管理表23等之區域和被作為讀取/寫入緩衝而利用的緩衝區域處。
CPU12,係身為以對於主機I/F11、NAND I/F13以及DRAM I/F14作控制的方式而被構成之處理器。CPU12,係藉由實行從NAND型快閃記憶體5而被載入至DRAM6中之FW21,而進行各種之處理。FW21,係身為包含有用以使CPU12實行各種之處理的命令群之控制程式。CPU12,係能夠實行用以對於從主機2而來之各種指令進行處理的指令處理等。CPU12之動作,係被藉由CPU12所實行的FW21所控制。
控制器4內之各部之功能,係可藉由控制器4內之專用硬體來實現之,亦可藉由使CPU12實行FW21一事來實現之。
CPU12,例如,係作為指令處理部121、讀取處理部122、驗證處理部123、巡邏處理部124以及驗證狀況管理部125而起作用。CPU12,例如係藉由實行FW21,而作為此些之各部來起作用。
另外,記憶體系統3(更詳細而言,控制器4)與主機2,係能夠分別進行用以保全被寫入至了NAND型快閃記憶體5中之資料之處理。記憶體系統3,例如係定期性地進行巡邏處理。主機2,例如係定期性地進行刷洗處理。
或者是,主機2,係能夠對於記憶體系統3送訊驗證指令。驗證指令,例如,係為依據NVMe規格所規定的用以對於被儲存在NAND型快閃記憶體5中之使用者資料之完整性進行檢驗的指令。記憶體系統3之控制器4,係因應於驗證指令,而從NAND型快閃記憶體5讀出資料(例如資料構造50),並使用在所讀出之資料中所包含的資訊(例如PI53),來對於資料內之使用者資料的完整性作檢驗。
控制器4,在與驗證指令相對應之處理中,係並不將所讀出的資料對於主機2作傳輸。因此,係並不會對於主機2與記憶體系統3之間的匯流排頻寬造成損害。又,主機2係並不需要進行所讀出了的資料之處理。
但是,在記憶體系統3處,為了進行被寫入至了NAND型快閃記憶體5中之資料之保全,係成為不僅是進行有巡邏處理而亦進行有與驗證指令相對應之處理。巡邏處理以及與驗證指令相對應之處理,係均會產生對於NAND型快閃記憶體5之存取。若是對於NAND型快閃記憶體5之存取有所增加,則係會使NAND型快閃記憶體5疲勞。
因此,在本實施形態之記憶體系統3中,係能夠減輕NAND型快閃記憶體5之疲勞並且保全資料。具體而言,控制器4,係使用驗證狀況管理表23,來針對關連於被與複數之LBA之各者相互附加有關連性的使用者資料之最終確認時間之資訊作管理。控制器4,係使用各LBA之使用者資料之最終確認時間,來對於進行驗證處理之時序作控制。或者是,主機2,係使用各LBA之使用者資料之最終確認時間,來對於驗證處理之送訊時序作控制。藉由此,由於係能夠降低從NAND型快閃記憶體5而將資料讀出之次數,因此,係能夠減輕NAND型快閃記憶體5之疲勞並且保全資料。
以下,針對在記憶體系統3中之具體性的動作例作說明。
圖5,係對於在記憶體系統3中之與狀態詢問指令相對應之動作之例作展示。狀態詢問指令,係為主機2為了對於被儲存在NAND型快閃記憶體5中之使用者資料之驗證狀況作詢問所發行之指令。
於此,針對在驗證狀況管理表23中所被作管理的最終確認時間作說明。最終確認時間,例如係使用被設置於驗證狀況管理部125處的計時器來作決定。
當(A)最終確認時間係代表各LBA之從使用者資料的完整性之最後被作確認起所經過的時間的情況時,因應於某一LBA之使用者資料之完整性被作了確認一事,作為被與該LBA相互附加有關連之最終確認時間,在驗證狀況管理表23處係被設定有「0」。驗證狀況管理部125,係在直到該LBA之使用者資料的完整性下一次被作確認為止的期間中,例如定期性地因應於基於計時器所得到的時間之經過,來使所設定的最終確認時間作增加。在該LBA之使用者資料的完整性下一次被作了確認的情況時,作為被與該LBA相互附加有關連之最終確認時間,係再度被設定有「0」。
當(B)最終確認時間係代表各LBA之使用者資料的完整性之最後被作了確認之時刻的情況時,因應於某一LBA之使用者資料之完整性被作了確認一事,作為被與該LBA相互附加有關連之最終確認時間,在驗證狀況管理表23處係被設定有使用驗證狀況管理部125之計時器所取得之現在的時刻。在該LBA之使用者資料的完整性下一次被作了確認的情況時,所被設定的最終確認時間,係藉由使用驗證狀況管理部125之計時器所更進而取得了的現在之時刻而被作更新。
指令處理部121,係從主機2經由主機I/F11來收訊狀態詢問指令。指令處理部121,係因應於所收訊了的狀態詢問指令,而從驗證狀況管理表23例如取得相當於最古老的時刻之最終確認時間。
更具體而言,當驗證狀況管理表23之最終確認時間係代表所對應的LBA之從使用者資料的完整性之被作確認起所經過的時間的情況時,指令處理部121,係從在驗證狀況管理表23中所包含之1個以上的最終確認時間中而取得最大值。例如,在圖3中所示之驗證狀況管理表23的情況時,指令處理部121,係取得3個的最終確認時間之中之身為最大值之“108000”。
之後,指令處理部121,係將所取得的代表最大之最終確認時間之資訊,經由主機I/F11來對於主機2作送訊。
藉由此,主機2,係能夠取得在被儲存於NAND型快閃記憶體5中之使用者資料之中的最大之最終確認時間。主機2,係能夠因應於所取得的最大之最終確認時間,來判斷是否應對於記憶體系統3送訊驗證指令。
例如,當所取得的最大之最終確認時間(經過時間)係超過臨限值的情況時,主機2係判斷應對於記憶體系統3送訊驗證指令。藉由此,係能夠在基於最大之最終確認時間所得到的適當之時序處,而使記憶體系統3進行驗證處理。
又,當所取得的最大之最終確認時間係為臨限值以下的情況時,主機2係判斷尚不需要對於記憶體系統3送訊驗證指令。藉由此,主機2,係能夠對於藉由記憶體系統3而進行驗證處理的次數作控制。故而,係能夠降低對於NAND型快閃記憶體5之存取次數。
狀態詢問指令,係亦可對於LBA作指定。於此情況,指令處理部121,係將關連於與所被指定了的LBA相對應之最終確認時間之資訊,對於主機2作送訊。
又,狀態詢問指令,係亦可對於LBA範圍作指定。於此情況,指令處理部121,係將關連於與所被指定了的LBA範圍之各LBA相對應之最終確認時間之資訊、或者是與所被指定了的LBA範圍之各LBA相對應之最終確認時間之中之最大值,對於主機2作送訊。
當狀態詢問指令並不對於LBA或LBA範圍作指定的情況時,指令處理部121,係亦能夠與關連於最大之最終確認時間之資訊一同地而將與該資訊相對應之LBA或LBA範圍對於主機2作送訊。
接著,參考圖6以及圖7,針對在從主機2而收訊了驗證指令的情況時之記憶體系統3之動作進行說明。驗證指令,係對於LBA或LBA範圍作指定。驗證指令,係身為要求進行所指定了的LBA或LBA範圍之使用者資料之完整性之檢驗(亦即是驗證)的指令。
更具體而言,驗證指令,係包含有成為驗證之對象的資料之開頭LBA、和該資料之容量。成為驗證之對象的資料之容量,例如,係亦可藉由扇區之數量來作指定。扇區,係亦被稱作邏輯區塊。
以下,為了使說明成為容易理解,主要係針對驗證指令為對於1個的LBA作指定的情況來進行說明。另外,當驗證指令係對於LBA範圍作指定的情況時,針對在LBA範圍中所包含之各LBA,係進行有與以下之說明相同之動作。
圖6,係對於在記憶體系統3中之與第1驗證指令相對應之動作之例作展示。在記憶體系統3處,因應於第1驗證指令,被作了指定的LBA之使用者資料之完整性係被作檢驗。亦即是,第1驗證指令,係身為強制記憶體系統3進行所指定了的LBA之使用者資料之完整性之檢驗的指令。針對具體性之動作,於以下作說明。以下,係將藉由第1驗證指令所被作了指定的LBA,亦稱作對象LBA。
首先,指令處理部121,係從主機2經由主機I/F11來收訊第1驗證指令。指令處理部121係使用邏輯物理位址轉換表22,來取得與對象LBA相對應之物理位址。指令處理部121,係將所取得的物理位址對於讀取處理部122送出。又,指令處理部121,係將對象LBA對於驗證處理部123送出。
讀取處理部122,係使用藉由指令處理部121所送出的物理位址,來從NAND型快閃記憶體5而將該物理位址之資料讀出。以下,係將讀取處理部122所讀出的資料,亦稱作讀取資料。又,讀取資料,係設為具備有參照圖4而於前所作了敘述的資料構造50之構成者。
讀取處理部122,係將讀取資料對於驗證處理部123送出。另外,讀取處理部122,係亦可將讀取資料儲存於DRAM6(更詳細而言,讀取緩衝)中。
驗證處理部123,係對於在讀取資料中所包含之使用者資料52之完整性作檢驗。驗證處理部123,例如係使用在讀取資料中所包含之PI53,來對於使用者資料52之完整性作檢驗。
具體而言,驗證處理部123,係算出在讀取資料中所包含之使用者資料52之CRC碼。之後,驗證處理部123,係判斷所算出的CRC碼是否與在PI53之Guard欄位531中所包含的CRC碼相互一致。當所算出的CRC碼係與Guard欄位531之CRC碼相互一致的情況時,驗證處理部123係判斷使用者資料52之完整性為被作了確認。當所算出的CRC碼係與Guard欄位531之CRC碼相異的情況時,驗證處理部123係判斷使用者資料52之完整性並未被作確認。
另外,當所算出的CRC碼係與Guard欄位531之CRC碼相互一致的情況時,驗證處理部123,係亦可使用在讀取資料中所包含之LBA51與PI53之Reference Tag欄位533,來對於使用者資料52之完整性更進一步作檢驗。當在讀取資料中所包含之LBA51為與在Reference Tag欄位533中所包含之LBA相互一致的情況時,驗證處理部123係判斷使用者資料52之完整性為被作了確認。當在讀取資料中所包含之LBA51為與在Reference Tag欄位533中所包含之LBA相異的情況時,驗證處理部123係判斷使用者資料52之完整性並未被作確認。另外,驗證處理部123,係亦可替代在讀取資料中所包含之LBA51,而使用藉由第1驗證指令所被指定了的LBA。
或者是,驗證處理部123,係亦可使用在讀取資料中所包含之CRC碼54,來對於使用者資料52之完整性作檢驗。驗證處理部123,例如當在讀取資料中並未包含有PI53的情況時,係使用CRC碼54來對於使用者資料52之完整性作檢驗。
具體而言,驗證處理部123,係算出針對在讀取資料中所包含之使用者資料52以及PI53之CRC碼。之後,驗證處理部123,係判斷所算出的CRC碼是否與在讀取資料中所包含的CRC碼54相互一致。當所算出的CRC碼係與在讀取資料中所包含之CRC碼54相互一致的情況時,驗證處理部123係判斷使用者資料52之完整性為被作了確認。當所算出的CRC碼係與在讀取資料中所包含之CRC碼54相異的情況時,驗證處理部123係判斷使用者資料52之完整性並未被作確認。
當使用者資料52之完整性被作了確認的情況時,驗證處理部123,係在驗證狀況管理表23中,對於被與對象LBA相互附加有關連之最終確認時間作更新。之後,驗證處理部123,係對於主機2而通知「對象LBA之使用者資料52之完整性為被作了確認」一事。
當使用者資料52之完整性並未被作確認的情況時,驗證處理部123,係對於主機2而通知「對象LBA之使用者資料52之完整性並未被作確認」一事。當使用者資料52之完整性並未被作確認的情況時,驗證處理部123,係在驗證狀況管理表23中,並不對於被與對象LBA相互附加有關連之最終確認時間作更新。
另外,驗證處理部123,例如係可使用NVMe之LBA Format Data Structure之Metadata Size欄位,來判定在被與LBA相互附加有關連之資料(例如被與LBAx相互附加有關連之資料50)中是否包含有PI。具體而言,當在Metadata Size欄位處被設定有「0」的情況時,驗證處理部123,係判斷在被與LBA相互附加有關連之資料中並未包含有PI。另一方面,當在Metadata Size欄位處被設定有「0」以外之值的情況時,驗證處理部123,係判斷在被與LBA相互附加有關連之資料中係包含有PI。
藉由以上之動作,記憶體系統3,係能夠對於藉由第1驗證指令而被作了指定的LBA(或者是LBA範圍)之使用者資料之完整性作檢驗。
圖7,係對於在記憶體系統3中之與第2驗證指令相對應之動作之例作展示。第2驗證指令,係除了LBA或LBA範圍之外,更進而對容許時間範圍作指定。控制器4,係因應於第2驗證指令,而當被指定了的LBA之使用者資料(或者是被作了指定的LBA範圍之各LBA之使用者資料)的完整性之最後被作了確認的時間為落於容許時間範圍外的情況時,對於該LBA之使用者資料之完整性作檢驗。又,控制器4,當被指定了的LBA之使用者資料的完整性之最後被作了確認的時間為落於容許時間範圍內的情況時,係並不對於該LBA之使用者資料之完整性作檢驗。亦即是,控制器4,當被指定了的LBA之使用者資料的完整性之最後被作了確認的時間為落於容許時間範圍內的情況時,係將對於該LBA之驗證動作跳過(skip)。針對具體性之動作,於以下作說明。以下,係將藉由第2驗證指令所被作了指定的LBA,亦稱作對象LBA。
首先,指令處理部121,係從主機2經由主機I/F11來收訊第2驗證指令。指令處理部121,係從驗證狀況管理表23而取得被與對象LBA相互附加有關連之最終確認時間。
接著,指令處理部121,係判定所取得的最終確認時間是否為落於藉由第2驗證指令所被指定了的容許時間範圍內。
當所取得的最終確認時間係為落於容許時間範圍內的情況時,指令處理部121,係以並不進行對於對象LBA之使用者資料之完整性進行檢驗之動作的方式而進行控制。具體而言,指令處理部121,係並不將與對象LBA相對應之物理位址對於讀取處理部122作送出。又,指令處理部121,係並不將對象LBA對於驗證處理部123作送出。藉由此,讀取處理部122係並不會將與對象LBA相對應之物理位址之資料從NAND型快閃記憶體5而讀出,驗證處理部123係並不對於對象LBA之使用者資料之完整性進行檢驗。故而,指令處理部121,當對象LBA之最終確認時間係落於容許時間範圍內的情況時,係將對於對象LBA之驗證動作跳過。另外,指令處理部121,係亦可對於主機2而通知「對象LBA之使用者資料之完整性為在容許時間範圍內之時間處而已作了確認」一事。
另一方面,當所取得的最終確認時間係落於容許時間範圍外的情況時,指令處理部121係使用邏輯物理位址轉換表22,來取得與對象LBA相對應之物理位址。指令處理部121,係將所取得的物理位址對於讀取處理部122送出。又,指令處理部121,係將對象LBA對於驗證處理部123送出。後續之由讀取處理部122以及驗證處理部123所致之動作,係如同參照圖6而於前所述一般。故而,當對象LBA之最終確認時間係落於容許時間範圍外的情況時,係能夠進行對於對象LBA之驗證動作。
藉由以上之動作,記憶體系統3,當對象LBA之使用者資料之最終確認時間係落於容許時間範圍內的情況時,係能夠將對於對象LBA之驗證動作跳過。亦即是,當使用有對於容許時間範圍作指定之第2驗證指令的情況時,係能夠對於被與對象LBA相互附加有關連之最終確認時間有所考慮地,而對於是否要進行驗證動作一事作控制。故而,例如相較於使用有並不對於容許時間範圍作指定之第1驗證指令的情況,係會有能夠降低從NAND型快閃記憶體5而將資料讀出之次數的可能性。故而,係能夠降低NAND型快閃記憶體5之疲勞。
接著,針對對於藉由巡邏處理所讀出的資料而進行之驗證處理作說明。
圖8,係對於在記憶體系統3中之附隨於巡邏處理之驗證處理之例作展示。巡邏處理,係身為用以將在NAND型快閃記憶體5中所包含的複數之區塊之中之「錯誤位元數為超過臨限值的資料」所被作儲存之區塊之各者檢測出來的處理。被檢測出的各區塊,例如係成為刷新處理或GC(垃圾回收)之對象。藉由此,係能夠將被檢測出的各區塊內之有效資料,重新寫入至NAND型快閃記憶體5內之其他的區塊中。
被寫入至NAND型快閃記憶體5中之資料,係若是從被寫入起所經過之時間越長,則發生錯誤的可能性係越提高。又,被寫入至NAND型快閃記憶體5中之資料,係若是被讀出之次數越多,則發生錯誤的可能性係越提高。控制器4,例如係藉由於每一定時間而進行巡邏處理,而能夠檢測出「錯誤位元數為超過臨限值的資料」所被作儲存之區塊。
又,附隨於巡邏處理之驗證處理,係為針對藉由巡邏處理所被讀出的資料而進行之驗證處理。於此情況,由於係利用藉由巡邏處理而被讀出之資料,因此,係並不需要為了進行驗證處理而特地另外從NAND型快閃記憶體5將資料讀出。故而,藉由附隨於巡邏處理地而進行驗證處理,係能夠將從NAND型快閃記憶體5而將資料讀出之次數降低。針對具體性之動作,於以下作說明。
首先,巡邏處理部124,係決定讀出對象之物理位址。巡邏處理部124,係將被記憶在NAND型快閃記憶體5中之資料,以特定之順序而以特定之資料長度單位來讀出。更詳細而言,巡邏處理部124,係從在NAND型快閃記憶體5中所包含的複數之區塊之中,而例如以區塊編號順序來選擇1個的區塊。另外,巡邏處理部124,係亦可將寫入存取中之區塊之選擇跳過。巡邏處理部124例如係從所選擇了的區塊之開頭起,而依序地為了以特定之資料長度單位來讀出資料而決定讀出對象之物理位址。巡邏處理部124,係將所決定了的讀出對象之物理位址對於讀取處理部122作送出。以下,係將讀出對象之物理位址,亦稱作對象物理位址。另外,在巡邏處理中而資料被從NAND型快閃記憶體5所讀出之順序、以及被讀出的資料之單位,係因應於NAND型快閃記憶體5之規格等而被任意作決定。
巡邏處理部124,係使用邏輯物理位址轉換表22,來取得與對象物理位址相對應之LBA(對象LBA)。巡邏處理部124,係將所取得了的對象LBA對於驗證處理部123作送出。
讀取處理部122,係使用藉由巡邏處理部124所送出的對象物理位址,來從NAND型快閃記憶體5而將對象物理位址之資料讀出。於此,所讀出之資料(讀取資料),係設為具備有參照圖4而於前所作了敘述的資料構造50之構成者。
讀取處理部122,係將讀取資料對於巡邏處理部124與驗證處理部123作送出。另外,讀取處理部122,係亦可將讀取資料儲存於DRAM6(更詳細而言,讀取緩衝)中。
巡邏處理部124,係使用在讀取資料中所包含之ECC55,而進行錯誤訂正處理。巡邏處理部124,當藉由錯誤訂正處理而使錯誤被作了訂正的位元數(亦即是ECC錯誤位元之數量)超過了臨限值的情況時,係將儲存有讀取資料之區塊,設定為刷新對象或GC(垃圾回收)對象之區塊。藉由此,在刷新處理或GC處理中,係能夠將刷新對象或GC對象之區塊內之有效資料重新寫入至其他的區塊中。
又,驗證處理部123,係對於在讀取資料中所包含之使用者資料52之完整性作檢驗。由驗證處理部123所致之用以對於使用者資料52之完整性進行檢驗之動作,係如同參照圖6而於前所述一般。在對於使用者資料52之完整性作了確認的情況時,驗證處理部123,係在驗證狀況管理表23中,對於被與對象LBA相互附加有關連之最終確認時間作更新。另一方面,當無法確認使用者資料52之完整性的情況時,在驗證狀況管理表23中,係並不對於被與對象LBA相互附加有關連之最終確認時間作更新。
藉由以上之動作,在記憶體系統3處,係能夠將藉由定期性之巡邏處理而從NAND型快閃記憶體5所讀出之資料,亦使用於驗證處理中。藉由此,相較於「巡邏處理係被定期性地進行,進而,因應於驗證指令,驗證處理亦被進行」的情況一般之分別進行巡邏處理與驗證處理的情況,係能夠將從NAND型快閃記憶體5而將資料讀出之次數降低。故而,係能夠降低NAND型快閃記憶體5之疲勞,並且能夠保全資料。
另外,在將使用者資料之最終確認時間以LBA單位來作管理的情況時,驗證狀況管理表23之資料量係會有變得龐大的可能性。
主機2,例如,針對最終確認時間為超過特定之極限值之使用者資料,係判斷需要再度進行驗證處理。故而,驗證狀況管理表23內之包含有超過了極限值之最終確認時間的登錄之資訊,對於主機2而言係成為不必要的資訊。因此,主機2,例如係亦可對於記憶體系統3送訊對於極限值作指定之指令。藉由此,主機2,係能夠將「包含有超過了所指定的極限值之最終確認時間的登錄之資訊,對於主機2而言係為不必要」一事對於記憶體系統3作通知。
記憶體系統3之驗證處理部123,係依循於在指令中所被指定了的最終確認時間之極限值,來使驗證狀況管理表23減縮。亦即是,驗證處理部123,係將包含有超過了在指令中所被指定了的極限值之最終確認時間之登錄,從驗證狀況管理表23而刪除。
具體而言,例如,在圖3中所示之驗證狀況管理表23中,作為最終確認時間,係展示有從所對應之LBA之使用者資料之完整性被作確認起所經過了的時間。於此情況,驗證處理部123,例如,係依循於作為極限值而被指定有100000之指令,而將包含有超過了極限值之最終確認時間(108000)之LBA101之登錄,從驗證狀況管理表23而刪除。
藉由此,係能夠將為了儲存驗證狀況管理表23而被設置的DRAM6內之區域之容量縮小。
另外,主機2,係亦可對於記憶體系統3送訊代表「將最終確認時間之極限值之指定解除」一事的指令。記憶體系統3之驗證處理部123,係因應於此指令,而停止驗證狀況管理表23之減縮。
圖9,係為對於藉由CPU12所被實行的驗證指令處理之程序之例作展示之流程圖。CPU12,係因應於從主機2而收訊了強制之驗證指令(第1驗證指令)一事,而實行此驗證指令處理。於此,針對驗證指令係對於成為驗證處理之對象之LBA範圍作指定的情況來作例示。
首先,CPU12係決定驗證對象之LBA(步驟S101)。驗證對象之LBA,係身為藉由驗證指令所被作了指定的LBA範圍內之1個的LBA。將所決定了的驗證對象之LBA,亦稱作對象LBA。
CPU12,係使用邏輯物理位址轉換表22,來特定出與對象LBA相對應之物理位址(步驟S102)。之後,CPU12係從NAND型快閃記憶體5而將所特定出的物理位址之資料讀出(步驟S103)。所讀出之資料,係為特定長度之資料。另外,以下,係將所讀出的資料,亦稱作讀取資料。
接著,CPU12,係使用讀取資料而進行驗證處理(步驟S104)。驗證處理,係為用以對於在讀取資料中所包含之使用者資料之完整性作檢驗之處理。CPU12,作為驗證處理之結果,例如,係得到代表當使用者資料之完整性為被作了確認一事之資訊和代表使用者資料之完整性並未被作確認一事之資訊的其中一者。關於驗證處理的具體性之處理程序,係參考圖10之流程圖而於後再作敘述。
CPU12之處理,係因應於驗證處理之結果而分歧(步驟S105)。
具體而言,當驗證處理之結果係代表使用者資料之完整性為被作了確認的情況時(步驟S105,YES),CPU12,係在驗證狀況管理表23中,對於被與對象LBA相互附加有關連之最終確認時間作更新(步驟S106)。例如,當最終確認時間係代表從使用者資料的完整性被作確認起所經過的時間的情況時,CPU12,係作為被與對象LBA相互附加有關連之最終確認時間,而設定「0」。於此情況,在驗證狀況管理表23中,最終確認時間係被構成為伴隨著時間之經過而增加。或者是,CPU12,作為被與對象LBA相互附加有關連之最終確認時間,係亦可設定現在之時刻。之後,CPU12,係對於主機2而通知「對象LBA之使用者資料之完整性為被作了確認」一事(步驟S107),CPU12之處理係前進至步驟S109處。另外,CPU12,係亦可將關連於在藉由驗證指令所被指定了的LBA範圍中所包含之所有的LBA之使用者資料之驗證結果整批對於主機2作通知。
當驗證處理之結果係代表使用者資料之完整性並未被作確認的情況時(步驟S105,NO),CPU12,係對於主機2而通知「對象LBA之使用者資料之完整性並未被作確認」一事(步驟S108),CPU12之處理係前進至步驟S109處。亦即是,當使用者資料之完整性並未被作確認的情況時,CPU12,係在驗證狀況管理表23中,並不對於被與對象LBA相互附加有關連之最終確認時間作更新。
接著,CPU12係判定是否存在有驗證對象之其他的LBA(步驟S109)。亦即是,CPU12,係判定在藉由驗證指令所被指定了的LBA範圍中,是否殘留有針對使用者資料之驗證處理尚未被進行的LBA。
當存在有驗證對象之其他之LBA的情況時(步驟S109,YES),CPU12之處理係回到步驟S101處,並進行以該其他之LBA作為對象之處理。
另一方面,當並不存在有驗證對象之其他之LBA的情況時(步驟S109,NO),亦即是針對在藉由驗證指令所被指定了的LBA範圍內之所有的LBA之使用者資料之驗證處理均結束了的情況時,CPU12係結束驗證指令處理。
藉由以上之驗證指令處理,CPU12係能夠對於驗證狀況管理表23作更新。具體而言,CPU12,係對於藉由驗證指令而被作了指定的LBA範圍內之各LBA之使用者資料之完整性作檢驗。之後,CPU12,係對於被與針對完整性而作了確認的使用者資料之LBA相互附加有關連之最終確認時間作更新。藉由此,在記憶體系統3處,係能夠對於被記憶在各LBA中之使用者資料之完整性的最終確認時間作管理。
圖10,係為對於藉由CPU12所被實行的驗證處理之程序之例作展示之流程圖。驗證處理,係為用以對於使用者資料之完整性作檢驗之處理。驗證處理,例如,係相當於參照圖9而於前所述的驗證指令處理之步驟S104。於此,針對CPU12使用從NAND型快閃記憶體5所讀出了的對象LBA之資料(讀取資料)而進行驗證處理的情況作例示。又,係針對在讀取資料中為包含有使用者資料52、PI53以及LBA51的情況作例示。
首先,CPU12係使用使用者資料52而算出CRC碼(步驟S201)。之後,CPU12,係判斷所算出的CRC碼是否與在PI53中所包含之Guard欄位531內的CRC碼相互一致(步驟S202)。
當所算出之CRC碼係與Guard欄位531內之CRC碼相異的情況時(步驟S202,NO),CPU12,係產生代表「使用者資料52之完整性並未被作確認」一事的驗證結果(步驟S203),並結束驗證處理。
當所算出之CRC碼係與Guard欄位531內之CRC碼相互一致的情況時(步驟S202,YES),CPU12,係判定讀取資料內之LBA51是否為與在PI53中所包含之Reference Tag欄位533內之LBA相互一致(步驟S204)。另外,CPU12,係亦可判定對象LBA是否為與Reference Tag欄位533內之LBA相互一致。
當讀取資料內之LBA51係與在PI53中所包含之Reference Tag欄位533內之LBA相互一致的情況時(步驟S204,YES),CPU12,係產生代表「使用者資料52之完整性為被作了確認」一事之驗證結果(步驟S205),並結束驗證處理。
另一方面,當讀取資料內之LBA51係與在PI53中所包含之Reference Tag欄位533內之LBA相異的情況時(步驟S204,NO),CPU12,係產生代表「使用者資料52之完整性並未被作確認」一事之驗證結果(步驟S203),並結束驗證處理。
藉由以上之驗證處理,CPU12係能夠使用PI53來對於使用者資料52之完整性作檢驗。另外,係亦可將對於讀取資料內之LBA51與Reference Tag欄位531內之LBA作比較的步驟S204之處理省略。
又,當在讀取資料中並未包含有PI53的情況時,CPU12,係亦可使用與在讀取資料中所包含之PI53同等之資訊(例如CRC碼54)來對於使用者資料52之完整性作檢驗。具體而言,CPU12,係使用使用者資料52而算出CRC碼,並判定所算出的CRC碼是否與讀取資料內的CRC碼54相互一致。當所算出的CRC碼係與讀取資料內之CRC碼54相互一致的情況時,CPU12係產生代表「使用者資料52之完整性為被作了確認」一事之驗證結果。另一方面,當所算出的CRC碼係與讀取資料內之CRC碼54相異的情況時,CPU12係產生代表「使用者資料52之完整性並未被作確認」一事之驗證結果。
圖11,係為對於藉由CPU12所被實行的驗證指令處理之程序之其他例作展示之流程圖。CPU12,係因應於從主機2而收訊了對於容許時間範圍作了指定的驗證指令(第2驗證指令)一事,而實行此驗證指令處理。於此,針對驗證指令係對於成為驗證處理之對象之LBA範圍作指定的情況來作例示。
首先,CPU12係決定驗證對象之LBA(對象LBA)(步驟S301)。CPU12,係從驗證狀況管理表23而取得被與對象LBA相互附加有關連之最終確認時間(步驟S302)。
CPU12,係判定所取得的最終確認時間是否為落於藉由驗證指令所被指定了的容許時間範圍內(步驟S303)。
當所取得的最終確認時間係為落於容許時間範圍外的情況時(步驟S303,NO),CPU12,係藉由步驟S304~步驟S310之處理,而進行用以「對於對象LBA之使用者資料之完整性進行檢驗,並將該檢驗結果對於主機2作通知」之處理。步驟S304~步驟S310之處理,由於係與參照圖9而於前所作了敘述的驗證指令處理之步驟S102~步驟S108之處理相同,因此,係將其之說明省略。之後,CPU12係判定是否存在有驗證對象之其他的LBA(步驟S311)。當存在有驗證對象之其他之LBA的情況時(步驟S311,YES),CPU12之處理係回到步驟S301處,並進行以該其他之LBA作為對象之處理。另一方面,當並不存在有驗證對象之其他之LBA的情況時(步驟S311,NO),CPU12係結束驗證指令處理。
當所取得的最終確認時間係落於容許時間範圍內的情況時(步驟S303,YES),CPU12,係判定是否存在有驗證對象之其他之LBA(步驟S311)。當存在有驗證對象之其他之LBA的情況時(步驟S311,YES),CPU12之處理係回到步驟S301處,並進行以該其他之LBA作為對象之處理。另一方面,當並不存在有驗證對象之其他之LBA的情況時(步驟S311,NO),CPU12係結束驗證指令處理。亦即是,當所取得的最終確認時間係為落於容許時間範圍內的情況時,CPU12,係能夠並不進行用以對於對象LBA之使用者資料之完整性進行檢驗之處理地而進行以其他之LBA作為對象之處理。另外,當所取得的最終確認時間係為落於容許時間範圍內的情況時,CPU12,係亦可對於主機2而通知「已在容許時間範圍內之時間中而對於對象LBA之使用者資料之完整性作了確認」一事。
藉由以上之驗證指令處理,CPU12,當對應於對象LBA之最終確認時間係落於容許時間範圍外的情況時,係能夠對於驗證狀況管理表23作更新。藉由此,在記憶體系統3處,係能夠對於被儲存在各LBA中之使用者資料的最終確認時間作管理。
又,當對應於對象LBA之最終確認時間係為落於容許時間範圍內的情況時,CPU12,係並不進行用以對於對象LBA之使用者資料之完整性進行檢驗的驗證處理。亦即是,CPU12,針對使用者資料之完整性已在容許時間範圍內而被有所確認的LBA,係並不進行驗證處理。如此這般,CPU12,係能夠藉由利用被記錄在驗證狀況管理表23中之最終確認時間,來降低從NAND型快閃記憶體5而將各LBA之使用者資料讀出的次數。故而,係能夠降低NAND型快閃記憶體5之疲勞。
圖12,係為對於藉由CPU12所被實行的附隨於巡邏處理之驗證處理之程序之例作展示之流程圖。CPU12,例如係於每一定時間而實行巡邏處理以及附隨於巡邏處理之驗證處理。
首先,CPU12,係藉由步驟S401~步驟S406之處理,來進行針對NAND型快閃記憶體5之巡邏處理。
具體而言,CPU12,係決定讀出對象之物理位址(步驟S401)。CPU12,在巡邏處理中,係將被記憶在NAND型快閃記憶體5中之資料,以特定之順序而以特定之資料長度單位來讀出。CPU12,係為了依循於該特定之順序而以特定之資料長度單位來讀出資料,而決定讀出對象之物理位址。以下,係將所決定了的讀出對象之物理位址,亦稱作對象物理位址。
CPU12係從NAND型快閃記憶體5而將對象物理位址之資料讀出(步驟S402)。之後,CPU12係使用邏輯物理位址轉換表22,來特定出與對象物理位址相對應之LBA(步驟S403)。
CPU12,係判定是否成功特定出了與對象物理位址相對應之LBA(步驟S404)。換言之,CPU12,係判定所讀出了的對象物理位址之資料(讀取資料)是身為有效資料還是身為無效資料。
在無法特定出與對象物理位址相對應之LBA的情況時(步驟S404,NO),亦即是當讀取資料係為無效資料的情況時,CPU12之處理係前進至步驟S411處。CPU12,係並不對於身為無效資料之讀取資料進行任何的處理地,而前進至後續之資料之處理。
在成功特定出了與對象物理位址相對應之LBA的情況時(步驟S404,YES),亦即是當讀取資料係為有效資料的情況時,CPU12係針對讀取資料,而進行使用有ECC55之錯誤訂正處理(步驟S405)。CPU12,係判定藉由錯誤訂正處理而使錯誤被作了訂正的位元數是否有超過臨限值(步驟S406)。當藉由錯誤訂正處理而使錯誤被作了訂正的位元數為超過了臨限值的情況時(步驟S406,YES),CPU12,係將儲存有讀取資料之區塊,設定為刷新或GC(垃圾回收)對象之區塊(步驟S407),CPU12之處理係前進至步驟S408處。在刷新處理或GC處理中,刷新或GC對象之區塊內之有效資料係被寫入至其他的區塊中。另一方面,當藉由錯誤訂正處理而使錯誤被作了訂正的位元數係為臨限值以下的情況時(步驟S406,NO),CPU12之處理係前進至步驟S408處。
接著,CPU12,係使用讀取資料而進行驗證處理(步驟S408)。驗證處理,係為用以對於在讀取資料中所包含之使用者資料52之完整性作檢驗之處理。關於驗證處理的具體性之處理程序,係如同參考圖10之流程圖而於前所述一般。另外,讀取資料,由於係身為為了進行巡邏處理而在步驟S402處已被讀出之資料,因此,CPU12係並不需要為了進行驗證處理而特地另外從NAND型快閃記憶體5將資料讀出。
CPU12之處理,係因應於驗證處理之結果而分歧(步驟S409)。
具體而言,當驗證處理之結果係代表使用者資料之完整性為被作了確認的情況時(步驟S409,YES),CPU12,係在驗證狀況管理表23中,對於被與在步驟S403處所特定出的LBA(對象LBA)相互附加有關連之最終確認時間作更新(步驟S410),CPU12之處理係前進至步驟S411處。
當驗證處理之結果係代表使用者資料之完整性並未被作確認的情況時(步驟S409,NO),CPU12之處理係前進至步驟S411處。亦即是,當使用者資料之完整性並未被作確認的情況時,CPU12,係在驗證狀況管理表23中,並不對於被與對象LBA相互附加有關連之最終確認時間作更新。
接著,CPU12,係判定針對NAND型快閃記憶體5之所有資料的巡邏處理是否均已完成(步驟S411)。亦即是,CPU12,係判定在NAND型快閃記憶體5內之區塊中是否殘留有在巡邏處理中而尚未被讀出之資料。
當針對所有資料之巡邏處理尚未結束的情況時(步驟S411,NO),CPU12之處理係回到步驟S401處,並進行以尚未被讀出之資料作為對象的巡邏處理。
另一方面,當針對所有資料之巡邏處理均為完成的情況時(步驟S411,YES),CPU12係將巡邏處理以及驗證處理結束。
藉由以上之巡邏處理以及驗證處理,CPU12,係能夠針對藉由巡邏處理所被讀出的資料而亦進行驗證處理。藉由此,CPU12,相較於分別進行巡邏處理與驗證處理的情況,係能夠將從NAND型快閃記憶體5而將資料讀出之次數降低。故而,係能夠降低NAND型快閃記憶體5之疲勞,並且能夠保全資料。
(第2實施形態)
在第1實施形態中,資料之驗證狀況係被以邏輯位址單位(例如LBA單位)而作管理。相對於此,在第2實施形態中,資料之驗證狀況係被以區域(zone)單位而作管理。
第2實施形態之記憶體系統3之構成,係與第1實施形態之記憶體系統3相同。在第2實施形態與第1實施形態中,係僅在用以針對各區域之每一者而分別進行驗證狀況之管理的構成上有所相異。以下,主要針對與第1實施形態相異之部分作說明。
第2實施形態之記憶體系統3,作為將被儲存於NAND型快閃記憶體5中之資料以區域單位來進行管理之方法,例如係使用有藉由NVMe規格所被規定之Zoned Namespaces (分區名稱空間,ZNS)。
參考圖13,針對ZNS作說明。為了對於記憶體系統3進行存取而被主機2所使用的LBA空間之全體,係能夠被分割成複數之部分空間。各部分空間,係會有被稱作名稱空間的情形。在ZNS中,1個的名稱空間之LBA空間之全體,係可被分割為複數之區域。複數之區域之各者,係可包含有複數之LBA。將1個的名稱空間作分割所得到的複數之區域之各者,係對應於藉由相互連續並且並不相互重複的複數之LBA所構成的LBA範圍。各區域(zone),係作為用以對於NAND型快閃記憶體5進行存取之單位而被使用。
在圖13所示之例中,名稱空間係對應於z個的LBA0~LBA(z-1),而具備有x個的區域0~區域(x-1)。LBA0,係身為區域0之最小的LBA。又,LBA(z-1),係身為區域(x-1)之最大的LBA。
1個的區域內之寫入,係序列性地被實行。1個的區域,係可對應於NAND型快閃記憶體5內之任意之物體單位。例如,1個的區域,係對應於NAND型快閃記憶體5內之1個的區塊(block)。於此情況,1個的區塊,係使用在被分配至1個的區域處之LBA範圍中所包含之相連續之LBA而被作存取。
圖14,係對於包含有第2實施形態的記憶體系統3之資訊處理系統1之構成例作展示。在DRAM6中,係被設置有FW21之儲存區域、區域-物理位址轉換表25之快取區域以及驗證狀況管理表23之儲存區域。亦即是,在第2實施形態之記憶體系統3中,替代在第1實施形態的記憶體系統3處所被使用之邏輯物理位址轉換表22,係使用有區域-物理位址轉換表25。
在DRAM6處,係亦可更進而被設置有區域描述符26之儲存區域。區域描述符26,係包含有代表各區域之構成與狀態的資訊。對應於某一區域之區域描述符26,例如,係包含有該區域之開頭之LBA(亦即是最小之LBA)、能夠寫入至該區域中之容量等之資訊。
圖15,係對於區域-物理位址轉換表25之其中一構成例作展示。區域-物理位址轉換表25,係對於區域之各者與NAND型快閃記憶體5之物理位址之各者之間的映射作管理。在區域-物理位址轉換表25中,1個的區域,例如,係藉由被分配至該區域處的LBA範圍之開頭之LBA(例如LBA)而被表現。
在圖15所示之例中,於區域“0”處係被映射有物理位址“X”,於區域“1”處係被映射有物理位址“Y”,於區域“2”處係被映射有物理位址“Z”。
控制器4,係使用區域-物理位址轉換表25,來對於將NAND型快閃記憶體5之記憶區域邏輯性地作了分割的複數之記憶區域作管理。此些之複數之記憶區域,係與複數之區域分別相互對應。複數之區域之各者,例如,係藉由被分配至該區域處的LBA範圍之開頭之LBA而被特定出來。
圖16,係對於驗證狀況管理表23之其中一構成例作展示。驗證狀況管理表23,係可包含有分別與各區域之開頭LBA相對應之複數之登錄(entry)。各登錄,係包含有LBA之欄位、和最終確認時間之欄位。
在對應於某一區域之登錄中,LBA之欄位,係展示有被分配給該區域之LBA範圍之開頭之LBA。
又,最終確認時間之欄位,係展示有該區域之使用者資料之完整性的最後被作了確認之時間。在最終確認時間之欄位中所展示之時間,例如,係代表(A)從所對應之區域之使用者資料之完整性最後被作確認起所經過了的時間。經過時間,例如,係以分鐘單位之時間而被作表現。又,在最終確認時間之欄位中所展示之時間,係亦可代表(B)所對應之區域之使用者資料之完整性最後所被作了確認的時刻。在以下之說明中,所謂「最終確認時間」之用語,係被使用來代表(A)或(B)。
在圖16所示之例中,從Zone“1”之使用者資料之完整性被作確認起所經過了的時間,係為1分鐘。從Zone“100”之使用者資料之完整性被作確認起所經過了的時間,係為14400分鐘。從Zone“101”之使用者資料之完整性被作確認起所經過了的時間,係為108000分鐘。
另外,替代使用驗證狀況管理表23,係亦可構成為將最終確認時間包含於區域描述符26中。
接著,對於在針對各區域之每一者而分別對於驗證狀況作管理的情況時之指令處理部121、讀取處理部122、驗證處理部123、巡邏處理部124以及驗證狀況管理部125之動作作例示。
首先,針對在驗證狀況管理表23中所被作管理的最終確認時間作說明。最終確認時間,例如係使用被設置於驗證狀況管理部125處的計時器來作決定。
當(A)最終確認時間係代表各區域之從使用者資料的完整性之最後被作確認起所經過的時間的情況時,因應於某一區域之使用者資料之完整性被作了確認一事,作為被與該區域相互附加有關連之最終確認時間,在驗證狀況管理表23處係被設定有「0」。驗證狀況管理部125,係在直到該區域之使用者資料的完整性下一次被作確認為止的期間中,例如定期性地因應於基於計時器所得到的時間之經過,來使所設定的最終確認時間作增加。在該區域之使用者資料的完整性下一次被作了確認的情況時,作為被與該區域相互附加有關連之最終確認時間,係再度被設定有「0」。
當(B)最終確認時間係代表各區域之使用者資料的完整性之最後被作了確認之時刻的情況時,因應於某一區域之資料之完整性被作了確認一事,作為被與該區域相互附加有關連之最終確認時間,在驗證狀況管理表23處係被設定有使用驗證狀況管理部125之計時器所取得之現在的時刻。在該區域之資料的完整性下一次被作了確認的情況時,所被設定的最終確認時間,係藉由使用驗證狀況管理部125之計時器所更進而取得了的現在之時刻而被作更新。
參考圖17以及圖18,針對在從主機2而收訊了驗證指令的情況時之記憶體系統3之動作進行說明。以下,為了使說明成為容易理解,主要係針對驗證指令為對於被分配給1個的區域之LBA範圍作指定的情況來進行說明。驗證指令,係如同前述一般,包含有成為驗證之對象的資料之開頭LBA、和該資料之容量。於此,藉由驗證指令所被作了指定的開頭LBA,係對應於1個的區域之開頭LBA。故而,藉由驗證指令所被作了指定的開頭LBA,係作為對於區域作辨識之資訊而被作使用。另外,當驗證指令係對於橫跨複數之區域之LBA範圍作指定的情況時,針對對應於1個的區域之各LBA範圍之每一者,係進行有與以下之說明相同之動作。
圖17,係對於在記憶體系統3中之與第1驗證指令相對應之動作之例作展示。記憶體系統3之控制器4,係因應於第1驗證指令,而對於與被作了指定的LBA範圍相對應之區域之使用者資料之完整性作檢驗。針對具體性之動作,於以下作說明。以下,係將藉由「以第1驗證指令所被作了指定的開頭LBA」而被辨識出來之區域,亦稱作對象區域。
首先,指令處理部121,係從主機2經由主機I/F11來收訊第1驗證指令。指令處理部121,係使用區域-物理位址轉換表25,來取得與藉由所收訊了的第1驗證指令而被作了指定之開頭LBA相對應之物理位址。指令處理部121,係將所取得的物理位址(對象物理位址)對於讀取處理部122送出。又,指令處理部121,係將藉由第1驗證指令而被作了指定的開頭LBA對於驗證處理部123送出。
讀取處理部122,係使用藉由指令處理部121所送出的物理位址,來從NAND型快閃記憶體5而將該物理位址之資料讀出。例如,當對象區域係對應於藉由NAND型快閃記憶體5內之對象物理位址所特定出來之1個的區塊的情況時,讀取處理部122,係亦可將該區塊內之資料從開頭起而依序地以特定之資料長度單位來讀出。以下,係將讀取處理部122所讀出的特定資料長度單位之資料,亦稱作讀取資料。又,讀取資料,係設為具備有參照圖4而於前所作了敘述的資料構造50之構成者。
讀取處理部122,係將讀取資料對於驗證處理部123送出。另外,讀取處理部122,係亦可將讀取資料儲存於DRAM6(更詳細而言,讀取緩衝)中。
驗證處理部123,係對於在讀取資料中所包含之使用者資料52之完整性作檢驗。由驗證處理部123所致之用以對於使用者資料52之完整性進行檢驗之動作,係如同在第1實施形態中所作了說明一般。驗證處理部123,例如,係藉由對於經由讀取處理部122而被送出的特定資料長度單位之讀取資料依序進行處理,而對於對象區域內之所有使用者資料之完整性作檢驗。1個的區域內之所有使用者資料,係身為在被分配給該區域之LBA範圍中所包含之所有的LBA之使用者資料。
當對象區域內之所有使用者資料之完整性被作了確認的情況時,驗證處理部123,係在驗證狀況管理表23中,對於被與開頭LBA相互附加有關連之最終確認時間作更新。之後,驗證處理部123,係對於主機2而通知「所被指定的LBA範圍(亦即是區域)之使用者資料之完整性為被作了確認」一事。
又,當對象區域內之至少一部分之使用者資料之完整性尚未被作確認的情況時,驗證處理部123,係在驗證狀況管理表23中,並不對於被與開頭LBA相互附加有關連之最終確認時間作更新。之後,驗證處理部123,係對於主機2而通知「所被指定的LBA範圍(亦即是區域)之使用者資料之完整性並未被作確認」一事。
藉由以上之動作,記憶體系統3,係能夠對於藉由第1驗證指令而被作了指定的LBA範圍(區域)之使用者資料之完整性作檢驗。
圖18,係對於在記憶體系統3中之與第2驗證指令相對應之動作之例作展示。第2驗證指令,係對於LBA範圍與容許時間範圍作指定。控制器4,係因應於第2驗證指令,而當與被指定了的LBA範圍相對應之區域之使用者資料的完整性之最後被作了確認的時間為落於容許時間範圍外的情況時,對於該區域之使用者資料之完整性作檢驗。又,控制器4,當與被指定了的LBA範圍相對應之使用者資料的完整性之最後被作了確認的時間為落於容許時間範圍內的情況時,係並不對於該區域之使用者資料之完整性作檢驗。亦即是,控制器4,當與被指定了的LBA範圍相對應之區域之使用者資料的完整性之最後被作了確認的時間為落於容許時間範圍內的情況時,係將對於該區域之驗證動作跳過(skip)。針對具體性之動作,於以下作說明。以下,係將藉由「以第2驗證指令所被作了指定的開頭LBA」而被辨識出來之區域,亦稱作對象區域。
首先,指令處理部121,係從主機2經由主機I/F11來收訊第2驗證指令。指令處理部121,係使用藉由第2驗證指令所被作了指定的開頭LBA,而從驗證狀況管理表23來取得被與對象區域相互附加有關連之最終確認時間。
接著,指令處理部121,係判定所取得的最終確認時間是否為落於藉由第2驗證指令所被指定了的容許時間範圍內。
當所取得的最終確認時間係為落於容許時間範圍內的情況時,指令處理部121,係以並不進行對於對象區域之使用者資料之完整性進行檢驗之動作的方式而進行控制。具體而言,指令處理部121,係並不將與對象區域相對應之物理位址(例如對應於開頭LBA之物理位址)對於讀取處理部122作送出。又,指令處理部121,係並不將對於對象區域作辨識之開頭LBA對於驗證處理部123作送出。藉由此,讀取處理部122係並不會將與對象區域相對應之物理位址之資料從NAND型快閃記憶體5而讀出,驗證處理部123係並不對於對象區域之使用者資料之完整性進行檢驗。故而,指令處理部121,當對象區域之最終確認時間係落於容許時間範圍內的情況時,係將對於對象區域之驗證動作跳過。另外,指令處理部121,係亦可對於主機2而通知「對象區域之使用者資料之完整性為在容許時間範圍內之時間處而已作了確認」一事。
另一方面,當所取得的最終確認時間係落於容許時間範圍外的情況時,指令處理部121係使用區域-物理位址轉換表25,來取得與開頭LBA相對應之物理位址。指令處理部121,係將所取得的物理位址對於讀取處理部122送出。又,指令處理部121,係將開頭LBA對於驗證處理部123送出。後續之由讀取處理部122以及驗證處理部123所致之動作,係如同參照圖17而於前所述一般。故而,當對象區域之最終確認時間係落於容許時間範圍外的情況時,係能夠進行對於對象區域之驗證動作。
藉由以上之動作,記憶體系統3,當對象區域之所有使用者資料之最終確認時間係落於容許時間範圍內的情況時,係能夠將對於對象區域之驗證動作跳過。亦即是,當使用有對於容許時間範圍作指定之第2驗證指令的情況時,係能夠對於被與對象區域相互附加有關連之最終確認時間有所考慮地,而對於是否要進行驗證動作一事作控制。故而,例如相較於使用有並不對於容許時間範圍作指定之第1驗證指令的情況,係會有能夠降低從NAND型快閃記憶體5而將資料讀出之次數的可能性。故而,係能夠降低NAND型快閃記憶體5之疲勞。
另外,在記憶體系統3中之與狀態詢問指令相對應之動作,係與第1實施形態相同。
圖19,係對於在記憶體系統3中之附隨於巡邏處理之驗證處理之例作展示。
首先,巡邏處理部124,係決定讀出對象之物理位址(對象物理位址)。巡邏處理部124,係將所決定了的對象物理位址對於讀取處理部122作送出。決定對象物理位址之方法,係如同在第1實施形態中而於前所述一般。
又,巡邏處理部124,係使用區域-物理位址轉換表25,來取得與對象物理位址相對應之LBA(對象LBA)。區域-物理位址轉換表25,係對於區域之開頭LBA與物理位址之間之對應關係作展示。巡邏處理部124,例如,係能夠基於「對應於區域之開頭LBA之物理位址」與「對象物理位址」之間之相對性之關係,來取得與對象物理位址相對應之LBA。巡邏處理部124,係將所取得了的對象LBA對於驗證處理部123作送出。
讀取處理部122,係使用藉由巡邏處理部124所送出的對象物理位址,來從NAND型快閃記憶體5而將對象物理位址之資料讀出。所讀出之資料(讀取資料),係設為具備有參照圖4而於前所作了敘述的資料構造50之構成者。
讀取處理部122,係將讀取資料對於巡邏處理部124與驗證處理部123作送出。另外,讀取處理部122,係亦可將讀取資料儲存於DRAM6(更詳細而言,讀取緩衝)中。
巡邏處理部124,係使用在讀取資料中所包含之ECC55,而進行錯誤訂正處理。巡邏處理部124,當藉由錯誤訂正處理而使錯誤被作了訂正的位元數(亦即是ECC錯誤位元之數量)超過了臨限值的情況時,係亦可對於主機2,而通知儲存有讀取資料之區域的重置或者是變更。在區域之重置之通知中,例如,係使用有NVMe之「Reset Zone Recommended」。區域之變更之通知,係包含有將區域設定為離線(offline)一事。
又,驗證處理部123,係對於在讀取資料中所包含之使用者資料52之完整性作檢驗。由驗證處理部123所致之用以對於使用者資料52之完整性進行檢驗之動作,係如同在第1實施形態中所作了說明一般。驗證處理部123,例如,係藉由對於經由讀取處理部122而被送出的特定資料長度單位之讀取資料依序進行處理,而對於區域之各者的所有使用者資料之完整性作檢驗。
在對於1個的區域之所有使用者資料之完整性作了確認的情況時,驗證處理部123,係在驗證狀況管理表23中,對於被與該區域相互附加有關連之最終確認時間作更新。另一方面,當1個的區域內之至少一部分之使用者資料之完整性尚未被作確認的情況時,驗證處理部123,係在驗證狀況管理表23中,並不對於被與對象區域相互附加有關連之最終確認時間作更新。另外,當無法對於1個的區域內之至少一部分之使用者資料之完整性作確認的情況時,驗證處理部123,係亦可對於主機2而通知區域之重置或者是變更。
藉由以上之動作,在記憶體系統3處,係能夠將藉由定期性之巡邏處理而從NAND型快閃記憶體5所讀出之資料,亦使用於驗證處理中。藉由此,相較於「巡邏處理係被定期性地進行,進而,與驗證指令相對應之驗證處理係被進行」的情況一般之分別進行巡邏處理與驗證處理的情況,係能夠將從NAND型快閃記憶體5而將資料讀出之次數降低。故而,係能夠降低NAND型快閃記憶體5之疲勞,並且能夠保全資料。
又,在將最終確認時間以區域單位來作管理的情況時,相較於以LBA單位來作管理的情況,係能夠更進而降低驗證狀況管理表23之資料量。
圖20,係為對於藉由CPU12所被實行的驗證指令處理之程序之例作展示之流程圖。CPU12,係因應於從主機2而收訊了強制之驗證指令(第1驗證指令)一事,而實行此驗證指令處理。於此,針對驗證指令係藉由開頭LBA與容量來對於成為驗證處理之對象之LBA範圍作指定的情況來作例示。又,假設所被作了指定的LBA範圍係能夠對應於1個以上的區域。
首先,CPU12係決定驗證對象之LBA(對象LBA)(步驟S601)。驗證對象之LBA,係身為藉由驗證指令所被作了指定的LBA範圍內之1個的LBA。之後,CPU12,係特定出包含有對象LBA之區域(步驟S602)。CPU12,例如係使用區域描述符26,來特定出包含有對象LBA之區域。以下,係將所特定出之區域,亦稱作對象區域。
接著,CPU12,係藉由步驟S603~步驟S605之處理,而進行針對對象LBA之使用者資料52之驗證處理,並對於對象LBA之使用者資料52之完整性進行檢驗。步驟S603~步驟S605之處理,係與參照圖9而於前所作了敘述的驗證指令處理之步驟S102~步驟S104之處理相同。
接著,CPU12之處理,係因應於驗證處理之結果而分歧(步驟S606)。
當驗證處理之結果係代表使用者資料之完整性並未被作確認的情況時(步驟S606,NO),CPU12,係對於主機2而通知「對象區域之使用者資料之完整性並未被作確認」一事(步驟S607),CPU12之處理係前進至步驟S611處。另外,當使用者資料之完整性並未被作確認的情況時,CPU12,係在驗證狀況管理表23中,並不對於被與對象區域相互附加有關連之最終確認時間作更新。
另一方面,當驗證處理之結果係代表使用者資料之完整性為被作了確認的情況時(步驟S606,YES),CPU12,係判定驗證是否一直完成至了對象區域之終端為止(步驟S608)。具體而言,CPU12,例如係使用區域描述符26,來判定現在之對象LBA是否身為與對象區域相對應的LBA範圍之終端之LBA。當現在之對象LBA係身為與對象區域相對應的LBA範圍之終端之LBA的情況時,CPU12,係判斷驗證為一直完成至了對象區域之終端。
當驗證並未一直完成至對象區域之終端的情況時(步驟S608,NO),CPU12之處理係回到步驟S601處,並繼續進行以後續之LBA作為對象之處理。
當驗證係一直完成至了對象區域之終端的情況時(步驟S608,YES),CPU12,係在驗證狀況管理表23中,對於被與對象區域相互附加有關連之最終確認時間作更新(步驟S609)。例如,當最終確認時間係代表從使用者資料的完整性被作確認起所經過的時間的情況時,CPU12,係作為被與對象區域相互附加有關連之最終確認時間,而設定「0」。或者是,CPU12,作為被與對象區域相互附加有關連之最終確認時間,係亦可設定現在之時刻。之後,CPU12,係對於主機2而通知「對象區域之使用者資料之完整性為被作了確認」一事(步驟S610),CPU12之處理係前進至步驟S611處。另外,CPU12,係亦可將關連於與在藉由驗證指令所被指定了的LBA範圍相對應之所有的區域之使用者資料的驗證結果,整批對於主機2作通知。
接著,CPU12係判定是否存在有其他之區域之驗證對象之LBA(步驟S611)。亦即是,CPU12,係判定在藉由驗證指令所被指定了的LBA範圍中,是否殘留有針對使用者資料之驗證處理尚未被進行的其他之區域之LBA。
當存在有其他之區域之驗證對象之LBA的情況時(步驟S611,YES),CPU12之處理係回到步驟S601處,並進行以該其他之區域之LBA作為對象之處理。
另一方面,當並不存在有其他之區域之驗證對象之LBA的情況時(步驟S611,NO),亦即是針對與藉由驗證指令所被指定了的LBA範圍相對應之所有之區域之驗證處理均結束了的情況時,CPU12係結束驗證指令處理。
藉由以上之驗證指令處理,CPU12係能夠對於驗證狀況管理表23作更新。具體而言,CPU12,係對於與藉由驗證指令而被作了指定的LBA範圍相對應之1個以上的區域之各者之使用者資料之完整性作檢驗。之後,CPU12,係對於被與針對完整性而作了確認的使用者資料之區域相互附加有關連之最終確認時間作更新。藉由此,在記憶體系統3處,係能夠對於被儲存在各區域中之使用者資料的完整性之最終確認時間作管理。
圖21,係為對於藉由CPU12所被實行的驗證指令處理之程序之其他例作展示之流程圖。CPU12,係因應於從主機2而收訊了對於容許時間範圍作了指定的驗證指令(第2驗證指令)一事,而實行此驗證指令處理。於此,針對驗證指令係對於成為驗證處理之對象之LBA範圍作指定的情況來作例示。又,假設所被作了指定的LBA範圍係能夠對應於1個以上的區域。
首先,CPU12係決定驗證對象之LBA(對象LBA)(步驟S701)。CPU12,係特定出包含有對象LBA之區域(對象區域)(步驟S702)。之後,CPU12,係從驗證狀況管理表23而取得被與對象區域相互附加有關連之最終確認時間(步驟S703)。
CPU12,係判定所取得的最終確認時間是否為落於藉由驗證指令所被指定了的容許時間範圍內(步驟S704)。
當所取得的最終確認時間係為落於容許時間範圍外的情況時(步驟S704,NO),CPU12,係藉由步驟S705~步驟S712之處理,而進行用以「對於對象LBA之使用者資料之完整性進行檢驗,並將驗證為一直完成至了終端的區域之檢驗結果對於主機2作通知」之處理。步驟S705~步驟S712之處理,由於係與參照圖20而於前所作了敘述的驗證指令處理之步驟S603~步驟S610之處理相同,因此,係將其之說明省略。接著,CPU12係判定是否存在有其他之區域之驗證對象之LBA(步驟S713)。當存在有其他之區域之驗證對象之LBA的情況時(步驟S713,YES),CPU12之處理係回到步驟S701處,並進行以該其他之區域之LBA作為對象之處理。另一方面,當並不存在有其他之區域之驗證對象LBA的情況時(步驟S713,NO),CPU12係結束驗證指令處理。
當所取得的最終確認時間係落於容許時間範圍內的情況時(步驟S704,YES),CPU12,係判定是否存在有其他之區域之驗證對象之LBA(步驟S713)。當存在有其他之區域之驗證對象之LBA的情況時(步驟S713,YES),CPU12之處理係回到步驟S701處,並進行以該其他之區域之LBA作為對象之處理。另一方面,當並不存在有其他之區域之驗證對象之LBA的情況時(步驟S713,NO),CPU12係結束驗證指令處理。亦即是,當所取得的最終確認時間係為落於容許時間範圍內的情況時,CPU12,係能夠並不進行用以對於對象區域之使用者資料之完整性進行檢驗之處理地而進行以其他之區域作為對象之處理。另外,當所取得的最終確認時間係為落於容許時間範圍內的情況時,CPU12,係亦可對於主機2而通知「已在容許時間範圍內之時間中而對於對象區域之使用者資料之完整性作了確認」一事。
藉由以上之驗證指令處理,CPU12,當對應於對象區域之最終確認時間係落於容許時間範圍外的情況時,係能夠對於驗證狀況管理表23作更新。藉由此,在記憶體系統3處,係能夠對於被儲存在各區域中之使用者資料的最終確認時間作管理。
又,當對應於對象區域之最終確認時間係為落於容許時間範圍內的情況時,CPU12,係並不進行用以對於對象區域之使用者資料(亦即是,被分配給對象區域之LBA範圍之使用者資料)之完整性進行檢驗的驗證處理。亦即是,CPU12,針對使用者資料之完整性已在容許時間範圍內而被有所確認的區域,係並不進行驗證處理。如此這般,CPU12,係能夠藉由利用被記錄在驗證狀況管理表23中之最終確認時間,來降低從NAND型快閃記憶體5而將各區域之使用者資料讀出的次數。故而,係能夠降低NAND型快閃記憶體5之疲勞。
圖22,係為對於藉由CPU12所被實行的附隨於巡邏處理之驗證處理之程序之例作展示之流程圖。CPU12,例如係於每一定時間而實行巡邏處理以及附隨於巡邏處理之驗證處理。
首先,CPU12,係藉由步驟S801~步驟S806之處理,來進行針對NAND型快閃記憶體5之巡邏處理。巡邏處理,係身為用以將在NAND型快閃記憶體5中所包含的複數之區塊之中之「錯誤位元數為超過臨限值的資料」所被作儲存之區塊之各者檢測出來的處理。CPU12,例如,當所被檢測出的區塊之物理位址係對應於在某一區域中所包含之LBA的情況時,係對於主機2而通知該區域之重置或變更。
具體而言,CPU12,係決定讀出對象之物理位址(步驟S801)。CPU12係從NAND型快閃記憶體5而將對象物理位址之資料讀出(步驟S802)。之後,CPU12係使用區域-物理位址轉換表25,來特定出與對象物理位址相對應之LBA(步驟S803)。
CPU12,係判定是否成功特定出了與對象物理位址相對應之LBA(步驟S804)。換言之,CPU12,係判定所讀出了的對象物理位址之資料(讀取資料)是身為有效資料還是身為無效資料。
在無法特定出與對象物理位址相對應之LBA的情況時(步驟S804,NO),亦即是當讀取資料係為無效資料的情況時,CPU12之處理係前進至步驟S816處。CPU12,係並不對於身為無效資料之讀取資料進行任何的處理地,而前進至後續之資料之處理。
在成功特定出了與對象物理位址相對應之LBA的情況時(步驟S804,YES),亦即是當讀取資料係為有效資料的情況時,CPU12係特定出「包含有所特定出的LBA之區域」(對象區域)(步驟S805)。之後,CPU12係針對讀取資料,而進行使用有ECC55之錯誤訂正處理(步驟S806)。CPU12,係判定藉由錯誤訂正處理而使錯誤被作了訂正的位元數是否有超過臨限值(步驟S807)。當藉由錯誤訂正處理而使錯誤被作了訂正的位元數為超過了臨限值的情況時(步驟S807,YES),CPU12,係對於主機2而通知對象區域之重置或變更(步驟S808),CPU12之處理係前進至步驟S809處。主機2,係能夠因應於此通知而對於對象區域作重置或變更。另一方面,當藉由錯誤訂正處理而使錯誤被作了訂正的位元數係為臨限值以下的情況時(步驟S807,NO),CPU12之處理係前進至步驟S809處。
接著,CPU12,係使用讀取資料而進行驗證處理(步驟S809)。關於驗證處理的具體性之處理程序,係如同參考圖10之流程圖而於前所述一般。另外,讀取資料,由於係身為為了進行巡邏處理而在步驟S802處已被讀出之資料,因此,CPU12係並不需要為了進行驗證處理而特地另外從NAND型快閃記憶體5將資料讀出。
CPU12之處理,係因應於驗證處理之結果而分歧(步驟S810)。
具體而言,當驗證處理之結果係代表使用者資料之完整性為被作了確認的情況時(步驟S810,YES),CPU12之處理係前進至步驟S812處。另一方面,當驗證處理之結果係代表使用者資料之完整性並未被作確認的情況時(步驟S810,NO),CPU12,係建立對象區域之錯誤旗標(error flag)(步驟S811),CPU12之處理係前進至步驟S812處。錯誤旗標,係代表在所對應的區域中,至少1個的LBA之使用者資料之完整性尚未被作確認。亦即是,錯誤旗標,係代表在所對應的區域中係被儲存有完整性尚未被作確認之使用者資料。另外,在開始附隨於巡邏處理之驗證處理時,係設為各區域之錯誤旗標乃身為被作了清除的狀態。
接著,CPU12係判定對象區域全體之驗證是否完成(步驟S812)。當對象區域全體之驗證尚未完成的情況時(步驟S812,NO),CPU12之處理係前進至步驟S816處。
當對象區域全體之驗證為完成的情況時(步驟S812,YES),CPU12係判定是否建立有對象區域之錯誤旗標(步驟S813)。當對象區域之錯誤旗標為被清除的情況時(步驟S813,NO),CPU12,係在驗證狀況管理表23中,對於被與對象區域相互附加有關連之最終確認時間作更新(步驟S814),CPU12之處理係前進至步驟S816處。亦即是,當被儲存於對象區域中之所有使用者資料之完整性均被作了確認的情況時,CPU12,係在驗證狀況管理表23中,將被與對象區域相互附加有關連之最終確認時間作更新。
另一方面,當建立有對象區域之錯誤旗標的情況時(步驟S813,YES),CPU12,係對於主機2而通知對象區域之重置或變更(步驟S815),CPU12之處理係前進至步驟S816處。當被儲存在對象區域中之至少一部分之使用者資料之完整性並未被作確認的情況時,CPU12,係在驗證狀況管理表23中,並不對於被與對象區域相互附加有關連之最終確認時間作更新。
接著,CPU12,係判定針對NAND型快閃記憶體5之所有資料的巡邏處理是否均已結束(步驟S816)。亦即是,CPU12,係判定在NAND型快閃記憶體5內之區塊中是否殘留有在巡邏處理中而尚未被讀出之資料。
當針對所有資料之巡邏處理尚未結束的情況時(步驟S816,NO),CPU12之處理係回到步驟S801處,並進行以尚未被讀出之資料作為對象的處理。
另一方面,當針對所有資料之巡邏處理均為完成的情況時(步驟S816,YES),CPU12係將巡邏處理以及驗證處理結束。
藉由以上之巡邏處理以及驗證處理,CPU12,係能夠針對藉由巡邏處理所被讀出的資料而亦進行驗證處理。藉由此,CPU12,相較於分別進行巡邏處理與驗證處理的情況,係能夠將從NAND型快閃記憶體5而將資料讀出之次數降低。故而,係能夠降低NAND型快閃記憶體5之疲勞,並且能夠保全資料。
如同以上所作了說明一般,若依據第1以及第2實施形態,則係能夠減輕非揮發性記憶體之疲勞並且保全資料。控制器4,係對於將NAND型快閃記憶體5之記憶區域邏輯性地作了分割的至少1個的記憶區域作管理。控制器4,係針對關連於分別被記憶在至少1個的記憶區域之中之1個以上的記憶區域處之資料的完整性之最後被作確認的時間之資訊(例如,驗證狀況管理表23)作管理。
藉由使用此資訊,係能夠對於針對分別被記憶在1個以上的記憶區域中之資料而進行驗證處理之時序作控制。故而,由於係能夠降低從NAND型快閃記憶體5而將資料讀出之次數,因此,係能夠減輕NAND型快閃記憶體5之疲勞並且保全資料。
在第1以及第2實施形態中所記載之各種之功能的各者,係亦可藉由電路(處理電路)而被實現。在處理電路之例中,係包含有如同中央處理裝置(CPU) 一般之被作了程式化的處理器。此處理器,係藉由實行被儲存於記憶體中之電腦程式(命令群),而實現所記載的各者之功能。此處理器,係亦可為包含有電性電路之微處理器。在處理電路之例中,係亦包含有數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、微控制器、控制器、其他之電性電路零件。在此些之實施形態中所記載之CPU以外的其他之組件(component)之各者,係亦可藉由處理電路而被實現。
雖係針對本發明之數種實施形態作了說明,但是,該些實施形態,係僅為作為例子所提示者,而並非為對於本發明之範圍作限定者。此些之新穎的實施形態,係可藉由其他之各種形態來實施,在不脫離發明之要旨的範圍內,係可進行各種之省略、置換、變更。此些之實施形態或其變形,係亦被包含於發明之範圍或要旨中,並且亦被包含在申請專利範圍中所記載的發明及其均等範圍內。
1:資訊處理系統
2:主機
3:記憶體系統
4:控制器
5:NAND型快閃記憶體
6:DRAM
11:主機I/F
12:CPU
13:NAND I/F
14:DRAM I/F
121:指令處理部
122:讀取處理部
123:驗證處理部
124:巡邏(patrol)處理部
125:驗證狀況管理部
21:FW
22:邏輯物理位址轉換表
23:驗證狀況管理表
25:區域-物理位址轉換表
26:區域描述符
[圖1]係為對於包含有第1實施形態的記憶體系統之資訊處理系統之構成例作展示之區塊圖。
[圖2]係為對於在第1實施形態的記憶體系統處所被使用之邏輯物理位址轉換表之構成例作展示之圖。
[圖3]係為對於在第1實施形態的記憶體系統中所被使用之驗證狀況管理表之構成例作展示之圖。
[圖4]係為對於在第1實施形態的記憶體系統中,被與1個的邏輯區塊位址(LBA)相互附加有關連的資料構造之例作展示之圖。
[圖5]係為對於在第1實施形態的記憶體系統中之與狀態詢問指令相對應之動作之例作展示之區塊圖。
[圖6]係為對於在第1實施形態的記憶體系統中之與強制之驗證指令相對應之動作之例作展示之區塊圖。
[圖7]係為對於在第1實施形態的記憶體系統中之與指定有容許時間範圍之驗證指令相對應之動作之例作展示之區塊圖。
[圖8]係為對於在第1實施形態的記憶體系統中之附隨於巡邏處理之驗證處理之例作展示之區塊圖。
[圖9]係為對於在第1實施形態之記憶體系統處所被實行的驗證指令處理之程序之例作展示之流程圖。
[圖10]係為對於在第1實施形態之記憶體系統處所被實行的驗證處理之程序之例作展示之流程圖。
[圖11]係為對於在第1實施形態之記憶體系統處所被實行的驗證指令處理之程序之其他例作展示之流程圖。
[圖12]係為對於在第1實施形態之記憶體系統處所被實行的附隨於巡邏處理之驗證處理之程序之例作展示之流程圖。
[圖13]係為對於在第2實施形態之記憶體系統中所被管理之分區名稱空間(zoned namespace)之構成例作展示之圖。
[圖14]係為對於包含有第2實施形態的記憶體系統之資訊處理系統之構成例作展示之區塊圖。
[圖15]係為對於在第2實施形態的記憶體系統處所被使用之區域-物理位址轉換表之構成例作展示之圖。
[圖16]係為對於在第2實施形態的記憶體系統中所被使用之驗證狀況管理表之構成例作展示之圖。
[圖17]係為對於在第2實施形態的記憶體系統中之與強制之驗證指令相對應之動作之例作展示之區塊圖。
[圖18]係為對於在第2實施形態的記憶體系統中之與指定有容許時間範圍之驗證指令相對應之動作之例作展示之區塊圖。
[圖19]係為對於在第2實施形態的記憶體系統中之附隨於巡邏處理之驗證處理之例作展示之區塊圖。
[圖20]係為對於在第2實施形態之記憶體系統處所被實行的驗證指令處理之程序之例作展示之流程圖。
[圖21]係為對於在第2實施形態之記憶體系統處所被實行的驗證指令處理之程序之其他例作展示之流程圖。
[圖22]係為對於在第2實施形態之記憶體系統處所被實行的附隨於巡邏處理之驗證處理之程序之例作展示之流程圖。
Claims (14)
- 一種記憶體系統,係能夠與主機作連接,並具備有:非揮發性記憶體,係具備有記憶區域;和控制器,係構成為對於將前述非揮發性記憶體之前述記憶區域邏輯性地作了分割的第1記憶區域與第2記憶區域作管理,前述控制器,係構成為針對關連於分別被記憶在前述第1、第2記憶區域之各者之記憶區域處之資料的完整性之最後被作確認的時間之資訊作管理,前述控制器,係因應於從前述主機而來之驗證要求之收訊,而將關連於被記憶在前述第1記憶區域或前述第2記憶區域中之資料的完整性之最後被作確認的時間之資訊對於主機作送訊。
- 如請求項1所記載之記憶體系統,其中,被記憶在前述第1記憶區域或前述第2記憶區域處之資料的完整性之最後被作確認的時間,係代表從前述資料之完整性最後被作確認起所經過了的時間,前述控制器,係更進而構成為:從主機收訊詢問,因應於前述詢問,而使用前述資訊,來將從被記憶在前述第1記憶區域或前述第2記憶區域處之資料的完整性之最後被作確認起所經過的時間之中之展現有最大值之資訊,對於前述主機作送訊。
- 如請求項1所記載之記憶體系統,其中,被記憶在前述第1記憶區域或前述第2記憶區域處之資料的完整性之最後被作確認的時間,係代表前述資料之完整性最後被作了確認的時刻,前述控制器,係更進而構成為:從主機收訊詢問,因應於前述詢問,而使用前述資訊,來將在被記憶在前述第1記憶區域或前述第2記憶區域處之資料的完整性之最後被作確認的時刻之中之展現有最古老的時刻之資訊,對於前述主機作送訊。
- 如請求項1所記載之記憶體系統,其中,前述控制器,係更進而構成為:從主機收訊對於前述第1記憶區域作了指定的詢問,因應於前述詢問,而將關連於被記憶在前述第1記憶區域處之資料的完整性之最後被作確認的時間之資訊,對於前述主機作送訊。
- 如請求項1所記載之記憶體系統,其中,前述控制器,係更進而構成為:從主機收訊對於前述第1記憶區域作了指定的驗證(veify)要求,並因應於前述驗證要求,而從前述第1記憶區域讀出第1資料,對於所讀出的前述第1資料之完整性作驗證,當所讀出了的前述第1資料之完整性被作了確認的情況時,將關連於前述第1資料的完整性之最後被作確認的 時間之資訊作更新。
- 如請求項1所記載之記憶體系統,其中,前述控制器,係更進而構成為:從主機收訊對於前述第1記憶區域以及容許時間範圍作了指定的驗證要求,並因應於前述驗證要求,而基於前述資訊,而當被記憶在前述第1記憶區域中之第1資料之完整性之最後被作確認的時間乃落於前述容許時間範圍外的情況時,將前述第1資料從前述第1記憶區域而讀出,對於所讀出的前述第1資料之完整性作驗證,當所讀出了的前述第1資料之完整性被作了確認的情況時,將關連於前述第1資料的完整性之最後被作確認的時間之資訊作更新。
- 如請求項1所記載之記憶體系統,其中,前述控制器,係更進而構成為:從主機收訊對於前述第1記憶區域以及容許時間範圍作了指定的驗證要求,並因應於前述驗證要求,而基於前述資訊,而當被記憶在前述第1記憶區域中之第1資料之完整性之最後被作確認的時間乃落於前述容許時間範圍內的情況時,將從前述第1記憶區域之前述第1資料之讀出跳過(skip),並將前述第1資料之完整性為已完成確認一事對於前述主機作通知。
- 如請求項1所記載之記憶體系統,其中,前述控制器,係更進而構成為: 進行針對前述非揮發性記憶體之巡邏(patrol)處理,而從前述第1記憶區域來將第1資料讀出,並對於所讀出的前述第1資料之完整性進行檢驗,當所讀出了的前述第1資料之完整性被作了確認的情況時,將關連於前述第1資料的完整性之最後被作確認的時間之資訊作更新。
- 如請求項5~8中之任一項所記載之記憶體系統,其中,前述控制器,係使用與前述第1資料一同地而從前述第1記憶區域所讀出了的保護資訊,來對於前述第1資料之完整性作檢驗。
- 如請求項5~8中之任一項所記載之記憶體系統,其中,前述控制器,係使用與前述第1資料一同地而從前述第1記憶區域所讀出了的CRC碼,來對於前述第1資料之完整性作檢驗。
- 如請求項1~8中之任一項所記載之記憶體系統,其中,前述第1記憶區域和前述第2記憶區域,係與第1和第2邏輯位址分別相互對應。
- 如請求項1~8中之任一項所記載之記憶體系統,其中,前述第1記憶區域和前述第2記憶區域,係與第1和第2區域分別相互對應, 前述第1區域和前述第2區域之各者,係與邏輯位址範圍相互對應。
- 如請求項1所記載之記憶體系統,其中,關連於前述資料的完整性之最後被作確認的時間之資訊之管理,係基於驗證狀況管理表來進行。
- 如請求項5所記載之記憶體系統,其中,關連於前述資料的完整性之最後被作確認的時間之資訊之管理,係為驗證狀況管理表之更新。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-208475 | 2020-12-16 | ||
JP2020208475A JP2022095257A (ja) | 2020-12-16 | 2020-12-16 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202226232A TW202226232A (zh) | 2022-07-01 |
TWI788860B true TWI788860B (zh) | 2023-01-01 |
Family
ID=81942447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110119612A TWI788860B (zh) | 2020-12-16 | 2021-05-31 | 記憶體系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11816344B2 (zh) |
JP (1) | JP2022095257A (zh) |
CN (1) | CN114637706B (zh) |
TW (1) | TWI788860B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200535609A (en) * | 2004-03-12 | 2005-11-01 | Netcell Corp | Disk controller methods and apparatus with improved striping, redundancy operations and interfaces |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
US20160188181A1 (en) * | 2011-08-05 | 2016-06-30 | P4tents1, LLC | User interface system, method, and computer program product |
CN111788559A (zh) * | 2018-03-05 | 2020-10-16 | 阿里巴巴集团控股有限公司 | 通过伽罗瓦域维折叠支持具有唯一纠错码的多页长度 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107272B1 (en) * | 2002-12-02 | 2006-09-12 | Storage Technology Corporation | Independent distributed metadata system and method |
US7149946B2 (en) * | 2003-06-13 | 2006-12-12 | Microsoft Corporation | Systems and methods for enhanced stored data verification utilizing pageable pool memory |
US7173852B2 (en) * | 2003-10-03 | 2007-02-06 | Sandisk Corporation | Corrected data storage and handling methods |
US7677441B2 (en) * | 2005-04-01 | 2010-03-16 | Microsoft Corporation | Relaxed currency constraints |
DE602006019010D1 (de) * | 2006-10-20 | 2011-01-27 | Fujitsu Ltd | Speicheranordnung und auffrisch-justierverfahren |
WO2009124320A1 (en) * | 2008-04-05 | 2009-10-08 | Fusion Multisystems, Inc. | Apparatus, system, and method for bad block remapping |
DE102010002472A1 (de) * | 2010-03-01 | 2011-09-01 | Robert Bosch Gmbh | Verfahren zum Verifizieren eines Speicherblocks eines nicht-flüchtigen Speichers |
WO2012001917A1 (ja) | 2010-06-29 | 2012-01-05 | パナソニック株式会社 | 不揮発性記憶システム、メモリシステム用の電源回路、フラッシュメモリ、フラッシュメモリコントローラ、および不揮発性半導体記憶装置 |
US20140351446A1 (en) | 2013-05-21 | 2014-11-27 | Samsung Electronics Co., Ltd. | Electronic device using logical channels for communication |
CN103854700B (zh) * | 2014-02-28 | 2018-05-01 | 北京兆易创新科技股份有限公司 | 一种非易失性存储器的擦除方法和装置 |
US10222988B2 (en) * | 2014-04-22 | 2019-03-05 | Hitachi, Ltd. | Efficient management storage system via defining of several size units in advance |
US11556396B2 (en) * | 2015-05-08 | 2023-01-17 | Seth Lytle | Structure linked native query database management system and methods |
US10157093B2 (en) * | 2015-05-27 | 2018-12-18 | Nxp Usa, Inc. | Data integrity check within a data processing system |
US10394634B2 (en) * | 2017-06-30 | 2019-08-27 | Intel Corporation | Drive-based storage scrubbing |
US10579538B2 (en) | 2018-02-21 | 2020-03-03 | Western Digital Technologies, Inc. | Predicting addresses in non-volatile storage |
US20200026427A1 (en) * | 2018-07-23 | 2020-01-23 | Reduxio Systems Ltd. | System and method for handling data storage on storage devices |
US10951544B2 (en) * | 2019-01-30 | 2021-03-16 | The Boeing Company | Apparatus and method of crosschecking data copies using one or more voter elements |
-
2020
- 2020-12-16 JP JP2020208475A patent/JP2022095257A/ja active Pending
-
2021
- 2021-05-31 TW TW110119612A patent/TWI788860B/zh active
- 2021-08-19 CN CN202110955607.5A patent/CN114637706B/zh active Active
- 2021-09-08 US US17/468,880 patent/US11816344B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200535609A (en) * | 2004-03-12 | 2005-11-01 | Netcell Corp | Disk controller methods and apparatus with improved striping, redundancy operations and interfaces |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
US20160188181A1 (en) * | 2011-08-05 | 2016-06-30 | P4tents1, LLC | User interface system, method, and computer program product |
CN111788559A (zh) * | 2018-03-05 | 2020-10-16 | 阿里巴巴集团控股有限公司 | 通过伽罗瓦域维折叠支持具有唯一纠错码的多页长度 |
Also Published As
Publication number | Publication date |
---|---|
JP2022095257A (ja) | 2022-06-28 |
US11816344B2 (en) | 2023-11-14 |
TW202226232A (zh) | 2022-07-01 |
CN114637706B (zh) | 2024-05-24 |
CN114637706A (zh) | 2022-06-17 |
US20220188005A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9229876B2 (en) | Method and system for dynamic compression of address tables in a memory | |
US9792069B2 (en) | Offline deduplication for solid-state storage devices | |
KR100847506B1 (ko) | 기억 장치, 메모리 관리 방법 및 프로그램 | |
JP7358594B2 (ja) | メモリシステム | |
US20140195725A1 (en) | Method and system for data storage | |
US10310764B2 (en) | Semiconductor memory device and storage apparatus comprising semiconductor memory device | |
KR20170009706A (ko) | 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법 | |
US20220300169A1 (en) | Information processing system for controlling storage device | |
TW202230110A (zh) | 記憶體系統及控制方法 | |
US20200301847A1 (en) | Memory system for controlling nonvolatile memory | |
JP7475989B2 (ja) | メモリシステムおよび制御方法 | |
JP2005115561A (ja) | フラッシュrom制御装置 | |
TWI788860B (zh) | 記憶體系統 | |
US20210081137A1 (en) | Disk array device, control method for disk array device, and control program for disk array device | |
US20150067237A1 (en) | Memory controller, semiconductor memory system, and memory control method | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
US11907567B2 (en) | Memory system having a controller with a data erasure processing function | |
JP2019215777A (ja) | メモリシステム | |
US11853200B2 (en) | Memory system and controller to invalidate data corresponding to a logical address | |
US20240303189A1 (en) | Memory system | |
US20240202113A1 (en) | Memory system | |
US20230185469A1 (en) | Memory system and controlling method | |
JP7039348B2 (ja) | 書き込み制御装置、ストレージ装置、ネットワークシステム、および書き込み制御方法 | |
JP2024043063A (ja) | メモリシステムおよび制御方法 |