[相關申請]
本申請享有以日本專利申請2016-44259號(申請日:2016年3月8日)為基礎申請的優先權。本申請通過參照所述基礎申請而包含基礎申請的全部內容。
本發明的實施方式涉及一種存儲系統、信息處理系統及非易失性存儲器的控制方法。
背景技術:
近年來,廣泛利用有具備非易失性存儲器的存儲系統。作為此種存儲系統之一,眾所周知有基于nand閃存技術的固態驅動器(ssd)。ssd因其低耗電、高性能等特征,而被用作各種計算機的主存儲。
最近期望改善存儲系統的性能。
技術實現要素:
本發明的實施方式提供一種能夠幫助主機控制非易失性存儲器的存儲系統、信息處理系統及非易失性存儲器的控制方法。
實施方式的存儲系統具備:非易失性存儲器,包含分別含有多個頁面的多個區塊,寫入至多個頁面內的一個頁面的數據在向所述一個頁面后續的1以上的頁面寫入數據后能夠讀出;及控制器,電連接于所述非易失性存儲器。所述控制器從主機接收寫入命令,所述寫入命令包含指定所述多個區塊內的第1區塊的區塊地址及指定所述第1區塊內的多個頁面內的第1頁面的頁面地址。所述控制器將所述寫入命令指定的數據寫入至所述第1區塊內的所述第1頁面。所述控制器將表示在向所述第1頁面寫入所述數據前由所述主機寫入數據的所述第1區塊內的頁面群之中,因向所述第1頁面寫入所述數據而變得可讀出的最新的頁面的頁面地址,通知給所述主機。
附圖說明
圖1是表示包含實施方式的存儲系統的信息處理系統的構成例的框圖。
圖2是表示控制所述實施方式的存儲系統的主機軟件的框圖。
圖3是表示所述實施方式的存儲系統內的nand接口與多個nand存儲器芯片的關系的框圖。
圖4是表示由所述實施方式的存儲系統管理的物理nand存取管理應用程序接口(api)用的區塊群、與虛擬nand存取管理應用程序接口(api)用的區塊群的圖。
圖5是表示由所述實施方式的存儲系統管理的虛擬區塊的結構的圖。
圖6是表示在所述實施方式的存儲系統內維持的管理各區塊的刪除次數的刪除次數管理表的圖。
圖7是表示在所述實施方式的存儲系統內維持的管理各虛擬區塊的刪除次數的另一刪除次數管理表的圖。
圖8是表示在所述實施方式的存儲系統內維持的管理各命名空間的刪除次數的又一刪除次數管理表的圖。
圖9是表示在所述實施方式的存儲系統內維持的物理區塊結構信息表的圖。
圖10是表示在所述實施方式的存儲系統內維持的虛擬區塊結構信息表的圖。
圖11是表示在所述實施方式的存儲系統內維持的物理nand存取管理api用的命名空間信息表的圖。
圖12是表示在所述實施方式的存儲系統內維持的虛擬nand存取管理api用的命名空間信息表的圖。
圖13是用來說明所述實施方式的存儲系統內的虛擬區塊與構成該虛擬區塊的各區塊的區塊地址的關系的圖。
圖14是用來說明由所述實施方式的存儲系統執行的不良區塊替換動作的圖。
圖15是表示應用于所述實施方式的存儲系統的物理nand存取管理api用的壞塊化命令的圖。
圖16是表示應用于所述實施方式的存儲系統的虛擬nand存取管理api用的壞塊化命令的圖。
圖17是表示由所述實施方式的存儲系統執行的壞塊化處理的次序的流程圖。
圖18是表示由所述實施方式的存儲系統及主機執行的用于物理nand存取及虛擬nand存取的處理序列的圖。
圖19是表示由所述實施方式的存儲系統及主機執行的用于物理nand存取的寫入處理的處理序列的圖。
圖20是表示由所述實施方式的存儲系統及主機執行的用于虛擬nand存取的寫入處理的處理序列的圖。
圖21是表示由所述實施方式的存儲系統及主機執行的用于物理nand存取的讀出處理的處理序列的圖。
圖22是表示由所述實施方式的存儲系統及主機執行的用于虛擬nand存取的讀出處理的處理序列的圖。
圖23是表示由所述實施方式的存儲系統及主機執行的用于物理nand存取的刪除處理的處理序列的圖。
圖24是表示由所述實施方式的存儲系統及主機執行的用于虛擬nand存取的刪除處理的處理序列的圖。
圖25是用來說明由所述實施方式的存儲系統執行的命令優先級管理動作的圖。
圖26是表示應用于所述實施方式的存儲系統的區塊分配、刪除命令的圖。
圖27是表示由所述實施方式的存儲系統管理的使用中區塊列表、空閑區塊列表、使用中虛擬區塊列表、及空閑虛擬區塊列表的圖。
圖28是表示由所述實施方式的存儲系統及主機執行的區塊分配、刪除處理的處理序列的圖。
圖29是表示應用于所述實施方式的存儲系統的物理nand存取管理api用的寫入命令的圖。
圖30是表示應用于所述實施方式的存儲系統的虛擬nand存取管理api用的寫入命令的圖。
圖31是用來說明與向區塊內的多個頁面的數據寫入順序相關的制約的圖。
圖32是用來說明與從頁面讀出數據的時序相關的制約的圖。
圖33是對由所述實施方式的存儲系統的nand存儲器執行的包含多個寫入階段的編程動作的例子進行說明的圖。
圖34是表示由所述實施方式的存儲系統執行的數據寫入處理的次序的流程圖。
圖35是表示響應于寫入命令的命令完成回應的接收而由主機執行的處理的次序的流程圖。
圖36是表示響應于包含命名空間標識符(nsid)的寫入命令的命令完成回應的接收而由主機執行的處理的次序的流程圖。
圖37是表示應用于所述實施方式的存儲系統的物理nand存取管理api用的讀出命令的圖。
圖38是表示應用于所述實施方式的存儲系統的虛擬nand存取管理api用的讀出命令的圖。
圖39是表示由所述實施方式的存儲系統及主機執行的數據讀出處理的處理序列的圖。
圖40是表示由所述實施方式的存儲系統執行的數據讀出處理的次序的流程圖。
圖41是對指定應復制的有效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的例子進行說明的圖。
圖42是用來說明指定應檢測的無效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的例子的圖。
圖43是用來說明指定多個復制源區塊被且指定應復制的有效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的例子的圖。
圖44是用來說明指定多個復制源區塊且指定應檢測的無效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的例子的圖。
圖45是用來說明數據大小比頁面大小小且指定應復制的有效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的例子的圖。
圖46是用來說明數據大小比頁面大小小且指定應檢測的無效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的例子的圖。
圖47是表示應用于所述實施方式的存儲系統的數據復制命令的輸入參數的圖。
圖48是表示應用于所述實施方式的存儲系統的數據復制命令的輸出參數(返回值)的圖。
圖49是表示指定應復制的有效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的次序的流程圖。
圖50是表示指定應檢測的無效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的次序的流程圖。
圖51是表示數據大小比頁面大小小且指定應復制的有效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的次序的流程圖。
圖52是表示數據大小比頁面大小小且指定應檢測的無效數據數作為結束條件時,由所述實施方式的存儲系統執行的數據復制動作的次序的流程圖。
圖53是用來說明所述實施方式的存儲系統的命名空間管理功能的圖。
圖54是表示所述實施方式的存儲系統的命名空間管理架構的圖。
圖55是表示應用于所述實施方式的存儲系統的命名空間分配命令的圖。
圖56是表示由所述實施方式的存儲系統執行的命名空間分配處理的次序的流程圖。
圖57是表示應用于所述實施方式的存儲系統的包含命名空間標識符(nsid)的區塊分配、刪除命令的圖。
圖58是表示響應于包含命名空間標識符(nsid)的區塊分配、刪除命令的接收而由所述實施方式的存儲系統執行的區塊分配、刪除處理的次序的流程圖。
圖59是表示應用于所述實施方式的存儲系統的命名空間用的刪除命令的圖。
圖60是表示響應于包含命名空間標識符(nsid)的刪除命令的接收而由所述實施方式的存儲系統執行的刪除處理的次序的流程圖。
圖61是表示應用于所述實施方式的存儲系統的包含命名空間標識符(nsid)的區塊返還命令的圖。
圖62是表示響應于包含命名空間標識符(nsid)的區塊返還命令的接收而由所述實施方式的存儲系統執行的區塊返還處理的次序的流程圖。
圖63是表示應用于所述實施方式的存儲系統的包含命名空間標識符(nsid)的刪除次數獲取命令的圖。
圖64是表示由所述實施方式的存儲系統執行的刪除次數通知處理的次序的流程圖。
圖65是說明主機的構成例的框圖。
圖66是表示包含所述實施方式的存儲系統及主機的計算機的構成例的框圖。
具體實施方式
以下,參照附圖對實施方式進行說明。
[系統構成]
首先,參照圖1對包含一實施方式的存儲系統的信息處理系統1的構成進行說明。
在信息處理系統1中,該存儲系統能作為該信息處理系統1的主存儲(外部存儲裝置)發揮功能。該存儲系統構成為向非易失性存儲器寫入數據,并自非易失性存儲器讀出數據。該存儲系統例如作為基于nand閃存技術的固態驅動器(ssd)3而實現。ssd3是具備作為非易失性存儲器的nand閃存的存儲裝置。
信息處理系統1使用作為存儲系統的ssd3來管理比如各種文件的數據。該信息處理系統1能作為構成為控制ssd3內的非易失性存儲器的讀出動作、寫入動作、刪除動作的計算機系統而發揮功能。
該信息處理系統1包含主機(主機裝置)2、ssd3。主機2是構成為向ssd3保存數據的信息處理裝置。該信息處理裝置的例子包含服務器計算機、個人計算機等。
ssd3可以內置于作為主機2發揮功能的信息處理裝置,也可以經由纜線或網絡連接于該信息處理裝置。
作為用來使主機2與ssd3相互連接的接口,能使用scsi、serialattachedscsi(sas)、ata、serialata(sata)、pciexpress(pcie)、nvmexpress(nvme)、ethernet(注冊商標)、fibrechannel等。
ssd3也可以具備控制器4、非易失性存儲器(nand存儲器)5、及dram6。nand存儲器5并無限定,也可以包含多個nand閃速存儲器芯片。
nand存儲器5包含存儲器單元陣列,該存儲器單元陣列包含多個nand區塊(區塊)b0~bm-1。區塊b0~bm-1作為刪除單位發揮功能。區塊也被稱為“物理區塊”或“刪除區塊”。
區塊b0~bm-1包含多個頁面(物理頁面)。也就是說,區塊b0~bm-1的分別包含頁面p0~pn-1。連接于同一字線的多個存儲器單元是作為一個頁面(物理頁面)而編成。在nand存儲器5中,數據的讀出及數據的寫入是以頁面單位執行。數據的刪除是以包含多個頁面的區塊單位而執行。
控制器4經由比如toggle、onfi的nand接口13,電連接于作為非易失性存儲器的nand存儲器5。控制器4也可以具有用來管理ssd3的物理資源、即nand存儲器5的物理資源管理功能。控制器4的物理資源管理功能能用來幫助主機2直接存取ssd3的物理資源。
主機2為了能夠直接控制及存取ssd3的物理資源,也可以在主機2中執行閃存轉換層(ftl)43。主機2具有閃存轉換層(ftl)43的系統構成,能夠讓主機2直接控制及存取ssd3的物理資源,且能夠降低ssd3的處理負荷。
閃存轉換層(ftl)43也可以執行數據管理及nand存儲器5的區塊管理。
數據管理能包含(1)表示各邏輯區塊地址(lba)與nand存儲器5的各物理地址之間的對應關系的映射信息的管理、(2)用來隱藏以頁面單位執行的讀出/寫入及以區塊單位執行的刪除動作的處理等。各lba與各物理地址之間的映射的管理是使用作為邏輯物理地址變換表發揮功能的查找表(lut)45而執行。
ftl44也可以支持管理多個命名空間的多命名空間功能。多命名空間功能為了能將一個存儲裝置(此處為ssd3)處理為宛如多個驅動器,而能管理與多個命名空間分別對應的多個邏輯地址空間(lba空間)。對各命名空間分配有lba范圍(lba0~lban-1)。lba范圍的大小(即lba的數)可以每個命名空間可變。各lba范圍從lba0開始。
ftl44還可以通過使用創建的命名空間的數量及相同數量的查找表(lut)45,按各命名空間管理各lba與各物理地址之間的映射。
在與某個特定的命名空間對應的查找表(lut)45中,還可以管理關聯于特定的命名空間的lab范圍內的各lba與各物理地址之間的映射。lba與物理地址之間的映射的管理是以特定的管理大小單位進行。特定的管理大小單位能夠使用與系統設計相應的各種大小。特定的管理大小單位的例子并無限制,例如可為4k字節。
與某個特定的lba對應的物理地址表示儲存該特定的lba的數據的nand存儲器5內的位置(物理存儲位置)。物理地址也可以通過區塊地址與頁面地址的組合來表現。區塊地址是指定各個區塊的地址,也稱為“物理區塊地址”或“區塊編號”。頁面地址是指定一個區塊內的各個頁面的地址,也稱為“物理頁面地址”或“頁面編號”。
向頁面的數據寫入在1刪除周期只能進行1次。換句話說,數據只能對刪除狀態的頁面(可利用頁面)寫入。寫入數據后的頁面變成有效頁面。
另一方面,數據的最小刪除單位是包含多個頁面的區塊。
因此,ftl44將向相同lba的寫入(重寫)映射至nand存儲器5上的不同頁面。即,ftl44將數據(寫入數據)無關于該數據的lba而寫入下一可利用頁面。然后,ftl44更新查找表(lut)45,將該lba關聯于與實際寫入該數據的該頁面對應的物理地址。將原本的頁面(即關聯該lba的舊數據)無效化。
ftl44能夠管理有效數據及無效數據。有效/無效數據也可以使用保持與各物理地址對應的有效/無效旗標的頁面管理表進行管理。各有效/無效旗標可以特定的管理大小單位(例如4k字節)表示與各物理地址對應的數據有效還是無效。所謂數據有效是指此數據為最新數據。所謂數據無效是指此數據被更新(覆寫)而不再利用。
由ftl44執行的區塊管理的例子中也可以包含損耗平均、及垃圾回收等。損耗平均是用來使各區塊的刪除次數平準化的動作。垃圾回收是用來作出nand存儲器5內的空閑空間的動作。該垃圾回收將混雜有效數據和無效數據的若干區塊內的所有有效數據復制到另一區塊(復制目標空閑區塊)。并且,垃圾回收更新查找表(lut)45,將復制的有效數據的各lba映射至正確的物理地址。通過將有效數據復制到另一區塊,僅剩無效數據的區塊釋放為空閑區塊。由此,該區塊在刪除后能夠再利用。
主機2將比如寫入命令、讀出命令、刪除命令之類的各種命令(存取請求)送出至ssd3。如上所述,在該信息處理系統1中,ftl44是在主機2上執行,因此所述各命令能夠包含不指定lba而是指定nand存儲器5上的位置的物理地址(區塊地址、頁面地址)。
接著,對控制器4的構成進行說明。
控制器4包含主機接口11、cpu12、nand接口13、dram接口14等。所述cpu12、nand接口13、dram接口14經由總線10而相互連接。
主機接口11從主機2接收各種命令(寫入命令、讀出命令、刪除命令等)。
cpu12是以控制主機接口11、nand接口13、dram接口14的方式構成的處理器。cpu12執行管理nand存儲器5的物理資源管理處理、用來處理從主機2接收的各種命令的命令處理等。物理資源管理處理及命令處理也可以由cpu12執行的固件控制。
該固件能夠執行用來幫助主機2控制nand存儲器5的處理。
該固件使cpu12作為物理nand存取管理應用程序接口(api)21、虛擬nand存取管理應用程序接口(api)22、區塊信息管理部23、壞塊管理部24、區塊分配、刪除控制部25、寫入控制部26、讀出控制部27、數據復制控制部28、命名空間控制部29發揮功能。
<物理nand存取管理api與虛擬nand存取管理api>
所述物理nand存取管理api21及虛擬nand存取管理api22分別是與主機2和ssd3之間的通信相關的軟件接口,主機2能夠直接控制nand存儲器5內的區塊。在物理nand存取管理api21中,主機2對nand存儲器5內的區塊的控制是以各個區塊為單位、即物理區塊為單位而執行。另一方面,在虛擬nand存取管理api22中,主機2對nand存儲器5內的區塊的控制基本上是以將多個區塊(多個物理區塊)匯集而得的區塊組為單位執行。以下也將包含多個區塊的區塊組稱為“虛擬區塊”。
物理nand存取管理api21、虛擬nand存取管理api22任一個之中,應存取的nand存儲器5上的位置能由來自主機2的命令所含的物理地址(區塊地址、頁面地址)來指定。
cpu12將nand存儲器5內的多個區塊(物理區塊)分類成多個第1區塊、及多個第2區塊。
多個第1區塊是物理nand存取管理api21用的區塊,這些區塊是作為用來以單個區塊(單一的物理區塊)為單位存取nand存儲器5的區塊而使用。
多個第2區塊是虛擬nand存取管理api22用的區塊,且是作為分別包含多個區塊的多個區塊組(多個虛擬區塊)而編成的區塊。這些第2區塊是作為用來以將多個區塊(多個物理區塊)匯集而得的區塊組為單位存取nand存儲器5的區塊來使用。
當主機2使用物理nand存取管理api21存取ssd3的情況下,cpu12響應于來自主機2的包含指定多個第1區塊內的一個區塊(物理區塊)的物理地址的第1讀出、寫入或刪除命令的接收,而執行對該第1區塊的讀出動作、寫入動作、或刪除動作。
當主機2使用虛擬nand存取管理api22存取ssd3的情況下,cpu12響應于包含指定多個虛擬區塊內的一個虛擬區塊的物理地址的第2讀出、寫入或刪除命令的接收,而執行對一個虛擬區塊的讀出動作、寫入動作、或刪除動作。
在該虛擬nand存取管理api22中,能不以單一的區塊為單位而是以構成虛擬區塊的多個區塊的匯集為單位執行讀出動作、寫入動作、或刪除動作。由此,虛擬nand存取管理api22能夠作為能高速地讀出/寫入/刪除比如用戶數據這樣大小相對較大的數據的接口而利用。例如,當頁面大小為16k字節,一個虛擬區塊包含4個區塊(4個物理區塊)的情況下,能夠實現最大64k字節的帶寬。此外,例如當頁面大小為16k字節一個虛擬區塊包含8個區塊的情況下,能夠實現最大128k字節的帶寬。
另一方面,在物理nand存取管理api21中,執行對單一區塊的讀出動作、寫入動作、或刪除動作。物理nand存取管理api21能保證的最大帶寬比虛擬nand存取管理api2能保證的最大帶寬窄。相反地,物理nand存取管理api21能以比虛擬nand存取管理api22小的粒度控制讀出/寫入/刪除。由此,物理nand存取管理api21作為例如將比如元數據這樣的大小相對較小的數據配置在nand存儲器5上的所需位置的數據配置控制、及以較小的數據大小的粒度進行存取(讀出/寫入/刪除)的接口而使用。
主機2可以從ssd3預先取得指定物理nand存取管理api21用的各區塊的物理地址、及指定虛擬nand存取管理api22用的各虛擬區塊的物理地址,或者也可以通過向ssd3請求某一個區塊或某一個虛擬區塊的分配而從ssd3取得指定某一個區塊的物理地址或指定某一個虛擬區塊的物理地址。
一個虛擬區塊所含的多個區塊的組合并無限定,例如可由能夠并列(同時)存取的多個區塊(多個物理區塊)形成一個虛擬區塊。
例如,當nand接口13具有多個信道,且各信道連接有1個以上的nand閃存芯片的情況下,可以利用從分別連接于不同信道的nand閃存芯片逐一選擇的信道數量的區塊來構成一個虛擬區塊。由此,能夠保證與nand存儲器5的結構上的最大帶寬對應的存取速度。
元數據也可為文件管理信息。文件管理信息也可以包含表示文件內的數據的存儲位置的數據、表示該文件的創建日期的數據、表示該文件更新日期的數據、或表示該文件最后讀出日期的數據中至少一個。
物理nand存取管理api21用的讀出命令、寫入命令、刪除命令也可以具有與虛擬nand存取管理api22用的讀出命令、寫入命令、刪除命令不同的操作代碼。
<區塊信息管理>
區塊信息管理部23能夠管理與nand存儲器5內的各個區塊及各個虛擬區塊相關的信息,并將與各個區塊及各個虛擬區塊相關的信息提供給主機2。與各個區塊及各個虛擬區塊相關的信息也可以包含各個區塊各自的刪除次數、各個虛擬區塊各自的刪除次數。
在數據中心等,連接于某個服務器計算機的ssd有更換成在另一服務器計算機等中過去被使用的另一ssd的情況。
當ssd3從某個服務器計算機移設至另一服務器計算機的情況下,ssd3的區塊信息管理部23能夠將與nand存儲器5內的各個區塊及各個虛擬區塊的使用歷史記錄相關的信息(當前刪除次數等)提供給該另一服務器計算機。由此,該另一服務器計算機能夠在考慮了ssd3的過去的使用歷史記錄的狀態下正確地理解各個區塊或各個虛擬區塊的實際的刪除次數,因此例如能夠基于從ssd3取得的刪除次數的信息而精度良好地進行損耗平均用的處理等。
<壞塊管理>
壞塊管理部24能夠執行用來管理由初級缺陷列表(也稱為“工廠出貨缺陷列表”)指定的無法使用的不良區塊(初級壞塊)、及系統運行中由主機2指定的不良區塊(成長壞塊)的處理。
例如,當由初級缺陷列表或主機2指定某個虛擬區塊內的一個區塊為無法使用的不良區塊(壞塊)的情況下,壞塊管理部24也可以執行將虛擬區塊內的壞塊替換成虛擬nand存取管理api22用的另一區塊的處理。該另一區塊可以從壞塊以外的該虛擬區塊內的其他所有區塊及能并列存取的區塊群中選擇。
<區塊分配、刪除>
區塊分配、刪除控制部25能夠管理包含有效數據的各區塊和不含有效數據的各區塊(空閑區塊)。所謂包含有效數據的區塊是指用戶經由主機2利用ssd3而使用的區塊。當若干用戶端終端51經由網絡50而連接于主機2的情況下,這些用戶端終端51的用戶可為經由主機2利用ssd3的用戶。所謂不含有效數據的區塊是指哪個用戶都無法使用的區塊。
而且,區塊分配、刪除控制部25還能夠管理包含有效數據的各虛擬區塊及不含有效數據的各虛擬區塊(空閑虛擬區塊)。
當從主機2請求一個區塊的分配的情況下,區塊分配、刪除控制部25可以從空閑區塊中將一個區塊(物理區塊)分配給主機2,然后將指定該分配的區塊的物理地址(區塊地址)通知給主機2。之后,主機2能使用該通知的物理地址對該分配的區塊進行存取(讀出/寫入/刪除)。
當從主機2請求一個虛擬區塊的分配的情況下,區塊分配、刪除控制部25可以從空閑虛擬區塊中將一個虛擬區塊分配給主機2,然后將通知該分配的虛擬區塊的物理地址(虛擬區塊地址)通知給主機2。之后,主機2能使用該通知的物理地址對該分配的虛擬區塊進行存取(讀出/寫入/刪除)。
用來存取虛擬區塊的物理地址也可以包含虛擬區塊地址、虛擬區塊內區塊編號、及頁面地址。虛擬區塊地址指定分配給各虛擬區塊的虛擬區塊編號的任一個。虛擬區塊內區塊編號指定存取對象區塊是虛擬區塊內的第幾個區塊。頁面地址表示存取對象區塊內的頁面編號。
該區塊分配、刪除控制部25能夠在主機2自身不管理包含有效數據的區塊及不含有效數據的區塊的情況下,讓主機2取得不含有效數據的區塊。由此,能夠降低主機2所致的nand存儲器5的管理成本。
區塊(或虛擬區塊)的分配請求也可為只請求區塊(或虛擬區塊)的分配的命令。或者,也可以使用請求區塊(或虛擬區塊)的分配及區塊(或虛擬區塊)的刪除兩者的命令、即區塊分配、刪除命令、或虛擬區塊分配、刪除命令。
區塊分配、刪除命令是將請求區塊分配的命令的功能及請求區塊刪除的命令的功能組合而成的一個命令。同樣地,虛擬區塊分配、刪除命令是將請求虛擬區塊分配的命令的功能及請求虛擬區塊刪除的命令的功能組合而成的一個命令。
響應于來自主機2的區塊分配、刪除命令的接收,區塊分配、刪除控制部25從空閑區塊中將一個區塊分配給主機2,然后自動刪除該分配的區塊,并將指定該分配及刪除的區塊的物理地址(區塊地址)通知給主機2。
有各空閑區塊雖然不含有效數據但保持著某一用戶過去寫入的舊數據的情況。因此,通過自動刪除分配區塊的所述功能,能夠預先防止用戶數據的泄漏。此外,主機2能夠不用將分配區塊刪除用的刪除命令發送給ssd3,而立即開始向該分配區塊的數據寫入。
響應于來自主機2的虛擬區塊分配、刪除命令的接收,區塊分配、刪除控制部25從空閑虛擬區塊中將一個虛擬區塊分配給主機2,然后自動刪除該分配的虛擬區塊,并將指定該分配及刪除的虛擬區塊的物理地址(虛擬區塊地址)通知給主機2。
<寫入控制>
寫入控制部26接收包含指定某個特定區塊的區塊地址及指定該特定區塊內的多個頁面內的某個特定頁面的頁面地址的寫入命令,并將該寫入命令所指定的數據寫入特定區塊內的特定頁面(直接地址指定模式)。寫入控制部26支持物理nand存取管理api21及虛擬nand存取管理api22的雙方。在物理nand存取管理api21中,特定區塊是特定的物理區塊,在虛擬nand存取管理api22中,特定區塊是特定的虛擬區塊內的存取對象區塊。
寫入控制部26具有將保持可讀出數據的區塊內的最新的頁面通知給主機2的“可讀出頁面通知功能”。根據作為nand存儲器5使用的nand存儲器的種類,有即便向某個區塊的最初的頁面寫入數據,在向該區塊內的后續若干頁面進一步寫入數據之前,無法從該區塊的最初的頁面正常讀出數據的情況。若向最初的頁面后續的若干頁面寫入數據前該最初的頁面已被主機2讀出存取,有ecc無法訂正的錯誤數據從最初的頁面被讀出,向主機2返回表示讀出錯誤的狀態的情況。最初的頁面的數據即便在向后續若干頁面寫入數據后能正常讀出,主機2也有可能將該讀出錯誤誤認為是物理存儲器缺陷引起的。
同樣地,有寫入該區塊的第2個頁面的數據在向該第2個頁面后續的若干頁面寫入數據之前,無法正常讀出的情況。各頁面的數據的可讀出時序因nand存儲器而不同。
寫入控制部26能夠將保持可讀出數據的區塊內的最新的頁面通知給主機2。例如,當向寫入對象區塊內的若干頁面寫入數據而寫入對象區塊內的最初的頁面變得可讀出時,寫入控制部26可以將最初的頁面的頁面地址作為保持可讀出數據的最新的頁面通知給主機2。當向寫入對象區塊進一步寫入而寫入對象區塊內的第2個頁面變得可讀出時,寫入控制部26可以將第2個頁面的頁面地址作為保持可讀出數據的最新的頁面通知給主機2。
更詳細來說,寫入控制部26執行以下動作。
寫入控制部26從主機2接收包含指定nand存儲器5的多個區塊內的第1區塊的區塊地址及指定該第1區塊內的多個頁面內的第1頁面的頁面地址的寫入命令。寫入控制部26將該寫入命令所指定的數據寫入至第1區塊內的第1頁面。并且,寫入控制部26將表示向第1頁面寫入數據前由主機2寫入數據的第1區塊內的頁面群之中,因向第1頁面寫入數據而變得可讀出的最新的頁面的頁面地址,通知給主機2。
主機2基于該通知能夠識別出寫入數據的區塊內的哪個頁面為止為可讀出狀態。由此,利用該“可讀出頁面通知功能”,能夠幫助主機2直接存取nand存儲器5。
寫入控制部26還具有“不當寫入順序警告”功能。“不當寫入順序警告”功能是如下功能:當主機2未遵守區塊內必須從最初的頁面向最后的頁面連續寫入數據這樣的寫入順序制約的情況下,向主機2返回不當寫入順序的警告。
主機2能夠指定應寫入數據的物理地址(區塊地址及頁面地址)。這意味著主機2有以錯誤寫入順序執行寫入存取的可能性。利用該“不當寫入順序警告”功能,能夠支援主機2直接控制向nand存儲器5的寫入。
更詳細來說,寫入控制部26執行以下動作。
寫入控制部26從主機2接收包含指定nand存儲器5的多個區塊內的第1區塊的區塊地址、及指定第1區塊內的多個頁面內的第1頁面的頁面地址的寫入命令。寫入控制部26基于該寫入命令內的頁面地址,判定該寫入命令是否滿足按照第1區塊內的多個頁面內的最初的頁面到最后的頁面的順序寫入數據這樣的寫入順序相關的制約。當該寫入命令滿足寫入順序相關的制約的情況下,寫入控制部26將由該寫入命令指定的數據向第1區塊內的第1頁面寫入數據。當該寫入命令不滿足寫入順序相關的制約的情況下,寫入控制部26并非將該寫入命令指定的數據向第1區塊內的第1頁面寫入數據,而是將包含不當寫入順序的警告的命令完成回應通知給主機2。
寫入控制部26除了所述“直接地址指定模式”以外,還可以進一步支持“自動地址產生模式”。
直接地址指定模式是主機2直接指定應寫入數據的nand存儲器5內的區塊及該區塊內的頁面雙方的寫入模式。在該直接地址指定模式中,主機2將包含區塊地址及頁面地址雙方的寫入命令發送給ssd3。
另一方面,自動地址產生模式是主機2只指定應寫入數據的nand存儲器5上的區塊的寫入模式。該指定區塊可為物理區塊,也可為虛擬區塊內的存取對象區塊。
自動地址產生模式中利用的寫入命令只包含區塊地址,不包含頁面地址。該指定區塊內的寫入對象頁面的頁面地址由ssd3自動發布。表示寫入數據的頁面的頁面地址、即自動發布的頁面地址從ssd3通知給主機2。
所述“可讀出頁面通知功能”能在自動地址產生模式下利用。自動地址產生模式中,寫入控制部26能夠執行以下動作。
寫入控制部26從主機2接收包含區塊地址但不包含頁面地址的寫入命令。寫入控制部26按照從區塊地址指定的第1區塊內的多個頁面內的最初的頁面到最后的頁面的順序寫入數據這樣的寫入順序,自動發布指定第1區塊內的多個頁面內的下一可利用頁面的頁面地址。寫入控制部26將寫入命令指定的數據寫入第1區塊內的下一可利用頁面(自動發布的頁面地址指定的頁面)。寫入控制部26將表示在向下一可利用頁面寫入數據前由主機2寫入數據的第1區塊內的頁面群之中,因向下一可利用頁面寫入數據而變得可讀出的最新的頁面的頁面地址,通知給主機2。
寫入控制部26還具有將寫入數據的頁面已達到當前寫入對象區塊的最后的頁面的意旨通知給主機2的功能。根據該通知,主機2能夠認識到必須分配新的區塊。
寫入控制部26還具有將寫入數據的當前寫入對象區塊內的頁面數已達到特定頁面數的意旨通知給主機2的功能。主機2有期望向各區塊內的特定頁面、例如最后的頁面寫入特定的管理信息(例如元數據)的情況。因此,通過將當前寫入對象區塊內寫入數據的頁面數已達到“特定頁面數”的意旨通知給主機2,能夠幫助主機2執行向該寫入對象區塊的最后的頁面等寫入特定的管理信息之類的作業。“特定頁面數”能夠由來自主機2的寫入命令而指定。
<讀出控制>
當讀出控制部27從主機2接收讀出命令時,讀出控制部27從該讀出命令內的區塊地址及頁面地址指定的區塊內的頁面讀出數據。該指定區塊可為物理nand存取管理api21用的物理區塊,也可為虛擬nand存取管理api22用的虛擬區塊內的存取對象區塊。
<數據復制控制>
數據復制控制部28執行數據復制動作,用來支援主機2執行垃圾回收。數據復制動作是基于從主機2接收的數據復制命令,而在ssd3本地執行。即,用來從nand存儲器5的特定的復制源區塊向特定的復制目標區塊復制數據的數據傳輸動作,并不經由主機2,而是在ssd3內執行。
因此,即便不進行將從nand存儲器5的特定的復制源區塊讀出的數據傳輸到主機2的存儲器,且將該數據內的有效數據從主機2的存儲器寫入至nand存儲器5的特定的復制目標區塊這樣的處理,也能在ssd3內本地執行將垃圾回收用所必要的有效數據聚集于nand存儲器5內的特定區塊的動作。
數據復制命令能夠指定復制源區塊、復制源區塊內的復制開始頁面、復制目標區塊、復制目標區塊內的傳輸開始頁面、復制結束條件(向復制目標區塊應復制的有效數據數、或復制結束前應檢測的無效數據數)。于此,有效數據數可為有效頁面數,且無效數據數可為無效頁面數。復制源區塊可為物理nand存取管理api21用的物理區塊,也可為虛擬nand存取管理api22用的虛擬區塊內的一個區塊。同樣地,復制目標區塊也是既可為物理nand存取管理api21用的物理區塊,也可為虛擬nand存取管理api22用的虛擬區塊內的一個區塊。
復制開始頁面表示復制源區塊內的復制對象的最初的頁面。傳輸開始頁面表示復制目標區塊內的傳輸對象的最初的頁面。通過指定所述復制開始頁面及傳輸開始頁面,能夠執行將復制源區塊內的任意的頁面范圍內的有效數據向復制目標區塊內的任意的頁面范圍內復制(移動)這樣極細微的復制動作。
此外,在數據復制動作中,數據復制控制部28自動跳過無效數據的復制,而只將特定頁面范圍內的有效數據復制到復制目標區塊。由此,主機2不用指定哪個數據能復制到何處,便能執行垃圾回收用所必須之有效數據的復制。
<命名空間控制>
命名空間控制部29能夠支持用來個別地處理多個命名空間的多命名空間功能。多命名空間功能能夠管理分別分配有多個邏輯地址空間(lba空間)的多個命名空間,以便能夠將nand存儲器5邏輯分割成多個區域。各命名空間作為nand存儲器5內的一個區域發揮功能。與某個特定命名空間關聯的數據被寫入對該特定的命名空間分配的區塊群。
命名空間控制部29支持命名空間分配命令等。
命名空間分配命令是對ssd3請求各個命名空間應確保的區塊的個數。應確保的區塊的個數可為物理nand存取管理api21用的物理區塊的個數,也可為虛擬nand存取管理api22用的虛擬區塊的個數。
響應于來自主機2的命名空間分配命令的接收,命名空間控制部29能夠對特定的命名空間確保(分配)由主機2指定的個數的區塊。
命名空間分配命令能夠讓主機2(主機軟件)確保適于主機2內的工作負載(workload)的個數的區塊用于各個命名空間。例如,關于較多使用隨機寫入存取的工作負載關聯的命名空間,也可以確保相當于比該命名空間用的邏輯區塊地址(lba)的數對應的容量更多容量的個數的區塊。例如,若與某個命名空間用的邏輯區塊地址(lba)的數(lba范圍)對應的容量為100g字節,對該命名空間用確保相當于150g字節的個數的區塊,便能確保具有與lba范圍對應的容量(用戶空間的容量)的50%的大小的過量供給區域。
過量供給意味著向主機2分配從主機2側不會被視作其可利用用戶空間(用戶可存取lba空間)的存儲容量。分配了從主機2側不會被視作用戶可存取lba空間的存儲容量的空間為過量供給區域。通過過量供給,能夠將超過用戶可存取lba空間(用戶區域的容量)的容量的區塊群分配給特定的命名空間。
關于處理更新頻率高的數據的命名空間,數據覆寫多次發生,因此有大量區塊碎片化的情況。結果,垃圾回收的執行次數增加,由此寫入擴增增加,使得各區塊的刪除次數也增加。刪除次數的增加成為引發ssd3的耐久性及壽命劣化的主要原因。
關于分配了較多過量供給區域的命名空間,能夠延緩垃圾回收的開始時序。例如,假設對具有100g字節的用戶空間(lba范圍)的特定的命名空間,確保相當于150g字節的個數的區塊(或虛擬區塊)的情況。這種情況下,即便當100g字節量的個數的區塊寫滿數據,結果使得這些區塊變成無可刪除區塊而不含可利用頁面的狀態時,也能代替這些區塊而將對應于過量供給區域的區塊分別用于數據寫入。由此,能夠延緩執行該特定的命名空間用的垃圾回收動作的時序。隨著向過量供給區域的區塊群寫入數據,用戶空間的區塊群內的數據有可能因其更新而被無效化。所有數據被無效化的區塊不進行垃圾回收便能再利用。由此,通過使過量供給區域的大小最佳化,能夠抑制刪除次數的增加。
而且,命名空間控制部29能夠按各個命名空間計數刪除次數(也稱為合計刪除次數),并將計數的各命名空間的刪除次數通知給主機2。
主機2(主機2的管理者)能夠將與特定的命名空間對應的合計刪除次數,作為用來由該特定的命名空間(使用該命名空間的用戶)判定nand存儲器5消耗了多少的指標而利用。主機2能夠將與命名空間分別對應的合計刪除次數活用于所述多個命名空間的管理。
例如,關于合計刪除次數較多的命名空間,主機2可以向該命名空間用追加應確保的區塊的數。這種情況下,主機2可以通過向ssd3發送命名空間分配命令,而向ssd3請求特定數的區塊的追加。通過向該命名空間追加特定數的區塊而該命名空間的過量供給區域的量增加,因此能夠抑制與該命名空間對應的寫入擴增,結果能夠使ssd3的壽命最大化。
在數據中心等,有進行向用戶有償租用各存儲空間的租借服務的情況。這種情況下,nand存儲器5被邏輯分割成與多個命名空間分別對應的多個區域(存儲空間)。某個用戶對關聯于某個命名空間的標識符的存儲空間進行存取,另一用戶對關聯于另一命名空間的標識符的另一存儲空間進行存取。數據中心提供者也可以將各個命名空間的合計刪除次數、即各個命名空間的消耗度反映到各個存儲空間的使用費(租借費)上。例如,對于使用合計刪除次數非常多的命名空間的用戶,除了繳納由該命名空間的容量(相當于確保該命名空間所需的區塊的數的容量)而決定的基本使用費以外,還要繳納與消耗度相應的追加費。
接著,對控制器4內的其他組件進行說明。
nand接口13是在cpu12的控制之下以控制nand存儲器5的方式構成的nand控制器。nand接口13可以具有多個信道。各信道連接有若干nand存儲器芯片。控制器4能夠對連接于nand接口13的不同信道的多個nand存儲器芯片并列進行存取。
dram接口14是在cpu12的控制之下以控制dram6的方式構成的dram控制器。
dram6的存儲區域的一部分可以作為臨時儲存應寫入nand存儲器5的數據的寫入緩沖器(wb)31而利用。此外,dram6的存儲區域可以作為臨時儲存數據復制動作中從復制源區塊讀出的數據的復制緩沖器32而利用。此外,dram6的存儲區域可以用于儲存包含各種管理表的系統管理信息33。系統管理信息33可以在ssd3的電源接通時從nand存儲器5加載到dram6。當ssd3的電源須斷開時,可以將更新后的系統管理信息33保存到nand存儲器5。系統管理信息33可以包含nand存儲器5的區塊結構(或虛擬區塊結構)、及比如刪除次數之類的nand存儲器5的使用歷史記錄信息。
接著,對主機2的構成進行說明。
主機2是能夠執行各種程序的信息處理裝置。由主機2執行的程序包含應用軟件層41、操作系統(os)42、文件系統43、及所述ftl44。
眾所周知,操作系統(os)42一般來說是構成為執行以下控制的軟件:管理主機2全體,控制主機2內的硬件,讓應用程序及各用戶端終端51能夠使用主機2的硬件及ssd3。
文件系統43的作用是執行文件操作(創建、保存、更新、刪除等)用的控制。例如,文件系統43可以使用zfs(zettabytefilesystem,zetta字節文件系統)、btrfs、xfs、ext4、ntfs(newtechnologyfilesystem,新技術文件系統)等。或者,文件系統43還可以使用文件目標系統、keyvaluestoresystem。
各種應用軟件線程是在應用軟件層41上運行。作為應用軟件線程的示例,有用戶端軟件、數據庫軟件、虛擬機等。
在應用軟件層41需要向ssd3送出比如讀出請求、寫入請求、刪除請求這樣的請求時,應用軟件層41會向os42發送此請求。os42將此請求經由文件系統43發送給ftl44。ftl44將此請求轉碼成命令(讀出命令、寫入命令、刪除命令等)。這種情況下,ftl44進行邏輯物理地址變換,將請求所含的lba變換成nand存儲器5的物理地址。可以執行與多個命名空間分別對應的多個ftl44。這種情況下,各邏輯地址(lba)與各物理地址之間的映射的管理可以使用各命名空間不同的lut45來執行。
ftl44將命令送出至ssd3。當接收來自ssd3的回應時,ftl44將此回應經由文件系統43而送出至os42。os42將此回應送出至應用軟件層41。
[主機軟件]
圖2表示在主機2上執行的軟件(主機軟件)的例子。
有某個應用程序處理多個文件的情況。關于各個文件,通過連續寫入來執行數據寫入用的寫入存取。若與這些文件分別對應的連續寫入由一個ftl44合并,則這些連續寫入各自的寫入目標lba混雜在一起。因此,合并的連續寫入有可能作為隨機寫入被送至ssd3。隨機寫入的增加會變成ssd3的寫入擴增增加的原因。
如圖2所示,在主機2中,與這些文件分別對應的若干ftl44能同時執行。
在圖2的例子中,假定執行4個ftl44a、ftl44b、ftl44c、ftl44d的情況。所述ftl44a、ftl44b、ftl44c、ftl44d能夠相互獨立第執行動作。例如,ftl44a管理對應于nsid#1的各lba與各物理地址之間的映射,ftl44b管理對應于nsid#2的各lba與各物理地址之間的映射,ftl44c管理對應于nsid#3的各lba與各物理地址之間的映射,ftl44d管理對應于nsid#4的各lba與各物理地址之間的映射。
用來寫入與nsid#1關聯的數據(例如,文件“a”的數據)的若干寫入請求經由文件系統43a而送至ftl44a。該ftl44a將對應于所述若干寫入請求的若干寫入命令送出至ssd3。ssd3能夠將由所述多個寫入命令指定的數據寫入分配給nsid#1的區塊。由此,能夠將與某個lba范圍關聯的文件“a”的數據連續寫入分配給nsid#1的區塊。
同樣地,用來寫入與nsid#2關聯的數據(例如,文件“b”的數據)的若干寫入請求經由文件系統43b而送至ftl44b。該ftl44b將與所述若干寫入請求對應的若干寫入命令送出至ssd3。ssd3能夠將由所述多個寫入命令指定的數據寫入至分配給nsid#2用的區塊。
因此,能夠防止用來寫入文件“a”的數據的連續寫入與用來寫入文件“b”的數據的連續寫入合并,所以能夠抑制ssd3的寫入擴增的增加。
[信道]
圖3表示nand接口13與多個nand存儲器芯片的關系。
在圖3中,例示了在nand接口13具有的8個信道(ch#1~ch#8)上分別連接4個nand存儲器芯片的情況。在控制器4的控制之下,nand接口13同時驅動連接于8個信道(ch#1~ch#8)的8個nand存儲器芯片,由此能夠并列(同時)執行對8個區塊的讀出、寫入、刪除。
[物理區塊與虛擬區塊]
圖4表示由ssd3管理的物理nand存取管理api21用的區塊群與虛擬nand存取管理api22用的區塊群。
于此,假定nand接口13具有4個信道(ch.a~ch.d)的情況。
在ch.a~ch.b上分別連接著一個以上的nand存儲器芯片。連接于各信道的一個以上的nand存儲器芯片包含多個區塊、例如111個區塊(區塊地址0~110)。
ssd3的控制器4將nand存儲器5內的多個區塊(物理區塊)分類成虛擬nand存取管理api22用的區塊的組#x、及物理nand存取管理api21用的區塊的組#y。區塊的組#x可以每個信道包含例如101個區塊(區塊地址0~100)。區塊的組#y可以每個信道包含例如10個區塊(區塊地址101~110)。
組#x內的區塊是作為多個虛擬區塊而編成。多個虛擬區塊分別包含多個區塊。多個虛擬區塊可以分別包含能夠并列存取的多個區塊的組合。
更詳細來說,一個虛擬區塊可包含能經由ch.a存取的區塊、能經由ch.b存取的區塊、能經由ch.c存取的區塊、能經由ch.d存取的區塊。如圖5所示,在nand存儲器芯片#0~#3連接于信道ch.a~ch.d的情況下,一個虛擬區塊可以包含芯片#0內的一個區塊、芯片#1內的一個區塊、芯片#2內的一個區塊、芯片#3內的一個區塊。向該虛擬區塊的數據的寫入順序為芯片#0內的區塊內的頁面p0、芯片#1內的區塊內的頁面p0、芯片#2內的區塊內的頁面p0、芯片#3內的區塊內的頁面p0、芯片#0內的區塊內的頁面p1、芯片#1內的區塊內的頁面p1、芯片#2內的區塊內的頁面p1、芯片#3內的區塊內的頁面p1…。
在寫入64k字節的寫入數據的情況下,能夠將構成該寫入數據的各16k字節的4個數據部并列寫入例如芯片#0內的區塊內的頁面p0、芯片#1內的區塊內的頁面p0、芯片#2內的區塊內的頁面p0、芯片#3內的區塊內的頁面p0。
圖4所示的組#y內的區塊分別作為物理nand存取管理api21用的區塊、即以單個區塊存取的區塊(物理區塊)而使用。
這樣,nand存儲器5內的多個區塊被分類成虛擬nand存取管理api22用的區塊的組#x及物理nand存取管理api21用的區塊的組#y,因此能夠防止同一個區塊被物理nand存取管理api21用的區塊及虛擬nand存取管理api22用的區塊共用。即,物理nand存取管理api21用的各區塊均不屬于任何虛擬區塊。結果,能夠防止物理nand存取管理api21用的某個特定區塊因對虛擬區塊的存取而被誤存取(讀出、寫入、刪除),所以能夠提高安全性。
[物理區塊信息、虛擬區塊信息、命名空間信息]
圖6表示ssd3內維持的刪除次數管理表33a。
刪除次數管理表33a管理組#y內的區塊(物理區塊)各自的刪除次數。例如,當物理nand存取管理api21用的特定區塊(例如區塊地址0)因來自主機2的命令(刪除命令、區塊分配、刪除命令)而被刪除時,ssd3內的控制器4將該特定區塊(例如區塊地址0)的刪除次數遞增1。
圖7表示ssd3內維持的另一刪除次數管理表33b。
刪除次數管理表33b管理組#x內的虛擬區塊各自的刪除次數。例如,當虛擬nand存取管理api22用的特定的虛擬區塊(例如虛擬區塊地址0)因來自主機2的命令(刪除命令、虛擬區塊分配、刪除命令)而被刪除時,ssd3內的控制器4將該特定的虛擬區塊(例如虛擬區塊地址0)的刪除次數遞增1。在虛擬nand存取管理api22中,一個虛擬區塊所含的多個區塊是同時被刪除。因此,刪除次數是以虛擬區塊為單位進行管理。
圖8表示ssd3內維持的又一刪除次數管理表33c。
刪除次數管理表33c管理與各命名空間id(nsid)對應的合計刪除次數。某個nsid的合計刪除次數是對該nsid的命名空間(區域)執行的刪除動作的累積值,合計刪除次數是每當對分配給該nsid的命名空間的區塊中的任一區塊執行刪除動作時便增加1次。分配給該nsid的區塊在物理nand存取管理api21中為物理區塊,在虛擬nand存取管理api22中為虛擬區塊。
例如,當特定區塊(例如區塊地址0)因來自主機2的命令(刪除命令、或區塊分配、刪除命令)而被刪除時,ssd3內的控制器4特定分配有該特定區塊(例如區塊地址0)的nsid,并將特定的nsid的刪除次數遞增1。同樣地,當特定的虛擬區塊(例如虛擬區塊地址0)因來自主機2的命令(刪除命令、或虛擬區塊分配、刪除命令)而被刪除時,ssd3內的控制器4特定分配有該特定的虛擬區塊(例如虛擬區塊地址0)的nsid,并將特定的nsid的刪除次數遞增1。
圖9表示ssd3內維持的物理區塊結構信息表33d。
物理區塊結構信息表33d是表示nand存儲器5內的各區塊(物理區塊)的結構的信息。物理區塊結構信息表33d包含區塊大小、頁面大小、推定寫入時間、刪除時間等。區塊大小表示一個區塊的大小(容量)。頁面大小表示一個頁面的大小(容量)。推定寫入時間表示將數據從頁面緩沖器向存儲器單元編程所需的時間(tprog)。
圖10表示ssd3內維持的虛擬區塊結構信息表33e。
虛擬區塊結構信息表33e是表示各虛擬區塊的結構的信息。虛擬區塊結構信息表33e包含等價的區塊大小、頁面大小、推定寫入時間、刪除時間、一個虛擬區塊所含的區塊數等。等價的區塊大小可以是一個虛擬區塊所含的各區塊的容量的合計。
圖11表示ssd3內維持的物理nand存取管理api21用的命名空間信息表33f。
命名空間信息表33f管理(1)存在的命名空間的總數、(2)各命名空間的區塊分配數、(3)各命名空間的區塊地址的列表、(4)各命名空間的合計刪除次數。
例如,關于nsid#1,對應于nsid#1的區塊分配數可以表示確保nsid#1用的區塊(物理區塊)的總數。對應于nsid#1的區塊地址的列表表示分配給nsid#1實際使用的各區塊的區塊地址。
圖12表示ssd3內維持的虛擬nand存取管理api22用的命名空間信息表33g。
命名空間信息表33g管理(1)存在的命名空間的總數、(2)各命名空間的虛擬區塊分配數、(3)各命名空間的虛擬區塊地址的列表、(4)各命名空間的合計刪除次數。
例如,關于nsid#1,對應于nsid#1的虛擬區塊分配數可以表示確保nsid#1用的虛擬區塊的總數。對應于nsid#1的虛擬區塊地址的列表表示分配給nsid#1實際使用的各虛擬區塊的虛擬區塊地址。
[虛擬區塊管理]
圖13表示ssd3內的多個虛擬區塊與構成所述多個虛擬區塊的各區塊(物理區塊)的區塊地址的關系。
屬于各虛擬區塊的多個區塊(物理區塊)各自的區塊地址的組合是基于數學規則而利用各虛擬區塊的虛擬區塊地址唯一地決定。通過使用基于數學規則利用虛擬區塊地址唯一地決定區塊地址的組合的方法,不用對每個虛擬區塊使用保持該虛擬區塊所屬的區塊地址的專用管理表,只要利用各虛擬區塊地址便能容易地特定屬于該虛擬區塊的區塊地址的組合。
作為數學規則能使用能夠利用虛擬區塊地址唯一地決定區塊地址的組合的任意規則。
在圖13中,例如應用如下數學規則的情況:對與ch.a關聯的區塊地址0~100升序地分配虛擬區塊地址vb0~vb100,對與ch.b關聯的區塊地址0~100降序地分配虛擬區塊地址vb0~vb100,對與ch.c關聯的區塊地址0~100升序地分配虛擬區塊地址vb0~vb100,對與ch.d關聯的區塊地址0~100降序地分配虛擬區塊地址vb0~vb100。
這種情況下,例如屬于具有虛擬區塊地址vb0的虛擬區塊的多個區塊各自的區塊地址的組合是作為ch.a的區塊地址0、ch.b的區塊地址100、ch.c的區塊地址0、及ch.d的區塊地址100進行決定。同樣地,屬于虛擬區塊地址vb1的虛擬區塊的多個區塊各自的區塊地址的組合是作為ch.a的區塊地址1、ch.b的區塊地址99、ch.c的區塊地址1、及ch.d的區塊地址99進行決定。
能夠應用的數學規則的例子并不限定于此,例如也可以應用從各信道選擇與虛擬區塊地址的值相同值的區塊地址的數學規則。這種情況下,例如,屬于虛擬區塊地址vb0的虛擬區塊的多個區塊各自的區塊地址的組合是作為ch.a的區塊地址0、ch.b的區塊地址0、ch.c的區塊地址0、及ch.d的區塊地址0進行決定。同樣地,屬于虛擬區塊地址vb1的虛擬區塊的多個區塊各自的區塊地址的組合是作為ch.a的區塊地址1、ch.b的區塊地址1、ch.c的區塊地址1、及ch.d的區塊地址1進行決定。
主機2只要識別能夠指定各個虛擬區塊的物理地址(虛擬區塊地址)即可,無須識別各虛擬區塊所含的區塊各自的區塊地址自身。
例如,在虛擬區塊地址vb0的虛擬區塊中,vb0-0表示虛擬區塊地址(vb0)與該虛擬區塊內的最初的區塊的區塊編號(0)的組合。當由主機2指定vb0-0的情況下,ssd3能夠將vb0-0變換成ch.a的區塊地址0,并存取該ch.a的區塊地址0。
[虛擬區塊的壞塊管理]
圖14表示由ssd3執行的不良區塊(壞塊)替換動作。
例如,當指定虛擬區塊(虛擬區塊地址vb2)內的信道ch.c的區塊(vb2-2)作為無法使用的不良區塊(壞塊)的情況下,ssd3的控制器4能夠基于數學規則利用vb2-2特定信道ch.c的區塊地址(=2)。并且,控制器4將該區塊地址(=2)的區塊登記到壞塊列表。并且,控制器4將區塊地址(=2)的區塊替換成能夠與虛擬區塊(虛擬區塊地址vb2)內的其他所有區塊(于此,為ch.a的區塊地址2的區塊、ch.b的區塊地址98的區塊、ch.d的區塊地址98的區塊)并列存取的另一區塊。例如,能選擇ch.c的區塊群內當前不用于物理nand存取及虛擬nand存取的區塊、例如ch.c的區塊地址102的區塊,作為該另一區塊。
控制器4只要對將虛擬區塊地址vb2的信道ch.c的區塊地址2替換成ch.c的另一區塊地址102進行管理即可。
[壞塊化命令]
圖15表示應用于ssd3的物理nand存取管理api21用的壞塊化命令。
物理nand存取管理api21用的壞塊化命令向ssd3請求應將特定區塊設為壞塊。主機2可以基于讀出錯誤的次數等來特定應壞塊化的區塊。壞塊化命令包含以下輸入參數。
(1)區塊地址:該區塊地址指定應壞塊化的區塊(物理區塊)。
壞塊化命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示壞塊化命令的成功或錯誤的結束狀態。
圖16表示應用于ssd3的虛擬nand存取管理api22用的壞塊化命令。
虛擬nand存取管理api22用的壞塊化命令向ssd3請求應將特定的虛擬區塊內區塊設為壞塊。主機2可以基于讀出錯誤的次數等來決定應將特定的虛擬區塊內的第幾個區塊壞塊化。壞塊化命令包含以下輸入參數。
(1)虛擬區塊地址與虛擬區塊內區塊編號
虛擬區塊地址與虛擬區塊內區塊編號指定應將哪個虛擬區塊內的第幾個區塊壞塊化。虛擬區塊內區塊編號可為指定信道編號的值。
壞塊化命令包含以下輸出參數。
(1)結束狀態
向主機2返回表示壞塊化命令的成功或錯誤的結束狀態。
[壞塊化處理的次序]
圖17的流程圖表示由ssd3執行的虛擬nand存取管理api22用的處理與與壞塊化處理的次序。
ssd3的控制器4將nand存儲器5內的區塊群分類成2個組(組#x、組#y)(步驟s1),并將組#x的區塊群作為多個虛擬區塊而編成(步驟s2)。
在步驟s2中,控制器4基于數學規則來決定應屬于各虛擬區塊的區塊地址的組合。若根據所述初級缺陷列表指定某個虛擬區塊內的區塊作為壞塊,則控制器4可以從組#y選擇與該壞塊連接于相同信道的另一區塊,并利用選擇的區塊替換該壞塊。組#y內的剩余區塊則作為物理nand存取管理api21用的區塊而使用。
并且,控制器4響應于來自主機2的包含指定某個虛擬區塊的物理地址(虛擬區塊地址、虛擬區塊內區塊編號、頁面地址)的讀出、寫入或刪除命令的接收,對該虛擬區塊執行讀出動作、寫入動作、或刪除動作(步驟s3)。在步驟s3中,控制器4基于數學規則利用物理地址(虛擬區塊地址、虛擬區塊內區塊編號)而決定存取對象的虛擬區塊內的存取對象區塊的區塊地址,并對該區塊執行讀出動作、寫入動作、或刪除動作。
若控制器4接收來自主機2的壞塊化命令,則控制器4判定壞塊化命令是虛擬nand存取管理api22用的壞塊化命令或物理nand存取管理api21用的壞塊化命令的哪一個(步驟s4、s5)。當虛擬nand存取管理api22用的壞塊化命令與物理nand存取管理api21用的壞塊化命令具有不同操作代碼的情況下,該判定基于操作代碼而執行。當虛擬nand存取管理api22用的壞塊化命令與物理nand存取管理api21用的壞塊化命令具有相同操作代碼的情況下,該判定也可以基于壞塊化命令所含的地址的種類(區塊地址/虛擬區塊地址及虛擬區塊內區塊編號)而執行。
若壞塊化命令是物理nand存取管理api21用的壞塊化命令(步驟s5的是),則控制器4將壞塊化命令指定的區塊地址的區塊登記到壞塊列表,并將該區塊地址的區塊作為壞塊進行管理(步驟s6)。不執行將該壞塊替換成另一區塊的處理。
若壞塊化命令是虛擬nand存取管理api22用的壞塊化命令(步驟s4的是),則控制器4基于在步驟s2中使用的數學規則,利用虛擬區塊地址與虛擬區塊內區塊編號而特定應壞塊化的區塊的區塊地址(步驟s7)。
控制器4將特定出的區塊地址的區塊登記到壞塊列表,并將該特定出的區塊地址的區塊作為壞塊進行管理(步驟s8)。
并且,控制器4從與該特定出的區塊地址的區塊(壞塊)連接于相同信道的區塊之中,選擇當前不用于物理nand存取及虛擬nand存取的區塊(步驟s9),并將該特定出的區塊地址的區塊(壞塊)利用選擇的區塊替換(步驟s10)。
[用于物理nand存取及虛擬nand存取的處理序列]
圖18表示由ssd3及主機2執行的用于物理nand存取及虛擬nand存取的處理序列。
當主機2希望使用物理nand存取管理api21對ssd3進行存取時,主機2可以向ssd3請求一個區塊的分配。該請求可以是所述區塊分配、刪除命令。ssd3的控制器4從組#y內的區塊中選擇不含有效數據的區塊(當前不使用的區塊),將該選擇的區塊分配給主機2,并向主機2通知該分配的區塊的物理地址(區塊地址)。
當主機2希望使用虛擬nand存取管理api22對ssd3進行存取時,主機2可以向ssd3請求一個虛擬區塊的分配。該請求可以是所述虛擬區塊分配、刪除命令。ssd3的控制器4從多個虛擬區塊選擇不含有效數據的虛擬區塊(當前不使用的虛擬區塊),將該選擇的虛擬區塊分配給主機2,并向主機2通知該分配的虛擬區塊的物理地址(虛擬區塊地址)。
主機2將包含通知的區塊地址的讀出、寫入或刪除命令、即物理nand存取管理api21用的讀出、寫入或刪除命令發送至ssd3。響應于包含區塊地址的讀出、寫入或刪除命令、即物理nand存取管理api21用的讀出、寫入或刪除命令的接收,控制器4對該區塊地址指定的特定且單一的區塊執行讀出動作、寫入動作、或刪除動作(步驟s11)。
主機2將包含通知的虛擬區塊地址的讀出、寫入或刪除命令發送至ssd3。響應于包含虛擬區塊地址的讀出、寫入或刪除命令、即虛擬nand存取管理api22用的讀出、寫入或刪除命令的接收,控制器4對該虛擬區塊地址指定的特定的虛擬區塊所含的區塊的匯集執行讀出動作、寫入動作、或刪除動作(步驟s12)。
[寫入處理]
圖19表示由ssd3與主機2執行的用來存取單一的物理區塊的物理nand存取的寫入處理的處理序列。
主機2將物理nand存取管理api21用的寫入命令發送至ssd3。該寫入命令包含指定應寫入數據的區塊的區塊地址。在所述直接地址指定模式的情況下,寫入命令包含區塊地址及頁面地址雙方。響應于物理nand存取管理api21用的寫入命令的接收,ssd3的控制器4將該寫入命令指定的數據寫入至寫入命令內的區塊地址指定的區塊內的寫入對象頁面(步驟s13)。在直接地址指定模式的情況下,寫入對象的頁面由寫入命令內的頁面地址指定。在所述自動地址產生模式的情況下,寫入對象的頁面由控制器4自動產生的頁面地址指定。
并且,控制器4將寫入命令的命令完成回應發送至主機2。
圖20表示由ssd3及主機2執行的用來對包含多個物理區塊的虛擬區塊進行存取的虛擬nand存取的寫入處理的處理序列。
主機2將虛擬nand存取管理api22用的寫入命令發送至ssd3。該寫入命令包含指定應寫入數據的虛擬區塊的虛擬區塊地址。在所述直接地址指定模式的情況下,寫入命令包含虛擬區塊地址及頁面地址雙方。如上所述,該寫入命令也可以包含虛擬區塊地址、虛擬區塊內區塊編號、頁面地址。
響應于虛擬nand存取管理api22用的寫入命令的接收,ssd3的控制器4將該寫入命令指定的數據寫入至寫入命令內的虛擬區塊地址指定的虛擬區塊內的寫入對象頁面(步驟s14)。在直接地址指定模式的情況下,寫入對象的頁面由寫入命令內的頁面地址指定。在所述自動地址產生模式的情況下,寫入對象的頁面由控制器4自動產生的頁面地址指定。此外,在所述自動地址產生模式下,也可以自動產生虛擬區塊內區塊編號、及頁面地址雙方。
并且,控制器4將寫入命令的命令完成回應發送至主機2。
[讀出處理]
圖21表示由ssd3及主機2執行的用來進行物理nand存取的讀出處理的處理序列。
主機2將物理nand存取管理api21用的讀出命令發送至ssd3。該讀出命令包含區塊地址及頁面地址。響應于物理nand存取管理api21用的讀出命令的接收,ssd3的控制器4從讀出命令內的區塊地址及頁面地址指定的區塊內的讀出對象頁面讀出數據(步驟s15)。并且,控制器4將讀出的數據、及讀出命令的命令完成回應發送至主機2。
圖22表示由ssd3及主機2執行的用來進行虛擬nand存取的讀出處理的處理序列。
主機2將虛擬nand存取管理api22用的讀出命令發送至ssd3。該讀出命令包含虛擬區塊地址及頁面地址。讀出命令也可以包含虛擬區塊地址、虛擬區塊內區塊編號、頁面地址。
響應于虛擬nand存取管理api22用的讀出命令的接收,ssd3的控制器4從讀出命令內的虛擬區塊地址、虛擬區塊內區塊編號、及頁面地址指定的虛擬區塊內的讀出對象頁面讀出數據(步驟s16)。并且,控制器4將讀出的數據、及讀出命令的命令完成回應發送至主機2。
[刪除處理]
圖23表示由ssd3及主機2執行的用來進行物理nand存取的刪除處理的處理序列。
主機2將物理nand存取管理api21用的刪除命令發送至ssd3。該刪除命令包含區塊地址。響應于物理nand存取管理api21用的刪除命令的接收,ssd3的控制器4將刪除命令內的區塊地址指定的區塊刪除,并將該區塊內的所有頁面設為刪除狀態(步驟s17)。并且,控制器4將刪除命令的命令完成回應發送至主機2。
圖24表示由ssd3及主機2執行的用來進行虛擬nand存取的刪除處理的處理序列。
主機2將虛擬nand存取管理api22用的刪除命令發送至ssd3。該刪除命令包含虛擬區塊地址。響應于虛擬nand存取管理api22用的刪除命令的接收,ssd3的控制器4將刪除命令內的虛擬區塊地址指定的虛擬區塊內的多個區塊同時刪除,并將所述多個區塊內的所有頁面設為刪除狀態(步驟s18)。并且,控制器4將刪除命令的命令完成回應發送至主機2。
[優先級管理]
圖25表示控制器4的命令優先級的管理動作。
從主機2接收的所有命令中,表示所述多個命令的執行的優先順序(優先等級)的值(優先級)可以由主機2賦予。各命令可以具有表示其優先級的輸入參數。
優先順序(優先等級)的種類數可以為2以上的任意數。優先等級的種類可以包含例如表示最高優先級的“高”、表示最低優先級的“低”、表示中間優先級的“中”。
由控制器4執行的優先級管理中,優先級高的命令能夠比優先級低的命令先執行。具有相同優先級的命令間的執行順序可以通過先進先出方式來決定。關于像刪除命令那樣直到命令的處理完成為止需要較多時間的命令,可以中斷此命令(例如刪除命令)的執行,先執行優先順序高高的命令,當優先順序高的命令完成后,再繼續執行中斷的命令(例如刪除命令)的處理。
為了進行優先級管理,可以對每個nand芯片設置付優先級的隊列61、62、63。為了能夠識別執行哪個命令,也可以對所有命令及所有命令完成回應賦予隊列id。主機2可以對所有命令賦予隊列id。
賦予了“高”優先級的各命令儲存在付優先級的隊列61(排隊)。賦予了“中”優先級的各命令儲存在付優先級的隊列62。賦予了“低”優先級的各命令儲存在付優先級的隊列63。相比于從付優先級的隊列62的命令取出及從付優先級的隊列63的命令取出,優先執行從付優先級的隊列61的命令的取出。相比于從付優先級的隊列63的命令取出,優先執行從付優先級的隊列62的命令取出。
[區塊分配、刪除命令]
參照圖26,對物理nand存取管理api21用的區塊分配、刪除命令、及虛擬nand存取管理api22用的區塊分配、刪除命令進行說明。
物理nand存取管理api21用的區塊分配、刪除命令包含以下輸入參數。
(1)區塊類型=區塊:區塊類型表示應分配的區塊的類型。物理nand存取管理api21用的區塊分配、刪除命令的區塊類型為區塊(物理區塊)。從空閑區塊向主機2分配一個區塊,且自動刪除該區塊。
(2)處理優先級:處理優先級表示該命令的優先級。
(3)nsid(可選):nsid表示應分配區塊的命名空間的id。
物理nand存取管理api21用的區塊分配、刪除命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示區塊分配、刪除命令的成功或錯誤的結束狀態。
(2)區塊地址:向主機2返回分配的區塊的區塊地址。
(3)剩余區塊數:只在指定nsid的情況下,向主機2返回確保該nsid用的剩余區塊數。
虛擬nand存取管理api22用的區塊分配、刪除命令(也稱為“虛擬區塊分配、刪除命令”)包含以下輸入參數。
(1)區塊類型=虛擬區塊:虛擬nand存取管理api22用的區塊分配、刪除命令的區塊類型為虛擬區塊。從空閑虛擬區塊向主機2分配一個虛擬區塊,且自動刪除該虛擬區塊內的多個區塊。
(2)處理優先級:處理優先級表示該命令的優先級。
(3)nsid(可選):nsid表示應分配虛擬區塊的命名空間的id。
虛擬nand存取管理api22用的區塊分配、刪除命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示區塊分配、刪除命令的成功或錯誤的結束狀態。
(2)虛擬區塊地址:向主機2返回分配的虛擬區塊的虛擬區塊地址。
(3)剩余區塊數:只在指定nsid的情況下,向主機2返回確保該nsid用的剩余虛擬區塊的數。
[物理區塊管理與虛擬區塊管理]
圖27表示由ssd3的控制器4管理的使用中區塊列表71a、空閑區塊列表71b、使用中虛擬區塊列表72a、及空閑虛擬區塊列表72b。
使用中區塊列表71a表示組#y的區塊群之中保持有效數據的區塊(物理區塊)的列表,即正被主機2使用的使用中區塊的列表。空閑區塊列表71b表示組#y的區塊群之中未保持有效數據的區塊(物理區塊)的列表,即未被主機2使用的空閑區塊的列表。
使用中虛擬區塊列表72a表示組#x的虛擬區塊群之中保持有效數據的虛擬區塊的列表,即正被主機2使用的使用中虛擬區塊的列表。空閑虛擬區塊列表72b表示組#x的虛擬區塊群之中未保持有效數據的虛擬區塊的列表,即未被主機2使用的空閑虛擬區塊的列表。
[區塊分配、刪除處理]
圖28表示由ssd3及主機2執行的區塊分配、刪除處理的處理序列。
首先,說明物理nand存取管理api21用的區塊分配、刪除處理。
當前分配給主機2的區塊(物理區塊)寫滿來自主機2的數據的情況下,主機2可以向ssd3發送物理nand存取管理api21用的區塊分配、刪除命令。
當ssd3的控制器4從主機2接收該區塊分配、刪除命令時,控制器4從空閑區塊列表71b選擇一個區塊(物理區塊),并將選擇的區塊(物理區塊)作為寫入對象區塊分配給主機2(步驟s21)。控制器4擁有來自空閑區塊列表71b的區塊(寫入對象區塊)的選擇權限。因此,控制器4能夠將可靠性高的區塊作為寫入對象區塊分配給主機2。在步驟s21中,控制器4可以從空閑區塊列表71b選擇最小刪除次數的區塊,并將該最小刪除次數的區塊作為寫入對象區塊分配給主機2。
控制器4刪除該分配的區塊,并更新該分配的區塊的刪除次數(步驟s22)。控制器4將該分配的區塊的區塊地址通知給主機2(步驟s23)。該區塊地址也可以作為對于區塊分配、刪除命令的命令完成回應內的返回值而通知給主機2。
接著,說明虛擬nand存取管理api22用的區塊分配、刪除處理。
在當前分配給主機2的虛擬區塊寫滿來自主機2的數據的情況下,主機2可以向ssd3發送虛擬nand存取管理api22用的區塊分配、刪除命令。
當ssd3的控制器4從主機2接收該區塊分配、刪除命令時,控制器4從空閑虛擬區塊列表72b選擇一個虛擬區塊,并將選擇的虛擬區塊作為寫入對象虛擬區塊而分配給主機2(步驟s21)。控制器4擁有來自空閑虛擬區塊列表72b的虛擬區塊(寫入對象虛擬區塊)的選擇權限,因此控制器4能夠將可靠性高的虛擬區塊作為寫入對象虛擬區塊分配給主機2。在步驟s21中,控制器4可以從空閑虛擬區塊列表72b選擇最小刪除次數的虛擬區塊,并將該最小刪除次數的虛擬區塊作為寫入對象虛擬區塊分配給主機2。
控制器4將該分配的虛擬區塊所含的多個區塊同時刪除,并更新該分配的虛擬區塊的刪除次數(步驟s22)。控制器4將該分配的虛擬區塊的虛擬區塊地址通知給主機2(步驟s23)。該虛擬區塊地址也可以作為對于區塊分配、刪除命令的命令完成回應內的返回值而通知給主機2。
[寫入命令]
圖29表示應用于ssd3的物理nand存取管理api21用的寫入命令。
寫入命令包含以下輸入參數。
(1)區塊地址、或區塊地址與頁面地址:該輸入參數值是指定應寫入數據的nand存儲器5上的位置的物理地址。在只指定區塊地址的情況下,寫入對象頁面由ssd3自動更新。
(2)nsid(可選):在未指定區塊地址的情況下,指定nsid。在指定了nsid的情況下,區塊地址與頁面地址由ssd3自動發布。數據被寫入最后分配給nsid的區塊(當前寫入對象區塊)。
(3)處理優先級:處理優先級表示該寫入命令的優先級。
(4)寫入數據的起始地址:寫入數據的起始地址表示儲存著寫入數據的輸出緩沖器(主機的存儲器)上的起始地址。
(5)寫入頁面數:寫入頁面數表示應寫入數據的頁面的數、即所述“特定頁面數”。在寫入數據的區塊內的頁面數達到寫入頁面數(“特定頁面數”)的情況下,向主機2通知此意旨。
(6)nand模式(可選):nand模式包含slc/mlc/tlc等。
寫入命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示寫入命令的成功或錯誤的結束狀態。
(2)區塊地址與頁面地址:區塊地址與頁面地址表示寫入數據的nand存儲器5上的位置。在寫入命令只包含區塊地址的情況下,或只包含nsid的情況下,主機2能夠基于該返回值獲知寫入數據的nand存儲器5上的位置。
(3)寫入頁面數:該值表示寫入數據的頁面的數。
(4)不當寫入順序警告:在檢測到不當寫入順序的情況下,向主機2返回警告或錯誤。
(5)可讀出的最新頁面地址:向主機2返回保持可讀出數據的最新頁面地址。主機2能夠獲知直到該區塊內的哪個頁面為止可讀出。
圖30表示應用于ssd3的虛擬nand存取管理api22用的寫入命令。
該寫入命令包含以下輸入參數。
(1)虛擬區塊地址、或虛擬區塊地址與頁面地址:這些地址是指定應寫入數據的nand存儲器5上的位置的物理地址。該物理地址可以用虛擬區塊地址、虛擬區塊內區塊編號、頁面地址來表現。在只指定了虛擬區塊地址的情況下,虛擬區塊內區塊編號、頁面地址可以由ssd3自動更新。
(2)nsid(可選):在未指定虛擬區塊地址的情況下,指定nsid。在指定nsid的情況下,虛擬區塊地址、虛擬區塊內區塊編號、頁面地址可以由ssd3自動發布。數據被寫入分配給nsid的虛擬區塊。
(3)處理優先級:處理優先級表示該寫入命令的優先級。
(4)寫入數據的起始地址:寫入數據的起始地址表示儲存著寫入數據的輸出緩沖器(主機的存儲器)上的起始地址。
(5)寫入頁面數:寫入頁面數表示應寫入數據的頁面的數。當寫入數據的區塊內的頁面數達到寫入頁面數的情況下,向主機2通知此意旨。
(6)nand模式(可選):nand模式包含slc/mlc/tlc等。
寫入命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示寫入命令的成功或錯誤的結束狀態。
(2)虛擬區塊地址與頁面地址:該值是表示寫入數據的nand存儲器5上的位置的物理地址。該物理地址可以用虛擬區塊地址、虛擬區塊內區塊編號、頁面地址來表現。在寫入命令只包含虛擬區塊地址或只包含nsid的情況下,主機2能夠基于該返回值獲知寫入數據的nand存儲器5上的位置。
(3)寫入頁面數:該值表示寫入數據的頁面的數。
(4)不當寫入順序警告:在檢測到不當寫入順序的情況下,向主機2返回警告或錯誤。
(5)可讀出的最新頁面地址:向主機2返回保持可讀出數據的最新頁面地址。主機2能夠獲知直到虛擬區塊內存取對象區塊內的哪個頁面為止可讀出。
[寫入順序制約]
圖31表示向區塊內的多個頁面的數據寫入順序相關的制約。
于此,假定一個區塊包含頁面0~頁面255的情況。關于數據讀出,能夠以任意順序讀出區塊內的任意的若干頁面。另一方面,關于數據寫入,在某一個區塊內,數據必須按照頁面0、頁面1、頁面2、頁面3、…頁面254、頁面255的順序連續地寫入。因此,“不當寫入順序警告”功能能夠幫助主機2使用直接地址指定模式、即幫助主機2控制應寫入數據的區塊地址及頁面地址。
[來自頁面的數據讀出的時序相關的制約]
有如下情況:即便nand存儲器向區塊內的某個頁面寫入了數據,但寫入該頁面的數據無法在剛寫入讀出,寫入該頁面的數據在向該頁面后續的1以上的頁面的數據寫入完成后才能讀出。
圖32表示來自頁面的數據讀出的時序相關的制約。
于此,例示向頁面p0~p3寫入數據后頁面p0保持可讀出數據的狀態的情況。這樣,有如下情況:即便向某個特定頁面(例如頁面p0)的寫入完成,但在向后續若干頁面(例如頁面p1~p3)的寫入完成之前,無法從該特定頁面(例如頁面p0)正確地讀出數據。
這種來自頁面的數據讀出的時序相關的制約是由于在nand存儲器內執行的編程動作而引起的。
即,在nand存儲器中,單元不斷微細化,因向單元的數據寫入會引起相鄰單元的閾值電平發生變動這樣的編程干擾。因此,在nand存儲器中,有考慮編程干擾的影響,因向頁面內的各單元的數據的寫入,而執行對其前一個以上的頁面內的各單元的閾值電平進行校正的編程動作的情況。若從校正完成前的頁面讀出數據,便會讀出與原本的數據不同的錯誤數據。校正完成時序因使用的nand存儲器的類型而不同。
控制器4能夠向主機2通知校正完成時序。換句話說,控制器4能夠向主機2通知能讀出寫入數據的區塊內的最后的頁面。
更詳細來說,控制器4執行以下處理。
控制器4從主機2接收包含指定某個特定區塊的區塊地址及指定該特定區塊內的寫入對象頁面的頁面地址的寫入命令。控制器4按照寫入命令向特定區塊內的寫入對象頁面寫入數據。并且,控制器4向主機2通知表示因向該特定區塊內的寫入對象頁面的數據寫入而變成可讀出狀態的該特定區塊內的最新頁面(該特定區塊內的頁面群之中最后變得可讀出的頁面)的頁面地址。
主機2可以根據該通知更新表示可讀出寫入數據的頁面的主機2上的可讀出頁面地址管理信息。在接收表示某個頁面的數據可讀出的通知后,主機2可以釋放保持該頁面的數據的主機2的存儲器區域(寫入緩沖器)。換句話說,主機2首先將應寫入ssd3的nand存儲器5的數據臨時儲存在主機2的存儲器內,然后用用來寫入該應寫入數據的寫入命令發送至ssd3。并且,主機2在該數據變得從非易失性存儲器5可讀出之前,將該數據維持在主機2的存儲器。
此外,為了減小編程干擾的影響,也有nand存儲器按照圖33所示的編程順序執行編程動作的情況。在圖33中,用來向各頁面寫入數據的編程動作包含多次寫入階段。向各頁面的多次寫入階段內的至少最后的寫入階段是在向后續1以上的頁面的1以上的寫入階段完成后執行。這時,有如下情況:即便通過將應寫入某個特定頁面(例如頁面p0)的數據傳輸至nand存儲器而完成向該特定頁面的寫入,但在通過將應寫入其他1以上的頁面的數據傳輸至nand存儲器而完成向該1以上的頁面的寫入之前,無法從該特定頁面準確地讀出數據。
在每個單元寫入3比特的數據的tlc寫入中,可以按照以下的編程順序執行編程動作。
(1)向頁面0的第1寫入階段(向頁面0的下位頁面數據的寫入)
(2)向頁面1的第1寫入階段(向頁面1的下位頁面數據的寫入)
(3)向頁面0的第2寫入階段(向頁面0的中位頁面數據的寫入)
(4)向頁面2的第1寫入階段(向頁面2的下位頁面數據的寫入)
(5)向頁面1的第2寫入階段(向頁面1的中位頁面數據的寫入)
(6)向頁面0的第3寫入階段(向頁面0的上位頁面數據的寫入)
(7)向頁面3的第1寫入階段(向頁面3的下位頁面數據的寫入)
(8)向頁面2的第2寫入階段(向頁面2的中位頁面數據的寫入)
(9)向頁面1的第3寫入階段(向頁面1的上位頁面數據的寫入)
可使用的編程順序并不限定于該例,可以對每個nand存儲器使用不同的各種編程順序。
[寫入處理的次序]
圖34的流程圖表示由ssd3執行的數據寫入處理的次序。
ssd3的控制器4響應于區塊分配、刪除命令的接收而將寫入對象區塊分配給主機2,并且將寫入對象頁面設定為初始值(頁面0)(步驟s31)。若控制器4從主機2接收寫入命令(步驟s32的是),則控制器4判定接收的寫入命令是否為包含頁面地址的直接地址指定模式的寫入命令(步驟s33)。
若接收的寫入命令是直接地址指定模式的寫入命令(步驟s33的是),則控制器4判定該寫入命令指定的頁面地址是否與當前寫入對象頁面(于此為頁面0)一致(步驟s34)。
若寫入命令指定的頁面地址與當前寫入對象頁面不一致(步驟s34的否),則控制器4檢測到不當寫入順序發生,向主機2通知包含不當寫入順序的警告的命令完成回應(步驟s35)。在步驟s35中,控制器4不向寫入命令指定的頁面地址寫入數據,而是向主機2通知包含不當寫入順序的警告的命令完成回應。
另一方面,若寫入命令指定的頁面地址與當前寫入對象頁面一致(步驟s34的是),則控制器4將寫入命令指定的數據傳輸至nand存儲器5,將數據寫入至寫入命令的頁面地址指定的寫入對象區塊內的頁面(步驟s36)。控制器4基于按從最初的頁面到最后的頁面的順序寫入數據的寫入順序相關的制約,更新寫入對象頁面(于此,從頁面0更新為頁面1)(步驟s37)。
若接收的寫入命令并非直接地址指定模式的寫入命令(步驟s33的否),則控制器4自動發布當前寫入對象頁面的頁面地址(于此頁面0),將寫入命令指定的數據傳輸至nand存儲器5,并將數據寫入至寫入對象區塊內的當前寫入對象頁面(步驟s38)。控制器4基于所述寫入順序相關的制約,更新寫入對象頁面(于此,從頁面0更新為頁面1)(步驟s39)。
在步驟s37或s39之后,控制器4特定保持可讀出數據的最新的頁面地址(步驟s40)。
并且,控制器4判定是否因此次寫入而數據寫入至寫入對象區塊內的最后的頁面為止、及寫入數據的頁面數是否達到“寫入頁面數”(所述“特定頁面數”)(步驟s41、s42)。
并且,控制器4創建返回值,將包含返回值的命令完成回應發送至主機2。
若數據寫入至寫入對象區塊內的最后的頁面為止(步驟s41的是),則控制器4向主機2發送包含結束狀態、返回值的命令完成回應(步驟s43)。返回值包含以下值。
(1)表示寫入數據的nand存儲器5上的位置的物理地址(該物理地址可為區塊地址與頁面地址、或者也可為虛擬區塊地址與頁面地址)
(2)可讀出的最新頁面地址
(3)表示區塊內的所有頁面的寫入完成的狀態
若寫入數據的頁面數達到“寫入頁面數”(所述“特定頁面數”)(步驟s42的是),則控制器4將包含結束狀態與返回值的命令完成回應發送至主機2(步驟s44)。返回值包含以下值。
(1)表示寫入數據的nand存儲器5上的位置的物理地址(該物理地址可為區塊地址與頁面地址,或者也可為虛擬區塊地址與頁面地址)
(2)可讀出的最新頁面地址
(3)表示特定頁面數的寫入完成的狀態
圖35的流程圖表示響應于寫入命令的命令完成回應的接收而由主機2執行的處理的次序。
響應于來自ssd3的寫入命令的命令完成回應的接收,主機2判定該寫入命令的命令處理是否成功(步驟s51)。
若寫入命令的命令處理成功(步驟s51的是),則主機2使用命令完成回應所含的區塊地址與頁面地址,更新地址變換表(即查找表lut45),由此對與通過該寫入命令而寫入的數據對應的lba,映射正確的物理地址(步驟s52)。并且,主機2基于可讀出的最新頁面地址更新所述可讀出頁面地址管理信息,并釋放保持著向該可讀出的最新頁面地址寫入的數據的主機2的存儲器區域(寫入緩沖器)(步驟s53)。
即,在通過該寫入命令寫入的數據變得能夠從ssd3讀出之前,將通過該寫入命令寫入的數據維持在主機2的存儲器區域(寫入緩沖器)。在通過該寫入命令寫入的數據變得能夠從ssd3讀出之后,對于該數據的讀出請求的存取目標從寫入緩沖器切換成ssd3。
并且,主機2判定特定頁面數的寫入是否完成、寫入是否完成到區塊的最后的頁面為止(步驟s54、s56)。
若特定頁面數的寫入完成(步驟s54的是),則主機2將請求比如元數據這樣的管理信息的寫入的寫入命令發送至ssd3(步驟55)。由此,能夠向各區塊的最終頁面等寫入比如元數據這樣的管理信息。
若寫入完成到區塊的最后的頁面為止(步驟s56的是),則主機2將區塊分配、刪除命令發送至ssd3(步驟57)。
若寫入命令的命令處理錯誤(步驟s51的否),則主機2判定是否因不當寫入順序所致的錯誤(步驟s58)。
若為因不當寫入順序所致的錯誤(步驟s58的是),則主機2執行包含用來特定不當寫入順序的原因的處理的錯誤處理(步驟s59)。
圖36的流程圖表示響應于包含nsid的寫入命令的命令完成回應的接收而由主機2執行的處理的次序。
響應于來自ssd3的寫入命令的命令完成回應的接收,主機2判定寫入命令的命令處理是否成功(步驟s61)。
若寫入命令的命令處理成功(步驟s61的是),則主機2特定與通過該寫入命令寫入的數據關聯的nsid(步驟s62)。命令完成回應也可以包含與寫入命令內的nsid相同的nsid。
主機2使用命令完成回應所含的區塊地址與頁面地址,更新與特定的nsid對應的地址變換表(即查找表lut45),由此對與數據對應的lba映射正確的物理地址(步驟s63)。并且,主機2通過將可讀出的最新頁面地址保存在所述可讀出頁面地址管理信息來更新可讀出頁面地址管理信息,并釋放保持著向該可讀出的最新頁面地址寫入的數據的主機2的存儲器區域(寫入緩沖器)(步驟s64)。
并且,主機2判定特定頁面數的寫入是否完成、寫入是否完成到區塊的最后的頁面為止(步驟s65、s67)。
若特定頁面數的寫入完成(步驟s65的是),則主機2將請求比如元數據這樣的管理信息的寫入的寫入命令發送至ssd3(步驟66)。
若寫入完成到區塊的最后的頁面為止(步驟s67的是),則主機2將區塊分配、刪除命令發送至ssd3(步驟68)。
若寫入命令的命令處理錯誤(步驟s61的否),則主機2判定是否為因不當寫入順序所致的錯誤(步驟s69)。
若為因不當寫入順序所致的錯誤(步驟s69的是),則主機2執行包含特定與通過該寫入命令應寫入的數據關聯的nsid的處理、用來特定不當寫入順序的原因的處理等的錯誤處理(步驟s70)。
[讀出命令]
圖37表示應用于ssd3的物理nand存取管理api21用的讀出命令。
讀出命令包含以下輸入參數。
(1)區塊地址與頁面地址:該地址是指定應讀出數據的nand存儲器5上的位置的物理地址。
(2)處理優先級:處理優先級表示該讀出命令的優先級。
(3)讀出數據的傳輸目標地址:讀出數據的傳輸目標地址表示應傳輸讀出數據的輸入緩沖器(主機的存儲器)上的位置。
(4)讀出頁面數:讀出頁面數表示應讀出的頁面的數。
(5)允許等待時間:允許等待時間指定最小等待時間、正常等待時間、或長等待時間的任一個。
讀出命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示讀出命令的成功或錯誤的結束狀態。
(2)區塊地址與頁面地址:區塊地址與頁面地址表示讀出數據的nand存儲器5上的位置。
(3)頁面數:該值表示讀出數據的頁面的數。
(4)起始地址:該地址表示讀出數據的起始地址。
圖38表示應用于ssd3的虛擬nand存取管理api22用的讀出命令。
該讀出命令包含以下輸入參數。
(1)虛擬區塊地址與頁面地址:該地址是指定應讀出數據的nand存儲器5上的位置的物理地址。
(2)處理優先級:處理優先級表示該讀出命令的優先級。
(3)讀出數據的傳輸目標地址:讀出數據的傳輸目標地址表示應傳輸讀出數據的輸入緩沖器(主機的存儲器)上的位置。
(4)讀出頁面數:讀出頁面數表示應讀出的頁面的數。
(5)允許等待時間:允許等待時間指定最小等待時間、正常等待時間、或長等待時間的任一個。
讀出命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示讀出命令的成功或錯誤的結束狀態。
(2)虛擬區塊地址與頁面地址:虛擬區塊地址與頁面地址表示讀出數據的nand存儲器5上的位置。
(3)頁面數:該值表示讀出數據的頁面的數。
(4)起始地址:該地址表示讀出數據的起始地址。
[讀出處理的次序]
參照圖39及圖40,表示由ssd3及主機2執行的數據讀出處理的次序。
如圖39所示,主機2參照地址變換表(即查找表lut45),將讀出對象的數據的lba變換成nand存儲器5的物理地址(步驟s71)。并且,主機2將包含該物理地址的讀出命令發送至ssd3。
ssd3的控制器4從該物理地址指定的區塊內的頁面讀出數據(步驟s72)。在該步驟s72中,控制器4執行圖40所示的處理。
即,如圖40所示,控制器4執行從物理地址指定的物理位置(某個區塊內的某個頁面)讀出數據的動作、及讀出數據的錯誤訂正動作(步驟s81)。并且,控制器4判定讀出數據是否包含ecc無法訂正的錯誤(步驟s82)。若讀出仍未變成可讀出狀態的頁面,則讀出數據包含ecc無法訂正的大量錯誤。
在讀出數據不含無法訂正的錯誤的情況下(步驟s82的否),則控制器4將該讀出數據傳輸至主機2,且將表示成功的命令完成回應傳輸至主機2(步驟s83)。
另一方面,在讀出數據包含無法訂正的錯誤的情況下(步驟s82的是),控制器4將表示錯誤的命令完成回應傳輸至主機2(步驟s84)。
[數據復制]
圖41表示ssd3執行的數據復制動作的例子。
ssd3的控制器4并非將復制源區塊內的所有數據復制到復制目標區塊,而是跳過復制源區塊內的指定頁面范圍內的無效數據,只將該頁面范圍內的有效數據復制到復制目標區塊內的指定頁面范圍。該數據復制動作如上所述是以垃圾回收為目的而執行。
在數據復制動作中,如上所述,控制器4自動跳過不含有效數據的無效頁面的復制。由此,主機2即便不以頁面單位個別地指定應復制的頁面,也能只將有效頁面復制到復制目標區塊。
此外,主機2利用復制命令不僅能指定復制源區塊及復制目標區塊,還能指定復制源區塊內的復制開始頁面及復制目標區塊內的傳輸開始頁面。由此,能夠執行將復制源區塊內的特定頁面群復制到復制目標區塊內的特定頁面群這樣的極細微的復制動作。另外,也可以指定多個復制源區塊。
而且,主機2也可以指定“到復制結束為止應復制的有效數據數”、或“到復制結束為止應檢測的無效數據數”的任一個作為數據復制的結束條件。
在指定“到復制結束為止應復制的有效數據數”作為數據復制動作的結束條件的情況下,持續進行數據復制動作直到向復制目標區塊復制所需數的有效數據為止。當向復制目標區塊復制了所需數的有效數據時,結束數據復制動作。例如,若指定一個區塊的數據數作為“到復制結束為止應復制的有效數據數”,能夠用從若干復制源區塊復制的有效數據寫滿復制目標區塊,且能夠將若干復制源區塊設為只包含無效數據的空閑區塊。另外,并非必須在一次數據復制動作中增加一個空閑區塊數,也可以在多次數據復制動作中增加一個空閑區塊數。因此,“到復制結束為止應復制的有效數據數”可為任意數。
在指定“到復制結束為止應檢測的無效數據數”作為數據復制動作的結束條件的情況下,持續數據復制動作指導跳過無效數據的復制的次數變成所需次數為止。當跳過無效數據的復制的次數變成所需次數時,結束數據復制動作。通常,選擇的若干復制源區塊分別是混雜了有效數據和無效數據的區塊。此外,這些選擇的若干復制源區塊所含的無效數據數的合計至少有一個區塊的數據數以上。因此,例如,若指定一個區塊的數據數作為“到復制結束為止應檢測的無效數據數”,則到復制動作結束為止,能夠將至少一個復制源區塊設為只包含無效數據的空閑區塊。如上所述,可以在多次數據復制動作中增加一個空閑區塊數,因此“到復制結束為止應檢測的無效數據數”也可為任意數。
圖41中,為了簡化說明,假定利用來自主機2的數據復制命令而指定以下參數的情況。
(1)復制源區塊=區塊b0
(2)復制源開始頁面=p31
(3)復制目標區塊=區塊b10
(4)傳輸目標開始頁面=p11
(5)有效/無效位圖=位圖數據81
(6)到復制結束為止應復制的有效數據數=3
位圖數據81表示復制對象范圍內的各頁面的數據的有效/無效。控制器4首先判定復制源區塊b0的復制開始頁面p31的數據的有效/無效。在圖41的情況下,頁面p31的數據有效。因此,控制器4從頁面p31讀出數據,并將該讀出的數據復制到復制目標區塊b10的傳輸目標開始頁面p11。復制到復制目標區塊b10的有效數據數變成1。
控制器4判定復制源區塊b0的頁面p32的數據的有效/無效。在圖41的情況下,頁面p32的數據無效。因此,控制器4跳過頁面p32的數據的復制。復制到復制目標區塊b10的有效數據數維持1。
控制器4判定復制源區塊b0的頁面p33的數據的有效/無效。在圖41的情況下,頁面p33的數據有效。因此,控制器4從頁面p33讀出數據,并將該讀出的數據復制到復制目標區塊b10的頁面p12。復制到復制目標區塊b10的有效數據數變成2。
控制器4判定復制源區塊b0的頁面p34的數據的有效/無效。在圖41的情況下,頁面p34的數據無效。因此,控制器4跳過頁面p34的數據的復制。復制到復制目標區塊b10的有效數據數維持2。
控制器4判定復制源區塊b0的頁面p35的數據的有效/無效。在圖41的情況下,頁面p35的數據有效。因此,控制器4從頁面p35讀出數據,并將該讀出的數據復制到復制目標區塊b10的頁面p13。復制到復制目標區塊b10的有效數據數變成3。由于復制到復制目標區塊b10的有效數據數達到結束條件(到復制結束為止應復制的有效數據數),因此結束復制動作。
圖42表示指定應檢測的無效數據數作為結束條件的情況下的數據復制動作的例子。
圖42中,假定利用來自主機2的數據復制命令指定以下參數的情況。
(1)復制源區塊=區塊b0
(2)復制源開始頁面=p31
(3)復制目標區塊=區塊b10
(4)傳輸目標開始頁面=p11
(5)有效/無效位圖=位圖數據81
(6)到復制結束為止應檢測的無效數據數=3
控制器4首先判定復制源區塊b0的復制開始頁面p31的數據的有效/無效。在圖42的情況下,頁面p31的數據有效。因此,控制器4從頁面p31讀出數據,并將該讀出的數據復制到復制目標區塊b10的傳輸目標開始頁面p11。
控制器4判定復制源區塊b0的頁面p32的數據的有效/無效。在圖42的情況下,頁面p32的數據無效。因此,控制器4跳過頁面p32的數據的復制。檢測的無效數據數(即跳過復制的數據的數)變成1。
控制器4判定復制源區塊b0的頁面p33的數據的有效/無效。在圖42的情況下,頁面p33的數據有效。因此,控制器4從頁面p33讀出數據,并將該讀出的數據復制到復制目標區塊b10的頁面p12。檢測的無效數據數維持1。
控制器4判定復制源區塊b0的頁面p34的數據的有效/無效。在圖42的情況下,頁面p34的數據無效。因此,控制器4跳過頁面p34的數據的復制。檢測的無效數據數變成2。
控制器4判定復制源區塊b0的頁面p35的數據的有效/無效。在圖42的情況下,頁面p35的數據有效。因此,控制器4從頁面p35讀出數據,并將該讀出的數據復制到復制目標區塊b10的頁面p13。檢測的無效數據數維持2。
控制器4判定復制源區塊b0的頁面p36的數據的有效/無效。在圖42的情況下,頁面p36的數據有效。因此,控制器4從頁面p36讀出數據,并將該讀出的數據復制到復制目標區塊b10的頁面p14。檢測的無效數據數維持2。
控制器4判定復制源區塊b0的頁面p37的數據的有效/無效。在圖42的情況下,頁面p37的數據無效。因此,控制器4跳過頁面p37的數據的復制。檢測的無效數據數變成3。由于檢測的無效數據數達到結束條件(到復制結束為止應檢測的無效數據數),因此結束復制動作。
圖43表示指定多個復制源區塊且指定應復制的有效數據數作為結束條件的情況下的數據復制動作的例子。
于此,為了簡化圖示,假定1區塊所含的頁面數為3、到復制結束為止應復制的有效數據數為3的情況。位圖數據81a、81b是與區塊b11、b20分別對應的有效/無效位圖。
區塊b11、b20是由來自主機2的復制命令指定的復制源區塊,區塊b30是由復制命令指定的復制目標區塊。
控制器4首先判定復制源區塊b11的復制開始頁面p0的數據的有效/無效。在圖43的情況下,頁面p0的數據有效。因此,控制器4從頁面p0讀出數據,并將該讀出的數據復制到復制目標區塊b30的傳輸目標開始頁面p0。復制到復制目標區塊b30的有效數據數變成1。
控制器4判定復制源區塊b11的頁面p1的數據的有效/無效。在圖43的情況下,頁面p1的數據有效。因此,控制器4從頁面p1讀出數據,并將該讀出的數據復制到復制目標區塊b30的頁面p1。復制到復制目標區塊b30的有效數據數變成2。
控制器4判定復制源區塊b11的頁面p2的數據的有效/無效。在圖43的情況下,頁面p2的數據無效。因此,控制器4跳過頁面p2的數據的復制。復制到復制目標區塊b30的有效數據數維持2。
控制器4判定下一復制源區塊b20的頁面p0的數據的有效/無效。在圖43的情況下,復制源區塊b20的頁面p0的數據有效。因此,控制器4從復制源區塊b20的頁面p0讀出數據,并將該讀出的數據復制到復制目標區塊b30的頁面p2。復制到復制目標區塊b30的有效數據數變成3。由于復制到復制目標區塊b30的有效數據數達到結束條件(到復制結束為止應復制的有效數據數),因此結束復制動作。
控制器4按復制的有效數據將表示有效數據id及儲存該有效數據的復制目標區塊內的位置(復制目標位置)的數據復制信息,作為復制命令的命令完成回應通知給主機2。基于該數據復制信息,主機2更新地址變換表(lut45),將各個復制的數據映射到正確的物理地址。區塊b11的頁面p0的數據、頁面p1的數據無效化。由此,區塊b11變成不含有效數據的空閑區塊。同樣地,區塊b20的頁面p0的數據也無效化。
而且,控制器4將復制源區塊b20的頁面p1作為下一次的復制源開始頁面進行決定,并且,將下一次的復制源開始頁面的物理地址(復制源區塊b20的區塊地址、頁面p1的頁面地址)通知給主機2。
而且,控制器4特定出表示因數據復制動作復制了有效數據的復制目標區塊的頁面群之中,保持可讀出數據的最新的頁面的頁面地址(最新頁面地址),并將特定出的最新頁面地址通知給主機2。由此,主機2能夠獲知復制目標區塊b30內的頁面群中的可讀出的最后的頁面。
圖44表示指定多個復制源區塊且指定應檢測的無效數據數作為結束條件的情況下的數據復制動作的例子。
于此,為了簡化圖示,假定1區塊所含的頁面數為3、到復制結束為止應檢測的無效數據數為3的情況。位圖數據81a、81b、81c是與區塊b11、b20、b25分別對應的有效/無效位圖。
區塊b11、b20、b25是由來自主機2的復制命令指定的復制源區塊,區塊b30、b31是由復制命令指定的復制目標區塊。
控制器4首先判定復制源區塊b11的復制開始頁面p0的數據的有效/無效。在圖44的情況下,頁面p0的數據有效。因此,控制器4從頁面p0讀出數據,并將該讀出的數據復制到復制目標區塊b30的傳輸目標開始頁面p0。
控制器4判定復制源區塊b11的頁面p1的數據的有效/無效。在圖44的情況下,頁面p1的數據有效。因此,控制器4從頁面p1讀出數據,并將該讀出的數據復制到復制目標區塊b30的頁面p1。
控制器4判定復制源區塊b11的頁面p2的數據的有效/無效。在圖44的情況下,頁面p2的數據無效。因此,控制器4跳過頁面p2的數據的復制。檢測的無效數據數(即跳過復制的數據的數)變成1。
控制器4判定下一復制源區塊b20的頁面p0的數據的有效/無效。在圖44的情況下,復制源區塊b20的頁面p0的數據有效。因此,控制器4從復制源區塊b20的頁面p0讀出數據,并將該讀出的數據復制到復制目標區塊b30的頁面p2。由于檢測的無效數據數仍未達到結束條件,因此繼續進行復制動作。
控制器4判定復制源區塊b20的頁面p1的數據的有效/無效。在圖44的情況下,頁面p1的數據無效。因此,控制器4跳過復制源區塊b20的頁面p1的數據的復制。檢測的無效數據數變成2。
控制器4判定復制源區塊b20的頁面p2的數據的有效/無效。在圖44的情況下,復制源區塊b20的頁面p2的數據有效。因此,控制器4從復制源區塊b20的頁面p2讀出數據,并將該讀出的數據復制到復制目標區塊b31的頁面p0。
控制器4判定下一復制源區塊b25的頁面p0的數據的有效/無效。在圖44的情況下,復制源區塊b25的頁面p0的數據無效。因此,控制器4跳過復制源區塊b25的頁面p0的數據的復制。檢測的無效數據數變成3。由于檢測的無效數據數達到結束條件(到復制結束為止應檢測的有效數據數),因此結束復制動作。
控制器4按各復制數據將表示數據id及復制目標位置的數據復制信息,作為復制命令的命令完成回應通知給主機2。基于該數據復制信息,主機2更新地址變換表(lut45),并將各個復制的數據映射至正確的物理地址。區塊b11的頁面p0的數據、頁面p1的數據無效化。由此,區塊b11變成不含有效數據的空閑區塊。同樣地,區塊b20的頁面p0的數據、頁面p2的數據也無效化。由此,區塊b11、b20變成不含有效數據的空閑區塊。
而且,控制器4將復制源區塊b25的頁面p1作為下一次的復制源開始頁面進行決定,并且,將下一次的復制源開始頁面的物理地址(復制源區塊b25的區塊地址、頁面p1的頁面地址)通知給主機2。
而且,控制器4特定出保持可讀出數據的復制目標區塊b30內的最新頁面地址及保持可讀出數據的復制目標區塊b31內的最新頁面地址,并將這些最新頁面地址通知給主機2。由此,主機2能夠獲知各復制目標區塊內的頁面群中的可讀出的最后的頁面。
圖45表示數據大小比頁面大小小且指定應復制的有效數據數作為結束條件的情況下的數據復制動作。
于此,作為一例,假定頁面大小為16k字節、數據大小為4k字節的情況。該數據大小對應于用來管理各lba與各物理地址之間的映射的所述管理大小。在復制源區塊b0的復制開始頁面p31,儲存有分別具有4k字節的數據大小的數據d1、數據d2、數據d3、數據d4。在各數據的復制源區塊b0的下一頁面p32,儲存有分別具有4k字節的數據大小的數據d5、數據d6、數據d7、數據d8。位圖數據81表示數據d1、數據d2、數據d3、數據d4、數據d5、數據d6、數據d7、數據d8、…各自的有效/無效。
這樣,在數據大小比頁面大小小的情況下,復制源區塊b0的各頁面包含由位圖數據81分別表示其有效/無效的多個數據。
控制器4(1)從包含一個以上的有效數據的復制源區塊b0內的頁面分別以頁面單位讀出數據,(2)從讀出數據抽取有效數據,由此準備與1頁面的頁面大小對應的數的有效數據,(3)將準備的與1頁面的頁面大小對應的數的有效數據從復制目標區塊b10的復制目標區域(從傳輸目標開始頁面開始的區域)以頁面單位寫入,由此將有效數據復制到復制目標區域且跳過無效數據的復制。并且,控制器4在復制到復制目標區域的有效數據的數為到復制結束為止應復制的有效數據的數以上的情況下,或跳過復制的無效數據的數為到復制結束為止應檢測的無效數據的數以上的情況下,結束數據復制動作。
也就是說,關于包含有效數據的各個頁面,控制器4從這些頁面以頁面單位依次讀出數據。若準備了1頁面的有效數據(于此為4個有效數據),則控制器4將該1頁面的有效數據以頁面單位寫入至復制目標區塊。由此,能夠只將有效數據以這些有效數據與頁面單位對準的狀態效率良好地復制到復制目標區塊。在1頁面的有效數據齊備之前沒有復制源區塊的數據的情況下,控制器4向當前準備的有效數據填充虛擬數據,并將由此獲得的1頁面的數據寫入至復制目標區塊。
更詳細來說,執行以下復制動作。以下,為了簡化圖示,假定到復制結束為止應復制的有效數據數為2的情況。
控制器4首先判定復制源區塊b0的復制開始頁面p31是否包含有效數據。在圖45的情況下,頁面p31包含有效數據d1、d3。因此,控制器4從頁面p31讀出1頁面的數據(d1~d4)。讀出數據可以臨時儲存在復制緩沖器32。
由于讀出的有效數據的數只有d1、d3這2個,與1頁面的大小對應的4個有效數據并未齊備,因此控制器4繼續執行從復制源區塊b0以頁面單位讀出數據的處理。
控制器4判定復制源區塊b0的頁面p32是否包含有效數據。在圖45的情況下,頁面p32包含有效數據d5、d6。因此,控制器4從頁面p32讀出1頁面的數據(d5~d8)。讀出數據可以臨時儲存在復制緩沖器32。
控制器4從頁面p31讀出的1頁面的數據中抽取有效數據d1、d3,從頁面p32讀出的1頁面的數據中抽取有效數據d5、d6,產生1頁面的有效數據(d1、d3、d5、d6)。并且,控制器4將1頁面的有效數據(d1、d3、d5、d6)復制到復制目標區塊b10的傳輸目標開始頁面p11。由此,跳過無效數據d2、d3、d7、d8的復制,只將有效數據以頁面單位復制到復制目標區塊b10。這樣,使有效數據與頁面單位對準的處理優先執行,在有效數據與頁面單位對準后執行結束條件的判定。
復制到復制目標區塊b10的有效數據數變成4。復制到復制目標區塊b10的有效數據數4為結束條件指定的有效數據數(于此為2)以上,因此結束復制動作。
利用以上的復制動作,即便在各個數據的大小比頁面大小小的情況下,也能將有效數據以這些有效數據與頁面單位對準的狀態效率良好地復制到復制目標區塊。
控制器4按各復制數據將表示數據id與復制目標位置的數據復制信息,作為復制命令的命令完成回應通知給主機2。復制目標位置也可以用區塊地址、頁面地址、及頁面內偏移來表現。與某個4k字節的數據對應的頁面內偏移是表示儲存該4k字節的數據的頁面內的偏移位置的頁面內地址。基于該數據復制信息,主機2更新地址變換表(lut45),將各個復制數據(于此為d1、d3、d5、d6)映射至正確的物理地址。區塊b0的頁面p31的數據d1、d3、頁面p32的數據d5、d6無效化。
而且,控制器4將復制源區塊b0的頁面p33作為下一次的復制源開始頁面進行決定,并且,將下一次的復制源開始頁面的物理地址(復制源區塊b0的區塊地址、頁面p33的頁面地址)通知給主機2。
而且,控制器4特定出保持可讀出數據的復制目標區塊b10內的最新頁面地址,并將該最新頁面地址通知給主機2。
圖46表示數據大小比頁面大小小且指定應檢測的無效數據數作為結束條件的情況下的數據復制動作。以下,假定到復制結束為止應檢測的無效數據數為2的情況。
控制器4首先判定復制源區塊b0的復制開始頁面p31是否包含有效數據。在圖46的情況下,頁面p31包含有效數據d1、d3。因此,控制器4從頁面p31讀出1頁面的數據(d1~d4)。讀出數據可以臨時儲存在復制緩沖器32。
由于讀出的1頁面的數據(d1~d4)所含的無效數據數只有d2、d4這2個,因此控制器4繼續執行從復制源區塊b0以頁面單位讀出數據的處理。
控制器4判定復制源區塊b0的頁面p32是否包含有效數據。在圖46的情況下,頁面p32包含有效數據d5、d6。因此,控制器4從頁面p32讀出1頁面的數據(d5~d8)。讀出數據可以臨時儲存在復制緩沖器32。
控制器4從頁面p31讀出的1頁面的數據中抽取有效數據d1、d3,從頁面p32讀出的1頁面的數據中抽取有效數據d5、d6,產生1頁面的有效數據(d1、d3、d5、d6)。并且,控制器4將1頁面的有效數據(d1、d3、d5、d6)復制到復制目標區塊b10的傳輸目標開始頁面p11。由此,跳過無效數據d2、d4、d7、d8的復制,只將有效數據以頁面單位復制到復制目標區塊b10。
檢測的無效數據數、即跳過復制的無效數據數變成4。由于檢測的無效數據數4為結束條件指定的無效數據數(于此為2)以上,因此結束復制動作。
[數據復制命令]
圖47表示應用于ssd3的數據復制命令的輸入參數。數據復制命令包含以下輸入參數。
(1)復制源區塊地址(復制源區塊地址列表):該參數值表示復制源區塊的區塊地址。復制源區塊的區塊地址也能由虛擬區塊地址及虛擬區塊內區塊編號來指定。復制源區塊地址列表包含多個復制源區塊各自的區塊地址。也就是說,主機2能夠指定一個以上的復制源區塊。
(2)復制源區塊內的復制開始位置:該參數值表示應復制數據的復制源區塊內的開始位置(復制源開始頁面)。在指定了多個復制源區塊的情況下,可以只有第1個復制源區塊內的復制開始位置由該參數值指定。
(3)復制目標區塊地址:復制目標區塊地址表示復制目標區塊的區塊地址。復制目標區塊的區塊地址也能由虛擬區塊地址及虛擬區塊內區塊編號來指定。
(4)復制目標區塊內的開始位置:復制目標區塊內的開始位置表示應傳輸數據的復制目標區塊內的開始位置(傳輸目標開始頁面)。
(5)有效/無效位圖:有效/無效位圖是表示復制源區塊內的有效數據及無效數據的配置的信息(位圖數據)。
(6)到復制結束為止應復制的有效數據數:該參數值指定應傳輸即應復制到復制目標區塊的數據數(例頁面數)。該參數值作為復制動作的結束條件使用。數據復制動作一邊跳過無效數據的復制一邊只復制有效數據。
(7)到復制結束為止應檢測的無效數據數:該參數值也能作為復制動作的結束條件使用。主機2在一個復制命令中只能指定(6)的結束條件或(7)的結束條件的任一個。
(8)數據的大小(數據大小)
此外,數據復制命令可以包含處理優先級等其他輸入參數值。
圖48表示數據復制命令的輸出參數。數據復制命令包含以下輸出參數。
(1)到復制結束為止檢測的無效數據數
(2)復制到復制目標區塊的數據的總數:該參數值表示實際復制到復制目標區塊的數據的總數。在指定到復制結束為止應檢測的無效數據數作為結束條件的情況下,實際復制到復制目標區塊的數據的總數不固定。因此,該參數值在指定到復制結束為止應檢測的無效數據數作為結束條件的情況下有用。
(3)復制到復制目標區塊的數據的標識符與復制目標的記錄位置的組:該參數值表示將哪個有效數據復制到復制目標區塊內的何處。
(4)下一次應開始復制的數據的位置:該參數值表示下一次的復制中的復制源區塊內的復制開始位置。
(5)可讀出的最新頁面地址:該參數值表示復制目標區塊內保持可讀出數據的最新頁面地址。
[數據復制處理的次序]
圖49的流程圖表示在指定應復制的有效數據數作為結束條件的情況下的數據復制動作的次序。
控制器4首先將數據復制命令指定的復制源區塊內的復制開始位置(復制源開始頁面)設定為當前復制對象頁面。并且,控制器4基于位圖數據判定當前復制對象頁面是否為有效數據(步驟s91)。
若當前復制對象頁面為無效數據(步驟s91的否),則控制器4跳過當前復制對象頁面的復制動作(步驟s92),將當前復制對象頁面變更為下一頁面(步驟s93)。
若當前復制對象頁面為有效數據(步驟s91的是),則控制器4從當前復制對象頁面讀出該有效數據(步驟s94),并將該讀出的有效數據寫入至復制目標區塊的傳輸目標開始頁面(步驟s95)。控制器4更新復制的有效數據數(步驟s96),并判定復制的有效數據數是否達到應復制的有效數據數(步驟s97)。
若復制的有效數據數未達到應復制的有效數據數(步驟s97的否),則控制器4將當前復制對象頁面變更為下一頁面(步驟s98),然后再次執行步驟s91~s97的處理。
若復制的有效數據數達到應復制的有效數據數(步驟s97的是),則控制器4執行結束處理(步驟s99)。在步驟s99中,控制器4創建返回值的數據,并將包含返回值的數據的命令完成回應發送至主機2。
圖50的流程圖表示指定應檢測的無效數據數作為結束條件的情況下的數據復制動作的次序。
控制器4首先將數據復制命令指定的復制源區塊內的復制開始位置(復制源開始頁面)設定為當前復制對象頁面。并且,控制器4基于位圖數據,判定當前復制對象頁面是否為有效數據(步驟s101)。
若當前復制對象頁面為有效數據(步驟s101的是),則控制器4從當前復制對象頁面讀出該有效數據(步驟s102),并將該讀出的有效數據寫入至復制目標區塊的傳輸目標開始頁面(步驟s103)。控制器4將當前復制對象頁面變更為下一頁面(步驟s104),并進入步驟s101的處理。
若當前復制對象頁面為無效數據(步驟s101的否),則控制器4跳過當前復制對象頁面的復制(步驟s105),更新檢測的無效數據數(步驟s106),并判定檢測的無效數據數是否達到應檢測的無效數據數(步驟s107)。
若檢測的無效數據數未達到應檢測的無效數據數(步驟s107的否),則控制器4將當前復制對象頁面變更為下一頁面(步驟s108),進入步驟s101的處理。
若檢測的無效數據數達到應檢測的無效數據數(步驟s107的是),則控制器4執行結束處理(步驟s109)。在步驟s109中,控制器4創建返回值的數據,并將包含返回值的數據的命令完成回應發送至主機2。
圖51的流程圖表示數據大小比頁面大小小且指定應復制的有效數據數作為結束條件的情況下的數據復制動作的次序。
控制器4首先將數據復制命令指定的復制源區塊內的復制開始位置(復制源開始頁面)設定為當前復制對象頁面。并且,控制器4基于位圖數據判定當前復制對象頁面是否包含至少一個有效數據(步驟s111)。
若當前復制對象頁面為只包含無效數據的頁面(步驟s111的否),則控制器4跳過當前復制對象頁面的復制動作(步驟s112),將當前復制對象頁面變更為下一頁面(步驟s113),并進入步驟s111的處理。
若當前復制對象頁面為包含至少一個有效數據的頁面(步驟s111的是),則控制器4以頁面單位讀出當前復制對象頁面內的數據,并將讀出的數據儲存在復制緩沖器32(步驟s114)。控制器4從讀出的數據只抽取有效數據,由此跳過無效數據,準備與頁面大小對準的有效數據的組(步驟s115)。控制器4判定是否能夠準備與頁面大小對準的有效數據的組(具有1頁面的大小的有效數據)(步驟s116)。
若準備的有效數據的大小比1頁面的大小少(步驟s116的否),則控制器4將當前復制對象頁面變更為下一頁面(步驟s117),并在此執行步驟s111~s115的處理。
若能夠準備與頁面大小對準的有效數據的組(具有1頁面的大小的有效數據)(步驟s116的是),則控制器4將該具有1頁面的大小的有效數據寫入至復制目標區塊的傳輸目標開始頁面(步驟s118)。控制器4更新復制的有效數據數(步驟s119),并判定復制的有效數據數是否變成應復制的有效數據數以上(步驟s120)。
若復制的有效數據數比應復制的有效數據數少(步驟s120的否),則控制器4將當前復制對象頁面變更為下一頁面(步驟s117),然后再次執行從步驟s111開始的處理。
若復制的有效數據數為應復制的有效數據數以上(步驟s120的是),則控制器4執行結束處理(步驟s121)。在步驟s121中,控制器4創建返回值的數據,并將包含返回值的數據的命令完成回應發送至主機2。
圖52的流程圖表示數據大小比頁面大小小且指定應檢測的無效數據數作為結束條件的情況下的數據復制動作的次序。
在圖52的處理中,代替圖51的步驟s119、s120,而執行步驟s131、s132的處理。
即,在將與頁面大小對準的有效數據的組(具有1頁面的大小的有效數據)寫入至復制目標區塊的傳輸目標開始頁面后(步驟s118),控制器4更新檢測的無效數據數(步驟131),并判定檢測的無效數據數是否為應檢測的無效數據數以上(步驟s132)。
若檢測的無效數據數比應檢測的無效數據數少(步驟s132的否),則控制器4將當前復制對象頁面變更為下一頁面(步驟s117),然后再次執行從步驟s111開始的處理。
若檢測的無效數據數為應檢測的無效數據數以上(步驟s132的是),則控制器4執行結束處理(步驟s121)。
[命名空間管理]
圖53表示ssd3的命名空間管理功能。
在ssd3中,能夠確保(預約)對nsid#1的命名空間指定的個數的區塊,同樣地,能夠確保(預約)對nsid#n的命名空間指定的個數的區塊。連接于主機2的用戶端終端51(用戶a)能夠使用nsid#1對ssd3進行存取(讀出、寫入、刪除),且連接于主機2的另一用戶端終端51(用戶b)能夠使用nsid#n對ssd3進行存取(讀出、寫入、刪除)。
以下,假定用戶a處理更新頻率高的數據,用戶b處理更新頻率低的數據的情況。這種情況下,在nsid#1的命名空間中有寫入擴增增加的可能性。寫入擴增(wa)是以如下方式定義。
wa=“寫入至ssd的數據的總量”/“因來自主機的寫入命令而寫入至ssd的數據的總量”
“寫入至ssd的數據的總量”相當于因來自主機的寫入命令而寫入的數據的總量與因垃圾回收(數據復制動作)等而內部寫入至ssd的數據的總量的和。
寫入擴增(wa)的增加會引起ssd3內的各區塊的刪除次數的增加。也就是說,寫入擴增(wa)越大則區塊的刪除次數越容易快速達到其刪除次數的上限值。結果,引起ssd3的耐久性及壽命的劣化。
因此,起因于向nsid#1的命名空間的寫入的ssd3的消耗度,比起因于向nsid#n的命名空間的寫入的ssd3的消耗度大。
ssd3的命名空間管理功能能夠按各個命名空間管理區塊(或虛擬區塊)的合計刪除次數,并將與主機2指定的特定的命名空間對應的合計刪除次數作為該特定的命名空間引起的ssd3的消耗度的指標,通知給主機2。nsid#1的合計刪除次數是由合計刪除次數計數器300-1計數,nsid#n的合計刪除次數是由合計刪除次數計數器300-n計數。某個nsid的合計刪除次數通過計數對分配給該nsid的區塊執行的刪除動作的次數而獲得。
利用該通知,主機2能夠評價各個命名空間對ssd3的消耗程度。結果,主機2能夠基于該評價結果,進行比如對合計刪除次數多的命名空間追加確保更多個數的區塊的對策。
例如,主機軟件可以針對nsid#1的命名空間,向ssd3請求超過與nsid#1的lba范圍對應的容量(用戶數據容量)的充分個數的區塊的確保。響應于該請求,ssd3的控制器4將指定個數的區塊確保用于nsid#1的命名空間。
在與nsid#1的lba范圍對應的容量為100g字節的情況下,主機軟件可以向ssd3請求相當于100g字節的個數的物理區塊的追加,而將相當于合計200g字節的個數的物理區塊確保用于nsid#1的命名空間。從200g字節減去用戶數據容量后的剩余100gb的物理資源作為nsid#1的命名空間的過量供給區域而發揮功能。
在另一實施方式中,主機軟件可以基于確保用于nsid#1的命名空間用的區塊的數、與對應于該命名空間的合計刪除次數,決定對正使用該命名空間的用戶a應收取的存儲使用費(租借費)。合計刪除次數越多,租借費設定得越高。
圖54表示ssd3的命名空間管理架構。
控制器4利用共通空閑區塊池90管理nand存儲器4的空閑區塊,將若干區塊從共通空閑區塊池90分配給nsid#1的命名空間。這些分配區塊用來儲存與nsid#1的命名空間關聯的數據。即,控制器將若干區塊作為用來儲存與nsid#1的命名空間關聯的數據的區塊而分配給nsid#1的命名空間。響應于來自主機2的用來對這些區塊的一個進行讀出、寫入或刪除的命令的接收,控制器4對這些區塊的一個執行讀出動作、寫入動作、或刪除動作。控制器4計數對這些區塊執行的刪除動作的次數。控制器4響應于來自主機2的請求取得與nsid#1的命名空間關聯的刪除次數的命令的接收,將刪除動作的次數的計數值(nsid#1的合計刪除次數)通知給主機2。關于nsid#n的命名空間,控制器4也執行與對nsid#1的命名空間的處理相同的處理。
以下,說明命名空間管理架構。
在ssd3中,對每個命名空間設有獨立的虛擬閃存池。虛擬閃存池81用來管理對nsid#1的命名空間用確保(預約)的物理資源量(確保的區塊的總數)。同樣地,虛擬閃存池82用來管理對nsid#n的命名空間用確保(預約)的物理資源量(確保的區塊的總數)。這種情況下,無須考慮應確保(預約)哪個區塊,利用各虛擬閃存池只管理應確保(預約)的區塊的個數即可。應確保的區塊的個數在物理nand存取管理api21中為物理區塊的個數,在虛擬nand存取管理api22中為虛擬區塊的個數。
各空閑區塊是利用由多個命名空間共有的共通空閑區塊池90進行管理。從各命名空間的虛擬閃存池返還的區塊利用共通空閑區塊池90進行管理。
損耗平均是在從共通空閑區塊池90向各命名空間分配新的區塊(例如寫入對象區塊、或寫入對象虛擬區塊)時執行。在控制器4從主機2接收包含特定的nsid的區塊分配命令(例如所述區塊分配、刪除命令)時,控制器4從共通空閑區塊池90選擇一個空閑區塊。選擇的空閑區塊在使用物理nand存取管理api21的情況下為物理區塊,在使用虛擬nand存取管理api22的情況下為虛擬區塊。控制器4將該選擇的區塊分配給與該特定的nsid對應的命名空間,且從確保該命名空間用的區塊的總數減去1。在從共通空閑區塊池90選擇空閑區塊時,控制器4也可以選擇最小刪除次數的區塊(最小刪除次數的物理區塊或最小刪除次數的虛擬區塊)。由此,能夠將從nsid#n的命名空間返還的刪除次數少的區塊分配給頻繁覆寫數據的nsid#1的命名空間,因此能夠實現命名空間之間的損耗平均。
控制器4將確保nsid#1用的區塊的總數、分配給nsid#1用的區塊地址的列表、及nsid#1的合計刪除次數等,作為與nsid#1的命名空間對應的管理信息進行管理。nsid#1的合計刪除次數是通過計數對分配給nsid#1的各區塊執行的刪除動作的次數而獲得。
nsid#1的命名空間管理也可以如下方式執行。以下,例示物理nand存取管理api21用的命名空間管理。
在控制器4從主機2接收包含nsid#1的命名空間分配命令時,控制器4將由命名空間分配命令指定的個數的區塊確保用于nsid#1。確保用于nsid#1的區塊的總數是利用虛擬閃存池81進行管理。能夠分配給nsid#1的命名空間的區塊數的上限被限制為確保用于nsid#1用的區塊的總數以下。
在控制器4從主機2接收包含nsid#1的區塊分配、刪除命令時,控制器4從共通空閑區塊池90選擇最小刪除次數的區塊,將該選擇的空閑區塊分配給nsid#1的命名空間用,刪除該分配的區塊,并將該分配且刪除的區塊的物理地址通知給主機2,且從利用虛擬閃存池81管理的區塊的總數、即能夠分配給nsid#1的剩余區塊數減去1。能夠分配給nsid#1的剩余區塊數表示能夠分配給nsid#1的命名空間用的區塊的當前個數。該分配及刪除的區塊能夠作為例如nsid#1用的寫入對象區塊91使用。
在若利用虛擬閃存池81管理的區塊的當前總數(剩余區塊數)為零的情況下,即便從主機2接收包含nsid#1的區塊分配、刪除命令,控制器4也不會對nsid#1的命名空間分配新的區塊。
在控制器4從主機2接收包含nsid#1的寫入命令時,控制器4將寫入命令指定的數據寫入至寫入對象區塊91。寫入命令可以包含應寫入數據的物理地址(區塊地址與頁面地址雙方)(直接地址指定模式),也可以只包含應寫入數據的區塊地址(自動地址產生模式),或者也可以只包含nsid#1。
在寫入命令只包含nsid#1的情況下,與自動地址產生模式的情況同樣地,由控制器4自動產生應寫入數據的物理地址。這種情況下,由寫入命令指定的數據按照當前寫入對象區塊91內的頁面p0~p255的順序依次被寫入。控制器4將寫入數據的物理地址(區塊地址與頁面地址雙方)通知給主機2。
在當前寫入對象區塊91寫滿數據時,可以將該寫入對象區塊91移動到活動區塊池92。活動區塊池92管理由nsid#1當前使用的區塊(活動區塊)的列表。在當前寫入對象區塊91寫滿數據時,主機2可以向ssd3發送包含nsid#1的區塊分配、刪除命令,請求新的寫入對象區塊的分配、刪除。
主機2能夠將活動區塊池92內的任意區塊讀出或刪除。此外,主機2能夠將區塊返還命令發送至ssd3,向ssd3請求將活動區塊池92內的區塊返還至共通空閑區塊池90。例如,返還刪除的區塊、只包含因數據更新而無效化的數據的區塊、或者只包含因所述數據復制動作等而無效化的數據的區塊等。控制器4響應于區塊返還命令的接收,將該區塊返還命令指定的區塊移動至共通空閑區塊池90,且將利用虛擬閃存池81管理的區塊的總數(剩余區塊數)增加1。
控制器4也管理與nsid#n的命名空間對應的管理信息、確保的區塊的總數、分配的區塊地址的列表、及nsid#n的合計刪除次數等。
nsid#n的命名空間管理是以如下方式執行。
在控制器4從主機2接收包含nsid#n的命名空間分配命令時,控制器4將由命名空間分配命令指定的個數的區塊確保用于nsid#n。確保用于nsid#n的區塊的總數是利用虛擬閃存池82進行管理。
在控制器4從主機2接收包含nsid#n的區塊分配、刪除命令時,控制器4從共通空閑區塊池90選擇最小刪除次數的區塊,將該選擇的空閑區塊分配給nsid#n的命名空間用,并刪除該分配的區塊,且從利用虛擬閃存池82管理的區塊的總數、即能夠分配給nsid#n的剩余區塊數減去1。該分配及刪除的區塊能夠作為例如nsid#n用的寫入對象區塊93使用。
在若利用虛擬閃存池82管理的區塊的當前總數(剩余區塊數)為零的情況下,即便從主機2接收包含nsid#n的區塊分配、刪除命令,控制器4也不會對nsid#n的命名空間分配新的區塊。
在控制器4從主機2接收包含nsid#n的寫入命令時,控制器4將寫入命令指定的數據寫入至寫入對象區塊93。寫入命令可包含應寫入數據的物理地址(區塊地址與頁面地址雙方)(直接地址指定模式),也可只包含應寫入數據的區塊地址(自動地址產生模式),或者還可以只包含nsid#n。
在寫入命令只包含nsid#n的情況下,與自動地址產生模式的情況同樣地,由控制器4自動產生應寫入數據的物理地址。這種情況下,由寫入命令指定的數據依次寫入至當前寫入對象區塊93內的頁面p0~p255。控制器4將寫入數據的物理地址(區塊地址與頁面地址雙方)通知給主機2。
在當前寫入對象區塊93寫滿數據時,可以將該寫入對象區塊93移動至活動區塊池94。活動區塊池94管理由nsid#n當前使用的區塊的列表。在當前寫入對象區塊93寫滿數據時,主機2可以將包含nsid#n的區塊分配、刪除命令發送至ssd3,請求新的寫入對象區塊的分配、刪除。
主機2能夠將活動區塊池94內的任意區塊讀出或刪除。此外,主機2能夠將區塊返還命令發送至ssd3,向ssd3請求活動區塊池94內的區塊的返還。控制器4響應于區塊返還命令的接收,將該區塊返還命令指定的區塊移動至共通空閑區塊池90,并將利用虛擬閃存池82管理的區塊的總數(剩余區塊數)增加1。
虛擬nand存取管理api22用的命名空間管理也能夠按照與物理nand存取管理api21用的命名空間管理相同的次序執行。在虛擬nand存取管理api22用的命名空間管理中,可以代替管理確保的區塊的個數,而管理確保的虛擬區塊的個數,代替管理分配的區塊地址的列表,而管理分配的虛擬區塊地址的列表。
此外,在虛擬nand存取管理api22用的命名空間管理中,可以將通過計數對分配給nsid#1的虛擬區塊執行的刪除動作的次數而獲得的計數值作為nsid#1的合計刪除次數進行管理,也可以將通過計數對分配給nsid#n的虛擬區塊執行的刪除動作的次數而獲得的計數值作為nsid#n的合計刪除次數進行管理。
[命名空間分配命令]
圖55表示命名空間分配命令。命名空間分配命令是向ssd3請求確保(或追加)由該命名空間分配命令指定的數的區塊。
命名空間分配命令包含以下輸入參數。
(1)nsid:該輸入參數值表示對象命名空間的標識符(id)。
(2)物理資源量:該物理資源量表示應確保的區塊的數。在物理nand存取管理api21中,應確保的區塊的數是以區塊(物理區塊)的粒度指定,在虛擬nand存取管理api22中,應確保的區塊的數是以虛擬區塊(構成一個虛擬區塊的多個區塊)的粒度指定。
此外,命名空間分配命令還可以包含表示處理優先級的輸入參數。
命名空間分配命令包含以下輸出參數。
(1)物理資源量:該物理資源量表示確保的區塊的數。在物理nand存取管理api21中,確保的區塊的數是以區塊(物理區塊)的粒度表示,在虛擬nand存取管理api22中,確保的區塊的數是以虛擬區塊(構成一個虛擬區塊的多個區塊)的粒度表示。
[命名空間分配處理的次序]
圖56的流程圖表示ssd3執行的命名空間分配處理的次序。
ssd3的控制器4從主機2接收命名空間分配命令(步驟s141)。基于共通空閑區塊池90內的剩余區塊的個數,判定是否能夠確保由命名空間分配命令內的輸入參數(物理資源量)指定的個數的區塊(步驟s142)。如上所述,在物理nand存取管理api21中,應確保的區塊的數是以區塊(物理區塊)的粒度指定,在虛擬nand存取管理api22中,應確保的區塊的數是以虛擬區塊(構成一個虛擬區塊的多個區塊)的粒度指定。
若剩余區塊(或剩余虛擬區塊)的個數為指定個數以上(步驟s142的是),則控制器4對由命名空間分配命令指定的nsid的命名空間確保指定個數的區塊(或虛擬區塊)(步驟s143),然后將包含表示確保的區塊(或虛擬區塊)的個數的輸出參數的命令完成回應發送至主機2(步驟s144)。
若剩余區塊(或剩余虛擬區塊)的個數比指定個數少(步驟s142的否),則控制器4向主機2通知錯誤(步驟s145)。得到錯誤報告的主機2可以變更應確保的區塊(或虛擬區塊)的個數。
[命名空間用的區塊分配、刪除命令]
圖57表示命名空間用的區塊分配、刪除命令。
命名空間用的區塊分配、刪除命令包含以下輸入參數。
(1)處理優先級:處理優先級表示該命令的優先級。
(2)nsid:nsid表示應分配區塊(或虛擬區塊)的命名空間的id。
命名空間用的區塊分配、刪除命令包含以下輸出參數。
(1)結束狀態:向主機2返回表示區塊分配、刪除命令的成功或錯誤的結束狀態。
(2)區塊地址:向主機2返回分配的區塊的區塊地址(或分配的虛擬區塊的虛擬區塊地址)。
(3)剩余區塊數:向主機2返回確保用于該nsid用的剩余區塊數(或剩余虛擬區塊的數)。
[命名空間用的區塊分配、刪除處理的次序]
圖58的流程圖表示由ssd3執行的區塊分配、刪除處理的次序。于此,例示說明物理nand存取管理api21用的區塊分配、刪除處理。
ssd3的控制器4從主機2接收包含nsid的區塊分配、刪除命令(步驟s151)。控制器4判定是否有該nsid用的剩余區塊(步驟s152)。
若有該nsid用的剩余區塊(步驟s152的是),則控制器4從共通空閑區塊池90分配一個區塊作為指定的nsid用的寫入對象區塊,并自動刪除分配的區塊(步驟s152)。控制器4從指定的nsid用的剩余區塊數減去1(步驟s154)。控制器4更新與指定的nsid對應的合計刪除次數(步驟s155)。在步驟s155中,控制器4將與該指定的nsid對應的合計刪除次數增加1。并且,控制器4產生返回值(輸出參數),并將包含返回值的命令完成回應發送至主機2(步驟s156)。
另一方面,若無該nsid用的剩余區塊(步驟s152的否),則控制器4將包含表示因確保該nsid用的剩余區塊數為零所以無法分配新區塊的錯誤狀態的命令完成回應,發送至主機2(步驟s157)。
在虛擬nand存取管理api22用的區塊分配、刪除處理中,控制器4判定是否有該nsid用的剩余虛擬區塊(步驟s152)。
若有該nsid用的剩余虛擬區塊(步驟s152的是),則控制器4從共通空閑區塊池90分配一個虛擬區塊作為指定的nsid用的寫入對象區塊(寫入對象虛擬區塊),并自動刪除分配的虛擬區塊(步驟s152)。控制器4從指定的nsid用的剩余虛擬區塊數減去1(步驟s154)。控制器4更新與指定的nsid對應的合計刪除次數(步驟s155)。在步驟s155中,控制器4將與該指定的nsid對應的合計刪除次數增加1。并且,控制器4產生返回值(輸出參數),并將包含返回值的命令完成回應發送至主機2(步驟s156)。
另一方面,若無該nsid用的剩余虛擬區塊(步驟s152的否),則控制器4將包含表示因確保該nsid用的剩余虛擬區塊數為零所以無法分配新區塊的錯誤狀態的命令完成回應,發送至主機2(步驟s157)。
[命名空間用的刪除命令]
圖59表示用來刪除分配給某個命名空間的特定區塊的刪除命令。
該刪除命令包含以下輸入參數。
(1)區塊地址:該輸入參數值表示應刪除的區塊的區塊地址。在虛擬nand存取管理api22用的刪除命令中,該輸入參數值代替表示區塊地址而表示應刪除的虛擬區塊的虛擬區塊地址。
(2)處理優先級:該輸入參數值表示該命令的優先級。
(3)nsid:該輸入參數值表示與應刪除的區塊(或虛擬區塊)對應的nsid。
該刪除命令包含以下輸出參數。
(1)結束狀態:向主機返回該刪除命令的成功或錯誤。
(2)區塊地址:該輸出參數值表示刪除的區塊的區塊地址。在虛擬nand存取管理api22用的刪除命令中,該輸出參數值表示刪除的虛擬區塊的虛擬區塊地址。
(3)合計刪除次數:該輸出參數值表示分配給該nsid的各區塊的刪除次數的合計。在虛擬nand存取管理api22用的刪除命令中,該輸出參數值表示分配給該nsid的各虛擬區塊的刪除次數的合計。
[刪除處理的次序]
圖60的流程圖表示ssd3執行的刪除處理的次序。于此,例示說明物理nand存取管理api21用的刪除處理。
ssd3的控制器4從主機2接收刪除命令(步驟s171)。控制器4執行用來刪除由該刪除命令指定的區塊的刪除動作(步驟s172),將該刪除的區塊的刪除次數增加1(步驟s173),并且將與分配該刪除的區塊的nsid對應的合計刪除次數增加1(步驟s174)。在刪除命令包含nsid的情況下,分配該刪除的區塊的nsid是由該刪除命令內的nsid特定。另一方面,在刪除命令不含nsid的情況下,分配該刪除的區塊的nsid可以基于該刪除的區塊的區塊地址、及分配給各nsid的區塊地址的列表來特定。
并且,產生返回值(輸出參數),將包含返回值的命令完成回應發送至主機2(步驟s175)。
在虛擬nand存取管理api22用的刪除處理中,控制器4執行用來刪除由該刪除命令指定的虛擬區塊內的多個區塊的刪除動作(步驟s172),將該刪除的虛擬區塊的刪除次數增加1(步驟s173),并且將與分配該刪除的虛擬區塊的nsid對應的合計刪除次數增加1(步驟s174)。
[區塊返還命令]
圖61表示應用于ssd3的區塊返還命令。該區塊返還命令用來將與特定的命名空間對應的活動區塊池內的區塊返還至共通空閑區塊池90。
該區塊返還命令包含以下輸入參數。
(1)區塊地址:該輸入參數值表示應返還的區塊的區塊地址。在虛擬nand存取管理api22用的區塊返還命令中,該輸入參數值代替表示區塊地址,而表示應返還的虛擬區塊的虛擬區塊地址。
(2)處理優先級:該輸入參數值表示該命令的優先級。
(3)nsid:該輸入參數值表示與應返還的區塊(或虛擬區塊)對應的nsid。
該區塊返還命令包含以下輸出參數。
(1)結束狀態:向主機返回該區塊返還命令的成功或錯誤。
(2)剩余區塊數:該輸出參數值表示區塊返還后的剩余區塊數。在虛擬nand存取管理api22用的區塊返還命令中,該輸出參數值表示虛擬區塊返還后的剩余虛擬區塊數。
[區塊返還處理的次序]
圖62的流程圖表示ssd3執行的區塊返還處理的次序。于此,例示說明物理nand存取管理api21用的區塊返還處理。
ssd3的控制器4從主機2接收區塊返還命令(步驟s181)。控制器4將由該區塊返還命令指定的區塊,從與由該區塊返還命令指定的nsid對應的活動區塊池移動至共通空閑區塊池90(步驟s182)。由此,對該nsid的該區塊的分配被解除,該區塊作為不含有效數據的空閑區塊而由共通空閑區塊池90管理。
控制器4將與指定的nsid對應的剩余區塊數增加1(步驟s183)。并且,控制器4產生返回值(輸出參數),并將包含返回值的命令完成回應發送至主機2(步驟s184)。
在虛擬nand存取管理api22用的區塊返還處理中,控制器4將由該區塊返還指定的虛擬區塊移動至共通空閑區塊池90(步驟s182),并將與指定的nsid對應的剩余虛擬區塊數增加1(步驟s183),然后將包含返回值的命令完成回應發送至主機2(步驟s184)。
[刪除次數獲取命令]
圖63表示應用于ssd3的命名空間用的刪除次數獲取命令。該刪除次數獲取命令對ssd3請求應通知特定的命名空間的合計刪除次數。
刪除次數獲取命令包含以下輸入參數。
(1)nsid:該輸入參數值表示對象nsid。在該輸入參數值為某個特殊值的情況下,也可以將所有nsid作為對象nsid進行決定。
(2)處理優先級:該輸入參數值表示該命令的優先級。
刪除次數獲取命令包含以下輸出參數。
(1)結束狀態:向主機返回該刪除次數獲取命令的成功或錯誤。
(2)合計刪除次數:該輸出參數值表示指定的nsid的合計刪除次數。
[刪除次數通知處理]
圖64的流程圖表示ssd3執行的刪除次數通知處理的次序。于此,例示說明物理nand存取管理api21用的刪除次數通知處理。
在ssd3的控制器4從主機2接收刪除次數獲取命令時,控制器4判定指定由該刪除次數獲取命令特定的nsid、還是指定所有nsid(步驟s191)。
若指定特定的nsid(步驟s191的是),則控制器4取得該特定的nsid的當前合計刪除次數(計數值)(步驟s192),并將包含該特定的nsid的當前合計刪除次數的命令完成回應發送至主機2(步驟s194)。
若指定所有nsid(步驟s191的否),則控制器4取得與所有nsid分別對應的當前合計刪除次數的列表(步驟s193),并將包含與所有nsid分別對應的當前合計刪除次數的列表的命令完成回應發送至主機2(步驟s194)。
在虛擬nand存取管理api22用的刪除次數通知處理中,計數對分配給指定的特定的nsid的各虛擬區塊執行的刪除動作的次數,并將該計數值作為指定的特定的nsid的合計刪除次數通知給主機2。
于此,對將由刪除次數獲取命令指定的nsid的合計刪除次數通知給主機2的處理進行了說明,但也能代替nsid,而使用包含指定區塊地址或虛擬區塊地址的任一個的參數的刪除次數獲取命令。
物理nand存取管理api21用的刪除命令包含區塊地址(指定區塊的物理地址)。控制器將從主機2接收的刪除命令內的區塊地址指定的區塊刪除,管理組#y內的各區塊的刪除次數,在從主機2接收包含某個區塊地址的刪除次數獲取命令的情況下,將包含由該刪除次數獲取命令內的區塊地址指定的區塊的刪除次數通知給主機2。
虛擬nand存取管理api22用的刪除命令包含虛擬區塊地址(指定虛擬區塊的物理地址)。控制器將從主機2接收的刪除命令內的虛擬區塊地址指定的虛擬區塊內的多個區塊刪除,管理組#x內的各虛擬區塊的刪除次數,在從主機2接收包含某個虛擬區塊地址的刪除次數獲取命令的情況下,將該刪除次數獲取命令內的虛擬區塊地址指定的虛擬區塊的刪除次數通知給主機2。
[命名空間管理用的其他命令]
控制器4還支持命名空間解體命令。命名空間解體命令向控制器4請求命名空間的刪除(解體)。命名空間解體命令也可以包含表示當前分配給該特定的nsid的區塊的數(應解體的區塊數)的輸入參數。該區塊的數在物理nand存取管理api21中是當前分配給該特定的nsid的物理區塊的數,在虛擬nand存取管理api22中是當前分配給該特定的nsid的虛擬區塊的數。響應于來自主機2的包含特定的nsid的命名空間解體命令的接收,控制器4將與該特定的nsid對應的虛擬閃存池內的所有區塊作為空閑區塊移動至共通空閑區塊90。并且,控制器4將對于命名空間解體命令的命令完成的回應發送至主機2。該命令完成的回應也可以包含表示解體區塊的數的返回值。
主機2通過使用所述命名空間分配命令及命名空間解體命令,能夠增減命名空間。
[主機構成]
圖65表示作為主機2發揮功能的信息處理裝置的硬件構成例。
該信息處理裝置是作為服務器計算機、或個人計算機而實現。該信息處理裝置包含處理器(cpu)101、主存儲器102、bios-rom103、網絡控制器105、周邊接口控制器106、控制器107、及嵌入式控制器(ec)108等。
處理器101是以控制該信息處理裝置的各組件的動作的方式構成的cpu。該處理器101執行從多個ssd3的任1個加載到主存儲器102的各種程序。主存儲器102包含比如dram的隨機存取存儲器。處理器101執行的程序包含所述應用軟件層41、os42、文件系統43、及ftl44。處理器101執行的程序也可以還包含資源管理部45。
該資源管理部45可以將刪除次數獲取命令發送至ssd3,從ssd3取得各命名空間的合計刪除次數,基于取得的各命名空間的合計刪除次數,判定起因于各個命名空間的ssd3的物理資源的消耗度。在假設起因于某個特定命名空間的ssd3的物理資源的消耗度大于閾值的情況下,該資源管理部45可以執行用來增加應確保用于該特定的命名空間的區塊的個數的處理。這種情況下,該資源管理部45可以向ssd3發送請求應將指定個數的區塊追加至該特定的命名空間用的命名空間分配命令。由此,該特定的命名空間的過量供給區域的大小增加,因此能夠減少該特定的命名空間的寫入擴增,結果,能夠降低起因于該特定的命名空間的ssd3的物理資源的消耗度。
此外,如上所述,數據中心提供者也可以基于確保用于該命名空間的區塊的數(或虛擬區塊的數)、及與該命名空間對應的合計刪除次數,來決定與該命名空間對應的租借費。這種情況下,資源管理部45可以執行用來支援數據中心提供者決定租借費的服務。例如,某個命名空間相關的基本租借費用首先由與該命名空間對應的區域的容量(區塊的個數)決定。并且,由合計刪除次數的函數求出的追加費加上基本租借費用后的合計費可以作為該命名空間相關的租借費用進行決定。
租借該命名空間的用戶在請求追加確保用于該命名空間用的區塊的個數的情況下,資源管理部45可以免除追加費收取,只基于追加區塊的數與已確保的區塊的數的合計來設定新的租借費用。并且,資源管理部45可以將請求應將用戶指定的個數的區塊追加至該特定的命名空間用的命名空間分配命令發送至ssd3。
此外,資源管理部45能夠與ftl44共同動作,讓各應用程序使用物理nand存取管理api/虛擬nand存取管理api來控制ssd3的nand存儲器5。例如,資源管理部45響應于來自用戶(某個應用程序、或某個用戶端終端)的包含指定nand存儲器5內的物理nand存取管理api21用的區塊中的一個區塊的物理地址的第1讀出、寫入或刪除請求的接收,將所述讀出命令、寫入命令、或刪除命令發送至ssd3,控制對該指定區塊的讀出動作、寫入動作、或刪除動作。此外,資源管理部45響應于來自用戶(某個應用程序、或某個用戶端終端)的包含指定nand存儲器5內的虛擬區塊中的一個虛擬區塊的物理地址(虛擬區塊地址)的第2讀出、寫入或刪除請求的接收,將所述讀出命令、寫入命令、或刪除命令發送至ssd3,控制對該指定虛擬區塊的讀出動作、寫入動作、或刪除動作。
而且,資源管理部45還可以執行以下控制:基于從ssd3通知的保持可讀出數據的最新頁面地址,自動變更應面向來自用戶(某個應用程序、或某個用戶端終端)的讀出請求的存儲區域(將寫入數據保持一定期間的主機2內的存儲器、或ssd3內的nand存儲器5)。這種情況下,資源管理部45可以在寫入ssd3的某個特定數據變得可讀出之前,響應于對該特定數據的讀出請求對主機2內的存儲器進行讀出存取,當特定數據變得可讀出之后,響應于與對該特定數據的讀出請求,對ssd3內的nand存儲器5進行讀出存取。
此外,資源管理部45能夠與ftl44共同動作,管理多個命名空間。資源管理部45將用來對ssd3內的nand存儲器5內的多個區塊內分配給第1命名空間的多個第1區塊的一個進行讀出、寫入或刪除的命令,發送至ssd3。并且,資源管理部45通過將請求與所述第1命名空間關聯的刪除次數的取得的命令發送至ssd3,而從ssd3取得通過計數對多個第1區塊執行的刪除動作的次數所得的計數值。
而且,資源管理部45通過將用來確保第1命名空間用的區塊的命令發送至ssd3,讓ssd3確保第1個數的區塊用于第1命名空間,并將能夠分配給第1命名空間的多個第1區塊的數的上限限制為第1個數以下。此外,資源管理部45構成為通過將用來追加應確保用于第1命名空間的區塊的個數的命令發送至ssd3,讓ssd3追加第2個數的區塊作為應確保用于第1命名空間的區塊,并能夠分配給第1命名空間的數的第1區塊的數的上限增加為第1個數與第2個數的和。
而且,資源管理部45通過將所述數據復制命令發送至ssd3,而控制垃圾回收(數據復制動作)。
即,處理器101通過執行ftl44,來管理各邏輯區塊地址與各nand存儲器5的物理地址之間的映射。處理器101進一步通過執行資源管理部45,來控制垃圾回收(數據復制動作)。
這種情況下,處理器101將請求只復制有效數據的數據復制命令發送至ssd3。數據復制命令如上所述包含復制源區塊、復制源區塊內的復制開始頁面、復制目標區塊、復制目標區塊內的傳輸開始頁面、表示復制源區塊內的各頁面的數據為有效數據或無效數據的哪一個的位圖數據、及指定到復制結束為止應復制的有效數據的數或到復制結束為止應檢測的無效數據的數的任一個的結束條件。
并且,處理器101從ssd3接收按復制到復制目標區塊的各有效數據而表示有效數據的標識符將儲存有效數據的復制目標區塊內的位置的數據復制信息。處理器101基于數據復制信息來更新地址變換表。
而且,處理器101基于從ssd3通知的下一次應開始復制的數據的位置,控制下一次的垃圾回收(數據復制動作)。
此外,處理器101還執行作為非易失性存儲器的bios-rom103內儲存的基本輸入輸出系統(bios)。bios是硬件控制用的系統程序。
網絡控制器105是比如有線lan控制器、無線lan控制器的通信裝置。周邊接口控制器106構成為執行與比如usb裝置的周邊裝置的通信。
控制器107構成為執行與分別連接于多個連接器107a的裝置的通信。在本實施方式中,多個ssd3分別連接于多個連接器107a。控制器107為sasexpander、pcieswitch、pcieexpander、閃存陣列控制器、或raid控制器等。
ec108作為構成為執行信息處理裝置的電力管理的系統控制器發揮功能。ec108根據用戶對電源開關的操作而將信息處理裝置通電及斷電。ec108作為比如單片微控制器的處理電路而實現。ec108也可以內置控制鍵盤(kb)等輸入裝置的鍵盤控制器。
圖66表示包含多個ssd3及主機2的信息處理裝置的構成例。
該信息處理裝置具備能夠收容在支架上的薄箱形的殼體201。多個ssd3也可以配置在殼體201內。這種情況下,各ssd3可拆卸地插入至設置在殼體201的前表面201a的插槽中。
系統板(主板)202配置在殼體201內。在系統板(主板)202上安裝著包含cpu101、存儲器102、網絡控制器105、控制器107的各種電子零件。這些電子零件作為主機2發揮功能。
如以上說明那樣,根據本實施方式的“可讀出頁面通知功能”,能夠將到寫入數據的區塊內的哪個頁面為止為可讀出狀態通知給主機2。由此,利用該“可讀出頁面通知功能”能夠幫助主機2直接存取nand存儲器5。
此外,根據本實施方式的“不當寫入順序警告”的功能,基于寫入命令內的頁面地址,判定寫入命令是否滿足從第1區塊內的最初的頁面到最后的頁面的順序寫入數據這樣的寫入順序相關的制約,在寫入命令不滿足寫入順序相關的制約的情況下,不將寫入命令指定的頁面寫入數據,而是向主機2通知寫入順序違法。因此,能夠幫助主機2直接控制向nand存儲器5的寫入。
另外,在本實施方式中,例示了nand存儲器作為非易失性存儲器。但是,本實施方式的功能例如也可以應用于例如mram(magnetoresistiverandomaccessmemory,磁阻式隨機存取存儲器)、pram(phasechangerandomaccessmemory,相位變換隨機存取存儲器)、reram(resistiverandomaccessmemory,電阻式隨機存取存儲器)或feram(ferroelectricrandomaccessmemory,鐵電隨機存取存儲器)等其他各種非易失性存儲器。
雖對本發明的若干實施方式進行了說明,但這些實施方式是作為示例而提出的,并不意圖限定發明的范圍。這些新穎的實施方式能以其他各種方式加以實施,且能夠在不脫離發明主旨的范圍內進行各種省略、替換、變更。這些實施方式或其變化包含在發明的范圍或主旨內,并且包含在權利要求所記載的發明及其均等的范圍內。