(57)【特許請求の範囲】
【請求項１】
あるデータが格納される連続した１つのデータ格納領域を順編成、循環編成など様々なデータ格納形式を用いて複数のデータ格納領域に分けて管理し、ある１つの変更可能な領域を用いてデータ格納のアトミシティを保証し、その変更可能な領域は分割された複数のデータ格納領域で共有されることを特徴とするデータ管理装置であって、
（１）あるデータを保持する連続した１つのデータ格納領域を有するデータ格納手段と、
「データ格納領域の格納位置情報（アドレス）」を受信し、データ格納領域のアドレスにあるデータを特定し、特定したデータを送信する手段と、を備えたデータ管理手段と、
（２）データ格納領域を複数の領域（レコード）に分け、それぞれのレコードに対してＩＤ（レコード番号）を与える手段と、
（３）レコード番号とアドレスを対応付けた情報（レコード情報）を複数保持し、「データ格納領域の変更可能な領域（変更可能領域）の位置情報（変更可能アドレス）」を保持するアドレス格納領域を有するアドレス格納手段と、
レコード番号を受信し、受信したレコード番号から１つのレコード情報を特定し、特定したレコード情報と変更可能アドレスから構成される情報（アドレスリスト）を形成し、アドレスリストを送信する手段と、
アドレスリストを受信し、受信したアドレスリストからレコード番号を抽出し、そのレコード番号から１つのレコード情報を特定し、そのレコード情報のアドレスを更新し、変更可能アドレスを更新する手段と、を備えた２つのアドレス管理手段と、
（４）２つのアドレス管理手段のうち、一方をデータ格納を行うためのアドレスが格納されているデータ格納アドレス手段に特定し、他方をデータ参照を行うためのアドレスが格納されているデータ参照アドレス手段に特定する情報（スイッチ情報）を保持するスイッチ格納領域を有するスイッチ格納手段と、
（５）あるアドレスリストを受信し、アドレスリストをある変換手段（アドレス変換手段）によって変換し、変換後のアドレスリストを送信するアドレス計算手段と、
（６）(i)「レコード番号」と「データ」から構成されるファイル格納情報を受信する手段と、
スイッチ格納手段からスイッチ情報を取得し、取得したスイッチ情報を用いて２つのアドレス管理手段の一方をデータ格納を行うためのアドレスが格納されているデータ参照アドレス管理手段に特定し、他方をデータ参照を行うためのアドレスが格納されているデータ格納アドレス管理手段に特定する手段と、
レコード番号とデータ参照アドレス管理手段を用いて、アドレスリスト（アドレスリスト１）を取得する手段と、
アドレスリスト１とアドレス計算手段を用いて変更後のアドレスリスト（アドレスリスト２）を取得する手段と、
アドレスリスト１に含まれる変更可能アドレス（変更可能アドレス１）と、データとデータ管理手段を用いて、データをデータ格納領域に保持する手段と、
アドレスリスト２とデータ格納アドレス管理手段となるアドレス管理手段を用いて、アドレスリスト２をアドレス格納領域に保持する手段と、
スイッチ情報を更新する手段により更新したスイッチ情報とスイッチ格納手段を用いてスイッチ格納領域に保持する手段と、を有するデータ格納手段と、
(ii)レコード番号から構成されるファイル参照情報を受信する手段と、
レコード番号とデータ参照アドレス管理手段を用いて、アドレスリスト（アドレスリスト１）を取得する手段と、
アドレスリスト１からアドレス（アドレス１）を抽出する手段と、
アドレス１とデータ管理手段を用いて、データ格納領域からデータを取得する手段と、
取得したデータを送信する手段と、を有するデータ参照手段と、を備えたファイル管理手段と、から構成されることを特徴とするデータ管理装置。
【請求項２】
請求項１に記載のデータ管理装置において、
アドレス管理手段で管理するレコード情報は、複数のレコード番号をグループとしてまとめ、１つのＩＤ（ファイルＩＤ）を与えたレコード情報であり、
前記２つのアドレス管理手段は、
（７）レコード番号を、ある任意の複数の組にまとめ、まとめられた組にＩＤ（ファイルＩＤ）を与える手段と、
（８）ファイルＩＤと、そのファイルＩＤに対応した複数のレコード番号を対応付けた情報（レコードリスト）を与える手段と、
（９）ファイルＩＤとデータから構成されるファイル格納情報を与える手段と、
（１０）ファイルＩＤから構成されるファイル参照情報を与える手段と、
（１１）レコードリストと変更可能アドレスからアドレスリストを構成する手段と、を備え、
前記ファイル管理手段は、
（１２）このファイル格納情報を用いたデータ格納手段と、
（１３）このファイル参照情報を用いたデータ参照手段と、を備えたことを特徴とするデータ管理装置。
【請求項３】
請求項２に記載のデータ管理装置において、
ファイルＩＤ単位で、順編成構造や循環編成構造など、様々なレコード管理を行うことを特徴とするデータ管理装置であり、
（１４）ロジックごとに識別情報（ロジックＩＤ）を与える手段と、
（１５）ロジックＩＤとファイルＩＤの組を保持し、ファイルＩＤを受信し、ファイルＩＤから、ロジックＩＤを特定し、特定したロジックＩＤを送信する計算ロジック判定手段と、を備え、
前記アドレス計算手段は、
（１６）複数のアドレス計算手段を保持し、ロジックＩＤとアドレス計算に必要となる情報（引数）とアドレスリストからなる情報（アドレス変換情報）を受信し、ロジックＩＤから１つのアドレス計算手段を特定し、特定したアドレス計算手段にアドレスリストと引数を送信し、変換したアドレスリスト（アドレスリスト２）を受信し、アドレスリスト２を送信する手段と、を有するアドレス計算手段２と、を備え、
（１７）前記データ格納手段に加え、
ファイルＩＤと計算ロジック判定手段を用いてロジックＩＤを取得する手段と、取得したロジックＩＤを用いてアドレス変換情報を形成する手段と、アドレス変換情報とアドレス計算手段２を用いて変更後のアドレスリスト（アドレスリスト２）を取得する手段と、を備えたデータ格納手段と、
（１８）前記ファイル管理手段に加え、
前記追加したデータ格納手段のファイル管理手段を有すること、を特徴とするデータ管理装置。
【請求項４】
請求項１乃至３の何れか１項に記載のデータ管理装置において、
前記アドレス計算手段は、
（１９）アドレスリスト中のレコード番号に該当するアドレスを特定し、特定したアドレス（アドレス３）と変更可能アドレス（アドレス４）を入れ替える手段を備えたことを特徴とするデータ管理装置。
【請求項５】
請求項１乃至３の何れか１項に記載のデータ管理装置において、
前記アドレス計算手段は、
（２０）アドレスリスト中の先頭レコードに格納されたアドレスを特定し、特定したアドレス（アドレス３）と変更可能アドレス（アドレス４  を入れ替え、アドレスリストをＦＩＦＯとして、２番目のレコードを先頭レコードとし、変更可能アドレスを最後のレコードとする手段を備えたことを特徴とするデータ管理装置。
【請求項６】
請求項１乃至５の何れか１項に記載のデータ管理装置において、
前記スイッチ情報を更新する手段は、
（２１）スイッチ情報を１の場合０に変更し、０の場合１に変更するスイッチ更新手段であることを特徴とするデータ管理装置。
【請求項７】
請求項１乃至５の何れか１項に記載のデータ管理装置において、
前記スイッチ情報を更新する手段は、
（２２）スイッチ情報に１を加算するスイッチ更新手段であることを特徴とするデータ管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、組み込みチップ上のメモリ管理（データ参照、データ書き込み）のためのデータ管理の技術分野に属する。
【０００２】
【従来の技術】
（スマートカード(Smart Card)とアトミシティ(Atomicity)）
組み込みチップにおけるデータは、ＥＥＰＲＯＭやフラッシュメモリ、ＦｅＲＡＭ（強誘電体メモリ）など、不揮発性メモリが用いられる。これらの不揮発性メモリの用途として、ＩＣカード、携帯電話などのデータ格納デバイスとして用いられる。これらのデバイスは、以下の特徴をもつ。
（１）容量が小さい。（数Kbytes〜数100Kbytes）
（２）データの書き込み時間が遅い。（１ページあたり数ms〜10ms程度）
これらのデバイスを用いて格納されるデータの１つに電子マネーなどの電子価値情報がある。このような電子価値情報を不揮発性メモリに格納するためには、「Atomicity」を保証することが必要不可欠であることが知られている。Atomicityとは、あるデータのデータ格納のTransaction（処理）において、その処理後の状態が「そのデータを完全に格納している」か「そのデータを全く格納していない」の２つの状態(all or nothing)だけをとるTransactionの特徴である。この手法については、既に、データベースの分野で様々な方法（データ書き込み保証方式）が確立されており、これらの分野の技術を用いて、前述した「容量」や「書き込み遅延」を考慮した不揮発性メモリに対する「データ書き込み保証方式」が報告されている。
【０００３】
（Before-Image Logging法）
文献「Recoverable Persistent Memory for Smart Card (CARDIS2000,LNCS 1820,pp.134-140,2000」によれば、次の方法によって、データ書き込み保証が達成される。
まず、「Before-Image Log」と呼ばれる退避領域と、実際にデータを保存する「データ保持領域」を、不揮発性メモリに用意する。Before-Image Logには、「データ保持領域のアドレス」と「そのアドレスに格納されているデータ」が格納される。
今、データＸをデータ保持領域のアドレスＡ上に格納する。
（１）Before-Image LogにデータＹが存在するかどうかについて確認する。
データが存在した場合          （２）へ
データが存在しなかった場合    （４）へ
（２）Before-Image Logの書き込み先アドレスＢとデータＹをデータ保持領域に書き込む。
（３）（６）へ
（４）アドレスＡと、アドレスＡにあるデータＹをBefore-Image Logに書き込む。（バックアップをとる。）
（５）データＸをデータ保持領域のアドレスＡに書き込む。
（６）Before-Image Logファイルをクリアする。  この方法では、不揮発性メモリにデータを書き込む処理（２）（４）（５）（６）において、障害が発生した際のAtomicityが損なわれる可能性があるが、処理（２）（４）（５）のいずれかで障害が発生しても、Before-Image Log内のデータが変更されていないため、単に処理（１）から処理を復旧させることで不揮発性メモリの状態を戻すことができる。
【０００４】
（After-Image Logging法）
文献「ＩＣカードとＩＣカードのデータ更新方法」（特開２０００−１７２８０４（特願平１０−３４１８３８号））では、Before-Image Logging法に比べてデータ書き込みのタイミングをずらしたAfter-Image Logging法を用いた方法が提案されている。
まず、「Commit Buffer（コミットバッファ）」と呼ばれる退避領域と、実際にデータを格納する「データ保持領域」を不揮発性メモリに保持する。Commit Bufferには、データ保持領域に格納するデータとデータ保持領域の格納先アドレスが保持される。また、書き込みが正常に行われているかどうかについては、Commit Flag（コミットフラッグ）を用いて判断される。
今、データＸをデータ保持領域のアドレスＡ上に格納する。
（１）Commit Bufferのデータ内に、データ保持領域の格納先アドレスＡが存在するか確認する。
存在した場合          （２）へ
存在しない場合        （３）へ
（２）Commit BufferのデータＹを、データ保持領域のアドレスＡに書き込む。
（書き込み後、Commit BufferのCommit FlagをOFFにする。）
（３）Commit Bufferの容量を確認
容量が不足した場合    （２）へ
容量が不足しない場合   （４）へ
（４）Commit BufferにアドレスＡとデータＸを書き込む。
（書き込み後、Commit BufferのCommit FlagをONにする。）
（５）データ保持領域の格納先アドレスＡにデータＸを書き込む。
（６）処理終了
この方式では、不揮発性メモリにデータを書き込む処理（２）（４）（５）において、障害が発生した際にAtomicityが損なわれる可能性がある。処理（２）で障害が発生した場合、Commit Buffer内のデータが変更されていないため、単に処理（１）から処理を復旧させることで不揮発性メモリの状態を戻すことが可能である。処理（４）で障害が発生した場合、Commit FlagがOFFの状態であるため、単に処理（１）から処理を開始することで復旧させることができる。処理（５）で障害が発生した場合、Commit Buffer内のデータは既に格納されているため処理（１）から処理を再開すればよい。
この方式では、データ保持領域のアドレスＡにあるデータを参照するには、以下のように行う。
（１）Commit Bufferのデータ内に、データ保持領域の格納先アドレスＡが存在するか確認する。
存在した場合       Commit BufferのデータＸを参照し、終了する。
存在しない場合    （２）へ
（２）データ保持領域のアドレスＡにデータが存在するか確認する。
存在した場合       データ保持領域のデータＸを参照し、終了する。
存在しない場合      エラー終了（該当データなし）
【０００５】
（Before-Image Logging法とAfter-Image Logging法）
Before-Image Logging法は、不揮発性メモリに対する書き込み回数が増加する。これは、必ず、Befor-Image Logと呼ばれるバックアップ領域にデータを格納する必要があるためである。また、異常系からの復旧処理では、１度Befor-Image Logにあるデータを復旧し、その後に本トランザクションを実装するため、処理時間が正常系に比べてかかる。
After-Image Logging法はCommit Bufferの容量が要求される。この容量が少ない場合、Commit Bufferの情報をデータ保持領域にコピーし領域を空ける必要があるため、不揮発性メモリへの書き込み回数は増加する。また、データを参照する際に、Commit Bufferからデータの検索を行い、次に、データ保持領域に対して検索を行うために処理時間がかかる。この問題点を解決した方法がShadow Page法である。
【０００６】
（Shadow Page法）
文献「Recoverable Persistent Memory for Smart Card(CARDIS2000,LNCS 1820,pp.134-140,2000)」によれば、前述したAfter-Image Logging法に近い形式として、「Shadow Page法」が報告されている。
まず、「Indirection Table」と呼ばれるアドレス格納領域と、実際にデータを格納する「データ保持領域」を不揮発性メモリに保持する。Indirection Tableには、各データのデータ保持領域のアドレスが保持される。データ保持領域には「Free Page」と呼ばれるデータ書き込み領域が、データ保持領域上のどこかに存在する。ここで、Indirection Tableは、Free Pageのアドレスを保持しない。
今、データ保持領域のアドレスＡにあるデータＸをＹに更新する。Free Pageがデータ保持領域Ｂ上に存在するものとする。
（１）Indirection Tableを揮発性領域（ＲＡＭ領域）にコピーする。（Translation Tableとする。）
（２）Free PageにデータＹを格納する。
（３）Translation TableのデータＸが格納されているアドレスＡをＢに書き換える。
（４）Translation TableをIndirection Tableにコピーする。
（５）処理終了
この方式では、不揮発性メモリにデータを書き込む処理（２）（４）において、障害が発生した際にAtomicityが損なわれる可能性がある。処理（２）で障害が発生した場合、Indirection Tableは更新されていない。従って、処理（１）から開始することで復旧可能である。
【０００７】
（ページ切り替え法（Switching法））
「Shadow Page法」では、Translation Tableを書き込む際に、ＥＥＰＲＯＭの書き込み時間を考慮しておらず、書き込みの際に異常が発生した場合、状態を保持できなくなり、完全にAtomicityを保証している方式としては不十分である。この問題を解決する方法として、「Implementation of Transaction for Open Smart Card」（システム管理法）や「トランザクション管理装置（特願２００１−１３８５６４）」（ビット切り替え法）が報告されている。これらの方式では、Indirection Tableを２面用意し、一方を、Shadow Page法におけるTranslaton Tableとし、その切り替えを瞬間的に（Atomic（アトミック）に）行うことで完全にAtomicityを保証している方式である。両方式の違いについては、「システム管理法」では、この切り替えを利用可能なＥＥＰＲＯＭ領域の判別を行うメモリマネージャのようなメモリ管理装置が代行し、なんらかの方法で、有効ページを判別し、Atomicityの保証を行っているのに対して、「ビット切り替え法」では、１ビットの変更がAtomicに行えるというＥＥＰＲＯＭ等不揮発性メモリの性質を利用して、ＥＥＰＲＯＭページの更新を行い、Atomicityを保証している。また、Switching法では、スイッチを多段に構成することによって、切り分けられた複数のデータ保持領域に対する書き込み保証も行うことが可能である。
【０００８】
【発明が解決しようとする課題】
Shadow Page法やSwitching法を用いた方式では、以下の問題がある。
▲１▼データ保持領域を切り分ける際に、ある１つの連続領域を単位として切り分け、切り分けた領域毎にFree Pageを有する必要がある。このため、Free Pageのための領域が必要である。
▲２▼順編成や循環編成などのファイル形式を与えることができない。
本発明は、「Shadow Page法」や「Switching法」と同じ書き込み回数で、ある１つの連続した領域を、任意のアドレスの組み合せによって領域を論理的に切り分け、Free Pageを１箇所に集約することを課題とする。
【０００９】
【課題を解決するための手段】
図１に本発明のデータ管理装置の概要構成を示す。
データ管理装置は、ファイル管理手段160、アドレス計算手段150、アドレス管理手段130,140、スイッチ格納手段120、データ管理手段110、計算ロジック判定手段170から構成される。 データ管理装置は、制御命令を受信し、それに従った処理を行う。制御命令は、データ格納命令とデータ参照命令があり、データを格納する場合、「データ格納命令」を受信し、データを格納する。データを参照する場合、「データ参照命令」を受信し、参照データを返却する。
【００１０】
請求項１に記載の発明は、
あるデータが格納される連続した１つのデータ格納領域を順編成、循環編成など様々なデータ格納形式を用いて複数のデータ格納領域に分けて管理し、ある１つの変更可能な領域を用いてデータ格納のアトミシティを保証し、その変更可能な領域は分割された複数のデータ格納領域で共有されることを特徴とするデータ管理装置であって、
（１）あるデータを保持する連続した１つのデータ格納領域を有するデータ格納手段と、
「データ格納領域の格納位置情報（アドレス）」を受信し、データ格納領域のアドレスにあるデータを特定し、特定したデータを送信する手段と、を備えたデータ管理手段と、
（２）データ格納領域を複数の領域（レコード）に分け、それぞれのレコードに対してＩＤ（レコード番号）を与える手段と、
（３）レコード番号とアドレスを対応付けた情報（レコード情報）を複数保持し、「データ格納領域の変更可能な領域（変更可能領域）の位置情報（変更可能アドレス）」を保持するアドレス格納領域を有するアドレス格納手段と、
レコード番号を受信し、受信したレコード番号から１つのレコード情報を特定し、特定したレコード情報と変更可能アドレスから構成される情報（アドレスリスト）を形成し、アドレスリストを送信する手段と、
アドレスリストを受信し、受信したアドレスリストからレコード番号を抽出し、そのレコード番号から１つのレコード情報を特定し、そのレコード情報のアドレスを更新し、変更可能アドレスを更新する手段と、を備えた２つのアドレス管理手段(130),(140)と、
（４）２つのアドレス管理手段のうち、一方をデータ格納を行うためのアドレスが格納されているデータ格納アドレス手段に特定し、他方をデータ参照を行うためのアドレスが格納されているデータ参照アドレス手段に特定する情報（スイッチ情報）を保持するスイッチ格納領域と、を有するスイッチ格納手段(120)と、
（５）あるアドレスリストを受信し、アドレスリストをある変換手段（アドレス変換手段）によって変換し、変換後のアドレスリストを送信するアドレス計算手段(150)と、
【００１１】
（６）(i)「レコード番号」と「データ」から構成されるファイル格納情報を受信する手段と、スイッチ格納手段からスイッチ情報を取得し、取得したスイッチ情報を用いて２つのアドレス管理手段の一方をデータ格納を行うためのアドレスが格納されているデータ参照アドレス管理手段に特定し、他方をデータ参照を行うためのアドレスが格納されているデータ格納アドレス管理手段に特定する手段と、レコード番号とデータ参照アドレス管理手段を用いて、アドレスリスト（アドレスリスト１）を取得する手段と、
アドレスリスト１とアドレス計算手段を用いて変更後のアドレスリスト（アドレスリスト２）を取得する手段と、
アドレスリスト１に含まれる変更可能アドレス（変更可能アドレス１）と、データとデータ管理手段を用いて、データをデータ格納領域に保持する手段と、
アドレスリスト２とデータ格納アドレス管理手段となるアドレス管理手段を用いて、アドレスリスト２をアドレス格納領域に保持する手段と、
スイッチ情報を更新する手段により更新したスイッチ情報とスイッチ格納手段を用いてスイッチ格納領域に保持する手段と、を有するデータ格納手段と、
(ii)レコード番号から構成されるファイル参照情報を受信する手段と、
レコード番号とデータ参照アドレス管理手段を用いて、アドレスリスト（アドレスリスト１）を取得する手段と、
アドレスリスト１からアドレス（アドレス１）を抽出する手段と、
アドレス１とデータ管理手段を用いて、データ格納領域からデータを取得する手段と、
取得したデータを送信する手段と、を有するデータ参照手段と、を備えたファイル管理手段(160)と、から構成することを特徴とする。
【００１２】
請求項２に記載の発明は、
請求項１に記載のデータ管理装置において、
アドレス管理手段で管理するレコード情報は、複数のレコード番号をグループとしてまとめ、１つのＩＤ（ファイルＩＤ）を与えたレコード情報であり、
前記２つのアドレス管理手段(130),(140)は、
（７）レコード番号を、ある任意の複数の組にまとめ、まとめられた組にＩＤ（ファイルＩＤ）を与える手段と、
（８）ファイルＩＤと、そのファイルＩＤに対応した複数のレコード番号を対応付けた情報（レコードリスト）を与える手段と、
（９）ファイルＩＤとデータから構成されるファイル格納情報を与える手段と、
（１０）ファイルＩＤから構成されるファイル参照情報を与える手段と、
（１１）レコードリストと変更可能アドレスからアドレスリストを構成する手段と、を備え、
前記ファイル管理手段(160)は、
（１２）このファイル格納情報を用いたデータ格納手段と、
（１３）このファイル参照情報を用いたデータ参照手段と、を備えたことを特徴とする。
【００１３】
請求項３に記載の発明は、
請求項２に記載のデータ管理装置において、
ファイルＩＤ単位で、順編成構造や循環編成構造など、様々なレコード管理を行うことを特徴とするデータ管理装置であり、
（１４）ロジックごとに識別情報（ロジックＩＤ）を与える手段と、
（１５）ロジックＩＤとファイルＩＤの組を保持し、ファイルＩＤを受信し、ファイルＩＤから、ロジックＩＤを特定し、特定したロジックＩＤを送信する計算ロジック判定手段(170)と、を備え、
前記アドレス計算手段(150)は、
（１６）複数のアドレス計算手段を保持し、ロジックＩＤとアドレス計算に必要となる情報（引数）とアドレスリストからなる情報（アドレス変換情報）を受信し、ロジックＩＤから１つのアドレス計算手段を特定し、特定したアドレス計算手段にアドレスリストと引数を送信し、変換したアドレスリスト（アドレスリスト２）を受信し、アドレスリスト２を送信する手段と、を有するアドレス計算手段２と、を備え、
（１７）前記データ格納手段に加え、
ファイルＩＤと計算ロジック判定手段を用いてロジックＩＤを取得する手段と、取得したロジックＩＤを用いてアドレス変換情報を形成する手段と、アドレス変換情報とアドレス計算手段２を用いて変更後のアドレスリスト（アドレスリスト２）を取得する手段と、を備えたデータ格納手段と、
（１８）前記ファイル管理手段に加え、
前記追加したデータ格納手段のファイル管理手段を有すること、を特徴とする。
【００１４】
請求項４に記載の発明は、
請求項１乃至３の何れか１項に記載のデータ管理装置において、
前記アドレス計算手段(150)は、
（１９）アドレスリスト中のレコード番号に該当するアドレスを特定し、特定したアドレス（アドレス３）と変更可能アドレス（アドレス４）を入れ替える手段を備えたことを特徴とする。
【００１５】
請求項５に記載の発明は、
請求項１乃至３の何れか１項に記載のデータ管理装置において、
前記アドレス計算手段(150)は、
（２０）アドレスリスト中の先頭レコードに格納されたアドレスを特定し、特定したアドレス（アドレス３）と変更可能アドレス（アドレス４  を入れ替え、アドレスリストをＦＩＦＯ(First In First Out)として、２番目のレコードを先頭レコードとし、変更可能アドレスを最後のレコードとする手段を備えたことを特徴とする。
【００１６】
請求項６に記載の発明は、
請求項１乃至５の何れか１項に記載のデータ管理装置において、
前記スイッチ情報を更新する手段は、
（２１）スイッチ情報を１の場合０に変更し、０の場合１に変更するスイッチ更新手段であることを特徴とする。
【００１７】
請求項７に記載の発明は、
請求項１乃至５の何れか１項に記載のデータ管理装置において、
前記スイッチ情報を更新する手段は、
（２２）スイッチ情報に１を加算するスイッチ更新手段であることを特徴とする。
【００１８】
【発明の実施の形態】
（全体構成）
図２に本発明のデータ管理装置の構成例を示す。
データ管理装置は、データ格納媒体におけるデータ格納装置であり、「データ格納部210」「データ管理部220」「アドレス格納部230」「アドレス格納部240」「アドレス管理部250」「アドレス管理部260」「アドレス計算部270」「スイッチ格納部280」「ファイル管理部290」「計算ロジック判定部300」から構成される。
データ管理装置は、制御命令を受信し、それに従った処理を行う。制御命令は、データ格納命令とデータ参照命令がある。データを格納する場合、「データ格納命令」を受信し、データを格納する。データを参照する場合、「データ参照命令」を受信し、参照データを返却する。データ格納命令の例を図３に示す。データ参照命令の例を図４に示す。
【００１９】
（ファイル管理部290）
ファイル管理部290の構成例を図５に示す。
ファイル管理部290は、「制御命令」を受信する「制御命令受信バッファ292」と、「データ格納命令」で格納するデータを受信する「格納データ受信バッファ294」と、「データ参照命令」でデータを送信する「参照データ送信バッファ293」と、「アドレス管理部250」と「アドレス管理部260」をデータ格納アドレス管理部と参照アドレス管理部に切り替える計算を行う「スイッチ計算部295」と、制御命令を実行する「制御命令実行部291」から構成される。
【００２０】
（データ格納部210）
データ格納部210は、格納するデータとそのアドレスを保持する。その例を図６に示す。データ格納部は、例えば、ＥＥＰＲＯＭやＦｅＲＡＭ、フラッシュメモリ、磁気ディスクなどの不揮発性のデバイスが用いられる。
（データ管理部220）
データ管理部220の構成例を図７に示す。
データ管理部220は、「制御命令」「アドレス」「データ」から構成される「データ格納命令」を受信し、データ格納部210のアドレスにデータを書き込む手段と、「制御命令」「アドレス」から構成される「データ参照命令」を受信し、データ格納部210から該当するアドレスのデータを取得する手段を有する。データ格納命令の例を図８に示す。データ参照命令の例を図９に示す。
「データ格納制御部221」は、「データ格納命令」「データ参照命令」を受信し、「アドレス検索部222」にアドレスを送信する。「アドレス検索部222」は、「データ格納部210」のアドレスを検索し、データ格納位置を確認する。「データ格納制御部221」は、確認された後に「データ格納部210」にデータを格納、もしくは、取得を行う。
【００２１】
（アドレス格納部230,240）
アドレス格納部230と240は、データ格納部210の連続した格納領域を複数の領域に分割し、分割したデータ（レコード）を任意の組にまとめたグループをファイルとする。アドレス格納部230,240は、「データ格納部210」の「アドレス」と、そのデータが属するファイルの識別子（ファイルＩＤ）と、ファイル内におけるアドレスの識別子（レコード番号）と、アドレス変更可能領域(Shadow Page)のアドレスを対応させて保持する。保持データの例をを図１０に示す。
ファイルに１つのレコードしか存在しない場合、ファイルＩＤの代わりとしてレコード番号を用いることも可能である。また、ファイルＩＤやレコード番号の例として、ISO/IEC7816-4で規定されたTLV形式のタグやEFIDを利用することも可能である。図１０では、ファイルＩＤ：01にはレコードが２件存在し、それぞれデータ格納部210のアドレス「0400」「0010」のデータが存在する。
【００２２】
（アドレス管理部250,260）
アドレス管理部250,260の構成例を図１１に示す。
アドレス管理部250と260は、それぞれ対応する「アドレス格納部230」「アドレス格納部240」から「アドレスリスト」を取得し、格納する。アドレスリストは、「Shadow Page」と、あるファイルＩＤに含まれるレコードのアドレスのリストから構成される。アドレスリストの例を図１２に示す。アドレス管理部250とアドレス管理部260は、「制御命令」「アドレスリスト」から構成される「アドレス格納命令」を受信し、アドレス格納部230,240のファイルにデータアドレスを書き込む手段と、「制御命令」から構成される「アドレス参照命令」を受信し、アドレス格納部230,240から該当するファイル内のデータアドレスを取得する手段を有する。図１３にアドレス格納命令の例を示す。図１４にアドレス参照命令の例を示す。
アドレス管理部250,260は、スイッチ情報（スイッチ格納部280）を用いて「データ格納アドレス管理部」と「データ参照アドレス管理部」のいずれかの役割を果たす。
データ格納アドレス管理部の場合、「アドレス格納制御部251」は、「アドレス格納命令」「アドレス参照命令」を受信し、「ファイル検索部252」は、「アドレス格納部230,240」のファイルを検索し、データアドレス格納位置を確認する。「アドレス格納制御部251」は、データアドレス格納位置が確認された後に「アドレス格納部230,240」にデータアドレスとShadow Pageアドレスを格納する。ここで、データ参照アドレス管理部の場合、データの取得を行う。
【００２３】
（スイッチ格納部280）
スイッチ格納部280は、アドレス管理部250,260の「データ格納アドレス管理部」と「データ参照アドレス管理部」を識別するスイッチ情報ＳＷが格納されている。図１５にその例を示す。
【００２４】
（アドレス計算部270）
アドレス計算部270の構成例を図１６に示す。
アドレス計算部270は、アドレスリストとロジックＩＤと引数(Argument)から構成される「アドレス変換命令」を元に、ロジックＩＤに従ったロジックでアドレスリストを変換する。図１７にアドレス変換命令の例を示す。アドレス計算部270は、複数のロジックＩＤと対応付けられたアドレス変換部272と１つのロジック判定部271を有する。ロジック判定部は、ロジックＩＤから対応するアドレス変換部にアドレスＡを送信し、アドレス変換部は、アドレスを変換しロジック判定部に返却し、ロジック判定部は、変換されたアドレスリストＢを送信する。
【００２５】
（計算ロジック判定部300）
計算ロジック判定部300の例を図１８に示す。
計算ロジック判定部300は、ファイルＩＤとそのファイル内のデータ管理方式のＩＤである「ロジックＩＤ」から構成されるロジックテーブル302と、ファイルＩＤとロジックテーブルから合致するロジックＩＤを特定するロジックテーブル参照部301から構成される。ロジックテーブルの例を図１９に示す。
計算ロジック判定部は、ファイルＩＤを受信し、受信したファイルＩＤを用いてロジックＩＤを特定し、そのロジックＩＤを送信する。
以下、図面を参照してフローを説明する。
【００２６】
（全体フロー）
まず、データ格納／データ参照の全体フローを図２０のフローチャートを用いて説明する。
(P51-1)データ管理装置に制御命令（データ格納命令／データ参照命令）を送信する。
(P51-2)命令コードを判定する。
（データ格納命令の場合）      （P51-3）へ移る
（データ参照命令の場合）       (P51-4)へ移る
(P51-3)データ管理装置は、データ格納命令に含まれるデータを格納する。
(P51-4)データ管理装置は、データ参照命令のファイルＩＤとレコード番号のデータを参照して出力する。
（データ格納フロー（ファイル管理部290））
ファイル管理部290のデータ格納の内部フローを図２１及び図５を用いて説明する。
(P52-1)制御命令受信バッファ292と格納データ受信バッファ294に制御命令（データ格納命令）と格納データを格納する。
(P52-2)制御命令実行部291は、スイッチ格納部280を用いてスイッチ情報ＳＷを参照する。
(P52-3)ＳＷ（ＳＷ＝１or０）を判定する。
ＳＷ＝１の時      (P52-4)へ移る
ＳＷ＝０の時      (P52-5)へ移る
(P52-4)格納先アドレス管理部をアドレス管理部250とする。
参照先アドレス管理部をアドレス管理部260とする。
(P52-5)格納先アドレス管理部をアドレス管理部260とする。
参照先アドレス管理部をアドレス管理部250とする。
(P52-6)参照先アドレス管理部からアドレスリストＡを取得。
(P52-7)アドレスリストＡからファイルＩＤ（FID）を取得し、FIDと計算ロジック判定部300（ロジックテーブル参照部、ロジックテーブル）を用いてロジックＩＤ（LID）を特定する。
(P52-8)アドレスリストＡとLIDを用いてアドレス変換命令Ｃを作り、Ｃをアドレス計算部270に入力し、変換されたアドレスリストＢを取得する。
(P52-9)アドレスリストＡのShadow Pageのアドレスを格納先アドレスとし、格納命令のデータを格納データとして、データ格納命令を形成し、データ管理部220にデータ格納命令を送信し、データ格納部210にデータを格納する。
(P52-10)アドレスリストＢを用いてアドレス格納命令を形成し、格納先アドレス管理部にアドレス格納命令を送信し、アドレス格納部にアドレスを格納する。
(P52-11)ＳＷ（スイッチ情報）を反転する。（これに代えてスイッチ情報に１を加算しても良い。）（スイッチ情報が０の場合：１、１の場合：０）
(P52-12)スイッチ情報をスイッチ格納部280に格納する。
【００２７】
（アドレス変換方法（データファイルのランダムアクセス））
アドレス計算部270のアドレス変換部274の計算方法の例として、アドレス変換命令の引数(Argument)で指定されたレコード番号に対して、あるデータを格納したときの格納後のアドレス計算を行うロジックを図２２（順編成の形成方法）に示す。
(P54-1)アドレス変換命令から、アドレスリストＡと引数を受信する。
(P54-2)引数のレコード番号ｎ(02)から、アドレスリスト内の変更を行うレコードのレコード番号RecNum(#2)を特定する。
(P54-3)Shadow Pageのアドレスデータと、RecNum(#2)のアドレスデータを入れ替え、変更後のアドレスリストＢを形成する。
(P54-4)アドレスリストＢを返却する。
【００２８】
（アドレス変換方法（データファイルのリングバッファ管理））
アドレス計算部270のアドレス変換部272の計算方法の例として、最も古いデータを削除し、最も新しいデータを新規に格納し、レコード番号を格納された順に振り直す循環編成ファイルとしてデータを格納したときの格納後のアドレス計算を行うロジックを図２３（循環編成の形成方法）に示す。
(P55-1)アドレス変換命令から、アドレスリストＡを受信する。
(P55-2)アドレスリストA内のデータの内、リストの最後のデータを一次バッファtempに保持する。
(P55-3)残りのリストの先頭にShadow Pageのデータを連接する。
(P55-4)一次バッファtempをShadow Pageに格納し、連接されたリストを用いて、変換後のアドレスリストＢを形成する。
(P55-5)アドレスリストＢを返却する。
【００２９】
（データ参照フロー）
ファイル管理部290のデータ参照の内部フローを図２４及び図５を用いて説明する。
(P53-1)制御命令受信バッファ292にデータ参照命令を受信して格納する。
(P53-2)制御命令実行部291は、スイッチ格納部280を用いてスイッチ情報ＳＷを参照する。
(P53-3)ＳＷを判定する。
ＳＷ＝１の時     (P53-4)へ移る
ＳＷ＝０の時     (P53-5)へ移る
(P53-4)格納先アドレス管理部をアドレス管理部250とする。
参照先アドレス管理部をアドレス管理部260とする。
(P53-5)格納先アドレス管理部をアドレス管理部260とする。
参照先アドレス管理部をアドレス管理部250とする。
(P53-6)参照先アドレス管理部からアドレスリストＡを取得する。
(P53-7)制御命令のレコード番号からアドレスリストＡに含まれる１つのアドレスを特定し、データ参照命令のアドレスとし、データ参照命令を形成し、データ管理部にデータ参照命令を送信し、データを取得する。
(P53-8)取得したデータを送信バッファに格納し、データを送信する。
【００３０】
（データ格納処理における異常系の対応）
図２１におけるデータ格納フローにおいて、異常系（電源断、処理中断）が発生した場合の対応について説明する。
本発明において、問題となる箇所は、「不揮発性」の格納領域に対してデータを書き込む際、もしくはその前後に発生する処理中断である。不揮発性の格納領域に対する書き込みは、(P52-9)(P52-10)(P52-12)で発生する。以下、この前後で異常系が発生し処理が中断された場合について説明する。
(P52-9)以前で処理が中断された場合
データの更新が全く行われていない（ロールバックしている）ため、処理を先頭から再開する。
(P52-9)で処理が中断された場合
データ管理部に対して、データ参照アドレス管理部のShadow Pageのアドレスが渡され、そこに書き込みが行われているが、Shadow Pageのアドレスは、データ参照の際には参照されることはない。したがって、事実上、データの更新は全く行われていない（ロールバックしている）ことと等価であるため、処理を先頭から再開する。
(P52-9)〜(P52-10)に処理が中断された場合
データ参照アドレス管理部に変更が行われていないため、参照されるデータの内容に変更はない。したがって、事実上、データの更新は全く行われていない（ロールバックしている）ことと等価であるため、処理を先頭から再開する。
(P52-10)で処理が中断された場合
データ参照アドレス管理部に変更が行われていないため、参照されるデータの内容に変更はなし、したがって、事実上、データの更新は全く行われていない（ロールバックしている）ことと等価であるため、処理を先頭から再開する。
(P52-10)〜(P52-12)で処理が中断された場合
データ参照アドレス管理部に変更が行われていないため、参照されるデータの内容に変更はなし。したがって、事実上、データの更新は全く行われていない（ロールバックしている）ことと等価であるため、処理を先頭から再開する。
(P52-12)は、瞬間的に行われることが前提である。
【００３１】
【発明の効果】
本発明によって、様々なファイル構成を有するファイルシステムのデータをアトミックに更新することが可能であり、また、アドレス計算ロジックを工夫することによって、様々なファイル管理方法を実現することができる。また、前記Switching法との連携によって、完全に領域が独立したデータ格納領域の双方に対してアトミックにデータ更新を行いたい場合、本発明におけるスイッチをSwitching法と同様に多段に構成することで、Switching法を拡張し、独立した領域に対してそれぞれのデータ管理方式に対応したデータ更新を行うこともできる。
【図面の簡単な説明】
【図１】データ管理装置の概要構成図。
【図２】データ管理装置の構成図。
【図３】データ格納命令の例を示す図。
【図４】データ参照命令の例を示す図。
【図５】ファイル管理部290の構成図。
【図６】データ格納部210の保持データを示す図。
【図７】データ管理部220の構成図。
【図８】データ格納命令の例を示す図。
【図９】データ参照命令の例を示す図。
【図１０】アドレス格納部230,240の保持データを示す図。
【図１１】アドレス管理部250,260の構成図。
【図１２】アドレスリストの例を示す図。
【図１３】アドレス格納命令の例を示す図。
【図１４】アドレス参照命令の例を示す図。
【図１５】スイッチ格納部280のスイッチ情報の例を示す図。
【図１６】アドレス計算部270の構成図。
【図１７】アドレス変換命令の例を示す図。
【図１８】計算ロジック判定部300の構成図。
【図１９】ロジックテーブルの例を示す図。
【図２０】全体のフローチャート。
【図２１】データ格納のフローチャート。
【図２２】順編成の形成方法を説明するための図。
【図２３】循環編成の形成方法を説明するための図。
【図２４】データ参照のフローチャート。
【符号の説明】
110・・・データ管理手段、120・・・スイッチ格納手段、130,140・・・アドレス管理手段、150・・・アドレス計算手段、160・・・ファイル管理手段、170・・・計算ロジック判定手段
210・・・データ格納部
220・・・データ管理部
221・・・データ格納制御部、222・・・アドレス検索部
230,240・・・アドレス格納部
250,260・・・アドレス管理部
251・・・アドレス格納制御部、252・・・ファイル検索部
270・・・アドレス計算部
271・・・ロジック判定部、272・・・アドレス変換部
290・・・ファイル管理部
291・・・制御命令実行部、292・・・制御命令受信バッファ、293・・・参照データ送信バッファ、294・・・格納データ受信バッファ、295・・・スイッチ計算部
300・・・計算ロジック判定部
301・・・ロジックテーブル参照部、302・・・ロジックテーブル
【図１】
0004060639.tif 000002
【図２】
0004060639.tif 000003
【図３】
0004060639.tif 000004
【図４】
0004060639.tif 000005
【図５】
0004060639.tif 000006
【図６】
0004060639.tif 000007
【図７】
0004060639.tif 000008
【図８】
0004060639.tif 000009
【図９】
0004060639.tif 000010
【図１０】
0004060639.tif 000011
【図１１】
0004060639.tif 000012
【図１２】
0004060639.tif 000013
【図１３】
0004060639.tif 000014
【図１４】
0004060639.tif 000015
【図１５】
0004060639.tif 000016
【図１６】
0004060639.tif 000017
【図１７】
0004060639.tif 000018
【図１８】
0004060639.tif 000019
【図１９】
0004060639.tif 000020
【図２０】
0004060639.tif 000021
【図２１】
0004060639.tif 000022
【図２２】
0004060639.tif 000023
【図２３】
0004060639.tif 000024
【図２４】
0004060639.tif 000025