TW202311970A - 資訊處理裝置 - Google Patents
資訊處理裝置 Download PDFInfo
- Publication number
- TW202311970A TW202311970A TW111105596A TW111105596A TW202311970A TW 202311970 A TW202311970 A TW 202311970A TW 111105596 A TW111105596 A TW 111105596A TW 111105596 A TW111105596 A TW 111105596A TW 202311970 A TW202311970 A TW 202311970A
- Authority
- TW
- Taiwan
- Prior art keywords
- aforementioned
- memory system
- write
- response
- command
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
- Hardware Redundancy (AREA)
- Memory System (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明之實施形態,係提供一種能夠將針對發生有異常結束或者是非預期性地作了再啟動的記憶體系統之未完成之寫入作恢復的資訊處理裝置。
若依據實施形態,則資訊處理裝置,係具備有非揮發性記憶體與CPU。CPU,係在非揮發性記憶體中儲存第1資料,並進行被與第1資料相互附加有關連之第1寫入要求的對於記憶體系統之第1次的送訊,並且將包含有相當於第1寫入要求之資訊的第1管理資料儲存在非揮發性記憶體中。CPU,係因應於從記憶體系統而接收了針對第1次所被送訊的第1寫入要求之第1回應一事,而將代表已接收了針對第1次所被送訊的第1寫入要求之第1回應一事的資訊追加至第1管理資料中。CPU,在接收了第1回應之後,係因應於從記憶體系統而接收了針對第1次所被送訊的第1寫入要求之第2回應一事,而從非揮發性記憶體來將第1資料與第1管理資料刪除。
Description
本發明之實施形態,係有關於控制非揮發性記憶體之技術。
[關連申請案]
本申請案,係以日本專利申請2021-144701號(申請日:2021年9月6日)作為基礎申請,並享受其優先權。本申請案,係藉由參照此基礎申請案,而包含基礎申請案之所有的內容。
近年來,具備有非揮發性記憶體之記憶體系統係廣泛普及。作為此種記憶體系統之其中一者,具備有NAND型快閃記憶體之固態硬碟(SSD)係為周知。SSD,係作為各種的電腦裝置之主儲存裝置而被作使用。
記憶體系統,例如,在從主機而受理了1個的寫入要求的情況時,係將伴隨著受理了該寫入要求一事而從主機所收訊了的使用者資料寫入至非揮發性記憶體中,並對於主機回送回應。
或者是,記憶體系統,係會有「在藉由從主機所受理了的複數之寫入要求而被要求有寫入之使用者資料之總量到達了特定之資料單位之後,將該特定之資料單位之使用者資料寫入至非揮發性記憶體中,並對於主機而回送與複數之寫入要求之各者分別相互對應之回應」的情形。特定之資料單位,例如,係為能夠藉由一次的資料寫入動作而寫入至非揮發性記憶體中之資料量。亦即是,記憶體系統,係能夠使用「並不立即地實行與所受理了的1個的寫入要求相對應之寫入,而是在藉由複數之寫入要求而被要求有寫入之使用者資料之總量到達了特定之資料單位之後,再實行與該些之複數之寫入要求相對應之寫入」的機制。以下,係將此機制,亦稱作延遲寫入完備(Delayed Write Completion)。
在延遲寫入完備(Delayed Write Completion)中,例如,由於係將包含有與複數之寫入要求分別相對應之複數之使用者資料的特定之資料單位(例如,寫入單位)之使用者資料寫入至非揮發性記憶體中,因此,係能夠對於非揮發性記憶體之記憶區域有效率地作利用。但是,在延遲寫入完備(Delayed Write Completion)中,與各個的寫入要求相對應之寫入以及回應,係會有一直延遲至直到受理與寫入單位之使用者資料相對應之複數之寫入要求為止的可能性。
另外,在記憶體系統中,係會有被設置有將從主機而對於寫入作了要求的使用者資料暫時性地作記憶之記憶區域(亦即是,緩衝)的情形。於此情況,使用者資料,係被從緩衝而傳輸至非揮發性記憶體處,並被寫入至非揮發性記憶體中。
又,記憶體系統,係會有具備有斷電保護(PLP)功能的情形。PLP功能,係為用以「當從外部電源所供給至記憶體系統處的電力被作了遮斷的情況時,使用被積蓄在記憶體系統內之蓄電裝置中的電荷之能量,來將被儲存在緩衝內並且尚未被寫入至非揮發性記憶體中的使用者資料等寫入至非揮發性記憶體中」之功能。藉由PLP功能,記憶體系統,就算是在發生有不正常之斷電等的情況時,也能夠將從主機而對於寫入作了要求並被儲存於緩衝中的使用者資料寫入至非揮發性記憶體中。
另一方面,記憶體系統,係亦會有並不具備能夠使所儲存之資料被PLP功能所保護之緩衝的情況。於此情況,記憶體系統,在從主機而受理寫入要求起直到將被與該寫入要求相互附加有關連之使用者資料寫入至非揮發性記憶體中為止的期間中,若是發生有異常結束或者是非預期地而作了再啟動,則係無法完成與所受理了的寫入要求相對應之寫入處理。進而,若是被進行有由延遲寫入完備(Delayed Write Completion)所致之寫入,則記憶體系統,係會有無法完成與所受理了的複數之寫入要求相對應之寫入處理的可能性。
本發明之實施形態,係提供一種能夠將針對發生有異常結束或者是非預期性地作了再啟動的記憶體系統之未完成之寫入作恢復的資訊處理裝置。
若依據實施形態,則資訊處理裝置,係能夠與記憶體系統作連接。資訊處理裝置,係具備有非揮發性記憶體與處理器。處理器,係在非揮發性記憶體中儲存第1資料。處理器,係進行被與第1資料相互附加有關連之第1寫入要求的對於記憶體系統之第1次的送訊。處理器,係將包含有相當於第1寫入要求之資訊的第1管理資料儲存在非揮發性記憶體中。處理器,係因應於從記憶體系統而接收了針對第1次所被送訊的第1寫入要求之第1回應一事,而將代表已接收了針對第1次所被送訊的第1寫入要求之第1回應一事的資訊追加至第1管理資料中。處理器,在接收了第1回應之後,係因應於從記憶體系統而接收了針對第1次所被送訊的第1寫入要求之第2回應一事,而從非揮發性記憶體來將第1資料與第1管理資料刪除。
以下,參考圖面,針對實施形態作說明。
首先,參照圖1,針對包含有實施形態之資訊處理裝置的資訊處理系統1之構成作說明。資訊處理系統1,係包含有資訊處理裝置2和記憶體系統3。
資訊處理裝置2,係可為將大量且多樣化的資料保存於記憶體系統3中之儲存伺服器,亦可為個人電腦。以下,係將資訊處理裝置2亦稱作主機2。
記憶體系統3,係為以對於如同NAND型快閃記憶體一般之非揮發性記憶體而寫入資料並從非揮發性記憶體而將資料讀出的方式所構成之半導體儲存裝置。記憶體系統,係亦被稱作儲存裝置。記憶體系統,例如係可作為固態硬碟(SSD)而被實現。
記憶體系統3,係可作為主機2之儲存設備而被作使用。記憶體系統3,係可內藏於主機2中,亦可經由纜線或網路而被與主機2作連接。
用以將主機2與記憶體系統3相互作連接之介面,係準據於PCI Express(PCIe)(註冊商標)、Ethernet(註冊商標)、Fibre channel、NVM Express(NVMe)(註冊商標)等之規格。
以下,針對主機2與記憶體系統3之各別之構成例作說明。
(主機2之構成例)
主機2,例如,係具備有CPU21、隨機存取記憶體(RAM)22、儲存設備介面(儲存設備I/F)23以及非揮發性隨機存取記憶體(NVRAM)24。此些之CPU21、RAM22、儲存設備I/F23以及NVRAM24,係亦可經由匯流排20而被作連接。
CPU21,例如係為至少1個的處理器。CPU21,係對於主機2內之各種的組件之動作進行控制。
RAM22,係為揮發性記憶體。RAM22,例如,係作為動態隨機存取記憶體(DRAM)或靜態隨機存取記憶體(SRAM)而被實現。RAM22之記憶區域,例如,係被分配來作為作業系統(OS)221、驅動器22、各種之應用程式的儲存區域。以下,係亦將應用程式(application program)單純稱作應用(application)。
儲存設備I/F23,係作為對於主機2與記憶體系統3之間之通訊作控制的控制電路而起作用。儲存設備I/F23,係對於主機2而送訊各種之指令、例如送訊輸入輸出(I/O)指令、各種控制指令。在I/O指令中,例如,係包含有寫入指令、讀取指令等。在控制指令中,例如,係包含有清除(flush)指令、虛擬PLP驅動模式變遷指令、虛擬PLP驅動模式解除指令、恢復模式變遷指令、恢復模式解除指令。虛擬PLP驅動模式變遷指令,係亦被稱作第1模式變遷指令。虛擬PLP驅動模式解除指令,係亦被稱作第1模式解除指令。恢復模式變遷指令,係亦被稱作第2模式變遷指令。恢復模式解除指令,係亦被稱作第2模式解除指令。
清除指令,係為用以將並未被寫入至記憶體系統3之NAND型快閃記憶體5中的使用者資料從主機2或者是快閃記憶體3內之記憶區域而寫入至記憶體系統3之NAND型快閃記憶體5中的指令。
第1模式變遷指令,係為用以使記憶體系統3從通常驅動模式而變遷至虛擬斷電保護驅動模式(虛擬PLP驅動模式)的指令。第1模式變遷指令,例如,係包含有發行了此第1模式變遷指令的主機2之辨識資訊(主機ID)。主機ID,係為能夠使記憶體系統3唯一性地特定出1個的主機之資訊。作為主機ID,例如,係使用藉由NVMe規格所規定的Host Identifier。
在記憶體系統3處,係將通常驅動模式與虛擬PLP驅動模式之其中一方設定為第1動作模式。主機2,係對於被變遷至虛擬PLP驅動模式之記憶體系統3(亦即是,第1動作模式為虛擬PLP驅動模式之記憶體系統3),而提供虛擬性的斷電保護功能(虛擬PLP功能)。虛擬PLP功能,係為使用被儲存於NVRAM24中之資料,來將「起因於主機2之異常結束、由於記憶體系統3之不正常斷電等所導致之異常結束或者是記憶體系統3之非預期之再啟動所造成的無法完成之對於記憶體系統3(更詳細而言,NAND型快閃記憶體5)之使用者資料之寫入」作恢復之功能。
以下,係將由主機2藉由第1模式變遷指令而被變遷至虛擬PLP驅動模式之記憶體系統3,亦稱作對於主機2而以虛擬PLP驅動模式來動作的記憶體系統3。另外,主機2,對於並未被變遷至虛擬PLP驅動模式之記憶體系統3(亦即是,第1動作模式為通常驅動模式之記憶體系統3),係並不提供虛擬PLP功能。
第1模式解除指令,係為用以使記憶體系統3從虛擬PLP驅動模式而變遷至通常驅動模式的指令。
第2模式變遷指令,係為用以使記憶體系統3從通常寫入模式而變遷至恢復寫入模式的指令。在記憶體系統3處,係將通常寫入模式與恢復寫入模式之其中一方設定為第2動作模式。在變遷至了恢復寫入模式之記憶體系統3(亦即是,第2動作模式為恢復寫入模式之記憶體系統3)處,與從主機2所受理了的寫入指令相對應之寫入處理,係保證會以寫入指令之受理順序而被實行。另外,在並未變遷至恢復寫入模式之記憶體系統3(亦即是,第2動作模式為通常寫入模式之記憶體系統3)處,與從主機2所受理了的寫入指令相對應之寫入處理,係會有並不保證會以寫入指令之受理順序而被實行的可能性。
第2模式解除指令,係為用以使記憶體系統3從恢復寫入模式而變遷至通常寫入模式的指令。
NVRAM24,係為非揮發性記憶體。作為NVRAM24,例如,係使用有MRAM(磁阻式隨機存取記憶體,Magnetoresistive Random Access Memory)、PRAM(相變化隨機存取記憶體,Phase change Random Access Memory)、ReRAM(可變電阻式隨機存取記憶體,Resistive Random Access Memory)或者是FeRAM(鐵電式隨機存取記憶體,Ferroelectric Random Access Memory)。NVRAM24之記憶區域,係被分配為在由主機2所致之處理中所被使用之各種之資料的儲存區域、作為資料緩衝242而被利用之緩衝區域、提交佇列(SQ)243之區域、完成佇列(CQ)244之區域、指標清單246之儲存區域。
資料緩衝242,係為用以將應被寫入至記憶體系統3之NAND型快閃記憶體5中的使用者資料暫時性地作記憶之記憶區域。
提交佇列243,係為為了從主機2來對於記憶體系統3送訊指令而被儲存有指令之佇列。
完成佇列244,係為為了從記憶體系統3來對於主機2回送回應(完成通知(completion))而被儲存有回應之佇列。記憶體系統3,係能夠針對1個的寫入指令而回應複數之完成通知。
另外,主機2,係亦可針對1個的記憶體系統3,而針對指令之各種類之每一者、例如針對「管理指令用」和像是讀取指令與寫入指令一般之「輸入輸出指令用」,而分別設置相異之提交佇列243和完成佇列244。又,主機2,係亦可針對1個的記憶體系統3,而設置複數之「輸入輸出指令用」之提交佇列243/完成佇列244。在本實施形態中,雖係構成為將提交佇列243/完成佇列244設置在NVRAM24處,但是,係亦可將除了寫入指令以外的指令用之提交佇列243/完成佇列244設置在RAM22處。
指標清單246,係為代表「被與寫入指令或讀取指令相互附加有關連之使用者資料的在資料緩衝242上之位置」之指標的清單。在本實施形態中,指標清單246雖係構成為被儲存在NVRAM24中,但是,指標清單246係亦可被儲存在RAM22中。
於「在由主機2所致之處理中所使用的各種資料」中,例如,係存在有虛擬PLP驅動器ID241、鎖死資料清單(locked data list)245。
虛擬PLP驅動器ID241,係代表由主機2而被變遷至虛擬PLP驅動模式之記憶體系統3的辨識資訊(驅動器ID)。驅動器ID,係為能夠使主機2唯一性地特定出1個的記憶體系統3之資訊。另外,當主機2使複數之記憶體系統3分別變遷至虛擬PLP驅動模式的情況時,於NVRAM24處,係被儲存有分別與複數之記憶體系統3相對應的複數之虛擬PLP驅動器ID241。
鎖死資料清單245,係為用以對於從主機2而對於記憶體系統3所發行的寫入指令之處理狀況作管理之資料。1個的鎖死資料清單245,例如係對應於1個的記憶體系統3。更詳細而言,1個的鎖死資料清單245,例如係被與所對應之1個的記憶體系統3之虛擬PLP驅動器ID241相互附加有關連性。
與複數之記憶體系統3分別相對應之複數之鎖死資料清單245,係亦可被儲存於NVRAM24中。於此情況,複數之鎖死資料清單245,係分別被與所對應之1個的記憶體系統3之虛擬PLP驅動器ID241相互附加有關連性。亦即是,主機2,係能夠使用記憶體系統3之虛擬PLP驅動器ID241,而特定出應針對該記憶體系統3而使用之1個的鎖死資料清單245。
圖2,係對於在主機2處所被使用之鎖死資料清單245之構成例作展示。鎖死資料清單245,係可包含有分別與從主機2所被送訊至記憶體系統3處之1個以上的寫入指令相對應之1個以上的登錄(entry)。各登錄,例如,係包含有SQ登錄資訊欄位、完成通知順序欄位、資料區域管理資訊欄位、以及完成通知狀態欄位。
SQ登錄資訊欄位,係展示有代表所對應的寫入指令之資訊(SQ登錄資訊)。SQ登錄資訊,係包含有指令之種類、內容、於實行時所必要之參數等之資訊。具體而言,SQ登錄資訊欄位,例如,係展示有指令操作碼(Command operation code)、資料指標、指令ID、名稱空間ID、LBA(邏輯區塊位址)、以及資料長度。
指令操作碼,係為代表所對應的指令(於此係為寫入指令)之種類之碼。作為指令操作碼,例如,係使用藉由NVMe規格所規定的Opcode。
資料指標,係為代表在主機2處應因應於所對應之寫入指令而被作寫入的使用者資料所被儲存之場所的資訊。作為資料指標,例如,係使用藉由NVMe規格所規定的Physical Region Page(PRP)登錄或者是其之清單、Scatter Gather List(SGL)。當在資料量為多的情況中而使用有PRP的情況時,PRP之登錄的清單之指標,係被儲存在SQ登錄資訊欄位中。在使用有SGL的情況時,僅有SGL之最初之段(segment)會被儲存在SQ登錄資訊欄位中。另外,PRP登錄之清單和SGL之第2個之後之段,係被儲存在指標清單246中。
指令ID,係為所對應的寫入指令之辨識資訊。
名稱空間ID,係為所對應的寫入指令所應被實行之名稱空間之辨識資訊。為了對於記憶體系統3進行存取而被主機2所使用的邏輯位址空間(LBA空間),係可存在有複數。各邏輯位址空間,係會有被稱作名稱空間的情形。複數之名稱空間之1個,係可藉由名稱空間ID而被特定出來。
LBA,係為藉由所對應的寫入指令而被作指定之LBA。此LBA,係代表應因應於寫入指令而使使用者資料被作寫入的LBA範圍之開頭之LBA。
資料長度,係為藉由所對應的寫入指令而被作指定之資料長度。此資料長度,係代表應因應於寫入指令而被作寫入的使用者資料之長度。故而,藉由以寫入指令而指定LBA與資料長度,係能夠特定出應因應於該寫入指令而使使用者資料被作寫入的LBA範圍。
完成通知順序欄位,係代表對於所對應的寫入指令之第1次之完成通知之被作了接收的順序。在被主機2所接收之1個以上的完成通知之各者中,係依循於被接收之順序而被分配有序列編號。完成通知順序欄位,係代表被分配給對於所對應的寫入指令之第1次之完成通知的序列編號。
資料區域管理資訊欄位,係展示有能夠特定出「應因應於所對應之寫入指令而被作寫入的使用者資料所被儲存之NVRAM24內之記憶區域(例如,頁面)」的資訊。此資訊,例如,係能夠為了「使用OS221之功能來將被特定出之NVRAM24內之記憶區域作鎖死或鎖死解除」而被作利用。
完成通知狀態欄位,係代表是否收訊了對於所對應的寫入指令之第1次之完成通知。另外,係亦可將完成通知狀態欄位省略,並基於在完成通知順序欄位中被儲存有序列編號一事來代表係收訊了對於所對應的寫入指令之第1次之完成通知。
在以下之關連於鎖死資料清單245之說明中,係將在SQ登錄資訊欄位中所展示之值,亦單純稱作SQ登錄資訊。關於在鎖死資料清單245之其他之各欄位中所展示之值、以及在其他之表之各欄位中所展示之值,亦為相同。
回到圖1。於此,針對CPU21所實行之程式作說明。
CPU21,例如係實行從NVRAM24而被載入至RAM22中的各種之程式。在CPU21所實行之程式中,係包含有OS221、驅動器222以及各種之應用程式。
OS221,係為用以對於主機2內之各種的組件之基本性的動作進行控制之程式。正實行有OS221之CPU21,例如,係對於輸入輸出、檔案管理、記憶體管理、通訊進行控制。
驅動器222,係為用以對於被與主機2作連接之裝置進行控制之程式。例如,正實行有驅動器222之CPU21,係經由儲存設備I/F23,來對於記憶體系統3送訊指令和資料。正實行有驅動器222之CPU21,係經由儲存設備I/F23,來從記憶體系統3而收訊相對於指令之回應和資料。
CPU21,係藉由實行驅動器222,而例如作為指令發行部211、寫入管理部212以及恢復控制部213而起作用。關於指令發行部211、寫入管理部212以及恢復控制部213之具體性之動作,係參照圖5~圖16而於後再述。指令發行部211、寫入管理部212以及恢復控制部213,係亦可作為主機2內之專用硬體而被實現。
(記憶體系統3之構成例)
記憶體系統3,例如,係具備有控制器4、NAND型快閃記憶體5以及DRAM6。控制器4,係可藉由如同System-on-a-chip(SoC)一般之電路來實現之。控制器4,係亦可內藏有SRAM(靜態隨機存取記憶體)。又,DRAM6係亦可被內藏於控制器4中。
DRAM6,係為揮發性之記憶體。在DRAM6等之RAM中,例如,係被設置有韌體(FW)61之儲存區域、邏輯物理位址轉換表62之快取區域、寫入管理表63之儲存區域。
FW61,係為用以對於控制器4之動作進行控制的程式。FW61,例如係被從NAND型快閃記憶體5而載入至DRAM6處。
邏輯物理位址轉換表62,係對於邏輯位址之各者與NAND型快閃記憶體5之物理位址之各者之間的映射作管理。
寫入管理表63,係對於關連於所受理了的寫入指令之資訊作管理。
NAND型快閃記憶體5,係包含有複數之區塊。區塊之各者,係包含有複數之頁面。區塊,係作為資料刪除動作之最小單位而起作用。區塊,係亦會有被稱作「刪除區塊」或者是「物理區塊」的情形。頁面之各者,係包含有被與單一之字元線作了連接的複數之記憶體胞。頁面,係作為資料寫入動作以及資料讀出動作之單位而起作用。另外,係亦可使字元線作為資料寫入動作以及資料讀出動作之單位而起作用。
在針對各區塊之程式化/抹除循環數(P/E循環數)中,係存在有上限,而被稱作最大P/E循環數。某一區塊之1次的P/E循環,係包含有用以將此區塊內之所有的記憶體胞設為刪除狀態之刪除動作、和將資料寫入至此區塊之各頁面中的寫入動作(程式化動作)。
在NAND型快閃記憶體5處,例如,係可被寫入有使用者資料與管理資料。使用者資料,係為被與從主機2所受理了的寫入指令相互附加有關連性之應被寫入至NAND型快閃記憶體5中之資料。管理資料,係為用以對於記憶體系統3之動作作管理之資料。在管理資料中,例如,係包含有虛擬PLP主機ID51、第1模式資訊52、指令日誌53。
虛擬PLP主機ID51,係代表使記憶體系統3變遷至了虛擬PLP驅動模式的主機2之主機ID。虛擬PLP主機ID51,在使記憶體系統3以虛擬PLP驅動模式而動作的期間中,係被儲存於NAND型快閃記憶體5中。
第1模式資訊52,係代表記憶體系統3之第1動作模式是身為通常驅動模式與虛擬PLP驅動模式之何者。在使記憶體系統3從通常驅動模式而變遷至了與虛擬PLP驅動模式的情況時,第1模式資訊52係被更新為會代表虛擬PLP驅動模式。又,在使記憶體系統3從虛擬PLP驅動模式而變遷至了通常驅動模式的情況時,第1模式資訊52係被更新為會代表通常驅動模式。
指令日誌53,係展示所對應的處理已完成了的指令之指令ID。指令日誌53,係被使用在記憶體系統3之除錯(debug)中。控制器4,係以能夠對於「與指令相對應的處理所完成了的順序」作管理的方式,來將指令ID儲存於指令日誌53中。
控制器4,係作為以對於NAND型快閃記憶體5進行控制的方式所構成之記憶體控制器而起作用。
控制器4,係亦可作為以實行NAND型快閃記憶體5之資料管理以及區塊管理的方式所構成之快閃記憶體轉換層(Flash Translation Layer,FTL)而起作用。在此藉由FTL而被實行的資料管理中,係包含有(1)對於代表邏輯位址之各者與NAND型快閃記憶體5之物理位址之各者之間的對應關係之映射資訊之管理以及(2)用以將頁面單位之讀取/寫入動作和區塊單位之刪除(erase)動作之間之差異作隱蔽之處理。在區塊管理中,係包含有不良區塊之管理、耗損平均技術以及垃圾回收。
邏輯位址,係為了對於記憶體系統3指定位址,而被主機2所使用。邏輯位址,例如係為邏輯區塊位址(LBA)。以下,主要係針對作為邏輯位址而使用有LBA的情況來作例示。
LBA之各者與物理位址之各者之間的映射之管理,係使用邏輯物理位址轉換表62而被實行。控制器4,係使用邏輯物理位址轉換表62,來針對LBA之各者與物理位址之各者之間的映射而以特定之管理容量單位來作管理。對應於某一LBA之物理位址,係代表此LBA之資料所被作寫入的NAND型快閃記憶體5內之物理記憶位置。控制器4,係使用邏輯物理位址轉換表62,來對於將NAND型快閃記憶體5之記憶區域邏輯性地作了分割的複數之記憶區域作管理。此些之複數之記憶區域,係與複數之LBA分別相互對應。亦即是,此些之複數之記憶區域之各者,係藉由1個的LBA而被特定出來。邏輯物理位址轉換表62,係亦可在記憶體系統3之電源ON時而被從NAND型快閃記憶體5來載入至DRAM6處。
對於1個的頁面之資料寫入,係在1次的P/E循環中而僅能進行1次。因此,控制器4,係將對應於某一LBA之更新資料,並非寫入至對應於此LBA之以前的資料所被作儲存之物理記憶位置處,而是寫入至其他的物理記憶位置處。之後,控制器4,係藉由以將此LBA與此其他之物理記憶位置相互附加關連的方式來對於邏輯物理位址轉換表62進行更新,而將以前之資料無效化。從邏輯物理位址轉換表62而被作參照之資料(亦即是被與LBA相互附加有關連之資料),係被稱作有效資料。又,並未被與任何之LBA相互附加有關連之資料,係被稱作無效資料。有效資料,係為之後會有從主機2而被讀取的可能性之資料。無效資料,係為已不會有從主機2而被讀取的可能性之資料。
控制器4,係亦可包含有主機介面(主機I/F)11、CPU12、NAND介面(NAND I/F)13、DRAM介面(DRAM I/F)14以及計時器15。此些之主機I/F11、CPU12、NAND I/F13、DRAM I/F14以及計時器15,係亦可經由匯流排10而被作連接。
主機I/F11,係作為從主機2而收訊各種之指令、例如收訊I/O指令、各種控制指令的電路而起作用。又,主機I/F11,係作為用以將針對指令之回應和資料對於主機2作送訊的電路而起作用。
NAND I/F13,係將控制器4與NAND型快閃記憶體5作電性連接。NAND I/F13,係對應於Toggle DDR、Open NAND Flash Interface(ONFI)等之介面規格。
NAND I/F13,係作為以對於NAND型快閃記憶體5進行控制的方式而被構成之NAND控制電路來起作用。NAND I/F13,係亦可經由複數之通道(Ch),來分別被與NAND型快閃記憶體5內之複數之記憶體晶片作連接。藉由使複數之記憶體晶片被平行地驅動,係能夠將對於NAND型快閃記憶體5全體之存取作廣頻寬化。
DRAM I/F14,係作為以對於針對DRAM6之存取來進行控制的方式而被構成之DRAM控制電路而起作用。
計時器15,係對於時間作計測。計時器15,係能夠將所計測到的時間提供給控制器4內之各部。
CPU12,係為以對於主機I/F11、NAND I/F13、DRAM I/F14以及計時器15作控制的方式而被構成之處理器。CPU12,係藉由實行從NAND型快閃記憶體5而被載入至DRAM6中之FW61,而進行各種之處理。FW61,係為包含有用以使CPU12實行各種之處理的命令群之控制程式。CPU12,係能夠實行用以對於從主機2而來之各種指令進行處理的指令處理等。CPU12之動作,係藉由被CPU12所實行的FW61而被作控制。
控制器4內之各部之功能,係可藉由控制器4內之專用硬體來實現之,亦可藉由使CPU12實行FW61一事來實現之。
CPU12,例如,係作為指令受理部121、模式控制部122以及寫入控制部123而起作用。CPU12,例如係藉由實行FW61,而作為此些之各部來起作用。關於由指令受理部121、模式控制部122以及寫入控制部123所致之具體性之動作,係參照圖5~圖16而於後再述。
接著,參考圖3以及圖4,針對在記憶體系統3處所被使用之2個的表進行說明。
圖3,係對於邏輯物理位址轉換表62之構成例作展示。邏輯物理位址轉換表62,係對於LBA之各者與NAND型快閃記憶體5之物理位址之各者之間的映射作管理。控制器4,係能夠使用邏輯物理位址轉換表62,來將LBA轉換為物理位址。又,控制器4,係能夠使用邏輯物理位址轉換表62,來將物理位址轉換為LBA。
在圖3所示之例中,於LBA“0”處係被映射有物理位址“X”,於LBA“1”處係被映射有物理位址“Y”,於LBA“2”處係被映射有物理位址“Z”。
圖4,係對於寫入管理表63之構成例作展示。寫入管理表63,係可包含有分別與1個以上的寫入指令相對應之1個以上的登錄(entry)。各登錄,例如,係包含有指令ID欄位、LBA欄位、資料長度欄位以及資料指標欄位。
指令ID欄位,係代表所對應的寫入指令之指令ID。
LBA欄位,係代表藉由所對應的寫入指令而被作了指定的LBA。此LBA,係代表應因應於寫入指令而使使用者資料被作寫入的LBA範圍之開頭之LBA。
資料長度欄位,係代表藉由所對應的寫入指令而被作了指定的資料長度。此資料長度,係代表應因應於寫入指令而被作寫入的使用者資料之長度。故而,使用藉由寫入指令而被作了指定的LBA與資料長度,係能夠特定出應因應於該寫入指令而使使用者資料被作寫入的LBA範圍。
資料指標欄位,係代表藉由所對應的寫入指令而被作了指定的資料指標。此資料指標,係代表在主機2內之應因應於所對應之寫入指令而被寫入至NAND型快閃記憶體5中的使用者資料所被儲存之場所。亦即是,控制器4,係從藉由資料指標所展示的主機2內之儲存場所,而將使用者資料傳輸至記憶體系統3處。
接著,參考圖5~圖16,針對在資訊處理系統1處所被使用之數個的動作之例進行說明。
圖5,係為對於在資訊處理系統1處的綁定(bind)動作之例作展示之區塊圖。綁定動作,係為用以進行「使被與主機2作了連接的記憶體系統3以虛擬PLP驅動模式來動作的初期設定」之動作。
具體而言,首先,主機2之指令發行部211,係對於被與主機2作了連接的記憶體系統3,而經由提交佇列243來送訊第1模式變遷指令(圖5中之(1))。第1模式變遷指令,係可包含有主機2之主機ID。另外,主機2,係亦可與第1模式變遷指令之送訊相互獨立地而將主機ID對於記憶體系統3作通知。
在記憶體系統3處,指令受理部121,係收訊第1模式變遷指令。指令受理部121,係將所受理了的第1模式變遷指令送出至模式控制部122處(圖5中之(2))。
模式控制部122,係確認在第1模式變遷指令中所包含之主機ID51是否作為虛擬PLP主機ID51而被儲存於NAND型快閃記憶體5中(圖5中之(3))。
當主機ID並未被儲存於NAND型快閃記憶體5中的情況時,模式控制部122,係使記憶體系統3變遷至虛擬PLP驅動模式,並將第1模式資訊52更新為會代表虛擬PLP驅動模式。之後,模式控制部122,係將在第1模式變遷指令中所包含之主機ID51寫入至NAND型快閃記憶體5中。藉由此,使記憶體系統3變遷至了虛擬PLP驅動模式的主機2之主機ID,係作為虛擬PLP主機ID51而被登錄在NAND型快閃記憶體5中(圖5中之(5))。之後,模式控制部122,係將代表對於虛擬PLP驅動模式之變遷為完成並且展示有記憶體系統3之驅動器ID之回應,經由指令受理部121以及完成佇列244而對於指令發行部211作送訊(圖5中之(6))。
主機2之指令發行部211,係收訊藉由記憶體系統3所送訊的回應。指令發行部211,係將在所收訊了的回應中所包含之驅動器ID儲存在NVRAM24中(圖5中之(7))。藉由此,藉由主機2而被變遷至虛擬PLP驅動模式之記憶體系統3的驅動器ID,係作為虛擬PLP驅動器ID241而被登錄在NVRAM24中。又,指令發行部211,係將所收訊了的回應對於寫入管理部212作送出(圖5中之(8))。寫入管理部212,係基於代表對於虛擬PLP驅動模式之變遷為完成一事的回應,而產生被與虛擬PLP驅動器ID241相互附加有關連性之鎖死資料清單245,並儲存在NVRAM24中(圖5中之(9))。
另外,當在NAND型快閃記憶體5中已作為虛擬PLP主機ID51而儲存有與在第1模式變遷指令中所包含之主機ID相異之主機ID的情況時,記憶體系統3係已對於具有該主機ID之其他的主機而以虛擬PLP驅動模式來動作。於此種情況,模式控制部122,係針對所收訊了的第1模式變遷指令而並不變遷至虛擬PLP驅動模式。模式控制部122,係將代表並未變遷至虛擬PLP驅動模式一事之錯誤通知,經由指令受理部121以及完成佇列244而對於指令發行部211作回送(圖5中之(10))。
藉由以上之綁定動作,主機2,係若是記憶體系統3並未對於其他之主機而以虛擬PLP驅動模式來動作,則能夠使記憶體系統3變遷至虛擬PLP驅動模式。之後,在記憶體系統3處,主機2之主機ID與代表記憶體系統3為正以虛擬PLP驅動模式而動作一事之第1模式資訊52,係被儲存於NAND型快閃記憶體5中。又,在主機2處,記憶體系統3之驅動器ID和被與驅動器ID相互附加有關連性之鎖死資料清單245,係被儲存於NVRAM24中。如此這般,在主機2與記憶體系統3處,係能夠進行用以使記憶體系統3以虛擬PLP驅動模式來動作的初期設定。
(寫入動作)
接著,參考圖6~圖10,針對在資訊處理系統1處之寫入動作之例進行說明。寫入動作,係為從主機2來對於記憶體系統3送訊寫入指令並用以將被與寫入指令相互附加有關連之使用者資料寫入至NAND型快閃記憶體5中之動作。寫入動作,例如,係在參照圖5而於前所述的綁定動作之後而被進行。
於此,針對被設置在主機2之NVRAM24處的提交佇列243以及完成佇列244作說明。主機2,係經由提交佇列243,而將指令對於記憶體系統3作送訊。又,主機2,係經由完成佇列244,而對於主機2回送相對於指令之完成通知。
提交佇列243,係包含有主機2將對於記憶體系統3所發行的指令分別作儲存的複數之槽(slot)。主機2所應儲存指令之提交佇列243內之位置(亦即是槽),係藉由SQ Tail(標尾)指標而被作展示。記憶體系統3所應提取指令之提交佇列243內之位置,係藉由SQ Head(標頭)指標而被作展示。
完成佇列244,係包含有記憶體系統3將針對指令之回應分別作儲存的複數之槽。記憶體系統3所應儲存回應之完成佇列244內之位置,係藉由CQ Tail指標而被作展示。主機2所應提取回應之完成佇列244內之位置,係藉由CQ Head指標而被作展示。
以下,針對在主機2以及記憶體系統3處之具體性的寫入動作例作說明。在圖6~圖10所示之例中,為了使說明成為易於理解,係針對被寫入至提交佇列243中之指令僅有寫入指令的情況來作例示。
圖6,係為對於在資訊處理系統1處的寫入動作之例作展示之區塊圖。於此,係針對主機2之指令發行部211以及寫入管理部212接收了將使用者資料71寫入至NAND型快閃記憶體5中的寫入要求之情況作例示。此寫入要求,例如,係為由CPU21所實行之應用程式所致的寫入要求。
首先,在主機2處,寫入管理部212,係使用應用程式或OS221之功能而將被儲存於資料緩衝242中並且被要求有寫入的使用者資料71作鎖死(圖6中之(1))。更詳細而言,寫入管理部212,係使用OS221之功能而將使用者資料71所被作儲存的記憶區域(例如,頁面)作鎖死。藉由此,來防止被儲存有使用者資料71之記憶區域被非預期性地釋放或者是被作頁面移出(page out)的情形。另外,使用者資料71,係亦可使用應用程式或OS221之功能,而被儲存於RAM22中。當使用者資料71為被儲存於RAM22中的情況時,寫入管理部212,係將使用者資料71從RAM22而複製至NVRAM24處。
指令發行部211,係發行用以將使用者資料71作寫入的寫入指令。亦即是,指令發行部211,係產生相當於用以將使用者資料71作寫入的寫入指令之SQ登錄(entry)資訊。指令發行部211,係將所產生了的SQ登錄資訊對於寫入管理部212作送出(圖6中之(2))。
寫入管理部212,係使用藉由指令發行部211所被送出的SQ登錄資訊,來產生鎖死資料清單245之登錄。所被產生之登錄,例如,係包含有相當於所發行了的寫入指令之SQ登錄資訊、和資料區域管理資訊。此資料區域管理資訊,係為能夠特定出「使用者資料71所被儲存之資料緩衝242內之記憶區域」的資訊。寫入管理部212,係將所產生了的登錄追加至所死資料清單245中(圖6中之(3))。
圖7,係對於在圖6中之(3)之動作中而被追加了登錄後的鎖死資料清單245之例作展示。鎖死資料清單245,係包含有被作了追加的登錄81。
在圖7所示之例中,登錄81,係包含有相當於所被發行的寫入指令之SQ登錄資訊“sqentry_info1”、和代表被與此寫入指令相互附加有關連性的使用者資料71所被作儲存之資料緩衝242內之記憶區域的資料區域管理資訊“region_info1”。另外,登錄81,係尚未包含有完成通知順序與完成通知狀態。
回到圖6。接著,指令發行部211,係將所被發行了的寫入指令(SQ登錄資訊)儲存在提交佇列243中(圖6中之(4))。針對將指令儲存於提交佇列243中之動作更具體性地作說明。首先,指令發行部211,係將指令(於此係為寫入指令)寫入至提交佇列243內之藉由SQ Tail指標所展示之槽(slot)中。指令發行部211,係在SQ Tail指標處加算上「1」。另外,當在SQ Tail指標處而加算上「1」後之值到達了提交佇列243之槽數(亦即是佇列容量)的情況時,指令發行部211係在SQ Tail指標處設定「0」。之後,指令發行部211,係將更新後的SQ Tail指標之值,寫入至記憶體系統3之SQ Tail doorbell暫存器中。如此這般,將指令儲存在提交佇列243中之動作,係包含有將指令寫入至提交佇列243之動作、和用以更新SQ Tail指標之動作。
若是SQ Tail doorbell暫存器被作更新,則接收此事,記憶體系統3之指令受理部121,係從提交佇列243而取得寫入指令(圖6中之(5))。之後,指令受理部121,係將所取得的寫入指令送出至寫入控制部123處(圖6中之(6))。於此,針對從提交佇列243而取得指令之動作更具體性地作說明。首先,指令受理部121,當在SQ Head指標與SQ Tail指標之間存在有差的情況時,係從提交佇列243內之SQ Head指標所展示之槽而提取指令(於此係為寫入指令)。指令受理部121,係在SQ Head指標處加算上「1」。另外,當在SQ Head指標處加算上「1」後之值為到達了提交佇列243之槽數的情況時,指令受理部121係在SQ Head指標處設定「0」。如此這般,從提交佇列243而取得指令之動作,係包含有從提交佇列243而提取指令之動作、和用以更新SQ Head指標之動作。
接著,寫入控制部123,係使用藉由指令受理部212所被送出了的寫入指令,而將寫入管理表63作更新(圖6中之(7))。具體而言,寫入控制部123,係將包含有「藉由寫入指令而被作了指定的指令ID、LBA、資料長度以及資料指標」之登錄,追加至寫入管理表63中。另外,寫入控制部123,係先確認「藉由寫入指令而被作了指定的LBA為有效、或者是能夠對於該LBA而寫入資料」、「資料指標為有效」,之後再將對應之登錄追加至寫入管理表63中。資料指標,例如,當資料指標並未展示有主機2內之無法進行存取之區域並且係展示有能夠與資料長度相配合之區域的情況時,係被視為有效。接著,寫入控制部123,係對於指令受理部121,而通知「基於寫入指令所進行之寫入管理表63之更新為完成」一事(圖6中之(8))。
指令受理部121,係因應於由寫入控制部123所致之通知,而將針對寫入指令之第1次的完成通知(代表正常結束之完成通知),儲存於完成佇列244中(圖6中之(9))。此第1次的完成通知,係包含寫入指令之指令ID。針對將完成通知儲存於完成佇列244中之動作更具體性地作說明。首先,指令受理部121,係將完成通知寫入至完成佇列244內之CQ Tail指標所示之槽中。指令受理部121,係在CQ Tail指標處加算上「1」。另外,當在CQ Tail指標處加算上「1」後之值為到達了完成佇列244之槽數的情況時,指令受理部121係在CQ Tail指標處設定「0」。指令受理部121,係發行插斷(interrupt)。指令受理部121,係藉由發行插斷,而將「應被處理之新的完成通知係存在於完成佇列244中」一事,對於主機2作通知。如此這般,將完成通知儲存在完成佇列244中之動作,係包含有將完成通知寫入至完成佇列244中之動作、和用以更新CQ Tail指標之動作、以及發行插斷之動作。
另外,指令受理部121,當從提交佇列243所取得之寫入指令係為無法實行之指令的情況時,係亦可將代表「錯誤結束」之完成通知,作為第1次的完成通知而儲存於完成佇列244中。
接著,主機2之指令發行部211,係從完成佇列244而取得針對寫入指令之第1次的完成通知(圖6中之(10))。之後,指令發行部211,係將所取得之第1次的完成通知對於寫入管理部212作送出(圖6中之(11))。於此,針對將從完成佇列244而取得完成通知之動作更具體性地作說明。首先,指令發行部211,係因應於藉由記憶體系統3之指令受理部121所發行之插斷,而從完成佇列244內之CQ Head指標所示之槽來提取完成通知。指令發行部211,係在CQ Head指標處加算上「1」。另外,當在CQ Head指標處加算上「1」後之值為到達了完成佇列244之槽數的情況時,指令發行部211係在CQ Haed指標處設定「0」。指令發行部211,係將更新後的CQ Head指標,寫入至記憶體系統3之CQ Head doorbell暫存器中。之後,指令發行部211,係將從記憶體系統3所收訊了的插斷作清除(clear)。如此這般,從完成佇列244而取得完成通知之動作,係包含有從完成佇列244而提取完成通知之動作、和用以更新CQ Head指標之動作、以及將插斷清除之動作。
當第1次之完成通知係為代表正常結束之完成通知的情況時,寫入管理部212,係從指令發行部211而接收第1次的完成通知,並在鎖死資料清單245中,將與所接收的第1次的完成通知相對應之登錄作更新(圖6中之(12))。具體而言,寫入管理部212,係針對所接收的第1次之完成通知,而分配代表作了接收的順序之序列編號。寫入管理部212,例如,係對於所作了接收之第1次的完成通知,而分配「在每次從記憶體系統3而經由完成佇列244來接收針對寫入指令之第1次之完成通知時會作「1」的增加」之序列編號。又,寫入管理部212,係取得在所作了接收之第1次的完成通知中所包含之指令ID。寫入管理部212,係在鎖死資料清單245中,而特定出包含有「與所取得的指令ID相對應之SQ登錄資訊」的登錄。之後,寫入管理部212,係在所特定出之登錄中,追加所被作了分配的序列編號(亦即是,代表所作了接收的順序之資訊)、和代表已完成第1次之完成通知之接收一事的資訊。
當第1次之完成通知係為代表錯誤結束之完成通知的情況時,寫入管理部212,係將與所接收的第1次的完成通知相對應之資料緩衝242內的使用者資料71之鎖死解除(圖6中之(13))。之後,寫入管理部212,係將與所接收的第1次的完成通知相對應之登錄,從鎖死資料清單245中而刪除(圖6中之(14))。更具體而言,寫入管理部212,係取得在所作了接收之第1次的完成通知中所包含之指令ID。寫入管理部212,係在鎖死資料清單245中,而特定出包含有「與所取得的指令ID相對應之SQ登錄資訊」的登錄。寫入管理部212,係使用所特定出的登錄內之資料區域管理資訊,來解除使用者資料71之鎖死。又,寫入管理部212,在作成有PRP登錄之清單和SGL之第2個之後之段的情況時,係亦將該些所被作儲存的指標清單246之區域釋放。之後,寫入管理部212,係將所特定出之登錄,從鎖死資料清單245中而刪除(亦即是,從NVRAM24而刪除)。另外,使鎖死被作了解除後的使用者資料71,係被從資料緩衝242而刪除。具體而言,在「使鎖死被作了解除後的使用者資料71」所被作儲存之資料緩衝242內之記憶區域中,係能夠儲存其他之資料。
圖8,係對於在圖6中之(12)之動作中而使登錄被作了更新後的鎖死資料清單245之例作展示。鎖死資料清單245,係包含有被作了更新的登錄81。
在圖8所示之例中,於登錄81中,係被追加有代表所接收了的第1次之完成通知之接收順序之完成通知順序“cseq1”、和代表已完成第1次之完成通知之接收一事的完成通知狀態“completed”。亦即是,登錄81,係展示有「已經以完成通知順序“cseq1”而完成了第1次之完成通知之接收」之內容。
寫入管理部212,係若是鎖死資料清單245之更新完成,則針對從應用程式或OS221所發生的寫入要求,來在第1次的回應通知為正常結束的情況時,回送「寫入為完成」之回應,並在錯誤結束的情況時,回送「錯誤」回應。
另外,如同上述一般,係會有「應用程式或OS221將使用者資料71儲存於RAM22中,而寫入管理部212正在將使用者資料71從RAM22而複製至NVRAM24處」的情況。於此情況,應用程式或OS221,係能夠因應於接收了代表錯誤結束之第1次之完成通知一事,而將RAM22之使用者資料71所被作了儲存的區域釋放並利用在其他之用途中。寫入管理部212,係亦可將被儲存有使用者資料71之NVRAM24釋放。
圖9,係為對於在接續於圖6之後的寫入動作之例作展示之區塊圖。於此,針對「藉由記憶體系統3從主機2所受理的複數之寫入指令而被要求有寫入之使用者資料71之總量為到達了特定之資料單位」的情況作例示。特定之資料單位,例如,係身為能夠藉由一次的資料寫入動作而寫入至NAND型快閃記憶體5中之資料量(亦即是,寫入單位)。
在記憶體系統3中,指令受理部121以及寫入控制部123,係在藉由從主機2所受理了的複數之寫入指令而被要求有寫入之使用者資料71之總量到達了特定之資料單位之後,將該特定之資料單位之使用者資料71寫入至NAND型快閃記憶體5中,並對於主機2而回送與複數之寫入指令之各者分別相互對應之第2次的完成通知。亦即是,指令受理部121以及寫入控制部123,係以「並不立即地實行與所受理了的1個的寫入指令相對應之寫入,而是在藉由複數之寫入指令而被要求有寫入之使用者資料71之總量到達了特定之資料單位之後,再進行與該些之複數之寫入指令相對應之寫入」的機制(延遲寫入完備(Delayed Write Completion))來動作。
具體而言,寫入控制部123,係將寫入單位之使用者資料71從資料緩衝242而傳輸至NAND型快閃記憶體5處,並將被作了傳輸的寫入單位之使用者資料71寫入(程式化)至NAND型快閃記憶體5中(圖9中之(1))。之後,寫入控制部123,當存在有「所對應的使用者資料71成為了能夠從NAND型快閃記憶體5而讀出」之寫入指令的情況時,係將對應於該寫入指令之處理的完成,對於指令受理部121作通知(圖9中之(2))。寫入控制部123,係將分別對應於「與寫入單位之使用者資料71相對應的複數之寫入指令之各者」之處理之完成,對於指令受理部121作通知。寫入控制部123,係從寫入管理表63,而將與複數之寫入指令之各者相對應的登錄刪除(圖9中之(3))。又,寫入控制部123,係將複數之寫入指令之各者的指令ID,追加至指令日誌53中(圖9中之(4))。
指令受理部121,係在每次接收從寫入控制部123而來之通知時,將代表「與所對應之寫入指令相應的處理之完成」一事的第2次之完成通知,對於主機2作送訊(圖9中之(5))。更具體而言,指令受理部121,係因應於由寫入控制部123所致之通知,而將針對所對應的寫入指令之第2次的完成通知,儲存於完成佇列244中。從寫入控制部123而來之通知,例如,係包含有處理為完成了的寫入指令之指令ID。
另外,指令受理部121,當在與寫入指令相對應的處理中發生有錯誤的情況時,係將代表錯誤之完成通知,作為第2次之完成通知而對於主機2作送訊。
接著,主機2之指令發行部211,係從完成佇列244而取得第2次的完成通知(圖9中之(6))。之後,指令發行部211,係將所取得之第2次的完成通知對於寫入管理部212作送出(圖9中之(7))。
寫入管理部212,係從指令發行部211而接收第2次的完成通知,並將與所接收的第2次的完成通知相對應之資料緩衝242內的使用者資料71之鎖死解除(圖9中之(8))。之後,寫入管理部212,係將與所接收的第2次的完成通知相對應之登錄,從鎖死資料清單245中而刪除(圖9中之(9))。更具體而言,寫入管理部212,係取得在所作了接收之第2次的完成通知中所包含之指令ID。寫入管理部212,係在鎖死資料清單245中,而特定出包含有「與所取得的指令ID相對應之SQ登錄資訊」的登錄。寫入管理部212,係使用所特定出的登錄內之資料區域管理資訊,來解除完成了寫入的使用者資料71之鎖死。又,寫入管理部212,在作成有PRP登錄之清單和SGL之第2個之後之段的情況時,係亦將該些所被作儲存的指標清單246之區域釋放。之後,寫入管理部212,係將所特定出之登錄,從鎖死資料清單245中而刪除(亦即是,從NVRAM24而刪除)。另外,使鎖死被作了解除後的使用者資料71,係被從資料緩衝242而刪除。具體而言,在「使鎖死被作了解除後的使用者資料71」所被作儲存之資料緩衝242內之記憶區域中,係能夠儲存其他之資料。
另外,當第2次的完成通知為展示有「錯誤」的情況時,主機2(具體而言,寫入管理部212),係視為記憶體系統3之故障。寫入管理部212,係將對於該記憶體系統3之處理中止,並進行作為資訊處理系統1之異常處理。例如,寫入管理部212,係將關連於該記憶體系統3之一切的資料刪除。被刪除之資料,係包含有與該記憶體系統3相對應之資料緩衝242內之使用者資料71、以及與該記憶體系統3相對應之鎖死資料清單245。又,寫入管理部212,係至少將對於被視為故障的記憶體系統3而送訊寫入指令一事停止。進而,寫入管理部212,對於從應用程式或OS221而來之寫入要求,係全部以「錯誤」來回應。
圖10,係對於在圖9中之(9)之動作中而使登錄被作了刪除後的鎖死資料清單245之例作展示。鎖死資料清單245,係包含有與所接收的第2次的完成通知相對應之登錄81。
在圖10所示之例中,登錄81,係包含有SQ登錄資訊“sqentry_info1”、完成通知順序“cseq1”、資料區域管理資訊“region_info1”、以及完成通知狀態“completed”。亦即是,登錄81,係為展示有「已經完成了第1次之完成通知之接收」之內容的登錄。登錄81,係因應於從記憶體系統3而接收了針對所對應的寫入指令(亦即是,相當於SQ登錄資訊“sqentry_info1”之寫入指令)之第2次的完成通知一事,而被作刪除。
另外,被儲存在提交佇列243中之寫入指令(SQ登錄資訊),例如,係因應於接收了針對此寫入指令之第1次的完成通知一事,而被作清除(clear)。因此,在鎖死資料清單245之登錄內,係被保存有相當於寫入指令之SQ登錄資訊。另外,於此情況,係亦可將被儲存於NVRAM24之提交佇列243中的寫入指令(SQ登錄資訊)儲存在RAM22中。
又,係亦可構成為直到接收了針對此寫入指令之第2次的完成通知為止而並不將被儲存在提交佇列243中之寫入指令刪除。於此情況,在鎖死資料清單245之登錄內,係替代SQ登錄資訊,而被保存有代表提交佇列243之登錄之指標。又,被儲存於提交佇列243中的寫入指令本身係被作為SQ登錄資訊而使用。另外,起因於並不從提交佇列243而將寫入指令清除一事,SQ Head指標係並不會被更新,提交佇列243係容易成為全滿(full),而會有成為無法發行像是讀取指令之類的其他之指令的可能性。因此,提交佇列243,較理想,係作為用以發行寫入指令之專用之提交佇列而被作設置。
藉由以上之寫入動作,在記憶體系統3基於從主機2所受理的寫入指令而進行由延遲寫入完備(Delayed Write Completion)所致之使用者資料之寫入的期間中,主機2係能夠使用鎖死資料清單245來對於與所發行了的寫入指令相對應之處理之狀況作管理。
具體而言,主機2,在將寫入指令對於記憶體系統3作送訊的情況時,係將與該寫入指令相對應之登錄,追加至鎖死資料清單245中。在被作了追加的登錄中,例如,係並未包含有完成通知順序與完成通知狀態。故而,主機2,係能夠藉由被作了追加的登錄,來對於「並未接收針對所對應的寫入指令之第1次之完成通知以及第2次之完成通知」一事作管理。換言之,主機2,係能夠藉由被作了追加的登錄,來對於係身為「將所對應的寫入指令對於記憶體系統3作發行(送訊),並且並未收訊第1次之完成通知」的狀態一事作管理。
記憶體系統3,當從主機2而接收寫入指令,並在寫入管理表63中追加了所對應之登錄的情況時,係將針對該寫入指令之第1次的完成通知對於主機2作回送。主機2,係基於從記憶體系統3所接收的第1次的完成通知,而將所對應之鎖死資料清單245內之登錄作更新。在被作了追加的登錄中,例如,係被追加有完成通知順序與完成通知狀態。故而,主機2,係能夠藉由被作了更新的登錄,來對於係身為「係已接收了針對所對應的寫入指令之第1次之完成通知,並且並未接收第2次之完成通知」的狀態一事作管理。換言之,主機2,係能夠藉由被作了更新的登錄,來對於係身為「記憶體系統3受理了所對應之寫入指令」的狀態一事作管理。
又,記憶體系統3,在藉由延遲寫入完備(Delayed Write Completion)而完成了與寫入指令相對應之使用者資料之寫入的情況時,係將針對該寫入指令之第2次的完成通知對於主機2作回送。主機2,係基於從記憶體系統3所接收的第2次的完成通知,而將所對應之鎖死資料清單245內之登錄刪除。故而,主機2,係能夠基於登錄被作了刪除一事,而結束關連於所對應之寫入指令的管理。
另外,記憶體系統3之寫入控制部123,在從受理寫入指令起所經過之時間為超過了臨限值的情況時,係亦可將與已受理的寫入指令相對應之使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中。於此,所謂將使用者資料附加有填補地而作寫入一事,係指將「藉由使用者資料和填補用之資料所構成的寫入單位之資料」作寫入。此臨限值,例如,係基於被主機2所期待的直到能夠得到針對寫入指令之第2次的完成通知為止之時間之上限來設定。從受理寫入指令起所經過之時間,例如,係使用計時器15而被作計測。更具體而言,寫入控制部123,當在從受理寫入指令起所經過之時間為超過了臨限值的情況時,係將與已受理的寫入指令相對應之使用者資料,從主機2之資料緩衝242而傳輸至NAND型快閃記憶體5處。之後,寫入控制部123,係將所被作了傳輸的使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中。藉由此,指令受理部121,係能夠在被主機2所期待的時間內,而通知針對寫入指令之第2次的完成通知。
(關機動作)
接著,參考圖11以及圖12,針對在資訊處理系統1處之關機動作之例進行說明。關機動作,係為在「與從主機2所被送訊至記憶體系統3處之所有的寫入指令相對應之使用者資料之寫入」完成之後,用以使記憶體系統3之動作結束的動作。
圖11,係為對於在資訊處理系統1處的關機動作之例作展示之區塊圖。於此,係針對「為了使與從主機2所被送訊至記憶體系統3處之所有的寫入指令相對應之使用者資料71之寫入完成,而使用有清除(flush)指令」的情況作例示。另外,為了使說明易於理解,係針對「主機2係已接收了針對從主機2所送訊至記憶體系統3處之全部的寫入指令之第1次之完成通知,並且尚未接收針對至少1個的寫入指令之第2次之完成通知」的狀態的情形作考慮。
首先,在主機2處,寫入管理部212,係停止從應用程式等而來之新的I/O要求之受理。之後,寫入管理部212,係對於指令發行部211而要求清除指令之發行(圖11中之(1))。指令發行部211,係因應於由寫入管理部212所致之要求,而發行清除指令,並儲存在提交佇列243中(圖11中之(2))。
接著,在記憶體系統3處,指令受理部121,係從提交佇列243而取得清除指令(圖11中之(3))。指令受理部121,係將所取得的清除指令送出至寫入控制部123處(圖11中之(4))。
寫入控制部123,係基於從指令受理部121所接收的清除指令,而使用寫入管理表63來判定是否存在有應被寫入至NAND型快閃記憶體5中之使用者資料71(圖11之(5))。具體而言,當在寫入管理表63中係存在有至少1個的登錄的情況時,寫入控制部123,係判定為存在有應被寫入至NAND型快閃記憶體5中之使用者資料71。當在寫入管理表63中係並不存在有登錄的情況時,寫入控制部123,係判定為並不存在有應被寫入至NAND型快閃記憶體5中之使用者資料71。
當存在有應被寫入至NAND型快閃記憶體5中之使用者資料71的情況時,寫入控制部123,係將使用者資料71從資料緩衝242而傳輸至NAND型快閃記憶體5處,並將被作了傳輸的使用者資料71附加有填補地而寫入至NAND型快閃記憶體5中(圖11中之(6))。之後,寫入控制部123,係針對「所對應的使用者資料71成為了能夠從NAND型快閃記憶體5而讀出」之寫入指令,而將對應於該寫入指令之處理的完成,對於指令受理部121作通知(圖11中之(7))。寫入控制部123,係將分別對應於「與作了寫入的使用者資料71相對應之1個以上的寫入指令之各者」之處理之完成,對於指令受理部121作通知。寫入控制部123,係從寫入管理表63,而將與1個以上的寫入指令之各者相對應的登錄刪除(圖11中之(8))。又,寫入控制部123,係將1個以上的寫入指令之各者的指令ID,追加至指令日誌53中(圖11中之(9))。
之後,指令受理部121,係在每次接收由寫入控制部123所致之通知時,將代表「與所對應之寫入指令相應的處理之完成」一事的第2次之完成通知,儲存在控制部244中(圖11中之(10))。
如此這般,在記憶體系統3處,係因應於清除指令,而將「與從主機2所被送訊至記憶體系統3處之所有的寫入指令相對應之使用者資料71之寫入」完成。藉由此,針對所有的寫入指令之第2次的完成通知,係被回送至主機2處。
後續之在主機2處之圖11中之(11)~(14)之動作,係與參照圖9而於前所述之寫入動作之(6)~(9)之動作相同。起因於「針對從主機2所送訊至記憶體系統3處之所有的寫入指令而接收了第2次的完成通知」一事,鎖死資料清單245內之登錄係全部被刪除。亦即是,鎖死資料清單245係成為空。寫入管理部212,係基於鎖死資料清單245內之登錄全部被作了刪除一事,而判斷「與從主機2所送訊至記憶體系統3處之所有的寫入指令相對應之使用者資料71之寫入均為完成」。之後,寫入管理部212,係對於指令發行部211,而通知「與所有的寫入指令相對應之使用者資料71之寫入均為完成」一事(圖11中之(15))。
圖12,係對於在接續於圖11之後的關機動作之例作展示。
當被通知了「與所有的寫入指令相對應之使用者資料71之寫入均為完成」一事的情況時,指令發行部211,係經由提交佇列243來對於記憶體系統3送訊關機命令(圖12中之(1))。
在記憶體系統3處,指令受理部121,係從主機2而收訊關機命令。指令受理部121,係將所受理了的關機命令送出至模式控制部122處(圖12中之(2))。
模式控制部122,係因應於從指令受理部121所受理的關機命令,而使記憶體系統3之動作模式從虛擬PLP驅動模式而變遷至通常驅動模式。之後,模式控制部122,係將NAND型快閃記憶體5內之第1模式資訊52更新為會代表通常驅動模式(圖12中之(3))。又,模式控制部122,係因應於關機命令,而將被儲存於NAND型快閃記憶體5中之主機2之虛擬PLP主機ID51刪除(圖12中之(4))。
之後,指令受理部121,係對於主機2之指令發行部211而通知「關機為完成」一事(圖12中之(5))。
接收到通知,指令發行部211,係將被儲存在NVRAM24中之記憶體系統3之虛擬PLP驅動器ID241刪除(圖12中之(6))。之後,指令發行部211,係將被儲存於NVRAM24中之提交佇列243、完成佇列244、鎖死資料清單245刪除(圖12中之(7))。指令發行部211,例如,係將被儲存有虛擬PLP驅動器ID241與鎖死資料清單245之NVRAM24內之記憶區域釋放。
藉由以上之關機動作,主機2,係能夠在「與從主機2所被送訊至記憶體系統3處之所有的寫入指令相對應之使用者資料之寫入」完成之後,使記憶體系統3變遷至通常驅動模式。又,係能夠將為了使記憶體系統3以虛擬PLP驅動模式來動作所使用的資料(更詳細而言,虛擬PLP驅動器ID241、鎖死資料清單245、虛擬PLP主機ID51)刪除。故而,係能夠因應於關機命令而將記憶體系統3之動作正常地結束。
(啟動動作)
接著,針對在資訊處理系統1處的啟動動作作說明。啟動動作,係能夠包含有「當記憶體系統3發生了異常結束之後而進行了啟動的情況時、或是當非預期性地而進行了再啟動的情況時、或者是在主機2發生了異常結束之後而進行了啟動的情況時,用以使記憶體系統3恢復」的解綁定動作以及恢復動作。於此,所謂記憶體系統3之異常結束,係代表在「與記憶體系統3所接收了的所有的寫入指令相對應之使用者資料之寫入」完成之前,記憶體系統3便結束動作。又,所謂記憶體系統3之非預期性之再啟動,係指記憶體系統3並未完成上述之關機動作地便進行了再啟動。所謂主機2之異常結束,係代表在記憶體系統3完成「與主機2所發行至記憶體系統3處之所有的寫入指令相對應之使用者資料之寫入」之前,主機2便結束動作。
解綁定動作,例如,係為「當並不存在有起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之對於記憶體系統3之使用者資料之寫入」的情況時,用以使記憶體系統3強制性地從虛擬PLP驅動模式而回到PLP的動作。恢復動作,係為用以將「起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之對於記憶體系統3之使用者資料之寫入」使用被儲存於NVRAM24中之資料來作恢復的動作。以下,針對解綁定動作與恢復動作之各者的具體例進行說明。
(解綁定動作)
圖13,係為對於在資訊處理系統1處的解綁定(unbind)動作之例作展示之區塊圖。於此,係針對「以虛擬PLP驅動模式而動作的記憶體系統3在正要進行此次之啟動之前而發生了異常結束或者是非預期性地進行了再啟動」的情形作考慮。於此情況,記憶體系統3,在此次之啟動後,亦係以虛擬PLP驅動模式而動作。又,係設想為「並不存在有起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之對於記憶體系統3之使用者資料之寫入」的情形。亦即是,係針對「在鎖死資料清單245中係並未包含有代表接收了第1次的完成通知之登錄」的情形作考慮。
首先,主機2之恢復控制部213,係判定正被與主機2作連接之記憶體系統3的驅動器ID是否為與被儲存在NVRAM24中之虛擬PLP驅動器ID241相互一致(圖13中之(1))。
當記憶體系統3之驅動器ID係與NVRAM24內之虛擬PLP驅動器ID241相異的情況時,係判定為記憶體系統3為對於與主機2相異之其他之主機而以虛擬PLP驅動模式而動作。因此,主機2,係並不對於記憶體系統3進行存取,直到記憶體系統3回到通常驅動模式為止。記憶體系統3,例如,係起因於「基於由主機2之作業員所致的操作而在自身與該其他之主機之間進行解綁定動作」一事,而從虛擬PLP驅動模式來回到通常驅動模式。
另外,在像是「主機2之NVRAM24發生故障並被作交換,而導致被儲存在NVRAM24中之資料全部喪失」的情況或者是「其他之主機發生故障並成為無法修復,而將記憶體系統3與主機2作了連接」的情況時,虛擬PLP驅動器ID241係並不會與記憶體系統3之驅動器ID相互一致。於此情況,亦同樣的,例如基於由主機2之作業員所致的操作,主機2係能夠對於記憶體系統3而發行第1模式解除指令並一旦使記憶體系統3恢復為通常模式,之後藉由參照圖5所作了說明的程序來使記憶體系統3變遷至虛擬PLP驅動模式。
當記憶體系統3之驅動器ID為與NVRAM24內之虛擬PLP驅動器ID241相互一致的情況時、亦即是當記憶體系統3之驅動器ID為有被儲存於NVRAM24中的情況時,恢復控制部213,係判定在NVRAM24內之鎖死資料清單245中是否包含有代表接收了第1次的完成通知一事之登錄(圖13中之(2))。鎖死資料清單245,係為被與記憶體系統3之虛擬PLP驅動器ID241相互附加有關連性之鎖死資料清單。
代表接收了第1次的完成通知一事之登錄,例如,係為包含有完成通知順序和代表已完成第1次之完成通知之接收一事的完成通知狀態之登錄。當在鎖死資料清單245中係並未包含有代表接收了第1次的完成通知一事之登錄的情況時,恢復控制部213,係判斷「並不存在有起因於主機2或記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之對於記憶體系統3之使用者資料之寫入」。當在鎖死資料清單245中係包含有代表接收了第1次的完成通知一事之登錄的情況時,恢復控制部213,係判斷「係存在有起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的雖然對於應用程式或者是OS221之寫入要求作了正常回應但是卻並無法完成之對於記憶體系統3之使用者資料之寫入」。
如同前述一般,在圖13所示之例中,係針對「在鎖死資料清單245中係並未包含有代表接收了第1次的完成通知之登錄」的情形作考慮。於此情況,恢復控制部213,係將關連於此記憶體系統3之異常結束前之資料從NVRAM24而刪除。被刪除之資料,係包含有「被儲存於提交佇列243中之寫入指令(SQ登錄資訊)」、「被儲存於完成佇列244中之完成通知」、「鎖死資料清單245」、「指標清單246」以及「在資料緩衝242上所殘留之使用者資料71」。恢復控制部213,係藉由在完成了恢復處理之後再重新作成此些之資料,而能夠將此記憶體系統3以虛擬PLP驅動模式來作使用。恢復控制部213,係對於指令發行部211而要求第1模式解除指令之發行(圖13中之(3))。之後,恢復控制部213,係將被儲存在NVRAM24中之記憶體系統3之虛擬PLP驅動器ID241刪除(圖13中之(4))。
指令發行部211,係因應於由恢復控制部213所致之要求,而將第1模式解除指令對於記憶體系統3作送訊(圖13中之(5))。
在被作了啟動(或者是再啟動)之記憶體系統3處,模式控制部122,係判定正被與記憶體系統3作連接之主機2的主機ID是否為與被儲存在NAND型快閃記憶體5中之虛擬PLP主機ID51相互一致(圖13中之(6))。又,模式控制部122,係使用被儲存於NAND型快閃記憶體5中之第1模式資訊52,來判定記憶體系統3是正被設定為通常驅動模式與虛擬PLP驅動模式之何者之模式(圖13中之(7))。如同前述一般,在圖13之例中,係針對「記憶體系統3係被設定為虛擬PLP驅動模式」的情況作考慮。
當主機2之主機ID係與NAND型快閃記憶體5內之虛擬PLP主機ID51相異的情況時,係判定為記憶體系統3為對於與主機2相異之其他之主機而以虛擬PLP驅動模式而動作。於此情況,指令受理部121,例如係等待從該其他之主機而來之第1模式解除指令。
當主機2之主機ID係與NAND型快閃記憶體5內之虛擬PLP主機ID51相互一致的情況時,指令受理部121,係從主機2而收訊第1模式解除指令。指令受理部121,係將所收訊了的第1模式解除指令送出至模式控制部122處(圖13中之(8))。
模式控制部122,係因應於從指令受理部121所接收了的第1模式解除指令,而使記憶體系統3從虛擬PLP驅動模式而變遷至通常驅動模式。之後,模式控制部122,係將NAND型快閃記憶體5內之第1模式資訊52更新為會代表通常驅動模式(圖13中之(9))。又,模式控制部122,係因應於第1模式解除指令,而將被儲存於NAND型快閃記憶體5中之主機2之虛擬PLP主機ID51刪除(圖13中之(10))。
藉由以上之解綁定動作,當以虛擬PLP驅動模式而動作之記憶體系統3在正要進行此次之啟動之前而發生了異常結束的情況時、或是當以虛擬PLP驅動模式而動作之記憶體系統3被與之前所連接之主機2相異之其他之主機2作了連接的情況時、或者是當主機2所保持於NVRAM24中之為了使記憶體系統3以虛擬PLP驅動模式來動作所被使用之資料(更詳細而言,虛擬PLP驅動器ID241、鎖死資料清單245)喪失的情況時,主機2係能夠使記憶體系統3強制性地從虛擬PLP驅動模式而回到通常驅動模式。變遷至了通常驅動模式之記憶體系統3,係能夠藉由與主機2之間之綁定動作,來對於主機2而再度以虛擬PLP驅動模式來動作。或者是,變遷至了通常驅動模式之記憶體系統3,係亦能夠藉由與主機2相異之其他之主機之間之綁定動作,來對於該其他之主機而以虛擬PLP驅動模式來動作。另外,解綁定動作,係並不被限定於記憶體系統3之啟動時,而亦能夠在任意之時序處而進行。
(恢復動作)
圖14,係為對於在資訊處理系統1處的恢復(recovery)動作之例作展示之區塊圖。於此,係針對「以虛擬PLP驅動模式而動作的記憶體系統3在正要進行此次之啟動之前而發生了異常結束或者是非預期性地進行了再啟動」的情形作考慮。於此情況,記憶體系統3,在此次之啟動後,亦係以虛擬PLP驅動模式而動作。又,係設想為「係存在有起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之對於記憶體系統3之使用者資料之寫入」的情形。亦即是,係針對「在鎖死資料清單245中係包含有代表接收了第1次的完成通知之登錄」的情形作考慮。
首先,主機2之恢復控制部213,係判定正被與主機2作連接之記憶體系統3的驅動器ID是否為與被儲存在NVRAM24中之虛擬PLP驅動器ID241相互一致(圖14中之(1))。
當記憶體系統3之驅動器ID係與NVRAM24內之虛擬PLP驅動器ID241相異的情況時,係判定為記憶體系統3為對於與主機2相異之其他之主機而以虛擬PLP驅動模式而動作。因此,主機2,係並不對於記憶體系統3進行存取,直到記憶體系統3回到通常驅動模式為止。在記憶體系統3處,例如,係在自身與該其他之主機之間而被進行有恢復動作。
當記憶體系統3之驅動器ID為與NVRAM24內之虛擬PLP驅動器ID241相互一致的情況時,恢復控制部213,係判定在NVRAM24內之鎖死資料清單245中是否包含有代表接收了第1次的完成通知一事之登錄(圖14中之(2))。
如同前述一般,在圖14所示之例中,係針對「在鎖死資料清單245中係包含有代表接收了第1次的完成通知之登錄」的情形作考慮。於此情況,恢復控制部213,係對於指令發行部211而要求第2模式變遷指令之發行(圖14中之(3))。又,恢復控制部213,係在NVRAM24中而重新作成提交佇列243與完成佇列244。
指令發行部211,係因應於由恢復控制部213所致之要求,而將第2模式變遷指令經由新作成的提交佇列243或者是經由管理用指令專用之提交佇列,來對於記憶體系統3作送訊(圖14中之(4))。
在被作了啟動之記憶體系統3處,模式控制部122,係判定正被與記憶體系統3作連接之主機2的主機ID是否為與被儲存在NAND型快閃記憶體5中之虛擬PLP主機ID51相互一致(圖14中之(5))。又,模式控制部122,係參照被儲存於NAND型快閃記憶體5中之第1模式資訊52,來判定記憶體系統3是正被設定為通常驅動模式與虛擬PLP驅動模式之何者之模式(圖14中之(6))。如同前述一般,在圖14之例中,係針對「記憶體系統3係被設定為虛擬PLP驅動模式」的情況作考慮。
當主機2之主機ID係與NAND型快閃記憶體5內之虛擬PLP主機ID51相異的情況時,由於係可推測到主機2係正在進行異常動作,因此,記憶體系統3係對於主機2而通知「第2模式變遷指令為發生了錯誤」一事。
當主機2之主機ID係與NAND型快閃記憶體5內之虛擬PLP主機ID51相互一致的情況時,指令受理部121,係將所收訊了的第2模式變遷指令對於模式控制部122作送出(圖14中之(7))。
模式控制部122,係因應於從指令受理部121所接收了的第2模式變遷指令,而使記憶體系統3從通常寫入模式而變遷至恢復寫入模式。指令受理部121,係對於主機2,而通知「第2模式變遷指令為正常完成,記憶體系統3係變遷至了恢復寫入模式」一事(圖14中之(8))。
圖15,係對於在接續於圖14之後的恢復動作之例作展示。在圖15所示之恢復動作中,係經由主機2來對於變遷至了恢復寫入模式之記憶體系統3而再度要求有「起因於發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料」之寫入。
具體而言,主機2之恢復控制部213,係在被與記憶體系統3之虛擬PLP驅動器ID241相互附加有關連性的鎖死資料清單245中,特定出分別代表「接收了第1次的完成通知」一事之n個的登錄(圖15中之(1))。其中,n係為1以上之整數。
恢復控制部213,係使用在所特定出之n個的登錄之各者中所包含之完成通知順序,來以完成通知順序之升順而選擇n個的登錄之其中一個。以下,係將所被選擇了的登錄,亦稱作對象登錄。在圖15中所示之後續之動作中,n個的登錄,係以完成通知順序之升順而被1個1個地作為對象登錄來使用。
恢復控制部213,係使用在對象登錄中所包含之資料區域管理資訊,來將所對應的資料緩衝242內之使用者資料71鎖死(圖15中之(2))。之後,恢復控制部213,係使用在對象登錄中所包含之SQ登錄資訊,來對於指令發行部211而要求所對應的寫入指令之發行(圖15中之(3))。
另外,恢復控制部213,當在鎖死資料清單245中係存在有代表並未接收第1次的完成通知之登錄的情況時,係將該登錄刪除。代表並未接收第1次的完成通知一事之登錄,例如,係為並未包含有完成通知順序和完成通知狀態之登錄。恢復控制部213,由於係並未接收第1次的完成通知,因此,係判斷與此登錄相對應的寫入指令係並未被記憶體系統3所受理。又,由於係並未接收第1次的完成通知,因此,係並未針對對於與此登錄相對應的使用者資料之寫入作了要求的應用程式等而通知有寫入之完成。故而,係並不需要將與代表並未接收第1次的完成通知一事之登錄相對應之寫入指令對於記憶體系統3而再度作送訊。因此,恢復控制部213,係將代表並未接收第1次的完成通知一事之登錄從鎖死資料清單245而刪除。
指令發行部211,係因應於由恢復控制部213所致之寫入指令之發行之要求,而將相當於對象登錄內之SQ登錄資訊的寫入指令儲存在提交佇列243中(圖15中之(4))。
之後,恢復控制部213,係在對象登錄中,將完成通知順序與完成通知狀態刪除(圖15中之(5))。藉由此,對象登錄,係成為代表「係身為所對應的寫入指令被發行(送訊)至記憶體系統3處,並且並未收訊第1次之完成通知的狀態」。
後續之在圖15中之(6)~(10)之動作,係與參照圖6而於前所述之寫入動作之(5)~(9)之動作相同。亦即是,記憶體系統3之指令受理部121以及寫入控制部123,係基於從提交佇列243所取得之寫入指令而更新寫入管理表63,並將第1次的完成通知儲存於完成佇列244中。
接著,主機2之指令發行部211,係從完成佇列244而取得針對寫入指令之第1次的完成通知(圖15中之(11))。指令發行部211,係將所取得之第1次的完成通知對於恢復控制部213作送出(圖15中之(12))。
恢復控制部213,係從指令發行部211而接收第1次的完成通知,並在鎖死資料清單245中,將與所接收的第1次的完成通知相對應之登錄作更新(圖15中之(13))。具體而言,寫入管理部212,係在與所接收了的第1次的完成通知相對應之登錄中,追加代表接收了完成通知的順序之序列編號、和代表已完成第1次之完成通知之接收一事的資訊。
藉由以上之圖15中所示之恢復動作,主機2,係能夠在鎖死資料清單245中,使用分別代表「接收了第1次的完成通知」一事之n個的登錄,來以完成通知順序之升順,而將對於所對應的使用者資料之寫入作要求的寫入指令再度送訊至記憶體系統3處。故而,係能夠對於被記憶體系統3所受理了的順序有所考慮地,來再現「起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成處理之寫入指令」之送訊。
記憶體系統3之寫入控制部123,由於記憶體系統3係正以恢復寫入模式而動作,因此,係保證會以將寫入指令作了受理之順序來進行相對應之使用者資料之寫入。
圖16,係對於在接續於圖15之後的恢復動作之例作展示。
主機2之恢復控制部213,係在將分別與n個的對象登錄相對應之n個的寫入指令全部送訊至了記憶體系統3處之後,對於指令發行部211而要求清除指令之發行(圖16中之(1))。指令發行部211,係因應於由恢復控制部213所致之要求,而發行清除指令,並儲存在提交佇列243中(圖16中之(2))。
後續之在圖16中之(3)~(10)之動作,係與參照圖11而於前所述之關機動作之(3)~(10)之動作相同。亦即是,記憶體系統3之指令受理部121以及寫入控制部123,係因應於從提交佇列243所取得之清除指令,而完成與從主機2所被送訊至記憶體系統3處之所有的寫入指令相對應之使用者資料71之寫入,並將第2次的完成通知儲存於完成佇列244中。
接著,主機2之指令發行部211,係從完成佇列244而取得第2次的完成通知(圖16中之(11))。之後,指令發行部211,係將所取得之第2次的完成通知對於恢復控制部213作送出(圖16中之(12))。
恢復控制部213,係從指令發行部211而接收第2次的完成通知,並將與所接收的第2次的完成通知相對應之資料緩衝242內的使用者資料71之鎖死解除(圖16中之(13))。之後,恢復控制部213,係將與所接收的第2次的完成通知相對應之登錄,從鎖死資料清單245中而刪除(圖16中之(14))。
起因於「針對從主機2所送訊至記憶體系統3處之所有的寫入指令而接收了第2次的完成通知」一事,鎖死資料清單245內之登錄係全部被刪除。亦即是,鎖死資料清單245係成為空。恢復控制部213,係基於鎖死資料清單245內之登錄全部被作了刪除一事,而判斷「與從主機2所送訊至記憶體系統3處之所有的寫入指令相對應之使用者741之寫入均為完成」。之後,恢復控制部213,係對於指令發行部211,而通知「與所有的寫入指令相對應之使用者資料之寫入均為完成」一事(圖16中之(15))。
指令發行部211,係因應於由恢復控制部213所致之通知,而將第2模式解除指令經由提交佇列243來對於記憶體系統3作送訊(圖16中之(16))。
記憶體系統3之指令受理部121,係從主機2而收訊第2模式解除指令。指令受理部121,係將所收訊了的第2模式解除指令送出至寫入控制部123處(圖16中之(17))。
寫入控制部123,係因應於第2模式解除指令,而使記憶體系統3從恢復寫入模式而變遷至通常寫入模式。另外,記憶體系統3之第1模式,係維持為虛擬PLP驅動模式。
藉由以上之恢復動作,係能夠使「起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料之寫入」完成。亦即是,主機2,係能夠使用對於所發行了的寫入指令之處理狀況作管理的鎖死資料清單245,來使針對發生有異常結束或者是非預期性地作了再啟動的記憶體系統3之未完成之寫入作恢復。之後,主機2,係能夠開始從應用程式而來之新的I/O要求之受理。新的I/O要求,係為針對記憶體系統3之新的資料讀出要求或者是資料寫入要求。亦即是,主機2,係成為能夠將與所受理了的新的I/O要求相對應之讀取指令或寫入指令,對於記憶體系統3作新的發行。另外,不僅是記憶體系統3,就算是在主機2發生異常結束或者是非預期性地進行了再啟動的情況時,亦由於鎖死資料清單245係被非揮發性地作記憶,因此也能夠進行同樣的恢復動作。
又,與參照圖9而於前所敘述之寫入動作相同的,寫入控制部123,在從受理寫入指令起所經過之時間為超過了臨限值的情況時,係亦可將與已受理的寫入指令相對應之使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中。於此情況,在主機2處,由於係能夠在所期待之時間內而接收第2次的完成通知,因此,恢復控制部213以及指令發行部211,係亦可並不對於記憶體系統3而送訊清除指令。
另外,恢復控制部213以及指令發行部211,係亦可在「針對從主機2所送訊至記憶體系統3處之所有的寫入指令而接收了第1次的完成通知」的時間點處,對於記憶體系統3送訊第2模式解除指令。亦即是,恢復控制部213,在針對所被送訊之所有的寫入指令而收訊了第1次的完成通知的情況時,係能夠判斷為「起因於記憶體系統3發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料之寫入」係被作了恢復。於此情況,恢復控制部213以及指令發行部211,係亦可因應於針對所被送訊之所有的寫入指令而接收了第1次的完成通知一事,而將第2模式解除指令經由提交佇列243來對於記憶體系統3作送訊,並開始從應用程式而來之新的I/O要求之受理。
接著,參考圖17~圖30之流程圖,針對在主機2以及記憶體系統3處所被實行的處理之程序進行說明。
(在主機2處之綁定處理)
圖17,係為對於藉由主機2之CPU21所被實行的綁定處理之程序之例作展示之流程圖。此綁定處理,係為用以進行「使正被與主機2作連接的記憶體系統3以虛擬PLP驅動模式來動作的初期設定」之處理。CPU21,例如,當記憶體系統3被與主機2作了連接的情況時,係實行綁定處理。
首先,CPU21,係將第1模式變遷指令對於記憶體系統3作送訊(步驟S101)。第1模式變遷指令,係為用以使記憶體系統3變遷至虛擬PLP驅動模式的指令。第1模式變遷指令,係包含有主機ID。
之後,CPU21,係從記憶體系統3而收訊針對第1模式變遷指令之回應(步驟S102)。所收訊了的回應,係包含有代表記憶體系統3是否變遷至了虛擬PLP驅動模式之資訊。又,所收訊了的回應,係亦可包含有記憶體系統3之驅動器ID。CPU21,係基於所收訊了的回應,來判定記憶體系統3是否變遷至了虛擬PLP驅動模式(步驟S103)。
當記憶體系統3並未變遷至虛擬PLP驅動模式的情況時(步驟S103,NO),CPU21係結束綁定處理。記憶體系統3,例如,當起因於由與主機2相異之其他之主機所致的綁定處理而已變遷至虛擬PLP驅動模式的情況時,係針對從主機2而來之第1模式變遷指令,而將代表並未變遷至虛擬PLP驅動模式一事之回應對於主機2作回送。於此情況,CPU21係使綁定處理結束。
當記憶體系統3係變遷至了虛擬PLP驅動模式的情況時(步驟S103,YES),CPU21,係將記憶體系統3的驅動器ID,作為虛擬PLP驅動器ID241而儲存在NVRAM24中(步驟S104)。CPU21,例如,係將在從記憶體系統3所收訊了的回應中所包含之驅動器ID儲存在NVRAM24中。或者是,CPU21,係亦可將藉由與記憶體系統3之間之連接處理和認證處理所得到的驅動器ID儲存在NVRAM24中。之後,CPU21,係產生被與記憶體系統3之驅動器ID相互附加有關連性之鎖死資料清單245,並儲存於NVRAM24中(步驟S105),而結束綁定處理。
藉由以上之綁定處理,CPU21,係能夠進行用以使正被與主機2作連接的記憶體系統3以虛擬PLP驅動模式來動作的初期設定。具體而言,CPU21,當記憶體系統3因應於第1模式變遷指令而變遷至了虛擬PLP驅動模式的情況時,係能夠將與記憶體系統3相對應之虛擬PLP驅動器ID241和鎖死資料清單245儲存在NVRAM24中。
(在記憶體系統3處之綁定處理)
圖18,係為對於藉由記憶體系統3之CPU12所被實行的綁定處理之程序之例作展示之流程圖。CPU12,係因應於從主機2而收訊了第1模式變遷指令一事,而實行此綁定處理。
首先,CPU12,係取得在從主機2所收訊了的第1模式變遷指令中所包含之主機ID(步驟S201)。將在第1模式變遷指令中所包含之主機ID,稱作第1主機ID。
CPU12,係判定在記憶體系統3中是否已被登錄有與第1主機ID相異之主機ID(步驟S202)。具體而言,CPU12,係確認在NAND型快閃記憶體5中是否作為虛擬PLP主機ID51而被儲存有與第1主機ID相異之主機ID。CPU12,當在NAND型快閃記憶體5中係被儲存有與第1主機ID相異之主機ID的情況時,係判斷在記憶體系統3中係已被登錄有與第1主機ID相異之主機ID。又,CPU12,當在NAND型快閃記憶體5中係並未被儲存有任何之主機ID的情況時、以及當在NAND型快閃記憶體5中係被儲存有第1主機ID的情況時,係判斷在記憶體系統3中係並未被登錄有與第1主機ID相異之主機ID。
當在記憶體系統3中係已被登錄有與第1主機ID相異之主機ID的情況時,CPU12,係對於主機2而通知「錯誤(error)」(步驟S203),並結束綁定處理。亦即是,由於記憶體系統3係已針對具有所被登錄的主機ID之其他的主機而以虛擬PLP驅動模式來動作,因此,CPU12,係將「無法因應於所收訊了的第1模式變遷指令而變遷至虛擬PLP驅動模式」一事對於主機2作通知。
又,當在記憶體系統3中係並未被登錄有與第1主機ID相異之主機ID的情況時,CPU12,係將第1主機ID儲存在NAND型快閃記憶體5中(步驟S204)。CPU12,係使記憶體系統3從通常驅動模式而變遷至虛擬PLP驅動模式(步驟S205)。具體而言,CPU12,係將NAND型快閃記憶體5內之代表通常驅動模式的第1模式資訊52,改寫為代表虛擬PLP驅動模式之第1模式資訊52。之後,CPU12,係將包含有代表變遷至了虛擬PLP驅動模式一事(模式變遷完成)之資訊的回應,對於主機2作送訊(步驟S206)。在回應中,係亦可更進而包含有記憶體系統3之驅動器ID。
藉由以上之綁定處理,記憶體系統3,當從主機2而收訊了第1模式變遷指令的情況時,若是並未對於其他之主機而以虛擬PLP驅動模式來動作,則係能夠從通常驅動模式來變遷至虛擬PLP驅動模式。
(在主機2處之用以進行對於記憶體系統3之使用者資料寫入之處理)
圖19,係為對於藉由主機2之CPU21所被實行的寫入要求處理之程序之例作展示之流程圖。寫入要求處理,係為用以使主機2對於記憶體系統3而要求使用者資料之寫入的處理。CPU21,例如,係在藉由參照圖17而於前所敘述的綁定處理來使記憶體系統3變遷至虛擬PLP驅動模式之後,實行寫入要求處理。
首先,CPU21,係將應被寫入至NAND型快閃記憶體5中的使用者資料,儲存於資料緩衝242中(步驟S301)。另外,CPU21,當應被寫入至NAND型快閃記憶體5中的使用者資料係被儲存於RAM22中的情況時,係亦可將該使用者資料複製至資料緩衝242中。之後,CPU21,係將被儲存在資料緩衝242中的使用者資料鎖死(步驟S302)。更詳細而言,CPU21,係使用所正在實行的OS221之功能,而將被驅動器222所使用的使用者資料所被作儲存之記憶區域(例如,頁面)的狀態作鎖死。藉由此,來防止被儲存有使用者資料之記憶區域被非預期性地釋放的情形。
CPU21,係發行用以將被儲存在資料緩衝242中之使用者資料寫入至NAND型快閃記憶體5中的寫入指令(以下,稱作第1寫入指令)(步驟S303)。
接著,CPU21,係將對應於第1寫入指令之登錄追加至鎖死資料清單245中(步驟S304)。所被追加之登錄,例如,係包含有對應於第1寫入指令之SQ登錄資訊、和資料區域管理資訊。對應於第1寫入指令之SQ登錄資訊,係為代表第1寫入指令之資訊。更具體而言,對應於第1寫入指令之SQ登錄資訊,係為為了使記憶體系統3實行與第1寫入指令相對應之處理而被儲存在提交佇列243中之資訊。又,對應於第1寫入指令之資料區域管理資訊,係為能夠特定出「對應於第1寫入指令之使用者資料所被儲存之資料緩衝242內之記憶區域」的資訊。
接著,CPU21,係將第1寫入指令(亦即是,代表第1寫入指令之SQ登錄資訊)儲存在提交佇列243中(步驟S305)。
另外,CPU21,係亦可在「將第1寫入指令儲存在提交佇列243中」的步驟S305之程序之後,實行將對應於第1寫入指令之登錄追加至鎖死資料清單245中之步驟S304之程序。又,CPU21,係亦可將步驟S304之程序與步驟S305之程序平行地實行。
藉由以上之寫入要求處理,CPU21,係能夠對於記憶體系統3而要求被儲存於資料緩衝242中之使用者資料之寫入。又,CPU21,係能夠使用鎖死資料清單245,來針對關連於對於記憶體系統3所要求了的寫入之資訊(亦即是,關連於所發行了的寫入指令之資訊)作管理。
(在記憶體系統3處之用以進行使用者資料寫入之處理)
圖20,係為對於藉由記憶體系統3之CPU12所被實行的寫入控制處理之程序之例作展示之流程圖。寫入控制處理,係為用以受理藉由主機2所被作了發行的寫入指令並對於與已受理了的寫入指令相對應之使用者資料之寫入作控制的處理。於此,為了使說明成為易於理解,係針對CPU12從主機2之提交佇列243所受理的指令僅有寫入指令的情況來作例示。
首先,CPU21,係從提交佇列243而取得寫入指令(以下,稱作第2寫入指令)(步驟S401)。CPU12,係基於第2寫入指令而對於寫入管理表63作更新(步驟S402)。具體而言,CPU12,係從第2寫入指令,而例如取得指令ID、LBA、資料長度以及資料緩衝資訊。CPU12,係將展示有「所取得的指令ID、LBA、資料長度以及資料指標」之登錄,追加至寫入管理表63中。
接著,CPU12,係將針對第2寫入指令之第1次的完成通知儲存在完成佇列244中(步驟S403)。針對第2寫入指令之第1次的完成通知,係包含第2寫入指令之指令ID。
接著,CPU12,係判定被儲存在主機2之資料緩衝242中的未寫入之使用者資料之總量是否到達了寫入單位(步驟S404)。CPU12,係使用寫入管理表63,來取得被儲存在資料緩衝242中之未寫入之使用者資料之總量。
當被儲存在資料緩衝242中的未寫入之使用者資料之總量並未到達寫入單位的情況時(步驟S404,NO),由CPU12所致之處理係回到步驟S401處。亦即是,CPU12,係繼續進行用以受理新的寫入指令之處理。
當被儲存在資料緩衝242中的未寫入之使用者資料之總量係到達了寫入單位的情況時(步驟S404,YES),CPU12,係將寫入單位之使用者資料從主機2之資料緩衝242而傳輸至記憶體系統3之NAND型快閃記憶體5處(步驟S405)。CPU12,係將被作了傳輸的使用者資料,寫入至NAND型快閃記憶體5處(步驟S406)。
接著,CPU12,係判定是否存在有「所對應之使用者資料係成為了能夠從NAND型快閃記憶體5而讀出」的寫入指令(步驟S407)。當並不存在有「所對應之使用者資料係成為了能夠讀出」之寫入指令的情況時(步驟S407,NO),由CPU12所致之處理係回到步驟S407處。亦即是,由於還無法對於主機2而通知代表「與寫入指令相對應之使用者資料之寫入為完成」一事之第2次的完成通知,因此,由CPU12所致之處理係回到步驟S407處。
當存在有「所對應之使用者資料係成為了能夠讀出」之寫入指令的情況時(步驟S407,YES),CPU12,係將針對此寫入指令之第2次的完成通知儲存在完成佇列244中(步驟S408)。以下,係將「所對應之使用者資料係成為了能夠讀出」的寫入指令,稱作對象寫入指令。針對對象寫入指令之第2次的完成通知,係包含對象寫入指令之指令ID。之後,CPU12,係對於寫入管理表63作更新(步驟S409)。具體而言,CPU12,係從寫入管理表63,而將與對象寫入指令相對應之登錄刪除。又,CPU12,係以追加對象寫入指令之指令ID的方式,來對於指令日誌53作更新(步驟S410)。
接著,CPU12,係判定是否針對「與在步驟S406處所作了寫入的寫入單位之使用者資料相對應之全部的寫入指令」而將第2次的完成通知儲存至了完成佇列244中(步驟S411)。當針對與寫入單位之使用者資料相對應之至少1個的寫入指令而並未將第2次的完成通知儲存至完成佇列244中的情況時(步驟S411,NO),由CPU12所致之處理係回到步驟S407處。
另一方面,當針對與寫入單位之使用者資料相對應之全部的寫入指令而均將第2次的完成通知儲存至了完成佇列244中的情況時(步驟S411,YES),由CPU12所致之處理係回到步驟S401處。亦即是,CPU12,係從主機2而受理新的寫入指令,並繼續進行用以對於與已受理了的寫入指令相對應之使用者資料之寫入作控制的處理。
藉由以上之寫入控制處理,CPU12,係能夠從主機2而受理寫入指令,並對於與已受理了的寫入指令相對應之使用者資料之寫入作控制。具體而言,CPU12,當從主機2而受理了寫入指令的情況時,係將第1次的完成通知對於主機2作回送。又,CPU12,當在資料緩衝242中被儲存有寫入單位之使用者資料的情況時,係將該寫入單位之使用者資料寫入至NAND型快閃記憶體5中。之後,CPU12,係對於主機2而回送針對「與寫入為完成的使用者資料相對應之寫入指令」之第2次的完成通知。
故而,CPU12,係能夠藉由對於主機2而回送第1次的完成通知與第2次的完成通知,而將寫入指令之處理狀態對於主機2作通知。又,CPU12,係能夠藉由由延遲寫入完備(Delayed Write Completion)所致之寫入,來對於NAND型快閃記憶體5之記憶區域有效率地作利用。
另外,CPU12,係亦可並不僅是當在步驟S404處之「被儲存於主機2之資料緩衝242中的未寫入之使用者資料之總量為到達了寫入單位」的情況,而亦在「從受理寫入指令起所經過之時間為超過了臨限值」的情況時,將與已受理的寫入指令相對應之使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中。具體而言,CPU12,當在從受理寫入指令起所經過之時間為超過了臨限值的情況時,係將與已受理的寫入指令相對應之使用者資料,從主機2之資料緩衝242而傳輸至NAND型快閃記憶體5處。之後,CPU12,係將所被作了傳輸的使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中。藉由此,CPU12,係能夠在被主機2所期待的時間內,而通知針對寫入指令之第2次的完成通知。
(在主機2處之基於從記憶體系統3而來之回應所致的處理)
圖21,係為對於藉由主機2之CPU21所被實行的回應收訊處理之程序之例作展示之流程圖。回應收訊處理,係為基於從記憶體系統3所收訊了的回應(完成通知)而進行之處理。CPU21,係因應於收訊了藉由記憶體系統3所被發行的插斷一事,而實行回應收訊處理。
首先,CPU21,係從完成佇列244而取得完成通知(步驟S501)。CPU21,係取得在所取得了的完成通知中所包含之指令ID(步驟S502)。之後,CPU21,係在鎖死資料清單245中,特定出與所取得的指令ID相對應之登錄(步驟S503)。
CPU21,係使用所被特定出的登錄,而判定所接收了的完成通知是否為第1次的完成通知(步驟S504)。具體而言,CPU21,例如,當作為所被特定出的登錄內之完成通知狀態而並未被設定有任何之值的情況時,係判斷所接收了的完成通知為第1次的完成通知。又,CPU21,當作為所被特定出的登錄內之完成通知狀態而被設定有代表係已接收了第1次的完成通知之值的情況時,係判斷所接收了的完成通知為第2次的完成通知。
當所接收了的完成通知係為第1次的完成通知的情況時(步驟S504,YES),CPU21,係在被使用於針對完成通知之序列編號之分配中的變數Cseq處加算上 “1”(亦即是進行增數)(步驟S505)。之後,CPU21,係使用變數Cseq,來將所被特定出的登錄作更新(步驟S506),並結束回應收訊處理。具體而言,CPU21,係作為所被特定出的登錄內之完成通知順序,而追加(設定)藉由變數Cseq所展示的序列編號。藉由此,對於所收訊了的完成通知,係分配有藉由變數Cseq所展示的序列編號。又,CPU21,係作為所被特定出的登錄內之完成通知狀態,而追加代表「係已接收了第1次的完成通知」一事之值。
當所收訊了的完成通知係為第2次的完成通知的情況時(步驟S504,NO),CPU21,係將被與所取得了的指令ID相互附加有關連性之資料緩衝242內的使用者資料之鎖死解除(步驟S507)。應用程式或OS221,係在使資料緩衝242之鎖死被作了解除之後,將使用者資料71刪除。CPU21,例如,係能夠使用所特定出的登錄內之資料區域管理資訊,來特定出應解除鎖死之資料緩衝242內的使用者資料。在使用者資料之鎖死被作了解除的情況時,該使用者資料係被刪除。亦即是,該使用者資料所被儲存之資料緩衝242內之記憶區域(亦即是,NVRAM24內之記憶區域)係被釋放。之後,CPU21,係將所被特定出的登錄從鎖死資料清單245而刪除(步驟S508),並結束回應收訊處理。
藉由以上之回應收訊處理,CPU21,係能夠因應於「所接收了的完成通知係為針對所對應的寫入指令之第1次的完成通知還是第2次的完成通知」一事,來進行相異之處理。亦即是,當所收訊了的完成通知係為第1次的完成通知的情況時,CPU21,係在所對應的鎖死資料清單245內之登錄中,追加被分配給該完成通知之序列編號Cseq、和代表「已接收了第1次的完成通知」一事之資訊。又,當所收訊了的完成通知係為第2次的完成通知的情況時,CPU21,係將所對應的使用者資料(亦即是,完成了寫入的使用者資料)和所對應的鎖死資料清單245內之登錄,從NVRAM24而刪除。
接著,參考圖22以及圖23,針對解綁定處理作說明。解綁定處理,係為用以使記憶體系統3強制性地從虛擬PLP驅動模式而變遷至通常驅動模式的處理。於此,係針對「記憶體系統3正在對於主機2而以虛擬PLP驅動模式動作」的情況作考慮。在正在以虛擬PLP驅動模式而動作的記憶體系統3處,於NAND型快閃記憶體5中,係被儲存有主機2之主機ID、和代表虛擬PLP驅動模式的第1模式資訊52。
(在主機2處之解綁定處理)
圖22,係為對於藉由主機2之CPU21所被實行的解綁定處理之程序之例作展示之流程圖。CPU21,當主機2或者是記憶體系統3在發生了異常結束之後而進行了啟動的情況時、或是當記憶體系統3非預期性地而進行了再啟動的情況時,係能夠實行解綁定處理。
首先,CPU21,係將第1模式解除指令對於記憶體系統3作送訊(步驟S601)。第1模式解除指令,係為要求從虛擬PLP驅動模式而變遷至通常驅動模式的指令。之後,CPU21,係將虛擬PLP驅動器ID241從NVRAM24而刪除(步驟S602)。另外,CPU21,當從記憶體系統3而收訊了代表「對於通常驅動模式之變遷為完成」一事之回應的情況時,係亦可將虛擬PLP驅動器ID241從NVRAM24而刪除。
藉由以上之解綁定處理,CPU21,係能夠使正在以虛擬PLP驅動模式而動作之記憶體系統3變遷至通常驅動模式。
(在記憶體系統3處之解綁定處理)
圖23,係為對於藉由記憶體系統3之CPU12所被實行的解綁定處理之程序之例作展示之流程圖。CPU12,係因應於從主機2而收訊了第1模式解除指令一事,而實行解綁定處理。
CPU12,係基於從主機2所收訊了的第1模式解除指令,而使記憶體系統3從虛擬PLP驅動模式而變遷至通常驅動模式(步驟S701)。更詳細而言,CPU12,係將被儲存於NAND型快閃記憶體5中之第1模式資訊52更新為會代表通常驅動模式。之後,CPU12,係將虛擬PLP主機ID51從NAND型快閃記憶體5而刪除(步驟S702)。
藉由以上之解綁定處理,CPU12,係能夠基於從主機2所收訊了的第1模式解除指令,而使記憶體系統3從虛擬PLP驅動模式而變遷至通常驅動模式。
接著,參考圖24以及圖25,針對在記憶體系統3之動作為正常地結束的情況時之關機處理進行說明。
(在主機2處之關機處理)
圖24,係為對於藉由主機2之CPU21所被實行的關機處理之程序之例作展示之流程圖。CPU21,在對於記憶體系統3而要求動作之結束之前,係實行關機處理。
首先,CPU21,係將清除指令儲存於提交佇列243中(步驟S801)。
接著,CPU21,係實行回應收訊處理(步驟S802)。關於回應收訊處理的具體性之處理程序,係如同參考圖21而於前所述一般。之後,CPU21,係使用鎖死資料清單245,而判定「是否針對所發行了的所有的寫入指令而接收了第2次的完成通知」(步驟S803)。CPU21,當在鎖死資料清單245中並未包含有任何1個的登錄的情況時,係判斷為針對所發行了的所有的寫入指令而接收了第2次的完成通知。CPU21,當在鎖死資料清單245中包含有至少1個的登錄的情況時,係判斷為針對所發行了的寫入指令之中之至少1個的寫入指令而尚未接收第2次的完成通知。
當針對所發行了的寫入指令之中之至少1個的寫入指令而尚未接收第2次的完成通知的情況時(步驟S803,NO),由CPU21所致之處理係回到步驟S802處。亦即是,CPU21,係繼續進行用以從記憶體系統3而收訊針對所發行了的寫入指令之完成通知的處理。
當針對所發行了的所有的寫入指令而接收了第2次的完成通知的情況時(步驟S803,YES),CPU21,係將虛擬PLP驅動器ID241和鎖死資料清單245從NVRAM24而刪除(步驟S804)。之後,CPU21,係對於記憶體系統3而送訊關機命令(步驟S805)。
藉由以上之關機處理,CPU21,在針對對於記憶體系統3所發行之所有的寫入指令而接收了第2次的完成通知之後,係能夠對於記憶體系統3而送訊關機命令。亦即是,CPU21,係能夠以不會在「與所有的寫入指令相對應之使用者資料之寫入」完成之前便使記憶體系統3結束動作的方式(亦即是,不會發生異常結束的方式)來進行控制。
(在記憶體系統3處之關機處理)
圖25,係為對於藉由記憶體系統3之CPU12所被實行的關機處理之程序之例作展示之流程圖。CPU12,係依循於由主機2所致之要求(更詳細而言,清除指令、關機命令等),而實行關機處理。
首先,CPU12,係從提交佇列243而取得清除指令(步驟S901)。CPU12,係因應於所取得的清除指令,而將「與已受理的寫入指令相對應之未寫入之使用者資料」從主機2之資料緩衝242而傳輸至記憶體系統3之NAND型快閃記憶體5處(步驟S902)。CPU12,係將所被作了傳輸的使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中(步驟S903)。
後續之步驟S904~步驟S908之處理程序,係與參照圖20而於前所作了敘述的寫入控制處理之步驟S407~步驟S411之處理程序相同。亦即是,CPU12,係進行用以將「針對與所作了寫入的使用者資料相對應之全部的寫入指令之第2次的完成通知」儲存至完成佇列244中之處理。
之後,當針對與所作了寫入的使用者資料相對應之全部的寫入指令而均將第2次的完成通知儲存至了完成佇列244中的情況時(步驟S908,YES),CPU12係從主機2而收訊關機命令(步驟S909)。CPU12,係基於關機命令,而使記憶體系統3從虛擬PLP驅動模式而變遷至通常驅動模式(步驟S910)。更詳細而言,CPU12,係將被儲存於NAND型快閃記憶體5中之第1模式資訊52更新為會代表通常驅動模式。又,CPU12,係將被儲存在NAND型快閃記憶體5中之虛擬PLP主機ID51刪除(步驟S911)。之後,CPU12係將記憶體系統3之動作結束(步驟S912)。
藉由以上之關機處理,CPU12,係能夠因應於從主機2所收訊了的清除指令,而將「與對於記憶體系統3所發行之所有的寫入指令相對應之使用者資料之寫入」完成。接著,CPU12,在將針對該些之全部的寫入指令之第2次的完成通知儲存在完成佇列244中之後,係能夠使記憶體系統3之動作結束。亦即是,CPU12,係能夠以不會在「與所有的寫入指令相對應之使用者資料之寫入」完成之前便使記憶體系統3之動作結束的方式(亦即是,不會發生異常結束的方式)來對於記憶體系統3進行控制。
另外,如同前述一般,CPU12,在從受理寫入指令起所經過之時間為超過了臨限值的情況時,係亦可將與已受理的寫入指令相對應之使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中。於此情況,CPU12,由於係能夠在被主機2所期待的時間內,而通知針對寫入指令之第2次的完成通知,因此,主機2之CPU21,係就算是在關機處理中並不進行將清除指令儲存在提交佇列243中之程序(相當於圖24之步驟S801)亦可。
接著,參考圖26~圖28,針對啟動處理作說明。啟動處理,係為用以判斷「起因於記憶體系統3在正要進行此次之啟動之前而發生了異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料之寫入」之有無並且將無法完成之使用者資料之寫入作恢復的處理。
(在主機2處之啟動處理)
圖26,係為對於藉由主機2之CPU21所被實行的啟動處理之程序之例作展示之流程圖。CPU21,當記憶體系統3被啟動並且被與主機2作了連接的情況時,係實行啟動處理。
CPU21,係判定在NVRAM24中是否被儲存有虛擬PLP驅動器ID241(步驟S1001)。例如,當記憶體系統3在正要進行此次之啟動之前而發生了異常結束的情況時、以及當記憶體系統3非預期性地進行了再啟動的情況時,係會有在NVRAM24中而被儲存有虛擬PLP驅動器ID241的可能性。
當在NVRAM24中並未被儲存有虛擬PLP驅動器ID241的情況時(步驟S1001,NO),CPU21,係在NVRAM24處作成提交佇列243與完成佇列244(步驟S1002)。亦即是,CPU21,係作為提交佇列243以及完成佇列244之各者,而分配NVRAM24內之記憶區域。之後,CPU21係開始從應用程式而來之新的I/O要求之受理(步驟S1003),並結束啟動處理。
當在NVRAM24中係被儲存有虛擬PLP驅動器ID241的情況時(步驟S1001,YES),CPU21,係取得正被與主機2作連接之記憶體系統3之驅動器ID(步驟S1004)。CPU21,係判定所取得了的驅動器ID與被儲存在NVRAM24中之虛擬PLP驅動器ID241是否相互一致(步驟S1005)。
當所取得了的驅動器ID係與被儲存在NVRAM24中之虛擬PLP驅動器ID241相異的情況時(步驟S1005,NO),CPU21係結束啟動處理。亦即是,被作了連接的記憶體系統3,由於係與對於主機2而以虛擬PLP驅動模式來動作之記憶體系統相異,因此,CPU21係結束啟動處理。另外,在主機2與記憶體系統3處,係亦可進行參照圖17以及圖18而於前所敘述的綁定處理。於此情況,係能夠使記憶體系統3對於主機2而重新以虛擬PLP驅動模式來動作。
當所取得了的驅動器ID為與被儲存在NVRAM24中之虛擬PLP驅動器ID241相互一致的情況時(步驟S1005,YES),CPU21,係判定在被與所取得了的驅動器ID相互附加有關連性之鎖死資料清單245中是否包含有代表接收了第1次的完成通知一事之登錄(步驟S1006)。
當在鎖死資料清單245中並不存在有代表接收了第1次的完成通知一事之登錄的情況時(步驟S1006,NO),CPU21,係在NVRAM24處作成提交佇列243與完成佇列244(步驟S1002)。之後,CPU21係開始從應用程式而來之新的I/O要求之受理(步驟S1003),並結束啟動處理。
當在鎖死資料清單245中係存在有代表接收了第1次的完成通知一事之登錄的情況時(步驟S1006,YES),CPU21,係在NVRAM24處作成提交佇列243與完成佇列244(步驟S1007)。CPU21,係將第2模式變遷指令對於記憶體系統3作送訊(步驟S1008)。第2模式變遷指令,係為用以使記憶體系統3從通常寫入模式而變遷至恢復寫入模式的指令。接著,CPU21,係實行恢復寫入要求處理(步驟S1009)。恢復寫入要求處理,係為用以對於記憶體系統3而要求進行「與代表接收了第1次的完成通知一事之1個以上的鎖死資料清單245之登錄之各者相互對應的使用者資料」之寫入的處理。更詳細而言,在恢復寫入要求處理中,與代表接收了第1次的完成通知一事之1個以上的鎖死資料清單245之登錄之各者相互對應的寫入指令,係被儲存在提交佇列243中。關於恢復寫入要求處理的具體性之處理程序,係參考圖27而於後再作敘述。
接著,CPU21,係實行回應收訊處理(步驟S1010)。在回應收訊處理中,CPU21,係進行與針對從記憶體系統3所收訊了的寫入指令之第1次的完成通知或第2次的完成通知相對應之處理。關於回應收訊處理的具體性之處理程序,係如同參考圖21而於前所述一般。
之後,CPU21,係判定「是否針對所發行了的所有的寫入指令而接收了第2次的完成通知」(步驟S1011)。所發行了的所有的寫入指令,係為在步驟S1009之恢復寫入要求處理中所發行了的所有的寫入指令。
當針對所發行了的所有的寫入指令之中之至少1個的寫入指令而尚未接收第2次的完成通知的情況時(步驟S1011,NO),由CPU21所致之處理係回到步驟S1010處。亦即是,CPU21,係繼續進行用以從記憶體系統3而收訊針對所發行了的寫入指令之完成通知的處理。
當針對所發行了的所有的寫入指令而接收了第2次的完成通知的情況時(步驟S1011,YES),CPU21,係將第2模式解除指令對於記憶體系統3作送訊(步驟S1012)。第2模式解除指令,係為用以使記憶體系統從恢復寫入模式而變遷至通常寫入模式的指令。之後,CPU21係開始從應用程式而來之新的I/O要求之受理(步驟S1013),並結束啟動處理。
藉由以上之啟動處理,CPU21,係能夠對於記憶體系統3,而再度要求「起因於記憶體系統3在正要進行此次之啟動之前而發生了異常結束或者是記憶體系統3非預期性地進行了再啟動一事所導致的記憶體系統3之對於NAND型快閃記憶體5之寫入成為了未完成的使用者資料」之寫入。更詳細而言,CPU21,係基於鎖死資料清單245內之代表接收了第1次的完成通知一事之登錄,而發行寫入指令,並儲存在提交佇列243中。藉由此,CPU21,係能夠對於記憶體系統3而要求使用者資料之寫入。
另外,CPU21,在步驟S1011處,係亦可替代判定「是否針對所發行了的所有的寫入指令而接收了第2次的完成通知」,而判定「是否針對所發行了的所有的寫入指令而接收了第1次的完成通知」。CPU21,在針對所發行了的所有的寫入指令而收訊了第1次的完成通知的情況時,係能夠判斷為「係將起因於記憶體系統3在正要進行此次之啟動之前而發生了異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料之寫入作了恢復」。於此情況,CPU21,係因應於針對所發行了的所有的寫入指令而接收了第1次的完成通知一事,而將第2模式解除指令對於記憶體系統3作送訊,並開始從應用程式而來之新的I/O要求之受理。
圖27,係為對於藉由主機2之CPU21所被實行的恢復寫入要求處理之程序之例作展示之流程圖。恢復寫入要求處理,係相當於參照圖26而於前所述的啟動處理之步驟S1009。
首先,CPU21,係從鎖死資料清單245,而將分別代表「已接收了第1次的完成通知」一事之n個的登錄,以完成通知順序之升順而取得(步驟S1101)。其中,n係為1以上之整數。之後,CPU21係在變數i處設定"1"。變數i,係為了特定出以完成通知順序之升順而被作了排列之n個的登錄中之其中1個而被作使用。以下,係將以完成通知順序之升順而被作了排列之n個的登錄中之第i個的登錄,稱作第i登錄。
CPU21,係使用第i登錄之資料區域管理資訊,來將所對應的資料緩衝242內之使用者資料鎖死(步驟S1103)。更詳細而言,CPU21,係使用第i登錄之資料區域管理資訊,來特定出使用者資料所被儲存之資料緩衝242內之記憶區域。之後,CPU21,係使用所正在實行的OS221之功能,而將所特定出之記憶區域鎖死。
接著,CPU21,係發行基於第i登錄之登錄資訊所致的寫入指令(以下,稱作第i寫入指令)(步驟S1104)。CPU21,係將第i寫入指令儲存於提交佇列243中(步驟S1105)。CPU21,係在第i登錄中,將作為完成通知順序與完成通知狀態所分別被作了設定之值刪除(步驟S1106)。亦即是,CPU21,係將第i登錄,在所對應的寫入指令被作了發行之後,更新為會代表「尚未收訊第1次之完成通知」。之後,CPU21係對於變數i而作“1”的加算(步驟S1107)。
接著,CPU21,係判定變數i是否為n以下(步驟S1108)。當變數i係為n以下的情況時(步驟S1108,YES),由CPU21所致之處理係回到步驟S1103處。亦即是,CPU21,係更進而進行用以將基於「代表接收了第1次的完成通知一事之其他之登錄」所致的寫入指令對於記憶體系統3而作送訊之處理。
當變數i為超過n的情況時(步驟S1008,NO),CPU21係將恢復寫入要求處理結束。
藉由以上之恢復寫入要求處理,CPU21,係能夠對於記憶體系統3而再度要求「起因於記憶體系統3在正要進行此次之啟動之前而發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料」之寫入。具體而言,CPU21,係能夠使用鎖死資料清單245,而將與代表接收了第1次的完成通知一事之n個的登錄之各者分別相對應的寫入指令,經由提交佇列243來送訊至記憶體系統3處。
(在記憶體系統3處之啟動處理)
圖28,係為對於藉由記憶體系統3之CPU12所被實行的啟動處理之程序之例作展示之流程圖。CPU12,當記憶體系統3被啟動並且確立了與主機2之間之連接的情況時,係實行啟動處理。
首先,CPU12,係對於主機2而通知驅動器ID(步驟S1201)。驅動器ID,係亦可在用以確立記憶體系統3與主機2之間之連接的處理中而被對於主機2作通知。
接著,CPU12,係取得被儲存於NAND型快閃記憶體5中之第1模式資訊52(步驟S1202)。第1模式資訊52,係代表記憶體系統3是身為通常驅動模式或虛擬PLP驅動模式之何者。CPU12,係判定所取得了的第1模式資訊52是否為代表虛擬PLP驅動模式(步驟S1203)。
當所取得了的第1模式資訊52並非為代表虛擬PLP驅動模式的情況時(步驟S1203,NO)、亦即是當為代表通常驅動模式的情況時,CPU12係將啟動處理結束。當第1模式資訊52為代表通常驅動模式的情況時,CPU12,係判斷並不存在有「起因於記憶體系統3在正要進行此次之啟動之前而發生異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料之寫入」。故而,CPU12係將啟動處理結束,並受理由主機2所致之對於記憶體系統3之存取。
當所取得了的第1模式資訊52係為代表虛擬PLP驅動模式(步驟S1203,YES),CPU12,係判定是否從主機2而收訊了第1模式解除指令(步驟S1204)。第1模式解除指令,係為用以使記憶體系統3從虛擬PLP驅動模式而變遷至通常驅動模式的指令。
當從主機2而收訊了第1模式解除指令的情況時(步驟S1204,YES),CPU12,係使記憶體系統3從虛擬PLP驅動模式而變遷至通常驅動模式(步驟S1205)。又,CPU12,係將被儲存在NAND型快閃記憶體5中之虛擬PLP主機ID51刪除(步驟S1206),並將啟動處理結束。藉由此,在變遷至了通常驅動模式之記憶體系統3處,CPU12係受理由主機2所致之對於記憶體系統3之存取。
當並未從主機2而收訊第1模式解除指令的情況時(步驟S1204,NO),CPU12,係判定是否從主機2而收訊了第2模式變遷指令(步驟S1207)。第2模式變遷指令,係為用以使記憶體系統3從通常寫入模式而變遷至恢復寫入模式的指令。在記憶體系統3變遷至了恢復寫入模式的情況時,CPU12,係將從主機2所受理了的寫入指令(亦即是,從提交佇列243所取得了的寫入指令),以所受理的順序來進行處理。亦即是,CPU12,係保證會以所受理的順序來實行與寫入指令相對應之寫入處理。
當並未從主機2而收訊第2模式變遷指令的情況時(步驟S1207,NO),CPU12,係將啟動處理結束。例如,當「雖然記憶體系統3在正要進行此次之啟動之前而發生了異常結束或者是非預期性地進行了再啟動,但是係並不存在有對於NAND型快閃記憶體5之寫入成為了未完成的使用者資料」的情況時,CPU12,係將啟動處理結束。故而,在以虛擬PLP驅動模式而動作之記憶體系統3處,CPU12係受理由主機2所致之對於記憶體系統3之存取。
當從主機2而收訊了第2模式變遷指令的情況時(步驟S1207,YES),CPU12,係使記憶體系統3從通常寫入模式而變遷至恢復寫入模式(步驟S1208)。接著,CPU21,係實行寫入控制處理(步驟S1209)。CPU12,在寫入控制處理中,係從主機2而受理寫入指令,並對於與已受理了的寫入指令相對應之使用者資料之寫入作控制。關於寫入控制處理的具體性之處理程序,係如同參考圖20而於前所述一般。
接著,CPU12,係判定是否從主機2而收訊了第2模式解除指令(步驟S1210)。
當並未從主機2而收訊第2模式解除指令的情況時(步驟S1210,NO),由CPU12所致之處理係回到步驟S1209處。亦即是,CPU12,係繼續進行寫入控制處理,直到從主機2而收訊第2模式解除指令為止。
當從主機2而收訊了第2模式解除指令的情況時(步驟S1210,YES),CPU12,係使記憶體系統3從恢復寫入模式而變遷至通常寫入模式(步驟S1211),並將啟動處理結束。藉由此,在變遷至了通常寫入模式之記憶體系統3處,CPU12係受理由主機2所致之對於記憶體系統3之存取。
藉由以上之啟動處理,當存在有「起因於記憶體系統3在正要進行此次之啟動之前而發生了異常結束或者是非預期性地進行了再啟動一事所導致的無法完成之使用者資料之寫入」的情況時,CPU12係能夠將無法完成之使用者資料之寫入作恢復。
於此,針對當在記憶體系統3處並未設置有用以以恢復寫入模式來動作之構成的情況時之恢復寫入要求處理以及寫入控制處理作說明。於此情況,在記憶體系統3處,當從主機2而受理了複數之寫入指令的情況時,係會有無法保證會將對應於寫入指令之寫入處理以受理順序來實行的可能性。
因此,主機2,當對於記憶體系統3而送訊了所指定之LBA(或者是LBA範圍)為有所重複的複數之寫入指令的情況時,例如,係在將該些之複數之寫入指令之1個儲存在提交佇列243中之後,立即將清除指令儲存在提交佇列243中。具體而言,主機2,係反覆進行「等待針對清除指令之完成通知的收訊,並將接下來的寫入指令儲存在提交佇列243中」之動作。記憶體系統3,係以將清除指令之完成通知作了回送之順序,來進行將在收訊清除指令之前所收訊了的寫入指令之資料寫入至NAND型快閃記憶體5中之處理。藉由此,在記憶體系統3處,係能夠保證會將分別與指定同一之LBA的複數之寫入指令相對應的寫入處理以寫入指令之受理順序來實行。
本實施形態之記憶體系統3,由於係支援恢復寫入模式,因此,主機2,僅需要在提交佇列243中以想要處理之順序來堆積寫入指令,便能夠高速地進行恢復處理。
圖29,係為對於藉由主機2之CPU21所被實行的當使用有清除指令的情況時之恢復寫入要求處理之程序之例作展示之流程圖。步驟S1301~步驟S1305之處理程序,係與參照圖27而於前所作了敘述的恢復寫入要求處理之步驟S1101~步驟S1105之處理程序相同。亦即是,CPU21,係從鎖死資料清單245,而將分別代表「已接收了第1次的完成通知」一事之n個的登錄,以完成通知順序之升順而取得。CPU21,係基於第i登錄,而將所對應之資料緩衝242內之使用者資料鎖死,並發行所對應之寫入指令(第i寫入指令)而儲存在提交佇列243中。
接著,CPU21,係參照n個的登錄,而判定「在第i寫入指令之後,是否發行有所指定之LBA(或者是LBA範圍)為與第i寫入指令相互重複的其他之寫入指令」(步驟S1306)。具體而言,CPU21,例如,係判定在n個的登錄中,是否包含有「包含有較第i登錄之完成通知順序而更大的完成通知順序並且包含有對應於指定與第i寫入指令相同之LBA之寫入指令的SQ登錄資訊」之登錄。
當在第i寫入指令之後,係被發行有所指定之LBA為與第i寫入指令相互重複的其他之寫入指令的情況時(步驟S1306,YES),CPU21,係發行清除指令並儲存在提交佇列243中(步驟S1307),由CPU21所致之處理係前進至步驟S1308處。在提交佇列243中,於第i寫入指令之後係被儲存有清除指令。藉由此,在記憶體系統3處,係能夠將對應於第i寫入指令之使用者資料之寫入處理,因應於後續之清除指令而完成。故而,在記憶體系統3處,係能夠保證會將分別與指定同一之LBA的複數之寫入指令相對應的寫入處理以寫入指令之受理順序來實行。
當在第i寫入指令之後,並未被發行有所指定之LBA為與第i寫入指令相互重複的其他之寫入指令的情況時(步驟S1306,NO),由CPU21所致之處理係前進至步驟S1308處。
後續之步驟S1308~步驟S1310之處理程序,係與參照圖27而於前所作了敘述的恢復寫入要求處理之步驟S1106以及步驟S1108之處理程序相同。
藉由以上之恢復寫入要求處理,CPU21,當對於記憶體系統3而送訊所指定之LBA為有所重複的複數之寫入指令的情況時,係在將該些之複數之寫入指令之1個儲存在提交佇列243中之後,立即將清除指令儲存在提交佇列243中。藉由此,在記憶體系統3處,係能夠保證會將分別與指定同一之LBA的複數之寫入指令相對應的寫入處理以寫入指令之受理順序來實行。
圖30,係為對於藉由記憶體系統3之CPU12所被實行的當被使用有清除指令的情況時之寫入控制處理之程序之例作展示之流程圖。於此,為了使說明成為易於理解,係針對被儲存在提交佇列243中之指令僅有寫入指令與清除指令的情況來作例示。
首先,CPU12,係從提交佇列243而取得指令(步驟S1401)。之後,CPU12,係判定所取得了的指令為寫入指令與清除指令之何者(步驟S1402)。
當所取得了的指令係為寫入指令的情況時(步驟S1402,寫入指令),CPU12係實行步驟S1403~步驟S1412之處理程序,並將寫入控制處理結束。步驟S1403~步驟S1412之處理程序,係與參照圖20而於前所作了敘述的寫入控制處理之步驟S402~步驟S411之處理程序相同。
當所取得了的指令係為清除指令的情況時(步驟S1402,清除指令),CPU12,係將與已受理的寫入指令相對應之未寫入之使用者資料,從主機2之資料緩衝242而傳輸至記憶體系統3之NAND型快閃記憶體5處(步驟S1413)。CPU12,係將所被作了傳輸的使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中(步驟S1414)。接著,CPU21,係實行步驟S1408~S1412之處理程序,並將寫入控制處理結束。步驟S1408~步驟S1412之處理程序,係與參照圖20而於前所作了敘述的寫入控制處理之步驟S407~步驟S411之處理程序相同。
藉由以上之寫入控制處理,CPU12,當從主機2而受理寫入指令並進行與已受理之寫入指令相對應之寫入處理的情況時,若是受理了清除指令,則係將正被儲存於主機2之資料緩衝242中的未寫入之使用者資料,附加有填補(padding)地而寫入至NAND型快閃記憶體5中。主機2,當對於記憶體系統而送訊所指定之LBA為有所重複的複數之寫入指令的情況時,係在將該些之複數之寫入指令之1個儲存在提交佇列243中之後,立即將清除指令儲存在提交佇列243中。藉由此,CPU12,係能夠將分別與指定同一之LBA的複數之寫入指令相對應的寫入處理,因應於後續之清除指令來完成。故而,在記憶體系統3處,係能夠保證會將分別與指定同一之LBA的複數之寫入指令相對應的寫入處理以寫入指令之受理順序來實行。
如同以上所作了說明一般,若依據本實施形態,則係能夠將針對發生有異常結束或者是非預期性地作了再啟動的記憶體系統3之未完成之寫入作恢復。寫入管理部212,係在NVRAM24中儲存第1資料。寫入管理部212以及指令發行部211,係進行被與第1資料相互附加有關連之第1寫入要求(例如寫入指令)的對於記憶體系統3之第1次的送訊。寫入管理部212,係將包含有相當於第1寫入要求之資訊的第1管理資料(例如,鎖死資料清單245之登錄)儲存在NVRAM24中。寫入管理部212,係因應於從記憶體系統3而接收了針對第1次所被送訊的第1寫入要求之第1回應一事,而將代表已接收了針對第1次所被送訊的第1寫入要求之第1回應一事的資訊追加至第1管理資料中。寫入管理部212,在接收了第1回應之後,係因應於從記憶體系統3而接收了針對第1次所被送訊的第1寫入要求之第2回應一事,而從NVRAM24來將第1資料與第1管理資料刪除。
如此這般,主機2,係將應被寫入至NAND型快閃記憶體5中之第1資料、和對於從主機2而對於記憶體系統3所第1次被作送訊的寫入指令之處理狀況作管理之第1管理資料,儲存在NVRAM24中。藉由此,例如,當記憶體系統3並不具備能夠使第1資料被PLP功能所保護之緩衝的情況時,就算是發生了異常之結束或者是非預期之再啟動,也能夠使用被儲存在NVRAM24中之第1資料和第1管理資料,來使未完成之寫入作恢復。
在本實施形態之說明中所記載之各種之功能的各者,係亦可藉由電路(處理電路)而被實現。在處理電路之例中,係包含有如同中央處理裝置(CPU)一般之被作了程式化的處理器。此處理器,係藉由實行被儲存於記憶體中之電腦程式(命令群),而實行在本實施形態之說明中所記載的各者之功能。此處理器,係亦可為包含有電性電路之微處理器。在處理電路之例中,係亦包含有數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、微控制器、控制器、其他之電性電路零件。在本實施形態之說明中所記載之CPU以外的其他之組件(component)之各者,係亦可藉由處理電路而被實現。
雖係針對本發明之數種實施形態作了說明,但是,該些實施形態,係僅為作為例子所提示者,而並非為對於本發明之範圍作限定者。此些之新穎的實施形態,係可藉由其他之各種形態來實施,在不脫離發明之要旨的範圍內,係可進行各種之省略、置換、變更。此些之實施形態或其變形,係亦被包含於發明之範圍或要旨中,並且亦被包含在申請專利範圍中所記載的發明及其均等範圍內。
1:資訊處理系統
2:主機
3:記憶體系統
4:控制器
5:NAND型快閃記憶體
6:DRAM
11:主機I/F
12:CPU
13:NAND I/F
14:DRAMI/F
15:計時器
21:CPU
22:RAM
23:儲存空間I/F
24:NVRAM
51:虛擬PLP主機ID
52:第1模式資訊
53:指令日誌
61:FW
62:邏輯物理位址轉換表
63:寫入管理表
121:指令受理部
122:模式控制部
122:寫入控制部
211:指令發行部
212:寫入管理部
213:恢復控制部
221:OS
222:驅動器
241:虛擬PLP驅動器ID
242:資料緩衝
243:提交佇列
244:完成佇列
245:鎖死資料清單
246:指標清單
[圖1]係為對於包含有實施形態之資訊處理裝置(主機)與記憶體系統的資訊處理系統之構成例作展示之區塊圖。
[圖2]係為對於在該實施形態的資訊處理裝置處所被使用之鎖死資料清單之構成例作展示之圖。
[圖3]係為對於在圖1之記憶體系統處所被使用之邏輯物理位址轉換表之構成例作展示之圖。
[圖4]係為對於在圖1之記憶體系統處所被使用之寫入管理表之構成例作展示之圖。
[圖5]係為對於在圖1之資訊處理系統處的綁定(bind)動作之例作展示之區塊圖。
[圖6]係為對於在圖1之資訊處理系統處的寫入動作之例作展示之區塊圖。
[圖7]係為對於在圖6之寫入動作中而被作了更新的鎖死資料清單之第1例作展示之圖。
[圖8]係為對於在圖6之寫入動作中而被作了更新的鎖死資料清單之第2例作展示之圖。
[圖9]係為對於在接續於圖6之後的寫入動作之例作展示之區塊圖。
[圖10]係為對於在圖9之寫入動作中而被作了更新的鎖死資料清單之例作展示之圖。
[圖11]係為對於在圖1之資訊處理系統處的關機(shutdown)動作之例作展示之區塊圖。
[圖12]係為對於在接續於圖11之後的關機動作之例作展示之區塊圖。
[圖13]係為對於在圖1之資訊處理系統處的解綁定(unbind)動作之例作展示之區塊圖。
[圖14]係為對於在圖1之資訊處理系統處的恢復(recovery)動作之例作展示之區塊圖。
[圖15]係為對於在接續於圖14之後的恢復動作之例作展示之區塊圖。
[圖16]係為對於在接續於圖15之後的恢復動作之例作展示之區塊圖。
[圖17]係為對於在該實施形態之資訊處理裝置處所被實行的綁定處理之程序之例作展示之流程圖。
[圖18]係為對於在圖1之記憶體系統處所被實行的綁定處理之程序之例作展示之流程圖。
[圖19]係為對於在該實施形態之資訊處理裝置處所被實行的寫入要求處理之程序之例作展示之流程圖。
[圖20]係為對於在圖1之記憶體系統處所被實行的寫入控制處理之程序之例作展示之流程圖。
[圖21]係為對於在該實施形態之資訊處理裝置處所被實行的回應收訊處理之程序之例作展示之流程圖。
[圖22]係為對於在該實施形態之資訊處理裝置處所被實行的解綁定處理之程序之例作展示之流程圖。
[圖23]係為對於在圖1之記憶體系統處所被實行的解綁定處理之程序之例作展示之流程圖。
[圖24]係為對於在該實施形態之資訊處理裝置處所被實行的關機處理之程序之例作展示之流程圖。
[圖25]係為對於在圖1之記憶體系統處所被實行的關機處理之程序之例作展示之流程圖。
[圖26]係為對於在該實施形態之資訊處理裝置處所被實行的啟動處理之程序之例作展示之流程圖。
[圖27]係為對於在該實施形態之資訊處理裝置處所被實行的恢復寫入要求處理之程序之例作展示之流程圖。
[圖28]係為對於在圖1之記憶體系統處所被實行的啟動處理之程序之例作展示之流程圖。
[圖29]係為對於在該實施形態之資訊處理裝置處所被實行的當被使用有清除指令的情況時之恢復寫入要求處理之程序之例作展示之流程圖。
[圖30]係為對於在圖1之記憶體系統處所被實行的當被使用有清除指令的情況時之寫入控制處理之程序之例作展示之流程圖。
2:主機
3:記憶體系統
5:NAND型快閃記憶體
24:NVRAM
51:虛擬PLP主機ID
52:第1模式資訊
53:指令日誌
63:寫入管理表
71:使用者資料
121:指令受理部
123:寫入控制部
211:指令發行部
213:恢復控制部
241:虛擬PLP驅動器ID
242:資料緩衝
243:提交佇列
244:完成佇列
245:鎖死資料清單
Claims (14)
- 一種資訊處理裝置,係能夠與記憶體系統作連接,並具備有: 非揮發性記憶體;和 處理器,係構成為: 在前述非揮發性記憶體中儲存第1資料, 進行被與前述第1資料相互附加有關連之第1寫入要求的對於前述記憶體系統之第1次的送訊, 將包含有相當於前述第1寫入要求之資訊的第1管理資料儲存在前述非揮發性記憶體中, 因應於從前述記憶體系統而接收了針對前述第1次所被送訊的第1寫入要求之第1回應一事,將代表已接收了針對前述第1次所被送訊的第1寫入要求之前述第1回應一事的資訊追加至前述第1管理資料中, 在接收了前述第1回應之後,因應於從前述記憶體系統而接收了針對前述第1次所被送訊的第1寫入要求之第2回應一事,從前述非揮發性記憶體而將前述第1資料與前述第1管理資料刪除。
- 如請求項1所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 因應於在進行了前述第1寫入要求之對於前述記憶體系統之第1次之送訊之後而前述記憶體系統作了啟動一事,而若是前述第1管理資料為被儲存於前述非揮發性記憶體中,則進行前述第1寫入要求之對於前述記憶體系統之第2次之送訊。
- 如請求項2所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 因應於從前述記憶體系統而接收了針對前述第2次所被送訊的第1寫入要求之第1回應與第2回應一事,從前述非揮發性記憶體而將前述第1資料與前述第1管理資料刪除。
- 如請求項1~3中之任一項所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 對於前述記憶體系統送訊第1模式變遷要求, 當前述記憶體系統因應於前述第1模式變遷要求而從第1系統模式變遷至了第2系統模式的情況時, 將前述記憶體系統之辨識資訊儲存在前述非揮發性記憶體中, 進行前述第1寫入要求的對於前述記憶體系統之第1次的送訊, 將被與前述辨識資訊相互附加有關連的前述第1管理資料儲存在前述非揮發性記憶體中, 因應於從前述記憶體系統而接收了針對前述第1次所被送訊的第1寫入要求之前述第1回應一事,將代表已接收了前述第1回應一事的資訊追加至前述第1管理資料中, 在接收了前述第1回應之後,因應於從前述記憶體系統而接收了針對前述第1次所被送訊的第1寫入要求之前述第2回應一事,從前述非揮發性記憶體而將前述第1資料和被與前述記憶體相互附加有關連之前述第1管理資料刪除。
- 如請求項4所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 因應於前述記憶體系統作了啟動一事,而若是前述記憶體系統之前述辨識資訊和被與前述辨識資訊相互附加有關連之前述第1管理資料為被儲存於前述非揮發性記憶體中,則進行前述第1寫入要求之對於前述記憶體系統之第2次之送訊。
- 如請求項4所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 對於以前述第2系統模式而動作之前述記憶體系統,送訊第1模式解除指令, 因應於前述記憶體系統回應於前述第1模式解除指令而從前述第2系統模式變遷至了前述第1系統模式一事,將被儲存於前述非揮發性記憶體中之前述記憶體系統之前述辨識資訊刪除。
- 如請求項1所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 在前述非揮發性記憶體中儲存第2資料, 進行被與前述第2資料相互附加有關連之第2寫入要求的對於前述記憶體系統之第1次的送訊, 將包含有相當於前述第2寫入要求之資訊的第2管理資料儲存在前述非揮發性記憶體中, 因應於從前述記憶體系統而接收了針對前述第1次所被送訊的第2寫入要求之第3回應一事,將代表已接收了針對前述第1次所被送訊的第2寫入要求之前述第3回應一事的資訊追加至前述第2管理資料中, 在接收了前述第3回應之後,因應於從前述記憶體系統而接收了針對前述第1次所被送訊的第2寫入要求之第4回應一事,從前述非揮發性記憶體而將前述第2資料與前述第2管理資料刪除。
- 如請求項7所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 將代表接收針對前述第1次所被送訊的第1寫入要求之前述第1回應與針對前述第1次所被送訊的第2寫入要求之前述第3回應的順序之資訊,儲存於前述非揮發性記憶體中。
- 如請求項8所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 因應於前述記憶體系統作了啟動一事,而若是前述第1管理資料與前述第2管理資料為被儲存於前述非揮發性記憶體中,則依循於接收前述第1回應與前述第3回應之順序,來進行前述第1寫入要求之對於前述記憶體系統之第2次之送訊和前述第2寫入要求之對於前述記憶體系統之第2次之送訊。
- 如請求項9所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 因應於前述記憶體系統作了啟動一事,而若是前述第1管理資料與前述第2管理資料為被儲存於前述非揮發性記憶體中,則對於前述記憶體系統送訊第2模式變遷要求, 當前述記憶體系統因應於前述第2模式變遷要求而從第1寫入模式變遷至了第2寫入模式的情況時,依循於接收前述第1回應與前述第3回應之順序,來進行前述第1寫入要求之對於前述記憶體系統之第2次之送訊和前述第2寫入要求之對於前述記憶體系統之第2次之送訊, 前述第2次所被送訊的第1寫入要求和前述第2次所被送訊的第2寫入要求,係藉由變遷至了前述第2寫入模式之前述記憶體系統而依循被受理之順序來作處理。
- 如請求項10所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 當從前述記憶體系統而接收了針對前述第2次所被送訊的第1寫入要求之前述第1回應以及前述第2回應和針對前述第2次所被送訊的第2寫入要求之前述第3回應以及前述第4回應的情況時,對於前述記憶體系統,而送訊用以使以前述第2寫入模式而動作之前述記憶體系統變遷為前述第1寫入模式之第2模式解除要求。
- 如請求項9所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 當前述第1寫入要求與前述第2寫入要求為對於同一之邏輯位址作指定的情況時,於進行了前述第1寫入要求之對於前述記憶體系統之第2次之送訊與前述第2寫入要求之對於前述記憶體系統之第2次之送訊的其中一者之後,對於前述記憶體系統,而送訊用以使前述記憶體系統完成對應於已受理了的寫入要求之資料寫入的清除要求。
- 如請求項1所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 在結束前述記憶體系統之動作之前,若是前述第1資料與前述第1管理資料為被儲存於前述非揮發性記憶體中,則對於前述記憶體系統,而送訊使前述記憶體系統完成對應於已受理的寫入要求之資料寫入之清除要求, 在從前述記憶體系統而接收了針對前述第1次所被送訊的第1寫入要求之前述第1回應與前述第2回應之後,對於前述記憶體系統而送訊將前述記憶體系統之動作結束之要求。
- 如請求項1所記載之資訊處理裝置,其中, 前述處理器,係更進而構成為: 在以不會使被儲存有前述第1資料之前述非揮發性記憶體內之記憶區域被釋放的方式而將前述第1資料作了鎖死之後,進行前述第1寫入要求的對於前述記憶體系統之第1次的送訊, 因應於從前述記憶體系統而接收了針對前述第1次所被送訊的第1寫入要求之前述第2回應一事,將前述第1資料之鎖死解除。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021-144701 | 2021-09-06 | ||
JP2021144701A JP2023037883A (ja) | 2021-09-06 | 2021-09-06 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202311970A true TW202311970A (zh) | 2023-03-16 |
TWI812012B TWI812012B (zh) | 2023-08-11 |
Family
ID=85386308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111105596A TWI812012B (zh) | 2021-09-06 | 2022-02-16 | 資訊處理裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11899962B2 (zh) |
JP (1) | JP2023037883A (zh) |
CN (1) | CN115774681A (zh) |
TW (1) | TWI812012B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023037883A (ja) | 2021-09-06 | 2023-03-16 | キオクシア株式会社 | 情報処理装置 |
US20240134534A1 (en) * | 2022-10-25 | 2024-04-25 | Samsung Electronics Co., Ltd. | High endurance persistent storage device |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4237354B2 (ja) * | 1999-09-29 | 2009-03-11 | 株式会社東芝 | トランザクション処理方法及びトランザクション処理システム |
US7529904B2 (en) * | 2004-03-31 | 2009-05-05 | International Business Machines Corporation | Storing location identifier in array and array pointer in data structure for write process management |
US7870350B1 (en) * | 2007-06-07 | 2011-01-11 | Nvidia Corporation | Write buffer for read-write interlocks |
JP4439578B1 (ja) * | 2008-12-24 | 2010-03-24 | 株式会社東芝 | 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法 |
US20100228906A1 (en) * | 2009-03-06 | 2010-09-09 | Arunprasad Ramiya Mothilal | Managing Data in a Non-Volatile Memory System |
JP4951652B2 (ja) * | 2009-06-24 | 2012-06-13 | 株式会社日立製作所 | コンピュータシステムのリモートコピー方法及びコンピュータシステム |
JP4995296B2 (ja) * | 2010-03-11 | 2012-08-08 | 株式会社日立製作所 | 計算機システムおよびキャッシュ制御方法 |
CN104937577B (zh) * | 2013-03-15 | 2018-11-30 | 慧与发展有限责任合伙企业 | 支持扩展写入的存储器模块控制器 |
TWI585778B (zh) * | 2013-11-05 | 2017-06-01 | 威盛電子股份有限公司 | 非揮發性記憶體裝置的操作方法 |
US9977740B2 (en) | 2014-03-07 | 2018-05-22 | Hitachi, Ltd. | Nonvolatile storage of host and guest cache data in response to power interruption |
JP6450598B2 (ja) | 2015-01-19 | 2019-01-09 | 東芝メモリ株式会社 | 情報処理装置、情報処理方法およびプログラム |
JP6414853B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
CN106406758B (zh) * | 2016-09-05 | 2019-06-18 | 华为技术有限公司 | 一种基于分布式存储系统的数据处理方法及存储设备 |
US11080245B2 (en) * | 2017-02-10 | 2021-08-03 | DaStratum, Inc. | Multi-tier cloud file system |
KR102398186B1 (ko) * | 2017-07-03 | 2022-05-17 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 |
JP6967959B2 (ja) | 2017-12-08 | 2021-11-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10468077B2 (en) * | 2018-02-07 | 2019-11-05 | Intel Corporation | Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage |
US20190042460A1 (en) | 2018-02-07 | 2019-02-07 | Intel Corporation | Method and apparatus to accelerate shutdown and startup of a solid-state drive |
JP2019175292A (ja) * | 2018-03-29 | 2019-10-10 | 東芝メモリ株式会社 | 電子機器、コンピュータシステム、および制御方法 |
TWI668575B (zh) * | 2018-07-26 | 2019-08-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
KR102599176B1 (ko) | 2018-11-14 | 2023-11-08 | 삼성전자주식회사 | 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법 |
ES2948138T3 (es) | 2019-01-16 | 2023-08-31 | Scio Tech Gmbh | Módulo de celdas de batería, dispositivo de posicionamiento para la producción de módulos de celdas de batería y procedimiento para la producción de módulos de celdas de batería |
JP2021033849A (ja) | 2019-08-28 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11016905B1 (en) | 2019-11-13 | 2021-05-25 | Western Digital Technologies, Inc. | Storage class memory access |
US20200089407A1 (en) | 2019-11-22 | 2020-03-19 | Intel Corporation | Inter zone write for zoned namespaces |
JP2021114038A (ja) | 2020-01-16 | 2021-08-05 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20220048303A (ko) * | 2020-10-12 | 2022-04-19 | 삼성전자주식회사 | 크레딧을 이용하는 호스트 장치와 스토리지 장치의 동작 방법 |
US11593034B2 (en) * | 2021-04-19 | 2023-02-28 | Dell Products L.P. | Simulating stretched volume remote instance using a shadow volume on a local system |
CN113220490A (zh) * | 2021-05-31 | 2021-08-06 | 清华大学 | 异步写回持久化内存的事务持久化方法及系统 |
JP2023037883A (ja) | 2021-09-06 | 2023-03-16 | キオクシア株式会社 | 情報処理装置 |
-
2021
- 2021-09-06 JP JP2021144701A patent/JP2023037883A/ja active Pending
-
2022
- 2022-02-16 TW TW111105596A patent/TWI812012B/zh active
- 2022-03-03 US US17/653,393 patent/US11899962B2/en active Active
- 2022-03-11 CN CN202210235591.5A patent/CN115774681A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11899962B2 (en) | 2024-02-13 |
CN115774681A (zh) | 2023-03-10 |
JP2023037883A (ja) | 2023-03-16 |
US20230070397A1 (en) | 2023-03-09 |
TWI812012B (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4809040B2 (ja) | ストレージ装置及びスナップショットのリストア方法 | |
US9104329B2 (en) | Mount-time reconciliation of data availability | |
US9501231B2 (en) | Storage system and storage control method | |
TWI812012B (zh) | 資訊處理裝置 | |
TW201205286A (en) | Controller, data storage device, and program product | |
JP4464378B2 (ja) | 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法 | |
JP5137413B2 (ja) | 半導体記憶装置 | |
KR20120037786A (ko) | 저장 장치, 그것의 락 모드 관리 방법, 및 그것을 포함하는 메모리 시스템 | |
TWI824837B (zh) | 記憶體系統 | |
JP4745465B1 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP5826949B2 (ja) | ストレージ装置及びデータ管理方法 | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
TWI815622B (zh) | 資訊處理裝置 | |
JP5204265B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
JP5692829B1 (ja) | 仮想ディスクイメージを処理するシステム、クライアント端末、及び方法 | |
US20240176520A1 (en) | Storage system and storage control method | |
TWI669610B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US20100161925A1 (en) | Information processing apparatus, information processing method, and computer-readable recording medium having an information processing program | |
WO2018055750A1 (ja) | 情報システム及び記憶制御方法 | |
JP2023056222A (ja) | ストレージシステム及びストレージシステムにおけるデータ複製方法 | |
WO2018055751A1 (ja) | 計算機システム及び記憶制御方法 |