JP4153324B2 - 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム - Google Patents

差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム Download PDF

Info

Publication number
JP4153324B2
JP4153324B2 JP2003024412A JP2003024412A JP4153324B2 JP 4153324 B2 JP4153324 B2 JP 4153324B2 JP 2003024412 A JP2003024412 A JP 2003024412A JP 2003024412 A JP2003024412 A JP 2003024412A JP 4153324 B2 JP4153324 B2 JP 4153324B2
Authority
JP
Japan
Prior art keywords
data
update
restoration
area
post
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003024412A
Other languages
English (en)
Other versions
JP2004234503A (ja
Inventor
伸明 田中
顕太郎 飯田
貴之介 足立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2003024412A priority Critical patent/JP4153324B2/ja
Priority to US10/543,967 priority patent/US20060200502A1/en
Priority to PCT/JP2003/013383 priority patent/WO2004068348A1/ja
Priority to AU2003303838A priority patent/AU2003303838A1/en
Priority to EP03756702A priority patent/EP1589430A1/en
Priority to CNA2003801092227A priority patent/CN1742262A/zh
Publication of JP2004234503A publication Critical patent/JP2004234503A/ja
Application granted granted Critical
Publication of JP4153324B2 publication Critical patent/JP4153324B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、差分データを用いて自装置内のデータを更新するデータ更新方法に関し、このデータ更新方法に用いる差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラムに関する。
【0002】
【従来の技術】
パーソナルコンピュータ、携帯情報端末(PDA)、携帯電話機など、所定のプログラムに基づくプロセッサの動作によって装置動作の少なくとも一部を実行する端末装置では、プログラムの改良などのために、対象のプログラムを含むデータのバージョンを更新する、いわゆるバージョンアップが行われることがある。このようなデータのバージョン更新時には、フラッシュROM、ハードディスクなどの書換え可能な記録媒体に記録された更新前のソフトウェア等のデータ(以下、更新前データと称する)が、他のバージョン(一般には新しいバージョン)のソフトウェア等のデータ(以下、更新後データと称する)に書き換えられる。この場合、単純に更新前データを更新後データに置き換えることもできるが、更新前データと更新後データとの差分データを生成し、この差分データを基に更新前データから更新後データを生成して書き換えることも従来より多く行われている。
【0003】
このようなデータ更新方法の一つとして、ネットワークなどの通信路を介して更新用のデータを転送してデータ更新を行うものが提案されている。この場合、送信側装置で更新前データと更新後データとを比較して差分を抽出し、その差分データのみを転送して、受信側の端末装置では装置内にある更新前データと転送されてきた差分データとから更新後データを復元し、データを更新するような手順が用いられる(例えば、特許文献1参照)。
【0004】
上記のような差分データを用いたデータ更新技術を実用に使う際には、更新前のデータ全体と更新後のデータ全体とを比較して差分を抽出するのではなく、全体をいくつかの部分(ブロックと称する)に分けて差分を抽出することが行われることがある(例えば、非特許文献1参照)。なお、上記非特許文献1における詳細な差分抽出技術は非特許文献2に示されている。
【0005】
ここで、非特許文献2に示された差分抽出技術の概要を図11〜図12を参照して説明する。この差分抽出技術は、Block-Moveアルゴリズムと呼ばれるもので、更新前データと更新後データとを比較して一致するデータ列を検索し、一致するデータ列はそのまま更新前データから更新後データへMoveデータとして移動するようにしてコピーし、一致しないデータ列は新たなデータ列をAddデータとして追加して書き込むことで、差分データを生成するものである。
【0006】
図11は差分データ抽出に用いる疑似コードを示したものである。擬似コード中の(p,q,l)は連続したデータの移動の命令であり、更新前データのp番地からのl(エル)バイトを更新後データのq番地に運べという意味を表す。p1からp3は更新前データ中のアドレスを示す。更新前データがメモリ上にある場合は、p1からp3はメモリ上のアドレスと更新前データの先頭アドレスとの差である。ファイル上に更新前データがある場合は、p1からp3はファイルの先頭からの距離で表される。q1からq3は、更新後データ中のアドレスであり、意味は更新前データにおけるp1からp3と同様である。
【0007】
図12はデータの一例を示したもので、図12(A)は更新前データ、図12(B)は更新後データ、図12(C)はこれらの差分データをそれぞれ示す図である。図12(A),(B)のような更新前データ及び更新後データの場合、図11の疑似コードからの出力は、図12(C)に示すように、(p2,q2,2)(p3,q3,2)(p1,q1,3)となる。この命令を差分データとして受信側の端末装置に転送し、端末装置において図12(A)の更新前データに対して適用することにより、図12(B)の更新後データを得ることができる。
【0008】
上記のようなデータ更新方法を用いることによって、転送する差分データが小さくなり、受信側の端末装置では少量の差分データを基に更新後データを復元生成してデータを更新することが可能となる。
【0009】
また、上記非特許文献2に示されるように、差分データを生成する際にデータ全体を比較するのではなく、所定単位でデータを分割したブロックごとを比較することにより、差分抽出にかかる時間を短縮できる。更新前データと更新後データの違いが少なく、更新前データがほとんど更新後データの同じブロック内にある場合、上記のようにブロック単位でデータの一部分のみを参照することで、差分抽出のための計算量を大幅に減らすことが可能である。またこの場合、ブロックに分けることによる差分データ量の増大はあまり大きくなく、差分データを小さく維持できる。
【0010】
一方、ブロック間のデータの移動量が大きく、1対1のブロックの比較による差分抽出のみでは十分に差分データを小さくすることができない場合には、1対1ではなく、前後の複数のブロックと書換えるブロックの更新後データを比較して差分データを生成し、更新前データの前後の複数ブロックを参照しながら更新後データを復元する方法も知られている。この方法は上記非特許文献1に示されている。このように前後ブロックをも参照することによって、ブロックをまたがって大きな移動をしているデータについても更新前データから更新後データにコピーすることができ、差分データの量をより減らすことができる。
【0011】
【特許文献1】
特開平8−255104号公報(図7)
【非特許文献1】
James J. Hunt, Kiem-Phong Vo, Walter F. Tichy, 「Delta Algorithms: An Empirical Analysis」, ACM Transactions of Software Engineering and Methodology, ACM (Association for Computing Machinery), 1998年4月,第7巻,第2号,p.192-214
【非特許文献2】
Walter F. Tichy, 「The String-to-String Correction Probrem with Block Moves」, ACM Transactions on Computer Systems, ACM (Association for Computing Machinery), 1984年11月,第2巻,第4号,p.309-321
【0012】
【発明が解決しようとする課題】
しかしながら、上記従来例におけるデータ更新方法においては、更新用の差分データ等を受信してデータ更新を行う端末装置に通常のコンピュータを想定しており、メモリ等のハードウェア資源に制約の多い携帯電話機、携帯情報端末などの組込み系機器での使用が考慮されていない。
【0013】
携帯電話機などの組込み系機器では、下記のような特殊性が存在する。
(1)プログラムを更新する際に、ワーキング領域やデータ格納領域として用いられるRAMやフラッシュROM等のメモリにおいて、更新前データを保持しながら、更新前データが格納されているのとは違う領域に更新後データを格納しようとしても、すべての更新後データを格納するために十分なメモリ領域が確保できない場合が多い。
【0014】
(2)最近の機器では、フラッシュROM等の書換え可能不揮発性メモリ上に、装置プログラム等の更新すべきデータを保持する領域(更新可能領域、コード領域とも称する)と、ユーザが使用時に格納したデータ等を保持する領域でデータ更新の際に書換え対象としない領域(更新不可領域、ユーザ領域とも称する)とが混在することがある。
【0015】
このような特殊性を持つ機器で、上記従来例のようなデータ更新方法をそのまま用いようとすると、下記のような不都合が生じる。
【0016】
第1に、メモリ上に更新前データと更新後データの双方を格納する領域が十分にないため、更新の際に更新後データを保存できない。また、更新後データの復元と並行して更新前データが格納されている領域に更新後データを書き込もうとすると、差分データを用いて復元時に参照する更新前データの内容が変わってしまい、正しい復元をすることができない。
【0017】
図13は更新後データの復元と書き込みを並行して行う場合の問題点を説明する図である。ここでは、上記のように書換え可能不揮発性メモリ500において更新不可領域であるユーザ領域501,503と更新可能領域であるコード領域502,504とが混在している状態でのデータ更新動作を説明する。図示のように、コード領域502,504のブロックa〜gを更新することとする。
【0018】
この場合、データ更新を行う際に、メモリのアドレス510上の書換えアドレス511を先頭とする参照範囲512(図示例ではブロックb)の更新前データを参照して、差分データを基に更新後データを復元するとともに、この更新後データを書き込み範囲513(ブロックb)に書き込むことになる。このとき、参照範囲512と書き込み範囲513とが重なっており、復元及び書き込みの動作中にも参照範囲512のデータが変化してしまい、更新後データの復元ができなくなる。
【0019】
また、フラッシュROMへのデータ書き込みの際には、1つのブロック全体を消去してデータを書き込む必要があり、この点からも、同一ブロック内を参照しながらの復元は困難である。
【0020】
更新前データと更新後データとの比較によって抽出した差分データを用いて更新後データを復元する際には、変化のない更新前データの参照が必要である。コンピュータ上でデータ更新を行う場合のように、更新前データの領域とは別の領域に更新後データを復元して格納する場合は、上記問題は生じないが、図13のようにメモリ容量等の制約があり同一の領域において更新前データから更新後データへ書き換える必要がある場合は、上記従来例のようなデータ更新方法をそのまま適用することができない。
【0021】
第2に、従来の技術で述べたような前後の複数ブロックを参照して更新後データを復元するようにした場合は、更新不可領域であるユーザ領域と更新可能領域であるコード領域とが混在してコード領域が不連続であったり、コード領域においてブロックサイズが異なるブロックが混在していると、正しい復元をすることができない。
【0022】
現在の組込み機器は大規模化、複雑化しており、そのメモリ配置、使用法が上記のような不連続コード領域、不均一なブロックサイズを含むことがある。
【0023】
1つのブロックごとの比較のみではなく前後の複数のブロックを比較して復元データを生成する際に、同一サイズのブロックが連続していない場合は、差分抽出手段がデータ更新する領域が連続していると解釈して差分を抽出してしまう。データ復元時にこの差分データを基に前後の複数ブロックを参照して更新後データを復元すると、差分抽出時とは別のデータを参照してしまうことがあり、データ復元を正常に行えないおそれがある。
【0024】
図14は更新可能領域であるコード領域が不連続である場合の問題点を説明する図である。ここでは、図13と同様に書換え可能不揮発性メモリ500において更新不可領域であるユーザ領域501,503と更新可能領域であるコード領域502,504とが混在している状態における、コード領域502,504のブロックa〜gのデータ更新動作を説明する。
【0025】
図14(A)に示すように、更新前データ540を従来の方法に従って均一かつ連続なブロックサイズに分けて、複数ブロックを比較して差分抽出を行う場合、更新前データ540のファイル中の位置550において、ブロックbについては参照範囲551を、ブロックdについては参照範囲552を更新前データと更新後データとで比較参照することになる。更新後データの復元時には、図14(B)に示すように、書換え可能不揮発性メモリ500のアドレス510上において、ブロックbについては参照範囲531を、ブロックdについては参照範囲532を参照することとなる。このとき、ブロックdについてはユーザ領域503を参照してしまい、差分抽出時と復元時とで参照先の内容が食い違う部分533,553が生じ、正しくデータを復元することができない。また、この場合、ユーザ領域とコード領域の区別を認識していないので、ユーザ領域にもデータを書き込んでしまう可能性がある。
【0026】
上記のようなデータ復元時の参照範囲の位置の相違を避けるために、図15(A),(B)に示すように更新前データを書換え可能不揮発性メモリ500上に展開したときと同じ配置になるように、ユーザ領域部分にダミーデータ561,562を挿入して展開し、この展開した更新前データ560によって差分抽出することも考えられる。この場合、更新前データ560のメモリ上のアドレス570において、ブロックbについては参照範囲571を、ブロックdについては参照範囲572を更新前データと更新後データとで比較参照することになる。
【0027】
この方法では、ブロックdについては、差分抽出時にはダミーデータ562を参照し、更新後データの復元時にはダミーデータ562とは異なるユーザ領域503を参照してしまうため、やはり参照先の内容が食い違う部分533,573が生じ、データ復元を正しく行うことができない。
【0028】
このように、携帯電話機などの組込み系機器は、上記(1)、(2)のような特殊性を有し、ハードウェア的な制約が大きいため、従来のようなデータ更新方法をそのまま用いることは困難であった。このため、より少ないハードウェア資源で更新後データの復元、書き込みを実行可能にして、更新すべきデータを正しく更新し、更新しないデータを変化させないデータ更新方法が求められている。
【0029】
本発明は、上記課題を解決するためになされたもので、メモリ容量等のハードウェア資源に制約のある機器であっても、メモリ上の同じ領域においてプログラム等のデータを更新前データから更新後データに書き換えて更新できるようにした差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラムを提供することを目的とする。
【0030】
また、本発明は、メモリ上で更新不可領域と更新可能領域が混在して更新前データや更新後データの格納領域が不連続であったり、異なるブロックサイズの格納領域が混在する場合であっても、データ更新を正しく、かつ単純な計算手順で効率良く実行できるようにした差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラムを提供することを目的とする。
【0031】
【課題を解決するための手段】
本発明は、第1に、更新前データから更新後データへデータを書き換えるための差分データを生成する差分データ生成装置であって、前記更新前データ及び前記更新後データに関する、データ復元側のデータ格納手段における記憶領域の配置情報を含む記憶領域情報を基に、差分抽出時の更新前データの参照範囲を設定する領域設定手段と、前記更新後データと、前記設定された参照範囲の前記更新前データとを比較参照して差分データを生成する差分抽出手段と、前記生成した差分データに、前記データ復元側のデータ格納手段におけるデータ復元時の対象データのアドレス情報を含むヘッダ情報を付加した差分ファイルを生成する差分ファイル生成手段と、を備えた差分データ生成装置を提供する。
【0032】
これにより、例えばデータ復元側のデータ格納手段において更新対象のデータを格納する更新可能領域とユーザデータなどを格納する更新不可領域とが混在して更新可能領域が不連続になっている場合であっても、差分抽出手段では記憶領域情報を基に連続した一つの更新可能領域のみを参照して差分データを生成することが可能となる。また、復元側の装置においても、差分ファイル中のヘッダ情報を基に連続した一つの更新可能領域のみを参照して更新前データと差分データとから更新後データを正常に復元することが可能である。
【0033】
また、第2に、前記記憶領域情報を保持する記憶領域情報保持手段を備え、前記データ復元側の前記データ格納手段が、前記更新前データまたは前記更新後データをブロック単位で格納する記憶領域を有する場合に、前記記憶領域情報は、前記データ復元側のデータ格納手段における前記更新前データ及び前記更新後データを格納する記憶領域のアドレス情報を含むものであって、前記更新前データまたは前記更新後データをブロック単位で格納する記憶領域において、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域を一つの更新可能領域とし、この更新可能領域ごとの開始アドレス、終了アドレス、及びブロックサイズを含むものとする。
【0034】
これにより、更新前データ及び更新後データが複数のブロックからなり、ブロック単位で差分データの生成を行う場合において、記憶領域情報を基に連続した一つの更新可能領域のみを参照して差分データを生成することが可能となり、他の領域にまたがって参照して差分データを生成してしまうような不具合を防止可能である。
【0035】
また、第3に、前記領域設定手段は、前記更新前データ及び前記更新後データがデータ復元側のデータ格納手段の記憶領域に対応して複数のブロックに分割されている場合に、前記差分抽出時の更新前データの参照範囲として、前記記憶領域情報に基づいて対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを参照するように前記参照範囲を設定し、前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新たに前記参照範囲として設定するものとする。
【0036】
これにより、更新前データ及び更新後データが複数のブロックからなり、対象ブロックとその前後のブロックを合わせた複数のブロックを参照して差分データの生成を行う場合において、記憶領域情報を基に他の領域にまたがることなく、連続した一つの更新可能領域のみを参照して差分データを生成することが可能である。またこの場合、複数のブロックを参照することで、差分データのデータ量を削減可能である。したがって、復元側の装置では、データ格納手段の更新可能領域が不連続であっても、複数のブロックを参照しながら正常にデータの復元を行うことが可能となる。
【0037】
また、第4に、前記ヘッダ情報は、前記データ復元側のデータ格納手段におけるデータ復元時の更新後データの書き込み範囲を示すアドレス情報を含むものとする。
【0038】
また、第5に、前記アドレス情報は、前記データ復元側のデータ格納手段におけるデータ復元時の更新前データの参照範囲を含むものとする。
【0039】
これにより、復元側の装置では、ヘッダ情報を利用して、差分データと更新前データの参照による更新後データの復元処理と、復元した更新後データの書き込み処理とを適切に実行でき、復元時に他の領域にまたがって参照してしまったり、まだ参照範囲にあるブロックに更新後データを書き込んでしまうような不具合を防止可能である。このため、正常に更新前データから更新後データへの書き換えが可能となる。また、それらの動作を記憶領域情報を必要とせずに実行可能である。
【0040】
本発明は、第6に、更新前データから更新後データへデータを書き換えるための差分データを生成する差分データ生成方法であって、前記更新前データ及び前記更新後データに関する、データ復元側のデータ格納手段における記憶領域の配置情報を含む記憶領域情報を基に、差分抽出時の更新前データの参照範囲を設定する領域設定ステップと、前記更新後データと、前記設定された参照範囲内の前記更新前データとを比較参照して差分データを生成する差分抽出ステップと、前記生成した差分データに、前記データ復元側のデータ格納手段におけるデータ復元時の対象データのアドレス情報を含むヘッダ情報を付加した差分ファイルを生成する差分ファイル生成ステップと、を有する差分データ生成方法を提供する。
【0041】
これにより、例えばデータ復元側のデータ格納手段において更新対象のデータを格納する更新可能領域とユーザデータなどを格納する更新不可領域とが混在して更新可能領域が不連続になっている場合であっても、記憶領域情報を基に連続した一つの更新可能領域のみを参照して差分データを生成することが可能となる。また、復元側の装置においても、記憶領域情報を基に連続した一つの更新可能領域のみを参照して更新前データと差分データとから更新後データを正常に復元することが可能である。
【0042】
また、第7に、前記データ復元側の前記データ格納手段が、前記更新前データまたは前記更新後データをブロック単位で格納する記憶領域を有する場合であり、前記記憶領域情報は、前記データ復元側のデータ格納手段における前記更新前データ及び前記更新後データを格納する記憶領域のアドレス情報を含むものであって、前記更新前データまたは前記更新後データをブロック単位で格納する記憶領域において、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域を一つの更新可能領域とし、この更新可能領域ごとの開始アドレス、終了アドレス、及びブロックサイズを含むものである場合に、前記領域設定ステップにおいて、前記更新前データ及び前記更新後データがデータ復元側のデータ格納手段の記憶領域に対応して複数のブロックに分割されている場合に、前記差分抽出時の更新前データの参照範囲として、前記記憶領域情報に基づいて対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを参照するように前記参照範囲を設定し、前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新たに前記参照範囲として設定することとする。
【0043】
これにより、更新前データ及び更新後データが複数のブロックからなり、対象ブロックとその前後のブロックを合わせた複数のブロックを参照して差分データの生成を行う場合において、記憶領域情報を基に他の領域にまたがることなく、連続した一つの更新可能領域のみを参照して差分データを生成することが可能である。またこの場合、複数のブロックを参照することで、差分データのデータ量を削減可能である。したがって、復元側の装置では、データ格納手段の更新可能領域が不連続であっても、複数のブロックを参照しながら正常にデータの復元を行うことが可能となる。
【0044】
本発明は、第8に、上記第6または第7に記載の差分データ生成方法の手順をコンピュータにより実行するためのプログラムを提供する。
【0045】
このプログラムの実行により、復元側のデータ格納手段上で更新不可領域と更新可能領域が混在して更新前データや更新後データの格納領域が不連続であったり、異なるブロックサイズの格納領域が混在する場合であっても、データ更新を正しく、かつ単純な計算手順で効率良く実行することが可能となる。
【0046】
本発明は、第9に、通信手段を介して受信した差分データを用いて、更新前データから更新後データを復元してデータを書き換える更新後データ復元装置であって、前記更新前データ及び前記更新後データを格納するデータ格納手段と、前記通信手段を介して送られてきた差分データ及びデータ復元時の前記データ格納手段における対象データのアドレス情報を受信する受信手段と、前記アドレス情報に基づき指定される前記データ格納手段における参照範囲の更新前データを参照して、この更新前データと前記差分データとから更新後データを復元するデータ復元手段と、前記復元した更新後データを保持するバッファ手段と、前記保持した更新後データを前記アドレス情報に基づき指定される前記データ格納手段における書き込み範囲に書き込むデータ書き込み手段と、を備えた更新後データ復元装置を提供する。
【0047】
これにより、例えばデータ格納手段において更新対象のデータを格納する更新可能領域とユーザデータなどを格納する更新不可領域とが混在して更新可能領域が不連続になっている場合であっても、データ復元手段ではアドレス情報に基づき連続した一つの更新可能領域のみを参照して更新後データを復元することが可能となる。この場合、復元時にアドレス変換等の処理が不要であり、少ない簡単な手順で復元処理が可能である。
【0048】
また、第10に、前記アドレス情報は、前記差分データを生成する差分データ生成装置において、前記更新前データ及び前記更新後データに関する前記データ格納手段における記憶領域の配置情報を含む記憶領域情報が保持され、この記憶領域情報を基に生成されるものであって、前記データ格納手段におけるデータ復元時の更新後データの書き込み範囲を含むものとする。
【0049】
また、第11に、前記アドレス情報は、前記データ格納手段におけるデータ復元時の更新前データの参照範囲を含むものとする。
【0050】
これにより、アドレス情報に基づき、差分データと更新前データの参照による更新後データの復元処理と、復元した更新後データの書き込み処理とを少量のメモリにおいて適切に実行でき、復元時に他の領域にまたがって参照してしまったり、まだ参照範囲にあるブロックに更新後データを書き込んでしまうような不具合を防止可能である。このため、一つのデータ格納メモリ上において正常に更新前データから更新後データへの書き換えが可能となる。
【0051】
また、第12に、前記データ格納手段は、前記更新前データをブロック単位で複数のブロックに分割して格納するもので、このデータ格納手段の記憶領域について、前記差分データ生成装置に保持された記憶領域情報によって、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域が一つの更新可能領域として定義されており、前記データ復元手段は、前記アドレス情報に基づいて前記データ格納手段における対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを前記参照範囲として参照して前記更新後データを復元し、前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新たに前記参照範囲として参照して復元するものとする。
【0052】
これにより、更新前データ及び更新後データが複数のブロックからなり、対象ブロックとその前後のブロックを合わせた複数のブロックを参照して更新データの復元を行う場合に、データ格納手段の更新可能領域が不連続であっても、アドレス情報を基に他の領域にまたがることなく、連続した一つの更新可能領域のみを参照して正常にデータの復元を行うことが可能となる。
【0053】
また、第13に、前記バッファ手段は、リングバッファ方式のバッファにより構成され、前記ブロックごとに復元された更新後データをそれぞれ保持する複数の領域を有しており、前記データ書き込み手段は、前記バッファ手段に保持された更新後データの前記データ格納手段における書き込み範囲が、前記データ復元手段によるデータ復元時の参照範囲から外れた場合に、該当する更新後データを前記バッファ手段から前記データ格納手段に書き込み、その後前記バッファ手段における書き込み完了した更新後データの保持領域の開放を指示するものとする。
【0054】
これにより、リングバッファ方式のバッファ手段を用いることで、データ格納手段を最小限のメモリ容量として、更新後データの復元処理と、復元した更新後データの書き込み処理とを簡単かつ適切に実行でき、一つのデータ格納メモリ上において正常に更新前データから更新後データへの書き換えが可能となる。また、バッファ手段についても、メモリ容量を削減できる。例えば、バッファ手段の各領域のサイズは、データ格納手段における最大ブロックサイズとすればよい。また、バッファ手段の領域数(ブロック数)nは、復元時に参照するブロック数をkとすると、k=2n−1の関係が成り立つため、ブロック数n=(k+1)/2の領域を設けるようにすれば十分である。
【0055】
本発明は、第14に、通信手段を介して受信した差分データを用いて、更新前データから更新後データを復元してデータを書き換える更新後データ復元方法であって、前記通信手段を介して送られてきた差分データ及び前記更新前データを格納するデータ格納手段におけるデータ復元時の対象データのアドレス情報を受信する受信ステップと、前記アドレス情報に基づき指定される前記データ格納手段における参照範囲の更新前データを参照して、この更新前データと前記差分データとから更新後データを復元するデータ復元ステップと、前記復元した更新後データを保持するバッファリングステップと、前記保持した更新後データを前記アドレス情報に基づき指定される前記データ格納手段における書き込み範囲に書き込むデータ書き込みステップと、を有する更新後データ復元方法を提供する。
【0056】
これにより、例えばデータ格納手段において更新対象のデータを格納する更新可能領域とユーザデータなどを格納する更新不可領域とが混在して更新可能領域が不連続になっている場合であっても、アドレス情報に基づき連続した一つの更新可能領域のみを参照して更新後データを復元することが可能となる。この場合、復元時にアドレス変換等の処理が不要であり、少ない簡単な手順で復元処理が可能である。
【0057】
また、第15に、前記アドレス情報は、前記差分データを生成する差分データ生成装置において、前記更新前データ及び前記更新後データに関する前記データ格納手段における記憶領域の配置情報を含む記憶領域情報が保持され、この記憶領域情報を基に生成されるものであって、前記データ格納手段におけるデータ復元時の更新後データの書き込み範囲を含むものであり、前記データ格納手段が、前記更新前データをブロック単位で複数のブロックに分割して格納するもので、このデータ格納手段の記憶領域について、前記差分データ生成装置に保持された記憶領域情報によって、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域が一つの更新可能領域として定義されている場合に、前記データ復元ステップにおいて、前記アドレス情報に基づいて前記データ格納手段における対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを前記参照範囲として参照して前記更新後データを復元し、前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新たに前記参照範囲として参照して復元することとする。
【0058】
また、第16に、前記アドレス情報は、前記データ格納手段におけるデータ復元時の更新前データの参照範囲を含むものとする。
【0059】
これにより、更新前データ及び更新後データが複数のブロックからなり、対象ブロックとその前後のブロックを合わせた複数のブロックを参照して更新データの復元を行う場合に、データ格納手段の更新可能領域が不連続であっても、アドレス情報を基に他の領域にまたがることなく、連続した一つの更新可能領域のみを参照して正常にデータの復元を行うことが可能となる。
【0060】
また、第17に、前記バッファリングステップにおいて、リングバッファ方式のバッファにより構成され複数の領域を有するバッファ手段を用いて、前記ブロックごとに復元された更新後データを前記バッファ手段の複数の領域のうちの一つに保持し、前記データ書き込みステップにおいて、前記バッファ手段に保持された更新後データの前記データ格納手段における書き込み範囲が、前記データ復元ステップにおけるデータ復元時の参照範囲から外れた場合に、該当する更新後データを前記バッファ手段から前記データ格納手段に書き込み、その後前記バッファ手段における書き込み完了した更新後データの保持領域の開放を指示することとする。
【0061】
これにより、リングバッファ方式のバッファ手段を用いることで、データ格納手段を最小限のメモリ容量として、更新後データの復元処理と、復元した更新後データの書き込み処理とを簡単かつ適切に実行でき、一つのデータ格納メモリ上において正常に更新前データから更新後データへの書き換えが可能となる。
【0062】
本発明は、第18に、上記第14〜第17のいずれかに記載の更新後データ復元方法の手順をコンピュータにより実行するためのプログラムを提供する。
【0063】
このプログラムの実行により、復元側のデータ格納手段上で更新不可領域と更新可能領域が混在して更新前データや更新後データの格納領域が不連続であったり、異なるブロックサイズの格納領域が混在する場合であっても、データ更新を正しく、かつ単純な計算手順で効率良く実行することが可能となる。
【0064】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1は本発明の実施形態に係るデータ更新方法を実現するデータ更新装置の機能的構成を示すブロック図である。本実施形態では、データ更新装置の一例として、携帯電話機等の端末装置に格納されている動作プログラム等を含むデータのバージョンを更新する場合の構成及び動作の例を説明する。
【0065】
本実施形態のデータ更新装置は、サーバ装置において設けられる差分データ生成送出部110と、携帯電話機等の端末装置において設けられる差分データ復元部120とが通信用の有線または無線のネットワーク130を介して接続されて構成されている。このデータ更新装置は、例えば、移動体通信システムの無線通信網によるネットワークを介して、差分データをサーバ装置から端末装置へ転送することによって、通信回線経由で端末装置内のデータを更新する場合などに用いられる。
【0066】
差分データ生成送出部110は、更新前データ101及び更新後データ102を格納するハードディスク等からなるデータ格納部111と、更新前データ101と更新後データ102との差分を抽出して差分データを生成する差分抽出部112と、生成した差分データを結合した送信用の結合ファイル105を格納する送信バッファ113と、結合ファイル105等のデータをネットワーク130を経由して差分データ復元部120に対して送信する送信部114とを備えている。また、受信側の端末装置のメモリにおけるコード領域(更新可能領域)のブロック配置情報を含むコード領域情報ファイル115を記憶する領域情報記憶部118と、コード領域情報ファイル115の内容に基づき差分抽出時の参照範囲を設定して差分抽出部112に対して指示するコード領域設定部116と、各部の制御を行う制御部117とを備えている。
【0067】
ここで、コード領域設定部116、領域情報記憶部118及び制御部117が特許請求の範囲に記載の領域設定手段の機能を実現する。また、コード領域情報ファイル115が特許請求の範囲に記載の記憶領域情報に相当し、領域情報記憶部118が特許請求の範囲に記載の記憶領域情報保持手段に相当する。また、差分抽出部112及び制御部117が特許請求の範囲に記載の差分抽出手段の機能を実現する。また、差分抽出部112、送信バッファ113及び制御部117が特許請求の範囲に記載の差分ファイル生成手段の機能を実現する。
【0068】
差分データ復元部120は、更新するプログラム等のデータを格納する書換え可能不揮発メモリ(フラッシュROMなど)等によるデータ格納メモリ121を備えている。また、差分データ生成送出部110から送られた結合ファイル105等のデータを受信する受信部122と、受信した結合ファイル105を格納する受信バッファ123と、結合ファイル105とデータ格納メモリ121内の更新前データとを参照しながらブロック毎に更新後データを復元する復元部124と、復元された更新後データを一旦保持する復元バッファ125と、復元バッファ125に格納された更新後データをデータ格納メモリ121に対して書き込むメモリ書き込み部126と、各部の制御を行う制御部127とを備えている。
【0069】
ここで、データ格納メモリ121が特許請求の範囲に記載のデータ格納手段に相当し、復元バッファ125が特許請求の範囲に記載のバッファ手段に相当する。また、受信部122及び受信バッファ123が特許請求の範囲に記載の受信手段の機能を実現する。また、復元部124及び制御部127が特許請求の範囲に記載のデータ復元手段の機能を実現する。また、メモリ書き込み部126及び制御部127が特許請求の範囲に記載のデータ書き込み手段の機能を実現する。
【0070】
本実施形態では、データ格納メモリ121において、ユーザ領域201、コード領域202、ユーザ領域203、コード領域204…のように、プログラム等の更新対象のデータを保持するコード領域(更新可能領域)202,204と、ユーザデータ等の更新しないデータを保持するユーザ領域(更新不可領域)201,203とが混在し、かつ、コード領域202とコード領域204でブロックサイズが異なる場合を示す。
【0071】
次に、データ更新時のデータの流れについて概略を説明する。差分データ生成送出部110のデータ格納部111において、更新前データ101及び更新後データ102はそれぞれ連続したデータの状態で格納される。すなわち、図1のように端末装置のデータ格納メモリ121においてコード領域202,204が不連続であっても、これに対応する複数のコード領域202,204のデータが結合された状態で格納される。それぞれのコード領域202,204は、更新前データ及び更新後データをメモリ上に格納した時の連続する同じサイズのブロック群を示している。
【0072】
ここでは、端末装置のデータ格納メモリ121におけるコード領域のブロックa,b,c,d,e,f,gにそれぞれ対応する複数ブロックのデータとして、更新前データ101はa1〜g1、更新後データ102はa2〜g2を格納するものとする。このように更新前データ101、更新後データ102、差分データの結合ファイル105などはブロックという単位で区切られている。ブロックは、差分データ復元部120のデータ格納メモリ121における一括消去時の単位である。なお、更新前データ101及び更新後データ102は、他の装置などから提供されるものとする。
【0073】
差分抽出部112は、制御部117の指示に基づき、更新前データ101と更新後データ102との差分を抽出する。このとき、前述したBlock-Moveアルゴリズムにより、データ格納部111に格納された更新前データ101と更新後データ102とを比較して一致するデータ列を検索し、一致するデータ列はそのまま更新前データから更新後データへMoveデータとして移動するようにしてコピーし、一致しないデータ列は新たなデータ列をAddデータとして追加して書き込むことを指示する命令を含む差分データを生成する。この差分データの生成方法については、前記非特許文献1及び非特許文献2に詳しく記載されている。本実施形態では、更新対象のブロックの前後を含めた複数ブロックを比較参照することにより、ブロック毎に差分データを生成する場合の例を説明する。
【0074】
そして、差分抽出部112は、ブロック毎に生成した差分データにヘッダ情報を付け、所定単位の送信用データとしてまとめた結合ファイル105にして、これを送信バッファ113に格納する。この結合ファイル105は、更新前データ101から更新後データ102への変更箇所を示した差分データa12〜g12を結合したものとなる。そして、送信部114より結合ファイル105をネットワーク130を介して送信する。
【0075】
差分データ復元部120では、差分データ生成送出部110から転送された結合ファイル105を受信部122で受信し、受信バッファ123に格納する。復元部124は、受信バッファ123中の結合ファイル105とデータ格納メモリ121中の更新前データとを参照しながら更新後データを復元する。本実施形態では、更新対象のブロックの前後を含めた複数ブロックを参照することにより、ブロック毎に更新後データを復元する場合の例を説明する。そして、復元部124は、ブロック毎に復元した更新後データを復元バッファ125に一時的に格納して蓄積する。
【0076】
復元バッファ125は、複数(図示例では2つ)の領域125a,125bに分かれた構成となっており、それぞれの領域のサイズはデータ格納メモリ121中の最大のブロックのサイズと同じとする。この復元バッファ125は、リングバッファ方式で管理され、データの書き込み、読み出しが順次行われる。リングバッファについては、(石畑清著、「アルゴリズムとデータ構造」、岩波講座ソフトウエア科学、岩波書店、1989年、p.46-48)が詳しい。
【0077】
データ格納メモリ121は、データの更新が始まる前は更新前データを格納している。復元部124は、1つのブロックの復元が終わると、データ格納メモリ121中の参照する範囲をアドレスが大きいブロックの側に1ブロック分ずらす。そして、メモリ書き込み部126は、データ格納メモリ121中のもう参照しないブロックに対して、復元バッファ125に保持された復元済みの更新後データを書き込んでいく。データ格納メモリ121への更新後データの書き込みが終わると、書き込んだ更新後データが格納されていた復元バッファ125の領域を開放する。
【0078】
次に、図2を参照してコード領域情報ファイル115の内容と、データ格納メモリ121の構造について説明する。
【0079】
図2(A)はコード領域情報ファイル115の内容の一例を示したものである。なお、この図示例において、行番号161は説明を容易にするために便宜的に示したものであり、実際のコード領域情報ファイル115内には存在しない。図2(B)はデータ格納メモリ121の構造の一例を示したものである。
【0080】
現在の端末装置等の組込み機器、例えば携帯電話機では、ソフトウエアプログラム等のデータ格納のためにフラッシュROMなどの書換え可能不揮発メモリを用いていることが多い。フラッシュROMは、読み出しは通常のRAMと同様にアドレスの指定のみで参照できるが、データの変更は、ブロックと呼ばれる単位で一度に消去した後に、新たなデータを書き込むという方式を取らなければならない。一つの機器の中でも、アドレス空間の部分によってブロックのサイズが異なることがある。またフラッシュROMを利用する際に、コード(プログラム)を格納するコード領域とユーザデータを格納するユーザ領域とを、ブロック単位で分けることがある。
【0081】
図2(B)の例では、メモリ上のアドレス150において、0x1000から0x5000-1、及び0x7000から0x8800-1まではコード領域202,204であり、0x0から0x1000-1、及び0x5000から0x7000-1まではユーザ領域201,203である。コード領域202は、アドレス0x1000〜0x5000-1、ブロックa〜dの4ブロックに相当する。コード領域204は、アドレス0x7000〜0x8800-1、ブロックe〜gの3ブロックに相当する。また、ユーザ領域201はアドレス0x0〜0x1000-1、ユーザ領域203はアドレス0x5000〜0x7000-1にそれぞれ相当する。
【0082】
コード領域情報ファイル115は、コード領域202,204のブロック配置に関する情報を示している。一つのコード領域は、コード領域を表す予約語codeareaに続く中括弧{ }によって囲まれた範囲によって表現される。中括弧{ }の中には、コード領域の開始アドレスを示すhead、コード領域の最終アドレスを示すtail、コード領域内の各ブロックの大きさを示すblocksizeにより各要素の値が指定されている。
【0083】
図2(A)の例では、最初のコード領域202が1行目から5行目に示されている。headよりコード領域の開始アドレスが0x1000であることが分かる。また、tailよりコード領域の最終アドレスが0x5000-1であることが分かる。さらに、blocksizeよりそのコード領域内ではブロックのサイズがすべて0x1000であることが分かる。6行目から10行目に示される2番目のコード領域204についても同様に、開始アドレスが0x7000、最終アドレスが0x8800-1、ブロックサイズが0x800であることが分かる。
【0084】
また、図3を参照して結合ファイル105のフォーマットについて説明する。結合ファイル105は、データ格納メモリ121上の各ブロック毎に更新前データと更新後データとを比較して生成された差分データにヘッダ情報を付け、所定単位ごとまたは全体を結合したファイルとしたものである。なお、このような各ブロックの差分データにヘッダ情報を付加したものを差分ファイルとも呼ぶ。
【0085】
図3は1つのブロックに対する差分ファイルのフォーマットの一例を示したものである。1ブロックの差分ファイルフォーマット170は、ブロックデータ長171、書換えアドレス172、ブロック差分データ173より構成される。ブロックデータ長171は、1つのブロックに対する差分ファイルの全体の長さを示す。書換えアドレス172は、コード領域情報ファイル115を参照して生成されるもので、復元した更新後データがデータ格納メモリ121上に格納される領域の先頭アドレスを示す。ブロック差分データ173は、差分抽出部112によって抽出、生成された1ブロックの差分データである。なお、差分ファイルには、差分データに付加するヘッダ情報として、上記書換えアドレス172において、復元した更新後データの書き込み範囲を示すアドレス情報の他に、データ復元時の更新前データの参照範囲を示すアドレス情報を含めるようにして、データ復元側へ転送することも可能である。
【0086】
さらに、図4を参照して、図2(B)に示したデータ格納メモリ121の構造と図3に示した差分ファイルフォーマットとの関係を説明する。図4はデータ格納メモリ121内のコード領域202のブロックbを復元する際のアドレス及び参照範囲を示したものである。ここでは、差分データの生成及び更新後データの復元の際に対象のブロックとその前後の1ブロックの計3ブロックを参照する場合の例を示す。
【0087】
ブロックbを復元する際には、このブロックbと前後1ブロックa,cを参照する。このため、データ格納メモリ121のアドレス150上での参照範囲152はブロックaからブロックc、すなわち0x1000〜0x5000-1となる。一方、復元した更新後データは同じブロックbへ書き込むので、書き込み範囲153はブロックb、すなわち0x2000〜0x3000-1となる。更新後データを書き込む際の書換えアドレス151は、書き込み範囲153の先頭アドレス、すなわち0x2000となる。この書換えアドレス151は、図3に示したように差分ファイルフォーマット170においてブロック差分データ173の前に設けられ、コード領域設定部116から得たコード領域の配置情報に基づき、差分抽出部112が付加する。
【0088】
次に、差分データ生成送出部110の動作について、図5を参照しながら説明する。図5は本実施形態の差分データ生成送出部における差分データ生成の動作手順を示すフローチャートである。図5のフローチャートは、すべてのコード領域について処理するための外側のループと、それぞれのコード領域中のすべてのブロックを処理するための内側のループとの二重のループからなる。なお、ここでは差分データを生成する際に更新前データ及び更新後データの対象のブロックとその前後の1ブロックの計3ブロックを参照する場合を説明する。
【0089】
外側のループ(ステップS401〜S402)は、コード領域情報ファイル115中に定義されているすべてのコード領域について処理を行う。
【0090】
制御部117は、コード領域情報ファイル115中に処理すべきコード領域が残っているか否かを確認する(ステップS401)。ここで、コード領域が残っていなければ動作を終了する。コード領域が残っている場合は、次にコード領域設定部116に、コード領域情報ファイル115からコード領域を1つ読込むよう指示する(ステップS402)。そして、制御部117は、読込んだ1つのコード領域に関する処理を次のステップS403からステップS409の内側のループで行った後、ステップS401に戻って外側のループの実行を続ける。
【0091】
内側のループ(ステップS403〜S409)は、ステップS402で読込んだ1つのコード領域について処理を行う。
【0092】
まず、制御部117は、処理中のコード領域の中に、処理していないブロックが残っているか否かを判断する(ステップS403)。ここで、未処理ブロックが残っていなければステップS401に戻り、次のコード領域の処理に移る。未処理ブロックが残っている場合はステップS404に進む。
【0093】
次に、制御部117は、差分抽出を行って差分データを生成していないブロック群の中から先頭の、つまり一番開始アドレスの小さいブロックを取り出す(ステップS404)。そして、制御部117は、取り出したブロックがコード領域内の先頭か否かを判断する(ステップS405)。ここで、コード領域の先頭であれば、ステップS406に進み、処理中のブロックとその1つ後ろのブロックの計2ブロックを参照しながら差分生成を行うよう、差分抽出部112に指示する(ステップS406)。ただし、コード領域中にブロックが一つしかない場合は、処理中のブロックのみを参照する。次いで、制御部117はステップS406の終了後、ステップS403に戻り処理を繰り返す。
【0094】
また、制御部117がステップS405でコード領域の先頭ではないと判断した場合はステップS407に進み、処理中のブロックがコード領域の最後であるか否かを判断する(ステップS407)。ここで、コード領域の最後である場合は、1つ前のブロックと処理中のブロックの計2ブロックを参照しながら差分生成を行うよう差分抽出部112に指示する(ステップS408)。次いで、制御部117はステップS408の終了後、ステップS403に戻り処理を繰り返す。
【0095】
また、ステップS407において処理中のブロックがコード領域の最後でない場合は、処理中のブロックと前後の1ブロックの計3ブロックを参照しながら差分生成を行うよう差分抽出部112に指示する(ステップS409)。
【0096】
上記外側と内側のそれぞれのループは、プログラムで実現する場合は、C言語、Java言語におけるfor文、while文などの繰り返しを示すプログラムで実現することができる。
【0097】
外側のループにおいて、ステップS402では、図2(A)におけるコード領域情報ファイル115の中の、キーワードcodeareaとそれに続く中括弧で囲まれた部分を、1つのコード領域として先頭から順に読み込むことを意味している。また、ステップS401では、既に読み込んだコード領域の次に続くコード領域がコード領域情報ファイル115の中に残っているか、あるいは、残っておらずに、最後に読み込んだコード領域の後ろにはファイルの最後まで何もデータが入っていない(空白、改行、タブ、注釈などの意味を持たないデータしか入っていない)かを判断する。
【0098】
内側のループでは、外側のループにおけるステップS402で読み込んだ1つのコード領域を処理する。図2(A)のように、コード領域情報ファイル115中には、コード領域の先頭アドレス、最終アドレス、ブロックサイズが示されている。例えば、C言語、Java言語などを用いてプログラムで内側のループを実現する場合には、内側のループは、1つの変数の初期値を先頭アドレス、終了するときの判断に用いる値を最終アドレス、一回のイテレーション(繰り返し)で変数が増加する値をブロックサイズとしたfor文で実現することができる。
【0099】
次に、差分データ復元部120の動作について、図6を参照しながら説明する。図6は本実施形態の差分データ復元部における更新後データ復元の動作手順を示すフローチャートである。なお、ここでは更新後データを復元する際に差分ファイルを用いて更新前データの対象のブロックとその前後の1ブロックの計3ブロックを参照する場合を説明する。
【0100】
制御部127は、受信バッファ123の中から先頭の差分ファイル(先頭の1ブロック分に相当する)を取り出す(ステップS501)。この差分ファイルには、ブロック毎の差分データと書換えアドレス(書き込み範囲)の情報が含まれている。なお、書換えアドレスには、復元した更新後データの書き込み範囲を示す情報が含まれるが、この書き込み範囲と共にデータ復元時の更新前データの参照範囲を示す情報を含めるようにしても良い。次に、データ格納メモリ121の参照範囲を参照しながら、1ブロックの復元を行うよう復元部124に指示する(ステップS502)。そして、復元した更新後データを復元バッファ125に書き込む(ステップS503)。
【0101】
次に、差分ファイルが受信バッファ123中に残っているか否かを判断する(ステップS504)。ここで、差分ファイルが残っていない場合は、ステップS510に進み、処理中の復元バッファ125に書かれている内容をデータ格納メモリ121の書き込み先アドレスが指すブロックに対して書き込む(ステップS510)。また、差分ファイルが残っている場合は、ステップS505に進み、受信バッファ123の中の先頭の差分ファイルを取り出す(ステップS505)。
【0102】
そして、取り出した差分ファイルとデータ格納メモリ121の参照範囲を参照しながら、1ブロック分のデータ復元を行うよう復元部124に指示する(ステップS506)。その後、復元した更新後データを復元バッファ125の空いている領域に書き込む(ステップS507)。次に、1回前に復元して復元バッファ125に書き込まれている更新後データを、そのデータの書き込み先アドレスに従ってデータ格納メモリ121の該当ブロックに対して書き込む(ステップS508)。次いで、ステップS508で参照した復元バッファ125の領域を開放する(ステップS509)。その後、ステップS504に戻り、次の差分ファイルの処理に移る。
【0103】
ここで、図6に示したアルゴリズムによるデータ復元時の動作を図7及び図8を参照して具体的に説明する。ここでは簡単のため、データ格納メモリ121において連続した4つのブロックa〜dからなるコード領域に適用した場合を示す。
【0104】
まず図7(A)に示すように、ブロックaの更新後データの復元を行う。このとき、ブロックaがコード領域の先頭であるため、参照範囲は対象のブロックaと後ろのブロックbとを合わせたa〜bとなる。この参照範囲のブロックa〜bの更新前データa1,b1と差分データa12とに基づき、更新後データa2を復元して復元バッファ125の一方の領域(第1領域)125aに格納する。
【0105】
次いで図7(B)に示すように、ブロックbの更新後データの復元を行う。このときの参照範囲は、対象のブロックbと前後のブロックa,cとを合わせたa〜cとなる。この参照範囲のブロックa〜cの更新前データa1,b1,c1と差分データb12とに基づき、更新後データb2を復元して復元バッファ125の他方の領域(第2領域)125bに格納する。
【0106】
そして図7(C)に示すように、ブロックaの更新後データの書き込みを行う。このときの書き込み範囲は、対象のブロックaであり、復元バッファ125の第1領域125aに蓄積された更新後データa2をデータ格納メモリ121のブロックaに書き込む。その後、図7(D)に示すように、書き込み完了した更新後データa2が格納されていた復元バッファ125の第1領域125aを開放する。
【0107】
次に、図7(E)に示すように、ブロックcの更新後データの復元を行う。このときの参照範囲は、対象のブロックcと前後のブロックb,dとを合わせたb〜dとなる。この参照範囲のブロックb〜dの更新前データb1,c1,d1と差分データc12とに基づき、更新後データc2を復元して前記開放された復元バッファ125の第1領域125aに格納する。
【0108】
そして図7(F)に示すように、ブロックbの更新後データの書き込みを行う。このときの書き込み範囲は、対象のブロックbであり、復元バッファ125の第2領域125bに蓄積された更新後データb2をデータ格納メモリ121のブロックbに書き込む。その後、図8(A)に示すように、書き込み完了した更新後データb2が格納されていた復元バッファ125の第2領域125bを開放する。
【0109】
次に、図8(B)に示すように、ブロックdの更新後データの復元を行う。このとき、ブロックdがコード領域の最後であるため、参照範囲は対象のブロックdと前のブロックcとを合わせたc〜dとなる。この参照範囲のブロックc〜dの更新前データc1,d1と差分データd12とに基づき、更新後データd2を復元して復元バッファ125の第2領域125bに格納する。
【0110】
そして図8(C)に示すように、ブロックcの更新後データの書き込みを行う。このときの書き込み範囲は、対象のブロックcであり、復元バッファ125の第1領域125aに蓄積された更新後データc2をデータ格納メモリ121のブロックcに書き込む。その後、図8(D)に示すように、書き込み完了した更新後データc2が格納されていた復元バッファ125の第1領域125aを開放する。
【0111】
次に、図8(E)に示すように、ブロックdの更新後データの書き込みを行う。このときの書き込み範囲は、対象のブロックdであり、復元バッファ125の第2領域125bに蓄積された更新後データd2をデータ格納メモリ121のブロックdに書き込む。
【0112】
なお、上述した実施形態では、処理中の対象のブロック及びその前後のブロックを参照しながら差分データの生成と更新後データの復元を行う例を示したが、参照するブロックをさらに増やすことも可能である。この場合、差分データ生成時には差分抽出部112が拡大された参照範囲を参照しながら差分抽出を行うことになり、さらにコード領域の先頭付近及び最終付近のブロックでの参照範囲の制限が変わってくるため、図5のステップS405、S407における条件分岐を修正する必要がある。
【0113】
このように複数のブロックを参照することによって、ブロックをまたがって大きな移動をしているデータについても更新前データから更新後データにコピーすることができ、差分データの量をより減らすことができる。図9は、ある組込み機器に上記差分データ生成方法を適用した場合の参照ブロック数と差分データサイズとの関係を示したグラフである。この図9は、更新前データ、更新後データをそれぞれ16Mバイト(bytes)、1つのブロックのサイズを128バイトとしたサンプルデータを用いて、参照ブロック数の増加に対する差分データのデータ量の変化を演算により求めた結果を示したものである。
【0114】
1つのブロックのみを参照して1つのブロックを復元する場合は、差分データのデータ量の総和は約6.5Mバイトとなり、圧縮率は40%程度である。この場合には復元バッファは1ブロック分のみでよい。また、上述した例のように前後1ブロックも含めて合計3ブロックを参照した場合は、差分データのデータ量の総和は約3.5Mバイトまで小さくなり、圧縮率は22%程度である。この場合には、復元バッファは2ブロック分の領域を用意すればよい。また、前後2ブロックを含めて合計5ブロックを参照した場合は、差分データのデータ量の総和は約1.7Mバイトまで小さくなり、圧縮率は11%程度である。この場合に必要な復元バッファの領域は3ブロック分である。なお、図9より、参照するブロックを5ブロック以上増やしても、圧縮率はあまり上がらないことが分かる。
【0115】
ここで、必要となる復元バッファの領域(ブロック数)nは、参照するブロック数をkとすると、k=2n−1の関係があるため、必要復元バッファブロック数n=(k+1)/2となる。例えば、上記のように参照ブロック数が3のときは2ブロック分、5のときは3ブロック分の復元バッファを設ければよい。
【0116】
このように本実施形態では、差分データ生成送出部110において、差分データ復元部120のデータ格納メモリ121におけるコード領域の配置情報に相当するコード領域情報ファイル115を設けている。データ更新用の差分データを生成する際には、コード領域情報ファイル115を基に参照範囲を設定し、差分データ復元部120のデータ格納メモリ121においてアドレスが連続しかつ同一ブロックサイズである1つのコード領域ごとにブロック単位で更新前データと更新後データとの差分を抽出する。すなわち、異なるブロックサイズのコード領域やアドレスが不連続のコード領域にまたがって比較参照を行って差分データを生成することのないようにする。またこのとき、コード領域情報ファイル115を基に書換えアドレスを生成し、これをヘッダ情報として差分データに付加して差分ファイル(結合ファイル105)を生成する。この書換えアドレスは、差分データを用いて復元した更新後データを書き込むための書き込み範囲の情報を含む、データ格納メモリ121上のアドレス情報である。なお、書換えアドレスには、差分データを用いて更新後データを復元するための参照範囲の情報を含めるようにしても良い。
【0117】
これにより、結合ファイル105を受信した差分データ復元部120では、結合ファイル105のヘッダ情報に基づき指定された参照範囲を参照して、更新前データと差分データとから更新後データを復元することができる。この場合、復元側でアドレス変換などの処理が不要であり、少ない簡単な処理ステップで正しい更新後データの復元が可能である。
【0118】
また、差分データ生成送出部110では対象のブロックを含む前後のブロックを参照して差分データを生成し、差分データ復元部120ではこの差分データを用いて対象のブロックを含む前後のブロックを参照して更新後データを復元し、復元バッファ125に書き込むようにする。このようにブロック毎に分割して差分データの生成及び更新後データの復元を行うことで、演算処理の効率を上げることができ、これに加えて、複数のブロックを参照することによって、差分データのデータ量を削減することが可能である。
【0119】
また、復元バッファ125としてリングバッファ方式のバッファを用いて、復元後の蓄積した更新後データのうち、データ格納メモリ121において復元時に参照されなくなった(参照範囲から外れて不要となった)ブロックの更新後データを順次書き込み、更新前データを書き換えるようにする。これにより、更新前データと更新後データをそれぞれ格納するメモリを設けたりする必要がなく、データ格納メモリ121は最小限のメモリ容量で済み、少ないハードウェア資源で容易に正しくデータの更新を行うことが可能である。また、復元バッファ125についても、リングバッファ方式によりメモリ容量を小さくできる。
【0120】
上記のような本実施形態の構成及び動作により、以下のような効果が得られる。
【0121】
第1に、データ格納メモリ121の容量に制約があり、同一ブロックにおいて更新前データから更新後データに書き換えるような場合であっても、このデータ格納メモリ121の最大ブロック長の2倍のサイズ(復元時に前後3ブロックを参照する場合)の復元バッファ125と結合ファイル105を格納する受信バッファ123とをRAM上に設けるだけで、データ格納メモリ121上のデータを更新することができる。
【0122】
例えば従来の技術に記載した非特許文献1、非特許文献2に開示されているようなデータ更新方法では、主に、ハードディスクなどの大容量の記憶装置を持つ機器を対象とし、記憶装置において復元時に参照する更新前データを格納している領域と、復元した更新後データを格納する領域とが異なっている場合を想定している。これに対し、携帯電話機のような記憶領域の限られた組込み機器では、復元した更新後データを更新前データとは別の領域に格納する余裕がない。本実施形態ではフラッシュROM上に更新前データ及び更新後データを格納することとしているが、両方のデータを格納するためにフラッシュROMを2倍搭載してプログラムの更新をすることは、コスト的にも実装面積的にも困難である。また、復元した更新後データを一旦RAM上に展開し、展開したものをフラッシュROMに書き込む方式も考えられるが、RAMの容量に余裕がないと更新後データをすべて展開できないため、これも実現が困難である。また、RAMの場合には容量向上が消費電力の増大を招くことも大きなデメリットである。
【0123】
これに対し、本実施形態では、最小限のハードウェア資源によってデータの更新が可能である。
【0124】
第2に、更新対象のプログラム等のデータが格納されているコード領域と、ユーザが任意に格納するユーザデータ等が格納されているユーザ領域とが混在し、コード領域がデータ格納メモリ121上で不連続に配置されている場合であっても、複数のブロックを参照しながら正しく更新後データの復元を行うことができる。また、コード領域とユーザ領域とを区別してコード領域のみに対して処理を実行できるため、データ復元時にユーザ領域を参照したり、誤ってユーザ領域にデータを書き込んでしまうことを防止できる。
【0125】
コード領域とユーザ領域とが混在している場合、プログラムのバージョンアップの際には、コード領域のデータのみが1つのファイルに結合されて提供されることが多い。図14や図15に示した従来例のように、コード領域とユーザデータ領域が混在している場合に従来の差分生成、復元方法を用いると、コード領域とユーザ領域とを区別して認識せず、単にファイルやメモリ上の位置でしか参照範囲や書き込み範囲を設定できないため、差分生成時とデータ復元時とで参照範囲が異なってしまい、正常に復元することができない。また、更新前データをデータ格納メモリ121上に展開したときと同じ配置になるようにダミーデータを挿入した場合は、コード領域が不連続な部分では差分生成時にダミーデータを参照してしまい、データ復元時に参照すべきユーザ領域の内容と異なるため、正常に復元することができない。
【0126】
これに対し、本実施形態では、コード領域中の同じサイズの連続したブロック内のみを参照して差分生成及びデータ復元を行えるようにしているため、正常に更新後データの復元を行うことが可能である。また、受信側の機器においてデータ復元時にアドレス変換などの処理が不要であり、簡単な処理ステップで更新後データを復元することができる。
【0127】
図10は比較例として、従来の方法によるデータ復元時の動作を示したものである。この比較例は、図7及び図8に示した本実施形態における動作に対応して記載したものである。ここでは、データ格納メモリ601において4つのブロックa〜dの間に図中斜線で示すユーザ領域602が存在する場合を示す。
【0128】
データ復元の際には、参照範囲のブロックの更新前データと差分データとに基づき、更新後データを復元して復元バッファ603に格納し、復元後の更新後データをデータ格納メモリ601の書き込み範囲のブロックに書き込んでいくことになる。この比較例においては、図10(E)に示すように、ブロックcの更新後データの復元を行う際に、参照範囲としてユーザ領域602を参照してしまい、正常に復元することができない。
【0129】
上述したように、本実施形態によれば、書換え可能不揮発性メモリ上にデータを置き、更新対象のコード領域とデータ更新しないユーザ領域が混在し、異なるサイズのブロックが同じメモリ内で混在する場合であっても、データ更新を正しく、かつ単純な計算手順で実行することができる。すなわち、コード領域情報ファイル及びコード領域設定手段を備えることにより、複数ブロックを参照しつつ、少ないメモリの利用のみで、コード領域とユーザ領域の混在する書換え可能不揮発メモリ上のデータを書換えることができ、その実用的効果は大きい。
【0130】
なお、本発明は上述した実施形態に何ら限定されるものではなく、その要旨を逸脱しない範囲において種々の態様で実施し得るものである。
【0131】
上記実施形態では、メモリ空間上で連続しており、かつサイズが同じブロック群をコード領域として用いているが、これはその定義におけるコード領域の範囲内にデータの移動が限られている時に特に有効であり、単純なアルゴリズムを用いて差分生成、復元を行うことができる。
【0132】
メモリ空間上で不連続なブロック間でデータの移動が頻繁に行われるシステムにおいては、データの移動が行われる範囲のブロック群をメモリ空間上の連続性に関わりなく1つの論理的なコード領域として扱うことによって、効率の良い差分生成、復元を行うことも可能である。
【0133】
【発明の効果】
以上説明したように本発明によれば、メモリ容量等のハードウェア資源に制約のある機器であっても、メモリ上の同じ領域においてプログラム等のデータを更新前データから更新後データに書き換えて更新することができる。また、メモリ上で更新不可領域と更新可能領域が混在して更新前データや更新後データの格納領域が不連続であったり、異なるブロックサイズの格納領域が混在する場合であっても、データ更新を正しく、かつ単純な計算手順で効率良く実行することができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るデータ更新方法を実現するデータ更新装置の機能的構成を示すブロック図
【図2】本実施形態に係るコード領域情報ファイルの内容とデータ格納メモリの構造の一例を示した図で、(A)はコード領域情報ファイルの内容、(B)はデータ格納メモリの構造をそれぞれ示した図
【図3】本実施形態に係る結合ファイルにおける1つのブロックに対する差分ファイルのフォーマットの一例を示す図
【図4】本実施形態に係るデータ格納メモリ内のコード領域のブロックbを復元する際のアドレス及び参照範囲を示す図
【図5】本実施形態の差分データ生成送出部における差分データ生成の動作手順を示すフローチャート
【図6】本実施形態の差分データ復元部における更新後データ復元の動作手順を示すフローチャート
【図7】図6に示した更新後データ復元アルゴリズムによるデータ復元時の動作の具体例をステップ毎に示した図
【図8】図6に示した更新後データ復元アルゴリズムによるデータ復元時の動作の具体例をステップ毎に示した図
【図9】本実施形態に係る差分データ生成方法を適用した場合の参照ブロック数と差分データサイズとの関係を示したグラフ
【図10】本実施形態に対する比較例として、従来の方法によるデータ復元時の動作の具体例をステップ毎に示した図
【図11】差分データ抽出に用いる疑似コードを示す図
【図12】データ更新を行う際のデータの一例を示したもので、(A)は更新前データ、(B)は更新後データ、(C)はこれらの差分データをそれぞれ示す図
【図13】従来のデータ更新方法を用いて一つの書換え可能不揮発性メモリにおいてデータ更新を行う際に、更新後データの復元と書き込みを並行して行う場合の問題点を説明する図
【図14】従来のデータ更新方法を用いて一つの書換え可能不揮発性メモリにおいてデータ更新を行う際に、更新可能領域であるコード領域が不連続である場合の問題点を説明する図
【図15】従来のデータ更新方法を用いて一つの書換え可能不揮発性メモリにおいてデータ更新を行う際に、データ復元時の参照範囲の位置の相違を避けるためにダミーデータを挿入した場合の問題点を説明する図
【符号の説明】
101 更新前データ
102 更新後データ
105 結合ファイル
110 差分データ生成送出部
111 データ格納部
112 差分抽出部
113 送信バッファ
114 送信部
115 コード領域情報ファイル
116 コード領域設定部
117 制御部
118 領域情報記憶部
120 差分データ復元部
121 データ格納メモリ
122 受信部
123 受信バッファ
124 復元部
125 復元バッファ
126 メモリ書き込み部
127 制御部
130 ネットワーク
151 書換えアドレス
152 参照範囲
153 書き込み範囲
201,203 ユーザ領域
202,204 コード領域

Claims (18)

  1. 更新前データから更新後データへデータを書き換えるための差分データを生成する差分データ生成装置であって、
    ータ復元側のデータ格納手段における前記更新前データ及び前記更新後データに関する記憶領域の配置情報を含む記憶領域情報を基に、差分抽出時の更新前データの参照範囲を設定する領域設定手段と、
    前記更新後データと、前記設定された参照範囲の前記更新前データとを比較参照して差分データを生成する差分抽出手段と、
    前記生成した差分データに、前記データ復元側のデータ格納手段におけるデータ復元時の対象データのアドレス情報を含むヘッダ情報を付加した差分ファイルを生成する差分ファイル生成手段と、
    を備えた差分データ生成装置。
  2. 前記記憶領域情報を保持する記憶領域情報保持手段を備え、
    前記データ復元側データ格納手段が、前記更新前データまたは前記更新後データをブロック単位で格納する記憶領域を有する場合に、
    前記記憶領域情報は、前記データ復元側のデータ格納手段における前記更新前データ及び前記更新後データを格納する記憶領域のアドレス情報を含むものであって、前記記憶領域において、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域一つの更新可能領域として定義されており、この更新可能領域ごとの開始アドレス、終了アドレス、及びブロックサイズを含むものである請求項1に記載の差分データ生成装置。
  3. 前記領域設定手段は、前記更新前データ及び前記更新後データがデータ復元側のデータ格納手段の記憶領域に対応して複数のブロックに分割されている場合に、前記差分抽出時の更新前データの参照範囲として、前記記憶領域情報に基づいて対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを参照するように前記参照範囲を設定し、
    前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新た参照範囲として設定するものである請求項2に記載の差分データ生成装置。
  4. 前記ヘッダ情報は、前記データ復元側のデータ格納手段におけるデータ復元時の更新後データの書き込み範囲を示すアドレス情報を含むものである請求項1または2に記載の差分データ生成装置。
  5. 前記アドレス情報は、さらに前記データ復元側のデータ格納手段におけるデータ復元時の更新前データの参照範囲を含むものである請求項4に記載の差分データ生成装置。
  6. 更新前データから更新後データへデータを書き換えるための差分データを生成する差分データ生成方法であって、
    ータ復元側のデータ格納手段における前記更新前データ及び前記更新後データに関する記憶領域の配置情報を含む記憶領域情報を基に、差分抽出時の更新前データの参照範囲を設定する領域設定ステップと、
    前記更新後データと、前記設定された参照範囲内の前記更新前データとを比較参照して差分データを生成する差分抽出ステップと、
    前記生成した差分データに、前記データ復元側のデータ格納手段におけるデータ復元時の対象データのアドレス情報を含むヘッダ情報を付加した差分ファイルを生成する差分ファイル生成ステップと、
    を有する差分データ生成方法。
  7. 前記データ復元側データ格納手段が、前記更新前データまたは前記更新後データをブロック単位で格納する記憶領域を有する場合であり、
    前記記憶領域情報は、前記データ復元側のデータ格納手段における前記更新前データ及び前記更新後データを格納する記憶領域のアドレス情報を含むものであって、前記記憶領域において、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域一つの更新可能領域として定義されており、この更新可能領域ごとの開始アドレス、終了アドレス、及びブロックサイズを含むものである場合に、
    前記領域設定ステップにおいて、前記更新前データ及び前記更新後データがデータ復元側のデータ格納手段の記憶領域に対応して複数のブロックに分割されている場合に、前記差分抽出時の更新前データの参照範囲として、前記記憶領域情報に基づいて対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを参照するように前記参照範囲を設定し、
    前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新た参照範囲として設定することとした請求項6に記載の差分データ生成方法。
  8. 請求項6または7に記載の差分データ生成方法の手順をコンピュータにより実行するためのプログラム。
  9. 通信手段を介して受信した差分データを用いて、更新前データから更新後データを復元してデータを書き換える更新後データ復元装置であって、
    前記更新前データ及び前記更新後データを格納するデータ格納手段と、
    前記通信手段を介して送られてきた差分データ及びデータ復元時の前記データ格納手段における対象データのアドレス情報を受信する受信手段と、
    前記アドレス情報に基づき指定される前記データ格納手段における参照範囲の更新前データを参照して、この更新前データと前記差分データとから更新後データを復元するデータ復元手段と、
    前記復元した更新後データを保持するバッファ手段と、
    前記保持した更新後データを前記アドレス情報に基づき指定される前記データ格納手段における書き込み範囲に書き込むデータ書き込み手段と、
    を備えた更新後データ復元装置。
  10. 前記アドレス情報は、前記差分データを生成する差分データ生成装置において、記データ格納手段における前記更新前データ及び前記更新後データに関する記憶領域の配置情報を含む記憶領域情報が保持され、この記憶領域情報を基に生成されるものであって、
    前記データ格納手段におけるデータ復元時の更新後データの書き込み範囲を含むものである請求項9に記載の更新後データ復元装置。
  11. 前記アドレス情報は、さらに前記データ格納手段におけるデータ復元時の更新前データの参照範囲を含むものである請求項10に記載の更新後データ復元装置。
  12. 前記データ格納手段は、前記更新前データをブロック単位で複数のブロックに分割して格納するもので、このデータ格納手段の記憶領域について、前記差分データ生成装置に保持された記憶領域情報によって、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域が一つの更新可能領域として定義されており、
    前記データ復元手段は、前記アドレス情報に基づいて前記データ格納手段における対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを前記参照範囲として参照して前記更新後データを復元し、
    前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新た参照範囲として参照して復元するものである請求項10または11に記載の更新後データ復元装置。
  13. 前記バッファ手段は、リングバッファ方式のバッファにより構成され、前記ブロックごとに復元された更新後データをそれぞれ保持する複数の領域を有しており、
    前記データ書き込み手段は、前記バッファ手段に保持された更新後データの前記データ格納手段における書き込み範囲が、前記データ復元手段によるデータ復元時の参照範囲から外れた場合に、該当する更新後データを前記バッファ手段から前記データ格納手段に書き込み、その後前記バッファ手段における書き込み完了した更新後データの保持領域の開放を指示するものである請求項12に記載の更新後データ復元装置。
  14. 通信手段を介して受信した差分データを用いて、更新前データから更新後データを復元してデータを書き換える更新後データ復元方法であって、
    前記通信手段を介して送られてきた差分データ及び前記更新前データを格納するデータ格納手段におけるデータ復元時の対象データのアドレス情報を受信する受信ステップと、
    前記アドレス情報に基づき指定される前記データ格納手段における参照範囲の更新前データを参照して、この更新前データと前記差分データとから更新後データを復元するデータ復元ステップと、
    前記復元した更新後データを保持するバッファリングステップと、
    前記保持した更新後データを前記アドレス情報に基づき指定される前記データ格納手段における書き込み範囲に書き込むデータ書き込みステップと、
    を有する更新後データ復元方法。
  15. 前記アドレス情報は、前記差分データを生成する差分データ生成装置において、前記データ格納手段における前記更新前データ及び前記更新後データに関する記憶領域の配置情報を含む記憶領域情報が保持され、この記憶領域情報を基に生成されるものであって、
    前記データ格納手段におけるデータ復元時の更新後データの書き込み範囲を含むものであり、
    前記データ格納手段が、前記更新前データをブロック単位で複数のブロックに分割して格納するもので、このデータ格納手段の記憶領域について、前記差分データ生成装置に保持された記憶領域情報によって、前記データ格納手段上のアドレスが連続し、かつ同一のブロックサイズの一つまたは複数のブロックからなる記憶領域が一つの更新可能領域として定義されている場合に、
    前記データ復元ステップにおいて、前記アドレス情報に基づいて前記データ格納手段における対象のブロックとその前後の一つまたは複数のブロックとを合わせた複数のブロックを前記参照範囲として参照して前記更新後データを復元し、
    前記対象のブロックから求めた前記参照範囲が前記更新可能領域に収まらない場合は、前記参照範囲内であり、かつ前記更新可能領域内である領域を新た参照範囲として参照して復元することとした請求項14に記載の更新後データ復元方法。
  16. 前記アドレス情報は、前記データ格納手段におけるデータ復元時の更新前データの参照範囲を含むものである請求項15に記載の更新後データ復元方法。
  17. 前記バッファリングステップにおいて、リングバッファ方式のバッファにより構成され複数の領域を有するバッファ手段を用いて、前記ブロックごとに復元された更新後データを前記バッファ手段の複数の領域のうちの一つに保持し、
    前記データ書き込みステップにおいて、前記バッファ手段に保持された更新後データの前記データ格納手段における書き込み範囲が、前記データ復元ステップにおけるデータ復元時の参照範囲から外れた場合に、該当する更新後データを前記バッファ手段から前記データ格納手段に書き込み、その後前記バッファ手段における書き込み完了した更新後データの保持領域の開放を指示することとした請求項15または16に記載の更新後データ復元方法。
  18. 請求項14〜17のいずれかに記載の更新後データ復元方法の手順をコンピュータにより実行するためのプログラム。
JP2003024412A 2003-01-31 2003-01-31 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム Expired - Fee Related JP4153324B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2003024412A JP4153324B2 (ja) 2003-01-31 2003-01-31 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
US10/543,967 US20060200502A1 (en) 2003-01-31 2003-10-20 Differential data creating device and method, updated data recovery device and method, and program
PCT/JP2003/013383 WO2004068348A1 (ja) 2003-01-31 2003-10-20 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
AU2003303838A AU2003303838A1 (en) 2003-01-31 2003-10-20 Differential data creating device and method, updated data recovery device and method, and program
EP03756702A EP1589430A1 (en) 2003-01-31 2003-10-20 Differential data creating device and method, updated data recovery device and method, and program
CNA2003801092227A CN1742262A (zh) 2003-01-31 2003-10-20 用于产生差分数据的装置和方法、用于恢复更新后数据的装置和方法、及其程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003024412A JP4153324B2 (ja) 2003-01-31 2003-01-31 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2004234503A JP2004234503A (ja) 2004-08-19
JP4153324B2 true JP4153324B2 (ja) 2008-09-24

Family

ID=32820762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003024412A Expired - Fee Related JP4153324B2 (ja) 2003-01-31 2003-01-31 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム

Country Status (6)

Country Link
US (1) US20060200502A1 (ja)
EP (1) EP1589430A1 (ja)
JP (1) JP4153324B2 (ja)
CN (1) CN1742262A (ja)
AU (1) AU2003303838A1 (ja)
WO (1) WO2004068348A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949761B (zh) * 2005-10-13 2010-09-15 腾讯科技(深圳)有限公司 一种数据同步方法及其差分编码方法
US7617226B1 (en) * 2006-02-10 2009-11-10 Google Inc. Document treadmilling system and method for updating documents in a document repository and recovering storage space from invalidated documents
US8185751B2 (en) * 2006-06-27 2012-05-22 Emc Corporation Achieving strong cryptographic correlation between higher level semantic units and lower level components in a secure data storage system
JP5103807B2 (ja) * 2006-06-30 2012-12-19 富士通株式会社 制御プログラム、制御方法、情報処理装置及び情報処理システム
JP4907380B2 (ja) * 2007-02-21 2012-03-28 株式会社Access データ生成方法、データ復元方法、データ生成装置およびデータ復元装置
CN100454265C (zh) * 2007-06-07 2009-01-21 华为技术有限公司 镜像恢复方法、存储设备及网络系统
JP5347657B2 (ja) * 2009-03-31 2013-11-20 富士通株式会社 データ記憶プログラム、方法、及び情報処理装置
US8316057B2 (en) * 2010-12-17 2012-11-20 International Business Machines Corporation Restoring deduplicated data objects from sequential backup devices
JP5653259B2 (ja) * 2011-03-08 2015-01-14 クラリオン株式会社 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム
CN102693168B (zh) * 2011-03-22 2014-12-31 中兴通讯股份有限公司 一种数据备份恢复的方法、系统和服务节点
JP6102937B2 (ja) * 2012-11-02 2017-03-29 日本電気株式会社 情報処理装置
JP6155769B2 (ja) * 2013-03-29 2017-07-05 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
WO2015194027A1 (ja) * 2014-06-20 2015-12-23 株式会社日立製作所 計算機システム、データ更新方法、および仮想化サーバ
EP3252605B1 (en) * 2015-01-26 2022-04-06 Hitachi Astemo, Ltd. Vehicle-mounted control device, program writing device, program generating device and program
CN108027753B (zh) * 2015-09-29 2021-07-06 日立汽车系统株式会社 车载控制装置、程序更新系统以及保存有程序更新软件的存储介质
JP6609508B2 (ja) 2016-04-27 2019-11-20 日立オートモティブシステムズ株式会社 車両用電子制御装置、プログラム更新方法
US11360758B2 (en) * 2017-02-28 2022-06-14 Nippon Telegraph And Telephone Corporation Communication processing device, information processing device, and communication processing device control method
JP7013918B2 (ja) * 2018-02-16 2022-02-01 トヨタ自動車株式会社 車両制御装置、プログラム更新方法およびプログラム
CN108647116A (zh) * 2018-04-13 2018-10-12 深圳大普微电子科技有限公司 数据恢复方法和存储设备
JP7265120B2 (ja) * 2019-01-10 2023-04-26 富士通株式会社 データ収集プログラム、データ収集装置およびデータ収集方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02168321A (ja) * 1988-12-22 1990-06-28 Nec Corp プログラム差分抽出方式
JPH06274384A (ja) * 1993-03-22 1994-09-30 N T T Data Tsushin Kk 実行ファイル差分抽出/更新装置及び実行ファイル差分抽出方法
JP3516362B2 (ja) * 1995-03-01 2004-04-05 富士通株式会社 共有データ処理装置及び共有データ処理システム
JP2944496B2 (ja) * 1996-01-29 1999-09-06 日本電気ソフトウェア株式会社 画像データ格納制御装置
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6775423B2 (en) * 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
JP4285679B2 (ja) * 2002-03-11 2009-06-24 富士通株式会社 差分転送方法、プログラム及びシステム
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms

Also Published As

Publication number Publication date
US20060200502A1 (en) 2006-09-07
EP1589430A1 (en) 2005-10-26
WO2004068348A1 (ja) 2004-08-12
JP2004234503A (ja) 2004-08-19
AU2003303838A1 (en) 2004-08-23
CN1742262A (zh) 2006-03-01

Similar Documents

Publication Publication Date Title
JP4153324B2 (ja) 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
JP6568947B2 (ja) 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア
US8418167B2 (en) Methods and systems for updating content including a compressed version
US8200886B2 (en) Efficient system and method for updating a memory device
CN100498703C (zh) 以存储技术抽象方式在文件内创建文件系统
JP4801041B2 (ja) ファームウェアアップグレードにおける自動バックアップストア
KR102319657B1 (ko) 저장된 데이터 유닛들의 동작 관리
WO2007023497A1 (en) Method and system for in-place updating content stored in a storage device
EP3834082B1 (en) Memory optimized block-based differential update algorithm
US8578359B2 (en) Method and apparatus for reliable in-place update
US8689209B2 (en) Updating content without using a mini operating system
US8689207B2 (en) Performing an in-place update of an operating storage device
KR101130875B1 (ko) 펌웨어 업그레이드 경우의 자동 백업 저장
JP6812826B2 (ja) 格納方法、格納装置及び格納プログラム
JP5100500B2 (ja) データ書き換えシステム及び新版データ作成装置及び差分データ作成装置及び新版データ作成プログラム及び差分データ作成プログラム
JP2004295299A (ja) フィールド機器システム
JP2007114943A (ja) ファームウェア更新方法及び情報処理装置
JP7317609B2 (ja) 電子制御装置
JP2014112419A (ja) 携帯端末装置、ソフトウェア更新方法、動作制御方法及びプログラム
JP2006004177A (ja) プログラムのダウンロード方法
KR100876212B1 (ko) 이동통신단말기의 읽기 전용 파일 시스템 상에서의소프트웨어 업데이트 방법
KR20130104283A (ko) 펌웨어 업데이트 방법
JP2003018017A (ja) Biosプログラムの圧縮方法及び更新方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050804

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060325

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20071114

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071121

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20071128

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080604

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080703

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110711

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees