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