TWI824837B - 記憶體系統 - Google Patents
記憶體系統 Download PDFInfo
- Publication number
- TWI824837B TWI824837B TW111144719A TW111144719A TWI824837B TW I824837 B TWI824837 B TW I824837B TW 111144719 A TW111144719 A TW 111144719A TW 111144719 A TW111144719 A TW 111144719A TW I824837 B TWI824837 B TW I824837B
- Authority
- TW
- Taiwan
- Prior art keywords
- aforementioned
- data
- time
- write
- area
- Prior art date
Links
- 230000004044 response Effects 0.000 claims abstract description 375
- 238000000034 method Methods 0.000 claims abstract description 84
- 230000008569 process Effects 0.000 claims abstract description 62
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 238000012790 confirmation Methods 0.000 claims description 26
- 230000008685 targeting Effects 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 147
- 239000000872 buffer Substances 0.000 description 88
- 238000012545 processing Methods 0.000 description 85
- 230000004913 activation Effects 0.000 description 73
- 230000000977 initiatory effect Effects 0.000 description 21
- 230000000052 comparative effect Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 230000003111 delayed effect Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 238000012546 transfer Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 7
- 230000010365 information processing Effects 0.000 description 7
- 238000012005 ligant binding assay Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Iron Core Of Rotating Electric Machines (AREA)
- Soundproofing, Sound Blocking, And Sound Damping (AREA)
- Vehicle Body Suspensions (AREA)
Abstract
本發明之其中一個實施形態,係實現能夠針對寫入要求而在被主機所期待的時間內作回應之記憶體系統。
若依據實施形態,則記憶體系統,係具備有非揮發性記憶體和控制器。控制器,係從主機而受理被與具有未滿身為對於非揮發性記憶體之寫入單位之第1資料單位之容量之第1資料相互附加有關連之第1寫入要求。控制器,係因應於從受理第1寫入要求起而經過了第1時間一事,開始至少包含有第1資料之第2資料的對於非揮發性記憶體之寫入處理。控制器,係因應於寫入處理完成一事,對於主機而送訊針對第1寫入要求之第1回應。第1時間,係身為從作為從受理第1寫入要求起直到送訊第1回應為止的限制時間而由主機所指定了的第2時間,而減去第3時間後之時間。
Description
本發明之實施形態,係有關於控制非揮發性記憶體之技術。
[關連申請案]
本申請案,係享受以日本專利申請
2021-43709號(申請日:2021年3月17日)作為基礎申請之優先權。本申請案,係藉由參照此基礎申請案,而包含基礎申請案之所有的內容。
近年來,具備有非揮發性記憶體之記憶體系統係廣泛普及。作為此種記憶體系統之其中一者,具備有NAND型快閃記憶體之固態硬碟(SSD)係為周知。SSD,係作為各種的計算裝置之主儲存裝置而被作使用。
記憶體系統,例如,在從主機而受理了1個的寫入要求的情況時,係將伴隨著受理了該寫入要求一事而從主機所收訊了的使用者資料寫入至非揮發性記憶體中,並對於主機回送回應。
或者是,記憶體系統,係會有在藉由從主機所受理了的複數之寫入要求而被要求有寫入之使用者資料之總量到達了特定之資料單位之後,將該特定之資料單位之使用者資料寫入至非揮發性記憶體中,並對於主機而回送與複數之寫入要求之各者分別相互對應之回應的情形。特定之資料單位,例如,係身為能夠藉由一次的資料寫入動作而寫入至非揮發性記憶體中之資料量。亦即是,記憶體系統,係能夠使用「並不立即地實行與所受理了的1個的寫入要求相對應之寫入,而是在藉由複數之寫入要求而被要求有寫入之使用者資料之總量到達了特定之資料單位之後,再實行與該些之複數之寫入要求相對應之寫入」的機制。以下,係將此機制,亦稱作延遲寫入完備(Delayed Write Completion)。
在延遲寫入完備中,例如,由於係將包含有與複數之寫入要求分別相對應之複數之使用者資料的寫入單位之使用者資料寫入至非揮發性記憶體中,因此,係能夠對於非揮發性記憶體之記憶區域有效率地作利用。但是,在延遲寫入完備中,與各個的寫入要求相對應之寫入以及回應,係會有一直延遲至直到受理與寫入單位之使用者資料相對應之複數之寫入要求為止的可能性。
起因於記憶體系統並不因應於從主機而受理了1個的寫入要求一事來立即性地進行與該寫入要求相對應之寫入以及回應一事,主機係會有無法在所期待的時間內而得到針對寫入要求之回應的可能性。
本發明之其中一個實施形態,係提供一種能夠在被主機所期待的時間內而針對寫入要求進行回應之記憶體系統。
若依據實施形態,則記憶體系統,係具備有非揮發性記憶體、和控制器。控制器,係從主機而受理被與具有未滿第1資料單位之容量之第1資料相互附加有關連之第1寫入要求。控制器,係因應於從受理第1寫入要求起而經過了第1時間一事,開始第2資料的對於非揮發性記憶體之寫入處理。控制器,係因應於寫入處理完成一事,對於主機而送訊代表第1寫入要求為完成之第1回應,其中,該第1資料單位係為對於非揮發性記憶體之寫入單位,該第2資料係至少包含有第1資料。第1時間,係為從第2時間而減去第3時間後之時間。該第2時間,係作為從受理第1寫入要求起直到送訊第1回應為止的限制時間而由前述主機所指定,並較第1時間而更長。
以下,參考圖面,針對實施形態作說明。
首先,參考圖1,針對包含實施形態之記憶體系統的資訊處理系統1之構成作說明。資訊處理系統1,係包含有主機裝置2(以下,稱作主機2)、和記憶體系統3。
主機2,係身為資訊處理裝置。主機2,係可身為將大量且多樣化的資料保存於記憶體系統3中之儲存伺服器,亦可身為個人電腦。
記憶體系統3,係身為以對於如同NAND型快閃記憶體一般之非揮發性記憶體而寫入資料並從非揮發性記憶體而將資料讀出的方式所構成之半導體儲存裝置。記憶體系統,係亦被稱作儲存裝置。記憶體系統,例如係可作為固態硬碟(SSD)而被實現。
記憶體系統3,係可作為主機裝置2之儲存設備而被作使用。記憶體系統3,係可內藏於主機2中,亦可經由纜線或網路而被與主機2作連接。
用以將主機2與記憶體系統3相互作連接之介面,係準據於SCSI(Small Computer System Interface)、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之快取區域,名稱空間回應管理表(NS回應管理表)23、指令回應管理表24、區域描述符25以及寫入管理表26之儲存區域。
FW21,係身為用以對於控制器4之動作進行控制的程式。FW21,例如係被從NAND型快閃記憶體5而被載入至DRAM6處。
邏輯物理位址轉換表22,係對於邏輯位址之各者與NAND型快閃記憶體5之物理位址之各者之間的映射作管理。
NS回應管理表23,係將關連於應針對寫入指令(寫入要求)而作回應的時間之資訊,例如針對各名稱空間之每一者而分別作管理。
指令回應管理表24,係對於應強制性地開始與所受理了的寫入指令相對應之處理之時間作管理。
區域描述符25,係包含有代表各區域之構成與狀態的資訊。
寫入管理表26,係對於關連於所受理了的寫入指令之資訊作管理。
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)對於代表邏輯位址之各者與NAND型快閃記憶體5之物理位址之各者之間的對應關係之映射資訊之管理以及(2)用以將頁面單位之讀取/寫入動作和區塊單位之刪除(erase)動作之間之差異作隱蔽之處理。在區塊管理中,係包含有不良區塊之管理、耗損平均技術以及垃圾回收。
邏輯位址,係為了對於記憶體系統3指定位址,而被主機2所使用。邏輯位址,例如係為邏輯區塊位址(LBA)。以下,主要係針對作為邏輯位址而使用LBA的情況來作例示。
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,係亦可包含有主機介面(主機I/F) 11、CPU12、NAND介面(NAND I/F)13、DRAM介面(DRAM I/F)14以及計時器16。此些之主機I/F11、CPU12、NAND I/F13、DRAM I/F14以及計時器16,係亦可經由匯流排10而被作連接。
主機I/F11,係作為從主機2而收訊各種之指令、例如收訊I/O指令、各種控制指令的電路而起作用。在I/O指令中,係可包含有寫入指令、讀取指令以及驗證(verify)指令。在控制指令中,係可包含有解映射(UNMAP)指令(TRIM指令)、格式化(format)指令、設定指令以及確認指令。格式化指令,係為用以將記憶體系統3全體解映射的指令。設定指令,係為用以對於記憶體系統3而設定各種的參數之指令。確認指令,係為用以對於被設定於記憶體系統3處之各種的參數作確認之指令。
NANDI/F13,係將控制器4與NAND型快閃記憶體5作電性連接。NANDI/F13,係對應於Toggle DDR、Open NAND Flash Interface(ONFI)等之介面規格。
NANDI/F13,係作為以對於NAND型快閃記憶體5進行控制的方式而被構成之NAND控制電路來起作用。NANDI/F13,係亦可經由複數之通道(Ch),來分別被與NAND型快閃記憶體5內之複數之記憶體晶片作連接。藉由使複數之記憶體晶片被平行地驅動,係能夠將對於NAND型快閃記憶體5全體之存取作廣頻寬化。
DRAMI/F14,係作為以對於DRAM6之存取進行控制的方式而被構成之DRAM控制電路而起作用。DRAM6之記憶區域,係被分配至用以儲存FW21、邏輯物理位址轉換表22、NS回應管理表23、指令回應管理表24、區域描述符25以及寫入管理表26之區域和被作為讀取/寫入緩衝而利用的緩衝區域處。
計時器16,係對於時間作計測。計時器16,係能夠將所計測到的時間提供給控制器4內之各部。
CPU12,係身為以對於主機I/F11、NAND I/F13、DRAM I/F14以及計時器16作控制的方式而被構成之處理器。CPU12,係藉由實行從NAND型快閃記憶體5而被載入至DRAM6中之FW21,而進行各種之處理。FW21,係身為包含有用以使CPU12實行各種之處理的命令群之控制程式。CPU12,係能夠實行用以對於從主機2而來之各種指令進行處理的指令處理等。CPU12之動作,係被藉由CPU12所實行的FW21所控制。
控制器4內之各部之功能,係可藉由控制器4內之專用硬體來實現之,亦可藉由使CPU12實行FW21一事來實現之。
CPU12,例如,係作為指令受理部121、強制回應管理部122、寫入控制部123以及區域管理部124而起作用。CPU12,例如係藉由實行FW21,而作為此些之各部來起作用。關於由指令受理部121、強制回應管理部122、寫入控制部123以及區域管理部124所致之具體性之動作,係參照圖11~圖13而於後再述。
於此,針對名稱空間以及區域進行說明。為了對於記憶體系統3進行存取而被主機2所使用的邏輯位址空間(LBA空間)之全體,係能夠被分割成複數之部分空間。各部分空間,係會有被稱作名稱空間的情形。
控制器4,係將被儲存於NAND型快閃記憶體5中之資料,例如針對各區域之每一者而分別作管理。控制器4,作為將被儲存於NAND型快閃記憶體5中之資料以區域單位來進行管理之方法,例如係使用有藉由NVMe規格所被規定之Zoned Namespace(分區名稱空間,ZNS)。
圖2,係對於ZNS之構成例作展示。在ZNS中,1個的名稱空間之LBA空間之全體,係可被分割為複數之區域。複數之區域之各者,係可包含有複數之LBA。將1個的名稱空間作分割所得到的複數之區域之各者,係對應於藉由相互連續並且並不相互重複的複數之LBA所構成的LBA範圍。各區域(zone),係作為用以對於NAND型快閃記憶體5進行存取之單位而被使用。
在圖2所示之例中,名稱空間係對應於z個的LBA0~LBA(z-1),而具備有x個的區域0~區域(x-1)。LBA0,係身為區域0之最小的LBA。又,LBA(z-1),係身為區域(x-1)之最大的LBA。
1個的區域內之寫入,係序列性地被實行。亦即是,1個的區域內之寫入,係以會使LBA相連續的方式而被實行。1個的區域,係可對應於NAND型快閃記憶體5內之任意之物體單位。例如,1個的區域,係對應於NAND型快閃記憶體5內之1個的區塊(block)。於此情況,1個的區塊內之資料,係使用在被分配至1個的區域處之LBA範圍中所包含之相連續之LBA而被作存取。
各區域所能夠成為之狀態,係包含有開放(open)狀態、全滿(full)狀態、關閉(close)狀態。身為開放狀態之區域,係為能夠進行資料之寫入的區域。身為全滿狀態之區域,係為在區域之全體處均被寫入有資料的區域。身為關閉狀態之區域,係為使資料之寫入被作了中斷的區域。
另外,對應於某一區域之區域描述符25,例如,係包含有該區域之開頭之LBA(亦即是最小之LBA)、能夠寫入至該區域中之資料量、該區域之狀態等之資訊。
控制器4,係構成為進行由延遲寫入完備所致之寫入,並且當存在有受理後之經過時間為超過了臨限值之寫入指令的情況時,強制性地進行與該寫入指令相對應之處理並對於主機2作回應。
以下,係將「當存在有受理後之經過時間為超過了臨限值之寫入指令的情況時,強制性地開始與該寫入指令相對應之處理」一事,亦稱作「發動強制回應」。
寫入指令,係為要求將被與該寫入指令相互附加有關連之使用者資料對於NAND型快閃記憶體5作寫入的指令。與寫入指令相對應之處理,係身為將被與該寫入指令相互附加有關連之使用者資料寫入至NAND型快閃記憶體5中之處理。
延遲寫入完備(Delayed Write Completion),係身為「並不立即地實行與所受理了的1個的寫入指令相對應之寫入,而是例如在藉由複數之寫入指令而對於1個的區域要求有寫入之使用者資料之總量到達了寫入單位之後,再進行與該些之複數之寫入指令相對應之寫入,並對於主機2作回應」的機制。寫入單位,係相當於能夠藉由一次的資料寫入動作而寫入至NAND型快閃記憶體5中之資料量。寫入單位,例如,係相當於1個頁面之量的資料量。當在1個的記憶體胞中被儲存有複數位元之資料的情況時,寫入單位,係可相當於複數頁面之量的資料量。
對於NAND型快閃記憶體5,係可藉由四級胞單元(QLC)方式而使資料被作寫入。在QLC方式中,於每一記憶體胞中係被儲存有4位元之資料。在QLC方式中,係會有被進行有複數階段之寫入動作的情況。複數階段之寫入動作,例如係身為foggy-fine寫入動作。
foggy-fine寫入動作,係身為使被寫入至了在某一區塊中所包含之複數之頁面內之1個的頁面中之資料的讀出,在針對接續於此1個的頁面之後的1以上之頁面之資料之寫入之後成為能夠進行之寫入動作。foggy-fine寫入動作,係包含有對於被與單一之字元線作了連接的記憶體胞群所進行之複數次之寫入動作。第1次的寫入動作,係身為將各記憶體胞之臨限值電壓作粗略設定的寫入動作,而被稱作foggy寫入動作。第2次的寫入動作,係身為對於各記憶體胞之臨限值電壓進行調整的寫入動作,而被稱作fine寫入動作。foggy-fine寫入動作,係能夠將起因於程式化擾動(programming disturb)所導致的影響降低。
在藉由foggy-fine寫入動作來將資料寫入至NAND型快閃記憶體5中的情況時,寫入單位,係相當於4個頁面之量之資料量。
參考圖3以及圖4,針對在記憶體系統3處之強制回應之發動作具體性之說明。
圖3,係對於在記憶體系統3處而藉由使強制回應發動來實行與寫入指令相對應之處理的情況時之時間之例作展示。以下,係對於將強制回應之發動針對各名稱空間之每一者而分別作管理之情況作例示。另外,強制回應之發動,係並不被限定於名稱空間之單位,而可藉由各種的記憶區域之單位來作管理。
控制器4,係受理藉由主機2所發行的寫入指令。控制器4,在從受理寫入指令起而經過了時間A的情況時,係強制性地開始與該寫入指令相對應之處理(亦即是,發動強制回應)。藉由此,控制器4,係能夠在從受理寫入指令起直到經過了時間B為止的期間中,而完成針對寫入指令之回應。
圖4,係對於在記憶體系統3處而被使用於強制回應之發動之控制中的參數之例作展示。在被使用於強制回應之發動之控制中的參數之中,例如,係包含有
forced_completion_time(強制完成時間)和process_time(處理時間)。
forced_completion_time,係身為用以決定「強制回應之發動之有無」和「當發動強制回應的情況時,從控制器4受理寫入指令起直到針對該寫入指令之回應完成為止的時間之上限(相當於圖3之時間B)」之參數。將從受理寫入指令起直到針對該寫入指令之回應完成為止的時間之上限,亦稱作強制回應完成時間(forced response completion time)。
在記憶體系統3中,是否要在
forced_completion_time處設定有值一事,係為任意。forced_completion_time之值m,係代表由使用者所設定的強制回應完成時間。使用者,係藉由從主機2來發行強制回應設定指令,而設定forced_completion_time之值m。
寫入強制回應設定指令,係身為要求發動強制回應之時間的設定之指令。在寫入強制回應設定指令中,係被指定有對於名稱空間作特定之辨識資訊(名稱空間ID)、和forced_completion_time之值m。寫入強制回應設定指令,例如係藉由在NVMe規格中所規定的Set Features指令來實現。以下,係將寫入強制回應設定指令亦稱作設定指令。
例如,當forced_completion_time之值m係為0的情況時,控制器4係並不發動針對寫入指令之強制回應。另外,在並未被進行有與設定指定相對應之關連於強制回應之發動之設定的情況(亦即是預設狀態)時,控制器4亦並不發動針對寫入指令之強制回應。
又,當forced_completion_time之值m係為1以上的情況時,控制器4係使用forced_completion_time之值m,來決定強制回應完成時間。強制回應完成時間,係代表被主機2所期待的針對寫入指令之回應時間之上限。強制回應完成時間,例如係為m×100毫秒。亦即是,控制器4,係在從受理寫入指令起直到經過m×100毫秒為止的期間中,而完成針對該寫入指令之回應。控制器4,係將
forced_completion_time之值m,針對在所對應的名稱空間中所包含之複數之區域之各者而共通性地作管理。亦即是,對於在1個的名稱空間中所包含之複數之區域,係共通性地設定有1個的forced_completion_time之值m。
process_time,係身為「在發動強制回應的情況時,從控制器4受理寫入指令起直到將對應於該寫入指令之處理強制性地開始為止的時間(相當於圖3之時間A)」之參數。將從受理寫入指令起直到將對應於該寫入指令之處理強制性地開始為止的時間,亦稱作強制回應發動時間(forced response trigger time)。
在記憶體系統3中,是否要在process_time處設定有值一事,係為任意。又,process_time之值n,例如係可在記憶體系統3之出貨前預先被作設定。
當被設定有process_time之值n的情況時,控制器4,係因應於受理了設定指令一事,而使用
forced_completion_time之值m和process_time之值n,來決定強制回應發動時間。強制回應發動時間,例如,係為(m-n)×100毫秒。亦即是,控制器4,在從受理寫入指令起而經過了(m-n)×100毫秒的情況時,係強制性地開始與該寫入指令相對應之處理。
另外,n×100毫秒,例如,係對應於「從將對應於寫入指令之處理(寫入處理)強制性之開始起,直到所對應之使用者資料成為能夠從NAND型快閃記憶體5而讀出為止的時間(以下,係亦稱作處理時間(process time))」。故而,強制回應發動時間,係身為從「強制回應完成時間」而減去了「處理時間」後的時間。
寫入處理,係包含有「從控制器4而對於NAND型快閃記憶體5之使用者資料之傳輸處理」以及「在NAND型快閃記憶體5處之使用者資料的對於記憶體胞之程式化處理」。寫入處理,係在使用者資料成為能夠從NAND型快閃記憶體5讀出時而完成。
故而,在記憶體系統3中,係能夠基於由使用者所設定的forced_completion_time之值m,來對於針對所受理了的寫入指令之強制回應之發動作控制。更詳細而言,控制器4,係能夠使用forced_completion_time之值m與process_time之值n,來決定強制回應完成時間和強制回應發動時間。控制器4,在從主機2受理寫入指令起而經過了強制回應發動時間的情況時,係強制性地開始與該寫入指令相對應的使用者資料之對於NAND型快閃記憶體之寫入。藉由此,控制器4,係能夠在被主機2所期待的強制回應完成時間內,針對該寫入指令作回應。
接著,參考圖5~圖8,針對在記憶體系統3處所被使用之數個的表進行說明。
圖5,係對於邏輯物理位址轉換表22之其中一構成例作展示。邏輯物理位址轉換表222,係對於LBA之各者與NAND型快閃記憶體5之物理位址之各者之間的映射作管理。控制器4,係能夠使用邏輯物理位址轉換表22,來將LBA轉換為物理位址。又,控制器4,係能夠使用邏輯物理位址轉換表22,來將物理位址轉換為LBA。
在圖5所示之例中,於LBA“0”處係被映射有物理位址“X”,於LBA“1”處係被映射有物理位址“Y”,於LBA“2”處係被映射有物理位址“Z”。
圖6,係對於NS回應管理表23之其中一構成例作展示。NS回應管理表23,係可包含有分別與1個以上的名稱空間相對應之1個以上的登錄(entry)。各登錄,例如,係包含有名稱空間ID欄位(field)、和強制回應完成時間欄位、以及強制回應發動時間欄位。
在對應於某一名稱空間之登錄中,名稱空間ID欄位,係代表被賦予至該名稱空間處之辨識資訊(名稱空間ID)。控制器4,係能夠藉由1個的名稱空間ID,而特定出所對應之1個的名稱空間。
強制回應完成時間欄位,係代表「當所對應之名稱空間為包含有寫入指令之寫入目標的情況時,控制器4針對該寫入指令所進行回應的時間之上限(亦即是強制回應完成時間)」。所謂名稱空間為包含有寫入指令之寫入目標一事,係指藉由寫入指令而被作了指定的LBA乃是存在於該名稱空間之LBA空間內。控制器4,係構成為在從受理寫入指令起直到經過在強制回應完成時間欄位中所示之時間為止的期間中,對於主機2而送訊針對該寫入指令之回應。在強制回應完成時間欄位中,例如係以毫秒單位而設定時間。
強制回應發動時間欄位,係代表「當所對應之名稱空間為包含有寫入指令之寫入目標的情況時,控制器4開始對應於該寫入指令之處理的時間(亦即是強制回應發動時間)」。亦即是,控制器4,在從受理寫入指令起而經過了在強制回應發動時間欄位中所示之時間的情況時,係開始與該寫入指令相對應之處理。在強制回應發動時間欄位中,例如係以毫秒單位而設定時間。
在圖6所示之例中,於名稱空間ID“1”處,係被與強制回應完成時間“20000”和強制回應發動時間“15000”相互附加有關連。
在以下之關連於NS回應管理表23之說明中,係將在名稱空間ID欄位處所展示之值,亦單純稱作名稱空間ID。關於在NS回應管理表23之其他之各欄位中所展示之值、以及在其他之表之各欄位中所展示之值,亦為相同。
圖7,係對於指令回應管理表24之其中一構成例作展示。指令回應管理表24,係可包含有分別與1個以上的寫入指令相對應之1個以上的登錄(entry)。各登錄,例如,係包含有指令ID欄位、和直到發動為止的時間欄位。
在對應於某一寫入指令之登錄中,指令ID欄位,係代表被賦予至該指令處之辨識資訊。被賦予給寫入指令之辨識資訊,係亦被稱作指令ID。控制器4,係能夠藉由1個的指令ID,而特定出所對應之1個的寫入指令。
直到發動為止的時間欄位,係代表直到將與所對應之寫入指令相對應的處理強制性地開始為止的剩餘時間。具體而言,在直到發動為止的時間欄位中,例如,針對包含有該寫入指令之寫入目標的名稱空間所設定之強制回應發動時間,係作為初期值而被設定。控制器4,係例如因應於計時器16所計測到的時間之經過,來使在直到發動為止的時間欄位中所設定之時間作減少。之後,當被設定於直到發動為止的時間欄位中之時間成為了0的情況時,與該寫入指令相對應的處理係被強制性地開始。在直到發動為止的時間欄位中,例如係以毫秒單位而設定時間。
在圖7所示之例中,於名稱空間ID“11”處,係被與直到發動為止的時間“1200”相互附加有關連,在指令ID"12"處,係被與直到發動為止的時間“10000”相互附加有關連。
圖8,係對於寫入管理表26之其中一構成例作展示。寫入管理表26,係可包含有分別與1個以上的寫入指令相對應之1個以上的登錄(entry)。各登錄,例如,係包含有指令ID欄位、LBA欄位、資料長度欄位、資料緩衝資訊欄位以及區域欄位。
指令ID欄位,係代表所對應的寫入指令之指令ID。
LBA欄位,係代表藉由所對應的寫入指令而被作了指定的LBA。此LBA,係代表應因應於寫入指令而使使用者資料被作寫入的LBA範圍之開頭之LBA。
資料長度欄位,係代表藉由所對應的寫入指令而被作了指定的資料長度。此資料長度,係代表應因應於寫入指令而被作寫入的使用者資料之長度。故而,使用藉由寫入指令而被作了指定的LBA與資料長度,係能夠特定出應因應於該寫入指令而使使用者資料被作寫入的LBA範圍。
資料緩衝資訊欄位,係代表藉由所對應的寫入指令而被作了指定的資料緩衝資訊。此資料緩衝資訊,係代表在主機2處,應因應於寫入指令而被作寫入的使用者資料所被作儲存之場所。亦即是,控制器4,係從藉由資料緩衝資訊所展示的主機2內之儲存場所,而將使用者資料傳輸至記憶體系統3處。
區域欄位,係代表包含有藉由所對應的寫入指令而被作了指定的LBA之區域。區域,例如,係藉由被分配至該區域處的LBA範圍之開頭之LBA(亦即是最小之LBA)而被表現。使用在區域欄位處所示之區域,寫入管理表26,係對於關連於寫入指令之資訊而針對每一區域分別作管理。另外,控制器4,係亦可替代在各登錄中設置區域欄位,而使用分別針對各區域的複數之寫入管理表26。
(比較例之記憶體系統之動作)
於此,使用2個的比較例之記憶體系統,針對與寫入指令相對應之動作例作說明。
圖9,係為對於在第1比較例的記憶體系統3A中之與寫入指令相對應之動作例作展示之區塊圖。第1比較例之記憶體系統3A,例如,係具備有與本實施形態之記憶體系統3相同之系統構成。
記憶體系統3A,係構成為在每次受理藉由主機2A所發行之1個的寫入指令時,便進行與寫入指令相對應之處理,並對於主機2A回送回應。記憶體系統3A之CPU12A,係作為指令受理部121A以及寫入控制部123A而起作用。
主機2A,例如,係具備有提交佇列(SQ) 401A、完成佇列(CQ)402A以及資料緩衝403A。
提交佇列401A,係包含有主機2A將對於記憶體系統3A所發行的指令分別作寫入的複數之槽(slot)。主機2A所應寫入指令之提交佇列401A內之位置(亦即是槽),係藉由SQ Tail(標尾)指標而被作展示。記憶體系統3A所應提取指令之提交佇列401A內之位置,係藉由SQ Head(標頭)指標而被作展示。
完成佇列402A,係包含有記憶體系統3A將針對指令之回應分別作寫入的複數之槽。記憶體系統3A所應寫入回應之完成佇列402A內之位置,係藉由CQ Tail指標而被作展示。主機2A所應提取回應之完成佇列402A內之位置,係藉由CQ Head指標而被作展示。
資料緩衝403A,係身為用以將應被寫入至記憶體系統3A之NAND型快閃記憶體5A中的使用者資料暫時性地作記憶之記憶區域。
以下,針對記憶體系統3A以及主機2A之具體性的動作例作說明。於此,為了使說明成為易於理解,係針對被寫入至提交佇列401A中之指令僅有寫入指令的情況來作例示。
首先,主機2A,係將應被寫入至記憶體系統3A之NAND型快閃記憶體5A中的使用者資料,儲存於資料緩衝403A中。之後,主機2A,係將寫入指令,寫入至提交佇列401A內之藉由SQ Tail指標而被作展示之位置處(亦即是發行寫入指令)。此寫入指令,係為要求被儲存於資料緩衝403A中之使用者資料之寫入的寫入指令。
接著,主機2A,係在SQ Tail指標處加算上「1」。另外,當在SQ Tail指標處而加算上「1」後之值到達了提交佇列401A之槽數(亦即是佇列容量)的情況時,主機2A係在SQ Tail指標處設定「0」。之後,主機2A,係將更新後的SQ Tail指標之值,寫入至記憶體系統3A之SQ Tail doorbell暫存器中。
記憶體系統3A之指令受理部121A,係從提交佇列401A內之SQ Head指標所示之位置,而提取寫入指令(圖9中之(1))。當在SQ Head指標與SQ Tail指標之間存在有差的情況時,指令受理部121A係能夠從提交佇列401A而提取寫入指令。指令受理部121A,係在SQ Head指標處加算上「1」。另外,當在SQ Head指標處加算上「1」後之值為到達了提交佇列401A之槽數的情況時,指令受理部121A係在SQ Head指標處設定「0」。指令受理部121A,係將所被提取了的寫入指令送出至寫入控制部123A處(圖9中之(2))。
寫入控制部123A,係因應於藉由指令受理部121A而被作了送出的寫入指令,而將應被寫入至NAND型快閃記憶體5A中之使用者資料,從資料緩衝403A來傳輸至DRAM6A處。寫入控制部123A,係將所被作了傳輸的使用者資料,寫入至NAND型快閃記憶體5A中(亦即是進行程式化)(圖9中之(3))。之後,寫入控制部123A,在被作了寫入的使用者資料成為了能夠作讀出的情況時,係將與所對應之寫入指令相應的處理之完成,對於指令受理部121A作通知(圖9中之(4))。
指令受理部121A,係因應於由寫入控制部123A所致之通知,而將所對應的寫入指令之完成通知,寫入至完成佇列402A內之CQ Tail指標所示之位置處,並發行插斷(Interrupt)(圖9中之(5))。指令受理部121A,係藉由發行插斷,而將「應被處理之新的完成通知係存在於完成佇列402A中」一事,對於主機2A作通知。又,指令受理部121A,係在CQ Tail指標處加算上「1」。另外,當在CQ Tail指標處加算上「1」後之值為到達了完成佇列402A之槽數的情況時,指令受理部121A係在CQ Tail指標處設定「0」。
主機2A,係因應於由指令受理部121A所發行之插斷,而從完成佇列402A內之CQ Head指標所示之位置來提取完成通知。主機2A,係在CQ Head指標處加算上「1」。另外,當在CQ Head指標處加算上「1」後之值為到達了完成佇列402A之槽數的情況時,主機2A係在CQ Head指標處設定「0」。主機2A,係將更新後的CQ Head指標,寫入至記憶體系統3A之CQ Head doorbell暫存器中。主機2A,係將從記憶體系統3A所收訊了的插斷作清除(clear)。之後,主機2A,係基於所被提取了的完成通知,而將寫入為完成了的使用者資料所被作儲存之資料緩衝403A內之區域釋放。
藉由以上之動作,第1比較例之記憶體系統3A,係在每次從主機2A而受理1個的寫入指令時,便進行與寫入指令相對應之處理,並對於主機2A回送回應(完成通知)。藉由此,第1比較例之記憶體系統3A,係能夠在被主機2A所期待的時間內,針對寫入指令作回應。
圖10,係為對於在第2比較例的記憶體系統3B中之與寫入指令相對應之動作例作展示之區塊圖。第2比較例之記憶體系統3B,例如,係具備有與本實施形態之記憶體系統3相同之系統構成。
記憶體系統3B,係構成為「在藉由複數之寫入指令而對於1個的區域要求有寫入之使用者資料之總量到達了寫入單位之後,將寫入單位之使用者資料寫入至NAND型快閃記憶體5B中,並對於主機2B而回送針對複數之寫入指令之各者的回應」。記憶體系統3B之CPU12B,係作為指令受理部121B以及寫入控制部123B而起作用。
主機2B之構成以及動作,係與參照圖9而於前所述之第1比較例中之主機2A相同。另外,主機2B,在發行了1個的寫入指令之後,係能夠於得到針對該寫入指令之回應之前,而發行後續之寫入指令。此係因為,若是主機2B係被構成為「等待針對1個的寫入指令之回應,再發行下一個的寫入指令」,則在與在藉由複數之寫入指令而被要求有寫入之使用者資料之總量到達了寫入單位之後才進行回應的記憶體系統3B之間,係會有發生死鎖(dead lock)的可能性之故。
以下,針對記憶體系統3B之動作,主要針對與第1比較例之記憶體系統3A相異之處作說明。
記憶體系統3B之指令受理部121B,係從提交佇列401B內之SQ Head指標所示之位置,而提取寫入指令(圖10中之(1))。指令受理部121B,係將所被提取了的寫入指令送出至寫入控制部123B處(圖10中之(2))。
寫入控制部123B,係根據藉由指令受理部121B而被作了送出的寫入指令,而取得藉由寫入指令所被作了指定的指令ID、LBA、資料長度以及資料緩衝資訊。寫入控制部123B,係特定出包含有所取得了的LBA之區域。寫入控制部123B,係使用所取得的指令ID、LBA、資料長度以及資料緩衝資訊,和所特定出之區域,來對於寫入管理表26B作更新(圖10中之(3))。寫入控制部123B,係使用寫入管理表26B,來判定在主機2B之資料緩衝403B中是否被儲存有針對1個的區域之寫入單位之使用者資料。
當在主機2B之資料緩衝403B中並未被儲存有針對1個的區域之寫入單位之使用者資料的情況時,寫入控制部123B,係並不進行對於NAND型快閃記憶體5B的使用者資料之寫入。於「在主機2B之資料緩衝403B中並未被儲存有針對1個的區域之寫入單位之使用者資料」的期間中,指令受理部121B,係能夠反覆進行從提交佇列401B而來的寫入指令之提取。
當在資料緩衝403B中係被儲存有針對1個的區域之寫入單位之使用者資料的情況時,寫入控制部123B,係將寫入單位之使用者資料從資料緩衝403B而傳輸至NAND型快閃記憶體5B處,並將被作了傳輸的寫入單位之使用者資料寫入(程式化)至NAND型快閃記憶體5B中(圖10中之(4))。另外,被作傳輸之寫入單位之使用者資料,係亦可被緩衝至DRAM6B中。之後,寫入控制部123B,當存在有「所對應的使用者資料成為了能夠從NAND型快閃記憶體5B而讀出」之寫入指令的情況時,係將對應於該寫入指令之處理的完成,對於指令受理部121B作通知(圖10中之(5))。寫入控制部123B,係將分別對應於「與寫入單位之使用者資料相對應的複數之寫入指令之各者」之處理之完成,對於指令受理部121B作通知。
指令受理部121B,係因應於由寫入控制部123B所致之通知,而將所對應的寫入指令之完成通知,寫入至完成佇列402B內之CQ Tail指標所示之位置處,並發行插斷(Interrupt)(圖10中之(6))。發行了插斷後的由指令受理部121B以及主機2B所致之動作,係與由第1比較例之指令受理部121A以及主機2A所致之動作相同。
藉由以上之動作,第2比較例之記憶體系統3B,係在從主機2B藉由複數之寫入指令而對於1個的區域要求有寫入之使用者資料之總量到達了寫入單位之後,將寫入單位之使用者資料寫入至NAND型快閃記憶體5B(更詳細而言,對應於該區域之NAND型快閃記憶體5B之記憶區域)中。之後,記憶體系統3B,係對於主機2B而回送針對複數之寫入指令之各者的回應。
因應於1個的寫入指令而應被作寫入的使用者資料之容量,例如,係較針對NAND型快閃記憶體5B之寫入單位而更小。記憶體系統3B,當在資料緩衝403B中被儲存有針對1個的區域之寫入單位之使用者資料的情況時,係將該寫入單位之使用者資料寫入至區域中。藉由此,記憶體系統3B,係能夠對於NAND型快閃記憶體5B之記憶區域有效率地作利用。
記憶體系統3B之動作,係相當於延遲寫入完備。在延遲寫入完備中,與各個的寫入指令相對應之寫入以及回應,係可能會一直延遲至直到受理與寫入單位之使用者資料相對應之複數之寫入指令為止。例如,當在主機2B發行了「要求進行未滿寫入單位之使用者資料之寫入」的第1寫入指令之後,並不發行後續之寫入指令的情況時,在資料緩衝403B中係並不會被儲存有寫入單位之使用者資料。起因於此,與第1寫入指令相對應的資料寫入係並不會被開始,而會有導致對於主機2B之回應有所延遲的可能性。
起因於記憶體系統3B並不因應於從主機2B而受理了1個的寫入指令一事來立即性地進行與該寫入指令相對應之寫入以及回應一事,主機2B係會有無法在所期待的時間內而得到針對寫入指令之回應的可能性。於此情況,寫入指令係會有停頓(Stall)的可能性,並可能會發生成為無法發揮從主機2B而對於記憶體系統3B之使用者資料之寫入之功能的問題。
然而,因應於受理了1個的寫入指令一事來立即性地進行與該寫入指令相對應之寫入以及回應一事,係與延遲寫入完備相違背。
因此,本實施形態之記憶體系統3,係構成為進行由延遲寫入完備所致之寫入,並且在被主機2所期待的時間內針對寫入指令作回應。具體而言,記憶體系統3之控制器4,當存在有「從受理後起之經過時間為到達了強制回應發動時間」之寫入指令的情況時,係將對應於該寫入指令之使用者資料,並非為寫入至與包含有藉由該寫入指令所被作了指定的LBA之區域相對應的NAND型快閃記憶體5之記憶區域中,而是寫入至被設置在NAND型快閃記憶體5處之共有寫入緩衝中。之後,控制器4,係使包含有藉由寫入指令而被作了指定的LBA之區域,變遷為關閉(close)狀態。強制回應發動時間,係設定為能夠在被主機2所期待的時間(強制回應完成時間)內而完成與寫入指令相對應之處理。因此,控制器4,係能夠在被主機2所期待的時間內,而針對寫入指令作回應。
又,當在所對應的寫入指令之受理後之經過時間到達強制回應發動時間之前,被儲存於資料緩衝403B中之應被寫入至1個的區域中之使用者資料之總量便到達了寫入單位的情況時,控制器4,係將該寫入單位之使用者資料寫入至區域中。亦即是,控制器4,係進行由延遲寫入完備所致之寫入。
故而,控制器4,係能夠針對寫入指令而在被主機2所期待的時間內進行回應,並且對於NAND型快閃記憶體5之記憶區域有效率地作利用。藉由此,係能夠提供一種由「延遲寫入完備」和「如同QLC快閃記憶體一般之需要進行複數階段之寫入動作之快閃記憶體」之組合所致的低成本之記憶體系統3。進而,係亦能夠維持與既存的軟體堆疊(Software stack)之間之互換性。
參考圖11~13,針對本實施形態之記憶體系統3的具體性之動作例作說明。
圖11,係為對於在記憶體系統3中之與寫入強制回應設定指令(設定指令)相對應之動作例作展示之區塊圖。
主機2,係對於記憶體系統3送訊(發行)設定指令(圖11中之(1))。在設定指令中,例如,係被指定有名稱空間ID、和forced_completion_time之值m。
記憶體系統3之指令受理部121,係收訊藉由主機2所送訊的設定指令。之後,指令受理部121,係將設定指令對於強制回應管理部122而送出(圖11中之(2))。
強制回應管理部122,係因應於設定指令,而將NS回應管理表23作更新(圖11中之(3))。強制回應管理部122,係使用藉由設定指令所被指定了的forced_completion_time之值m,來決定強制回應完成時間和強制回應發動時間。之後,強制回應管理部122,係產生代表被與藉由設定指令所被指定了的名稱空間ID相互附加有關連之強制回應完成時間和強制回應發動時間的登錄(entry),並追加至NS回應管理表23中。
更具體而言,首先,強制回應管理部122,係取得藉由設定指令而被指定了的名稱空間ID和
forced_completion_time之值m。於此,係將藉由所取得了的名稱空間ID而特定出之名稱空間,稱作對象名稱空間。
當forced_completion_time之值m係為1以上的情況時,強制回應管理部122,係針對對象名稱空間乃身為寫入目標之寫入指令,而以會在基於
forced_completion_time之值m所得到的強制回應完成時間內而進行回應的方式,來將NS回應管理表23作更新。更詳細而言,強制回應管理部122,係作為強制回應完成時間,而例如算出「m×100毫秒」。
強制回應管理部122,係取得process_time之值n。process_time之值n,例如係在記憶體系統3之出貨前而被有所決定。process_time之值n,例如係被儲存在NAND型快閃記憶體5中。之後,強制回應管理部122,係作為強制回應發動時間,而例如算出「(m-n)×100毫秒」。另外,於此,雖係針對m以及n為藉由以100毫秒作為單位之時間而被作指定之例來作展示,但是,m以及n,只要是身為能夠算出強制回應完成時間與強制回應發動時間之值,則不論是以何種單位之值來作表現均可。
接著,強制回應管理部122,係判定所算出的強制回應完成時間以及強制回應發動時間是否為有效之值。例如,當所算出之強制回應完成時間係為較針對NAND型快閃記憶體5之程式化時間tProg而更短的情況時,強制回應管理部122,係判斷強制回應完成時間乃身為無效之值。例如,當所算出之強制回應發動時間係為0以下之值的情況時(亦即是,當m係為n以下的情況時),強制回應管理部122,係判斷強制回應發動時間乃身為無效之值。又,例如,當所算出之強制回應完成時間係超過依據NVMe規格所制定之Finish Recommended Limit(建議完成極限,FRL)的情況時,強制回應管理部122,係判斷強制回應完成時間乃身為無效之值。FRL,係身為記憶體系統3之內部參數。FRL,係代表變遷至了開放(open)狀態的區域之直到成為全滿(full)狀態為止的極限之時間。
當所算出的強制回應完成時間以及強制回應發動時間之至少其中一者係身為無效之值的情況時,強制回應管理部122,係對於主機2而通知設定指令之「錯誤(error)」。
當所算出的強制回應完成時間以及強制回應發動時間係為有效之值的情況時,強制回應管理部122,係將代表所取得的名稱空間ID和所算出的強制回應完成時間以及強制回應發動時間之登錄(entry),追加至NS回應管理表23中。另外,當在NS回應管理表23中已存在有對應於所取得了的名稱空間ID之登錄的情況時,係使用所算出的強制回應完成時間以及強制回應發動時間來對於該登錄作更新。
又,當藉由設定指令所被指定了的
forced_completion_time之值m係為0的情況時,強制回應管理部122,係以不會發動強制回應的方式,來將NS回應管理表23作更新。更詳細而言,當在NS回應管理表23中係存在有與「forced_completion_time之值m係為0,並且為與藉由設定指令所被指定了的名稱空間ID相對應」之登錄的情況時,強制回應管理部122,係將該登錄從NS回應管理表23而刪除。又,當在NS回應管理表23中係並不存在有與「forced_completion_time之值m係為0,並且為與藉由設定指令所被指定了的名稱空間ID相對應」之登錄的情況時,強制回應管理部122,係並不對於NS回應管理表23而追加與該名稱空間ID相對應之登錄。
藉由以上之構成,記憶體系統3,係能夠因應於從主機2所收訊了的設定指令,來對於各名稱空間之每一者而分別控制針對寫入指令之強制回應之發動。
圖12,係為對於在記憶體系統3中之與寫入強制回應確認指令相對應之動作例作展示之區塊圖。寫入強制回應確認指令,係身為要求提供關連於「直到針對寫入指令而強制回應被發動為止的時間」之資訊之指令。寫入強制回應確認指令,例如係藉由在NVMe規格中所規定的Get Features指令來實現。以下,係將寫入強制回應確認指令亦稱作確認指令。
主機2,係對於記憶體系統3送訊確認指令(圖12中之(1))。在確認指令中,例如,係被指定有名稱空間ID。
記憶體系統3之指令受理部121,係收訊藉由主機2所送訊的確認指令。之後,指令受理部121,係將確認指令對於強制回應管理部122而送出(圖12中之(2))。
強制回應管理部122,係因應於確認指令,而從NS回應管理表23取得關連於強制回應所被作發動的時間之資訊(圖12中之(3))。更具體而言,首先,強制回應管理部122,係取得藉由確認指令而被指定了的名稱空間ID。強制回應管理部122,係特定出NS回應管理表23內之包含有所被取得了的名稱空間ID之登錄。之後,強制回應管理部122,係從所特定出的登錄而取得強制回應完成時間與強制回應發動時間之至少其中一者。
強制回應管理部122,係使用所取得的強制回應完成時間與強制回應發動時間之至少其中一者,來產生關連於強制回應所被作發動的時間之資訊,並對於指令受理部121而送出(圖12中之(4))。此資訊,例如,係代表強制回應完成時間與強制回應發動時間之至少其中一者。或者是,此資訊,係亦可代表關連於強制回應完成時間與強制回應發動時間之至少其中一者之資訊(例如,
forced_completion_time之值m、process_time之值n)。
之後,指令受理部121,係將包含有關連於強制回應所被作發動的時間之資訊,對於主機2作送訊(圖12中之(5))。
藉由以上之構成,記憶體系統3,係能夠因應於從主機2所收訊了的確認指令,來對於主機2而提供與所被指定了的名稱空間相對應之關連於強制回應所被作發動的時間之資訊。
圖13,係為對於在記憶體系統3中之與寫入指令相對應之動作例作展示之區塊圖。
記憶體系統3之控制器4,係構成為進行由延遲寫入完備所致之寫入,並且當在寫入指令之受理後之經過時間到達了強制回應發動時間的情況時,強制性地開始所對應的使用者資料之對於NAND型快閃記憶體5之寫入。控制器4,在成為了能夠進行被作了寫入的使用者資料之讀出的情況時,係將代表「與所對應之寫入指令相應的處理之完成」之回應,對於主機2作送訊。
又,控制器4,係對於與至少1個的區域相對應之NAND型快閃記憶體5內之至少1個的記憶區域(稱為NAND區域51)和至少1個的共有寫入緩衝52作管理。NAND區域51,係身為將NAND型快閃記憶體5之記憶區域邏輯性地作了分割的記憶區域。共有寫入緩衝52,係身為將應被寫入至至少1個的NAND區域51中之使用者資料非揮發性地作記憶之記憶區域。
至少1個的NAND區域51之各者,例如,係被與至少1個的共有寫入緩衝52之其中一者相互附加有關連。又,1個的共有寫入緩衝52,係能夠被與1個以上的NAND區域51相互附加有關連。亦即是,1個的共有寫入緩衝52,係能夠被1個以上的NAND區域51所共有。代表NAND區域51與共有寫入緩衝52之間之對應的資訊,例如係被儲存在DRAM6中。
主機2之構成以及動作,係與在第1比較例中之主機2A以及第2比較例中之主機2B相同。
以下,針對記憶體系統3之動作,主要針對與第1比較例之記憶體系統3A以及第2比較例之記憶體系統3B相異之處作說明。
記憶體系統3之指令受理部121,係從提交佇列401內之SQ Head指標所示之位置,而提取寫入指令(圖13中之(1))。寫入指令,係被與應被寫入至至少1個的區域之其中一者中之使用者資料相互附加有關連。更詳細而言,在寫入指令中,例如,係被指定有指令ID、LBA、資料長度、資料緩衝資訊以及名稱空間ID。
指令受理部121,係將所被提取了的寫入指令送出至寫入控制部123處(圖13中之(2))。以下,係將被提取了的寫入指令,亦稱作第1對象寫入指令。
寫入控制部123,係取得藉由第1對象寫入指令所被作了指定的指令ID、LBA、資料長度以及資料緩衝資訊。寫入控制部123,係特定出包含有所取得了的LBA之區域。寫入控制部123,係使用所取得的指令ID、LBA、資料長度以及資料緩衝資訊,和所特定出之區域,來對於寫入管理表26作更新(圖13中之(3))。之後,寫入控制部123,係使用寫入管理表26,來判定在主機2之資料緩衝403中是否被儲存有針對1個的區域之寫入單位之使用者資料。
當在資料緩衝403中係被儲存有針對1個的區域之寫入單位之使用者資料的情況時,寫入控制部123,係將寫入單位之使用者資料從資料緩衝403而傳輸至NAND型快閃記憶體5處,並將被作了傳輸的寫入單位之使用者資料寫入(程式化)至NAND型快閃記憶體5內之NAND區域51(於此,係為NAND區域511)中(圖13中之(4))。另外,被作傳輸之寫入單位之使用者資料,係亦可被緩衝至DRAM6中。寫入單位之使用者資料,例如,係身為將因應於複數之寫入指令而分別應被寫入的複數之使用者資料作了總和之資料。複數之寫入指令,係包含有第1對象寫入指令。
之後,寫入控制部123,當存在有「所對應的使用者資料成為了能夠從NAND型快閃記憶體5B而讀出」之寫入指令的情況時,係將對應於該寫入指令之處理的完成,對於指令受理部121作通知(圖13中之(5))。寫入控制部123,係將分別對應於「與寫入單位之使用者資料相對應的複數之寫入指令之各者」之處理之完成,對於指令受理部121作通知。又,寫入控制部123,係從寫入管理表26,而將與複數之寫入指令之各者相對應的登錄刪除(圖13中之(6))。
指令受理部121,係在每次接收由寫入控制部123所致之通知時,將代表「與所對應之寫入指令相應的處理之完成」之回應,對於主機2作送訊。更具體而言,指令受理部121,係因應於由寫入控制部123所致之通知,而將所對應的寫入指令之完成通知,寫入至完成佇列402內之CQ Tail指標所示之位置處,並發行插斷(Interrupt)(圖13中之(7))。由寫入控制部123所致之通知,例如,係包含有處理為完成了的寫入指令之指令ID。發行了插斷後的由指令受理部121以及主機2所致之動作,係與由第1比較例之指令受理部121A以及主機2A所致之動作相同。
另外,當在使用者資料之寫入(程式化)中而發生有錯誤的情況時,寫入控制部123以及指令受理部121,係對於主機2,而送訊代表「於與所對應的寫入指令相應之處理中而發生有錯誤」一事之回應。亦即是,指令受理部121,係將針對寫入指令之錯誤通知,寫入至完成佇列402內之CQ Tail指標所示之位置處。
又,當在主機2之資料緩衝403中並未被儲存有針對1個的區域之寫入單位之使用者資料的情況時,寫入控制部123,係並不進行對於NAND型快閃記憶體5的使用者資料之寫入。又,寫入控制部123,係對於強制回應管理部122而下達對於第1對象寫入指令的管理之指示(圖13中之(8))。在此指示中,例如,係包含有藉由第1對象寫入指令所被指定了的指令ID和名稱空間ID。
強制回應管理部122,係因應於由寫入控制部123所致之指示,而在NS回應管理表23中,特定出與指示內的名稱空間ID相對應之登錄。強制回應管理部122,係從所特定出的登錄而取得強制回應發動時間(圖13中之(9))。亦即是,強制回應管理部122,係從NS回應管理表23取得關連於應使對應於第1對象寫入指令之處理被強制性地開始之強制回應發動時間。
接著,強制回應管理部122,係將包含有由寫入控制部123所致之指示內的指令ID和所取得的強制回應發動時間之登錄,追加至指令回應管理表24中(圖13中之(10))。強制回應發動時間,係作為「直到與第1對象寫入指令相對應的處理被強制性地開始為止的剩餘時間(亦即是,直到發動為止的時間)」之初期值而被作使用。
強制回應管理部122,係例如因應於計時器16所計測到的時間之經過,來使在指令回應管理表24內之各登錄中所包含之「直到發動為止的時間」作減少。之後,當直到發動為止的時間成為了0的情況時(亦即是,當從受理所對應之寫入指令起而經過了強制回應發動時間的情況時),強制回應管理部122,係對於寫入控制部123而下達將與所對應的寫入指令相應之處理強制性地開始的指示(圖13中之(11))。在此指示中,例如,係包含有「直到發動為止的時間」成為了0的登錄內之指令ID。以下,係將藉由「直到發動為止的時間」成為了0的登錄所展示之寫入指令(亦即是,應使所對應之處理被強制性地開始之寫入指令),稱作第2對象寫入指令。
寫入控制部123,係因應於由強制回應管理部122所致之指示,而從寫入管理表26取得包含有指示內之指令ID之登錄(圖13中之(12))。以下,將包含有指示內之指令ID的登錄,稱作第1登錄。又,針對「與在第1登錄中所展示之區域相對應的NAND區域51,係身為NAND區域512」的情況作考慮。寫入控制部123,係使用第1登錄,而將應因應於第2對象寫入指令而被作寫入的使用者資料,從資料緩衝403來傳輸至NAND型快閃記憶體5處(圖13中之(13))。另外,被作傳輸之使用者資料,係亦可被緩衝至DRAM6中。
寫入控制部123,係將所被作了傳輸的使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5之共有寫入緩衝52(於此,係為共有寫入緩衝521)中(圖13中之(13))。寫入控制部123,係能夠藉由使用在第1登錄中所包含之LBA、資料長度以及資料緩衝資訊,來特定出應因應於第2對象寫入指令而被作寫入的使用者資料。使用者資料所被作寫入的共有寫入緩衝521,係被與此使用者資料原本所應被寫入之NAND區域51(於此,係為NAND區域512)相互附加有關連。又,所謂將使用者資料附加有填補地而作寫入一事,係指將「藉由使用者資料和填補用之資料所構成的寫入單位之資料」作寫入。
在對於共有寫入緩衝52之資料之寫入中,係亦可被使用有QLC方式。在對於共有寫入緩衝52之資料之寫入中,係亦可被使用有在1個的記憶體胞中被儲存有1位元之資料的單級胞單元(Single-Level Cell,SLC)方式。
另外,當在寫入管理表26中存在有「包含與在第1登錄中所展示之區域相同之區域」之1個以上之登錄的情況時,寫入控制部123,係亦可使用第1登錄和該些之1個以上之登錄,來將應因應於所對應之複數之寫入指令而分別被作寫入的複數之使用者資料,從資料緩衝403來傳輸至NAND型快閃記憶體5處,並將被作了傳輸的複數之使用者資料附加有填補地來寫入至共有寫入緩衝521中(圖13中之(13))。
於此,針對當與NAND區域512相異之其他的NAND區域511亦被與共有寫入緩衝521相互附加有關連的情況時之由寫入控制部123所致之動作進行說明。於此情況,寫入控制部123,係更進而使用寫入管理表26內之分別包含有與該其他之NAND區域511相對應的區域之1個以上的登錄。寫入控制部123,係亦可特定出應因應於所對應之1個以上的寫入指令而分別被作寫入之1個以上的使用者資料。之後,寫入控制部123,係亦可將所特定出之1個以上的使用者資料,包含在成為前述之從資料緩衝403而被傳輸並對於共有寫入緩衝521而作寫入的對象之使用者資料中。此時,係亦可對於分別與藉由指令回應管理表24而被作管理之1個以上的寫入指令相對應之「直到發動為止的時間」有所考慮。例如,係亦可僅將對應於「直到發動為止的時間為未滿臨限值」之寫入指令的使用者資料,包含在成為前述之從資料緩衝403而被傳輸並對於共有寫入緩衝521而作寫入的對象之使用者資料中。
例如,針對「在從受理第2對象寫入指令起而經過強制回應發動時間之前,指令受理部121從提交佇列401而提取了以與NAND區域512相異之其他的NAND區域511相對應的區域作為對象之寫入指令」的情況來作說明。2個的NAND區域511、512,係均為被與共有寫入緩衝521相互附加有關連。以下,係將被提取了的「以與NAND區域511相對應之區域作為對象的寫入指令」,稱作第3對象寫入指令。第3對象寫入指令,係使用寫入管理表26以及指令回應管理表24而被作管理。
寫入控制部123,在從受理第2對象寫入指令起而經過了強制回應發動時間的情況時,係將應因應於第2對象寫入指令而被作寫入的使用者資料和應因應於第3對象寫入指令而被作寫入的使用者資料,從資料緩衝403來傳輸至NAND型快閃記憶體5處。之後,寫入控制部123,係將包含有所被作了傳輸的使用者資料之資料,寫入至共有寫入緩衝521中。更詳細而言,當被作了傳輸的使用者資料之容量係相當於寫入單位的情況時,寫入控制部123,係將被作了傳輸的使用者資料,寫入至共有寫入緩衝521中。又,當被作了傳輸的使用者資料之容量係為未滿寫入單位的情況時,寫入控制部123,係將被作了傳輸的使用者資料,附加有填補地而寫入至共有寫入緩衝521中。
如此這般,當「與經過了強制回應發動時間的第2對象寫入指令所作為對象的區域相對應之NAND區域51(於此,係為NAND區域512)」和「與第3對象寫入指令所作為對象的區域相對應之其他之NAND區域51(於此,係為NAND區域511)」係共通地被與共有寫入緩衝521相互附加有關連的情況時,係能夠使此與第3對象寫入指令相對應之使用者資料亦被包含在成為前述之從資料緩衝403而被傳輸並對於共有寫入緩衝521而作寫入的對象之使用者資料中。
接著,寫入控制部123,當存在有「所對應的使用者資料成為了能夠從NAND型快閃記憶體5而讀出」之寫入指令的情況時,係將對應於該寫入指令之處理的完成,對於指令受理部121以及強制回應管理部122作通知(圖13中之(14)),又,寫入控制部123,係將與1個以上的寫入指令分別相對應之登錄,從寫入管理表26而刪除(圖13中之(15))。被從寫入管理表26而刪除之1個以上的寫入指令,係包含有與第1登錄相對應之第2對象寫入指令。
指令受理部121,係在每次接收由寫入控制部123所致之通知時,將代表「與所對應之寫入指令相應的處理之完成」之回應,對於主機2作送訊。更具體而言,指令受理部121,係因應於由寫入控制部123所致之通知,而將所對應的寫入指令之完成通知,寫入至完成佇列402內之CQ Tail指標所示之位置處,並發行插斷(Interrupt)(圖13中之(16))。後續的由指令受理部121以及主機2所致之動作,係與由第1比較例之指令受理部121A以及主機2A所致之動作相同。
另外,當在使用者資料之寫入(程式化)中而發生有錯誤的情況時,寫入控制部123以及指令受理部121,係對於主機2,而送訊代表「於與所對應的寫入指令相應之處理中而發生有錯誤」一事之回應。亦即是,指令受理部121,係將針對寫入指令之錯誤通知,寫入至完成佇列402內之CQ Tail指標所示之位置處。
又,強制回應管理部122,係因應於由寫入控制部123所致之通知,而將與1個以上的寫入指令分別相互對應之1個以上的登錄,從指令回應管理表24而刪除(圖13中之(17))。由寫入控制部123所致之通知,例如,係可包含有代表「處理為完成了的1個以上的寫入指令之各者之指令ID」之資訊、和代表NAND區域51(於此,例如係為NAND區域512)之資訊。在通知中所包含之NAND區域51,係身為與1個以上的寫入指令相對應之使用者資料之原本應被作寫入的NAND區域51。強制回應管理部122,係對於區域管理部124,而下達將與在通知中所包含之NAND區域51相對應的區域之狀態從開放狀態而變遷為關閉狀態之指示(圖13中之(18))。
區域管理部124,係因應於由強制回應管理部122所致之指示,而使與NAND區域51相對應的區域之狀態從開放狀態而變遷為關閉狀態(圖13中之(19))。區域管理部124,例如,係以會展現「與NAND區域512相對應的區域乃身為關閉狀態」的方式,來對於區域描述符25進行更新。之後,區域管理部124,係將「與NAND區域512相對應的區域之狀態係被作了變更」一事對於主機2作通知(圖13中之(20))。另外,當「以與其他之NAND區域51(於此,係為NAND區域511)相對應之區域作為對象的使用者資料」亦被寫入至了與NAND區域512共通地而被相互附加有關連之共有寫入緩衝521中的情況時,寫入控制部123、強制回應管理部122以及區域管理部124,係以亦使與該其他之NAND區域511相對應之區域同樣的從開放狀態而變遷為關閉狀態的方式,來進行動作。
另外,當並不存在有「在主機2之資料緩衝403中並未被儲存有針對1個的區域之寫入單位之使用者資料,並且受理後的經過時間為到達了強制回應發動時間(亦即是,直到發動為止的時間成為了0)」之寫入指令的情況時,指令受理部121、寫入控制部123以及強制回應管理部122,係能夠反覆進行「從提交佇列401而提取寫入指令,並基於所提取了的寫入指令來將寫入管理表26以及指令回應管理表24作更新」之動作。
藉由以上之動作,在本實施形態之記憶體系統3中,控制器4,在從主機2藉由複數之寫入指令而對於1個的區域要求有寫入之使用者資料之總量到達了寫入單位的情況時,係將寫入單位之使用者資料,寫入至與該區域相對應之NAND區域51中。之後,控制器4,係對於主機2而回送針對複數之寫入指令之各者的回應。藉由此,在記憶體系統3中,係能夠對於NAND型快閃記憶體5之記憶區域有效率地作利用。
進而,控制器4,當存在有「在受理後之經過時間為到達了強制回應發動時間」之寫入指令的情況時,係將所對應之使用者資料,並非為寫入至NAND區域51中,而是寫入至共有寫入緩衝52中。之後,控制器4,係對於主機2而回送針對該寫入指令之完成通知。
如此這般,控制器4,係以(1)於寫入指令之受理後之經過時間到達強制回應發動時間之前,於資料緩衝403中便被儲存有應被寫入至該寫入指令之寫入目標之區域中的寫入單位之使用者資料的情況和(2)存在有「受理後之經過時間到達了強制回應發動時間」之寫入指令的情況,而對於使用者資料之寫入目標作切換。於(1)的情況,由於在寫入指令之受理後的經過時間到達強制回應發動時間之前,所對應的使用者資料之對於NAND區域51之寫入便被開始,因此,控制器4,係能夠在被主機2所期待的時間內,而對於寫入指令作回應。又,於(2)的情況,藉由將所對應之使用者資料寫入至共有寫入緩衝52中,控制器4,係能夠在被主機2所期待的時間內,而針對寫入指令作回應。
故而,記憶體系統3,係能夠在被主機2所期待的時間內而對於寫入指令進行回應,並且對於NAND型快閃記憶體5之記憶區域有效率地作利用。
另外,在前述之記憶體系統3處之動作,係並不被限定於將被儲存在NAND型快閃記憶體5中之資料以區域來作管理的情況,亦可對於將被儲存在NAND型快閃記憶體5中之資料以LBA來作管理的情況作適用。於此情況,係並不進行由區域管理部124所致之動作(例如,區域之朝向關閉狀態之變遷、對於主機2的區域狀態之變更之通知)。
於此情況,控制器4,係對於NAND型快閃記憶體5內之至少1個的記憶區域和至少1個的共有寫入緩衝52作管理。至少1個的記憶區域,係身為將NAND型快閃記憶體5之記憶區域邏輯性地作了分割的記憶區域。至少1個的記憶區域,係與至少1個的LBA分別相互對應。
接著,參考圖14~圖20之流程圖,針對在記憶體系統3以及主機2處所被實行的處理之程序進行說明。
(用以設定在記憶體系統3處之強制回應之發動的處理)
圖14,係為對於藉由CPU12所被實行的設定處理之程序之例作展示之流程圖。CPU12,係因應於從主機2而受理設定指令一事,而開始設定處理。設定處理,係身為用以使CPU12設定「從受理寫入指令起直到將對應於該寫入指令之處理強制性地開始為止的時間」之處理。
首先,CPU12,係取得藉由設定指令而被指定了的名稱空間ID(步驟S101)。又,CPU12,係取得藉由設定指令而被指定了的forced_completion_time之值m(步驟S102)。m,例如係為0以上之整數。
接著,CPU12,係判定所被取得的
forced_completion_time之值m是否為0(步驟S103)。當forced_completion_time之值m係為0的情況時(步驟S103,YES),CPU12,係判定在NS回應管理表23中,是否存在有與所取得了的名稱空間ID相對應之登錄(步驟S104)。當在NS回應管理表23中係存在有與所取得了的名稱空間ID相對應之登錄的情況時(步驟S104,YES),CPU12,係從NS回應管理表23,而將與所取得了的名稱空間ID相對應之登錄刪除(步驟S105),並結束設定處理。藉由此,CPU12,係以「並不強制性地發動以被與所取得了的名稱空間ID相互附加有關連之名稱空間作為對象的寫入指令之處理以及回應」的方式來進行設定。
當在NS回應管理表23中係並不存在有與所取得了的名稱空間ID相對應之登錄的情況時(步驟S104,NO),CPU12係結束設定處理。亦即是,CPU12,係由於已經以「並不強制性地發動以被與所取得了的名稱空間ID相互附加有關連之名稱空間作為對象的寫入指令之處理以及回應」的方式來作了設定,因此,係結束設定處理。
又,當forced_completion_time之值m係並非為0的情況時(步驟S106,NO),CPU12,係作為強制回應完成時間而算出m×100毫秒(步驟S106)。之後,CPU12,係取得process_time之值n(步驟S107)。CPU12,係作為強制回應發動時間,而算出「(m-n)×100毫秒」(步驟S108)。
CPU12,係判定所算出的強制回應完成時間以及強制回應發動時間是否為有效之值(步驟S109)。當所算出的強制回應完成時間以及強制回應發動時間之至少其中一者係身為無效之值的情況時(步驟S109,NO),CPU12,係對於主機2而通知「錯誤(error)」(步驟S110),並結束設定處理。
當所算出的強制回應完成時間以及強制回應發動時間係為有效之值的情況時(步驟S109,YES),CPU12,係判定在NS回應管理表23中是否存在有與所取得了的名稱空間ID相對應之登錄(步驟S111)。當在NS回應管理表23中係存在有對應於所取得了的名稱空間ID之登錄的情況時(步驟S111,YES),CPU12,係使用所算出的強制回應完成時間以及強制回應發動時間來對於該登錄作更新(步驟S112),並結束設定處理。藉由此,CPU12,係能夠因應於設定指令而對於被與所指定了的名稱空間ID相互附加有關連之強制回應完成時間以及強制回應發動時間作變更。
另一方面,當在NS回應管理表23中係並不存在有對應於所取得了的名稱空間ID之登錄的情況時(步驟S111,NO),CPU12,係對於NS回應管理表23,而追加包含有所取得了的名稱空間ID和所算出的強制回應完成時間以及強制回應發動時間之登錄(步驟S113),並結束設定處理。藉由此,CPU12,係能夠因應於設定指令,而設定被與所指定了的名稱空間相互附加有關連之強制回應完成時間以及強制回應發動時間。
藉由以上之設定處理,CPU12,係能夠因應於設定指令,而設定(變更)是否要在受理了以所被指定的名稱空間作為對象之寫入指令的情況時而發動強制回應。又,CPU12,係能夠因應於設定指令,來設定「從受理寫入指令起直到將對應於該寫入指令之處理強制性地開始為止的時間」。
(用以確認在記憶體系統3處之強制回應之發動的處理)
圖15,係為對於藉由CPU12所被實行的確認處理之程序之例作展示之流程圖。CPU12,係因應於從主機2而受理確認指令一事,而開始確認處理。確認處理,係身為用以對於主機2而提供關連於「針對名稱空間所設定的強制回應所發動之時間」之資訊的處理。
首先,CPU12,係取得藉由設定指令而被指定了的名稱空間ID(步驟S201)。CPU12,係在NS回應管理表23中,而特定出與所取得了的名稱空間ID相對應之登錄(步驟S202)。CPU12,係從所特定出的登錄而取得強制回應完成時間(步驟S203)。之後,CPU12,係將所取得的強制回應完成時間對於主機2作送訊(步驟S204)。另外,CPU12,係亦可將關連於強制回應完成時間之資訊對於主機2作送訊。關連於強制回應完成時間之資訊,例如,係為將強制回應完成時間轉換為100毫秒單位後之值,亦即是forced_completion_time之值m(=強制回應完成時間/100)。
又,CPU12,係亦可從所特定出的登錄而取得強制回應發動時間,並對於主機2作送訊。或者是,CPU12,係亦可將關連於強制回應發動時間之資訊對於主機2作送訊。關連於強制回應發動時間之資訊,例如,係為將強制回應發動時間轉換為100毫秒單位後之值,亦即是forced_completion_time之值m與process_time之值n之間之差分「m-n」。
藉由以上之確認處理,CPU12,係能夠因應於確認指令,而對於主機2提供關連於「針對名稱空間所設定的強制回應完成時間與強制回應發動時間之至少其中一者」之資訊。
(在主機2處之用以進行對於記憶體系統3之使用者資料寫入之處理)
圖16,係為對於在主機2處所被實行的寫入要求處理之程序之例作展示之流程圖。寫入要求處理,係身為用以使主機2對於記憶體系統3而要求使用者資料之寫入的處理。寫入要求處理,例如係藉由使被設置在主機2處之處理器實行程式,而被實行。
主機2,係將應被寫入至記憶體系統3之NAND型快閃記憶體5中的使用者資料,儲存於資料緩衝403中(步驟S301)。之後,主機2,係將寫入指令,寫入至SQ Tail指標所展示的提交佇列401內之位置處(步驟S302)。此寫入指令,係為要求被作了儲存的使用者資料之寫入的寫入指令。
接著,主機2,係在SQ Tail指標處加算上「1」(步驟S303)。另外,當在SQ Tail指標處加算上「1」後之值為到達了提交佇列401之槽數的情況時,主機2係在SQ Tail指標處設定「0」。之後,主機2,係將被作了更新後的SQ Tail指標,寫入至記憶體系統3之SQ Tail doorbell暫存器中(步驟S304)。
藉由以上之寫入要求處理,主機2,係能夠對於記憶體系統3而要求被儲存於資料緩衝403中之使用者資料之寫入。主機2,係藉由透過提交佇列401來對於記憶體系統3發行寫入指令,而對於記憶體系統3要求使用者資料之寫入。
圖17,係為對於在主機2處所被實行的回應收訊處理之程序之例作展示之流程圖。回應收訊處理,係為用以使主機2從記憶體系統3而收訊針對寫入指令之回應的處理。回應收訊處理,例如係藉由使被設置在主機2處之處理器實行程式,而被實行。主機2,係因應於收訊了藉由記憶體系統3所被發行的插斷一事,而開始回應收訊處理之實行。
首先,主機2,係從CQ Head指標所示之完成佇列402內之位置,來提取完成通知(步驟S401)。此完成通知,係身為代表「因應於主機2所發行的寫入指令,相對應之使用者資料之對於NAND型快閃記憶體5之寫入為完成」一事的回應。
接著,主機2,係在CQ Head指標處加算上「1」(步驟S402)。另外,當在CQ Head指標處加算上「1」後之值為到達了完成佇列402之槽數的情況時,主機2係在CQ Head指標處設定「0」。主機2,係將更新後的CQ Head指標,寫入至記憶體系統3A之CQ Head doorbell暫存器中(步驟S403)。之後,主機2,係將從記憶體系統3所收訊了的插斷作清除(clear)(步驟S404)。
接著,主機2,係基於所被提取了的完成通知,而將寫入為完成了的使用者資料所被作儲存之資料緩衝403內之區域釋放(步驟S405)。
藉由以上之回應收訊處理,主機2,當與已發行了的寫入指令相對應之使用者資料之寫入為完成的情況時,係能夠將此使用者資料所被作儲存之資料緩衝403內之區域釋放。
另外,主機2,在回應收訊處理中,係亦可從記憶體系統3而更進一步接收代表「區域為變遷至了關閉狀態」一事之通知。更具體而言,主機2,當與已發行了的寫入指令相對應之使用者資料之寫入為因應於強制回應之發動而被作了進行的情況時,係能夠接收代表「此使用者資料之原本所應被作寫入的區域係變遷至了關閉狀態」一事之通知。主機2,係因應於此通知,而例如停止發行「要求對於該區域之使用者資料之寫入」的寫入指令。
(在記憶體系統3處之用以進行使用者資料寫入之處理)
圖18,係為對於藉由CPU12所被實行的寫入控制處理之程序之例作展示之流程圖。寫入控制處理,係為用以使CPU12受理藉由主機2所被作了發行的寫入指令並對於與已受理了的寫入指令相對應之使用者資料之寫入作控制的處理。於此,為了使說明成為易於理解,係針對CPU12從主機2之提交佇列401所受理的指令僅有寫入指令的情況來作例示。
首先,CPU12,係判定SQ Head指標是否與SQ Tail指標相等(步驟S501)。亦即是,CPU12,係使用SQ Head指標與SQ Tail指標,來判定在提交佇列401中是否存在有應提取之寫入指令。
當SQ Head指標與SQ Tail指標係為相異的情況時(步驟S501,NO),由於在提交佇列401中係存在有應提取之寫入指令,因此,CPU12係實行指令受理處理(步驟S502)。指令受理處理,係身為用以使CPU12受理寫入指令並取得對於所受理了的寫入指令作管理之資訊之處理。更詳細而言,在指令受理處理中,係因應於所受理了的寫入指令而使寫入管理表26被作更新。寫入管理表26,係將關連於所受理了的寫入指令之資訊,例如針對所對應之使用者資料所應被作寫入之各區域之每一者而分別作管理。關於指令受理處理的具體性之處理程序,係參考圖19之流程圖而於後再作敘述。
接著,CPU12,係判定在主機2之資料緩衝403中是否被儲存有針對1個的區域之寫入單位之使用者資料(步驟S503)。當在資料緩衝403中被儲存有針對1個的區域之寫入單位之使用者資料的情況時(步驟S503,YES),CPU12,係將該寫入單位之使用者資料從資料緩衝403而傳輸至記憶體系統3之DRAM6處(步驟S504)。以下,係將此寫入單位之使用者資料所應被作寫入的區域,稱作第1對象區域。又,係將與第1對象區域相對應的NAND區域51,亦稱作第1NAND區域51。CPU12,係將被作了傳輸的使用者資料,傳輸至NAND型快閃記憶體5處,並寫入至第1對象NAND區域51中(步驟S505)。另外,CPU12,係亦可將寫入單位之使用者資料,並不緩衝至DRAM6中地而從資料緩衝403來傳輸至NAND型快閃記憶體5處。
接著,CPU12,係判定是否存在有「所對應之使用者資料係成為了能夠讀出」的寫入指令(步驟S506)。當並不存在有「所對應之使用者資料係成為了能夠讀出」之寫入指令的情況時(步驟S506,NO),由CPU12所致之處理係回到步驟S506處。亦即是,由於還無法對於主機2而通知「與寫入指令相對應之使用者資料之寫入為完成」一事,因此,由CPU12所致之處理係回到步驟S506處。
當存在有「所對應之使用者資料係成為了能夠讀出」之寫入指令的情況時(步驟S506,YES),CPU12係實行回應處理(步驟S507)。回應處理,係為用以對於主機2而通知「與寫入指令相對應之使用者資料之寫入為完成」一事,並對於管理該寫入指令之資訊作更新的處理。關於回應處理的具體性之處理程序,係參考圖20之流程圖而於後再作敘述。
接著,CPU12,係判定是否針對與在步驟S505處所作了寫入的寫入單位之使用者資料相對應之全部的寫入指令而進行了回應(步驟S508)。當針對與寫入單位之使用者資料相對應之寫入指令的至少1者而尚未進行回應的情況時(步驟S508,NO),由CPU12所致之處理係回到步驟S506處。
另一方面,當針對與寫入單位之使用者資料相對應之全部的寫入指令而進行了回應的情況時(步驟S508,YES),由CPU12所致之處理係前進至步驟S501處。亦即是,CPU12,係從主機2而受理新的寫入指令,並繼續進行用以對於與已受理了的寫入指令相對應之使用者資料之寫入作控制的處理。
又,當在主機2之資料緩衝403中並未被儲存有針對1個的區域之寫入單位之使用者資料的情況時(步驟S503,NO),CPU12,係使用在步驟S502處所受理了的寫入指令來將指令回應管理表24作更新(步驟S509),由CPU12所致之處理係前進至步驟S510處。具體而言,CPU12,係使用藉由在步驟S502處所受理了的寫入指令而被指定了的名稱空間ID,來從NS回應管理表23而取得強制回應發動時間。之後,CPU12,係將包含有藉由寫入指令所被指定了的指令ID和所取得的強制回應發動時間之登錄,追加至指令回應管理表24中。被作了追加的登錄內之強制回應發動時間,係作為「直到與寫入指令相對應的處理被強制性地開始為止的時間(亦即是,直到發動為止的時間)」之初期值而被作使用。CPU12,係例如因應於計時器16所計測到的時間之經過,來使在指令回應管理表24內之各登錄中所包含之「直到發動為止的時間」作減少。
又,當SQ Head指標與SQ Tail指標係為相等的情況時(步驟S501,YES),由CPU12所致之處理係前進至步驟S510處。
接著,CPU12,係判定是否存在有「受理後之經過時間為到達了強制回應發動時間」的寫入指令(步驟S510)。具體而言,CPU12,例如,當指令回應管理表24係包含有代表「直到發動為止的時間成為了0之寫入指令」之登錄的情況時,係判斷是否存在有「受理後之經過時間為到達了強制回應發動時間」的寫入指令。
當並不存在有「受理後之經過時間為到達了強制回應發動時間」之寫入指令的情況時(步驟S510,NO),由CPU12所致之處理係前進至步驟S501處。
當存在有「在受理後之經過時間為到達了強制回應發動時間」之寫入指令的情況時(步驟S510,YES),CPU12,係特定出與該寫入指令相對應之使用者資料所應被寫入的區域(以下,稱作第2對象區域)(步驟S511)。CPU12,例如係使用寫入管理表26,來特定出第2對象區域。之後,CPU12,係將應被寫入至第2對象區域中之使用者資料,從主機2之資料緩衝403來傳輸至記憶體系統3之DRAM6中(步驟S512)。更具體而言,CPU12,例如係使用寫入管理表26,來特定出應被寫入至第2對象區域中之至少1個的使用者資料。至少1個的使用者資料,係與至少1個的寫入指令分別相互對應。CPU12,係將所特定出之至少1個的使用者資料,從資料緩衝403而傳輸至DRAM6處。被作了傳輸的使用者資料之容量,係較針對NAND型快閃記憶體5之寫入單位而更小。
接著,CPU12,係將被作了傳輸的使用者資料,附加有填補地而寫入至共有寫入緩衝52中(步驟S513)。亦即是,CPU12,係藉由對於使用者資料附加填補資料,而將寫入單位之資料寫入至共有寫入緩衝52中。使用者資料所被作寫入的共有寫入緩衝52,係被與對應於第2對象區域之NAND區域51相互附加有關連。另外,CPU12,係亦可將使用者資料,並不緩衝至DRAM6中地而從資料緩衝403來傳輸至NAND型快閃記憶體5處。
接著,CPU12,係判定是否存在有「所對應之使用者資料係成為了能夠讀出」的寫入指令(步驟S514)。當並不存在有「所對應之使用者資料係成為了能夠讀出」之寫入指令的情況時(步驟S514,NO),由CPU12所致之處理係回到步驟S514處。
當存在有「所對應之使用者資料係成為了能夠讀出」之寫入指令的情況時(步驟S514,YES),CPU12係實行回應處理(步驟S515)。亦即是,CPU12,係對於主機2而通知「與寫入指令相對應之使用者資料之寫入為完成」一事,並對於管理該寫入指令之資訊作更新。
之後,CPU12,係判定是否針對與在步驟S513處所作了寫入的使用者資料相對應之全部的寫入指令而進行了回應(步驟S516)。當針對與作了寫入的使用者資料相對應之寫入指令的至少1者而尚未進行回應的情況時(步驟S516,NO),由CPU12所致之處理係回到步驟S514處。
另一方面,當針對與所作了寫入的使用者資料相對應之全部的寫入指令而進行了回應的情況時(步驟S516,YES),CPU12係使第2對象區域變遷至關閉狀態(步驟S517)。之後,CPU12,係對於主機2而通知第2對象區域之狀態之變更(步驟S518),由CPU12所致之處理係前進至步驟S501處。
另外,CPU12,係亦可替代「使第2對象區域變遷至關閉狀態」,而將第2對象區域設為全滿狀態。CPU12,例如,在步驟S513處,係以會成為在第2對象區域之全體處而被寫入有資料的狀態(全滿狀態)的方式,來將被作了傳輸的使用者資料與填補資料寫入至共有寫入緩衝52中。於此情況,CPU12,在針對與所作了寫入的使用者資料相對應之全部的寫入指令而進行了回應之後,例如,係對於主機2而通知「第2對象區域係成為了全滿狀態」一事。之後,由CPU12所致之處理係前進至步驟S501處。
藉由以上之寫入控制處理,CPU12,係能夠從主機2而受理寫入指令,並對於與已受理了的寫入指令相對應之使用者資料之寫入作控制。
具體而言,當在資料緩衝403中被儲存有應被寫入至第1對象區域之寫入單位之使用者資料的情況時,CPU12,係將該寫入單位之使用者資料寫入至第1對象NAND區域51中。之後,CPU12,係對於主機2而回送針對「與寫入為完成的使用者資料相對應之寫入指令」之完成通知。
又,當存在有「在受理後之經過時間為到達了強制回應發動時間」之寫入指令的情況時,CPU12,係特定出所對應之使用者資料所應被寫入的第2對象區域。CPU12,係將被儲存於資料緩衝403中之應被寫入至第2對象區域中之使用者資料,並非為寫入至NAND區域51中而是寫入至共有寫入緩衝52中。之後,CPU12,係對於主機2而回送針對「與寫入為完成的使用者資料相對應之寫入指令」之完成通知。
藉由此,記憶體系統3,係能夠在被主機2所期待的時間內而對於寫入指令進行回應,並且對於NAND型快閃記憶體5之記憶區域有效率地作利用。
圖19,係為對於藉由CPU12所被實行的指令受理處理之程序之例作展示之流程圖。指令受理處理,係身為用以受理寫入指令並取得對於所受理了的寫入指令作管理之資訊之處理。指令受理處理,係相當於參照圖18而於前所述的寫入控制處理之步驟S502。
首先,CPU12,係從SQ Head指標所示之提交佇列401內之位置,而提取寫入指令(步驟S601)。CPU12,係在SQ Head指標處加算上「1」(步驟S602)。另外,當在SQ Head指標處加算上「1」的次數為到達了提交佇列401之槽數的情況時,CPU12係在SQ Head指標處設定「0」。
接著,CPU12,係從被作了提取的寫入指令,而取得指令ID、LBA、資料長度以及資料緩衝資訊(步驟S603)。CPU12,係特定出包含有所取得了的LBA之區域(步驟S604)。亦即是,CPU12,係特定出被分配有「包含有所取得了的LBA之LBA範圍」之區域。
之後,CPU12,係將寫入管理表26作更新(步驟S605),並結束指令受理處理。具體而言,CPU12,係將展示有「所取得的指令ID、LBA、資料長度以及資料緩衝資訊,和所特定出之區域」之登錄,追加至寫入管理表26中。
藉由以上之指令受理處理,CPU12,係能夠從主機2而受理寫入指令並取得用以對於所受理了的寫入指令作管理之資訊。CPU12,係使用所取得的用以對於寫入指令作管理之資訊,來將寫入管理表26作更新。CPU12,係能夠使用寫入管理表26,來對於應因應於各寫入指令而被寫入至NAND型快閃記憶體5中之使用者資料作管理。
圖20,係為對於藉由CPU12所被實行的回應處理之程序之例作展示之流程圖。回應處理,係為用以對於主機2而通知「與寫入指令相對應之使用者資料之寫入為完成」一事,並對於管理該寫入指令之資訊作更新的處理。回應處理,係相當於參照圖18而於前所述的寫入控制處理之步驟S507以及步驟S515之各者。
首先,CPU12,係將對象寫入指令之完成通知,寫入至CQ Tail指標所示之完成佇列402內之位置處(步驟S701)。對象寫入指令,係身為「所對應之使用者資料之對於NAND型快閃記憶體5之寫入為完成」的寫入指令。
接著,CPU12,係在CQ Tail指標處加算上「1」(步驟S702)。另外,當在CQ Tail指標處加算上「1」之次數為到達了完成佇列402之槽數的情況時,CPU12係在CQ Tail指標處設定「0」。之後,CPU12,係對於主機2而發行插斷(步驟S703)。CPU12,係藉由發行插斷,而將「應被處理之新的完成通知係存在於完成佇列402中」一事,對於主機2作通知。
CPU12,係對於寫入管理表26作更新(步驟S704)。具體而言,CPU12,係從寫入管理表26,而將與對象寫入指令相對應之登錄刪除。之後,CPU12,係將指令回應管理表24作更新(步驟S705),並結束回應處理。具體而言,CPU12,係從指令回應管理表24,而將與對象寫入指令相對應之登錄刪除。另外,當在指令回應管理表24中並不存在有與對象寫入指令相對應之登錄的情況時,CPU12係跳過步驟S705之程序,並結束回應處理。例如,當CPU12因應於受理了對象寫入指令一事而判斷在資料緩衝403中係被儲存有針對1個的區域之寫入使用者資料的情況時,與對象寫入指令相對應之登錄係並未被追加至指令回應管理表24中。於此情況,CPU12係跳過步驟S705之程序。
藉由以上之回應處理,CPU12,係能夠對於主機2而通知「與寫入指令相對應之使用者資料之寫入為完成」一事,並對於管理該寫入指令之資訊作更新。
如同以上所作了說明一般,若依據本實施形態,則記憶體系統3係能夠在被主機2所期待的時間內而針對寫入要求進行回應。控制器4,係從主機2而受理被與具有未滿身為對於NAND型快閃記憶體5之寫入單位之第1資料單位之容量之第1資料相互附加有關連之第1寫入要求。控制器4,係因應於從受理第1寫入要求起而經過了第1時間一事,開始至少包含有第1資料之第2資料的對於NAND型快閃記憶體5之寫入處理。控制器4,係因應於寫入處理完成一事,對於主機2而送訊針對第1寫入要求之第1回應。第1時間,係身為從「作為從受理第1寫入要求起直到送訊第1回應為止的限制時間而由主機所指定了的第2時間」而減去第3時間後之時間。
如此這般,因應於從受理第1寫入要求起而經過了第1時間一事,控制器4由於係強制性地開始至少包含有「被與第1寫入要求相互附加有關連之第1資料」之第2資料的對於NAND型快閃記憶體5之寫入處理,因此,係能夠在被主機2所期待的時間內而針對第1寫入要求進行回應。
在本實施形態之說明中所記載之各種之功能的各者,係亦可藉由電路(處理電路)而被實現。在處理電路之例中,係包含有如同中央處理裝置(CPU)一般之被作了程式化的處理器。此處理器,係藉由實行被儲存於記憶體中之電腦程式(命令群),而實行在本實施形態之說明中所記載的各者之功能。此處理器,係亦可為包含有電性電路之微處理器。在處理電路之例中,係亦包含有數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、微控制器、控制器、其他之電性電路零件。在本實施形態之說明中所記載之CPU以外的其他之組件(component)之各者,係亦可藉由處理電路而被實現。
雖係針對本發明之數種實施形態作了說明,但是,該些實施形態,係僅為作為例子所提示者,而並非為對於本發明之範圍作限定者。此些之新穎的實施形態,係可藉由其他之各種形態來實施,在不脫離發明之要旨的範圍內,係可進行各種之省略、置換、變更。此些之實施形態或其變形,係亦被包含於發明之範圍或要旨中,並且亦被包含在申請專利範圍中所記載的發明及其均等範圍內。
1:資訊處理系統
2:主機
3:記憶體系統
4:控制器
5:NAND型快閃記憶體
6:DRAM
11:主機I/F
12:CPU
13:NAND I/F
14:DRAMI/F
121:指令受理部
122:強制回應管理部
123:寫入控制部
124:區域管理部
21:FW
22:邏輯物理位址轉換表
23:NS回應管理表
24:指令回應管理表
25:區域描述符
26:寫入管理表
[圖1]係為對於包含有實施形態的記憶體系統之資訊處理系統之構成例作展示之區塊圖。
[圖2]係為對於在該實施形態之記憶體系統中所被管理之分區名稱空間(zoned namespace)之構成例作展示之圖。
[圖3]係為對於在該實施形態之記憶體系統處而藉由使強制回應發動來實行與寫入指令相對應之處理的情況時之時間之例作展示之圖。
[圖4]係為對於在該實施形態的記憶體系統處而被使用於強制回應之發動之控制中的參數之例作展示之圖。
[圖5]係為對於在該實施形態的記憶體系統處所被使用之邏輯物理位址轉換表之構成例作展示之圖。
[圖6]係為對於在該實施形態的記憶體系統處所被使用之名稱空間回應管理表之構成例作展示之圖。
[圖7]係為對於在該實施形態的記憶體系統處所被使用之指令回應管理表之構成例作展示之圖。
[圖8]係為對於在該實施形態的記憶體系統處所被使用之寫入管理表之構成例作展示之圖。
[圖9]係為對於在第1比較例的記憶體系統中之與寫入指令相對應之動作例作展示之區塊圖。
[圖10]係為對於在第2比較例的記憶體系統中之與寫入指令相對應之動作例作展示之區塊圖。
[圖11]係為對於在該實施形態的記憶體系統中之與寫入強制回應設定指令相對應之動作例作展示之區塊圖。
[圖12]係為對於在該實施形態的記憶體系統中之與寫入強制回應確認指令相對應之動作例作展示之區塊圖。
[圖13]係為對於在該實施形態的記憶體系統中之與寫入指令相對應之動作例作展示之區塊圖。
[圖14]係為對於在該實施形態之記憶體系統處所被實行的設定處理之程序之例作展示之流程圖。
[圖15]係為對於在該實施形態之記憶體系統處所被實行的確認處理之程序之例作展示之流程圖。
[圖16]係為對於在圖1之資訊處理系統內之主機處所被實行的寫入要求處理之程序之例作展示之流程圖。
[圖17]係為對於在圖1之資訊處理系統內之主機處所被實行的回應收訊處理之程序之例作展示之流程圖。
[圖18]係為對於在該實施形態之記憶體系統處所被實行的寫入控制處理之程序之例作展示之流程圖。
[圖19]係為對於在該實施形態之記憶體系統處所被實行的指令受理處理之程序之例作展示之流程圖。
[圖20]係為對於在該實施形態之記憶體系統處所被實行的回應處理之程序之例作展示之流程圖。
2:主機
3:記憶體系統
5:NAND型快閃記憶體
6:DRAM
16:計時器
23:NS回應管理表
24:指令回應管理表
25:區域描述符
26:寫入管理表
51,511,512:NAND區域
52,521,522:共有寫入緩衝
121:指令受理部
122:強制回應管理部
123:寫入控制部
124:區域管理部
401:提交佇列
402:完成佇列
403:資料緩衝
Claims (20)
- 一種非揮發性記憶體之控制方法,係為由控制器所進行之非揮發性記憶體之控制方法,並具備有:從主機而受理被與具有未滿身為對於前述非揮發性記憶體之寫入單位的第1資料單位之容量之第1資料相互附加有關連之第1寫入要求之步驟;和因應於從受理前述第1寫入要求起而經過了第1時間一事,開始第2資料的對於前述非揮發性記憶體之寫入處理之步驟,其中,前述第2資料係至少包含有前述第1資料;和判斷前述第2資料係成為了能夠從前述非揮發性記憶體而讀出之步驟;和因應於判斷為前述第2資料係成為了能夠從前述非揮發性記憶體而讀出一事,對於前述主機而送訊代表前述第1寫入要求為完成之第1回應之步驟,前述第1時間,係為從第2時間而減去第3時間後之時間,該第2時間,係作為從受理前述第1寫入要求起直到送訊前述第1回應為止的限制時間而由前述主機所指定,並較前述第1時間而更長。
- 如請求項1所記載之非揮發性記憶體之控制方法,其中,前述第3時間,係對應於從開始前述第2資料之對於前述非揮發性記憶體之寫入處理起直到前述寫入處理完成而 前述第2資料成為能夠從前述記憶體而讀出為止的時間。
- 如請求項1所記載之非揮發性記憶體之控制方法,其中,係更進而具備有:對於將提供給前述主機之邏輯位址空間邏輯性地作分割所得到之複數之區域、和至少1個的第1記憶區域,而進行管理之步驟,其中,該至少1個的第1記憶區域,係為將前述非揮發性記憶體之記憶區域邏輯性地作分割所得到的部分記憶區域,並且與前述複數之區域相對應;和將前述第2資料,寫入至對應於第1區域之前述第1記憶區域中之步驟,前述第1寫入要求,係為以前述複數之區域之中之前述第1區域作為對象的寫入要求。
- 如請求項3所記載之非揮發性記憶體之控制方法,其中,係更進而具備有:管理複數之第2記憶區域之步驟,其中,該複數之第2記憶區域,係為將前述非揮發性記憶體之記憶區域邏輯性地作分割所得到的部分記憶區域,並且與前述複數之區域之各者一對一地相對應;和因應於從前述主機而受理了以被與具有前述第1資料單位之容量之第3資料相互附加有關連並且為前述複數之區域之中之與前述第1區域相異之第2區域作為對象之第2寫入要求一事,將前述第3資料,寫入至對應於前述第2區域之前述複數之第2記憶區域之中的第3記憶區域中之步驟。
- 如請求項4所記載之非揮發性記憶體之控制方法,其中,係更進而具備有:因應於在從受理前述第1寫入要求起而經過前述第1時間之前,從前述主機而受理了被與具有未滿前述第1資料單位之容量之第4資料相互附加有關連並且以前述第2區域作為對象之第3寫入要求一事,而將包含有前述第4資料之前述第2資料,寫入至前述第1記憶區域中之步驟。
- 如請求項5所記載之非揮發性記憶體之控制方法,其中,係更進而具備有:使前述第1區域與前述第2區域之各者之狀態,從能夠進行資料之寫入的第1狀態而變遷為使資料之寫入被作了中斷的第2狀態之步驟。
- 如請求項5所記載之非揮發性記憶體之控制方法,其中,當將前述第1資料之容量與前述第4資料之容量相加後之容量為相當於前述第1資料單位的情況時,將包含有前述第4資料之前述第2資料寫入至前述第1記憶區域中。
- 如請求項1所記載之非揮發性記憶體之控制方法,其中,係更進而具備有:從前述主機而收訊確認要求之步驟;和因應於前述確認要求,將關連於前述第1時間與前述第2時間之至少其中一者之資訊對於前述主機作送訊之步驟。
- 如請求項3所記載之非揮發性記憶體之控 制方法,其中,對於前述複數之區域之各者的資料之寫入,係以會使被與前述資料相互附加有關連之邏輯位址相連續的方式而被實行。
- 如請求項3所記載之非揮發性記憶體之控制方法,其中,係更進而具備有:對於將提供給前述主機之邏輯位址空間邏輯性地作分割所得到之包含有前述複數之區域之至少1個的名稱空間作管理之步驟;和將針對前述至少1個的名稱空間而從前述主機所指定了的前述第2時間,針對在前述至少1個的名稱空間中所包含之前述複數之區域之各者而共通性地作管理之步驟。
- 一種控制器,係為對於非揮發性記憶體作控制之控制器,並具備有:第1電路,係從主機而受理被與具有未滿身為對於前述非揮發性記憶體之寫入單位的第1資料單位之容量之第1資料相互附加有關連之第1寫入要求,並因應於從受理前述第1寫入要求起而經過了第1時間一事,開始第2資料的對於前述非揮發性記憶體之寫入處理,並判斷出前述第2資料係成為了能夠從前述非揮發性記憶體而讀出,並且因應於判斷為前述第2資料係成為了能夠從前述非揮發性記憶體而讀出一事,對於前述主機而送訊代表前述第1寫入要求為完成之第1回應,其中,前述第2資料係至少包含有前述第1資料, 前述第1時間,係為從第2時間而減去第3時間後之時間,該第2時間,係作為從受理前述第1寫入要求起直到送訊前述第1回應為止的限制時間而由前述主機所指定,並較前述第1時間而更長。
- 如請求項11所記載之控制器,其中,前述第3時間,係對應於從開始前述第2資料之對於前述非揮發性記憶體之寫入處理起直到前述寫入處理完成而前述第2資料成為能夠從前述記憶體而讀出為止的時間。
- 如請求項11所記載之控制器,其中,前述第1電路,係更進而對於將提供給前述主機之邏輯位址空間邏輯性地作分割所得到之複數之區域、和至少1個的第1記憶區域,而進行管理,其中,該至少1個的第1記憶區域,係為將前述非揮發性記憶體之記憶區域邏輯性地作分割所得到的部分記憶區域,並且與前述複數之區域相對應,前述第1寫入要求,係為以前述複數之區域之中之第1區域作為對象的寫入要求,前述第1電路,係將前述第2資料,寫入至對應於前述第1區域之前述第1記憶區域中。
- 如請求項13所記載之控制器,其中,前述第1電路,係更進而管理複數之第2記憶區域,其中,該複數之第2記憶區域,係為將前述非揮發性記憶體之記憶區域邏輯性地作分割所得到的部分記憶區域,並且與前述複數之區域之各者一對一地相對應, 因應於從前述主機而受理了以被與具有前述第1資料單位之容量之第3資料相互附加有關連並且為前述複數之區域之中之與前述第1區域相異之第2區域作為對象之第2寫入要求一事,而將前述第3資料,寫入至對應於前述第2區域之前述複數之第2記憶區域之中的第3記憶區域中。
- 如請求項14所記載之控制器,其中,前述第1電路,係更進而因應於在從受理前述第1寫入要求起而經過前述第1時間之前,從前述主機而受理了被與具有未滿前述第1資料單位之容量之第4資料相互附加有關連並且以前述第2區域作為對象之第3寫入要求一事,而將包含有前述第4資料之前述第2資料,寫入至前述第1記憶區域中。
- 如請求項15所記載之控制器,其中,前述第1電路,係更進而使前述第1區域與前述第2區域之各者之狀態,從能夠進行資料之寫入的第1狀態而變遷為使資料之寫入被作了中斷的第2狀態。
- 如請求項15所記載之控制器,其中,前述第1電路,係當將前述第1資料之容量與前述第4資料之容量相加後之容量為相當於前述第1資料單位的情況時,將包含有前述第4資料之前述第2資料寫入至前述第1記憶區域中。
- 如請求項11所記載之控制器,其中,前述第1電路,係更進而構成為:從前述主機而收訊確認要求,並因應於前述確認要 求,將關連於前述第1時間與前述第2時間之至少其中一者之資訊對於前述主機作送訊。
- 如請求項13所記載之控制器,其中,對於前述複數之區域之各者的資料之寫入,係以會使被與前述資料相互附加有關連之邏輯位址相連續的方式而被實行。
- 如請求項13所記載之控制器,其中,前述第1電路,係更進而對於將提供給前述主機之邏輯位址空間邏輯性地作分割所得到之至少1個的名稱空間作管理,前述至少1個的名稱空間,係包含有前述複數之區域,將針對前述至少1個的名稱空間而從前述主機所指定了的前述第2時間,針對在前述至少1個的名稱空間中所包含之前述複數之區域之各者而共通性地作管理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021043709A JP7516300B2 (ja) | 2021-03-17 | 2021-03-17 | メモリシステム |
JP2021-043709 | 2021-03-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202312148A TW202312148A (zh) | 2023-03-16 |
TWI824837B true TWI824837B (zh) | 2023-12-01 |
Family
ID=83284805
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111144719A TWI824837B (zh) | 2021-03-17 | 2021-05-31 | 記憶體系統 |
TW110119620A TWI787848B (zh) | 2021-03-17 | 2021-05-31 | 記憶體系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110119620A TWI787848B (zh) | 2021-03-17 | 2021-05-31 | 記憶體系統 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11861202B2 (zh) |
JP (1) | JP7516300B2 (zh) |
CN (2) | CN115114195B (zh) |
TW (2) | TWI824837B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022171208A (ja) * | 2021-04-30 | 2022-11-11 | キオクシア株式会社 | メモリシステムおよび制御方法 |
EP4417983A1 (en) | 2021-10-11 | 2024-08-21 | Hioki E.E. Corporation | Measuring device, measuring system, and measuring method |
JP2023136083A (ja) * | 2022-03-16 | 2023-09-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN116382576B (zh) * | 2023-03-17 | 2024-02-27 | 平头哥(上海)半导体技术有限公司 | 存储控制芯片、固态硬盘和相关方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201511013A (zh) * | 2013-06-12 | 2015-03-16 | Samsung Electronics Co Ltd | 記憶體系統及操作記憶體元件與自其記憶區塊讀取資料的方法 |
TWI575375B (zh) * | 2015-11-06 | 2017-03-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US20190295633A1 (en) * | 2016-09-19 | 2019-09-26 | Bar-Llan University | Complementary dual-modular redundancy memory cell |
TWI686798B (zh) * | 2017-09-07 | 2020-03-01 | 聯發科技股份有限公司 | 刷新控制方法以及相應記憶體控制器 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4954944A (en) * | 1987-04-23 | 1990-09-04 | Nec Corporation | Cache control circuit in cache memory unit with unit for enabling to reduce a read access time for cache memory |
WO2005089339A2 (en) * | 2004-03-12 | 2005-09-29 | Netcell Corporation | Disk controller methods and apparatus with improved striping redundancy operations and interfaces |
JP2006350881A (ja) | 2005-06-20 | 2006-12-28 | Matsushita Electric Ind Co Ltd | メモリーカード制御装置およびメモリーカード制御システム |
EP1750202A1 (en) * | 2005-07-11 | 2007-02-07 | Nvidia Corporation | Combining packets for a packetized bus |
US8516172B1 (en) * | 2007-08-30 | 2013-08-20 | Virident Systems, Inc. | Methods for early write termination and power failure with non-volatile memory |
JP4745356B2 (ja) | 2008-03-01 | 2011-08-10 | 株式会社東芝 | メモリシステム |
US8942248B1 (en) * | 2010-04-19 | 2015-01-27 | Altera Corporation | Shared control logic for multiple queues |
US8782370B2 (en) * | 2011-05-15 | 2014-07-15 | Apple Inc. | Selective data storage in LSB and MSB pages |
US9417754B2 (en) * | 2011-08-05 | 2016-08-16 | P4tents1, LLC | User interface system, method, and computer program product |
TWI479313B (zh) * | 2012-07-11 | 2015-04-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
JP2016024678A (ja) | 2014-07-22 | 2016-02-08 | 株式会社東芝 | メモリシステム |
JP6409613B2 (ja) | 2015-02-23 | 2018-10-24 | 富士通株式会社 | 情報処理装置,マルチパス制御方法及びマルチパス制御プログラム |
JP6414853B2 (ja) | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR102398186B1 (ko) | 2017-07-03 | 2022-05-17 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 |
JP2019020788A (ja) | 2017-07-11 | 2019-02-07 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP6967959B2 (ja) | 2017-12-08 | 2021-11-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10649841B2 (en) * | 2018-03-05 | 2020-05-12 | Alibaba Group Holding Limited | Supporting multiple page lengths with unique error correction coding via galois field dimension folding |
JP7051546B2 (ja) * | 2018-04-16 | 2022-04-11 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2019191909A (ja) | 2018-04-25 | 2019-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2019211861A (ja) | 2018-05-31 | 2019-12-12 | 東芝メモリ株式会社 | メモリシステム |
CN110989918B (zh) * | 2018-10-03 | 2023-03-28 | 慧荣科技股份有限公司 | 写入控制方法以及数据存储装置及其控制器 |
US11113198B2 (en) | 2019-05-06 | 2021-09-07 | Micron Technology, Inc. | Timed data transfer between a host system and a memory sub-system |
US11113007B2 (en) | 2019-05-13 | 2021-09-07 | Micron Technology, Inc. | Partial execution of a write command from a host system |
US20200409601A1 (en) | 2019-06-28 | 2020-12-31 | Western Digital Technologies, Inc. | Hold of Write Commands in Zoned Namespaces |
JP2021033847A (ja) | 2019-08-28 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US20200089407A1 (en) | 2019-11-22 | 2020-03-19 | Intel Corporation | Inter zone write for zoned namespaces |
JP7346311B2 (ja) | 2020-01-16 | 2023-09-19 | キオクシア株式会社 | メモリシステム |
JP2020198128A (ja) | 2020-08-31 | 2020-12-10 | キオクシア株式会社 | メモリシステム |
-
2021
- 2021-03-17 JP JP2021043709A patent/JP7516300B2/ja active Active
- 2021-05-31 TW TW111144719A patent/TWI824837B/zh active
- 2021-05-31 TW TW110119620A patent/TWI787848B/zh active
- 2021-08-19 CN CN202110955721.8A patent/CN115114195B/zh active Active
- 2021-08-19 CN CN202311456024.3A patent/CN117271400A/zh active Pending
- 2021-09-07 US US17/468,163 patent/US11861202B2/en active Active
-
2023
- 2023-11-21 US US18/516,632 patent/US20240086099A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201511013A (zh) * | 2013-06-12 | 2015-03-16 | Samsung Electronics Co Ltd | 記憶體系統及操作記憶體元件與自其記憶區塊讀取資料的方法 |
TWI575375B (zh) * | 2015-11-06 | 2017-03-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US20190295633A1 (en) * | 2016-09-19 | 2019-09-26 | Bar-Llan University | Complementary dual-modular redundancy memory cell |
TWI686798B (zh) * | 2017-09-07 | 2020-03-01 | 聯發科技股份有限公司 | 刷新控制方法以及相應記憶體控制器 |
Also Published As
Publication number | Publication date |
---|---|
JP7516300B2 (ja) | 2024-07-16 |
TW202312148A (zh) | 2023-03-16 |
TWI787848B (zh) | 2022-12-21 |
US11861202B2 (en) | 2024-01-02 |
US20220300182A1 (en) | 2022-09-22 |
JP2022143278A (ja) | 2022-10-03 |
CN117271400A (zh) | 2023-12-22 |
US20240086099A1 (en) | 2024-03-14 |
TW202238571A (zh) | 2022-10-01 |
CN115114195B (zh) | 2023-11-10 |
CN115114195A (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI824837B (zh) | 記憶體系統 | |
US10649815B2 (en) | Apparatus and method of managing shared resources in achieving IO virtualization in a storage device | |
US9977623B2 (en) | Detection of a sequential command stream | |
US11579779B2 (en) | Computing systems including storage devices controlled by hosts | |
US11494082B2 (en) | Memory system | |
CN109388340B (zh) | 数据存储装置及管理数据存储装置中的flr的方法 | |
US20160342545A1 (en) | Data memory device | |
EP3608790B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
US10866755B2 (en) | Two stage command buffers to overlap IOMMU map and second tier memory reads | |
TWI812012B (zh) | 資訊處理裝置 | |
TWI820426B (zh) | 記憶體系統及控制方法 | |
TWI852139B (zh) | 記憶體系統 | |
US11954367B2 (en) | Active time-based command prioritization in data storage devices | |
US20230298684A1 (en) | Memory system and information processing system | |
US20240201859A1 (en) | Stream Data Management in Storage Device | |
JP6721765B2 (ja) | メモリシステムおよび制御方法 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
TW202347132A (zh) | 記憶體系統 | |
TW202407547A (zh) | 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法 |