專利名稱:將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式同時(shí)在電源損失期間保持?jǐn)?shù)據(jù)完整性的裝置和方法。
背景技術(shù):
使用數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)來存儲(chǔ)由一個(gè)或多個(gè)主機(jī)系統(tǒng)提供的信息。這些數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)接收將信息寫入一個(gè)或多個(gè)輔助存儲(chǔ)設(shè)備的請(qǐng)求,以及從那些一個(gè)或多個(gè)輔助存儲(chǔ)設(shè)備檢索信息的請(qǐng)求。在接收寫入請(qǐng)求后,系統(tǒng)將從主機(jī)檢索的信息存儲(chǔ)在數(shù)據(jù)超高速緩存中。在某些實(shí)現(xiàn)中,還將那一信息的拷貝存儲(chǔ)在非易失性存儲(chǔ)設(shè)備中。在接收讀取請(qǐng)求時(shí),系統(tǒng)從一個(gè)或多個(gè)輔助存儲(chǔ)設(shè)備檢索信息并將那一信息移動(dòng)到數(shù)據(jù)超高速緩存。因此,該系統(tǒng)連續(xù)地向和從存儲(chǔ)設(shè)備以及向和從數(shù)據(jù)超高速緩存移動(dòng)信息。
然而,如果以第一扇區(qū)格式寫入位于數(shù)據(jù)超高速緩存中的數(shù)據(jù),以及如果以第二扇區(qū)格式寫入位于一個(gè)或多個(gè)存儲(chǔ)設(shè)備中的數(shù)據(jù),那么在數(shù)據(jù)超高速緩存和一個(gè)或多個(gè)存儲(chǔ)設(shè)備間,需要扇區(qū)格式轉(zhuǎn)換設(shè)備。申請(qǐng)人已經(jīng)發(fā)現(xiàn)所需要的是將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式同時(shí)在電源損失事件期間保持?jǐn)?shù)據(jù)完整性的扇區(qū)格式轉(zhuǎn)換設(shè)備,以及使用那個(gè)設(shè)備的方法。申請(qǐng)人的裝置和方法將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式,同時(shí)在電源損失事件期間保持?jǐn)?shù)據(jù)完整性。在某些實(shí)施例中,申請(qǐng)人的裝置和方法符合SFF-8045規(guī)范下的電源故障告警協(xié)議。
發(fā)明內(nèi)容
申請(qǐng)人的發(fā)明包括將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式同時(shí)在電源損失期間保持?jǐn)?shù)據(jù)完整性的裝置和方法。該方法提供信息存儲(chǔ)和檢索系統(tǒng),它包括由以第一扇區(qū)格式寫入的多個(gè)第一扇區(qū)組成的信息;設(shè)備控制器;數(shù)據(jù)存儲(chǔ)設(shè)備,其中,數(shù)據(jù)存儲(chǔ)設(shè)備包括由多個(gè)第二扇區(qū)組成的信息存儲(chǔ)介質(zhì),每個(gè)第二扇區(qū)包括第二扇區(qū)格式;包括數(shù)據(jù)隊(duì)列、緩沖器和非易失性存儲(chǔ)器的扇區(qū)格式轉(zhuǎn)換設(shè)備;互連扇區(qū)格式轉(zhuǎn)換設(shè)備和設(shè)備控制器的通信鏈路;其中,扇區(qū)格式轉(zhuǎn)換設(shè)備與數(shù)據(jù)存儲(chǔ)設(shè)備互連。
該方法進(jìn)一步設(shè)置電源故障告警時(shí)間間隔;以及形成多個(gè)DMA數(shù)據(jù)凈荷,每個(gè)DMA數(shù)據(jù)凈荷包括多個(gè)第一扇區(qū),其中,多個(gè)DMA數(shù)據(jù)凈荷的每一個(gè)都包括開始邏輯塊地址和結(jié)束邏輯塊地址;以及將DMA數(shù)據(jù)凈荷的一個(gè)或多個(gè)發(fā)送到扇區(qū)格式轉(zhuǎn)換設(shè)備。
然后,該方法將第i個(gè)DMA數(shù)據(jù)凈荷覆蓋在部分或全部多個(gè)第二扇區(qū)上以便形成第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,在數(shù)據(jù)隊(duì)列中排隊(duì)第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,將第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷傳送到數(shù)據(jù)存儲(chǔ)設(shè)備,以及將第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入信息存儲(chǔ)介質(zhì)。
通過閱讀下述結(jié)合附圖的詳細(xì)描述,將更好地理解本發(fā)明,在附圖中類似的標(biāo)記用來表示類似的元件,以及其中圖1是示出了申請(qǐng)人的數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)的一個(gè)實(shí)施例的框圖;圖2是示出了將多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備互連到控制器的多個(gè)扇區(qū)格式轉(zhuǎn)換設(shè)備的框圖;圖3是概括申請(qǐng)人的方法的第一實(shí)施例的流程圖;圖4是概述申請(qǐng)人的方法的第二實(shí)施例的流程圖;圖5是表示將包括以第一扇區(qū)格式寫入的多個(gè)扇區(qū)的DMA數(shù)據(jù)凈荷映射到具有第二扇區(qū)格式的多個(gè)扇區(qū)的框圖;
圖6是概述申請(qǐng)人的電源告警故障算法的步驟的流程圖;以及圖7是描述圖6的電源告警故障算法的一部分的框圖。
具體實(shí)施例方式
參考附圖,在下述說明書的優(yōu)選實(shí)施例中描述了本發(fā)明,在附圖中類似的標(biāo)記表示相同或類似的元件。本發(fā)明將描述為實(shí)現(xiàn)在包括兩個(gè)集群、多個(gè)主機(jī)適配器、多個(gè)設(shè)備適配器和數(shù)據(jù)超高速緩存的信息存儲(chǔ)和檢索系統(tǒng)中。然而,對(duì)申請(qǐng)人的在電源損失期間保持?jǐn)?shù)據(jù)完整性的方法的下述描述,不意味著將申請(qǐng)人的發(fā)明限定于數(shù)據(jù)處理應(yīng)用,因?yàn)榭偟膩碚f本發(fā)明能應(yīng)用于扇區(qū)格式轉(zhuǎn)換。
現(xiàn)在參考圖1,信息存儲(chǔ)和檢索系統(tǒng)100能經(jīng)由通信鏈路395,與主機(jī)390進(jìn)行通信。圖1所示的實(shí)施例顯示了單個(gè)主機(jī)。在其他實(shí)施例中,申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)能與多個(gè)主機(jī)進(jìn)行通信。
主機(jī)390包括計(jì)算機(jī)系統(tǒng),諸如大型機(jī)、個(gè)人計(jì)算機(jī)、工作站及其組合,計(jì)算機(jī)系統(tǒng)包括操作系統(tǒng),諸如Windows、AIX、Unix、MVS、LINUX等(Windows是微軟公司的注冊(cè)商標(biāo),AIX是IBM公司的注冊(cè)商標(biāo)以及MVS是IBM公司的商標(biāo),以及UNIX是在美國(guó)和通過Open Group排他許可的其他國(guó)家的注冊(cè)商標(biāo))。在某些實(shí)施例中,主機(jī)390進(jìn)一步包括存儲(chǔ)管理程序。主機(jī)390中的存儲(chǔ)管理程序可以包括現(xiàn)有技術(shù)中已知的存儲(chǔ)管理型程序(諸如在IBM MVS操作系統(tǒng)中實(shí)現(xiàn)的IBM DFSMS)的功能,該程序管理向數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)傳送數(shù)據(jù)。
在某些實(shí)施例中,申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)100包括位于四個(gè)主機(jī)架(bay)101、106、111和116中的多個(gè)主機(jī)適配器102-105、107-110、112-115和117-120。在其他實(shí)施例中,申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)包括少于16個(gè)的主機(jī)適配器。與申請(qǐng)人的系統(tǒng)的任何實(shí)施例中設(shè)置的主機(jī)適配器的數(shù)量無關(guān),那些主機(jī)適配器的每一個(gè)都包括同樣有權(quán)訪問中央處理/超高速緩存元件130和140的共享資源。每個(gè)主機(jī)適配器可以包括一個(gè)或多個(gè)光纖信道端口、一個(gè)或多個(gè)FICON端口、一個(gè)或多個(gè)ESCON端口或一個(gè)或多個(gè)SCSI端口。每個(gè)主機(jī)適配器通過互連總線121連接到兩個(gè)集群,以便每一集群都能處理來自任何主機(jī)適配器的I/O。
處理器部分130包括處理器132和超高速緩存134。在某些實(shí)施例中,處理器部分130進(jìn)一步包括存儲(chǔ)器133。在某些實(shí)施例中,存儲(chǔ)器設(shè)備133包括隨機(jī)存取存儲(chǔ)器。在某些實(shí)施例中,存儲(chǔ)器設(shè)備133包括非易失性存儲(chǔ)器。
處理器部分140包括處理器142和超高速緩存144。在某些實(shí)施例中,處理器部分140進(jìn)一步包括存儲(chǔ)器143。在某些實(shí)施例中,存儲(chǔ)器設(shè)備143包括隨機(jī)存取存儲(chǔ)器。在某些實(shí)施例中,存儲(chǔ)器設(shè)備143包括非易失性存儲(chǔ)器。
I/O部分160包括多個(gè)設(shè)備適配器,諸如設(shè)備適配器165、166、167和168。I/O部分170進(jìn)一步包括多個(gè)設(shè)備適配器,諸如設(shè)備適配器175、176、177和178。
在申請(qǐng)人的系統(tǒng)的某些實(shí)施例中,在位于申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)中的單個(gè)卡上,將一個(gè)或多個(gè)主機(jī)適配器、處理器部分130和一個(gè)或多個(gè)設(shè)備適配器封裝在一起。類似地,在某些實(shí)施例中,一個(gè)或多個(gè)主機(jī)適配器、處理器部分160和一個(gè)或多個(gè)設(shè)備適配器位于申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)中設(shè)置的另一個(gè)卡上。在這些實(shí)施例中,申請(qǐng)人的系統(tǒng)100包括與多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備互連的兩個(gè)卡。
在圖1所示的實(shí)施例中,將十六個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備組織成兩個(gè)陣列,即陣列“A”和陣列“B”。圖1所示的實(shí)施例顯示了兩個(gè)存儲(chǔ)設(shè)備陣列。在其他實(shí)施例中,申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)包括兩個(gè)以上的存儲(chǔ)設(shè)備陣列。每個(gè)存儲(chǔ)陣列對(duì)于主機(jī)來說看起來象是一個(gè)或多個(gè)邏輯設(shè)備。
在某些實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備包括多個(gè)硬盤驅(qū)動(dòng)單元。在圖1所示的實(shí)施例中,盤陣列“A”包括盤驅(qū)動(dòng)器181、182、183、191、192、193和194。盤陣列“B”包括盤驅(qū)動(dòng)器185、186、187、188、196、197和198。在某些實(shí)施例中,陣列“A”和“B”利用RAID協(xié)議。在某些實(shí)施例中,陣列“A”和“B”包括有時(shí)稱為JBOD陣列(即“正好一串盤(Just a Bunch of Disks)”)的陣列,其中,陣列不是根據(jù)RAID配置的。如本領(lǐng)域的技術(shù)人員將意識(shí)到的那樣,RAID(獨(dú)立盤冗余陣列)陣列(rank)包括以盤驅(qū)動(dòng)器陣列形狀構(gòu)造的獨(dú)立的盤驅(qū)動(dòng)器以便獲得超出單個(gè)大驅(qū)動(dòng)器的性能、容量和/或可靠性。
圖1所示的實(shí)施例示出了兩個(gè)存儲(chǔ)設(shè)備陣列。在其他實(shí)施例中,申請(qǐng)人的系統(tǒng)包括單個(gè)存儲(chǔ)設(shè)備陣列。在其他實(shí)施例中,申請(qǐng)人的系統(tǒng)包括兩個(gè)以上的存儲(chǔ)設(shè)備陣列。
現(xiàn)在,參考圖2,與用在申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)中的數(shù)據(jù)存儲(chǔ)介質(zhì)、例如多個(gè)硬盤無關(guān),包括一個(gè)或多個(gè)那些存儲(chǔ)介質(zhì)的每個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備通過通信鏈路215互連到設(shè)備控制器210。在某些實(shí)施例中,控制器210包括處理器212和存儲(chǔ)器214。在某些實(shí)施例中,存儲(chǔ)器214包括非易失性存儲(chǔ)器。
在某些實(shí)施例中,設(shè)備控制器210包括設(shè)備適配器,諸如例如設(shè)備適配器165(圖1)。在某些實(shí)施例中,設(shè)備控制器210包括RAID控制器。在某些實(shí)施例中,通信鏈路215包括光纖信道判優(yōu)環(huán)路(FibreChannel Arbitrated Loop)。在圖2所示的實(shí)施例中,通信鏈路215包括鏈路段225、245、265和285。
圖2所示的環(huán)路結(jié)構(gòu)包括申請(qǐng)人的系統(tǒng)的一個(gè)實(shí)施例。在其他實(shí)施例中,鏈路215包括開關(guān)光纖或開關(guān)和環(huán)路拓?fù)浣Y(jié)構(gòu)的組合。在其他實(shí)施例中,鏈路215包括開關(guān)的雙FC-AL環(huán)路,其中設(shè)備控制器210連接到兩個(gè)FC-AL環(huán)路。每個(gè)環(huán)路包括一個(gè)或多個(gè)光纖信道開關(guān)。轉(zhuǎn)換設(shè)備220、240等點(diǎn)對(duì)點(diǎn)地連接到每個(gè)環(huán)路上的開關(guān)。在其他實(shí)施例中,每個(gè)環(huán)路包含執(zhí)行在每個(gè)環(huán)路上面向(surface)多個(gè)點(diǎn)對(duì)點(diǎn)設(shè)備的切換功能的單個(gè)轉(zhuǎn)換設(shè)備。
在一些實(shí)施例中,轉(zhuǎn)換設(shè)備包括執(zhí)行從第一扇區(qū)格式到第二扇區(qū)格式(“扇區(qū)大小轉(zhuǎn)換”)的扇區(qū)大小轉(zhuǎn)換的元件,其中,通信協(xié)議對(duì)第一扇區(qū)格式和第二扇區(qū)格式是相同的。在其他實(shí)施例中,轉(zhuǎn)換設(shè)備包括執(zhí)行“扇區(qū)大小轉(zhuǎn)換”和從第一通信協(xié)議到第二通信協(xié)議的轉(zhuǎn)換(“協(xié)議轉(zhuǎn)換”)的元件。在一些實(shí)施例中,第一通信協(xié)議是光纖信道協(xié)議,第二通信協(xié)議是串行ATA或ATA。在其他實(shí)施例中,第一通信協(xié)議是串行附加SCSI,第二通信協(xié)議是串行ATA或ATA。
在所有實(shí)施例中,申請(qǐng)人的扇區(qū)格式轉(zhuǎn)換設(shè)備能夠進(jìn)行扇區(qū)大小轉(zhuǎn)換。在某些實(shí)施例中,申請(qǐng)人的扇區(qū)格式轉(zhuǎn)換設(shè)備還能夠進(jìn)行協(xié)議轉(zhuǎn)換。在此提到的扇區(qū)格式轉(zhuǎn)換設(shè)備包括能夠進(jìn)行扇區(qū)格式轉(zhuǎn)換的設(shè)備以及能夠進(jìn)行扇區(qū)格式轉(zhuǎn)換和協(xié)議轉(zhuǎn)換的設(shè)備。
每個(gè)存儲(chǔ)設(shè)備通過分別將存儲(chǔ)設(shè)備230、250、270和290互連到通信環(huán)路215的格式轉(zhuǎn)換設(shè)備,諸如設(shè)備220、240、260和280,互連到通信鏈路215。扇區(qū)格式轉(zhuǎn)換設(shè)備220通過通信鏈路232將存儲(chǔ)設(shè)備230互連到環(huán)路215。
通信鏈路225互連扇區(qū)格式轉(zhuǎn)換設(shè)備220和扇區(qū)格式轉(zhuǎn)換設(shè)備240。扇區(qū)格式轉(zhuǎn)換設(shè)備240通過通信鏈路252,互連存儲(chǔ)設(shè)備250與環(huán)路215。通信鏈路245互連扇區(qū)格式轉(zhuǎn)換設(shè)備240和扇區(qū)格式轉(zhuǎn)換設(shè)備260。扇區(qū)格式轉(zhuǎn)換設(shè)備260通過通信鏈路272,互連存儲(chǔ)設(shè)備270和環(huán)路215。
通信鏈路265互連扇區(qū)格式轉(zhuǎn)換設(shè)備260和扇區(qū)格式轉(zhuǎn)換設(shè)備280。扇區(qū)格式轉(zhuǎn)換設(shè)備280通過通信鏈路292,互連存儲(chǔ)設(shè)備290和環(huán)路215。通信鏈路285互連扇區(qū)格式轉(zhuǎn)換設(shè)備280和通信環(huán)路215。單獨(dú)地從本地驅(qū)動(dòng)線路、諸如ATA或S-ATA選擇通信鏈路232、252、272和292。
每個(gè)扇區(qū)格式轉(zhuǎn)換設(shè)備包括數(shù)據(jù)緩沖器,諸如數(shù)據(jù)緩沖器222、242、262和282。每個(gè)扇區(qū)格式轉(zhuǎn)換設(shè)備進(jìn)一步包括處理器,諸如處理器224、244、264和284。每個(gè)扇區(qū)格式轉(zhuǎn)換設(shè)備進(jìn)一步包括永久存儲(chǔ)器,諸如永久存儲(chǔ)器226、246、266和286。就永久存儲(chǔ)器來說,申請(qǐng)人是指非易失性存儲(chǔ)器,即經(jīng)受得住市電(utility power)損失的存儲(chǔ)器。在某些實(shí)施例中,分別單獨(dú)地從包括一個(gè)或多個(gè)EEPROMs(電可擦可編程只讀存儲(chǔ)器)、一個(gè)或多個(gè)閃存、電池備用RAM、硬盤驅(qū)動(dòng)器、它們的組合等的組選擇非易失性存儲(chǔ)器設(shè)備226、246、266和286。在某些實(shí)施例中,每個(gè)扇區(qū)格式轉(zhuǎn)換設(shè)備進(jìn)一步包括數(shù)據(jù)隊(duì)列,諸如數(shù)據(jù)隊(duì)列228、248、268和288。
在某些實(shí)施例中,將從一個(gè)或多個(gè)主機(jī)接收的數(shù)據(jù)初始地寫入位于申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)、諸如系統(tǒng)100(圖1)中的數(shù)據(jù)超高速緩存、諸如例如數(shù)據(jù)超高速緩存134(圖1)。在某些實(shí)施例中,使用第一扇區(qū)格式,將那一數(shù)據(jù)寫入數(shù)據(jù)超高速緩存。在某些實(shí)施例中,主機(jī)使用不同于盤的固有扇區(qū)大小(native sector size)的扇區(qū)大小,使用鏈路395上的塊存儲(chǔ)協(xié)議,將數(shù)據(jù)寫入存儲(chǔ)子系統(tǒng)。在其他實(shí)施例中,存儲(chǔ)子系統(tǒng)將其自己的數(shù)據(jù)增加到由主機(jī)所寫的數(shù)據(jù)上以便生成其自己的扇區(qū)大小。對(duì)于主機(jī)正使用基于分塊的協(xié)議、諸如SCSI的情形,通過預(yù)先掛起和/或?qū)?shù)據(jù)追加到扇區(qū),或通過將由zSeries系統(tǒng)使用的諸如ECKD數(shù)據(jù)格式的基于記錄的數(shù)據(jù)分成固定塊扇區(qū),來完成上述操作。
在某些實(shí)施例中,第一扇區(qū)格式包括每扇區(qū)520個(gè)字節(jié)數(shù)據(jù)。在某些實(shí)施例中,第一扇區(qū)格式包括每扇區(qū)524個(gè)字節(jié)數(shù)據(jù)。在某些實(shí)施例中,第一扇區(qū)格式包括每扇區(qū)528字節(jié)數(shù)據(jù)。在申請(qǐng)人的方法的某些實(shí)施例中,在將數(shù)據(jù)提供到一個(gè)或多個(gè)附加存儲(chǔ)設(shè)備前,將數(shù)據(jù)從上述第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式。在某些實(shí)施例中,第二扇區(qū)格式包括每扇區(qū)512個(gè)字節(jié)數(shù)據(jù)。
圖3概述申請(qǐng)人的將數(shù)據(jù)從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式的方法的步驟。在步驟310中,申請(qǐng)人的方法提供包括(N)個(gè)第一扇區(qū)的直接存儲(chǔ)器存取(“DMA”)數(shù)據(jù)凈荷。就“第一扇區(qū)”來說,申請(qǐng)人是指包括以第一扇區(qū)格式寫入的數(shù)據(jù)的扇區(qū)。在某些實(shí)施例中,第一扇區(qū)格式包括520個(gè)字節(jié)扇區(qū)。在其他實(shí)施例中,第一扇區(qū)格式包括524個(gè)字節(jié)扇區(qū)。在其他實(shí)施例中,第一扇區(qū)格式包括528個(gè)字節(jié)扇區(qū)。
在某些實(shí)施例中,通過一個(gè)或多個(gè)主機(jī)、諸如例如主機(jī)390(圖1),將包括(N)個(gè)第一扇區(qū)的DMA數(shù)據(jù)凈荷提供給位于信息存儲(chǔ)和檢索系統(tǒng)、諸如例如系統(tǒng)100(圖1)中的扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)。在某些實(shí)施例中,將包括(N)個(gè)第一扇區(qū)的DMA數(shù)據(jù)凈荷從位于信息存儲(chǔ)和檢索系統(tǒng)、諸如例如系統(tǒng)100(圖1)中的數(shù)據(jù)超高速緩存、諸如例如數(shù)據(jù)超高速緩存134(圖1,2)提供給位于相同信息存儲(chǔ)和檢索系統(tǒng)中的扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)。
在步驟320,申請(qǐng)人的方法將包括(N)個(gè)第一扇區(qū)的DMA數(shù)據(jù)凈荷轉(zhuǎn)換成包括(M)個(gè)第二扇區(qū)的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。關(guān)于“第二扇區(qū)”,申請(qǐng)人是指包括以第二扇區(qū)格式寫入的數(shù)據(jù)的扇區(qū)。在某些實(shí)施例中,第二扇區(qū)格式包括512個(gè)字節(jié)扇區(qū)。在某些實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟320。如本領(lǐng)域的技術(shù)人員將意識(shí)到的那樣,如果第一扇區(qū)格式包括每扇區(qū)(X)個(gè)字節(jié),以及如果第二扇區(qū)格式包括每扇區(qū)(Y)個(gè)字節(jié),其中(X)大于(Y),那么(N)小于(M)。另外,如果(X)小于(Y),那么(N)大于(M)。
在某些實(shí)施例中,在步驟320,申請(qǐng)人的方法將步驟310中提供的DMA數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成包括以第二扇區(qū)格式寫入的數(shù)據(jù)的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。在某些實(shí)施例中,步驟320使用覆蓋操作,形成所轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。
現(xiàn)在參考圖3和5,在步驟310中,申請(qǐng)人的方法提供父DMA數(shù)據(jù)凈荷,即DMA數(shù)據(jù)凈荷510,它包括寫入到總共A+1個(gè)連續(xù)第一扇區(qū)的數(shù)據(jù)。提供連續(xù)的第一扇區(qū)進(jìn)一步提供順序相關(guān)數(shù)據(jù)以便正確地構(gòu)造父DMA數(shù)據(jù)凈荷。包括父DMA凈荷的數(shù)據(jù)可以駐留在主機(jī)中的數(shù)據(jù)超高速緩存上,或者可以在先前的操作中生成。
在步驟320,申請(qǐng)人的方法將在步驟310中接收的父DAM數(shù)據(jù)凈荷覆蓋在多個(gè)連續(xù)第二扇區(qū)上以便形成轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷540。在步驟320,在將DMA數(shù)據(jù)凈荷510覆蓋在多個(gè)連續(xù)第二扇區(qū)上以便形成轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷540之前,申請(qǐng)人的方法僅預(yù)取和讀取開始的第二扇區(qū)、即扇區(qū)550以及末尾的第二扇區(qū)、即扇區(qū)560。在某些實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備,諸如設(shè)備220(圖2),執(zhí)行步驟320。
提供下述例子I來進(jìn)一步示例說明本領(lǐng)域的技術(shù)人員如何構(gòu)成和使用本發(fā)明以及如何識(shí)別目前提供的優(yōu)選實(shí)施例。然而,該例子不視為對(duì)僅由附加權(quán)利要求限定的本發(fā)明的范圍的限制。
例子I在該例子I中,DMA凈荷510包括約8.4千字節(jié)的數(shù)據(jù)。另外在該例子中,第一扇區(qū)格式包括每扇區(qū)約524字節(jié)。在該例子I中,DMA凈荷510包括約16個(gè)第一扇區(qū),即圖5中的“A”等于15。DAM數(shù)據(jù)凈荷510從以第一扇區(qū)格式寫入的第(i)個(gè)第一扇區(qū)、即扇區(qū)520開始,并且用以第一扇區(qū)格式寫入的第(i)+15個(gè)第一扇區(qū)、即扇區(qū)530結(jié)束。
在該例子I中,第二扇區(qū)格式包括512字節(jié)扇區(qū)。另外,在該例子中,轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷540包括約8.4千字節(jié)數(shù)據(jù)。,因此,在該例子I中,轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷540包括約16.4個(gè)連續(xù)第二扇區(qū)。因此,在該例子I中,轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷540從以第二扇區(qū)格式寫入的第(j)個(gè)扇區(qū)、即扇區(qū)550開始,并且擴(kuò)展到第17個(gè)連續(xù)第二扇區(qū)、即第二扇區(qū)560中。
使用該例子,并再次參考圖5所示的實(shí)施例,開始轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷540的第(j)個(gè)第二扇區(qū)、即扇區(qū)550包括兩個(gè)數(shù)據(jù)部分,即數(shù)據(jù)部分552和數(shù)據(jù)部分554。數(shù)據(jù)部分552包括“舊”數(shù)據(jù),即先前寫入到扇區(qū)550的數(shù)據(jù)。數(shù)據(jù)部分554包括寫入到扇區(qū)550、作為DMA數(shù)據(jù)凈荷540的開始部分的“新”數(shù)據(jù)。
類似地,再次參考圖5所示的實(shí)施例,結(jié)束轉(zhuǎn)換后的DMA凈荷540的第(j)+16個(gè)第二扇區(qū)、即扇區(qū)560包括兩個(gè)數(shù)據(jù)部分,即數(shù)據(jù)部分562和數(shù)據(jù)部分564。數(shù)據(jù)部分562包括寫入到扇區(qū)560的“新”數(shù)據(jù),以及數(shù)據(jù)部分564包括“舊”數(shù)據(jù),即先前寫入到扇區(qū)550作為DMA數(shù)據(jù)凈荷540的結(jié)束部分的數(shù)據(jù)。
象利用任何數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)那樣,要求維持所存儲(chǔ)的數(shù)據(jù)與操作的主機(jī)的視圖一致。必須將操作的排序維持成以由主機(jī)將數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)的順序,將數(shù)據(jù)施加到存儲(chǔ)設(shè)備。因此,在形成DMA數(shù)據(jù)凈荷中使用的“舊”數(shù)據(jù)必須考慮通過先前形成的排隊(duì)操作何種數(shù)據(jù)將被寫入存儲(chǔ)設(shè)備,以及使用適當(dāng)?shù)臄?shù)據(jù)(來自先前排隊(duì)操作的數(shù)據(jù)或從存儲(chǔ)設(shè)備取出的數(shù)據(jù))來從主機(jī)的角度維持?jǐn)?shù)據(jù)的一致性。
再次參考圖3,在步驟330中,申請(qǐng)人的方法將在步驟320中形成的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷提供給目標(biāo)存儲(chǔ)設(shè)備,諸如存儲(chǔ)設(shè)備230(圖2)。在步驟340中,目標(biāo)存儲(chǔ)設(shè)備以第二扇區(qū)格式將所轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入位于數(shù)據(jù)存儲(chǔ)設(shè)備中的存儲(chǔ)介質(zhì)。
在某些實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220,接收步驟310的DMA數(shù)據(jù)凈荷,并將其存儲(chǔ)在位于那一扇區(qū)格式轉(zhuǎn)換設(shè)備內(nèi)的緩沖器、諸如緩沖器222中。在某些實(shí)施例中,在步驟330中,基本上與步驟320的扇區(qū)轉(zhuǎn)換同步地將所轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷提供到存儲(chǔ)設(shè)備。在其他實(shí)施例中,排隊(duì)所轉(zhuǎn)換的DAM數(shù)據(jù)凈荷,以便稍后傳送到存儲(chǔ)設(shè)備。
在某些實(shí)施例中,使用圖4所示的步驟,實(shí)現(xiàn)圖3的方法。在步驟410,申請(qǐng)人的方法提供DMA數(shù)據(jù)凈荷,諸如例如DMA數(shù)據(jù)凈荷510(圖5),它包括多個(gè)連續(xù)第一扇區(qū)。
在某些實(shí)施例中,在步驟410中,控制器,諸如控制器210(圖2)經(jīng)由通信鏈路205從數(shù)據(jù)超高速緩存134(圖1,2)檢索第i至第i+A個(gè)第一扇區(qū)(包括第i+A個(gè)第一扇區(qū))。如本領(lǐng)域的技術(shù)人員將意識(shí)到的,多個(gè)第一扇區(qū)的每一個(gè)都具有在那個(gè)數(shù)據(jù)超高速緩存上的開始和結(jié)束邏輯塊地址。另外,在步驟410,控制器、諸如控制器210(圖2)將多個(gè)第一扇區(qū)提供給扇區(qū)格式轉(zhuǎn)換設(shè)備。在某些實(shí)施例中,接收扇區(qū)格式轉(zhuǎn)換設(shè)備將DMA數(shù)據(jù)凈荷存儲(chǔ)在緩沖器、諸如例如緩沖器222(圖2)中。
在步驟420,申請(qǐng)人的方法將步驟410的DMA數(shù)據(jù)凈荷覆蓋在多個(gè)連續(xù)第二扇區(qū)上,如以上結(jié)合步驟320(圖3)所述的那樣,以便形成第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。在某些實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟420。
在步驟430,申請(qǐng)人的方法排隊(duì)步驟420的第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。在某些實(shí)施例中,步驟430包括在位于扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220中的隊(duì)列、諸如隊(duì)列228中排隊(duì)第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。在某些實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220執(zhí)行步驟430。
在步驟440,申請(qǐng)人的方法將在步驟420中形成的第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷從隊(duì)列、諸如隊(duì)列228提供到目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備、諸如數(shù)據(jù)存儲(chǔ)設(shè)備230。在某些實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220執(zhí)行步驟440。
在步驟450,申請(qǐng)人的方法提供和設(shè)置第k個(gè)Inflight指示符來表示第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷處于正在飛行中(In Flight)。為本申請(qǐng)的目的,“正在飛行中”的DMA數(shù)據(jù)凈荷是提供給還沒有接收到寫入完成信號(hào)的目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。
在某些實(shí)施例中,申請(qǐng)人的方法為提供給數(shù)據(jù)存儲(chǔ)設(shè)備的每個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷創(chuàng)建離散的Inflight指示符。在某些實(shí)施例中,申請(qǐng)人的Inflight指示符包括能被打開或關(guān)閉的標(biāo)志。在某些實(shí)施例中,這種標(biāo)志設(shè)置在位于扇區(qū)格式轉(zhuǎn)換設(shè)備中的設(shè)備微碼中。在某些實(shí)施例中,申請(qǐng)人的Inflight指示符包括能設(shè)置成“0 ”或“1”的位。在某些實(shí)施例中,這一位能設(shè)置在位于扇區(qū)格式轉(zhuǎn)換設(shè)備中的設(shè)備微碼中。另外,在步驟450,申請(qǐng)人的方法設(shè)置第k個(gè)Inflight指示符,即與第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷有關(guān)的Inflight指示符,以表示第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷為“正在飛行中”。在某些實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220執(zhí)行步驟450。
在某些實(shí)施例中,基本上同步地執(zhí)行步驟440和450。在某些實(shí)施例中,步驟440先于步驟450。而在其他實(shí)施例中,步驟450先于步驟440。
在步驟460中,目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備、諸如數(shù)據(jù)存儲(chǔ)設(shè)備230接收第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,以及將該第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入位于其中的數(shù)據(jù)存儲(chǔ)介質(zhì)、諸如數(shù)據(jù)存儲(chǔ)介質(zhì)236中。
在步驟470,目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備報(bào)告第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷已經(jīng)被寫入介質(zhì)中。該報(bào)告能包括本領(lǐng)域的技術(shù)人員已知的任何信令方法。例如,目標(biāo)數(shù)據(jù)存儲(chǔ)驅(qū)動(dòng)器可以通過通信接口連接到發(fā)布(issuing)扇區(qū)格式轉(zhuǎn)換設(shè)備。在某些實(shí)施例中,目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備向發(fā)布扇區(qū)格式轉(zhuǎn)換設(shè)備提供寫入完成信號(hào)。另外,在某些實(shí)施例中,發(fā)布扇區(qū)格式轉(zhuǎn)換設(shè)備輪詢目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備以斷定第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的狀態(tài)。
在步驟480,申請(qǐng)人的扇區(qū)格式轉(zhuǎn)換設(shè)備從目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備接收已經(jīng)將第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入介質(zhì)的報(bào)告。在某些實(shí)施例中,步驟470和480基本上同步地進(jìn)行。
在步驟490,申請(qǐng)人的方法復(fù)位第k個(gè)Inflight指示符來表示已經(jīng)將第k個(gè)DMA數(shù)據(jù)凈荷寫入介質(zhì)。在某些實(shí)施例中,步驟490包括刪除第k個(gè)Inflight指示符。在其他實(shí)施例中,步驟490包括將第k個(gè)Inflight位從“1”設(shè)置成“0”。在其他實(shí)施例中,步驟490包括關(guān)閉第k個(gè)Inflight指示符標(biāo)志。
圖4的申請(qǐng)人方法同步地執(zhí)行多個(gè)步驟。例如,在步驟420,第一扇區(qū)格式的DMA數(shù)據(jù)凈荷正被轉(zhuǎn)換成具有第二扇區(qū)格式的DMA數(shù)據(jù)凈荷,同時(shí),在步驟430,排隊(duì)先前轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,同時(shí),在步驟440,正在將所轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷提供給一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備,同時(shí),在步驟460,通過一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備,正在將排隊(duì)的DMA數(shù)據(jù)凈荷寫入一個(gè)或多個(gè)存儲(chǔ)介質(zhì),同時(shí),在步驟470,一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備正提供寫入完成信號(hào)。
申請(qǐng)人的將DMA數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成包括第二扇區(qū)的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的方法符合SFF規(guī)范SFF-8045中的名為“Power Failure Warning”的章節(jié)6.4.8.2(在下文中稱為“PFW規(guī)范,在此引入以供參考)。本領(lǐng)域的技術(shù)人員將意識(shí)到,SFF委員會(huì)是以即時(shí)(prompt)的方式為解決盤工業(yè)需要而形成的特定組。當(dāng)在1990成立時(shí),最初目標(biāo)限制于定義用于盤驅(qū)動(dòng)器的事實(shí)上的機(jī)械外殼以便它們能裝配到膝上型計(jì)算機(jī)和其他小型產(chǎn)品中。在1992年11月,SFF委員會(huì)目標(biāo)拓寬到包含需要即時(shí)工業(yè)行為的其他區(qū)域。SFF規(guī)范在范圍上是窄的,以便降低開發(fā)時(shí)間。在其他需要中,PFW規(guī)范批準(zhǔn)當(dāng)寫超高速緩存時(shí),數(shù)據(jù)存儲(chǔ)設(shè)備必須停止在塊邊界上向非易失性存儲(chǔ)器寫入數(shù)據(jù)。
在某些實(shí)施例中,一個(gè)或多個(gè)申請(qǐng)人的數(shù)據(jù)存儲(chǔ)設(shè)備,諸如例如數(shù)據(jù)存儲(chǔ)設(shè)備230,包括有時(shí)稱為“S-ATA”的設(shè)備。如本領(lǐng)域的技術(shù)人員將意識(shí)到的,S-ATA設(shè)備采用串行ATA盤接口技術(shù)。
S-ATA基于串行信令技術(shù)。串行ATA是點(diǎn)對(duì)點(diǎn)連接,并且允許多個(gè)端口聚集在單個(gè)控制器、諸如例如控制器210(圖2)中。SATA存儲(chǔ)設(shè)備不一定支持PFW規(guī)范。即使當(dāng)使用一個(gè)或多個(gè)S-ATA存儲(chǔ)設(shè)備時(shí),申請(qǐng)人的方法也是符合PFW規(guī)范的。
在由申請(qǐng)人的裝置接收PFW信號(hào)同時(shí)形成轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷和/或處理那些轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的情況下,申請(qǐng)人的方法變成PFW算法。使用該P(yáng)FW算法,在接收PFW信號(hào)后,申請(qǐng)人的方法啟動(dòng)PFW時(shí)間間隔,完成已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的傳輸,同時(shí)盡可能地在PFW時(shí)間間隔期間繼續(xù)將先前轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷發(fā)送到數(shù)據(jù)存儲(chǔ)設(shè)備。在PFW時(shí)間間隔到期時(shí),申請(qǐng)人的方法保存用于在PFW時(shí)間間隔到期時(shí)仍然在飛行中的每個(gè)DMA數(shù)據(jù)凈荷的DMA凈荷元數(shù)據(jù)。
在申請(qǐng)人的裝置產(chǎn)生和/或接收PFW信號(hào)同時(shí)執(zhí)行圖4的方法的情況下,申請(qǐng)人的方法變成申請(qǐng)人的PFW算法。申請(qǐng)人的PFW算法在圖6中進(jìn)行了概述?,F(xiàn)在,參考圖4和6,在檢測(cè)PFW信號(hào)時(shí),申請(qǐng)人的方法轉(zhuǎn)到步驟610。步驟620包括接收那一PFW信號(hào)。
圖4示出了申請(qǐng)人的從步驟420轉(zhuǎn)到步驟610的方法。如上所述,申請(qǐng)人的方法可以同步地執(zhí)行步驟410、420、430、440、450、460、470、480和/或490。如果正執(zhí)行步驟410、420、430、440、450、460、470、480和/或490的任何一個(gè)或多個(gè)以及接收PFW信號(hào),則申請(qǐng)人的方法轉(zhuǎn)到步驟610。
在步驟610,申請(qǐng)人的方法設(shè)置電源故障告警時(shí)間間隔。PFW規(guī)范尤其要求在斷言PFW信號(hào)后,將全部電源提供給一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備達(dá)至少4毫秒。在申請(qǐng)人的方法的某些實(shí)施例中,PFW時(shí)間間隔被設(shè)置成小于4毫秒。在某些實(shí)施例中,申請(qǐng)人的方法將PFW時(shí)間間隔設(shè)置成約3毫秒。在該P(yáng)FW時(shí)間間隔期間,申請(qǐng)人的方法完成已經(jīng)轉(zhuǎn)換后的DMA凈荷的正在進(jìn)行中的傳輸同時(shí)向一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備提供即可能多的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。
在圖6所示的實(shí)施例中,在步驟620中接收PFW信號(hào)前,示出了步驟610。在某些實(shí)施例中,可以在接收PFW信號(hào)前的任何時(shí)間執(zhí)行步驟610。在某些實(shí)施例中,將PFW時(shí)間間隔被編碼在位于申請(qǐng)人的扇區(qū)格式轉(zhuǎn)換設(shè)備中的固件中。在某些實(shí)施例中,在系統(tǒng)啟動(dòng)期間設(shè)置PFW時(shí)間間隔。在某些實(shí)施例中,PFW時(shí)間間隔可由系統(tǒng)所有者/操作者進(jìn)行調(diào)整。
在某些實(shí)施例中,基本上與在步驟620中接收PFW信號(hào)同步地執(zhí)行步驟610。在這些實(shí)施例中,在接收FPW信號(hào)時(shí),申請(qǐng)人的方法立即確定排隊(duì)的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的數(shù)量以及確定系統(tǒng)性能,諸如設(shè)備適配器帶寬?;谶@些確定,申請(qǐng)人的方法設(shè)置適當(dāng)?shù)腜FW時(shí)間間隔。在這些同步實(shí)施例中,通過扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟610。
在步驟620中接收PFW信號(hào)后,申請(qǐng)人的方法轉(zhuǎn)到步驟625和步驟630。在步驟630,申請(qǐng)人的方法開始在步驟610中設(shè)置的PFW時(shí)間間隔。在某些實(shí)施例中,由扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟630。申請(qǐng)人的方法從步驟630轉(zhuǎn)到步驟640。
在步驟625,申請(qǐng)人的方法完成已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的傳輸。在某些實(shí)施例中,由扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟625。申請(qǐng)人的方法從步驟625轉(zhuǎn)到步驟635,其中,該方法設(shè)置用于步驟625的DMA數(shù)據(jù)凈荷的Inflight指示符。在某些實(shí)施例中,由扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟635。申請(qǐng)人的方法從步驟635轉(zhuǎn)到步驟640。
在步驟640,申請(qǐng)人的方法繼續(xù)將轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷從數(shù)據(jù)隊(duì)列、諸如隊(duì)列228(圖2)提供到一個(gè)或多個(gè)目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備、諸如數(shù)據(jù)存儲(chǔ)設(shè)備230(圖2)。在某些實(shí)施例中,步驟640進(jìn)一步包括當(dāng)在步驟620中接收PFW信號(hào)時(shí)確定排隊(duì)的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的數(shù)量(P)。在某些實(shí)施例中,由扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟640。
提供下述例子以便向本領(lǐng)域的技術(shù)人員進(jìn)一步示例說明如何構(gòu)成和使用本發(fā)明以及如何識(shí)別目前的優(yōu)選實(shí)施例。然而,該例子不視為對(duì)僅由附加權(quán)利要求限定的本發(fā)明的范圍的限制。
例子II現(xiàn)在參考圖7,包括第k、第k+1和第k+2個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷710、720和730正在飛行中,并且在飛行隊(duì)列中仍然是未完成的。在時(shí)間T0傳送第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。在時(shí)間T1傳送第k+1個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。在時(shí)間T2傳送第k+2個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。
在時(shí)間T3,申請(qǐng)人的方法開始向存儲(chǔ)設(shè)備傳送第k+3個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,即轉(zhuǎn)換的凈荷740。當(dāng)傳送所轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷740時(shí),在完成傳輸所轉(zhuǎn)換的凈荷740前,在時(shí)間T4,接收PFW信號(hào)。
使用圖6的申請(qǐng)人的電源故障告警算法,在步驟625,申請(qǐng)人的方法完成轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷740的傳輸,以及在步驟635,申請(qǐng)人的方法使轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷740處于正在飛行中的狀態(tài)。
在申請(qǐng)人的方法正執(zhí)行步驟625和635時(shí),在步驟640中,申請(qǐng)人的方法同時(shí)正在跟蹤到一個(gè)或多個(gè)目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備的正在飛行的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷710、720和730的狀態(tài)。
再次參考圖6,在步驟650,申請(qǐng)人的方法確定PFW時(shí)間間隔是否到期。在某些實(shí)施例中,由扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟650。如果申請(qǐng)人的方法在步驟650確定PFW時(shí)間間隔尚未到期,那么該方法從步驟650轉(zhuǎn)到步驟640并繼續(xù)。
或者,如果申請(qǐng)人的方法在步驟650確定PFW時(shí)間間隔已經(jīng)到期,那么該方法從步驟650轉(zhuǎn)到步驟660,其中該方法保存在PFW時(shí)間間隔到期時(shí)仍然在飛行中的每個(gè)轉(zhuǎn)換后的DMA凈荷。
在某些實(shí)施例中,由扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220(圖2)執(zhí)行步驟660。在某些實(shí)施例中,將在步驟660存儲(chǔ)的飛行中的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入位于扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220中的非易失性存儲(chǔ)器、諸如存儲(chǔ)器226。在某些實(shí)施例中,將在步驟660中存儲(chǔ)的飛行的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入位于設(shè)備控制器、諸如設(shè)備控制器210中的非易失性存儲(chǔ)器、諸如存儲(chǔ)器214。
在步驟670,使市電恢復(fù)到申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)。關(guān)于“市電”,申請(qǐng)人是指由申請(qǐng)人的信息存儲(chǔ)和檢索系統(tǒng)外的商業(yè)和/或本發(fā)電機(jī)生產(chǎn)工廠連續(xù)提供的電源。
在步驟680,申請(qǐng)人的方法檢索在步驟660中保存的飛行中的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。在某些實(shí)施例中,由與數(shù)據(jù)超高速緩存、諸如數(shù)據(jù)超高速緩存134互連以及與一個(gè)或多個(gè)扇區(qū)格式轉(zhuǎn)換設(shè)備、諸如設(shè)備220互連的控制器、諸如控制器210執(zhí)行步驟680。在其他實(shí)施例中,由一個(gè)或多個(gè)扇區(qū)格式轉(zhuǎn)換設(shè)備執(zhí)行步驟680。
申請(qǐng)人的方法從步驟680轉(zhuǎn)到步驟690,其中,該方法將在步驟680中檢索的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷提供給數(shù)據(jù)存儲(chǔ)設(shè)備。申請(qǐng)人的方法從步驟690轉(zhuǎn)到步驟430,并且如上所述那樣繼續(xù)。
在圖3、4和/或6中所述的申請(qǐng)人的方法的實(shí)施例可以單獨(dú)地實(shí)現(xiàn)。此外,在某些實(shí)施例中,可以組合、刪除或重排序在圖3、4和/或6所述的各個(gè)步驟。
在某些實(shí)施例中,申請(qǐng)人的發(fā)明包括駐留在存儲(chǔ)器、諸如例如存儲(chǔ)器214(圖2)、存儲(chǔ)器226(圖2)、存儲(chǔ)器246(圖2)、存儲(chǔ)器266(圖2)和/或存儲(chǔ)器286(圖2)中的指令,其中,分別由處理器212(圖2)、224(圖2)、244(圖2)、264(圖2)和284(圖2)執(zhí)行那些指令,以便執(zhí)行在圖3中所述的步驟310、320、330和340、在圖4中所述的步驟410、420、430、440、450、460、470、480和/或490、和/或在圖6中所述的步驟610、620、630、640、650、660、670、680和/或690。
在其他實(shí)施例中,申請(qǐng)人的發(fā)明包括駐留在任何其他計(jì)算機(jī)程序產(chǎn)品中的指令,其中由系統(tǒng)100外部或內(nèi)部的計(jì)算機(jī)執(zhí)行那些指令,以便執(zhí)行在圖3中所述的步驟310、320、330和340、在圖4中所述的步驟410、420、430、440、450、460、470、480和/或490、和/或在圖6中所述的步驟610、620、630、640、650、660、670、680和/或690。在任一情況下,可以將指令編碼在信息存儲(chǔ)介質(zhì)、包括例如磁性信息存儲(chǔ)介質(zhì)、光學(xué)信息存儲(chǔ)介質(zhì)、電子信息存儲(chǔ)介質(zhì)等中。關(guān)于“電子存儲(chǔ)介質(zhì)”,申請(qǐng)人是指例如諸如PROM、EPROM、EEPROM、閃速PROM、小型閃存、智能介質(zhì)等的設(shè)備。
盡管已經(jīng)詳細(xì)地示例說明了本發(fā)明的優(yōu)選實(shí)施例,但是顯然在不背離如在下述權(quán)利要求中闡述的本發(fā)明的范圍的情況下,本領(lǐng)域的技術(shù)人員會(huì)想到對(duì)那些實(shí)施例的改進(jìn)和修改。
權(quán)利要求
1.一種將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式的方法,包括步驟提供信息存儲(chǔ)和檢索系統(tǒng),該系統(tǒng)包括由以第一扇區(qū)格式寫入的多個(gè)第一扇區(qū)組成的信息;設(shè)備控制器;數(shù)據(jù)存儲(chǔ)設(shè)備,其中,所述數(shù)據(jù)存儲(chǔ)設(shè)備包括由每個(gè)都包括第二扇區(qū)格式的多個(gè)第二扇區(qū)組成的信息存儲(chǔ)介質(zhì);包括數(shù)據(jù)隊(duì)列,緩沖器和非易失性存儲(chǔ)器的扇區(qū)格式轉(zhuǎn)換設(shè)備;互連所述扇區(qū)格式轉(zhuǎn)換設(shè)備和所述設(shè)備控制器的通信鏈路;其中,所述扇區(qū)格式轉(zhuǎn)換設(shè)備與所述數(shù)據(jù)存儲(chǔ)設(shè)備互連;設(shè)置電源故障告警時(shí)間間隔;形成多個(gè)DMA數(shù)據(jù)凈荷,其中每個(gè)DMA數(shù)據(jù)凈荷包括多個(gè)第一扇區(qū),其中,所述多個(gè)DAM數(shù)據(jù)凈荷的每一個(gè)都包括開始邏輯塊地址和結(jié)束邏輯塊地址;將一個(gè)或多個(gè)所述DMA數(shù)據(jù)凈荷發(fā)送到所述扇區(qū)格式轉(zhuǎn)換設(shè)備;由所述扇區(qū)格式轉(zhuǎn)換設(shè)備將第i個(gè)DMA數(shù)據(jù)凈荷覆蓋在部分或全部多個(gè)第二扇區(qū)上,以便形成第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;在所述數(shù)據(jù)隊(duì)列中排隊(duì)所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷發(fā)送到所述數(shù)據(jù)存儲(chǔ)設(shè)備;將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì)。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括步驟將所述一個(gè)或多個(gè)DMA數(shù)據(jù)凈荷存儲(chǔ)在所述緩沖器中;以及從所述緩沖器檢索第i個(gè)DMA數(shù)據(jù)凈荷。
3.如權(quán)利要求1所述的方法,進(jìn)一步包括步驟提供多個(gè)Inflight指示符,其中,每個(gè)Inflight指示符包括第一值或第二值,以及其中,第i個(gè)Inflight指示符與第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷有關(guān);當(dāng)將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷發(fā)送到所述數(shù)據(jù)存儲(chǔ)設(shè)備時(shí),將第i個(gè)Inflight指示符設(shè)置成第二值;在將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì)后,由所述數(shù)據(jù)存儲(chǔ)設(shè)備生成第i個(gè)寫入完成信號(hào);在接收到所述第i個(gè)寫入完成信號(hào)時(shí),將第i個(gè)Inflight指示符復(fù)位到所述第一值。
4.如權(quán)利要求3所述的方法,進(jìn)一步包括提供包括微碼的扇區(qū)格式轉(zhuǎn)換設(shè)備的步驟,其中所述微碼包含多個(gè)標(biāo)志,其中所述多個(gè)標(biāo)志包括所述多個(gè)Inflight指示符。
5.如權(quán)利要求3所述的方法,進(jìn)一步包括提供包括微碼的扇區(qū)格式轉(zhuǎn)換設(shè)備的步驟,其中所述微碼包含多個(gè)位,以及其中所述多個(gè)位包括所述多個(gè)Inflight指示符。
6.如權(quán)利要求3所述的方法,其中所述復(fù)位步驟進(jìn)一步包括通過所述扇區(qū)格式轉(zhuǎn)換設(shè)備復(fù)位所述第i個(gè)Inflight指示符。
7.如權(quán)利要求3所述的方法,進(jìn)一步包括步驟確定是否已經(jīng)接收到電源故障告警;如果接收到電源故障告警,則執(zhí)行下列步驟開始所述電源故障告警時(shí)間間隔;在所述電源故障告警時(shí)間間隔期間,將一個(gè)或多個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷從所述隊(duì)列提供給所述數(shù)據(jù)存儲(chǔ)設(shè)備,其中,所述隊(duì)列包括P個(gè)排隊(duì)的轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;確定所述電源故障告警時(shí)間間隔是否到期;如果所述電源故障告警時(shí)間間隔到期,則執(zhí)行下列步驟確定是否已經(jīng)將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì),其中,j大于或等于1并且小于或等于P;如果在所述電源故障告警時(shí)間間隔到期時(shí),還未將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì),則執(zhí)行下列步驟將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷保存在非易失性存儲(chǔ)器中;失去到所述信息存儲(chǔ)和檢索系統(tǒng)的市電;恢復(fù)到所述信息存儲(chǔ)和檢索系統(tǒng)的市電;確定在市電失去時(shí)Q個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷仍然在飛行中;從所述非易失性存儲(chǔ)器檢索在失去市電前還沒有寫入所述信息存儲(chǔ)介質(zhì)的每個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;以及將在失去市電前還沒有寫入所述信息存儲(chǔ)介質(zhì)的每個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷提供給所述數(shù)據(jù)存儲(chǔ)設(shè)備。
8.如權(quán)利要求7所述的方法,進(jìn)一步包括步驟完成向所述數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,其中,在該發(fā)送期間接收到所述電源故障告警;設(shè)置用于該發(fā)送的已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的Inflight指示符。
9.如權(quán)利要求7所述的方法,進(jìn)一步包括步驟在恢復(fù)到所述信息存儲(chǔ)和檢索系統(tǒng)的市電時(shí),確定是否將第k個(gè)Inflight指示符設(shè)置成所述第二值;如果將第k個(gè)Inflight指示符設(shè)置成所述第二值,則從所述非易失性存儲(chǔ)器檢索第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。
10.如權(quán)利要求1所述的方法,進(jìn)一步包括從由520字節(jié)扇區(qū)、524字節(jié)扇區(qū)和528字節(jié)扇區(qū)組成的組選擇所述第一扇區(qū)格式的步驟。
11.如權(quán)利要求1所述的方法,進(jìn)一步包括將所述第二扇區(qū)格式設(shè)置成包括512字節(jié)扇區(qū)的步驟。
12.如權(quán)利要求1所述的方法,進(jìn)一步包括設(shè)置所述電源故障告警時(shí)間間隔等于約3毫秒的步驟。
13.如權(quán)利要求1所述的方法,進(jìn)一步包括提供包括RAID控制器的設(shè)備控制器的步驟。
14.如權(quán)利要求1所述的方法,進(jìn)一步包括提供S-ATA數(shù)據(jù)存儲(chǔ)設(shè)備的步驟。
15.如權(quán)利要求11所述的方法,進(jìn)一步包括在接收到所述電源故障告警后的4毫秒或更長(zhǎng)時(shí)間內(nèi)向所述信息存儲(chǔ)和檢索系統(tǒng)提供市電的步驟。
16.一種制造產(chǎn)品,包括具有位于其中的、用于將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式的計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可用介質(zhì),所述制造產(chǎn)品進(jìn)一步包括由以第一扇區(qū)格式寫入的多個(gè)第一扇區(qū)組成的信息;設(shè)備控制器;數(shù)據(jù)存儲(chǔ)設(shè)備,其中,所述數(shù)據(jù)存儲(chǔ)設(shè)備包括由每個(gè)都包括第二扇區(qū)格式的多個(gè)第二扇區(qū)組成的信息存儲(chǔ)介質(zhì);包括數(shù)據(jù)隊(duì)列,緩沖器和非易失性存儲(chǔ)器的扇區(qū)格式轉(zhuǎn)換設(shè)備;互連所述扇區(qū)格式轉(zhuǎn)換設(shè)備和所述設(shè)備控制器的通信鏈路,其中,所述扇區(qū)格式轉(zhuǎn)換設(shè)備與所述數(shù)據(jù)存儲(chǔ)設(shè)備互連,所述計(jì)算機(jī)可讀程序代碼包括實(shí)現(xiàn)下述步驟的一系列計(jì)算機(jī)可讀程序步驟形成多個(gè)DMA數(shù)據(jù)凈荷,其中每個(gè)DMA數(shù)據(jù)凈荷包括多個(gè)第一扇區(qū),其中,所述多個(gè)DAM數(shù)據(jù)凈荷的每一個(gè)都包括開始邏輯塊地址和結(jié)束邏輯塊地址;將所述多個(gè)DMA數(shù)據(jù)凈荷的一個(gè)或多個(gè)發(fā)送到所述扇區(qū)格式轉(zhuǎn)換設(shè)備;由所述扇區(qū)格式轉(zhuǎn)換設(shè)備將第i個(gè)DMA數(shù)據(jù)凈荷覆蓋在部分或全部多個(gè)第二扇區(qū)上,以便形成第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;在所述數(shù)據(jù)隊(duì)列中排隊(duì)所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷發(fā)送到所述數(shù)據(jù)存儲(chǔ)設(shè)備;將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì)。
17.如權(quán)利要求16所述的制造產(chǎn)品,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)下述步驟的一系列計(jì)算機(jī)可讀程序步驟將所述一個(gè)或多個(gè)DMA數(shù)據(jù)凈荷存儲(chǔ)在所述緩沖器中;以及從所述緩沖器檢索第i個(gè)DMA數(shù)據(jù)凈荷。
18.如權(quán)利要求16所述的制造產(chǎn)品,其中,所述制造產(chǎn)品進(jìn)一步包括多個(gè)Inflight指示符,其中每個(gè)Inflight指示符包括第一值或第二值,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)下述步驟的一系列計(jì)算機(jī)可讀程序步驟將第i個(gè)Inflight指示符與第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷相關(guān)聯(lián);當(dāng)將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷發(fā)送到所述數(shù)據(jù)存儲(chǔ)設(shè)備時(shí),將第i個(gè)Inflight指示符設(shè)置成第二值;在將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì)后,由所述數(shù)據(jù)存儲(chǔ)設(shè)備生成第i個(gè)寫入完成信號(hào);在接收到所述第i個(gè)寫入完成信號(hào)時(shí),將第i個(gè)Inflight指示符復(fù)位到所述第一值。
19.如權(quán)利要求18所述的制造產(chǎn)品,其中,所述扇區(qū)格式轉(zhuǎn)換設(shè)備包括微碼,其中所述微碼包含多個(gè)標(biāo)志,以及其中所述多個(gè)標(biāo)志包括所述多個(gè)Inflight指示符。
20.如權(quán)利要求18所述的制造產(chǎn)品,其中,所述扇區(qū)格式轉(zhuǎn)換設(shè)備包括微碼,其中所述微碼包含多個(gè)位,以及其中所述多個(gè)位包括所述多個(gè)Inflight指示符。
21.如權(quán)利要求16所述的制造產(chǎn)品,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)下述步驟的一系列計(jì)算機(jī)可讀程序步驟確定是否已經(jīng)接收到電源故障告警;如果接收到電源故障告警,則執(zhí)行下列步驟獲得電源故障告警時(shí)間間隔;開始電源故障告警時(shí)間間隔;在所述電源故障告警時(shí)間間隔期間,將一個(gè)或多個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷從所述數(shù)據(jù)隊(duì)列提供給所述數(shù)據(jù)存儲(chǔ)設(shè)備,其中,所述數(shù)據(jù)隊(duì)列包括P個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;確定所述電源故障告警時(shí)間間隔是否到期;如果所述電源故障告警時(shí)間間隔到期,則執(zhí)行下列步驟確定是否已經(jīng)將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì),其中j大于或等于1并且小于或等于P;如果在所述電源故障告警時(shí)間間隔到期時(shí),還未將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì),則執(zhí)行下列步驟將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷保存在非易失性存儲(chǔ)器中;在恢復(fù)到所述信息存儲(chǔ)和檢索系統(tǒng)的市電時(shí),從非易失性存儲(chǔ)器檢索在失去市電之前還未寫入所述信息存儲(chǔ)介質(zhì)的每個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;以及將在失去市電前還沒有寫入所述信息存儲(chǔ)介質(zhì)的每個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷提供給所述數(shù)據(jù)存儲(chǔ)設(shè)備。
22.如權(quán)利要求21所述的制造產(chǎn)品,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)下述步驟的一系列計(jì)算機(jī)可讀程序步驟完成向所述數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,其中,在該發(fā)送期間接收到所述電源故障告警;設(shè)置用于該發(fā)送的已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的Inflight指示符。
23.如權(quán)利要求21所述的制造產(chǎn)品,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)下述步驟的一系列計(jì)算機(jī)可讀程序步驟在恢復(fù)到所述信息存儲(chǔ)和檢索系統(tǒng)的市電時(shí),確定是否將第k個(gè)Inflight指示符設(shè)置成所述第二值;如果將第k個(gè)Inflight指示符設(shè)置成所述第二值,則檢索第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷。
24.如權(quán)利要求16所述的制造產(chǎn)品,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)從由520字節(jié)扇區(qū)、524字節(jié)扇區(qū)和528字節(jié)扇區(qū)組成的組選擇所述第一扇區(qū)格式的一系列計(jì)算機(jī)可讀程序步驟。
25.如權(quán)利要求16所述的制造產(chǎn)品,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)將所述第二扇區(qū)格式設(shè)置成包括512字節(jié)扇區(qū)的一系列計(jì)算機(jī)可讀程序步驟。
26.如權(quán)利要求16所述的制造產(chǎn)品,所述計(jì)算機(jī)可讀程序代碼進(jìn)一步包括實(shí)現(xiàn)設(shè)置所述電源故障告警時(shí)間間隔等于約3毫秒的一系列計(jì)算機(jī)可讀程序步驟。
27.如權(quán)利要求16所述的制造產(chǎn)品,其中,所述設(shè)備控制器包括RAID控制器。
28.如權(quán)利要求16所述的制造產(chǎn)品,其中,所述數(shù)據(jù)存儲(chǔ)設(shè)備包括S-ATA設(shè)備。
29.一種計(jì)算機(jī)程序產(chǎn)品,可與信息存儲(chǔ)和檢索系統(tǒng)中的具有嵌入其中的、將數(shù)據(jù)凈荷從第一扇區(qū)格式轉(zhuǎn)換成第二扇區(qū)格式的計(jì)算機(jī)可讀程序代碼的可編程計(jì)算機(jī)處理器一起使用,所述信息存儲(chǔ)和檢索系統(tǒng)包括由以第一扇區(qū)格式寫入的多個(gè)第一扇區(qū)組成的信息;設(shè)備控制器;數(shù)據(jù)存儲(chǔ)設(shè)備,其中,所述數(shù)據(jù)存儲(chǔ)設(shè)備包括由每個(gè)都包括第二扇區(qū)格式的多個(gè)第二扇區(qū)組成的信息存儲(chǔ)介質(zhì);包括數(shù)據(jù)隊(duì)列,緩沖器和非易失性存儲(chǔ)器的扇區(qū)格式轉(zhuǎn)換設(shè)備;互連所述扇區(qū)格式轉(zhuǎn)換設(shè)備和所述設(shè)備控制器的通信鏈路;其中,所述扇區(qū)格式轉(zhuǎn)換設(shè)備與所述數(shù)據(jù)存儲(chǔ)設(shè)備互連,所述計(jì)算機(jī)程序產(chǎn)品包括使所述可編程計(jì)算機(jī)處理器形成多個(gè)DMA數(shù)據(jù)凈荷的計(jì)算機(jī)可讀程序代碼,其中每個(gè)DMA數(shù)據(jù)凈荷包括多個(gè)第一扇區(qū),其中所述多個(gè)DAM數(shù)據(jù)凈荷的每一個(gè)都包括開始邏輯塊地址和結(jié)束邏輯塊地址;使所述可編程計(jì)算機(jī)處理器將所述多個(gè)DMA數(shù)據(jù)凈荷的一個(gè)或多個(gè)發(fā)送到所述扇區(qū)格式轉(zhuǎn)換設(shè)備的計(jì)算機(jī)可讀程序代碼;使所述可編程計(jì)算機(jī)處理器通過所述扇區(qū)格式轉(zhuǎn)換設(shè)備將第i個(gè)DMA數(shù)據(jù)凈荷覆蓋在部分或全部多個(gè)第二扇區(qū)上以便形成第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的計(jì)算機(jī)可讀程序代碼;使所述可編程計(jì)算機(jī)處理器在所述數(shù)據(jù)隊(duì)列中排隊(duì)所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的計(jì)算機(jī)可讀程序代碼;使所述可編程計(jì)算機(jī)處理器將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷發(fā)送到所述數(shù)據(jù)存儲(chǔ)設(shè)備的計(jì)算機(jī)可讀程序代碼;使所述可編程計(jì)算機(jī)處理器將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì)的計(jì)算機(jī)可讀程序代碼。
30.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括使所述可編程計(jì)算機(jī)處理器將所述一個(gè)或多個(gè)DMA數(shù)據(jù)凈荷存儲(chǔ)在所述緩沖器中的計(jì)算機(jī)可讀程序代碼;以及使所述可編程計(jì)算機(jī)處理器從所述緩沖器檢索第i個(gè)DMA數(shù)據(jù)凈荷的計(jì)算機(jī)可讀程序代碼。
31.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述制造產(chǎn)品進(jìn)一步包括多個(gè)Inflight指示符,其中每個(gè)Inflight指示符包括第一值或第二值,所述計(jì)算機(jī)程序產(chǎn)品進(jìn)一步包括使所述可編程計(jì)算機(jī)處理器將第i個(gè)Inflight指示符與第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷相關(guān)聯(lián)的計(jì)算機(jī)可讀程序代碼;使所述可編程計(jì)算機(jī)處理器在將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷發(fā)送到所述數(shù)據(jù)存儲(chǔ)設(shè)備時(shí)將第i個(gè)Inflight指示符設(shè)置成第二值的計(jì)算機(jī)可讀程序代碼;使所述可編程計(jì)算機(jī)處理器在將所述第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì)后由所述數(shù)據(jù)存儲(chǔ)設(shè)備生成第i個(gè)寫入完成信號(hào)的計(jì)算機(jī)可讀程序代碼;使所述可編程計(jì)算機(jī)處理器在接收到所述第i個(gè)寫入完成信號(hào)時(shí)將第i個(gè)Inflight指示符復(fù)位到所述第一值的計(jì)算機(jī)可讀程序代碼。
32.如權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述扇區(qū)格式轉(zhuǎn)換設(shè)備包括微碼,其中所述微碼包含多個(gè)標(biāo)志,以及其中所述多個(gè)標(biāo)志包括所述多個(gè)Inflight指示符。
33.如權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述扇區(qū)格式轉(zhuǎn)換設(shè)備包括微碼,其中所述微碼包含多個(gè)位,以及其中所述多個(gè)位包括所述多個(gè)Inflight指示符。
34.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括使所述可編程計(jì)算機(jī)處理器確定是否已經(jīng)接收到電源故障告警的計(jì)算機(jī)可讀程序代碼;如果接收到電源故障告警,則使所述可編程計(jì)算機(jī)處理器執(zhí)行下列處理的計(jì)算機(jī)可讀程序代碼獲得電源故障告警時(shí)間間隔;開始電源故障告警時(shí)間間隔;在所述電源故障告警時(shí)間間隔期間,將一個(gè)或多個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷從所述數(shù)據(jù)隊(duì)列提供給所述數(shù)據(jù)存儲(chǔ)設(shè)備,其中,所述數(shù)據(jù)隊(duì)列包括P個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷;確定所述電源故障告警時(shí)間間隔是否到期;如果所述電源故障告警時(shí)間間隔到期,則使所述可編程計(jì)算機(jī)處理器執(zhí)行下列處理的計(jì)算機(jī)可讀程序代碼確定是否已經(jīng)將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì),其中,j大于或等于1并且小于或等于P;如果在所述電源故障告警時(shí)間間隔到期時(shí),還未將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入所述信息存儲(chǔ)介質(zhì),則使所述可編程計(jì)算機(jī)處理器將第j個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷保存在非易失性存儲(chǔ)器中的計(jì)算機(jī)可讀程序代碼;在恢復(fù)市電后使所述可編程計(jì)算機(jī)處理器檢索在失去市電之前還未寫入所述信息存儲(chǔ)介質(zhì)的每個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的計(jì)算機(jī)可讀程序代碼;以及使所述可編程計(jì)算機(jī)處理器將在失去市電前還沒有寫入所述信息存儲(chǔ)介質(zhì)的每個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷提供給所述數(shù)據(jù)存儲(chǔ)設(shè)備的計(jì)算機(jī)可讀程序代碼。
35.如權(quán)利要求34所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括使所述可編程計(jì)算機(jī)處理器完成向所述數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的計(jì)算機(jī)可讀程序代碼,其中,在該發(fā)送期間接收到所述電源故障告警;使所述可編程計(jì)算機(jī)處理器設(shè)置用于該發(fā)送的已經(jīng)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的Inflight指示符的計(jì)算機(jī)可讀程序代碼。
36.如權(quán)利要求34所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括在恢復(fù)到所述信息存儲(chǔ)和檢索系統(tǒng)的市電后,使所述可編程計(jì)算機(jī)處理器確定是否將第k個(gè)Inflight指示符設(shè)置成所述第二值的計(jì)算機(jī)可讀程序代碼;如果將第k個(gè)Inflight指示符設(shè)置成所述第二值,則使所述可編程計(jì)算機(jī)處理器檢索第k個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷的計(jì)算機(jī)可讀程序代碼。
37.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括使所述可編程計(jì)算機(jī)處理器從由520字節(jié)扇區(qū)、524字節(jié)扇區(qū)和528字節(jié)扇區(qū)組成的組選擇所述第一扇區(qū)格式的計(jì)算機(jī)可讀程序代碼。
38.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括使所述可編程計(jì)算機(jī)處理器將所述第二扇區(qū)格式設(shè)置成包括512字節(jié)扇區(qū)的計(jì)算機(jī)可讀程序代碼。
39.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括使所述可編程計(jì)算機(jī)處理器設(shè)置所述電源故障告警時(shí)間間隔等于約4毫秒的計(jì)算機(jī)可讀程序代碼。
40.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述設(shè)備控制器包括RAID控制器。
41.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述數(shù)據(jù)存儲(chǔ)設(shè)備包括S-ATA設(shè)備。
全文摘要
該方法形成多個(gè)DMA數(shù)據(jù)凈荷,其中每個(gè)DMA數(shù)據(jù)凈荷包括多個(gè)第一扇區(qū),并且該方法將一個(gè)或多個(gè)那些DMA數(shù)據(jù)凈荷發(fā)送到扇區(qū)格式轉(zhuǎn)換設(shè)備。然后,該方法將第i個(gè)DMA數(shù)據(jù)凈荷覆蓋在部分或全部多個(gè)第二扇區(qū)上以便形成第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,在數(shù)據(jù)隊(duì)列中排隊(duì)第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷,將第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷傳送到數(shù)據(jù)存儲(chǔ)設(shè)備,以及將第i個(gè)轉(zhuǎn)換后的DMA數(shù)據(jù)凈荷寫入信息存儲(chǔ)介質(zhì)。
文檔編號(hào)G06F11/00GK1731339SQ20051008331
公開日2006年2月8日 申請(qǐng)日期2005年7月12日 優(yōu)先權(quán)日2004年8月5日
發(fā)明者約翰·查爾斯·埃利奧特, 羅伯特·阿卡拉·庫博, 卡爾·埃文·瓊斯, 格雷格·史蒂文·盧卡斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司