本申請案享有以日本專利申請案2015-249553號(申請日:2015年12月22日)為基礎(chǔ)申請案的優(yōu)先權(quán)。本申請案通過參照該基礎(chǔ)申請案而包含基礎(chǔ)申請案的全部內(nèi)容。
技術(shù)領(lǐng)域
本發(fā)明的實施方式涉及一種非易失性存儲器及控制方法。
背景技術(shù):
近年來,包括非易失性存儲器的存儲器系統(tǒng)得到廣泛普及。
作為此種存儲器系統(tǒng)之一,已知有以NAND(Not AND,與非)閃存技術(shù)為基礎(chǔ)的固態(tài)硬盤(SSD,Solid State Drive)。
SSD是因其低電力消耗、高性能的特征而用作各種電腦的主存儲器。
另外,為了獲得更高的性能、更大的容量,也開發(fā)有利用多個SSD的陣列技術(shù)。
為了使SSD的陣列效率良好地動作,理想的是使陣列內(nèi)的多個SSD協(xié)調(diào)動作。因此,要求實現(xiàn)能夠提供用于該協(xié)調(diào)動作所需的有用的信息的新構(gòu)造。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施方式提供一種能夠?qū)χ鳈C或陣列內(nèi)的其他SSD提供有用的信息的存儲器系統(tǒng)及控制方法。
根據(jù)實施方式,能夠作為使數(shù)據(jù)跨及多個半導(dǎo)體存儲裝置分散的存儲陣列內(nèi)的一個半導(dǎo)體存儲裝置進行動作的存儲器系統(tǒng)具備:非易失性存儲器;及控制器,與所述非易失性存儲器電連接,且以執(zhí)行將從主機接收的數(shù)據(jù)寫入到所述非易失性存儲器的寫入動作、及用于管理所述存儲器系統(tǒng)的內(nèi)部動作的方式構(gòu)成。所述控制器是在開始所述內(nèi)部動作的情況下,根據(jù)所述開始的所述內(nèi)部動作的內(nèi)容而推斷由所述內(nèi)部動作開始引起的所述寫入動作的性能降低的量。所述控制器將所述推斷的所述寫入動作的性能降低的量通知給所述主機或所述存儲陣列內(nèi)的其他一個以上的半導(dǎo)體存儲裝置。
附圖說明
圖1是對包含應(yīng)用實施方式的存儲器系統(tǒng)的存儲陣列的信息處理系統(tǒng)的構(gòu)成例進行說明的框圖。
圖2是對包含應(yīng)用實施方式的存儲器系統(tǒng)的存儲陣列的信息處理系統(tǒng)的另一構(gòu)成例進行說明的框圖。
圖3是對應(yīng)用實施方式的存儲器系統(tǒng)的存儲陣列的寫入動作的例子進行說明的圖。
圖4是對存儲陣列內(nèi)的某SSD的寫入性能降低的情況下的存儲陣列的寫入動作進行說明的圖。
圖5是對在存儲陣列內(nèi)的某SSD的寫入性能降低期間由其他SSD執(zhí)行的垃圾回收(GC,Garbage Collection)動作進行說明的圖。
圖6是對在存儲陣列內(nèi)的某SSD的寫入性能降低期間由其他SSD執(zhí)行的寫入動作及GC動作進行說明的圖。
圖7是對在存儲陣列內(nèi)的某SSD的寫入性能降低期間由其他SSD執(zhí)行的節(jié)流動作進行說明的圖。
圖8是對作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)的構(gòu)成例進行說明的框圖。
圖9是用來對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的依次分配空閑區(qū)塊用于寫入來自主機的數(shù)據(jù)的動作進行說明的圖。
圖10是對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的垃圾回收動作進行說明的圖。
圖11是對作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)內(nèi)的NAND接口與多個NAND存儲器芯片的關(guān)系進行說明的圖。
圖12是對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的工作周期比控制動作進行說明的圖。
圖13是用來對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的性能降低通知處理的例子進行說明的圖。
圖14是用來對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的性能降低通知處理的另一例進行說明的圖。
圖15是對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的GC動作及性能降低通知處理的次序進行說明的流程圖。
圖16是對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的熱節(jié)流動作及性能降低 通知處理的次序進行說明的流程圖。
圖17是對由作為送出側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的電力限制節(jié)流動作及性能降低通知處理的次序進行說明的流程圖。
圖18是對作為接收側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)的構(gòu)成例進行說明的框圖。
圖19是對接收到性能降低通知時由作為接收側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的寫入性能降低處理的次序進行說明的流程圖。
圖20是對接收到性能降低通知時由作為接收側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的GC動作的次序進行說明的流程圖。
圖21是對接收到性能降低通知時由作為接收側(cè)SSD發(fā)揮功能的存儲器系統(tǒng)執(zhí)行的節(jié)流動作的次序進行說明的流程圖。
圖22是對具有送出側(cè)SSD及接收側(cè)SSD該兩者的功能的存儲器系統(tǒng)的構(gòu)成例進行說明的框圖。
圖23是對主機的構(gòu)成例進行說明的框圖。
圖24是表示包含該實施方式的存儲器系統(tǒng)與主機的電腦的構(gòu)成例的圖。
具體實施方式
以下,參照附圖對實施方式進行說明。
首先,參照圖1對包含一實施方式的存儲器系統(tǒng)的信息處理系統(tǒng)1的構(gòu)成進行說明。
該存儲器系統(tǒng)是以將數(shù)據(jù)寫入到非易失性存儲器且從非易失性存儲器讀取數(shù)據(jù)的方式構(gòu)成的半導(dǎo)體存儲裝置。該存儲器系統(tǒng)例如作為以NAND閃存技術(shù)為基礎(chǔ)的固態(tài)硬盤(SSD)3而實現(xiàn)。
信息處理系統(tǒng)1包含主機(主機裝置)2、及包括多個半導(dǎo)體存儲裝置(SSD)的存儲陣列(SSD陣列)。該SSD陣列也可通過RAID(Redundant Array of Independent Disks,獨立磁盤冗余陣列)級別0、RAID級別5、RAID級別6之類的RAID陣列實現(xiàn)。
本實施方式的SSD3能夠作為SSD陣列內(nèi)的一個半導(dǎo)體存儲裝置(SSD)發(fā)揮功能。也可為僅SSD陣列內(nèi)的一個SSD通過本實施方式的SSD3實現(xiàn),也可為SSD陣列內(nèi)的所有SSD通過本實施方式的SSD3實現(xiàn)。在圖1中,例示SSD陣列內(nèi)的所有SSD通過本實施方式的SSD3實現(xiàn)的情況。
在該SSD陣列中,通過分條而使數(shù)據(jù)跨及多個SSD3分散。應(yīng)通過主機2寫入到SSD陣列的數(shù)據(jù)被分割為具有某數(shù)據(jù)大小的多個數(shù)據(jù)塊,這些數(shù)據(jù)塊通過分條而跨及多個SSD3分散。
在SSD陣列通過RAID級別5或RAID級別6實現(xiàn)的情況下,伴有奇偶校驗塊的數(shù)據(jù)通過分條而跨及多個SSD3分散。
以下,雖無限定,但主要對SSD陣列為與RAID級別0(分條)對應(yīng)的RAID陣列的情況進行說明。
在圖1中,設(shè)想SSD陣列由4個SSD3(SSD#1、SSD#2、SSD#3、SSD#4)構(gòu)成的情況。
應(yīng)通過主機2寫入到SSD陣列的數(shù)據(jù)被分割為4個數(shù)據(jù)塊“數(shù)據(jù)#1”、“數(shù)據(jù)#2”、“數(shù)據(jù)#3”、“數(shù)據(jù)#4”。而且,這些數(shù)據(jù)塊“數(shù)據(jù)#1”、“數(shù)據(jù)#2”、“數(shù)據(jù)#3”、“數(shù)據(jù)#4”被從主機2發(fā)送到SSD#1、SSD#2、SSD#3、SSD#4,且通過SSD#1、SSD#2、SSD#3、SSD#4同時執(zhí)行寫入這些數(shù)據(jù)塊“數(shù)據(jù)#1”、“數(shù)據(jù)#2”、“數(shù)據(jù)#3”、“數(shù)據(jù)#4”的動作。數(shù)據(jù)塊“數(shù)據(jù)#1”、“數(shù)據(jù)#2”、“數(shù)據(jù)#3”、“數(shù)據(jù)#4”構(gòu)成一個條帶。
當(dāng)所述4個數(shù)據(jù)塊“數(shù)據(jù)#1”、“數(shù)據(jù)#2”、“數(shù)據(jù)#3”、“數(shù)據(jù)#4”的寫入完成時,接下來的4個數(shù)據(jù)塊“數(shù)據(jù)#5”、“數(shù)據(jù)#6”、“數(shù)據(jù)#7”、“數(shù)據(jù)#8”被從主機2發(fā)送到SSD#1、SSD#2、SSD#3、SSD#4,通過SSD#1、SSD#2、SSD#3、SSD#4同時執(zhí)行寫入這些數(shù)據(jù)塊“數(shù)據(jù)#5”、“數(shù)據(jù)#6”、“數(shù)據(jù)#7”、“數(shù)據(jù)#8”的動作。
主機2是服務(wù)器、個人電腦之類的信息處理裝置。SSD陣列內(nèi)的各SSD3可內(nèi)置于信息處理裝置,也可經(jīng)由纜線或網(wǎng)絡(luò)而連接于信息處理裝置。
作為用于將主機2與各SSD3相互連接的接口,能夠使用SCSI(Small Computer System Interface,小型電腦系統(tǒng)接口)、串行連接的SCSI(SAS,Serial Attached SCSI)、ATA(Advanced Technology Attachment,串行高級技術(shù)附件)、串行ATA(SATA,Serial ATA)、PCI Express(PCIe,Peripheral Component Interconnect Express,快捷外圍部件互連)等。
本實施方式的SSD3能夠作為送出側(cè)SSD或接收側(cè)SSD的至少一者發(fā)揮功能。所謂送出側(cè)SSD是指具有將該SSD的寫入性能降低的量通知給主機2或SSD陣列內(nèi)的其他SSD的功能的SSD。所謂接收側(cè)SSD是指具有從送出側(cè)SSD或主機3接收送出側(cè)SSD的寫入性能降低的量并根據(jù)送出側(cè)SSD的寫入性能降低的量而使自身的寫入性能降低的功能的SSD。
SSD3的寫入性能有時因用于管理SSD3的內(nèi)部動作而降低。此種內(nèi)部動作的典型的例子包含垃圾回收動作、防止SSD3過熱的熱保護動作(例如熱節(jié)流)、將SSD3的電力消耗抑制在SSD3所容許的最大電力以下的電力限制動作(例如電力限制節(jié)流)等。
所謂SSD3的寫入性能是指將從主機2接收的數(shù)據(jù)寫入到SSD3內(nèi)的非易失性存儲 器的寫入動作的性能。該寫入性能也可通過寫入吞吐量表示。寫入吞吐量表示每單位時間內(nèi)能夠從主機2傳輸?shù)絊SD3的數(shù)據(jù)量、即數(shù)據(jù)傳輸率。
這里,設(shè)想SSD#2作為送出側(cè)SSD發(fā)揮功能的情況。
在設(shè)想SSD#2的寫入性能(寫入吞吐量)因內(nèi)部動作的開始而降低的情況下,SSD#2是根據(jù)該內(nèi)部動作的內(nèi)容而推斷SSD#2的降低后的寫入性能,并將SSD#2的寫入性能降低的量通知給主機2或SSD陣列內(nèi)的其他SSD。例如,在設(shè)想SSD#2的寫入性能自未執(zhí)行內(nèi)部動作的通常狀態(tài)時的寫入性能(例如,1G字節(jié)/秒的傳輸率)降低至512M字節(jié)/秒的傳輸率的情況下,SSD#2也可為了使SSD陣列內(nèi)的所有SSD的寫入性能一致為512M字節(jié)/秒而將表示SSD#2的寫入性能降低至512M字節(jié)/秒的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD。
從主機2或從送出側(cè)SSD接收到該通知的各SSD(接收側(cè)SSD),能夠根據(jù)通過所接收到的通知所指定的寫入性能降低的量而使自身的寫入性能降低。
例如,接收到該通知的各SSD也可進行用于使自身的寫入性能降低至通過所接收到的通知指定的降低后的寫入性能(此處為512M字節(jié)/秒的傳輸率)的控制。例如,在接收到該通知的各SSD以1G字節(jié)/秒的寫入性能進行動作的情況下,所述各SSD也可通過使自身的寫入性能(寫入速度)降低至512M字節(jié)/秒而減小自身的電力消耗。或者,所述各SSD也可使自身的寫入性能降低至512M字節(jié)/秒且使用剩余的寫入性能(此處為512M字節(jié)/秒)預(yù)先執(zhí)行垃圾回收動作。
如此,送出側(cè)SSD的通知功能使得其他SSD能夠有效利用送出側(cè)SSD的寫入性能降低的期間以預(yù)先執(zhí)行自身的電力消耗的減少或垃圾回收動作。
作為用于將送出側(cè)SSD的寫入性能降低的量通知給主機2的方法,能夠使用能夠?qū)⑺统鰝?cè)SSD的寫入性能降低的量報告給主機2的任意方法。例如,當(dāng)送出側(cè)SSD開始內(nèi)部動作時,送出側(cè)SSD也可通過對主機2發(fā)送中斷信號而將送出側(cè)SSD的寫入性能降低的量通知給主機2?;蛘?,在主機2具有通過輪詢而定期對送出側(cè)SSD的內(nèi)部寄存器進行讀取的功能的情況下,送出側(cè)SSD也可對該內(nèi)部寄存器設(shè)定送出側(cè)SSD的寫入性能降低的量。
已被從送出側(cè)SSD通知有寫入性能降低的量的主機2也可將該寫入性能降低的量發(fā)送到SSD陣列內(nèi)的其他各SSD?;蛘撸驯粡乃统鰝?cè)SSD通知有寫入性能降低的量的主機2也可根據(jù)該寫入性能降低的量而執(zhí)行用于使SSD陣列內(nèi)的其他各SSD的寫入性能降低的控制。
送出側(cè)SSD的寫入性能降低的量也可不經(jīng)由主機2(主機CPU(Central Processing Unit,中央處理器))而通知給SSD陣列內(nèi)的其他各SSD。作為該通知方法,能夠使用能夠不經(jīng)由主機2(例如主機CPU)而于SSD間通訊的任意方法。例如,在SSD陣列內(nèi)的各SSD經(jīng)由PCI Express(PCIe)總線與主機2電連接的情況下,也可經(jīng)由用于將PCIe總線間連接的的總線開關(guān)執(zhí)行送出側(cè)SSD與其他各SSD之間的通訊(端到端通訊)。
或者,在使用如圖2所示般各SSD經(jīng)由陣列控制器(例如RAID控制器)2A與主機2電連接的陣列構(gòu)成的情況下,也可經(jīng)由陣列控制器2A執(zhí)行送出側(cè)SSD與其他各SSD之間的通訊。
陣列控制器2A執(zhí)行將從主機2接收的寫入數(shù)據(jù)通過分條跨及多個SSD3分散的控制。陣列控制器2A也可通過RAID控制器實現(xiàn)。
圖3表示SSD陣列的寫入動作的例子。
此處,設(shè)想SSD陣列包含4個SSD#1~#4的情況。
主機2或陣列控制器2A例如將規(guī)定大小(例如128K字節(jié))的數(shù)據(jù)分割為4個數(shù)據(jù)塊(例如各數(shù)據(jù)塊的大小為32K字節(jié)),使4個SSD#1~#4并列執(zhí)行所述4個數(shù)據(jù)塊的寫入。
例如,在時點T10,主機2或陣列控制器2A對4個SSD3依次發(fā)送寫入命令與數(shù)據(jù)塊。在該情況下,128K字節(jié)的數(shù)據(jù)的最初的32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#1。該128K字節(jié)的數(shù)據(jù)的第2個32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#2。該128K字節(jié)的數(shù)據(jù)的第3個32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#3。該128K字節(jié)的數(shù)據(jù)的最后的32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#4。
SSD#1~#4分別將所接收到的數(shù)據(jù)塊寫入到SSD#1~#4內(nèi)的非易失性存儲器。利用SSD#1~#4進行的數(shù)據(jù)寫入動作完成后,在例如時點T11,主機2或陣列控制器2A對4個SSD3依次發(fā)送寫入命令及下一個128K字節(jié)數(shù)據(jù)內(nèi)的數(shù)據(jù)塊。在該情況下,下一個128K字節(jié)的數(shù)據(jù)的最初的32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#1。該128K字節(jié)的數(shù)據(jù)的第2個32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#2。該128K字節(jié)的數(shù)據(jù)的第3個32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#3。該128K字節(jié)的數(shù)據(jù)的最后的32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#4。
圖4表示SSD陣列內(nèi)的某SSD的寫入性能降低的情況下的SSD陣列的寫入動作的例子。
在圖4中,設(shè)想因SSD#2的寫入性能降低而SSD#2的寫入動作在所排定的時點T11未完成的情況。
在時點T11,主機2或陣列控制器2A能夠?qū)⑾乱粋€128K字節(jié)的數(shù)據(jù)的最初的數(shù) 據(jù)塊發(fā)送到SSD#1。
但是,因為SSD#2為其寫入動作進行中的忙碌狀態(tài),所以SSD#2無法開始下一寫入動作。也就是說,在SSD#2的當(dāng)前的寫入動作完成之前等待從主機2或陣列控制器2A向SSD#2的下一個數(shù)據(jù)塊的發(fā)送。因該SSD#2成為瓶頸而導(dǎo)致也等待從主機2或陣列控制器2A向SSD#3、SSD#4的數(shù)據(jù)塊的發(fā)送。
SSD#2的數(shù)據(jù)寫入動作完成后,在例如時點T12,主機2或陣列控制器2A對SSD#2、SSD#3、SSD#4依次發(fā)送寫入命令及該128K字節(jié)的數(shù)據(jù)內(nèi)的數(shù)據(jù)塊。該128K字節(jié)的數(shù)據(jù)的第2個32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#2。該128K字節(jié)的數(shù)據(jù)的第3個32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#3。該128K字節(jié)的數(shù)據(jù)的最后的32K字節(jié)的數(shù)據(jù)塊作為寫入數(shù)據(jù)被發(fā)送到SSD#4。
因此,在時點T11~T12的期間,SSD#3、SSD#4有可能維持為不存在應(yīng)執(zhí)行的工作負載的閑置狀態(tài)。
在SSD#4的數(shù)據(jù)寫入動作完成之前等待從主機2或陣列控制器2A向SSD#1的下一個數(shù)據(jù)塊的通訊。因此,在時點T12~T13的期間,SSD#1有可能維持為閑置狀態(tài)。
如此,SSD陣列整體的寫入性能被限速為SSD#2的降低后的寫入性能。
圖5表示在SSD陣列內(nèi)的SSD#2的寫入性能降低期間通過其他SSD執(zhí)行的垃圾回收(GC)動作。
SSD#2如所述般能夠作為送出側(cè)SSD發(fā)揮功能。因此,當(dāng)SSD#2的寫入性能降低時,SSD#2能夠?qū)⑵鋵懭胄阅芙档偷牧客ㄖo主機2或SSD陣列內(nèi)的其他各SSD。
由此,例如,SSD#1、SSD#3、SSD#4分別能夠在等待SSD#2的數(shù)據(jù)寫入動作完成的時點T11~T12的期間預(yù)先執(zhí)行垃圾回收(GC)動作。
預(yù)先執(zhí)行垃圾回收(GC)動作是指在剩余空閑區(qū)塊的數(shù)量減少到應(yīng)開始垃圾回收(GC)動作的臨界個數(shù)以下之前開始垃圾回收(GC)動作。由此,能夠在較早的時期使SSD#1、SSD#3、SSD#4各自的空閑區(qū)塊的數(shù)量增加,因此,能夠使SSD#1、SSD#3、SSD#4開始下一GC動作的時點推遲。由此,能夠使由垃圾回收(GC)動作開始引起的SSD#1、SSD#3、SSD#4各自的寫入性能降低的時期推遲。
圖6表示在SSD陣列內(nèi)的SSD#2的寫入性能降低期間通過其他SSD執(zhí)行的寫入動作及垃圾回收(GC)動作。
在圖5中,對SSD#1、SSD#3、SSD#4分別在時點T11~T12的期間內(nèi)執(zhí)行垃圾回收(GC)動作的情況進行了說明,但在圖6中,SSD#1、SSD#3、SSD#4分別在時點T10~T12的期間并列執(zhí)行從主機2接收的數(shù)據(jù)的寫入動作及垃圾回收(GC)動作。
例如,在SSD#1~SSD#4以1G字節(jié)/秒的寫入性能進行動作的情況下,SSD#2的寫入性能降低至512M字節(jié)/秒時,SSD#1、SSD#3、SSD#4分別能夠通過將512M字節(jié)/秒的寫入性能用于從主機2接收的數(shù)據(jù)的寫入且將剩余的512M字節(jié)/秒的寫入性能用于垃圾回收(GC)動作而并列執(zhí)行從主機2接收的數(shù)據(jù)的寫入動作及垃圾回收(GC)動作。
圖7表示在SSD陣列內(nèi)的SSD#2的寫入性能降低期間通過其他SSD執(zhí)行的節(jié)流動作。
此處,所謂節(jié)流動作是指限制寫入性能的動作。節(jié)流動作的例子如下所述。
(1)限制被同時驅(qū)動(并列動作)的非易失性存儲器芯片的數(shù)量
(2)限制包含多個非易失性存儲器芯片被同時驅(qū)動(并列動作)的第1期間與多個非易失性存儲器芯片未被驅(qū)動(動作)的第2期間的1個周期內(nèi)的第1期間的比例(工作周期比)
(3)限制被同時驅(qū)動(并列動作)的非易失性存儲器芯片的數(shù)量,且限制工作周期比
SSD#1、SSD#3、SSD#4分別通過在時點T10~T12的期間內(nèi)執(zhí)行節(jié)流動作而使各自的寫入性能降低至與SSD#2的降低后的寫入性能同等程度的較低的寫入性能。
通常,SSD的寫入吞吐量越高,則SSD的電力消耗增加。由此,通過使SSD#1、SSD#3、SSD#4的寫入性能降低,能夠使SSD#1、SSD#3、SSD#4的電力消耗減少。
如此,在本實施方式中,送出側(cè)SSD并非將表示剩余空閑區(qū)塊的數(shù)量等的信息而是將表示其寫入性能降低的量(例如,降低后的寫入性能)本身的通知發(fā)送到主機2或其他SSD。由此,其他各SSD能夠容易地使自身的寫入性能降低至與送出側(cè)SSD的降低后的寫入性能同等程度的較低的性能,其結(jié)果,不利用主機2進行特別的處理即可效率良好地使SSD陣列內(nèi)的所有SSD的寫入性能平衡。
圖8表示作為所述送出側(cè)SSD發(fā)揮功能的SSD3的構(gòu)成例。
SSD3包括控制器4、非易失性存儲器(NAND存儲器)5、DRAM(Dynamic Random Access Memory,動態(tài)隨機存取存儲器)6、及溫度傳感器7。NAND存儲器5并無限定,也可包含多個NAND存儲器芯片(非易失性存儲器芯片)。
NAND存儲器5包含多個NAND區(qū)塊(區(qū)塊)B0~Bm-1。區(qū)塊B0~Bm-1作為刪除單位發(fā)揮功能。區(qū)塊有時也稱為“物理塊”或“刪除塊”。
區(qū)塊B0~Bm-1包含多個頁面(物理頁面)。即,區(qū)塊B0~Bm-1分別包含頁面P0~Pn-1。在NAND存儲器5中,數(shù)據(jù)的讀取及數(shù)據(jù)的寫入以頁面為單位執(zhí)行。數(shù)據(jù)的刪除以區(qū)塊為單位執(zhí)行。
控制器4是經(jīng)由Toggle、ONFI(Open NAND Flash Interface,開放NAND閃存接口)之類的NAND接口13而與作為非易失性存儲器的NAND存儲器5電連接。NAND接口 13也可包含多個信道。于各信道連接有若干NAND存儲器芯片??刂破?能夠使與NAND接口13連接的多個NAND存儲器芯片并列執(zhí)行寫入動作及讀出動作。
控制器4能夠作為以執(zhí)行NAND存儲器5的數(shù)據(jù)管理及NAND存儲器5的區(qū)塊管理的方式構(gòu)成的閃存轉(zhuǎn)換層(FTL,F(xiàn)lash Translation Layer)發(fā)揮功能。
數(shù)據(jù)管理包含(1)表示邏輯區(qū)塊地址(LBA)與物理地址之間的對應(yīng)關(guān)系的映射信息的管理、(2)用于將以頁面為單位的讀取/寫入及以區(qū)塊為單位的刪除動作隱蔽的處理等。LBA與物理地址之間的映射的管理是使用作為邏輯物理地址轉(zhuǎn)換表發(fā)揮功能的查找表(LUT,Look Up Table)33而執(zhí)行。查找表(LUT)33是以規(guī)定的管理大小為單位對LBA與物理地址之間的映射進行管理。來自主機2的寫入命令中的大部分要求寫入4K字節(jié)的數(shù)據(jù)。因此,查找表(LUT)33也能以例如4K字節(jié)為單位對LBA與物理地址之間的映射進行管理。與某LBA對應(yīng)的物理地址表示寫入有該LBA的數(shù)據(jù)的NAND存儲器5內(nèi)的物理存儲位置。物理地址包含物理區(qū)塊地址與物理頁面地址。對所有頁面分配有物理頁面地址,另外,對所有區(qū)塊分配有物理區(qū)塊地址。
向頁面的數(shù)據(jù)寫入在每1個刪除周期只能進行1次。
因此,控制器4將向同一LBA的寫入(覆寫)映射到NAND存儲器5上的其他頁面。也就是說,控制器4對該其他頁面寫入數(shù)據(jù)。而且,控制器4更新查找表(LUT)33而將該LBA與該其他頁面建立關(guān)聯(lián),并且使原先的頁面(即,與該LBA建立關(guān)聯(lián)的舊數(shù)據(jù))無效化。
區(qū)塊管理包含不良區(qū)塊的管理、耗損均衡、及垃圾回收等。耗損均衡是用于使物理區(qū)塊各自的編程/擦除次數(shù)平均化的動作。
垃圾回收是用于制造NAND存儲器5內(nèi)的空閑空間的動作。該垃圾回收動作是為了增加NAND存儲器5的空閑區(qū)塊的個數(shù)而將有效數(shù)據(jù)與無效數(shù)據(jù)混合存在的若干區(qū)塊內(nèi)的所有有效數(shù)據(jù)復(fù)制到其他區(qū)塊(復(fù)制目標(biāo)空閑區(qū)塊)。有效數(shù)據(jù)是與某LBA建立關(guān)聯(lián)的最新數(shù)據(jù)。無效數(shù)據(jù)是通過該數(shù)據(jù)的更新或刪除而已經(jīng)無法被主機2利用的數(shù)據(jù),即不與任一LBA建立關(guān)聯(lián)的舊數(shù)據(jù)。而且,垃圾回收動作是更新查找表(LUT)33而將所復(fù)制的有效數(shù)據(jù)的LBA分別映射到正確的物理地址。通過將有效數(shù)據(jù)復(fù)制到其他區(qū)塊而僅有無效數(shù)據(jù)的區(qū)塊作為空閑區(qū)塊而開放。由此,該區(qū)塊能夠在刪除后重新利用。
主機2將寫入命令發(fā)送到SSD3。該寫入命令包含寫入數(shù)據(jù)(即,應(yīng)寫入的數(shù)據(jù))的邏輯地址(開始邏輯地址)與傳輸長度。在本實施方式中,LBA用作邏輯地址,但在其他實施方式中,也可使用對象ID(identifier,標(biāo)識符)作為邏輯地址。LBA通過對邏輯扇區(qū)(邏輯區(qū)塊)賦予的序列號而表現(xiàn)。序列號從零開始。邏輯扇區(qū)的大小為例如512字節(jié)。
SSD3的控制器4是將通過寫入命令內(nèi)的開始邏輯地址與傳輸長度指定的寫入數(shù)據(jù)寫入到NAND存儲器5內(nèi)的區(qū)塊的頁面。進而,控制器4通過更新查找表(LUT)33而將與被寫入的數(shù)據(jù)對應(yīng)的LBA映射到表示寫入有該數(shù)據(jù)的物理存儲位置的物理地址。
更詳細而言,控制器4分配NAND存儲器5內(nèi)的一個空閑區(qū)塊用于寫入來自主機2的數(shù)據(jù)。該被分配的區(qū)塊是應(yīng)寫入來自主機2的數(shù)據(jù)的寫入對象區(qū)塊,也稱為“寫入目標(biāo)區(qū)塊”或“輸入?yún)^(qū)塊”等。控制器4一邊更新查找表(LUT)33,一邊將從主機2接收的寫入數(shù)據(jù)依次寫入到寫入對象區(qū)塊(寫入目標(biāo)區(qū)塊)的能夠利用的頁面。于在寫入目標(biāo)區(qū)塊中不存在能夠利用的頁面的情況下,控制器4分配新的空閑區(qū)塊作為寫入目標(biāo)區(qū)塊。
接下來,對控制器4的構(gòu)成進行說明。
控制器4包含主機接口11、CPU12、NAND接口13、DRAM接口14、SRAM(Static Random Access Memory,靜態(tài)隨機存取存儲器)15等。所述CPU12、NAND接口13、DRAM接口14、SRAM15經(jīng)由總線10而相互連接。
主機接口11從主機2接收各種命令(寫入命令、讀取命令、取消映射(UNMAP)命令等)。
寫入命令是要求對SSD3寫入通過該寫入命令指定的數(shù)據(jù)。寫入命令包含應(yīng)寫入的最初的邏輯區(qū)塊的LBA(起始LBA)與傳輸長度(邏輯區(qū)塊的數(shù)量)。讀取命令是要求相對于SSD3讀取通過該讀取命令指定的數(shù)據(jù)。讀取命令包含應(yīng)讀取的最初的邏輯區(qū)塊的LBA(起始LBA)與傳輸長度(邏輯區(qū)塊的數(shù)量)。
CPU12是以控制主機接口11、NAND接口13、DRAM接口14、SRAM15的方式構(gòu)成的處理器。CPU12除執(zhí)行所述FTL的處理以外,還執(zhí)行用于對來自主機2的各種命令進行處理的命令處理等。
例如,當(dāng)控制器4從主機2接收到寫入命令時,在CPU12的控制下,控制器4執(zhí)行將通過寫入命令指定的寫入數(shù)據(jù)寫入到NAND存儲器5的以下的寫入動作。
也就是說,控制器4是將寫入數(shù)據(jù)寫入到當(dāng)前的寫入目標(biāo)區(qū)塊的物理存儲位置(能夠利用的頁面),然后更新查找表(LUT)33,將該物理存儲位置的物理地址映射到寫入命令中包含的LBA(起始LBA)。
所述FTL處理及命令處理也可由通過CPU12執(zhí)行的固件控制。該固件是使CPU12作為垃圾回收(GC)動作控制部21、熱保護節(jié)流控制部22、電力限制節(jié)流控制部23、及寫入性能降低通知部24發(fā)揮功能。
垃圾回收動作控制部21執(zhí)行將選擇為垃圾回收動作的對象的若干區(qū)塊(片段化的區(qū)塊)內(nèi)的有效數(shù)據(jù)復(fù)制到其他區(qū)塊(復(fù)制目標(biāo)區(qū)塊)的垃圾回收動作。垃圾回收動作例如在 NAND存儲器6內(nèi)的空閑區(qū)塊的個數(shù)減少到規(guī)定的臨界個數(shù)以下的情況下執(zhí)行。垃圾回收動作消耗SSD3的資源及性能。因此,有在執(zhí)行垃圾回收動作的過程中將從主機2接收的數(shù)據(jù)寫入到寫入目標(biāo)區(qū)塊的寫入動作的性能(即寫入性能)降低的情況。
熱保護節(jié)流控制部22是根據(jù)通過溫度傳感器7檢測的溫度來執(zhí)行用于防止SSD3過熱的熱保護動作(熱節(jié)流動作)。熱節(jié)流動作是通過限制SSD3的寫入性能而執(zhí)行。更詳細而言,熱保護節(jié)流控制部22是根據(jù)通過溫度傳感器7檢測的溫度而限制被同時驅(qū)動(并列動作)的NAND存儲器芯片的數(shù)量,或者限制包含多個NAND存儲器芯片被同時驅(qū)動(并列動作)的第1期間與這些NAND存儲器芯片未被驅(qū)動(動作)的第2期間的1個周期內(nèi)的第1期間的比例。
電力限制節(jié)流控制部23執(zhí)行將SSD3的電力消耗抑制在SSD3所容許的最大電力以下的電力限制動作(電力限制節(jié)流動作)。SSD3所容許的最大電力也可通過主機2預(yù)先通知給SSD3。該最大電力表示容許SSD3消耗的最大電力消耗量。
電力限制節(jié)流動作也可通過限制SSD3的寫入性能而執(zhí)行。更詳細而言,電力限制節(jié)流控制部23是根據(jù)SSD3所容許的最大電力及各NAND存儲器芯片的電力消耗量而限制被同時驅(qū)動(并列動作)的NAND存儲器芯片的數(shù)量,或者限制包含多個NAND存儲器芯片被同時驅(qū)動(并列動作)的第1期間與這些NAND存儲器芯片未被驅(qū)動(動作)的第2期間的1個周期內(nèi)的第1期間的比例。
寫入性能降低通知部24是在內(nèi)部動作(垃圾回收動作、熱節(jié)流動作或電力限制節(jié)流動作)開始的情況下,根據(jù)開始的內(nèi)部動作的內(nèi)容而推斷由內(nèi)部動作開始引起的寫入性能降低的量,并將所推斷的寫入性能降低的量通知給主機2或SSD陣列內(nèi)的其他一個以上的SSD。
所推斷的寫入性能降低的量也可為由內(nèi)部動作開始引起的寫入性能降低后的性能。在該情況下,例如,寫入性能從1G字節(jié)/秒降低至500M字節(jié)/秒的情況下,也可將500M字節(jié)/秒推斷為寫入性能降低的量。
或者,所推斷的寫入性能降低的量也可為由內(nèi)部動作引起的寫入性能的降低量、即從通常狀態(tài)的寫入性能減去降低后的寫入性能所得的值。在該情況下,例如,寫入性能從1G字節(jié)/秒降低至500M字節(jié)/秒的情況下,也可將524M字節(jié)/秒(=1024-500)推斷為寫入性能降低的量。
當(dāng)通過內(nèi)部動作結(jié)束而恢復(fù)寫入性能時,寫入性能降低通知部24也可將寫入性能已恢復(fù)為通常狀態(tài)的寫入性能(1G字節(jié)/秒)的這一情況通知給主機2或SSD陣列內(nèi)的其他的一個以上的SSD。
接下來,對控制器4內(nèi)的其他組件進行說明。
NAND接口13是以在CPU12的控制下控制NAND存儲器5的方式構(gòu)成的NAND控制器。NAND接口13也可包含多信道、例如8個信道(CH#1~CH#8)。各信道包含用于傳輸數(shù)據(jù)、命令、及地址的總線。
DRAM接口14是以在CPU12的控制下控制DRAM6的方式構(gòu)成的DRAM控制器。
DRAM6的存儲區(qū)域的一部分也可用作用于暫時存儲應(yīng)寫入到NAND存儲器5的數(shù)據(jù)的寫入緩沖器(WB)31。另外,DRAM6的存儲區(qū)域也可用作用于暫時存儲垃圾回收(GC)動作中移動的數(shù)據(jù)的GC緩沖器32。另外,DRAM6的存儲區(qū)域也可用于存儲所述查找表33。
SSD3也可保持進而其他各種管理信息。此種管理信息的例子也可包含保持與各個物理地址對應(yīng)的有效/無效旗標(biāo)的頁面管理表。各有效/無效旗標(biāo)表示對應(yīng)的物理地址(物理頁面)是有效還是無效。物理頁面有效是指該物理頁面內(nèi)的數(shù)據(jù)為有效數(shù)據(jù)。物理頁面無效是指該物理頁面內(nèi)的數(shù)據(jù)為通過更新(重寫)而無效化的數(shù)據(jù)。
接下來,對主機2的構(gòu)成進行說明。
主機2是執(zhí)行各種程序的信息處理裝置。通過信息處理裝置執(zhí)行的程序中包含應(yīng)用軟件層41、操作系統(tǒng)(OS,Operating System)42、文件系統(tǒng)43。
像一般所知道的那樣,操作系統(tǒng)(OS)42是以如下方式構(gòu)成的軟件,即,管理主機2整體而控制主機2內(nèi)的硬件,執(zhí)行用于使應(yīng)用程序能夠使用硬件及SSD3的控制。
文件系統(tǒng)43是為了進行用于文件的操作(制作、保存、更新、刪除等)的控制而使用。例如,也可使用ZFS(Zettabyte File System,Zettabyte文件系統(tǒng))、BtrfS、XFS、ext4(Fourth extended filesystem,第四代擴展文件系統(tǒng))、NTFS(New Technology File System,新技術(shù)文件系統(tǒng))等作為文件系統(tǒng)43。或者,也可使用文件對象系統(tǒng)(例如,Ceph Object Storage Daemon,Ceph對象存儲守護進程)、Key Value Store System(鍵值存儲系統(tǒng))(例如,Rocks DB)作為文件系統(tǒng)43。
各種應(yīng)用軟件線程在應(yīng)用軟件層41上運行。作為應(yīng)用軟件線程的例子,有客戶端軟件、數(shù)據(jù)庫軟件、虛擬機等。
當(dāng)應(yīng)用軟件層41必須將讀取命令或?qū)懭朊钪惖恼埱笏统鲋罶SD3時,應(yīng)用軟件層41將該請求送出至OS42。OS42將該請求送出至文件系統(tǒng)43。文件系統(tǒng)43將該請求翻譯成命令(讀取命令、寫入命令等)。文件系統(tǒng)43將命令送出至SSD3。接收到來自SSD3的應(yīng)答時,文件系統(tǒng)43將該應(yīng)答送出至OS42。OS42將該應(yīng)答送出至應(yīng)用軟件層41。
進而,主機2也可包含裝置性能管理部44。裝置性能管理部44是從SSD陣列內(nèi)的 某SSD接收性能降低的通知,并將所接收到的性能降低的通知發(fā)送到SSD陣列內(nèi)的其他各SSD。
圖9表示依次分配空閑區(qū)塊用于寫入來自主機2的數(shù)據(jù)的動作。
控制器4是將通過空閑區(qū)塊列表60表示的一個空閑區(qū)塊分配為寫入目標(biāo)區(qū)塊62。
控制器4將從主機2接收的寫入數(shù)據(jù)寫入到寫入緩沖器31。然后,控制器4一邊更新查找表(LUT)33,一邊將寫入緩沖器31內(nèi)的寫入數(shù)據(jù)從寫入目標(biāo)區(qū)塊62的前導(dǎo)頁面朝向最終頁面依次寫入。
如果寫入目標(biāo)區(qū)塊62中不存在能夠利用的頁面,則控制器4將寫入目標(biāo)區(qū)塊62作為主動塊(包含數(shù)據(jù)的區(qū)塊)進行管理。因此,控制器4將寫入目標(biāo)區(qū)塊62移動到主動塊列表61。然后,控制器4分配空閑區(qū)塊列表60的空閑區(qū)塊作為新的寫入目標(biāo)區(qū)塊62。
如果主動塊列表61內(nèi)的任一區(qū)塊的所有數(shù)據(jù)通過其更新而無效化,則該區(qū)塊被移動到空閑區(qū)塊列表60。
如果空閑區(qū)塊列表60內(nèi)的空閑區(qū)塊的數(shù)量減少到規(guī)定的臨界值以下,則執(zhí)行形成空閑區(qū)塊的所述垃圾回收(GC)動作。
圖10表示通過控制器4執(zhí)行的垃圾回收(GC)動作。
在圖10中,例示4個區(qū)塊B11、B12、B13、B14被選擇為GC動作的對象的情況??刂破?從有效數(shù)據(jù)(即有效頁面)與無效數(shù)據(jù)(即無效頁面)混合存在的區(qū)塊中選擇應(yīng)設(shè)為GC動作的對象的若干區(qū)塊??刂破?也可通過參照保持與各個物理地址對應(yīng)的有效/無效旗標(biāo)的所述頁面管理表而優(yōu)先選擇無效數(shù)據(jù)的量較多的區(qū)塊作為GC動作的對象??刂破?將作為GC動作的對象的各區(qū)塊內(nèi)的有效數(shù)據(jù)復(fù)制到一個以上的復(fù)制目標(biāo)區(qū)塊。
GC動作所需的復(fù)制目標(biāo)區(qū)塊的個數(shù)是根據(jù)應(yīng)通過GC動作復(fù)制的有效數(shù)據(jù)的量來決定。在圖10中,表示將2個空閑區(qū)塊分配為復(fù)制目標(biāo)區(qū)塊B101、B102的情況。
復(fù)制目標(biāo)區(qū)塊B101、B102被有效數(shù)據(jù)占滿。區(qū)塊B11、B12、B13、B14成為不包含有效數(shù)據(jù)的空閑區(qū)塊。成為空閑區(qū)塊的區(qū)塊B11、B12、B13、B14被移動到空閑區(qū)塊列表60。
圖11表示NAND接口13與多個NAND存儲器芯片的關(guān)系。
在圖11中,例示在NAND接口13所包含的8個信道(CH#1~CH#8)的各者連接著4個NAND存儲器芯片的情況。在控制器4的控制下,NAND接口13能夠變更每一信道的被同時驅(qū)動(并列動作)的NAND存儲器芯片的數(shù)量。
如果每一信道的并列動作的NAND存儲器芯片的數(shù)量設(shè)定為4,則被同時驅(qū)動(并列動作)的NAND存儲器芯片的總數(shù)成為32(最大寫入性能)。
如果每一信道的并列動作的NAND存儲器芯片的數(shù)量設(shè)定為3,則被同時驅(qū)動(并列動作)的NAND存儲器芯片的總數(shù)成為24(最大寫入性能的75%的寫入性能)。
如果每一信道的并列動作的NAND存儲器芯片的數(shù)量設(shè)定為2,則被同時驅(qū)動(并列動作)的NAND存儲器芯片的總數(shù)成為16(最大寫入性能的50%的寫入性能)。
如果每一信道的并列動作的NAND存儲器芯片的數(shù)量設(shè)定為1,則被同時驅(qū)動(并列動作)的NAND存儲器芯片的總數(shù)成為8(最大寫入性能的25%的寫入性能)。
通過變更被同時驅(qū)動(并列動作)的NAND存儲器芯片的數(shù)量(總數(shù)),能夠?qū)SD3的寫入性能、電力消耗、發(fā)熱量進行調(diào)整。
圖12表示工作周期比控制動作。
在用于對NAND存儲器5寫入數(shù)據(jù)的寫入動作中,32個NAND存儲器芯片被間歇驅(qū)動。用于間歇驅(qū)動的周期(工作周期范圍)包含執(zhí)行寫入動作的接通期間、及不執(zhí)行寫入動作的斷開期間。
在接通期間內(nèi),32個即所有NAND存儲器芯片被同時驅(qū)動(并列動作)。各NAND存儲器芯片成為寫入動作進行中的忙碌狀態(tài)。
在斷開期間內(nèi),32個即所有NAND存儲器芯片未被驅(qū)動(動作)。各NAND存儲器芯片成為不執(zhí)行寫入動作及讀出動作的閑置狀態(tài)。
通過控制接通期間相對于1個周期的比例,能夠?qū)SD3的寫入性能、SSD3的寫入性能、電力消耗、發(fā)熱量進行調(diào)整。例如,在1個周期(工作周期范圍)為10秒的情況下,如果接通期間設(shè)定為1秒(工作周期比=10%),則SSD3的寫入性能被限制為最大寫入性能的10%。SSD3的10秒間的平均電力消耗成為最大寫入性能時的電力消耗的1/10。
圖13表示通過送出側(cè)SSD執(zhí)行的性能降低通知處理的例子。
作為送出側(cè)SSD發(fā)揮功能的SSD#2內(nèi)的控制器4視需要開始進行成為所述SSD#2的寫入性能降低的原因的處理(所述內(nèi)部動作)(步驟S11)。在步驟S11中,控制器4推斷SSD#2的寫入性能降低的量,并將表示SSD#2的寫入性能降低的性能降低的通知發(fā)送到主機2。該性能降低的通知包含所推斷的寫入性能(例如,降低后的寫入性能)及原因信息。原因信息表示該寫入性能降低的原因為垃圾回收(GC)動作、熱節(jié)流動作或電力限制節(jié)流動作中的哪一個。
當(dāng)主機2從SSD#2接收到性能降低的通知時,主機2將所接收到的性能降低的通知分別發(fā)送到SSD#1、SSD#3、SSD#4。SSD#1、SSD#3、SSD#4分別作為以使自身的寫入性能降低至所接收到的降低后的寫入性能的方式構(gòu)成的接收側(cè)SSD發(fā)揮功能。SSD#1的控制器執(zhí)行使自身的寫入性能降低至所接收到的降低后的寫入性能的處理(步驟S12)。 在步驟S12中,SSD#1的控制器也可在SSD#1的寫入性能不低于所接收到的降低后的寫入性能的范圍內(nèi)執(zhí)行GC動作?;蛘?,SSD#1的控制器也可在SSD#1的寫入性能不低于所接收到的降低后的寫入性能的范圍內(nèi)執(zhí)行限制被同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比的節(jié)流動作。SSD#1的控制器也可根據(jù)所接收到的原因信息而決定執(zhí)行GC動作或節(jié)流動作中的哪一個。
例如,如果所接收到的原因信息表示GC動作或電力限制(節(jié)流動作),則SSD#1的控制器能夠執(zhí)行GC動作或節(jié)流動作的任一者。
另一方面,如果表示寫入性能降低的原因為“用于防止過熱的熱保護”(熱節(jié)流動作),則SSD#1的控制器不通過GC動作而通過節(jié)流動作使自身的寫入性能降低。由此,能夠抑制SSD陣列整體的過度的溫度上升。
同樣地,SSD#3、SSD#4也執(zhí)行使自身的寫入性能降低至所接收到的降低后的寫入性能的處理(步驟S13、S14)。
圖14表示通過送出側(cè)SSD執(zhí)行的性能降低通知處理的另一例。
作為送出側(cè)SSD發(fā)揮功能的SSD#2內(nèi)的控制器4視需要開始進行成為所述SSD#2的寫入性能降低的原因的處理(所述內(nèi)部動作)(步驟S21)。在步驟S21中,控制器4推斷SSD#2的寫入性能降低的量,并將性能降低的通知分別發(fā)送到SSD#1、SSD#3、SSD#4。該性能降低的通知包含所推斷的寫入性能(例如,降低后的寫入性能)及所述原因信息。
SSD#1、SSD#3、SSD#4執(zhí)行使自身的寫入性能降低至所接收到的降低后的寫入性能的處理(步驟S22、S23、S24)。
圖15的流程圖表示通過送出側(cè)SSD執(zhí)行的GC動作及性能降低通知處理的次序。
送出側(cè)SSD的控制器4定期檢查剩余空閑區(qū)塊的數(shù)量(步驟S31),并判定剩余空閑區(qū)塊的數(shù)量是否為臨界個數(shù)以下(步驟S32)。
如果剩余空閑區(qū)塊的數(shù)量為臨界個數(shù)以下(步驟S32的是(YES)),則控制器4選擇無效數(shù)據(jù)量較多的高階的若干區(qū)塊作為GC對象區(qū)塊(GC候補)(步驟S33)??刂破?是根據(jù)GC動作中必須復(fù)制的數(shù)據(jù)量、即GC對象區(qū)塊各自的有效數(shù)據(jù)的量,而推斷GC期間中的送出側(cè)SSD的寫入性能(例如,由GC引起的降低后的寫入性能)(步驟S34)。
控制器4是將包含所推斷出的寫入性能與原因信息(GC動作)的性能降低的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD,由此,將送出側(cè)SSD的寫入性能降低、送出側(cè)SSD的寫入性能降低至何種程度的性能、及該寫入性能降低的原因通知給主機2或SSD陣列內(nèi)的其他各SSD(步驟S35)。
控制器4執(zhí)行通過將GC對象區(qū)塊各自的有效數(shù)據(jù)復(fù)制到一個以上的復(fù)制目標(biāo)區(qū)塊 而增加空閑區(qū)塊的數(shù)量的GC動作(步驟S36)。在步驟S36中,控制器4并列執(zhí)行將從主機2接收的寫入數(shù)據(jù)(主機數(shù)據(jù))寫入到寫入目標(biāo)區(qū)塊的處理及GC動作。在該情況下,控制器4也可根據(jù)GC動作中必須復(fù)制的數(shù)據(jù)量,決定寫入到寫入目標(biāo)區(qū)塊的來自主機2的寫入數(shù)據(jù)的量與用于GC動作而復(fù)制到復(fù)制目標(biāo)區(qū)塊的數(shù)據(jù)的量的比率,以該比率并列執(zhí)行將寫入數(shù)據(jù)寫入的處理及GC動作。
如果GC動作已完成(步驟S37的是),則控制器4將送出側(cè)SSD的寫入性能恢復(fù)的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD,由此,將送出側(cè)SSD的寫入性能恢復(fù)為通常狀態(tài)時的寫入性能通知給主機2或SSD陣列內(nèi)的其他各SSD(步驟S38)。寫入性能恢復(fù)的通知中也可包含表示通常狀態(tài)時的寫入性能的值(例如,1G字節(jié)/秒)。
圖16的流程圖表示通過送出側(cè)SSD執(zhí)行的熱節(jié)流動作及性能降低通知處理的次序。
送出側(cè)SSD的控制器4是定期檢查通過溫度傳感器7檢測的送出側(cè)SSD內(nèi)的溫度,并判定該檢測溫度是否為臨界溫度T1以上(步驟S41)。
如果檢測溫度為臨界溫度T1以上(步驟S41的是),則控制器4決定同時驅(qū)動的NAND存儲器芯片的數(shù)量或所述工作周期比(步驟S42)??刂破?是根據(jù)所決定的同時驅(qū)動的NAND存儲器芯片的數(shù)量或所決定的工作周期比,而推斷溫度保護期間(熱節(jié)流動作期間)中的送出側(cè)SSD的寫入性能(例如,由熱節(jié)流動作引起的降低后的寫入性能)(步驟S43)。
控制器4是將包含所推斷出的寫入性能與原因信息(熱節(jié)流動作)的性能降低的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD,由此,將送出側(cè)SSD的寫入性能降低、送出側(cè)SSD的寫入性能降低至何種程度的性能、及該寫入性能降低的原因通知給主機2或SSD陣列內(nèi)的其他各SSD(步驟S44)。
控制器4是通過根據(jù)步驟S42中的決定來限制同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比而開始熱節(jié)流動作(步驟S45)。通過該熱節(jié)流動作,而送出側(cè)SSD的發(fā)熱量減少。
控制器4是定期檢查通過溫度傳感器7檢測的送出側(cè)SSD內(nèi)的溫度,并判定該檢測溫度是否已降低至臨界溫度T2以下(步驟S46)。臨界溫度T2也可設(shè)定為較臨界溫度T1低的溫度。
如果檢測溫度為臨界溫度T2以下(步驟S46的是),則控制器4通過將同時驅(qū)動的NAND存儲器芯片的數(shù)量的限制或工作周期比的限制解除而結(jié)束熱節(jié)流動作(步驟S47)。然后,控制器4將送出側(cè)SSD的寫入性能恢復(fù)的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD,由此,將送出側(cè)SSD的寫入性能恢復(fù)為通常狀態(tài)時的寫入性能通知給主機2 或SSD陣列內(nèi)的其他各SSD(步驟S48)。寫入性能恢復(fù)的通知中也可包含表示通常狀態(tài)時的寫入性能的值(例如,1G字節(jié)/秒)。
在圖16中,對根據(jù)檢測溫度對2個狀態(tài)(熱節(jié)流動作的開始、熱節(jié)流動作的停止)進行切換的動作進行了說明,但也可執(zhí)行根據(jù)檢測溫度而分多個階段切換同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比的控制。例如,當(dāng)檢測溫度降低至臨界溫度T1與臨界溫度T2之間的臨界溫度T3時,也可重新決定同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比,并根據(jù)重新決定的NAND存儲器芯片的數(shù)量或工作周期比而限制同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比。在該情況下,控制器4也可根據(jù)重新決定的NAND存儲器芯片的數(shù)量或工作周期比而再次推斷寫入性能降低的量,并將包含所推斷出的寫入性能與原因信息(熱節(jié)流動作)的性能降低的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD。
圖17的流程圖表示通過送出側(cè)SSD執(zhí)行的電力限制節(jié)流動作及性能降低通知處理的次序。
送出側(cè)SSD的控制器4是根據(jù)送出側(cè)SSD的電力消耗與送出側(cè)SSD所容許的最大電力的關(guān)系判定是否應(yīng)開始電力限制、即是否滿足電力限制開始條件(步驟S51)。送出側(cè)SSD的電力消耗是根據(jù)每1個NAND存儲器芯片的電力消耗量與同時驅(qū)動的NAND存儲器芯片的數(shù)量(或工作周期比)的函數(shù)而計算。如果送出側(cè)SSD的電力消耗大于主機2對送出側(cè)SSD容許的最大電力,則控制器4是以送出側(cè)SSD的電力消耗成為送出側(cè)SSD所容許的最大電力以下的方式,根據(jù)送出側(cè)SSD所容許的最大電力與NAND存儲器芯片各自的電力消耗量(每一芯片的電力消耗量),決定同時驅(qū)動的NAND存儲器芯片的數(shù)量或所述工作周期比(步驟S52)。
控制器4是根據(jù)所決定的同時驅(qū)動的NAND存儲器芯片的數(shù)量或所決定的工作周期比,推斷電力限制期間(電力限制節(jié)流動作期間)中的送出側(cè)SSD的寫入性能(例如,由電力限制節(jié)流動作引起的降低后的寫入性能)(步驟S53)。
控制器4是將包含所推斷出的寫入性能與原因信息(熱節(jié)流動作)的性能降低的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD,由此,將送出側(cè)SSD的寫入性能降低、送出側(cè)SSD的寫入性能降低至何種程度的性能、及該寫入性能降低的原因通知給主機2或SSD陣列內(nèi)的其他各SSD(步驟S54)。
控制器4通過根據(jù)步驟S52中的決定限制同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比而開始電力限制節(jié)流動作(步驟S55)。通過該電力限制節(jié)流動作而送出側(cè)SSD的電力消耗降低。
主機2也可視需要變更送出側(cè)SSD所容許的最大電力。例如,如果主機2期望增加SSD陣列整體的寫入性能,則主機2也可增加應(yīng)對各SSD容許的最大電力。在該情況下,控制器4是根據(jù)送出側(cè)SSD所容許的變更后的最大電力,判定是否不具有電力限制的必要性(步驟S56)。
如果不具有電力限制的必要性(步驟S56的是),則控制器4通過將同時驅(qū)動的NAND存儲器芯片的數(shù)量的限制或工作周期比的限制解除而結(jié)束電力限制節(jié)流動作(步驟S57)。然后,控制器4將送出側(cè)SSD的寫入性能恢復(fù)的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD,由此,將送出側(cè)SSD的寫入性能恢復(fù)為通常狀態(tài)時的寫入性能通知給主機2或SSD陣列內(nèi)的其他各SSD(步驟S58)。寫入性能恢復(fù)的通知中也可包含表示通常狀態(tài)時的寫入性能的值(例如,1G字節(jié)/秒)。
另外,主機2為了使信息處理系統(tǒng)1的電力消耗減少,主機2也可使應(yīng)對各SSD容許的最大電力減少。在該情況下,控制器4是以送出側(cè)SSD的電力消耗成為送出側(cè)SSD所容許的變更后的最大電力以下的方式,根據(jù)送出側(cè)SSD所容許的變更后的最大電力與NAND存儲器芯片各自的電力消耗量(每一芯片的電力消耗量),重新決定同時驅(qū)動的NAND存儲器芯片的數(shù)量或所述工作周期比。然后,控制器4根據(jù)重新決定的NAND存儲器芯片的數(shù)量或工作周期比限制同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比??刂破?是根據(jù)重新決定的NAND存儲器芯片的數(shù)量或工作周期比再次推斷寫入性能降低的量,并將包含所推斷出的寫入性能與原因信息(電力限制節(jié)流動作)的性能降低的通知發(fā)送到主機2或SSD陣列內(nèi)的其他各SSD。
圖18表示作為所述接收側(cè)SSD發(fā)揮功能的SSD3的構(gòu)成例。
接收側(cè)SSD包含寫入性能調(diào)整部25而代替送出側(cè)SSD的寫入性能降低通知部24。
寫入性能調(diào)整部25是從主機2或其他SSD接收表示其他SSD的寫入性能降低的通知,并根據(jù)由該通知指定的寫入性能降低的量及由該通知指定的性能降低的原因,而執(zhí)行使接收側(cè)SSD的寫入性能降低的處理。
如果所接收到的通知中包含的原因信息為GC動作或電力限制節(jié)流,則寫入性能調(diào)整部25也可執(zhí)行GC動作。在該情況下,寫入性能調(diào)整部25根據(jù)寫入性能降低的量而決定寫入到寫入目標(biāo)區(qū)塊的來自主機2的寫入數(shù)據(jù)的量與用于GC動作而復(fù)制到復(fù)制目標(biāo)區(qū)塊的數(shù)據(jù)的量的比率。然后,寫入性能調(diào)整部25根據(jù)該比率使用垃圾回收動作控制部21執(zhí)行GC動作。
例如,如果寫入數(shù)據(jù)的量與用于GC動作而復(fù)制的數(shù)據(jù)的量的比率為1比1,則每當(dāng)將規(guī)定量的寫入數(shù)據(jù)寫入到寫入目標(biāo)區(qū)塊時,也可執(zhí)行將規(guī)定量的有效數(shù)據(jù)從GC對 象區(qū)塊復(fù)制到復(fù)制目標(biāo)區(qū)塊的動作。
如果所接收到的通知中包含的原因信息為熱節(jié)流,則寫入性能調(diào)整部25不執(zhí)行GC動作而通過節(jié)流動作使接收側(cè)SSD的寫入性能降低。在該情況下,寫入性能調(diào)整部25是根據(jù)寫入性能降低的量,而決定同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比,并根據(jù)所決定的同時驅(qū)動的NAND存儲器芯片的數(shù)量或所決定的工作周期比,而限制同時驅(qū)動的NAND存儲器芯片的數(shù)量或工作周期比。
圖19的流程圖表示通過接收側(cè)SSD執(zhí)行的寫入性能降低處理的次序。
當(dāng)接收側(cè)SSD的控制器4從主機2或其他SSD接收到其他SSD的寫入性能降低的通知時(步驟S61的是),控制器4是根據(jù)該接收到的通知中包含的原因信息而檢查其他SSD的寫入性能降低的原因(步驟S62)。
如果其他SSD的寫入性能降低的原因為GC動作(步驟S63的是),則接收側(cè)SSD的控制器4通過預(yù)先執(zhí)行GC動作或者執(zhí)行節(jié)流動作而使接收側(cè)SSD的寫入性能降低至與其他SSD的降低后的寫入性能大致相等的性能(步驟S64)。
如果其他SSD的寫入性能降低的原因為熱保護(熱節(jié)流)(步驟S65的“是”),則接收側(cè)SSD的控制器4通過執(zhí)行節(jié)流動作而使接收側(cè)SSD的寫入性能降低至與其他SSD的降低后的寫入性能大致相等的性能(步驟S66)。為了防止SSD陣列整體的溫度過度上升,而禁止接收側(cè)SSD預(yù)先執(zhí)行GC動作。
如果其他SSD的寫入性能降低的原因為電力限制(電力限制節(jié)流)(步驟S67的是),則接收側(cè)SSD的控制器4通過執(zhí)行節(jié)流動作而使接收側(cè)SSD的寫入性能降低至與其他SSD的降低后的寫入性能大致相等的性能(步驟S68)?;蛘撸邮諅?cè)SSD的控制器4也可在接收側(cè)SSD的電力消耗不超過接收側(cè)SSD所容許的最大電力的范圍內(nèi)預(yù)先執(zhí)行GC動作。
另外,當(dāng)接收側(cè)SSD的控制器4從主機2或其他SSD接收到其他SSD的寫入性能恢復(fù)的通知時,控制器4通過停止GC動作或者停止節(jié)流動作而執(zhí)行將接收側(cè)SSD的寫入性能恢復(fù)為通常狀態(tài)時的寫入性能(例如,1G字節(jié)/秒)的處理。
圖20的流程圖表示接收到性能降低通知時通過接收側(cè)SSD執(zhí)行的GC動作的次序。
接收側(cè)SSD的控制器4是根據(jù)寫入性能降低的量,計算寫入到寫入目標(biāo)區(qū)塊的來自主機2的寫入數(shù)據(jù)的量與用于GC動作而復(fù)制到復(fù)制目標(biāo)區(qū)塊的數(shù)據(jù)的量的比率(步驟S71),并以該比率執(zhí)行GC動作(步驟S72)。
例如,在接收側(cè)SSD的控制器4以寫入性能(1G字節(jié)/秒)進行動作且送出側(cè)SSD的寫入性能降低至512M字節(jié)/秒的情況下,接收側(cè)SSD的控制器4也可使接收側(cè)SSD的 寫入性能降低至512M字節(jié)/秒且將剩余的寫入性能(此處為512M字節(jié)/秒)用于GC動作。在該情況下,寫入數(shù)據(jù)的量與用于GC動作而復(fù)制的數(shù)據(jù)的量的比率成為1比1。在步驟S72中,以來自主機2的寫入數(shù)據(jù)的量與用于GC動作而復(fù)制的數(shù)據(jù)的量的比率成為1比1的方式并行執(zhí)行寫入動作與GC動作。
圖21的流程圖表示接收到性能降低通知時通過接收側(cè)SSD執(zhí)行的節(jié)流動作的次序。
接收側(cè)SSD的控制器4是根據(jù)寫入性能降低的量而決定在接收側(cè)SSD內(nèi)同時驅(qū)動的NAND存儲器芯片的數(shù)量或用于使接收側(cè)SSD內(nèi)的NAND存儲器芯片間歇動作的工作周期比(步驟S81),以該NAND存儲器芯片的數(shù)量或工作周期比一邊執(zhí)行節(jié)流動作,一邊執(zhí)行寫入動作(步驟S82)。
圖22表示具有送出側(cè)SSD及接收側(cè)SSD該兩者的功能的SSD的構(gòu)成例。
具有送出側(cè)SSD及接收側(cè)SSD該兩者的功能的SSD3的控制器4包含所述寫入性能降低通知部24與所述寫入性能調(diào)整部25該兩者。
圖23表示作為主機2發(fā)揮功能的信息處理裝置的硬件構(gòu)成例。
該信息處理裝置是作為服務(wù)器電腦或個人電腦而實現(xiàn)。該信息處理裝置包含處理器(CPU)101、主存儲器102、BIOS(Basic Input Output System,基本輸入輸出系統(tǒng))-ROM(Read Only Memory,只讀存儲器)103、網(wǎng)絡(luò)控制器105、周邊接口控制器106、控制器107、及嵌入式控制器(EC,Embedded Controller)108等。
處理器101是以控制該信息處理裝置的各組件的動作的方式構(gòu)成的CPU。該處理器101執(zhí)行從多個SSD3的任一者或其他存儲裝置載入到主存儲器102的各種程序。主存儲器102包括DRAM之類的隨機存取存儲器。通過處理器101執(zhí)行的程序包含所述應(yīng)用軟件層41、OS42、文件系統(tǒng)43、及裝置性能管理部44。
另外,處理器101也執(zhí)行存儲在作為非易失性存儲器的BIOS-ROM103的基本輸入輸出系統(tǒng)(BIOS)。BIOS是用于硬件控制的系統(tǒng)程序。
網(wǎng)絡(luò)控制器105是有線LAN(Local Area Network局域網(wǎng))控制器、無線LAN控制器之類的通訊裝置。周邊接口控制器106是以執(zhí)行與USB(Universal Serial Bus,通用串行總線)裝置這樣的周邊裝置的通訊的方式構(gòu)成。
控制器107是以執(zhí)行與多個連接器107A分別連接的裝置的通訊的方式構(gòu)成。在本實施方式中,多個SSD3分別連接于多個連接器107A??刂破?07也可為具有RAID控制器的功能的芯片組。如果處理器101包含PCIe開關(guān),則多個SSD3各自也可經(jīng)由PCIe總線直接連接于處理器101。
EC108是作為以執(zhí)行信息處理裝置的電力管理的方式構(gòu)成的系統(tǒng)控制器發(fā)揮功能。 EC108是根據(jù)用戶對電源開關(guān)的操作而將信息處理裝置通電及斷電。EC108是作為單片微控制器這樣的處理電路而實現(xiàn)。EC108也可內(nèi)置于控制鍵盤(KB)等輸入裝置的鍵盤控制器。
圖24表示包含多個SSD3與主機2的信息處理裝置的構(gòu)成例。
該信息處理裝置具備能夠收容于機架的較薄的箱形的殼體201。多個SSD3也可配置在殼體201內(nèi)。在該情況下,各SSD3也可能夠拆卸地插入至設(shè)置在殼體201的前表面201A的插槽。
系統(tǒng)板(母板)202配置在殼體201內(nèi)。在系統(tǒng)板(母板)202上安裝著包含CPU101、存儲器102、網(wǎng)絡(luò)控制器105、控制器107的各種電子零件。這些電子零件作為主機2發(fā)揮功能。
如以上說明所述,根據(jù)本實施方式的送出側(cè)SSD,在通過送出側(cè)SSD開始內(nèi)部動作的情況下,推斷將從主機2接收的數(shù)據(jù)寫入到NAND存儲器5的寫入動作的性能降低的量,并將該推斷的寫入動作的性能降低的量通知給主機2或SSD陣列內(nèi)的其他一個以上的SSD。因此,能夠?qū)榱耸龟嚵袃?nèi)的SSD能夠協(xié)調(diào)動作而有用的信息提供給主機2或其他SSD,由此,SSD陣列內(nèi)的其他SSD能夠有效利用送出側(cè)SSD的寫入性能降低的期間。
另外,在本實施方式中,作為非易失性存儲器而例示了NAND存儲器。但是,本實施方式的功能也可應(yīng)用于例如MRAM(Magnetoresistive Random Access Memory,磁阻式隨機存取存儲器)、PRAM(Phase change Random Access Memory,相變隨機存取存儲器)、ReRAM(Resistive Random Access Memory,電阻式隨機存取存儲器)、或FeRAM(Ferroelectric Random Access Memory,鐵電隨機存取存儲器)之類的其他各種非易失性存儲器。
對本發(fā)明的若干實施方式進行了說明,但這些實施方式是作為例而提出來者,并未意圖限定發(fā)明的范圍。這些新穎的實施方式能以其他多種方式實施,且能夠在不脫離發(fā)明的主旨的范圍內(nèi)進行各種省略、置換、變更。這些實施方式或其變化包含在發(fā)明的范圍或主旨中,并且包含在權(quán)利要求書所記載的發(fā)明及其均等的范圍。