(57)【要約】【課題】データ更新にかかる通信時間を削減する。【解決手段】分割サイズ算出部１１０が算出した分割サイズを、分割サイズ送信部１２０が被書込み装置２００（データ記憶装置）に対して送信する。被書込み装置２００が受信した分割サイズに基づいて生成した要約データを、要約データ受信部１３０が受信する。受信した要約データに基づいて、差分データ生成部１５０が差分データを生成し、差分データ送信部１６０が被書込み装置２００に対して送信する。【選択図】図４
2010176191.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶装置と、データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、更新後データ記憶部と、分割サイズ算出部と、分割サイズ送信部と、要約データ受信部と、差分データ生成部と、差分データ送信部とを有し、
上記更新後データ記憶部は、上記記憶装置を用いて、データ記憶装置が記憶した更新前データを更新して上記データ記憶装置に記憶させる更新後データを記憶し、
上記分割サイズ算出部は、上記処理装置を用いて、上記データ記憶装置が記憶した更新前データを複数の部分に分割する分割サイズを算出し、
上記分割サイズ送信部は、上記送信装置を用いて、上記分割サイズ算出部が算出した分割サイズを上記データ記憶装置に対して送信し、
上記要約データ受信部は、上記受信装置を用いて、上記分割サイズ送信部が送信した分割サイズごとに上記更新前データを分割した部分データについて、上記部分データの内容を要約した要約データを、上記データ記憶装置から受信し、
上記差分データ生成部は、上記処理装置を用いて、上記更新後データ記憶部が記憶した更新後データと、上記要約データ受信部が受信した要約データとに基づいて、上記更新後データにおいて上記部分データと一致する部分を判定し、判定した判定結果に基づいて、上記更新前データと上記更新後データとの差分を表わす差分データを生成し、
上記差分データ送信部は、上記送信装置を用いて、上記差分データ生成部が生成した差分データを上記データ記憶装置に対して送信することを特徴とするデータ送信装置。
【請求項２】
上記データ送信装置は、更に、実績送受信データ長算出部と、推定送受信データ長算出部とを有し、
上記実績送受信データ長算出部は、上記処理装置を用いて、上記要約データ受信部が受信した要約データの長さと、上記差分データ生成部が生成した差分データの長さとを合計した送受信データ長を算出して、実績送受信データ長とし、
上記推定送受信データ長算出部は、上記処理装置を用いて、上記差分データ生成部が判定した判定結果に基づいて、上記分割サイズが異なる場合についての送受信データ長を算出して、推定送受信データ長とし、
上記分割サイズ算出部は、上記処理装置を用いて、過去の更新時に、上記実績送受信データ長算出部が算出した実績送受信データ長と、上記推定送受信データ長算出部が算出した推定送受信データ長とに基づいて、送受信データ長が短くなると予測される分割サイズを算出することを特徴とする請求項１に記載のデータ送信装置。
【請求項３】
上記推定送受信データ長算出部は、上記処理装置を用いて、上記差分データ生成部が判定した判定結果に基づいて、上記分割サイズが二倍であった場合に、上記差分データ生成部が上記更新後データにおいて上記部分データと一致すると判定できた部分の長さを算出し、算出した長さに基づいて、上記分割サイズが二倍であった場合の推定送受信データ長を算出することを特徴とする請求項２に記載のデータ送信装置。
【請求項４】
上記推定送受信データ長算出部は、更に、上記処理装置を用いて、上記差分データ生成部が上記更新後データにおいて上記部分データと一致すると判定しなかった部分の長さと、上記分割サイズが二倍であった場合について算出した上記差分データ生成部が上記更新後データにおいて上記部分データと一致すると判定できなかった部分の長さとの比率を算出し、上記差分データ生成部が上記更新後データにおいて上記部分データと一致すると判定しなかった部分の長さに、算出した比率を乗じることにより、上記分割サイズが半分であった場合に、上記差分データ生成部が上記更新後データにおいて上記部分データと一致すると判定できなかった部分の長さの推定値を算出し、算出した推定値に基づいて、上記分割サイズが半分であった場合の推定送受信データ長を算出することを特徴とする請求項３に記載のデータ送信装置。
【請求項５】
上記データ送信装置は、更に、追加要約データ受信部と、追加一致部分判定部とを有し、
上記追加要約データ受信部は、上記受信装置を用いて、上記差分データ生成部が上記更新後データに一致する部分がないと判定した部分データを上記分割サイズの半分の長さに分割した追加部分データについて、上記追加部分データの内容を要約した追加要約データを、上記データ記憶装置から受信し、
上記追加一致部分判定部は、上記処理装置を用いて、上記追加要約データ受信部が受信した追加要約データに基づいて、上記更新後データ記憶部が記憶した更新後データにおいて上記追加部分データと一致する部分を判定し、
上記推定送受信データ長算出部は、上記処理装置を用いて、上記追加一致部分判定部が判定した判定結果に基づいて、上記分割サイズが半分であった場合の推定送受信データ長を算出することを特徴とする請求項２または請求項３に記載のデータ送信装置。
【請求項６】
上記データ送信装置は、更に、推定更新前データ記憶部と、推定一致部分判定部とを有し、
上記推定更新前データ記憶部は、上記記憶装置を用いて、上記データ記憶装置が記憶した更新前データと一致すると推定される推定更新前データを記憶し、
上記推定一致部分判定部は、上記処理装置を用いて、上記更新後データ記憶部が記憶した更新後データと、上記推定更新前データ記憶部が記憶した推定更新前データとに基づいて、上記更新後データのうち、上記推定更新前データの一部と一致する部分を判定し、
上記分割サイズ算出部は、上記処理装置を用いて、上記推定一致部分判定部が判定した判定結果に基づいて、送受信データ長が短くなると予測される分割サイズを算出することを特徴とする請求項１乃至請求項５のいずれかに記載のデータ送信装置。
【請求項７】
上記分割サイズ算出部は、上記処理装置を用いて、上記データ記憶装置が記憶した更新前データを複数の領域に分割し、分割した複数の領域それぞれについて、上記領域を更に複数の部分に分割する分割サイズを算出することを特徴とする請求項１乃至請求項６のいずれかに記載のデータ送信装置。
【請求項８】
データを記憶する記憶装置と、データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、データ記憶部と、分割サイズ受信部と、要約データ生成部と、要約データ送信部と、差分データ受信部と、データ更新部とを有し、
上記データ記憶部は、上記記憶装置を用いて、更新前データを記憶し、
上記分割サイズ受信部は、上記受信装置を用いて、上記データ記憶部が記憶した更新前データの更新を要求するデータ送信装置から、上記データ記憶部が記憶した更新前データを分割する分割サイズを受信し、
上記要約データ生成部は、上記処理装置を用いて、上記データ記憶部が記憶した更新前データを、上記分割サイズ受信部が受信した分割サイズごとに分割して部分データとし、分割した部分データについて、上記部分データの内容を要約した要約データを生成し、
上記要約データ送信部は、上記送信装置を用いて、上記要約データ生成部が生成した要約データを上記データ送信装置に対して送信し、
上記差分データ受信部は、上記受信装置を用いて、上記更新前データと、上記更新前データを更新する更新後データとの差分を表わす差分データを、上記データ送信装置から受信し、
上記データ更新部は、上記処理装置を用いて、上記差分データ受信部が受信した差分データに基づいて、上記データ記憶部が記憶した更新前データを上記更新後データに更新することを特徴とするデータ記憶装置。
【請求項９】
上記データ記憶装置は、更に、追加要約データ生成部と、追加要約データ送信部とを有し、
上記追加要約データ生成部は、上記処理装置を用いて、上記差分データ受信部が受信した差分データに基づいて、上記更新後データのなかに一致する部分がない部分データについて、上記部分データを上記分割サイズ受信部が受信した分割サイズの半分の長さに分割して追加部分データとし、分割した追加部分データについて、上記追加部分データの内容を要約した追加要約データを生成し、
上記追加要約データ送信部は、上記送信装置を用いて、上記追加要約データ生成部が生成した追加要約データを上記データ送信装置に対して送信することを特徴とする請求項８に記載のデータ記憶装置。
【請求項１０】
上記記憶装置は、書き込みの単位となる複数の記憶領域を有し、
上記データ更新部は、上記処理装置を用いて、上記更新前データを上記更新後データに更新するとき、書き換える必要がある記憶領域と書き換える必要がない記憶領域とを判定し、書き換える必要があると判定した記憶領域が記憶したデータのみを書き換えることを特徴とする請求項８または請求項９に記載のデータ記憶装置。
【請求項１１】
請求項１乃至請求項７のいずれかに記載のデータ送信装置と、請求項８乃至請求項１０のいずれかに記載のデータ記憶装置とを有することを特徴とするデータ更新システム。
【請求項１２】
コンピュータが実行することにより、上記コンピュータが請求項１乃至請求項７のいずれかに記載のデータ送信装置または請求項８乃至請求項１０のいずれかに記載のデータ記憶装置として機能することを特徴とするコンピュータプログラム。
【請求項１３】
データ記憶装置が記憶した更新前データを、データ送信装置が記憶した更新後データに更新するデータ更新方法において、
上記データ送信装置が、上記更新前データを複数の部分に分割する分割サイズを算出し、
上記データ送信装置が、算出した分割サイズを上記データ記憶装置に対して送信し、
上記データ記憶装置が、データ送信装置が送信した分割サイズを受信し、
上記データ記憶装置が、記憶した更新前データを、受信した分割サイズごとに分割して部分データとし、分割した部分データについて、上記部分データの内容を要約した要約データを生成し、
上記データ記憶装置が、生成した要約データを上記データ送信装置に対して送信し、
上記データ送信装置が、上記データ記憶装置が送信した要約データを受信し、
上記データ送信装置が、記憶した更新後データと、受信した要約データとに基づいて、上記更新後データにおいて上記部分データと一致する部分を判定し、判定した判定結果に基づいて、上記更新前データと上記更新後データとの差分を表わす差分データを生成し、
上記データ送信装置が、生成した差分データを上記データ記憶装置に対して送信し、
上記データ記憶装置が、上記データ送信装置が送信した差分データを受信し、
上記データ記憶装置が、受信した差分データに基づいて、記憶した更新前データを上記更新後データに更新することを特徴とするデータ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ記憶装置が記憶したデータを通信路を介して更新するデータ更新システムに関する。
【背景技術】
【０００２】
データ記憶装置が記憶したデータ（以下「更新前データ」と呼ぶ。）を更新するに際して、更新するデータ（以下「更新後データ」と呼ぶ。）を送信するデータ送信装置とデータ記憶装置とを接続する通信路の速度が、更新後データのデータ長に対して比較的遅い場合、更新後データをすべて送信するには、時間がかかり、効率が悪い。
更新前データと更新後データとの差が比較的小さく、データ送信装置が更新前データを知っている場合には、データ送信装置が、更新前データと更新後データとの差分を表わす差分データを生成して送信することにより、通信時間を短くする技術がある。
データ送信装置が更新前データを知らない場合には、データ記憶装置が、更新前データを複数の部分に分割して、分割した部分ごとの内容を表わす要約データを生成して、データ送信装置に対して送信し、データ送信装置が、受信した要約データに基づいて、差分データを生成する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１５２１３６号公報
【非特許文献】
【０００４】
【非特許文献１】Ａ．Ｔｒｉｄｇｅｌｌ、Ｐ．Ｍａｃｋｅｒｒａｓ著「Ｔｈｅ  ｒｓｙｎｃ  Ａｌｇｏｒｉｔｈｍ」ＴＲ−ＣＳ−９６−０５、オーストラリア国立大学、１９９６年。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ送信装置が、受信した要約データに基づいて、差分データを生成する場合、更新前データを分割する部分のデータ長（以下「分割サイズ」と呼ぶ。）をどの程度の値にするかによって、通信時間短縮の効果が大きく異なる。このため、いかにして最適な分割サイズを決定するかが課題となる。
この発明は、例えば、上記のような課題を解決するためになされたものであり、最適な分割サイズを算出して、データ更新に必要な通信時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
この発明にかかるデータ送信装置は、
データを記憶する記憶装置と、データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、更新後データ記憶部と、分割サイズ算出部と、分割サイズ送信部と、要約データ受信部と、差分データ生成部と、差分データ送信部とを有し、
上記更新後データ記憶部は、上記記憶装置を用いて、データ記憶装置が記憶した更新前データを更新して上記データ記憶装置に記憶させる更新後データを記憶し、
上記分割サイズ算出部は、上記処理装置を用いて、上記データ記憶装置が記憶した更新前データを複数の部分に分割する分割サイズを算出し、
上記分割サイズ送信部は、上記送信装置を用いて、上記分割サイズ算出部が算出した分割サイズを上記データ記憶装置に対して送信し、
上記要約データ受信部は、上記受信装置を用いて、上記分割サイズ送信部が送信した分割サイズごとに上記更新前データを分割した部分データについて、上記部分データの内容を要約した要約データを、上記データ記憶装置から受信し、
上記差分データ生成部は、上記処理装置を用いて、上記更新後データ記憶部が記憶した更新後データと、上記要約データ受信部が受信した要約データとに基づいて、上記更新後データにおいて上記部分データと一致する部分を判定し、判定した判定結果に基づいて、上記更新前データと上記更新後データとの差分を表わす差分データを生成し、
上記差分データ送信部は、上記送信装置を用いて、上記差分データ生成部が生成した差分データを上記データ記憶装置に対して送信することを特徴とする。
【発明の効果】
【０００７】
この発明にかかるデータ送信装置によれば、分割サイズ算出部が算出した分割サイズを、分割サイズ送信部がデータ記憶装置に対して送信するので、最適な分割サイズを用いて、データを更新することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるデータ更新システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１における書込み装置１００及び被書込み装置２００の外観の一例を示す斜視図。
【図３】実施の形態１における書込み装置１００及び被書込み装置２００のハードウェア資源の一例を示す図。
【図４】実施の形態１における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図５】実施の形態１における被書込み装置２００の機能ブロックの構成の一例を示すブロック構成図。
【図６】実施の形態１におけるデータ更新処理の全体の流れの一例を示すフローチャート図。
【図７】実施の形態１における分割サイズ算出処理Ｓ６０１の流れの一例を示すフローチャート図。
【図８】実施の形態１における要約データ生成処理Ｓ７０２の流れの一例を示すフローチャート図。
【図９】実施の形態１における差分データ生成処理Ｓ６０４の流れの一例を示すフローチャート図。
【図１０】実施の形態１における要約データ生成処理Ｓ７０２及び差分データ生成処理Ｓ６０４において処理されるデータの一例を模式的に示す模式図。
【図１１】実施の形態１における差分データ生成処理Ｓ６０４において処理されるデータの一例を模式的に示す模式図。
【図１２】実施の形態１における更新データ生成処理Ｓ７０５の流れの一例を示すフローチャート図。
【図１３】実施の形態１における更新データ生成処理Ｓ７０５において処理されるデータの一例を模式的に示す模式図。
【図１４】実施の形態１における送受信データ長算出処理Ｓ６０７の流れの一例を示すフローチャート図。
【図１５】実施の形態１における二倍サイズ一致数算出工程Ｓ６７４ａの流れの一例を示すフローチャート図。
【図１６】実施の形態１における二分の一サイズ一致数算出工程Ｓ６７４ｂの流れの一例を示すフローチャート図。
【図１７】実施の形態１における各データの関係の一例を示す模式図。
【図１８】実施の形態２における被書込み装置２００の機能ブロックの構成の一例を示すブロック構成図。
【図１９】実施の形態２における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図２０】実施の形態２におけるデータ更新処理の全体の流れの一例を示すフローチャート図。
【図２１】実施の形態２における追加要約データ生成処理Ｓ７０６の処理の流れの一例を示すフローチャート図。
【図２２】実施の形態２における二分の一サイズ一致数算出工程Ｓ６７４ｂの処理の流れの一例を示すフローチャート図。
【図２３】実施の形態２における追加要約データ生成処理Ｓ７０６及び送受信データ長算出処理Ｓ６０７において処理されるデータの一例を模式的に示す模式図。
【図２４】実施の形態３における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図２５】実施の形態３におけるデータ更新処理の全体の流れの一例を示すフローチャート図。
【図２６】実施の形態４における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図２７】実施の形態４におけるデータ更新処理の全体の流れの一例を示すフローチャート図。
【図２８】実施の形態４における送受信データ長推定処理Ｓ６０８の流れの一例を示すフローチャート図。
【図２９】実施の形態６における被書込み装置２００の機能ブロックの構成の一例を示すブロック構成図。
【発明を実施するための形態】
【０００９】
実施の形態１．
実施の形態１について、図１〜図１７を用いて説明する。
【００１０】
図１は、この実施の形態におけるデータ更新システム８００の全体構成の一例を示すシステム構成図である。
データ更新システム８００は、書込み装置１００、被書込み装置２００を有する。書込み装置１００と被書込み装置２００とは、通信路８１０を介して接続している。
被書込み装置２００（データ記憶装置）は、更新前データ５２０を記憶している。書込み装置１００（データ送信装置）は、更新後データ５１０を記憶している。更新前データ５２０は、例えば、コンピュータプログラムであり、更新後データ５１０は、更新前データ５２０の修正版であって、更新後データ５１０と更新前データ５２０との差は、比較的小さい。データ更新システム８００は、被書込み装置２００が記憶した更新前データ５２０を、更新後データ５１０に更新する。
通信路８１０（通信媒体）は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ケーブル、ＲＳ−２３２Ｃケーブル、赤外線、無線などである。通信路８１０を介した通信の通信速度は、更新後データ５１０のデータ長に比べて比較的遅く、通信路８１０を介して、更新後データ５１０をそのまま伝送するには、時間がかかる。そこで、更新後データ５１０と更新前データ５２０との差が小さいことを利用して、更新後データ５１０と更新前データ５２０との差分を表わす差分データを伝送することにより、伝送するデータ長を短くし、通信時間を短縮する。
【００１１】
被書込み装置２００がどのような更新前データ５２０を記憶しているかを、書込み装置１００が知っていれば、差分データを容易に生成できるが、被書込み装置２００が記憶している更新前データ５２０を書込み装置１００が知らない場合、差分データを生成できない。
そこで、被書込み装置２００は、更新前データ５２０を要約してデータ長を短くした要約データを生成し、通信路８１０を介して書込み装置１００に対して送信する。書込み装置１００は、受信した要約データをもとにして、差分データを生成する。
【００１２】
図２は、この実施の形態における書込み装置１００及び被書込み装置２００の外観の一例を示す斜視図である。
書込み装置１００及び被書込み装置２００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。
【００１３】
図３は、この実施の形態における書込み装置１００及び被書込み装置２００のハードウェア資源の一例を示す図である。
書込み装置１００及び被書込み装置２００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信装置９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。被書込み装置２００が組込み機器である場合、一般的に、磁気ディスク装置９２０ではなく、フラッシュメモリ（フラッシュロム）を記憶装置として有する場合が多い。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信装置９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００１４】
通信装置９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信装置９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０或いはＩＳＤＮ等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００１５】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１６】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００１７】
図４は、この実施の形態における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図である。
書込み装置１００は、分割サイズ算出部１１０、分割サイズ送信部１２０、要約データ受信部１３０、更新後データ記憶部１４０、差分データ生成部１５０、差分データ送信部１６０、実績送受信データ長算出部１７０、推定送受信データ長算出部１８０、送受信データ長記憶部１９０を有する。
【００１８】
分割サイズ算出部１１０は、送受信データ長記憶部１９０が記憶した送受信データ長に基づいて、送受信データ長が最も短くなると予測される分割サイズを算出する。送受信データ長とは、被書込み装置２００から書込み装置１００へ伝送する要約データのデータ長と、書込み装置１００から被書込み装置２００へ伝送する差分データのデータ長との合計のことである。送受信データ長が短ければ、通信にかかる時間が短くなる。分割サイズとは、書込み装置１００が要約データを生成する際に用いるパラメータである。書込み装置１００は、更新前データ５２０を分割サイズごとに分割して部分データとし、それぞれの部分データの内容を要約して要約データを生成する。分割サイズが小さいほど、更新前データ５２０の内容が正確に書込み装置１００に伝わるので、差分データのデータ長が短くなる可能性がある一方、要約データのデータ長が長くなる。したがって、送受信データ長を短くするには、適切な分割サイズを用いる必要がある。
分割サイズ算出部１１０は、送受信データ長比較部１１１、分割サイズ決定部１１２を有する。
送受信データ長比較部１１１は、ＣＰＵ９１１を用いて、送受信データ長記憶部１９０が分割サイズごとに記憶した送受信データ長を入力する。送受信データ長記憶部１９０が１つの分割サイズについて複数の送受信データ長を記憶している場合、送受信データ長比較部１１１は、ＣＰＵ９１１を用いて、例えば、複数の送受信データ長の平均を取るなどして、１つの分割サイズについて、１つの送受信データ長を取得する。送受信データ長比較部１１１は、ＣＰＵ９１１を用いて、取得した送受信データ長を比較する。送受信データ長比較部１１１は、ＣＰＵ９１１を用いて、比較した比較結果を出力する。
分割サイズ決定部１１２は、ＣＰＵ９１１を用いて、送受信データ長比較部１１１が出力した比較結果を入力する。分割サイズ決定部１１２は、ＣＰＵ９１１を用いて、入力した比較結果に基づいて、送受信データ長が最も短い分割サイズを判定する。分割サイズ決定部１１２は、ＣＰＵ９１１を用いて、判定した分割サイズを出力する。
【００１９】
分割サイズ送信部１２０は、被書込み装置２００に対して分割サイズを送信する。すなわち、分割サイズ送信部１２０は、ＣＰＵ９１１を用いて、分割サイズ決定部１１２が出力した分割サイズを入力する。分割サイズ送信部１２０は、通信装置９１５を用いて、通信路８１０を介して被書込み装置２００に対して、入力した分割サイズを送信する。
【００２０】
要約データ受信部１３０は、被書込み装置２００から要約データを受信する。すなわち、要約データ受信部１３０は、通信装置９１５を用いて、通信路８１０を介して被書込み装置２００が送信した要約データを受信する。要約データ受信部１３０は、ＣＰＵ９１１を用いて、受信した要約データを出力する。
【００２１】
更新後データ記憶部１４０は、磁気ディスク装置９２０を用いて、あらかじめ、更新後データ５１０を記憶している。更新後データ５１０は、例えば、被書込み装置２００が記憶したソフトウェアの改訂版である。
【００２２】
差分データ生成部１５０は、更新後データ記憶部１４０が記憶した更新後データ５１０と、要約データ受信部１３０が受信した要約データとに基づいて、差分データを生成する。
差分データ生成部１５０は、一致データ判定部１５１、一致リスト生成部１５２、不一致データ生成部１５３、データ結合部１５４を有する。
【００２３】
一致データ判定部１５１は、ＣＰＵ９１１を用いて、更新後データ記憶部１４０が記憶した更新後データ５１０と、要約データ受信部１３０が出力した要約データとを入力する。一致データ判定部１５１は、ＣＰＵ９１１を用いて、入力した要約データに基づいて、入力した更新後データ５１０のなかから、更新前データ５２０を分割した部分データと一致する部分を判定する。一致データ判定部１５１は、ＣＰＵ９１１を用いて、判定した判定結果を出力する。
【００２４】
一致リスト生成部１５２は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果を入力する。一致リスト生成部１５２は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、一致リストを生成する。一致リストとは、更新後データ５１０のなかに部分データと一致する部分がある場合に、その部分の位置（例えば開始アドレスなど）や一致した部分データの番号などを表わすデータである。一致リスト生成部１５２は、ＣＰＵ９１１を用いて、生成した一致リストを出力する。
【００２５】
不一致データ生成部１５３は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果と、更新後データ記憶部１４０が記憶した更新後データ５１０とを入力する。不一致データ生成部１５３は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、入力した更新後データ５１０のなかから、部分データと一致しなかった部分だけを抽出する。不一致データ生成部１５３は、ＣＰＵ９１１を用いて、抽出した部分を、不一致データとして出力する。
【００２６】
データ結合部１５４は、ＣＰＵ９１１を用いて、一致リスト生成部１５２が出力した一致リストと、不一致データ生成部１５３が出力した不一致データとを入力する。データ結合部１５４は、ＣＰＵ９１１を用いて、入力した一致リストと、入力した不一致データとを一つに結合する。データ結合部１５４は、ＣＰＵ９１１を用いて、結合したデータを、差分データとして出力する。
【００２７】
差分データ送信部１６０は、被書込み装置２００に対して差分データを送信する。すなわち、差分データ送信部１６０は、ＣＰＵ９１１を用いて、データ結合部１５４が出力した差分データを入力する。差分データ送信部１６０は、通信装置９１５を用いて、通信路８１０を介して被書込み装置２００に対して、入力した差分データを送信する。
【００２８】
実績送受信データ長算出部１７０は、今回の更新における送受信データ長を算出する。
実績送受信データ長算出部１７０は、要約数算出部１７１、要約データ長算出部１７２、一致数算出部１７３、一致リスト長算出部１７４、不一致データ長算出部１７５、合計算出部１７６を有する。
【００２９】
要約数算出部１７１は、ＣＰＵ９１１を用いて、要約データ受信部１３０が出力した要約データを入力する。要約数算出部１７１は、ＣＰＵ９１１を用いて、入力した要約データに基づいて、更新前データ５２０を分割した部分データそれぞれに対応する要約データの数を算出する。要約数算出部１７１は、算出した要約データの数を要約数として出力する。
例えば、更新前データ５２０のデータ長が６５５３６バイトであり、分割サイズが２５６バイトであれば、書込み装置１００は、更新前データ５２０を２５６個の部分データに分割して、それぞれに対応する要約データを生成するので、要約数は２５６個である。
なお、要約数算出部１７１は、要約データ受信部１３０が記憶した更新後データ５１０のデータ長が、更新前データ５２０のデータ長と等しいという前提に立ち、更新後データ５１０のデータ長を、分割サイズ算出部１１０が算出した分割サイズで割ることにより、要約数を算出する構成であってもよい。
【００３０】
要約データ長算出部１７２は、ＣＰＵ９１１を用いて、要約数算出部１７１が出力した要約データの数を入力する。要約データ長算出部１７２は、ＣＰＵ９１１を用いて、入力した要約データの数に、要約データ１つ当たりのデータ長を乗じて、要約データ全体のデータ長を算出する。要約データ長算出部１７２は、ＣＰＵ９１１を用いて、算出したデータ長を要約データ長として出力する。
例えば、要約データ１つ当たりのデータ長が３２バイトであり、要約データの数が２５６個であれば、要約データ長は８１９２バイトである。
なお、要約データ長算出部１７２は、要約データ受信部１３０が受信した要約データを入力して、要約データ全体のデータ長を求めることにより、要約データ長を直接算出する構成であってもよい。
【００３１】
一致数算出部１７３は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果を入力する。一致数算出部１７３は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、一致データ判定部１５１が一致すると判定した部分の数を算出する。一致数算出部１７３は、ＣＰＵ９１１を用いて、算出した数を一致数として出力する。
なお、一致数算出部１７３は、一致リスト生成部１５２が出力した一致リストを入力して、一致数を数える構成としてもよい。
【００３２】
一致リスト長算出部１７４は、ＣＰＵ９１１を用いて、一致数算出部１７３が出力した一致数を入力する。一致リスト長算出部１７４は、ＣＰＵ９１１を用いて、入力した一致数に、一致した部分１つ当たりの一致リストのデータ長を乗じて、一致リスト全体のデータ長を算出する。一致リスト長算出部１７４は、ＣＰＵ９１１を用いて、算出したデータ長を一致リスト長として出力する。
例えば、一致した部分一つ当たりの一致リストのデータ長が１０バイトであり、一致した部分の数が１００個であれば、一致リスト長は１０００バイトである。
なお、一致リスト長算出部１７４は、一致リスト生成部１５２が出力した一致リストを入力して、一致リスト全体のデータ長を求めることにより、一致リスト長を直接算出する構成であってもよい。
また、一致リスト長は要約データ長と比較して短いので、無視してもよい。その場合、一致数算出部１７３及び一致リスト長算出部１７４は、なくてもよい。
【００３３】
不一致データ長算出部１７５は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果を入力する。不一致データ長算出部１７５は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、不一致データ全体のデータ長を算出する。不一致データ長算出部１７５は、ＣＰＵ９１１を用いて、算出したデータ長を不一致データ長として出力する。
なお、不一致データ長算出部１７５は、要約数算出部１７１が算出した要約数から、一致数算出部１７３が算出した一致数を差し引いた差を算出して不一致数とし、算出した不一致数に、分割サイズ算出部１１０が算出した分割サイズを乗じた積を算出して、不一致データ長とする構成であってもよい。
あるいは、不一致データ長算出部１７５は、不一致データ生成部１５３が出力した不一致データを入力して、不一致データ全体のデータ長を求めることにより、不一致データ長を直接算出する構成としてもよい。
【００３４】
合計算出部１７６は、ＣＰＵ９１１を用いて、要約データ長算出部１７２が出力した要約データ長と、一致リスト長算出部１７４が出力した一致リスト長と、不一致データ長算出部１７５が出力した不一致データ長とを入力する。合計算出部１７６は、ＣＰＵ９１１を用いて、入力した要約データ長と一致リスト長と不一致データ長とを合計して、今回の更新における送受信データ長を算出する。合計算出部１７６は、ＣＰＵ９１１を用いて、算出した送受信データ長を出力する。
なお、通信路８１０の通信速度が方向により異なる場合には、要約データ長に、所定の定数を乗じた上で合計を算出して、算出した送受信データ長が、通信時間に比例する量を表わすよう構成してもよい。
【００３５】
推定送受信データ長算出部１８０は、今回の更新において、もし実際と異なる分割サイズを用いていたら、送受信データ長がどうであったかを算出する。
推定送受信データ長算出部１８０は、推定要約数算出部１８１、推定要約データ長算出部１８２、推定一致数算出部１８３、推定一致リスト長算出部１８４、推定不一致データ長算出部１８５、合計算出部１８６を有する。
【００３６】
推定要約数算出部１８１は、ＣＰＵ９１１を用いて、要約数算出部１７１が出力した要約数を入力する。推定要約数算出部１８１は、ＣＰＵ９１１を用いて、入力した要約数に、実際の分割サイズと送受信データ長を推定する分割サイズとの比を乗じて、送受信データ長を推定する分割サイズについての要約数を算出する。推定要約数算出部１８１は、ＣＰＵ９１１を用いて、算出した要約数を出力する。
例えば、分割サイズが半分になれば、部分データの数が二倍になるので、要約数も二倍になる。逆に、分割サイズが二倍になれば、部分データの数が半分になるので、要約数も半分になる。
【００３７】
推定要約データ長算出部１８２は、ＣＰＵ９１１を用いて、推定要約数算出部１８１が出力した要約数を入力する。推定要約データ長算出部１８２は、ＣＰＵ９１１を用いて、入力した要約数に、要約データ１つ当たりのデータ長を乗じて、要約データ長を算出する。推定要約データ長算出部１８２は、ＣＰＵ９１１を用いて、算出した要約データ長を出力する。
【００３８】
推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果を入力する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、送受信データ長を推定する分割サイズについての一致数を算出する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、算出した一致数を出力する。
例えば、分割サイズが二倍であれば、実際の部分データが二つ合わさったものが、一つの部分データとなる。したがって、隣接する二つの部分データが、更新後データ５１０のなかの隣接する部分と一致している場合、分割サイズが二倍であっても、その二つの部分データを合わせた一つの部分データが、更新後データ５１０の一部と一致する。
推定一致数算出部１８３は、このようにして、分割サイズが実際の整数倍である場合について、一致数を算出する。
【００３９】
また、分割サイズが二分の一であれば、実際の部分データ一つが、二つの部分データに分割される。したがって、ある部分データが、更新後データ５１０の一部と一致している場合、分割サイズが半分になると、その部分データを二つに分割した二つの部分データが、更新後データ５１０の一部と一致する。また、ある部分データが、更新後データ５１０の一部と一致していない場合であっても、分割サイズが半分になると、その部分データを二つに分割した二つの部分データの一方または双方が、更新後データ５１０の一部と一致する可能性がある。したがって、一致数は、実際の一致数の二倍以上になり、不一致数は、実際の不一致数の二倍以下となる。
更新後データ５１０の一部と一致していない部分データが、分割サイズが二分の一になった場合に、更新後データ５１０の一部と一致する数がわからないので、分割サイズが二分の一の場合の一致数を正確に求めることはできないが、何らかの仮定を導入することにより、一致数を推定することはできる。
例えば、不一致数の増加率が一定であると仮定する。すなわち、実際の不一致数と、分割サイズが二倍の場合の不一致数との比が、分割サイズが半分の場合の不一致数と、実際の不一致数との比と等しいと仮定する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、実際の分割サイズについて、要約数算出部１７１が算出した要約数から、一致数算出部１７３が算出した一致数を差し引いて、不一致数を算出する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、分割サイズが実際の二倍の場合について、上述した方式により一致数を算出し、算出した一致数を、推定要約数算出部１８１が算出した要約数から差し引いて、不一致数を算出する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、算出した実際の不一致数と、算出した分割サイズが二倍の場合の不一致数との比を算出する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、算出した実際の不一致数に、算出した比を乗じて、分割サイズが二分の一の場合の不一致数の推定値とする。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、分割サイズが実際の半分の場合について、推定要約数算出部１８１が算出した要約数から、算出した不一致数の推定値を差し引いて、一致数の推定値を算出する。
推定一致数算出部１８３は、このようにして、分割サイズが実際よりも小さい場合について、一致数を算出する。
【００４０】
推定一致リスト長算出部１８４は、ＣＰＵ９１１を用いて、推定一致数算出部１８３が出力した一致数を入力する。推定一致リスト長算出部１８４は、ＣＰＵ９１１を用いて、入力した一致数に、一致した部分一つ当たりの一致リストのデータ長を乗じて、一致リスト長を算出する。推定一致リスト長算出部１８４は、ＣＰＵ９１１を用いて、算出した一致リスト長を出力する。
【００４１】
推定不一致データ長算出部１８５は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果を入力する。推定不一致データ長算出部１８５は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、送受信データ長を推定する分割サイズについての不一致データ長を算出する。推定不一致データ長算出部１８５は、ＣＰＵ９１１を用いて、算出した不一致データ長を出力する。
なお、推定不一致データ長算出部１８５は、推定要約数算出部１８１が算出した要約数から、推定一致数算出部１８３が算出した一致数を差し引いた差を算出して不一致数とし、算出した不一致数に、送受信データ長を推定する分割サイズを乗じた積を算出して、不一致データ長とする構成であってもよい。
【００４２】
合計算出部１８６は、ＣＰＵ９１１を用いて、推定要約データ長算出部１８２が出力した要約データ長と、推定一致リスト長算出部１８４が出力した一致リスト長と、推定不一致データ長算出部１８５が出力した不一致データ長とを入力する。合計算出部１８６は、ＣＰＵ９１１を用いて、入力した要約データ長と、一致リスト長と、不一致データ長とを合計して、送受信データ長を算出する。合計算出部１８６は、ＣＰＵ９１１を用いて、算出した送受信データ長を出力する。
【００４３】
推定送受信データ長算出部１８０は、このようにして、実際の分割サイズと異なる一以上の分割サイズについて、送受信データ長を算出する。推定送受信データ長算出部１８０が送受信データ長を算出する分割サイズは、実際の分割サイズと異なっていれば任意でよく、送受信データ長を算出する分割サイズの数も任意でよいが、推定送受信データ長算出部１８０は、少なくとも、実際の分割サイズよりも大きい一つ以上の分割サイズについて送受信データ長を算出し、実際の分割サイズよりも小さい一つ以上の分割サイズについて送受信データ長を算出することが好ましい。実際の分割サイズよりも大きい分割サイズとしては、実際の分割サイズの整数倍が、送受信データ長を正確に算出することができるので好ましい。実際の分割サイズの整数倍のなかでは、実際の分割サイズの二倍が、実際の分割サイズに最も近く、最も好ましい。また、実際の分割サイズよりも小さい分割サイズとしては、上述した増加率一定の仮定に基づいて送受信データ長を算出する場合であれば、実際の分割サイズの整数倍について正確な送受信データ長を算出できるので、その逆数倍が好ましく、実際の分割サイズの二倍について送受信データ長を算出するのであれば、実際の分割サイズの半分が好ましい。
【００４４】
送受信データ長記憶部１９０は、実績送受信データ長算出部１７０及び推定送受信データ長算出部１８０が算出した送受信データ長を記憶する。すなわち、送受信データ長記憶部１９０は、ＣＰＵ９１１を用いて、合計算出部１７６，１８６が出力した送受信データ長を入力する。送受信データ長記憶部１９０は、磁気ディスク装置９２０を用いて、入力した送受信データ長を、分割サイズと対応づけて記憶する。
【００４５】
このように、送受信データ長記憶部１９０は、過去の更新時における実際の送受信データ長や、実際と分割サイズが異なっていたと仮定した場合の送受信データ長を記憶する。分割サイズ算出部１１０は、送受信データ長記憶部１９０が記憶した過去の送受信データ長から、最適な分割サイズを割り出し、次回の更新時の分割サイズとする。
【００４６】
図５は、この実施の形態における被書込み装置２００の機能ブロックの構成の一例を示すブロック構成図である。
被書込み装置２００は、分割サイズ受信部２１０、データ記憶部２２０、要約データ生成部２３０、要約データ送信部２４０、差分データ受信部２５０、データ更新部２６０を有する。
【００４７】
分割サイズ受信部２１０は、書込み装置１００から分割サイズを受信する。すなわち、分割サイズ受信部２１０は、通信装置９１５を用いて、通信路８１０を介して書込み装置１００が送信した分割サイズを受信する。分割サイズ受信部２１０は、ＣＰＵ９１１を用いて、受信した分割サイズを出力する。
【００４８】
データ記憶部２２０は、フラッシュメモリを用いて、あらかじめ、更新前データ５２０を記憶している。更新前データ５２０は、例えば、組込み機器としての被書込み装置２００を動作させるためのソフトウェアである。
【００４９】
要約データ生成部２３０は、要約データを生成する。すなわち、要約データ生成部２３０は、ＣＰＵ９１１を用いて、分割サイズ受信部２１０が出力した分割サイズと、データ記憶部２２０が記憶した更新前データ５２０とを入力する。要約データ生成部２３０は、ＣＰＵ９１１を用いて、入力した分割サイズに基づいて、入力した更新前データ５２０を分割サイズごとに分割して、複数の部分データとする。要約データ生成部２３０は、ＣＰＵ９１１を用いて、分割した複数の部分データのそれぞれについて、部分データを要約した要約データを生成する。要約データ生成部２３０は、ＣＰＵ９１１を用いて、生成した複数の要約データを出力する。
要約データは、例えば、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）やＭＤ（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ）５などのハッシュ値であり要約データは、複数種類のハッシュ値を組み合わせたものであってもよい。要約データは、衝突耐性を有する。すなわち、もとの部分データが異なれば要約データも異なり、要約データを比較することで部分データの内容が一致するか否かを判定できる。また、要約データは、もとの部分データのデータ長にかかわらず、一定のデータ長（例えば４バイト）を有する。したがって、分割サイズを大きくしても、要約データ一つ当たりのデータ長は変わらず、要約データの数が少なくなる分、要約データ全体のデータ長は短くなる。
【００５０】
要約データ送信部２４０は、書込み装置１００に対して要約データを送信する。すなわち、要約データ送信部２４０は、ＣＰＵ９１１を用いて、要約データ生成部２３０が出力した要約データを入力する。要約データ送信部２４０は、通信装置９１５を用いて、通信路８１０を介して書込み装置１００に対して、入力した要約データを送信する。
【００５１】
差分データ受信部２５０は、書込み装置１００から差分データを受信する。すなわち、差分データ受信部２５０は、通信装置９１５を用いて、通信路８１０を介して書込み装置１００が送信した差分データを受信する。差分データ受信部２５０は、ＣＰＵ９１１を用いて、受信した差分データを出力する。
【００５２】
データ更新部２６０は、差分データから更新後データ５１０を復元して、データ記憶部２２０に記憶させる。
データ更新部２６０は、一致データ複写部２６１、不一致データ複写部２６２、更新データ記憶部２６３、更新データ複写部２６４を有する。
【００５３】
更新データ記憶部２６３は、ＲＡＭ９１４を用いて、更新データを一時的に記憶する。更新データは、更新後データ５１０を復元する途中の過程のデータである。
【００５４】
一致データ複写部２６１は、ＣＰＵ９１１を用いて、差分データ受信部２５０が出力した差分データと、データ記憶部２２０が記憶した更新前データ５２０とを入力する。一致データ複写部２６１は、ＣＰＵ９１１を用いて、入力した差分データから一致リストを取得する。一致データ複写部２６１は、ＣＰＵ９１１を用いて、取得した一致リストに基づいて、入力した更新前データ５２０のなかから、更新後データ５１０のなかに一致する部分がある部分データを取得する。一致データ複写部２６１は、ＣＰＵ９１１を用いて、入力した一致リストに基づいて、取得した部分データが更新後データ５１０に一致する位置を指定して、更新データ記憶部２６３が記憶した更新データに、取得した部分データを複写する。更新データ記憶部２６３は、ＲＡＭ９１４を用いて、記憶した更新データの指定された位置に、複写された部分データを記憶する。
【００５５】
不一致データ複写部２６２は、ＣＰＵ９１１を用いて、差分データ受信部２５０が出力した差分データを入力する。不一致データ複写部２６２は、ＣＰＵ９１１を用いて、入力した差分データから不一致データを取得する。不一致データ複写部２６２は、ＣＰＵ９１１を用いて、取得した不一致データを、更新データ記憶部２６３が記憶した更新データのうち、一致データ複写部２６１が部分データを複写しなかった位置に、複写する。更新データ記憶部２６３は、ＲＡＭ９１４を用いて、一致データ複写部２６１が部分データを複写しなかった位置に、複写された不一致データを記憶する。
これにより、更新データ記憶部２６３が記憶した更新データは、更新後データ５１０と同じデータになる。
【００５６】
更新データ複写部２６４は、ＣＰＵ９１１を用いて、更新データ記憶部２６３が記憶した更新データを入力する。更新データ複写部２６４は、ＣＰＵ９１１を用いて、入力した更新データを、データ記憶部２２０に記憶させる。データ記憶部２２０は、フラッシュメモリを用いて、更新データを記憶する。
これにより、データ記憶部２２０は、更新後データ５１０と同じデータを記憶する。
【００５７】
図６は、この実施の形態におけるデータ更新処理の全体の流れの一例を示すフローチャート図である。
データ更新処理において、データ更新システム８００は、被書込み装置２００が記憶した更新前データ５２０を更新して、書込み装置１００が記憶した更新後データ５１０を、被書込み装置２００が記憶する。
データ更新処理において、書込み装置１００は、分割サイズ算出処理Ｓ６０１、分割サイズ送信処理Ｓ６０２、要約データ受信処理Ｓ６０３、差分データ生成処理Ｓ６０４、差分データ送信処理Ｓ６０５、送受信データ長算出処理Ｓ６０７を実行する。被書込み装置２００は、分割サイズ受信処理Ｓ７０１、要約データ生成処理Ｓ７０２、要約データ送信処理Ｓ７０３、差分データ受信処理Ｓ７０４、更新データ生成処理Ｓ７０５、更新データ複写処理Ｓ７０７を実行する。
【００５８】
分割サイズ算出処理Ｓ６０１において、書込み装置１００（分割サイズ算出部１１０）は、分割サイズを算出する。
分割サイズ送信処理Ｓ６０２において、書込み装置１００（分割サイズ送信部１２０）は、被書込み装置２００に対して、分割サイズ算出処理Ｓ６０１で算出した分割サイズを送信する。
分割サイズ受信処理Ｓ７０１において、被書込み装置２００（分割サイズ受信部２１０）は、分割サイズ送信処理Ｓ６０２で書込み装置１００が送信した分割サイズを受信する。
要約データ生成処理Ｓ７０２において、被書込み装置２００（要約データ生成部２３０）は、分割サイズ受信処理Ｓ７０１で受信した分割サイズに基づいて、要約データを生成する。
要約データ送信処理Ｓ７０３において、被書込み装置２００（要約データ送信部２４０）は、書込み装置１００に対して、要約データ生成処理Ｓ７０２で算出した要約データを送信する。
要約データ受信処理Ｓ６０３において、書込み装置１００（要約データ受信部１３０）は、要約データ送信処理Ｓ７０３で被書込み装置２００が送信した要約データを受信する。
差分データ生成処理Ｓ６０４において、書込み装置１００（差分データ生成部１５０）は、要約データ受信処理Ｓ６０３で受信した要約データと、更新後データ記憶部１４０が記憶した更新後データ５１０とに基づいて、差分データを生成する。
差分データ送信処理Ｓ６０５において、書込み装置１００（差分データ送信部１６０）は、被書込み装置２００に対して、差分データ生成処理Ｓ６０４で生成した差分データを送信する。
差分データ受信処理Ｓ７０４において、被書込み装置２００（差分データ受信部２５０）は、差分データ送信処理Ｓ６０５で書込み装置１００が送信した差分データを受信する。
更新データ生成処理Ｓ７０５において、被書込み装置２００（データ更新部２６０）は、差分データ受信処理Ｓ７０４で受信した差分データと、データ記憶部２２０が記憶した更新前データ５２０とに基づいて、更新データを生成する。
更新データ複写処理Ｓ７０７において、被書込み装置２００（データ更新部２６０）は、更新データ生成処理Ｓ７０５で生成した更新データを複写して、データ記憶部２２０が記憶する。
送受信データ長算出処理Ｓ６０７において、書込み装置１００（実績送受信データ長算出部１７０及び推定送受信データ長算出部１８０）は、差分データ生成処理Ｓ６０４での判定結果などに基づいて、送受信データ長を算出する。
【００５９】
図７は、この実施の形態における分割サイズ算出処理Ｓ６０１の流れの一例を示すフローチャート図である。
分割サイズ算出処理Ｓ６０１は、送受信データ長比較工程Ｓ６１１、分割サイズ決定工程Ｓ６１２を有する。
送受信データ長比較工程Ｓ６１１において、送受信データ長比較部１１１は、ＣＰＵ９１１を用いて、送受信データ長記憶部１９０が分割サイズごとに記憶した送受信データ長を比較する。
分割サイズ決定工程Ｓ６１２において、分割サイズ決定部１１２は、ＣＰＵ９１１を用いて、送受信データ長比較工程Ｓ６１１で送受信データ長比較部１１１が比較した比較結果に基づいて、送受信データ長が最も短い分割サイズを判定し、今回の分割サイズに決定する。
【００６０】
図８は、この実施の形態における要約データ生成処理Ｓ７０２の流れの一例を示すフローチャート図である。
要約データ生成処理Ｓ７０２は、部分データ選択工程Ｓ７２１、要約データ算出工程Ｓ７２２、部分データ繰り返し工程Ｓ７２３を有する。
部分データ選択工程Ｓ７２１において、要約データ生成部２３０は、ＣＰＵ９１１を用いて、データ記憶部２２０が記憶した更新前データ５２０を、分割サイズ受信処理Ｓ７０１で分割サイズ受信部２１０が受信した分割サイズごとに分割して、複数の部分データとし、分割した複数の部分データのなかから、部分データを一つずつ、先頭から順に選択する。
要約データ算出工程Ｓ７２２において、要約データ生成部２３０は、ＣＰＵ９１１を用いて、部分データ選択工程Ｓ７２１で選択した部分データについての要約データを生成する。
部分データ繰り返し工程Ｓ７２３において、要約データ生成部２３０は、ＣＰＵ９１１を用いて、部分データ選択工程Ｓ７２１で、すべての部分データを選択したか否かを判定する。まだ選択していない部分データがあると判定した場合、要約データ生成部２３０は、ＣＰＵ９１１を用いて、部分データ選択工程Ｓ７２１に戻り、次の部分データを選択する。すべての部分データを選択したと判定した場合、要約データ生成部２３０は、要約データ生成処理Ｓ７０２を終了する。
【００６１】
図９は、この実施の形態における差分データ生成処理Ｓ６０４の流れの一例を示すフローチャート図である。
差分データ生成処理Ｓ６０４は、一致判定部分選択工程Ｓ６４１、要約データ算出工程Ｓ６４２、一致検索工程Ｓ６４３、一致リスト追加工程Ｓ６４４、一致判定部分繰り返し工程Ｓ６４５、位置選択工程Ｓ６４６、一致判定工程Ｓ６４７、不一致データ追加工程Ｓ６４８、位置繰り返し工程Ｓ６４９を有する。
【００６２】
一致判定部分選択工程Ｓ６４１において、一致データ判定部１５１は、ＣＰＵ９１１を用いて、更新後データ記憶部１４０が記憶した更新後データ５１０のなかから、分割サイズ算出処理Ｓ６０１で分割サイズ算出部１１０が算出した分割サイズと等しいデータ長の部分を一つずつ順に選択して一致判定部分データとする。
要約データ算出工程Ｓ６４２において、一致データ判定部１５１は、ＣＰＵ９１１を用いて、一致判定部分選択工程Ｓ６４１で選択した一致判定部分データの内容を要約した要約データを生成する。
一致検索工程Ｓ６４３において、一致データ判定部１５１は、ＣＰＵ９１１を用いて、要約データ受信処理Ｓ６０３で要約データ受信部１３０が受信した要約データを検索して、要約データ算出工程Ｓ６４２で生成した要約データと一致するものを探す。一致するものが見つかった場合、一致データ判定部１５１は、ＣＰＵ９１１を用いて、一致リスト追加工程Ｓ６４４へ進む。一致するものが見つからなかった場合、一致データ判定部１５１は、ＣＰＵ９１１を用いて、一致判定部分繰り返し工程Ｓ６４５へ進む。
一致リスト追加工程Ｓ６４４において、一致リスト生成部１５２は、ＣＰＵ９１１を用いて、要約データ算出工程Ｓ６４２で一致データ判定部１５１が見つけた要約データの番号と、一致判定部分選択工程Ｓ６４１で一致データ判定部１５１が選択した一致判定部分データの位置とを、一致リストに追加する。
一致判定部分繰り返し工程Ｓ６４５において、一致データ判定部１５１は、ＣＰＵ９１１を用いて、一致判定部分選択工程Ｓ６４１で一致判定部分データとして選択すべき部分が残っているか否かを判定する。一致判定部分選択工程Ｓ６４１で一致データ判定部１５１が選択する一致判定部分データは、互いに重複していてもよい。選択すべき部分が残っていると判定した場合、一致データ判定部１５１は、ＣＰＵ９１１を用いて、一致判定部分選択工程Ｓ６４１に戻り、次の一致判定部分データを選択する。選択すべき部分が残っていないと判定した場合、一致データ判定部１５１は、ＣＰＵ９１１を用いて、位置選択工程Ｓ６４６へ進む。
【００６３】
位置選択工程Ｓ６４６において、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、更新後データ記憶部１４０が記憶した更新後データ５１０のなかの位置を、先頭から順に選択する。
一致判定工程Ｓ６４７において、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、位置選択工程Ｓ６４６で選択した位置のデータが、一致検索工程Ｓ６４３で一致する要約データを見つけた一致判定部分データの一部であるか否かを判定する。一致した一致判定部分データの一部であると判定した場合、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、位置繰り返し工程Ｓ６４９へ進む。一致した一致判定部分データの一部でないと判定した場合、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、不一致データ追加工程Ｓ６４８へ進む。
不一致データ追加工程Ｓ６４８において、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、位置選択工程Ｓ６４６で選択した位置のデータを、不一致データに追加する。
位置繰り返し工程Ｓ６４９において、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、位置選択工程Ｓ６４６で選択すべき位置が残っているか否かを判定する。選択すべき位置が残っていると判定した場合、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、位置選択工程Ｓ６４６に戻り、次の位置を選択する。選択すべき位置が残っていないと判定した場合、不一致データ生成部１５３は、差分データ生成処理Ｓ６０４を終了する。
【００６４】
図１０は、この実施の形態における要約データ生成処理Ｓ７０２及び差分データ生成処理Ｓ６０４において処理されるデータの一例を模式的に示す模式図である。
被書込み装置２００において、データ記憶部２２０は、更新前データ５２０を記憶している。
要約データ生成部２３０は、更新前データ５２０を、分割サイズごとに分割して、例えば１０個の部分データ５２１ａ〜５２１ｊとする。
要約データ生成部２３０は、部分データ５２１ａ〜５２１ｊそれぞれについて要約データ５２２ａ〜５２２ｊを生成する。
要約データ送信部２４０は、書込み装置１００に対して、要約データ生成部２３０が生成した１０個の要約データ５２２ａ〜５２２ｊを送信する。
書込み装置１００において、要約データ受信部１３０は、被書込み装置２００から、１０個の要約データ５２２ａ〜５２２ｊを受信する。
更新後データ記憶部１４０は、更新後データ５１０を記憶している。
一致データ判定部１５１は、更新後データ５１０から分割サイズのデータを切り出して一致判定部分データ５１１とする。切り出す位置は、更新後データ５１０の先頭から始め、少しずつ（例えば１バイトずつ）移動させていく。
一致データ判定部１５１は、切り出した一致判定部分データ５１１について要約データ５１２を生成する。一致データ判定部１５１は、１０個の要約データ５２２ａ〜５２２ｊのなかに、要約データ５１２と同じものがあるか検索する。検索を速くするため、要約データ５２２ａ〜５２２ｊをあらかじめソートして並べ替えておいてもよい。
【００６５】
図１１は、この実施の形態における差分データ生成処理Ｓ６０４において処理されるデータの一例を模式的に示す模式図である。
一致データ判定部１５１は、１０個の要約データ５２２ａ〜５２２ｊのなかに要約データ５１２と同じものを見つけた場合、その一致判定部分データ５１１を一致部分データであると判定する。例えば、一致部分データ５１３ａ〜５１３ｆは、要約データ５１２がそれぞれ要約データ５２２ａ，５２２ｂ，５２２ｈ，５２２ｆ，５２２ｇ，５２２ｊと一致した一致部分データである。
一致リスト生成部１５２は、一致データ判定部１５１の判定結果に基づいて、一致リスト５３０を生成する。一致リスト５３０は、例えば、部分番号５３１と一致位置５３２との組からなる。部分番号５３１は、一致した要約データの番号を表わし、一致位置５３２は、一致した一致部分データの開始位置を表わす。なお、一致した一致部分データのデータ長は、分割サイズと同じで一定なので、一致リスト５３０に含める必要はない。また、連続した部分が一致した場合に一致リスト５３０のデータ長を短くするため、連続して一致した一致部分データの数を、一致リスト５３０に含める構成としてもよい。その場合、例えば、一致リスト５３０は、「（０，５３，２），（５，７４０，２），（７，５２５，１），（９，１０４９，１）」となる。この構成とした場合、連続して一致した一致部分データの数が少ないと、逆に、一致リスト５３０のデータ長が長くなる場合がある。分割サイズが小さいほど、連続して一致する一致部分データが多くなるので、例えば、分割サイズが所定のサイズ以上であるか否かによって、一致リスト５３０の構成を切り替える構成としてもよい。
不一致データ生成部１５３は、更新後データ５１０のうち、一致データ判定部１５１が一致部分データであると判定した部分以外の部分を不一致部分データ５１４ａ〜５１４ｅとして抜き出し、抜き出したデータを不一致データ５４１ａ〜５４１ｅとして結合し、不一致データ５４０とする。
データ結合部１５４は、一致リスト５３０と不一致データ５４０とを結合して差分データ５５０とする。
【００６６】
図１２は、この実施の形態における更新データ生成処理Ｓ７０５の流れの一例を示すフローチャート図である。
更新データ生成処理Ｓ７０５は、一致リスト選択工程Ｓ７５１、一致データ複写工程Ｓ７５２、一致リスト繰り返し工程Ｓ７５３、位置選択工程Ｓ７５４、一致判定工程Ｓ７５５、不一致データ複写工程Ｓ７５６、位置繰り返し工程Ｓ７５７を有する。
【００６７】
一致リスト選択工程Ｓ７５１において、一致データ複写部２６１は、ＣＰＵ９１１を用いて、差分データ受信処理Ｓ７０４で差分データ受信部２５０が受信した差分データ５５０に含まれる一致リスト５３０のなかから、部分番号５３１と一致位置５３２との組を一つずつ順に選択する。
一致データ複写工程Ｓ７５２において、一致データ複写部２６１は、ＣＰＵ９１１を用いて、データ記憶部２２０が記憶した更新前データ５２０において、一致リスト選択工程Ｓ７５１で選択した部分番号５３１によって特定される部分データを、更新データ記憶部２６３が記憶した更新データにおいて、一致リスト選択工程Ｓ７５１で選択した一致位置５３２によって特定される位置に複写する。
一致リスト繰り返し工程Ｓ７５３において、一致データ複写部２６１は、ＣＰＵ９１１を用いて、一致リスト選択工程Ｓ７５１で一致リスト５３０に含まれるすべての組を選択したか否かを判定する。まだ選択していない組があると判定した場合、一致データ複写部２６１は、ＣＰＵ９１１を用いて、一致リスト選択工程Ｓ７５１に戻り、次の組を選択する。すべての組を選択したと判定した場合、一致データ複写部２６１は、ＣＰＵ９１１を用いて、位置選択工程Ｓ７５４へ進む。
【００６８】
位置選択工程Ｓ７５４において、不一致データ複写部２６２は、ＣＰＵ９１１を用いて、更新データ記憶部２６３が記憶した更新データのなかの位置を、先頭から順に選択する。
一致判定工程Ｓ７５５において、不一致データ複写部２６２は、ＣＰＵ９１１を用いて、位置選択工程Ｓ７５４で選択した位置のデータが、一致データ複写工程Ｓ７５２で一致データ複写部２６１が複写した部分データの一部であるか否かを判定する。複写した部分データの一部であると判定した場合、不一致データ複写部２６２は、ＣＰＵ９１１を用いて、位置繰り返し工程Ｓ７５７へ進む。複写した部分データの一部でないと判定した場合、不一致データ複写部２６２は、ＣＰＵ９１１を用いて、不一致データ複写工程Ｓ７５６へ進む。
不一致データ複写工程Ｓ７５６において、不一致データ複写部２６２は、ＣＰＵ９１１を用いて、差分データ受信処理Ｓ７０４で差分データ受信部２５０が受信した差分データ５５０に含まれる不一致データ５４０のなかから、複写していないデータを先頭から順に一つ選択して、更新データ記憶部２６３が記憶した更新データにおいて、位置選択工程Ｓ７５４で選択した位置に複写する。
位置繰り返し工程Ｓ７５７において、不一致データ複写部２６２は、ＣＰＵ９１１を用いて、不一致データ５４０のなかに不一致データ複写工程Ｓ７５６でまだ複写していないデータが残っているか否かを判定する。まだ複写していないデータが残っていると判定した場合、不一致データ複写部２６２は、ＣＰＵ９１１を用いて、位置選択工程Ｓ７５４に戻り、次の位置を選択する。不一致データ５４０に含まれるすべてのデータを複写したと判定した場合、不一致データ複写部２６２は、更新データ生成処理Ｓ７０５を終了する。
【００６９】
図１３は、この実施の形態における更新データ生成処理Ｓ７０５において処理されるデータの一例を模式的に示す模式図である。
一致データ複写部２６１は、一致リスト５３０に基づいて、更新前データ５２０を分割した部分データ５２１ａ〜５２１ｊのなかから、部分データ５２１ａを一致部分データ５６１ａの位置へ、部分データ５２１ｂを一致部分データ５６１ｂの位置へ、部分データ５２１ｆを一致部分データ５６１ｄの位置へ、部分データ５２１ｇを一致部分データ５６１ｅの位置へ、部分データ５２１ｈを一致部分データ５６１ｃの位置へ、部分データ５２１ｊを一致部分データ５６１ｆの位置へ、それぞれ複写する。
不一致データ複写部２６２は、一致データ複写部２６１が部分データを複写しなかった不一致部分データ５６２ａ〜５６２ｅの位置へ、不一致データ５４０を先頭から順に複写する。不一致データ５４０は、不一致部分データ５４１ａ〜５４１ｅの境目を識別するためのデータを含まなくてよい。不一致データ複写部２６２が、部分データが複写されていない領域に合わせて、不一致データ５４０の先頭から順にデータを切り出して複写することにより、不一致データ５４０は、自動的に、不一致部分データ５４１ａ〜５４１ｅに分割されて、不一致部分データ５６２ａ〜５６２ｅの位置へ複写される。
こうして、更新後データ５１０と同じ更新データ５６０が生成される。
【００７０】
図１４は、この実施の形態における送受信データ長算出処理Ｓ６０７の流れの一例を示すフローチャート図である。
送受信データ長算出処理Ｓ６０７は、分割サイズ選択工程Ｓ６７１、要約数算出工程Ｓ６７２、要約データ長算出工程Ｓ６７３、一致数算出工程Ｓ６７４、一致リスト長算出工程Ｓ６７５、不一致データ長算出工程Ｓ６７６、合計算出工程Ｓ６７７、分割サイズ繰り返し工程Ｓ６７８を有する。
【００７１】
分割サイズ選択工程Ｓ６７１において、実績送受信データ長算出部１７０及び推定送受信データ長算出部１８０は、ＣＰＵ９１１を用いて、送受信データ長を算出すべき複数の分割サイズのなかから、分割サイズを一つ選択する。選択した分割サイズが、今回の更新における実際の分割サイズである場合、以下の処理は、実績送受信データ長算出部１７０が実行する。また、選択した分割サイズが、今回の更新における実際の分割サイズと異なる場合、以下の処理は、推定送受信データ長算出部１８０が実行する。
【００７２】
要約数算出工程Ｓ６７２において、要約数算出部１７１または推定要約数算出部１８１は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ６７１で選択した分割サイズについて、要約数を算出する。要約数算出部１７１は、ＣＰＵ９１１を用いて、要約データ受信処理Ｓ６０３で要約データ受信部１３０が受信した要約データに基づいて、要約数（以下「実績要約数」と呼ぶ。）を算出する。推定要約数算出部１８１は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ６７１で選択した分割サイズに対する実際の分割サイズの比と、要約数算出部１７１が算出した実績要約数とに基づいて、要約数を算出する。
要約データ長算出工程Ｓ６７３において、要約データ長算出部１７２または推定要約データ長算出部１８２は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ６７１で選択した分割サイズについて、要約数算出工程Ｓ６７２で要約数算出部１７１または推定要約データ長算出部１８２が算出した要約数に基づいて、要約データ長を算出する。
【００７３】
一致数算出工程Ｓ６７４において、一致数算出部１７３または推定一致数算出部１８３は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ６７１で選択した分割サイズについて、一致数を算出する。一致数算出部１７３は、ＣＰＵ９１１を用いて、差分データ生成処理Ｓ６０４で一致データ判定部１５１が判定した判定結果に基づいて、一致数（以下「実績一致数」と呼ぶ。）を算出する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、差分データ生成処理Ｓ６０４で一致データ判定部１５１が判定した判定結果や、一致数算出部１７３が算出した実績一致数などに基づいて、一致数を算出する。
【００７４】
一致リスト長算出工程Ｓ６７５において、一致リスト長算出部１７４または推定一致リスト長算出部１８４は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ６７１で選択した分割サイズについて、一致数算出工程Ｓ６７４で一致数算出部１７３または推定一致数算出部１８３が算出した一致数に基づいて、一致リスト長を算出する。
【００７５】
不一致データ長算出工程Ｓ６７６において、不一致データ長算出部１７５または推定不一致データ長算出部１８５は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ６７１で選択した分割サイズについて、差分データ生成処理Ｓ６０４で一致データ判定部１５１が判定した判定結果や、一致数算出工程Ｓ６７４で一致数算出部１７３または推定一致数算出部１８３が算出した一致数などに基づいて、不一致データ長を算出する。
【００７６】
合計算出工程Ｓ６７７において、合計算出部１７６，１８６は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ６７１で選択した分割サイズについて、要約データ長算出工程Ｓ６７３で要約データ長算出部１７２または推定要約データ長算出部１８２が算出した要約データ長と、一致リスト長算出工程Ｓ６７５で一致リスト長算出部１７４または推定一致リスト長算出部１８４が算出した一致リスト長と、不一致データ長算出工程Ｓ６７６で不一致データ長算出部１７５または推定不一致データ長算出部１８５が算出した不一致データ長とを合計して、送受信データ長を算出する。
【００７７】
分割サイズ繰り返し工程Ｓ６７８において、実績送受信データ長算出部１７０及び推定送受信データ長算出部１８０は、分割サイズ選択工程Ｓ６７１で送受信データ長を算出すべきすべての分割サイズを選択したか否かを判定する。まだ選択していない分割サイズが残っていると判定した場合、分割サイズ選択工程Ｓ６７１に戻り、次の分割サイズを選択する。すべての分割サイズを選択したと判定した場合、送受信データ長算出処理Ｓ６０７を終了する。
【００７８】
図１５は、この実施の形態における二倍サイズ一致数算出工程Ｓ６７４ａの流れの一例を示すフローチャート図である。
二倍サイズ一致数算出工程Ｓ６７４ａは、分割サイズ選択工程Ｓ６７１で選択した分割サイズが、実際の分割サイズの二倍である場合における一致数算出工程Ｓ６７４である。
二番サイズ一致数算出工程Ｓ６７４ａは、一致リスト選択工程Ｓ６８１、部分番号判定工程Ｓ６８２、次部分番号判定工程Ｓ６８３、次位置判定工程Ｓ６８４、一致数計数工程Ｓ６８５、一致リスト繰り返し工程Ｓ６８６を有する。
【００７９】
一致リスト選択工程Ｓ６８１において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、差分データ生成処理Ｓ６０４で一致リスト生成部１５２が生成した一致リスト５３０から、部分番号５３１と一致位置５３２との組を一つずつ順に選択する。
部分番号判定工程Ｓ６８２において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト選択工程Ｓ６８１で選択した部分番号５３１が偶数か奇数かを判定する。部分番号５３１が偶数であると判定した場合、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、次部分番号判定工程Ｓ６８３へ進む。部分番号５３１が奇数であると判定した場合、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト繰り返し工程Ｓ６８６へ進む。
次部分番号判定工程Ｓ６８３において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト５３０から、次の部分番号５３１と一致位置５３２との組を選択する。推定一致数算出部１８３は、選択した次の部分番号５３１が、一致リスト選択工程Ｓ６８１で選択した部分番号５３１に１を加えたものであるか否かを判定する。次の部分番号５３１が、部分番号５３１＋１であると判定した場合、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、次位置判定工程Ｓ６８４へ進む。次の部分番号５３１が、部分番号５３１＋１でないと判定した場合、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト繰り返し工程Ｓ６８６へ進む。
次位置判定工程Ｓ６８４において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、次部分番号判定工程Ｓ６８３で選択した次の一致位置５３２が、一致リスト選択工程Ｓ６８１で選択した一致位置５３２に、分割サイズ算出処理Ｓ６０１で分割サイズ算出部１１０が算出した実際の分割サイズを加えたものであるか否かを判定する。次の一致位置５３２が、一致位置５３２＋分割サイズであると判定した場合、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致数計数工程Ｓ６８５へ進む。次の一致位置５３２が、一致位置５３２＋分割サイズでないと判定した場合、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト繰り返し工程Ｓ６８６へ進む。
一致数計数工程Ｓ６８５において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致数に１を加える。
一致リスト繰り返し工程Ｓ６８６において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト選択工程Ｓ６８１で一致リスト５３０に含まれるすべての部分番号５３１と一致位置５３２との組を選択したか否かを判定する。まだ選択していない組があると判定した場合、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト選択工程Ｓ６８１に戻り、次の組を選択する。すべての組を選択したと判定した場合、推定一致数算出部１８３は、二倍サイズ一致数算出工程Ｓ６７４ａを終了する。
【００８０】
図１１に示した一致リスト５３０を例とすると、部分番号「０」の部分データと部分番号「１」の部分データとは、分割サイズが二倍になると、一つの部分データになる。部分番号「０」の部分データと一致する一致部分データ５１３ａの一致位置５３２「５３」と、部分番号「１」の部分データと一致する一致部分データ５１３ｂの一致位置５３２「１８１」との差は、分割サイズと同じ「１２８」であるから、一致部分データ５１３ａと一致部分データ５１３ｂとは連続している。したがって、推定一致数算出部１８３は、分割サイズが二倍になった場合も、更新後データ５１０のなかに一致する部分があると判定する。
これに対して、部分番号「５」の部分データと部分番号「６」の部分データとは、分割サイズが二倍になると、異なる部分データになる。推定一致数算出部１８３は、最初の部分番号「５」が奇数であることにより、これを判定し、一致する部分があるとは数えない。
【００８１】
なお、分割サイズ選択工程Ｓ６７１で選択した分割サイズが実際の分割サイズの三倍、四倍など一般に整数倍である場合については、ここで説明した二倍サイズ一致数算出工程Ｓ６７４ａを修正した処理をすればよい。
すなわち、分割サイズが実際のサイズのｎ倍である場合について、部分番号判定工程Ｓ６８２において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致リスト選択工程Ｓ６８１で選択した部分番号５３１が、ｎで割り切れるか否かを判定し、割り切れる場合には次部分番号判定工程Ｓ６８３へ進み、割り切れない場合には一致リスト繰り返し工程Ｓ６８６へ進む。
また、次部分番号判定工程Ｓ６８３及び次位置判定工程Ｓ６８４の処理を、ｎ−１回繰り返し、後続するｎ−１個の部分番号５３１と一致位置５３２との組が表わす部分データ及び一致部分データがすべて連続しているか否かを判定し、すべて連続していれば一致数計数工程Ｓ６８５へ進み、連続していなければ、一致リスト繰り返し工程Ｓ６８６へ進む。
【００８２】
あるいは、二倍サイズ一致数算出工程Ｓ６７４ａにおいて、一致数を数えるだけでなく、一致リストを生成する構成とし、生成した一致リストに基づいて、二倍サイズ一致数算出工程Ｓ６７４ａをもう一度実行する構成とすれば、分割サイズが実際の四倍である場合についての一致数を算出することができる。これを繰り返すことにより、一般に、分割サイズが実際の分割サイズの２の累乗倍である場合について、一致数を算出することができる。
【００８３】
図１６は、この実施の形態における二分の一サイズ一致数算出工程Ｓ６７４ｂの流れの一例を示すフローチャート図である。
二分の一サイズ一致数算出工程Ｓ６７４ｂは、分割サイズ選択工程Ｓ６７１で選択した分割サイズが、実際の分割サイズの半分である場合の一致数算出工程Ｓ６７４である。
二分の一サイズ一致数算出工程Ｓ６７４ｂは、実績不一致数算出工程Ｓ６９１、二倍サイズ不一致数算出工程Ｓ６９２、不一致数増加率算出工程Ｓ６９３、推定不一致数算出工程Ｓ６９４、推定一致数算出工程Ｓ６９５を有する。
実績不一致数算出工程Ｓ６９１において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、要約数算出部１７１が算出した実績要約数から、一致数算出部１７３が算出した実績一致数を差し引いた差を算出して、実績不一致数とする。
二倍サイズ不一致数算出工程Ｓ６９２において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、分割サイズが実際の二倍の場合について、推定要約数算出部１８１が算出した要約数から、推定一致数算出部１８３が算出した一致数を差し引いた差を算出して、二倍サイズ不一致数とする。
不一致数増加率算出工程Ｓ６９３において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、実績不一致数算出工程Ｓ６９１で算出した実績不一致数を、二倍サイズ不一致数算出工程Ｓ６９２で算出した二倍サイズ不一致数で割った商を算出して、不一致数増加率とする。
推定不一致数算出工程Ｓ６９４において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、実績不一致数算出工程Ｓ６９１で算出した実績不一致数に、不一致数増加率算出工程Ｓ６９３で算出した不一致数増加率を乗じた積を算出して、推定不一致数とする。
推定一致数算出工程Ｓ６９５において、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、分割サイズが実際の半分の場合について、推定要約数算出部１８１が算出した要約数から、推定不一致数算出工程Ｓ６９４で算出した推定不一致数を差し引いた差を算出して、一致数とする。
【００８４】
なお、この例では、不一致数の増加率がほぼ一定であるという仮定に基づいて、分割サイズが二分の一の場合についての一致数を算出しているが、異なる仮定に基づいて一致数を算出する構成としてもよい。
例えば、不一致数の増加率が変化する場合は、その変化率がほぼ一定であるという仮定に基づいて、分割サイズが二分の一の場合についての一致数を算出する構成としてもよい。すなわち、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、更に、分割サイズが四倍の場合について不一致数（以下「四倍サイズ不一致数」と呼ぶ。）を算出する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、二倍サイズ不一致数を四倍サイズ不一致数で割った商を算出して、二倍サイズ不一致数増加率とする。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、不一致数増加率を、二倍サイズ不一致数増加率で割った商を算出して、不一致数増加率変化率とする。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、不一致数増加率に、不一致数増加率変化率を乗じた積を算出して、二分の一サイズ不一致数増加率とする。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、実績不一致数に、二分の一サイズ不一致数増加率を乗じた積を算出して、推定不一致数とする。
【００８５】
図１７は、この実施の形態における各データの関係の一例を示す模式図である。
送受信データ長記憶部１９０は、磁気ディスク装置９２０を用いて、分割サイズ５７１、送受信データ長５７２、蓄積回数５７３の３つを組としたデータ５７０を記憶する。送受信データ長５７２は、過去の更新時に、その分割サイズ５７１について実績送受信データ長算出部１７０や推定送受信データ長算出部１８０が算出した送受信データ長の平均値である。蓄積回数５７３は、過去の更新時に、その分割サイズ５７１について実績送受信データ長算出部１７０や推定送受信データ長算出部１８０が送受信データ長を算出した回数である。
この例において、推定送受信データ長算出部１８０は、実際の分割サイズの二倍の分割サイズについての送受信データ長と、実際の分割サイズの半分の分割サイズについての送受信データ長との二つを算出するものとする。
【００８６】
今回の更新の前に、データ更新システム８００は、更新を二回（分割サイズを「２５６」として一回、分割サイズを「１２８」として一回）実行し、その結果として、送受信データ長記憶部１９０がデータ５７０ａを記憶しているものとする。
分割サイズ算出部１１０は、これに基づいて、分割サイズ５７１「１２８」についての送受信データ長５７２が最も小さいので、今回の更新における分割サイズ５８１を「１２８」に決定する。
【００８７】
今回の更新の結果に基づいて、実績送受信データ長算出部１７０は、実績要約数５８２、実績一致数５８３、実績不一致数５８４、実績送受信データ長５８５を算出する。実績要約数５８２が「８１９２」、実績一致数５８３が「６１９２」だったとすると、実績不一致数５８４は「８１９２−６１９２＝２０００」となり、実績送受信データ長５８５は「４×８１９２＋１２８×２０００＝２８８７６８」となる。なお、要約データ１つ当たりのデータ長は４バイトとし、一致リストのデータ長は無視する（０とみなす）ものとする。
【００８８】
まず、推定送受信データ長算出部１８０は、分割サイズが実際の二倍の「２５６」である場合について、要約数５９２ａ、一致数５９３ａ、不一致数５９４ａ、送受信データ長５９５ａを算出する。要約数５９２ａは「８１９２／２＝４０９６」となる。一致数５９３ａが「３０４６」だったとすると、不一致数５９４ａは「４０９６−３０４６＝１０５０」となり、送受信データ長５９５ａは「４×４０９４＋２５６×１０５０＝２８５１８４」となる。
次に、推定送受信データ長算出部１８０は、分割サイズが実際の半分の「６４」である場合について、要約数５９２ｂ、一致数５９３ｂ、不一致数５９４ｂ、送受信データ長５９５ｂを算出する。要約数５９２ｂは「８１９２×２＝１６３８４」となる。不一致数増加率は「２０００／１０５０＝１．９０５」となるから、不一致数５９４ｂは「２０００×１．９０５＝３８１０」となり、一致数５９３ｂは「１６３８４−３８１０＝１２５７４」となり、送受信データ長５９５ｂは「４×１６３８４＋６４×１２５７４＝３０９３７６」となる。
【００８９】
送受信データ長記憶部１９０は、ＣＰＵ９１１を用いて、実績送受信データ長算出部１７０及び推定送受信データ長算出部１８０が算出した送受信データ長５８５，５９５ａ，５９５ｂに基づいて、記憶したデータ５７０ａを更新し、磁気ディスク装置９２０を用いて、データ５７０ｂを記憶する。
例えば、送受信データ長記憶部１９０は、ＣＰＵ９１１を用いて、分割サイズ５７１「１２８」について、送受信データ長５７２「２９６２５６」と蓄積回数５７３「２」との積「２９６２５６×２＝５９２５１２」を算出して、合計送受信データ長とする。送受信データ長記憶部１９０は、ＣＰＵ９１１を用いて、蓄積回数５７３「２」に「１」を加えて「３」とする。送受信データ長記憶部１９０は、ＣＰＵ９１１を用いて、算出した合計送受信データ長「５９２５１２」と、実績送受信データ長算出部１７０が算出した実績送受信データ長５８５「２８８７６８」との和「５９２５１２＋２８８７６８＝８８１２８０」を、更新した蓄積回数５７３「３」で割った商「８８１２８０／３＝２９３７６０」を算出して、新しい送受信データ長５７２とする。
同様に、送受信データ長記憶部１９０は、分割サイズ５７１「２５６」について、合計送受信データ長「３０４３８４×２＝６０８７６８」を算出し、蓄積回数５７３を「２＋１＝３」とし、送受信データ長５７２を「（６０８７６８＋２８５１８４）／３＝２９７９８４」とする。また、送受信データ長記憶部１９０は、分割サイズ５７１「６４」について、合計送受信データ長「３１０９７６×１＝３１０９７６」を算出し、蓄積回数５７３を「１＋１＝２」とし、送受信データ長５７２を「（３１０９７６＋３０９３７６）／２＝３１０１７６」とする。
【００９０】
次回の更新では、送受信データ長記憶部１９０が記憶したデータ５７０ｂに基づいて分割サイズ算出部１１０が分割サイズ５８１を決定するので、分割サイズ５８１は、今回と同じ「１２８」になる。
【００９１】
なお、送受信データ長記憶部１９０は、送受信データ長５７２として、実績送受信データ長算出部１７０や推定送受信データ長算出部１８０が算出した送受信データ長の平均値を記憶するのではなく、実績送受信データ長算出部１７０や推定送受信データ長算出部１８０が算出した送受信データ長を、過去所定の回数分そのまま記憶し、分割サイズ算出部１１０が、平均値を算出する構成としてもよい。あるいは、送受信データ長記憶部１９０または分割サイズ算出部１１０が、過去の送受信データ長の単純平均を算出して比較するのではなく、古い送受信データ長ほど影響が少なくなるよう重み付けをして、重み付け平均を算出して比較する構成としてもよい。
【００９２】
この実施の形態における書込み装置１００（データ送信装置）は、データを記憶する記憶装置（磁気ディスク装置９２０）と、データを処理する処理装置（ＣＰＵ９１１）と、データを送信する送信装置（通信装置９１５）と、データを受信する受信装置（通信装置９１５）と、更新後データ記憶部１４０と、分割サイズ算出部１１０と、分割サイズ送信部１２０と、要約データ受信部１３０と、差分データ生成部１５０と、差分データ送信部１６０とを有する。
上記更新後データ記憶部１４０は、上記記憶装置を用いて、データ記憶装置（被書込み装置２００）が記憶した更新前データ５２０を更新して上記データ記憶装置に記憶させる更新後データ５１０を記憶する。
上記分割サイズ算出部１１０は、上記処理装置を用いて、上記データ記憶装置が記憶した更新前データ５２０を複数の部分に分割する分割サイズ５８１を算出する。
上記分割サイズ送信部１２０は、上記送信装置を用いて、上記分割サイズ算出部１１０が算出した分割サイズ５８１を上記データ記憶装置に対して送信する。
上記要約データ受信部１３０は、上記受信装置を用いて、上記分割サイズ送信部１２０が送信した分割サイズ５８１ごとに上記更新前データ５２０を分割した部分データ５２１ａ〜５２１ｊについて、上記部分データ５２１ａ〜５２１ｊの内容を要約した要約データ５２２ａ〜５２２ｊを、上記データ記憶装置から受信する。
上記差分データ生成部１５０は、上記処理装置を用いて、上記更新後データ記憶部１４０が記憶した更新後データ５１０と、上記要約データ受信部１３０が受信した要約データ５２２ａ〜５２２ｊとに基づいて、上記更新後データ５１０において上記部分データ５２１ａ〜５２１ｊと一致する部分（一致部分データ５１３ａ〜５１３ｆ）を判定し、判定した判定結果に基づいて、上記更新前データ５２０と上記更新後データ５１０との差分を表わす差分データ５５０を生成する。
上記差分データ送信部１６０は、上記送信装置を用いて、上記差分データ生成部１５０が生成した差分データ５５０を上記データ記憶装置に対して送信する。
【００９３】
この実施の形態における書込み装置１００（データ送信装置）によれば、分割サイズ算出部１１０が算出した分割サイズ５８１を、分割サイズ送信部１２０が被書込み装置２００（データ記憶装置）に対して送信するので、最適な分割サイズを用いて、データを更新することができる。
【００９４】
この実施の形態における書込み装置１００（データ送信装置）は、更に、実績送受信データ長算出部１７０と、推定送受信データ長算出部１８０とを有する。
上記実績送受信データ長算出部１７０は、上記処理装置（ＣＰＵ９１１）を用いて、上記要約データ受信部１３０が受信した要約データ５２２ａ〜５２２ｊの長さ（データ長）と、上記差分データ生成部１５０が生成した差分データ５５０の長さ（データ長）とを合計した送受信データ長を算出して、実績送受信データ長５８５とする。
上記推定送受信データ長算出部１８０は、上記処理装置を用いて、上記差分データ生成部１５０が判定した判定結果に基づいて、上記分割サイズ５８１が異なる場合についての送受信データ長を算出して、推定送受信データ長５９５とする。
上記分割サイズ算出部１１０は、上記処理装置を用いて、過去の更新時に、上記実績送受信データ長算出部１７０が算出した実績送受信データ長５８５と、上記推定送受信データ長算出部１８０が算出した推定送受信データ長５９５とに基づいて、送受信データ長が短くなると予測される分割サイズを算出する。
【００９５】
この実施の形態における書込み装置１００（データ送信装置）によれば、過去の更新時に実績送受信データ長算出部１７０及び推定送受信データ長算出部１８０が算出した実績送受信データ長５８５及び推定送受信データ長５９５に基づいて、送受信データ長が短くなる分割サイズ５８１を、分割サイズ算出部１１０が算出するので、同じ傾向の更新を繰り返し行う場合に、送受信データ長が短くなる最適な分割サイズを用いて、データを更新することができる。
【００９６】
この実施の形態における書込み装置１００（データ送信装置）において、上記推定送受信データ長算出部１８０は、上記処理装置（ＣＰＵ９１１）を用いて、上記差分データ生成部１５０が判定した判定結果に基づいて、上記分割サイズ５８１が二倍であった場合に、上記差分データ生成部１５０が上記更新後データ５１０において上記部分データと一致すると判定できた部分の長さ（一致数）を算出し、算出した長さに基づいて、上記分割サイズが二倍であった場合の推定送受信データ長５９５ａを算出する。
【００９７】
この実施の形態における書込み装置１００（データ送信装置）によれば、差分データ生成部１５０が判定した判定結果に基づいて、分割サイズが二倍の場合についての推定送受信データ長５９５ａを推定送受信データ長算出部１８０が算出するので、過去の更新で実際に使用した分割サイズを用いる場合と、実際に使用した分割サイズの二倍を分割サイズとした場合とを比較して、送受信データ長が短くなる最適な分割サイズを分割サイズ算出部１１０が算出することができる。
【００９８】
この実施の形態における書込み装置１００（データ送信装置）において、上記推定送受信データ長算出部１８０は、更に、上記処理装置（ＣＰＵ９１１）を用いて、上記差分データ生成部１５０が上記更新後データ５１０において上記部分データ５２２ａ〜５２２ｊと一致すると判定しなかった部分（不一致部分データ５１４ａ〜５１４ｅ）の長さ（実績不一致数５８４）と、上記分割サイズ５８１が二倍であった場合について算出した上記差分データ生成部１５０が上記更新後データ５１０において上記部分データと一致すると判定できなかった部分の長さ（不一致数５９４ａ）との比率（不一致数増加率）を算出し、上記差分データ生成部１５０が上記更新後データ５１０において上記部分データ５２２ａ〜５２２ｊと一致すると判定しなかった部分の長さに、算出した比率を乗じることにより、上記分割サイズ５８１が半分であった場合に、上記差分データ生成部１５０が上記更新後データ５１０において上記部分データと一致すると判定できなかった部分の長さの推定値（不一致数５９４ｂ）を算出し、算出した推定値に基づいて、上記分割サイズ５８１が半分であった場合の推定送受信データ長５９５ｂを算出する。
【００９９】
この実施の形態における書込み装置１００（データ送信装置）によれば、不一致数増加率がほぼ一定であるという仮定に基づいて、分割サイズが半分の場合についての送受信データ長５９５ｂを推定送受信データ長算出部１８０が算出するので、過去の更新で実際に使用した分割サイズを用いる場合と、実際に使用した分割サイズの半分を分割サイズとした場合とを比較して、送受信データ長が短くなる最適な分割サイズを分割サイズ算出部１１０が算出することができる。
【０１００】
この実施の形態における被書込み装置２００（データ記憶装置）は、データを記憶する記憶装置（フラッシュメモリ）と、データを処理する処理装置（ＣＰＵ９１１）と、データを送信する送信装置（通信装置９１５）と、データを受信する受信装置（通信装置９１５）と、データ記憶部２２０と、分割サイズ受信部２１０と、要約データ生成部２３０と、要約データ送信部２４０と、差分データ受信部２５０と、データ更新部２６０とを有する。
上記データ記憶部２２０は、上記記憶装置を用いて、更新前データ５２０を記憶する。
上記分割サイズ受信部２１０は、上記受信装置を用いて、上記データ記憶部２２０が記憶した更新前データ５２０の更新を要求するデータ送信装置（書込み装置１００）から、上記データ記憶部２２０が記憶した更新前データ５２０を分割する分割サイズ５８１を受信する。
上記要約データ生成部２３０は、上記処理装置を用いて、上記データ記憶部２２０が記憶した更新前データ５２０を、上記分割サイズ受信部２１０が受信した分割サイズ５８１ごとに分割して部分データ５２１ａ〜５２１ｊとし、分割した部分データ５２１ａ〜５２１ｊについて、上記部分データ５２１ａ〜５２１ｊの内容を要約した要約データ５２２ａ〜５２２ｊを生成する。
上記要約データ送信部２４０は、上記送信装置を用いて、上記要約データ生成部２３０が生成した要約データ５２２ａ〜５２２ｊを上記データ送信装置に対して送信する。
上記差分データ受信部２５０は、上記受信装置を用いて、上記更新前データ５２０と、上記更新前データ５２０を更新する更新後データ５１０との差分を表わす差分データ５５０を、上記データ送信装置から受信する。
上記データ更新部２６０は、上記処理装置を用いて、上記差分データ受信部２５０が受信した差分データ５５０に基づいて、上記データ記憶部２２０が記憶した更新前データ５２０を上記更新後データ５１０に更新する。
【０１０１】
この実施の形態における被書込み装置２００（データ記憶装置）によれば、分割サイズ受信部２１０が受信した分割サイズ５８１に基づいて、要約データ生成部２３０が要約データを生成するので、最適な分割サイズを用いて、データを更新することができる。
【０１０２】
この実施の形態におけるデータ更新システム８００は、上記データ送信装置（書込み装置１００）と、上記データ記憶装置（被書込み装置２００）とを有するので、最適な分割サイズを用いて、データを更新することができる。
【０１０３】
この実施の形態における書込み装置１００（データ送信装置）及び被書込み装置２００（データ記憶装置）は、コンピュータがコンピュータプログラムを実行することにより、上記コンピュータを上記データ送信装置または上記データ記憶装置として機能させることで、実現することができる。
この実施の形態におけるコンピュータプログラムによれば、最適な分割サイズを用いて、データを更新するデータ送信装置（書込み装置１００）及びデータ記憶装置（被書込み装置２００）及びデータ更新システム８００を実現することができる。
【０１０４】
この実施の形態におけるデータ更新システム８００において、データ記憶装置（被書込み装置２００）が記憶した更新前データ５２０を、データ送信装置（書込み装置１００）が記憶した更新後データ５１０に更新するデータ更新方法は、以下の工程を有する。
上記データ送信装置が、上記更新前データ５２０を複数の部分に分割する分割サイズ５８１を算出する。
上記データ送信装置が、算出した分割サイズ５８１を上記データ記憶装置に対して送信する。
上記データ記憶装置が、データ送信装置が送信した分割サイズ５８１を受信する。
上記データ記憶装置が、記憶した更新前データ５２０を、受信した分割サイズ５８１ごとに分割して部分データ５２１ａ〜５２１ｊとし、分割した部分データ５２１ａ〜５２１ｊについて、上記部分データ５２１ａ〜５２１ｊの内容を要約した要約データ５２２ａ〜５２２ｊを生成する。
上記データ記憶装置が、生成した要約データ５２２ａ〜５２２ｊを上記データ送信装置に対して送信する。
上記データ送信装置が、上記データ記憶装置が送信した要約データ５２２ａ〜５２２ｊを受信する。
上記データ送信装置が、記憶した更新後データ５１０と、受信した要約データ５２２ａ〜５２２ｊとに基づいて、上記更新後データ５１０において上記部分データ５２１ａ〜５２１ｊと一致する部分を判定し、判定した判定結果に基づいて、上記更新前データ５２０と上記更新後データ５１０との差分を表わす差分データ５５０を生成する。
上記データ送信装置が、生成した差分データ５５０を上記データ記憶装置に対して送信する。
上記データ記憶装置が、上記データ送信装置が送信した差分データ５５０を受信する。
上記データ記憶装置が、受信した差分データ５５０に基づいて、記憶した更新前データ５２０を上記更新後データ５１０に更新する。
【０１０５】
この実施の形態におけるデータ更新方法によれば、データ送信装置（書込み装置１００）が、分割サイズ５８１を算出して、データ記憶装置（被書込み装置２００）に対して送信し、データ記憶装置が、受信した分割サイズ５８１に基づいて、要約データ５２２ａ〜５２２ｊを生成するので、最適な分割サイズを用いて、データを更新することができる。
【０１０６】
以上説明したデータ更新システム８００（ソフトウェア更新システム）は、第１データ（更新前データ５２０）を格納する被書込み装置２００と、第１データに対応する第２データ（更新後データ５１０）を持ち、被書込み装置２００上の第１データを第２データに更新するための制御を行う書込み装置１００と、被書込み装置２００と書込み装置１００を接続する通信媒体（通信路８１０）とから構成される。
【０１０７】
前記被書込み装置２００は、
前記第１データを格納する被書込み側格納部（データ記憶部２２０）と、
前記書込み装置１００の更新開始要求部（分割サイズ送信部１２０）からの要求に対して、前記要求に含まれる分割サイズ５８１に従って第１データを先頭から順次分割して１個以上の分割データ（部分データ５２１ａ〜５２１ｊ）を生成し、前記分割データの各々に対して所定の計算規則に従ったハッシュ値（要約データ５２２ａ〜５２２ｊ）を計算するハッシュ計算部（要約データ生成部２３０）と、
前記ハッシュ計算部が計算した前記分割データの各々に対するハッシュ値を前記書込み装置１００に送信するハッシュ送信部（要約データ送信部２４０）と、
前記書込み装置１００の更新データ送信部（差分データ送信部１６０）から受け取った更新データ（差分データ５５０）を参照することで、前記被書込み側格納部に格納された前記第１データを第２データに書き換える更新データ適用部（データ更新部２６０）とを備える。
【０１０８】
前記書込み装置１００は、
前記第２データを格納する書込み側格納部（更新後データ記憶部１４０）と、
前記第２データに対して適用する分割サイズを決定する分割サイズ決定部（分割サイズ算出部１１０）と、
前記被書込み装置２００にソフトウェア更新の開始を要求する際に、前記分割サイズ決定部によって決定した分割サイズを要求に含めて転送する更新開始要求部（分割サイズ送信部１２０）と、
前記被書込み装置２００のハッシュ送信部（要約データ送信部２４０）から送られてきた第１データの各々の分割データに対するハッシュ値を受信し、前記分割データの各々とハッシュ値が一致する第２データ上のサイズが前記分割サイズとなる部分データ（一致部分データ）を探索する一致部分データ探索部（要約データ受信部１３０、一致データ判定部１５１）と、
前記一致部分データ探索部によって発見された、ハッシュ値が一致する第１データ上の分割データと第２データ上の部分データとの位置関係を示す情報（一致リスト５３０）と、第２データ上で第１データの分割データとハッシュ値の一致が発見できた部分データを除いた領域すべての情報（不一致データ５４０）とを更新データ（差分データ５５０）として前記被書込み装置２００に送信する更新データ送信部（差分データ送信部１６０）とを備える。
【０１０９】
以上説明したデータ更新システム８００（ソフトウェア更新システム）において、前記一致部分データ探索部（推定送受信データ長算出部１８０）は、分割サイズ５８１が現在の２倍であったと仮定した場合に発見できる前記第２データ上の部分データの数（推定一致数）を計算する。
前記分割サイズ決定部（推定送受信データ長算出部１８０、送受信データ長記憶部１９０、分割サイズ算出部１１０）は、過去１回以上の更新処理において使用した分割サイズと、ハッシュ値が一致した第２データ上の部分データの数（実績一致数）と、分割サイズが２倍であったと仮定した場合のハッシュ値が一致する前記第２データ上の部分データの数を記憶するとともに、分割サイズの決定に前記記憶しておいた情報を用いる。
【０１１０】
以上説明したデータ更新システム８００（ソフトウェア更新システム）は、書込み装置１００の側から動作を開始する。最初に、書込み制御部（ＣＰＵ９１１）は、更新開始要求部（分割サイズ送信部１２０）に対して、新版ソフトウェア（更新後データ５１０）全体を対象データとしての更新処理を指示する。更新開始要求部は、分割サイズ決定部（分割サイズ算出部１１０）を用いて分割サイズを決定し、分割サイズを含めた更新開始要求を組込み機器（被書込み装置２００）に対して送信する。
【０１１１】
分割サイズ決定部（分割サイズ算出部１１０）は、過去の更新処理で用いた「分割サイズ」と、一致部分データ探索部（一致データ判定部１５１）がその処理過程で計算する旧版ソフトウェア（更新前データ５２０）上の「相違分割データの数」（実績不一致数）、および、一致部分データ探索部（推定送受信データ長算出部１８０）が計算する「分割サイズを２倍にした場合の相違分割データの数」（推定不一致数）を、一致部分データ探索部からの要求に応じて過去履歴情報として保持する。これらの情報を元に、今回の更新処理で用いる分割サイズを決定する。
【０１１２】
組込み機器（被書込み装置２００）では、更新開始要求をハッシュ計算部（分割サイズ受信部２１０）が受信する。ハッシュ計算部（要約データ生成部２３０）は、更新開始要求から分割サイズ情報を抽出し、その分割サイズに従って旧版ソフトウェア（更新前データ５２０）を先頭から順に分割して行き、１個以上の分割データ（部分データ）を得る。これらの分割データに対して、あらかじめ定められた計算規則を適用してハッシュ値（要約データ）を得る。計算規則としては、例えばＣＲＣ、ＭＤ５などがある。また、ｒｓｙｎｃのように２種類またはそれ以上のハッシュ値を計算してもよい。
ハッシュ送信部（要約データ送信部２４０）は、ハッシュ計算部によって計算した各分割データに対するハッシュ値を書込み装置１００に送信する。
【０１１３】
書込み装置１００では、一致部分データ探索部（要約データ受信部１３０）がハッシュ値のリストを受信する。一致部分データ探索部（差分データ生成部１５０）は、受信したハッシュ値リストをハッシュテーブル等の検索が容易な形でハッシュ探索テーブルとして保持してもよい。そして、新版ソフトウェア（更新後データ５１０）上で、ハッシュ値リスト上にあるハッシュ値と同じハッシュ値を持ち、かつサイズが分割サイズと同一なるような部分（一致部分データ）を探索する。
【０１１４】
一致部分データ探索部（実績送受信データ長算出部１７０）は、「分割サイズ」と、旧版ソフトウェア（更新前データ５２０）上の全ての分割データの数（実績要約数）から一致分割データの数（実績一致数）を引いた値である「相違分割データ数」（実績不一致数）とを分割サイズ決定部（送受信データ長記憶部１９０）に登録する。更に、一致部分データ探索部（推定送受信データ長算出部１８０）は、「分割データサイズが現在の２倍であると仮定した場合の相違分割データ数」（推定不一致数）も計算し、分割サイズ決定部に登録する。これは、分割サイズが２倍になった場合の各分割データにおいて、当該分割データに含まれる現在の２つの分割データが共に一致分割データであり、かつそれぞれに対応する一致部分データも一致分割データと同じの並び順で新版ソフトウェア上に連続して配置されている場合、当該分割データを分割サイズ２倍時の一致分割データとみなすことで計算できる。
【０１１５】
一致部分データ探索部（一致データ判定部１５１）による探索が完了すると、旧版ソフトウェア（更新前データ５２０）上の各一致分割データと、新版ソフトウェア（更新後データ５１０）上の一致部分データの対応関係（一致リスト５３０）を得る。例えば、旧版ソフトウェア（更新前データ５２０）の１番目の分割データと新版ソフトウェア（更新後データ５１０）上の４バイト目から始まる部分データ、といったような対応関係である。
【０１１６】
次に、更新データ送信部（差分データ生成部１５０）は、上記対応関係と新版ソフトウェア（更新後データ５１０）を用いて、旧版ソフトウェア（更新前データ５２０）から新版ソフトウェア（更新後データ５１０）を構築するための更新データ（差分データ５５０）を生成する。更新データに必要な情報は、上記対応関係を示す情報（一致リスト５３０、対応関係情報）と、新版ソフトウェア（更新後データ５１０）から全ての一致部分データを除いた部分のデータ（不一致データ５４０、相違データ）そのものであり、これらを一つにまとめて更新データ（差分データ５５０）とする。更新データ送信部（差分データ送信部１６０）は、更新データ（差分データ５５０）の生成が完了すると、それを組込み機器（被書込み装置２００）に送信する。
【０１１７】
組込み機器（被書込み装置２００）では、更新データ適用部（差分データ受信部２５０）が更新データ（差分データ５５０）を受信する。更新データ適用部（データ更新部２６０）は、最初に、例えばＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発メモリ上に新版ソフトウェアのイメージ（更新データ）を構築する。旧版ソフトウェア（更新前データ５２０）の分割データで更新データ内の対応関係情報（一致リスト５３０）に現れるものを被書込み側格納部（データ記憶部２２０）から読み込んで、揮発メモリ上の新版ソフトウェアのイメージ用領域にコピーする。コピーする先は、対応関係情報で指示されている箇所である。また、新版ソフトウェアのイメージ用領域の内、旧版ソフトウェア（更新前データ５２０）の分割データからコピーされなかった部分に、更新データ内の相違データ（不一致データ５４０）を順次コピーしていく。こうすることで新版ソフトウェアのイメージが構築される。次に、更新データ適用部（更新データ複写部２６４）は、被書込み側格納部（データ記憶部２２０）に、前述の通り構築した新版ソフトウェアのイメージを書き込む。以上が更新処理の処理手順である。
【０１１８】
分割サイズの決定方式は、例えば、直前の更新処理における３パターンの分割サイズ（直前の更新処理で用いた分割サイズ・２倍の分割サイズ・１／２の分割サイズ）に対して、組込み機器（被書込み装置２００）と書込み装置１００との間を流れるデータ量の合計値（送受信データ長）を見積もり、データ量が一番小さい分割サイズを採用する。
データ量のうち、組込み機器（被書込み装置２００）から書込み装置１００への送信データであるハッシュ値リスト（要約データ）のサイズは、共通の方法で計算できる。ハッシュ値のサイズをＸバイトとすると、ハッシュ値リストのサイズは［Ｘ×ソフトウェア（更新前データ５２０）の全体サイズ／分割サイズ］バイトである。データ量のうち、書込み装置１００から組込み機器（被書込み装置２００）への送信データである更新データ（差分データ５５０）のサイズは、「相違分割データ数」（不一致数）が分かっていれば、［対応関係情報サイズ（一致リスト長）＋［相違分割データ数（不一致数）×分割サイズ］］バイトとして計算できる。ここで、対応関係情報サイズは十分に小さいので無視してもよい。「相違分割データ数」の情報がない場合は、相違分割データ数を推測して求める。１／２の分割サイズによる相違分割データ数は、［実際に用いた分割サイズにおける相違分割データ数］×［実際に用いた分割サイズにおける相違分割データ数］／［２倍の分割サイズにおける相違分割データ数］バイトとする。これは、２倍から分割サイズを１／２することによって増加した相違分割データ数の増加比率が、１／２へ分割サイズを１／２にすることによって増加する相違分割データ数の増加比率と等しいと仮定した場合の相違分割データ数に相当する。
【０１１９】
また、例えば、過去３回の更新処理における情報から算出されるデータ量の平均値を用いるなど、規定回数分の過去にさかのぼる構成や、加重平均値（過去の情報になるほど重みを下げて平均を取る）を用いる構成などであってもよい。規定回数分の過去情報がまだ蓄積されていない場合、例えば初めてソフトウェア更新システムを用いる場合には、分割サイズ決定部によって分割サイズが所定の初期値、例えば１２８バイトとして計算されるような適切な値を過去履歴情報に格納しておく構成としてもよい。
【０１２０】
一致部分データ探索部（一致データ判定部１５１）は、例えば、新版ソフトウェア（更新後データ５１０）上でポインタを先頭から後方にずらしながら探索処理を進める。最初に、ポインタを新版ソフトウェアの先頭に設定する。ポインタから分割サイズ分の部分データに対するハッシュ計算を行う。ハッシュ値リストから同じハッシュ値を持つ旧版分割データが存在するかどうかをチェックする。同じハッシュ値を持つ旧版分割データが存在しない場合は、ポインタを所定サイズ、例えば１バイト後方に移動させる。ハッシュ値の一致する旧版分割データが見つかった場合は、ポインタ位置と当該ハッシュ値に対応する旧版分割データ番号をペアにして、対応関係情報に格納し、ポインタを分割サイズ分、つまり先ほど見つかった一致部分データのサイズ分後方に移動させる。移動したポインタから分割サイズ分進んだ先が新版ソフトウェアの範囲内に入っているかをチェックして、範囲内に入っている場合は、ハッシュ値計算に戻る。範囲内に入っていない場合は探索処理を終了する。
【０１２１】
以上説明したデータ更新システム８００（ソフトウェア更新システム）によれば、書込み装置１００側に旧版ソフトウェア（更新前データ５２０）が存在しなくても小さいデータ転送量、すなわち短い通信時間で、ソフトウェアを更新することができる。特に、ファームウェアのように改修による内容の変化に一定の効果があることが知られているようなものを対象ソフトウェアとして扱った場合には、過去の傾向から分割サイズを決めているので、より小さいデータ転送量でソフトウェアを更新することができる。ファームウェア以外、例えば、ユーザが作成したソフトウェアであっても、改修量が小さければ同様の効果が得られる。
以上説明したデータ更新システム８００（ソフトウェア更新システム）は、特に、組込み機器の開発過程において、機器内部の不揮発メモリ上に格納されたソフトウェアを頻繁に書き換える状況、例えば、ソフトウェアが実現するある機能のテストにおいて、少しずつソフトウェアの内容を修正しながらテストするような状況において、特に顕著な効果を奏する。
【０１２２】
実施の形態２．
実施の形態２について、図１８〜図２３を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１２３】
図１８は、この実施の形態における被書込み装置２００の機能ブロックの構成の一例を示すブロック構成図である。
被書込み装置２００は、実施の形態１で説明した構成に加えて、更に、追加要約データ生成部２３５、追加要約データ送信部２４５を有する。
【０１２４】
追加要約データ生成部２３５は、更新後データ５１０のなかに一致する部分がないと書込み装置１００が判定した部分データについて、分割サイズを半分にして、要約データを生成する。すなわち、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、データ記憶部２２０が記憶した更新前データ５２０と、差分データ受信部２５０が出力した差分データ５５０とを入力する。追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、入力した差分データ５５０から、一致リスト５３０を取得し、取得した一致リスト５３０に基づいて、更新前データ５２０を分割サイズごとに分割した部分データのなかから、更新後データ５１０のなかに一致する部分がないと書込み装置１００が判定した部分データを判定する。追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、判定した部分データを更に半分に分割する。追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、分割した部分データの内容を要約した要約データを生成する。追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、生成した要約データを追加要約データとして出力する。
【０１２５】
追加要約データ送信部２４５は、書込み装置１００に対して、追加要約データを送信する。すなわち、追加要約データ送信部２４５は、ＣＰＵ９１１を用いて、追加要約データ生成部２３５が出力した追加要約データを入力する。追加要約データ送信部２４５は、通信装置９１５を用いて、通信路８１０を介して書込み装置１００に対して、入力した追加要約データを送信する。
【０１２６】
図１９は、この実施の形態における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図である。
書込み装置１００は、実施の形態１で説明した構成に加えて、更に、追加要約データ受信部１３５、追加一致部分判定部１５６を有する。
【０１２７】
追加要約データ受信部１３５は、被書込み装置２００から、追加要約データを受信する。すなわち、追加要約データ受信部１３５は、通信装置９１５を用いて、通信路８１０を介して被書込み装置２００が送信した追加要約データを受信する。追加要約データ受信部１３５は、ＣＰＵ９１１を用いて、受信した追加要約データを出力する。
【０１２８】
追加一致部分判定部１５６は、追加要約データに基づいて、更新後データ５１０のなかから、被書込み装置２００が更に半分に分割した部分データと一致する部分を検索する。すなわち、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、更新後データ記憶部１４０が記憶した更新後データ５１０と、追加要約データ受信部１３５が出力した追加要約データとを入力する。追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、入力した追加要約データに基づいて、入力した更新後データ５１０のなかから、部分データを更に半分に分割した部分データと一致する部分を判定する。追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、判定した判定結果を出力する。
なお、追加一致部分判定部１５６は、更新後データ５１０全体のなかから一致する部分を検索するのではなく、更新後データ５１０のうち、一致データ判定部１５１が部分データと一致すると判定した部分を除いた部分のなかから、一致する部分を検索する構成としてもよい。
【０１２９】
推定一致数算出部１８３は、一致データ判定部１５１及び追加一致部分判定部１５６が判定した判定結果に基づいて、分割サイズが実際の半分の分割サイズである場合について、一致数を算出する。すなわち、推定一致数算出部１８３は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果と、追加一致部分判定部１５６が出力した判定結果とを入力する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、入力した一致データ判定部１５１の判定結果に基づいて、実際の分割サイズにおける実績一致数を算出する。なお、推定一致数算出部１８３は、一致数算出部１７３が算出した実績一致数を入力する構成であってもよい。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、入力した追加一致部分判定部１５６の判定結果に基づいて、実際の分割サイズにおいて更新後データ５１０のなかに一致する部分がないと一致データ判定部１５１が判定した部分データについて、分割サイズを半分にした場合に、更新後データ５１０のなかに一致する部分が見つかる数を算出して、一致数増加数とする。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、実績一致数を２倍して、算出した一致数増加数を加算することにより、分割サイズが実際の半分の場合における一致数を算出する。推定一致数算出部１８３は、ＣＰＵ９１１を用いて、算出した一致数を出力する。
【０１３０】
実施の形態１で述べたように、分割サイズを実際の半分にした場合、実際に一致する部分が発見された部分データは、二つの部分データに分かれ、二つの部分データはどちらも更新後データ５１０のなかに一致する部分がある。したがって、一致数は、少なくとも実績一致数の二倍になる。更に、実際に一致する部分が発見されなかった部分データも、二つの部分データに分かれ、二つの部分データのいずれかあるいは双方について、更新後データ５１０のなかに一致する部分が見つかる可能性がある。
この実施の形態では、実際に一致する部分が発見されなかった部分データを更に半分に分割した部分データについての要約データに基づいて、追加的に一致する数を算出し、分割サイズが実際の半分である場合についての一致数を正確に算出する。
【０１３１】
推定不一致データ長算出部１８５は、一致データ判定部１５１及び追加一致部分判定部１５６が判定した判定結果に基づいて、分割サイズが実際の半分の分割サイズである場合について、不一致データ長を算出する。すなわち、推定不一致データ長算出部１８５は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果と、追加一致部分判定部１５６が出力した判定結果とを入力する。推定不一致データ長算出部１８５は、ＣＰＵ９１１を用いて、入力した二つの判定結果に基づいて、分割サイズが実際の半分の分割サイズである場合についての不一致データ長を算出する。推定不一致データ長算出部１８５は、ＣＰＵ９１１を用いて、算出した不一致データ長を出力する。
上述したように、実際に一致する部分が発見されなかった部分データを更に半分に分割した部分データについての要約データに基づいて、分割サイズが実際の半分である場合についての一致数を正確に算出することができるので、分割サイズが実際の半分である場合についての不一致データ長も、正確に算出することができる。
なお、推定不一致データ長算出部１８５は、推定一致数算出部１８３が算出した一致数に基づいて、不一致データ長を算出する構成としてもよい。
【０１３２】
図２０は、この実施の形態におけるデータ更新処理の全体の流れの一例を示すフローチャート図である。
データ更新処理において、実施の形態１で説明した処理に加えて、書込み装置１００は、更に、追加要約データ受信処理Ｓ６０６を実行する。また、被書込み装置２００は、更に、追加要約データ生成処理Ｓ７０６、追加要約データ送信処理Ｓ７０８を実行する。
【０１３３】
追加要約データ生成処理Ｓ７０６は、更新データ生成処理Ｓ７０５の次に実行する。なお、追加要約データ生成処理Ｓ７０６は、差分データ受信処理Ｓ７０４の次に実行する構成としてもよいし、更新データ生成処理Ｓ７０５と並列に実行する構成としてもよい。
追加要約データ生成処理Ｓ７０６において、被書込み装置２００（追加要約データ生成部２３５）は、差分データ受信処理Ｓ７０４で受信した差分データ５５０と、データ記憶部２２０が記憶した更新前データ５２０とに基づいて、追加要約データを生成する。
その後、更新データ複写処理Ｓ７０７を実行する。
追加要約データ送信処理Ｓ７０８は、更新データ複写処理Ｓ７０７の次に実行する。
追加要約データ送信処理Ｓ７０８において、被書込み装置２００（追加要約データ送信部２４５）は、書込み装置１００に対して、追加要約データ生成処理Ｓ７０６で生成した追加要約データを送信する。
追加要約データ受信処理Ｓ６０６において、書込み装置１００（追加要約データ受信部１３５）は、被書込み装置２００が送信した追加要約データを受信する。
その後、送受信データ長算出処理Ｓ６０７を実行する。
送受信データ長算出処理Ｓ６０７において、書込み装置１００（実績送受信データ長算出部１７０及び推定送受信データ長算出部１８０）は、差分データ生成処理Ｓ６０４での判定結果や追加要約データ受信処理Ｓ６０６で受信した追加要約データなどに基づいて、送受信データ長を算出する。
【０１３４】
なお、追加要約データは、データの更新が終わったあとに伝送されればよく、遅くとも、次回の更新までの間に伝送されればよい。このため、追加要約データ送信処理Ｓ７０８及び追加要約データ受信処理Ｓ６０６は、処理の空き時間などを利用して実行すればよいので、追加要約データの伝送にかかる通信時間を考慮する必要はない。したがって、送受信データ長算出処理Ｓ６０７で算出する送受信データ長には、追加要約データのデータ長を含めず、実施の形態１と同じく、要約データのデータ長と、差分データのデータ長との合計を、送受信データ長として算出する。
【０１３５】
また、更新データ複写処理Ｓ７０７において、更新データ記憶部２６３が記憶した更新データをデータ記憶部２２０に記憶させる前に、データ記憶部２２０が記憶した更新前データ５２０を、別の場所に退避させる構成とすれば、追加要約データ生成処理Ｓ７０６も、データの更新が終わったあとに実行する構成とすることができる。これにより、データの更新を早く終わらせることができる。
【０１３６】
図２１は、この実施の形態における追加要約データ生成処理Ｓ７０６の処理の流れの一例を示すフローチャート図である。
追加要約データ生成処理Ｓ７０６は、部分データ選択工程Ｓ７６１、一致判定工程Ｓ７６２、前半要約データ生成工程Ｓ７６３、後半要約データ生成工程Ｓ７６４、部分データ繰り返し工程Ｓ７６５を有する。
部分データ選択工程Ｓ７６１において、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、データ記憶部２２０が記憶した更新前データ５２０を、分割サイズ受信処理Ｓ７０１で分割サイズ受信部２１０が受信した分割サイズごとに分割した部分データのなかから、部分データを一つずつ順に選択する。
一致判定工程Ｓ７６２において、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、差分データ受信処理Ｓ７０４で差分データ受信部２５０が受信した差分データ５５０に含まれる一致リスト５３０に基づいて、部分データ選択工程Ｓ７６１で選択した部分データが、更新後データ５１０のなかに一致する部分があるものであるか否かを判定する。一致する部分がある部分データであると判定した場合、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、部分データ繰り返し工程Ｓ７６５へ進む。一致する部分がない部分データであると判定した場合、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、前半要約データ生成工程Ｓ７６３へ進む。
前半要約データ生成工程Ｓ７６３において、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、部分データ選択工程Ｓ７６１で選択した部分データを更に半分に分割し、分割した前半部分の内容を要約した追加要約データを生成する。
後半要約データ生成工程Ｓ７６４において、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、前半要約データ生成工程Ｓ７６３で分割した後半部分の内容を要約した追加要約データを生成する。
部分データ繰り返し工程Ｓ７６５において、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、更新前データ５２０を分割したすべての部分データを、部分データ選択工程Ｓ７６１で選択したか否かを判定する。まだ選択していない部分データがあると判定した場合、追加要約データ生成部２３５は、ＣＰＵ９１１を用いて、部分データ選択工程Ｓ７６１に戻り、次の部分データを選択する。すべての部分データを選択したと判定した場合、追加要約データ生成部２３５は、追加要約データ生成処理Ｓ７０６を終了する。
【０１３７】
なお、追加要約データ生成部２３５は、追加要約データとして、部分データを更に半分に分割した部分についての要約データを生成するのではなく、部分データを更に三つあるいは四つもしくは一般に整数個に分割した部分についての要約データを生成する構成としてもよい。追加要約データ生成部２３５が部分データをｎ個に分割して追加要約データを生成する場合、書込み装置１００では、その追加要約データに基づいて、分割サイズが実際のｎ分の一である場合についての送受信データ長を、推定送受信データ長算出部１８０が算出することができる。また、ｎが合成数（素数でない数）であれば、推定送受信データ長算出部１８０は、分割サイズが実際のｎ分の一である場合だけでなく、その整数倍、すなわち、分割サイズが実際の（ｎの約数）分の一である場合についての送受信データ長を算出することができる。例えば、追加要約データ生成部２３５が、部分データを更に六分の一に分割した部分について追加要約データを生成すれば、推定送受信データ長算出部１８０は、追加要約データに基づいて、分割サイズが実際の六分の一である場合、三分の一である場合、二分の一である場合の三つの場合について、送受信データ長を算出することができる。
【０１３８】
図２２は、この実施の形態における二分の一サイズ一致数算出工程Ｓ６７４ｂの処理の流れの一例を示すフローチャート図である。
二分の一サイズ一致数算出工程Ｓ６７４ｂは、一致判定部分選択工程Ｓ８４１、要約データ算出工程Ｓ８４２、一致検索工程Ｓ８４３、一致数計数工程Ｓ８４４、一致判定部分繰り返し工程Ｓ８４５、推定一致数算出工程Ｓ８４６を有する。
【０１３９】
一致判定部分選択工程Ｓ８４１において、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、更新後データ記憶部１４０が記憶した更新後データ５１０のなかから、分割サイズ算出処理Ｓ６０１で分割サイズ算出部１１０が算出した分割サイズの半分のデータ長の部分を一つずつ順に選択して一致判定部分データとする。
要約データ算出工程Ｓ８４２において、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、一致判定部分選択工程Ｓ８４１で選択した一致判定部分データの内容を要約した要約データを生成する。
一致検索工程Ｓ８４３において、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、追加要約データ受信処理Ｓ６０６で追加要約データ受信部１３５が受信した追加要約データを検索して、要約データ算出工程Ｓ８４２で生成した要約データと一致するものを探す。一致するものが見つかった場合、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、一致数計数工程Ｓ８４４へ進む。一致するものが見つからなかった場合、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、一致判定部分繰り返し工程Ｓ８４５へ進む。
追加一致数計数工程Ｓ８４４において、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、追加一致数に１を加える。
一致判定部分繰り返し工程Ｓ８４５において、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、一致判定部分選択工程Ｓ８４１で一致判定部分データとして選択すべき部分が残っているか否かを判定する。選択すべき部分が残っていると判定した場合、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、一致判定部分選択工程Ｓ８４１に戻り、次の一致判定部分データを選択する。選択すべき部分が残っていないと判定した場合、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、推定一致数算出工程Ｓ８４６へ進む。
推定一致数算出工程Ｓ８４６において、追加一致部分判定部１５６は、ＣＰＵ９１１を用いて、一致数算出部１７３が算出した実績一致数を２倍し、算出した追加一致数を加えて、分割サイズが実際の半分である場合についての一致数を算出する。
【０１４０】
図２３は、この実施の形態における追加要約データ生成処理Ｓ７０６及び送受信データ長算出処理Ｓ６０７において処理されるデータの一例を模式的に示す模式図である。
追加要約データ生成部２３５は、更新前データ５２０を分割した１０個の部分データ５２１ａ〜５２１ｊのうちから、一致リスト５３０に基づいて、更新後データ５１０に一致する部分があると書込み装置１００が判定した６個の部分データ５２１ａ，５２１ｂ，５２１ｆ，５２１ｇ，５２１ｈ，５２１ｊを除いた４個の部分データ５２１ｃ，５２１ｄ，５２１ｅ，５２１ｉを、更に半分に分割して、８個の部分データ５２３ａ〜５２３ｈとする。
追加要約データ生成部２３５は、８個の部分データ５２３ａ〜５２３ｈそれぞれについて、追加要約データ５２４ａ〜５２４ｈを生成する。
【０１４１】
追加一致部分判定部１５６は、８個の追加要約データ５２４ａ〜５２４ｈに基づいて、更新後データ５１０の中に、部分データ５２３ａ〜５２３ｈと一致する追加一致部分データを探す。
例えば、追加一致部分判定部１５６が、三つの追加一致部分データ５１５ａ〜５１５ｃを見つけたとする。
推定一致数算出部１８３は、一致データ判定部１５１が見つけた一致部分データの数と、追加一致部分判定部１５６が見つけた追加一致部分データの数から、分割サイズが実際の二分の一である場合についての一致数を算出する。この例では、６個の一致部分データ５１３ａ〜５１３ｆと、３個の追加一致部分データ５１５ａ〜５１５ｃが見つかったことから、推定一致数算出部１８３が算出する一致数は「６×２＋３＝１５」になる。
【０１４２】
この実施の形態における書込み装置１００（データ送信装置）は、更に、追加要約データ受信部１３５と、追加一致部分判定部１５６とを有する。
上記追加要約データ受信部１３５は、上記受信装置（通信装置９１５）を用いて、上記差分データ生成部１５０が上記更新後データ５１０に一致する部分がないと判定した部分データを上記分割サイズの半分の長さに分割した追加部分データ（部分データ５２３ａ〜５２３ｈ）について、上記追加部分データの内容を要約した追加要約データ５２４ａ〜５２４ｈを、上記データ記憶装置（被書込み装置２００）から受信する。
上記追加一致部分判定部１５６は、上記処理装置（ＣＰＵ９１１）を用いて、上記追加要約データ受信部１３５が受信した追加要約データに基づいて、上記更新後データ記憶部１４０が記憶した更新後データ５１０において上記追加部分データと一致する部分（追加一致部分データ５１５ａ〜５１５ｃ）を判定する。
上記推定送受信データ長算出部１８０は、上記処理装置を用いて、上記追加一致部分判定部１５６が判定した判定結果に基づいて、上記分割サイズが半分であった場合の推定送受信データ長を算出する。
【０１４３】
この実施の形態における書込み装置１００（データ送信装置）によれば、追加要約データ受信部１３５が受信した追加要約データに基づいて、更新後データ５１０において追加部分データと一致する部分を追加一致部分判定部１５６が判定し、その判定結果に基づいて、分割サイズが半分であった場合の推定送受信データ長を推定送受信データ長算出部１８０が算出するので、正確な推定送受信データ長を算出することができ、更に最適な分割サイズを用いて、データを更新することができる。
【０１４４】
この実施の形態における被書込み装置２００（データ記憶装置）は、更に、追加要約データ生成部２３５と、追加要約データ送信部２４５とを有する。
上記追加要約データ生成部２３５は、上記処理装置（ＣＰＵ９１１）を用いて、上記差分データ受信部２５０が受信した差分データ５５０に基づいて、上記更新後データ５１０のなかに一致する部分がない部分データについて、上記部分データを上記分割サイズ受信部２１０が受信した分割サイズ５８１の半分の長さに分割して追加部分データ（部分データ５２３ａ〜５２３ｈ）とし、分割した追加部分データについて、上記追加部分データの内容を要約した追加要約データ５２４ａ〜５２４ｈを生成する。
上記追加要約データ送信部２４５は、上記送信装置（通信装置９１５）を用いて、上記追加要約データ生成部２３５が生成した追加要約データ５２４ａ〜５２４ｈを上記データ送信装置（書込み装置１００）に対して送信する。
【０１４５】
この実施の形態における被書込み装置２００（データ記憶装置）によれば、追加要約データ生成部２３５が追加要約データを生成するので、更に最適な分割サイズを用いて、データを更新することができる。
【０１４６】
以上説明したデータ更新システム８００（ソフトウェア更新システム）において、前記更新データ適用部（追加要約データ生成部２３５、追加要約データ送信部２４５）は、更新データの適用を行う前に、第２データ（更新後データ５１０）上でハッシュ値（要約データ）が一致する部分データ（一致部分データ）を発見できなかった第１データ（更新前データ５２０）上の全ての分割データ（部分データ）に対し、２分割を行い、分割後のそれぞれのデータに対して所定の計算規則を適用してハッシュ値（追加要約データ）を計算し、その結果を更新データ適用後に前記書込み装置１００に送信する。
前記一致部分データ探索部（追加要約データ受信部１３５、追加一致部分判定部１５６）は、前記更新データ適用部（追加要約データ送信部２４５）からハッシュ値（追加要約データ）を受信し、前記分割サイズを１／２にしたサイズを第２の分割サイズとし、第２データ上から前記一致する部分データ全てを除外したデータを相違データ群とし、第２の分割サイズと前記相違データ群と前記ハッシュ値とから、前記各々のハッシュ値とハッシュ値が一致する前記相違データ群上のサイズが第２の分割サイズである部分データを探索する。
前記分割サイズ決定部（推定送受信データ長算出部１８０、送受信データ長記憶部１９０、分割サイズ算出部１１０）は、前記一致部分データ探索部が第２の分割サイズと相違データ群を用いた処理によって、ハッシュ値の一致を発見した相違データ群上の部分データの数も併せて記憶し、分割サイズの決定に、前記相違データ群上の部分データの数も併せて用いる。
【０１４７】
以上説明したデータ更新システム８００（ソフトウェア更新システム）において、組込み機器（被書込み装置２００）では、更新データ適用部（差分データ受信部２５０）が更新データ（差分データ５５０）を受信する。更新データ適用部（追加要約データ生成部２３５）は、新版領域のイメージ生成の前に、全ての相違分割データをそれぞれ２分割し、２分割した全てのデータに対してハッシュ値（追加要約データ）を計算する。相違分割データの特定は、更新データ内の対応関係情報（一致リスト５３０）から可能であり、２分割したデータのハッシュ値を計算するということは、分割サイズを１／２にした場合のハッシュ値を計算することと同義である。
【０１４８】
新版領域の書き込みが完了すると、更新データ適用部（追加要約データ送信部２４５）は、先立って計算しておいたハッシュ値（追加要約データ）を書込み装置１００に送信する。
書込み装置１００では、一致部分データ探索部（追加要約データ受信部１３５）がハッシュ値リスト（追加要約データ）を受信する。一致部分データ探索部（追加一致部分判定部１５６）は、残しておいた対応関係情報から新版領域内で一致部分データに該当しなかった領域を抽出し、それらの領域に対して受信したハッシュ値リスト上のハッシュ値と一致するハッシュ値を持つ、サイズが分割サイズの１／２となる部分データの探索を行う。探索の結果得られた一致部分データ数と、以前の探索で得られた一致分割データ数を２倍にした数とを合計することで、分割サイズを１／２にした場合の一致分割データ数（推定一致数）が得られる。そこから分割サイズを１／２にした場合の相違分割データ数（推定不一致数）を算出し、分割サイズ決定部（送受信データ長記憶部１９０に登録する。分割サイズ決定部（分割サイズ算出部１１０）では、次回以降の当該領域の更新処理で前記情報を使用する。
【０１４９】
実施の形態３．
実施の形態３について、図２４〜図２５を用いて説明する。
なお、実施の形態１または実施の形態２と共通する部分については、同一の符号を付し、説明を省略する。
この実施の形態における被書込み装置２００のブロック構成は、実施の形態２と同様である。
【０１５０】
図２４は、この実施の形態における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図である。
書込み装置１００は、実施の形態１で説明した構成に加えて、更に、追加要約データ受信部１３５、追加要求判定部１５５を有する。
【０１５１】
送受信データ長記憶部１９０は、磁気ディスク装置９２０を用いて、送受信データ長だけでなく、要約数算出部１７１や推定要約数算出部１８１が算出した要約数や、一致数算出部１７３や推定一致数算出部１８３が算出した一致数なども記憶する。
【０１５２】
追加要求判定部１５５は、差分データ生成部１５０が生成する差分データ５５０に不一致データ５４０を含めるか否かを判定する。
不一致データ５４０を含めない場合、書込み装置１００は、被書込み装置２００に対して、一致リスト５３０のみを差分データ５５０として送信する。被書込み装置２００は、受信した一致リスト５３０に基づいて、追加要約データを生成し、書込み装置１００に対して送信する。書込み装置１００は、追加要約データを受信し、受信した追加要約データに基づいて、更新後データ５１０のなかから、最初の分割サイズより小さい分割サイズに分割された部分データと一致する部分を探し、追加一致リストを生成する。書込み装置１００は、更新後データ５１０のうち、追加要約データによっても一致する部分が見つからなかった部分だけを不一致データとし、追加一致リストとともに、差分データとして被書込み装置２００に対して送信する。これにより、送受信データ長を短くし、通信時間を削減する。
【０１５３】
例えば、追加要求判定部１５５は、ＣＰＵ９１１を用いて、要約数算出部１７１が算出した要約数と、一致数算出部１７３が算出した一致数とを入力する。追加要求判定部１５５は、ＣＰＵ９１１を用いて、入力した要約数から一致数を差し引いて、不一致数を算出する。追加要求判定部１５５は、ＣＰＵ９１１を用いて、算出した不一致数に、要約データ１つ当たりのデータ長の二倍を乗じて、追加要約データのデータ長を算出する。追加要求判定部１５５は、ＣＰＵ９１１を用いて、送受信データ長記憶部１９０が記憶した一致数のなかから、分割サイズ算出部１１０が算出した分割サイズの半分の分割サイズについての一致数を入力する。追加要求判定部１５５は、ＣＰＵ９１１を用いて、入力した一致数に基づいて、追加要約データにより一致すると判定される追加一致部分データの数を予測する。追加要求判定部１５５は、ＣＰＵ９１１を用いて、予測した追加一致部分データの数に基づいて、削減される不一致データのデータ長を算出する。追加要求判定部１５５は、ＣＰＵ９１１を用いて、算出したデータ長を比較して、差分データ５５０に不一致データ５４０を含めた場合と含めない場合とのうち、どちらが通信時間が短くなるかを判定する。追加要求判定部１５５は、ＣＰＵ９１１を用いて、判定した判定結果を出力する。
なお、追加要求判定部１５５は、単純に通信時間を比較するのではなく、追加要約データの生成や追加一致部分の探索にかかる時間も加味して、どちらが早くデータ更新を終えることができるかを判定する構成としてもよい。
【０１５４】
不一致データ生成部１５３は、ＣＰＵ９１１を用いて、追加要求判定部１５５が出力した判定結果を入力する。不一致データ生成部１５３は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、差分データ５５０に不一致データ５４０を含めないと追加要求判定部１５５が判定した場合、不一致データ５４０を生成しない。差分データ５５０に不一致データ５４０を含めると追加要求判定部１５５が判定した場合、不一致データ生成部１５３は、ＣＰＵ９１１を用いて、一致データ判定部１５１が出力した判定結果を入力し、不一致データを生成する。
【０１５５】
追加要約データ受信部１３５は、被書込み装置２００から、追加要約データを受信する。すなわち、追加要約データ受信部１３５は、通信装置９１５を用いて、通信路８１０を介して被書込み装置２００が送信した追加要約データを受信する。追加要約データ受信部１３５は、ＣＰＵ９１１を用いて、受信した追加要約データを出力する。
【０１５６】
一致データ判定部１５１は、ＣＰＵ９１１を用いて、追加要約データ受信部１３５が出力した追加要約データを入力する。一致データ判定部１５１は、ＣＰＵ９１１を用いて、入力した追加要約データに基づいて、更新後データ５１０のなかから、追加一致部分を判定する。一致データ判定部１５１は、ＣＰＵ９１１を用いて、判定した判定結果を出力する。
【０１５７】
分割サイズ算出部１１０は、ＣＰＵ９１１を用いて、送受信データ長記憶部１９０が記憶した要約数や一致数などに基づいて、最初は一致リスト５３０だけを送信し、２回目に不一致データ５４０を含む差分データ５５０を送信する方式における全体の送受信データ長を、最初に送信する分割サイズごとに算出する。分割サイズ算出部１１０は、ＣＰＵ９１１を用いて、送受信データ長記憶部１９０が記憶した送受信データ長と、算出した送受信データ長とに基づいて、最初に送信する分割サイズを決定する。
【０１５８】
図２５は、この実施の形態におけるデータ更新処理の全体の流れの一例を示すフローチャート図である。
データ更新処理において、実施の形態１で説明した工程に加えて、書込み装置１００は、更に、追加要約データ受信処理Ｓ６０６を実行する。また、被書込み装置２００は、更に、追加要約データ生成処理Ｓ７０６、追加要約データ送信処理Ｓ７０８を実行する。
【０１５９】
差分データ生成処理Ｓ６０４において、書込み装置１００（差分データ生成部１５０、追加要求判定部１５５）は、一致部分を判定し、判定結果に基づいて不一致データ５４０を生成するか否かを判定し、判定結果に基づいて差分データ５５０を生成する。
追加要約データ生成処理Ｓ７０６は、差分データ受信処理Ｓ７０４の次に実行する。
追加要約データ生成処理Ｓ７０６において、被書込み装置２００（追加要約データ生成部２３５）は、差分データ受信処理Ｓ７０４で差分データ受信部２５０が受信した差分データ５５０に基づいて、追加要約データを生成する。
追加要約データ送信処理Ｓ７０８において、被書込み装置２００（追加要約データ送信部２４５）は、書込み装置１００に対して、追加要約データ生成処理Ｓ７０６で生成した追加要約データを送信する。
追加要約データ受信処理Ｓ６０６において、書込み装置１００（追加要約データ受信部１３５）は、追加要約データ送信処理Ｓ７０８で被書込み装置２００が送信した追加要約データを受信する。
その後、差分データ生成処理Ｓ６０４で不一致データ５４０をまだ生成していない場合は、差分データ生成処理Ｓ６０４に戻る。差分データ生成処理Ｓ６０４で不一致データ５４０を生成した場合は、送受信データ長算出処理Ｓ６０７へ進む。
【０１６０】
このように、追加要約データに基づいて、不一致データを更に短くすることにより、通信時間を更に削減することができる。
【０１６１】
実施の形態４．
実施の形態４について、図２６〜図２８を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１６２】
図２６は、この実施の形態における書込み装置１００の機能ブロックの構成の一例を示すブロック構成図である。
書込み装置１００が、実施の形態１で説明した構成にあった実績送受信データ長算出部１７０を有さず、これに代えて、推定更新前データ記憶部１４５、推定一致部分判定部１５７、推定更新前データ更新部１４６を有する。
【０１６３】
推定更新前データ記憶部１４５は、磁気ディスク装置９２０を用いて、あらかじめ、推定更新前データを記憶している。推定更新前データとは、被書込み装置２００が記憶した更新前データ５２０と一致していると推定されるデータである。例えば、被書込み装置２００が記憶したデータを、書込み装置１００が更新した場合、被書込み装置２００は、更新後データ記憶部１４０が記憶した更新後データ５１０を記憶するので、次回の更新時において、被書込み装置２００は、前回の更新時における更新後データ５１０を記憶していると推定される。ただし、被書込み装置２００は、前回の更新時における更新後データ５１０を記憶しているとは限らない。例えば、被書込み装置２００が記憶したデータを他の書込み装置１００が更新した場合や、被書込み装置２００において記憶したデータを直接書き換えた場合などである。また、更新後データ５１０の管理ミスにより、前回の更新時における更新後データ５１０が失われ、書込み装置１００が、もっと古い更新時における更新後データ５１０しか保持していない場合もある。したがって、推定更新前データ記憶部１４５が記憶した推定更新前データは、被書込み装置２００が記憶した更新前データ５２０と一致していることが「推定」されるのみであって、被書込み装置２００が記憶した更新前データ５２０と一致していることが保証されているわけではない。
【０１６４】
推定一致部分判定部１５７は、更新後データ５１０と推定更新前データとの一致部分を判定する。すなわち、推定一致部分判定部１５７は、ＣＰＵ９１１を用いて、更新後データ記憶部１４０が記憶した更新後データ５１０と、推定更新前データ記憶部１４５が記憶した推定更新前データとを入力する。推定一致部分判定部１５７は、ＣＰＵ９１１を用いて、送受信データ長を推定する分割サイズごとに、入力した推定更新前データを分割し、分割した部分ごとに、入力した更新後データ５１０のなかに一致する部分があるか否かを判定する。推定一致部分判定部１５７は、ＣＰＵ９１１を用いて、判定した判定結果を出力する。
【０１６５】
推定送受信データ長算出部１８０は、ＣＰＵ９１１を用いて、推定一致部分判定部１５７が出力した判定結果に基づいて、その分割サイズについての推定送受信データ長を算出する。
送受信データ長記憶部１９０は、磁気ディスク装置９２０を用いて、推定送受信データ長算出部１８０が算出した推定送受信データ長を記憶する。
【０１６６】
分割サイズ算出部１１０は、ＣＰＵ９１１を用いて、送受信データ長記憶部１９０が記憶した推定送受信データ長に基づいて、送受信データ長が最も短くなると推定される分割サイズを、今回の更新に用いる分割サイズに決定する。
【０１６７】
推定更新前データ更新部１４６は、ＣＰＵ９１１を用いて、更新後データ記憶部１４０が記憶した更新後データ５１０を、推定更新前データ記憶部１４５に複写して、次回の推定更新前データとする。推定更新前データ記憶部１４５は、磁気ディスク装置９２０を用いて、複写された更新後データ５１０を、推定更新前データとして記憶する。なお、更新後データ５１０を複写して推定更新前データとするのではなく、推定更新前データ更新部１４６が推定更新前データを外部から入力し、推定更新前データ記憶部１４５が記憶する構成としてもよい。
【０１６８】
図２７は、この実施の形態におけるデータ更新処理の全体の流れの一例を示すフローチャート図である。
データ更新処理において、書込み装置１００は、実施の形態１で説明した送受信データ長算出処理Ｓ６０７を実行しない代わりに、送受信データ長推定処理Ｓ６０８を実行する。
【０１６９】
送受信データ長推定処理Ｓ６０８は、データ更新処理の一番最初に実行する。
送受信データ長推定処理Ｓ６０８において、書込み装置１００（推定一致部分判定部１５７、推定送受信データ長算出部１８０）は、更新後データ記憶部１４０が記憶した更新後データ５１０と、推定更新前データ記憶部１４５が記憶した推定更新前データとに基づいて、複数の分割サイズについて送受信データ長を推定する。
【０１７０】
分割サイズ算出処理Ｓ６０１において、書込み装置１００（分割サイズ算出部１１０）は、送受信データ長推定処理Ｓ６０８で推定した送受信データ長に基づいて、今回の更新で使用する分割サイズを算出する。
【０１７１】
図２８は、この実施の形態における送受信データ長推定処理Ｓ６０８の流れの一例を示すフローチャート図である。
送受信データ長推定処理Ｓ６０８は、分割サイズ選択工程Ｓ８７０、推定一致部分判定工程Ｓ８７１、要約数算出工程Ｓ８７２、要約データ長算出工程Ｓ８７３、一致数算出工程Ｓ８７４、一致リスト長算出工程Ｓ８７５、不一致データ長算出工程Ｓ８７６、合計算出工程Ｓ８７７、分割サイズ繰り返し工程Ｓ８７８を有する。
【０１７２】
分割サイズ選択工程Ｓ８７０において、推定一致部分判定部１５７は、ＣＰＵ９１１を用いて、今回の更新において分割サイズとして使用する可能性のある複数の分割サイズの候補のなかから、分割サイズを一つずつ順に選択する。
推定一致部分判定工程Ｓ８７１において、推定一致部分判定部１５７は、ＣＰＵ９１１を用いて、推定更新前データ記憶部１４５が記憶した推定更新前データを、分割サイズ選択工程Ｓ８７０で選択した分割サイズごとに分割し、分割した部分ごとに、更新後データ記憶部１４０が記憶した更新後データ５１０のなかに一致する部分があるか否かを判定する。
要約数算出工程Ｓ８７２〜合計算出工程Ｓ８７７は、推定一致部分判定工程Ｓ８７１で推定一致部分判定部１５７が判定した判定結果に基づいて、分割サイズ選択工程Ｓ８７０で選択した分割サイズについて処理をする点を除き、実施の形態１で説明した要約数算出工程Ｓ６７２〜合計算出工程Ｓ６７７と同様である。
分割サイズ繰り返し工程Ｓ８７８において、推定一致部分判定部１５７は、ＣＰＵ９１１を用いて、今回の更新において分割サイズとして使用する可能性のある複数の分割サイズを、分割サイズ選択工程Ｓ８７０ですべて選択したか否かを判定する。まだ選択していない分割サイズがあると判定した場合、推定一致部分判定部１５７は、ＣＰＵ９１１を用いて、分割サイズ選択工程Ｓ８７０に戻り、次の分割サイズを選択する。すべての分割サイズを選択したと判定した場合、推定一致部分判定部１５７は、送受信データ長推定処理Ｓ６０８を終了する。
【０１７３】
このように、推定更新前データに基づいて送受信データ長を推定することにより、被書込み装置２００が記憶した更新前データ５２０が、推定更新前データと一致している場合には、確実に、最も適切な分割サイズを算出することができ、更新前データ５２０が、推定更新前データと多少異なる場合でも、かなりの確率で最適な分割サイズを算出することができる。
【０１７４】
この実施の形態における書込み装置１００（データ送信装置）は、更に、推定更新前データ記憶部１４５と、推定一致部分判定部１５７とを有する。
上記推定更新前データ記憶部１４５は、上記記憶装置（磁気ディスク装置９２０）を用いて、上記データ記憶装置（被書込み装置２００）が記憶した更新前データ５２０と一致すると推定される推定更新前データを記憶する。
上記推定一致部分判定部１５７は、上記処理装置（ＣＰＵ９１１）を用いて、上記更新後データ記憶部１４０が記憶した更新後データ５１０と、上記推定更新前データ記憶部１４５が記憶した推定更新前データとに基づいて、上記更新後データ５１０のうち、上記推定更新前データの一部と一致する部分を判定する。
上記分割サイズ算出部１１０は、上記処理装置を用いて、上記推定一致部分判定部１５７が判定した判定結果に基づいて、送受信データ長が短くなると予測される分割サイズを算出する。
【０１７５】
この実施の形態における書込み装置１００（データ送信装置）によれば、推定更新前データ記憶部１４５が記憶した推定更新前データと、更新後データ記憶部１４０が記憶した更新後データ５１０とを推定一致部分判定部１５７が比較した比較結果に基づいて、分割サイズ算出部１１０が分割サイズを算出するので、最適な分割サイズを用いて、データを更新することができる。
【０１７６】
以上説明したデータ更新システム８００（ソフトウェア更新システム）において、前記書込み装置１００は、第２データ（更新後データ５１０）に対応する第３データ（推定更新前データ）を前記書込み側格納部（推定更新前データ記憶部１４５）に格納する。
前記分割サイズ決定部（分割サイズ算出部１１０）は、前記第２データと前記第３データとの比較により分割サイズを決定する。
【０１７７】
以上説明したデータ更新システム８００（ソフトウェア更新システム）において、分割サイズ決定部（推定一致部分判定部１５７）は、例えば、分割サイズの候補である６４バイト、１２８バイト、２５６バイト、５１２バイトの４種類について、更新後データ５１０と推定更新前データとを比較して、一致部分を判定する。なお、更新後データ５１０と推定更新前データとを直接比較するのではなく、ハッシュ値（要約データ）を算出して比較してもよい。分割サイズ決定部（推定送受信データ長算出部１８０）は、それぞれの分割サイズに対する総ブロック数（推定要約数）と、相違ブロック数（推定不一致数）とを算出し、ここから転送データ量（送受信データ長）を計算する。
【０１７８】
実施の形態５．
実施の形態５について、説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１７９】
実施の形態１〜実施の形態４では、更新前データ５２０全体を、一つの分割サイズにより分割して部分データとし、要約データを生成している。
これに対して、この実施の形態では、更新前データ５２０を複数の領域に分割し、分割した領域ごとに分割サイズを定めて分割し、要約データを生成する。
【０１８０】
例えば、データ記憶部２２０が記憶するデータが、プログラムとデータとを結合したものである場合、プログラム部分の更新傾向と、データ部分の更新傾向とが異なる可能性がある。また、データ記憶部２２０が記憶するデータが、既にある程度改良を重ねたプログラムである場合、安定したプログラムの部分はあまり変化しないのに対し、新規に追加した機能のプログラムの部分は、頻繁に更新されるなど、更新傾向が異なる場合がある。更新傾向が異なれば最適な分割サイズも異なる。したがって、データ内の位置によって分割サイズを変えることにより、データ内の位置によって更新傾向が異なる場合であっても、最適な分割サイズを用いて、データを更新することができる。
【０１８１】
実績送受信データ長算出部１７０や推定送受信データ長算出部１８０は、分割した領域ごとに送受信データ長などを算出し、送受信データ長記憶部１９０は、分割した領域ごとの送受信データ長などを記憶する。
【０１８２】
分割サイズ算出部１１０は、ＣＰＵ９１１を用いて、あらかじめ定めた長さの領域ごとに、送受信データ長記憶部１９０が記憶した送受信データ長に基づいて、分割サイズを算出する。分割サイズ送信部１２０は、通信装置９１５を用いて、被書込み装置２００に対して、分割サイズ算出部１１０が算出した複数の分割サイズを送信する。なお、あらかじめ領域の長さを定めておくのではなく、分割サイズ算出部１１０が最適な領域の長さを算出し、領域サイズとして、分割サイズ送信部１２０が書込み装置１００に対して送信する構成としてもよい。
【０１８３】
分割サイズ受信部２１０は、通信装置９１５を用いて、書込み装置１００が送信した複数の分割サイズを受信する。要約データ生成部２３０は、ＣＰＵ９１１を用いて、データ記憶部２２０が記憶した更新前データ５２０を、あらかじめ定められた長さ（あるいは、分割サイズ受信部２１０が分割サイズとともに受信した領域サイズ）の領域に分割し、分割した複数の領域を、それぞれ対応する分割サイズごとに分割して、部分データとし、要約データを生成する。
【０１８４】
この実施の形態における書込み装置１００（データ送信装置）において、上記分割サイズ算出部１１０は、上記処理装置（ＣＰＵ９１１）を用いて、上記データ記憶装置（被書込み装置２００）が記憶した更新前データ５２０を複数の領域に分割し、分割した複数の領域それぞれについて、上記領域を更に複数の部分に分割する分割サイズを算出する。
【０１８５】
この実施の形態における書込み装置１００（データ送信装置）によれば、分割サイズ算出部１１０が、領域ごとの分割サイズを算出するので、領域ごとの傾向に合う最適な分割サイズを用いて、データを更新することができる。
【０１８６】
実施の形態６．
実施の形態６について、図２９を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１８７】
被書込み装置２００は、例えば組込み機器であり、記憶装置として、磁気ディスク装置９２０のようにランダムに読み書きが可能な記憶装置ではなく、フラッシュメモリのように、所定のデータ長の記憶領域を書込みの単位とする記憶装置を有する。例えば、フラッシュメモリは、書込みの単位となるブロック内のデータをすべて消去したのち、そのブロック内にデータをまとめて書き込む必要がある。
【０１８８】
図２９は、この実施の形態における被書込み装置２００の機能ブロックの構成の一例を示すブロック構成図である。
データ更新部２６０は、実施の形態１で説明した構成に加えて、更に、更新判定部２６５を有する。
更新判定部２６５は、差分データ受信部２５０が受信した差分データ５５０に基づいて、更新が必要な記憶領域と更新が不要な記憶領域とを判定する。すなわち、更新判定部２６５は、ＣＰＵ９１１を用いて、差分データ受信部２５０が出力した差分データ５５０を入力する。更新判定部２６５は、ＣＰＵ９１１を用いて、入力した差分データ５５０から一致リスト５３０を取得する。更新判定部２６５は、ＣＰＵ９１１を用いて、取得した一致リスト５３０に基づいて、書込みの単位となる記憶領域ごとに、更新前データ５２０のうち、その記憶領域が記憶した部分が、更新後データ５１０において同じ位置のデータと一致するか否かを判定する。これにより、その記憶領域を更新する必要があるか否かがわかる。更新判定部２６５は、ＣＰＵ９１１を用いて、判定した判定結果を出力する。
更新データ複写部２６４は、ＣＰＵ９１１を用いて、更新判定部２６５が出力した判定結果を入力する。更新データ複写部２６４は、ＣＰＵ９１１を用いて、入力した判定結果に基づいて、更新する必要があると判定された記憶領域に、更新データ記憶部２６３が記憶した更新データを複写する。データ記憶部２２０は、その記憶領域が記憶したデータを消去したのち、複写された更新データを書き込む。更新データ複写部２６４は、更新する必要がないと判定された記憶領域には、更新データを複写しない。これにより、データの更新にかかる時間を短縮することができる。
【０１８９】
この実施の形態における被書込み装置２００（データ記憶装置）において、上記記憶装置（フラッシュメモリ）は、書き込みの単位となる複数の記憶領域（ブロック）を有する。
上記データ更新部２６０は、上記処理装置（ＣＰＵ９１１）を用いて、上記更新前データ５２０を上記更新後データ５１０に更新するとき、書き換える必要がある記憶領域と書き換える必要がない記憶領域とを判定し、書き換える必要があると判定した記憶領域が記憶したデータのみを書き換える。
【０１９０】
この実施の形態における被書込み装置２００（データ記憶装置）によれば、データ更新部２６０が書き換える必要ある記憶領域と書き換える必要がない記憶領域とを判定し、書き換える必要がある記憶領域のみを書き換えるので、データの更新にかかる時間を短縮することができる。
【０１９１】
以上説明したデータ更新システム８００（ソフトウェア更新システム）において、前記被書込み側格納部（データ記憶部２２０）は、フラッシュロム（Ｆｌａｓｈ  ＲＯＭ、フラッシュメモリ）で構成されている。前記第１データ（更新前データ５２０）は、前記被書込み装置２００でそれまでに使用していた第１ソフトウェアの一部分であり、そのサイズがフラッシュロムのブロックサイズの定数倍である。前記第２データ（更新後データ５１０）は、前記被書込み装置２００でこれから使用する予定である第２ソフトウェアの一部分であり、そのサイズと第２ソフトウェア上での位置が、前記第１データのサイズと第１ソフトウェア上での位置に対応している。
【０１９２】
以上説明したデータ更新システム８００（ソフトウェア更新システム）において、新版領域イメージの書き込みに際して、被書込み側格納部（データ記憶部２２０）がフラッシュロムであることを考慮し、新版領域はフラッシュロムのブロックサイズの定数倍であり、ブロック境界に沿っているので、ブロックごとに書き込みが必要かどうかを対応関係情報から判断する。書き込みが必要なブロックのみを消去して書き込むことにより、書込み時間を抑制できる。
【０１９３】
なお、被書込み装置２００の側で更新が必要な領域を判定して更新するのではなく、書込み装置１００の側で更新が必要な領域を判定して、被書込み装置２００に対して指示する構成としてもよい。例えば、書込み装置１００は、更新する領域を示す情報、例えば先頭ブロックから４ブロック分、というような情報を指示のなかに含める。
【０１９４】
以上説明したデータ更新システム８００（ソフトウェア更新システム）は、
前記書込み装置１００が、
前記第２ソフトウェアを１個以上の領域に分割し、それぞれの領域を前記第２データとみなして前記更新開始要求部（分割サイズ送信部１２０）にソフトウェア更新を指示することで、第１ソフトウェアを第２ソフトウェアに更新する書込み制御部を有する。
前記更新開始要求部が、前記書込み制御部から指示のあった第２データの領域情報を、前記被書込み装置２００への更新開始要求に含める。
前記ハッシュ計算部（要約データ生成部２３０）が、前記更新開始要求部からの要求に含まれる領域情報を元に第１ソフトウェアから第１データの領域を特定する。
【符号の説明】
【０１９５】
１００  書込み装置、１１０  分割サイズ算出部、１１１  送受信データ長比較部、１１２  分割サイズ決定部、１２０  分割サイズ送信部、１３０  要約データ受信部、１３５  追加要約データ受信部、１４０  更新後データ記憶部、１４５  推定更新前データ記憶部、１４６  推定更新前データ更新部、１５０  差分データ生成部、１５１  一致データ判定部、１５２  一致リスト生成部、１５３  不一致データ生成部、１５４  データ結合部、１５５  追加要求判定部、１５６  追加一致部分判定部、１５７  推定一致部分判定部、１６０  差分データ送信部、１７０  実績送受信データ長算出部、１７１  要約数算出部、１７２  要約データ長算出部、１７３  一致数算出部、１７４  一致リスト長算出部、１７５  不一致データ長算出部、１７６  合計算出部、１８０  推定送受信データ長算出部、１８１  推定要約数算出部、１８２  推定要約データ長算出部、１８３  推定一致数算出部、１８４  推定一致リスト長算出部、１８５  推定不一致データ長算出部、１８６  合計算出部、１９０  送受信データ長記憶部、２００  被書込み装置、２１０  分割サイズ受信部、２２０  データ記憶部、２３０  要約データ生成部、２３５  追加要約データ生成部、２４０  要約データ送信部、２４５  追加要約データ送信部、２５０  差分データ受信部、２６０  データ更新部、２６１  一致データ複写部、２６２  不一致データ複写部、２６３  更新データ記憶部、２６４  更新データ複写部、２６５  更新判定部、５１０  更新後データ、５１１  一致判定部分データ、５１２  要約データ、５１３  一致部分データ、５１４  不一致部分データ、５１５  追加一致部分データ、５２０  更新前データ、５２１，５２３  部分データ、５２２  要約データ、５２４  追加要約データ、５３０  一致リスト、５３１  部分番号、５３２  一致位置、５４０  不一致データ、５４１  不一致部分データ、５５０  差分データ、５６０  更新データ、５６１  一致部分データ、５６２  不一致部分データ、５７０  データ、５７１  分割サイズ、５７２  送受信データ長、５７３  蓄積回数、５８１  分割サイズ、５８２  実績要約数、５８３  実績一致数、５８４  実績不一致数、５８５  実績送受信データ長、５９１  分割サイズ、５９２  要約数、５９３  一致数、５９４  不一致数、５９５  送受信データ長、８００  データ更新システム、８１０  通信路、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2010176191.tif 000003
【図２】
2010176191.tif 000004
【図３】
2010176191.tif 000005
【図４】
2010176191.tif 000006
【図５】
2010176191.tif 000007
【図６】
2010176191.tif 000008
【図７】
2010176191.tif 000009
【図８】
2010176191.tif 000010
【図９】
2010176191.tif 000011
【図１０】
2010176191.tif 000012
【図１１】
2010176191.tif 000013
【図１２】
2010176191.tif 000014
【図１３】
2010176191.tif 000015
【図１４】
2010176191.tif 000016
【図１５】
2010176191.tif 000017
【図１６】
2010176191.tif 000018
【図１７】
2010176191.tif 000019
【図１８】
2010176191.tif 000020
【図１９】
2010176191.tif 000021
【図２０】
2010176191.tif 000022
【図２１】
2010176191.tif 000023
【図２２】
2010176191.tif 000024
【図２３】
2010176191.tif 000025
【図２４】
2010176191.tif 000026
【図２５】
2010176191.tif 000027
【図２６】
2010176191.tif 000028
【図２７】
2010176191.tif 000029
【図２８】
2010176191.tif 000030
【図２９】
2010176191.tif 000031