(57)【特許請求の範囲】
【請求項１】
コンピュータが、
複数のセクションからなるプログラムが複数記憶されている記憶装置に対し、複数の前記プログラムのうちに複数のプロセッサにより実行される異なるメモリアドレスに配置される同じ内容のプログラムがある場合、前記プログラムの各々の中から共通部分の候補を抽出するステップと、
抽出された前記共通部分の候補を互いに比較して差分の情報を生成するステップと、
前記共通部分の情報量と前記差分の情報量の和が元の情報量よりも少ないときに、前記共通部分の情報と前記差分の情報をＲＯＭ格納データとして出力し、前記共通部分の情報量と前記差分の情報量の和が元の情報量以上のときに、元の情報をＲＯＭ格納データとして出力するステップと、
を含むことを特徴とするＲＯＭ格納データ生成方法。
【請求項２】
共通部分の候補を抽出する際に、各セクションの情報からセクション名を取得し、同じセクション名の領域を共通部分の候補とすることを特徴とする請求項１に記載のＲＯＭ格納データ生成方法。
【請求項３】
共通部分の候補を抽出する際に、プログラムのリンク時のリンケージエディタ出力情報からセクション名を取得し、同じセクション名の領域を共通部分の候補とすることを特徴とする請求項１に記載のＲＯＭ格納データ生成方法。
【請求項４】
共通部分の候補を抽出する際に、ユーザにより指定された領域を共通部分の候補とすることを特徴とする請求項１に記載のＲＯＭ格納データ生成方法。
【請求項５】
共通部分の候補を抽出する際に、バイナリデータ全体を同じサイズの複数の領域に分割し、各領域を共通部分の候補とすることを特徴とする請求項１に記載のＲＯＭ格納データ生成方法。
【請求項６】
共通部分の候補を抽出する際に、データの連続性に基づいてバイナリデータ全体を複数の領域に分割し、同じまたは同じようなサイズの領域を共通部分の候補とすることを特徴とする請求項１に記載のＲＯＭ格納データ生成方法。
【請求項７】
前記差分の情報として、前記共通部分の候補間の差分データと、前記差分データの参照位置を示すアドレスを生成することを特徴とする請求項１に記載のＲＯＭ格納データ生成方法。
【請求項８】
前記プログラムは、複数のプロセッサにより共有されるメモリに展開されて複数の前記プロセッサにより同時に実行される複数のプログラムを含んでおり、異なるプロセッサにより実行されるプログラム同士で共通部分の候補を抽出することを特徴とする請求項１〜７のいずれか一つに記載のＲＯＭ格納データ生成方法。
【請求項９】
前記コンピュータに、前記請求項１〜８のいずれか一つに記載のＲＯＭ格納データ生成方法を実行させるためのＲＯＭ格納データ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リードオンリメモリ（ＲＯＭ）に格納されるデータを生成するＲＯＭ格納データ生成方法およびその方法をコンピュータに実行させるためのＲＯＭ格納データ生成プログラムに関するものである。
【背景技術】
【０００２】
従来、複数のプロセッサを内蔵した組み込み非対称型マルチプロセッサシステムでは、オペレーティングシステム（ＯＳ）やアプリケーションプログラムは、それらを実行するプロセッサごとに、ＲＯＭの異なるメモリアドレス領域に格納されている。例えば、第１のプロセッサが、ＲＯＭの第１のセクションと第２のセクションに格納されたＯＳやプログラムを実行するとする。
【０００３】
また、第２のプロセッサが、ＲＯＭの第３のセクションと第４のセクションに格納されたＯＳやプログラムを実行するとする。このような場合、プロセッサごとのプログラムのバイナリイメージが、分岐先アドレスやデータのポインタの値などの一部のみが異なり、残りのデータや処理ルーチンが殆ど同じになることがある。
【０００４】
例えば、上記例において、第１のセクションと第３のセクションが殆ど同じであるとする。このような場合でも、従来は、図２３に示すように、ＲＯＭ１に、ブートローダ（Ｂｏｏｔ  Ｌｏａｄｅｒ）２、第１のセクション（Ｓｅｃ１）３、第２のセクション（Ｓｅｃ２）４、第３のセクション（Ｓｅｃ３）５、第４のセクション（Ｓｅｃ４）６、・・・・というように、各セクションは、プロセッサごとに格納される。
【０００５】
そして、マルチプロセッサシステムが動作する際には、ＲＯＭ１から各プロセッサ用のＯＳやアプリケーションプログラムが読み出され、作業用のメインメモリに展開される。単一のプロセッサが複数のＯＳやプログラムを実行するシングルプロセッサシステムにおいても同様である。
【０００６】
ところで、マルチプロセッサシステムにおけるブートローディング方式に関して、少なくとも１個のローダＲＯＭを共有し、電源投入時に該ローダＲＯＭのプログラムによって各プロセッサの揮発性メモリにプログラムをダウンロードするように、構成したことを特徴とする方式が公知である（例えば、特許文献１参照。）。この方式では、ローダＲＯＭのプログラムは、各ボードに共通の部分と各ボードによって異なる部分から構成されている。
【０００７】
また、共通部および機能の異なる複数の付加部からなるＯＳを実行するマイクロコンピュータシステムが公知である（例えば、特許文献２参照。）。このシステムでは、複数のＯＳの共通部を格納するＲＯＭと、複数のＯＳの付加部をそれぞれ格納するＲＯＭ群と、複数のＯＳの付加部から一つの付加部を選択するためのスイッチと、ＯＳの共通部およびスイッチにより選択されたＯＳの付加部をそれぞれ前記ＲＯＭおよび前記ＲＯＭ群から読み出して処理用メモリに格納する手段が設けられている。
【０００８】
【特許文献１】特開昭６２−２７２３４１号公報
【特許文献２】特開昭６３−５８５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したように、マルチプロセッサシステムにおいて、ＲＯＭに、各プロセッサ上で動作する複数のＯＳやアプリケーションプログラムをプロセッサごとに単純に格納すると、大容量のＲＯＭが必要となる。そのため、マルチプロセッサシステムを構成するシステムボードのコストが増大し、このボードが組み込まれたコンピュータや家庭電化製品などの機器が高価になってしまう。従って、これらの機器を安価に提供するためには、システムボードのコストを下げる必要があり、そのためには、ＲＯＭに格納される複数のＯＳやアプリケーションプログラムの容量を削減する必要がある。
【００１０】
シングルプロセッサシステムを構成するシステムボードの場合も同様である。また、上記特許文献１には、ローダＲＯＭのプログラムの、各ボードに共通する部分のデータと、各ボードによって異なる部分のデータをどのようにして生成するかということについては記載されていない。同様に、上記特許文献２には、複数のＯＳの共通部と複数の付加部をどのようにして生成するかということについては記載されていない。
【００１１】
本発明は、上記に鑑みてなされたものであって、システムボードに設けられるＲＯＭの容量を削減することができるＲＯＭ格納データ生成方法およびＲＯＭ格納データ生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、複数のセクションからなるプログラムの中から共通部分の候補を抽出し、その抽出された共通部分の候補を互いに比較して差分の情報を生成することを特徴とする。そして、共通部分の情報量と差分の情報量の和が元の情報量よりも少なければ、共通部分の情報と差分の情報をＲＯＭ格納データとして出力する。共通部分の情報量と差分の情報量の和が元の情報量よりも多ければ、共通部分の情報と差分の情報に分けずに、元の情報をそのままＲＯＭ格納データとして出力する。
【００１３】
共通部分の候補を抽出する方法として、以下の５つの方法がある。第１の方法は、各セクションの情報からセクション名を取得し、同じセクション名の領域を共通部分の候補とする方法である。第２の方法は、プログラムのリンク時のリンケージエディタ出力情報からセクション名を取得し、同じセクション名の領域を共通部分の候補とする方法である。第３の方法は、ユーザにより指定された領域を共通部分の候補とする方法である。第４の方法は、バイナリデータ全体を同じサイズの複数の領域に分割し、各領域を共通部分の候補とする方法である。第５の方法は、データの連続性に基づいてバイナリデータ全体を複数の領域に分割し、同じまたは同じようなサイズの領域を共通部分の候補とする方法である。
【００１４】
上記第１から第５の抽出方法のうちの２つ以上を組み合わせて、共通部分の候補を抽出するようにしてもよい。ここで、差分の情報として、アドレス全体と固定長の差分データを生成してもよいし、固定長のオフセットアドレスと固定長の差分データを生成するようにしてもよい。また、共通部分の情報と差分の情報を圧縮アルゴリズムによって圧縮してからＲＯＭ格納データとして出力するようにしてもよい。
【００１５】
本発明がマルチプロセッサシステムに適用される場合には、ＲＯＭに格納されるプログラムは、複数のプロセッサにより共有されるメモリに展開されて複数のプロセッサにより同時に実行される複数のプログラムを含んでいる。この場合、異なるプロセッサにより実行されるプログラム同士で共通部分の候補が抽出される。これは、プロセッサごとのプログラムやデータのバイナリイメージが、分岐先アドレスやデータのポインタの値などの一部が異なるだけで、残りのデータや処理ルーチンの殆どが同じになることがあるからである。本発明がシングルプロセッサシステムに適用される場合には、ＲＯＭに格納されるプログラムは、単一のプロセッサにより実行される複数のプログラムを含んでおり、異なるプログラム同士で共通部分の候補が抽出される。
【発明の効果】
【００１６】
本発明にかかるＲＯＭ格納データ生成方法およびＲＯＭ格納データ生成プログラムは、システムボードに設けられるＲＯＭの容量を削減することができるという効果を奏する。従って、このシステムボードが組み込まれたコンピュータや家庭電化製品などの機器を安価に提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明にかかるＲＯＭ格納データ生成方法およびＲＯＭ格納データ生成プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。本明細書では、ＲＯＭには、製造段階で書き込まれたプログラム等を後に書き換えることができないマスクＲＯＭだけでなく、製造段階で書き込まれたプログラム等の一部または全部を書き換えることができる書き換え可能な不揮発性メモリ、例えばＥＰＲＯＭやフラッシュメモリ等のＥＥＰＲＯＭが含まれる。
【００１８】
図１は、本発明にかかるＲＯＭ格納データ生成方法の実施例のフローチャートである。図１に示すように、まず、マルチプロセッサシステムの各プロセッサが実行する実行形式ロードモジュールから共通部分の候補を抽出する（ステップＳ１）。この候補の抽出方法の詳細については、後述する。ついで、抽出された共通部分の候補同士で、それぞれの情報をバイナリ比較する（ステップＳ２）。そして、比較された共通部分の候補同士の差分の情報を作成する（ステップＳ３）。なお、図１では、記載を簡略化するため、共通部分Ｃおよび差分Ｄとしている。
【００１９】
次いで、共通部分の情報と差分の情報を足したものの情報量が、元の情報の総和の情報量よりも少ないか否かを判断する（ステップＳ４）。その結果、少ない場合（ステップＳ４：Ｙｅｓ）には、共通部分の情報と差分の情報を復元するための展開ルーチンの情報を作成する（ステップＳ５）。次いで、共通部分の情報、差分の情報および展開ルーチンの情報（各情報）を圧縮アルゴリズムによって圧縮するか否かを判断する（ステップＳ６）。圧縮する場合（ステップＳ６：Ｙｅｓ）には、それらの情報を圧縮する（ステップＳ７）。その際、既存の圧縮アルゴリズムを用いることができる。
【００２０】
次いで、圧縮された共通部分の情報、差分の情報および展開ルーチンの情報を出力し（ステップＳ８）、終了する。一方、ステップＳ６で圧縮しない場合（ステップＳ６：Ｎｏ）には、共通部分の情報、差分の情報および展開ルーチンの情報をそのままを出力し（ステップＳ８）、終了する。また、ステップＳ４において、共通部分の情報と差分の情報を足したものの情報量が、元の情報の総和の情報量よりも多い場合（ステップＳ４：Ｎｏ）には、元の情報をそのまま出力し（ステップＳ９）、終了する。
【００２１】
ステップＳ８またはステップＳ９で出力された共通部分の情報、差分の情報および展開ルーチンの情報、または元の情報は、システムボードに搭載されるＲＯＭまたはシステムボードに搭載されたＲＯＭに書き込まれる。図２は、共通部分の情報、差分の情報および展開ルーチンの情報が書き込まれたＲＯＭの格納状態を模式的に示す図である。図２３に示す従来の格納状態では、第１のセクション３と第３のセクション５が殆ど同じであるにもかかわらず、それぞれのセクションが独立してＲＯＭ１に格納されている。それに対して、図２に示す実施例によれば、ＲＯＭ１に、ブートローダ２、第１のセクション３、第２のセクション４、第４のセクション６、第１のセクション３とこれに類似の第３のセクションとの差分の情報７、・・・・というように格納される。
【００２２】
次に、共通部分の候補の抽出方法について説明する。抽出方法については、特に限定しないが、次の５つの方法がある。図３は、共通部分の候補を抽出する第１の方法のフローチャートである。図３に示すように、第１の方法では、まず、各プロセッサが実行するロードモジュール内のセクション情報から、セクション名を取得する（ステップＳ１１１）。次いで、同じセクション名の領域を共通部分の候補として登録する（ステップＳ１１２）。
【００２３】
同じセクション名の領域を見つけるには、例えば、第１のプロセッサが実行するロードモジュール内のあるセクションの名称と同じ名称のセクションが、第２のプロセッサ、第３のプロセッサ、・・・・がそれぞれ実行するロードモジュール内にあるか否かを検索すればよい。ここで、セクションとは、プログラムの命令コード部、データ部、またはそれらがさらに詳細に分割されたルーチンの集合のことである。
【００２４】
図４は、共通部分の候補を抽出する第２の方法のフローチャートであり、図５は、この第２の方法を説明する図である。図４および図５に示すように、第２の方法では、まず、各プロセッサのプログラムをリンクさせるときに、バイナリデータ（ＰＥ＃０、ＰＥ＃１）のリンケージエディタ（リンカ）から出力されるプロセッサごとのリンカマップリストの情報１１，１２を用いて、それぞれのセクション情報１３，１４を取得し、それぞれのセクション名を取得する（ステップＳ１２１）。次いで、同じセクション名の領域を共通部分の候補として登録する（ステップＳ１２２）。
【００２５】
例えば、第１のプロセッサのリンカからの出力情報から得たセクション情報の例を図６に示す。また、図７に、第２のプロセッサのリンカからの出力情報から得たセクション情報の例を示す。両図に示す例の場合、「ｋｅｒｎｅｌ＿ｃｏｄｅ＿ｓｃ」や「ＬＩＢＣＯＤＥ＿Ａ」というセクション名が共通して含まれている。従って、これらの名称のセクションを共通部分の候補とする。
【００２６】
図８は、共通部分の候補を抽出する第３の方法のフローチャートであり、図９は、この第３の方法を説明する図である。図８および図９に示すように、第３の方法では、まず、ユーザが指定した情報を取得する（ステップＳ１３１）。そして、そのユーザの指定領域１５，１６，１７，１８を共通部分の候補として登録する（ステップＳ１３２）。図９に示す例では、ユーザ指定領域１５とユーザ指定領域１６が共通部分の候補の一つとなり、ユーザ指定領域１７とユーザ指定領域１８が共通部分の候補の一つとなる。
【００２７】
図１０は、共通部分の候補を抽出する第４の方法のフローチャートであり、図１１は、この第４の方法を説明する図である。図１０および図１１に示すように、第４の方法では、まず、各プロセッサのプログラムのバイナリデータの一部または全部を同じサイズの複数の領域に自動的に分割する（ステップＳ１４１）。そして、分割された各領域を共通部分の候補として登録する（ステップＳ１４２）。
【００２８】
図１１に示す例では、第１のプロセッサのプログラムのバイナリデータ（ＰＥ＃０）１９がＰＥ０−Ｂ１、ＰＥ０−Ｂ２、ＰＥ０−Ｂ３、ＰＥ０−Ｂ４、ＰＥ０−Ｂ５およびＰＥ０−Ｂ６に分割されており、第２のプロセッサのプログラムのバイナリデータ（ＰＥ＃１）２０がＰＥ１−Ｂ１、ＰＥ１−Ｂ２、ＰＥ１−Ｂ３、ＰＥ１−Ｂ４、ＰＥ１−Ｂ５およびＰＥ１−Ｂ６に分割されている。この場合、ＰＥ０−Ｂ１とＰＥ１−Ｂ１が共通部分の候補の一つとなり、ＰＥ０−Ｂ２とＰＥ１−Ｂ２が共通部分の候補の一つとなる。ＰＥ０−Ｂ３とＰＥ１−Ｂ３以降についても同様である。
【００２９】
図１２は、共通部分の候補を抽出する第５の方法のフローチャートであり、図１３は、この第５の方法を説明する図である。図１２および図１３に示すように、第５の方法では、まず、バイナリデータをデータの連続性に基づいて複数の領域に分割する（ステップＳ１５１）。具体的には、各プロセッサのプログラムのバイナリデータの一部または全部を、そのバイナリデータの内部の情報が格納されているアドレスに着目し、連続してデータが入っている領域ごとに分割する。そして、分割された各領域のサイズが同じかまたは同じような領域を共通部分の候補として登録する（ステップＳ１５２）。
【００３０】
図１３に示す例では、第１のプロセッサのプログラムのバイナリデータ（ＰＥ＃０）１９がＰＥ０−Ｐ１、ＰＥ０−Ｐ２、ＰＥ０−Ｐ３およびＰＥ０−Ｐ４に分割されており、第２のプロセッサのプログラムのバイナリデータ（ＰＥ＃１）２０がＰＥ１−Ｐ１、ＰＥ１−Ｐ２およびＰＥ１−Ｐ３に分割されている。そして、ＰＥ０−Ｐ１とＰＥ１−Ｐ１は、同じようなサイズである。また、ＰＥ０−Ｐ４とＰＥ１−Ｐ３は、同じようなサイズである。この場合、ＰＥ０−Ｐ１とＰＥ１−Ｐ１が共通部分の候補の一つとなり、ＰＥ０−Ｐ４とＰＥ１−Ｐ３が共通部分の候補の一つとなる。
【００３１】
なお、上述した第１〜第５の方法のうちの２つ以上を組み合わせて、共通部分の候補を抽出するようにしてもよい。例えば、第３の方法とそれ以外の方法を組み合わせる場合には、第３の方法によりユーザが指定した領域を優先して共通部分の候補とする。そして、ユーザが指定した領域を除く残りの領域に対して、第１の方法、第２の方法、第４の方法または第５の方法を適用して共通部分の候補を登録する。
【００３２】
次に、元の情報から生成された共通部分の情報と差分の情報のデータ構造の一例について説明する。図１４は、元の情報のデータ構造の一例を示す図であり、図１５は、図１４の元の情報から生成された共通部分の情報と差分の情報のデータ構造の一例を示す図である。例えば、図１４に示すように、第１のセクション３と第３のセクション５が殆ど同じであり、共通部分の候補であるとする。第１のセクション３および第３のセクション５のそれぞれの先頭アドレスをＢ１およびＢ２とする。
【００３３】
また、第１のセクション３および第３のセクション５において、それぞれの先頭アドレスＢ１およびＢ２から、第１のセクション３のアドレスＡｄｄｒ１および第３のセクション５のアドレスＡｄｄｒ２の先頭までのオフセットアドレスをＡ１とする。同様に、第１のセクション３および第３のセクション５において、それぞれの先頭アドレスＢ１およびＢ２から、第１のセクション３のデータＤａｔａ１および第３のセクション５のデータＤａｔａ２の先頭までのオフセットアドレスをＡ２とする。
【００３４】
この場合、本実施例によれば、図１５に示すように、第１のセクション３が共通部分の情報となる。従って、第１のセクション３については、先頭アドレスがＢ１であり、アドレスＡｄｄｒ１およびデータＤａｔａ１の先頭までのオフセットアドレスは、それぞれＡ１およびＡ２である。そして、第１のセクション３に対する第３のセクション５の差分の情報７として、先頭アドレスＢ１からのオフセットアドレスＡ１およびＡ２を先頭とするアドレスおよびデータを、それぞれＡｄｄｒ２およびＤａｔａ２にするという情報が付加される。
【００３５】
次に、差分の情報のデータ構造の具体例について説明する。図１６〜図２２は、差分の情報の詳細なデータ構造の一例を示す図である。図１６に示す例では、差分の情報７は、絶対アドレスのアドレス全体２１と１バイトのデータ（差分データ）２２で構成されている。図１７に示す例では、差分の情報７は、アドレス全体２１と２バイトのデータ（差分データ）２３で構成されている。図１８に示す例では、差分の情報７は、アドレス全体２１と４バイトのデータ（差分データ）２４で構成されている。
【００３６】
また、図１９に示す例では、差分の情報７は、４バイトのオフセットアドレス２５と４バイトのデータ２４で構成されている。図２０に示す例では、差分の情報７は、３バイトのオフセットアドレス２６と１バイトのデータ２２で構成されている。図２１に示す例では、差分の情報７は、２バイトのオフセットアドレス２７と２バイトのデータ２３で構成されている。図２２に示す例では、差分の情報７は、１バイトのオフセットアドレス２８と１バイトのデータ２２で構成されている。なお、アドレスのバイト数やデータのバイト数は、ここに例示したものに限らない。
【００３７】
以上説明したように、実施例によれば、類似したセクションの情報を共通部分の情報とそれに対する差分の情報に再構成するので、ＲＯＭに格納されるプログラム等の容量を削減することができる。従って、コンピュータや家庭電化製品等に組み込まれるシステムボードのＲＯＭの必要容量を削減することができる。それによって、このシステムボードが組み込まれた機器を安価に提供することができる。なお、本発明がシングルプロセッサシステムに適用される場合には、ＲＯＭに格納されるプログラムは、単一のプロセッサにより実行される複数のプログラムを含んでおり、異なるプログラム同士で共通部分の候補が抽出される。
【００３８】
なお、本実施の形態で説明したＲＯＭ格納データ生成方法は、予め用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。上述した実施の形態に関し、さらに以下の付記を開示する。
【００３９】
（付記１）複数のセクションからなるプログラムの中から共通部分の候補を抽出するステップと、抽出された前記共通部分の候補を互いに比較して差分の情報を生成するステップと、前記共通部分の情報量と前記差分の情報量の和が元の情報量よりも少ないときに、前記共通部分の情報と前記差分の情報をＲＯＭ格納データとして出力するステップと、を含むことを特徴とするＲＯＭ格納データ生成方法。
【００４０】
（付記２）共通部分の候補を抽出する際に、各セクションの情報からセクション名を取得し、同じセクション名の領域を共通部分の候補とすることを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４１】
（付記３）共通部分の候補を抽出する際に、プログラムのリンク時のリンケージエディタ出力情報からセクション名を取得し、同じセクション名の領域を共通部分の候補とすることを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４２】
（付記４）共通部分の候補を抽出する際に、ユーザにより指定された領域を共通部分の候補とすることを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４３】
（付記５）共通部分の候補を抽出する際に、バイナリデータ全体を同じサイズの複数の領域に分割し、各領域を共通部分の候補とすることを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４４】
（付記６）共通部分の候補を抽出する際に、データの連続性に基づいてバイナリデータ全体を複数の領域に分割し、同じまたは同じようなサイズの領域を共通部分の候補とすることを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４５】
（付記７）前記差分の情報として、アドレス全体と固定長の差分データを生成することを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４６】
（付記８）前記差分の情報として、固定長のオフセットアドレスと固定長の差分データを生成することを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４７】
（付記９）前記共通部分の情報と前記差分の情報をＲＯＭ格納データとして出力する際に、前記共通部分の情報と前記差分の情報を圧縮アルゴリズムによって圧縮してから出力することを特徴とする付記１に記載のＲＯＭ格納データ生成方法。
【００４８】
（付記１０）前記プログラムは、複数のプロセッサにより共有されるメモリに展開されて複数の前記プロセッサにより同時に実行される複数のプログラムを含んでおり、異なるプロセッサにより実行されるプログラム同士で共通部分の候補を抽出することを特徴とする付記１〜９のいずれか一つに記載のＲＯＭ格納データ生成方法。
【００４９】
（付記１１）前記プログラムは、単一のプロセッサにより実行される複数のプログラムを含んでおり、異なるプログラム同士で共通部分の候補を抽出することを特徴とする付記１〜９のいずれか一つに記載のＲＯＭ格納データ生成方法。
【００５０】
（付記１２）コンピュータに、前記付記１〜１１のいずれか一つに記載のＲＯＭ格納データ生成方法を実行させるためのＲＯＭ格納データ生成プログラム。
【産業上の利用可能性】
【００５１】
以上のように、本発明にかかるＲＯＭ格納データ生成方法およびＲＯＭ格納データ生成プログラムは、マルチプロセッサやシングルプロセッサが組み込まれる機器に有用であり、特に、コンピュータ、コンピュータの周辺機または家庭電化製品などに適している。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明にかかるＲＯＭ格納データ生成方法の実施例のフローチャートである。
【図２】図２は、本発明にかかるＲＯＭ格納データ生成方法により生成された情報が書き込まれたＲＯＭの格納状態を模式的に示す図である。
【図３】図３は、本発明にかかるＲＯＭ格納データ生成方法の共通部分の候補を抽出する第１の方法のフローチャートである。
【図４】図４は、本発明にかかるＲＯＭ格納データ生成方法の共通部分の候補を抽出する第２の方法のフローチャートである。
【図５】図５は、第２の方法を説明する図である。
【図６】図６は、第２の方法により共通部分の候補を抽出する際のリンカ出力情報から得たセクション情報の一例を示す図である。
【図７】図７は、第２の方法により共通部分の候補を抽出する際のリンカ出力情報から得たセクション情報の他の例を示す図である。
【図８】図８は、本発明にかかるＲＯＭ格納データ生成方法の共通部分の候補を抽出する第３の方法のフローチャートである。
【図９】図９は、第３の方法を説明する図である。
【図１０】図１０は、本発明にかかるＲＯＭ格納データ生成方法の共通部分の候補を抽出する第４の方法のフローチャートである。
【図１１】図１１は、第４の方法を説明する図である。
【図１２】図１２は、本発明にかかるＲＯＭ格納データ生成方法の共通部分の候補を抽出する第５の方法のフローチャートである。
【図１３】図１３は、第５の方法を説明する図である。
【図１４】図１４は、元の情報のデータ構造の一例を示す図である。
【図１５】図１５は、図１４に示す元の情報から生成された共通部分の情報と差分の情報のデータ構造の一例を示す図である。
【図１６】図１６は、差分の情報の詳細なデータ構造の一例を示す図である。
【図１７】図１７は、差分の情報の詳細なデータ構造の一例を示す図である。
【図１８】図１８は、差分の情報の詳細なデータ構造の一例を示す図である。
【図１９】図１９は、差分の情報の詳細なデータ構造の一例を示す図である。
【図２０】図２０は、差分の情報の詳細なデータ構造の一例を示す図である。
【図２１】図２１は、差分の情報の詳細なデータ構造の一例を示す図である。
【図２２】図２２は、差分の情報の詳細なデータ構造の一例を示す図である。
【図２３】図２３は、従来のＲＯＭの格納状態を模式的に示す図である。
【符号の説明】
【００５３】
ＰＥ０−Ｂ１〜ＰＥ０−Ｂ６，ＰＥ１−Ｂ１〜ＰＥ１−Ｂ６  同じサイズに分割された領域
ＰＥ０−Ｐ１〜ＰＥ０−Ｐ４，ＰＥ１−Ｐ１〜ＰＥ１−Ｐ３  データの連続性に基づいて分割された領域
１  ＲＯＭ
３，４，５，６  セクション
７  差分の情報
１１，１２  リンケージエディタ出力情報
１５，１６，１７，１８  ユーザ指定領域
１９，２０  バイナリデータ
２１  アドレス全体
２２，２３，２４  差分データ
２５，２６，２７，２８  オフセットアドレス
【図１】
0005141551.tif 000002
【図２】
0005141551.tif 000003
【図３】
0005141551.tif 000004
【図４】
0005141551.tif 000005
【図５】
0005141551.tif 000006
【図６】
0005141551.tif 000007
【図７】
0005141551.tif 000008
【図８】
0005141551.tif 000009
【図９】
0005141551.tif 000010
【図１０】
0005141551.tif 000011
【図１１】
0005141551.tif 000012
【図１２】
0005141551.tif 000013
【図１３】
0005141551.tif 000014
【図１４】
0005141551.tif 000015
【図１５】
0005141551.tif 000016
【図１６】
0005141551.tif 000017
【図１７】
0005141551.tif 000018
【図１８】
0005141551.tif 000019
【図１９】
0005141551.tif 000020
【図２０】
0005141551.tif 000021
【図２１】
0005141551.tif 000022
【図２２】
0005141551.tif 000023
【図２３】
0005141551.tif 000024