(57)【要約】【課題】  不揮発性メモリを有するＣＰＵからなるマルチＣＰＵシステムにおいて、小容量のＲＡＭを用いてＣＰＵのプログラムを更新する際に、小容量のＲＡＭでは更新プログラムをすべて保存することはできないため、更新プログラムの全文を送信しながらプログラムの更新をする必要があるため、更新に時間がかかっていた。【解決手段】  不揮発性メモリ内のあるセクタをプログラム更新のための退避用として使用することで、更新前のプログラムは退避用セクタに保持し、ＲＡＭは更新後の差分プログラムだけを保持し、退避用セクタのデータとＲＡＭのデータを用いてプログラムの更新を行うことで、データの通信量を減らすことができ、更新にかかる時間を短縮できる。【選択図】  図６
2011081561.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶領域からなる記憶手段と、
前記記憶手段に保存されているデータを更新するための更新データを受信する受信手段と、
前記受信した更新データに基づき前記記憶手段のデータを更新する制御手段と、を有する情報処理装置であって、
前記制御手段は、前記受信手段により前記複数の記憶領域のうちの第１の記憶領域に保存されているデータの一部を更新する前記更新データを受信すると、第２の記憶領域に保存されているデータを消去し、前記第１の記憶領域に保存されているデータを第２の記憶領域に書き込み、前記第１の記憶領域のデータを消去した後、前記受信手段により受信した更新データと前記第２の記憶領域に書き込んだデータとを用いて前記第１の記憶領域のデータを更新することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記第１の記憶領域のデータを更新した後、前記第２の記憶領域のデータを消去し、前記第２の記憶領域の更新データを前記受信手段によって受信し、受信した前記第２の記憶領域の更新データを用いて前記第２の記憶領域のデータを更新することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記第１の記憶領域のデータを書き込むための前記第２の記憶領域として、前記第１の記憶領域の更新データ量より更新データ量が多い記憶領域を第２の記憶領域として使用することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記第１の記憶領域のデータを書き込むための前記第２の記憶領域として、書き込み回数が閾値より少ない記憶領域を第２の記憶領域として使用することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記制御手段は、書き込み回数が閾値より少ない、且つ更新データの最も多い記憶領域を第２の記憶領域として使用することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項６】
前記制御手段は、前記受信手段により第１の記憶領域に保存されたデータのすべてを更新する更新データを受信すると、前記第１の記憶領域に保存されたデータを消去した後、前記受信手段により受信した更新データを前記第１の記憶領域に書き込むことを特徴とする請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの更新が可能な情報処理装置に関するものである。
【背景技術】
【０００２】
従来、不揮発性メモリ内のデータの更新作業を高速化する方法として、不揮発性メモリのデータの更新単位よりも大きな領域のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を搭載するシステムにおいては、更新データを差分で送信する。そして、ＲＡＭ内で更新データを作成して不揮発性メモリのデータを更新することで、更新作業を高速化する方法が特許文献１に提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１７１６６４
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、不揮発性メモリのデータの更新単位よりも大きな領域のＲＡＭを用いるとコスト高の要因となってしまっていた。そこで、低コストを実現するために、ＲＡＭの容量を不揮発性メモリのデータの更新単位よりも小さくすることが考えられる。小さな領域のＲＡＭしか搭載していないシステムでのデータ更新作業においては、ＲＡＭ内で更新データを作成できない。このような場合においては、一度不揮発性メモリのデータをすべて削除し、ＲＡＭの領域毎に順次更新データを受信し、順次不揮発性メモリに書き込むことでデータの更新を行っていた。このような方法では、不揮発性メモリに書き込むデータをすべて受信せねばならず、ＲＡＭでデータを受信する時間が長くなり、更新時間にかかる時間も長くなってしまっていた。
【０００５】
本出願に係る発明は、以上のような状況を鑑みてなされたものであり、不揮発性メモリのデータを更新するために小さい容量のＲＡＭしか持たないシステムであっても、データの更新時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、複数の記憶領域からなる記憶手段と、前記記憶手段に保存されているデータを更新するための更新データを受信する受信手段と、前記受信した更新データに基づき前記記憶手段のデータを更新する制御手段と、を有する情報処理装置であって、前記制御手段は、前記受信手段により前記複数の記憶領域のうちの第１の記憶領域に保存されているデータの一部を更新する前記更新データを受信すると、第２の記憶領域に保存されているデータを消去し、前記第１の記憶領域に保存されているデータを第２の記憶領域に書き込み、前記第１の記憶領域のデータを消去した後、前記受信手段により受信した更新データと前記第２の記憶領域に書き込んだデータとを用いて前記第１の記憶領域のデータを更新することを特徴とする。
【発明の効果】
【０００７】
本発明の構成によれば、不揮発性メモリの更新に必要なデータ量が少なくなるので、データの通信にかかる時間を短縮でき、データ更新時間を短縮することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態における情報処理装置であるマルチＣＰＵシステムの構成を示す図
【図２】第１の実施形態に係るプログラム更新データを示した図
【図３】第１の実施形態におけるプログラム更新データの作成方法を示した図
【図４】第１の実施形態におけるプログラム更新方法を示した図
【図５】第１の実施形態における不揮発性メモリの更新方法を示した図
【図６】第１の実施形態におけるプログラム更新方法を示す図
【図７】第２の実施形態における情報処理装置であるマルチＣＰＵシステムの構成を示す図
【図８】第２の実施形態におけるプログラム更新作業を示したフローチャート
【図９】第３の実施形態における情報処理装置であるマルチＣＰＵシステムの構成を示す図
【図１０】第３の実施形態におけるプログラム更新データを示した図
【図１１】第３の実施形態におけるデータ退避用バッファセクタの決定方法を示したフローチャート
【図１２】第３の実施形態におけるプログラム更新方法を示したフローチャート
【発明を実施するための形態】
【０００９】
以下、図面を用いて本発明の実施形態について説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１０】
（第１の実施形態）
図１（ａ）に本実施形態の情報処理装置であるマルチＣＰＵシステムを示す。図１（ｂ）に複数の記憶領域（以下、セクタとする）を有する不揮発性メモリ１１１の構成を示す。更新するデータの内容は、プログラムやパラメータ等、マルチＣＰＵシステムを適応する装置の状況に応じて適宜設定することが可能であるが、以下では一例としてプログラムを更新する場合について説明する。また、本実施形態における不揮発性メモリ１１１は、データの書き込みは随時行うことができるが、データの消去は全消去しかできないものとする。
【００１１】
図１（ａ）を用いてマルチＣＰＵシステムについて説明する。１０１はプログラム更新データ出力装置、１０２は制御ＣＰＵを有するコントローラ、１０３は被制御ＣＰＵを有するコントローラである。制御ＣＰＵを有するコントローラ１０２は制御ＣＰＵ１０５と不揮発性メモリ１１１より大容量のＲＡＭ１０７を有し、プログラム更新データ出力装置１０１と通信制御部１０４によって通信を行う。そして、シリアル通信制御部１０６によって被制御ＣＰＵを有するコントローラ１０３のシリアル通信制御部１０８とシリアル通信を行う。被制御ＣＰＵを有するコントローラ１０３は、被制御ＣＰＵ１０９と不揮発性メモリ１１１と不揮発性メモリ１１１より小容量のＲＡＭ１１０を有する。そして、制御ＣＰＵを有するコントローラ１０２とシリアル通信制御部１０８によってシリアル通信を行い、不揮発性メモリ１１１を更新する。
【００１２】
図１（ｂ）を用いて不揮発性メモリ１１１の構成について説明する。不揮発性メモリ１１１は、書き換え不可能である更新プログラム格納セクタ１１１１、書き換え可能である各プログラム更新対象セクタ１１１２、１１１３、１１１４から構成される。被制御ＣＰＵ１０９のプログラム更新中の動作プログラムは更新プログラム格納セクタ１１１１に保存されている。
【００１３】
図２（ａ）に本実施形態でのプログラム更新に用いるプログラム更新データの一例を示す。図２（ｂ）にプログラム更新データのより具体的な構成の一例を示す。２０１はソフトウェアのバージョンをＶｅｒ１．４に更新するためのプログラム更新データである。プログラム更新データ２０１は、更新前のソフトウェアのバージョン名を示す各セクタ２０２、２０４、２０６と、夫々のバージョンに対応するプログラム更新データ２０３、２０５、２０７によって構成される。具体的には、２０２はソフトウェアの更新前のバージョンがＶｅｒ１．３であることを示し、２０３はソフトウェアをＶｅｒ１．３からＶｅｒ１．４に更新するためのプログラム更新データが保存されている。同様に、２０４はソフトウェアの更新前のバージョンがＶｅｒ１．２であることを示し、２０５はソフトウェアをＶｅｒ１．２からＶｅｒ１．４に更新するためのプログラム更新データが保存されている。２０６はソフトウェアの更新前のバージョンがＶｅｒ１．１以前であることを示し、２０７はソフトウェアをＶｅｒ１．１以前からＶｅｒ１．４に更新するためのプログラム更新データが保存されている。
【００１４】
図２（ｂ）にプログラム更新データのより具体的な構成を示す。Ｖｅｒ１．３用のプログラム更新データ２０３は、ヘッダ２０３１を先頭に更新後の不揮発性メモリの認証値を最後に配置し、データ退避用バッファセクタとして用いないセクタ、データ退避用バッファセクタとして用いるセクタの順に不揮発性メモリのセクタ単位に配置される。ヘッダ２０３１は、プログラム更新前のソフトウェアバージョン２０３１１と、プログラム更新時にデータ退避用バッファセクタと用いるセクタ番号２０３１２とプログラム更新データのヘッダが破壊されていない事を保証する為の認証値２０３１３によって構成される。セクタ２０３２は、セクタ番号２０３２１、セクタに対するデータが全文データか差分データかを示すデータ形式番号２０３２２、データブロックの個数２０３２３、ブロックの開始アドレス２０３２４、ブロックのデータ長２０３２５、ブロックのデータ２０３２６から構成される。
【００１５】
図３はプログラム更新データの作成方法を示したフローチャートである。Ｓ３０１において、更新前後のプログラムを比較し、更新する箇所のアドレスマップを作成する。Ｓ３０２において、更新後の各セクタに保存されるプログラムの全文データサイズＳｚ１と、先のＳ３０１により求めたアドレスマップの差分データを用いる場合の差分データサイズＳｚ２を求める。Ｓ３０３において、全文データを送信した時のプログラム更新にかかる時間を算出する。全文データを送信した時の時間Ｔａ（ｍｓ）は、不揮発性メモリを１度消去する時間Ｔｅ（ｍｓ）、全文データサイズＳｚ１（ｂｙｔｅ）、データ送信に必要な時間Ｔｗ（ｍｓ／ｂｙｔｅ）、データの書き込みに必要な時間Ｔｐ（ｍｓ／ｂｙｔｅ）、から下記の式（１）により算出される。
Ｔａ＝Ｔｅ＋Ｓｚ１×（Ｔｗ＋Ｔｐ）・・・（１）
Ｓ３０４において、差分データを送信した時のプログラム更新にかかる時間を算出する。差分データを用いたプログラムの更新は、まずデータ退避用バッファセクタのデータを消去する。そして、書き換え対象セクタのデータを退避用バッファセクタにコピーした後、書き換え対象セクタのデータを消去して、プログラム更新データとデータ退避用バッファセクタを更新することで行う。これより、差分データを送信した時の時間Ｔｂ（ｍｓ）は、不揮発性メモリを１度消去する時間Ｔｅ（ｍｓ）、差分データサイズＳｚ２（ｂｙｔｅ）、データ送信に必要な時間Ｔｗ（ｍｓ／ｂｙｔｅ）、データの書き込みに必要な時間Ｔｐ（ｍｓ／ｂｙｔｅ）、から下記の式（２）により算出される。
Ｔｂ＝２×Ｔｅ＋Ｔｃ×（２×Ｓｚ３−Ｓｚ２）＋Ｓｚ２×（Ｔｗ＋Ｔｐ）・・・（２）
Ｓ３０５において、先のＳ３０３及びＳ３０４で求めた、Ｔａ及びＴｂの比較を各セクタで行う。Ｔａ＜Ｔｂであれば、全文データを用いてプログラム更新データを作成し、Ｔａ＞Ｔｂであれば、差分データを用いてプログラム更新データを作成する。Ｓ３０６において、書き換えの必要なセクタの個数を求める。そして、各セクタの更新方法を確認する。いずれかのセクタの更新方法に差分データを用いる場合は、Ｓ３０７において、不揮発性メモリ１１１の最大セクタサイズのセクタの内でＴａ−Ｔｂが最小になるセクタを求め、そのセクタをデータ退避用バッファセクタ２０３１２とする。これは、データ退避用バッファセクタとして使用するセクタのデータの更新は、更新量によらず全データを受信して更新する必要があるためである。一方、データ退避用バッファセクタとして使用しないセクタの更新は、更新を行う差分データのみの通信で良い。つまり、データ退避用バッファセクタとして使用するセクタは最も更新データ量が多いセクタとすると、データ更新のための全体の通信量を少なくすることができ、データ更新時間の短縮に繋がる。いずれのセクタの更新方法も全文データを用いる場合は、Ｓ３０８において、プログラム更新データを作成する。
【００１６】
次に図４のフローチャートを用いて、プログラムの更新方法について説明する。Ｓ４０１において、制御ＣＰＵ１０５が被制御ＣＰＵ１０９のソフトウェアのバージョンを不揮発性メモリ１１１から読み出す事によって、プログラムの更新が開始される。Ｓ４０２において、プログラム更新データ出力装置１０１によりプログラム更新データ２０１が制御ＣＰＵ１０５に通信制御部１０４を用いて送信される。制御ＣＰＵ１０５は、プログラム更新データ２０１をＲＡＭ１０７に保存する。
【００１７】
Ｓ４０３において、制御ＣＰＵ１０５はＳ４０１で読み出した被制御ＣＰＵ１０９のソフトウェアのバージョンに応じて被制御ＣＰＵ１０９に送信するプログラム更新データを選択する。Ｓ４０４において、制御ＣＰＵ１０５はＳ４０３で選択したプログラム更新データを順次被制御ＣＰＵ１０９にシリアル通信制御部１０６を用いて送信する。被制御ＣＰＵ１０９は、シリアル通信制御部１０８を通してプログラム更新データを受信しＲＡＭ１１０に保存する。Ｓ４０５において、被制御ＣＰＵ１０９は、ＲＡＭ１１０に保存されたプログラム更新データを用いて、不揮発性メモリ１１１を更新する。Ｓ４０６において、プログラム更新作業が成功したかを確認し、成功した場合はプログラム更新作業を終了し、失敗した場合は、Ｓ４０６において、被制御ＣＰＵ１０９のソフトウェアのバージョンを再度読み出し、Ｓ４０３からプログラム更新作業をやり直す。
【００１８】
次に、図５のフローチャートを用いて、被制御ＣＰＵ１０９の不揮発性メモリ１１１を更新する方法について説明する。Ｓ４０８において、プログラム更新データ２０３のヘッダ部２０３１に保存されたデータ退避用バッファセクタ番号２０３１２を得る。Ｓ４０９において、被制御ＣＰＵ１０９は、各セクタのデータ２０３２、２０３３、２０３４を得る。さらに、セクタ番号２０３２１、セクタにおいてのデータ形式２０３２２を得る。Ｓ４１０において、プログラム更新データのデータ形式が全文データであるか差分データであるかを判断する。
【００１９】
データ形式が全文データである場合には、Ｓ４１１において、セクタ番号２０３２１に対応するセクタ内のデータを消去し、順次受信するプログラム更新データをセクタに書き込む。Ｓ４１２において、ソフトウェアのバージョンを０にする。データ形式が差分データである場合には、Ｓ４１３において、データ退避用バッファセクタ番号２０３１２に対応するセクタ内のデータを消去する。Ｓ４１４において、ソフトウェアのバージョンを０にする。Ｓ４１５において、更新するセクタ番号３０３２１に対応するセクタのデータをデータ退避用バッファセクタにコピーする。Ｓ４１６において、プログラムの更新を行うセクタ内のデータを消去する。Ｓ４１７において、Ｓ４１５において作成した更新前のプログラムデータと順次送信されるプログラム更新データを用いて、プログラムの更新を行うセクタにデータを書き込む。具体的には、プログラム更新データを受信していないアドレスのデータは、データ退避用バッファセクタから書き込みを行い、プログラム更新データを受信しているアドレスのデータは、ＲＡＭ１１０から書き込みを行う。Ｓ４１８において、プログラムの更新を行う全セクタが書き換えられているかの確認を行う。書き換えが終わっていない場合は、ステップＳ４０９に戻り、セクタの更新を続ける。
【００２０】
図６に差分データを用いてプログラムの更新を行う方法を図式化したものを示す。不揮発性メモリ１１１にはセクタ１、２、３があり、ここではセクタ１とセクタ２のプログラムを更新することとする。
【００２１】
６０１は、セクタ１、２、３に更新前のプログラムが保存されている状態である。６０２は、セクタ１をデータ退避用バッファセクタとして使用するため、セクタ１のデータを削除した状態である。６０３は、データを削除したセクタ１をデータ退避用バッファセクタとして使用して、セクタ２のデータをコピーする。そして、元々のセクタ２のデータを削除した状態である。６０４は、データを削除したセクタ２に、更新したプログラムを書き込む。具体的には、先にも説明したように、ＲＡＭ１１０に保持されたプログラム更新データのアドレスはＲＡＭから書き込み、プログラム更新データとして保持されていないアドレスはデータ退避用バッファセクタにコピーしたデータから書き込む。これをセクタ２のデータがすべて書き込まれるまで繰り返す。
【００２２】
６０５は、セクタ２のプログラムの更新が完了し、データ退避用バッファセクタとして使用されていたセクタ１のデータを削除した状態である。６０６は、セクタ１のプログラムを全文データにより更新している状態である。ＲＡＭ１１０は、セクタ１のプログラム更新データを受信すると、順次セクタ１に書き込む。これをセクタ１のデータがすべて書き込まれるまで繰り返す。６０７は、セクタ１、セクタ２共にプログラムの更新が行われた状態である。
【００２３】
このように、プログラムの更新の際にプログラムの更新量に応じて、差分データを送信することによって、全文データを送る場合よりデータの通信量を少なくすることができる。そのため、データの通信にかかる時間を削減することができるため、プログラムの更新の際に、全文データを用いるか差分データを用いるかを選択することによって、データの更新に必要な時間を短縮することができる。よって、プログラムの一部のみを更新するような場合には、更新しないプログラムに関しては通信する必要がないため、更新時間を短縮できる。
【００２４】
（第２の実施形態）
第１の実施形態では、大容量のＲＡＭ１０７を有する制御ＣＰＵ１０５からプログラム更新データが送信される場合について説明した。本実施形態では、大容量のＲＡＭを有しない制御ＣＰＵに接続されている場合について説明する。なお、第１の実施形態と同様の構成に関しては、本実施形態では同様に実現可能であることを述べ、ここでの詳しい説明は省略する。また、プログラム更新データは、第１の実施形態における図２と同様の構成を用いることができ、プログラム更新データの作成方法は、図３と同様の方法を用いることができるため、ここでの説明は省略する。
【００２５】
図７（ａ）に本実施形態の情報処理装置であるマルチＣＰＵシステムを示す。図７（ｂ）に不揮発性メモリ６１５の構成を示す。図７（ａ）を用いてマルチＣＰＵシステムについて説明する。６０１はプログラム更新データ出力装置、６０２は制御ＣＰＵを有するコントローラ、６０３は被制御ＭＡＩＮＣＰＵを有するコントローラ、６０４は被制御ＳＵＢＣＰＵを有するコントローラである。制御ＣＰＵを有するコントローラ６０２は制御ＣＰＵ６０６と不揮発性メモリ６１５より大容量のＲＡＭ６０８を有し、プログラム更新データ出力装置６０１と通信制御部６０５によって通信を行う。そして、シリアル通信制御部６０７によって被制御ＭＡＩＮＣＰＵを有するコントローラ６０３のシリアル通信制御部６０９と通信を行う。
【００２６】
被制御ＭＡＩＮＣＰＵを有するコントローラ６０３は、ＭＡＩＮＣＰＵ６１０と不揮発性メモリ６１５より小容量のＲＡＭ６１２を有する。そして、制御側ＣＰＵを有するコントローラ６０２とシリアル通信制御部６０９によってシリアル通信を行い、シリアル通信制御部６１１によって被制御ＳＵＢＣＰＵを有するコントローラ６０４のシリアル通信制御部６１３とシリアル通信を行う。被制御ＳＵＢＣＰＵを有するコントローラ６０４は、ＳＵＢＣＰＵ６１４と不揮発性メモリ６１５より小容量のＲＡＭ６１６を有する。そして、被制御ＭＡＩＮＣＰＵを有するコントローラ６０３とシリアル通信制御部６１３によってシリアル通信を行い、不揮発性メモリ６１５を更新する。なお、図７（ｂ）の不揮発性メモリ６１５の構成は、図１（ｂ）と同様であるためここでの説明は省略する。
【００２７】
図８のフローチャートを用いて、プログラムの更新方法について説明する。Ｓ８０１において、被制御ＭＡＩＮＣＰＵ６１０が被制御ＳＵＢＣＰＵ６１４のソフトウェアのバージョンを不揮発性メモリ６１５から読み出す。そして、制御ＣＰＵ６０６が被制御ＭＡＩＮＣＰＵ６１０から被制御ＳＵＢＣＰＵ６１４のソフトウェアのバージョンを読み出す事によって、プログラムの更新が開始される。Ｓ８０２において、プログラム更新データ出力装置６０１によりプログラム更新データ７０１が制御ＣＰＵ６０６に通信制御部６０７を用いて送信される。制御ＣＰＵ６０６は、プログラム更新データをＲＡＭ６０８に保存する。
【００２８】
Ｓ８０３において、制御ＣＰＵ６０６は、Ｓ８０１で読み出した被制御ＳＵＢＣＰＵ６１４のソフトウェアのバージョンに応じて、被制御ＭＡＩＮＣＰＵ６１０に送信するプログラム更新データを選択する。Ｓ８０４において、制御ＣＰＵ６０６はＳ８０３で選択したプログラム更新データ７０４を順次被制御ＭＡＩＮＣＰＵ６１０にシリアル通信制御部６０７を用いて送信する。被制御ＭＡＩＮＣＰＵ６１０は、シリアル通信制御部６０９を通してプログラム更新データを受信しＲＡＭ６１２に保存する。Ｓ８０５において、被制御ＭＡＩＮＣＰＵ６１０は、ＲＡＭ６１２に順次保存されるプログラム更新データを被制御ＳＵＢＣＰＵ６１４にシリアル通信制御部６１１を用いて送信する。被制御ＳＵＢＣＰＵ６１４はシリアル通信制御部６１３を通してプログラム更新データを受信しＲＡＭ６１６に保存する。
【００２９】
Ｓ８０６において、被制御ＳＵＢＣＰＵ６１４はＲＡＭ６１６に順次保存されるプログラム更新データを用いて、不揮発性メモリ６１５を更新する。Ｓ８０７において、プログラム更新作業が成功したかを確認し、成功した場合はプログラム更新作業を終了し、失敗した場合は、Ｓ８０８において、被制御ＳＵＢＣＰＵ６１４のソフトウェアのバージョンを再度読み出し、Ｓ８０４からプログラム更新作業をやり直す。なお、被制御ＳＵＢＣＵＰ６１４の不揮発性メモリ６１５を更新する方法は、第１の実施形態の図５で説明した方法と同様のため、ここでの説明は省略する。
【００３０】
このように、プログラム更新の際に、プログラム更新データを複数回通信しなければならない状況においては、データの通信に多くの時間がかかってしまう。そのような状況においても、全文データと差分データを使い分けることによって、プログラム更新データの通信量を少なくすることができるため、更新に必要な時間を短縮することができる。よって、プログラムの一部のみを更新するような場合には、更新しないプログラムに関しては通信する必要がないため、更新時間を短縮できる。
【００３１】
（第３の実施形態）
第１の実施形態及び第２の実施形態では、不揮発性メモリのあるセクタをデータ退避用バッファセクタとしてプログラムの更新を行う方法について説明した。このように、データ退避用バッファセクタを利用することで、更新プログラムの通信量を減らすことができ、更新時間の削減を行うことができるが、データ退避用バッファセクタを用いることで、不揮発性メモリ内のセクタ間で書き込み回数のばらつきが生じる。毎回同じセクタをデータ退避用バッファセクタとしてプログラムの更新を行っていると、データ退避用バッファセクタとしたセクタのみ書き込み回数が増えてしまう。一般に不揮発性メモリの書き込み回数には保証回数があるため、同じセクタに書き込みを続けていると、他のセクタよりも早く書き込み保証回数を超えてしまう可能性がある。本実施形態では、セクタの書き込み保証回数を考慮し、プログラムの更新を行う方法について説明する。
【００３２】
図９（ａ）に本実施形態の情報処理装置であるマルチＣＰＵシステムを示す。図９（ｂ）に不揮発性メモリ９１１の構成を示す。図９（ａ）のマルチＣＰＵシステムは先の第１の実施形態の図１（ａ）で説明した構成と同様のため、ここでの説明は省略する。
【００３３】
図９（ｂ）を用いて不揮発性メモリ９１１の構成について説明する。ここでは、先の第１の実施形態の図１（ｂ）と差異のある構成のみ説明する。プログラム更新対象セクタ９１１２、９１１３、９１１４は、夫々セクタの書き込み回数を記憶するカウンタ９１１５、９１１６、９１１７を有する。夫々のカウンタは、セクタに書き込みが行われる度に書き込み回数を１ずつインクリメントする。
【００３４】
図１０（ａ）に本実施形態でのプログラム更新に用いるプログラム更新データの一例を示す。図１０（ｂ）にプログラム更新データのより具体的な構成の一例を示す。ここでは、先の第１の実施形態で説明した図２（ａ）及び図２（ｂ）と差異のある構成について説明する。１００３、１００５はデータ退避用バッファセクタとして用いることが禁止されているセクタの番号を保持している。この１００３、１００５に番号が保持されているセクタは、データ退避用バッファセクタとして使用しないことでセクタの書き込み回数が偏ってしまうことを防ぐ。
【００３５】
図１１のフローチャートを用いて、データ退避用バッファセクタの決定方法を説明する。なお、プログラム更新データの作成方法は先の第１の実施形態の図３と同様である。また、図１１のフローチャートは図３のＳ３０７におけるデータ退避用バッファセクタの決定時に用いられるものである。
【００３６】
Ｓ３０７１において、現在までに各セクタにおいて行われた書き込みの回数を読み出す。Ｓ３０７２において、各セクタの書き込みの回数を比較し、書き込み回数が最少のセクタを選択する。Ｓ３０７３において、回数が最少のセクタをデータ退避用バッファセクタとしてプログラム更新した場合のΔｔと、Ｔａ−Ｔｂが最大になる場合のΔｔｍａｘとの比較を行う。Ｓ３０７３において、Δｔの方が大きい場合は、Ｓ３０７４において、選択されたセクタをデータ退避用バッファセクタの候補から外し、次に書き込み回数が少ないセクタを選択し、Ｓ３０７３に戻る。Ｓ３０７３において、Δｔの方が小さい場合は、Ｓ３０７５において、選択されたセクタをデータ退避用バッファセクタとする。Ｓ３０７６において、Ｓ３０７５でデータ退避用バッファセクタとして用いると決定したセクタの書き込み回数を、データ退避用バッファセクタとして使用した後の回数に書き替える。
【００３７】
図１２のフローチャートを用いて、プログラムの更新方法について説明する。なお、ここでは、先の第１の実施形態で説明した図４のフローチャートと差異のあるステップについて説明する。Ｓ１２０１において、被制御ＣＰＵのバージョンを読み出した後、Ｓ１２０２において、データ退避用バッファセクタとして使用禁止のセクタ番号を読み出す。被制御ＣＰＵ９０９は不揮発性メモリ９１１上の各セクタの書き込み回数を示すデータアドレス９１１５、９１１６、９１１７の値が規定値回数以上であったセクタは、データ退避用バッファセクタとしての使用を禁止する。書き込み回数が他のセクタより多いセクタはデータ退避用バッファセクタとして用いないとしたこれ以降の更新処理は、先の第１の実施形態の図４及び図５と同様であるためここでの説明は省略する。
【００３８】
このように、他のセクタよりも書き込み回数が多いセクタは、データ退避用バッファセクタとして用いないようにすることで、ひとつのセクタの書き込み回数が増えてしまい、不揮発性メモリの寿命が短縮してしまうことを防ぐことができる。また、先の実施形態と同様に、全文データを用いるか差分データを用いるかを選択することによって、データの更新に必要な時間を短縮することができる。よって、プログラムの一部のみを更新するような場合には、更新しないプログラムに関しては通信する必要がないため、更新時間を短縮できる。なお、先の実施形態で説明した更新データの多いセクタをデータ退避用バッファセクタとして用いるという条件と、本実施形態で説明した書き込み回数が多いセクタはデータ退避用バッファセクタとして用いないという条件を組み合わせることが可能である。例えば、更新データの最も多いセクタが書き込み回数の閾値を越えているときに、残りのセクタのうち書き込み回数が閾値を越えていないセクタの中で最も更新データの多いセクタをデータ退避用バッファセクタとして用いるということが可能である。
【符号の説明】
【００３９】
１０１  プログラム更新データ出力装置
１０２  制御ＣＰＵを有するコントローラ
１０３  被制御ＣＰＵを有するコントローラ
１０５  制御ＣＰＵ
１０７  大容量のＲＡＭ
１０９  被制御ＣＰＵ
１１０  小容量ＲＡＭ
１１１  不揮発性メモリ
１１１２、１１１３、１１１４  プログラム更新対象セクタ
【図１】
2011081561.tif 000003
【図２】
2011081561.tif 000004
【図３】
2011081561.tif 000005
【図４】
2011081561.tif 000006
【図５】
2011081561.tif 000007
【図６】
2011081561.tif 000008
【図７】
2011081561.tif 000009
【図８】
2011081561.tif 000010
【図９】
2011081561.tif 000011
【図１０】
2011081561.tif 000012
【図１１】
2011081561.tif 000013
【図１２】
2011081561.tif 000014