TWI792322B - 記憶體系統及控制方法 - Google Patents
記憶體系統及控制方法 Download PDFInfo
- Publication number
- TWI792322B TWI792322B TW110118823A TW110118823A TWI792322B TW I792322 B TWI792322 B TW I792322B TW 110118823 A TW110118823 A TW 110118823A TW 110118823 A TW110118823 A TW 110118823A TW I792322 B TWI792322 B TW I792322B
- Authority
- TW
- Taiwan
- Prior art keywords
- buffer
- data
- area
- aforementioned
- buffers
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- 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)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Read Only Memory (AREA)
Abstract
本發明之其中一個實施形態,係提供一種能夠將必要的記憶體資源之量作削減的記憶體系統以及控制方法。
控制器,係從主機而收訊用以將資料序列性地寫入至第1區域中的第1指令。控制器,當存在有第1區域所被作分配的第1緩衝的情況時,係將第1資料儲存於第1緩衝中。控制器,當並不存在有第1緩衝,並且存在有空閒(free)之緩衝的情況時,係將第1區域分配給空閒的緩衝,並將第1資料儲存於第1區域所被作了分配的空閒之緩衝中。控制器,當並不存在有第1緩衝,並且並不存在有空閒(free)之緩衝的情況時,係將第1區域追加性地分配給複數之緩衝之中之為了進行資料之儲存的最後之更新為最早的緩衝處,並將第1資料儲存於前述第1區域所被追加性地分配的緩衝中。
Description
本發明之實施形態,係有關於具備有非揮發性記憶體之記憶體系統以及非揮發性記憶體之控制方法。
[關連申請案]
本申請案,係享受以日本專利申請2020-207741號(申請日:2020年12月15日)作為基礎申請之優先權。本申請案,係藉由參照此基礎申請案,而包含基礎申請案之所有的內容。
近年來,具備有非揮發性記憶體之記憶體系統係廣泛普及。作為此種記憶體系統之其中一者,具備有NAND型快閃記憶體之固態硬碟(SSD)係為周知。
作為用以進行像是SSD一般之記憶體系統與主機之間之通訊的邏輯性之介面用之規格,NVM Express
TM(NVMe
TM)係為周知。在NVMe規格之介面中,係被規定有分區名稱空間(zoned namespace)。在分區名稱空間中,記憶體系統之邏輯位址範圍,係被分割為複數之區域(zone)。
在記憶體系統中,為了將應分別被寫入至相異之區域中的資料分別緩衝至各區域之每一者處,係會有準備有與區域之數量相同數量之緩衝的情況。於此情況,當在記憶體系統中而需要進行管理的區域之數量為多的情況時,為了此些之區域,係會成為消耗有多量的記憶體資源。
故而,在記憶體系統中,係要求實現一種能夠將必要的記憶體資源之量作削減之新的技術。
本發明之其中一個實施形態所欲解決之問題,係在於提供一種能夠將必要的記憶體資源之量作削減的記憶體系統以及控制方法。
若依據實施形態,則記憶體系統,係具備有:非揮發性記憶體;和控制器,係被與非揮發性記憶體作電性連接,並構成為使用藉由NVM express規格而被規定的被分割為複數之區域之分區名稱空間(zoned namespace)來對於非揮發性記憶體作控制。控制器,係對於複數之緩衝作管理。複數之緩衝之數量,係較複數之區域之數量而更少。控制器,係從主機而收訊身為用以將資料序列性地寫入至複數之區域中之第1區域中的指令並且被與第1資料相互附加有關連之第1指令。控制器,係因應於收訊了第1指令一事,而當在複數之緩衝中存在有第1區域所被分配的第1緩衝的情況時,將第1資料儲存於第1緩衝中。控制器,係因應於收訊了第1指令一事,而當第1緩衝並未存在於複數之緩衝之中,並且在複數之緩衝之中係存在有尚未被分配有任何之區域之空閒(free)之緩衝的情況時,將第1區域分配至空閒之緩衝,並將第1資料儲存於第1區域所被作分配的空閒之緩衝中。控制器,係因應於收訊了第1指令一事,而當第1緩衝並未存在於複數之緩衝之中,並且在複數之緩衝之中係並不存在有尚未被分配有任何之區域之空閒之緩衝的情況時,將第1區域,追加性地分配至複數之緩衝之中之為了進行資料之儲存的最後之更新為最早的緩衝處,並將第1資料儲存於第1區域所被追加性地分配的緩衝中。
以下,參考圖面,針對實施形態作說明。
圖1,係為對於包含有實施形態的記憶體系統之資訊處理系統1之構成例作展示之區塊圖。資訊處理系統1,係包含有主機(主機裝置)2與SSD3。
記憶體系統,係身為以對於非揮發性記憶體而寫入資料並從非揮發性記憶體而將資料讀出的方式所構成之半導體儲存裝置。記憶體系統,例如,係可作為包含有NAND型快閃記憶體5之SSD(固態硬碟)3而被實現。
SSD3,係亦可經由纜線或網路而被與主機2作連接。或者是,SSD3,係亦可內藏於主機2中。作為用以將主機2與SSD3作連接的邏輯介面之規格,係可使用NVMe規格。
主機2,係身為以對於SSD3進行控制的方式所構成之資訊處理裝置。在主機2之例中,係包含有個人電腦、伺服器電腦、行動終端、車載機器。
主機2,係包含有處理器101和記憶體102。處理器101,係身為以對於主機2內之各組件的動作進行控制的方式而被構成之CPU(Central Processing Unit)。處理器101,係實行從被與主機2作連接之其他之儲存裝置或SSD3而被載入至記憶體102中的各種之軟體(主機軟體)。在主機軟體中,係包含有作業系統、檔案系統、裝置驅動、應用程式等。
記憶體102,係身為被設置在主機2中之主記憶體。記憶體102,例如,係藉由如同DRAM(Dynamic Random Access Memory)一般之隨機存取記憶體而被實現。記憶體102之記憶區域的一部分,係為了儲存1個以上的SQ/CQ對(pair)而被使用。各SQ/CQ對,係包含有1個以上的提交佇列(SQ,Submission Queue)和被與此1個以上的提交佇列(SQ)相互附加有關連之完成佇列(CQ,Completion Queue)。
提交佇列(SQ),係身為為了對於SSD3發行指令所使用的佇列。完成佇列(CQ),係身為為了從SSD3而收訊代表所結束了的指令之狀態之「指令結束」所使用的佇列。
主機2,係經由在各SQ/CQ對中所包含之1個以上的提交佇列(SQ)來對於SSD3送訊各種的指令。
SSD3,係構成為準據於NVMe來實行與主機2之間之通訊。
在此NVMe規格之介面中,係包含有「經過有PCI express
TM(PCIe
TM)匯流排之介面(NVMe over PCIe)」、和「經過有像是乙太網路
TM一般之網路的介面(NVMe over Fabrics:NVMe-oF)」。SSD3所準據的介面規格,係可為NVMe over PCIe,亦可為NVMe-oF。
在NVMe規格中,係可使用複數之名稱空間。複數之名稱空間,係身為相互獨立之邏輯位址範圍。邏輯位址,係身為為了對於SSD3之記憶體空間內而邏輯性地指定位址而被主機2所使用的位址。作為此邏輯位址,係可使用邏輯區塊位址(logical block address)。各名稱空間,係為了對於SSD3進行存取而被主機2所使用。藉由使用複數之名稱空間,係能夠使1個的儲存裝置如同身為複數之儲存裝置一般地來動作。
進而,在NVMe規格中,係被規定有分區名稱空間(zoned namespace)。分區名稱空間,係身為被分割成了複數的區域之名稱空間。各區域,係包含相連續之邏輯位址。
SSD3,係對於藉由NVMe規格所被規定的分區名稱空間有所支援。SSD3,係構成為將資料序列性地寫入至被包含於分區名稱空間中的複數之區域之各者處。
SSD3,係具備有控制器4、和非揮發性記憶體(例如,NAND型快閃記憶體5)。SSD3,係可亦具備有隨機存取記憶體,例如具備有DRAM6。
NAND型快閃記憶體5,係包含有記憶體胞陣列,該記憶體胞陣列,係包含有被配置為矩陣狀之複數之記憶體胞。NAND型快閃記憶體5,係可為2維構造之快閃記憶體,亦可為3維構造之快閃記憶體。
NAND型快閃記憶體5之記憶體胞陣列,係包含有複數之區塊BLK0~BLKx-1。區塊BLK0~BLKx-1之各者,係包含複數之頁面(於此係為頁面P0~Py-1)。各頁面,係包含被與同一字元線作了連接的複數之記憶體胞。區塊BLK0~BLKx-1之各者,係身為將資料刪除的資料刪除動作之單位。頁面P0~Py-1之各者,係身為資料寫入動作以及資料讀取動作之單位。
控制器4,係亦可藉由如同System-on-a-chip(SoC)一般之電路來實現之。
控制器4,係藉由對於NAND型快閃記憶體5作控制,來對於「將從主機2所收訊了的資料寫入至NAND型快閃記憶體中之資料寫入動作」和「將經由主機2而被要求的讀出對象資料從NAND型快閃記憶體5而讀出之資料讀出動作」作控制。控制器4,雖係並不被限定於此,但是,係經由準據於Toggle NAND快閃介面或開放NAND快閃介面(ONFI)之NAND介面13,而被與NAND型快閃記憶體5作電性連接。控制器4,係作為以對於NAND型快閃記憶體5作控制的方式所構成之記憶體控制器而動作。
控制器4,係能夠作為以實行NAND型快閃記憶體5之資料管理以及區塊管理的方式所構成之快閃記憶體轉換層(Flash Translation Layer,FTL)而起作用。
藉由FTL而被實行的資料管理,係包含有(1)對於代表邏輯位址之各者與NAND型快閃記憶體5之物理位址之各者之間的對應關係之映射資訊之管理、(2)用以將NAND型快閃記憶體5之限制(例如,頁面單位之讀取/寫入動作和區塊單位之刪除動作)作隱蔽之處理等。對應於某一邏輯位址之物理位址,係代表對應於此邏輯位址之資料所被作寫入的非揮發性記憶體5內之物理性的記憶位置。之後,控制器4,係使用邏輯物理位址轉換表(logical-to-physical address translation table:L2P表)31,來對於邏輯位址之各者與物理位址之各者之間的對應關係作管理。如同上述一般,作為邏輯位址,係可使用邏輯區塊位址(LBA)。
進而,控制器4,係構成為使用藉由NVMe規格所被作了規定的分區名稱空間,來對於NAND型快閃記憶體5作控制。
圖2,係為對於藉由NVMe規格所被規定之1個的分區名稱空間之構成例作展示之圖。
各分區名稱空間之邏輯位址範圍,係從LBA 0而開始。例如,圖2之分區名稱空間之邏輯區塊位址範圍,係包含有LBA 0~LBA z-1之相連續之z個的LBA。此分區名稱空間,係被分割成區域0~區域k之k+1個的區域。此些之區域之各者,係包含相連續之非重複的邏輯區塊位址。
更詳細而言,區域0、區域1、…、區域k,係被分配至分區名稱空間處。LBA 0,係代表區域0之最小的LBA,LBA z-1,係代表區域k之最大的LBA。區域1,係包含LBA m、LBA m+1、…、LBA n-2、LBA n-1。LBA m,係代表區域1之最小的LBA,LBA n-1,係代表區域1之最大的LBA。
控制器4,例如,係能夠對於NAND型快閃記憶體5內之複數之記憶區域(物理記憶區域)之各者與複數之區域之各者之間的映射作管理。於此情況,控制器4,係亦可將在NAND型快閃記憶體5中所包含的複數之區塊之中之至少1個的區塊,分配為1個的區域用之物理記憶區域。
在控制器4從主機2而收訊了要求將資料寫入至特定之區域中之指令的情況時,控制器4係將資料序列性地寫入至藉由所收訊了的指令所指定之區域中、亦即是被分配至此特定之區域處的NAND型快閃記憶體5內之特定之物理記憶區域中。其結果,與被包含於此特定之區域中之連續之LBA相對應的資料,係被序列性地寫入至被分配至此特定之區域處的特定之物理記憶區域內之連續之物理記憶位置處。
故而,在進行與被包含於某一區域中之連續之LBA相對應的資料之序列讀取時,控制器4,係僅需要對於被作為此區域用之物理記憶區域而作了分配之至少1個的區塊進行讀取存取,便能夠有效率地實行此些之資料之序列讀取。
圖3,係為對於在SSD3處所被實行的寫入指標(write pointer)之更新動作作展示之圖。
SSD3之控制器4,係對於與複數之區域各別相互對應的複數之寫入指標作管理。各寫入指標,係代表與該寫入指標相對應之區域內之下一個的可寫入LBA。若是將資料序列性地寫入至某一區域中,則控制器4,係將與此區域相對應的寫入指標之值,作與被寫入了資料的邏輯區塊之數量相對應之量的增加。
於此,以區域1作為例子,來對於寫入指標之更新動作作說明。區域1,係包含有LBA m~LBA n-1之邏輯區塊位址範圍。LBA m,係身為區域1之最小的邏輯區塊位址,亦即是身為區域1之區域起始邏輯區塊位址(ZSLBA)。
當區域1係身為並未包含有效資料之空白(empty)狀態的情況時,與區域1相對應之寫入指標,係展現身為區域1之區域起始邏輯區塊位址的LBA m。當藉由用以將資料寫入至區域1中之指令所指定的寫入目標位置(開始LBA)為與區域1之寫入指標(於此,係為LBA m)相等的情況時,控制器4,係將資料寫入至從該被指定了的開始LBA起而開始的LBA範圍、例如LBA m與LBA m+1中。控制器4,係以使區域1之寫入指標之值作與被寫入了資料的邏輯區塊之數量相對應之數量之增加的方式,來更新區域1之寫入指標。例如,當在LBA m與LBA m+1中被寫入有資料的情況時,控制器4,係將寫入指標之值更新為LBA m+2。LBA m+2,係代表區域1內之未寫入LBA之中之最小的LBA、亦即是代表區域1內之下一個的可寫入LBA。
回到圖1之說明。控制器4,係除了上述的NAND介面13之外,亦包含有主機介面11、CPU12、DRAM介面14、直接記憶體存取控制器(DMAC)15、緩衝電路16、ECC(Error Correction Code)編碼/解碼部17。此些之主機介面11、CPU12、NAND快閃介面13、DRAM介面14、DMAC15、緩衝電路16、ECC編碼/解碼部17,係經由匯流排10而被相互作連接。
主機介面11,係為以實行與主機2之間之通訊的方式所構成之主機介面電路。主機介面11,例如,係身為PCIe控制器。或者是,當SSD3係身為將網路介面控制器作內藏之構成的情況時,主機介面11,係亦可作為網路介面控制器之一部分而被實現。
主機介面11,係準據於NVMe規格來實行與主機2之間之通訊。主機介面11,係包含有仲裁(arbitration)機構。此仲裁機構,係身為用以從在主機2之記憶體102上所存在之複數之提交佇列中而選擇指令所應被提取(fetch)之提交佇列的機構。仲裁機構,係可身為循環(Round-Robin)仲裁機構,亦可身為加權循環(weighted Round-Robin)仲裁機構。
主機介面11,係從主機2而收訊(提取)各種之指令。在此些之指令中,係包含有藉由NVMe規格所被規定的分區名稱空間指令組。分區名稱空間指令組,係包含有為了讓主機2成為能夠使用分區名稱空間來對於SSD3進行控制的複數種類之指令。
在此些之複數種類之指令中,係包含有用以將資料序列性地寫入至區域中的指令。此指令,係至少包含有對於資料所應被作寫入的區域作指定之參數。
例如,藉由NVMe規格之分區名稱空間指令組所被規定的位址特定寫入指令,係對於資料所應被作寫入的區域與此區域內的寫入目標位置(開始LBA)之雙方作指定。位址特定寫入指令之例,係包含有寫入(write)指令、寫零(write zero)指令、複製(copy)指令。
例如,作為位址特定寫入指令而被作使用的寫入指令,係身為用以將應寫入之資料(使用者資料)寫入至NAND型快閃記憶體5中之指令(寫入要求)。此寫入指令,係包含有對於資料所應被作寫入之名稱空間作指定的名稱空間識別符、和開始LBA、和此資料之容量(應被作寫入的邏輯區塊之數量)、代表此資料所被儲存的主機2之記憶體102內之位置的資料指標(緩衝位址)等。寫入指令,由於係並不包含有對於區域起始邏輯區塊位址(ZSLBA)作指定的專用之參數(欄位),因此,被包含於寫入指令中之開始LBA,係作為對於「資料所應被作寫入的區域」與「此區域內的寫入目標位置」之雙方作指定的參數而被使用。於此情況,在寫入要求中所包含的開始LBA之上位位元部,係作為被與此寫入指令相互附加有關連之寫入資料所應被寫入的區域之ZSLBA而被使用。在寫入要求中所包含的開始LBA之下位位元部,係代表此區域內之寫入目標位置。以下,係將作為位址特定寫入指令而被作使用的寫入指令,單純稱作寫入指令。
當藉由要求對於區域1之寫入的寫入指令所指定之開始LBA並非為與區域1之寫入指標所展示之LBA相等的情況時,控制器4,係將此寫入指令之處理中止(abort)。於此情況,控制器4,係將代表「與此寫入指令相對應之寫入處理之錯誤」的「指令結束」,回送至主機2處。藉由此,係能夠防止在各區域處而實行並非為序列性之寫入處理的情形。
主機2,當對於SSD3而發行了要求對於某一區域之寫入之寫入指令的情況時,係直到從SSD3而收訊了對應於此寫入指令之「指令結束」為止均無法發行對於與此區域相同之區域之下一個的寫入指令。此係因為,在NVMe規格中,由於係容許讓儲存裝置以任意之順序來實行指令,因此,若是起因於儲存裝置而導致複數之寫入指令的被作處理之順序有所替換,則係會有在此區域內的寫入處理中而發生錯誤的情況之故。
接著,針對藉由NVMe規格之分區名稱空間指令組所被作了規定的區域附加(append)指令作說明。
區域附加指令,係與寫入指令相同的,身為用以將應寫入之資料(使用者資料)寫入至NAND型快閃記憶體5中之指令(寫入要求)。但是,區域附加指令,與寫入指令相異地,係僅對於資料所應被作寫入的區域作指令,而並不指定此區域內的寫入目標位置。
區域內之寫入目標位置,係以會使此區域內之寫入被序列性地實行的方式而藉由SSD3之控制器4來自動性地被決定。主機2,係被容許將對於相同之區域作指定的複數之區域附加指令同時地對於SSD3作發行。故而,相較於使用寫入指令的情況,係成為能夠謀求寫入性能之提升。
區域附加指令,例如,係包含有對於資料所應被作寫入之名稱空間作指定的名稱空間識別符、和代表資料所應被作寫入的區域之最小LBA之區域起始邏輯區塊位置(ZSLBA)、和此資料之容量(應被作寫入的邏輯區塊之數量)、代表此資料所被儲存的主機2之記憶體102內之位置的資料指標(緩衝位址)等。主機2,係能夠將對於相同之區域作指定的複數之區域附加指令,經由1個以上的提交佇列來同時地對於SSD3作發行。
在從主機2而收訊了某一區域附加指令的情況時,控制器4,係參照與藉由此所收訊了的區域附加指令而被作了指定的區域相對應之寫入指標。之後,控制器4,係將藉由此寫入指標所展示之下一個的可寫入邏輯區塊位址,決定為此被作了指定的區域內之寫入目標位置。控制器4,係將被與此所收訊了的區域附加指令相互附加有關連之資料,寫入至此被作了指定的區域內之被作了決定的寫入目標位置處。之後,控制器4,係將包含有代表此資料所被作了寫入的寫入目標位置(LBA)之資訊之「指令結束」,對於主機2作送訊。控制器4,係藉由此,而將被與所收訊了的區域附加指令相互附加有關連之資料的所被作了寫入之LBA,對於主機2作通知。
在後續之說明中,係作為用以將資料序列性地寫入至區域中的指令,而主要以使用區域附加指令的情況來作說明。另外,替代區域附加指令,係亦可將對於區域與區域內之寫入目標位置之雙方作指定的寫入指令,作為用以將資料序列性地寫入至此區域中的指令來使用。
NAND介面13,係身為以在CPU12之控制之下而對於NAND型快閃記憶體5作控制的方式所構成之NAND控制器。當NAND型快閃記憶體5係由複數之NAND型快閃記憶體晶片(NAND型快閃記憶體晶粒)所構成的情況時,NAND介面13,係亦可經由複數之通道(Ch)而與此些之NAND型快閃記憶體晶片之各者作連接。
緩衝電路16,係包含複數之緩衝(緩衝#0、緩衝#1、…、緩衝#q)。緩衝#0~#q,例如係身為SRAM(Static Random Access Memory)。緩衝#0~#q,係被分配至緩衝電路16之記憶區域內。或者是,緩衝#0~#q,係亦可被分配至DRAM6之記憶區域內。
緩衝#0~#q之數量,係可設定為較在分區名稱空間中所包含之區域的數量而更少之數量。緩衝#0~#q之各者,係為了將應被寫入至任意之1個以上的區域中之資料暫時性地作儲存而被使用。
DRAM介面14,係身為以在CPU12之控制之下來對於DRAM6進行控制的方式所構成之DRAM控制器。
DRAM6之記憶區域之一部分,係亦可作為記憶L2P表31以及緩衝更新履歷表32之區域來利用之。緩衝更新履歷表32,係為了管理履歷資訊而被作使用。履歷資訊,係代表緩衝#0~#q為了進行資料之儲存而被作更新的順序。
DMAC15,係在CPU12之控制之下,實行在主機2之記憶體102與緩衝#0~#q之各者之間的資料傳輸。
ECC編碼/解碼部17,在應將資料對於NAND型快閃記憶體5作寫入時,係藉由將資料(應寫入之資料)作編碼, 來對於此資料而將錯誤訂正碼(ECC)作為冗餘碼而作附加。在從NAND型快閃記憶體5而使資料被讀出時,ECC編碼/解碼部17,係使用被附加於被讀出了的資料處之ECC,來進行此資料之錯誤訂正。
CPU12,係身為以對於主機介面11、NAND介面13、DRAM介面14、DMAC15、緩衝電路16、ECC編碼/解碼部17作控制的方式所構成之處理器。CPU12,係將被儲存於NAND型快閃記憶體5或者是未圖示之ROM中的控制程式(韌體)載入至DRAM6,之後藉由實行此韌體來進行各種之處理。
CPU12,係可作為資料/緩衝分配控制部21以及資料/區域分配控制部22而起作用。此些之資料/緩衝分配控制部21以及資料/區域分配控制部22之各者的一部分或全部,係亦可藉由控制器4內之專用硬體來實現。
在控制器4從主機2而收訊了區域附加指令時,資料/緩衝分配控制部21,係決定為了將被與所收訊了的區域附加指令相互附加有關連之資料暫時性地作儲存而被使用的緩衝(儲存目標緩衝)。於此情況,為了成為能夠將資料並不集中於特定之緩衝處地來分散到緩衝#0~#q處,並且能夠使應被寫入至相同之區域中的資料被儲存在相同之緩衝中,資料/緩衝分配控制部21,係實行以下之處理。
當「已被分配有藉由所收訊了的區域附加指令而被作了指定之區域的緩衝」並未存在於緩衝#0~#q之中,並且在緩衝#0~#q之中係存在有空閒之緩衝的情況時,資料/緩衝分配控制部21,係將此空閒之緩衝決定為儲存目標緩衝,並將藉由所收訊了的區域附加指令而被作了指定之區域分配給此空閒之緩衝。空閒之緩衝,係為並未被分配有任何之區域的緩衝。之後,資料/緩衝分配控制部21,係從主機2之記憶體102而取得被與所收訊了的區域附加指令相互附加有關連之資料,並將所取得了的資料儲存在被決定為儲存目標緩衝的此空閒之緩衝中。
當「已被分配有藉由所收訊了的區域附加指令而被作了指定之區域的緩衝」係存在於緩衝#0~#q之中的情況時,資料/緩衝分配控制部21,係將此緩衝決定為儲存目標緩衝。之後,資料/緩衝分配控制部21,係從主機2之記憶體102而取得被與所收訊了的區域附加指令相互附加有關連之資料,並將所取得了的資料儲存在被決定為儲存目標緩衝的此緩衝中。
當在緩衝#0~#q之各者中係已被分配有區域,並且「已被分配有藉由所收訊了的區域附加指令而被作了指定之區域的緩衝」並未存在於緩衝#0~#q之中的情況時,資料/緩衝分配控制部21,係將緩衝#0~#q之中之為了進行資料之儲存所進行的最後之更新為最早的緩衝,決定為應儲存被與所收訊了的區域附加指令相互附加有關連之資料的儲存目標緩衝。於此,為了進行資料之儲存所進行的最後之更新為最早的緩衝,係指緩衝#0~#q之中的從為了進行資料之儲存所進行的最後之更新起而經過了最長的時間之緩衝。資料/緩衝分配控制部21,係將藉由所收訊了的區域附加指令而被作了指定之區域,追加性地分配至所決定了的儲存目標緩衝處。之後,資料/緩衝分配控制部21,係從主機2之記憶體102而取得被與所收訊了的區域附加指令相互附加有關連之資料,並將所取得了的資料儲存在所決定了的儲存目標緩衝中。
資料/區域分配控制部22,係將(i)被儲存於緩衝#0~#q之任一者中的資料之總容量係成為了對於NAND型快閃記憶體5之寫入單位(於後,係單純稱作寫入單位)以上的區域、或者是(ii)「所對應之資料為被儲存在全滿狀態之緩衝中之所有的區域」中之所對應之資料的總容量為最大之區域,選擇為清除(flush)對象區域。
於此,全滿狀態之緩衝,係身為該緩衝全體為被資料所填滿的緩衝。若是在緩衝#0~#q之中之任一者的緩衝中被積蓄有該緩衝容量之量的資料,則此緩衝係成為全滿狀態之緩衝。清除對象區域,係指應被實行清除(flush)處理之區域。清除處理,係身為將被儲存於緩衝中之資料從緩衝而讀出並寫入至NAND型快閃記憶體5中的處理。
寫入單位,例如,係可被設定為代表頁面容量之倍數的容量。頁面容量,係代表能夠被儲存在1個的頁面中之資料之容量。寫入單位,係可被設定為與頁面容量相同之容量,亦可被設定為頁面容量之2倍的容量,又,亦可被設定為頁面容量之3倍以上的容量。
或者是,寫入單位,例如,係亦可被設定為區塊容量之倍數。區塊容量,係代表能夠被儲存在1個的區塊中之資料之容量。寫入單位,係可被設定為與區塊容量相同之容量,亦可被設定為區塊容量之2倍的容量,又,亦可被設定為區塊容量之3倍以上的容量。
緩衝#0~#q之各者之容量,係被設定為較寫入單位而更大的容量。當被儲存於某一緩衝中的某一區域之資料之總容量係成為了寫入單位以上的情況時,資料/區域分配控制部22,係將此區域選擇為清除對象區域。
也會有在「某一緩衝內之每一者之區域之資料的容量均並未到達寫入單位」的狀態下,此緩衝便成為了全滿的情形。於此情況,資料/區域分配控制部22,係將被儲存於此全滿狀態之緩衝中的所有之區域之中之「所對應的資料之總容量為最大」的區域,選擇為清除對象區域。
在選擇了清除對象區域之後,資料/區域分配控制部22,係從被儲存在「所選擇了的清除對象區域之資料所被作儲存的緩衝」之中之所有的區域之資料之中,而僅將清除對象區域之資料抽出。於此情況,資料/區域分配控制部22,係在將除了清除對象區域以外的其他之區域之資料維持於此緩衝中的狀態下,而僅將清除對象區域之資料抽出。之後,資料/區域分配控制部22,係將所抽出了的資料,寫入至被分配給清除對象區域的NAND型快閃記憶體5內之特定之物理記憶區域中。
為了實現「在將除了清除對象區域以外的其他之區域之資料維持於緩衝中的狀態下,而僅將清除對象區域之資料抽出」之處理,緩衝#0~#q之各者,係亦可作為附加有超前控制功能之先進先出緩衝(FIFO緩衝)而被實現。
附加有超前控制功能之FIFO緩衝,例如,係包含有用以將資料作輸入之輸入埠、和用以將資料輸出之輸出埠、以及用以將輸出埠與輸入埠作連接之通路(pass),此通路,係亦被稱作迴接通路(loopback pass)。
在某一FIFO緩衝係身為全滿狀態的情況時、或者是當被儲存於某一FIFO緩衝中之特定之區域之資料的總容量係成為了寫入單位以上的情況時,資料/區域分配控制部22,係判定能夠從此FIFO緩衝而讀出之下一個的資料是否身為清除對象區域之資料。能夠從此FIFO緩衝而讀出之下一個的資料,係代表被儲存於此FIFO緩衝中之資料中的最為古老的資料。
當能夠從FIFO緩衝而讀出之下一個的資料乃是身為清除對象區域以外之其他之區域之資料的情況時,資料/區域分配控制部22,係實行用以將其他之區域之資料回寫至FIFO緩衝中的處理。於此情況,資料/區域分配控制部22,係在將FIFO緩衝之迴接通路設為有效的狀態下,實行針對FIFO緩衝之讀出動作以及寫入動作。藉由此,資料/區域分配控制部22,係將「從FIFO緩衝而將其他之區域之資料讀出的動作」和「將被讀出了的該其他之區域之資料回寫至FIFO緩衝中的動作」平行地實行。
當能夠從FIFO緩衝而讀出之下一個的資料乃是身為清除對象區域之資料的情況時,資料/區域分配控制部22,係並不將清除對象區域之資料回寫至FIFO緩衝中地而實行用以將清除對象區域之資料從FIFO緩衝而讀出的通常之讀出。於此情況,資料/區域分配控制部22,係藉由在將FIFO緩衝之迴接通路設為無效的狀態下來實行讀出動作,而將清除對象區域之資料從FIFO緩衝而讀出。
資料/區域分配控制部22,係因應於需要而選擇性地實行上述之用以進行回寫之處理和上述之通常之讀出處理,直到清除對象區域之資料的全部均被從此FIFO緩衝而讀出為止。
如此這般,藉由將FIFO緩衝之迴接通路設為有效或者是無效,資料/區域分配控制部22,係能夠實行「在將較清除對象區域之資料而更古老的資料維持於FIFO緩衝之中的狀態下,僅將清除對象區域之資料從FIFO緩衝而讀出」的處理(超前處理)。藉由此超前處理,係成為能夠在將除了清除對象區域以外的其他之區域之資料維持於FIFO緩衝中的狀態下,而僅將清除對象區域之資料從FIFO緩衝而抽出。
接著,針對本實施形態之緩衝處理的詳細內容作說明。在本實施形態之緩衝處理的詳細之說明之前,首先,針對比較例之緩衝處理作說明。
圖4,係對於在比較例之記憶體系統處所被實行的緩衝處理作展示。於此,作為在比較例之記憶體系統(SSD)處所被實行的緩衝處理,係針對使用與區域之數量相同數量的緩衝之緩衝處理來進行說明。
如同圖4中所示一般,在比較例中,複數之區域與複數之緩衝,係一對一地相互對應。在比較例之SSD中所被管理的區域,係為區域0~區域k之k+1個的區域。於此情況,係需要在比較例之SSD內而準備緩衝#0~緩衝#k之k+1個的緩衝。
緩衝#0,係僅為了將應被寫入至區域0中之資料作儲存而被使用。緩衝#1,係僅為了將應被寫入至區域1中之資料作儲存而被使用。緩衝#2,係僅為了將應被寫入至區域2中之資料作儲存而被使用。緩衝#3,係僅為了將應被寫入至區域3中之資料作儲存而被使用。緩衝#k,係僅為了將應被寫入至區域k中之資料作儲存而被使用。
若是對於區域0作指定的區域附加指令被從主機而發行至比較例之SSD處,則比較例之SSD之輸入控制部,係將被與此區域附加指令相互附加有關連之資料儲存於緩衝#0處。同樣的,若是對於區域1作指定的區域附加指令被從主機而發行至SSD處,則輸入控制部,係將被與此區域附加指令相互附加有關連之資料儲存於緩衝#1處。若是在緩衝#0~#k之中之其中一者的緩衝中被積蓄有特定量以上之量的資料,則針對「與此其中一個的緩衝相對應之區域」的序列寫入係被開始。
在圖4所示之比較例之緩衝處理中,由於係需要與區域之數量相同之數量的緩衝,因此,當在SSD處而需要管理的區域之數量為多的情況時,係成為需要多數的緩衝,亦即是成為需要多量的記憶體資源。
接著,作為關於比較例之其他的緩衝處理,針對採用有將應在SSD內而準備的緩衝之數量單純地作減少的構成的情況時之緩衝處理來進行說明。圖5,係對於在比較例之記憶體系統處所被實行的其他之緩衝處理作展示。
如同圖5中所示一般,在比較例中,於SSD中所被管理的區域,係為區域0~區域k之k+1個的區域。在SSD內而準備的緩衝,係為緩衝#0~緩衝#3之4個的緩衝。於此,假設緩衝之數量(=4)係較區域之數量(=k+1)而更少。因此,緩衝#0~#3之各者,係成為被數個的區域所共有。
作為成為能夠使緩衝#0~#3之各者被數個的區域所共有之方法,係存在有「以微細的單位來將各區域之資料寫入至NAND型快閃記憶體中」之第1方法、和「等到特定量之資料被積蓄於緩衝中之後,再以特定量之資料之單位來將各區域之資料寫入至NAND型快閃記憶體中」之第2方法。
在第1方法中,例如,在區域0~3之資料分別被儲存於緩衝#0~#3中的狀態下,當從主機2而收訊了對於區域0~3以外之區域(例如區域#k)作指定之區域附加指令的情況時,係成為需要進行對於被儲存於緩衝#0~#3之其中一者中的資料之清除處理。
例如,當區域#k之資料應被儲存在緩衝#0中的情況時,輸出控制部,係實行針對已被儲存在區域#0中的區域0之資料之清除處理。於此情況,例如就算是在已被儲存於區域#0中的區域0之資料之容量係相對性而言為較小的情況時,此區域0之資料也會被從緩衝#0而讀出。之後,被讀出了的區域0之資料,係被寫入至被分配給區域0的NAND型快閃記憶體5內之區塊中。
在第1方法中,係能夠防止相異區域之資料混合存在於1個的緩衝中的情形。但是,在第1方法中,係以微細之單位而使各區域之資料被寫入至NAND型快閃記憶體的區塊中。因此,從對於某一區域之寫入被開始起直到此區塊全體被資料所寫滿為止,係會有需要耗費較多之時間的可能性。若是「某一區塊被部分性地作了寫入的狀態」被長期間地維持,則會有導致被寫入至此區塊中之資料之信賴性降低的情形。又,若是「被部分性地作了寫入的狀態」之區塊的數量增加,則也會有導致可作為新的寫入目標區塊來利用的區塊被耗盡之虞。
在第2方法中,係於「在各緩衝中積蓄了特定量之資料」之後,進行對於NAND型快閃記憶體之寫入。因此,在1個的緩衝中係成為混合存在有相異區域之資料。於此情況,相異區域之資料的混合存在,係會有造成「相同區域之資料分散存在於1個的緩衝內之相異之各式各樣的位置處」的斷片化之可能性。若是產生有此種斷片化,則與第1方法相同的,輸出控制部係成為需要以微細之單位而將各區域之資料寫入至NAND型快閃記憶體中。
接著,針對實施形態之緩衝處理作說明。圖6,係為對於在實施形態之SSD3處所被實行的緩衝處理作展示之圖。
在圖6中,藉由SSD3而被管理的區域,係為區域0~區域7之8個的區域。在SSD3處而準備的緩衝,係為緩衝#0~緩衝#3之4個的緩衝。於此所展示之區域之數量以及緩衝之數量,係僅為例示,區域之數量以及緩衝之數量,係可為較於此所展示之數量而更大的數量,亦可為更小之數量。但是,緩衝之數量係較區域之數量而更少。
緩衝#0,係包含有先進先出(FIFO)緩衝201、和清除(flush)控制部202、以及分配管理表203。同樣的,緩衝#1,係包含有FIFO緩衝211、和清除控制部212、以及分配管理表213。緩衝#2,係包含有FIFO緩衝221、和清除控制部222、以及分配管理表223。緩衝#3,係包含有FIFO緩衝231、和清除控制部232、以及分配管理表233。
FIFO緩衝201~231之各者,係為了將應被寫入至區域0~7之中之任意之1個以上的區域中之資料暫時性地作儲存而被使用。FIFO緩衝201~231之各者,係可作為附加有超前功能之FIFO緩衝而被實現。
清除控制部202~232之各者,係與資料/區域分配控制部22共同地,而實行用以將被儲存於FIFO緩衝中之資料寫入至NAND型快閃記憶體5中的清除處理。在本實施形態中,當被儲存於緩衝#0~#3之中之任意之1個的緩衝中之1個的區域之資料的總容量成為了寫入單位以上的情況時,亦即是,當被儲存於分別被包含在緩衝#0~#3中的FIFO緩衝201~231之中之任意之1個的FIFO緩衝中之1個的區域之資料之總容量成為了寫入單位以上的情況時,清除處理係被開始。
清除處理,當在緩衝#0~#3之中之某一緩衝成為了全滿的情況時、亦即是當分別被包含在緩衝#0~#3中的FIFO緩衝201~231之中之某一FIFO緩衝成為了全滿的情況時,也會被實行。亦即是,當任意之1個的FIFO緩衝成為了全滿的情況時,被儲存於此FIFO緩衝中的所有之區域之中之「所對應的資料之總容量為最大」的區域之資料,係被寫入至NAND型快閃記憶體5中。
清除控制部202~232之各者,係能夠判定緩衝#0~#3之中之所對應的緩衝是否滿足清除開始條件。在本實施形態中,當「被儲存於緩衝#0~#3之中之某一緩衝中之1個的區域之資料之總容量乃身為寫入單位以上」之條件被滿足的情況時,此緩衝係被判定為滿足清除開始條件。又,當「緩衝#0~#3之中之某一緩衝全體成為了被資料所寫滿之全滿狀態」的情況時,此緩衝亦係被判定為滿足清除開始條件。
另外,由於緩衝#0~#3之各者係構成為將資料儲存於在該緩衝內所包含的FIFO緩衝中,因此,緩衝#0~#3之各者之狀態,係與在緩衝#0~#3中所包含的FIFO緩衝201~231之各者之狀態相同。故而,判定緩衝#0~#3之各者是否滿足清除開始條件一事的處理,係亦可藉由判定FIFO緩衝201~231之各者是否滿足清除條件一事來實行之。以下,主要係針對「使清除控制部202~232之各者,判定FIFO緩衝201~231之中之所對應的FIFO緩衝是否滿足清除開始條件」的情況來作例示,而針對本實施形態之緩衝處理作說明。
亦即是,清除控制部202~232之各者,係判定所對應的FIFO緩衝是否滿足清除開始條件。在本實施形態中,當「被儲存於某一FIFO緩衝中之1個的區域之資料之總容量乃身為寫入單位以上」之條件被滿足的情況時,此FIFO緩衝係被判定為滿足清除開始條件。又,當「某一FIFO緩衝全體成為了被資料所寫滿之全滿狀態」的情況時,此FIFO緩衝亦係被判定為滿足清除開始條件。
分配管理表203~233之各者,係身為用以對於被分配至所對應的FIFO緩衝處之1個以上的區域之識別符作管理之管理表。例如,若是FIFO緩衝201被決定為區域0之資料所應被儲存的儲存目標緩衝,則區域0係被分配至FIFO緩衝201處。而,代表區域0之識別符,係被儲存在對應於FIFO緩衝201之分配管理表203中。
在初期狀態下,緩衝#0~#3之各者,係為空閒之緩衝。亦即是,在緩衝#0~#3中所包含的FIFO緩衝201~231之各者,係為空閒之FIFO緩衝。空閒之FIFO緩衝,係為並未被分配有任何之區域的FIFO緩衝。
當在FIFO緩衝201~231之各者為空閒的狀態下、亦即是當在緩衝#0~#3之各者為空閒的狀態下,而控制器4從主機2收訊了對於某一特定之區域作指定之區域附加指令的情況時,資料/緩衝分配控制部21,係將某一個的空閒之緩衝、例如將緩衝#0,決定為此特定之區域之資料所應被儲存的儲存目標緩衝。資料/緩衝分配控制部21,係將此特定之區域,分配至緩衝#0處。之後,資料/緩衝分配控制部21,係將被與所收訊了的區域附加指令相互附加有關連之資料,儲存在緩衝#0之FIFO緩衝201中。進而,資料/緩衝分配控制部21,係在緩衝#0之分配管理表203處,儲存代表此特定之區域之識別符。又,進而,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,儲存代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#0之識別符)。
當控制器4從主機2收訊了對於其他之特定之區域作指定之新的區域附加指令的情況時,資料/緩衝分配控制部21,係將某一個的空閒之緩衝、例如將緩衝#1,決定為此其他之特定之區域之資料所應被儲存的儲存目標緩衝。資料/緩衝分配控制部21,係將此其他之特定之區域,分配至緩衝#1處。之後,資料/緩衝分配控制部21,係將被與所收訊了的新的區域附加指令相互附加有關連之資料,儲存在緩衝#1之FIFO緩衝211中。進而,資料/緩衝分配控制部21,係在緩衝#1之分配管理表213處,儲存代表此其他之特定之區域之識別符。又,進而,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,儲存代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#1之識別符)。
如此這般,4個的區域係分別被分配至4個的緩衝#0~#3處、亦即是分別被分配至4個的FIFO緩衝201~231處。
在控制器4從主機2而收訊了對於已被分配至緩衝#0~#3之其中一者處之特定之區域作指定的區域附加指令的情況時,資料/緩衝分配控制部21,係將被與所收訊了
的區域附加指令相互附加有關連之資料,儲存在此特定之區域所已被作了分配的緩衝之FIFO緩衝處。
例如,在控制器4從主機2而收訊了對於與已被分配至緩衝#0處之區域相同之區域作指定的區域附加指令的情況時,資料/緩衝分配控制部21,係將被與此所收訊了的區域附加指令相互附加有關連之資料,儲存在緩衝#0之FIFO緩衝201處。又,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,儲存代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#0之識別符)。
在控制器4從主機2而收訊了對於與已被分配至4個的緩衝#0~#3處之4個的區域相異之新的區域作指定之區域附加指令的情況時,資料/緩衝分配控制部21,係藉由參照緩衝更新履歷表32,來決定為了進行資料之儲存所進行的最後之更新為最早的緩衝。資料/緩衝分配控制部21,係將此新的區域,追加性地分配至此所決定了的緩衝處。
例如,當為了進行資料之儲存所進行的最後之更新為最早的緩衝係身為緩衝#0的情況時,資料/緩衝分配控制部21,係將此新的區域,追加性地分配至緩衝#0處。之後,資料/緩衝分配控制部21,係將被與所收訊了的區域附加指令相互附加有關連之資料,儲存在緩衝#0之FIFO緩衝201中。進而,資料/緩衝分配控制部21,係在緩衝#0之分配管理表203處,儲存代表此新的區域之識別符。又,進而,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,儲存代表為了進行資料之儲存所最後被作了更新的緩衝之資
訊(於此,係為代表緩衝#0之識別符)。
如此這般,藉由將新的區域追加性地分配至為了進行資料之儲存所進行的最後之更新為最早的緩衝處,係能夠防止為了進行資料之儲存而被使用的緩衝過度集中於特定之緩衝處的情況,其結果,係能夠將應寫入至區域0~7中之資料分散至緩衝#0~#3處。
當FIFO緩衝201~231之任一者滿足了清除開始條件的情況時,資料/區域分配控制部22,係在將被儲存在此FIFO緩衝中的清除對象區域以外之區域之資料維持於此FIFO緩衝中的狀態下,從被儲存於此FIFO緩衝中之資料之中而僅抽出清除對象區域之資料。清除對象區域之資料,係身為被與對於清除對象區域作指定之1個以上的區域附加指令相互附加有關連之寫入資料。而,資料/區域分配控制部22,係將所抽出了的資料、亦即是將被與對於清除對象區域作指定之數個的區域附加指令相互附加有關連之寫入資料,寫入至從清除對象區域之下一個的可寫入LBA起而開始的邏輯區塊範圍中。藉由此,對於清除對象區域之序列寫入係被實行。
如同上述一般,在區域0~7之各者處,係被分配有NAND型快閃記憶體5內之物理記憶區域的其中一個。故而,在針對清除對象區域之寫入動作中,資料/區域分配控制部22,首先,係決定被分配給清除對象區域處的物理記憶區域、和此物理記憶區域內之寫入目標位置。之後,資料/區域分配控制部22,係將被與此些之區域附加指
令相互附加有關連之資料,以會以與此些之區域附加指令所被發行之順序相同的順序來配置在此物理記憶區域上的方式,來將此寫入資料,寫入至從此物理記憶區域內之寫入目標位置起而開始的連續之物理記憶位置處。
接著,參照圖7A~圖7D,針對實施形態之緩衝處理之例作說明。以下,與圖6相同的,係針對「藉由SSD3而被作管理的區域,係為區域0~區域7之8個的區域,在SSD3處所準備的緩衝,係為緩衝#0~緩衝#3之4個的緩衝」的情況作例示,來對於實施形態之緩衝處理進行說明。
圖7A,係為對於在SSD3處所被實行的緩衝處理之第1個的處理作展示之圖。
於此,對於「控制器4為依序從主機2而收訊了對於區域1作指定之2個的區域附加指令、和對於區域0作指定之3個的區域附加指令、和對於區域3作指定之1個的區域附加指令、以及對於區域4作指定之1個的區域附加指令」的情況作考慮。
資料/緩衝分配控制部21,係將藉由此些之所收訊了的區域附加指令而被作了指定之最初之4個的區域、亦即是區域1、區域0、區域3以及區域4,分別分配至緩衝#0、緩衝#1、緩衝#2以及緩衝#3處。
更詳細而言,控制器4,首先係從主機2而收訊對於區域1作指定之第1個的區域附加指令。係並不存在有已被分配有區域1之緩衝。因此,資料/緩衝分配控制部21,係將區域1,分配至並未被分配有任何的區域之緩衝#0處。資料/緩衝分配控制部21,係在緩衝#0之分配管理表203處,追加代表區域1之識別符。之後,資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域1作指定之第1個的區域附加指令相互附加有關連之資料的「zone1―D1」,並將所取得了的資料「zone1―D1」儲存在FIFO緩衝201中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,追加代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#0之識別符)。
控制器4,係從主機2而收訊對於區域1作指定之第2個的區域附加指令。由於在緩衝#0處係已被分配有區域1,因此,資料/緩衝分配控制部21,係將緩衝#0決定為被與對於區域1作指定之第2個的區域附加指令相互附加有關連之資料用之儲存目標緩衝。資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域1作指定之第2個的區域附加指令相互附加有關連之資料的「zone1―D2」,並將所取得了的資料「zone1―D2」儲存在FIFO緩衝201中。此時,在緩衝更新履歷表32處所最後被追加的緩衝之識別符,係為緩衝#0之識別符。因此,於此,係能夠將「在緩衝更新履歷表32處,追加資料「zone1-D2」所被作儲存的緩衝#0之識別符」之處理作省略。
另外,亦可構成為就算是在「為了進行資料之儲存所最後被作了更新的緩衝之識別符」為與「最後被追加至緩衝更新履歷表32處之緩衝之識別符」相同的情況時,亦將為了進行資料之儲存所最後被作了更新的緩衝之識別符追加至緩衝更新履歷表32中。以下,雖然並不限定於此,但是,係針對「僅當「為了進行資料之儲存所最後被作了更新的緩衝之識別符」為與「最後被追加至緩衝更新履歷表32處之緩衝之識別符」相異的情況時,才將為了進行資料之儲存所最後被作了更新的緩衝之識別符追加至緩衝更新履歷表32中」的情況作考慮。
控制器4,係從主機2而收訊對於區域0作指定之第1個的區域附加指令。由於係並不存在有已被分配有區域0之緩衝,因此,資料/緩衝分配控制部21,係將區域0,分配至並未被分配有任何的區域之緩衝#1處。資料/緩衝分配控制部21,係在緩衝#1之分配管理表213處,追加代表區域0之識別符。之後,資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域0作指定之第1個的區域附加指令相互附加有關連之資料的「zone0―D1」,並將所取得了的資料「zone0―D1」儲存在FIFO緩衝211中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,追加代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#1之識別符)。
控制器4,係從主機2而收訊對於區域0作指定之第2個的區域附加指令。由於在緩衝#1處係已被分配有區域0,因此,資料/緩衝分配控制部21,係將緩衝#1決定為被與對於區域0作指定之第2個的區域附加指令相互附加有關連之資料用之儲存目標緩衝。資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域0作指定之第2個的區域附加指令相互附加有關連之資料的「zone0―D2」,並將所取得了的資料「zone0―D2」儲存在FIFO緩衝211中。
控制器4,係從主機2而收訊對於區域0作指定之第3個的區域附加指令。由於在緩衝#1處係已被分配有區域0,因此,資料/緩衝分配控制部21,係將緩衝#1決定為被與對於區域0作指定之第3個的區域附加指令相互附加有關連之資料用之儲存目標緩衝。資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域0作指定之第3個的區域附加指令相互附加有關連之資料的「zone0―D3」,並將所取得了的資料「zone0―D3」儲存在FIFO緩衝211中。
控制器4,係從主機2而收訊對於區域3作指定之第1個的區域附加指令。由於係並不存在有已被分配有區域3之緩衝,因此,資料/緩衝分配控制部21,係將區域3,分配至並未被分配有任何的區域之緩衝#2處。資料/緩衝分配控制部21,係在緩衝#2之分配管理表223處,追加代表區域3之識別符。之後,資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域3作指定之第1個的區域附加指令相互附加有關連之資料的「zone3―D1」,並將所取得了的資料「zone3―D1」儲存在FIFO緩衝221中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,追加代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#2之識別符)。
控制器4,係從主機2而收訊對於區域4作指定之第1個的區域附加指令。由於係並不存在有已被分配有區域4之緩衝,因此,資料/緩衝分配控制部21,係將區域4,分配至並未被分配有任何的區域之緩衝#3處。資料/緩衝分配控制部21,係在緩衝#3之分配管理表233處,追加代表區域4之識別符。之後,資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域4作指定之第1個的區域附加指令相互附加有關連之資料的「zone4―D1」,並將所取得了的資料「zone4―D1」儲存在FIFO緩衝231中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,追加代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#3之識別符)。
圖7B,係為對於實施形態之緩衝處理之第2個的處理作展示之圖。
於此,對於「在收訊了於圖7A中所作了說明之7個的區域附加指令之後,控制器4為依序從主機2而收訊了對於區域1作指定之1個的區域附加指令、和對於區域3作指定之1個的區域附加指令、和對於區域4作指定之1個的區域附加指令、以及對於區域3作指定之1個的區域附加指令」的情況作考慮。
區域1、區域3以及區域4,係已分別被分配至緩衝#0、緩衝#2以及緩衝#3處。故而,資料/緩衝分配控制部21,係藉由實行與在圖7A中所作了說明的處理程序相同之處理程序,來將被與對於區域1作指定之區域附加指令相互附加有關連的資料「zone1―D3」、被與對於區域3作指定之區域附加指令相互附加有關連的資料「zone3―D2」、被與對於區域4作指定之區域附加指令相互附加有關連的資料「zone4―D2」以及被與對於區域3作指定之區域附加指令相互附加有關連的資料「zone3―D3」,分別儲存在緩衝#0之FIFO緩衝201、緩衝#2之FIFO緩衝221、緩衝#3之FIFO緩衝231以及緩衝#2之FIFO緩衝221中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,依序追加緩衝#0之識別符、緩衝#2之識別符、緩衝#3之識別符以及緩衝#2之識別符。
接著,針對「控制器4係從主機2而收訊了對於區域2作指定之第1個的區域附加指令」的情況作考慮。
係並不存在有已被分配有區域2之緩衝,並且也並不存在有空閒之緩衝。因此,資料/緩衝分配控制部21,係藉由參照緩衝更新履歷表32,來決定為了進行資料之儲存所進行的最後之更新為最早的緩衝。在緩衝更新履歷表32中,係作為履歷資訊,而儲存有代表「最後之更新為最早的緩衝,係身為緩衝#1,最後之更新為第2早的緩衝,係身為緩衝#0,最後之更新為第3早的緩衝,係身為緩衝#3,最後之更新為最新的緩衝,係身為緩衝#2」的資訊。
故而,資料/緩衝分配控制部21,係將區域2,追加性地分配至身為為了進行資料之儲存所進行的最後之更新為最早的緩衝之緩衝#1處。於此情況,資料/緩衝分配控制部21,係在緩衝#1之分配管理表213處,追加代表區域2之識別符。之後,資料/緩衝分配控制部21,係將身為被與對於區域2作指定之第1個的區域附加指令相互附加有關連之資料的「zone2―D1」,儲存在FIFO緩衝211中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,追加代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#1之識別符)。
接著,針對「控制器4係從主機2而收訊了對於區域2作指定之第2個的區域附加指令」的情況作考慮。
在緩衝#1處係已被分配有區域2。因此,資料/緩衝分配控制部21,係將緩衝#1決定為被與對於區域2作指定之第2個的區域附加指令相互附加有關連之資料用之儲存目標緩衝。資料/緩衝分配控制部21,係從主機2之記憶體102,而取得身為被與對於區域2作指定之第2個的區域附加指令相互附加有關連之資料的「zone2―D2」,並將所取得了的資料「zone2―D2」儲存在FIFO緩衝211中。
圖7C,係為對於實施形態之緩衝處理之第3個的處理作展示之圖。
於此,對於「在收訊了於圖7A中所作了說明之7個的區域附加指令以及於圖7B中所作了說明之6個的區域附加指令之後,控制器4首先依序從主機2而收訊了對於區域1作指定之2個的區域附加指令、和對於區域4作指定之2個的區域附加指令、以及對於區域2作指定之1個的區域附加指令」的情況作考慮。
區域1、區域4以及區域2,係已分別被分配至緩衝#0、緩衝#3以及緩衝#1處。故而,資料/緩衝分配控制部21,係將分別被與對於區域1作指定之2個的區域附加指令相互附加有關連之資料「zone1―D4」以及資料「zone1―D5」,儲存於緩衝#0之FIFO緩衝201中,並將分別被與對於區域4作指定之2個的區域附加指令相互附加有關連之資料「zone4―D3」以及資料「zone4―D4」,儲存於緩衝#3之FIFO緩衝231中,並且將被與對於區域2作指定之1個的區域附加指令相互附加有關連之資料「zone2―D3」,儲存於緩衝#1之FIFO緩衝211中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,依序追加緩衝#0之識別符、緩衝#3之識別符以及緩衝#1之識別符。
接著,針對「控制器4係從主機2而收訊了對於區域5作指定之第1個的區域附加指令」的情況作考慮。
係並不存在有已被分配有區域5之緩衝,並且也並不存在有空閒之緩衝。因此,資料/緩衝分配控制部21,係藉由參照緩衝更新履歷表32,來決定為了進行資料之儲存所進行的最後之更新為最早的緩衝。為了進行資料之儲存所進行的最後之更新為最早的緩衝,係為緩衝#2。
故而,資料/緩衝分配控制部21,係將區域5,追加性地分配至身為為了進行資料之儲存所進行的最後之更新為最早的緩衝之緩衝#2處。於此情況,資料/緩衝分配控制部21,係在緩衝#2之分配管理表223處,追加代表區域5之識別符。之後,資料/緩衝分配控制部21,係將身為被與對於區域5作指定之第1個的區域附加指令相互附加有關連之資料的「zone5―D1」,儲存在FIFO緩衝221中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,追加代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#2之識別符)。
接著,控制器4,係從主機2而收訊對於區域5作指定之第2個的區域附加指令、和對於區域5作指定之第3個的區域附加指令。
在緩衝#2處係已被分配有區域5。因此,資料/緩衝分配控制部21,係將身為被與對於區域5作指定之第2個的區域附加指令相互附加有關連之資料的「zone5―D2」、和身為被與對於區域5作指定之第3個的區域附加指令相互附加有關連之資料的「zone5―D3」,儲存在FIFO緩衝221中。
接著,針對「控制器4係從主機2而收訊了對於區域0作指定之2個的區域附加指令」的情況作考慮。
區域0係已被分配至緩衝#1處。故而,資料/緩衝分配控制部21,係將分別被與對於區域0作指定之2個的區域附加指令相互附加有關連之資料「zone0―D4」以及「zone0―D5」,儲存在FIFO緩衝211中。之後,資料/緩衝分配控制部21,係在緩衝更新履歷表32處,追加代表為了進行資料之儲存所最後被作了更新的緩衝之資訊(於此,係為代表緩衝#1之識別符)。
起因於此資料「zone0―D5」被儲存於緩衝#1之FIFO緩衝221處一事,FIFO緩衝221,係成為無法更進一步儲存資料的全滿狀態。由於FIFO緩衝221係成為了全滿狀態,因此,FIFO緩衝221係滿足清除開始條件。
圖7D,係為對於實施形態之緩衝處理之第4個的處理作展示之圖。
資料/區域分配控制部22,係從緩衝#1而選擇清除對象區域,並從被儲存於緩衝#1之中之所有的資料之中,而僅將被與清除對象區域相互附加有關連之資料抽出。
在緩衝#1(亦即是,FIFO緩衝221)處,係儲存有被與區域0相互附加有關連之資料「zone0―D1」~「zone0―D5」、和被與區域2相互附加有關連之資料「zone2―D1」~「zone2―D3」。在緩衝#1處,區域0係身為被附加有關連之資料的總容量為最大之區域。故而,資料/區域分配控制部22,係將區域0決定為清除對象區域。
資料/區域分配控制部22,係從緩衝#1之中而僅將被與區域0相互附加有關連之資料抽出。此時,資料/區域分配控制部22,係以使被與清除對象區域以外之區域相互附加有關連之資料會被維持於緩衝#1中的方式來進行控制。亦即是,資料/區域分配控制部22,係以將資料「zone2―D1」~「zone2―D3」維持於緩衝#1之中的狀態下,而從緩衝#1來將資料「zone0―D1」~「zone0―D5」抽出。之後,資料/區域分配控制部22,係決定寫入目標之區域,並將資料「zone0―D1」~「zone0―D5」序列性地寫入至所決定了的寫入目標之區域(於此,係為區域0)中。若是區域0之資料從緩衝#1而消失,則資料/區域分配控制部22,係從分配管理表213而將區域0之識別符刪除。藉由此,針對緩衝#1之區域0的分配係被解除。
故而,在區域0之資料從緩衝#1而消失之後,當收訊了對於區域0作指定之區域附加指令的情況時,係並不存在有已被分配有區域0之緩衝。故而,資料/緩衝分配控制部21,係藉由參照緩衝更新履歷表32,來決定為了進行資料之儲存所進行的最後之更新為最早的緩衝,並將被與此所收訊了的區域附加指令相互附加有關連之資料,儲存在此所決定了的緩衝中。
接著,參照圖8A~圖8E,針對用以從緩衝#1之中而將被與區域0相互附加有關連之資料抽出的超前處理之例作說明。
圖8A,係為對於在SSD3處所被實行的超前處理之第1個的處理作展示之圖。
緩衝#1之FIFO緩衝211,係包含有輸入埠211A、輸出埠211B、迴接通路211C、輸入選擇器211D、輸出選擇器211E。迴接通路211C,係身為將FIFO緩衝211之輸出埠211B與FIFO緩衝211之輸入埠211A作連接的通路。輸入選擇器211D以及輸出選擇器211E,係身為用以將迴接通路211C設為有效或者是無效的開關電路。
FIFO緩衝211之輸入埠211A,係被與輸入選擇器211D作連接。FIFO緩衝211之輸出埠211B,係被與輸出選擇器211E作連接。輸入選擇器211D,係選擇外部輸入或迴接通路211C之其中一者,並將所選擇了的外部輸入或者是迴接通路211C之其中一者與輸入埠211A作連接。輸出選擇器211E,係選擇迴接通路211C或外部輸出之其中一者,並將所選擇了的迴接通路211C或外部輸出之其中一者與輸出埠211B作連接。外部輸出,係經由圖1之NAND介面13而被與NAND型快閃記憶體5作連接。
資料/區域分配控制部22,當能夠從FIFO緩衝211而讀出之下一個的資料、亦即是FIFO緩衝211內之最為古老之資料,係身為清除對象區域以外之區域之資料的情況時,係藉由對於輸入選擇器211D與輸出選擇器211E作控制,來將迴接通路211C設為有效,並將輸出埠211B與輸入埠211A作連接。又,當能夠從FIFO緩衝211而讀出之下一個的資料,係身為清除對象區域之資料的情況時,資料/區域分配控制部22,係藉由對於輸出選擇器211E作控制,來將迴接通路211C設為無效,並將輸出埠211B與外部輸出作連接。於此情況,資料/區域分配控制部22,係亦可藉由對於輸入選擇器211D作控制,來將輸入埠211A與迴接通路211C作連接。
在開始清除處理時,如同圖8A中所示一般,資料/區域分配控制部22,首先,係為了防止新的資料被儲存至FIFO緩衝211中,而對於輸入選擇器211D作控制並將輸入埠211A與外部輸入之間之連接解除,並將輸入埠211A與迴接側、亦即是迴接通路221C作連接。
圖8B,係為對於實施形態之超前處理之第2個的處理作展示之圖。
資料/區域分配控制部22,係判定能夠從FIFO緩衝211而讀出之下一個的資料是否身為清除對象區域之資料。直到資料「zone0―D1」~「zone0―D3」之讀出結束為止,能夠讀出之下一個的資料,係為被與身為清除對象區域之區域0相互附加有關連之資料。因此,資料/區域分配控制部22,係藉由對於輸出選擇器211E作控制,來將輸出埠211B與外部輸出作連接,並將迴接通路211C設為無效。之後,資料/區域分配控制部22,係從FIFO緩衝211而將資料「zone0―D1」、資料「zone0―D2」以及資料「zone0―D3」讀出。
圖8C,係為對於實施形態之超前處理之第3個的處理作展示之圖。
在資料「zone0―D1」~「zone0―D3」被讀出之後,直到資料「zone2―D1」~「zone2―D3」被從FIFO緩衝211而讀出為止,能夠從FIFO緩衝211而讀出之下一個的資料,係並非為清除對象區域之資料。因此,資料/區域分配控制部22,係藉由對於輸出選擇器211E作控制,來將輸出埠211B與迴接通路211C作連接,並將迴接通路211C設為有效。
在將迴接通路211C設為了有效的狀態下,資料/區域分配控制部22,係實行從FIFO緩衝211而將資料讀出之讀出動作、和將資料寫入至FIFO緩衝211中之寫入動作。藉由此,「從FIFO緩衝211之輸出埠211B而將資料「zone2―D1」~「zone2―D3」讀出」之動作和「將被讀出了的資料「zone2―D1」~「zone2―D3」經由迴接通路211C以及輸入埠211A而回寫至FIFO緩衝211中」之動作,係被平行地實行。其結果,資料「zone2―D1」~「zone2―D3」係被維持於FIFO緩衝211之中。
圖8D,係為對於實施形態之超前處理之第4個的處理作展示之圖。
在資料「zone2―D1」~「zone2―D3」被讀出之後,能夠從FIFO緩衝211而讀出之下一個的資料,係身為清除對象區域之資料。
資料/區域分配控制部22,係由於能夠從FIFO緩衝211而讀出之下一個的資料係身為清除對象區域之資料,因此,係對於輸出選擇器211E作控制來將迴接通路211C設為無效,並將輸出埠211B與外部輸出作連接。之後,資料/區域分配控制部22,係對於FIFO緩衝211作控制,而從輸出埠211B來將資料「zone0―D4」以及資料「zone0―D5」讀出。
圖8E,係為對於實施形態之超前處理之第5個的處理作展示之圖。
資料/區域分配控制部22,係確認在FIFO緩衝211之中是否殘留有清除對象區域之資料。若是得知在FIFO緩衝211之中係並未殘留有清除對象區域之資料,則資料/區域分配控制部22,係對於輸入選擇器211D作控制,而將控制部211A與外部輸入作連接。藉由此,FIFO緩衝211,係成為能夠從外部輸入而受理新的資料之狀態。
藉由於此所作了說明的超前處理,資料/區域分配控制部22,係從緩衝#1而僅將清除對象區域之資料抽出。又,被與清除對象區域以外之區域相互附加有關連之資料,其之被儲存於緩衝#1中的狀態係被維持原樣。
於此,雖係針對在某一緩衝成為了全滿的情況時所被實行之超前處理而作了說明,但是,當被儲存於某一緩衝中之特定之區域之資料的總容量成為了寫入單位以上的情況時,亦同樣的,藉由相同之處理程序,僅將特定之區域之資料抽出的超前處理係被實行。
圖9,係為對於在實施形態之SSD3處所被實行的指令處理之程序作展示之流程圖。
此指令處理,係身為用以實行「將資料序列性地寫入至分區名稱空間之複數之區域中之任意之區域處的指令」之處理。此指令,係可身為區域附加指令,亦可身為作為位址特定寫入指令而被作使用的寫入指令。以下,係對於針對區域附加指令之處理作例示,而對於指令處理之程序作說明。
首先,控制器4,係從主機2而收訊區域附加指令(步驟S11)。控制器4,係藉由資料/緩衝分配控制部21,而決定被與所收訊了的區域附加指令相互附加有關連之資料所應被儲存之儲存目標緩衝,並將資料儲存在所決定了的儲存目標緩衝中(步驟S12)。關於此處之由資料/緩衝分配控制部21所致之資料/緩衝分配處理的詳細之處理程序,係藉由圖10來進行說明。
控制器4,係對於緩衝更新履歷表32作更新(步驟S13)。在步驟S13處,控制器4,係將在步驟S12處所被決定了的儲存目標緩衝之識別符,作為代表為了進行資料之儲存所最後被作了更新的緩衝之資訊而追加至緩衝更新履歷表32中。另外,此時,當「應被追加至緩衝更新履歷表32中之識別符」為與「最後被追加至緩衝更新履歷表處之緩衝之識別符」相同的情況時,係亦可將「將緩衝之識別符追加至緩衝更新履歷表32中」之處理省略。
控制器4,係判定某一緩衝是否身為全滿狀態、或者是在某一緩衝中之某一區域之資料的總容量是否成為了寫入單位以上(步驟S14)。亦即是,控制器4,係判定是否存在有已滿足清除開始條件之緩衝。
當並不存在身為全滿狀態之緩衝,並且也不存在有某一區域之資料的總容量成為了寫入單位以上之緩衝的情況時(步驟S14,No),控制器4係待機,直到從主機2而收訊下一個的區域附加指令為止。
當存在身為全滿狀態之緩衝、或者是存在有某一區域之資料的總容量成為了寫入單位以上之緩衝的情況時(步驟S14,Yes),控制器4,係藉由超前處理,而從被儲存於該緩衝中之所有的資料中來僅將清除對象區域之資料抽出(步驟S15)。當該緩衝係身為全滿狀態的情況時,被相互附加有關連之資料的總容量為最大之區域,係被決定為清除對象區域。當存在有「被與某一區域相互附加有關連之資料之總容量為成為了寫入單位以上」之緩衝的情況時,被相互附加有關連之資料的總容量為成為了寫入單位以上之區域,係被決定為清除對象區域。關於超前處理的詳細之處理程序,係藉由圖11來進行說明。
控制器4,係藉由資料/區域分配控制部22,而決定在步驟S15處所抽出了的資料之寫入目標之物理記憶區域(步驟S16)。寫入目標之物理記憶區域,係身為被分配給所決定了的清除對象區域之NAND型快閃記憶體5內之特定之記憶區域。
之後,控制器4,係將從緩衝所抽出了的清除對象區域之資料,寫入至寫入目標之物理記憶區域中、亦即是寫入至被分配給清除對象區域的NAND型快閃記憶體5內之特定之記憶區域(物理記憶區域)中(步驟S17)。
若是清除對象區域之資料被寫入至NAND型快閃記憶體5內之特定之記憶區域中,則與被作了寫入的資料相對應之1個以上的區域附加指令之處理係結束。在步驟S17處,控制器4,係能夠將與結束了的各區域附加指令相對應之「指令結束」對於主機2而作送訊。另外,控制器4,係並非絕對需要一直等到在步驟S17處而資料被寫入至NAND型快閃記憶體5中之後才進行「指令結束」之送訊。需要一直等到資料被寫入至NAND型快閃記憶體5中之後才進行「指令結束」之送訊的情況,係僅有在所收訊了的區域附加指令中所包含之Force Unit Access(FUA)為被設置為「1」的情形。當在所收訊了的控制器中所包含之FUA係為0的情況時,控制器4,係能夠並不等到被與所收訊了的區域附加指令相互附加有關連之資料被寫入至NAND型快閃記憶體5中地,便將與所收訊了的區域附加指令相對應之「指令結束」送訊至主機2處。例如,控制器4,係能夠在被與所收訊了的區域附加指令相互附加有關連之資料被儲存於緩衝中時,將與所收訊了的區域附加指令相對應之「指令結束」送訊至主機2處。各「指令結束」,係包含有代表「被與對應於該「指令結束」之區域附加指令相互附加有關連之資料所被作寫入的區域內之寫入目標位置(LBA)」之資訊。
圖10,係為對於實施形態之資料/緩衝分配處理之程序作展示之流程圖。於此所說明之資料/緩衝分配控制處理,係身為在圖9中之步驟S12之處理的詳細內容。
如同在圖9之步驟S11處所作了說明一般,控制器4,係從主機2而收訊區域附加指令。
資料/緩衝分配控制部21,係藉由參照被設置在複數之緩衝之各者處的分配管理表,來判定是否存在有已被分配有藉由在步驟S11處所收訊了的區域附加指令而被作了指定之區域的緩衝(步驟S21)。
當並不存在有已被分配有藉由所收訊了的區域附加指令而被作了指定之區域的緩衝的情況時(步驟S21,No),資料/緩衝分配控制部21,係藉由參照被設置在複數之緩衝之各者處的分配管理表,來判定是否存在有空閒之緩衝(步驟S22)。
當並不存在有空閒之緩衝的情況時(步驟S22,No),資料/緩衝分配控制部21,係將為了進行資料之儲存所進行的最後之更新為最早的緩衝,決定為儲存目標緩衝(步驟S23)。資料/緩衝分配控制部21,係參照緩衝更新履歷表32而決定為了進行資料之儲存所進行的最後之更新為最早的緩衝。儲存目標緩衝,係身為「被與所收訊了的區域附加指令相互附加有關連之資料」所應被儲存的緩衝。
資料/緩衝分配控制部21,係將藉由在步驟S11處所收訊了的區域附加指令而被作了指定之區域,分配至儲存目標緩衝處(步驟S24)。資料/緩衝分配控制部21,係藉由將「代表藉由所收訊了的區域附加指令而被作了指定之區域」的識別符追加至被設置在儲存目標緩衝處之分配管理表中,來追加性地將區域分配至儲存目標緩衝處。
控制器4,係將被與在步驟S11處所收訊了的區域附加指令相互附加有關連之資料,儲存在所決定了的儲存目標緩衝中(步驟S28)。亦即是,資料/緩衝分配控制部21,係從主機2之記憶體102而取得被與在步驟S11處所收訊了的區域附加指令相互附加有關連之資料,並將所取得了的資料儲存在所決定了的儲存目標緩衝中。之後,處理係前進至在圖9中所說明了的步驟S13處。在步驟S13處,控制器4,係對於緩衝更新履歷表32作更新。
當存在有1個以上的空閒之緩衝的情況時(步驟S22,Yes),資料/緩衝分配控制部21,係從空閒之緩衝之中而選擇任意之緩衝,並決定為儲存目標緩衝(步驟S25)。
資料/緩衝分配控制部21,係將藉由在步驟S11處所收訊了的區域附加指令而被作了指定之區域,分配至儲存目標緩衝處(步驟S26)。
之後,處理係移動至步驟S28處,控制器4,係將被與在步驟S11處所收訊了的區域附加指令相互附加有關連之資料,儲存在所決定了的儲存目標緩衝中。
當存在有「已被分配有藉由在步驟S11處所收訊了的區域附加指令而被作了指定之區域」的緩衝的情況時(步驟S21,Yes),資料/緩衝分配控制部21,係將該緩衝決定為儲存目標緩衝(步驟S27)。
之後,處理係移動至步驟S28處,控制器4,係將被與在步驟S11處所收訊了的區域附加指令相互附加有關連之資料,儲存在所決定了的儲存目標緩衝中。
圖11,係為對於實施形態之超前處理之程序作展示之流程圖。於此,係針對在圖9中之步驟S15之處理的詳細內容作說明。
當某一緩衝(FIFO緩衝)滿足了清除開始條件的情況時,資料/區域分配控制部22,係從被分配至此FIFO緩衝處的區域之中而決定清除對象區域(步驟S31)。
資料/區域分配控制部22,係判定被與「應從滿足清除開始條件之FIFO緩衝而讀出之下一個的資料(亦即是此FIFO緩衝內之下一個的可讀出資料)」相互附加有關連之區域,是否身為清除對象區域(步驟S32)。
當被與下一個的可讀出資料相互附加有關連之區域並非為清除對象區域的情況時(步驟S32,No),資料/區域分配控制部22,係將該FIFO緩衝之迴接通路設為有效,並以使該FIFO緩衝之輸入埠與輸出埠被連接於迴接通路側的方式來作控制(步驟S33)。
當對應於下一個的可讀出資料之區域係身為清除對象區域的情況時(步驟S32,Yes),資料/區域分配控制部22,係以當該FIFO緩衝之輸入埠與輸出埠為被連接於迴接通路側處的情況時會將該連接作解除的方式來進行控制(步驟S34)。
資料/區域分配控制部22,係從FIFO緩衝而將下一個的可讀出資料讀出(步驟S35)。資料/區域分配控制部22,係判定在被儲存於FIFO緩衝中之資料之中是否殘留有清除對象區域之資料(步驟S36)。
當在被儲存於FIFO緩衝中之資料之中係殘留有清除對象區域之資料的情況時(步驟S36,Yes),資料/區域分配控制部22之處理,係為了將下一個的可讀出之資料讀出,而再度移動至步驟S32處。
當在被儲存於FIFO緩衝中之資料之中並未殘留有清除對象區域之資料的情況時(步驟S36,No),資料/區域分配控制部22,係從此FIFO緩衝之分配管理表而將代表清除對象區域之識別符刪除(步驟S37)。藉由此,針對此FIFO緩衝之清除對象區域的分配係被解除。
如同以上所作了說明一般,若依據本實施形態,則控制器4,當存在有「被分配有藉由所收訊了的區域附加指令而被作了指定之區域的緩衝」的情況時,係將該緩衝,決定為應儲存被與所收訊了的區域附加指令相互附加有關連之資料的儲存目標緩衝。又,當並不存在有已被分配有藉由所收訊了的區域附加指令而被作了指定之區域的緩衝,並且係存在有空閒緩衝的情況時,控制器4,係將空閒之緩衝中之任意之緩衝,決定為儲存目標緩衝。又,當並不存在有已被分配有藉由所收訊了的區域附加指令而被作了指定之區域的緩衝,並且也不存在有空閒緩衝的情況時,控制器4,係將為了進行資料之儲存所進行的最後之更新為最早的緩衝,決定為儲存目標緩衝。
藉由此些之處理,資料係並不會集中存在於特定之緩衝處,而能夠將資料之儲存目標分散至複數之緩衝處。進而,係能夠將應被寫入至相同的區域中之資料儲存於相同的緩衝中。
又,控制器4,係將被儲存於複數之緩衝之任一者中的資料之總容量係成為了寫入單位以上的區域、或者是「所對應之資料為被儲存在全滿狀態之緩衝中之所有的區域」中之所對應之資料的總容量為最大之區域,選擇為清除對象區域。故而,由於係成為能夠將被積蓄在緩衝中之資料量為較多的區域選擇為清除對象區域,因此,相較於「以微細的單位來將各區域之資料寫入至NAND型快閃記憶體5中」的情況,係能夠使序列寫入之效率提升。
進而,控制器4,係在將除了清除對象區域以外的區域之資料維持於緩衝中的狀態下,而僅將清除對象區域之資料抽出。故而,例如就算是發生有「相同區域之資料被分散至1個的緩衝內之相異之各式各樣的位置處」之斷片化的情形,也能夠並不進行針對清除對象區域以外之區域之資料之清除處理地,而僅進行針對清除對象區域之資料的清除處理。因此,係能夠並不將緩衝內之資料以微細的單位來寫入至NAND型快閃記憶體5中地,而僅將其之資料量為較多的清除對象區域之資料寫入至NAND型快閃記憶體5中。
如此這般,在本實施形態中,係能夠使用較在分區名稱空間中所包含之區域的數量而更少之數量之緩衝,來將應寫入至相異之區域中的資料有效率地作緩衝。進而,在本實施形態中,係能夠從混合存在有相異之區域之資料的緩衝,來僅將清除對象區域之資料寫入至NAND型快閃記憶體5中。故而,相較於使用與區域之數量相同數量之緩衝的構成,係能夠將為了進行複數之區域之控制所需要的SSD3內之記憶體資源之量作削減。
另外,當從主機2而收訊了被作為位址特定寫入指令而使用之寫入指令的情況時,控制器4,係亦能夠在將被與此寫入指令相互附加有關連之資料儲存至了緩衝中時,將此寫入指令之「指令結束」送訊至主機2處。
藉由此,主機2,係能夠將對於與藉由此寫入指令所指定了的區域相同之區域作指定的下一個寫入指令,對於SSD3作發行。其結果,係成為能夠在指定某一區域之寫入指令之處理實際結束之前、亦即是在被與該寫入指令相互附加有關連之資料的對於NAND型快閃記憶體5之寫入結束之前,便從主機2而收訊對於與此區域相同之區域作指定之下一個的寫入指令。故而,就算是在各個的寫入指令為要求小容量的資料之寫入的情況時,也能夠在將「被與相同之區域相互附加有關連之資料」在相同之緩衝中而作了一定之量的積蓄之後,再開始寫入處理,而能夠改善對於NAND型快閃記憶體5之寫入效率。
雖係針對本發明之數種實施形態作了說明,但是,該些實施形態,係僅為作為例子所提示者,而並非為對於本發明之範圍作限定者。此些之新穎的實施形態,係可藉由其他之各種形態來實施,在不脫離發明之要旨的範圍內,係可進行各種之省略、置換、變更。此些之實施形態或其變形,係亦被包含於發明之範圍或要旨中,並且亦被包含在申請專利範圍中所記載的發明及其均等範圍內。
1:資訊處理系統
2:主機
3:SSD
4:控制器
5:NAND型快閃記憶體
6:DRAM
10:匯流排
11:主機介面
12:CPU
13:NAND介面
14:DRAM介面
15:DMAC
16:緩衝電路
17:ECC編碼/解碼部
21:資料/緩衝分配控制部
22:資料/區域分配控制部
31:L2P表
32:緩衝更新履歷表
[圖1]係為對於包含有實施形態的記憶體系統之資訊處理系統之構成例作展示之區塊圖。
[圖2]係為對於藉由NVMe規格所被規定的分區名稱空間(zoned namespace)之構成例作展示之圖。
[圖3]係為對於在實施形態之記憶體系統處所被實行的寫入指標(write pointer)之更新動作作展示之圖。
[圖4]係為對於在比較例之記憶體系統處所被實行的緩衝(buffering)處理作展示之圖。
[圖5]係為對於在比較例之記憶體系統處所被實行的其他之緩衝處理作展示之圖。
[圖6]係為對於被設置在實施形態的記憶體系統處之複數之緩衝和資料/緩衝分配控制部以及資料/區域分配控制部之間的關係作展示之圖。
[圖7A]係為對於在實施形態之記憶體系統處所被實行的緩衝處理之第1個的處理作展示之圖。
[圖7B]係為對於在實施形態之記憶體系統處所被實行的緩衝處理之第2個的處理作展示之圖。
[圖7C]係為對於在實施形態之記憶體系統處所被實行的緩衝處理之第3個的處理作展示之圖。
[圖7D]係為對於在實施形態之記憶體系統處所被實行的緩衝處理之第4個的處理作展示之圖。
[圖8A]係為對於在實施形態之記憶體系統處所被實行的超前處理之第1個的處理作展示之圖。
[圖8B]係為對於在實施形態之記憶體系統處所被實行的超前處理之第2個的處理作展示之圖。
[圖8C]係為對於在實施形態之記憶體系統處所被實行的超前處理之第3個的處理作展示之圖。
[圖8D]係為對於在實施形態之記憶體系統處所被實行的超前處理之第4個的處理作展示之圖。
[圖8E]係為對於在實施形態之記憶體系統處所被實行的超前處理之第5個的處理作展示之圖。
[圖9]係為對於在實施形態之記憶體系統處所被實行的指令處理之程序作展示之流程圖。
[圖10]係為對於在實施形態之記憶體系統處所被實行的資料/緩衝分配處理之程序作展示之流程圖。
[圖11]係為對於在實施形態之記憶體系統處所被實行的超前處理之程序作展示之流程圖。
21:資料/緩衝分配控制部
22:資料/區域分配控制部
32:緩衝更新履歷表
201,211,221,231:先進先出緩衝
202,212,222,232:清除控制部
203,213,223,233:分配管
Claims (10)
- 一種記憶體系統,係具備有: 非揮發性記憶體;和 控制器,係被與前述非揮發性記憶體作電性連接,並構成為使用藉由NVM express規格而被規定的被分割為複數之區域之分區名稱空間(zoned namespace)來對於前述非揮發性記憶體作控制, 前述控制器,係構成為: 對於複數之緩衝作管理,前述複數之緩衝之數量,係較前述複數之區域之數量而更少, 因應於從主機而收訊了身為用以將資料序列性地寫入至前述複數之區域中之第1區域中的指令並且被與第1資料相互附加有關連之第1指令一事, 當前述第1區域所被分配的第1緩衝為存在於前述複數之緩衝之中的情況時,將前述第1資料儲存於前述第1緩衝中, 當前述第1緩衝並未存在於前述複數之緩衝之中,並且在前述複數之緩衝之中係存在有尚未被分配有任何之區域之空閒(free)之緩衝的情況時,係將前述第1區域分配至前述空閒之緩衝,並將前述第1資料儲存於前述第1區域所被作分配的前述空閒之緩衝中, 當前述第1緩衝並未存在於前述複數之緩衝之中,並且在前述複數之緩衝之中係並不存在有尚未被分配有任何之區域之空閒之緩衝的情況時,係將前述第1區域,追加性地分配至前述複數之緩衝之中之為了進行資料之儲存的最後之更新為最早的緩衝處,並將前述第1資料儲存於前述第1區域所被追加性地分配的前述緩衝中。
- 如請求項1所記載之記憶體系統,其中, 前述控制器,係構成為: 對於代表前述複數之緩衝之為了進行資料之儲存而被作更新的順序之履歷資訊作管理, 當前述第1緩衝並未存在於前述複數之緩衝之中,並且在前述複數之緩衝之中係並不存在有尚未被分配有任何之區域之空閒之緩衝的情況時,係藉由參照前述履歷資訊,來決定前述複數之緩衝之中之為了進行資料之儲存的最後之更新為最早的緩衝。
- 如請求項1所記載之記憶體系統,其中, 前述控制器,係更進而構成為: 當在前述複數之緩衝之中之第2緩衝中,係被儲存有被與前述複數之區域之中之第2區域相互附加有關連之第2資料、和被與前述複數之區域之中之與前述第2區域相異之第3區域相互附加有關連之第3資料,而前述第2資料之容量係為對於前述非揮發性記憶體之寫入單位以上的情況時, 在將前述第3資料維持於前述第2緩衝中的狀態下,將前述第2資料從前述第2緩衝而抽出, 將前述所抽出了的第2資料,寫入至被分配給前述第2區域之前述非揮發性記憶體內之記憶區域中。
- 如請求項3所記載之記憶體系統,其中, 前述控制器,係更進而構成為: 當在前述複數之緩衝之中之身為全滿(full)狀態之第3緩衝中,係被儲存有被與前述複數之區域之中之第4區域相互附加有關連之第4資料、和被與前述複數之區域之中之與前述第4區域相異之第5區域相互附加有關連之第5資料,而前述第4資料之容量係為較前述第5資料之容量而更大的情況時, 在將前述第5資料維持於前述第3緩衝中的狀態下,將前述第4資料從前述第3緩衝而抽出, 將前述所抽出了的第4資料,寫入至被分配給前述第4區域之前述非揮發性記憶體內之記憶區域中。
- 如請求項3所記載之記憶體系統,其中, 前述複數之緩衝之各者,係包含有先進先出緩衝、和用以將資料輸入至前述先進先出緩衝中之輸入埠、和用以從前述先進先出緩衝而將資料輸出之輸出埠、以及用以將前述輸出埠與前述輸入埠作連接之通路(pass), 前述控制器,係更進而構成為: 當能夠從前述第2緩衝之前述先進先出緩衝而讀出的下一個資料係身為前述第3資料的情況時,將前述通路設為有效,並藉由實行將前述第3資料從前述第2緩衝之前述先進先出緩衝而讀出之動作、和將前述被讀出了的前述第3資料回寫至前述第2緩衝之前述先進先出緩衝中之動作,來將前述第3資料維持於前述第2緩衝中。
- 如請求項5所記載之記憶體系統,其中, 前述控制器,係更進而構成為: 當能夠從前述第2緩衝之前述先進先出緩衝而讀出的下一個資料係身為前述第2資料的情況時,將前述通路設為無效,並藉由實行從前述第2緩衝之前述先進先出緩衝而讀出之動作,來將前述第2資料從前述第2緩衝抽出。
- 如請求項3所記載之記憶體系統,其中, 前述非揮發性記憶體,係包含有複數之區塊,該複數之區塊,係各別包含有複數之頁面,前述複數之區塊之各者,係身為資料刪除動作之單位,前述複數之頁面之各者,係身為資料寫入動作以及資料讀出動作之單位, 前述寫入單位,係身為前述複數之頁面之各者的容量之倍數、或者是前述複數之區塊之各者的容量之倍數。
- 如請求項1所記載之記憶體系統,其中, 前述第1指令,係身為在前述NVM express規格中所被規定的區域附加指令(zone append command)。
- 如請求項1所記載之記憶體系統,其中, 前述第1指令,係身為在前述NVM express規格中作為位址特定寫入指令(address specific write command)所被規定的寫入指令。
- 一種控制方法,係為使用藉由NVM express規格而被規定的被分割為複數之區域之分區名稱空間(zoned namespace)來對於非揮發性記憶體作控制之控制方法,並具備有: 對於較前述複數之區域之數量而更少的數量之複數之緩衝作管理之步驟;和 從主機而收訊身為用以將資料序列性地寫入至前述複數之區域中之第1區域中的指令並且被與第1資料相互附加有關連之第1指令之步驟;和 當前述第1區域所被分配的第1緩衝為存在於前述複數之緩衝之中的情況時,將前述第1資料儲存於前述第1緩衝中之步驟;和 當前述第1緩衝並未存在於前述複數之緩衝之中,並且在前述複數之緩衝之中係存在有尚未被分配有任何之區域之空閒(free)之緩衝的情況時,將前述第1區域分配至前述空閒之緩衝,並將前述第1資料儲存於前述第1區域所被作分配的前述空閒之緩衝中之步驟;和 當前述第1緩衝並未存在於前述複數之緩衝之中,並且在前述複數之緩衝之中係並不存在有尚未被分配有任何之區域之空閒之緩衝的情況時,將前述第1區域,追加性地分配至前述複數之緩衝之中之為了進行資料之儲存的最後之更新為最早的緩衝處,並將前述第1資料儲存於前述第1區域所被追加性地分配的前述緩衝中之步驟;和 當在前述複數之緩衝之中之第2緩衝中,係被儲存有被與前述複數之區域之中之第2區域相互附加有關連之第2資料、和被與前述複數之區域之中之與前述第2區域相異之第3區域相互附加有關連之第3資料,而前述第2資料之容量係為對於前述非揮發性記憶體之寫入單位以上的情況時,在將前述第3資料維持於前述第2緩衝中之狀態下,將前述第2資料從前述第2緩衝而抽出,並將前述所抽出了的第2資料寫入至被分配給前述第2區域之前述非揮發性記憶體內之記憶區域中之步驟;和 當在前述複數之緩衝之中之身為全滿(full)狀態之第3緩衝中,係被儲存有被與前述複數之區域之中之第4區域相互附加有關連之第4資料、和被與前述複數之區域之中之與前述第4區域相異之第5區域相互附加有關連之第5資料,而前述第4資料之容量係較前述第5資料之容量而更大的情況時,在將前述第5資料維持於前述第3緩衝中之狀態下,將前述第4資料從前述第3緩衝而抽出,並將前述所抽出了的第4資料寫入至被分配給前述第4區域之前述非揮發性記憶體內之記憶區域中之步驟。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-207741 | 2020-12-15 | ||
JP2020207741A JP2022094705A (ja) | 2020-12-15 | 2020-12-15 | メモリシステムおよび制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202225981A TW202225981A (zh) | 2022-07-01 |
TWI792322B true TWI792322B (zh) | 2023-02-11 |
Family
ID=81942459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110118823A TWI792322B (zh) | 2020-12-15 | 2021-05-25 | 記憶體系統及控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11520520B2 (zh) |
JP (1) | JP2022094705A (zh) |
CN (1) | CN114637693A (zh) |
TW (1) | TWI792322B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736769B (zh) * | 2020-06-05 | 2022-07-26 | 苏州浪潮智能科技有限公司 | 一种稀释缓存空间的方法、设备以及介质 |
KR20220060372A (ko) * | 2020-11-04 | 2022-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20220104511A (ko) * | 2021-01-18 | 2022-07-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI400615B (zh) * | 2008-03-01 | 2013-07-01 | Toshiba Kk | 記憶體系統 |
TWI475561B (zh) * | 2010-03-17 | 2015-03-01 | Toshiba Kk | Memory system |
TWI561988B (en) * | 2012-09-20 | 2016-12-11 | Silicon Motion Inc | Data storage device and flash memory control method |
TW201903784A (zh) * | 2016-04-27 | 2019-01-16 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
US20190179570A1 (en) * | 2019-02-19 | 2019-06-13 | Intel Corporation | Host defined bandwidth allocation for ssd tasks |
TWI709857B (zh) * | 2017-12-08 | 2020-11-11 | 日商東芝記憶體股份有限公司 | 記憶體系統及控制方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10642488B2 (en) | 2017-10-23 | 2020-05-05 | Micron Technology, Inc. | Namespace size adjustment in non-volatile memory devices |
KR102503177B1 (ko) | 2018-03-05 | 2023-02-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11797433B2 (en) | 2019-12-20 | 2023-10-24 | Sk Hynix Nand Product Solutions Corp. | Zoned namespace with zone grouping |
JP7346311B2 (ja) * | 2020-01-16 | 2023-09-19 | キオクシア株式会社 | メモリシステム |
JP7366795B2 (ja) * | 2020-02-14 | 2023-10-23 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20210108107A (ko) * | 2020-02-25 | 2021-09-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11137920B1 (en) * | 2020-04-30 | 2021-10-05 | Micron Technology, Inc. | Storing zones in a zone namespace on separate planes of a multi-plane memory device |
-
2020
- 2020-12-15 JP JP2020207741A patent/JP2022094705A/ja active Pending
-
2021
- 2021-05-25 TW TW110118823A patent/TWI792322B/zh active
- 2021-08-18 CN CN202110947692.0A patent/CN114637693A/zh active Pending
- 2021-09-03 US US17/446,875 patent/US11520520B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI400615B (zh) * | 2008-03-01 | 2013-07-01 | Toshiba Kk | 記憶體系統 |
TWI475561B (zh) * | 2010-03-17 | 2015-03-01 | Toshiba Kk | Memory system |
TWI561988B (en) * | 2012-09-20 | 2016-12-11 | Silicon Motion Inc | Data storage device and flash memory control method |
TW201903784A (zh) * | 2016-04-27 | 2019-01-16 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
TWI709857B (zh) * | 2017-12-08 | 2020-11-11 | 日商東芝記憶體股份有限公司 | 記憶體系統及控制方法 |
US20190179570A1 (en) * | 2019-02-19 | 2019-06-13 | Intel Corporation | Host defined bandwidth allocation for ssd tasks |
Also Published As
Publication number | Publication date |
---|---|
US11520520B2 (en) | 2022-12-06 |
JP2022094705A (ja) | 2022-06-27 |
US20220188020A1 (en) | 2022-06-16 |
CN114637693A (zh) | 2022-06-17 |
TW202225981A (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11893238B2 (en) | Method of controlling nonvolatile semiconductor memory | |
TWI792322B (zh) | 記憶體系統及控制方法 | |
JP6553566B2 (ja) | メモリシステムおよび制御方法 | |
CN110297600B (zh) | 存储设备和操作存储设备的方法 | |
JP2020046963A (ja) | メモリシステムおよび制御方法 | |
US11762591B2 (en) | Memory system and method of controlling nonvolatile memory by controlling the writing of data to and reading of data from a plurality of blocks in the nonvolatile memory | |
US20130212319A1 (en) | Memory system and method of controlling memory system | |
KR20160027805A (ko) | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 | |
US20190087323A1 (en) | Memory system and method for controlling nonvolatile memory | |
US20220066693A1 (en) | System and method of writing to nonvolatile memory using write buffers | |
US11663122B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11662952B2 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
US11762580B2 (en) | Memory system and control method | |
US20230091792A1 (en) | Memory system and method of controlling nonvolatile memory | |
JP2018160189A (ja) | メモリシステム | |
TW202238571A (zh) | 記憶體系統 | |
US7969781B2 (en) | Method of controlling memory system | |
TWI820426B (zh) | 記憶體系統及控制方法 | |
WO2018167890A1 (ja) | 計算機システム及び管理方法 | |
JP7337228B2 (ja) | メモリシステムおよび制御方法 | |
US20240201904A1 (en) | Memory system and method of controlling nonvolatile memory |