(57)【要約】【課題】従来、複数のデータを同時に参照する命令を使用する際、メモリバンクコンフリクトが起こらないように、ユーザが手動で、データをバンクに割り当てなければならず、非常に工数がかかる。【解決手段】同時に参照する複数のデータの情報を取得し、取得したデータを異なるバンクに割り当てることにより、メモリバンクコンフリクトがおこらないようなバンク割り当てを自動的に行う。また、異なるバンクに割り当てるデータを指定する命令や、データを割り当てるバンクを指定する命令により、ユーザの希望にも柔軟に対応することが可能である。【選択図】  図４
2004157695.tif 000002
【特許請求の範囲】
【請求項１】
演算命令でメモリ参照されるデータの情報を取得するステップ（ａ）と、
演算命令で同時にメモリ参照される複数のデータを異なるバンクに割り当てるステップ（ｂ）とを備える
ことを特徴とする情報処理方法。
【請求項２】
請求項１において、
バンク割り当て優先度を設定するステップ（ｃ）をさらに備え、
前記ステップ（ｂ）では、
前記ステップ（ｃ）によって設定された優先度の高いデータからバンクに割り当てる
ことを特徴とする情報処理方法。
【請求項３】
請求項２において、
前記ステップ（ｃ）では、
バンク割り当て優先度を、演算命令を繰り返し実行するループ回数により設定する
ことを特徴とする情報処理方法。
【請求項４】
請求項２において、
前記ステップ（ｃ）では、
バンク割り当て優先度を、データの使用頻度により設定する
ことを特徴とする情報処理方法。
【請求項５】
請求項２において、
前記ステップ（ｃ）によって設定された優先度の高いデータと同時に参照されるデータを検索するステップ（ｄ）をさらに備え、
前記ステップ（ｂ）では、
前記ステップ（ｄ）によって検索されたデータを優先的にバンクに割り当てることを特徴とする情報処理方法。
【請求項６】
異なるバンクに割り当てるデータを指定した命令を読み込むステップ（ａ）と、
異なるバンクに割り当てるよう指定されたデータを、異なるバンクに割り当てるステップ（ｂ）とを備える
ことを特徴とする情報処理方法。
【請求項７】
請求項６において、
前記ステップ（ｂ）では、
異なるバンクに割り当てるよう指定されたデータを、優先的にバンクに割り当てる
ことを特徴とする情報処理方法。
【請求項８】
請求項７において、
異なるバンクに割り当てるよう指定されたデータに、バンク割り当て優先度を設定するステップ（ｃ）をさらに備え、
前記ステップ（ｂ）では、
バンク割り当て優先度の高いデータからバンクに割り当てる
ことを特徴とする情報処理方法。
【請求項９】
データに対し、割り当てるバンクを指定した命令を読み込むステップ（ａ）と、
割り当てるバンクを指定されたデータを、指定されたバンクに割り当てるステップ（ｂ）とを備える
ことを特徴とする情報処理方法。
【請求項１０】
請求項９において、
前記ステップ（ｂ）では、
割り当てるバンクを指定されたデータを、優先的に指定されたバンクに割り当てる
ことを特徴とする情報処理方法。
【請求項１１】
演算命令で同時にメモリ参照される複数のデータの情報を取得し、異なるバンクに割り当てる
ことを特徴とする情報処理装置。
【請求項１２】
請求項１１において、
バンク割り当て優先度の高いデータからバンクを割り当てる
ことを特徴とする情報処理装置。
【請求項１３】
請求項１２において、
演算命令を繰り返し実行するループ回数を、バンク割り当て優先度として設定する
ことを特徴とする情報処理装置。
【請求項１４】
請求項１２において、
データの使用頻度を、バンク割り当て優先度として設定する
ことを特徴とする情報処理装置。
【請求項１５】
請求項１２において、
バンク割り当て優先度の高いデータと同時にメモリ参照されるデータも、優先的にバンクに割り当てる
ことを特徴とする情報処理装置。
【請求項１６】
異なるバンクに割り当てるデータを指定できる
ことを特徴とする情報処理装置。
【請求項１７】
請求項１６において、
異なるバンクに割り当てるよう指定されたデータを、優先的にバンクに割り当てる
ことを特徴とする情報処理装置。
【請求項１８】
請求項１７において、
異なるバンクに割り当てるよう指定されたデータに、バンク割り当て優先度を指定し、バンク割り当て優先度の高いデータからバンクに割り当てる
ことを特徴とする情報処理装置。
【請求項１９】
データに対し、割り当てるバンクを指定できる
ことを特徴とする情報処理装置。
【請求項２０】
請求項１９において、
割り当てるバンクを指定されたデータを、優先的に、指定されたバンクに割り当てる
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理方法およびその装置に関する。
【０００２】
【従来の技術】
ＤＳＰなどにおいてはデータ処理能力を高めるために、複数のデータを同時に処理する命令（たとえばＳＩＭＤ命令など）が多く使用されている。これらのデータはメモリバンクと呼ばれるメモリ領域に配置され、命令実行時に、必要なデータはデータバスを通って演算処理部に送られる。データバスはメモリバンクに対して１対１で接続されているため、１つのメモリバンクから演算処理部へ一度に複数のデータを送ることはできない。このため、複数のデータバスに対応させて複数のメモリバンクを設け、同時に処理される複数のデータをそれぞれ異なるバンクに配置している。これにより、同時に複数のデータに対してアクセス可能としている。従来は、このようなハードウエアの性能を引き出すために、ユーザがメモリへのデータの配置を細かく指定し、同時に参照されるデータは異なるメモリバンクに割り当てる必要があった。
【０００３】
【特許文献１】
特公平７−８６８３６号公報
【特許文献２】
特開２０００−１５５６７３号公報
【特許文献３】
特開２０００−３２６８号公報
【特許文献４】
特開平５−３３４０５５号公報
【０００４】
【発明が解決しようとする課題】
しかしながら開発規模の増大によりデータ数が増加するとユーザが手動でバンク割り当てを行うのは非常に煩雑であり工数がかかる。
【０００５】
本発明は上記問題点を解決するもので、同じメモリバンクにあるデータを参照した演算（以下、メモリバンクコンフリクトと記述）が起こらないように、同時に参照されるデータを異なるメモリバンクに割り当てる作業を自動的に行うことにより、ハードウエアの性能を最大限に引き出し、かつソフトの生産性を向上することを目的とする。
【０００６】
【課題を解決するための手段】
請求項１記載の発明は、演算命令でメモリ参照されるデータの情報を取得するステップと、演算命令で同時にメモリ参照される複数のデータを異なるバンクに割り当てるステップを持つことを特徴としており、メモリバンクコンフリクトがおこらないようなバンク割り当てを自動的に行うことができる。
【０００７】
請求項２記載の発明は、バンク割り当て優先度を設定するステップと、バンク割り当て優先度の高いデータからバンクに割り当てるステップを持つことを特徴としており、バンク割り当て優先度の高いデータは、優先的に、メモリバンクコンフリクトがおこらないようなバンク割り当てを行うことができる。
【０００８】
請求項３記載の発明は、バンク割り当て優先度を、演算命令を繰り返し実行するループ回数により設定するステップを持つことを特徴としており、ループにより繰り返し参照されるデータ集合は、優先的に、メモリバンクコンフリクトがおこらないようにバンクに割り当てることができる。
【０００９】
請求項４記載の発明は、バンク割り当て優先度を、データの使用頻度により設定するステップを持つことを特徴としており、使用頻度の高いデータは、優先的に、メモリバンクコンフリクトがおこらないようにバンクに割り当てることができる。
【００１０】
請求項５記載の発明は、バンク割り当て優先度の高いデータと同時に参照されるデータを検索するステップと、同時に参照されるデータのバンク割り当ても優先的に行うステップを持つことを特徴としており、すべてのデータが平均的にメモリバンクコンフリクトが起こらないようにバンクを割り当てることができる。
【００１１】
請求項６記載の発明は、異なるバンクに割り当てるデータを指定した命令を読み込むステップと、異なるバンクに割り当てるよう指定されたデータを異なるバンクに割り当てるステップを持つことを特徴としており、演算命令に関係なく、ユーザが指定したデータ集合を異なるバンクに割り当てることができる。
【００１２】
請求項７記載の発明は、異なるバンクに割り当てるデータを指定した命令を読み込むステップと、異なるバンクに割り当てるよう指定されたデータを優先的にバンクに割り当てるステップを持つことを特徴としており、演算命令に関係なく、ユーザが指定したデータ集合を優先的に異なるバンクに割り当てることができる。
【００１３】
請求項８記載の発明は、異なるバンクに割り当てるよう指定されたデータにバンク割り当て優先度を設定するステップと、異なるバンクに割り当てるよう指定されたデータのなかでもバンク割り当て優先度の高いデータから優先的にバンクに割り当てるステップを持つことを特徴としており、バンク割り当て優先度の高いデータは優先的にメモリバンクコンフリクトがおこらないようなバンク割り当てを行うことができる。
【００１４】
請求項９記載の発明は、データに対し、割り当てるバンクを指定した命令を読み込むステップと、割り当てるバンクを指定されたデータを指定されたバンクに割り当てるステップを持つことを特徴としており、ユーザが指定したデータを指定したバンクに割り当てることができる。
【００１５】
請求項１０記載の発明は、データに対し、割り当てるバンクを指定した命令を読み込むステップと、割り当てるバンクを指定されたデータを優先的にバンクに割り当てるステップを持つことを特徴としており、ユーザが指定したデータを優先的に指定したバンクに割り当てることができる。
【００１６】
請求項１１記載の発明は、演算命令で同時に使用する複数のデータの情報を取得し、異なるバンクに割り当てることを特徴としており、メモリバンクコンフリクトがおこらないようなバンク割り当てを自動的に行うことができる。
【００１７】
請求項１２記載の発明は、バンク割り当て優先度の高いデータからバンクに割り当てることを特徴としており、バンク割り当て優先度の高いデータは、優先的に、メモリバンクコンフリクトがおこらないようなバンク割り当てを行うことができる。
【００１８】
請求項１３記載の発明は、演算命令を繰り返し実行するループ回数を、バンク割り当て優先度として設定することを特徴としており、ループにより繰り返し使用されるデータ集合は、優先的に、メモリバンクコンフリクトがおこらないようにバンクに割り当てることができる。
【００１９】
請求項１４記載の発明は、データの使用頻度を、バンク割り当て優先度として設定することを特徴としており、使用頻度の高いデータは、優先的に、メモリバンクコンフリクトがおこらないようにバンクに割り当てることができる。
【００２０】
請求項１５記載の発明は、バンク割り当て優先度の高いデータと同時に使用するデータも、優先的にバンクに割り当てることを特徴としており、すべてのデータが平均的にメモリバンクコンフリクトが起こらないようにバンクに割り当てることができる。
【００２１】
請求項１６記載の発明は、異なるバンクに割り当てるデータを指定できることを特徴としており、演算命令に関係なく、異なるバンクに割り当てたいデータ集合を指定することができる。
【００２２】
請求項１７記載の発明は、異なるバンクに割り当てるよう指定されたデータを優先的にバンクに割り当てることを特徴としており、ユーザが指定したデータ集合を、優先的に異なるバンクに割り当てることができる。
【００２３】
請求項１８記載の発明は、異なるバンクに割り当てるよう指定されたデータに、バンク割り当て優先度を指定し、バンク割り当て優先度の高いデータからバンクに割り当てることを特徴としており、異なるバンクに割り当てるよう指定されたデータのなかで、優先度の高いデータは、優先的に、メモリバンクコンフリクトがおこらないようなバンク割り当てを行うことができる。
【００２４】
請求項１９記載の発明は、データに対し、割り当てるバンクを指定できることを特徴としており、ユーザが、あるデータに対して割り当てたいバンクを直接指定することができる。
【００２５】
請求項２０記載の発明は、割り当てるバンクを指定されたデータを優先的にバンクに割り当てることを特徴としており、ユーザが指定したデータを、指定されたバンクに優先的に割り当てることができる。
【００２６】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【００２７】
（第１の実施形態）
＜情報処理装置の構成＞
第１の実施形態による情報処理装置の構成を図１に示す。この情報処理装置は、Ｃ／Ｃ＋＋ソースファイルｆ１〜ｆ２およびアセンブラソースファイルｆ１３から実行形式ファイルｆ３１を作成する。Ｃ／Ｃ＋＋ソースファイルｆ１〜ｆ２は、ユーザによりＣ／Ｃ＋＋言語を用いて作成された入力ファイルである。アセンブラソースファイルｆ１３は、ユーザによりアセンブラ言語を用いて作成された入力ファイルである。
【００２８】
この情報処理装置によって作成された実行形式ファイルｆ３１は、図２に示すプロセッサ（ターゲット・コンピュータ）上で実行される。図２に示すプロセッサは、データメモリ１１と、データバスＤＢ１〜ＤＢ２と、演算処理部１２と、命令メモリ１３とを備える。データメモリ１１は、演算命令で参照されるデータが配置される領域である。データメモリ１１はメモリバンクＭＢ１〜ＭＢ２を含む。データバスＤＢ１はメモリバンクＭＢ１と演算処理部３とを結ぶ線である。データバスＤＢ２はメモリバンクＭＢ２と演算処理部３とを結ぶ線である。メモリバンクＭＢ１に配置されたデータはデータバスＤＢ１を通って演算処理部３に転送される。ところがデータバスＤＢ１は一度に複数のデータを転送することができないため、同じメモリバンクＭＢ１に配置された複数のデータを同時に転送することはできない。したがって、あるデータの転送が終了した後に次のデータを転送しなければならない。メモリバンクＭＢ２に配置されたデータについても同様である。演算処理部３は、データメモリ１１に配置されたデータを参照し、実際に演算処理を行う部分である。命令メモリ４は、演算処理部３で実行される演算命令が格納される領域である。
【００２９】
ふたたび図１を参照して、この情報処理装置は、コンパイラ１と、アセンブラ２と、リンカ３とを備える。コンパイラ１は、Ｃ／Ｃ＋＋ソースファイルｆ１〜ｆ２をアセンブラソースファイルｆ１１〜ｆ１２に変換する。アセンブラ２は、アセンブラソースファイルｆ１１〜ｆ１３をオブジェクトファイルｆ３１〜ｆ３３に変換する。アセンブラ２は、オブジェクトファイルｆ２１〜ｆ２３とともにバンク制御情報を出力する。リンカ３は、オブジェクトファイルｆ２１〜ｆ２３を結合させ実行形式ファイルｆ３１を生成する。リンカ３は、バンク制御情報に従ってバンク制御も行う。
【００３０】
＜リンカ３の内部構成＞
図１に示したリンカ３の内部構成を図３に示す。リンカ３は、入力部４と、結合部５と、バンク制御部６と、配置部７と、出力部８とを含む。入力部４では、オブジェクトファイルｆ２１〜ｆ２３が入力される。場合により配置指定命令も入力される。配置指定命令は、オブジェクトファイルｆ２１〜ｆ２３で使用されているデータをメモリ上に配置する際の配置場所を指定した命令であり、ユーザにより定義可能である。結合部５では、入力されたオブジェクトファイルｆ２１〜ｆ２３が１つの実行形式ファイルに結合される。バンク制御部６では、バンク制御情報に基づいて、オブジェクトファイルｆ２１〜ｆ２３で使用されているデータに対しバンク制御を行う。配置部７では、オブジェクトファイルｆ２１〜ｆ２３で使用されているデータを、バンク制御により指定されたバンクに配置する。出力部８は、入力部４から配置部７までの動作により作成された実行形式ファイルｆ３１を出力する。
【００３１】
＜メモリバンクへのデータの割り当て＞
次に、図２に示したプロセッサ上で実行される演算命令のうちメモリ参照されるデータのバンク割り当て（バンク制御）について図４を参照しつつ説明する。
【００３２】
ｅ１は、メモリ参照する命令文が記述された入力ファイルの一例である。ここで、入力ファイルｅ１に記述されたアセンブラ命令ｅ１−１〜ｅ１−１４について説明する。
【００３３】
アセンブラ命令ｅ１−１は、データＬ１が格納されているメモリのアドレスをレジスタＰ０に割り付ける命令である。アセンブラ命令ｅ１−２は、データＬ２が格納されているメモリのアドレスをレジスタＰ４に割り付ける命令である。
【００３４】
アセンブラ命令ｅ１−３は、アセンブラ命令ｅ１−３の次に実行されるアセンブラ命令ｅ１−４を１０回繰り返すことを指定するループ命令である。
【００３５】
アセンブラ命令ｅ１−４は、メモリを参照する命令（以後、メモリ参照命令と記述）である。アセンブラ命令ｅ１−４は、レジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータを、レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納することを示す。ｅ１−４で示される命令文に記述された”Ｍ”は、メモリ参照を行うことを意味する。レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ１、およびレジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ２は同時に参照されるため、データＬ１とデータＬ２とは異なるメモリバンクに割り当てる必要がある。
【００３６】
アセンブラ命令ｅ１−５は、データＬ３が格納されているメモリのアドレスをレジスタＰ０に割り付ける命令である。
【００３７】
アセンブラ命令ｅ１−６はメモリ参照命令であり、レジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータを、レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納することを示す。レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ３、およびレジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ２は同時に参照されるため、データＬ３とデータＬ２とは異なるメモリバンクに割り当てる必要がある。
【００３８】
アセンブラ命令ｅ１−７は、データＬ４が格納されているメモリのアドレスをレジスタＰ４に割り付ける命令である。
【００３９】
アセンブラ命令ｅ１−８はメモリ参照命令であり、レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納されているデータを、レジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納することを示す。レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ３、およびレジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ４は同時に参照されるため、データＬ３とデータＬ４とは異なるメモリバンクに割り当てる必要がある。
【００４０】
アセンブラ命令ｅ１−９は、データＬ１が格納されているメモリのアドレスをレジスタＰ４に割り付ける命令である。
【００４１】
アセンブラ命令ｅ１−１０はメモリ参照命令であり、レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納されているデータと、レジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータとの乗算結果をレジスタＲ０に割り付ける命令である。レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ３、およびレジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ１は同時に参照されるため、データＬ３とデータＬ１とは異なるメモリバンクに割り当てる必要がある。
【００４２】
アセンブラ命令ｅ１−１１は、データＬ５が格納されているメモリのアドレスをレジスタＰ０に割り付ける命令である。アセンブラ命令ｅ１−１２は、データＬ６が格納されているメモリのアドレスをレジスタＰ４に割り付ける命令である。アセンブラ命令ｅ１−１３は、アセンブラ命令ｅ１−１３の次に実行されるアセンブラ命令ｅ１−１４を２０回繰り返すことを指定するループ命令である。
【００４３】
アセンブラ命令ｅ１−１４はメモリ参照命令であり、レジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータを、レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納することを示す。レジスタＰ０に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ５、およびレジスタＰ４に割り付けられているメモリアドレスが指し示すメモリに格納されているデータＬ６は同時に参照されるため、データＬ５とデータＬ６とは異なるメモリバンクに割り当てる必要がある。
【００４４】
以上より、入力ファイルｅ１で参照されたデータＬ１〜Ｌ６をメモリバンクＭＢ１〜ＭＢ２に割り当てた結果がｅ２およびｅ３である。ｅ２は、入力ファイルｅ１で参照されたデータのうちメモリバンクＭＢ１に割り当てられたデータが格納されたメモリのアドレス集合を示す。ｅ３は、入力ファイルｅ１で参照されたデータのうちメモリバンクＭＢ２に割り当てられたデータが格納されたメモリのアドレス集合を示す。
【００４５】
次に、図４に示したようなバンク割り当て（バンク制御）を行う方法について説明する。ここでは、図２に示したプロセッサにおいて、すべてのデータに対してバンク割り当ての優先度はすべて等しいものとする。
【００４６】
図５および図６は、バンク制御の処理の流れを示すフロー図である。ここでは図５、図６のどちらの方法を用いてもかまわない。
【００４７】
図５は、演算処理部３で行われるメモリ参照命令に必要な情報を読み込みながら、メモリバンクコンフリクトが起こらないようなバンク割り当てを自動的に行うバンク制御の処理の流れを示す。
【００４８】
ステップＳＴ１００では、演算処理部３で行うメモリ参照命令を１つ読み込む。ステップＳＴ１０１では、ステップＳＴ１００で読み込んだメモリ参照命令に対しバンク制御に必要な情報を取得する。ステップＳＴ１０２では、バンク制御を行う。ステップＳＴ１０３では、演算処理部３で行うすべてのメモリ参照命令に対してバンク割り当てが終了したかどうかの判断を行う。ステップＳＴ１０３ですべて終了したと判断された場合は処理を終了し、終了していないと判断された場合はステップＳＴ１００に戻りステップＳＴ１００からＳＴ１０３の動作を繰り返す。
【００４９】
図６は、演算処理部３で行うメモリ参照命令に必要な情報をすべて読み込んだ後、メモリバンクコンフリクトが起こらないようなバンク割り当てを自動的に行うバンク制御の処理の流れを示す。
【００５０】
ステップＳＴ２００では、演算処理部３で行うメモリ参照命令を１つ読み込む。ステップＳＴ２０１では、ステップＳＴ２００で読み込んだメモリ参照命令に対し、バンク制御に必要な情報を取得する。ステップＳＴ２０２では、演算処理部３で行うすべてのメモリ参照命令に対して、バンク制御に必要な情報がすべて取得されたかどうかの判断を行う。ステップＳＴ２０３は、ステップＳＴ２０２ですべて取得されたと判断された場合にバンク制御を行う。ステップＳＴ２０２ですべて取得されたと判断されなかった場合はステップＳＴ２００に戻りステップＳＴ２００からＳＴ２０２の動作を繰り返す。
【００５１】
ここで、上述のバンク制御に必要な情報（以下、バンク制御情報と記述）について図４７（ａ）を用いて説明する。図４７（ａ）に示すバンク制御情報は、メモリ参照命令読み込み時に、その都度１つ作成される。バンク制御情報は、参照されるデータが格納されている複数のメモリのアドレス情報、および次のバンク制御情報の格納場所を示すアドレス情報を保持する。次のバンク制御情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク制御情報がリスト構造でつながっている。次のバンク制御情報の格納場所を示すアドレス情報は、次のバンク制御情報が作成された時点で登録される。
【００５２】
次に、図４７（ａ）に示したバンク制御情報を取得する動作について図７を参照しつつ説明する。
【００５３】
ｅ１は、メモリ参照する命令文が記述された入力プログラムの一例である。ｅ５は、メモリ参照命令ｅ１−４により取得されたバンク制御情報である。メモリ参照命令ｅ１−４ではデータＬ１およびデータＬ２を同時に参照するため、バンク制御情報ｅ５のメモリアドレス情報には、データＬ１が格納されているメモリのアドレス＿Ｌ１、およびデータＬ２が格納されているメモリのアドレス＿Ｌ２が登録される。
【００５４】
ｅ６は、メモリ参照命令ｅ１−６により取得されたバンク制御情報である。メモリ参照命令ｅ１−６ではデータＬ３およびデータＬ２を同時に参照するため、バンク制御情報ｅ６のメモリアドレス情報には、データＬ３が格納されているメモリのアドレス＿Ｌ３、およびデータＬ２が格納されているメモリのアドレス＿Ｌ２が登録される。バンク制御情報ｅ６はバンク制御情報ｅ５に接続される。
【００５５】
ｅ７は、メモリ参照命令ｅ１−８により取得されたバンク制御情報である。メモリ参照命令ｅ１−８ではデータＬ４およびデータＬ３を同時に参照するため、バンク制御情報ｅ７のメモリアドレス情報には、データＬ４が格納されているメモリのアドレス＿Ｌ４、およびデータＬ３が格納されているメモリのアドレス＿Ｌ３が登録される。バンク制御情報ｅ７はバンク制御情報ｅ６に接続される。
【００５６】
ｅ８は、メモリ参照命令ｅ１−１０により取得されたバンク制御情報である。メモリ参照命令ｅ１−１０ではデータＬ３およびデータＬ１を同時に参照するため、バンク制御情報ｅ８のメモリアドレス情報には、データＬ３が格納されているメモリのアドレス＿Ｌ３、およびデータＬ１が格納されているメモリのアドレス＿Ｌ１が登録される。バンク制御情報ｅ８はバンク制御情報ｅ７に接続される。
【００５７】
ｅ９は、メモリ参照命令ｅ１−１４により取得されたバンク制御情報である。メモリ参照命令ｅ１−１４ではデータＬ５およびデータＬ６を同時に参照するため、バンク制御情報ｅ９のメモリアドレス情報には、データＬ５が格納されているメモリのアドレス＿Ｌ５、およびデータＬ６が格納されているメモリのアドレス＿Ｌ６が登録される。バンク制御情報ｅ９はバンク制御情報ｅ８に接続される。
【００５８】
以上により、バンク制御情報ｅ５〜ｅ９で構成されたバンク制御情報リストｅ１０が作成される。
【００５９】
次に、図７に示したバンク制御情報を取得する動作を図８を参照しつつ具体的に説明する。図８は、図４７（ａ）に示したバンク制御情報を取得する動作のフロー図であり、図５のステップＳＴ１０１、図６のステップＳＴ２０１の動作に該当する。
【００６０】
ステップＳＴ３００では、演算処理部３で実行されるメモリ参照演算で参照されるデータが格納されているメモリのアドレス情報を取得する。ステップＳＴ３０１では、ステップＳＴ３００で取得したメモリのアドレス情報をバンク制御情報に登録し、バンク制御情報リストに接続する。
【００６１】
次に、バンク割り当ての優先度はすべて等しいとした場合のバンク制御方法を図９を参照しつつ説明する。
【００６２】
ｅ１０はバンク制御情報リストである。ｅ５〜ｅ９は、バンク制御情報リストｅ１０を構成するバンク制御情報である。ｅ１７〜ｅ２０は、バンク制御情報ｅ５〜ｅ９により作成されたバンク割り当てグループ情報である。ここで、第１の実施形態で作成されるバンク割り当てグループ情報について図４８（ａ）を用いて説明する。第１の実施形態では、図４８（ａ）に示されるバンク割り当てグループ情報Ａが作成される。
【００６３】
図４８（ａ）に示すバンク割り当てグループ情報は、バンク制御情報をもとに、同じバンクに割り当てられるデータが格納されたメモリアドレスは同じグループに、異なるバンクに割り当てられるデータが格納されたメモリアドレスは異なるグループにグループ分けを行った結果の情報、および次のバンク割り当てグループ情報の格納場所を示すアドレス情報を保持する。ここで、グループ数はバンク数に等しいものとする。また、次のバンク割り当てグループ情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク割り当てグループ情報がリスト構造でつながっている。次のバンク割り当てグループ情報の格納場所を示すアドレス情報は、次のバンク割り当てグループ情報が作成された時点で登録される。
【００６４】
これより、バンク制御情報ｅ５より作成されたバンク割り当てグループ情報ｅ１７は、バンク制御情報ｅ５のメモリアドレス情報に登録されているメモリアドレス＿Ｌ１をＧｒ（グループ）１、メモリアドレス＿Ｌ２をＧｒ２というように、データＬ１が格納されているメモリとデータＬ２が格納されているメモリを異なるグループにグループ分けした結果を示す。
【００６５】
また、バンク制御情報ｅ６より作成されたバンク割り当てグループ情報ｅ１８は、バンク制御情報ｅ６のメモリアドレス情報に登録されているメモアドレス＿Ｌ３とメモリアドレス＿Ｌ２をグループ分けした結果を示す。ここで、メモリアドレス＿Ｌ２は、バンク割り当てグループ情報ｅ１７で既にＧｒ２にグループ分けされているため、メモリアドレス＿Ｌ３は、メモリアドレス＿Ｌ２とは異なるグループであるＧｒ１にグループ分けする。バンク割り当てグループ情報ｅ１８は、バンク割り当てグループ情報ｅ１７に接続される。
【００６６】
同様にして、バンク制御情報ｅ７より作成されたバンク割り当てグループ情報ｅ１９は、メモリアドレス＿Ｌ３をグループＧｒ１、メモリアドレス＿Ｌ４をＧｒ２にグループ分けした結果を示す。バンク制御情報ｅ９より作成されたバンク割り当てグループ情報ｅ２０は、メモリアドレス＿Ｌ５をＧｒ１に、メモリアドレス＿Ｌ６をＧｒ２にグループ分けした結果を示す。
【００６７】
ここで、バンク制御情報ｅ８のメモリアドレス情報にはメモリアドレス＿Ｌ４およびメモリアドレス＿Ｌ３が登録されているが、バンク制御情報ｅ８の読み込み時には、既にメモリアドレス＿Ｌ４、メモリアドレス＿Ｌ３共にバンク割り当てグループ情報に登録されているため、新たにバンク割り当てグループ情報を作成する必要はない。
【００６８】
以上により、バンク割り当てグループ情報ｅ１７〜ｅ２０で構成されたバンク割り当てグループ情報リストｅ２１が作成され、バンク割り当てグループ情報リストｅ２１の先頭であるバンク割り当てグループ情報ｅ１７に登録されたメモリアドレスが示すデータから順にバンクが割り当てられる。
【００６９】
次に、図９に示したバンク制御方法について図１０を参照して具体的に説明する。
【００７０】
図１０は、すべてのデータに対してバンク割り当ての優先度はすべて等しいとした場合のバンク制御方法のフロー図であり、図５のステップＳＴ１０２、図６のステップＳＴ２０３の動作に該当する。
【００７１】
ステップＳＴ４００では、バンク制御情報リストの先頭を読み込む。
【００７２】
ステップＳＴ４０１では、読み込んだバンク制御情報内のメモリアドレス情報が示すメモリアドレスのなかでバンク割り当てグループ情報リストに登録されていないメモリアドレスが存在するかを判断する。
【００７３】
ステップＳＴ４０２では、ステップＳＴ４０１においてバンク割り当てグループ情報リストに登録されていないメモリアドレスが存在すると判断された場合に、登録されていないメモリアドレスを、同じバンク制御情報内のメモリアドレス情報が示すメモリアドレスが登録されているグループとは別のグループとしてバンク割り当てグループ情報リストに登録する。
【００７４】
ステップＳＴ４０３では、読み込んだバンク制御情報をバンク制御情報リストから削除する。
【００７５】
ステップＳＴ４０４では、バンク制御情報リストに処理されていないバンク制御情報が残っているかを判断する。ステップＳＴ４０４で、バンク制御情報リストに処理されていないバンク制御情報が残っていると判断された場合、ステップＳＴ４００に戻りステップＳＴ４００からＳＴ４０４の動作を繰り返す。ステップＳＴ４０４で、バンク制御情報リストに処理されていないバンク制御情報が残っていないと判断された場合、ステップＳＴ４０５においてバンク割り当てを実行する。
【００７６】
次に、図１０のステップＳＴ４０５の動作に該当する、バンク割り当て動作について図１１を参照して説明する。図１１は、すべてのデータに対してバンク割り当ての優先度はすべて等しいとした場合のバンク割り当て動作の例を図示したものである。
【００７７】
ｅ２１は、バンク割り当てグループ情報リストである。ｅ１７〜ｅ２０は、バンク割り当てグループ情報リストｅ２１を構成する、バンク割り当てグループ情報である。
【００７８】
ｅ２７およびｅ２８は、それぞれデータが格納されるメモリバンクであり、バンク割り当てグループ情報リストｅ２１の先頭にあるバンク割り当てグループ情報ｅ１７に登録されているメモリアドレスが指す領域に格納されているデータから順にバンク割り当てを行った結果を示す。図１１では、メモリバンクＭＢ１にデータＬ１、データＬ３、データＬ５を割り当て、メモリバンクＭＢ２にデータＬ２、データＬ４、データＬ６を割り当てたが、メモリバンクＭＢ１にデータＬ２、データＬ４、データＬ６を割り当て、メモリバンクＭＢ２にデータＬ１、データＬ３、データＬ５を割り当ててもかまわない。
【００７９】
次に、図１１に示したバンク割り当て動作について、具体的に図１２を用いて説明する。図１２は、すべてのデータに対してバンク割り当ての優先度はすべて等しいとした場合のバンク割り当て動作のフロー図であり、図１０のステップＳＴ４０５の動作に該当する。
【００８０】
ステップＳＴ５００では、バンク割り当てグループ情報リストの先頭を読み込む。
【００８１】
ステップＳＴ５０１では、読み込んだバンク割り当てグループ情報でグループ分けされたメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく独立してバンクに割り当てることが可能であるか、判断する。
【００８２】
ステップＳＴ５０１で独立してバンクに割り当てることが可能と判断された場合、ステップＳＴ５０２において、グループ分けされたメモリアドレスが指し示すデータ集合をそれぞれグループ毎に独立してバンクに割り当てる。ここで、グループ分けされたメモリアドレスが指し示すデータの中にすでにバンク割り当てされたデータがある場合、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。ステップＳＴ５０２で割り当てられた場合、メモリバンクコンフリクトは起こらない。
【００８３】
ステップＳＴ５０１で独立してバンクに割り当てることが可能と判断されなかった場合、ステップＳＴ５０３において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【００８４】
ステップＳＴ５０３において可能であると判断された場合、ステップＳＴ５０４において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部を、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ５０４で割り当てられた場合、一部、メモリバンクコンフリクトが起こる。
【００８５】
ステップＳＴ５０３において可能であると判断されなかった場合、ステップＳＴ５０５において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【００８６】
ステップＳＴ５０５において可能であると判断された場合、ステップＳＴ５０６において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ５０６で割り当てられた場合、メモリバンクコンフリクトが起こる。
【００８７】
ステップＳＴ５０５において可能であると判断されなかった場合、ステップＳＴ５０７においてエラー処理を行う。
【００８８】
ステップＳＴ５０８では、バンク割り当てグループ情報リストに次の情報が存在するか、判断する。ステップＳＴ５０８において存在すると判断された場合、ステップＳＴ５００に戻り、ステップＳＴ５００からＳＴ５０８の動作を繰り返す。
【００８９】
以上のように第１の実施形態によれば、メモリ参照命令で参照するデータを、使用される順に、メモリバンクコンフリクトが起こらないように、自動的にバンクを割り当てることが可能である。
【００９０】
（第２の実施形態）
第１の実施形態では、すべてのデータに対してバンク割り当ての優先度はすべて等しいものとしてバンク割り当てを行った。第２の実施形態では、ループ回数によりバンク割り当て優先度を設定し、バンク割り当て優先度の高いデータからバンク割り当てを行う。第２の実施形態では、図６に示した流れでバンク制御の処理を行う。
【００９１】
ここで、第２の実施形態において取得されるバンク制御情報について図４７（ｂ）を用いて説明する。図４７（ｂ）に示すバンク制御情報は、メモリ参照命令読み込み時に、その都度１つ作成される。バンク制御情報は、データが格納されている複数のメモリ情報、バンク制御を行う優先度情報、および次のバンク制御情報の格納場所を示すアドレス情報を保持する。ここで、バンク制御情報で設定されるバンク制御優先度は、命令を実行するループ回数に等しいものとする。また、次のバンク制御情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク制御情報がリスト構造でつながっている。次のバンク制御情報の格納先を示すアドレス情報は、次のバンク制御情報が作成された時点で登録される。
【００９２】
次に、図４７（ｂ）に示したバンク制御情報を取得する動作について図１３を参照しつつ説明する。
【００９３】
ｅ１は、メモリ参照する命令文が記述された入力プログラムの一例である。
【００９４】
ｅ３０は、メモリ参照命令ｅ１−４により取得されたバンク制御情報である。メモリ参照命令ｅ１−４ではデータＬ１およびデータＬ２を同時に参照するため、バンク制御情報ｅ３０のメモリアドレス情報には、データＬ１が格納されているメモリのアドレス＿Ｌ１、およびデータＬ２が格納されているメモリのアドレス＿Ｌ２が登録される。メモリ参照命令ｅ１−４は、ループ命令ｅ１−３によりループ回数が１０であるため、バンク制御情報ｅ３０のバンク制御優先度には１０が登録される。
【００９５】
ｅ３１は、メモリ参照命令ｅ１−６により取得されたバンク制御情報である。メモリ参照命令ｅ１−６ではデータＬ３およびデータＬ２を同時に参照するため、バンク制御情報ｅ３１のメモリアドレス情報には、データＬ３が格納されているメモリのアドレス＿Ｌ３、およびデータＬ２が格納されているメモリのアドレス＿Ｌ２が登録される。メモリ参照命令ｅ１−６の実行回数は１回であるため、バンク制御情報ｅ３１のバンク制御優先度には１を登録する。バンク制御情報ｅ３１はバンク制御情報ｅ３０に接続される。
【００９６】
ｅ３２は、メモリ参照命令ｅ１−８により取得されたバンク制御情報である。メモリ参照命令ｅ１−８ではデータＬ４およびデータＬ３を同時に参照するため、バンク制御情報ｅ３２のメモリアドレス情報には、データＬ４が格納されているメモリのアドレス＿Ｌ４、およびデータＬ３が格納されているメモリのアドレス＿Ｌ３が登録される。メモリ参照命令ｅ１−８の実行回数は１回であるため、バンク制御情報ｅ３２のバンク制御優先度には１を登録する。バンク制御情報ｅ３２はバンク制御情報ｅ３１に接続される。
【００９７】
ｅ３３は、メモリ参照命令ｅ１−１０により取得されたバンク制御情報である。メモリ参照命令ｅ１−１０ではデータＬ３およびデータＬ１を同時に参照するため、バンク制御情報ｅ３３のメモリアドレス情報には、データＬ３が格納されているメモリのアドレス＿Ｌ３、およびデータＬ１が格納されているメモリのアドレス＿Ｌ１が登録される。メモリ参照命令ｅ１−１０の実行回数は１回であるため、バンク制御情報ｅ３３のバンク制御優先度には１を登録する。バンク制御情報ｅ３３はバンク制御情報ｅ３２に接続される。
【００９８】
ｅ３４は、メモリ参照命令ｅ１−１４により取得されたバンク制御情報である。メモリ参照命令ｅ１−１４では、データＬ５およびデータＬ６を同時に参照するため、バンク制御情報ｅ３４のメモリアドレス情報には、データＬ５が格納されているメモリのアドレス＿Ｌ５、およびデータＬ６が格納されているメモリのアドレス＿Ｌ６が登録される。メモリ参照命令ｅ１−１４は、ループ命令ｅ１−１３によりループ回数が２０であるため、バンク制御情報ｅ３４のバンク制御優先度には２０が登録される。バンク制御情報ｅ３４はバンク制御情報ｅ３３に接続される。
【００９９】
以上により、バンク制御情報ｅ３０〜ｅ３４で構成されたバンク制御情報リストｅ３５が作成される。
【０１００】
次に、図１３の概念図で示されたバンク制御情報を取得する動作を図１４を用いて具体的に説明する。図１４は、図４７（ｂ）に示したバンク制御情報を取得する動作のフロー図であり、図６のステップＳＴ２０１の動作に該当する。
【０１０１】
ステップＳＴ６００では、演算処理部３で実行されるメモリ参照命令で参照されるデータが格納されているメモリのアドレス情報を取得する。
【０１０２】
ステップＳＴ６０１では、メモリ参照命令が実行されるループ回数をバンク制御優先度とする。
【０１０３】
ステップＳＴ６０２では、ステップＳＴ６００で取得したメモリのアドレス情報、およびステップＳＴ６０１で取得したバンク制御優先度をバンク制御情報に登録し、バンク制御情報リストに接続する。
【０１０４】
次に、第２の実施形態におけるバンク制御方法として、ループ回数によりバンク割り当て優先度が設定された場合にバンク割り当て優先度の高いデータからバンク割り当てを行うバンク制御方法を、図１５を参照して説明する。
【０１０５】
ｅ３５は、バンク制御情報リストである。
【０１０６】
ｅ３７は、バンク制御情報リストｅ３５をバンク制御優先度の高いものから順に並び替えたものである。ｅ３８〜ｅ４２は、バンク制御情報リストｅ３７を構成するバンク制御情報である。
【０１０７】
ｅ４３〜ｅ４６は、バンク制御情報ｅ３８〜ｅ４２により作成されたバンク割り当てグループ情報である。
【０１０８】
ここで、第２の実施形態で作成されるバンク割り当てグループ情報について図４８（ｂ）を用いて説明する。
【０１０９】
第２の実施形態では、図４８（ｂ）に示されるバンク割り当てグループ情報Ｂが作成される。図４８（ｂ）に示されるバンク割り当てグループ情報は、バンク制御情報をもとに、同じバンクに割り当てられるデータが格納されたメモリアドレスは同じグループに、異なるバンクに割り当てられるデータが格納されたメモリアドレスは異なるグループにグループ分けを行った結果の情報、バンクを割り当てる優先度情報、および次のバンク割り当てグループ情報の格納場所を示すアドレス情報を保持する。ここで、グループ数はバンク数に等しいものとする。また、次のバンク割り当てグループ情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク割り当てグループ情報がリスト構造でつながっている。次のバンク割り当てグループ情報の格納場所を示すアドレス情報は、次のバンク割り当てグループ情報が作成された時点で登録される。
【０１１０】
これより、バンク制御情報ｅ３８より作成されたバンク割り当てグループ情報ｅ４３は、バンク制御情報ｅ３８のメモリアドレス情報に登録されているメモリアドレス＿Ｌ５をＧｒ１、メモリアドレス＿Ｌ６をＧｒ２というように、データＬ５が格納されているメモリとデータＬ６が格納されているメモリを異なるグループにグループ分けした結果を示す。また、バンク割り当て優先度には、バンク制御情報ｅ３８のバンク制御優先度に登録されている値が登録される。
【０１１１】
バンク制御情報ｅ３９より作成されたバンク割り当てグループ情報ｅ４４は、バンク制御情報ｅ３９のメモリアドレス情報に登録されているメモリアドレス＿Ｌ１をＧｒ１、メモリアドレス＿Ｌ２をＧｒ２というように、データＬ１が格納されているメモリとデータＬ２が格納されているメモリを異なるグループにグループ分けした結果を示す。また、バンク割り当て優先度には、バンク制御情報ｅ３９のバンク制御優先度に登録されている値が登録される。バンク割り当てグループ情報ｅ４４は、バンク割り当てグループ情報ｅ４３に接続される。
【０１１２】
バンク制御情報ｅ４０より作成されたバンク割り当てグループ情報ｅ４５は、バンク制御情報ｅ４０のメモリアドレス情報に登録されているメモリアドレス＿Ｌ３とメモリアドレス＿Ｌ２をグループ分けした結果を示す。ここで、メモリアドレス＿Ｌ２は、バンク割り当てグループ情報ｅ４４で既にＧｒ２にグループ分けされているため、メモリアドレス＿Ｌ３は、メモリアドレス＿Ｌ２とは異なるグループであるＧｒ１にグループ分けする。また、バンク割り当て優先度には、バンク制御情報ｅ４０のバンク制御優先度に登録されている値が登録される。バンク割り当てグループ情報ｅ４５は、バンク割り当てグループ情報ｅ４４に接続される。
【０１１３】
同様にして、バンク制御情報ｅ４１より作成されたバンク割り当てグループ情報ｅ４６は、メモリアドレス＿Ｌ３をグループＧｒ１、メモリアドレス＿Ｌ４をＧｒ２にグループ分けした結果を示し、バンク割り当て優先度には、バンク制御情報ｅ４１のバンク制御優先度が登録される。
【０１１４】
ここで、バンク制御情報ｅ４２のメモリ情報には、メモリアドレス＿Ｌ３、およびメモリアドレス＿Ｌ１が登録されているが、バンク制御情報ｅ４２読み込み時には、既にメモリアドレス＿Ｌ３、メモリアドレス＿Ｌ１共にバンク割り当てグループ情報に登録されているため、新たにバンク割り当てグループ情報を作成する必要はない。
【０１１５】
以上により、バンク割り当てグループ情報ｅ４３〜ｅ４６で構成されたバンク割り当てグループ情報リストｅ４７が作成され、バンク割り当て優先度の高いバンク割り当てグループ情報ｅ４３に登録されたメモリアドレスが示すデータから順にバンクが割り当てられる。
【０１１６】
次に、図１５で示されたバンク制御方法について図１６を用いて具体的に説明する。図１６は、ループ回数によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータからバンク割り当てを行う場合のバンク制御方法のフロー図で、図５のステップＳＴ１０２の動作に該当する。
【０１１７】
ステップＳＴ７００では、バンク制御情報リスト中のバンク制御情報を、バンク制御優先度の高いものから順に並び替える。
【０１１８】
ステップＳＴ７０１では、バンク制御情報リストの先頭を読み込む。
【０１１９】
ステップＳＴ７０２では、読み込んだバンク制御情報内のメモリアドレス情報が示すメモリアドレスのなかで、バンク割り当てグループ情報リストに登録されていないメモリアドレスが存在するかを判断する。
【０１２０】
ステップＳＴ７０２で存在すると判断された場合、ステップＳＴ７０３において、登録されていないメモリアドレスを、同じバンク制御情報内のメモリアドレス情報が示すメモリアドレスが登録されているグループとは別のグループとしてバンク割り当てグループ情報リストに登録する。
【０１２１】
ステップＳＴ７０４では、読み込んだバンク制御情報をバンク制御情報リストから削除する。
【０１２２】
ステップＳＴ７０５では、バンク制御情報リストに処理されていないバンク制御情報が残っているかを判断する。
【０１２３】
ステップＳＴ７０５で残っていると判断された場合、ステップＳＴ７０１に戻り、ステップＳＴ７０１からＳＴ７０５の動作を繰り返す。
【０１２４】
ステップＳＴ７０５で残っていないと判断された場合、ステップＳＴ７０６においてバンク割り当てを実行する。
【０１２５】
次に、図１６のステップＳＴ７０６の動作に該当するバンク割り当て動作について図１７を用いて説明する。図１７は、ループ回数によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータからバンク割り当てを行う場合のバンク割り当て動作の例を図示したものである。
【０１２６】
ｅ４７は、バンク割り当てグループ情報リストである。ｅ４３〜ｅ４６は、バンク割り当てグループ情報リストｅ４７を構成するバンク割り当てグループ情報である。
【０１２７】
ｅ５３およびｅ５４は、データが格納されるメモリバンクであり、バンク割り当てグループ情報リストの先頭にあるバンク割り当てグループ情報ｅ４３に登録されているメモリアドレスが指し示すデータから順にバンク割り当てを行った結果を示す。ここで、図１７ではメモリバンクＭＢ１にデータＬ５、データＬ１、データＬ３を割り当て、メモリバンクＭＢ２にデータＬ６、データＬ２、データＬ４を割り当てたが、メモリバンクＭＢ１にデータＬ６、データＬ２、データＬ４を割り当て、メモリバンクＭＢ２にデータＬ５、データＬ１、データＬ３を割り当ててもかまわない。
【０１２８】
次に、図１７で示されたバンク割り当て動作について図１８を用いて具体的に説明する。図１８は、ループ回数によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータからバンク割り当てを行う場合のバンク割り当て動作のフロー図で、図１６のステップＳＴ７０６の動作に該当する。
【０１２９】
ステップＳＴ８００では、バンク割り当てグループ情報リストの先頭を読み込む。
【０１３０】
ステップＳＴ８０１では、読み込んだバンク割り当てグループ情報でグループ分けされたメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく独立してバンクに割り当てることが可能であるか、判断する。
【０１３１】
ステップＳＴ８０１で可能と判断された場合、ステップＳＴ８０２において、グループ分けされたメモリアドレスが指し示すデータ集合を、それぞれグループ毎に独立してバンクに割り当てる。ここで、グループ分けされたメモリアドレスが指し示すデータの中に、既にバンク割り当てされたデータがある場合、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。ステップＳＴ８０２で割り当てられた場合、メモリバンクコンフリクトは起こらない。
【０１３２】
ステップＳＴ８０１で可能と判断されなかった場合、ステップＳＴ８０３において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０１３３】
ステップＳＴ８０３で可能であると判断された場合、ステップＳＴ８０４において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部を、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ８０４で割り当てられた場合、一部、メモリバンクコンフリクトが起こる。
【０１３４】
ステップＳＴ８０３で可能であると判断されなかった場合、ステップＳＴ８０５において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０１３５】
ステップＳＴ８０５で可能であると判断された場合、ステップＳＴ８０６において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ８０６で割り当てられた場合、メモリバンクコンフリクトが起こる。
【０１３６】
ステップＳＴ８０５で可能であると判断されなかった場合、ステップＳＴ８０７においてエラー処理を行う。
【０１３７】
ステップＳＴ８０８では、バンク割り当てグループ情報リストに次の情報が存在するか判断する。ステップＳＴ８０８で存在すると判断された場合は、ステップＳＴ８００に戻り、ステップＳＴ８００からＳＴ８０８の動作を繰り返す。
【０１３８】
以上のように第２の実施形態によれば、ループにより繰り返し使用されるデータ集合を、ループ回数の多いデータ集合ほど優先的に、メモリバンクコンフリクトが起こらないように、自動的にバンクを割り当てることが可能である。
【０１３９】
（第３の実施形態）
第３の実施形態では、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行う。第３の実施形態では、図６に示した流れでバンク制御の処理を行う。また、第３の実施形態で取得されるバンク制御情報は、図４７（ｂ）で示されるバンク制御情報に等しいものとし、図４７（ｂ）で示されるバンク制御情報を取得する処理は、図１３に示した方法を用いる。
【０１４０】
次に、第３の実施形態におけるバンク制御方法として、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行う場合のバンク制御方法を図１９を用いて説明する。
【０１４１】
ｅ３５は、バンク制御情報リストである。ｅ３７は、バンク制御情報リストｅ３５をバンク制御優先度の高いものから順に並び替えたものである。ｅ３８〜ｅ４２は、バンク制御情報リストｅ３７を構成するバンク制御情報である。
【０１４２】
ｅ６２は、バンク制御情報ｅ３８により作成されたバンク割り当てグループ情報である。ｅ６３〜ｅ６６は、バンク制御情報ｅ３９〜ｅ４２により作成されるバンク割り当てグループ情報の完成までの経緯を示したものである。
【０１４３】
ここで、第３の実施形態で作成されるバンク割り当てグループ情報について、図４８（ｃ）を用いて説明する。第３の実施形態では、図４８（ｃ）に示されるバンク割り当てグループ情報Ｃが作成される。図４８（ｃ）に示されるバンク割り当てグループ情報は、バンク制御情報をもとに、同じバンクに割り当てられるデータが格納されたメモリアドレスは同じグループに、異なるバンクに割り当てられるデータが格納されたメモリアドレスは異なるグループにグループ分けを行った結果の情報、バンクを割り当てる総合優先度情報、および次のバンク割り当てグループ情報の格納場所を示すアドレス情報を保持する。ここで、グループ数はバンク数に等しいものとする。また、バンク割り当て総合優先度は、バンク制御情報処理時に、その都度バンク制御情報に登録されているバンク制御優先度を加算する。このため、使用頻度の高いデータが登録されたバンク割り当てグループ情報ほど、バンク割り当て総合優先度は高くなる。また、次のバンク割り当てグループ情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク割り当てグループ情報がリスト構造でつながっている。次のバンク割り当てグループ情報の格納場所を示すアドレス情報は、次のバンク割り当てグループ情報が作成された時点で登録される。
【０１４４】
これより、バンク制御情報ｅ３８より作成されたバンク割り当てグループ情報ｅ６２は、バンク制御情報ｅ３８のメモリアドレス情報に登録されているメモリアドレス＿Ｌ５をＧｒ１、メモリアドレス＿Ｌ６をＧｒ２というように、データＬ５が格納されているメモリとデータＬ６が格納されているメモリを異なるグループにグループ分けした結果を示す。また、バンク割り当て総合優先度には、バンク制御情報ｅ３８のバンク制御優先度に登録されている値が登録される。
【０１４５】
また、バンク制御情報ｅ３９より作成されたバンク割り当てグループ情報ｅ６３は、バンク制御情報ｅ３９のメモリアドレス情報に登録されているメモリアドレス＿Ｌ１をＧｒ１、メモリアドレス＿Ｌ２をＧｒ２というように、データＬ１が格納されているメモリとデータＬ２が格納されているメモリを異なるグループにグループ分けした結果を示す。また、バンク割り当て総合優先度には、バンク制御情報ｅ３９のバンク制御優先度に登録されている値が登録される。
【０１４６】
バンク割り当てグループ情報ｅ６３は、バンク割り当てグループ情報ｅ３９で既にグループ分けされたメモリアドレス＿Ｌ２の情報をもつバンク制御情報ｅ４０により、バンク割り当てグループ情報ｅ６４に更新される。バンク割り当てグループ情報ｅ６４では、メモリＬ３を、既にＧｒ２にグループ分けされたメモリＬ２とは異なるグループＧｒ１にグループ分けした結果を追加する。バンク割り当て総合優先度にはバンク割り当てグループ情報ｅ６３のバンク割り当て総合優先度にバンク制御情報ｅ４０のバンク制御優先度を加算したものを再登録する。
【０１４７】
バンク割り当てグループ情報ｅ６４は、バンク割り当てグループ情報ｅ６３で既にグループ分けされたメモリアドレス＿Ｌ１の情報をもつバンク制御情報ｅ４２により、バンク割り当てグループ情報ｅ６５に更新される。バンク割り当てグループ情報ｅ６５のバンク割り当て総合優先度には、バンク割り当てグループ情報ｅ６４のバンク割り当て総合優先度にバンク制御情報ｅ４２のバンク制御優先度を加算したものを再登録する。ここで、バンク制御情報ｅ４２に登録されているメモリアドレス＿Ｌ３および＿Ｌ１は、すでにバンク割り当てグループ情報に登録されているため、バンク割り当てグループ情報ｅ６５で追加されるメモリアドレス情報はない。
【０１４８】
バンク割り当てグループ情報ｅ６５は、バンク割り当てグループ情報ｅ６４で既にグループ分けされたメモリ＿Ｌ３の情報をもつバンク制御情報ｅ４１により、バンク割り当てグループ情報ｅ６６に更新される。バンク割り当てグループ情報ｅ６６では、メモリ＿Ｌ４を、既にＧｒ１にグループ分けされたメモリ＿Ｌ３とは異なるグループＧｒ２にグループ分けした結果を追加する。バンク割り当て総合優先度にはバンク割り当てグループ情報ｅ６５のバンク割り当て総合優先度に、バンク制御情報ｅ４１のバンク制御優先度を加算したものを再登録する。完成したバンク割り当てグループ情報ｅ６６は、バンク割り当てグループ情報ｅ６２に接続される。
【０１４９】
以上により、バンク割り当てグループ情報ｅ６２およびｅ６６で構成されたバンク割り当てグループ情報リストｅ６７が作成される。バンク割り当てグループ情報リストｅ６７は、バンク割り当て総合優先度の高いものから順に並び替えられ、バンク割り当て総合優先度の高いバンク割り当てグループ情報に登録されたメモリアドレスが示すデータから順にバンクが割り当てられる。
【０１５０】
次に、図１９で示されたバンク制御方法について、具体的に図２０を用いて説明する。図２０は、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行う場合のバンク制御方法のフロー図で、図６のステップＳＴ２０３の動作に該当する。
【０１５１】
ステップＳＴ９００では、バンク制御情報リスト中のバンク制御情報を、バンク制御優先度の高いものから順に並び替える。
【０１５２】
ステップＳＴ９０１では、バンク制御情報リストの先頭を読み込む。
【０１５３】
ステップＳＴ９０２では、バンク割り当てグループ情報リストに登録されていないメモリアドレスをバンク割り当てグループ情報リストに登録する。
【０１５４】
ステップＳＴ９０３では、バンク割り当てグループ情報リストにバンク割り当て総合優先度を登録する。
【０１５５】
ステップＳＴ９０４では、読み込んだバンク制御情報をバンク制御情報リストから削除する。
【０１５６】
ステップＳＴ９０５では、バンク制御情報リストに、処理されていないバンク制御情報が残っているかを判断する。
【０１５７】
ステップＳＴ９０５で残っていると判断された場合、ステップＳＴ９０６において、バンク制御情報リストから次のバンク制御情報を読み込む。
【０１５８】
ステップＳＴ９０７では、読み込んだバンク制御情報内のメモリ情報に、すでにバンク割り当てグループ情報リストに登録されたメモリアドレスが登録されているか判断する。
【０１５９】
ステップＳＴ９０７で登録されていると判断された場合、ステップＳＴ９０８において、バンク割り当てグループ情報リストに登録されていないメモリアドレスが、読み込んだバンク制御情報に登録されているかを判断する。
【０１６０】
ステップＳＴ９０８で、バンク割り当てグループ情報リストに登録されていないメモリアドレスが、読み込んだバンク制御情報のメモリアドレス情報に登録されていると判断された場合、ステップＳＴ９０９において、バンク割り当てグループ情報リストに登録されていないメモリアドレスを、同じバンク制御情報内のメモリアドレス情報が示すメモリアドレスが登録されているグループとは別のグループとして、バンク割り当てグループ情報リストに登録する。
【０１６１】
ステップＳＴ９１０では、バンク割り当てグループ情報リストのバンク割り当て総合優先度に、読み込んだバンク制御情報のバンク制御優先度を加算する。
【０１６２】
ステップＳＴ９１１では、読み込んだバンク制御情報をバンク制御情報リストから削除する。
【０１６３】
ステップＳＴ９１２では、読み込んだバンク制御情報は、バンク制御情報リスト内の最後の情報か、判断する。
【０１６４】
ステップＳＴ９１２で最後の情報であると判断された場合はステップＳＴ９０１に戻り、最後の情報でないと判断された場合はステップＳＴ９０５に戻る。
【０１６５】
ステップＳＴ９０５で、処理されていないバンク制御情報が残っていないと判断された場合、ステップＳＴ９１３においてバンク割り当てを実行する。
【０１６６】
次に、図２０のステップＳＴ９１３の動作に該当するバンク割り当て動作について図２１を用いて説明する。図２１は、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行う場合のバンク割り当て動作の例を図示したものである。
【０１６７】
ｅ６７は、バンク割り当てグループ情報リストである。ｅ６９は、バンク割り当てグループ情報リストｅ６７を、バンク割り当て総合優先度の高いものから順に並び替えたものである。
【０１６８】
ｅ７０およびｅ７１は、バンク割り当てグループ情報リストｅ６９を構成するバンク割り当てグループ情報である。
【０１６９】
ｅ７２およびｅ７３は、データが格納されるメモリバンクであり、バンク割り当てグループ情報リストｅ６９の先頭にあるバンク割り当てグループ情報ｅ７０に登録されているメモリアドレスが指す領域に格納されているデータから順に、バンク割り当てを行った結果を示す。ここで、図２１ではメモリバンクＭＢ１にデータＬ５、データＬ１、データＬ３を割り当て、メモリバンクＭＢ２にデータＬ６、データＬ２、データＬ４を割り当てたが、メモリバンクＭＢ１にデータＬ６、データＬ２、データＬ４を割り当て、メモリバンクＭＢ２にデータＬ５、データＬ１、データＬ３を割り当ててもかまわない。
【０１７０】
次に、図２１で示されたバンク割り当て動作について、具体的に図２２を用いて説明する。図２２は、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行う場合のバンク割り当て動作のフロー図で、図２０のステップＳＴ９１３の動作に該当する。
【０１７１】
ステップＳＴ１０００では、バンク割り当てグループ情報リストを、バンク割り当て総合優先度の高いものから順に並び替える。
【０１７２】
ステップＳＴ１００１では、バンク割り当てグループ情報リストの先頭を読み込む。
【０１７３】
ステップＳＴ１００２では、読み込んだバンク割り当てグループ情報でグループ分けされたメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく、独立してバンクに割り当てることが可能であるか、判断する。
【０１７４】
ステップＳＴ１００２で、独立してバンクに割り当てることが可能と判断された場合、ステップＳＴ１００３において、グループ分けされたメモリアドレスが指し示すデータ集合を、それぞれグループ毎に独立してバンクに割り当てる。ここで、グループ分けされたメモリの中に、既にバンク割り当てされたデータがある場合は、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。ステップＳＴ１００３で割り当てられた場合、メモリバンクコンフリクトは起こらない。
【０１７５】
ステップＳＴ１００２で、独立してバンクに割り当てることが可能と判断されなかった場合、ステップＳＴ１００４において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０１７６】
ステップＳＴ１００４で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１００５において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部を、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ１００５で割り当てられた場合、一部、メモリバンクコンフリクトが起こる。
【０１７７】
ステップＳＴ１００４で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１００６において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０１７８】
ステップＳＴ１００６で、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１００７において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ１００７で割り当てられた場合、メモリバンクコンフリクトが起こる。
【０１７９】
ステップＳＴ１００６で、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１００８においてエラー処理を行う。
【０１８０】
ステップＳＴ１００９では、バンク割り当てグループ情報リストに次の情報が存在するか、判断する。
【０１８１】
ステップＳＴ１００９で、存在すると判断された場合はステップＳＴ１００１に戻り、ステップＳＴ１００１からＳＴ１００９の動作を繰り返す。
【０１８２】
以上のように第３の実施形態によれば、使用頻度の高いデータと、使用頻度の高いデータと同時に使用するデータを優先的に、メモリバンクコンフリクトが起こらないように、自動的にバンクを割り当てることにより、すべてのデータに対し、平均的にメモリバンクコンフリクトが起こらないようにバンクを割り当てることが可能である。
【０１８３】
（第４の実施形態）
第４の実施形態では、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行い、かつ、バンク割り当て優先度の高いデータと同時に使用するデータも、バンク割り当て優先度の高いものからバンク割り当てを行う。第４の実施形態では、図５に示した流れでバンク制御の処理を行う。また、第４の実施形態で取得されるバンク制御情報は、図４７（ｂ）で示されるバンク制御情報に等しいものとし、図４７（ｂ）で示されるバンク制御情報を取得する処理は図１３に示した方法を用いる。
【０１８４】
次に、第４の実施形態におけるバンク制御方法として、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行い、かつ、バンク割り当て優先度の高いデータと同時に使用するデータも、バンク割り当て優先度の高いものからバンク割り当てを行う場合のバンク制御方法を、図２３を用いて説明する。
【０１８５】
ｅ３５は、バンク制御情報リストである。ｅ３７は、バンク制御情報リストｅ３５をバンク制御優先度の高いものから順に並び替えたものである。ｅ３８〜ｅ４２は、バンク制御情報リストｅ３７を構成するバンク制御情報である。
【０１８６】
ｅ８１は、バンク制御情報ｅ３８により作成されたバンク割り当てグループ情報で、ｅ８２〜ｅ８５は、バンク制御情報ｅ３９〜ｅ４２により作成されるバンク割り当てグループ情報の、完成までの経緯を示したものである。
【０１８７】
ここで、第４の実施形態で作成されるバンク割り当てグループ情報について、図４８（ｄ）を用いて説明する。第４の実施形態では、図４８（ｄ）に示されるバンク割り当てグループ情報Ｄが作成される。
【０１８８】
図４８（ｄ）に示されるバンク割り当てグループ情報は、バンク制御情報をもとに、同じバンクに割り当てられるデータが格納されたメモリアドレスは同じグループに、異なるバンクに割り当てられるデータが格納されたメモリアドレスは異なるグループにグループ分けを行った結果の情報、バンクを割り当てる総合優先度情報、および次のバンク割り当てグループ情報の格納場所を示す情報を保持する。ここで、バンク制御情報をもとにグループ分けされたメモリアドレス情報は、バンク制御情報別に、バンク割り当て情報１、バンク割り当て情報２、・・・、バンク割り当て情報ｍという形で持ち、バンク割り当て情報は、登録されているメモリアドレスの優先度をそれぞれもつ。また、ここで分けられるグループ数はバンク数に等しいものとする。また、バンク割り当て総合優先度は、バンク制御情報処理時に、その都度バンク制御情報に登録されているバンク制御優先度を加算する。このため、使用頻度の高いデータが登録されたバンク割り当てグループ情報ほど、バンク割り当て総合優先度は高くなる。また、次のバンク割り当てグループ情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク割り当てグループ情報がリスト構造でつながっている。次のバンク割り当てグループ情報の格納場所を示すアドレス情報は、次のバンク割り当てグループ情報が作成された時点で登録される。
【０１８９】
これより、バンク制御情報ｅ３８より作成されたバンク割り当てグループ情報ｅ８１は、バンク制御情報ｅ３８のメモリアドレス情報に登録されているメモリアドレス＿Ｌ５をＧｒ１、メモリアドレス＿Ｌ６をＧｒ２というように、データＬ５が格納されているメモリとデータＬ６が格納されているメモリを異なるグループにグループ分けした結果をバンク割り当て情報１に示す。また、バンク割り当て情報１の優先度はバンク制御情報ｅ７６のバンク制御優先度を登録する。バンク割り当て総合優先度には、バンク制御情報ｅ７６のバンク制御優先度を登録する。
【０１９０】
また、バンク制御情報ｅ３９より作成されたバンク割り当てグループ情報ｅ８２は、バンク制御情報ｅ３９のメモリアドレス情報に登録されているメモリアドレス＿Ｌ１をＧｒ１、メモリアドレス＿Ｌ２をＧｒ２というように、データＬ１が格納されているメモリとデータＬ２が格納されているメモリを異なるグループにグループ分けした結果をバンク割り当て情報１に示す。バンク割り当て情報１の優先度はバンク制御情報ｅ３９のバンク制御優先度を登録する。また、バンク割り当て総合優先度には、バンク制御情報ｅ３９のバンク制御優先度を登録する。
【０１９１】
バンク割り当てグループ情報ｅ８２は、バンク割り当てグループ情報ｅ８２で既にグループ分けされたメモリアドレス＿Ｌ２の情報をもつバンク制御情報ｅ４０により、バンク割り当てグループ情報ｅ８３に更新される。バンク割り当てグループ情報ｅ８３では、メモリアドレス＿Ｌ３を、既にＧｒ２にグループ分けされたメモリアドレス＿Ｌ２とは異なるグループＧｒ１にグループ分けした結果をバンク割り当て情報２として追加する。バンク割り当て情報２の優先度には、バンク制御情報ｅ４０のバンク制御優先度を登録する。また、バンク割り当て総合優先度には、バンク割り当てグループ情報ｅ８２のバンク割り当て総合優先度に、バンク制御情報ｅ４０のバンク制御優先度を加算したものを再登録する。
【０１９２】
バンク割り当てグループ情報ｅ８３は、バンク割り当てグループ情報ｅ８２で既にグループ分けされたメモリアドレス＿Ｌ１の情報をもつバンク制御情報ｅ４２により、バンク割り当てグループ情報ｅ８４に更新される。バンク割り当てグループ情報ｅ８４のバンク割り当て総合優先度には、バンク割り当てグループ情報ｅ８３のバンク割り当て総合優先度に、バンク制御情報ｅ４２のバンク制御優先度を加算したものを再登録する。ここで、バンク制御情報ｅ４２に登録されているメモリアドレス＿Ｌ３および＿Ｌ１は、すでにバンク割り当てグループ情報に登録されているため、バンク割り当てグループ情報ｅ８４で追加されるバンク割り当て情報はない。
【０１９３】
バンク割り当てグループ情報ｅ８４は、バンク割り当てグループ情報ｅ８３で既にグループ分けされたメモリアドレス＿Ｌ３の情報をもつバンク制御情報ｅ４１により、バンク割り当てグループ情報ｅ８５に更新される。バンク割り当てグループ情報ｅ８５では、メモリアドレス＿Ｌ４を、既にＧｒ１にグループ分けされたメモリアドレス＿Ｌ３とは異なるグループＧｒ２にグループ分けした結果をバンク割り当て情報３として追加する。バンク割り当て情報３の優先度には、バンク制御情報ｅ４１のバンク制御優先度を登録する。また、バンク割り当て総合優先度には、バンク割り当てグループ情報ｅ８４の総合優先度に、バンク制御情報ｅ４１の優先度を加算したものを再登録する。以上より、完成したバンク割り当てグループ情報ｅ８５は、バンク割り当てグループ情報ｅ８１に接続される。
【０１９４】
以上により、バンク割り当てグループ情報ｅ８１およびｅ８５で構成されたバンク割り当てグループ情報リストｅ８６が作成される。バンク割り当てグループ情報リストｅ８６は、バンク割り当て総合優先度の高いものから順に並び替えられ、バンク割り当て総合優先度の高いバンク割り当てグループ情報のバンク割り当て情報１に登録されたメモリアドレスが示すデータから順にバンクが割り当てられる。
【０１９５】
次に、図２３で示されたバンク制御方法について、具体的に図２４を用いて説明する。図２４は、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行い、かつ、バンク割り当て優先度の高いデータと同時に使用するデータも、バンク割り当て優先度の高いものからバンク割り当てを行う場合のバンク制御方法のフロー図で、図５のステップＳＴ１０２の動作に該当する。
【０１９６】
ステップＳＴ１１００では、バンク制御情報リスト中のバンク制御情報をバンク制御優先度の高いものから順に並び替える。
【０１９７】
ステップＳＴ１１０１では、バンク制御情報リストの先頭を読み込む。
【０１９８】
ステップＳＴ１１０２では、バンク割り当てグループ情報リストに登録されていないメモリアドレスを、バンク割り当てグループ情報リストに登録する。
【０１９９】
ステップＳＴ１１０３では、バンク割り当てグループ情報リストにバンク割り当て総合優先度を登録する。
【０２００】
ステップＳＴ１１０４では、読み込んだバンク制御情報をバンク制御情報リストから削除する。
【０２０１】
ステップＳＴ１１０５では、バンク制御情報リストに、処理されていないバンク制御情報が残っているかを判断する。
【０２０２】
ステップＳＴ１１０５で、処理されていないバンク制御情報が残っていると判断された場合、ステップＳＴ１１０６において、バンク制御情報リストから、次のバンク制御情報を読み込む。
【０２０３】
ステップＳＴ１１０７では、読み込んだバンク制御情報内のメモリアドレス情報に、すでにバンク割り当てグループ情報リストに登録されたメモリアドレスが登録されていないか判断する。
【０２０４】
ステップＳＴ１１０７で、読み込んだバンク制御情報内のメモリアドレス情報に、すでにバンク割り当てグループ情報リストに登録されたメモリアドレスが登録されていると判断された場合、ステップＳＴ１１０８において、バンク割り当てグループ情報リストに登録されていないメモリアドレスがバンク制御情報に登録されているかを判断する。
【０２０５】
ステップＳＴ１１０８で、バンク割り当てグループ情報リストに登録されていないメモリアドレスが、バンク制御情報のメモリアドレス情報に登録されていると判断された場合、ステップＳＴ１１０９において、バンク割り当てグループ情報リストに登録されていないメモリアドレスを、同じバンク制御情報内のメモリアドレス情報が示すメモリアドレスが登録されているグループとは別のグループとして、バンク割り当てグループ情報リストに登録する。
【０２０６】
ステップＳＴ１１１０では、バンク割り当てグループ情報リストのバンク割り当て総合優先度に、読み込んだバンク制御情報のバンク制御優先度を加算する。
【０２０７】
ステップＳＴ１１１１では、読み込んだバンク制御情報をバンク制御情報リストから削除する。
【０２０８】
ステップＳＴ１１１２では、読み込んだバンク制御情報は、バンク制御情報リスト内の最後の情報か判断する。
【０２０９】
ステップＳＴ１１１２で、最後の情報であると判断された場合は、ステップＳＴ１１０１に戻り、最後の情報でないと判断された場合は、ステップＳＴ１１０５に戻る。
【０２１０】
ステップＳＴ１１０５で、処理されていないバンク制御情報が残っていないと判断された場合、ステップＳＴ１１１３においてバンク割り当てを実行する。
【０２１１】
次に、図２４のステップＳＴ１１１３の動作に該当するバンク割り当て動作について図２５を用いて説明する。図２５は、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行い、かつ、バンク割り当て優先度の高いデータと同時に使用するデータも、バンク割り当て優先度の高いものからバンク割り当てを行う場合のバンク割り当て動作の例を図示したものである。
【０２１２】
ｅ８６は、バンク割り当てグループ情報リストである。ｅ８８は、バンク割り当てグループ情報リストｅ８６をバンク割り当て総合優先度の高いものから順に並び替えたものである。ｅ８９およびｅ９０は、バンク割り当てグループ情報リストｅ８８を構成するバンク割り当てグループ情報である。
【０２１３】
ｅ９１およびｅ９２は、データが格納されるメモリバンクであり、バンク割り当てグループ情報リストｅ８８の先頭にあるバンク割り当てグループ情報ｅ８９に登録されているメモリアドレスが指す領域に格納されているデータから順に、バンク割り当てを行った結果を示す。ここで、図２５ではメモリバンクＭＢ１にデータＬ５、データＬ１、データＬ３を割り当て、メモリバンクＭＢ２にデータＬ６、データＬ２、データＬ４を割り当てたが、メモリバンクＭＢ１にデータＬ６、データＬ２、データＬ４を割り当て、メモリバンクＭＢ２にデータＬ５、データＬ１、データＬ３を割り当ててもかまわない。
【０２１４】
次に、図２５で示されたバンク割り当て動作について、具体的に図２６を用いて説明する。図２６は、データの使用頻度によりバンク割り当て優先度が設定された場合に、バンク割り当て優先度の高いデータ、およびバンク割り当て優先度の高いデータと同時に使用するデータのバンク割り当てを優先的に行い、かつ、バンク割り当て優先度の高いデータと同時に使用するデータも、バンク割り当て優先度の高いものからバンク割り当てを行う場合のバンク割り当て動作のフロー図で、図２４のステップＳＴ１１１３の動作に該当する。
【０２１５】
ステップＳＴ１２００では、バンク割り当てグループ情報リストをバンク割り当て総合優先度順に並べ替える。
【０２１６】
ステップＳＴ１２０１では、バンク割り当てグループ情報リストの先頭を読み込む。
【０２１７】
ステップＳＴ１２０２では、読み込んだバンク割り当てグループ情報でグループ分けされたメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく、独立してバンクに割り当てることが可能であるか、判断する。
【０２１８】
ステップＳＴ１２０２で、独立してバンクに割り当てることが可能と判断された場合、ステップＳＴ１２０３において、グループ分けされたメモリアドレスが指し示すデータ集合を、それぞれグループ毎に独立してバンクに割り当てる。ここで、グループ分けされたメモリアドレスが指し示すデータの中に、既にバンク割り当てされたデータがある場合、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。ステップＳＴ１２０３で割り当てられた場合、メモリバンクコンフリクトは起こらない。
【０２１９】
ステップＳＴ１２０２で、独立しバンクに割り当てることが可能と判断されなかった場合、ステップＳＴ１２０４において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０２２０】
ステップＳＴ１２０４で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１２０５において、バンク割り当てグループ情報内のバンク割り当て情報を、優先度の高いものから順に並べ替える。
【０２２１】
ステップＳＴ１２０６では、バンク割り当て情報の先頭を読み込む。
【０２２２】
ステップＳＴ１２０７では、読み込んだバンク割り当て情報内でグループ分けされているメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく、独立してバンクに割り当てることが可能であるか、判断する。
【０２２３】
ステップＳＴ１２０７で、独立してバンクに割り当てることが可能と判断された場合、ステップＳＴ１２０８において、グループ分けされたメモリアドレスが指し示すデータを、それぞれグループ毎に独立してバンクに割り当てるステップである。ここで、グループ分けされたメモリアドレスが指し示すデータの中に、既にバンク割り当てされたデータがある場合、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。
【０２２４】
ステップＳＴ１２０７で、独立してバンクに割り当てることが可能と判断されなかった場合、ステップＳＴ１２０９において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部を、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。
【０２２５】
ステップＳＴ１２１０では、バンク割り当てグループ情報内に、処理されていないバンク割り当て情報が存在するか、判断する。
【０２２６】
ステップＳＴ１２１０で、存在すると判断された場合、ステップＳＴ１２０６に戻り、ステップＳＴ１２０６からＳＴ１２１０の処理を繰り返す。ステップＳＴ１２０５からＳＴ１２１０の処理で割り当てられた場合、一部、メモリバンクコンフリクトが起こる。
【０２２７】
ステップＳＴ１２０４で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１２１１において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０２２８】
ステップＳＴ１２１１で、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１２１２において、バンク割り当てグループ情報内のバンク割り当て情報を、優先度の高いものから順に並べ替える。
【０２２９】
ステップＳＴ１２１３は、バンク割り当て情報の先頭を読み込む。
【０２３０】
ステップＳＴ１２１４は、読み込んだバンク割り当て情報内でグループ分けされているメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく、独立してバンクに割り当てることが可能であるか、判断する。
【０２３１】
ステップＳＴ１２１４で、独立してバンクに割り当てることが可能と判断された場合、ステップＳＴ１２１５において、グループ分けされたメモリアドレスが指し示すデータを、それぞれグループ毎に独立してバンクに割り当てる。ここで、グループ分けされたメモリアドレスが指し示すデータの中に、既にバンク割り当てされたデータがある場合は、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。
【０２３２】
ステップＳＴ１２１４で、独立してバンクに割り当てることが可能と判断されなかった場合、ステップＳＴ１２１６において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。
【０２３３】
ステップＳＴ１２１７では、バンク割り当てグループ情報内に、処理されていないバンク割り当て情報が存在するか、判断する。
【０２３４】
ステップＳＴ１２１７で、存在すると判断された場合、ステップＳＴ１２１３に戻り、ステップＳＴ１２１３からＳＴ１２１７の処理を繰り返す。ステップＳＴ１２１２からＳＴ１２１７の処理で割り当てられた場合、メモリバンクコンフリクトが起こる。
【０２３５】
ステップＳＴ１２１１で、あるグループにグループ分けされたメモリアドレスが指し示すデータが、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１２１８においてエラー処理を行う。
【０２３６】
ステップＳＴ１２１９では、バンク割り当てグループ情報リストに次の情報が存在するか、判断する。
【０２３７】
ステップＳＴ１２１９で、存在すると判断された場合は、ステップＳＴ１２０１に戻り、ステップＳＴ１２０１からＳＴ１２１９の動作を繰り返す。
【０２３８】
以上のように第４の実施形態によれば、使用頻度の高いデータと、使用頻度の高いデータと同時に使用するデータを優先的に、メモリバンクコンフリクトが起こらないように、自動的にバンクを割り当てることにより、すべてのデータに対し、平均的にメモリバンクコンフリクトが起こらないようにバンクを割り当てることが可能である。また、使用頻度の高いデータと、使用頻度の高いデータと同時に使用するデータを、優先度の高いものからバンク割り当てを行うことにより、バンク容量が足らない場合にも、優先度の高いデータは、メモリバンクコンフリクトが起こらないようにバンクを割り当てることが可能である。
【０２３９】
（第５の実施形態）
第５の実施形態では、バンク制御命令により、実施の形態１から実施の形態４で示した機能をユーザ記述で支援する。
【０２４０】
図２７は、バンク制御命令により、異なるバンクに割り当てるデータが指定された場合のバンク割り当ての例を示したものである。ｅ９３は、メモリ参照命令およびバンク制御命令が記述された入力ファイルの一例であり、入力ファイルｅ１にバンク制御命令ｅ９３−１，ｅ９３−１２を追加したものに等しい。
【０２４１】
バンク制御命令ｅ９３−１は、データＬ１とデータＬ２を異なるバンクに割り当てるよう指定する命令で、指定されたデータＬ１とＬ２は、優先的に異なるバンクに割り当てられる。
【０２４２】
バンク制御命令ｅ９３−１２は、データＬ５とデータＬ６を異なるバンクに割り当てるよう指定する命令で、指定されたデータＬ５とＬ６は、優先的に異なるバンクに割り当てられる。
【０２４３】
これより、バンク制御命令で指定されたデータＬ１、Ｌ２、Ｌ５、Ｌ６を優先的にバンクに割り当てた結果の一例がｅ９４およびｅ９５である。
【０２４４】
バンク制御命令で指定されたデータをバンクに割り当てた後、入力ファイルｅ９３で参照されるデータのうち、バンク制御命令でバンクを割り当てられていないデータＬ３、Ｌ４がバンクに割り当てられる。バンク制御命令で指定されていないデータをバンクに割り当てた後の、メモリバンクの一例がｅ９６およびｅ９７である
以上より、入力ファイルｅ９３で参照されたデータＬ１〜Ｌ６をすべてバンクに割り当てた結果、メモリバンクはｅ９６、ｅ９７のようになる。
【０２４５】
次に、図２７に示されるようなバンク制御命令を用いたバンク割り当てを行う方法について説明する。
【０２４６】
図２８は、バンク制御命令により、異なるバンクに割り当てるデータが指定された場合におけるバンク制御の処理の流れを示すフロー図である。
【０２４７】
ステップＳＴ１３００では、バンク制御命令、または演算処理部３で行うメモリ参照命令を１つ読み込む。
【０２４８】
ステップＳＴ１３０１では、読み込んだ命令文はバンク制御命令か判断する。
【０２４９】
ステップＳＴ１３０１で、読み込んだ命令文はバンク制御命令であると判断された場合、ステップＳＴ１３０２において、バンク制御命令に対し、バンク制御命令によるバンク制御に必要な情報（以下、バンク制御命令情報と記述）を取得する。
【０２５０】
ステップＳＴ１３０１で、読み込んだ命令文はバンク制御命令であると判断されなかった場合、ステップＳＴ１３０３において、読み込んだ命令文に対し、バンク制御情報を取得する。ステップＳＴ１３０３における処理は、図７または図１３に示した方法を用いて行う。
【０２５１】
ステップＳＴ１３０４では、すべてのバンク制御命令、またはすべてのメモリ参照命令に対して、バンク制御命令情報、またはバンク制御情報がすべて取得されたか、判断する。
【０２５２】
ステップＳＴ１３０４で、すべて取得されたと判断されなかった場合は、ステップＳＴ１３００に戻り、ステップＳＴ１３００からＳＴ１３０４の動作を繰り返す。
【０２５３】
ステップＳＴ１３０４で、すべて取得されたと判断された場合、ステップＳＴ１３０５において、バンク制御命令で指定されたデータのバンク制御を行う。
【０２５４】
ステップＳＴ１３０６は、メモリ参照命令で参照されるデータのうち、バンク制御命令で指定されていないデータに対して、バンク制御を行うステップで、ステップＳＴ１３０３で取得したバンク制御情報にあわせて、図１０，１６，２０，２４で示されるいずれかの方法を用いる。
【０２５５】
ここで、第５の実施形態で取得されるバンク制御命令情報について図４９（ａ）を用いて説明する。図４９（ａ）で示されるバンク制御命令情報は、バンク制御命令読み込み時に、その都度１つ作成される。バンク制御命令情報は、バンク制御命令で指定されたデータが格納されているメモリアドレス情報、および次のバンク制御命令情報の格納場所を示すアドレス情報を保持する。次のバンク制御命令情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク制御命令情報がリスト構造でつながっている。次のバンク制御命令情報の格納先を示すアドレス情報は、次のバンク制御命令情報が作成された時点で登録される。
【０２５６】
次に、図４９（ａ）で示されるバンク制御命令情報を取得する動作について、図２９を用いて説明する。
【０２５７】
ｅ９３は、メモリ参照命令およびバンク制御命令が記述された入力プログラムの一例である。ｅ９９は、バンク制御命令ｅ９８−１により取得されたバンク制御命令情報である。バンク制御命令ｅ９８−１ではデータＬ１とデータＬ２を異なるバンクに割り当てるよう指定されているため、バンク制御命令情報ｅ９９のメモリアドレス情報には、データＬ１が格納されているメモリのアドレス＿Ｌ１、およびデータＬ２が格納されているメモリのアドレス＿Ｌ２が登録される。
【０２５８】
ｅ１００は、バンク制御命令ｅ９８−１２により取得されたバンク制御命令情報である。バンク制御命令ｅ９８−１２ではデータＬ５とデータＬ６を異なるバンクに割り当てるよう指定されているため、バンク制御命令情報ｅ１００のメモリアドレス情報には、データＬ５が格納されているメモリのアドレス＿Ｌ５、およびデータＬ６が格納されているメモリのアドレス＿Ｌ６が登録される。また、バンク制御命令情報ｅ１００は、バンク制御命令情報ｅ９９に接続される。
【０２５９】
以上により、バンク制御命令情報ｅ９９、ｅ１００で構成された、バンク制御命令情報リストｅ１０１が作成される。
【０２６０】
次に、図２９で示されたバンク制御命令情報を取得する動作を、具体的に図３０を用いて説明する。図３０は、図４９（ａ）で示されるバンク制御命令情報を取得する動作のフロー図で、図２８のステップＳＴ１３０２の動作に該当する。
【０２６１】
ステップＳＴ１４００では、バンク制御命令により、異なるバンクに割り当てるよう指定されたデータが格納されているメモリのアドレス情報を取得する。
【０２６２】
ステップＳＴ１４０１では、ステップＳＴ１４００で取得したメモリアドレス情報をバンク制御命令情報に登録し、バンク制御命令情報リストに接続する。
【０２６３】
次に、第５の実施形態におけるバンク制御方法として、バンク制御命令により異なるバンクに割り当てるデータが指定された場合のバンク制御方法を、図３１を用いて説明する。
【０２６４】
ｅ１０１は、バンク制御命令情報リストである。ｅ１０３およびｅ１０４は、バンク制御命令情報リストｅ１０１を構成するバンク制御命令情報である。
【０２６５】
ｅ１０５およびｅ１０６は、バンク制御命令情報ｅ９９およびｅ１００により作成された、バンク制御命令用バンク割り当てグループ情報である。
【０２６６】
ここで、第５の実施形態で作成される、バンク制御命令用バンク割り当てグループ情報について、図５０（ａ）を用いて説明する。第５の実施形態では、図５０（ａ）に示される、バンク制御命令用バンク割り当てグループ情報ａが作成される。図５０（ａ）に示される、バンク制御命令用バンク割り当てグループ情報ａは、バンク制御命令情報をもとに、同じバンクに割り当てられるデータが格納されたメモリアドレスは同じグループに、異なるバンクに割り当てられるデータが格納されたメモリアドレスは異なるグループにグループ分けを行った結果の情報、および次のバンク割り当てグループ情報ａの格納場所を示すアドレス情報を保持する。ここで、グループ数はバンク数に等しいものとする。また、次のバンク割り当てグループ情報ａの格納場所を示すアドレス情報を持つことにより、すべてのバンク制御命令用バンク割り当てグループ情報ａがリスト構造でつながっている。次のバンク割り当てグループ情報ａの格納場所を示すアドレス情報は、次のバンク割り当てグループ情報ａが作成された時点で登録される。
【０２６７】
これより、バンク制御命令情報ｅ９９より作成されたバンク制御命令用バンク割り当てグループ情報ｅ１０５は、バンク制御命令情報ｅ９９のメモリアドレス情報に登録されているメモリアドレス＿Ｌ１をＧｒ１、メモリアドレス＿Ｌ２をＧｒ２というように、データＬ１が格納されているメモリとデータＬ２が格納されているメモリを異なるグループにグループ分けした結果を示す。
【０２６８】
次に、バンク制御命令情報ｅ１００より作成されたバンク制御命令用バンク割り当てグループ情報ｅ１０６は、バンク制御命令情報ｅ１００のメモリアドレス情報に登録されているメモリアドレス＿Ｌ５をＧｒ１、メモリアドレス＿Ｌ６をＧｒ２というように、データＬ５が格納されているメモリとデータＬ６が格納されているメモリを異なるグループにグループ分けした結果を示す。バンク制御命令用バンク割り当てグループ情報ｅ１０６は、バンク制御命令用バンク割り当てグループ情報ｅ１０５に接続される。
【０２６９】
以上により、バンク制御命令用バンク割り当てグループ情報ｅ１０５，ｅ１０６で構成されたバンク制御命令用バンク割り当てグループ情報リストｅ１０７が作成され、バンク割り当てグループ情報リストｅ１０７の先頭であるバンク制御命令用バンク割り当てグループ情報ｅ１０５に登録されたメモリアドレスが指し示すデータから順にバンクが割り当てられる。
【０２７０】
次に、図３１で示された、バンク制御命令に対するバンク制御方法について、具体的に図３２を用いて説明する。図３２は、バンク制御命令により異なるバンクに割り当てるデータが指定された場合のバンク制御方法のフロー図で、図２８のステップＳＴ１３０５の動作に該当する。
【０２７１】
ステップＳＴ１５００では、バンク制御命令情報リストの先頭を読み込む。
【０２７２】
ステップＳＴ１５０１では、読み込んだバンク制御命令情報内のメモリアドレス情報が示すメモリアドレスのなかで、バンク制御命令用バンク割り当てグループ情報リストａに登録されていないメモリアドレスが存在するか、を判断する。
【０２７３】
ステップＳＴ１５０１で、バンク制御命令用バンク割り当てグループ情報リストａに登録されていないメモリアドレスが存在すると判断された場合、ステップＳＴ１５０２において、登録されていないメモリアドレスを、同じバンク制御命令情報内のメモリアドレス情報が示すメモリアドレスが登録されているグループとは別のグループとして、バンク割り当てグループ情報リストａに登録する。
【０２７４】
ステップＳＴ１５０３では、読み込んだバンク制御命令情報をバンク制御命令情報リストから削除する。
【０２７５】
ステップＳＴ１５０４では、バンク制御命令情報リストに処理されていないバンク制御命令情報が残っているか、を判断する。
【０２７６】
ステップＳＴ１５０４で、バンク制御命令情報リストに処理されていないバンク制御命令情報が残っていると判断された場合、ステップＳＴ１５００に戻り、ステップＳＴ１５００からＳＴ１５０４の動作を繰り返す。
【０２７７】
ステップＳＴ１５０４で、バンク制御命令情報リストに処理されていないバンク制御命令情報が残っていないと判断された場合、ステップＳＴ１５０５においてバンク割り当てを実行する。
【０２７８】
次に、図３２のステップＳＴ１５０５の動作に該当する、バンク割り当て動作について、図３３で示される例を用いて説明する。図３３は、バンク制御命令により異なるバンクに割り当てるデータが指定された場合のバンク割り当て動作の例を図示したものである。
【０２７９】
ｅ１０７は、バンク制御命令用バンク割り当てグループ情報リストである。ｅ１０５およびｅ１０６は、バンク制御命令用バンク割り当てグループ情報リストｅ１０７を構成する、バンク制御命令用バンク割り当てグループ情報である。
【０２８０】
ｅ１１１およびｅ１１２は、それぞれデータが格納されるメモリバンクであり、バンク制御命令により、異なるバンクに割り当てるよう指定されたデータのバンク割り当て結果を示す一例で、バンク制御命令用バンク割り当てグループ情報リストｅ１０７の先頭にあるバンク制御命令用バンク割り当てグループ情報ｅ１０５に登録されているメモリアドレスが指す領域に格納されているデータから順にバンク割り当てを行った結果を示す。ここで、図３３ではメモリバンクＭＢ１にデータＬ１、データＬ５を割り当て、メモリバンクＭＢ２にデータＬ２、データＬ６を割り当てたが、メモリバンクＭＢ１にデータＬ２、データＬ６を割り当て、メモリバンクＭＢ２にデータＬ１、データＬ５を割り当ててもかまわない。
【０２８１】
次に、図３３で示されたバンク割り当て動作について、具体的に図３４を用いて説明する。図３４は、バンク制御命令により異なるバンクに割り当てるデータが指定された場合のバンク割り当て動作のフロー図で、図３２のステップＳＴ１５０５の動作に該当する。
【０２８２】
ステップＳＴ１６００では、バンク制御命令用バンク割り当てグループ情報リストａの先頭を読み込む。
【０２８３】
ステップＳＴ１６０１では、読み込んだバンク割り当てグループ情報ａでグループ分けされたメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく、独立してバンクに割り当てることが可能であるか、判断する。
【０２８４】
ステップＳＴ１６０１で、独立してバンクに割り当てることが可能と判断された場合、ステップＳＴ１６０２において、グループ分けされたメモリアドレスが指し示すデータ集合を、それぞれグループ毎に独立してバンクに割り当てる。ここで、グループ分けされたメモリアドレスが指し示すデータの中に、既にバンク割り当てされたデータがある場合、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。ステップＳＴ１６０２で割り当てられた場合、メモリバンクコンフリクトは起こらない。
【０２８５】
ステップＳＴ１６０１で、独立してバンクに割り当てることが可能と判断されなかった場合、ステップＳＴ１６０３において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０２８６】
ステップＳＴ１６０３で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１６０４において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部を、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ１６０４で割り当てられた場合、一部、メモリバンクコンフリクトが起こる。
【０２８７】
ステップＳＴ１６０３で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１６０５において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０２８８】
ステップＳＴ１６０５で、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１６０６において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ１６０６で割り当てられた場合、メモリバンクコンフリクトが起こる。
【０２８９】
ステップＳＴ１６０５で、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１６０７においてエラー処理を行う。
【０２９０】
ステップＳＴ１６０８では、バンク制御命令用バンク割り当てグループ情報リストａに次の情報が存在するか、判断する。
【０２９１】
ステップＳＴ１６０８で存在すると判断された場合は、ステップＳＴ１６００に戻り、ステップＳＴ１６００からＳＴ１６０８の動作を繰り返す。
【０２９２】
以上のように第５の実施形態によれば、ユーザが指定したデータ集合を、優先的に、メモリバンクコンフリクトがおこらないようなバンク割り当てを行うことができる。
【０２９３】
（第６の実施形態）
第６の実施形態では、バンク制御命令で、バンク制御を行う優先度を設定した場合の、バンク割り当て方法について説明する。第６の実施形態では、図２８に示した方法を用いる。ここで、第６の実施形態で取得されるバンク制御命令情報について図４９（ｂ）を用いて説明する。図４９（ｂ）で示されるバンク制御命令情報は、バンク制御命令読み込み時に、その都度１つ作成される。バンク制御命令情報は、バンク制御命令で指定されたデータが格納されているメモリアドレス情報、バンク制御優先度情報、および次のバンク制御命令情報の格納場所を示すアドレス情報を保持する。次のバンク制御命令情報の格納場所を示すアドレス情報を持つことにより、すべてのバンク制御命令情報がリスト構造でつながっている。次のバンク制御命令情報の格納先を示すアドレス情報は、次のバンク制御命令情報が作成された時点で登録される。
【０２９４】
次に、図４９（ｂ）で示されるバンク制御命令情報を取得する動作について、図３５を用いて説明する。
【０２９５】
ｅ１１３は、メモリ参照命令およびバンク制御命令が記述された入力プログラムの一例である。入力プログラムｅ１１３は、入力プログラムｅ９３内のバンク制御命令ｅ９３−１を優先度付きのバンク制御命令ｅ１１３−１に、また、バンク制御命令ｅ９３−１２を優先度付きのバンク制御命令ｅ１１３−１２に変更したものに等しい。
【０２９６】
ｅ１１４は、バンク制御命令ｅ１１３−１により取得されたバンク制御命令情報である。バンク制御命令ｅ１１３−１では、優先度１０で、データＬ１とデータＬ２を異なるバンクに割り当てるよう指定されているため、バンク制御命令情報ｅ１１４のメモリアドレス情報には、データＬ１が格納されているメモリのアドレス＿Ｌ１、およびデータＬ２が格納されているメモリのアドレス＿Ｌ２が登録され、バンク割り当て優先度には１０が登録される。
【０２９７】
ｅ１１５は、バンク制御命令ｅ１１３−１２により取得されたバンク制御命令情報である。バンク制御命令ｅ１１３−１２では、優先度２０で、データＬ５とデータＬ６を異なるバンクに割り当てるよう指定されているため、バンク制御命令情報ｅ１１５のメモリアドレス情報には、データＬ５が格納されているメモリのアドレス＿Ｌ５、およびデータＬ６が格納されているメモリのアドレス＿Ｌ６が登録され、バンク割り当て優先度には２０が登録される。また、バンク制御命令情報ｅ１１５は、バンク制御命令情報ｅ１１４に接続される。
【０２９８】
以上により、バンク制御命令情報ｅ１１４，ｅ１１５で構成されたバンク制御命令情報リストｅ１１６が作成される。
【０２９９】
次に、図３５で示されたバンク制御命令情報を取得する動作を、具体的に図３６を用いて説明する。図３６は、図４９（ｂ）で示されるバンク制御命令情報を取得する動作のフロー図で、図２８のステップＳＴ１３０２の動作に該当する。
【０３００】
ステップＳＴ１７００では、異なるバンクに割り当てるよう指定されたデータが格納されているメモリのアドレス情報を取得する。
【０３０１】
ステップＳＴ１７０１では、指定された優先度を、バンク制御優先度とする。
【０３０２】
ステップＳＴ１７０２では、ステップＳＴ１７００で取得したメモリアドレス情報、およびステップＳＴ１７０１で取得したバンク制御優先度を、バンク制御命令情報に登録し、バンク制御命令情報リストに接続する。
【０３０３】
次に、第６の実施形態におけるバンク制御方法として、バンク制御命令で、バンク制御を行う優先度を設定した場合のバンク制御方法を、図３７を用いて説明する。
【０３０４】
ｅ１１６は、バンク制御命令情報リストである。ｅ１１８は、バンク制御命令情報リストｅ１１６を優先度の高いものから順に並べ替えたものである。ｅ１１９およびｅ１２０は、バンク制御命令情報リストｅ１１８を構成するバンク制御命令情報である。ｅ１２１およびｅ１２２は、バンク制御命令情報ｅ１１９およびｅ１２０により作成された、バンク制御命令用バンク割り当てグループ情報である。
【０３０５】
ここで、第６の実施形態で作成される、バンク制御命令用バンク割り当てグループ情報について、図５０（ｂ）を用いて説明する。第６の実施形態では、図５０（ｂ）に示される、バンク制御命令用バンク割り当てグループ情報ｂが作成される。
【０３０６】
図５０（ｂ）に示される、バンク制御命令用バンク割り当てグループ情報ｂは、バンク制御命令情報をもとに、同じバンクに割り当てられるデータが格納されたメモリアドレスは同じグループに、異なるバンクに割り当てられるデータが格納されたメモリアドレスは異なるグループにグループ分けを行った結果の情報、バンク割り当てを行う優先度情報、および次のバンク割り当てグループ情報ｂの格納場所を示すアドレス情報を保持する。ここで、グループ数はバンク数に等しいものとする。また、次のバンク割り当てグループ情報ｂの格納場所を示すアドレス情報を持つことにより、すべてのバンク制御命令用バンク割り当てグループ情報ｂがリスト構造でつながっている。次のバンク割り当てグループ情報ｂの格納場所を示すアドレス情報は、次のバンク割り当てグループ情報ｂが作成された時点で登録される。
【０３０７】
これより、バンク制御命令情報ｅ１１９より作成された、バンク制御命令用バンク割り当てグループ情報ｅ１２１は、バンク制御命令情報ｅ１１９のメモリアドレス情報に登録されているメモリアドレス＿Ｌ５をＧｒ１、メモリアドレス＿Ｌ６をＧｒ２というように、データＬ５が格納されているメモリとデータＬ６が格納されているメモリを異なるグループに、グループ分けした結果を示す。また、バンク割り当て優先度には、バンク制御命令情報ｅ１１９に登録されている、優先度を登録する。
【０３０８】
次に、バンク制御命令情報ｅ１２０より作成された、バンク制御命令用バンク割り当てグループ情報ｅ１２２は、バンク制御命令情報ｅ１２０のメモリアドレス情報に登録されているメモリアドレス＿Ｌ１をＧｒ１、メモリアドレス＿Ｌ２をＧｒ２というように、データＬ１が格納されているメモリとデータＬ２が格納されているメモリを異なるグループに、グループ分けした結果を示す。また、バンク割り当て優先度には、バンク制御命令情報ｅ１２０に登録されている、優先度を登録する。バンク制御命令用バンク割り当てグループ情報ｅ１２２は、バンク制御命令用バンク割り当てグループ情報ｅ１２１に接続される。
【０３０９】
以上により、バンク制御命令用バンク割り当てグループ情報ｅ１２１，ｅ１２２で構成されたバンク制御命令用バンク割り当てグループ情報リストｅ１２３が作成され、バンク割り当てグループ情報リストｅ１２３の先頭であるバンク制御命令用バンク割り当てグループ情報ｅ１２１に登録されたメモリアドレスが指し示すデータから順に、バンクが割り当てられる。
【０３１０】
次に、図３７で示された、バンク制御命令に対するバンク制御方法について、具体的に図３８を用いて説明する。図３８は、バンク制御命令で、バンク制御を行う優先度を設定した場合のバンク制御方法のフロー図で、図２８のステップＳＴ１３０５の動作に該当する。
【０３１１】
ステップＳＴ１８００では、バンク制御命令情報リストを優先度の高いものから順に並び替える。
【０３１２】
ステップＳＴ１８０１では、バンク制御命令情報リストの先頭を読み込む。
【０３１３】
ステップＳＴ１８０２では、読み込んだバンク制御命令情報内のメモリアドレス情報が示すメモリアドレスのなかで、バンク制御命令用バンク割り当てグループ情報リストｂに登録されていないメモリアドレスが存在するか、を判断する。
【０３１４】
ステップＳＴ１８０２で、バンク制御命令用バンク割り当てグループ情報リストｂに登録されていないメモリアドレスが存在すると判断された場合、ステップＳＴ１８０３において、登録されていないメモリアドレスを、同じバンク制御命令情報内のメモリアドレス情報が示すメモリアドレスが登録されているグループとは別のグループとして、バンク割り当てグループ情報リストｂに登録する。
【０３１５】
ステップＳＴ１８０４では、読み込んだバンク制御命令情報をバンク制御命令情報リストから削除する。
【０３１６】
ステップＳＴ１８０５では、バンク制御命令情報リストに処理されていないバンク制御命令情報が残っているか、を判断する。
【０３１７】
ステップＳＴ１８０５で、バンク制御命令情報リストに処理されていないバンク制御命令情報が残っていると判断された場合、ステップＳＴ１８０１に戻り、ステップＳＴ１８０１からＳＴ１８０５の動作を繰り返す。
【０３１８】
ステップＳＴ１８０５で、バンク制御命令情報リストに処理されていないバンク制御命令情報が残っていないと判断された場合、ステップＳＴ１８０６においてバンク割り当てを実行する。
【０３１９】
次に、図３８のステップＳＴ１８０６の動作に該当する、バンク割り当て動作について、図３９で示される例を用いて説明する。図３９は、バンク制御命令で、バンク制御を行う優先度を設定した場合のバンク割り当て動作の例を図示したものである。
【０３２０】
ｅ１２３は、バンク制御命令用バンク割り当てグループ情報リストである。ｅ１２１およびｅ１２２は、バンク制御命令用バンク割り当てグループ情報リストｅ１２３を構成する、バンク制御命令用バンク割り当てグループ情報である。
【０３２１】
ｅ１２７およびｅ１２８は、それぞれデータが格納されるメモリバンクであり、バンク制御命令により、異なるバンクに割り当てるよう指定されたデータのバンク割り当て結果を示す一例で、バンク制御命令用バンク割り当てグループ情報リストの先頭にある、バンク制御命令用バンク割り当てグループ情報ｅ１２１に登録されているメモリアドレスが指す領域に格納されているデータから順に、バンク割り当てを行った結果を示す。ここで、図３９ではメモリバンクＭＢ１にデータＬ５、データＬ１を割り当て、メモリバンクＭＢ２にデータＬ６、データＬ２を割り当てたが、メモリバンクＭＢ１にデータＬ６、データＬ２を割り当て、メモリバンクＭＢ２にデータＬ５、データＬ１を割り当ててもかまわない。
【０３２２】
次に、図３９で示されたバンク割り当て動作について、具体的に図４０を用いて説明する。図４０は、バンク制御命令で、バンク制御を行う優先度を設定した場合のバンク割り当て動作のフロー図で、図３８のステップＳＴ１８０６の動作に該当する。
【０３２３】
ステップＳＴ１９００では、バンク制御命令用バンク割り当てグループ情報リストｂの先頭を読み込む。
【０３２４】
ステップＳＴ１９０１では、読み込んだバンク割り当てグループ情報ｂでグループ分けされたメモリアドレスが指し示すデータが、それぞれグループ毎に、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることなく、独立してバンクに割り当てることが可能であるか、判断する。
【０３２５】
ステップＳＴ１９０１で、独立してバンクに割り当てることが可能と判断された場合、ステップＳＴ１９０２において、グループ分けされたメモリアドレスが指し示すデータ集合を、それぞれグループ毎に独立してバンクに割り当てる。ここで、グループ分けされたメモリアドレスが指し示すデータの中に、既にバンク割り当てされたデータがある場合、バンク割り当てされていないデータは、バンク割り当てされたデータを割り当てたバンクとは別のバンクに割り当てるものとする。ステップＳＴ１９０２で割り当てられた場合、メモリバンクコンフリクトは起こらない。
【０３２６】
ステップＳＴ１９０１で、独立してバンクに割り当てることが可能と判断されなかった場合、ステップＳＴ１９０３において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０３２７】
ステップＳＴ１９０３で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１９０４において、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部を、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ１９０４で割り当てられた場合、一部、メモリバンクコンフリクトが起こる。
【０３２８】
ステップＳＴ１９０３で、あるグループにグループ分けされたメモリアドレスが指し示すデータの一部が、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てられることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１９０５において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であるか、判断する。
【０３２９】
ステップＳＴ１９０５で、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断された場合、ステップＳＴ１９０６において、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てる。ステップＳＴ１９０６で割り当てられた場合、メモリバンクコンフリクトが起こる。
【０３３０】
ステップＳＴ１９０５で、あるグループにグループ分けされたメモリアドレスが指し示すデータを、他のグループにグループ分けされたメモリアドレスが指し示すデータと同じバンクに割り当てることにより、すべてのデータをバンクに割り当てることが可能であると判断されなかった場合、ステップＳＴ１９０７においてエラー処理を行う。
【０３３１】
ステップＳＴ１９０８では、バンク制御命令用バンク割り当てグループ情報リストｂに次の情報が存在するか、判断する。
【０３３２】
ステップＳＴ１９０８で、存在すると判断された場合は、ステップＳＴ１９００に戻り、ステップＳＴ１９００からＳＴ１９０８の動作を繰り返す。
【０３３３】
以上のように第６の実施形態によれば、ユーザが指定したデータ集合のなかで、優先度を設定することにより、特に重要なデータに対しては、メモリバンクコンフリクトがおこらないようなバンク割り当てを行うことができる。
【０３３４】
（実施の形態７）
第７の実施形態では、バンク指定命令を用いたバンク割り当て方法について説明する。バンク指定命令により、実施の形態１から実施の形態４で示した機能を、ユーザ記述で支援する方法について、図４１を用いて説明する。図４１は、バンク指定命令により、あるデータに対し、割り当てるバンクが指定された場合のバンク割り当ての最も簡単な例として、プロセッサのバンク数が２である場合のバンク割り当ての例を図示したものである。
【０３３５】
ｅ１２９は、メモリ参照命令、バンク制御命令、バンク指定命令が記述された入力ファイルの一例であり、入力ファイルｅ９３にバンク指定命令ｅ１２９−１２，ｅ１２９−１３を追加したものに等しい。
【０３３６】
バンク指定命令ｅ１２９−１２は、データＬ５をメモリバンクＭＢ１に割り当てるよう指定する命令で、指定されたデータＬ５は、優先的にメモリバンクＭＢ１に割り当てられる。
【０３３７】
バンク制御命令ｅ１２９−１３は、データＬ６をメモリバンクＭＢ２に割り当てるよう指定する命令で、指定されたデータＬ６は、優先的にメモリバンクＭＢ２に割り当てられる。
【０３３８】
これより、バンク指定命令で指定されたデータＬ５、Ｌ６を優先的にバンクに割り当てた結果の例がｅ１３０およびｅ１３１である。
【０３３９】
バンク指定命令で指定されたデータを指定されたバンクに割り当てた後、バンク制御命令で、異なるバンクに割り当てるよう指定されたデータＬ１、Ｌ２がバンクに割り当てられる。バンク指定命令で指定されたデータを指定されたバンクに割り当てた後の、メモリバンクの一例がｅ１３２およびｅ１３３である。
【０３４０】
バンク制御命令で指定されたデータをバンクに割り当てた後、入力ファイルｅ１２９で参照されるデータのうち、バンク指定命令でもバンク制御命令でも指定されていないデータＬ３、Ｌ４がバンクに割り当てられる。バンク指定命令でもバンク制御命令でも指定されていないデータをバンクに割り当てた後のメモリバンクの一例がｅ１３４およびｅ１３５である。
【０３４１】
以上より、入力ファイルｅ１２９で参照されるデータＬ１〜Ｌ６をすべてバンクに割り当てた結果、メモリバンクはｅ１３４、ｅ１３５のようになる。
【０３４２】
次に、図４１に示されるような、バンク指定命令を用いたバンク割り当てを行う情報処理方法について説明する。図４２は、バンク指定命令により、あるデータに対し、割り当てるバンクが指定された場合に行われるバンク制御の処理の流れを示すフロー図である。
【０３４３】
ステップＳＴ２０００では、バンク指定命令、バンク制御命令、または演算処理部３で行うメモリ参照命令を１つ読み込む。
【０３４４】
ステップＳＴ２００１では、読み込んだ命令文はバンク指定命令か、判断する。
【０３４５】
ステップＳＴ２００１で、読み込んだ命令文はバンク指定命令であると判断された場合、ステップＳＴ２００２において、バンク指定命令に対し、バンク指定命令によるバンク割り当てに必要な情報（以下、バンク指定命令情報と記述）を取得する。
【０３４６】
ステップＳＴ２００１で、読み込んだ命令文はバンク指定命令であると判断されなかった場合、ステップＳＴ２００３において、読み込んだ命令文はバンク制御命令か、判断する。
【０３４７】
ステップＳＴ２００３で、読み込んだ命令文はバンク制御命令であると判断された場合、ステップＳＴ２００４において、バンク制御命令に対し、バンク制御命令情報を取得する。ステップＳＴ２００４では、図２９または図３５に示される方法を用いる。
【０３４８】
ステップＳＴ２００３で、読み込んだ命令文はバンク制御命令であると判断されなかった場合、ステップＳＴ２００５において、読み込んだ命令文に対し、バンク制御情報を取得する。ステップＳＴ２００５では、図７または図１３に示される方法を用いる。
【０３４９】
ステップＳＴ２００６では、すべてのバンク指定命令、すべてのバンク制御命令、すべてのメモリ参照命令に対して、バンク指定命令情報、バンク制御命令情報、バンク制御情報が取得されたか、判断する。
【０３５０】
ステップＳＴ２００６で、すべて取得されたと判断されなかった場合は、ステップＳＴ２０００に戻り、ステップＳＴ２０００からＳＴ２００６の動作を繰り返す。
【０３５１】
ステップＳＴ２００６ですべて取得されたと判断された場合、ステップＳＴ２００７において、バンク指定命令で指定されたデータのバンク割り当てを行う。
【０３５２】
ステップＳＴ２００８では、バンク制御命令で指定されたデータのバンク制御を行う。ステップＳＴ２００８では、ステップＳＴ２００４で取得したバンク制御命令情報にあわせて、図３２または３８で示される方法を用いる。
【０３５３】
ステップＳＴ２００９では、メモリ参照命令で参照されるデータのうち、バンク指定命令でも、バンク制御命令でも指定されていないデータに対して、バンク制御を行う。ステップＳＴ２００９では、ステップＳＴ２００５で取得したバンク制御情報にあわせて、図１０、１６、２０、２４で示されるいずれかの方法を用いる。
【０３５４】
ここで、第７の実施形態で取得されるバンク指定命令情報について図５１を用いて説明する。図５１で示されるバンク指定命令情報は、バンク指定命令読み込み時に、その都度、指定されたデータを登録する。バンク指定命令情報は、あるバンクに対して、そのバンクに割り当てるよう指定されたデータの情報を保持する。
【０３５５】
次に、図５１で示されるバンク指定命令情報を取得する動作について、図４３で示される例を用いて説明する。
【０３５６】
ｅ１２９は、メモリ参照命令、バンク制御命令、バンク指定命令が記述された入力プログラムの一例である。ｅ１３７は、ｅ１２９−１２およびｅ１２９−１３のバンク指定命令により取得されたバンク指定命令情報である。ｅ１２９−１２のバンク指定命令ではデータＬ５をメモリバンクＭＢ１に、ｅ１２９−１３のバンク指定命令ではデータＬ６をメモリバンクＭＢ２に割り当てるよう指定されているため、バンク指定命令情報ｅ１３７のメモリアドレス情報には、メモリバンクＭＢ１に割り当てるデータのメモリアドレス情報として、データＬ５が格納されているメモリのアドレス＿Ｌ５が、メモリバンクＭＢ２に割り当てるデータのメモリアドレス情報として、データＬ６が格納されているメモリのアドレス＿Ｌ６が登録される。
【０３５７】
次に、図４３で示されたバンク指定命令情報を取得する動作を、具体的に図４４を用いて説明する。図４４は、図５１で示されるバンク指定命令情報を取得する動作のフロー図で、図４２のステップＳＴ２００２の動作に該当する。
【０３５８】
ステップＳＴ２１００では、割り当てるバンクを指定されたデータが格納されているメモリのアドレス情報を取得する。
【０３５９】
ステップＳＴ２１０１では、ステップＳＴ２１００で取得したメモリアドレス情報を、バンク指定命令情報に登録する。
【０３６０】
次に、第７の実施形態におけるバンク制御方法として、バンク指定命令により、あるデータに対し、割り当てるバンクが指定された場合のバンク割り当て動作について、図４５を用いて説明する。
【０３６１】
ｅ１３７は、バンク指定命令情報である。ｅ１３９およびｅ１４０は、データが格納されるメモリバンクであり、バンク指定命令により、割り当てるバンクが指定されたデータのバンク割り当てを行った結果を示す。
【０３６２】
次に、図４５で示されたバンク割り当て動作について、具体的に図４６を用いて説明する。図４６は、バンク指定命令により、あるデータに対し、割り当てるバンクが指定された場合の、バンク割り当て方法のフロー図で、図４２のステップＳＴ２００７の動作に該当する。
【０３６３】
ステップＳＴ２２００では、バンク指定命令情報を読み込む。
【０３６４】
ステップＳＴ２２０１では、バンク指定命令情報内のメモリアドレス情報に登録されたすべてのメモリアドレスが指し示すデータが、指定されたバンクに割り当て可能か、判断する。
【０３６５】
ステップＳＴ２２０１で、すべて割り当て可能と判断された場合、ステップＳＴ２２０２において、バンク指定命令情報内のメモリアドレス情報に登録されたすべてのメモリアドレスが指し示すデータを、それぞれ指定されたバンクに割り当てる。
【０３６６】
ステップＳＴ２２０１で、すべて割り当て可能と判断されなかった場合、ステップＳＴ２２０３においてエラー処理を行う。
【０３６７】
以上のように第７の実施形態によれば、ユーザが割り当てるバンクを指定したデータは、優先的に、指定されたバンクに割り当てることができる。
【０３６８】
以上のように、メモリ参照命令で同時に参照する複数のデータの情報を取得し、同時に参照する複数のデータを異なるバンクに割り当てることによって、自動的に、メモリバンクコンフリクトの起こらないバンク割り当てを行うことができる。また、バンク制御命令、およびバンク指定命令により、ユーザが希望するバンク割り当てを行うことができる。
【０３６９】
【発明の効果】
本発明は、メモリ参照命令で同時に参照する複数のデータの情報を取得し、同時に参照する複数のデータを異なるバンクに割り当てることにより、自動的に、メモリバンクコンフリクトの起こらないバンク割り当てを行い、生産性の高い情報処理装置を実現するものである。
【０３７０】
また、バンク制御命令やバンク指定命令により、ユーザが希望するバンク割り当てを行うことにより、ユーザの希望にも柔軟に対応できる、情報処理装置を実現するものである。
【図面の簡単な説明】
【図１】第１の実施形態による情報処理装置の構成を示すブロック図である。
【図２】図１に示した情報処理装置によって作成された実行形式ファイルを実行するプロセッサの構成を示すブロック図である。
【図３】図１に示したリンカの内部構成を示すブロック図である。
【図４】メモリ参照されるデータのバンク割り当てを説明するための図である。
【図５】バンク制御の処理の流れを示すフローチャートである。
【図６】バンク制御の処理の流れを示すフローチャートである。
【図７】バンク制御情報を取得する動作を説明するための図である。
【図８】バンク制御情報を取得する動作のフローチャートである。
【図９】バンク制御方法を説明するための図である。
【図１０】バンク制御方法のフローチャートである。
【図１１】バンク割り当て動作を説明するための図である。
【図１２】バンク割り当て動作のフローチャートである。
【図１３】バンク制御情報を取得する動作を説明するための図である。
【図１４】バンク制御情報を取得する動作のフローチャートである。
【図１５】バンク制御方法を説明するための図である。
【図１６】バンク制御方法のフローチャートである。
【図１７】バンク割り当て動作を説明するための図である。
【図１８】バンク割り当て動作のフローチャートである。
【図１９】バンク制御方法を説明するための図である。
【図２０】バンク制御方法のフローチャートである。
【図２１】バンク割り当て動作を説明するための図である。
【図２２】バンク割り当て動作のフローチャートである。
【図２３】バンク制御方法を説明するための図である。
【図２４】バンク制御方法のフローチャートである。
【図２５】バンク割り当て動作を説明するための図である。
【図２６】バンク割り当て動作のフローチャートである。
【図２７】バンク割り当て動作を説明するための図である。
【図２８】バンク制御の処理の流れを示すフローチャートである。
【図２９】バンク制御命令情報を取得する動作を説明するための図である。
【図３０】バンク制御命令情報を取得する動作のフローチャートである。
【図３１】バンク制御方法を説明するための図である。
【図３２】バンク制御方法のフローチャートである。
【図３３】バンク割り当て動作を説明するための図である。
【図３４】バンク割り当て動作のフローチャートである。
【図３５】バンク制御命令情報を取得する動作を説明するための図である。
【図３６】バンク制御命令情報を取得する動作のフローチャートである。
【図３７】バンク制御方法を説明するための図である。
【図３８】バンク制御方法のフローチャートである。
【図３９】バンク割り当て動作を説明するための図である。
【図４０】バンク割り当て動作のフローチャートである。
【図４１】バンク割り当て動作を説明するための図である。
【図４２】バンク制御の処理の流れを示すフローチャートである。
【図４３】バンク指定命令情報を取得する動作を説明するための図である。
【図４４】バンク指定命令情報を取得する動作のフローチャートである。
【図４５】バンク割り当て動作を説明するための図である。
【図４６】バンク割り当て動作のフローチャートである。
【図４７】（ａ）〜（ｂ）は、バンク制御情報の構造を示す図である。
【図４８】（ａ）〜（ｄ）は、バンク割り当てグループ情報の構造を示す図である。
【図４９】（ａ）〜（ｂ）は、バンク制御命令情報の構造を示す図である。
【図５０】（ａ）〜（ｂ）は、バンク制御命令用バンク割り当てグループ情報の構造を示す図である。
【図５１】バンク指定命令情報の構造を示す図である。
【図１】
2004157695.tif 000003
【図２】
2004157695.tif 000004
【図３】
2004157695.tif 000005
【図４】
2004157695.tif 000006
【図５】
2004157695.tif 000007
【図６】
2004157695.tif 000008
【図７】
2004157695.tif 000009
【図８】
2004157695.tif 000010
【図９】
2004157695.tif 000011
【図１０】
2004157695.tif 000012
【図１１】
2004157695.tif 000013
【図１２】
2004157695.tif 000014
【図１３】
2004157695.tif 000015
【図１４】
2004157695.tif 000016
【図１５】
2004157695.tif 000017
【図１６】
2004157695.tif 000018
【図１７】
2004157695.tif 000019
【図１８】
2004157695.tif 000020
【図１９】
2004157695.tif 000021
【図２０】
2004157695.tif 000022
【図２１】
2004157695.tif 000023
【図２２】
2004157695.tif 000024
【図２３】
2004157695.tif 000025
【図２４】
2004157695.tif 000026
【図２５】
2004157695.tif 000027
【図２６】
2004157695.tif 000028
【図２７】
2004157695.tif 000029
【図２８】
2004157695.tif 000030
【図２９】
2004157695.tif 000031
【図３０】
2004157695.tif 000032
【図３１】
2004157695.tif 000033
【図３２】
2004157695.tif 000034
【図３３】
2004157695.tif 000035
【図３４】
2004157695.tif 000036
【図３５】
2004157695.tif 000037
【図３６】
2004157695.tif 000038
【図３７】
2004157695.tif 000039
【図３８】
2004157695.tif 000040
【図３９】
2004157695.tif 000041
【図４０】
2004157695.tif 000042
【図４１】
2004157695.tif 000043
【図４２】
2004157695.tif 000044
【図４３】
2004157695.tif 000045
【図４４】
2004157695.tif 000046
【図４５】
2004157695.tif 000047
【図４６】
2004157695.tif 000048
【図４７】
2004157695.tif 000049
【図４８】
2004157695.tif 000050
【図４９】
2004157695.tif 000051
【図５０】
2004157695.tif 000052
【図５１】
2004157695.tif 000053