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