記憶體系統及控制方法
本發明之實施形態,係有關於對具備有非揮發性記憶體之記憶體系統以及非揮發性記憶體作控制的技術。
[關連申請案]
本申請案,係享受以日本專利申請2021-102382號(申請日:2021年6月21日)作為基礎申請之優先權。本申請案,係藉由參照此基礎申請案,而包含基礎申請案之所有的內容。
近年來,具備有非揮發性記憶體之記憶體系統係廣泛普及。作為此種記憶體系統之其中一者,具備有NAND型快閃記憶體之固態硬碟(SSD)係為周知。
在像是SSD一般之記憶體系統中,係會有使從相異之晶粒所分別選擇出的複數之區塊(複數之物理區塊)被作為用以進行資料之寫入或讀出的存取單位而使用之情況。於此情況,若是被搭載於記憶體系統中的晶粒間之不良區塊之數量之偏差係為大,則會有導致就算是身為並非為不良之非不良區塊實際上也仍然不會被作利用的區塊之數量增加的情形。
故而,在記憶體系統中,係需要實現用以成為能夠對於在非揮發性記憶體中所包含之區塊之各者有效率地作利用之新的技術。
本發明之其中一個實施形態所欲解決之問題,係在於提供一種能夠對於在非揮發性記憶體中所包含的區塊之各者有效率地作利用的記憶體系統以及控制方法。
若依據其中一個實施形態,則能夠與主機作連接之記憶體系統,係具備有:非揮發性記憶體,係包含有能夠平行動作之複數之晶粒或者是能夠平行動作之複數之平面;和控制器,係被與前述非揮發性記憶體作電性連接,並構成為對於前述非揮發性記憶體作控制。前述複數之晶粒或者是前述複數之平面之各者,係包含有複數之區塊。前述複數之區塊之各者,係身為資料刪除動作之單位。前述控制器,係從前述複數之晶粒或者是前述複數之平面而建構出各別包含有複數之區塊的複數之區塊群組。前述控制器,係因應於從前述主機而收訊了用以將資料寫入至前述複數之區塊群組中之其中一個的區塊群組處的寫入指令一事,將被與前述所收訊了的寫入指令相互附加有關連之資料寫入至前述其中一個的區塊群組處。前述複數之區塊群組,係至少包含有使用第1形態區塊群組所構成之第1區塊群組、和使用第2形態區塊群組所構成之第2區塊群組。前述第1形態區塊群組,係包含有藉由從前述複數之晶粒或者是前述複數之平面而分別選擇1以上之相同數量之非不良區塊所得到的複數之非不良區塊。前述第2形態區塊群組,係包含有與從前述複數之晶粒或者是前述複數之平面而選擇的被包含於前述第1形態區塊群組中之前述複數之非不良區塊相同數量的複數之非不良區塊,並且,被包含於前述第2形態區塊群組中之每一晶粒或者是每一平面的個別之非不良區塊之數量,係於前述複數之晶粒或者是前述複數之平面間而相異。
以下,參考圖面,針對實施形態作說明。
首先,針對包含實施形態之記憶體系統的資訊處理系統之構成例作說明。圖1,係為對於包含有實施形態的記憶體系統與主機之資訊處理系統1之構成例作展示之區塊圖。以下,係針對「記憶體系統,係作為包含有NAND型快閃記憶體之固態硬碟(SSD)3而被實現」的情況作考慮。
資訊處理系統1,係包含有主機(主機裝置)2與SSD3。SSD3,係身為以對於非揮發性記憶體而寫入資料並從非揮發性記憶體而將資料讀出的方式所構成之半導體儲存裝置。SSD3,係經由纜線或網路而被與主機2作連接。或者是,SSD3,係亦可內藏於主機2中。作為用以將主機2與SSD3作連接的邏輯介面之規格,例如,係可使用NVM Express™(NVMe™規格)。
主機2,係包含有處理器101和記憶體102。處理器101,係身為以對於主機2內之各組件的動作進行控制的方式而被構成之CPU(中央處理單元,Central Processing Unit)。
處理器101,係實行從SSD3或者是主機2內之其他之儲存裝置而被載入至記憶體102中的軟體(主機軟體)。在主機軟體中,係包含有作業系統、檔案系統、裝置驅動、應用程式等。
記憶體102,係身為被設置在主機2中之主記憶體。記憶體102,例如,係藉由如同DRAM(動態隨機存取記憶體,Dynamic Random Access Memory)一般之隨機存取記憶體而被實現。
記憶體102之記憶區域的一部分,係為了儲存1個以上的提交佇列/完成佇列對(SQ/CQ對)而被使用。各SQ/CQ對,係包含有1個以上的提交佇列(SQ,Submission Queue)和被與此1個以上的提交佇列(SQ)相互附加有關連之完成佇列(CQ,Completion Queue)。
提交佇列(SQ),係身為為了對於SSD3發行指令所使用的佇列。完成佇列(CQ),係身為為了從SSD3而收訊代表「指令完成」之回應所使用的佇列。
主機2,係經由在各SQ/CQ對中所包含之1個以上的提交佇列(SQ)來對於SSD3送訊各種的指令。
SSD3,係具備有控制器4、和非揮發性記憶體(例如,NAND型快閃記憶體5)。SSD3,係可亦具備有隨機存取記憶體,例如具備有DRAM6。
NAND型快閃記憶體5,係包含有記憶體胞陣列,該記憶體胞陣列,係包含有被配置為矩陣狀之複數之記憶體胞。NAND型快閃記憶體5,係可為2維構造之快閃記憶體,亦可為3維構造之快閃記憶體。
記憶體胞陣列,係包含有複數之區塊BLK0~BLKx-1。區塊BLK0~BLKx-1之各者,係包含複數之頁面(於此係為頁面P0~Py-1)。各頁面,係包含被與同一字元線作了連接的複數之記憶體胞。區塊BLK0~BLKx-1之各者,係身為將資料刪除的資料刪除動作之單位。區塊BLK0~BLKx-1之各者,係亦被稱作物理區塊或者是快閃區塊。頁面P0~Py-1之各者,係身為資料寫入動作以及資料讀取動作之單位。
NAND型快閃記憶體5,係如同圖2中所示一般,包含有複數之晶粒(NAND型快閃記憶體晶粒、或者是亦被稱作NAND型快閃記憶體晶片)。各個的晶粒、亦即是各個的NAND型快閃記憶體晶粒,係可獨立動作。因此,複數之NAND型快閃記憶體晶粒之各者,係被視為可進行平行動作之單位而處理。
在圖2中,係對於在NAND介面13處被連接有16個的通道Ch.1~Ch.16,並在16個的通道Ch.1~Ch.16之各者處被連接有1個的NAND型快閃記憶體晶粒的情況作例示。於此情況,係能夠針對被與通道Ch.1~Ch.16作了連接之16個的NAND型快閃記憶體晶粒#0~#15,而平行地實行資料寫入/讀出動作。
另外,NAND型快閃記憶體晶粒#0~#15之各者,係亦可具備有包含可平行動作之複數之平面的多平面(multiplane)構成。各平面,係包含有複數之區塊(物理區塊)。例如,NAND型快閃記憶體晶粒#0~#15之各者,係亦可如同在圖3中所示一般地,具備有包含2個的平面(PLANE0、PLANE1)之多平面構成。於圖3中所示之NAND型快閃記憶體晶粒#0~#15之各者處,係能夠平行地實行對於第1平面(PLANE0)之資料寫入/讀出動作和對於第2平面(PLANE1)之資料寫入/讀出動作。在圖3所示之構成中,係能夠對於在NAND型快閃記憶體5中所包含之32個的平面而平行地實行資料寫入/讀出動作。
圖1中所示之控制器4,係藉由如同System-on-a-chip(SoC)一般之電路而被實現。
控制器4,係經由準據於Toggle NAND快閃介面或開放NAND快閃介面(ONFI)之NAND介面13,而被與NAND型快閃記憶體5(亦即是,NAND型快閃記憶體#0~#15)作電性連接。控制器4,係作為以對於NAND型快閃記憶體5作控制的方式所構成之記憶體控制器而動作。
控制器4,係藉由對於NAND型快閃記憶體5(亦即是,NAND型快閃記憶體#0~#15)作控制,來實行「將從主機2所收訊了的資料寫入至NAND型快閃記憶體中之資料寫入動作」和「將經由主機2而被要求的讀出對象資料從NAND型快閃記憶體5而讀出之資料讀出動作」。
控制器4,係從在NAND型快閃記憶體5中所包含之可進行平行動作之複數之晶粒或者是可進行平行動作之複數之平面,而建構出各別包含有複數之區塊(複數之物理區塊)的複數之區塊群組。控制器4,係將所建構出的複數之區塊群組,作為主機2所能夠進行存取之複數之物理記憶區域來作管理。
複數之區塊群組(亦即是複數之物理記憶區域),係為了成為能夠使主機2與控制器4共同地對於NAND型快閃記憶體5上之資料配置作管理,而被作使用。
例如,在從主機2而收訊了用以將資料寫入至某一區塊群組中之寫入指令的情況時,控制器4,係將此區塊群組決定為寫入目標區塊群組,並將被與所收訊了的寫入指令相互附加有關連之資料寫入至此寫入目標區塊群組處。又,在從主機2而收訊了用以將資料寫入至其他之區塊群組中之寫入指令的情況時,控制器4,係將此其他之區塊群組決定為寫入目標區塊群組,並將被與所收訊了的寫入指令相互附加有關連之資料寫入至此寫入目標區塊群組處。
作為用以將資料寫入至任意之1個的區塊群組處之寫入指令,係能夠使用包含有對於寫入目標區塊群組之識別符作指定的參數之寫入指令。於此情況,控制器4,係將藉由所收訊了的寫入指令而被作了指定的區塊群組,決定為寫入目標區塊群組。
或者是,作為用以將資料寫入至任意之1個的區塊群組處之寫入指令,係能夠使用在藉由NVMe規格而被作了規定的Zoned Namespaces(ZNS)中所被使用之寫入指令。
在控制器4為對於ZNS而有所支援的情況時,控制器4,係能夠使SSD3作為分區裝置(zoned device)來動作。在分區裝置中,分別被分配有「藉由將用以對於SSD3進行存取的邏輯位址空間作分割一事所得到的複數之邏輯位址範圍」之複數之區域,係作為邏輯性之記憶區域而被作使用。
用以對於SSD3進行存取之邏輯位址空間,係身為為了對於SSD3進行存取而被主機2所使用的相連續之邏輯位址。作為邏輯位址,係使用有邏輯區塊位址(LBA)。
藉由控制器4而被作管理之複數之區塊群組,係作為能夠分別被分配至此些之複數之區域處的複數之物理記憶區域而被作使用。
以下,主要針對「控制器4係對於ZNS有所支援,作為用以將資料寫入至任意之區塊群組處之寫入指令,係使用有在藉由NVMe規格而被作了規定的ZNS中所被使用之寫入指令、亦即是使用有對於區域作指定之寫入指令」的情況進行說明。
圖4,係為對於藉由NVMe規格所被規定之1個的分區名稱空間之構成例作展示之圖。
各分區名稱空間之邏輯位址範圍,係從LBA 0而開始。例如,圖4之分區名稱空間之邏輯區塊位址範圍,係包含有LBA 0~LBA z-1之相連續之z個的LBA。此分區名稱空間,係被分割成區域#0~區域#k之k+1個的區域。此些之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,係對於複數之區域之各者,而將複數之區塊群組之其中一個作為物理記憶區域來作分配,並藉由此來對於複數之區塊群組之各者與複數之區域之各者之間之映射作管理。
在從主機2而收訊了對於某一區域作指定之寫入指令的情況時,控制器4,係將被分配至藉由所收訊了的寫入指令而被作了指定的區域處之區塊群組,決定為寫入目標區塊群組。之後,控制器4,係將被與所收訊了的寫入指令相互附加有關連之資料,寫入至被決定為寫入目標區塊群組之區塊群組中。
各區域內之下一個的可進行寫入之LBA之值,係藉由與各區域相互對應之寫入指標而被作管理。圖5,係為對於在SSD3處所被實行的寫入指標(write pointer)之更新動作作展示之圖。
控制器4,係對於與複數之區域各別相互對應的複數之寫入指標作管理。各寫入指標,係代表與該寫入指標相對應之區域內之下一個的可寫入LBA。若是將資料序列性地寫入至某一區域中,則控制器4,係將與此區域相對應的寫入指標之值,作與被寫入了資料的邏輯區塊之數量相對應之量的增加。
於此,以區域#1作為例子,來對於寫入指標之更新動作作說明。區域#1,係包含有LBA m~LBA n-1之邏輯區塊位址範圍。LBA m,係身為區域#1之最小的邏輯區塊位址,亦即是身為區域#1之區域起始邏輯區塊位址(ZSLBA)。
當區域#1係身為並未包含有效資料之空白(empty)狀態的情況時,與區域#1相對應之寫入指標,係展現身為區域#1之區域起始邏輯區塊位址的LBA m。若是從主機2而收訊用以將區域#1開放之指令,則控制器4,係使區域#1之狀態變遷至能夠進行資料之寫入的開放狀態。於此情況,控制器4,係實行針對並不包含有效資料的空白狀態之區塊群組(空閒區塊群組)之其中1個的刪除動作,之後,將此1個的區塊群組,作為被與區域#1相互附加有關連之開放狀態之物理記憶區域而作分配。藉由此,係成為能夠進行針對區域#1之寫入。
當藉由對於區域#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內之某一LBA範圍而將資料再度作寫入的情況時,係成為需要將區域#1作重置(reset)而使寫入指標之值恢復至LBA m,之後將區域#1再度開放。
在區域#1被作了重置的情況時,控制器4,係能夠將作為區域#1用之物理記憶區域而被作了分配的區塊群組,視為並不包含有效資料之空閒區塊群組來進行處理。故而,僅需要進行針對此區塊群組之刪除動作,便能夠將此區塊群組再度利用在資料之寫入中。
回到圖1之說明。控制器4,係能夠作為以實行NAND型快閃記憶體5之資料管理以及區塊管理的方式所構成之快閃記憶體轉換層(Flash Translation Layer,FTL)而起作用。在此藉由FTL而被實行的資料管理中,係包含有(1)對於代表邏輯位址之各者與NAND型快閃記憶體5之物理位址之各者之間的對應關係之映射資訊之管理、(2)用以將NAND型快閃記憶體5之限制(例如,頁面單位之讀取/寫入動作和區塊單位之刪除動作)作隱蔽之處理等。
在本實施形態中,由於各區域內之寫入係被序列性地實行,因此,控制器4,係亦可使用區域/區塊群組分配管理表31,來僅對於各區域之開始LBA與被分配至各區域處之區塊群組之間的對應關係作管理。
在區塊管理中,係包含有不良區塊(損壞區塊)之管理等。不良區塊,係身為已無法正常地進行資料之讀出/寫入的區塊。
在NAND型快閃記憶體晶粒#0~#15之製造工程中,係會有在各個的NAND型快閃記憶體晶粒處而產生不良區塊的情況。控制器4,係使用不良區塊管理表32,來對於在各NAND型快閃記憶體晶粒(或者是各NAND型快閃記憶體晶粒之各平面)中所包含的不良區塊作管理。之後,控制器4,係對於在NAND型快閃記憶體晶粒#0~#15中所包含之不良區塊有所考慮地,而建構出複數之區塊群組。在不良區塊管理表32中,係儲存有代表在各NAND型快閃記憶體晶粒(或者是各平面)中所包含的不良區塊之不良資訊。
另外,藉由不良區塊管理表32而被作管理之不良區塊,係可僅包含有在NAND型快閃記憶體晶粒#0~#15之製造過程中所產生的不良區塊(原生不良區塊),亦可包含有原生不良區塊和在SSD3之使用開始後所產生的不良區塊(生長不良區塊)的雙方。代表在NAND型快閃記憶體晶粒#0~#15之製造過程中所產生的各不良區塊之資訊,係亦可從NAND型快閃記憶體5而被載入至不良區塊管理表32中。
控制器4,係除了上述的NAND介面13之外,亦包含有主機介面11、CPU12、DRAM介面14、直接記憶體存取控制器(DMAC)15、靜態RAM(SRAM)16、ECC(錯誤訂正碼,Error Correction Code)編碼/解碼部17。此些之主機介面11、CPU12、NAND快閃介面13、DRAM介面14、DMAC15、SRAM16、ECC編碼/解碼部17,係經由匯流排10而被相互作連接。
主機介面11,係為以實行與主機2之間之通訊的方式所構成之主機介面電路。主機介面11,例如,係身為PCIe控制器。或者是,當SSD3係身為將網路介面控制器作內藏之構成的情況時,主機介面11,係亦可作為網路介面控制器之一部分而被實現。
主機介面11,係能夠準據於NVMe規格來實行與主機2之間之通訊。主機介面11,係從主機2而收訊(提取)各種之指令。在此些之指令中,係包含有寫入指令、讀出指令、開放區域指令、關閉區域指令、重置區域指令等。
寫入指令,係為將應寫入之資料(寫入資料)寫入至NAND型快閃記憶體5中之指令(寫入要求)。寫入指令,例如,係包含有代表寫入資料所應被作寫入之最初之扇區(sector)的邏輯位址(開始LBA)、此寫入資料之資料容量、代表此寫入資料所被儲存的主機2之寫入緩衝內之位置的資料指標(緩衝位址)。主機2之寫入緩衝,係身為被設置在主機2之記憶體102內之記憶區域。
例如,在寫入指令中所包含的邏輯位址(開始LBA)之上位位元部,係作為對於「被與此寫入指令相互附加有關連之寫入資料所應被寫入的區域」作指定之識別符、亦即是作為此區域之ZSLBA,而被使用。又,在寫入指令中所包含的邏輯位址(開始LBA)之下位位元部,係作為寫入資料所應被寫入的區域內之寫入目標LBA(偏位,offset)而被作使用。
故而,藉由寫入指令所被指定的邏輯位址,係展示有複數之區域中之1個的區域、和寫入資料所應被寫入的此區域內之偏位。另外,係亦可將僅對於ZSLBA作指定的區域附加指令,作為寫入指令來使用。於此情況,區域內之寫入目標LBA(偏位),係以會使此區域內之寫入被序列性地實行的方式而藉由控制器4來被決定。
寫入資料之資料容量,例如,係亦可藉由扇區(邏輯區塊)之數量來作指定。1個的扇區,係對應於能夠藉由主機2來指定的寫入資料之最小資料容量。亦即是,寫入資料之資料容量,係藉由扇區之倍數而被作表現。
讀取指令,係為從NAND型快閃記憶體5而將資料讀出的指令(讀取要求)。讀取指令,係包含有代表應使資料(讀出對象資料)被作讀出之最初之扇區的邏輯位址(開始LBA)、和讀出對象資料之資料容量、以及代表此讀出對象資料所應被作傳輸的主機2之讀取緩衝內之位置的資料指標(緩衝位址)。主機2之讀取緩衝,係身為被設置在主機2之記憶體102內之記憶區域。
在讀取指令中所包含的邏輯位址之上位位元部,係作為對於讀出對象資料所被作保存之區域作指定的識別符而被使用。又,在讀取指令中所包含的邏輯位址之下位位元部,係對於讀出對象資料所被作保存之區域內之偏位作指定。
開放區域指令,係為使各別為空白(empty)狀態的複數之區域之其中1個變遷為可利用在資料之寫入中的開放狀態之指令(開放要求)。亦即是,開放區域指令,係為了使身為並不包含有效資料之空白狀態的特定之區塊群組變遷為可利用在資料之寫入中的開放狀態,而被作使用。
開放區域指令,係包含對於應變遷為開放狀態之區域作指定的邏輯位址。例如,藉由開放區域指令而被作指定的邏輯位址之上位位元部,係作為對於應變遷為開放狀態之區域作指定的識別符而被作使用。
關閉區域指令,係為用以使開放狀態之區域之其中1個變遷為使寫入被作了中斷的關閉狀態之指令(關閉要求)。關閉區域指令,係包含對於應變遷為關閉狀態之區域作指定的邏輯位址。例如,藉由關閉區域指令而被作指定的邏輯位址之上位位元部,係作為對於應變遷為關閉狀態之區域作指定的識別符而被作使用。
重置區域指令,係為用以對於應被實行覆寫之區域作重置而使其變遷為空白狀態之指令(重置要求)。例如,重置區域指令,係為了使被資料所填滿之全滿狀態的區域變遷為並不包含有效資料的空白狀態,而被作使用。有效資料,係代表被與邏輯位址相互附加有關連之資料。重置區域指令,係包含對於應變遷為空白狀態之區域作指定的邏輯位址。例如,藉由重置區域指令而被作指定的邏輯位址之上位位元部,係作為對於應變遷為空白狀態之區域作指定的識別符而被作使用。與藉由重置區域指令而被變遷為空白狀態之區域相對應的寫入指標之值,係被設定為代表此區域的ZSLBA之值。
CPU12,係為以對於主機介面11、NAND快閃介面13、DRAM介面14、DMAC15、SRAM16、ECC編碼/解碼部17作控制的方式所構成之處理器。
CPU12,係對於SSD3之電源ON作回應而從NAND型快閃記憶體5或者是未圖示之ROM來將控制程式(韌體)載入至DRAM6,之後藉由實行此韌體來進行各種之處理。另外,韌體,係亦可被載入至SRAM16上。
CPU12,係能夠實行用以對於從主機2而來之各種指令進行處理的指令處理等。CPU12之動作,係被上述之韌體所控制。另外,指令處理之一部分或全部,係亦可藉由控制器4內之專用硬體來實行。
CPU12,係可作為快閃管理部21而起作用。另外,快閃管理部21之一部分或全部,係亦可藉由控制器4內之專用硬體來實現。
快閃管理部21,係從在NAND型快閃記憶體5中所包含之複數之晶粒或者是之複數之平面,而建構出各別包含有複數之非不良區塊的複數之區塊群組,並將所建構出的複數之區塊群組,作為主機2所能夠進行存取的複數之物理記憶區域來作管理。於此,非不良區塊,係代表並非為不良之區塊。在各個的區塊群組之建構中所被使用的晶粒或者是平面之數量,係為2以上。
在本實施形態中,為了進行複數之區塊群組之建構,係能夠使用2種類的區塊群組、亦即是第1形態區塊群組和第2形態區塊群組。亦即是,藉由快閃管理部21而被作管理的複數之區塊群組,係至少包含有使用第1形態區塊群組所構成之第1區塊群組、和使用第2形態區塊群組所構成之第2區塊群組。
第1形態區塊群組,係包含有藉由從在NAND型快閃記憶體5中所包含之複數之晶粒或者是複數之平面而分別選擇1以上之相同數量之非不良區塊所得到的複數之非不良區塊。
第2形態區塊群組,係包含有從在NAND型快閃記憶體5中所包含之複數之晶粒或者是複數之平面而選擇的與在第1形態區塊群組中所包含之複數之非不良區塊相同數量的複數之非不良區塊。被包含於第2形態區塊群組中之每一晶粒或者是每一平面的個別之非不良區塊之數量,係並非為相同數量,而是在複數之晶粒或者是複數之平面間而相異。
被包含於第2形態區塊群組中之每一晶粒或者是每一平面的個別之非不良區塊之最大數、和被包含於第2形態區塊群組中之每一晶粒或者是每一平面的個別之非不良區塊之最小數,其兩者之差,係為2以上。例如,第2形態區塊群組,係包含有從複數之晶粒或者是複數之平面之中之不良區塊數為最少的晶粒或者是平面而選擇的2以上之非不良區塊,並且,係並不包含有複數之晶粒或者是複數之平面之中之不良區塊數為最多的晶粒或者是平面內之非不良區塊。
於此,針對第1形態區塊群組與第2形態區塊群組之數個構成例進行說明。
在本實施形態中,為了將主機2所能夠進行存取之複數之物理記憶區域的容量、亦即是複數之區域之容量設為相等,在複數之區塊群組中所分別包含的非不良區塊之數量係被設定為相同。
複數之區塊群組,例如,係可藉由複數之第1形態區塊群組和1個以上的第2形態區塊群組來構成。在1個以上的第2形態區塊群組之各者中所包含之非不良區塊之數量,係與在第1形態區塊群組之各者中所包含之非不良區塊之數量相同。
複數之第1形態區塊群組,例如,係使用被搭載於SSD3處之NAND型快閃記憶體晶粒#0~#15之中之2個以上的非揮發性記憶體晶粒而被構成。
於此情況,快閃管理部21,係建構出各別包含有「藉由從2個以上的非揮發性記憶體晶粒而分別選擇1個以上的相同數量之非不良區塊所得到的複數之非不良區塊」之複數之第1形態區塊群組。例如,當各第1形態區塊群組為由2個的區塊所構成的情況時,各第1形態區塊群組,係包含有從2個的非揮發性記憶體晶粒而各選擇出1個的總計2個的非不良區塊。又,例如,當各第1形態區塊群組為由4個的區塊所構成的情況時,各第1形態區塊群組,係包含有從4個的非揮發性記憶體晶粒而各選擇出1個的總計4個的非不良區塊。
或者是,複數之第1形態區塊群組之各者,係亦可由從被搭載於SSD3處之NAND型快閃記憶體晶粒#0~#15之中之2個以上的非揮發性記憶體晶粒之各者而分別作2個的選擇之非不良區塊之集合而被構成。例如,當各第1形態區塊群組為由4個的區塊所構成的情況時,各第1形態區塊群組,係包含有從2個的非揮發性記憶體晶粒而各選擇出2個的總計4個的非不良區塊。
如此這般,複數之第1形態區塊群組之各者,係包含從2個以上的非揮發性記憶體晶粒之各者而分別選擇之1以上之相同數量之非不良區塊。
1個以上的第2形態區塊群組之各者,亦係使用「在複數之第1形態區塊群組之建構中所被使用之2個以上的非揮發性記憶體晶粒」而被構成。快閃管理部21,係建構出各別包含有「藉由從2個以上的非揮發性記憶體晶粒而分別選擇非相同數量之非不良區塊所得到的複數之非不良區塊」之1個以上的第2形態區塊群組。
於此情況,1個以上的第2形態區塊群組之各者,係包含有從此些之2個以上的非揮發性記憶體晶粒中之不良區塊之數量為最少的非揮發性記憶體晶粒而選擇的2以上之非不良區塊,並且,係並不包含有此些之2個以上的非揮發性記憶體晶粒之中之不良區塊數為最多的非揮發性記憶體晶粒內之非不良區塊。
例如,當各第2形態區塊群組為由2個的區塊所構成的情況時,各第2形態區塊群組,係僅包含有從2個的非揮發性記憶體晶粒之中之具有更少之不良區塊數的其中一方之非揮發性記憶體晶粒而選擇出之2個的非不良區塊,而並不包含具備有更多之不良區塊數之另外一方的非揮發性記憶體晶粒內之非不良區塊。
若是僅使用第1形態區塊群組而建構出了複數之區塊群組,則當在非揮發性記憶體晶粒間之不良區塊數之偏差為大的情況時,所能夠建構出的區塊群組之數量,其最大值係會被限制為「在不良區塊數為最多之非揮發性記憶體晶粒中所包含的非不良區塊之數量」。因此,在不良區塊數為少的非揮發性記憶體晶粒中,就算是身為非不良區塊實際上也仍然不會被作利用的區塊之數量係會增加。此事,係可能會成為對於可利用之區域的數量造成限制的重要因素。
在本實施形態中,在複數之區塊群組之建構中,係並不僅是使用包含有「藉由從複數之非揮發性記憶體晶粒而選擇相同數量之區塊所得到的複數之非不良區塊」之第1形態區塊群組,而亦使用「具備有與第1形態區塊群組相同之容量,並且包含有藉由從複數之非揮發性記憶體晶粒而選擇非相同數量之區塊所得到的複數之非不良區塊」之第2形態區塊群組。
亦即是,複數之區塊群組,係使用第1形態區塊群組和第2形態區塊群組而被建構出來。
在建構第2形態區塊群組時,係從不良區塊數為少的非揮發性記憶體晶粒而被選擇有更多的非不良區塊。
故而,係成為能夠在將全部的區塊群組之容量維持為相同之容量的同時,亦將幾乎所有的非不良區塊有效率地使用在複數之區塊群組之建構中。故而,就算是當在非揮發性記憶體晶粒間之不良區塊數之偏差為大的情況時,也能夠將在此些之非揮發性記憶體晶粒中所包含的幾乎所有的非不良區塊使用於區塊群組之建構中。其結果,係能夠使可利用的區域之數量增加,並且能夠將此些之區域之容量(zone capacity)設為相同。故而,係能夠將由主機2所致之關連於各區域之管理的負擔減輕,並且實現SSD3之容量的最大化。
另外,當在被搭載於SSD3處之NAND型快閃記憶體5為包含有複數之平面的情況時,複數之第1形態區塊群組之各者,係亦可使用複數之平面之中之2個以上的平面來構成。同樣的,1個以上的第2形態區塊群組之各者,亦係可使用此些之2個以上的平面而被構成。
又,當不良區塊數為少的非揮發性記憶體晶粒(或者是平面)係存在有複數的情況時,在某一第2形態區塊群組之建構中,快取管理部21,係從不良區塊數為少之第1非揮發性記憶體晶粒(或者是不良區塊數為少之第1平面)而選擇更多的非不良區塊。又,在其他之第2形態區塊群組之建構中,快取管理部21,係從不良區塊數為少之第2非揮發性記憶體晶粒(或者是不良區塊數為少之第2平面)而選擇更多的非不良區塊。藉由此,係成為能夠將在不良區塊數為少之此些之非揮發性記憶體晶粒(或者是平面)之各者中所包含的非不良區塊之幾乎全部,使用於區塊群組之建構中。
例如,針對藉由3以上之非不良區塊來構成各區塊群組的情況作考慮。又,係針對「在第1非揮發性記憶體晶粒中所包含之不良區塊之數量為較在第2非揮發性記憶體晶粒中所包含之不良區塊之數量而更少了2以上,並且在第3非揮發性記憶體晶粒中所包含之不良區塊之數量為較在第2非揮發性記憶體晶粒中所包含之不良區塊之數量而更少了2以上」的情況作考慮。
於此情況,複數之第1形態區塊群組之各者,係包含從第1~第3非揮發性記憶體晶粒之各者而分別選擇之1以上之相同數量之非不良區塊。
1以上之第2形態區塊群組,係包含有「從第1非揮發性記憶體晶粒而選擇了更多的區塊之區塊群組」和「從第3非揮發性記憶體晶粒而選擇了更多的區塊之區塊群組」。
從第1非揮發性記憶體晶粒而選擇了更多的區塊之區塊群組,係包含有從第1非揮發性記憶體晶粒所選擇之2以上之非不良區塊、和從第3非揮發性記憶體晶粒所選擇之1以上之非不良區塊,並且並不包含從第2非揮發性記憶體晶粒所選擇之非不良區塊。
從第3非揮發性記憶體晶粒而選擇了更多的區塊之區塊群組,係包含有從第1非揮發性記憶體晶粒所選擇之1以上之非不良區塊、和從第3非揮發性記憶體晶粒所選擇之2以上之非不良區塊,並且並不包含從第2非揮發性記憶體晶粒所選擇之非不良區塊。
藉由此構成,係成為能夠將在第1~第3非揮發性記憶體晶粒中所包含之幾乎全部的非不良區塊,使用於區塊群組之建構中。
另外,當在複數之區塊群組之建構中所使用之複數之晶粒或者是複數之平面之中之「不良區塊之數量為最少的晶粒或者是平面」中所包含之不良區塊之數量與在複數之晶粒或者是複數之平面之中之「不良區塊之數量為最多的晶粒或者是平面」中所包含之不良區塊之數量之間之差係為2以上的情況時,快取管理部21,係使用第1形態區塊群組和第2形態區塊群組,而建構出複數之區塊群組。
當「在不良區塊之數量為最少的晶粒或者是平面中所包含之不良區塊之數量」與「在不良區塊之數量為最多的晶粒或者是平面中所包含之不良區塊之數量」之間之差係為1以下的情況時,快取管理部21,係僅使用第1形態區塊群組,而建構出複數之區塊群組。
在以下之說明中,各區塊群組,係亦作為超區塊而被作參照。
NAND介面13,係為以在CPU12之控制之下而對於NAND型快閃記憶體5作控制的方式所構成之記憶體控制電路。
DRAM介面14,係為以在CPU12之控制之下而對於DRAM6作控制的方式所構成之DRAM控制電路。DRAM6之儲存區域之一部分,係亦可作為用以記憶區域/區塊群組分配管理表31以及不良區塊管理表32之記憶區域而被利用。
DMAC15,係在CPU12之控制之下,實行在主機2之記憶體102與內部緩衝161之間的資料傳輸。SRAM16之記憶區域之一部分係被作為內部緩衝161來使用。另外,係亦可使DRAM6之記憶區域之一部分被作為內部緩衝161來使用。在應從主機2之記憶體102內之寫入緩衝來將寫入資料傳輸至內部緩衝161處的情況時,CPU12,係對於DMAC15,而指定代表主機2之寫入緩衝內之位置的傳輸來源位址、應傳輸之寫入資料之容量、代表內部緩衝161內之位置的傳輸目標位址。
ECC編碼/解碼部17,在應將資料對於NAND型快閃記憶體5作寫入時,係藉由將資料(應寫入之資料)作編碼(ECC編碼),來對於此資料而將錯誤訂正碼(ECC)作為冗餘碼而作附加。在從NAND型快閃記憶體5而使資料被讀取時,ECC編碼/解碼部17,係使用被附加於被讀出了的資料處之ECC,來進行此資料之錯誤訂正(ECC解碼)。
接著,針對在區域處作為物理記憶區域而被作分配的各區塊群組之構成例作說明。圖6,係為對於在實施形態的SSD3中所被管理之複數之區塊群組之第1構成例作展示之圖。
首先,參照圖6之上部,針對比較例之區塊群組的構成例作說明。於此,係針對「被分配至1個的區域處之1個的區塊群組係包含有2個的區塊」的情況作考慮。如同在圖6之上部處所示一般,NAND型快閃記憶體晶粒#0以及NAND型快閃記憶體晶粒#1之各者,係包含有10個的區塊BLK0~BLK9。在NAND型快閃記憶體#0處,10個的區塊BLK0~BLK9之中之4個的區塊BLK2、BLK7~BLK9係身為不良區塊。另一方面,在NAND型快閃記憶體#1處,係並不存在有不良區塊,10個的區塊BLK0~BLK9之全部係身為非不良區塊。
在比較例中,係恆常僅使用第1形態區塊群組而建構出複數之區塊群組(複數之超區塊SB)。故而,所能夠建構出的超區塊SB之數量,最大係被限制為在NAND型快閃記憶體晶粒#0中所包含的非不良區塊之數量(於此係為6)。
亦即是,超區塊SB0~SB5之各者,係由從2個的NAND型快閃記憶體晶粒#0~#1而各作了1個的選擇之合計2個的非不良區塊所構成。
例如,超區塊SB0,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK0和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK0所構成。
超區塊SB1,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK1和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK1所構成。
超區塊SB2,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK3和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK3所構成。
超區塊SB3,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK4和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK4所構成。
超區塊SB4,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK5和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK5所構成。
超區塊SB5,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK6和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK6所構成。
若是6個的超區塊SB0~SB5被建構出來,則NAND型快閃記憶體晶粒#0內之剩餘的非不良區塊之數量係成為0。因此,在NAND型快閃記憶體#1內之10個的非不良區塊(BLK0~BLK9)之中之4個的非不良區塊(於此,係為BLK2、BLK7~BLK9),係並不會被使用在超區塊SB之建構中。其結果,相當於4個的區塊之容量係成為被無謂浪費。
係亦能夠使用4個的非不良區塊(於此,係為BLK2、BLK7~BLK9),來建構出4個的超區塊SB。
但是,於此情況,此些之4個的超區塊SB之各者之容量,係成為其他之各超區塊SB之容量的一半。其結果,由於複數之區域的容量係成為並不一致,因此,對於主機2而言,複數之區域的處理係變得困難。
接著,參照圖6之下部,針對本實施形態之區塊群組的構成例作說明。在本實施形態中,係並不僅是使用複數之第1形態區塊群組,而亦使用1以上之第2形態區塊群組,來建構出8個的區塊群組(超區塊SB0~SB7)。
超區塊SB0~SB5之各者,係身為第1形態區塊群組。超區塊SB0~SB5之各者,係由從2個的NAND型快閃記憶體晶粒#0~#1而各作了1個的選擇之合計2個的非不良區塊所構成。
例如,超區塊SB0,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK0和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK0所構成。
超區塊SB1,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK1和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK1所構成。
超區塊SB2,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK3和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK2所構成。
超區塊SB3,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK4和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK3所構成。
超區塊SB4,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK5和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK4所構成。
超區塊SB5,係由從NAND型快閃記憶體晶粒#0所選擇之非不良區塊BLK6和從NAND型快閃記憶體晶粒#1所選擇之非不良區塊BLK5所構成。
超區塊SB6~SB7之各者,係身為第2形態區塊群組。超區塊SB6~SB7之各者,係由從不良區塊數為少之NAND型快閃記憶體晶粒#1所選擇之合計2個的非不良區塊所構成。在超區塊SB6~SB7之各者中,係並不包含有不良區塊數為多之NAND型快閃記憶體晶粒#0內之非不良區塊。
在超區塊SB0~SB5之各者中,在各超區塊SB中所包含之2個的區塊,係隸屬於相異之NAND型快閃記憶體晶粒。因此,係能夠將針對此些之2個的區塊之寫入或讀出動作平行地實行。
另一方面,在超區塊SB6~SB7之各者中,在各超區塊SB中所包含之2個的區塊,係隸屬於相同之NAND型快閃記憶體晶粒。因此,係並無法將針對此些之2個的區塊之寫入或讀出動作平行地實行。
故而,為了將資料寫入至被分配有超區塊SB6或SB7之區域中所需要的時間,係成為為了將資料寫入至被分配有超區塊SB0~SB5之其中一者之區域中所需要的時間之2倍。
同樣的,為了將資料從被分配有超區塊SB6或SB7之區域中而讀出所需要的時間,係成為為了將資料從被分配有超區塊SB0~SB5之其中一者之區域中而讀出所需要的時間之2倍。
如此這般,第2形態區塊群組之存取速度,係成為等於第1形態區塊群組之存取速度的一半。
然而,藉由使用第2形態區塊群組,就算是當存在有NAND型快閃記憶體晶粒#0與NAND型快閃記憶體晶粒#1之間之不良區塊數之偏差的情況時,亦成為能夠將在不良區塊數為少之非揮發性記憶體晶粒#1中所包含的非不良區塊之全部(或者是幾乎全部),使用於超區塊SB之建構中。
以下,將被分配有第1形態區塊群組之區域,稱作全速區域,並將被分配有第2形態區塊群組之區域,稱作半速區域。又,係將第1形態區塊群組,稱作全速區塊群組,並將第2形態區塊群組,稱作半速區塊群組。
圖7,係為對於在實施形態的SSD3中所被管理之複數之區塊群組之第2構成例作展示之圖。
首先,參照圖7之上部,針對比較例之區塊群組的構成例作說明。於此,係針對「NAND型快閃記憶體晶粒#0係包含有2個的平面,並且被分配至1個的區域處之1個的區塊群組係包含有2個的區塊」的情況作考慮。如同在圖7之上部處所示一般,NAND型快閃記憶體晶粒#0內之第1平面(PLANE0)以及第2平面(PLANE1)之各者,係包含有10個的區塊BLK0~BLK9。在第1平面(PLANE0)處,10個的區塊BLK0~BLK9之中之4個的區塊BLK2、BLK7~BLK9係身為不良區塊。另一方面,在第2平面(PLANE1)處,係並不存在有不良區塊,10個的區塊BLK0~BLK9之全部係身為非不良區塊。
在比較例中,係僅使用第1形態區塊群組而建構出複數之區塊群組(複數之超區塊SB)。故而,所能夠建構出的超區塊SB之數量,最大係被限制為在第1平面(PLANE0)中所包含的非不良區塊之數量(於此係為6)。
亦即是,超區塊SB0~SB5之各者,係由從2個的平面(PLANE0~PLANE1)而各作了1個的選擇之合計2個的非不良區塊所構成。例如,超區塊SB0,係由從第1平面(PLANE0)所選擇之非不良區塊BLK0和從第2平面(PLANE1)所選擇之非不良區塊BLK0所構成。超區塊SB1,係由從第1平面(PLANE0)所選擇之非不良區塊BLK1和從第2平面(PLANE1)所選擇之非不良區塊BLK1所構成。超區塊SB2,係由從第1平面(PLANE0)所選擇之非不良區塊BLK3和從第2平面(PLANE1)所選擇之非不良區塊BLK3所構成。超區塊SB3,係由從第1平面(PLANE0)所選擇之非不良區塊BLK4和從第2平面(PLANE1)所選擇之非不良區塊BLK4所構成。超區塊SB4,係由從第1平面(PLANE0)所選擇之非不良區塊BLK5和從第2平面(PLANE1)所選擇之非不良區塊BLK5所構成。超區塊SB5,係由從第1平面(PLANE0)所選擇之非不良區塊BLK6和從第2平面(PLANE1)所選擇之非不良區塊BLK6所構成。
若是6個的超區塊SB0~SB5被建構出來,則第1平面(PLANE0)內之剩餘的非不良區塊之數量係成為0。因此,在第2平面(PLANE1)內之10個的非不良區塊(BLK0~BLK9)之中之4個的非不良區塊(於此,係為BLK2、BLK7~BLK9),係並不會被使用在超區塊SB之建構中。其結果,相當於4個的區塊之容量係成為被無謂浪費。
接著,參照圖7之下部,針對本實施形態之區塊群組的構成例作說明。在本實施形態中,係並不僅是使用複數之第1形態區塊群組,而亦使用1以上之第2形態區塊群組,來建構出8個的區塊群組(超區塊SB0~SB7)。
超區塊SB0~SB5之各者,係身為第1形態區塊群組。超區塊SB0~SB5之各者,係由從第1平面(PLANE0)以及第2平面(PLANE1)而各作了1個的選擇之合計2個的非不良區塊所構成。
例如,超區塊SB0,係由從第1平面(PLANE0)所選擇之非不良區塊BLK0和從第2平面(PLANE1)所選擇之非不良區塊BLK0所構成。超區塊SB1,係由從第1平面(PLANE0)所選擇之非不良區塊BLK1和從第2平面(PLANE1)所選擇之非不良區塊BLK1所構成。超區塊SB2,係由從第1平面(PLANE0)所選擇之非不良區塊BLK3和從第2平面(PLANE1)所選擇之非不良區塊BLK2所構成。超區塊SB3,係由從第1平面(PLANE0)所選擇之非不良區塊BLK4和從第2平面(PLANE1)所選擇之非不良區塊BLK3所構成。超區塊SB4,係由從第1平面(PLANE0)所選擇之非不良區塊BLK5和從第2平面(PLANE1)所選擇之非不良區塊BLK4所構成。超區塊SB5,係由從第1平面(PLANE0)所選擇之非不良區塊BLK6和從第2平面(PLANE1)所選擇之非不良區塊BLK5所構成。
超區塊SB6~SB7之各者,係身為第2形態區塊群組。超區塊SB6~SB7之各者,係由從不良區塊數為少之第2平面(PLANE1)所選擇之合計2個的非不良區塊所構成。在超區塊SB6~SB7之各者中,係並不包含有不良區塊數為多之第1平面(PLANE0)內之非不良區塊。
在超區塊SB0~SB5之各者中,在各超區塊SB中所包含之2個的區塊,係隸屬於相異之平面。因此,係能夠將針對此些之2個的區塊之寫入或讀出動作平行地實行。
另一方面,在超區塊SB6~SB7之各者中,在各超區塊SB中所包含之2個的區塊,係隸屬於相同之平面。因此,係並無法將針對此些之2個的區塊之寫入或讀出動作平行地實行。
如此這般,藉由並非僅使用複數之第1形態區塊群組而是亦使用1以上之第2形態區塊群組,就算是當在第1平面(PLANE0)與第2平面(PLANE1)之間之不良區塊數之偏差為大的情況時,亦成為能夠將在不良區塊數為少之第2平面(PLANE1)中所包含的非不良區塊之全部(或者是幾乎全部),使用於超區塊SB之建構中。
圖8,係為對於在實施形態的SSD3中所被管理之複數之區塊群組之第3構成例作展示之圖。
首先,參照圖8之上部,針對比較例之區塊群組的構成例作說明。於此,係針對「被分配至1個的區域處之1個的區塊群組係包含有4個的區塊」的情況作考慮。如同在圖8之上部處所示一般,NAND型快閃記憶體晶粒#0~NAND型快閃記憶體晶粒#3之各者,係包含有10個的區塊BLK0~BLK9。在NAND型快閃記憶體晶粒#0中所包含的不良區塊之數量係為0。在NAND型快閃記憶體晶粒#1中所包含的不良區塊之數量亦係為0。在NAND型快閃記憶體晶粒#2中所包含的不良區塊之數量係為2。在NAND型快閃記憶體晶粒#3中所包含的不良區塊之數量係為5。
在比較例中,係僅使用第1形態區塊群組而建構出複數之區塊群組(複數之超區塊SB)。故而,所能夠建構出的超區塊SB之數量,最大係被限制為在不良區塊之數量為最多之NAND型快閃記憶體晶粒#3中所包含的非不良區塊之數量(於此係為5)。
在NAND型快閃記憶體#0內之10個的非不良區塊(BLK0~BLK9)之中之5個的非不良區塊(於此,係為BLK1~BLK2、BLK6~BLK8),係並不會被使用在超區塊SB之建構中。其結果,相當於5個的區塊之容量係成為被無謂浪費。
在NAND型快閃記憶體#1中,亦同樣的,5個的非不良區塊(於此,係為BLK1~BLK2、BLK6~BLK8),係並不會被使用在超區塊SB之建構中。其結果,相當於5個的區塊之容量係成為被無謂浪費。
在NAND型快閃記憶體#2中,3個的非不良區塊(於此,係為BLK1、BLK6~BLK7),係並不會被使用在超區塊SB之建構中。其結果,相當於3個的區塊之容量係成為被無謂浪費。
接著,參照圖8之下部,針對本實施形態之區塊群組的構成例作說明。在本實施形態中,係並不僅是使用複數之第1形態區塊群組,而亦使用1以上之第2形態區塊群組,來建構出8個的區塊群組(超區塊SB0~SB7)。
超區塊SB0、SB2~SB4、SB7之各者,係身為第1形態區塊群組。超區塊SB0、SB2~SB4、SB7之各者,係由從4個的NAND型快閃記憶體晶粒#0~#3而各作了1個的選擇之合計4個的非不良區塊所構成。
超區塊SB1、SB5~SB6之各者,係身為第2形態區塊群組。超區塊SB1,係包含有從NAND型快閃記憶體晶粒#0所選擇之2個的非不良區塊BLK1~BLK2和從NAND型快閃記憶體晶粒#1所選擇之1個的非不良區塊BLK1以及從NAND型快閃記憶體晶粒#2所選擇之1個的非不良區塊BLK1。超區塊SB1,係並不包含有NAND型快閃記憶體晶粒#3內之非不良區塊。
在超區塊SB1中,針對NAND型快閃記憶體晶粒#0內之2個的非不良區塊BLK1~BLK2之其中一者所進行的寫入或讀出動作,係能夠與針對2個的NAND型快閃記憶體晶粒#1~#2內之2個的非不良區塊BLK1所進行的寫入或讀出動作平行地實行。然而,針對NAND型快閃記憶體晶粒#0內之2個的非不良區塊BLK1~BLK2之另外一者所進行的寫入或讀出動作,係並無法平行地實行。因此,為了將資料寫入至被分配有超區塊SB1之區域中所需要的時間,係成為為了將資料寫入至被分配有超區塊SB0、SB2~SB4、SB7之其中一者之區域中所需要的時間之2倍。故而,被分配有超區塊SB1之區域,係作為半速區域而動作。
超區塊SB5,係包含有從NAND型快閃記憶體晶粒#0所選擇之2個的非不良區塊BLK6~BLK7和從NAND型快閃記憶體晶粒#1所選擇之1個的非不良區塊BLK6以及從NAND型快閃記憶體晶粒#2所選擇之1個的非不良區塊BLK6。超區塊SB5,係並不包含有NAND型快閃記憶體晶粒#3內之非不良區塊。被分配有超區塊SB5之區域,亦係作為半速區域而動作。
超區塊SB6,係包含有從NAND型快閃記憶體晶粒#0所選擇之1個的非不良區塊BLK8和從NAND型快閃記憶體晶粒#1所選擇之2個的非不良區塊BLK7~BLK8以及從NAND型快閃記憶體晶粒#2所選擇之1個的非不良區塊BLK7。超區塊SB6,係並不包含有NAND型快閃記憶體晶粒#3內之非不良區塊。
在超區塊SB6中,針對NAND型快閃記憶體晶粒#1內之2個的非不良區塊BLK7~BLK8之其中一者所進行的寫入或讀出動作,係能夠與針對NAND型快閃記憶體晶粒#0內之非不良區塊BLK8以及NAND型快閃記憶體晶粒#2內之非不良區塊BLK7所進行的寫入或讀出動作平行地實行。然而,針對NAND型快閃記憶體晶粒#1內之2個的非不良區塊BLK7~BLK8之另外一者所進行的寫入或讀出動作,係並無法平行地實行。因此,為了將資料寫入至被分配有超區塊SB6之區域中所需要的時間,係成為為了將資料寫入至被分配有超區塊SB0、SB2~SB4、SB7之其中一者之區域中所需要的時間之2倍。故而,被分配有超區塊SB6之區域,亦係作為半速區域而動作。
圖9,係為對於在實施形態的SSD3中所被管理之複數之區塊群組之第4構成例作展示之圖。
首先,參照圖9之上部,針對比較例之區塊群組的構成例作說明。於此,係針對「NAND型快閃記憶體晶粒#0係包含有4個的平面,並且被分配至1個的區域處之1個的區塊群組係包含有4個的區塊」的情況作考慮。如同在圖9之上部處所示一般,第1~第4平面(PLANE0~PLANE3)之各者,係包含有10個的區塊BLK0~BLK9。在第1平面(PLANE0)中所包含的不良區塊之數量係為0。在第2平面(PLANE1)中所包含的不良區塊之數量亦係為0。在第3平面(PLANE2)中所包含的不良區塊之數量係為2。在第4平面(PLANE3)中所包含的不良區塊之數量係為5。
在比較例中,係僅使用第1形態區塊群組而建構出複數之區塊群組(複數之超區塊SB)。故而,所能夠建構出的超區塊SB之數量,最大係被限制為在不良區塊之數量為最多之第4平面(PLANE3)中所包含的非不良區塊之數量(於此係為5)。
在第1平面(PLANE0)內之10個的非不良區塊(BLK0~BLK9)之中之5個的非不良區塊(於此,係為BLK1~BLK2、BLK6~BLK8),係並不會被使用在超區塊SB之建構中。其結果,相當於5個的區塊之容量係成為被無謂浪費。
在第2平面(PLANE1)中,亦同樣的,5個的非不良區塊(於此,係為BLK1~BLK2、BLK6~BLK8),係並不會被使用在超區塊SB之建構中。其結果,相當於5個的區塊之容量係成為被無謂浪費。
在第3平面(PLANE2)中,3個的非不良區塊(於此,係為BLK1、BLK6~BLK7),係並不會被使用在超區塊SB之建構中。其結果,相當於3個的區塊之容量係成為被無謂浪費。
接著,參照圖9之下部,針對本實施形態之區塊群組的構成例作說明。在本實施形態中,係並不僅是使用複數之第1形態區塊群組,而亦使用1以上之第2形態區塊群組,來建構出8個的區塊群組(超區塊SB0~SB7)。
超區塊SB0、SB2~SB4、SB7之各者,係身為第1形態區塊群組。超區塊SB0、SB2~SB4、SB7之各者,係由從4個的平面(PLANE0~PLANE3)而各作了1個的選擇之合計4個的非不良區塊所構成。
超區塊SB1、SB5~SB6之各者,係身為第2形態區塊群組。超區塊SB1,係包含有從第1平面(PLANE0)所選擇之2個的非不良區塊BLK1~BLK2和從第2平面(PLANE1)所選擇之1個的非不良區塊BLK1以及從第3平面(PLANE2)所選擇之1個的非不良區塊BLK1。超區塊SB1,係並不包含有第4平面(PLANE3)內之非不良區塊。被分配有超區塊SB1之區域,係作為半速區域而動作。
超區塊SB5,係包含有從第1平面(PLANE0)所選擇之2個的非不良區塊BLK6~BLK7和從第2平面(PLANE1)所選擇之1個的非不良區塊BLK6以及從第3平面(PLANE2)所選擇之1個的非不良區塊BLK6。超區塊SB5,係並不包含有第4平面(PLANE3)內之非不良區塊。被分配有超區塊SB5之區域,亦係作為半速區域而動作。
超區塊SB6,係包含有從第1平面(PLANE0)所選擇之1個的非不良區塊BLK8和從第2平面(PLANE1)所選擇之2個的非不良區塊BLK7~BLK8以及從第3平面(PLANE2)所選擇之1個的非不良區塊BLK7。超區塊SB6,係並不包含有第4平面(PLANE3)內之非不良區塊。被分配有超區塊SB6之區域,亦係作為半速區域而動作。
圖10,係為對於在實施形態的SSD3中所被管理之複數之區塊群組之第5構成例作展示之圖。
首先,參照圖10之上部,針對比較例之區塊群組的構成例作說明。於此,係針對「2個的NAND型快閃記憶體晶粒#0~#1之各者係包含有2個的平面,並且被分配至1個的區域處之1個的區塊群組係包含有4個的區塊」的情況作考慮。如同在圖10之上部處所示一般,NAND型快閃記憶體晶粒#0內之第1平面(PLANE0)以及第2平面(PLANE1)之各者,係包含有10個的區塊BLK0~BLK9。NAND型快閃記憶體晶粒#1內之第1平面(PLANE0)以及第2平面(PLANE1)之各者,亦係包含有10個的區塊BLK0~BLK9。
在NAND型快閃記憶體晶粒#0之第1平面(PLANE0)中所包含的不良區塊之數量係為0。在NAND型快閃記憶體晶粒#0之第2平面(PLANE1)中所包含的不良區塊之數量亦係為0。在NAND型快閃記憶體晶粒#1之第1平面(PLANE0)中所包含的不良區塊之數量係為2。在NAND型快閃記憶體晶粒#1之第2平面(PLANE1)中所包含的不良區塊之數量係為5。
在比較例中,係僅使用第1形態區塊群組而建構出複數之區塊群組(複數之超區塊SB)。故而,所能夠建構出的超區塊SB之數量,最大係被限制為在不良區塊之數量為最多之NAND型快閃記憶體晶粒#1之第2平面(PLANE1)中所包含的非不良區塊之數量(於此係為5)。
在NAND型快閃記憶體#0之第1平面(PLANE0)內之10個的非不良區塊(BLK0~BLK9)之中之5個的非不良區塊(於此,係為BLK1~BLK2、BLK6~BLK8),係並不會被使用在超區塊SB之建構中。其結果,相當於5個的區塊之容量係成為被無謂浪費。
在NAND型快閃記憶體#0之第2平面(PLANE1)中,亦同樣的,5個的非不良區塊(於此,係為BLK1~BLK2、BLK6~BLK8),係並不會被使用在超區塊SB之建構中。其結果,相當於5個的區塊之容量係成為被無謂浪費。
在NAND型快閃記憶體#1之第1平面(PLANE0)中,3個的非不良區塊(於此,係為BLK1、BLK6~BLK7),係並不會被使用在超區塊SB之建構中。其結果,相當於3個的區塊之容量係成為被無謂浪費。
接著,參照圖10之下部,針對本實施形態之區塊群組的構成例作說明。在本實施形態中,係並不僅是使用複數之第1形態區塊群組,而亦使用1以上之第2形態區塊群組,來建構出8個的區塊群組(超區塊SB0~SB7)。
超區塊SB0、SB2~SB4、SB7之各者,係身為第1形態區塊群組。超區塊SB0、SB2~SB4、SB7之各者,係由從4個的平面(NAND型快閃記憶體晶粒#0之第1平面(PLANE0)以及第2平面(PLANE1)、NAND型快閃記憶體晶粒#1之第1平面(PLANE0)以及第2平面(PLANE1))而各作了1個的選擇之合計4個的非不良區塊所構成。
超區塊SB1、SB5~SB6之各者,係身為第2形態區塊群組。超區塊SB1,係包含有從NAND型快閃記憶體晶粒#0之第1平面(PLANE0)所選擇之2個的非不良區塊BLK1~BLK2和從NAND型快閃記憶體晶粒#0之第2平面(PLANE1)所選擇之1個的非不良區塊BLK1以及從NAND型快閃記憶體晶粒#1之第1平面(PLANE0)所選擇之1個的非不良區塊BLK1。超區塊SB1,係並不包含有NAND型快閃記憶體晶粒#1之第2平面(PLANE1)內之非不良區塊。被分配有超區塊SB1之區域,係作為半速區域而動作。
超區塊SB5,係包含有從NAND型快閃記憶體晶粒#0之第1平面(PLANE0)所選擇之2個的非不良區塊BLK6~BLK7和從NAND型快閃記憶體晶粒#0之第2平面(PLANE1)所選擇之1個的非不良區塊BLK6以及從NAND型快閃記憶體晶粒#1之第1平面(PLANE0)所選擇之1個的非不良區塊BLK6。超區塊SB5,係並不包含有NAND型快閃記憶體晶粒#1之第2平面(PLANE1)內之非不良區塊。被分配有超區塊SB5之區域,亦係作為半速區域而動作。
超區塊SB6,係包含有從NAND型快閃記憶體晶粒#0之第1平面(PLANE0)所選擇之1個的非不良區塊BLK8和從NAND型快閃記憶體晶粒#0之第2平面(PLANE1)所選擇之2個的非不良區塊BLK7~BLK8以及從NAND型快閃記憶體晶粒#1之第1平面(PLANE0)所選擇之1個的非不良區塊BLK7。超區塊SB6,係並不包含有NAND型快閃記憶體晶粒#1之第2平面(PLANE1)內之非不良區塊。被分配有超區塊SB6之區域,亦係作為半速區域而動作。
接著,針對因應於「在不良區塊之數量為最少的平面與不良區塊之數量為最多的平面之間之不良區塊之數量之差」來對於是否要使用第2形態區塊群組一事作切換的處理進行說明。
圖11,係為對於在「不良區塊之數量為最少的平面」與「不良區塊之數量為最多的平面」之間之不良區塊之數量之差為1以內的情況時之在實施形態之SSD3中所被建構出的複數之區塊群組之例和在不良區塊之數量之差為2以上的情況時之在實施形態之SSD3中所被建構出的複數之區塊群組之例作展示之圖。
在圖11中,係針對「NAND型快閃記憶體晶粒#0係包含有2個的平面,並且被分配至1個的區域處之1個的區塊群組係包含有2個的區塊」的情況作考慮。圖11之上部,係對於不良區塊之數量之差為1以內的情形作展示。又,圖11之下部,係對於不良區塊之數量之差為2以上的情形作展示。
如同在圖11之上部處所示一般,NAND型快閃記憶體晶粒#0內之第1平面(PLANE0)以及第2平面(PLANE1)之各者,係包含有10個的區塊BLK0~BLK9。在第1平面(PLANE0)處,10個的區塊BLK0~BLK9之中之3個的區塊BLK2~BLK3、BLK6係身為不良區塊。在第2平面(PLANE1)處,10個的區塊BLK0~BLK9之中之2個的區塊BLK2以及BLK5係身為不良區塊。
於此情況,在本實施形態中,係僅使用第1形態區塊群組而建構出複數之區塊群組(複數之超區塊SB)。亦即是,各超區塊SB,係由從第1平面(PLANE0)以及第2平面(PLANE1)而各作了1個的選擇之合計2個的非不良區塊所構成。因此,在複數之區塊群組中所包含的第2形態區塊群組之數量係為0。
例如,超區塊SB0,係由從第1平面(PLANE0)所選擇之非不良區塊BLK0和從第2平面(PLANE1)所選擇之非不良區塊BLK0所構成。超區塊SB1,係由從第1平面(PLANE0)所選擇之非不良區塊BLK1和從第2平面(PLANE1)所選擇之非不良區塊BLK1所構成。超區塊SB2,係由從第1平面(PLANE0)所選擇之非不良區塊BLK4和從第2平面(PLANE1)所選擇之非不良區塊BLK3所構成。超區塊SB3,係由從第1平面(PLANE0)所選擇之非不良區塊BLK5和從第2平面(PLANE1)所選擇之非不良區塊BLK4所構成。超區塊SB4,係由從第1平面(PLANE0)所選擇之非不良區塊BLK7和從第2平面(PLANE1)所選擇之非不良區塊BLK6所構成。超區塊SB5,係由從第1平面(PLANE0)所選擇之非不良區塊BLK8和從第2平面(PLANE1)所選擇之非不良區塊BLK7所構成。超區塊SB6,係由從第1平面(PLANE0)所選擇之非不良區塊BLK9和從第2平面(PLANE1)所選擇之非不良區塊BLK8所構成。
不論是在何者之超區塊之建構中均並未被使用的非不良區塊,係僅有第2平面(PLANE1)內之區塊BLK9。
接著,針對不良區塊之數量之差為2以上的情形進行說明。如同在圖11之下部處所示一般,在第1平面(PLANE0)處,10個的區塊BLK0~BLK9之中之3個的區塊BLK2~BLK3、BLK6係身為不良區塊。在第2平面(PLANE1)處,10個的區塊BLK0~BLK9之中之1個的區塊BLK2係身為不良區塊。
於此情況,在本實施形態中,係並不僅是使用複數之第1形態區塊群組,而亦使用1以上之第2形態區塊群組,來建構出8個的區塊群組(超區塊SB0~SB7)。在8個的區塊群組中所包含之第2形態區塊群組之數量,係為1以上。
超區塊SB0~SB6之各者,係身為第1形態區塊群組。超區塊SB0~SB6之各者,係由從第1平面(PLANE0)以及第2平面(PLANE1)而各作了1個的選擇之合計2個的非不良區塊所構成。
例如,超區塊SB0,係由從第1平面(PLANE0)所選擇之非不良區塊BLK0和從第2平面(PLANE1)所選擇之非不良區塊BLK0所構成。超區塊SB1,係由從第1平面(PLANE0)所選擇之非不良區塊BLK1和從第2平面(PLANE1)所選擇之非不良區塊BLK1所構成。超區塊SB2,係由從第1平面(PLANE0)所選擇之非不良區塊BLK4和從第2平面(PLANE1)所選擇之非不良區塊BLK3所構成。超區塊SB3,係由從第1平面(PLANE0)所選擇之非不良區塊BLK5和從第2平面(PLANE1)所選擇之非不良區塊BLK4所構成。超區塊SB4,係由從第1平面(PLANE0)所選擇之非不良區塊BLK6和從第2平面(PLANE1)所選擇之非不良區塊BLK5所構成。超區塊SB5,係由從第1平面(PLANE0)所選擇之非不良區塊BLK7和從第2平面(PLANE1)所選擇之非不良區塊BLK6所構成。超區塊SB6,係由從第1平面(PLANE0)所選擇之非不良區塊BLK8和從第2平面(PLANE1)所選擇之非不良區塊BLK7所構成。
超區塊SB7之各者,係身為第2形態區塊群組。超區塊SB7之各者,係由從不良區塊數為少之第2平面(PLANE1)所選擇之2個的非不良區塊BLK8~BLK9所構成。在超區塊SB7之各者中,係並不包含有不良區塊數為多之第1平面(PLANE0)內之非不良區塊。
接著,針對在SSD3處所被實行的寫入動作與讀出動作進行說明。圖12,係為對於在SSD3處所被實行的寫入動作之序列與讀出動作之序列作展示之區塊圖。
SSD3之控制器4,係構成為對於複數之區塊群組(亦即是複數之超區塊SB)與複數之區域之間之映射作管理,並能夠將任意之超區塊SB作為1個的區域之物理記憶區域來作分配。
對應於某一個的區域之1個的超區塊SB,係使用在被分配至此區域處的LBA範圍中所包含之連續之邏輯位址而被作存取。1個的區域內之寫入,基本上係序列性地被實行。
各個的區域之狀態,係被大致區分為開放狀態(被作了開放之區域)、關閉狀態(被作了關閉之區域)、全滿狀態(全滿區域)、空白狀態(空白區域)。
開放狀態之區域,係為作為能夠進行資料之寫入的寫入目標區域而被作分配之區域。若是某一區域被開放,則與此區域相對應之超區塊SB,係作為能夠利用在資料之寫入中的開放狀態之物理記憶區域而被作分配。快閃管理部21,係使用開放區域清單111,來對於開放狀態之各區域、亦即是對於與開放狀態之各區域相對應之超區塊SB作管理。
關閉狀態之區域,係為使寫入被作了中斷的區域。與使寫入被作了中斷的區域相對應之超區塊SB,係身為僅在此超區塊SB之一部分處被寫入有資料之超區塊SB,亦即是身為被部分性地作了寫入之超區塊SB。在與關閉狀態的區域相對應之超區塊SB中,係殘留有能夠利用在資料之寫入中之數個的頁面。快閃管理部21,係使用關閉區域清單112,來對於關閉狀態之各區域、亦即是對於與關閉狀態之各區域相對應之超區塊SB作管理。
全滿狀態之區域,係為該區域全體為被資料所填滿的區域。與全滿狀態的區域相對應之超區塊SB,係身為對於該超區塊SB內之全部的頁面之寫入均為完成之區塊。快閃管理部21,係使用全滿區域清單113,來對於全滿狀態之各區域、亦即是對於與全滿狀態之各區域相對應之超區塊SB作管理。
空白狀態之區域,係為被作了重置的區域。與空白狀態的區域相對應之超區塊SB,係身為並未被儲存有效資料之空閒超區塊SB。快閃管理部21,係使用空白區域清單114,來對於空白狀態之各區域、亦即是對於與空白狀態之各區域相對應之超區塊SB作管理。
當主機2希望將資料寫入至空白狀態之區域中的情況時,主機2,係對於SSD3而送訊包含有對於此空白狀態之區域作指定的參數之開放指令、亦即是送訊對於此空白狀態之區域之ZSLBA作指定的開放區域指令。開放區域指令,係作為「用以將超區塊SB之其中一個作為能夠利用在資料之寫入中的開放狀態之物理記憶區域而作分配」之指令而被作使用。因應於從主機2而收訊了此開放區域指令一事,快閃管理部21,係從藉由空白區域清單114而被作管理的空白狀態之超區塊SB之中而選擇1個的超區塊SB。之後,快閃管理部21,係實行對於所選擇了的超區塊SB之刪除動作,並藉由此而將此所選擇了的超區塊SB作為開放狀態之物理記憶區域來作分配。其結果,藉由開放區域指令而被指定的區域之狀態,係從空白狀態而變遷為開放狀態。
主機2,係能夠藉由反覆實行將開放區域指令對於SSD3作送訊的處理,而將複數之區域設為開放狀態。
例如,當從主機2而收訊了包含有對於開放狀態之某一區域作指定的參數之寫入指令、亦即是收訊了對於開放狀態之某一區域之ZSLBA作指定之寫入指令的情況時,快閃管理部21,係使用DMCA15,來將被與所收訊了的寫入指令相互附加有關連之寫入資料,從主機2之寫入緩衝51而傳輸至內部緩衝161處。之後,快閃管理部21,係將被傳輸至了內部緩衝161處的寫入資料,對於被分配至區域#1處之超區塊SB作寫入。之後,快閃管理器21,係對於主機2而回送代表各寫入指令之完成的回應(write completion)。
當在一段期間中而並未實行對於某一開放狀態之區域之資料之寫入的情況時,主機2,係為了成為能夠將確保來作為此區域之用的主機2之寫入緩衝51內之區域釋放,而對於SSD3送訊用以使此區域變遷為關閉狀態之關閉區域指令。
例如,當從主機2而收訊了包含有對於區域#1作指定的參數之關閉區域指令、亦即是收訊了對於區域#1之ZSLBA作指定之關閉區域指令的情況時,快閃管理部21,係使區域#1變遷為關閉狀態。於此情況,快閃管理部21,係將區域#1、亦即是將被分配至區域#1處之超區塊SB,從開放區域清單111而去除,並加入至關閉區域清單112中。
在從主機2而收訊了對於關閉狀態之區域作指定的參數之寫入指令的情況時,快閃管理部21,係將被分配至此區域處之超區塊SB作為開放狀態之物理記憶區域而再度作分配(reopen)。
若是某一區域全體為被資料所裝滿,則快閃管理部21,係使此區域之狀態從開放狀態或關閉狀態而變遷為全滿狀態。與此區域相對應之超區塊SB,係作為全滿狀態之超區塊SB而被作管理。
當從主機2而收訊了要求進行讀取對象資料之讀出之讀取指令的情況時,快閃管理部21,係基於在讀取指令中所包含之開始LBA,而決定讀取對象區域,並從被分配至此讀取對象區域處之超區塊而將讀取對象資料讀出。之後,快閃管理部21,係將所讀出了的讀取對象資料,使用DMAC15來作為讀取位元資料而對於主機2作送訊。
當被保存於全滿狀態之區域中的全部之資料均成為了不會被利用之不必要資料的情況時,主機2,係能夠對於SSD3而送訊對於代表此區域之邏輯位址作指定的重置區域指令。因應於從主機2而收訊了此重置區域指令一事,快閃管理部21,係將被分配至此區域處之超區塊SB,從全滿區域清單113而去除,並加入至空白區域清單114中。藉由此,此區域之狀態,係從全滿狀態而變遷為空白狀態。
接著,針對用以建構出複數之超區塊SB的區塊群組建構動作進行說明。圖13,係為對於在實施形態之SSD3處所被實行的區塊群組建構動作之處理程序作展示之流程圖。
控制器4,係判定在被使用於複數之超區塊SB之建構中的可進行平行動作之複數之NAND型快閃記憶體晶粒(或者是可進行平行動作之複數之平面)之間之不良區塊之數量之差是否為2以上(步驟S11)。在超區塊SB之建構中所被使用的NAND型快閃記憶體晶粒(或者是平面)之數量,係只要為2以上即可。
在步驟S11中,控制器4,係基於在不良區塊管理表32中所儲存之不良資訊,來求取出在被使用於複數之超區塊SB之建構中之2個以上的NAND型快閃記憶體晶粒(或者是2個以上的平面)之中之「不良區塊為最多的NAND型快閃記憶體晶粒(或者是平面)」中所包含之不良區塊之數量、與在此些之2個以上的複數之NAND型快閃記憶體晶粒(或者是2個以上的平面)之中之「不良區塊為最少的NAND型快閃記憶體晶粒(或者是平面)」中所包含之不良區塊之數量,此兩者之間之差。
當此差係為1以下的情況時(步驟S11,NO),控制器4,係基於不良資訊,來從2個以上的非揮發性記憶體晶粒(或者是2個以上的平面)而分別選擇1個以上的相同數量之非不良區塊,並將各別包含有藉由此所得到的複數之非不良區塊之複數之第1形態區塊群組,作為複數之超區塊SB而建構出來(步驟S12)。在步驟S12中所被建構出來的第1形態區塊群組之全部,係作為全速區塊群組而被使用。
當此差係為2以上的情況時(步驟S11,YES),控制器4,係基於不良資訊,來建構出複數之第1形態區塊群組、和1個以上的第2形態區塊群組。
於此情況,控制器4,首先,係從2個以上的非揮發性記憶體晶粒(或者是2個以上的平面)而分別選擇1個以上的相同數量之非不良區塊,並將各別包含有藉由此所得到的複數之非不良區塊之複數之第1形態區塊群組,作為複數之超區塊SB而建構出來(步驟S13)。在步驟S13中,例如,被包含於不良區塊為最多的NAND型快閃記憶體晶粒(或者是平面)中之全部的非不良區塊,係被使用在複數之第1形態區塊群組之建構中。在步驟S13中所被建構出來的第1形態區塊群組之全部,係作為全速區塊群組而被使用。
若是在不良區塊為最多之NAND型快閃記憶體晶粒(或者是平面)中成為並不存在有剩餘之非不良區塊,則控制器4,係從2個以上的非揮發性記憶體晶粒(或者是2個以上的平面)而分別選擇非相同數量之非不良區塊,並將各別包含有藉由此所得到的複數之非不良區塊之1個以上的第2形態區塊群組,作為1個以上的超區塊SB而建構出來(步驟S14)。
在各第2形態區塊群組之建構中,係並不會從不良區塊為最多的NAND型快閃記憶體晶粒(或者是平面)而選擇非不良區塊。係從不良區塊為最少的NAND型快閃記憶體晶粒(或者是平面)而被選擇有2以上之非不良區塊。另外,在使用3個以上的NAND型快閃記憶體晶粒(或者是平面)來建構各超區塊的情況時,係從除了不良區塊為最多之NAND型快閃記憶體晶粒(或者是平面)與不良區塊為最少之NAND型快閃記憶體晶粒(或者是平面)以外的其他之NAND型快閃記憶體晶粒(或者是平面)而選擇1以上之相同數量之非不良區塊。在步驟S14中所被建構出來的第2形態區塊群組之全部,係作為半速區塊群組而被使用。
接著,針對將複數之區塊群組之其中一個,作為「能夠利用在資料之寫入中的開放狀態之物理記憶區域」而作分配的處理進行說明。圖14,係為對於在實施形態之SSD3處所被實行的區塊群組分配動作之處理程序作展示之流程圖。
在本實施形態中,係存在有全速區塊群組和半速區塊群組之2種類的區塊群組。因此,在本實施形態中,作為用以將複數之區塊群組之其中一者作為可利用在資料之寫入中之開放狀態之物理記憶區域而作分配的指令,係使用包含有代表是否容許具備有較第1存取速度而更慢之第2存取速度之區塊群組之分配一事的第1參數之指令。
用以將複數之區塊群組之其中一個作為能夠利用在資料之寫入中的開放狀態之物理記憶區域而作分配之指令,例如,係藉由開放區域指令(開放要求)而被實現。通常之開放區域指令,係並不包含有代表是否容許具備有較第1存取速度而更慢之第2存取速度之區塊群組之分配一事的參數。在本實施形態中,係使用包含有代表是否容許具備有第2存取速度之區塊群組之分配一事的參數之新的開放區域指令(開放要求)。
第1存取速度,係相當於全速區域(全速區塊群組)之存取速度。第2存取速度,係相當於半速區域(半速區塊群組)之存取速度。在被使用於本實施形態中之開放要求中所包含的參數,係代表是否容許半速區域之分配。
若是從主機2而收訊對於某一區域作指定之開放要求(步驟S101,YES),則控制器4,係判定在所收訊了的開放要求中所包含之參數是否代表容許半速區域之分配(步驟S102)。
當在所收訊了的開放要求中所包含之參數係容許半速區域之分配的情況時(步驟S102,YES),控制器4,係從空白狀態之區塊群組(空閒超區塊SB)而選擇半速區塊群組(第2形態區塊群組)(步驟S103)。
接著,控制器4,係實行針對所選擇了的第2形態區塊群組之刪除動作,並將所選擇了的第2形態區塊群組,作為開放狀態之區塊群組、亦即是作為被作了指定的區域之物理記憶區域而作分配(步驟S104)。其結果,此被作了指定的區域係被開放。
之後,控制器4,係對於主機2而回送代表開放要求之完成的回應,藉由此,來對於主機2而通知被作了開放之區域是身為半速區域或者是全速區域之何者(步驟S105)。亦即是,此回應,係包含有代表「被作了開放之區域是身為半速區域或者是全速區域之何者」的參數。在步驟S104中,第2形態區塊群組、亦即是半速區域,係被開放。在步驟S105中,「被作了開放的區域乃是身為半速區域」一事係被對於主機2作通知。
當在所收訊了的開放要求中所包含之參數係並不容許半速區域之分配的情況時(步驟S102,NO),控制器4,係從空白狀態之區塊群組(空閒超區塊SB)而選擇全速區塊群組(第1形態區塊群組)(步驟S106)。
接著,控制器4,係實行針對所選擇了的第1形態區塊群組之刪除動作,並將所選擇了的第1形態區塊群組,作為開放狀態之區塊群組、亦即是作為被作了指定的區域之物理記憶區域而作分配(步驟S104)。其結果,此被作了指定的區域係被開放。
之後,控制器4,係對於主機2而回送代表開放要求之完成的回應,藉由此,來對於主機2而通知被作了開放之區域是身為全速區域(步驟S105)。
主機2,係能夠辨識出在有被作開放的區域之中之哪個區域是身為全速區域而哪個區域是身為半速區域。故而,主機2,例如,係能夠以「將需要進行高速存取之資料寫入至全速區域中,並將不需要進行高速存取之資料寫入至半速區域中」的方式,來對於針對各區域的資料配置作控制。
接著,針對「因應於從主機2而來之要求,而將複數之區塊群組之各別的存取速度對於主機2作通知」的處理進行說明。圖15,係為對於在實施形態之SSD3處所被實行的存取速度通知動作之處理程序作展示之流程圖。主機2,係能夠藉由對於SSD3而要求代表「在SSD3處所被作管理的複數之區域之各者之特性」之區域資料構造,來從SSD3而取得代表複數之區域之各者之特性的區域資料構造。
在從主機2而收訊了用以取得區域資料構造之要求的情況時(步驟S201,YES),控制器4,係將代表「各區域是身為全速區域或半速區域之何者」一事的存取速度資訊,與「各區域之區域容量」、「各區域之狀態(開放/關閉/全滿/空白、等)、「與各區域相對應之推薦(recommend)通知」、「各區域之寫入指標」、「各區域之ZSLBA」等一同地,來作為區域資料構造而對於SSD3作通知(步驟S202)。
在步驟S202中,關連於被分配有第1形態區塊群組之區域,代表第1存取速度(全速區域)之資訊係被通知至主機2處。又,關連於被分配有第2形態區塊群組之區域,代表第2存取速度(半速區域)之資訊係被通知至主機2處。
接著,針對將資料寫入至複數之區塊群組之其中一個處的寫入處理進行說明。圖16,係為對於在實施形態之SSD3處所被實行的資料寫入動作之處理程序作展示之流程圖。
在從主機2而收訊了包含有對於某一區域作指定的參數之寫入指令的情況時(步驟S301)。控制器4,係選擇與藉由所收訊了的寫入指令而被作了指定的區域相對應之區塊群組(超區塊SB)(步驟S302)。接著,控制器4,係將被與所收訊了的寫入指令相互附加有關連之寫入資料,寫入至所選擇了的區塊群組中(步驟S303)。
之後,控制器4,係對於主機2而通知代表所收訊了的寫入指令之完成的回應(步驟S304)。
接著,針對從複數之區塊群組之其中一個而將資料作讀出之處理進行說明。圖17,係為對於在實施形態之SSD3處所被實行的資料讀出動作之處理程序作展示之流程圖。
當從主機2而收訊了包含有對於某一區域作指定的參數之讀取指令的情況時(步驟S401,YES),控制器4,係選擇與藉由在步驟S401處所收訊了的讀取指令而被作了指定的區域相對應之區塊群組(超區塊SB)(步驟S402)。
接著,控制器4,係從在步驟S402處所被選擇了的區塊群組,來將藉由所收訊了的讀取指令而被作了指定的讀取對象之資料讀出,並將此所讀出了的資料對於主機2作送訊(步驟S403)。
之後,控制器4,係對於主機2而通知代表所收訊了的讀取指令之完成的回應(步驟S404)。
如同以上所作了說明一般,若依據本實施形態,則複數之區塊群組,係至少包含有使用第1形態區塊群組所構成之第1區塊群組、和使用第2形態區塊群組所構成之第2區塊群組。第1形態區塊群組,係包含有藉由從在非揮發性記憶體5中所包含之複數之晶粒或者是複數之平面而分別選擇1以上之相同數量之非不良區塊所得到的複數之非不良區塊。第2形態區塊群組,係包含有從複數之晶粒或者是複數之平面而選擇的與在第1形態區塊群組中所包含之複數之非不良區塊相同數量的複數之非不良區塊。被包含於第2形態區塊群組中之每一晶粒或者是每一平面的個別之非不良區塊之數量,係在複數之晶粒間或者是複數之平面間而相異。
如此這般,藉由使用「每一晶粒或者是每一平面的個別之非不良區塊之數量,係於複數之晶粒或者是複數之平面間而相異,並且包含有與在第1區塊群組中所包含之複數之非不良區塊相同數量之複數之非不良區塊」的第2形態區塊群組,就算是當在被包含於NAND型快閃記憶體5中的晶粒間或者是平面間之不良區塊數之偏差為大的情況時,也能夠將幾乎所有的非不良區塊使用來進行區塊群組之建構。其結果,係能夠使可利用的區域之數量增加,並且能夠將此些之區塊群組之容量設為相同。故而,係能夠將由主機2所致之關連於各區塊群組(例如區域)之管理的負擔減輕,並且實現SSD3之容量的最大化。
雖係針對本發明之數種實施形態作了說明,但是,該些實施形態,係僅為作為例子所提示者,而並非為對於本發明之範圍作限定者。此些之新穎的實施形態,係可藉由其他之各種形態來實施,在不脫離發明之要旨的範圍內,係可進行各種之省略、置換、變更。此些之實施形態或其變形,係亦被包含於發明之範圍或要旨中,並且亦被包含在申請專利範圍中所記載的發明及其均等範圍內。
2:主機
3:SSD
4:控制器
5:NAND型快閃記憶體
21:快閃管理部
SB0~SB7:超區塊(區塊群組)
[圖1]係為對於包含有實施形態的記憶體系統與主機之資訊處理系統之構成例作展示之區塊圖。
[圖2]係為對於在實施形態的記憶體系統中所被使用之複數之通道和複數之NAND型快閃記憶體晶粒(die)之間的關係之例作展示之區塊圖。
[圖3]係為對於在實施形態的記憶體系統中所被使用之複數之通道和複數之NAND型快閃記憶體晶粒(die)之間的關係之其他例作展示之區塊圖。
[圖4]係為對於藉由NVMe規格所被規定的分區名稱空間(zoned namespace)之構成例作展示之圖。
[圖5]係為對於在實施形態之記憶體系統處所被實行的寫入指標(write pointer)之更新動作作展示之圖。
[圖6]係為對於在實施形態的記憶體系統中所被管理之複數之區塊群組之第1構成例作展示之圖。
[圖7]係為對於在實施形態的記憶體系統中所被管理之複數之區塊群組之第2構成例作展示之圖。
[圖8]係為對於在實施形態的記憶體系統中所被管理之複數之區塊群組之第3構成例作展示之圖。
[圖9]係為對於在實施形態的記憶體系統中所被管理之複數之區塊群組之第4構成例作展示之圖。
[圖10]係為對於在實施形態的記憶體系統中所被管理之複數之區塊群組之第5構成例作展示之圖。
[圖11]係為對於在「不良區塊之數量為最少的平面」與「不良區塊之數量為最多的平面」之間之不良區塊之數量之差為1以內的情況時之在實施形態之記憶體系統中所被建構出的複數之區塊群組之例和在不良區塊之數量之差為2以上的情況時之在實施形態之記憶體系統中所被建構出的複數之區塊群組之例作展示之圖。
[圖12]係為對於在實施形態之記憶體系統處所被實行的寫入動作之序列與讀出動作之序列之例作展示之區塊圖。
[圖13]係為對於在實施形態之記憶體系統處所被實行的區塊群組建構動作之處理程序作展示之流程圖。
[圖14]係為對於在實施形態之記憶體系統處所被實行的區塊群組分配動作之處理程序作展示之流程圖。
[圖15]係為對於在實施形態之記憶體系統處所被實行的存取速度通知動作之處理程序作展示之流程圖。
[圖16]係為對於在實施形態之記憶體系統處所被實行的資料寫入動作之處理程序作展示之流程圖。
[圖17]係為對於在實施形態之記憶體系統處所被實行的資料讀出動作之處理程序作展示之流程圖。
SB0~SB7:超區塊(區塊群組)
BLK0~BLK9:區塊