(57)【要約】【課題】  更新対象のソフトウェアを有するターゲット端末に、サーバ装置上のソフトウェアの差分のみを効率良く転送するシステムを提供する。【解決手段】  ソフトウェア転送更新システム１０００は、ターゲット端末１００とサーバ装置２００とを備える。ターゲット端末１００は、更新対象であるターゲット側ソフトウェア１１０１を格納している。サーバ装置２００は、ターゲット側ソフトウェア１１０１を更新したソフトウェアであるサーバ側ソフトウェア２１０１を格納している。ターゲット端末１００及びサーバ装置２００は、お互い自己の格納するソフトウェアをアドレス変換する。そして、アドレス変換後の互いのソフトウェアのブロック同士のチェックサムが等しいかどうかをチェックしていく。最終的にサーバ装置２００は、ターゲット端末１００に、チェックサムが同一であったブロック以外のブロックのみを送信する。【選択図】        図１
2006209417.tif 000002
【特許請求の範囲】
【請求項１】
アドレスが割り当てられた複数の要素データにより構成された第１全体データを格納する受信側装置に、アドレスが割り当てられた複数の要素データにより構成されるとともに前記第１全体データに対応するデータを示す第２全体データを格納する送信側装置から、前記第１全体データを前記第２全体データに更新するための更新用データを送信する更新用データ送信システムにおいて、
前記受信側装置は、
前記第１全体データを格納する受信側格納部と、
前記第１全体データを構成する前記複数の要素データの所定の範囲をアドレス変換対象範囲として所定のアドレス変換規則によりアドレス変換する受信側アドレス変換部と、
アドレス変換された前記アドレス変換対象範囲のうち一部の範囲を指定ブロックとして指定する受信側範囲指定部と、
前記受信側範囲指定部が指定した前記指定ブロックのチェックサムを所定の計算規則により指定ブロックチェックサムとして計算する受信側チェックサム計算部と、
前記受信側チェックサム計算部が計算した前記指定ブロックチェックサムを前記送信側装置に送信する受信側送信部と
を備え、
前記送信側装置は、
前記受信側装置が送信した前記指定ブロックチェックサムを受信する送信側受信部と、
前記第２全体データを格納する送信側格納部と、
前記第２全体データを構成する前記複数の要素データのうち前記アドレス変換対象範囲に対応する対応範囲を前記受信側アドレス変換部のアドレス変換規則に対応するアドレス変換規則によりアドレス変換する送信側アドレス変換部と、
アドレス変換された前記対応範囲を前記受信側範囲指定部が指定する前記指定ブロックのサイズに対応するサイズの複数のブロックに分割する送信側分割部と、
前記送信側分割部が分割した前記複数のブロックのそれぞれについて前記受信側チェックサム計算部の計算規則に対応する計算規則よりチェックサムを計算する送信側チェックサム計算部と、
前記送信側受信部が受信した前記指定ブロックチェックサムと前記送信側チェックサム計算部が計算した前記チェックサムとに基づいて、前記送信側分割部が分割した前記複数のブロックから所定のブロックを探し出す送信側ブロック探索部と、
前記送信側分割部が分割した前記複数のブロックのうち前記送信側ブロック探索部が探し出したブロック以外の未探索ブロックを前記更新用データとして前記受信側装置に送信する送信側送信部と
を備えたことを特徴とする更新用データ送信システム。
【請求項２】
前記第１全体データは、
前記受信側装置で運用する現行プログラムであり、
前記第２全体データは、
前記現行プログラムを更新した更新プログラムであることを特徴とする請求項１記載の更新用データ送信システム。
【請求項３】
前記第１全体データは、
前記受信側装置で運用する現行プログラムを構成するモジュールを示す現行プログラム構成モジュールであり、
前記第２全体データは、
前記現行プログラムを更新した更新プログラムを構成するモジュールを示す更新プログラム構成モジュールであることを特徴とする請求項１記載の更新用データ送信システム。
【請求項４】
前記現行プログラム構成モジュールと前記更新プログラム構成モジュールとは、
いずれもプログラム実行部分とプログラムデータ部分とから構成され、
前記受信側アドレス変換部は、
前記アドレス変換対象範囲として、前記現行プログラム構成モジュールのうち前記プログラム実行部分をアドレス変換し、
前記送信側アドレス変換部は、
前記対応範囲として、前記更新プログラム構成モジュールのうち前記プログラム実行部分をアドレス変換することを特徴とする請求項３記載の更新用データ送信システム。
【請求項５】
前記現行プログラム構成モジュールと前記更新プログラム構成モジュールとの前記プログラムデータ部分は、
いずれもアドレスを意味する部分とアドレスを意味しない部分とから構成され、
前記受信側アドレス変換部は、さらに、
前記アドレス変換対象範囲として、前記現行プログラム構成モジュールの前記プログラムデータ部分のうち前記アドレスを意味する部分をアドレス変換し、
前記送信側アドレス変換部は、さらに、
前記対応範囲として、更新プログラム構成モジュールの前記プログラムデータ部分のうち前記アドレスを意味する部分をアドレス変換することを特徴とする請求項４記載の更新用データ送信システム。
【請求項６】
前記受信側チェックサム計算部は、
前記指定ブロックチェックサムとして、互いに異なる計算規則により複数のチェックサムを計算し、
前記送信側チェックサム計算部は、
前記複数のブロックのそれぞれについて、前記受信側チェックサム計算部の計算規則に対応する計算規則により複数のチェックサムを計算することを特徴とする請求項１記載の更新用データ送信システム。
【請求項７】
前記送信側ブロック探索部は、
前記送信側分割部が分割した前記複数のブロックから所定のブロックを探し出すための探索方法として、ハッシュ関数法とバイナリ探索法とのいずれかを用いることを特徴とする請求項１記載の更新用データ送信システム。
【請求項８】
所定のデータを更新するための更新用データを送信する送信側装置において、
前記更新用データを受信する受信側装置であってアドレスが割り当てられた複数の要素データにより構成された第１全体データを格納し、格納した前記第１全体データを構成する前記複数の要素データの所定の範囲をアドレス変換対象範囲として所定のアドレス変換規則によりアドレス変換し、アドレス変換された前記アドレス変換対象範囲のうち一部の範囲を指定ブロックとして指定し、指定した前記指定ブロックのチェックサムを所定の計算規則により指定ブロックチェックサムとして計算し、計算した前記指定ブロックチェックサムを送信する前記受信側装置から前記指定ブロックチェックサムを受信する送信側受信部と、
アドレスが割り当てられた複数の要素データにより構成されるとともに前記受信側装置が格納する前記第１全体データに対応するデータを示す第２全体データを格納する送信側格納部と、
前記第２全体データを構成する前記複数の要素データのうち前記アドレス変換対象範囲に対応する対応範囲を前記受信側装置のアドレス変換規則に対応するアドレス変換規則によりアドレス変換する送信側アドレス変換部と、
アドレス変換された前記対応範囲を前記受信側装置が指定する前記指定ブロックのサイズに対応するサイズの複数のブロックに分割する送信側分割部と、
前記送信側分割部が分割した前記複数のブロックのそれぞれについて前記受信側装置が前記指定ブロックチェックサムを計算する前記計算規則に対応する計算規則によりチェックサムを計算する送信側チェックサム計算部と、
前記送信側受信部が受信した前記指定ブロックチェックサムと前記送信側チェックサム計算部が計算した前記チェックサムとに基づいて、前記送信側分割部が分割した前記複数のブロックから所定のブロックを探し出す送信側ブロック探索部と、
前記送信側分割部が分割した前記複数のブロックのうち前記送信側ブロック探索部が探し出したブロック以外の未探索ブロックを前記更新用データとして前記受信側装置に送信する送信側送信部と
を備えたことを特徴とする送信側装置。
【請求項９】
自己の格納するデータを更新するための更新用データを受信する受信側装置において、
アドレスが割り当てられた複数の要素データにより構成された第１全体データを格納する受信側格納部と、
前記第１全体データを構成する前記複数の要素データの所定の範囲をアドレス変換対象範囲として所定のアドレス変換規則によりアドレス変換する受信側アドレス変換部と、
アドレス変換された前記アドレス変換対象範囲のうち一部の範囲を指定ブロックとして指定する受信側範囲指定部と、
前記受信側範囲指定部が指定した前記指定ブロックのチェックサムを所定の計算規則により指定ブロックチェックサムとして計算する受信側チェックサム計算部と、
前記受信側チェックサム計算部が計算した前記指定ブロックチェックサムを送信する受信側送信部と、
前記更新用データを送信する送信側装置であってアドレスが割り当てられた複数の要素データにより構成されるとともに前記第１全体データに対応するデータを示す第２全体データを格納し、格納した前記第２全体データを構成する前記複数の要素データのうち前記アドレス変換対象範囲に対応する対応範囲を前記受信側アドレス変換部のアドレス変換規則に対応するアドレス変換規則によりアドレス変換し、アドレス変換された前記対応範囲を前記受信側範囲指定部が指定する前記指定ブロックのサイズに対応するサイズの複数のブロックに分割し、分割した前記複数のブロックのそれぞれについて前記受信側チェックサム計算部の計算規則に対応する計算規則によりチェックサムを計算するとともに、前記受信側送信部が送信した前記指定ブロックチェックサムを受信した場合に前記指定ブロックチェックサムと前記複数のブロックについて計算した前記チェックサムとに基づいて前記複数のブロックから所定のブロックを探し出し、前記複数のブロックのうち探し出したブロック以外の未探索ブロックを前記更新用データとして送信する前記送信側装置から、前記未探索ブロックを前記更新用データとして受信する受信側受信部と
を備えたことを特徴とする受信側装置。
【請求項１０】
アドレスが割り当てられた複数の要素データにより構成された第１全体データを格納する受信側装置に、アドレスが割り当てられた複数の要素データにより構成されるとともに前記第１全体データに対応するデータを示す第２全体データを格納する送信側装置から、前記第１全体データを前記第２全体データに更新するための更新用データを送信する更新用データ送信方法において、
前記受信側装置は、
前記第１全体データを格納し、
前記第１全体データを構成する前記複数の要素データの所定の範囲をアドレス変換対象範囲として所定のアドレス変換規則によりアドレス変換し、
アドレスが変換された前記アドレス変換対象範囲のうち一部の範囲を指定ブロックとして指定し、
指定した前記指定ブロックのチェックサムを所定の計算規則により指定ブロックチェックサムとして計算し、
計算した前記指定ブロックチェックサムを前記送信側装置に送信し、
前記送信側装置は、
前記第２全体データを格納し、
前記第２全体データを構成する前記複数の要素データのうち前記アドレス変換対象範囲に対応する対応範囲を前記受信側装置のアドレス変換規則に対応するアドレス変換規則によりアドレス変換し、
アドレスが変換された前記対応範囲を前記受信側装置が指定する前記指定ブロックのサイズに対応するサイズの複数のブロックに分割し、
分割した前記複数のブロックのそれぞれについて前記受信側装置が前記指定ブロックチェックサムを計算する前記計算規則に対応する計算規則によりチェックサムを計算し、
前記受信側装置が送信した前記指定ブロックチェックサムを受信した場合に、受信した前記指定ブロックチェックサムと分割した前記複数のブロックについて計算した前記チェックサムとに基づいて、分割した前記複数のブロックから所定のブロックを探し出し、
分割した前記複数のブロックのうち探し出したブロック以外の未探索ブロックを前記更新用データとして前記受信側装置に送信することを特徴とする更新用データ送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのプログラムまたはデータの転送方式に関するものであって、ターゲット端末上のソフトウェアとサーバ装置上のソフトウェアの間の差分のみを効率良く転送するシステムに関する。
【背景技術】
【０００２】
あるバージョンのソフトウェアを保持している端末装置のバージョンアップをする場合に、有線、無線など様々な環境化において、適用できるバージョンアップ方法として、端末装置に差分ファイルを送り、旧版のソフトウェアに適用するという手法がある。しかしながら、この手法では、ソフトウェアの管理をきちんとしておかなければ、差分を作成したバイナリファイルイメージと差分を実際に適用する差分ファイルイメージとの間で不整合があると成立しなくなるという問題がある。
【０００３】
この問題を解決する方法として、「Ｔｈｅ  ｒｓｙｎｃ  Ａｌｇｏｌｉｔｈｍ」（１９９６年  オーストラリア国立大学ＡＮＵ  ＴＲ−ＣＳ−９６−０５）が提案されている。これは、送り先に旧版があり、送り元に新版がある場合に、新版ファイルを一定のブロックに分割してチェックサムを２種類の方法でとる。そして、旧版で同じ値になるブロックを比較しながら探す。そして、２種類のチェックサムの値が新版でも旧版でも両方ともに同じ値のブロックは同じであること意味する。このことから、違うチェックサムのブロックの情報のみ送信するという手法である。
【０００４】
しかし、この方式では、新版と旧版で異なる部分が一定の場所に固まっている傾向が強い場合には同一と見なされるブロックが多くなり有効である。しかし、異なる部分が一定の場所に固まらず分散している場合には結局同一のブロックがない。このため、全ブロック、即ち、ファイルごとの転送を余儀なくされる。
【０００５】
例えば、組込み機器のソフトウェアを更新する場合である。組込み機器のソフトウェアはフラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）上にアドレス解決済みのコードで置かれる場合が多く、わずかな修正でも影響が全体に及ぶことが多い。このような場合、参照アドレスのズレが原因でアドレスを示す部分に差異が生じてくる。これらは参照側に修正がはいるので、全体に影響が及ぶことになる。
【０００６】
また、特開平９−１６４０４や特開平１１−３４１５５０にもファイルの転送にあたってブロック化を行うことにより効率よく転送する技術が開示されている。この方式は、単にブロック化しているだけでチェックサムをとっているため、プログラムコードのようなデータのずれを想定しておらず、データの位置ずれがある場合には全く同じブロックが存在しない場合が多くなるという問題がある。
【特許文献１】特開平９−１６４０４号公報
【特許文献２】特開平１１−３４１５５０号公報
【非特許文献１】「Ｔｈｅ  ｒｓｙｎｃ  Ａｌｇｏｌｉｔｈｍ」（１９９６年  オーストラリア国立大学ＡＮＵ  ＴＲ−ＣＳ−９６−０５）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のように、位置ずれがあり、なおかつアドレス情報などが分散しているような場合には、従来の方法では差分を小さくして、効率的なファイル転送を行うことができなかった。このような場合にも、効率良くファイル転送をするシステムを提供する。
【課題を解決するための手段】
【０００８】
本発明の更新用データ送信システムは、
アドレスが割り当てられた複数の要素データにより構成された第１全体データを格納する受信側装置に、アドレスが割り当てられた複数の要素データにより構成されるとともに前記第１全体データに対応するデータを示す第２全体データを格納する送信側装置から、前記第１全体データを前記第２全体データに更新するための更新用データを送信する更新用データ送信システムにおいて、
前記受信側装置は、
前記第１全体データを格納する受信側格納部と、
前記第１全体データを構成する前記複数の要素データの所定の範囲をアドレス変換対象範囲として所定のアドレス変換規則によりアドレス変換する受信側アドレス変換部と、
アドレス変換された前記アドレス変換対象範囲のうち一部の範囲を指定ブロックとして指定する受信側範囲指定部と、
前記受信側範囲指定部が指定した前記指定ブロックのチェックサムを所定の計算規則により指定ブロックチェックサムとして計算する受信側チェックサム計算部と、
前記受信側チェックサム計算部が計算した前記指定ブロックチェックサムを前記送信側装置に送信する受信側送信部と
を備え、
前記送信側装置は、
前記受信側装置が送信した前記指定ブロックチェックサムを受信する送信側受信部と、
前記第２全体データを格納する送信側格納部と、
前記第２全体データを構成する前記複数の要素データのうち前記アドレス変換対象範囲に対応する対応範囲を前記受信側アドレス変換部のアドレス変換規則に対応するアドレス変換規則によりアドレス変換する送信側アドレス変換部と、
アドレス変換された前記対応範囲を前記受信側範囲指定部が指定する前記指定ブロックのサイズに対応するサイズの複数のブロックに分割する送信側分割部と、
前記送信側分割部が分割した前記複数のブロックのそれぞれについて前記受信側チェックサム計算部の計算規則に対応する計算規則よりチェックサムを計算する送信側チェックサム計算部と、
前記送信側受信部が受信した前記指定ブロックチェックサムと前記送信側チェックサム計算部が計算した前記チェックサムとに基づいて、前記送信側分割部が分割した前記複数のブロックから所定のブロックを探し出す送信側ブロック探索部と、
前記送信側分割部が分割した前記複数のブロックのうち前記送信側ブロック探索部が探し出したブロック以外の未探索ブロックを前記更新用データとして前記受信側装置に送信する送信側送信部と
を備えたことを特徴とする。
【発明の効果】
【０００９】
本発明により、更新対象のソフトウェアを有するターゲット端末に、サーバ装置上のソフトウェアの差分のみを効率良く転送するシステムを提供することができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
図１〜図１１を用いて実施の形態１を説明する。実施の形態１は、サーバ装置からターゲット端末に更新用のデータを送信して、ターゲット端末の有するソフトウェアを更新するソフトウェア転送更新システムに関する。
【００１１】
本システムではターゲット端末、サーバ装置のそれぞれがチェックサムを計算する。チェックサムの呼び方を下記のように定める。
（１）図１のターゲット側第１チェックサム計算部１０１１の計算したチェックサムを「端末第１チェックサム」という。
（２）ターゲット側第２チェックサム計算部１０１２の計算したチェックサムを「端末第２チェックサム」という。
（３）サーバ側第１チェックサム計算部２０１１の計算したチェックサムを「サーバ第１チェックサムという。
（４）サーバ側第２チェックサム計算部２０１２の計算したチェックサムを「サーバ第２チェックサム」という。
【００１２】
図１は、実施の形態１に係るソフトウェア転送更新システム１０００（更新用データ送信システムの一例）の構成を示す。ソフトウェア転送更新システム１０００は、ターゲット端末１００とサーバ装置２００とを備えている。ターゲット端末１００は、更新するべきターゲット側ソフトウェア１１０１を備えている。サーバ装置２００は、更新用データをターゲット端末１００に送信する。サーバ装置２００は、更新用データを送信する送信側装置の一例である。また、ターゲット端末１００は、更新用データを受信する受信側装置の一例である。
【００１３】
ターゲット端末１００は、受信側チェックサム計算部１０１、ターゲット側チェックサム範囲指定部１０３（受信側範囲指定部の一例）、ターゲット側論理アドレス変換部１０４（受信側アドレス変換部の一例）、ターゲット側通信部１０６（受信側送信部及び受信側受信部の一例）、及びターゲット側格納部１１０（受信側格納部の一例）を備える。また、受信側チェックサム計算部１０１は、ターゲット側第１チェックサム計算部１０１１、及びターゲット側第２チェックサム計算部１０１２とを備える。
【００１４】
サーバ装置２００は、送信側チェックサム計算部２０１、送信側分割部２０３、サーバ側論理アドレス変換部２０４（送信側アドレス変換部の一例）、送信側ブロック探索部２０５、サーバ側通信部２０６（送信側送信部及び送信側受信部の一例）、及びサーバ側格納部２１０（送信側格納部の一例）を備える。また、送信側チェックサム計算部２０１は、サーバ側第１チェックサム計算部２０１１、及びサーバ側第２チェックサム計算部２０１２を備える。
【００１５】
ソフトウェア転送更新システム１０００は、ターゲット側ソフトウェア１１０１を、ターゲット側ソフトウェア１１０１の更新後のソフトウェアであるサーバ側ソフトウェア２１０１の状態にするシステムである。そのためには、ターゲット端末１００にサーバ側ソフトウェア２１０１をそのまま送信するのが一番簡単である。しかし、それでは送信するべきデータ送信量を減らすことはできない。そこで、本システムではターゲット側ソフトウェア１１０１をサーバ側ソフトウェア２１０１のバイナリコードと同じ状態にするため、そのままデータを送るのではなく、サーバ装置２００からターゲット端末１００に、できる限り差分情報を送る。これによりデータ転送量を減らす。以下にさらに説明する。
【００１６】
ターゲット端末１００及びサーバ装置２００の構成要素の機能を説明する。ターゲット側格納部１１０は、ターゲット端末１００で運用する現行のソフトウェア（プログラム）であるターゲット側ソフトウェア１１０１（第１全体データの一例）を格納する。ターゲット側ソフトウェア１１０１は、ターゲット端末１００上の所定のソフトウェアであり、更新の対象である。ターゲット側ソフトウェア１１０１は通常バイナリコードで置かれている。
【００１７】
（１）ターゲット側論理アドレス変換部１０４は、ターゲット側ソフトウェア１１０１のアドレスを変換する。後述のように、対応するサーバ側論理アドレス変換部２０４も、同じ規則によりサーバ側ソフトウェア２１０１のアドレス変換を行なう。
（２）アドレス変換することにより差分データを低減できる。この理由を以下に述べる。アドレス部のずれというのは、命令コードのほぼ決まった位置にある。プログラムの命令コードは、命令の種類を表す部分と、アドレスやレジスタ名などをあらわす部分から構成される。また、命令コードは４バイト命令や２バイト命令など決まった長さであることが多い。従って、アドレス部分を示す位置は、その命令の置かれているアドレスを４または２で割った時の余りとして必ず一定の値になるという特徴がある。
（３）この特徴を生かして、４または２といった命令長を示す数値で割ったあまりでアドレスを連続させるようなアドレス変換を行う。そうすると、位置ずれのために発生するアドレスの修正部分は全体に分散するのではなく、一部に集中する傾向になる。この特徴を生かすことにより、アドレス変換後の論理アドレス単位でブロックごとの比較を、新版（サーバ側ソフトウェア２１０１）と旧版（ターゲット側ソフトウェア１１０１）で行う。そうすることにより、同一のブロックが増え、結果的に差分量を減らすことができる。
（４）ターゲット側論理アドレス変換部１０４は、ターゲット側ソフトウェア１１０１の物理的なアドレス空間を、論理的なアドレス空間に変換する。図２〜図６を用いて具体的に説明する。例えば、対象アドレス空間ｚ番地に対して、変換式は次の（式１）とする。
Ｙ＝（Ｘ／４の商）＋（Ｘ／４の余り）＊（ｚ／４）      （式１）
Ｙは論理アドレスの番地、Ｘは物理アドレスの番地である。
アドレス空間が０番地から９９番地までの１００個（ｚ＝１００）の場合とする。
図２は、（式１）による物理アドレスと論理アドレスとの対応を示す表である。図３及び図４は（式１）のアドレス変換規則を図示したものである。（式１）は物理アドレスの縦方向（図３の矢印方向）を、論理アドレスの横方向（図４の矢印方向）に変換する。図２に示すように、物理アドレスから論理アドレスへの変換は、
０番地は０番地に、
１番地は２５番地に変換され、
２番地は５０番地に変換され、
３番地は７５番地に変換され、
４番地は１番地に変換され、
５番地は２６番地へ変換される。
（５）次に、図５、図６を用いて、アドレス変換により差分量を減少することができることを具体的に説明する。図５はターゲット端末１００におけるターゲット側ソフトウェア１１０１を示す図である。図５に示すように、ターゲット側ソフトウェア１１０１は、「Ｆ０，００，７Ｅ，１０・・・」等の要素データで構成されている。また、図５は、物理アドレス４０１（アドレス変換対象範囲の一例）と、アドレス変換後の論理アドレス４０２を示している。なお、アドレス変換式は上記の（式１）であり、Ｚ＝３２（０番地〜３１番地）である。このように、物理アドレス４０１はターゲット端末１００上のデータである。論理アドレス４０２は、このデータの論理アドレス変換後のデータである。また、図６はサーバ装置２００におけるサーバ側ソフトウェア２１０１を示す図である。図６に示すように、サーバ側ソフトウェア２１０１は、「Ｆ０，００，７Ｅ，１２・・・」等の要素データで構成されている。また、図６は、物理アドレス４５１（対応範囲の一例）と、アドレス変換後の論理アドレス４５２を示している。アドレス変換式は上記の（式１）であり、Ｚ＝３２（０番地〜３１番地）である。物理アドレス４５１は、サーバ装置２００上のデータであり、ターゲット端末１００上のデータと異なるデータ（要素データ）を下線で示している。図６では、６つのデータ、「１２」、「０Ｅ」、「５３」、「０Ｃ」、「７Ａ」、「０Ａ」が図５のターゲット端末１００上のデータと異なる。アドレス部が最も変わりやすいため、ワード単位の命令とした場合に、４バイトのうちの最後のバイトの情報が少しずつずれた形になっている。ターゲット端末１００側の物理アドレス４０１とサーバ装置２００側の物理４５１とを比較すると、３ワードずつ、１２バイトを１ブロックとして考えたとしても同一のブロックは存在しない。よって、全ブロック、即ち全データをサーバ装置２００からターゲット端末１００にコピーすることが必要になる。しかしながら、サーバ側の論理アドレス４５２に示すように、アドレス変換後をみると、最初の２つのブロックは同一のブロックであり送る必要がない。最後のブロックに相当する部分のみを送るればよいことがわかる。このように、アドレス変換により差分量を減らすことができる。
【００１８】
（１）ターゲット側チェックサム範囲指定部１０３は、ターゲット側第１チェックサム計算部１０１１、ターゲット側第２チェックサム計算部１０１２がチェックサムを計算する範囲を指定する。すなわち、ターゲット側チェックサム範囲指定部１０３は、アドレス変換後のターゲット側ソフトウェア１１０１に対して、所定のサイズのブロックを指定ブロックとして指定する。例えば、指定ブロックとして１２８バイトのブロックを指定する。例えばこの指定は、低いアドレスから順番に行なってかまわない。図７は、ターゲット側チェックサム範囲指定部１０３が初期指定範囲を指定した状態を示している。ターゲット側チェックサム範囲指定部１０３は、ターゲット側第１チェックサム計算部１０１１、ターゲット側第２チェックサム計算部１０１２に対し、ブロックを順番に渡してチェックサム値を受け取る。
（２）また、ターゲット側チェックサム範囲指定部１０３は、サーバ装置２００とのやりとりで、このチェックサムをとるブロックの位置をずらすこともある。「１バイト」または「４バイト」または「１ワード」といった単位でずらす。そして、ターゲット側第１チェックサム計算部１０１１、１０１２にブロックを渡してチェックサムを計算させ、計算させたチェックサム値を受け取る。図８は、ターゲット側チェックサム範囲指定部１０３がチェックサムをとるブロックの位置をずらす状況を説明するため図である。この状況は、図１０で後述するステップ３０２、ステップ３０３の動作である。サーバ装置側の「（Ａ）」は、新たに追加された部分を示す。ターゲット側チェックサム範囲指定部１０３は、ブロック１と同じブロックがサーバ装置側にあった場合、次にブロック２を指定する（図１０のステップ３０３に対応）。図８ではブロック２に等しいブロックはサーバ装置側に存在しない。そこで、ターゲット側チェックサム範囲指定部１０３は１ワード（４バイト）ぶんずらしてブロック３を指定する（図１０のステップ３０２に対応）。ブロック３に相当するブロックはサーバ側に存在しないので、さらに１ワードずらしてブロック４を指定する。ブロック４に相当するブロックがサーバ側に存在する。このように、単にブロック化してチェックサムをとるのではなく、データの位置ずれを考慮して、範囲（ブロック）を動的に指定する。これにより、データ位置のズレがある場合にも差分量を減少することができる。
【００１９】
（１）ターゲット側第１チェックサム計算部１０１１は、ターゲット側チェックサム範囲指定部１０３が一定のデータを一定の大きさに区切った場合に（アドレス変換後のデータの所定部分を範囲指定した場合に）、「第１の計算規則」により「端末第１チェックサム」をとる。ターゲット側第１チェックサム計算部１０１１は、具体的には、「第１の計算規則」として、例えば、単純に足し算し、オーバーフローした部分は捨てるという方法を用いてかまわない。
（２）ターゲット側第２チェックサム計算部１０１２は、ターゲット側第１チェックサム計算部１０１１が計算した範囲について、前記ターゲット側第１チェックサム計算部１０１１とは異なる「第２の計算規則」により「端末第２チェックサム」をとる。第２の計算規則として、例えば、あるメモリの値はそのままで、次の番地のメモリの値は１ビットずらし、その次は２ビットずらしというように、少しずつずらすという規則がある。１ビットずらすというのは、２をかける、４をかけるというように掛け算をしてから足すということになる。
【００２０】
ターゲット側通信部１０６は、サーバ装置２００との通信を行なう。
【００２１】
サーバ側格納部２１０は、ターゲット端末１００が格納するターゲット側ソフトウェア１１０１を更新したソフトウェア（プログラム）に相当するサーバ側ソフトウェア２１０１（第２全体データの一例）を格納する。サーバ側ソフトウェア２１０１は、ターゲット側ソフトウェア１１０１が更新されたソフトウェアに相当する。サーバ側ソフトウェア２１０１は、ターゲット端末１００で実行し、または配置するためのソフトウェアである。
【００２２】
サーバ側論理アドレス変換部２０４は、ターゲット側論理アドレス変換部１０４と同一の規則でサーバ側ソフトウェア２１０１のアドレスを変換する。
【００２３】
送信側分割部２０３は、アドレス変換されたサーバ側ソフトウェア２１０１をターゲット側チェックサム範囲指定部１０３が指定した指定ブロックのサイズと同じサイズの複数のブロックに分割する。図７のサーバ側装置は、分割の例を示している。
【００２４】
サーバ側第１チェックサム計算部２０１１はターゲット側第１チェックサム計算部１０１１に対応し、サーバ側第２チェックサム計算部２０１２はターゲット側第２チェックサム計算部１０１２に対応する。サーバ側第１チェックサム計算部２０１１、サーバ側第２チェックサム計算部２０１２は、ターゲット側第１チェックサム計算部１０１１、ターゲット側第２チェックサム計算部１０１２のそれぞれと同じ規則により、サーバ装置２００において「サーバ第１チェックサム」、「サーバ第２チェックサム」を計算する。
【００２５】
送信側ブロック探索部２０５は、ターゲット端末１００から送信された指定ブロックについてのあるチェックサム値から、その値を持つブロックを探索して探し出す。このブロック探索では、送信側分割部２０３により分割されたすべてのブロックに対して、サーバ側第１チェックサム計算部２０１１が、「サーバ第１チェックサム」を計算しておく。このチェックサム値ごとにブロックを示す情報（例えばブロック番号）を記憶しておくことにより、ブロックを簡単に探すことができる。
【００２６】
サーバ側通信部２０６は、ターゲット端末１００と通信を行なう。
【００２７】
次に、図９、図１０に示すフローチャートを用いて、ソフトウェア転送更新システム１０００の動作を説明する。ソフトウェア転送更新システム１０００では、サーバ装置２００が差分を生成し、ターゲット端末１００に送付する。以下その具体例を示す。
【００２８】
図９のステップ２００がターゲット端末１００側の動作フローの起点であり、ステップ２５０がサーバ装置２００側の動作フローの起点である。
【００２９】
ステップ２０１で、ターゲット端末１００側がサーバ装置２００に更新要求を行う。ステップ２５１で、サーバ装置２００はこの更新要求を受け付け、受け付けた旨の応答を返す。これによりターゲット端末１００、サーバ装置２００ともにフローがスタートする。
【００３０】
ステップ２０２で、ターゲット端末１００側では、ターゲット側論理アドレス変換部１０４が、ターゲット側ソフトウェア１１０１に対して物理アドレスを論理アドレスに変換する。この変換は、ターゲット側論理アドレス変換部１０４の動作で説明した例に従う。アドレス変換では、１ワードを４バイトであらわすようなＣＰＵ（Ｃｎｅｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）においては、４を基本に論理アドレスを物理アドレスに変換する。また、アドレス情報を示すインデアンによっては、論理変換式の余りの４と３をそれぞれ３、または４として扱うこともある。インデアンによっては、アドレスパートのずれが、命令コードの３バイト目に出やすいためである。この物理アドレスと論理アドレスの変換による効果は、差分の元となるアドレス部の違いが物理アドレスで示したときには全アドレス空間に現れるのに対して、論理アドレスに変換するとアドレス空間中の分布で集中して現れることによる。このため、差分の表現上小さく表現できるという効果がある。
【００３１】
ステップ２０３では、ターゲット側チェックサム範囲指定部１０３が最初の指定ブロック（図７の初期指定範囲）を指定する。そして、最初の指定ブロックについて、ターゲット側第１チェックサム計算部１０１１が「端末第１チェックサム」（指定ブロックチェックサムの一例）を計算する。
【００３２】
その後、ステップ２０４で、ターゲット端末１００はサーバ装置２００に「第１チェックサム同一ブロック」の探索を要求する探索要求を送信する。この「第１チェックサム同一ブロック」とは、送信側分割部２０３が分割したブロックのうち（この分割はステップ２５３で後述する）、端末第１チェックサムと同一の値のサーバ第１チェックサムを有するブロックである。またターゲット端末１００は、探索要求とともに最初の指定ブロックの端末第１チェックサムを送信する。
【００３３】
一方、ステップ２５２において、サーバ装置２００はターゲット端末１００側と同様に、サーバ側論理アドレス変換部２０４が、サーバ側ソフトウェア２１０１に対して、物理アドレスを論理アドレスに変換する処理を行う。
【００３４】
ステップ２５３において、送信側ブロック探索部２０５が、アドレス変換されたサーバ側ソフトウェア２１０１の全体を一定のブロックサイズに分割する。この場合一定のサイズとは、ターゲット側チェックサム範囲指定部１０３が指定する指定ブロックのサイズと同じサイズである。そして、サーバ側第１チェックサム計算部２０１１が各ブロックの「サーバ第１チェックサム」を計算する。この計算は、フローの開始以前にすべてやっておいても問題ない。
【００３５】
ステップ２５４において、送信側ブロック探索部２０５は、分割された各ブロックと、各ブロックの「サーバ第１チェックサム」との対応を示す「ブロック検索テーブル」を作成する。
【００３６】
図１１は、「ブロック検索テーブル」の一例を示す。図に示すように「ブロック検索テーブル」は、「サーバ第１チェックサム」、その「サーバ第１チェックサム」を有するブロックの「ブロック番号」、後述の「複数フラグ」、及び「サーバ第２チェックサム」を有している。なお「サーバ第２チェックサム」は、後述する。送信側ブロック探索部２０５は、この「ブロック検索テーブル」を用いることにより、どのブロックがいかなる「サーバ第１チェックサム」を持つかを調べることができる。具体的には「サーバ第１チェックサム」をインデックスにして、ブロック番号を検索できる。この場合、同一の「サーバ第１チェックサム」を持つ複数のブロックが存在する場合がある。このため、複数の候補があるかどうかを示す「複数フラグ」も用意する。また、「サーバ第１チェックサム」に基づいて該当ブロックを探索する場合、「ブロック検索テーブル」において、ハッシュ関数を用いてテーブルのポインタを見つけやすくすることもできる。あるいは、バイナリ探索を用いても構わない。
【００３７】
ステップ２５５では、ステップ２０４から「第１チェックサム同一ブロック」の探索要求を「端末第１チェックサム」とともに受信する。また、送信側ブロック探索部２０５は受信した「端末第１チェックサム」をもとに、ステップ２５４で作成したブロック検索テーブルで「第１チェックサム同一ブロック」を検索する。また分割したブロックの数、ブロック番号などを含むブロック情報を送信する。
【００３８】
ステップ２５６で、「第１チェックサム同一ブロック」がなかった場合は後述するステップ３５３へ進む。「第１チェックサム同一ブロック」があった場合は、ステップ２５７において、サーバ装置２００は、ターゲット端末１００に最初の指定ブロックの「端末第２チェックサム」を要求する。
【００３９】
ステップ２５８において、サーバ側第２チェックサム計算部２０１２は「第１チェックサム同一ブロック」について、「サーバ第２チェックサム」を計算する。この処理は予めやっておいて上記のブロック検索テーブルに持たせておいても問題ない。図１１のブロック検索テーブルは、予め処理をしておいた場合を示している。
【００４０】
「端末第２チェックサム」の要求をうけたターゲット端末１００側では、ステップ２０５において、「端末第２チェックサム」の要求かどうかを判定する。違う要求が来た場合にはステップ後述するステップ３０１へ進む。
【００４１】
「端末第２チェックサム」の要求だった場合には（ステップ２０５のＹＥＳ）、ステップ２０６で、ターゲット側第２チェックサム計算部１０１２が最初の指定ブロックについて「端末第２チェックサム」（指定ブロックチェックサムの一例）を計算する。
【００４２】
ステップ２０７において、最初の指定ブロックの「端末第２チェックサム」を応答としてサーバ装置２００に返信し、ステップ３００へ進む。
【００４３】
サーバ装置２００側では、ステップ２５９において、ターゲット端末１００からの応答として、「端末第２チェックサム」を受信し、ステップ３５０へ進む。そして図１０のステップ３００、ステップ３５０に進む。
【００４４】
サーバ装置２００側ではステップ３５０から続きのフローが開始される。ステップ３５１において、送信側ブロック探索部２０５は、「サーバ第１チェックサム」が「端末第１チェックサム」と等しかったブロックの中に、「サーバ第２チェックサム」が「端末第２チェックサム」と等しいブロックがあるかどうか探索する。例えば、受信した「端末第１チェックサム」が「４」、「端末第２チェックサム」が「２」の場合、ブロック番号「７」を検索することとなる。この探索は、上記のブロック検索テーブルを順番に値を見ていけばよい。また、「サーバ第２チェックサム」が「端末第２チェックサム」と等しいブロックは、見つかるとしてもたかだか１個である。
【００４５】
見つかった場合はステップ３５２へ進む。見つからなかった場合はステップ３５３へ進む。
【００４６】
ステップ３５２では、サーバ装置２００はターゲット端末１００に、「サーバ第２チェックサム」が「端末第２チェックサム」と同じである「第２チェックサム同一ブロック」があった旨と、何番目のブロックかの情報を送る。
【００４７】
ステップ３０１において、ターゲット端末１００は「第２チェックサム同一ブロック」があったことを知る。この場合ステップ３０３へ進む。
【００４８】
ステップ３０３において、「第２チェックサム同一ブロック」が何番目のブロックかの情報を得て、その位置にターゲット端末１００で調べたデータが移動することを記憶した上で、ターゲット端末１００上で「ブロック分ずらした位置」から次のブロックに関する調査フローとしてステップ２０３に戻る。「ブロック分ずらした位置」とは、図８に示したブロック２の位置である。そして、ステップ３０４にて、「ターゲット端末１００側にはもはや調査するべきブロックがない、すべて調査し終えた」と最終的に判断した場合にはステップ３０５へ進む。
【００４９】
サーバ装置２００側では、ステップ３５１において「第２チェックサム同一ブロック」がなかった場合には（ステップ３５１のＮＯ）ステップ３５３に進み（ステップ３５１のＮＯ）、サーバ装置２００は、「第２チェックサム同一ブロック」がなかったという情報をターゲット端末１００に通知する。
【００５０】
ステップ３０１において、ターゲット端末１００は「第２チェックサム同一ブロック」がないと判断し（ステップ３０１のＮＯ）、ステップ３０２に進む。ターゲット側チェックサム範囲指定部１０３は、１バイトや１ワードといった「１単位分をずらして」次のブロック探索に移る。「１単位分をずらす」とは、例えば図８においてブロック２からブロック３に移る場合である。
【００５１】
ステップ３０５では、ターゲット端末１００側は全部ブロックを探索完了したことを示す完了通知をサーバ装置２００側に送信するとともに、「端末第１チェックサム」及び「第２チェックサム」の両者ともに等しい「同一ブロック」を見つけられなかった部分に関して、送信側分割部２０３が分割したブロックのうち何番目のブロックかという情報をサーバ装置２００側に送る。これは、ターゲット端末１００はステップ２０５においてサーバ装置２００から全ブロック数、ブロック番号を含むブロック情報を受信しており、また、ステップ３０１、ステップ３５２においてブロック番号を受信している。このため、サーバ装置２００が分割した複数のブロックのうち、「端末第１チェックサム」及び「第２チェックサム」の両者ともに等しい「同一ブロック」以外のブロックである未探索ブロックの番号を特定することができる。その特定した未探索ブロックのブロック番号をステップ３０５でサーバ装置２００に通知する。
【００５２】
サーバ装置２００側では、ステップ３５２、３５３の後、ステップ３５４において、ターゲット端末１００側から受信した完了通知の内容を確認する。全ブロック終了であればステップ３５５へ進む。チェックサム値など異なる通知であれば、ステップ２５５へ進む。
【００５３】
ステップ３５５において、サーバ装置２００側はターゲット端末１００から要求された未探索ブロックに関してのみ情報をターゲット端末１００に送信し、処理を終了する。
【００５４】
ステップ３０６において、ターゲット端末１００側は必要ブロックを受信する。そして、ステップ３０７において、ターゲット端末１００内部で移動するべきブロックのコピーと、受信したブロックの書き込みをして処理を完了する。
【００５５】
詳細は記載しないが、この書き込みの後、全体の書き込みを確認するための全体のチェックサムや、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）計算を行い、サーバ側の値と同じかという確認処理を入れても良い。
【００５６】
ソフトウェア転送更新システム１０００は、ターゲット側論理アドレス変換部１０４及びサーバ側論理アドレス変換部２０４がアドレス変換を行なうので、サーバ装置２００からターゲット端末１００に送信するべき更新用データを、より少なくすることができる。
【００５７】
ソフトウェア転送更新システム１０００では、送信側チェックサム計算部２０１、及び受信側チェックサム計算部１０１が、対象となるブロックについて互いに異なる複数のチェックサムを計算するので、更新されていないブロックを確実に発見することができる。
【００５８】
送信側ブロック探索部２０５は、ハッシュ関数法とバイナリ探索法のいずれかを使用してブロックを探索するので、容易にブロックを探し出すことができる。
【００５９】
ソフトウェア転送更新システム１０００では、サーバ装置２００のサーバ側論理アドレス変換部２０４がアドレス変換するので、送信するべき更新用データの送信量を少なくすることができる。
【００６０】
ソフトウェア転送更新システム１０００では、ターゲット端末１００のターゲット側論理アドレス変換部１０４は、サーバ装置２００のサーバ側論理アドレス変換部２０４と同じ規則によりアドレス変換するので、ターゲット端末１００が受信するべき更新用データの受信量を少なくすることができる。
【００６１】
実施の形態２．
図１２〜図１５を用いて実施の形態２を説明する。実施の形態１では、図１２に示すようにソフトウェア全体を物理アドレスから論理アドレスに変換する場合を説明した。実施の形態２では、ソフトウェア全体ではなく、ソフトウェアの部分をアドレス変換する場合を説明する。実施の形態１で述べたように、全体に差分が散らばっている場合に、アドレス変換により、この散らばった差分が集中した位置に出てくる傾向があることを述べた。しかしながら、ソフトウェアにおいて、アドレスではなく、例えば、画像データが変更されたような場合には、アドレス情報と関係なく差分が一般に出てくる。
【００６２】
また、一般にプログラムとデータは別に扱われていることが多い。そこで、プログラム領域ならプログラム領域だけを論理アドレスと物理アドレスで変換し、データ領域はデータ領域だけで変換する方が差分が集中して表現できるという効果がある場合もある。ソフトウェアの更新要求（図のステップ２０１）の際に、論理アドレスと物理アドレスの「変換位置情報」（アドレス変換するデータ範囲）の送受信も行い、変換位置の単位で変換を行うようにすることにより、より差分を減少させる効果が得られる。
【００６３】
また、データ領域といっても画像データの場合はアドレスと関係ないので、変換しても効果がないが、アドレステーブルのような場合は変換すると差分減少の効果がある。したがって、この交換する「変換位置情報」の中に、論理アドレスへの変換をすべきかどうかの情報をも含めることにより、一部アドレス変換しないという方法をとることも可能である。
【００６４】
これらの方法により、結果的に差分が一部のブロックに集中し、送信するべき差分量を減らす効果が生じる。以下に「変換位置情報」に基づき、所定の位置（範囲）をアドレス変換する具体的な場合を説明する。
【００６５】
まずモジュールごとに変換する場合が考えられる。ソフトウェア（プログラム）は、通常、ソフトウェアの論理的な単位である複数のモジュールから構成されている。ターゲット側ソフトウェア１１０１、及びサーバ側ソフトウェア２１０１がモジュールから構成されている場合、図１３に示すように、モジュールごとにアドレス変換をするようにしてもよい。
【００６６】
図１３では、端末側モジュール１（現行プログラム構成モジュールの一例）と、この端末側モジュール１に対応するサーバ側のサーバ側モジュール１（更新プログラム構成モジュールの一例）とをアドレス変換している。同様に、端末側モジュール２、３、・・ｎとこれらのそれぞれに対応するサーバ側モジュール２、３、・・ｎとアドレス変換する場合を示している。なお、図１３ではすべてのモジュールをアドレス変換しているが、特定のモジュールについてアドレス変換しても構わない。例えば、図１３において、端末側モジュール１とサーバ側モジュール１とだけをアドレス変換しても構わない。モジュールごとにアドレス変換することで、より差分を集中させることができる。
【００６７】
また、プログラムの実行部分を変換する場合が考えられる。上記のようにプログラムとデータとは別に扱われていることが多い。例えば、モジュールは、モジュールのうちプログラムを実行する領域を示す「プログラム実行部分」と、モジュールのうちプログラムに使用するデータ領域を示す「プログラムデータ部分」とから構成される場合が多い。そのような場合は、プログラム実行部分にのみ物理アドレスと論理アドレスの変換を行なっても構わない。図１４はプログラム実行部分にのみアドレス変換を行なう場合を示す図である。図１４ではすべてのモジュールのプログラム実行部分どうしをアドレス変換しているが、上記と同様、特定のモジュールのプログラム実行部分どうしをアドレス変換しても構わない。このようなアドレス変換により、差分を集中することができる。
【００６８】
また、「プログラムデータ部分」をアドレス変換する場合も考えられる。「プログラムデータ部分」であっても、その「プログラムデータ部分」がアドレスを意味するデータの集まりの場合がある。そのような場合には、「アドレスを意味するプログラムデータ部分」に物理アドレスと論理アドレスの変換を行う。図１５は、アドレスを意味するプログラムデータ部分（ターゲット側２箇所、サーバ装置側２箇所）にアドレス変換を行なう場合を示している。
【００６９】
実施の形態２では、ソフトウェア転送更新システム１０００において、ターゲット側論理アドレス変換部１０４、及びサーバ側論理アドレス変換部２０４が、プログラムのモジュールを単位にアドレス変換するので、差分を集中させることができる。
【００７０】
実施の形態２では、ソフトウェア転送更新システム１０００において、ターゲット側論理アドレス変換部１０４、及びサーバ側論理アドレス変換部２０４が、プログラムのモジュールのうちプログラム実行部分を対象にアドレス変換するので、差分を集中させることができる。
【００７１】
実施の形態２では、ソフトウェア転送更新システム１０００において、ターゲット側論理アドレス変換部１０４、及びサーバ側論理アドレス変換部２０４が、プログラムのモジュールのうちプログラムデータ部分も対象としてアドレス変換するので、より差分を集中させることができる。
【００７２】
実施の形態３．
図１６、図１７を用いて実施の形態３を説明する。図１６は実施の形態３に係るソフトウェア転送更新システム２０００（更新用データ送信システムの一例）の構成を示す。実施の形態３は、実施の形態１に対して、ターゲット端末３００、サーバ装置４００が、いずれも３つのチェックサム計算部を備える点が異なる。図１６において、ターゲット側第３チェックサム計算部１０１３とサーバ側第３チェックサム計算部２０１３とは同じ計算規則で「端末第３チェックサム」、「サーバ第３チェックサム」を計算する。また、第１〜第３のチェックサム計算部の計算規則は、互いに異なる。
【００７３】
図１７を用いて動作を説明する。ステップ４０１〜ステップ４０３は、実施の形態１と同様である。
【００７４】
送信側ブロック探索部２０５は、端末第２チェックサムを受信した場合、「サーバ第２チェックサム」が「端末第２チェックサム」に等しい複数の「第２チェックサム同一ブロック」を発見する場合がある（ステップ４０４）。その場合、サーバ側第３チェックサム計算部２０１３は、この複数のブロックのそれぞれについて、「サーバ第３チェックサム」を計算する。「サーバ第１チェックサム」および「サーバ第２チェックサム」は、予め計算しておいても構わなかった。サーバ第３チェックサムも予め計算しておいてもよい。しかし、第２チェックサムが互いに等しい複数のブロックが見つかることは非常に稀である。そのため、通常は、第２チェックサムの互いに等しい複数のブロックが見つかった場合に、「サーバ第３チェックサム」を計算するようにする。
【００７５】
ステップ４０６において、サーバ装置４００はターゲット端末３００に「端末第３チェックサム」を要求する。
【００７６】
ステップ４０７において、ターゲット側第３チェックサム計算部１０１３が、対象の指定ブロックの「端末第３チェックサム」を計算する。
【００７７】
ステップ４０８において、ターゲット端末３００はサーバ装置４００に端末第３チェックサムを送信する。
【００７８】
ステップ４０９において、サーバ装置４００は「端末第３チェックサム」を受信し、受信した「端末第３チェックサム」と同一の「サーバ第３チェックサム」を有するブロックを探索する。
【００７９】
上記ではチェックサム計算部が３つの場合を示したが、これに限ることは無く、チェックサム計算部は３つ以上でもよく、動作は上記と同様である。
【００８０】
実施の形態３のソフトウェア転送更新システム２０００は、ターゲット端末とサーバ装置ともチェックサム計算部をそれぞれ３つ備えるので、ターゲット端末側とサーバ装置側の互いに等しいブロックを確実に探索することができる。
【００８１】
このように本発明により、更新のためのソフトウェアの転送量を減らすことができる。
【００８２】
また、命令長が不定などの場合は、差分の位置がばらばらになってしまう傾向があるが、これも命令ごとの特性に応じた命令長補完をすれば、やはり差分の出方がある一定の位置になるため、本発明を適用することにより、転送量を減らすという効果がある。
【００８３】
上記実施の形態１〜実施の形態３において、「チェックサム計算部」、「ターゲット側チェックサム範囲指定部」、「アドレス変換部」、「送信側分割部」、「送信側ブロック探索部」等の各部が行なう動作は、ハードウェアのみでも実施でき、ソフトウェアのみでも実施でき、ハードウェアとソフトウェアの組み合わせでも実施することができる。
【００８４】
すべての実施の形態では、各構成要素の各動作はお互いに関連しており、各構成要素の動作は、上記に示された動作の関連を考慮しながら、一連の動作として置き換えることができる。このように置き換えることにより、方法の発明の実施形態とすることができる。また、各上記各構成要素の動作を、各構成要素の処理と置き換えることにより、プログラムの実施形態とすることができる。
【００８５】
上記のソフトウェア転送更新システムは、
サーバ装置からターゲット端末に対してソフトウェアの更新データを送り、そのデータに基づいてターゲット端末のソフトウェアを更新するソフトウェア転送更新装置において、
（１）サーバ装置側でソフトウェア全体をある一定のブロックサイズに分けて、そのブロックごとのチェックサムをとるサーバ端末第１チェックサム計算手段と、
（２）上記チェックサム計算方法とは別のアルゴリズムによるサーバ端末第２チェックサム計算手段と、
（３）ターゲット端末側で決まったブロックサイズのチェックサムをサーバ端末第１チェックサム手段と同じアルゴリズムで計算するターゲット端末第１チェックサム手段と、
（４）ターゲット端末側で決まったブロックサイズのチェックサムをサーバ端末第２チェックサム手段と同じアルゴリズムで計算するターゲット端末第２チェックサム手段と、
（５）ターゲット端末上で計算するブロックの範囲を動的に指定するターゲット端末チェックサム計算範囲指定手段と、
（６）ターゲット端末第１チェックサム手段によって得られたチェックサム値より、サーバ上で同じチェックサム値を持つサーバ上のブロックを探すブロック探索手段と、
（７）対象とするソフトウェアのデータに関して論理アドレスと物理アドレスをソフトウェア的に変換するアドレス変換手段と
を備えることを特徴とする。
【００８６】
上記のソフトウェア転送更新システムは、前記第１のチェックサム手段および第２のチェックサム手段は単純な足し算およびビット位置をずらしながらの足し算であることを特徴とする。
【００８７】
上記のソフトウェア転送更新システムは、前記ブロック探索手段が、ハッシュ関数を用いることを特徴とする。
【００８８】
上記のソフトウェア転送更新システムは、前記ブロック探索手段が、バイナリ探索を用いることを特徴とする。
【００８９】
上記のソフトウェア転送更新システムは、アドレス変換手段が、ソフトウェアの論理的な単位であるモジュールごとに変換することを特徴とする。
【００９０】
上記のソフトウェア転送更新システムにおいて、モジュールとして、プログラムの実行部分と、データ部分とからなるモジュールを保持することを特徴とする。
【００９１】
上記のソフトウェア転送更新システムにおいて、プログラムの実行部分と、データ部分とからなるモジュールにおいて、プログラム実行部分にのみ物理アドレスと論理アドレスの変換を行うことを特徴とする。
【００９２】
上記のソフトウェア転送更新システムにおいて、データ部分は、アドレスを意味するデータの集まりとそれ以外から構成され、アドレスを意味するデータ部分には物理アドレスと論理アドレスの変換を行うことを特徴とする。
【図面の簡単な説明】
【００９３】
【図１】実施の形態１におけるソフトウェア転送更新システム１０００の構成を示す。
【図２】実施の形態１におけるアドレス変換を示す表である。
【図３】実施の形態１における物理アドレスの変換方向を示す。
【図４】実施の形態１における論理アドレスの変換方向を示す。
【図５】実施の形態１におけるターゲット端末側の変換の前後を示す。
【図６】実施の形態１におけるサーバ装置側の変換の前後を示す。
【図７】実施の形態１におけるブロック化を示す。
【図８】実施の形態１におけるターゲット端末によるブロックの指定を示す。
【図９】実施の形態１におけるソフトウェア転送更新システム１０００の動作を示す。
【図１０】実施の形態１におけるソフトウェア転送更新システム１０００の動作を示す。
【図１１】実施の形態１におけるブロック探索テーブルを示す。
【図１２】実施の形態２におけるソフトウェアを対象とするアドレス変換を示す。
【図１３】実施の形態２におけるモジュールを対象とするアドレス変換を示す。
【図１４】実施の形態２におけるプログラム実行部分を対象とするアドレス変換を示す。
【図１５】実施の形態２におけるプログラムデータ部分を対象とするアドレス変換を示す。
【図１６】実施の形態３におけるソフトウェア転送更新システム２０００の構成を示す。
【図１７】実施の形態３におけるソフトウェア転送更新システム２０００の動作を示す。
【符号の説明】
【００９４】
１００  ターゲット端末、１０１  受信側チェックサム計算部、１０１１  ターゲット側第１チェックサム計算部、１０１２  ターゲット側第２チェックサム計算部、１０１３  ターゲット側第３チェックサム計算部、１０３  ターゲット側チェックサム範囲指定部、１０４  ターゲット側論理アドレス変換部、１０６  ターゲット側通信部、１０００  ソフトウェア転送更新システム、１１０  ターゲット側格納部、１１０１  ターゲット側ソフトウェア、２００  サーバ装置、２０１  送信側チェックサム計算部、２０１１  サーバ側第１チェックサム計算部、２０１２  サーバ側第２チェックサム計算部、２０１３  サーバ側第３チェックサム計算部、２０３  送信側分割部、２０４  サーバ側論理アドレス変換部、２０５  送信側ブロック探索部、２０６  サーバ側通信部、２０００  ソフトウェア転送更新システム、２１０  サーバ側格納部、２１０１  サーバ側ソフトウェア、３００  ターゲット端末、４００  サーバ装置。
【図１】
2006209417.tif 000003
【図２】
2006209417.tif 000004
【図３】
2006209417.tif 000005
【図４】
2006209417.tif 000006
【図５】
2006209417.tif 000007
【図６】
2006209417.tif 000008
【図７】
2006209417.tif 000009
【図８】
2006209417.tif 000010
【図９】
2006209417.tif 000011
【図１０】
2006209417.tif 000012
【図１１】
2006209417.tif 000013
【図１２】
2006209417.tif 000014
【図１３】
2006209417.tif 000015
【図１４】
2006209417.tif 000016
【図１５】
2006209417.tif 000017
【図１６】
2006209417.tif 000018
【図１７】
2006209417.tif 000019