專利名稱:閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及閃存,具體來(lái)說(shuō),涉及系統(tǒng)運(yùn)行中對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)過(guò)程中, 系統(tǒng)突然掉電等情況發(fā)生而導(dǎo)致了系統(tǒng)崩潰停止工作,再次啟動(dòng)系統(tǒng),重 新寫入新一批的數(shù)據(jù)時(shí),確保除了系統(tǒng)崩潰時(shí)寫入的那批數(shù)據(jù)無(wú)效之外, 崩潰之前所有正常工作記錄的數(shù)據(jù)和之后所有正常工作記錄的數(shù)據(jù),都可 以確保有效記入,并通過(guò)一定的回收管理辦法來(lái)進(jìn)行回收。
背景技術(shù):
在科學(xué)研究過(guò)程中,常常會(huì)隨機(jī)或者定期的將一批采集到的數(shù)據(jù)記錄 到某一個(gè)存儲(chǔ)設(shè)備之中,等到了一定的期限之后,科研人員將所有已經(jīng)記 錄的數(shù)據(jù)通過(guò)軟件進(jìn)行轉(zhuǎn)存,然后進(jìn)行分析和研究。因此設(shè)計(jì)一個(gè)多次存 儲(chǔ)多次導(dǎo)出的數(shù)據(jù)存儲(chǔ)系統(tǒng),對(duì)于現(xiàn)代科學(xué)研究者來(lái)說(shuō)是非常必要的。閃存設(shè)備對(duì)于嵌入式系統(tǒng)中大容量數(shù)據(jù)的存儲(chǔ)來(lái)說(shuō),具有很大的優(yōu) 勢(shì)。然而,與能夠蓋寫數(shù)據(jù)的磁性存儲(chǔ)設(shè)備不同,閃存無(wú)法蓋寫數(shù)據(jù)。為 了蓋寫存儲(chǔ)在閃存中的數(shù)據(jù),必須首先擦除現(xiàn)有的數(shù)據(jù)。由于擦除花費(fèi)的 時(shí)間長(zhǎng),因此擦除的空間大小一般固定,寫入空間的大小可以控制,這樣 同樣會(huì)導(dǎo)致一些不必要的數(shù)據(jù)被擦除P在現(xiàn)有的環(huán)境中,往往一些惡劣的環(huán)境會(huì)導(dǎo)致系統(tǒng)崩潰,此時(shí)如果正 在記錄一批有效數(shù)據(jù),該批數(shù)據(jù)可能只記錄一部分,往往用戶并不需要這 樣一批不完整的數(shù)據(jù),因此這批數(shù)據(jù)會(huì)被拋棄。但是由于掉電等導(dǎo)致系統(tǒng) 停止工作,不可能恢復(fù)這些數(shù)據(jù)。用戶只有保證下批數(shù)據(jù)能夠完整的記錄, 并且保存之前的所有完整記錄的數(shù)據(jù)就可以了 。而閃存是無(wú)法蓋寫的存儲(chǔ) 設(shè)備,那些已經(jīng)被記錄的部分?jǐn)?shù)據(jù),在被記錄之后,如果在其位置繼續(xù)記錄數(shù)據(jù)是不可能的,需要區(qū)分出那些出現(xiàn)因?yàn)楸罎⒍鴽]有記錄完整的數(shù)據(jù) 區(qū)域。而且,本發(fā)明提出了記錄點(diǎn)和讀點(diǎn),關(guān)于記錄點(diǎn)和讀點(diǎn)的作用在后文 有論述。因此,如果沒有一個(gè)容災(zāi)機(jī)制,那么崩潰時(shí)可能造成讀點(diǎn)/記錄 點(diǎn)與真正的數(shù)據(jù)區(qū)域不一致,也就是記錄點(diǎn)指向的數(shù)據(jù)區(qū)域與我們實(shí)際要 記入的位置有差錯(cuò),讀點(diǎn)指向的數(shù)據(jù)區(qū)域與我們要讀取的有效數(shù)據(jù)位置有 差錯(cuò),這樣的結(jié)果是很危險(xiǎn)的,嚴(yán)重的時(shí)候會(huì)導(dǎo)致整個(gè)歷史數(shù)據(jù)都會(huì)全部 丟失。發(fā)明內(nèi)容本發(fā)明的目的在于研制一種針對(duì)上述應(yīng)用背景,在計(jì)算機(jī)系統(tǒng)運(yùn)行中 對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)過(guò)程中,系統(tǒng)突然掉電等情況發(fā)生而導(dǎo)致了系統(tǒng)崩潰停止 工作,再次啟動(dòng)系統(tǒng),重新寫入新一批的數(shù)據(jù)時(shí),確保除了系統(tǒng)崩潰時(shí)寫 入的那批數(shù)據(jù)無(wú)效之外,崩潰之前所有正常工作記錄的數(shù)據(jù)和之后所有正 常工作記錄的數(shù)據(jù),都可以確保有效記入,并通過(guò)一定的回收管理辦法來(lái) 進(jìn)行回收的閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù)。本發(fā)明閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),包括設(shè)計(jì)一個(gè)原子操作, 原子操作過(guò)程中的任何內(nèi)部操作要么全部執(zhí)行,如果異常終止,那么已經(jīng) 操作的內(nèi)容全部丟棄。也就是說(shuō),用戶程序提交一批數(shù)據(jù),那么這批數(shù)據(jù) 要么全部被記入,如果記錄過(guò)程中出現(xiàn)任何異常終止,對(duì)之前和之后有效 記入的數(shù)據(jù)沒有任何影響,而異常終止時(shí)候正在記入的一批數(shù)據(jù)將全部被 丟棄。本發(fā)明要求使用者必須懂得NandFlash和NorFlash編程的基本知識(shí), 最好有一定的關(guān)于閃存的編程經(jīng)驗(yàn)。本發(fā)明只考慮硬件正常時(shí)的軟件容災(zāi) 技術(shù),如果NandFlash或者NorFlash出現(xiàn)故障,那本發(fā)明不予以考慮。 針對(duì)NandFlash可能會(huì)出現(xiàn)比特的錯(cuò)誤,可以采用有關(guān)海明碼校驗(yàn)或者冗余進(jìn)行處理,那是糾錯(cuò)的問題,本發(fā)明不予以考慮。本發(fā)明這里假設(shè)NandFlash空間足夠可以容納所有的數(shù)據(jù),不考慮記錄空間限制時(shí)覆蓋發(fā) 生的可能性,針對(duì)覆蓋問題,由于涉及到的內(nèi)容比較多,這里無(wú)法一次性 描述完畢,本人申請(qǐng)的其他發(fā)明專利另作詳細(xì)論述。本發(fā)明記錄是按照NorFlash和NandFlash上的地址順序進(jìn)行記錄的。 本發(fā)明中,設(shè)置一個(gè)記錄點(diǎn)(也稱之為寫指針)來(lái)告訴系統(tǒng)每次記錄 一批數(shù)據(jù)的起始物理位置,之所以設(shè)置記錄點(diǎn)是因?yàn)橛涗洈?shù)據(jù)是分批記錄 的;并且設(shè)置一個(gè)讀點(diǎn)(也稱之為讀指針)來(lái)告訴系統(tǒng)每次導(dǎo)出一批數(shù)據(jù) 的起始物理位置,保證讀取的數(shù)據(jù)沒有錯(cuò)誤數(shù)據(jù),同樣設(shè)置讀點(diǎn)是因?yàn)橛?戶導(dǎo)出數(shù)據(jù)也是一塊一塊的導(dǎo)的;合理使用這兩種指針,保證系統(tǒng)的容災(zāi) 性。本發(fā)明中,通過(guò)嚴(yán)格控制記錄點(diǎn)和讀點(diǎn)的記入順序,來(lái)保證系統(tǒng)在中 途崩潰可能導(dǎo)致的記錄點(diǎn)和讀點(diǎn)丟失情況下,能夠正確的定位系統(tǒng)崩潰時(shí) 程序執(zhí)行情況,以及能夠正確的進(jìn)行一些前期處理。本發(fā)明中,關(guān)于記錄點(diǎn)和讀點(diǎn)的査找,發(fā)明給出了一種快速、準(zhǔn)確的 査找記錄點(diǎn)和讀點(diǎn)的方法,保證災(zāi)難發(fā)生時(shí),快速給出記錄點(diǎn)和讀點(diǎn)的有 效值。考慮到NandFlash的不穩(wěn)定性,這里要求記錄點(diǎn)和讀點(diǎn)全部記入到 NorFlash中,NandFlash記入的是數(shù)據(jù)。本發(fā)明中,由于記錄點(diǎn)不斷的記入,NorFlash可能出現(xiàn)滿載——即 NorFlash空間占滿NorFlash。為了保證因?yàn)橄到y(tǒng)崩潰而導(dǎo)致了記錄點(diǎn)的 丟失,發(fā)明中采取了一定的措施。本發(fā)明中,為了正確的區(qū)分無(wú)效數(shù)據(jù)和壞區(qū)數(shù)據(jù),提出了四種不同性 質(zhì)的數(shù)據(jù)塊的定義,考慮到NandFlash的不穩(wěn)定性,采用適當(dāng)?shù)臉?biāo)記辦法, 正確區(qū)分這四種數(shù)據(jù)塊。同時(shí),基于這四種不同類型的數(shù)據(jù)塊,在考慮容 災(zāi)的情況下,提出了針對(duì)這四種數(shù)據(jù)塊的讀寫過(guò)程中的處理方法。本發(fā)明中,為了協(xié)調(diào)NandFlash和NorFlash的容災(zāi)技術(shù),給出了操 作NandFlash和NorFlash的操作流程。本發(fā)明中提供的一些記錄點(diǎn)和讀點(diǎn)處理方法,也可以讓用戶在不小心 破壞讀點(diǎn)或者記錄點(diǎn)的情況下,可以進(jìn)行適當(dāng)?shù)幕謴?fù)。本發(fā)明閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù)的優(yōu)點(diǎn)在于在系統(tǒng)出現(xiàn)突然 的崩潰的時(shí)候,保證閃存存儲(chǔ)的數(shù)據(jù)不會(huì)因?yàn)橹型緛G失而對(duì)前后存儲(chǔ)的數(shù) 據(jù)產(chǎn)生不良影響,也就是說(shuō),如果系統(tǒng)突然掉電了,那么系統(tǒng)正在記錄的 數(shù)據(jù)肯定會(huì)丟失,這是沒有辦法保留的,但是可以確保下次記入同樣的數(shù) 據(jù)的時(shí)候,能夠允許存儲(chǔ)操作繼續(xù)執(zhí)行,并且不會(huì)干擾前后存儲(chǔ)的結(jié)果; 也就是說(shuō),每批數(shù)據(jù)要么全部存入,要么存入失敗。
圖l為硬件體系結(jié)構(gòu)示意圖。圖2為NorFlash處理順序示意圖。圖3為記錄點(diǎn)和讀點(diǎn)的查找過(guò)程示意圖。
具體實(shí)施方式
如圖l所示為該數(shù)據(jù)記錄硬件框圖結(jié)構(gòu),在該圖中,CPU可以同時(shí)訪 問兩個(gè)閃存——NandFlash和NorFlash,整個(gè)記錄過(guò)程中和數(shù)據(jù)的導(dǎo)出, CPU都一直通過(guò)控制這兩個(gè)Flash達(dá)到目的。這里所有的討論都是針對(duì) NorFlash和NandFlash的塊個(gè)數(shù)都在4個(gè)以上??紤]到記錄點(diǎn)和讀點(diǎn)是非常關(guān)鍵的數(shù)據(jù),在設(shè)計(jì)的過(guò)程中將記錄點(diǎn)和 讀點(diǎn)記入到NorFlash之中,而將獲取的數(shù)據(jù)記入到NandFlash之中,因 為NorFlash的可靠性高于NandFlash,它可以確保數(shù)據(jù)記錄的正確性,因 此用于記錄關(guān)鍵的記錄點(diǎn)和讀點(diǎn)是合適的。 1.記錄點(diǎn)和讀點(diǎn)的容災(zāi)技術(shù)1. 1 NorFlash上記入記錄點(diǎn)和讀點(diǎn)的容災(zāi)技術(shù)前面提到,發(fā)明中設(shè)置一個(gè)記錄點(diǎn)(也稱之為寫指針)來(lái)告訴系統(tǒng)每 次記錄一批數(shù)據(jù)的起始物理位置。為了便于導(dǎo)出數(shù)據(jù),發(fā)明中也設(shè)置一個(gè)讀點(diǎn)(也稱之為讀指針)來(lái)告訴系統(tǒng)每次數(shù)據(jù)導(dǎo)出的時(shí)候,讀NandFlash 的起始物理位置。關(guān)于記錄點(diǎn)和讀點(diǎn)的寬度是根據(jù)NandFlash的單元大小來(lái)確定的。如 果NandFlash有不超過(guò)2G (231,考慮NandFlash覆蓋標(biāo)志位)或者4G (232, 不考慮NandFlash覆蓋標(biāo)志位)個(gè)數(shù)據(jù)單元,則記錄點(diǎn)和讀點(diǎn)占用32比 特的整型數(shù)據(jù),否則占用64個(gè)比特的數(shù)據(jù)。本來(lái)32比特的地址可以控制 的空間大小為4G,這樣做的目的為了保證這些記錄點(diǎn)不管怎么使用, 一旦 出現(xiàn)了數(shù)據(jù)覆蓋的現(xiàn)象,能夠?qū)⒂涗淈c(diǎn)的最高位記為"l"。針對(duì)NandFlash 大容量數(shù)據(jù),需要對(duì)NandFlash進(jìn)行覆蓋處理,本人申請(qǐng)的另一專利《允 許覆蓋的閃存均勻磨損循環(huán)隊(duì)列技術(shù)》作詳細(xì)論述。為了防止系統(tǒng)崩潰導(dǎo)致的記錄點(diǎn)和讀點(diǎn)丟失,本發(fā)明每次記入 NorFlash有四個(gè)數(shù)據(jù),第一個(gè)數(shù)據(jù)是最開始記入的,通過(guò)記入全"0",表 示本批數(shù)據(jù)開始處理的動(dòng)作已經(jīng)發(fā)生了。然后記入讀點(diǎn)或者記錄點(diǎn)到相應(yīng) 的位置中,最后記入一個(gè)全"0"的值——以上記入的四個(gè)數(shù)據(jù)稱之為四 單元數(shù)據(jù), 一般記入全"0"來(lái)表示記錄點(diǎn)的操作已經(jīng)完畢。以32位的記 錄點(diǎn)和讀點(diǎn)為例,如果動(dòng)作發(fā)生的標(biāo)志不是0x00000000,則認(rèn)為該操作沒 有開始,如果動(dòng)作結(jié)束的標(biāo)志不是Oxffffffff,則認(rèn)為操作已經(jīng)結(jié)束,這 就是為什么記入數(shù)值0的原因。容災(zāi)分析之所以設(shè)置一個(gè)開始的標(biāo)記和一個(gè)結(jié)束的標(biāo)記,主要是保 證記錄點(diǎn)和讀點(diǎn)不僅記入了,而且是完整記入的。這樣可以確保數(shù)據(jù)記錄 的時(shí)候,可以正確判斷上次記錄的時(shí)候是否出現(xiàn)系統(tǒng)中途記錄終止。如果 系統(tǒng)終止,那么可能記入了一批臟數(shù)據(jù),這時(shí)候就要區(qū)分臟數(shù)據(jù)所在的區(qū) 域,保留干凈數(shù)據(jù)。其中可能需要對(duì)處于臟數(shù)據(jù)區(qū)域中的有效數(shù)據(jù)進(jìn)行搬運(yùn),搬運(yùn)中需要更新記錄點(diǎn)或者讀點(diǎn)。即使在數(shù)據(jù)進(jìn)行搬家的過(guò)程中出現(xiàn) 了系統(tǒng)崩潰,也可以判斷出故障所在。數(shù)據(jù)記錄的時(shí)候,每次記錄完畢一批數(shù)據(jù),都需要修改記錄點(diǎn),指向 新的可記錄數(shù)據(jù)的起始物理位置,讀點(diǎn)不變。數(shù)據(jù)導(dǎo)出的時(shí)候,每導(dǎo)出完 一部份數(shù)據(jù),導(dǎo)出完畢就將讀點(diǎn)修改,記錄點(diǎn)不變。每次無(wú)論是修改記錄 點(diǎn)還是修改讀點(diǎn),都需要先記錄一個(gè)動(dòng)作開始的標(biāo)志之后,然后記錄一次 讀點(diǎn)和一次記錄點(diǎn),再記錄一個(gè)結(jié)束標(biāo)志表示記錄完畢。1. 2 NorFlash數(shù)據(jù)的滿載容災(zāi)技術(shù)如果在記入記錄點(diǎn)和讀點(diǎn)的過(guò)程中,由于NorFlash空間有限,導(dǎo)致 了空間記錄已滿,如圖2為NorFlash在記錄記錄點(diǎn)/讀點(diǎn)過(guò)程中指針的移 動(dòng)順序,該順序形成一個(gè)循環(huán)隊(duì)列。在空間滿載的時(shí)候,重新從第一個(gè)單 元開始記錄。在對(duì)半査找之前,通過(guò)判斷最后一個(gè)塊的最后一個(gè)四單元數(shù)據(jù)中至少 有一個(gè)已經(jīng)記入了數(shù)據(jù),則表明NorFlash已經(jīng)記滿,需要擦除NorFlash 來(lái)繼續(xù)記錄。然而基于容災(zāi)考慮,需要首先擦除第一個(gè)NorFlash塊,將 NorFlash空間尾部記錄的幾個(gè)有效記錄點(diǎn)和讀點(diǎn)復(fù)制到第一塊空間。然后 將NorFlash剩下的所有塊依次進(jìn)行擦除,復(fù)制的目的是為了保證最近的 幾個(gè)有效記錄點(diǎn)和讀點(diǎn)能夠在剩下的所有塊擦除的時(shí)候不至于丟失。如果 復(fù)制過(guò)程中或者擦除最后幾個(gè)塊的時(shí)候同樣出現(xiàn)了系統(tǒng)崩潰,則最后幾個(gè) 塊的最后幾個(gè)單元依然記錄了數(shù)據(jù),在下次啟動(dòng)程序的時(shí)候,同樣可以重 復(fù)執(zhí)行以上過(guò)程。(補(bǔ)充由于執(zhí)行上段內(nèi)容過(guò)程中,如果擦除NorFlash 最后一塊數(shù)據(jù)的過(guò)程中出現(xiàn)掉電而導(dǎo)致了那些需要復(fù)制到第一塊的記錄 點(diǎn)/讀點(diǎn)數(shù)據(jù)被更改,那后果也是嚴(yán)重的。因此,需要判斷倒數(shù)第二個(gè) NorFlash數(shù)據(jù)塊是否已經(jīng)被擦除(通過(guò)判斷對(duì)應(yīng)的動(dòng)作開始標(biāo)志和結(jié)束標(biāo) 志是否為全"1"來(lái)確定),如果被擦除,則表明數(shù)據(jù)復(fù)制是正確的,直接擦除最后一塊,否則需要執(zhí)行上段執(zhí)行的步驟,將將NorFlash空間尾部 記錄的幾個(gè)有效記錄點(diǎn)和讀點(diǎn)復(fù)制到第一塊空間)。 1. 3 NorFlash上記錄點(diǎn)/讀點(diǎn)査找的容災(zāi)技術(shù)關(guān)于有效數(shù)據(jù)記錄點(diǎn)和讀點(diǎn)的査找的實(shí)施方法,同時(shí)基于容災(zāi)考慮, 采取以下方法。每次記錄數(shù)據(jù)或者導(dǎo)出數(shù)據(jù)的時(shí)候,都需要査找記錄點(diǎn)和 讀點(diǎn)。由于每次記錄點(diǎn)和讀點(diǎn)的記入辦法是按照先記入起始標(biāo)志,然后記 入讀點(diǎn),再記入記錄點(diǎn),最后記入完畢標(biāo)志的辦法來(lái)確定的。由于NorFlash 的物理空間大小為211,為了節(jié)省査找時(shí)間,數(shù)據(jù)記錄點(diǎn)和讀點(diǎn)的査找是按 照對(duì)半査找的辦法,判斷的依據(jù)是每次定位的四單元數(shù)據(jù)的每個(gè)數(shù)值是否 為全"1",如果所有的值都是全"1"(對(duì)于32位而言就是0xffffffff), 則向前半部査找,表示該單元沒有記入了數(shù)據(jù),否則認(rèn)為其記入數(shù)據(jù),向 后半部查找。再根據(jù)對(duì)半査找方法找到的數(shù)據(jù),來(lái)確定記錄點(diǎn)和讀點(diǎn)有效性。經(jīng)過(guò) 對(duì)半査找之后,讀出的四個(gè)數(shù)據(jù)中,如果最后一個(gè)單元已經(jīng)被記錄一個(gè)隨 機(jī)的數(shù)(該數(shù)據(jù)為非全"l"),則表明該四個(gè)單元中包含的記錄點(diǎn)和讀點(diǎn) 數(shù)據(jù)有效。否則通過(guò)判斷記錄點(diǎn)是否為一個(gè)非全"1"數(shù)據(jù),來(lái)判斷讀點(diǎn) 數(shù)據(jù)是否有效。如果讀點(diǎn)記入有效,將讀點(diǎn)保存,再讀出前面四個(gè)單元的 數(shù)據(jù),循環(huán)査找判斷,直到找出有效的記錄點(diǎn)。如果沒有有效的記錄點(diǎn)和 讀點(diǎn),則只能向前查找有效的記錄點(diǎn)和讀點(diǎn)。査找流程如圖3所示。2. NandFlash數(shù)據(jù)的容災(zāi)技術(shù)從圖2可以看出,在NorFlash上記錄點(diǎn)/讀點(diǎn)數(shù)據(jù)被讀出之后,就可 能要對(duì)NandFlash進(jìn)行容災(zāi)處理,正常情況下直接往記錄點(diǎn)指向的地址開 始記入數(shù)據(jù),沒有任何容災(zāi)的處理,這里就不詳細(xì)討論。針對(duì)可能出現(xiàn)的崩潰時(shí)候的容災(zāi)處理,結(jié)合NandFlash特征,這里關(guān)鍵要做以下處理。2> 1基于容災(zāi)考慮的NandFlash數(shù)據(jù)塊分類NandFlash本身對(duì)數(shù)據(jù)塊就分為有效塊和無(wú)效塊兩種, 一般就是依照 這種有效無(wú)效塊進(jìn)行取舍。但是基于容災(zāi)考慮,在往NandFlash記入數(shù)據(jù) 過(guò)程中,不是簡(jiǎn)簡(jiǎn)單單的標(biāo)記有效無(wú)效塊,還出現(xiàn)以下幾種可能第一種 情況是, 一個(gè)數(shù)據(jù)塊如果本身為有效塊,但是這樣的數(shù)據(jù)塊記錄的數(shù)據(jù)由 于掉電等原因,存在部分的臟數(shù)據(jù),由于此時(shí)不能繼續(xù)往里面記入新的數(shù) 據(jù),以免與臟數(shù)據(jù)混合在一起;如果此時(shí)擦除該數(shù)據(jù)塊雖然可以繼續(xù)記入 新的數(shù)據(jù),但是導(dǎo)致己經(jīng)記入的部分有效數(shù)據(jù)被毀掉,基于容災(zāi)考慮,對(duì) 該塊的數(shù)據(jù)進(jìn)行標(biāo)記,今后如果又記入到該位置,可以擦除該塊重新記入; 第二種情況是, 一個(gè)數(shù)據(jù)塊本身是無(wú)效塊,但是這樣的數(shù)據(jù)塊在發(fā)現(xiàn)為無(wú) 效塊的時(shí)候已經(jīng)記入了部分有效的數(shù)據(jù)在里面,如果此時(shí)將該塊數(shù)據(jù)直接 標(biāo)記為無(wú)效數(shù)據(jù)塊,那么在導(dǎo)出的時(shí)候就會(huì)丟掉那些已經(jīng)記入的數(shù)據(jù),如 果將已經(jīng)記入的有效數(shù)據(jù)重新進(jìn)行搬家,會(huì)是一項(xiàng)很大的工作量,會(huì)成為 一個(gè)記錄的瓶頸,基于這種考慮,需要對(duì)該塊進(jìn)行標(biāo)記,今后再記入到該 位置,直接跳過(guò)該數(shù)據(jù)塊。所以基于有效塊和無(wú)效塊,還需要進(jìn)一步細(xì)分。 于是,就有下面的分類永久無(wú)效塊就是該數(shù)據(jù)塊物理上無(wú)效,而且上面沒有任何有效數(shù)據(jù)、 今后永久都不能記入新的數(shù)據(jù)的無(wú)效數(shù)據(jù)塊。暫時(shí)有效塊雖然該數(shù)據(jù)塊是無(wú)效的,但是由于該塊部分頁(yè)依然存儲(chǔ) 著部分有效數(shù)據(jù),在沒有導(dǎo)出這些數(shù)據(jù)之前,是不能將該塊作為永久無(wú)效 塊丟掉的。直到這些數(shù)據(jù)被導(dǎo)出,才可以將其標(biāo)記為永久無(wú)效塊。可擦除有效塊就是該數(shù)據(jù)塊物理上有效,并且可以重新被擦除使用 也不會(huì)導(dǎo)致數(shù)據(jù)丟失的有效塊。暫時(shí)無(wú)效塊雖然該數(shù)據(jù)塊物理上有效,但是由于掉電等系統(tǒng)崩潰原 因?qū)е缕渖弦廊槐A舨糠钟行У臄?shù)據(jù),這些數(shù)據(jù)不能被擦除,但是無(wú)法在 該數(shù)據(jù)塊上記入新的數(shù)據(jù),因?yàn)闉?zāi)難原因?qū)е孪到y(tǒng)記入了臟數(shù)據(jù),無(wú)法繼 續(xù)在這些位置蓋寫新的數(shù)據(jù)。因此這種數(shù)據(jù)塊定已成為暫時(shí)無(wú)效塊。2. 2針對(duì)不同NandFlash數(shù)據(jù)塊的存儲(chǔ)容災(zāi)技術(shù)由于NandFlash存在剩余空間,標(biāo)記記入到剩余空間中。在每次記入 一個(gè)新的數(shù)據(jù)塊之前,先要擦除這個(gè)新的數(shù)據(jù)塊。因此,擦除某個(gè)數(shù)據(jù)塊 之前先判斷是否已經(jīng)有壞的標(biāo)記,如果發(fā)現(xiàn)是永久無(wú)效塊,則不擦除該塊, 擦除下一個(gè)數(shù)據(jù)塊。如果出現(xiàn)了暫時(shí)有效塊,則需要將該塊標(biāo)記為永久無(wú) 效塊,讓今后永不使用,同樣不擦除該塊,擦除下一個(gè)數(shù)據(jù)塊。如果是擦 除該塊的時(shí)候出現(xiàn)了物理上損壞而導(dǎo)致的數(shù)據(jù)塊無(wú)效,則直接將其標(biāo)記為 永久無(wú)效塊,繼續(xù)擦除下一個(gè)數(shù)據(jù)塊。如果是編程的過(guò)程中,則分幾種情況(1) 如果在本次記錄數(shù)據(jù)的最初一頁(yè)時(shí)候,該頁(yè)已經(jīng)保留了上批數(shù) 據(jù)的尾巴,而此時(shí)發(fā)現(xiàn)所記錄的數(shù)據(jù)塊己經(jīng)壞了,則需要標(biāo)記為暫時(shí)有效 塊。基于容災(zāi)考慮,按照如下流程操作首先需要將記錄在這一頁(yè)中的上 —批記錄的有效數(shù)據(jù)搬家,移到下一個(gè)可擦除有效塊的第一頁(yè)。然后做一 個(gè)暫時(shí)有效塊標(biāo)志。再對(duì)這一頁(yè)做一個(gè)標(biāo)志,這樣下次導(dǎo)出數(shù)據(jù)的時(shí)候到這個(gè)位置終止。計(jì)算新的記錄點(diǎn),記入NorFlash中。容災(zāi)分析如果在這個(gè)過(guò)程中出現(xiàn)了終止,則下次啟動(dòng)之后,如果發(fā)現(xiàn)該塊已經(jīng)記入暫時(shí)有效塊標(biāo)記,則按照(1)情況,繼續(xù)標(biāo)志這一頁(yè),將記錄點(diǎn)記入NorFlash中。否則按照(3)的方式來(lái)處理,雖然標(biāo)記為暫 時(shí)無(wú)效塊,但是由于其物理上無(wú)效可以在下一次記錄過(guò)程的時(shí)候,被識(shí)別 出來(lái)。(2) 如果不是在記錄數(shù)據(jù)的最初一頁(yè)時(shí)候,也就是說(shuō),該頁(yè)沒有保留上批數(shù)據(jù)的尾巴,這時(shí)發(fā)現(xiàn)所記錄的數(shù)據(jù)塊已經(jīng)壞了,由于記入了部分 有效數(shù)據(jù),需要做一個(gè)壞頁(yè)的標(biāo)記和暫時(shí)有效塊標(biāo)記,但是在下次再次對(duì) 該塊進(jìn)行處理的時(shí)候,將該塊標(biāo)記為永久無(wú)效塊。容災(zāi)分析如果在這個(gè)過(guò)程中出現(xiàn)了終止,則下次啟動(dòng)之后,如果發(fā) 現(xiàn)該塊已經(jīng)被標(biāo)記為暫時(shí)有效塊標(biāo)記,則按照上面(1)的操作流程,繼續(xù)標(biāo)記數(shù)據(jù)尾巴所在的頁(yè),記入新的記錄點(diǎn)到NorFlash,否則按照下面(3) 進(jìn)行處理。(3) 如果記錄過(guò)程中沒有出現(xiàn)無(wú)效塊,但是因?yàn)橄到y(tǒng)崩潰終止而異 常,再次啟動(dòng)時(shí)候,可以通過(guò)NorFlash記錄點(diǎn)和讀點(diǎn)是否完整記錄來(lái)判 斷是否出現(xiàn)系統(tǒng)崩潰,則需要標(biāo)記為暫時(shí)無(wú)效塊?;谌轂?zāi)考慮,按照如 下流程操作首先需要將記錄在這一頁(yè)中的上一批記錄的有效數(shù)據(jù)搬家, 移到下一個(gè)可擦除有效塊的第一頁(yè)。然后做一個(gè)暫時(shí)無(wú)效塊標(biāo)記。再對(duì)這 一頁(yè)做一個(gè)標(biāo)志,這樣下次導(dǎo)出數(shù)據(jù)的時(shí)候到這個(gè)位置終止。計(jì)算新的記 錄點(diǎn),記入NorFlash中。容災(zāi)分析如果在這個(gè)過(guò)程中出現(xiàn)了終止,則下次啟動(dòng)之后,如果發(fā)現(xiàn)該塊已經(jīng)被標(biāo)記為暫時(shí)無(wú)效塊標(biāo)記,則按照(3)的情況,繼續(xù)標(biāo)記這 一頁(yè),記入新的記錄點(diǎn)到NorFlash,否則重復(fù)(3)進(jìn)行處理。(4) 如果記錄過(guò)程中,某個(gè)數(shù)據(jù)塊已經(jīng)被標(biāo)記為暫時(shí)無(wú)效塊,則首 先格式化該塊的數(shù)據(jù),使之可以記入新的數(shù)據(jù),成為可擦除有效塊。2. 3針對(duì)不同NandFlash數(shù)據(jù)塊讀的容災(zāi)技術(shù)關(guān)于讀NandFlash不會(huì)導(dǎo)致NandFlash無(wú)效,也不會(huì)因?yàn)橹型鞠到y(tǒng)崩 潰而出現(xiàn)誤讀,因?yàn)樽x的過(guò)程中對(duì)數(shù)據(jù)沒有任何修改,因此只需要重新讀。 至于讀的容災(zāi),主要是基于四種不同的數(shù)據(jù)塊而進(jìn)行控制。數(shù)據(jù)導(dǎo)出的時(shí)候,處理有四種情況的數(shù)據(jù)塊第一種情況如果是暫時(shí)有效塊,則需要判斷該塊每頁(yè)是否有效來(lái)決定該頁(yè)的數(shù)據(jù)是否應(yīng)該被導(dǎo)出來(lái)。當(dāng)該塊所有好頁(yè)的數(shù)據(jù)被導(dǎo)出完畢之 后,雖然這種數(shù)據(jù)塊已經(jīng)失去了作用,不能繼續(xù)使用,但是這個(gè)過(guò)程不要 急于將該塊標(biāo)記為永久無(wú)效塊,讓下次記入數(shù)據(jù)的時(shí)候再標(biāo)記,這樣做的 目的是為了保證如果此次導(dǎo)出的數(shù)據(jù)無(wú)效,還可以繼續(xù)導(dǎo)出,如果標(biāo)記為 永久壞塊,則意味著這塊數(shù)據(jù)一個(gè)都不能再次導(dǎo)出。這也是基于容災(zāi)考慮 的。第二種情況是該塊已經(jīng)是永久無(wú)效塊,則該數(shù)據(jù)塊直接跳過(guò)去,不 導(dǎo)出任何數(shù)據(jù);第三種情況該塊是一個(gè)暫時(shí)無(wú)效塊,則需要判斷該塊每頁(yè)是否有效 來(lái)決定該頁(yè)的數(shù)據(jù)是否應(yīng)該被導(dǎo)出來(lái)。當(dāng)該塊所有好頁(yè)的數(shù)據(jù)被導(dǎo)出完畢 之后,這種數(shù)據(jù)塊還可以繼續(xù)使用,但是這個(gè)過(guò)程不要急于將該塊標(biāo)記為 可擦除有效塊,讓下次記入數(shù)據(jù)的時(shí)候再標(biāo)記,這樣做的目的是為了保證 如果此次導(dǎo)出的數(shù)據(jù)無(wú)效,還可以繼續(xù)導(dǎo)出,如果標(biāo)記為可擦除有效塊, 則意味著該塊所有數(shù)據(jù)都可以再次導(dǎo)出。這也是基于容災(zāi)考慮的。第四種情況該塊為可擦除有效塊,則直接讀出所有已經(jīng)記錄的數(shù)據(jù)。2. 4 NandFlash對(duì)數(shù)據(jù)塊和塊內(nèi)頁(yè)進(jìn)行標(biāo)記利用NandFlash的剩余空間來(lái)標(biāo)記四種不同類型的數(shù)據(jù)塊, 一般來(lái)說(shuō) NandFlash提供充足的剩余空間給用戶編程過(guò)程中用于ECC校驗(yàn)、標(biāo)記無(wú) 效塊等作用,剩余空間一般都會(huì)有充足的容量用于標(biāo)記。由于Nand型Flash被擦除之后,所有的比特位都變?yōu)?1",對(duì)于標(biāo) 記來(lái)說(shuō),就是將"1"變?yōu)?0"。對(duì)于可擦除有效塊,可以不用任何標(biāo)記。 同時(shí)考慮NandFlash比特位出錯(cuò),這里建議采取三次寫"0"的辦法,如 果三次中有兩次全"0",則認(rèn)為標(biāo)記已經(jīng)存在。對(duì)于塊類型的標(biāo)記區(qū)域和頁(yè)類型的標(biāo)記區(qū)域,不能重疊在一起,否則 不能區(qū)分。例如,如果剩余空間前面三個(gè)單元為塊標(biāo)記區(qū)域,則頁(yè)標(biāo)記區(qū)域不能標(biāo)記在剩余空間的前面三個(gè)單元。這里假設(shè)塊標(biāo)記在剩余空間的前面三個(gè)單元,頁(yè)標(biāo)記在剩余空間的后面三個(gè)單元,NandFlash中的塊標(biāo)志分為三種情況(1) 如果該塊需要被永久無(wú)效塊,則該塊的第一頁(yè)和第二頁(yè)的剩余 空間前三個(gè)單元中標(biāo)記"0";(2) 如果該塊為暫時(shí)有效塊,則該塊的第一頁(yè)的剩余空間前三個(gè)單 元標(biāo)記"0",并對(duì)該塊的第一個(gè)無(wú)效數(shù)據(jù)頁(yè)作頁(yè)標(biāo)記,在其剩余空間的后 三個(gè)單元標(biāo)記"0";(3) 如果該塊為暫時(shí)無(wú)效塊,則該塊的第二頁(yè)的剩余空間前三個(gè)單 元標(biāo)記"0",并對(duì)該塊的第一個(gè)無(wú)效數(shù)據(jù)頁(yè)作頁(yè)標(biāo)記,在其剩余空間的后 三個(gè)單元標(biāo)記"0";(4) 如果該塊為可擦除有效塊,則無(wú)需要任何標(biāo)記。3.數(shù)據(jù)記錄和導(dǎo)出的容災(zāi)技術(shù)上面分別討論了 NorFlash記錄點(diǎn)/讀點(diǎn)的存儲(chǔ)容災(zāi)的處理和 NandFlash對(duì)數(shù)據(jù)進(jìn)行容災(zāi)的處理。該容災(zāi)技術(shù)保證了記錄點(diǎn)/讀點(diǎn)被記錄 或者被搜索的時(shí)候的容災(zāi)處理。通過(guò)四單元數(shù)據(jù)先后被記錄的關(guān)系,保證 每次要么四個(gè)單元全部記入,否則出現(xiàn)記錄一部分的時(shí)候,必須能夠讓程 序判斷出哪個(gè)記錄點(diǎn)有效,哪個(gè)記錄點(diǎn)無(wú)效。為了便于利用對(duì)半搜索,這 四個(gè)單元的數(shù)據(jù)即使沒有全部被成功記入,也要把它們的位置保留下來(lái)。 新的四單元數(shù)據(jù)不會(huì)占用這里的空間。而搜索的依據(jù)則是基于NorFlash 被擦除后的數(shù)據(jù)特征。由于記錄點(diǎn)/讀點(diǎn)頻繁記錄很有可能NorFlash出現(xiàn) 滿載,這時(shí)候就需要擦除,那么擦除中也存在掉電的問題,因此也重點(diǎn)討 論了滿載的處理問題。關(guān)于NandFlash主要是給出四種不同類型的數(shù)據(jù)塊,依據(jù)這四種不同類型數(shù)據(jù)塊分別討論了容災(zāi)讀和容災(zāi)寫技術(shù),并討論了如何對(duì)那些數(shù)據(jù)塊 進(jìn)行標(biāo)記以及頁(yè)進(jìn)行標(biāo)記。然而,在實(shí)際的過(guò)程中,既要考慮記錄點(diǎn)/讀點(diǎn)的容災(zāi)處理,也要考慮NandFlash數(shù)據(jù)的容在技術(shù),這兩者是結(jié)合一起 來(lái)處理的。這部分則主要討論將這兩個(gè)內(nèi)容結(jié)合在一起的時(shí)候,系統(tǒng)的容 災(zāi)性和這兩者之間的關(guān)系。3. 1正常情況下NandFlash和NorFlash的協(xié)調(diào)工作在數(shù)據(jù)記錄和導(dǎo)出過(guò)程中,只要記錄開始,那么首先就要記入開始的 標(biāo)志全"0",然后任何操作導(dǎo)致的讀點(diǎn)/記錄點(diǎn)之一被更改,就要及時(shí)的 記入NorFlash,再記入四單元數(shù)據(jù)的剩余部分,而且順序是先記入讀點(diǎn), 再記入記錄點(diǎn),最后記錄結(jié)束操作標(biāo)記全"0"。正常情況下,如果是記錄NandFlash,則讀點(diǎn)不會(huì)改變,直接記入讀 點(diǎn),然后向NandFlash記錄數(shù)據(jù),在這個(gè)過(guò)程中主要關(guān)注的是有沒有出現(xiàn) 新的永久無(wú)效塊,如何跳過(guò)永久無(wú)效塊,有沒有出現(xiàn)暫時(shí)有效塊等,處理 完之后就知道新的記錄點(diǎn)的大小了。然后記入一個(gè)結(jié)束標(biāo)志。如果是導(dǎo)出NandFlash數(shù)據(jù),則讀點(diǎn)會(huì)被更改,因此需要先導(dǎo)出 NandFlash部分?jǐn)?shù)據(jù),在導(dǎo)出NandFlash數(shù)據(jù)過(guò)程中,主要是如何跳過(guò)永 久無(wú)效塊,選取暫時(shí)有效塊的有效數(shù)據(jù),讀取可擦除有效塊的所有數(shù)據(jù)。 導(dǎo)出之后記入新的讀點(diǎn),再保持記錄點(diǎn)不變,即如結(jié)束操作標(biāo)記。3. 2異常情況下NandFlash和NorFlash的協(xié)調(diào)工作由于NorFlash區(qū)域之前為全"1",因此,只要不是全"1",則證明 一定被修改過(guò)。根據(jù)上面四單元數(shù)據(jù)記錄的順序,如果后面被修改,則證 明前面所有單元記錄時(shí)沒有出現(xiàn)系統(tǒng)崩潰。這樣就可以確定是否出現(xiàn)崩 漬,崩潰之前處理的記錄點(diǎn)或者讀點(diǎn)哪個(gè)是有效的。在出現(xiàn)異常常情況的時(shí)候,首先需要定位有效的記錄點(diǎn)和讀點(diǎn),然后 記錄原子操作開始標(biāo)志。如果之前是記錄NandFlash,重啟后再次記錄的時(shí)候,則讀點(diǎn)不會(huì)改 變,直接記入讀點(diǎn),然后需要標(biāo)記暫時(shí)無(wú)效塊和無(wú)效頁(yè),或者對(duì)崩潰前已 經(jīng)標(biāo)記的暫時(shí)無(wú)效塊進(jìn)行進(jìn)一步處理。對(duì)暫時(shí)無(wú)效塊進(jìn)行搬家處理完之后 就知道新的記錄點(diǎn)的大小了。然后記入一個(gè)結(jié)束標(biāo)志。再按照3.1的步驟 進(jìn)行正常記錄。如果之前是導(dǎo)出NandFlash數(shù)據(jù),重啟后再次導(dǎo)出數(shù)句,如果讀點(diǎn)記 錄有效,說(shuō)明系統(tǒng)崩潰對(duì)已經(jīng)讀出的數(shù)據(jù)沒有任何影響,數(shù)據(jù)已經(jīng)被導(dǎo)出, 直接將有效的記錄點(diǎn)重復(fù)的記入,然后記入結(jié)束標(biāo)記,繼續(xù)正常讀操作。 如果讀點(diǎn)記錄無(wú)效,由于讀對(duì)NandFlash數(shù)據(jù)沒有修改,而且NorFlash 中關(guān)鍵的讀點(diǎn)/記錄點(diǎn)沒有做任何修改,只需要重新在NorFlash下一個(gè)空 間記入開始標(biāo)記,進(jìn)行新的一輪正常導(dǎo)出操作。4.本發(fā)明的其它內(nèi)容事實(shí)上,本發(fā)明中,只要NandFlash數(shù)據(jù)沒有被格式化,由于歷史的 所有記錄點(diǎn)只要NorFlash沒有出現(xiàn)覆蓋, 一般還可以被保存下來(lái),經(jīng)過(guò) 適度的査詢,也可以恢復(fù)歷史上的一些數(shù)據(jù)。如果格式化NandFlash空間,可以通過(guò)修改讀點(diǎn)/記錄點(diǎn),比如都指 向開始位置。這樣就知道NandFlash空間可以重新使用了。
權(quán)利要求
1、一種閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),其特征在于包括設(shè)計(jì)一個(gè)原子操作,原子操作過(guò)程中的任何內(nèi)部操作要么全部執(zhí)行,如果異常終止,那么已經(jīng)操作的內(nèi)容全部丟棄;也就是說(shuō),用戶程序提交一批數(shù)據(jù),那么這批數(shù)據(jù)要么全部被記入,如果記錄過(guò)程中出現(xiàn)任何異常終止,對(duì)之前和之后有效記入的數(shù)據(jù)沒有任何影響,而異常終止時(shí)候正在記入的一批數(shù)據(jù)將全部被丟棄。
2、 根據(jù)權(quán)利要求l所述的閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),其特征在 于原子操作過(guò)程中,首先設(shè)置一個(gè)記錄點(diǎn),也稱之為寫指針,來(lái)告訴系 統(tǒng)每次記錄一批數(shù)據(jù)的起始物理位置;并且設(shè)置一個(gè)讀點(diǎn),也稱之為讀指 針,來(lái)告訴系統(tǒng)每次導(dǎo)出一批數(shù)據(jù)的起始物理位置;然后,通過(guò)嚴(yán)格控制 記錄點(diǎn)和讀點(diǎn)的記入順序,來(lái)保證系統(tǒng)在中途崩潰可能導(dǎo)致的記錄點(diǎn)和讀 點(diǎn)丟失情況下,能夠正確的定位系統(tǒng)崩潰時(shí)程序執(zhí)行情況,以及能夠正確 的進(jìn)行一些前期處理。
3、 根據(jù)權(quán)利要求2所述的閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),其特征在 于記錄點(diǎn)和讀點(diǎn)的查找,給出了一種快速、準(zhǔn)確的査找記錄點(diǎn)和讀點(diǎn)的 方法,保證災(zāi)難發(fā)生時(shí),快速給出記錄點(diǎn)和讀點(diǎn)的有效值;考慮到 NandFlash的不穩(wěn)定性,這里要求記錄點(diǎn)和讀點(diǎn)全部記入到NorFlash中, NandFlash記入的是數(shù)據(jù)。
4、 根據(jù)權(quán)利要求2所述的閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),其特征在 于由于記錄點(diǎn)不斷的記入,NorFlash可能出現(xiàn)滿載——^即NorFlash空 間占滿NorFlash;為了保證因?yàn)橄到y(tǒng)崩潰而導(dǎo)致了記錄點(diǎn)的丟失,發(fā)明中 采取了一定的措施來(lái)維持?jǐn)?shù)據(jù)的不丟失。
5、 根據(jù)權(quán)利要求2所述的閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)jMl容—玄技術(shù),—篇特征在于為了正確的區(qū)分無(wú)效數(shù)據(jù)和壞區(qū)數(shù)據(jù),提出了四種不同性質(zhì)的數(shù)據(jù)塊 的定義,考慮到NandFlash的不穩(wěn)定性,采用適當(dāng)?shù)臉?biāo)記辦法,正確區(qū)分 這四種數(shù)據(jù)塊;同時(shí),基于這四種不同類型的數(shù)據(jù)塊,在考慮容災(zāi)的情況 下,提出了針對(duì)這四種數(shù)據(jù)塊的讀寫過(guò)程中的處理方法。
6、 根據(jù)權(quán)利要求2、 3所述的閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),其特 征在于本發(fā)明中提供的一些記錄點(diǎn)和讀點(diǎn)處理方法,也可以讓用戶在不 小心破壞讀點(diǎn)或者記錄點(diǎn)的情況下,可以進(jìn)行適當(dāng)?shù)幕謴?fù)。
7、 根據(jù)權(quán)利要求2、 3所述的閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),其特 征在于為了協(xié)調(diào)NandFlash和NorFlash的容災(zāi)技?jí)簦o出了操作 NandFlash和NorFlash的操作流程。
全文摘要
本發(fā)明閃存數(shù)據(jù)存儲(chǔ)/導(dǎo)出的容災(zāi)技術(shù),包括設(shè)計(jì)一個(gè)原子操作,原子操作過(guò)程中的任何內(nèi)部操作要么全部執(zhí)行,如果異常終止,那么已經(jīng)操作的內(nèi)容全部丟棄。其優(yōu)點(diǎn)是在系統(tǒng)出現(xiàn)突然的崩潰的時(shí)候,保證閃存存儲(chǔ)的數(shù)據(jù)不會(huì)因?yàn)橹型緛G失而對(duì)前后存儲(chǔ)的數(shù)據(jù)產(chǎn)生不良影響,也就是說(shuō),如果系統(tǒng)突然掉電了,那么系統(tǒng)正在記錄的數(shù)據(jù)肯定會(huì)丟失,這是沒有辦法保留的,但是可以確保下次記入同樣的數(shù)據(jù)的時(shí)候,能夠允許存儲(chǔ)操作繼續(xù)執(zhí)行,并且不會(huì)干擾前后存儲(chǔ)的結(jié)果;也就是說(shuō),每批數(shù)據(jù)要么全部存入,要么存入失敗。
文檔編號(hào)G06F11/14GK101403986SQ20081019761
公開日2009年4月8日 申請(qǐng)日期2008年11月12日 優(yōu)先權(quán)日2008年11月12日
發(fā)明者勤 李, 袁行船 申請(qǐng)人:中國(guó)船舶重工集團(tuán)公司第七○九研究所