專利名稱:數(shù)據(jù)處理方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)處理方法和一種數(shù)據(jù)處理設(shè)備。具體地說,它涉及這樣一種數(shù)據(jù)處理方法和數(shù)據(jù)處理設(shè)備,它們最好是用于例如完成數(shù)據(jù)發(fā)送和接收的IC(集成電路)卡或類似裝置中。
背景技術(shù):
已經(jīng)研制出一種IC卡(智能卡),期望在電子貨幣系統(tǒng)或保安系統(tǒng)中找到應(yīng)用。
該IC卡把用于實現(xiàn)各種處理的CPU(中央處理單元)與處理所必須的存儲數(shù)據(jù)用存儲器或類似裝置集成到一起,其中的數(shù)據(jù)發(fā)送和接收是在IC卡進入與預(yù)定讀出器/寫入器(R/W)接觸狀態(tài)時實現(xiàn)的。
另一方面,有一種自身不帶電池的無電池型IC卡,其電源是由R/W單元向IC卡提供的。
再有,有一種IC卡完成該IC卡與R/W單元之間的數(shù)據(jù)發(fā)送與接收,但通過使用電磁波使IC卡與R/W單元沒有物理接觸,該IC卡還從電磁波中獲得必要的電源。
然而,當(dāng)在沒有物理接觸的IC卡和R/W之間發(fā)送和接收數(shù)據(jù)時,如果在訪問IC卡的存儲器的同時,接收電磁波失敗,因而不能得到足夠的電源,這時便會發(fā)生稱作存儲器訛誤(memory corruption)的問題,而且在存儲器中的數(shù)據(jù)當(dāng)中發(fā)生兼容性缺陷。
再有,當(dāng)使IC卡與R/W接觸借以發(fā)送和接收數(shù)據(jù)時,在用戶能自由地向R/W插入或從R/W拔出IC卡的情況下,如果在訪問存儲器的同時從R/W中拔出IC卡,則也會發(fā)生存儲器訛誤。
當(dāng)數(shù)據(jù)被存放在存儲數(shù)據(jù)單元(在MS-DOS情況下為扇區(qū))中時,例如在MS-DOS(微軟磁盤操作系統(tǒng))(注冊商標(biāo))的文件分配表(FAT)中,如果在FAT中發(fā)生存儲器訛誤,數(shù)據(jù)(文件)的所有位置信息會丟失,于是數(shù)據(jù)不能被訪問。
因此,當(dāng)發(fā)生存儲器訛誤時,在最壞的情況下,IC卡不能被使用,所以需要某種對策來克服這種存儲器訛誤。
對付這一問題的一種方法會是這樣保留來自緊挨著的前一場合和兩個場合以前的數(shù)據(jù),并把來自兩個場合以前的數(shù)據(jù)更新為新數(shù)據(jù),這樣,即使數(shù)據(jù)不能被滿意地更新(當(dāng)來自兩個場合之前的數(shù)據(jù)是被破壞數(shù)據(jù)時),來自緊挨著的前一個場合的數(shù)據(jù)仍會保持下來。
然而,當(dāng)這樣做時,例如如果在來自兩個場合以前的數(shù)據(jù)正在被更新時供電停止,就會出現(xiàn)一種不穩(wěn)定情況,此時不可能讀出被更新的數(shù)據(jù),因為被讀的數(shù)據(jù)可能是正確的,或者不正確的,或者是立即前一個場合的數(shù)據(jù)。
發(fā)明內(nèi)容
考慮這種情況,本發(fā)明提供了一種方法,它總能保證穩(wěn)定地讀出一個數(shù)據(jù)。
根據(jù)本發(fā)明的一個方面,提供了一種利用將信息存儲在塊單元中的存儲器的數(shù)據(jù)處理方法,其中所述存儲器包括用于將數(shù)據(jù)存儲在多個塊單元中的數(shù)據(jù)區(qū)以及用于存儲多個塊號的第一和第二區(qū),所述多個塊號被指配給所述數(shù)據(jù)區(qū)中的各塊,所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示被原始寫入數(shù)據(jù)的塊,所述第二塊號用于指示數(shù)據(jù)被更新的塊,所述方法包括以下步驟將更新后的數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一個或多個塊中,所述塊對應(yīng)于所述第一和第二區(qū)的其中一個區(qū)中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)的所述其中一個區(qū),在所述第一和第二區(qū)中的另一個區(qū)的第一塊號中,存儲與所述寫入步驟所寫入的更新數(shù)據(jù)相對應(yīng)的、已經(jīng)被原始寫入數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號,并且在所述第一和第二區(qū)中的所述另一個區(qū)的第二區(qū)號中,存儲由所述寫入步驟所寫入的、數(shù)據(jù)已經(jīng)被更新的所述數(shù)據(jù)區(qū)的塊的塊號,以及在所述第一和第二區(qū)的所述其中一個區(qū)中擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的另一個方面,提供了一種利用將信息存儲在塊單元中的存儲器的數(shù)據(jù)處理設(shè)備,其中所述存儲器包括用于將數(shù)據(jù)存儲在多個塊單元中的數(shù)據(jù)區(qū)以及用于存儲多個塊號的第一和第二區(qū),所述多個塊號被指配給所述數(shù)據(jù)區(qū)中的各塊,所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示被原始寫入數(shù)據(jù)的塊,所述第二塊號用于指示數(shù)據(jù)被更新的塊,所述數(shù)據(jù)設(shè)備被設(shè)置成將更新后的數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一個或多個塊中,所述塊對應(yīng)于所述第一和第二區(qū)的其中一個區(qū)中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)的所述其中一個區(qū),在所述第一和第二區(qū)中的另一個區(qū)的第一塊號中,存儲與所述寫入步驟所寫入的更新數(shù)據(jù)相對應(yīng)的、已經(jīng)被原始寫入數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號,并且在所述第一和第二區(qū)中的所述另一個區(qū)的第二區(qū)號中,存儲由所述寫入步驟所寫入的、數(shù)據(jù)已經(jīng)被更新的所述數(shù)據(jù)區(qū)的塊的塊號,以及在所述第一和第二區(qū)的所述其中一個區(qū)中擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的再一個方面,提供了一種利用將信息存入塊單元的存儲器的數(shù)據(jù)處理方法,其中所述存儲器包括用于在多個塊單元中存儲數(shù)據(jù)的數(shù)據(jù)區(qū),用于存儲被指配給所述數(shù)據(jù)區(qū)中的各塊以及這些塊單元的更新塊的塊號的指針區(qū),以及用于存儲被指配給所述指針區(qū)中的塊的塊號的第一和第二區(qū),所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示與被原始寫入數(shù)據(jù)的塊相對應(yīng)的所述指針區(qū)的塊,所述第二塊號用于指示與數(shù)據(jù)被更新的塊相對應(yīng)的所述指針區(qū)的塊,所述方法包括以下步驟將更新后的數(shù)據(jù)寫入到與存儲在所述指針區(qū)中的塊號相對應(yīng)的數(shù)據(jù)區(qū)的一個或多個塊中,其中所述存儲在所述指針區(qū)中的塊號對應(yīng)于所述第一和第二區(qū)的其中一個中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)中的所述其中一個區(qū);在與所述指針區(qū)的第二塊號相對應(yīng)的塊中,存儲已經(jīng)寫入數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號;在所述第一和第二區(qū)中的另一個區(qū)中,存儲已經(jīng)存儲所述數(shù)據(jù)區(qū)的塊號的所述指針區(qū)的第二塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中,擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的再一個方面,提供了一種利用將信息存入塊單元的存儲器的數(shù)據(jù)處理設(shè)備,其中所述存儲器包括用于在多個塊單元中存儲數(shù)據(jù)的數(shù)據(jù)區(qū),用于存儲被指配給所述數(shù)據(jù)區(qū)中的各塊以及這些塊單元的更新塊的塊號的指針區(qū),以及用于存儲被指配給所述指針區(qū)中的塊的塊號的第一和第二區(qū),所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示與被原始寫入數(shù)據(jù)的塊相對應(yīng)的所述指針區(qū)的塊,所述第二塊號用于指示與數(shù)據(jù)被更新的塊相對應(yīng)的所述指針區(qū)的塊,所述數(shù)據(jù)處理設(shè)備被設(shè)置成將更新后的數(shù)據(jù)寫入到與存儲在所述指針區(qū)中的塊號相對應(yīng)的數(shù)據(jù)區(qū)的一個或多個塊中,其中所述存儲在所述指針區(qū)中的塊號對應(yīng)于所述第一和第二區(qū)的其中一個中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)中的所述其中一個區(qū);在與所述指針區(qū)的第二塊號相對應(yīng)的塊中,存儲已經(jīng)寫入數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號;在所述第一和第二區(qū)中的另一個區(qū)中,存儲已經(jīng)存儲所述數(shù)據(jù)區(qū)的塊號的所述指針區(qū)的第二塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中,擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的再一個方面,提供了一種利用將信息存儲在塊單元中的存儲器的數(shù)據(jù)處理方法,其中所述存儲器包括用于將數(shù)據(jù)存儲在多個塊單元中的數(shù)據(jù)區(qū)以及用于存儲多個塊號的第一和第二區(qū),所述多個塊號被指配給所述數(shù)據(jù)區(qū)中的各塊,所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示被原始寫入數(shù)據(jù)的塊,所述第二塊號用于指示數(shù)據(jù)被更新的塊,所述方法包括以下步驟將更新后的數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一個或多個塊中,所述塊對應(yīng)于所述第一和第二區(qū)的其中一個區(qū)中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)的所述其中一個區(qū),在所述第一和第二區(qū)中的另一個區(qū)的第一塊號中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的塊的塊號,并且在所述第一和第二區(qū)中的所述另一個區(qū)的第二塊號中,存儲數(shù)據(jù)被原始寫入的塊的塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的再一個方面,提供了一種利用將信息存儲在塊單元中的存儲器的數(shù)據(jù)處理設(shè)備,其中所述存儲器包括用于將數(shù)據(jù)存儲在多個塊單元中的數(shù)據(jù)區(qū)以及用于存儲多個塊號的第一和第二區(qū),所述多個塊號被指配給所述數(shù)據(jù)區(qū)中的各塊,
所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示被原始寫入數(shù)據(jù)的塊,所述第二塊號用于指示數(shù)據(jù)被更新的塊,所述數(shù)據(jù)設(shè)備被設(shè)置成將更新后的數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一個或多個塊中,所述塊對應(yīng)于所述第一和第二區(qū)的其中一個區(qū)中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)的所述其中一個區(qū),在所述第一和第二區(qū)中的另一個區(qū)的第一塊號中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的塊的塊號,并且在所述第一和第二區(qū)中的所述另一個區(qū)的第二塊號中,存儲數(shù)據(jù)被原始寫入的塊的塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的再一個方面,提供了一種利用將信息存入塊單元的存儲器的數(shù)據(jù)處理方法,其中所述存儲器包括用于在多個塊單元中存儲數(shù)據(jù)的數(shù)據(jù)區(qū),用于存儲被指配給所述數(shù)據(jù)區(qū)中的各塊以及這些塊單元的更新塊的塊號的指針區(qū),以及用于存儲被指配給所述指針區(qū)中的塊的塊號的第一和第二區(qū),所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示與被原始寫入數(shù)據(jù)的塊相對應(yīng)的所述指針區(qū)的塊,所述第二塊號用于指示與數(shù)據(jù)被更新的塊相對應(yīng)的所述指針區(qū)的塊,所述方法包括以下步驟將更新后的數(shù)據(jù)寫入到與存儲在所述指針區(qū)中的塊號相對應(yīng)的數(shù)據(jù)區(qū)的一個或多個塊中,其中所述存儲在指針區(qū)中的塊號對應(yīng)于所述第一和第二區(qū)的其中一個中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)中的所述其中一個區(qū);在對應(yīng)于所述指針區(qū)的第一塊號的塊中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號,
在所述第一和第二區(qū)中的另一個區(qū)中,存儲在上述存儲步驟中已經(jīng)存儲所述數(shù)據(jù)區(qū)的塊號的所述指針區(qū)的第一塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中,擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的再一個方面,提供了一種利用將信息存入塊單元的存儲器的數(shù)據(jù)處理設(shè)備,其中所述存儲器包括用于在多個塊單元中存儲數(shù)據(jù)的數(shù)據(jù)區(qū),用于存儲被指配給所述數(shù)據(jù)區(qū)中的各塊以及這些塊單元的更新塊的塊號的指針區(qū),以及用于存儲被指配給所述指針區(qū)中的塊的塊號的第一和第二區(qū),所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示與被原始寫入數(shù)據(jù)的塊相對應(yīng)的所述指針區(qū)的塊,所述第二塊號用于指示與數(shù)據(jù)被更新的塊相對應(yīng)的所述指針區(qū)的塊,所述數(shù)據(jù)處理設(shè)備被設(shè)置成將更新后的數(shù)據(jù)寫入到與存儲在所述指針區(qū)中的塊號相對應(yīng)的數(shù)據(jù)區(qū)的一個或多個塊中,其中所述存儲在所述指針區(qū)中的塊號對應(yīng)于所述第一和第二區(qū)的其中一個中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)中的所述其中一個區(qū);在對應(yīng)于所述指針區(qū)的第一塊號的塊中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號,在所述第一和第二區(qū)中的另一個區(qū)中,存儲在上述存儲步驟中已經(jīng)存儲所述數(shù)據(jù)區(qū)的塊號的所述指針區(qū)的第一塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中,擦除所述第一和第二塊號以及所述新舊程度信息。
根據(jù)本發(fā)明的信息處理方法和設(shè)備的特點在于一個存儲器包括數(shù)據(jù)區(qū)用于以塊為單元存儲數(shù)據(jù)以及第一和第二區(qū)用于存儲多個塊號,這些塊號是指配給數(shù)據(jù)區(qū)中各塊的,數(shù)據(jù)被寫入數(shù)據(jù)區(qū)中的一塊,該塊對應(yīng)于存儲在第一和第二區(qū)之一中的一個塊號,已被寫入數(shù)據(jù)的塊的塊號被存儲在第一和第二區(qū)中的另一個區(qū)中,而在第一和第二區(qū)之一中的數(shù)據(jù)被擦除。
本發(fā)明的特點還在于該存儲器還可以包括一個區(qū)按所述塊單元存儲數(shù)據(jù),一個指針區(qū)用于存儲多個指配給數(shù)據(jù)區(qū)中各塊的塊號,以及第一和第二區(qū)用于存儲多個指配給指針區(qū)中各塊的塊號。數(shù)據(jù)被寫到指針區(qū)中一塊的塊號,該塊號對應(yīng)于存儲在第一和第二區(qū)之一中的塊號,并寫入數(shù)據(jù)區(qū)中的相應(yīng)塊。已被寫入數(shù)據(jù)的塊的塊號被存儲在指針區(qū)的一塊中,在指針區(qū)中被存儲的該塊的塊號被存儲在第一和第二區(qū)中的另一個區(qū),而在第一和第二區(qū)之一中存儲的數(shù)據(jù)被擦除。
圖1是應(yīng)用本發(fā)明的非接觸卡系統(tǒng)的一種形式的典型結(jié)構(gòu)。
圖2是圖1中的讀出器/寫入器1的典型結(jié)構(gòu)的方框圖。
圖3是圖1中的IC卡2的典型結(jié)構(gòu)的方框圖。
圖4A-4C是描述本發(fā)明基本原理的圖。
圖5A-5E是描述本發(fā)明基本原理的圖。
圖6是描述讀處理的流程圖,這個讀處理與具有圖4A-4C所示結(jié)構(gòu)的存儲器有關(guān)。
圖7是描述寫處理的流程圖,這個寫處理與具有圖4A-4C所示結(jié)構(gòu)的存儲器有關(guān)。
圖8顯示出應(yīng)用單指針系統(tǒng)的存儲器的典型結(jié)構(gòu)。
圖9顯示出應(yīng)用該單指針系統(tǒng)的存儲器的典型結(jié)構(gòu)。
圖10是描述由單指針系統(tǒng)進行讀處理的流程圖。
圖11是描述由單指針系統(tǒng)進行寫處理的流程圖。
圖12顯示應(yīng)用雙指針系統(tǒng)的存儲器的典型結(jié)構(gòu)。
圖13顯示應(yīng)用該雙指針系統(tǒng)的存儲器的典型結(jié)構(gòu)。
圖14是描述由雙指針系統(tǒng)進行讀處理的流程圖。
圖15是描述由雙指針系統(tǒng)進行寫處理的流程圖。
圖16顯示當(dāng)由雙指針系統(tǒng)完成數(shù)據(jù)讀時圖3所示EEPROM 66的典型結(jié)構(gòu)。
圖17A和17B顯示一個物理塊的典型結(jié)構(gòu),該物理塊是有效性確定塊。
圖18A和18B顯示組成指針區(qū)的各物理塊的舉例。
圖1顯示應(yīng)用本發(fā)明的非接觸卡系統(tǒng)的一種形式的典型結(jié)構(gòu)。
具體實施例方式
非接觸卡系統(tǒng)由R/W1,IC卡2及控制器3組成,利用電磁波在非接觸狀態(tài)在R/W1和IC卡2之間發(fā)送和接收數(shù)據(jù)。就是說,R/W1向IC卡2發(fā)送一個預(yù)定命令,IC卡2接收這個命令并根據(jù)該命令進行處理。再有,IC卡2根據(jù)處理結(jié)果向R/W1發(fā)送響應(yīng)數(shù)據(jù)。
R/W1通過一個預(yù)先確定的接口(例如遵守RS-485A規(guī)范或類似規(guī)范的接口)與控制器3相連,控制器3通過向R/W1提供預(yù)定控制信號來完成預(yù)定處理。
圖2顯示圖1中的R/W1的典型結(jié)構(gòu)。
在IC21中,用于處理數(shù)據(jù)的DPU(數(shù)據(jù)處理單元)31、用于處理發(fā)送到IC卡2的數(shù)據(jù)及從IC卡2收到的數(shù)據(jù)的SPU(信號處理單元)32、用于與控制器3通信的SCC(串行通信控制器)33以及存儲器單元34通過總線相連,存儲器單元34由預(yù)先存儲處理數(shù)據(jù)所需信息的ROM41及在處理過程中暫時存儲數(shù)據(jù)的RAM42組成。
再有,存儲預(yù)定數(shù)據(jù)的閃速(flash)存儲器22也連到總線上。
DPU31向SPU32輸出一個向IC卡2發(fā)送的命令,并從SPU32接收來自IC卡2的響應(yīng)數(shù)據(jù)。
SPU32根據(jù)向IC卡2發(fā)送的命令完成預(yù)定的處理(例如BPSK(雙相移鍵控法)調(diào)制)并把它輸出給調(diào)制電路23,從解調(diào)電路25接收由IC卡2發(fā)送的響應(yīng)數(shù)據(jù),并完成對數(shù)據(jù)的預(yù)定處理(如BPSK)。
調(diào)制電路23調(diào)制一個由振蕩器26提供的預(yù)定頻率(例如13.56MHz)的載波,該載波被來自SPU32的數(shù)據(jù)進行ASK(幅移鍵控法)調(diào)制,調(diào)制電路23通過天線27以電磁波形式向IC卡2輸出被調(diào)制的波。在這種情況下,調(diào)制電路23以小于1的調(diào)制度完成ASK調(diào)制。就是說,即使當(dāng)數(shù)據(jù)為低電平,被調(diào)制波的最大振幅也不會為零。
解調(diào)電路25解調(diào)通過天線27收到的被調(diào)制波(ASK調(diào)制波)并向SPU32輸出解調(diào)后的數(shù)據(jù)。
圖3顯示圖1所示IC卡2的典型結(jié)構(gòu)。在IC卡2中,IC51接收由R/W1發(fā)送來的被調(diào)制波。電容器52包括一個LC電路和天線53,并與具有預(yù)定頻率(載波頻率)的電磁波同步(諧振)。
在IC51中,RF接口單元61在其ASK解調(diào)單元81中檢測和解調(diào)經(jīng)由天線53收到的被調(diào)制波(ASK調(diào)制波),并向BPSK解調(diào)電路62及PLL(鎖相環(huán))單元63輸出被解調(diào)的數(shù)據(jù)。在電壓調(diào)整器82中,被ASK解調(diào)單元81檢測到的信號被穩(wěn)壓并作為直流電源提供給各種電路。
在RF接口單元61中,振蕩電路83產(chǎn)生一個頻率與數(shù)據(jù)時鐘頻率相同的信號并輸出到PLL單元63。
RF接口單元61的ASK解調(diào)單元84通過改變天線53的負載來調(diào)制經(jīng)天線53收到的被調(diào)制波,這是IC卡2的電源(例如,預(yù)定的開關(guān)元件根據(jù)數(shù)據(jù)切換到ON/OFF(通/斷),而預(yù)定的負載只當(dāng)開關(guān)元件為ON(通)時才平行連接于天線53),對應(yīng)于從計算單元64提供的數(shù)據(jù),而這個被調(diào)制分量通過天線53發(fā)送給R/W1(R/W1的天線27的終端電壓被改變)。
PLL單元63從ASK解調(diào)單元81所提供的數(shù)據(jù)中產(chǎn)生一個與數(shù)據(jù)同步的時鐘信號,并把該時鐘信號輸出到BPSK解調(diào)電路62和BPSK調(diào)制電路68。
當(dāng)被ASK解調(diào)單元81解調(diào)出的數(shù)據(jù)是被BPSK調(diào)制的數(shù)據(jù)時,BPSK解調(diào)電路62根據(jù)PLL單元63提供的時鐘信號完成數(shù)據(jù)的BPSK解調(diào),并把被解調(diào)的數(shù)據(jù)輸出到計算單元64。
當(dāng)由BPSK解調(diào)電路62提供的數(shù)據(jù)是被編碼數(shù)據(jù)時,計算單元64在編碼器/解碼器單元92中對數(shù)據(jù)解碼并在序列發(fā)生器91(數(shù)據(jù)寫單元)(塊號寫單元)(第一和第二塊號寫單元)中處理數(shù)據(jù)。再有,當(dāng)數(shù)據(jù)不是被編碼數(shù)據(jù)時,由BPSK解調(diào)電路62提供的數(shù)據(jù)被直接提供給序列發(fā)生器91而不受編碼器/解碼器單元92處理。
序列發(fā)生器91完成與作為命令向它提供的數(shù)據(jù)相對應(yīng)的處理。就是說,例如序列發(fā)生器91向EEPROM66(存儲器單元)寫入數(shù)據(jù)或從中讀出數(shù)據(jù)。
計算單元64的奇偶檢驗計算單元93從要存儲在EEPROM66中的數(shù)據(jù)或從已存儲在EEPROM66中的數(shù)據(jù)計算Reed-Solomon代碼作為奇偶檢驗位。
再有,在序列發(fā)生器91中完成預(yù)定處理后,計算單元64向BPSK調(diào)制電路68輸出對應(yīng)于該處理的響應(yīng)數(shù)據(jù)(用于向R/W1發(fā)送的數(shù)據(jù))。
BPSK調(diào)制電路68對來自計算單元64的數(shù)據(jù)進行BPSK調(diào)制,并把調(diào)制過的數(shù)據(jù)輸出到RF接口電路61的ASK調(diào)制單元84。
ROM65存儲要被序列發(fā)生器91執(zhí)行的處理程序或其他必要的數(shù)據(jù)。RAM67暫時存儲在處理過程中的數(shù)據(jù)之類。
EEPROM66是一個非易失存儲器,即使在IC卡2已結(jié)束與R/W1的通信并停止電源之后,它仍繼續(xù)存儲數(shù)據(jù)。
下面將解釋R/W1和IC卡2之間的數(shù)據(jù)發(fā)送與接收。
R/W1(圖2)從天線27發(fā)送預(yù)定的電磁波,監(jiān)測天線27的負載狀態(tài),并等待直至檢測到由于IC卡2的臨近造成的負載狀態(tài)的變化。
在這種情況下,R/W1可以通過發(fā)送由具有預(yù)定短模式(pattern)的數(shù)據(jù)進行ASK調(diào)制的電磁波和呼叫IC卡2來完成重復(fù)處理(定時詢問),直至在固定的時間間隔內(nèi)得到IC卡2的響應(yīng)為止。
在R/W1中,當(dāng)檢測到IC卡2的臨近時,R/W1的SPU32完成由要發(fā)送給IC卡2的數(shù)據(jù)進行的BPSK調(diào)制(這些數(shù)據(jù)包括與要由IC卡2完成的處理相對應(yīng)的命令和被寫入IC卡2的數(shù)據(jù)等),并以具有預(yù)定頻率(例如數(shù)據(jù)時鐘頻率的2倍)的矩形波作為載波,并向調(diào)制電路23輸出被調(diào)制波(BPSK調(diào)制信號)。
在BPSP調(diào)制中,能通過差分變換使數(shù)據(jù)對應(yīng)于被調(diào)制波的相位變化,在這種情況下,由于即使BPSK調(diào)制信號被反向,其BPSK調(diào)制的信號也能被解調(diào)為原始數(shù)據(jù),所以不需要考慮被調(diào)制波的極性。
調(diào)制電路23完成對預(yù)定載波的ASK調(diào)制,其調(diào)制度(=數(shù)據(jù)信號最大幅度/載波最大幅度)小于1(例如0.1),并通過天線27向IC卡2發(fā)送被調(diào)制波(ASK調(diào)制波)。
當(dāng)不進行傳輸時,調(diào)制電路23產(chǎn)生一個例如具有數(shù)字信號二電平(高電平和低電平)的高電平的被調(diào)制波。
在IC卡2(圖3)中,由R/W1的天線27發(fā)射的電磁波的一部分在天線53和電容52組成的LC電路中被轉(zhuǎn)換成電信號,該電信號(被調(diào)制波)被輸出到IC51的RF接口61。然后,RF接口61的ASK解調(diào)單元81通過對被調(diào)制波進行整流和平滑來完成包絡(luò)檢測,并把由此形成的信號提供給電壓調(diào)整器82,通過抑制信號中的直流分量來提取數(shù)據(jù)信號并把數(shù)據(jù)信號輸出到BPSK解調(diào)電路62和PLL單元63。
電壓調(diào)整器82對ASK解調(diào)單元81提供的信號進行穩(wěn)壓,產(chǎn)生直流電源提供給各種電路。
在這種情況下,天線53的終端電壓V0由例如下列方程表示V0=V10(1+kVs(t))cos(ωt)這里V10cos(t)代表載波,k指定調(diào)制度,而Vs(ωt)代表從SPU32輸出的數(shù)據(jù)。
再有,由ASK解調(diào)單元81整流的電壓V1的低電平值VLR由例如下式表示VLR=V10(1+k(-1))-Vf在此式中,Vf代表在ASK解調(diào)單元81中構(gòu)成完成整流和平滑的整流電路的二極管處的電壓降,其值一般為0.7伏左右。
當(dāng)電壓調(diào)整器82收到被ASK解調(diào)單元81整流和平滑的信號時,該信號被穩(wěn)壓并作為直流電源提供給各種電路,包括計算單元64。由于被解調(diào)波的解調(diào)度“k”小于1,故在解調(diào)后的電壓漲落(高電平和低電平之差)是小的。所以能在電壓調(diào)整器82中容易地產(chǎn)生直流電源。
例如,當(dāng)接收到調(diào)制度“k”為5%的被調(diào)制波時,如果V10為3伏或更高,則在整流后的低電平電壓VLR是2.15(=3(1-0.05)-0.7)伏或更高,所以電壓調(diào)整器82能提供足夠高的電壓作為各種電路的電源。再有,在這種情況下,在整流后的電壓V1的交流分量(數(shù)據(jù)分量)幅值2kV10(峰-峰值)是0.3(=2×0.05×3)伏或更高,因此ASK解調(diào)單元81能以足夠高的信噪比(S/N)解調(diào)數(shù)據(jù)。
這樣,利用調(diào)制度“k”小于1的ASK調(diào)制波能實現(xiàn)低差錯率(具有高信噪比)的通信,并向IC卡2提供足以做為電源的直流電壓。
一旦收到來自ASK解調(diào)電路81的數(shù)據(jù)信號(BPSK調(diào)制信號),BPSK解調(diào)電路62便根據(jù)PLL單元63提供的時鐘信號解調(diào)數(shù)據(jù)信號,并把被調(diào)制過的數(shù)據(jù)輸出到計算單元64。
如果由BPSK解調(diào)電路62提供的數(shù)據(jù)是加密的,則計算單元64在編碼器/解碼器單元92中對數(shù)據(jù)解碼,并把數(shù)據(jù)(命令)提供給序列發(fā)生器91。在這期間,即在把數(shù)據(jù)傳送給IC卡2之后,R/W1在發(fā)出值為1的數(shù)據(jù)后等待一段時間,直至收到對它的響應(yīng)。所以在這段時間里IC卡2收到有恒定最大幅度的被調(diào)制波。
在已結(jié)束處理之后,序列發(fā)生器91向BPSK調(diào)制電路68輸出關(guān)于處理結(jié)果之類的數(shù)據(jù)(用于向R/W1發(fā)送的數(shù)據(jù))。BPSK調(diào)制電路68以與R/W1的SPU32類似的方式對數(shù)據(jù)進行BPSK調(diào)制,然后該電路向RF接口單元61的ASK調(diào)制單元84輸出數(shù)據(jù)。
ASK調(diào)制單元84根據(jù)要傳送的數(shù)據(jù),通過利用開關(guān)元件使連到天線53兩端的負載發(fā)生變化,來對所收到的被調(diào)制波進行ASK調(diào)制(如前所述,當(dāng)IC卡2傳送數(shù)據(jù)時,由R/W1輸出的被調(diào)制波最大幅度是常數(shù))。于是R/W1的天線27的終端電壓被改變,于是數(shù)據(jù)被傳送到R/W1。
另一方面,當(dāng)從IC卡2收到數(shù)據(jù)時,R/W1的調(diào)制電路23繼續(xù)發(fā)送值為1(高電平)的數(shù)據(jù)。由IC卡2發(fā)送的數(shù)據(jù)被解調(diào)電路25從天線27的終端電壓的很小變化(例如幾十微伏)中檢測出來,該天線27是與IC卡2的天線53電磁耦合的。
在解調(diào)電路25中,被檢測到的信號(ASK調(diào)制波)被高增益放大器放大并被解調(diào),作為解調(diào)結(jié)果所得到的數(shù)字信號被輸出到SPU32。SPU32解調(diào)數(shù)據(jù)(BPSK調(diào)制信號)并把它輸出到DPU31。DPU31處理來自SPU32的數(shù)據(jù)并根據(jù)處理結(jié)果確定是否要終止通信。再有,當(dāng)確定要再次進行通信時,則如上述情況那樣,在R/W1和IC卡2之間完成通信。
另一方面,當(dāng)確定要終止通信時,R/W1終止與IC卡2的通信處理。
如前所述,R/W1利用調(diào)制度“k”小于1的ASK調(diào)制來向IC卡2發(fā)送數(shù)據(jù)。IC卡2接收該數(shù)據(jù),完成對應(yīng)于該數(shù)據(jù)的處理,并向R/W1回送對應(yīng)于處理結(jié)果的數(shù)據(jù)。
接下來解釋IC卡2(圖3)的序列發(fā)生器91向EEPROM66寫數(shù)據(jù)和從EEPROM66讀數(shù)據(jù)的處理過程。然而,作為準(zhǔn)備措施,首先要解釋根據(jù)本發(fā)明對付存儲器訛誤的一種方法。
首先,將解釋對付存儲器訛誤的方法的基本原理。
例如,假定對存儲器讀、寫信息是由預(yù)定的塊單元完成的,并考慮存于某塊B1的數(shù)據(jù)被更新的情況(存于塊B1中的數(shù)據(jù)被其他數(shù)據(jù)重寫)。
在這種情況下,當(dāng)新數(shù)據(jù)被寫入(覆蓋寫到已存儲的數(shù)據(jù)上)到塊B1本身時,如果在寫操作過程中向IC卡供電失效,則新數(shù)據(jù)不能被完全寫入,于是引起存儲器訛誤。
當(dāng)要被寫入塊B1的數(shù)據(jù)被實際寫入塊B1時發(fā)生存儲器訛誤,則系統(tǒng)不能對付它。就是說,例如,如果當(dāng)存儲在塊B1中的數(shù)據(jù)是電子貨幣的余額或類似物,進行了新的購物,在減去購物錢之后的剩余之和作為新數(shù)據(jù)按上述方法寫入,如果此時發(fā)生了存儲器訛誤,則IC卡不能被使用。
因此,要被寫入塊B1的新數(shù)據(jù)被寫入不同于塊B1的塊B2。這樣,如果當(dāng)把新數(shù)據(jù)寫入塊B2的過程中發(fā)生了存儲器訛誤,則新數(shù)據(jù)不能被完全寫入,于是它的有效性不能保證,但至少是已存儲在塊B1中的數(shù)據(jù)能免于被破壞。最后,在向塊B2寫入數(shù)據(jù)完成之后,存儲在塊B1中的數(shù)據(jù)被擦除。
當(dāng)提供甚至是更加新的數(shù)據(jù)時,這數(shù)據(jù)被寫入不同于塊B2的塊,例如塊B1。這樣,當(dāng)提供新數(shù)據(jù)時,新數(shù)據(jù)被寫入到與緊挨著的前一個場合被寫入數(shù)據(jù)的那個塊不同的塊中。所以,至少是在緊挨著的前一個場合所寫入的數(shù)據(jù)免于受寫入新數(shù)據(jù)的破壞,而且即使在最壞的情況,IC卡仍能被使用。
接下來參考圖4A和4B來解釋應(yīng)用上述原理的對存儲器讀、寫數(shù)據(jù)的方法。
在圖4A和4B中,一塊包括11個字節(jié),其中1字節(jié)(8個二進制位)為新舊程度信息,8字節(jié)為數(shù)據(jù),2字節(jié)為有效性信息,它們從前端起順序排列。然而,1塊中的位數(shù)以及分配給新舊程度信息、數(shù)據(jù)和有效性信息的位數(shù)都不特別限定于上述數(shù)量。
新舊程度信息指示該塊存儲內(nèi)容的新舊程度。例如,可以使用絕對日期和時刻,或一個順序數(shù)或類似量。當(dāng)使用絕對日期和時刻時,在這種情況下存儲數(shù)據(jù)的日期和時間便作為新舊程度信息被存儲,于是能從新舊程度信息中檢測出存儲數(shù)據(jù)的最新塊。再有,當(dāng)使用順序數(shù)時,在這種情況下,例如當(dāng)每個數(shù)據(jù)被寫入的場合便把一個增量數(shù)作為新舊程度信息存儲起來,具有最大值的塊便是寫入數(shù)據(jù)所用的最新的一塊。
這里,如果能識別至少兩個塊當(dāng)中哪一個是新的,這就足夠了。因此新舊程度信息至少應(yīng)能代表三個狀態(tài)。就是說,例如當(dāng)假定使用0、1、2三個值作為能代表三個狀態(tài)的新舊程度信息時,每次數(shù)據(jù)被寫入兩塊中的這一個或那一個,0、1、2、0…可以被寫入作為數(shù)據(jù)寫入塊的新舊程度信息。在這種情況下,當(dāng)兩塊的新舊程度信息為0和1時,有1的塊為較新的塊,當(dāng)它們?yōu)?和2時,有2的塊為較新的塊,而當(dāng)它們?yōu)?和0時,則有0的塊為較新的塊。當(dāng)使用0、1、2這三個值以這種方式作為新舊程度信息時,只需要二個二進制位。另一種作法是,例如可以使用三個標(biāo)志作為新舊程度信息,每個標(biāo)志有一個二進位,每當(dāng)數(shù)據(jù)被寫入塊時,和標(biāo)志聯(lián)系在一起的二進制位可以相繼地改變。
這里,在下文中將使用0、1、2三個值作為新舊程度信息。
其次,有效性信息指明眼下的新舊程度信息和數(shù)據(jù)的有效性(有效或無效),涉及該塊的新舊程度信息和數(shù)據(jù)的寫入是否是正常完成的,對此,可使用RS(Reed-Solomon)代碼或類似代碼。
有效性信息不限于RS代碼之類錯誤校正碼。就是說,如果有效性信息能表明有效性信息和數(shù)據(jù)是有效或無效(如前面描述的那樣),便也就足夠了,該有效性信息可以是例如在寫新舊程度信息和數(shù)據(jù)時計算出的奇偶檢驗碼,或者可以是例如1位的標(biāo)志,它是在正確寫入新舊程度信息和數(shù)據(jù)之后添加的。
在圖4A和4B中,向存儲器提供二個塊,它們是第一區(qū)和第二區(qū)。圖4A所顯示的情況中數(shù)據(jù)01H至08H(H代表一個16進制數(shù))已經(jīng)被寫入第一區(qū)塊,而在第二區(qū)塊中的數(shù)據(jù)已被抹去。
在這種情況下,假定例如提供了11H至18H作為新數(shù)據(jù),首先,通過參考有效性信息來確定第一和第二區(qū)這兩個塊的有效性。這里,假定只有第一區(qū)塊是有效的。
在寫新數(shù)據(jù)的情況中,如前所述,為了防止在緊挨著的前一個場合寫入的數(shù)據(jù)被破壞,新數(shù)據(jù)被寫到這樣的一塊,其中數(shù)據(jù)尚未被記錄。因此,在這種情況下,如圖4(B)所示,數(shù)據(jù)11H至18H被寫到第二區(qū)塊。在完成寫數(shù)據(jù)11H至18H之后,首先,向其寫數(shù)據(jù)的塊的新舊程度信息被更新。就是說,由于曾是最新塊的第一區(qū)塊的新舊程度信息被指定為01H,現(xiàn)在剛剛已經(jīng)寫入數(shù)據(jù)的第二區(qū)塊的新舊程度信息被指定為02H,它是對01H增量1得到的,然后完成寫有效性信息,它表示新舊程度信息02H的有效性。
最后,在對第二區(qū)塊的全部寫完成之后,記錄在第一區(qū)塊的全部數(shù)據(jù)被擦除,例如如圖4C所示。
接下來,參考圖6和圖7的流程圖更詳細地描述在具有圖4所示結(jié)構(gòu)的存儲器中的數(shù)據(jù)讀/寫處理過程。
首先,將參考圖6的流程圖來描述讀處理過程。
首先,在步驟S1,通過訪問第一和第二區(qū)的有效性信息,確定有效性。當(dāng)在步驟S1確定只有第一區(qū)溝塊有效時,該例程進入步驟S2并從第一區(qū)(它是有效塊)讀數(shù)據(jù),于是過程終止。再有,當(dāng)在步驟S1確定只有第二區(qū)的塊有效時,該例程進入步驟S3,并從第二區(qū)(它是有效塊)讀數(shù)據(jù),于是過程終止。當(dāng)確定第一和第二兩區(qū)的塊都無效時,IC卡2的硬件壽命到了盡頭,讀處理不能完成(進行錯誤處理)。
接下來,將參考圖7解釋寫處理過程。
在這種情況下,與圖6中步驟S1的情況類似,在步驟S11中確定有效性。當(dāng)?shù)谝缓偷诙蓞^(qū)都無效時,IC卡2發(fā)生了致命錯誤,例如由于壽命結(jié)束,于是進行錯誤處理。在步驟S11,當(dāng)確定第一區(qū)塊有效時,例程進入步驟S12,并確定是無效塊的第二區(qū)中的數(shù)據(jù)是否已被完全擦除。當(dāng)確定這數(shù)據(jù)尚未被完全擦除時,例程進入步驟S20,當(dāng)確定這數(shù)據(jù)已被完全擦除時,例程進入步驟S13。在步驟S20,在第二區(qū)(它是無效塊)中的數(shù)據(jù)被完全擦除,于是例程進入步驟S13。
在步驟S13,新數(shù)據(jù)連同新舊程度和有效性信息被寫入(更新)到其中數(shù)據(jù)被擦除的第二區(qū)塊,于是例程進入步驟S14。在步驟S14,第一區(qū)塊中的數(shù)據(jù)被擦除。
在步驟S11,當(dāng)確定第二區(qū)塊有效時,例程進入步驟S15,并確定是無效塊的第一區(qū)中的數(shù)據(jù)是否已被完全擦除。當(dāng)確定這數(shù)據(jù)尚未被完全擦除時,例程進入步驟S22,當(dāng)確定這數(shù)據(jù)已被完全擦除時,例程進入步驟S16。在步驟22,在第一區(qū)(它是無效塊)中的數(shù)據(jù)被完全擦除,于是例程進入步驟S16。
在步驟S16,新數(shù)據(jù)連同新舊程度和有效性信息被寫入(更新)到其中數(shù)據(jù)被擦除的第一區(qū)塊,于是例程進入步驟17。在步驟17,第二區(qū)塊中的數(shù)據(jù)被擦除。
如果例如在擦除舊數(shù)據(jù)之前或當(dāng)在步驟S14或S17中擦除舊數(shù)據(jù)期間供電失敗,則可能發(fā)生舊數(shù)據(jù)仍未被擦除或只有一部分數(shù)據(jù)被更新,從而如圖5A所示奇偶檢驗恰好是正確的,而發(fā)生了存儲器訛誤。在這種情況下,在步驟S11兩塊中的數(shù)據(jù)被確定是有效的,于是例程進入步驟S18。
在步驟S18,當(dāng)確定第二區(qū)比第一區(qū)新時,例程進入步驟S21,數(shù)據(jù)連同其新舊程度和有效性信息被再寫到新塊(此時新塊是第二區(qū)),例如如圖5B所示,然后例程進入步驟S22。接下來在步驟S22,以前述同樣的方式,在第一區(qū)(它不是最新塊)中的數(shù)據(jù)被擦除(例如如圖5C所示),例程進入步驟S16。
在步驟S16,新數(shù)據(jù)連同其新舊程度和有效性信息被寫到(更新)其中數(shù)據(jù)已被擦除的第一區(qū)塊,然后例程進入步驟S17。在步驟S17,第二區(qū)塊中的數(shù)據(jù)被擦除,例如如圖5E所示。
在步驟S18,當(dāng)確定第一區(qū)比第二區(qū)新時,例程進入步驟S19,數(shù)據(jù)連同其新舊程度和有效性信息被再寫到新塊(此時新塊是第二區(qū))。然后例程進入步驟S20。接下來在步驟S20,以前述同樣方式,在第二區(qū)(它不是最新塊)中的數(shù)據(jù)被擦除,例程進入步驟S13。在步驟S13,新數(shù)據(jù)連同其新舊程度和有效性信息被寫入(更新)到其中數(shù)據(jù)被擦除的第二區(qū)塊,然后例程進入步驟S14。在步驟S14,第一區(qū)塊中的數(shù)據(jù)被擦除。
每次讀數(shù)據(jù)時,通過允許有足夠的時間用于記錄,從而避免了數(shù)據(jù)被認為是正確或不正確這種不穩(wěn)定狀態(tài)。由于上述處理,擦除第一區(qū)或第二區(qū)意味著可得到足夠的時間用于在另一剩余區(qū)間中記錄。所以可以避免讀這一被記錄數(shù)據(jù)時出現(xiàn)不穩(wěn)定狀況。
從外部看,第一和第二區(qū)這兩個塊被識別為同樣的邏輯塊。具體地說,第一和第二區(qū)塊是物理上存在的兩個物理塊,而這些物理塊被分別指配給物理塊號,這些塊號是標(biāo)識物理塊的唯一號碼。第一和第二區(qū)的物理塊的物理塊號被做成對應(yīng)于用來識別邏輯塊的同一邏輯塊號,利用這一邏輯塊號由外部識別第一和第二區(qū)的物理塊。
在下述內(nèi)容中,物理塊號和邏輯塊號都假定由一字節(jié)表示。
在上述情況中,在完成對一物理塊的數(shù)據(jù)寫入之后,該物理塊的新舊程度信息和有效性信息都被更新,所以當(dāng)多個相關(guān)的數(shù)據(jù)被寫入多個物理塊時,可能會產(chǎn)生新舊數(shù)據(jù)的混合。從外部看來,如果在把多個數(shù)據(jù)寫入多個邏輯塊時發(fā)生了存儲器訛誤,雖然在存儲器訛誤發(fā)生之前寫入新數(shù)據(jù)的邏輯塊中存在新數(shù)據(jù),但從發(fā)生存儲器訛誤的邏輯塊到如果未曾發(fā)生存儲器訛誤則新數(shù)據(jù)會已經(jīng)寫入的邏輯塊這一范圍內(nèi)存在舊數(shù)據(jù)。
在多個相關(guān)的數(shù)據(jù)作為整體是有意義的因而數(shù)據(jù)整體是有用的這樣一種情況下,如前所述,當(dāng)新數(shù)據(jù)和舊數(shù)據(jù)混合存在于多個相關(guān)數(shù)據(jù)中時,便不能建立起兼容性。就是說,例如有這樣一種情況多個相關(guān)聯(lián)的數(shù)據(jù)是上火車的車站和時間,下火車的車站和時間,以及上下火車的兩車站之間的車費,那么,如前所述,當(dāng)被寫入的新數(shù)據(jù)是關(guān)于上車的車站,而關(guān)于上車的時間仍為舊數(shù)據(jù),這樣便不能建立起兼容性,因數(shù)據(jù)是無意義的。
因此,在把多個數(shù)據(jù)寫入多個邏輯塊的情況中如果在寫這多個數(shù)據(jù)完成之前發(fā)生存儲器訛誤,則從外部看來,必須在這個邏輯塊中存在多個相關(guān)聯(lián)數(shù)據(jù)中的所有舊數(shù)據(jù)。
因此,一個存儲器具有例如圖8所示的結(jié)構(gòu)。
就是說,存儲器包括存儲數(shù)據(jù)用的數(shù)據(jù)區(qū)物理塊,以及第一和第二區(qū)物理塊,用于存儲構(gòu)成數(shù)據(jù)區(qū)所用物理塊的物理塊號。
再有,在與圖4和圖5的情況相似的圖8中,一個物理塊由11個字節(jié)組成。
由數(shù)據(jù)區(qū)組成的各物理塊把數(shù)據(jù)存儲在這些11字節(jié)單元中,而在圖8中,數(shù)據(jù)區(qū)由8個物理塊組成,分別被指配給#00H到#07H作為物理塊號(#代表物理塊號)。
在這種情況中,當(dāng)從外部看時,4個邏輯塊是可見的,并有%00H至%03H被分配給這4個邏輯塊的每一個作為邏輯塊號。在圖8所示狀態(tài)中,邏輯塊號%00H至%03H被做成分別對應(yīng)于物理塊號#00H至#03H。
在第一和第二區(qū)的物理塊中,頭一個字節(jié)被分配給新舊程度信息,而最后兩個字節(jié)被分配給有效性信息,這是圖4所示共同特征。然而,在新舊程度信息和有效性信息之間的8個字節(jié)中安排是數(shù)據(jù)區(qū)中物理塊的物理塊號,即指向構(gòu)成數(shù)據(jù)區(qū)的各物理塊的指針。
在第一和第二區(qū)的新舊程度信息和有效性信息之間的8字節(jié)中,數(shù)據(jù)區(qū)的目標(biāo)塊的物理塊號被安排在頭4個字節(jié)中,而數(shù)據(jù)區(qū)的更新塊的物理塊號被安排在后4個字節(jié)。
在本文的上下文中,目標(biāo)塊是指信息應(yīng)被寫入的物理塊。就是說,例如,根據(jù)前述基本原理,當(dāng)存儲在塊B1中的數(shù)據(jù)被新數(shù)據(jù)重寫時,新數(shù)據(jù)被寫入塊B2,但在這種情況下,塊B1是新數(shù)據(jù)應(yīng)被寫入的塊,因此塊B1對應(yīng)于目標(biāo)塊。
更新塊是指當(dāng)信息被寫到一個物理塊而其存儲內(nèi)容被更新時被用來進行更新的物理塊。就是說,例如,根據(jù)基本原理,當(dāng)存儲在塊B1中的數(shù)據(jù)被新數(shù)據(jù)重寫時,塊B2被實際寫入新數(shù)據(jù),因此塊B2對應(yīng)于更新塊。
在第一和第二區(qū)的新舊程度信息和有效性信息之間的8個字節(jié)的頭4個字節(jié)中安排的4個物理塊號被做成對應(yīng)于邏輯塊號。就是說,例如,從其第一到第四字節(jié)的物理塊號分別對應(yīng)于邏輯塊號%00H至%03H。
再有,在圖8中,第一和第二區(qū)的物理塊號分別被指配給#FE或#FF。
在具有上述結(jié)構(gòu)的存儲器中,在圖8中,4個相關(guān)聯(lián)的數(shù)據(jù)被存儲在物理塊#00H(有物理塊號#00H的物理塊)至#03H中,而其物理塊號#00H至#03H被按此順序安排在第一區(qū)中新舊程度信息和有效性信息之間的8個字節(jié)的前4個字節(jié)中(下文中將恰當(dāng)?shù)胤Q作指向數(shù)據(jù)區(qū)中目標(biāo)塊的指針列)。
因此,例如觀察第一區(qū),物理塊號#00H至#03H被做成分別對應(yīng)于邏輯塊號%00H至%03H。
在這種情況中,觀察第一區(qū),被做成對應(yīng)于邏輯塊%00H(邏輯塊號為%00H的邏輯塊)至%03H的物理塊#00H至#03H中的任何一個都應(yīng)是可訪問塊,即目標(biāo)塊。
更新塊可以是在那時不構(gòu)成目標(biāo)塊的物理塊,或者可以說是空閑區(qū)。
相應(yīng)地,在圖8中,觀察第一區(qū),物理塊#04H至#07H可以是更新塊。更新塊的物理塊號#04H至#07H被安排在第一區(qū)的新舊程度信息和有效性信息之間的8個字節(jié)中的后4個字節(jié)(下文中將恰當(dāng)?shù)胤Q作指向數(shù)據(jù)區(qū)的更新塊的指針列)。
現(xiàn)在,例如假定第一和第二區(qū)中只有第一區(qū)是有效的,而從外部向?qū)?yīng)于邏輯塊號%00H和%02H的邏輯塊做出了寫兩個相關(guān)聯(lián)數(shù)據(jù)的請求。
在這種情況中,通過訪問指向有效第一區(qū)中的數(shù)據(jù)區(qū)的目標(biāo)塊的指針列,識別出了對應(yīng)于邏輯塊號%00H和%02H的物理塊號#00H和#02H,而物理塊#00H和#02H被識別出作為要寫入兩個相關(guān)聯(lián)數(shù)據(jù)的目標(biāo)塊。
再有,通過訪問指向這第一區(qū)的數(shù)據(jù)區(qū)的更新塊的指針列,識別出更新塊的物理塊號為#04H和#05H,它們的塊號等于目標(biāo)塊的塊號。例如,從指向數(shù)據(jù)區(qū)的更新塊的指針列的左側(cè)依次識別出更新塊的物理塊號。
本應(yīng)寫入作為目標(biāo)塊的物理塊#00H或#02H的兩個數(shù)據(jù)結(jié)果被分別寫入作為更新塊的物理塊#04H或#05H,如同圖9所示。
在這種情況中,圖9所示狀態(tài)是要寫入對應(yīng)于邏輯塊號%00H至%02H的物理塊號#00H和#02H的兩個數(shù)據(jù)分別假定為40AH至4AH和50AH至5AH,這些數(shù)據(jù)被分別寫入作為更新塊的物理塊#04H和#05H。
然后,被寫入新數(shù)據(jù)的作為更新塊的物理塊的物理塊號#04H和#05H被寫入到指向無效的第二區(qū)中數(shù)據(jù)區(qū)的目標(biāo)塊的指針列。就是說,指向第一區(qū)中數(shù)據(jù)區(qū)的目標(biāo)塊的指針列被復(fù)制到第二區(qū),并且如圖9所示,目標(biāo)塊的物理塊號#00H或#02H被分別重寫成數(shù)據(jù)被實際寫入的更新塊的物理塊號#04H或#05H。結(jié)果,觀察第二區(qū),物理塊號#04H和#05H被分別做成對應(yīng)于邏輯塊號%00H或%02H,而物理塊號#00H或#02H曾被做成對應(yīng)于這兩個邏輯塊號。
再有,曾要被寫入數(shù)據(jù)的物理塊#00H和#02H現(xiàn)在變成了更新塊,而物理塊號#00H和#02H被寫到指向無效的第二區(qū)中的數(shù)據(jù)區(qū)的更新塊的指針列中。就是說,指向第一區(qū)中的數(shù)據(jù)區(qū)的更新塊的指針列被復(fù)制到第二區(qū),而且如圖9所示,曾寫入數(shù)據(jù)的物理塊的物理塊號#04H或#05H分別被目標(biāo)塊的物理塊號#00H或#02H所重寫。結(jié)果,觀察第二區(qū),物理塊#00H和#02H變成更新塊。
在如前所述更新第二區(qū)之后,與圖4所示情況類似,第二區(qū)中的新舊程度信息和有效性信息依次被寫入(重寫),然后第一區(qū)中的數(shù)據(jù)被完全擦除。
所以在這種情況中,除非在第二區(qū)中完成了寫入指向數(shù)據(jù)區(qū)中目標(biāo)塊的指針列,否則不會被寫入指明其有效性的有效性信息。就是說,在上述情況中,除非完成了對兩個邏輯塊%00H和%02H二者寫入數(shù)據(jù),否則不會向第二區(qū)中寫入指明其有效性的有效性信息。
結(jié)果,如果在數(shù)據(jù)正在寫入兩個邏輯塊%00H和%02H的時間區(qū)間內(nèi)引起了存儲器訛誤,只有第一區(qū)仍然有效,那么通過訪問有效的第一區(qū),存儲在物理塊#00H和#02H(它們曾分別被做成對應(yīng)于邏輯塊%00H和%02H)中的數(shù)據(jù)被從邏輯塊%00H和%02H中讀出。
所以,當(dāng)作為多個數(shù)據(jù)存儲在邏輯塊%00H和%02H的兩個數(shù)據(jù)是彼此相關(guān)聯(lián)的數(shù)據(jù)時,即使當(dāng)發(fā)生存儲器訛誤時,也不僅能保持單個數(shù)據(jù)的兼容性,而且能保持兩個數(shù)據(jù)之間的兼容性。
接下來,將參考圖10和圖11的流程圖,進一步解釋在具有圖8和圖9所示結(jié)構(gòu)的存儲器中數(shù)據(jù)的讀、寫處理過程。
首先,將參考圖10的流程圖來描述讀處理。
在這種情況中,首先在步驟S31中完成與圖6中的步驟S1中類似的確定處理。
當(dāng)?shù)谝粎^(qū)為有效時,例程進入步驟S32,而當(dāng)?shù)诙^(qū)為有效時,例程進入步驟S34。
在步驟S32,通過訪問指向第一區(qū)中數(shù)據(jù)區(qū)的目標(biāo)塊的指針列,識別出了一個對應(yīng)于要讀數(shù)據(jù)的邏輯塊號(這個邏輯塊號例如是由外部提供的)的物理塊號,即作為指向一個目標(biāo)塊的指針的物理塊號,然后例程進入步驟S33。在步驟S33,從對應(yīng)于在步驟S33中識別出的物理塊號的物理塊中讀出數(shù)據(jù),于是處理過程終止。
另一方面,在步驟S34,通過訪問指向第二區(qū)中數(shù)據(jù)區(qū)的目標(biāo)塊的指針列,識別出一個對應(yīng)于要讀數(shù)據(jù)的邏輯塊號的物理塊號,即作為指向一個目標(biāo)塊的指針的物理塊號,然后例程進入步驟S35。在步驟S35,從對應(yīng)于在步驟S34中識別出的物理塊號的物理塊中讀出數(shù)據(jù),于是處理過程終止。
接下來,將參考圖11的流程圖來描述寫處理過程。
在這種情況中,在步驟S41,也與在圖7中的步驟S11類似,完成確定處理。
當(dāng)只有第一區(qū)為有效時,例程進入步驟S42,并在那里確定在無效的第二區(qū)中的數(shù)據(jù)是否已被完全擦除。當(dāng)確定數(shù)據(jù)未被完全擦除時,例程進入步驟S54,而當(dāng)確定數(shù)據(jù)已被完全擦除時,例程進入步驟S43。在步驟S54,作為無效塊的第二區(qū)中的數(shù)據(jù)被擦除,例程進入步驟S43。在步驟S43,通過訪問指向第一區(qū)中數(shù)據(jù)區(qū)的更新塊的指針列,識別出能作為更新塊的物理塊的物理塊號,然后例程進入步驟S44。在步驟S44,例如由外部提供的要寫數(shù)據(jù)被寫入對應(yīng)于所識別出的物理塊號的物理塊,即更新塊。
再有,當(dāng)由外部提供要寫入多個邏輯塊的數(shù)據(jù)時,在步驟S43,識別出更新塊的物理塊號,這些更新塊的個數(shù)等于多個邏輯塊的個數(shù)。在這種情況中,在步驟S44,來自外部的數(shù)據(jù)依次寫入分別對應(yīng)于所識別出的多個物理塊號的更新塊。
然后,例程進入步驟S45,指向第一區(qū)中數(shù)據(jù)區(qū)的目標(biāo)塊的指針列和指向第一區(qū)中數(shù)據(jù)區(qū)的更新塊的指針列都被更新,而且更新后的新舊程度信息和有效性信息被復(fù)制到第二區(qū)。
就是說,關(guān)于指向第一區(qū)中的數(shù)據(jù)區(qū)的目標(biāo)塊的指針列,被做成與那些要從外部寫入數(shù)據(jù)的邏輯塊的邏輯塊號相對應(yīng)的物理塊號(在圖8和圖9的例中為#00H和#02H)被更新為數(shù)據(jù)被實際寫入的更新塊的物理塊號(在圖8和圖9的例中為#04H和#05H)。再有,關(guān)于指向第一區(qū)中的數(shù)據(jù)區(qū)的更新塊的指針列,被寫入數(shù)據(jù)的物理塊(這些物理塊是更新塊)的物理塊號(在圖8和圖9的例中為#04H和#05H)被更新為被做成與被寫入數(shù)據(jù)的邏輯塊的邏輯塊號相對應(yīng)的物理塊號(在圖8和圖9的例中為#00H和#02H)。再有,新舊程度信息和有效性信息被更新,上述更新結(jié)果被寫入第二區(qū),然后例程進入步驟S46。在步驟S46,作為第一區(qū)的塊中的數(shù)據(jù)被擦除。
另一方面,當(dāng)在步驟S41中確定第二區(qū)有效時,在步驟S47至S51及步驟S56中完成與步驟S42至S46及步驟S54中完成的處理相同的處理,只是對第一和第二區(qū)完成的處理分別反過來變成對第二和第一區(qū)的處理。
當(dāng)發(fā)生存儲器訛誤時,如圖7的步驟S18那樣,在步驟S52確定已被定為第一區(qū)或第二區(qū)的塊的新舊程度。在步驟S52,當(dāng)確定第二區(qū)比第一區(qū)新時,例程進入步驟S55,指向第二區(qū)中數(shù)據(jù)區(qū)的目標(biāo)塊的指針列和指向第二區(qū)中數(shù)據(jù)區(qū)的更新塊的指針列都被更新,并在步驟S56完成擦除不是最新的第一區(qū)。其后,從步驟S48到S51,其處理過程與前面所述相同。
另一方面,如果在步驟52確定第一區(qū)比第二區(qū)新,則在步驟S53、步驟S54以及步驟S43至S46完成與步驟S55、S56及步驟S48至S51相同的處理,只是對第一和第二區(qū)的處理分別反過來變成對第二和第一區(qū)的處理。
參考圖8至圖11所描述的存儲器讀、寫系統(tǒng)使用指向數(shù)據(jù)區(qū)的一級指針,因此,在下文中恰當(dāng)?shù)胤Q作單指針系統(tǒng)。
在單指針系統(tǒng)的情況中,如圖8和圖9所示,在指向數(shù)據(jù)區(qū)的目標(biāo)塊的指針列中能存儲4個物理塊號,所以最多能對4塊保持其數(shù)據(jù)兼容性。
在這種情況中,如圖8和圖9所示,與指向數(shù)據(jù)區(qū)的目標(biāo)塊的指針列相似,在指向數(shù)據(jù)區(qū)的更新塊的指針列中能存儲4個物理塊號,因為也需要4個更新塊來寫4塊數(shù)據(jù),這是能保持兼容性的最大塊數(shù)。
當(dāng)把單指針系統(tǒng)應(yīng)用于圖8和圖9所示存儲器結(jié)構(gòu)時,如前所述,最多能對4塊保持數(shù)據(jù)兼容性,即難于對多于4塊保持兼容性。就是說,當(dāng)由第一和第二區(qū)的物理塊來存儲和管理構(gòu)成數(shù)據(jù)區(qū)的物理塊的物理塊號時,能保持數(shù)據(jù)兼容性的塊的個數(shù)受限于第一和第二區(qū)的物理塊中能存儲的塊號的個數(shù)。
因此,存儲器可以有例如如圖12所示的結(jié)構(gòu)。
就是說,在這種情況下,存儲器的組成是作為存儲數(shù)據(jù)的數(shù)據(jù)區(qū)的物理塊,作為存儲塊號(這些塊號是指向構(gòu)成數(shù)據(jù)區(qū)的物理塊的指針)的指針區(qū)的物理塊,以及作為存儲塊號(這些塊號是指向構(gòu)成指針區(qū)的物理塊的指針)的第一和第二區(qū)的物理塊。
在圖12中,為了方便,一個物理塊占8個字節(jié)。
構(gòu)成數(shù)據(jù)區(qū)的各物理塊把數(shù)據(jù)存于8個字節(jié)單元中,在圖12中的數(shù)據(jù)區(qū)包括24個物理塊,分別被指定物理塊號#00H至#17H。
在這種情況下,16個邏輯塊是從外部可見的,這16個邏輯塊分別被指配給邏輯塊號%00H至%0FH。然而,在這種情況中,為了解釋方便,假定存在的邏輯塊個數(shù)與構(gòu)成數(shù)據(jù)區(qū)的物理塊個數(shù)相同,除了從外部可見作為邏輯塊的物理塊以外,另8個物理塊分別被分配虛邏輯塊號%10至%17。在圖12所示狀態(tài)中,邏輯塊號%00H至%17H被做成分別對應(yīng)于物理塊號#00H至#17H。
構(gòu)成指針區(qū)(塊號區(qū))的物理塊把物理塊號(這些物理塊號是指向構(gòu)成數(shù)據(jù)區(qū)的物理塊的指針)存儲在8個字節(jié)單元,在圖12中指針區(qū)包括6個物理塊,分別被指定物理塊號為#18至#1D。在這種情況中,構(gòu)成指針區(qū)的物理塊把物理塊號存儲在8個字節(jié)單元中,而一個物理塊號由一個字節(jié)表示,故一個物理塊可存儲8個物理塊號。
再有,安排在指針區(qū)的每個物理塊中的8個物理塊號被做成與邏輯塊號相對應(yīng)。就是說,從第1字節(jié)到第8字節(jié)安排的物理塊號被做成所對應(yīng)的邏輯塊號是以某一邏輯塊號(如下文中提到的%00H、%08H或%10H)為基值從0至7偏移(移動)得到的。
在第一和第二區(qū),分別將其第一字節(jié)分配給新舊程度信息,而將其最后一個字節(jié)分配給有效性信息。再有,作為指向指針區(qū)物理塊的指針的物理塊號被安排在新舊程度信息和有效性信息之間的6個字節(jié)中。
就是說,在第一和第二區(qū)的新舊程度信息和有效性信息之間的這6個字節(jié)當(dāng)中,前3個字節(jié)中安排指針區(qū)目標(biāo)塊的物理塊號(此后把這3個字節(jié)恰當(dāng)?shù)胤Q作指向指針區(qū)目標(biāo)塊的指針列),而在后3個字節(jié)中安排指針區(qū)更新塊的物理塊號(此后把這3個字節(jié)恰當(dāng)?shù)胤Q作指向指針區(qū)更新塊的指針列)。
指向第一和第二區(qū)的指針區(qū)目標(biāo)塊的指針列中安排了3個物理塊號,與這些物理塊號相對應(yīng)的指針區(qū)物理塊所存儲的物理塊號被做成與邏輯塊號相對應(yīng)。就是說,與第1至第3字節(jié)中的物理塊號相對應(yīng)的指針區(qū)物理塊所存儲的物理塊號分別被做成對應(yīng)于邏輯塊號%00H至%07H、%08H至%0FH、或%10H至%17H。
具體地說,例如在圖12中,觀察第一區(qū),指向指針區(qū)目標(biāo)塊的指針列的第1字節(jié)中為物理塊號#18H,由它指出的指針區(qū)物理塊第1至第8字節(jié)中安排了物理塊號$00H至#07H,這些物理塊號被做成分別對應(yīng)于邏輯塊號%00H至%07H,這些邏輯塊號被做成對應(yīng)于指向第一區(qū)的指針區(qū)目標(biāo)塊的指針列的第1字節(jié)。就是說,在指向指針區(qū)目標(biāo)塊的指針列的第1字節(jié)中的物理塊號所指出的指針區(qū)物理塊第1至第8字節(jié)中安排的物理塊號被做成分別對應(yīng)于物理塊號%00H至%07H,它們是以邏輯塊號%00H為基值加上0至7偏移值。
類似地,在指向指針區(qū)目標(biāo)塊的指針列的第2字節(jié)中的物理塊號所指出的指針區(qū)物理塊第1至第8字節(jié)中安排的物理塊號被做成分別對應(yīng)于邏輯塊號%08H至%0FH,它們是以邏輯塊號%08H為基值加上0至7偏移值。
再有,在圖12中,第一和第二區(qū)的物理塊號分別被指定為#1E或#1F。
在具有前述結(jié)構(gòu)的存儲器中,例如觀察第一區(qū),指向指針區(qū)目標(biāo)塊的指針列中給出的物理塊號所對應(yīng)的物理塊包括能被訪問的指針區(qū)目標(biāo)塊。因此,在圖12中,物理塊#18H至#1AH構(gòu)成指針區(qū)的目標(biāo)塊。再有,在圖12中,在指針區(qū)中的其余物理塊#1BH至#1DH是用于更新指針區(qū)的更新塊,所以物理塊號#1BH至#1DH被描述為指向第一區(qū)中指針區(qū)的更新塊的指針列。
再有,在圖12中,與指針區(qū)目標(biāo)塊所描述的物理塊相對應(yīng)的邏輯塊%00H至%0FH所對應(yīng)的數(shù)據(jù)區(qū)物理塊是數(shù)據(jù)區(qū)的目標(biāo)塊。因此,在圖12中,物理塊#00H至#0FH構(gòu)成數(shù)據(jù)區(qū)的目標(biāo)塊,而數(shù)據(jù)區(qū)的其余物理塊#10H至#17H(對應(yīng)于邏輯塊%10H至%17H的物理塊)構(gòu)成更新數(shù)據(jù)區(qū)用的更新塊。
在這種情況中,如前所述,指針區(qū)更新塊的物理塊號是在指向指針區(qū)更新塊的指針列中給出的,所以通過訪問該指針列能識別出更新塊。
另一方面,由于數(shù)據(jù)區(qū)的更新塊是對應(yīng)于邏輯塊%10H至%17H的物理塊,通過訪問由指向指針區(qū)目標(biāo)塊的指針列中第3字節(jié)描述的物理塊號所對應(yīng)的指針區(qū)物理塊,便能從那里所描述的物理塊號識別出更新塊。
現(xiàn)在假定第一或第二區(qū)中只有一個區(qū)是有效的,例如第一區(qū)有效,而從外部發(fā)出了向?qū)?yīng)于邏輯塊號%00H和%02H的邏輯塊寫入兩個相關(guān)聯(lián)數(shù)據(jù)的請求。
在這種情況中,通過訪問指向第一區(qū)(它是有效的)中指針區(qū)目標(biāo)塊的指針列和訪問對應(yīng)于那里所描述的物理塊號的物理塊,便能識別出要寫入這兩個相關(guān)聯(lián)數(shù)據(jù)的目標(biāo)塊,它們是數(shù)據(jù)區(qū)的物理塊。就是說,首先如前所述,通過訪問指向第一區(qū)中指針區(qū)目標(biāo)塊的指針列的第一字節(jié),能識別出指針區(qū)的物理塊#18H,其中給出了對應(yīng)于邏輯塊%00H和%02H的數(shù)據(jù)區(qū)中物理塊的物理塊號。再有,通過訪問物理塊#18H的第1字節(jié)和第3字節(jié),能分別識別出對應(yīng)于邏輯塊%00H和%02H的數(shù)據(jù)區(qū)物理塊(目標(biāo)塊)的物理塊號#00H和#02H。
然后,識別出數(shù)據(jù)區(qū)的更新塊。就是說,如前所述,通過訪問指向第一區(qū)中指針區(qū)目標(biāo)塊的指針列的第3字節(jié),能識別出指針區(qū)的物理塊#1AH,其中給出了對應(yīng)于邏輯塊%10H至%17H的構(gòu)成數(shù)據(jù)區(qū)更新塊的物理塊的物理塊號。再有,通過訪問物理塊#1AH,能識別出構(gòu)成數(shù)據(jù)區(qū)更新塊的物理塊的物理塊號#10H至#17H。這里,通過訪問物理塊#1AH,例如從左側(cè)開始訪問,便能識別出那些物理塊,它們的塊數(shù)等于作為數(shù)據(jù)區(qū)更新塊被寫入數(shù)據(jù)的數(shù)據(jù)區(qū)的目標(biāo)塊的塊數(shù)。所以,對應(yīng)于物理塊號#10H和#11H的數(shù)據(jù)區(qū)物理塊被作為更新塊對待。
因此,如圖13所示,本應(yīng)被寫入物理塊#00H或#02H(它們是數(shù)據(jù)區(qū)的目標(biāo)塊)數(shù)據(jù)被分別寫入物理塊#10H或#11H(它們是數(shù)據(jù)區(qū)的更新塊)。
在這種情況中,圖13所示狀態(tài)是要寫入對應(yīng)于邏輯塊號%00H和%02H的物理塊號#00H和#02H(分別由8字節(jié)00H和8字節(jié)02H指定)之中的兩個數(shù)據(jù)被分別寫入物理塊#10H和#11H,它們是數(shù)據(jù)區(qū)的更新塊。
如前所述,在把要寫入對應(yīng)于物理塊號#00H和#02H(由對應(yīng)于第一區(qū)中指針區(qū)物理塊號#18H的物理塊存儲這些物理塊號)的兩個數(shù)據(jù)分別寫入數(shù)區(qū)的更新塊#10H和#11H之后,剛才作為數(shù)據(jù)區(qū)更新塊并向其中寫入數(shù)據(jù)的物理塊的物理塊號#10H和#11H被寫入指針區(qū)的更新塊,而本應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)區(qū)物理塊(目標(biāo)塊)的物理塊號#00H和#02H被寫入指針區(qū)的其他更新塊。
就是說,首先,通過訪問指向第一區(qū)中指針區(qū)更新塊的指針列,識別出指針區(qū)的更新塊。在這種情況中,〔指針區(qū)更新塊的情況〕,通過從左側(cè)開始相繼訪問指向指針區(qū)更新塊的指針列,能識別出那些物理塊,其個數(shù)等于指針區(qū)中那些目標(biāo)塊的個數(shù),如前所述當(dāng)把數(shù)據(jù)寫入數(shù)據(jù)區(qū)時這些塊必定被改變(被更新)。
因此,在上述情況中,通過從左側(cè)開始相繼訪問指向第一區(qū)中指針區(qū)更新塊的指針列,能識別出指針區(qū)的兩個更新塊#1BH和#1CH(它們的個數(shù)等于物理塊#1AH的兩個物理塊和個數(shù),物理塊#1AH中有要寫入數(shù)據(jù)的物理塊(數(shù)據(jù)區(qū)的目標(biāo)塊)的物理塊號#00H和#02H)、指針區(qū)的物理塊#18H以及實際寫入數(shù)據(jù)的物理塊的物理塊號#10H和#11H。
例如,在識別出的指針區(qū)更新塊#1BH或#1CH當(dāng)中的更新塊#1BH中復(fù)制了指針區(qū)的物理塊#18H(其中存儲數(shù)據(jù)區(qū)目標(biāo)塊的物理塊號#00H和#02H)中的存儲內(nèi)容,而這存儲內(nèi)容中的數(shù)據(jù)區(qū)目標(biāo)塊的物理塊號#00H和#02H又分別被重寫為實際寫入數(shù)據(jù)的數(shù)據(jù)區(qū)更新塊的物理塊號#10H和#11H(如圖13所示)。
再有,在識別出的指針區(qū)更新塊#1BH或#1CH當(dāng)中的另一個更新塊#1CH中復(fù)制了指針區(qū)物理塊#1AH(其中存儲實際寫入數(shù)據(jù)的物理塊的物理塊號#10H和#11H)的存儲內(nèi)容,而物理塊號#10H和#11H被分別重寫為本應(yīng)被寫入數(shù)據(jù)的物理塊(數(shù)據(jù)區(qū)目標(biāo)塊)的塊號#00H和#02H(如圖13所示)。
然后,剛才是指針區(qū)更新塊(那里的物理塊號被更新)的物理塊的物理塊號#1BH和#1CH被寫入指向第二區(qū)(它曾為無效區(qū))的指針區(qū)目標(biāo)塊的指針列。就是說,指向第一區(qū)中的指針區(qū)目標(biāo)塊的指針列被復(fù)制到第二區(qū),而第一區(qū)中對應(yīng)于邏輯地址%00H至%07H的第1字節(jié)被重寫為該指針區(qū)物理塊的物理塊號#1BH,其對應(yīng)于邏輯地址%10H至%17H的第3字節(jié)被重寫為該指針區(qū)的物理塊號#1CH(見圖13)。
結(jié)果,觀察第二區(qū),物理塊#1BH、#19H和#1CH變?yōu)橹羔槄^(qū)的目標(biāo)塊,而曾為數(shù)據(jù)區(qū)更新塊的物理塊#10H或#11H被做成分別對應(yīng)于邏輯塊號%00H或%02H,曾是數(shù)據(jù)區(qū)目標(biāo)塊的物理塊#00H或#02H曾被做成與這兩個邏輯塊號%00H或%02H對應(yīng)。再有,曾是目標(biāo)塊的物理塊#00H或#02H被分別做成對應(yīng)于邏輯塊%10H或%11H,并成為更新塊。
就是說,訪問指向第二區(qū)的指針區(qū)目標(biāo)塊的指針列的第1字節(jié)得知,其中給出對應(yīng)于邏輯塊%00H和%02H的數(shù)據(jù)區(qū)物理塊的物理塊號的那個指針區(qū)物理塊是物理塊#1BH,而訪問物理塊#1BH的第1字節(jié)和第3字節(jié)得知,對應(yīng)于邏輯塊%00H和%02H的數(shù)據(jù)區(qū)物理塊分別為物理塊#10H和#11H。訪問指向第二區(qū)的指針區(qū)目標(biāo)塊的指針列的第3字節(jié)得知,其中給出對應(yīng)于邏輯塊%10H和%11H的數(shù)據(jù)區(qū)物理塊的物理塊號的那個指針區(qū)物理塊是物理塊#1CH,而訪問物理塊#1CH的第1字節(jié)和第2字節(jié)得知,對應(yīng)于邏輯塊%10H和%11H的數(shù)據(jù)區(qū)物理塊(即數(shù)據(jù)區(qū)的更新塊)是物理塊#00H和#02H。
再有,指針區(qū)中物理塊的物理塊號#18H(該塊中曾存儲本應(yīng)寫入數(shù)據(jù)的物理塊的物理塊號#00H和#02H)及物理塊的物理塊號#1AH(該塊中曾存儲實際寫入數(shù)據(jù)的物理塊的物理塊號#10H和#11H)被寫入指向第二區(qū)(它曾是無效的)的指針更新塊的指針列中。就是說,指向第一區(qū)中指針區(qū)更新塊的指針列被復(fù)制到第二區(qū),而塊中所存內(nèi)容已被更新的指針區(qū)物理塊的物理塊號#1BH或#1CH被分別重寫為物理塊號#18H(其中曾存放的物理塊號對應(yīng)于邏輯地址%00H至%07H)或物理塊號#1AH(該塊中曾存放的物理塊號對應(yīng)于邏輯地址%10H至%17H)(如圖13所示)。
結(jié)果,觀察第二區(qū),物理塊#18H、#1AH和#1DH是指針區(qū)的更新塊。
在如上述更新第二區(qū)之后,與單指針系統(tǒng)的情況類似,在第二區(qū)中相繼寫入新舊程度信息和有效性信息。
所以在這種情況中,除非在數(shù)據(jù)區(qū)和指針區(qū)的寫操作都已完成,否則有效性信息不能被寫入。就是說,在上述情況中,除非已完成了向兩個邏輯塊%00H和%02H的寫數(shù)據(jù)操作,否則指明有效性的有效性信息不能被寫入第二區(qū)。
結(jié)果,如果在向兩個邏輯塊%00H和%02H寫數(shù)據(jù)期間發(fā)生了存儲器訛誤,只有第一區(qū)處于有效狀態(tài),通過訪問有效的第一區(qū),則從邏輯塊%00H和%02H中讀出存儲在物理塊#00H和#02H(它們分別被做成對應(yīng)于邏輯塊%00H和%02H)中的舊數(shù)據(jù)。
另一方面,當(dāng)向兩個邏輯塊%00H和%02H的寫數(shù)據(jù)操作已經(jīng)完成而且第二區(qū)中的有效性信息已被更新時,通過訪問有效的而且是最新的第二區(qū),則從邏輯塊%00H和%02H中讀出存儲在物理塊#10H和#11H(它們分別被做成對應(yīng)于邏輯塊%00H和%02H)中的新數(shù)據(jù)。
因此,當(dāng)多個數(shù)據(jù)是存儲在邏輯塊%00H和%02H中的兩個相關(guān)聯(lián)數(shù)據(jù)時,即使在引起存儲器訛誤的情況下,也能象在單指針系統(tǒng)的情況中那樣保持這兩個數(shù)據(jù)之間的兼容性。
再有,在指向第一和第二區(qū)的指針區(qū)目標(biāo)塊的指針列中能存儲3個物理塊的物理塊號,而在指針區(qū)的一個物理塊中能存儲8個物理塊的物理塊號,所以最多能控制數(shù)據(jù)區(qū)的24(=3×8)個物理塊。因此,最多有12塊(這是24塊的一半)能作為數(shù)據(jù)區(qū)的更新塊,而且能對這么多塊保持數(shù)據(jù)兼容性,這個數(shù)目大于單指針系統(tǒng)中的數(shù)目。
再有,在圖12和圖13中,24塊中的8塊是更新塊,因而最多能保持8塊的數(shù)據(jù)兼容性。
這里,上文中參考圖12和圖13所描述的存儲器讀、寫系統(tǒng)可以說是關(guān)于數(shù)據(jù)區(qū)的兩級指針,所以在下文中恰當(dāng)?shù)匕言撓到y(tǒng)稱作雙指針系統(tǒng)。
下面將參考圖14和圖15的流程圖更詳細地描述根據(jù)雙指針系統(tǒng)的讀、寫處理過程。
首先,將參考圖14的流程圖描述讀處理過程。
在這種情況中,首先在步驟S61,完成與圖6的步驟S1類似的確定處理。
當(dāng)只有第一區(qū)有效時,例程進入步驟S62,而當(dāng)只有第二區(qū)有效時,例程進入步驟S65。
在步驟S62,通過訪問指向第一區(qū)中指針區(qū)目標(biāo)塊的指針列,識別出指針區(qū)一個物理塊(其中存有對應(yīng)于要讀數(shù)據(jù)邏輯塊號的物理塊號)的物理塊號,然后例程進入步驟S63。就是說,例如當(dāng)存儲器有參考圖11所描述的結(jié)構(gòu)時,在邏輯塊號落入%00H至%07H或%08H至%0FH區(qū)間的情況中,存儲在指向指針區(qū)目標(biāo)塊的指針列的第一或第二字節(jié)中的物理塊號被分別識別出來。
在步驟S63,通過訪問對應(yīng)于步驟S62中識別出的物理塊號的那個指針區(qū)物理塊,對應(yīng)于要讀數(shù)據(jù)的邏輯塊號的物理塊號被識別出來,于是例程進入步驟S64。就是說,當(dāng)要讀數(shù)據(jù)的邏輯塊號是以某一參考值(在圖12的情況中是%00H或%08H)為基值加上0至7的偏移值所得到的值,從與步驟S63中識別出的物理塊號相對應(yīng)的物理塊的左側(cè)按這個偏移值移動得到一個位置,在這個位置中存儲的物理塊號被識別出來作為對應(yīng)于要讀數(shù)據(jù)邏輯塊號的物理塊號。
在步驟S64,從對應(yīng)于步驟S63中識別出的物理塊號的那個物理塊中讀出數(shù)據(jù),然后過程終止。
另一方面,在步驟S65,通過訪問指向第二區(qū)中指針區(qū)目標(biāo)塊的指針列,識別出指針區(qū)一個物理塊(其中存有對應(yīng)于要讀數(shù)據(jù)邏輯塊號的物理塊號)的物理塊號,然后例程依次進入步驟S66和S67,那里完成的處理分別對應(yīng)于步驟S63和S64,然后處理過程終止。
接下來將參考圖15的流程圖來描述寫處理過程。
在這種情況中,在步驟S71,也是完成與圖7的步驟S11類似的確定處理。
當(dāng)?shù)谝粎^(qū)是有效的,例程進入步驟S72,并確定第二區(qū)中的數(shù)據(jù)是否被擦除。當(dāng)確定它未被擦除時,例程進入步驟S88,而當(dāng)確定它已被擦除時,例程進入步驟S73。在步驟S88,第二區(qū)(它是無效塊)中的數(shù)據(jù)被擦除,例程進入步驟S73。在步驟S73,通過訪問指向第一區(qū)中指針區(qū)目標(biāo)塊的指針列,識別出指針區(qū)一個物理塊(其中曾存入物理塊號)的物理塊號,例程進入步驟S74。就是說,例如,當(dāng)存儲器有圖12所示結(jié)構(gòu)時,指向第一區(qū)中指針區(qū)目標(biāo)塊的指針列的第3字節(jié)中存儲的物理塊號#1AH被識別出來。
在步驟S74,通過訪問數(shù)據(jù)區(qū)更新塊的物理塊號(它存儲在由步驟S73識別出的物理塊號所對應(yīng)的物理塊中),數(shù)據(jù)區(qū)更新塊被識別出來,然后例程進入步驟S75,于是由外部或其他類似方式提供的要寫入數(shù)據(jù)被寫到數(shù)據(jù)區(qū)的更新塊。
再有,當(dāng)從外部提供的數(shù)據(jù)要寫入多個邏輯塊時,在步驟S74,通過相繼查尋(例如從左到右查詢)對應(yīng)于步驟S73中識別出的物理塊號的那些物理塊(在指針區(qū)中的物理塊),識別出了數(shù)據(jù)區(qū)中更新塊的物理塊號,這些更新塊的個數(shù)等于多個邏輯塊的個數(shù)。再有,在這種情況中,在步驟S75,從外部提供的數(shù)據(jù)被相繼寫入數(shù)據(jù)區(qū)的更新塊,這些更新塊分別對應(yīng)于這樣識別出的多個物理塊號。
然后,例程進入步驟S76,在其中存有物理塊號并曾被更動(這些物理塊號被做成對應(yīng)于要被寫入數(shù)據(jù)的邏輯塊的邏輯塊號)的物理塊被復(fù)制到指針區(qū)的更新塊。就是說,例如參考圖12和圖13來描述這一點,那么存儲物理塊號#00H和#02H(它們被做成與寫入數(shù)據(jù)用的邏輯塊的邏輯塊號%00H和%02H相對應(yīng))的物理塊#18H被更新,物理塊號#00H和#02H(它們已被變成#10H和#11H)被復(fù)制到指針區(qū)的更新塊#1BH。
再有,在步驟S76,存儲數(shù)據(jù)區(qū)更新塊指針(數(shù)據(jù)區(qū)更新塊的物理塊號)的物理塊(它們已被更新)被復(fù)制到指針區(qū)的更新塊。例如參考圖12和圖13來描述這一點,那么存儲數(shù)據(jù)區(qū)更新塊的物理塊號#10H至#17H的物理塊#1AH被更新,而且物理塊號#10H和#11H分別被改變成#00H和#02H,這被復(fù)制到指針區(qū)的更新塊#1C。
接下來,例程進入步驟S77,指向第一區(qū)中指針區(qū)目標(biāo)塊的指針列和指向第一區(qū)中指針區(qū)更新塊的指針列被更新,而且被更新的新舊程度信息和有效性信息被復(fù)制到第二區(qū)。
這是以圖12和圖13的情況為例,關(guān)于指向第一區(qū)中指針區(qū)目標(biāo)塊的指針列,在第1字節(jié)中存儲的含有指向數(shù)據(jù)區(qū)物理塊#00H和#02H(它們被做成對應(yīng)于寫外部提供數(shù)據(jù)的邏輯塊)的指針的物理塊號#18H被更新為含有指向數(shù)據(jù)區(qū)物理塊#10H和#11H(這是數(shù)據(jù)曾實際寫入?yún)^(qū))的指針的物理塊號#1BH,而含有指向數(shù)據(jù)區(qū)物理塊#10H和#11H(這是數(shù)據(jù)曾實際寫入?yún)^(qū))的指針的物理塊號#1AH被更新為含有指向數(shù)據(jù)區(qū)的物理塊#00H和#02H(它們被做成對應(yīng)于數(shù)據(jù)寫入的邏輯塊)的指針的物理塊號#1CH。
關(guān)于指向第一區(qū)的指針區(qū)更新塊的指針列,作為更新塊的指針區(qū)物理塊(其中的物理塊號曾被更新)的物理塊號#1BH和#1CH分別被更新為已成為指針區(qū)更新塊的物理塊的物理塊號#18H和#1AH。
再有,在第一區(qū)中的新舊程度信息和有效性信息被更新,前述更新結(jié)果被寫入第二區(qū),然后例程進入步驟S78。在步驟S78,在第一區(qū)中的所有數(shù)據(jù)被擦除。
另一方面,在步驟S71,當(dāng)確定第二區(qū)是有效區(qū)時,在步驟S79至S85以及S90完成與步驟S72至S78以及步驟S88相同的處理,只是對第一或第二區(qū)完成的處理反過來分別變成對第二或第一區(qū)的處理。
當(dāng)發(fā)生存儲器訛誤時,在步驟S71,確定第一和第二區(qū)的有效性。在這種情況中,例程進入步驟S86,并確定第一和第二區(qū)的塊的新舊程度。在步驟S86,當(dāng)確定第二比第一區(qū)新時,例程進入步驟S89,指向第一區(qū)中指針區(qū)的指針被更新到第二區(qū)的一個新塊,被更新的新舊程度和有效性信息被重寫,然后例程進入步驟S90。接下來,在步驟S90和S80至S85,完成如前一情況中相同的處理。
當(dāng)在步驟S86中確定第一區(qū)比第二區(qū)新時,在步驟S87以及步驟S88、S73和S78中完成與步驟S89、S90、S80及S85相同的處理,只是對第一或第二區(qū)完成的處理反過來分別變成對第二或第一區(qū)的處理。
在雙指針系統(tǒng)的情況中,如同在單指針系統(tǒng)的情況中一樣,能保持兼容性的物理塊的個數(shù)是受限制的,然而,如果與單指針系統(tǒng)擴展成雙指針系統(tǒng)的情況相類似地擴展雙指針系統(tǒng),而對數(shù)據(jù)區(qū)的指針含有3級、4級、…,則能夠保持兼容性的物理塊的個數(shù)能進一步增加。因此,通過考慮一塊的長度和恰當(dāng)?shù)卦O(shè)置數(shù)據(jù)區(qū)指針的級數(shù),可以把能保持兼容性的物理塊個數(shù)的上限安排成一個所希望的值。
實際上,如圖3所示由IC卡2的序列發(fā)生器91對EEPROM 66MUCK進行數(shù)據(jù)讀、寫是根據(jù)上述雙指針系統(tǒng)來實現(xiàn)的,在這種情況中對EEPROM63的存儲器進行分配的舉例示于圖16。
在圖16中,對EEPROM 66提供了256個物理塊。每個物理塊含有總數(shù)40個字節(jié),其中32個數(shù)據(jù)單元字節(jié)(D00至D1f)和8個奇偶檢驗單元字節(jié)(P0至P5)。
再有,在圖16中,物理塊號#00H至#FFH被分別分配給這256個物理塊,其中物理塊#00H至#EFH構(gòu)成數(shù)據(jù)區(qū),物理塊#F0H至#FDH構(gòu)成指針區(qū),而物理塊#FEH和#FFH構(gòu)成分別構(gòu)成第一和第二區(qū)。
再有,關(guān)于數(shù)據(jù)區(qū),在240個物理塊#00H至#FEH中,224個物理塊是目標(biāo)塊(下文中也稱作數(shù)據(jù)塊),而其余的16個物理塊是更新塊。因此,最多能保持16塊的數(shù)據(jù)兼容性。
再有,在圖16所示狀態(tài)中,物理塊#00H至#DFH是數(shù)據(jù)塊,而物理塊#E0H至#FEH是更新塊。
關(guān)于指針區(qū),14個物理塊#F0H至#FDH中7個是目標(biāo)塊(下文中稱作指針塊),這14個物理塊中另7個是更新塊。再有,在圖16所示狀態(tài)中,物理塊#F0H至#F6H是指針塊,物理塊#F7H至#FDH是更新塊。
再有,在圖16中,第一和第二區(qū)被圖示為有效性確定塊。
圖17顯示出有效性確定塊(第一和第二區(qū))的結(jié)構(gòu)舉例。如圖17A所示,新舊程度信息(確定新舊程度信息)被安排在有效性塊的數(shù)據(jù)單元的第1字節(jié)(D00)中,指針區(qū)目標(biāo)塊(指針塊)的物理塊號被安排在第2至第8字節(jié)(D01至D07)。
在數(shù)據(jù)區(qū)中的更新塊的物理塊號被安排在有效性確定塊的數(shù)據(jù)區(qū)的第9至第24字節(jié)(D08至D17)。就是說在上述情況中,在第一和第二區(qū)中,存儲的是存儲數(shù)據(jù)區(qū)更新塊的物理塊號的指針區(qū)物理塊的物理塊號(指向數(shù)據(jù)區(qū)更新塊的指針的指針),然而在這一情況中,數(shù)據(jù)區(qū)更新塊的物理塊號(指向數(shù)據(jù)區(qū)更新塊的指針)被直接安排在有效性確定塊。
因此,在這一情況中,在指針區(qū)中沒有物理塊用于存儲數(shù)據(jù)區(qū)更新塊的物理塊號。
指針區(qū)更新塊的物理塊號被安排在有效性確定塊的數(shù)據(jù)單元的第25至第31字節(jié)(D18至D1e),而其第32字節(jié)(D1f)被放在一邊作為保留字節(jié)。
再有,對應(yīng)于上述有效性確定確定信息的RS代碼或類似代碼被安排在有效性確定塊的奇偶檢驗單元中。
這里,當(dāng)EEPROM66有圖16所示結(jié)構(gòu)時,圖17顯示出此時有效性確定塊中數(shù)據(jù)部分的典型初始值。
接下來,圖18顯示組成指針區(qū)的物理塊(指針塊和更新塊)的結(jié)構(gòu)舉例。
如圖18A所示,數(shù)據(jù)區(qū)物理塊的物理塊號被安排在數(shù)據(jù)部分中的32個單元(D00-D1f)中。構(gòu)成指針區(qū)的物理塊的奇偶檢驗部分沒有被用作為前述有效性信息,而是作為通常的奇偶檢驗值,因此,最好向奇偶檢驗部分中安排的信息提供糾錯能力。這是因為在雙指針系統(tǒng)中,“在組成指針區(qū)的物理塊的數(shù)據(jù)部分中安排的信息中是否有錯”這一判定的有效性最終不是由安排在奇偶檢驗部分中的信息來確定,而是根據(jù)作為有效性確定塊中的有效性信息的奇偶檢驗部分來判定。
這里,當(dāng)EEPROM66有圖16所示結(jié)構(gòu)時,圖18B顯示出此時構(gòu)成指針區(qū)的物理塊的數(shù)據(jù)部分的典型初始值。
再有,構(gòu)成數(shù)據(jù)區(qū)的物理塊(數(shù)據(jù)區(qū)的數(shù)據(jù)塊和更新塊)與構(gòu)成指針區(qū)的物理塊類似,只是其中安排的不是物理塊指針,而是供讀、寫的數(shù)據(jù),所以略去對它們的描述。
如前所述,在向數(shù)據(jù)區(qū)寫入之后和向指針區(qū)(那里存儲構(gòu)成數(shù)據(jù)區(qū)的物理塊的指針)寫入之后,有效性確定性(第一或第二區(qū),用于存儲指向構(gòu)成指針區(qū)的物理塊的指針)的存儲內(nèi)容被更新,所以能解決在一個或多個物理塊中的物理存儲器訛誤問題。就是說,不僅能解決組成數(shù)據(jù)區(qū)的一個物理塊的存儲器訛誤問題,而且還能解決多個物理塊的存儲器訛誤問題。
再有,如前所述,有效性確定塊和存儲在指針區(qū)的信息作為一個轉(zhuǎn)換表用于把數(shù)據(jù)區(qū)中的邏輯塊號轉(zhuǎn)換成物理塊號,因此,當(dāng)關(guān)于有效性確定塊或指針區(qū)的寫例程進行過程中發(fā)生故障時,雖然引起了邏輯存儲器訛誤,但這種邏輯存儲器訛誤能被解決。
結(jié)果,即使在寫多個相關(guān)聯(lián)數(shù)據(jù)時發(fā)生故障而且存儲器訛誤,該存儲器訛誤能被有效地解決,保持多個數(shù)據(jù)的兼容性。
如前所述,雖然所給出的描述是針對把本發(fā)明應(yīng)用于非接觸卡系統(tǒng)的情況,但本發(fā)明可應(yīng)用于存儲器之類或任何數(shù)據(jù)寫入裝置的存儲單元。然而,本發(fā)明對這樣的系統(tǒng)特別有用,即在這種系統(tǒng)中進行的數(shù)據(jù)發(fā)送與接收是在所謂不穩(wěn)定狀態(tài)中進行的,例如在上述非接觸卡系統(tǒng)或者甚至是接觸型系統(tǒng),其中用戶能自由地插入或拔出一塊IC卡或類似裝置。
再有,根據(jù)本發(fā)明的這一形式,雖然指針區(qū)的更新塊的物理塊號或數(shù)據(jù)區(qū)的更新塊的物理塊號被存儲在作為所謂指針區(qū)或數(shù)據(jù)區(qū)的空閑區(qū)的有效性確定塊或指針區(qū),但并不一定需要存儲更新塊的物理塊號。然而,當(dāng)更新區(qū)的物理塊號未被存儲時,在寫數(shù)據(jù)時,必須通過查尋EEPROM66的存儲內(nèi)容來檢測出構(gòu)成更新塊的物理塊,所以最好是存儲更新塊的物理塊號,以達到高速處理。
再有,根據(jù)本發(fā)明的這一形式,雖然存儲有效性確定塊的區(qū)、指針區(qū)以及數(shù)據(jù)區(qū)被分配在EEPORM66上的預(yù)定位置,但分配這些區(qū)所用的位置并不特別限定。
再有,這些區(qū)不需要是EEPROM66上的連續(xù)范圍內(nèi)的區(qū)。就是說,分別存儲有效性確定塊、指針區(qū)或數(shù)據(jù)區(qū)的各區(qū)能被分配在EEPROM66上的非連續(xù)位置。
再有,根據(jù)本發(fā)明的這一形式,在EEPROM66中只保留立即前一個場合的存儲內(nèi)容,否則,可保留立即前一個場合和在它之前的場合的存儲內(nèi)容。然而,在這種情況中需要更大的存儲容量。
將會理解,在本發(fā)明的范圍和精神內(nèi)能預(yù)期各種修改和應(yīng)用,所以,本發(fā)明不限于這里所描述的發(fā)明形式。
權(quán)利要求
1.一種利用將信息存儲在塊單元中的存儲器的數(shù)據(jù)處理方法,其中所述存儲器包括用于將數(shù)據(jù)存儲在多個塊單元中的數(shù)據(jù)區(qū)以及用于存儲多個塊號的第一和第二區(qū),所述多個塊號被指配給所述數(shù)據(jù)區(qū)中的各塊,所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示被原始寫入數(shù)據(jù)的塊,所述第二塊號用于指示數(shù)據(jù)被更新的塊,所述方法包括以下步驟將更新后的數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一個或多個塊中,所述塊對應(yīng)于所述第一和第二區(qū)的其中一個區(qū)中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)的所述其中一個區(qū),在所述第一和第二區(qū)中的另一個區(qū)的第一塊號中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的塊的塊號,并且在所述第一和第二區(qū)中的所述另一個區(qū)的第二塊號中,存儲數(shù)據(jù)被原始寫入的塊的塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中擦除所述第一和第二塊號以及所述新舊程度信息。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其中當(dāng)所述新舊程度信息表明所述第一和第二區(qū)二者都有效時,更新根據(jù)所述新舊程度信息被認為最新的一個區(qū)中的數(shù)據(jù),擦除被認為不是最新的另一個區(qū)中的數(shù)據(jù),并且將數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一塊,所述塊對應(yīng)于存儲在其中一個所述區(qū)中的所述塊號。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其中被寫入數(shù)據(jù)的塊的塊號被存儲在所述另一個區(qū)中,更新所述另一個區(qū)中的新舊信息和有效性信息,并且擦除在所述其中一個區(qū)中的數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其中當(dāng)基于所述有效性信息選擇所述第一和第二區(qū)的任何一個,并且在所述另一個區(qū)中的數(shù)據(jù)還未被擦除時,擦除在所述另一個區(qū)中的數(shù)據(jù),并將數(shù)據(jù)寫入與所述其中一個區(qū)中存儲的所述塊號相對應(yīng)的塊中。
5.一種利用將信息存儲在塊單元中的存儲器的數(shù)據(jù)處理設(shè)備,其中所述存儲器包括用于將數(shù)據(jù)存儲在多個塊單元中的數(shù)據(jù)區(qū)以及用于存儲多個塊號的第一和第二區(qū),所述多個塊號被指配給所述數(shù)據(jù)區(qū)中的各塊,所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示被原始寫入數(shù)據(jù)的塊,所述第二塊號用于指示數(shù)據(jù)被更新的塊,所述數(shù)據(jù)設(shè)備被設(shè)置成將更新后的數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一個或多個塊中,所述塊對應(yīng)于所述第一和第二區(qū)的其中一個區(qū)中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)的所述其中一個區(qū),在所述第一和第二區(qū)中的另一個區(qū)的第一塊號中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的塊的塊號,并且在所述第一和第二區(qū)中的所述另一個區(qū)的第二塊號中,存儲數(shù)據(jù)被原始寫入的塊的塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中擦除所述第一和第二塊號以及所述新舊程度信息。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中當(dāng)所述新舊程度信息表明所述第一和第二區(qū)二者都有效時,更新根據(jù)所述新舊程度信息被認為最新的一個區(qū)中的數(shù)據(jù),擦除被認為不是最新的另一個區(qū)中的數(shù)據(jù),并且將數(shù)據(jù)寫入所述數(shù)據(jù)區(qū)的一塊,所述塊對應(yīng)于存儲在其中一個所述區(qū)中的所述塊號。
7.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中被寫入數(shù)據(jù)的塊的塊號被存儲在所述另一個區(qū)中,更新所述另一個區(qū)中的新舊信息和有效性信息,并且擦除在所述其中一個區(qū)中的數(shù)據(jù)。
8.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中當(dāng)基于所述有效性信息選擇所述第一和第二區(qū)的任何一個,并且在所述另一個區(qū)中的數(shù)據(jù)還未被擦除時,擦除在所述另一個區(qū)中的數(shù)據(jù),并將數(shù)據(jù)寫入與所述其中一個區(qū)中存儲的所述塊號相對應(yīng)的塊中。
9.一種利用將信息存入塊單元的存儲器的數(shù)據(jù)處理方法,其中所述存儲器包括用于在多個塊單元中存儲數(shù)據(jù)的數(shù)據(jù)區(qū),用于存儲被指配給所述數(shù)據(jù)區(qū)中的各塊以及這些塊單元的更新塊的塊號的指針區(qū),以及用于存儲被指配給所述指針區(qū)中的塊的塊號的第一和第二區(qū),所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示與被原始寫入數(shù)據(jù)的塊相對應(yīng)的所述指針區(qū)的塊,所述第二塊號用于指示與數(shù)據(jù)被更新的塊相對應(yīng)的所述指針區(qū)的塊,所述方法包括以下步驟將更新后的數(shù)據(jù)寫入到與存儲在所述指針區(qū)中的塊號相對應(yīng)的數(shù)據(jù)區(qū)的一個或多個塊中,其中所述存儲在指針區(qū)中的塊號對應(yīng)于所述第一和第二區(qū)的其中一個中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)中的所述其中一個區(qū);在對應(yīng)于所述指針區(qū)的第一塊號的塊中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號,在所述第一和第二區(qū)中的另一個區(qū)中,存儲在上述存儲步驟中已經(jīng)存儲所述數(shù)據(jù)區(qū)的塊號的所述指針區(qū)的第一塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中,擦除所述第一和第二塊號以及所述新舊程度信息。
10.根據(jù)權(quán)利要求9中所述的數(shù)據(jù)處理方法,其中當(dāng)所述新舊程度信息表明所述第一和第二區(qū)二者都有效時,更新根據(jù)所述新舊程度信息被認為最新的一個區(qū)中的數(shù)據(jù),擦除被認為不是最新的在另一個區(qū)中的數(shù)據(jù),并且將數(shù)據(jù)寫入與指針區(qū)中的指針相關(guān)的所述數(shù)據(jù)區(qū)的塊中,所述指針區(qū)通過存儲在所述其中一個區(qū)中的塊號指針來識別。
11.根據(jù)權(quán)利要求9中所述的數(shù)據(jù)處理方法,其中被寫入數(shù)據(jù)的塊的塊號與存儲在由所述另一個區(qū)所識別的所述指針區(qū)中的指針相關(guān),更新在所述另一個區(qū)中的新舊程度信息和有效性信息,并且擦除所述其中一個區(qū)中的數(shù)據(jù)。
12.根據(jù)權(quán)利要求9中所述的數(shù)據(jù)處理方法,其中當(dāng)基于所述有效性信息選擇所述第一和第二區(qū)的任何一個區(qū),并且在所述另一個區(qū)中的數(shù)據(jù)還未被擦除時,擦除在所述另一個區(qū)中的數(shù)據(jù),并且將數(shù)據(jù)寫入對應(yīng)于存儲在所述其中一個區(qū)中的所述塊號的塊中。
13.一種利用將信息存入塊單元的存儲器的數(shù)據(jù)處理設(shè)備,其中所述存儲器包括用于在多個塊單元中存儲數(shù)據(jù)的數(shù)據(jù)區(qū),用于存儲被指配給所述數(shù)據(jù)區(qū)中的各塊以及這些塊單元的更新塊的塊號的指針區(qū),以及用于存儲被指配給所述指針區(qū)中的塊的塊號的第一和第二區(qū),所述第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,其中所述第一塊號用于指示與被原始寫入數(shù)據(jù)的塊相對應(yīng)的所述指針區(qū)的塊,所述第二塊號用于指示與數(shù)據(jù)被更新的塊相對應(yīng)的所述指針區(qū)的塊,所述數(shù)據(jù)處理設(shè)備被設(shè)置成將更新后的數(shù)據(jù)寫入到與存儲在所述指針區(qū)中的塊號相對應(yīng)的數(shù)據(jù)區(qū)的一個或多個塊中,其中所述存儲在所述指針區(qū)中的塊號對應(yīng)于所述第一和第二區(qū)的其中一個中的第二塊號,并且基于所述新舊程度信息選擇所述第一和第二區(qū)中的所述其中一個區(qū);在對應(yīng)于所述指針區(qū)的第一塊號的塊中,存儲在所述寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的所述數(shù)據(jù)區(qū)的塊的塊號,在所述第一和第二區(qū)中的另一個區(qū)中,存儲在上述存儲步驟中已經(jīng)存儲所述數(shù)據(jù)區(qū)的塊號的所述指針區(qū)的第一塊號;以及在所述第一和第二區(qū)的所述其中一個區(qū)中,擦除所述第一和第二塊號以及所述新舊程度信息。
14.根據(jù)權(quán)利要求13所述的數(shù)據(jù)處理設(shè)備,其中當(dāng)所述新舊程度信息表明所述第一和第二區(qū)二者都有效時,更新根據(jù)所述新舊程度信息被認為最新的一個區(qū)中的數(shù)據(jù),擦除被認為不是最新的在另一個區(qū)中的數(shù)據(jù),并且將數(shù)據(jù)寫入與指針區(qū)中的指針相關(guān)的所述數(shù)據(jù)區(qū)的塊中,所述指針區(qū)通過存儲在所述其中一個區(qū)中的塊號指針來識別。
15.根據(jù)權(quán)利要求13所述的數(shù)據(jù)處理設(shè)備,其中被寫入數(shù)據(jù)的塊的塊號與存儲在由所述另一個區(qū)所識別的所述指針區(qū)中的指針相關(guān),更新在所述另一個區(qū)中的新舊程度信息和有效性信息,并且擦除所述其中一個區(qū)中的數(shù)據(jù)。
16.根據(jù)權(quán)利要求13所述的數(shù)據(jù)處理設(shè)備,其中當(dāng)基于所述有效性信息選擇所述第一和第二區(qū)的任何一個區(qū),并且在所述另一個區(qū)中的數(shù)據(jù)還未被擦除時,擦除在所述另一個區(qū)中的數(shù)據(jù),并且將數(shù)據(jù)寫入對應(yīng)于存儲在所述其中一個區(qū)中的所述塊號的塊中。
全文摘要
本發(fā)明公開了一種利用將信息存儲在塊單元中的存儲器的數(shù)據(jù)處理方法,存儲器包括用于將數(shù)據(jù)存儲在多個塊單元中的數(shù)據(jù)區(qū)以及用于存儲多個塊號的第一和第二區(qū),多個塊號被指配給數(shù)據(jù)區(qū)中的各塊,第一和第二區(qū)中的每一個都存儲第一塊號、第二塊號以及存儲內(nèi)容的新舊程度信息,包括步驟將更新后的數(shù)據(jù)寫入數(shù)據(jù)區(qū)的一個或多個塊中,塊對應(yīng)于第一和第二區(qū)的其中一個區(qū)中的第二塊號,基于新舊程度信息選擇第一和第二區(qū)的其中一個區(qū),在第一和第二區(qū)中的另一個區(qū)的第一塊號中,存儲在寫入步驟中已經(jīng)寫入更新數(shù)據(jù)的塊的塊號,在第一和第二區(qū)中的另一個區(qū)的第二塊號中,存儲數(shù)據(jù)被原始寫入的塊的塊號;在第一和第二區(qū)的其中一個區(qū)中擦除第一和第二塊號以及新舊程度信息。
文檔編號G06K19/067GK1773559SQ20051012705
公開日2006年5月17日 申請日期1998年7月9日 優(yōu)先權(quán)日1997年7月9日
發(fā)明者日下部進, 高田昌幸 申請人:索尼株式會社