(57)【要約】      （修正有）【課題】互いに関連性の高いモジュールを隣接させてメモリ上に配置する配置順を決定して実行ファイルを作成することによって、該メモリを省電力化する。【解決手段】複数のモジュールを含むプログラムに対して、互いに関連性の高い順にモジュールが配置されるように配置順を決定する配置決定手段（Ｓ１２）と、前記プログラムのオブジェクトをリンク（Ｓ１４）することによって、該プログラムの実行ファイル７４ａを作成すると共に、該プログラムの前記複数のモジュールを電圧制御されるメモリ上の複数の細分化領域への、前記配置順に基づく配置によるメモリマップ７５ａを出力するリンク手段（Ｓ１４）とを有する実行ファイル作成装置により達成される。【選択図】図４
2010146181.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを含むプログラムに対して、互いに関連性の高い順にモジュールが配置されるように配置順を決定する配置決定手段と、
前記プログラムのオブジェクトをリンクすることによって、該プログラムの実行ファイルを作成すると共に、該プログラムの前記複数のモジュールを電圧制御されるメモリ上の複数の細分化領域への、前記配置順に基づく配置によるメモリマップを出力するリンク手段とを有する実行ファイル作成装置。
【請求項２】
前記配置決定手段は、
前記プログラムのソースファイルをコンパイルすることによって出力されるアセンブリファイルから、前記モジュールへとアクセスする命令文を静的に抽出する静的命令文抽出手段と、
前記静的に抽出した命令文をモジュール毎にカウントした値を前記関連性の高さとし、関連性の高い順に並べ替える第１の並替手段とを有する請求項１記載の実行ファイル作成装置。
【請求項３】
前記配置決定手段は、
作成済みの前記プログラムの実行ファイルを実行させることによって、前記モジュールへとアクセスする命令文を動的に抽出する動的命令文抽出手段と、
前記動的に抽出した命令文をモジュール毎にカウントした値を前記関連性の高さとし、関連性の高い順に並べ替える第２の並替手段とを有する請求項１記載の実行ファイル作成装置。
【請求項４】
前記リンク手段は、前記抽出した命令文で呼び出されるモジュールと該モジュールが配置される１以上の前記細分化領域とを対応付けた対応マップを出力し、
前記実行ファイル作成装置は、更に、
前記対応マップを参照することによって、前記プログラムのソースファイルに前記複数の細分化領域に対するメモリ電圧制御に係るコードを組み込むメモリ電圧制御組込手段と、
前記電圧制御に係るコードが組み込まれた前記ソースコードをコンパイルし、前記リンク手段によってリンクするコンパイル・リンク手段とを有する請求項１乃至３のいずれか一項記載の実行ファイル作成装置。
【請求項５】
前記プログラムのソースファイルにおいて前記細分化領域に対するメモリ電圧制御を行う位置にダミーソースコードを挿入するダミーソースコード挿入手段と、
前記ダミーソースコードが挿入された前記ソースファイルをコンパイルし、前記リンク手段によってリンクする第一コンパイル及びリンク手段と、
前記ソースファイルに挿入された前記ダミーソースコードを前記メモリ電圧制御に係るコードに置き換えるコード置換手段と、
前記第一コンパイル及びリンク手段によって出力された前記ダミーソースコードを含んだ場合のメモリマップを用いて、前記コードの置換位置に応じたメモリ電圧制御するための電圧制御テーブルを作成する電圧制御テーブル作成手段と、
前記コード置換手段によって置き換えられた前記ソースコードと前記電圧制御テーブル作成手段によって作成された電圧制御テーブルとをコンパイルし、前記リンク手段によってリンクする第二コンパイル及びリンク手段とを有する請求項１乃至３のいずれか一項記載の実行ファイル作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いに関連性の高いモジュールを隣接させてメモリ上に配置する配置順を決定して実行ファイルを作成することによって、該メモリを省電力化するようにした実行ファイル作成装置に関する。
【背景技術】
【０００２】
従来より、半導体装置の高性能化及び高機能化を実現することによって、情報処理機能を高度に備えた種々の装置が開発されてきた。その一方で、消費電力や待機電力を低減させて低電力化させることが、半導体装置の性能を維持する上でも、また、バッテリ駆動する装置においても重要な課題となってきた。
【０００３】
複数のメモリ部に対して発行されたメモリ獲得要求に対して、データサイズに応じて適正な１つ以上のメモリ部を割り当ててデータを保持するとともに、割り当てたメモリ部のみに電源を供給することが提案されている。
【０００４】
また、不揮発性メモリで複数のバンクを連続的に動作させるため、あるバンクがビジーサイクル（活性）にあるときに、他のバンクをチップディセーブル（低消費電力）状態にして、次のアクセスのためのアクセス情報を発行するようにしたり、複数のバンクに分散記憶されている所定の処理モードで使用するデータを一つのバンクに再配置し、残りのバンクを省電力モードに移行させることが提案されている。
【特許文献１】特開２００５−１９６５４５号公報
【特許文献２】特開２００５−２２２３１５号公報
【特許文献３】特開２００４−２７２４４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、メモリ部の低電力化を実現するためのアクセスしている記憶領域とアクセスしていない記憶領域とに対するメモリ電圧制御の頻度が増加したり、また、電圧の切り換え時には目標とする電圧に達するまで時間を要することなどによって、処理性能を十分に発揮できないという問題がある。
【課題を解決するための手段】
【０００６】
開示の実行ファイル作成装置は、複数のモジュールを含むプログラムに対して、互いに関連性の高い順にモジュールが配置されるように配置順を決定する配置決定手段と、前記プログラムのオブジェクトをリンクすることによって、該プログラムの実行ファイルを作成すると共に、該プログラムの前記複数のモジュールを電圧制御されるメモリ上の複数の細分化領域への、前記配置順に基づく配置によるメモリマップを出力するリンク手段とを有する。
【発明の効果】
【０００７】
開示の実行ファイル作成装置では、互いに関連性の高いモジュールを隣接して配置するメモリマップが作成されるため、互いに関連性の高いモジュール同士を隣接してメモリ上に配置でき、メモリ電圧制御の頻度を低減することができる。また、低電圧を保持しておく細分化領域の範囲を広くすることができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態を図面に基づいて説明する。
【０００９】
図１は、プログラムの実行による処理手順の例を示す図である。モジュールＡ、処理モード１の判定モジュール、モジュールＡ＿１、モジュールＥ、モジュールＡ＿２、モジュールＢ、処理モード２の判定モジュール、モジュールＣ、モジュールＤ等で構成されるプログラム３が、図１に示されるような処理手順で実行されるものとする。
【００１０】
処理モード１として処理Ａが選択される場合、モジュールＡと、処理モード１の判定モジュールと、モジュールＡ＿１と、モジュールＡ＿２とによって、処理Ａが構成される。モジュールＡと、処理モード１の判定モジュールと、モジュールＡ＿１と、モジュールＡ＿２とを、処理Ａに係るモジュールＡ群９とする。
【００１１】
処理Ｅが選択される場合、処理ＡのモジュールＡ＿１がモジュールＥに置き換えられて、モジュールＡと、処理モード１の判定モジュールと、モジュールＥと、モジュールＡ＿２とによって、処理Ｅが構成される。処理Ｂが選択されている場合、モジュールＢによって処理Ｂが構成される。処理モード２として処理Ｃが選択される場合、モジュールＣによって処理Ｃが構成される。一方、処理モード２として処理Ｄが選択される場合、モジュールＤによって処理Ｄが構成される。
【００１２】
このようなプログラム３をコンパイルして生成したオブジェクト３ｂを一の半導体装置であるメモリに配置する例を図２で説明する。図２（Ａ）は、メモリ上のオブジェクトの配置例を示す図である。図２（Ａ）では、メモリ４の記憶領域を例えば領域＃０から＃１５の１６ブロックに細分化している。図２（Ａ）に示す配置例では、例えば、プログラム３を構成する複数のモジュールに対して、ソースプログラム内における先頭からの出現順に従って判断した隣接モジュールの関連性の強さに基づいて、複数のブロックに跨って連続させて配置し、関連性が判断されないモジュールは別のブロックの先頭から配置した状態を示している。
【００１３】
互いに関連性が低いと判断されるモジュールとは、例えば、処理モード１の判定モジュールによって分岐し、かつ処理モード１の判定モジュールの直後に出現しないモジュールＥなどである。
【００１４】
図２（Ｂ）は、処理の流れの解析による関連性に基づく配置例を示す図である。図２（Ｂ）では、処理の流れを解析することによって、モジュールＡ＿２とモジュールＥとが共にモジュールＡ＿１との関連性があると判断され、かつ、モジュールＥよりモジュールＡ＿２の方がモジュールＡ＿１との関連性が強いと判断されると、モジュールＡ、処理モード１の判定モジュール、モジュールＡ＿１、モジュールＡ＿２、モジュールＥの順に複数のブロックに跨って連続して配置される。
【００１５】
処理の流れを解析することによって、図２（Ａ）に示す配置例と比べると、処理の流れを重視したモジュール間の関連性に基づいて連続させて配置するため、例えば、処理Ａに係るモジュールＡ群９がモジュール間の隙間を最小限にして連続して複数の細分化領域＃０から＃５に配置させるため、メモリ４において一定の電圧に保つ領域を纏めることができ、一定の電圧の領域における空き領域の無駄を低減することができる。また、一定の電圧から低電圧及び低電圧から一定の電圧への電圧制御による処理負荷、及び実質的な処理の性能低下となる電圧制御によって切り替えられた電圧へと安定するまでに掛かる時間を削減することができる。
【００１６】
このように処理の流れを解析することによってオブジェクト３ｂを構成する複数のモジュールのメモリ上への配置を決定して、実行ファイルを作成する実行ファイル作成装置として動作するコンピュータ装置１００は、例えば図３に示すように構成される。図３は、コンピュータ装置のハードウェア構成を示す図である。
【００１７】
図３において、コンピュータ装置１００は、コンピュータによって制御される端末であって、ＣＰＵ（Central Processing Unit）１１と、メモリユニット１２と、表示ユニット１３と、出力ユニット１４と、入力ユニット１５と、通信ユニット１６と、記憶装置１７と、ドライバ１８とで構成され、システムバスＢに接続される。
【００１８】
ＣＰＵ１１は、メモリユニット１２に格納されたプログラムに従ってコンピュータ装置１００を制御する。メモリユニット１２は、ＲＡＭ（Random Access Memory）及びＲＯＭ（Read-Only Memory）等にて構成され、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、メモリユニット１２の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられている。
【００１９】
表示ユニット１３は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。出力ユニット１４は、プリンタ等を有し、利用者からの指示に応じて各種情報を出力するために用いられる。入力ユニット１５は、マウス、キーボード等を有し、利用者がコンピュータ装置１００が処理を行なうための必要な各種情報を入力するために用いられる。通信ユニット１６は、例えばインターネット、ＬＡＮ（Local Area Network）等に接続し、外部装置との間の通信制御をするための装置である。記憶装置１７は、例えば、ハードディスクユニットにて構成され、各種処理を実行するプログラム等のデータを格納する。
【００２０】
コンピュータ装置１００よって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によってコンピュータ装置１００に提供される。即ち、プログラムが保存された記憶媒体１９がドライバ１８にセットされると、ドライバ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがシステムバスＢを介して記憶装置１７にインストールされる。そして、プログラムが起動されると、記憶装置１７にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。本発明に係る処理を実現するプログラムは、通信ユニット１６によってネットワークを介してダウンロードし、記憶装置１７にインストールするようにしても良い。また、ＵＳＢ対応のコンピュータ装置１００であれば、ＵＳＢ接続可能な外部記憶装置からインストールするようにしても良い。更に、ＳＤカード等のフラッシュメモリ対応のコンピュータ装置１００であれば、そのようなメモリカードからインストールするようにしても良い。
【００２１】
図４は、全体処理の概要を説明するための図である。図４において、コンピュータ装置１００のＣＰＵ１１は、記憶装置１７に記憶されているユーザに提供されるメモリに書き込まれるソースファイル７０をコンパイルして（ステップＳ１１）、ソースファイル７０に対応するオブジェクトファイル７１とアセンブリファイル７２とを記憶装置１１に出力する。コンパイルすることによって、ソースファイル７０のバイナリ形式のオブジェクトファイル７１とアセンブリ言語で記述されたアセンブリファイル７２とが１対１のファイルで出力される。オブジェクトファイル７１には、少なくとも１以上のモジュールが含まれる。ステップＳ１１でのコンパイルは、ステップＳ１２でのモジュール配置順を決定するために解析されるアセンブリファイル７２を出力するために行われる。
【００２２】
そして、ＣＰＵ１１は、静的にメモリへのモジュール配置順を決定する第１のアルゴリズムを実行する（ステップＳ１２）。ＣＰＵ１１は、ステップＳ１１で出力されたアセンブリファイル７２を読み込んで、関数を呼び出す命令文を抽出することによって、関数の呼び出し頻度に基づいて関数が定義されているモジュールへのアクセスの多さを判断する。アクセスの多いと判断したモジュールから配置するように配置順を決定する。
【００２３】
更に、ＣＰＵ１１は、ステップＳ１２で決定したモジュール配置順を用いて、モジュール毎のオブジェクトサイズとメモリ４の細分化領域のサイズとに基づいて、モジュールと配置するメモリ４の細分化領域番号とを対応付けしたリンク制御文７３ａを作成する（ステップＳ１３）。作成したリンク制御文７３ａを用いて、ＣＰＵ１１は、オブジェクトファイル７１をリンクする（ステップＳ１４）。静的なモジュール配置による実行ファイル７４ａと、プログラムアドレスとメモリ上の複数の細分化領域への静的なモジュール配置によるアドレスとの対応を解決するメモリマップ７５ａとが生成され出力される。
【００２４】
上述したように、コンパイル後のアセンブリファイル７２を用いてモジュールのメモリ上への配置を調整するステップＳ１２による静的配置処理Ｐ１後に作成されたリンク制御文７３ａに基づいて、リンクによって生成された実行ファイル７４ａをメモリ４に搭載するようにしてもよい。
【００２５】
上述したステップＳ１１からＳ１４に続いて、実行ファイル７４ａを用いて実動作に応じたモジュールの配置順に調整するステップＳ２１からＳ２３による動的配置処理Ｐ２について説明する。動的配置処理Ｐ２を実行するためには、少なくともソースファイル７０の実行ファイルがあればよく、即ち、静的配置処理Ｐ１が省略されていてもよい。
【００２６】
ＣＰＵ１１は、コンパイルされた実行ファイル７４ａを実行し（ステップＳ２１）、予め設定した特定の動作が実行された場合にトレース情報７６に出力する。例えば、関数を呼び出す命令文が実行される毎に、少なくともその命令文とその命令文が属するファイルを識別するファイル識別情報とをトレース情報７６に出力する。
【００２７】
実行ファイル７４ａによるプログラム実行後、ＣＰＵ１１は、トレース情報７６を解析して動的にメモリへのモジュール配置順を決定する第２のアルゴリズムを実行する（ステップＳ２２）。トレース情報７６を解析することによって、プログラム実行によって同一命令文への繰り返しアクセスされる頻度を考慮したモジュール配置順を決定することができる。
【００２８】
ＣＰＵ１１は、第２のアルゴリズムを実行することによって得られたモジュール配置順を用いて、モジュール毎のオブジェクトサイズとメモリ４の細分化領域のサイズとに基づいて、モジュールと配置するメモリ４の細分化領域番号とを対応付けして更新したリンク制御文７３ｂを出力する（ステップＳ２３）。作成したリンク制御文７３ｂを用いて、ＣＰＵ１１は、オブジェクトファイル７１をリンクする（ステップＳ２４）。動的なモジュール配置による実行ファイル７４ｂと、プログラムアドレスとメモリ上の複数の細分化領域への動的なモジュール配置によるアドレスとの対応を解決するメモリマップ７５ｂとが生成され出力される。
【００２９】
この実行ファイル７４ｂをメモリマップ７５ｂに従ってメモリ４上に配置することによって、メモリ４の電圧制御を効率的に行うことができる。
【００３０】
モジュール配置順について、１以上のモジュールで構成されるファイル単位でメモリ４上への配置を決定する方法について図５、図６、及び図７で説明する。図５は、ファイル構成例を示す図である。図５では、例えば、ファイル＃１にはメイン関数が定義されており、メイン関数において関数func1、関数func2、関数func3などが少なくとも１回以上呼び出される処理となっている。メイン関数から呼び出される関数のうち、関数func1はファイル＃１内で定義され、関数func2はファイル＃１とは別のファイル＃２で定義されている。また、関数func3もファイル＃１とは別のファイル＃３で定義されている。
【００３１】
図５ではソースファイル７０の例として示しているが、以下、コンパイル後のオブジェクトファイル７１及びアセンブリファイル７２を識別する場合にも同様のファイル名をファイル識別情報として使用する。
【００３２】
先ず、図４のステップＳ１２で行われる、ソースファイル７０をコンパイルして得られたアセンブリファイル７２を用いて、メモリ４へのモジュール配置順を決定する静的配置処理Ｐ２について詳述する。
【００３３】
図６は、図４の静的にメモリへのモジュール配置順を決定する第１のアルゴリズムを説明するための図である。図６（Ａ）において、ＣＰＵ１１は、アセンブリファイル７２からｃａｌｌ命令を抽出してｃａｌｌ命令抽出リスト５１を出力する。ｃａｌｌ命令抽出リスト５１には、少なくとも、ｃａｌｌ命令で関数が呼び出されるプログラム上のアドレス（番地）と、呼び出される関数名を含むｃａｌｌ命令文とを含む。図６（Ａ）に示すｃａｌｌ命令抽出リスト５１には便宜上、図５のファイル構成に従って、関数が定義されるファイル名をｃａｌｌ命令文に対応させてコメント形式で記載してある。
【００３４】
ｃａｌｌ命令文を抽出したｃａｌｌ命令抽出リスト５１を用いて、ＣＰＵ１１は、関数が呼び出されるプログラム上のアドレス（番地）と、関数名を含むｃａｌｌ命令文と、呼び出された関数が定義されているファイル名などのファイル識別情報とを対応させ、関数名毎の呼び出し回数で並べ替えをして、図６（Ｂ）に示すような並べ替えテーブル５２として出力する。
【００３５】
並べ替えテーブル５２では、最も呼び出し回数の多い関数func1によって関数func1が定義されるファイル＃１に対して３回のアクセスがあったことを示す。また、main関数があるため、ファイル＃１を常時一定の電圧にしておくファイルとして定義される。次に呼び出し回数の多い関数func2によって関数func2が定義されるファイル＃２に対して２回のアクセスがあったことを示す。そして、関数func2の次に呼び出し回数の多い関数はfunc3となり、関数func3が定義されるファイル＃３に対して１回のアクセスがあったことを示す。このように、並べ替えテーブル５２は、関数が呼び出されることによるアクセスの多いファイル順を示す。
【００３６】
アクセス並べ替えテーブル５２を用いて、ＣＰＵ１１は、メモリ４上へのモジュール配置順を決定する。ここでは、モジュールをファイル単位とする。即ち、図６（Ｃ）に示すように、ファイル＃１、ファイル＃２、ファイル＃３の順に配置することを示す配置順リスト５３を出力する。出力された配置順リスト５３を用いて、リンク制御文７３ａが作成される（図４のステップＳ１３）。
【００３７】
次に、図４中の実行ファイル７４ａのプログラムを実行することによる動的配置処理Ｐ２における、ステップＳ２２で行われる動的にメモリへのモジュール配置順を決定する第２のアルゴリズムについて詳述する。
【００３８】
図７は、図４の動的にメモリへのモジュール配置順を決定する第２のアルゴリズムを説明するための図である。図７（Ａ）において、ＣＰＵ１１は、トレース情報７６からｃａｌｌ命令を抽出してｃａｌｌ命令抽出リスト６１を出力する。ｃａｌｌ命令抽出リスト６１には、少なくとも、ｃａｌｌ命令で関数が呼び出されるプログラム上のアドレス（番地）と、呼び出される関数名を含むｃａｌｌ命令文とを含む。図７（Ａ）に示すｃａｌｌ命令抽出リスト５１には便宜上、図５のファイル構成に従って、関数が定義されるファイル名をｃａｌｌ命令文に対応させてコメント形式で記載してある。図７（Ａ）に示すｃａｌｌ命令抽出リスト６１では、処理の繰り返し等により、プログラム中の所定番地（例えば４００番地）で複数回呼び出すｃａｌｌ命令文が抽出されている。図６（Ａ）に示すように、静的配置処理Ｐ１での第１のアルゴリズムでは、このような場合４００番地でｃａｌｌ命令文は１回の抽出となる。
【００３９】
ｃａｌｌ命令文を抽出したｃａｌｌ命令抽出リスト６１を用いて、ＣＰＵ１１は、関数が呼び出されるプログラム上のアドレス（番地）と、関数名を含むｃａｌｌ命令文と、呼び出された関数が定義されているファイル名などのファイル識別情報とを対応させ、関数名毎の呼び出し回数で並べ替えをして、図７（Ｂ）に示すような並べ替えテーブル６２として出力する。
【００４０】
並べ替えテーブル６２では、最も呼び出し回数の多い関数func3によって関数func3が定義されるファイル＃３に対して５回のアクセスがあったことを示す。次に呼び出し回数の多い関数func1によって関数func1が定義されるファイル＃１に対して３回のアクセスがあったことを示す。但し、ファイル＃１はmain関数であるため、アクセス回数に係わらずファイル＃１を常時一定の電圧にしておくファイルとして定義される。そして、次に呼び出し回数の多い関数はfunc3となり、関数func3が定義されるファイル＃３に対して２回のアクセスがあったことを示す。このように、並べ替えテーブル６２は、関数が呼び出されることによるアクセスの多いファイル順を示す。
【００４１】
アクセス並べ替えテーブル６２を用いて、ＣＰＵ１１は、メモリ４上へのモジュール配置順を決定する。ここでは、モジュールをファイル単位とする。即ち、図６（Ｃ）に示すように、ファイル＃１、ファイル＃３、ファイル＃２の順に配置することを示す配置順リスト６３を出力する。第１のアルゴリズムによる静的なモジュール配置順と比べると、ファイル＃２とファイル＃３との順が逆転する。出力された配置順リスト６３を用いて、リンク制御文７３ａが更新されてリンク制御文７３ｂとして出力される（図４のステップＳ１３）。リンク制御文７３ａが存在しない場合、リンク制御文７３ｂが生成される。
【００４２】
次に、より配置を適切に行うためのモジュールのグループ分けについて図８で説明する。図８中、リンク制御文を作成するためのステップＳ１３での処理として説明するが、ステップＳ２３でも同様の処理が行われる。図８（Ａ）に示すように、モジュール配置順に基づいて、オブジェクト３ｂを頻繁に一定の電圧にしておくモジュールのグループＧ１と頻繁に一定の電圧にしておく必要の無いオブジェクトのグループＧ２とに構成する。
【００４３】
グループ分けは、例えば、ステップＳ１２の第１のアルゴリズムで作成された配置順リスト５３を用いて、メモリ４の消費電圧の制限の範囲内の一定の電圧として利用するメモリ４の細分化領域の合計容量に相当するまで、配置順リスト５３の先頭からモジュールのサイズを加算しながら割り当てるモジュールを選択し、一定の電圧用の細分化領域の合計サイズを超えたモジュール以降をグループＧ２とすればよい。
【００４４】
更に、頻繁に一定の電圧にしておくモジュールのグループＧ１において、main関数があるモジュールと、関数が自身を定義するモジュール以外の他モジュールから呼び出されている場合にそれ自身を定義するモジュールとを互いに関連性の高いモジュール群Ｍ１に分類する。そして、main関数があるモジュール以外のモジュールにおいて、そのモジュール内部で定義した関数を呼び出している場合、つまり関数の呼び出し元と呼び出し先のモジュールが同一である場合、そのモジュールを互いに関連性の低いモジュール群Ｍ２に分類する。このモジュール群の分類では、関数が呼び出されるプログラム上のアドレス（番地）とモジュールの先頭アドレスとの比較によって、呼び出し元と呼び出し先のモジュールを識別することが可能である。
【００４５】
頻繁に一定の電圧にしておく必要の無いオブジェクトのグループＧ２において、１以上のアクセスの頻度の少ないモジュールの集まりＭ３を構成する。
【００４６】
上述説明において、図５に示すファイル構成における１以上のモジュールを含むオブジェクト化された各ファイルを１つのモジュール群とすればよい。
【００４７】
図８（Ａ）で説明したようにグループ分け及びモジュール群を構成した後、図８（Ｂ）に示すように、メモリ４を構成する連続した細分化領域への各モジュール群の割り当てを行う。アクセス時及び非アクセス時に関わりなく一定の電圧が印加される細分化領域＃０及び＃１では、例えば、モジュール群Ｍ１そしてモジュール群Ｍ２の順で細分化領域＃０の先頭から細分化領域＃０から＃１の境界を跨いで隙間無く割り当てる。
【００４８】
一方で、非アクセス時には低電圧が印加される細分化領域＃２及び＃３では、メモリを効率良く利用できるようにモジュール群Ｍ３などを配置する。
【００４９】
一定の電圧が印加される細分化領域、低電圧が印加される細分化領域ともに例示された領域の数以上の細分化領域で構成され、また、モジュール群も例示されたモジュール群の数以上のモジュール群が形成される場合もあり、それぞれのグループにおいて隙間サイズ５と隙間サイズ６の値が最良となるように配置調整をするようにしてもよい。サイズの小さい一のモジュール群が細分化領域を跨ることによって消費電圧に無駄が発生する場合もあり、特にアクセス時のみ一定の電圧へと切り替えられる低電圧の細分化領域において、隙間サイズ６の値が最小の時に消費電圧を最小にできるとは限らない。
【００５０】
例えば、図８（Ｂ）に示すような細分化領域と配置されるモジュール群とを対応させて表示し、オペレータの操作に応じてモジュール群の配置位置の入れ替えを可能とするように構成してもよい。
【００５１】
さて、メモリ４の非アクセス時には低電圧で維持されアクセス時にのみ一定の電圧が印加される細分化領域に対する電圧制御のためのメモリ電圧制御プログラムを、電圧の切り替えの必要な領域へアクセスする直前の位置に組み込んでおく必要がある。一旦生成させたメモリマップ７５ａ又はメモリマップ７５ｂを参照することによって、ソースファイル７０にメモリ電圧制御関数をコーディングするようにした電圧制御組み込み方法について説明する。
【００５２】
先ず、メモリ電圧制御関数からパラメータのみで制御指示を行う第１の電圧制御組み込み処理について図９及び図１０で説明する。図９は、第１の電圧制御組み込み処理フローを示す図である。図９において、ＣＰＵ１１は、ソースファイル７０を図４に示すステップに従ってコンパイル及びリンクする（ステップＳ３１）。ここで、リンク時にはメモリ電圧制御関数７７ａを挿入する際に参照される関数用メモリマップ７６を作成する。関数用メモリマップ７６ａでは、関数名毎にその関数を定義するファイルが割り当てられるメモリ４上の細分化領域の番号が示される。ステップＳ３１にて生成されたオブジェクトファイルは実装用として使用しない。
【００５３】
ＣＰＵ１１は、ソースコード７０を読み込んでメモリ電圧制御関数７７ａを挿入して（ステップＳ３２）、メモリ電圧制御を含むソースファイル７８を出力する。ＣＰＵ１１は、ソースコード７０に予め用意されたメモリ電圧制御関数７７ａを追加した後、ソースコード７０の先頭から関数を呼び出す命令文を検索し、その検索した命令文で指定される関数名が関数用メモリマップ７６ａに登録されている場合、メモリ電圧制御関数７７ａを呼び出す命令文を検索した命令文の直前及び直後に挿入する。
【００５４】
そして、ＣＰＵ１１は、ソースファイル７８を図４に示すステップに従ってコンパイル及びリンクして（ステップＳ３３）、メモリ電圧制御を含む実行ファイル７４ｃとメモリ４上に配置するためのメモリマップ７５ｃとを出力する。
【００５５】
上記ステップＳ３１及び３３での図４に示すステップに従ったコンパイル及びリンクでは、静的配置処理Ｐ１と動的配置処理Ｐ２とを含む処理でもよく、或いは何れか一方を含む処理でもよい。実行ファイル７４ｃは、メモリマップ７５ｃに基づいてユーザに提供される所定のメモリ４に書き込まれる。
【００５６】
上記ステップＳ３２にてソースファイル７０に挿入されるメモリ電圧制御関数７７ａは、電圧制御の対象となるメモリ４の細分化領域の番号、電圧制御設定などのパラメータを有する。細分化領域の番号には、関数用メモリマップ７６から取得した細分化領域番号が設定される。電圧制御設定には、低電圧への設定又は一定の電圧への設定のいずれかが設定される。例えば、検索した関数の直前では一定の電圧への設定がなされ、直後では低電圧への設定がなされる。メモリ電圧制御関数７７ａの動作時には、指定したパラメータは専用の制御レジスタに書き込まれる。メモリ電圧制御関数７７ａでは、電圧の設定が「低電圧」への指定を示している場合には、その設定を制御レジスタに書き込んだ後、動作を終了してリターンする。一方、電圧の設定が「一定の電圧」への指定を示している場合には、制御レジスタに書き込んだ後、一定の電圧になるまでの間はＮＯＰ命令を実行してリターンする。実装する装置のハードウェア側は、制御レジスタへの書き込みのタイミングでメモリ４の指定された一以上の細分化領域に対して電圧制御を行う。
【００５７】
図１０は、関数用メモリマップの例を示す図である。図１０において、関数用メモリマップ７６は、ソースファイル７０の各ファイル内で定義される関数名、そのファイルのメモリ４への配置先を特定する細分化領域番号などの項目を有する。例えば、関数func1と関数func2とが含まれるとする。関数名「func1」は、細分化領域番号「０」及び「１」に配置され、関数名「func2」は、細分化領域番号「２」に配置される等が示される。
【００５８】
上述した第１の電圧制御組み込み処理では、メモリ電圧制御コードの挿入されたファイルでは、オブジェクトサイズが増加するためメモリ４上への配置にズレが生じる場合がある。また、関数が定義されているファイルのオブジェクトが電圧制御を必要とする複数の細分化領域に跨る場合、細分化領域毎にメモリ電圧制御関数７７ａを呼び出すようにコーディングされるか、又は、細分化領域の数に応じたパラメータ数を設定して対応することになり、跨る細分化領域の数によって挿入されるコード量及びメモリ電圧制御関数７７ａによる実行サイクル数が増減される。従って、パラメータを用いず、メモリ４上のデータ領域に電圧制御テーブルを備えるようにして、細分化領域の数に係わらず、挿入されるコード量及び実行サイクル数の増減を抑制するようにした第２の電圧制御組み込み処理について図１１及び図１２で説明する。
【００５９】
図１１は、第２の電圧制御組み込み処理フローを示す図である。図１１において、ソースファイル７０にメモリ電圧制御を要する位置にダミーソースコードを挿入し、ダミーソースコードを含むソースファイル８０ａを出力する（ステップＳ４１）。例えば、予め、ソースファイル７０に対して、図４に示すような静的配置処理Ｐ１又は動的配置処理Ｐ２を含むコンパイル及びリンクを行い、図９に示す関数用メモリマップ７６を作成しておき、関数用メモリマップ７６で示される関数が呼び出される前後を挿入位置としてダミーソースコードを挿入する。
【００６０】
ＣＰＵ１１は、ダミーソースコードを含むソースファイル８０ａを図４に示すステップに従ってコンパイル及びリンクする（ステップＳ４２）。
【００６１】
その後、ＣＰＵ１１は、ソースファイル８０ａを用いて、挿入されているダミーソースコードを検索して、メモリ電圧制御関数７７ｂへの置き換え及びメモリ電圧制御関数７７ｂを呼び出す命令文への置き換えたソースファイル８０ｂを出力する（ステップＳ４３）。更に、ＣＰＵ１１は、コンパイル及びリンクによって生成されたダミーソースコードを含む場合のメモリマップ７５ｅを参照して、図１２で後述されるような電圧制御テーブル８１を作成する（ステップＳ４４）。
【００６２】
そして、ＣＰＵ１１は、電圧制御テーブル８１を含めてメモリ電圧制御関数７７ｂへ置き換えられたソースファイル８０ｂを図４に示すステップに従ってコンパイル及びリンクする（ステップＳ４５）。このコンパイル及びリンクによって、メモリ電圧制御を含む実行ファイル７４ｃとメモリマップ７５ｃとが出力される。実行ファイル７４ｃは、メモリマップ７５ｃに基づいてユーザに提供される所定のメモリ４に書き込まれる。
【００６３】
ステップＳ４１でのダミーソースコードの挿入位置として、関数を呼び出す命令文の前後に限らず、開発言語のジャンプ命令やＧＯＴＯ文、関数の呼び出し命令文などによって次に実行される先が同一のオブジェクトファイル内である場合にはダミーソースコードの挿入を抑止し、異なるオブジェクトファイルとなる場合にダミーソースコードを挿入する。つまり、異なるオブジェクトファイルへ制御が移る場合にダミーソースコードを挿入するようにする。
【００６４】
更に、１つのオブジェクトファイルのサイズが１つの細分化領域のサイズよりも大きい場合、そのオブジェクトファイルは、複数のメモリに跨って配置されることになる。この場合、オブジェクトファイル毎に各細分化領域へと配置されるオブジェクトファイルの最初と最後の番地を管理するようにすればよい。つまい、そのオブジェクトファイルの何番地から何番地までが、細分化領域の＃ｎに配置し、続く何番地から何番地までが、細分化領域の＃ｎ＋１、＃ｎ＋２、・・・に配置されるかといった情報を生成しておく。そして、そのオブジェトファイルの中で分岐する先が、同じオブジェクトファイルの範囲内であった場合、生成した情報から、細分化領域の＃ｎなのか＃ｎ＋１なのかを判断することが可能である。もし、分岐先が、次に続く細分化領域の＃ｎ＋１であった場合、そこにダミーソースコードを挿入するようにすることができる。
【００６５】
図１２は、電圧制御テーブルの例を示す図である。図１２に示す電圧制御テーブル８１では、メモリ４の分割領域をビット位置に対応させ、ファイル毎にそのオブジェクトが配置されている分割領域に相当するビットをオンで示す。例えば、メモリ４を１６分割した場合は、ファイル毎に１６ビットでなる１ワードの配置情報で管理できる。メモリ電圧制御関数７７ｂには、電圧制御するファイルの配置情報を指定するポインタと、一定の電圧への設定又は低電圧への設定を示す電圧の設定をパラメータとしておけばよい。
【００６６】
図１１のステップＳ４３において、ＣＰＵ１１は、ダミーソースコードの挿入直後又は直前に呼び出される関数名からファイルを特定し、電圧制御テーブル８１内の電圧制御するファイルの配置情報をポインタで指定して、メモリ電圧制御関数７７ｂを呼び出す命令文へと置き換えればよい。
【００６７】
メモリ電圧制御関数７７ｂでは、電圧の設定が「一定の電圧」への指定を示している場合には、ポインタで指定された電圧制御テーブル８１内の配置情報に基づいて「１」のビットがオンとなるように制御レジスタを設定し、一定の電圧になるまでの間はＮＯＰ命令を実行してリターンする。一方、電圧の設定が「低電圧」への指定を示している場合には、ポインタで指定された電圧制御テーブル８１内の配置情報に基づいて「１」のビットがオフとなるように制御レジスタを設定してリターンする。いずれの電圧の設定であっても、配置情報の「０」のビット位置はマスクする。
【００６８】
次に、メモリ電圧制御の仕組みを含まない実行ファイル７４ａ又は７４ｂが記憶されているメモリ４を実装した情報処理装置のハードウェア側でプログラムカウンタを監視し、特定のアドレスに到達した際に細分化領域の電圧制御を行うための第３の電圧制御組み込み処理について、図１３、図１４及び図１５で説明する。
【００６９】
図１３は、第３の電圧制御組み込み処理フローを示す図である。図１３において、ＣＰＵ１１は、ソースファイル７０を図４に示すステップに従ってコンパイル及びリンクする（ステップＳ５１）。このコンパイル及びリンクによって出力されたアセンブリファイル７２とメモリマップ７５ａ又は７５ｂとを用いて、ＣＰＵ１１は、情報処理装置のハードウェア側でのみ参照される管理テーブル８２を作成する（ステップＳ５２）。そして、ＣＰＵ１１は、情報処理装置に実装される電圧制御用メモリ５に管理テーブル８２を書き込む（ステップＳ５３）。電圧制御用メモリ５は、ユーザに提供するプログラムメモリやデータメモリとは別に用意した電圧制御用のメモリである。
【００７０】
上記ステップＳ５２での図４に示すステップに従ったコンパイル及びリンクでは、静的配置処理Ｐ１と動的配置処理Ｐ２とを含む処理でもよく、或いは何れか一方を含む処理でもよい。
【００７１】
ステップＳ５２における管理テーブル８２を作成する処理について図１４及び図１５について説明する。図１４は、アセンブリファイルの例を示す図である。図１５は、管理テーブルの例を示す図である。ＣＰＵ１１は、図１４に示すアセンブリファイル７２を読み込んで、電源ＯＮを最初の電圧制御位置Ｐ１とし、call命令文を検索してアドレス「0x00401068」、「0x0040107B」、「0x0040180」等を電圧制御位置Ｐ２、Ｐ３、Ｐ４等として管理テーブル８２に登録する。
【００７２】
この場合、検索したcall命令文に掛かるアドレスのうち、関数の呼び出し元が配置されている細分化領域と関数の呼び出し先が配置されている細分化領域とが一致する場合を除いて、電圧制御位置として管理テーブル８２に登録する。
【００７３】
図１５に示す管理テーブル８２は、プログラムアドレス、一定の電圧にする細分化領域、低電圧にする細分化領域等の項目を有する。プログラムアドレスには電圧制御位置を示すアセンブリファイル７２内のアドレスが設定され、一定の電圧にする細分化領域にはアクセス先の領域を特定するための細分化領域番号が設定され、低電圧にする細分化領域にはアクセス元の領域を特定するための細分化領域番号が設定される。
【００７４】
例えば、ＣＰＵ１１は、図１４に示すアセンブリファイル７２の電圧制御位置Ｐ２に関して、アドレス「0x00401068」と、一定の電圧にする細分化領域を特定するための細分化領域番号「＃１」と、低電圧にする細分化領域を特定するための細分化領域番号「＃０」とを電圧制御情報として管理テーブル８２に登録する。また、ＣＰＵ１１は、電圧制御位置Ｐ３に関して、アドレス「0x0040107B」と、一定の電圧にする細分化領域を特定するための細分化領域番号「＃２」と、低電圧にする細分化領域を特定するための細分化領域番号「＃１」とを電圧制御情報として管理テーブル８２に登録する。同様に、ＣＰＵ１１は、電圧制御位置Ｐ４に関して、アドレス「0x00401080」と、一定の電圧にする細分化領域を特定するための細分化領域番号「＃４」と、低電圧にする細分化領域を特定するための細分化領域番号「＃２」とを電圧制御情報として管理テーブル８２に登録する。
【００７５】
また、電源ＯＮの際の最初の電圧制御位置Ｐ１において、一定の電圧にする細分化領域と、低電圧にする細分化領域とを管理テーブル８２に最初に定義しておいてもよい。
【００７６】
上述したようにハードウェア側にてメモリ電圧制御を行う場合、低電圧から一定の電圧になるまでの時間を考慮する必要がある。この為、管理テーブル８２に登録したプログラムアドレスよりも数ｎサイクル前のアドレスを予め算出しておく必要が有る。この算出は、ハードウェアが電源ＯＮ時に管理テーブルの内容を読み、登録してあるアドレスから数ステップ分のアドレスを減算して記憶しておく。その後、プログラム実行時に、プログラムカウンタがその減算したアドレスに到達したタイミングで指定された細分化メモリを一定の電圧に設定する。もし、登録したアドレスと減算して得られたアドレスの間に、分岐命令、ｃａｌｌ命令がある場合、制御が意図しない場所へ移る可能性がある。この為、ハードウェア内部で、時間稼ぎする様な（例えば、クロックを間延びさせる等の）仕組みを踏まえるか、ＮＯＰ命令を数回実行させる必要がある。若しくは、ソースコード上にダミーコードを数行コーディングしておく。
【００７７】
一定の電圧から低電圧へは、時間的な考慮をする必要がない。この為、プログラムを実行して、管理テーブルに登録したプログラムアドレスにプログラムカウンタが到達したタイミングで指定された細分化メモリを低電圧になる様に設定する。
【００７８】
図１６は、実装されるメモリ電圧制御の構成例を説明するための図である。図１６に示す情報処理装置９０において、ソフトウェア又はファームウェアにメモリ電圧制御関数７７ａ又は７７ｂを組み込む場合、ハードウェア側のメモリ電圧制御部９１は、制御レジスタ８３を有し、メモリ電圧制御関数７７ａ又は７７ｂから設定される電圧制御の対象となる領域を特定する細分化領域番号と、「一定の電圧」又は「低電圧」への切り替えを指定する電圧の設定とに基づいて、メモリ４の電圧を制御する。
【００７９】
一方、図１６に示す情報処理装置９０において、ソフトウェア又はファームウェアにメモリ電圧制御関数７７ａ又は７７ｂを備えずハードウェア側のメモリ電圧制御部９１が電圧制御を行う場合、メモリ電圧制御部９１は、管理テーブル８２を有し、プログラムカウンタを監視し、管理テーブル８２を用いてメモリ４の電圧を制御する。
【００８０】
メモリ４はプログラムメモリ４ａとデータメモリ４ｂとを有する。上述した電圧制御の仕組みをデータメモリ４ｂにも適応することによって、プログラムメモリ４ａとデータメモリ４ｂとに対して、低電圧になる領域を多く確保し、一定の電圧と低電圧の切り替える頻度を低減させることができる。
【００８１】
関連性の高いモジュールを隣接して配置することによって、一定の電圧に保持する細分化領域（例えば、プログラムメモリ４ａの細分化領域＃４、＃５、＃６及び＃７）が隣接することとなり、メモリ４上を広範囲に電圧制御する必要がない。
【００８２】
関連性の低いモジュールへの電圧制御の例について図１７で説明する。図１７は、電圧制御の例を示す図である。図１７において、処理Ａに係るモジュールＡ群（実行中）、・・・モジュールＢ（実行しない）、モジュールＣ（実行予定）の順で配置された場合（図１７（ａ））に、実際に実行されるモジュールの順が、処理Ａに係るモジュールＡ群（実行中）の次にモジュールＣ（実行予定）とする（図１７（ｂ））。
【００８３】
このようなモジュールの実行順における電圧制御では、電源ＯＮによって電圧がメモリ４に印加されるが、処理Ａに係るモジュールＡ群の細分化領域では一定の電圧に保持され（図１７（ｃ））、モジュールＢの細分化領域ではモジュールＢは実行されていないため低電圧で保持される（図１７（ｄ））。一方、電源ＯＮのときから低電圧に保持されていたモジュールＣの細分化領域では、モジュールＣの実行直前に低電圧から高速で処理可能な一定の電圧に切り替えられて、モジュールＣの実行終了時に一定の電圧から低電圧へと切り替えられる（図１７（ｅ））。モジュールＣの実行によって、処理Ａに係るモジュールＡ群の動作が終了すると処理Ａに係るモジュールＡ群の細分化領域では、保持されていた一定の電圧から低電圧へと切り替えられる（図１７（ｃ））。
【００８４】
上述したように、本実施例では、メモリに書き込まれるオブジェクトにおいて、互いに関連性の高いモジュールを隣接して配置するようなメモリマップを作成することができる。従って、互いに関連性の高いモジュール同士を隣接してメモリ上に配置するため、メモリ電圧制御の頻度を低減することができる。また、低電圧を保持しておく細分化領域の範囲を広くすることができる。
【００８５】
上述した配置順によって半導体装置であるメモリへ実行ファイルを格納することによって、例えば、通常動作モード、間欠動作モード、コンプレストモードなどの複数のモードが存在する携帯電話機などに対して有効である。この間欠動作モードでは、通信量が減っている時、一定の周期でDSP（Digital Signal Processor）自体を低電圧にして消費電力を抑えているが、通常動作モードとコンプレストモードでは、DSP自体を低電圧にしていない。このように、省電力のために間欠動作等の工夫がなされているが、それ以外の動作ではメモリ全体に一定の電圧が掛かっているのが一般的なバッテリ駆動の装置などに対して、細分化領域の範囲を広く低電圧にしておくことができるようになる。
【００８６】
なお、以上に述べた実施形態は、以上に述べた実施形態の機能を実行する装置、以上に述べた実施形態の機能をコンピュータに実行させるためのプログラム、又は、以上に述べた実施形態の機能をコンピュータが処理する方法に適用できる。
【００８７】
以上の説明に関し、更に以下の項を開示する。
（付記１）
複数のモジュールを含むプログラムに対して、互いに関連性の高い順にモジュールが配置されるように配置順を決定する配置決定手段と、
前記プログラムのオブジェクトをリンクすることによって、該プログラムの実行ファイルを作成すると共に、該プログラムの前記複数のモジュールを電圧制御されるメモリ上の複数の細分化領域への、前記配置順に基づく配置によるメモリマップを出力するリンク手段とを有する実行ファイル作成装置。
（付記２）
前記配置決定手段は、
前記プログラムのソースファイルをコンパイルすることによって出力されるアセンブリファイルから、前記モジュールへとアクセスする命令文を静的に抽出する静的命令文抽出手段と、
前記静的に抽出した命令文をモジュール毎にカウントした値を前記関連性の高さとし、関連性の高い順に並べ替える第１の並替手段とを有する付記１記載の実行ファイル作成装置。
（付記３）
前記配置決定手段は、
作成済みの前記プログラムの実行ファイルを実行させることによって、前記モジュールへとアクセスする命令文を動的に抽出する動的命令文抽出手段と、
前記動的に抽出した命令文をモジュール毎にカウントした値を前記関連性の高さとし、関連性の高い順に並べ替える第２の並替手段とを有する付記１記載の実行ファイル作成装置。
（付記４）
前記リンク手段は、前記抽出した命令文で呼び出されるモジュールと該モジュールが配置される１以上の前記細分化領域とを対応付けた対応マップを出力し、
前記実行ファイル作成装置は、更に、
前記対応マップを参照することによって、前記プログラムのソースファイルに前記複数の細分化領域に対するメモリ電圧制御に係るコードを組み込むメモリ電圧制御組込手段と、
前記電圧制御に係るコードが組み込まれた前記ソースコードをコンパイルし、前記リンク手段によってリンクするコンパイル・リンク手段とを有する付記１乃至３のいずれか一項記載の実行ファイル作成装置。
（付記５）
前記プログラムのソースファイルにおいて前記細分化領域に対するメモリ電圧制御を行う位置にダミーソースコードを挿入するダミーソースコード挿入手段と、
前記ダミーソースコードが挿入された前記ソースファイルをコンパイルし、前記リンク手段によってリンクする第一コンパイル及びリンク手段と、
前記ソースファイルに挿入された前記ダミーソースコードを前記メモリ電圧制御に係るコードに置き換えるコード置換手段と、
前記第一コンパイル及びリンク手段によって出力された前記ダミーソースコードを含んだ場合のメモリマップを用いて、前記コードの置換位置に応じたメモリ電圧制御するための電圧制御テーブルを作成する電圧制御テーブル作成手段と、
前記コード置換手段によって置き換えられた前記ソースコードと前記電圧制御テーブル作成手段によって作成された電圧制御テーブルとをコンパイルし、前記リンク手段によってリンクする第二コンパイル及びリンク手段とを有する付記１乃至３のいずれか一項記載の実行ファイル作成装置。
（付記６）
前記リンク手段によって出力されたメモリマップを参照することによって、前記プログラムのアセンブリファイルを用いて前記細分化領域に対するメモリ電圧制御を行うプログラムアドレスと該メモリ電圧制御の対象となる細分化領域とを対応付けした管理テーブルを作成する管理テーブル作成手段と、
前記管理テーブルを電圧制御用メモリに書き込む管理テーブル書込手段とを有する付記１乃至３のいずれか一項記載の実行ファイル作成装置。
（付記７）
付記１乃至５のいずれか一項記載の実行ファイル作成装置によって出力された前記実行ファイルを前記メモリマップに従って前記複数の細分化領域に配置し記憶した半導体装置。
（付記８）
コンピュータ装置が、
複数のモジュールを含むプログラムに対して、互いに関連性の高い順にモジュールが配置されるように配置順を決定する配置決定手順と、
前記プログラムのオブジェクトをリンクすることによって、該プログラムの実行ファイルを作成すると共に、該プログラムの前記複数のモジュールを電圧制御されるメモリ上の複数の細分化領域への、前記配置順に基づく配置によるメモリマップを出力するリンク手順とを実行する実行ファイル作成方法。
（付記９）
コンピュータ装置に、
複数のモジュールを含むプログラムに対して、互いに関連性の高い順にモジュールが配置されるように配置順を決定する配置決定手順と、
前記プログラムのオブジェクトをリンクすることによって、該プログラムの実行ファイルを作成すると共に、該プログラムの前記複数のモジュールを電圧制御されるメモリ上の複数の細分化領域への、前記配置順に基づく配置によるメモリマップを出力するリンク手順とを実行させるコンピュータ実行可能な実行ファイル作成プログラム。
【００８８】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【００８９】
【図１】プログラムの実行による処理手順の例を示す図である。
【図２】オブジェクトをメモリに配置する例を説明するための図である。
【図３】コンピュータ装置のハードウェア構成を示す図である。
【図４】全体処理の概要を説明するための図である。
【図５】ファイル構成例を示す図である。
【図６】図４の静的にメモリへのモジュール配置順を決定する第１のアルゴリズムを説明するための図である。
【図７】図４の動的にメモリへのモジュール配置順を決定する第２のアルゴリズムを説明するための図である。
【図８】モジュールのグループ分けの方法を説明するための図である。
【図９】第１の電圧制御組み込み処理フローを示す図である。
【図１０】関数用メモリマップの例を示す図である。
【図１１】第２の電圧制御組み込み処理フローを示す図である。
【図１２】電圧制御テーブルの例を示す図である。
【図１３】第３の電圧制御組み込み処理フローを示す図である。
【図１４】アセンブリファイルの例を示す図である。
【図１５】管理テーブルの例を示す図である。
【図１６】実装されるメモリ電圧制御の構成例を説明するための図である。
【図１７】電圧制御の例を示す図である。
【符号の説明】
【００９０】
３ｂ        オブジェクト
４          メモリ
１１        ＣＰＵ
１２        メモリユニット
１３        表示ユニット
１４        出力ユニット
１５        入力ユニット
１６        通信ユニット
１７        記憶装置
１８        ドライバ
１９        記憶媒体
５１、６１  ｃａｌｌ命令抽出リスト
５２、６２  並べ替えテーブル
５３、６３  配置順テーブル
７０、７８  ソースファイル
７１        オブジェクトファイル
７２        アセンブリファイル
７３ａ、７３ｂ  リンク制御文
７４ａ、７４ｂ、７４ｃ  実行ファイル
７５ａ、７５ｂ、７５ｃ、７５ｅ  メモリマップ
７６        関数用メモリマップ
７７ａ、７７ｂ  メモリ電圧制御関数
８０ａ、８０ｂ  ソースファイル
８１        電圧制御テーブル
８２        管理テーブル
８３        制御レジスタ
９０        情報処理装置
９１        メモリ電圧制御部
１００          コンピュータ装置
【図１】
2010146181.tif 000003
【図２】
2010146181.tif 000004
【図３】
2010146181.tif 000005
【図４】
2010146181.tif 000006
【図５】
2010146181.tif 000007
【図６】
2010146181.tif 000008
【図７】
2010146181.tif 000009
【図８】
2010146181.tif 000010
【図９】
2010146181.tif 000011
【図１０】
2010146181.tif 000012
【図１１】
2010146181.tif 000013
【図１２】
2010146181.tif 000014
【図１３】
2010146181.tif 000015
【図１４】
2010146181.tif 000016
【図１５】
2010146181.tif 000017
【図１６】
2010146181.tif 000018
【図１７】
2010146181.tif 000019