以下、図面を用いて実施形態を説明する。
図1は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す。図1に示す情報処理装置100は、例えば、ドメイン指向サーバであり、FPGA等のプログラマブル部1、メモリモジュール等の記憶部2およびCPU(Central Processing Unit)等の演算処理装置3を有する。情報処理装置100は、図1に示す要素以外に、HDD(Hard Disk Drive)および通信インタフェース等を有してもよい。
プログラマブル部1には、例えば、特定のアプリケーションで使用するデータを処理するデータ処理部1aおよびキャッシュ回路1b等の回路がプログラムされる。キャッシュ回路1bは、キャッシュ制御切替部1c、キャッシュ制御部1dおよびキャッシュメモリ部1eを有する。キャッシュメモリ部1eには、データ処理部1aで使用するデータが格納される。キャッシュ制御部1dは、データ処理部1aが発行するメモリアクセス要求に基づいて、記憶部2にアクセスする制御を実行する。また、キャッシュ制御部1dは、データ処理部1aが記憶部2から読み出すデータをキャッシュメモリ部1eに格納するか否かをキャッシュ制御情報CINFに基づいて決定する。キャッシュ制御切替部1cは、データ処理部1aが発行するメモリアクセス要求(リードアクセス要求またはライトアクセス要求)に基づいてキャッシュ制御情報CINFを生成する。
例えば、データ処理部1aが記憶部2から読み出すデータを、キャッシュメモリ部1eに保持させる場合、キャッシュ制御切替部1cは、リードアクセス要求に基づいて”S”(Shared)を示すキャッシュ制御情報CINFを生成する。データ処理部1aが記憶部2から読み出すデータを、キャッシュメモリ部1eに保持させない場合、キャッシュ制御切替部1cは、リードアクセス要求に基づいて”I”(Invalid)を示すキャッシュ制御情報CINFを生成する。
キャッシュ制御部1dは、リードアクセス要求に対応して受けるキャッシュ制御情報CINFが”S”の場合、記憶部2にリードアクセス要求を出力する。そして、キャッシュ制御部1dは、記憶部2から読み出されるデータを、キャッシュメモリ部1eに格納するとともに、データ処理部1aに出力する。なお、記憶部2からの読み出し対象のデータが、キャッシュメモリ部1eに既に保持されている場合、キャッシュ制御部1dは、記憶部2にリードアクセス要求を出力することなく、キャッシュメモリ部1eに保持されたデータをデータ処理部1aに出力する。キャッシュ制御部1dは、リードアクセス要求に対応して受けるキャッシュ制御情報CINFが”I”の場合、記憶部2にリードアクセス要求を出力する。そして、キャッシュ制御部1dは、記憶部2から読み出されるデータを、キャッシュメモリ部1eに格納することなく、データ処理部1aに出力する。
なお、キャッシュ制御部1dは、データ処理部1aが記憶部2にデータを書き込むライトアクセス要求を発行する場合に、キャッシュ制御情報CINFを生成してもよい。例えば、データ処理部1aから出力される書き込みデータをキャッシュメモリ部1eに保持する場合、キャッシュ制御切替部1cは、ライトアクセス要求に基づいて”M”(Modified)を示すキャッシュ制御情報CINFを生成する。データ処理部1aが記憶部2に書き込むデータを、キャッシュメモリ部1eに保持させない場合、キャッシュ制御切替部1cは、ライトアクセス要求に基づいて”I”を示すキャッシュ制御情報CINFを生成する。
キャッシュ制御部1dは、ライトアクセス要求に対応して受けるキャッシュ制御情報CINFが”M”の場合、データ処理部1aから出力されるデータを、キャッシュメモリ部1eに格納し、記憶部2に書き込まない。キャッシュ制御部1dは、ライトアクセス要求に対応して受けるキャッシュ制御情報CINFが”I”の場合、データ処理部1aから出力されるデータを、キャッシュメモリ部1eに格納することなく、記憶部2に書き込む。データ処理部1aが発行するライトアクセス要求に対応して生成される”M”または”I”を示すキャッシュ制御情報CINFは、第1情報の一例である。
記憶部2は、SDRAM(Synchronous Dynamic Random Access Memory)、SRAM、またはフラッシュメモリ等の半導体メモリを含む。記憶部2は、データ領域2a、プログラム領域2bおよび構成情報領域2cを有する。データ領域2aは、データ処理部1aで処理するデータおよび演算処理装置3で使用するデータ等を保持する。プログラム領域2bは、第1プログラム2d、第2プログラム2eおよび制御プログラム2f等を保持する。第1プログラム2dは、データ処理部1aを使用せずに所定のデータ処理を実行する場合に使用される。例えば、第1プログラム2dは、データ処理部1aに実行させる処理と等価な処理を含むソースプログラムである。
第2プログラム2eは、データ処理部1aを使用して所定のデータ処理を実行する場合に使用される。例えば、第2プログラム2eは、第1プログラム2dからデータ処理部1aが実行する処理と等価な処理を削除し、データ処理部1aを呼び出す処理を追加することで生成される。このため、第1プログラム2dが実行するデータ処理と、第2プログラム2eの指示によりデータ処理部1aが実行するデータ処理は、互いに等価である。第1プログラム2dは、処理プログラムの一例である。第1プログラム2dおよび第2プログラム2eによる動作の例は、図3に示される。
制御プログラム2fは、演算処理部3aにより実行されることで、分析部3b、決定部3cおよび構成制御部3dの機能を実現する。なお、制御プログラム2fは、CD−ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ等のコンピュータにより読み取り可能な記録媒体4に格納されてもよい。この場合、記録媒体4に格納された制御プログラム2fは、情報処理装置100に設けられる図示しない入出力インタフェースを介して記録媒体4からプログラム領域2bに転送される。なお、制御プログラムは、記録媒体4から図示しないHDDに転送された後、HDDからプログラム領域2bに転送されてもよい。
構成情報領域2cは、プログラマブル部1にプログラムされる様々な回路の構成情報を保持する。構成情報は、予め生成されてもよく、情報処理装置100に要求される処理性能に合わせて、演算処理装置3により生成されてもよい。なお、構成情報は、情報処理装置100の記憶部2以外の記憶領域に記憶されてもよく、情報処理装置100の外部の記憶領域に記憶されてもよい。
演算処理装置3は、CPUコア等の演算処理部3aと、制御プログラム2fの実行により実現される分析部3b、決定部3cおよび構成制御部3dとを有する。なお、分析部3b、決定部3cおよび構成制御部3dの少なくともいずれかは、ハードウェア(回路)として、情報処理装置100に搭載されてもよい。この場合、分析部3b、決定部3cおよび構成制御部3dの少なくともいずれかは、プログラマブル部1を使用して実現されてもよい。
演算処理部3aは、第1プログラム2d、第2プログラム2eおよび制御プログラム2f等のプログラムを実行することで、演算処理を実行し、情報処理装置100の機能を実現する。
分析部3bは、演算処理部3aによる第1プログラム2dの実行に基づいて、データ処理部1aを動作させることなく、データ処理部1aが発行するメモリアクセス要求を間接的に検出し、メモリアクセス要求に含まれるアクセスアドレスのパターンを分析する。
決定部3cは、分析部3bが分析したアクセスアドレスのパターンに基づいて、データ処理部1aによるメモリアクセスに最適なキャッシュ制御切替部1cの構成情報を生成することで、プログラマブル部1にプログラムするキャッシュ制御切替部1cを決定する。決定部3cにより生成されるキャッシュ制御切替部1cの構成情報は、構成情報領域2cに格納される。なお、決定部3cは、構成情報領域2cに既に格納済みの複数のキャッシュ制御切替部1cの構成情報の中から、プログラマブル部1にプログラムする構成情報を選択することで、プログラマブル部1にプログラムするキャッシュ制御切替部1cを決定してもよい。
構成制御部3dは、決定部3cが生成したキャッシュ制御切替部1cの構成情報を、構成情報領域2cから読み出してプログラマブル部1にプログラムする制御を実行する。
図2は、図1に示す情報処理装置100の動作フローの一例を示す。図2に示すフローは、演算処理部3aで実行するデータ処理の一部をデータ処理部1aに実行させる指示を、情報処理装置100を管理する管理者または情報処理装置100を使用するユーザから受信したことに基づいて開始される。
まず、ステップS1において、情報処理装置100は、データ処理部1aを使用せずに所定のデータ処理を実行する第1プログラム2dの実行を開始する。次に、ステップS2において、情報処理装置100の分析部3bは、第1プログラム2dの実行に基づいて、データ処理部1aが発行するメモリアクセス要求を間接的に検出し、メモリアクセス要求に含まれるアクセスアドレスのパターンを分析する。第1プログラムを使用することで、データ処理部1aおよびキャッシュ回路1bをプログラマブル部1にプログラムする前に、アクセスアドレスのパターンを分析することができる。
次に、ステップS3において、情報処理装置100は、分析部3bによるアクセスアドレスのパターンの分析が完了した場合、処理をステップS4に移行し、アクセスアドレスのパターンの分析が完了していない場合、処理をステップS2に移行する。例えば、分析部3bは、データ処理部1aが発行するメモリアクセス要求に含まれるアクセスアドレスのパターンの特徴が判明した場合、アクセスアドレスのパターンの分析を完了する。
ステップS4において、情報処理装置100の決定部3cは、分析部3bが分析したアクセスアドレスのパターンに基づいてキャッシュ制御切替部1cの構成情報を生成することで、プログラマブル部1にプログラムするキャッシュ制御切替部1cを決定する。
次に、ステップS5において、情報処理装置100の構成制御部3dは、決定部3cが決定したキャッシュ制御切替部1cを、データ処理部1a、キャッシュ制御部1dおよびキャッシュメモリ部1eとともにプログラマブル部1にプログラムする。ステップS2からステップS5までの処理は、情報処理装置100の制御方法の一例および情報処理装置100の制御プログラムの一例を示す。
次に、ステップS6において、情報処理装置100は、第1プログラム2dの実行を停止し、実行を停止した個所に対応する個所から第2プログラム2eの実行を開始する。これにより、データ処理を重複または欠落させることなく、第1プログラム2dから第2プログラム2eに切り替えることができる。
図3は、図1に示す情報処理装置100の動作の一例を示す。すなわち、図2は、情報処理装置100の制御方法の一例を示す。図3において、白抜きの矩形は、演算処理部3aで実行される処理を示す。斜線の矩形は、データ処理部1aで実行されるデータ処理と等価なデータ処理、またはデータ処理部1aで実行されるデータ処理を示す。網掛けの矩形は、キャッシュ制御切替部1cで実行される処理を示す。
まず、情報処理装置100は、データ処理部1aを使用せずに所定のデータ処理を実行する第1プログラム2dの実行を開始する(図3(a))。第1プログラム2dは、データ処理部1aが実行するデータ処理と等価なデータ処理を実行する(図3(b))。換言すれば、第1プログラム2dは、データ処理部1aがデータ処理で使用するデータと同じデータを用いてデータ処理を実行する。データ処理部1aが実行するデータ処理は、第1データ処理の一例である。第1プログラム2dが実行するデータ処理は、第2データ処理の一例である。なお、図3の左端の括弧内は、第1プログラム2dによりデータ処理を継続した場合の動作の例を示す。
分析部3bは、等価なデータ処理によるデータ領域2aのアクセス(すなわち、メモリアクセス要求)をモニタし、アクセスアドレスのパターンを分析する(図3(c))。すなわち、分析部3bは、第1プログラム2dによりデータ処理の一部を実行させた場合の記憶部2へのアクセスに基づいてアクセスアドレスのパターンを分析する。ここで、データ処理部1aがデータ処理で使用するデータと同じデータを用いて、第1プログラム2dがデータ処理を実行するため、分析部3bは、データ処理部1aによるメモリアクセスの特徴を分析することができる。
決定部3cは、分析部3bが分析したアクセスアドレスのパターンの特徴に基づいて、キャッシュ制御切替部1cの構成情報を生成することを決定し、生成したキャッシュ制御切替部1cをプログラマブル部1にプログラムすることを決定する(図3(d))。構成制御部3dは、決定部3cが生成したキャッシュ制御切替部1cを、データ処理部1a、キャッシュ制御部1dおよびキャッシュメモリ部1eとともにプログラマブル部1にプログラムする(図3(e))。なお、データ処理部1a、キャッシュ制御部1dおよびキャッシュメモリ部1eは、キャッシュ制御切替部1cが生成される前(すなわち、図3の動作の開始前)にプログラマブル部1にプログラムされてもよい。
キャッシュ制御切替部1cがプログラマブル部1にプログラムされた後、情報処理装置100は、第1プログラム2dの実行を停止し、実行を停止した個所に対応する個所から第2プログラム2eの実行を開始する(図3(f))。そして、第2プログラム2eは、データ処理部1aを呼び出し、第1プログラム2dが実行していたデータ処理のうち、未実行の処理を、データ処理部1aに実行させる(図3(g))。
データ処理部1aが動作中、データ処理部1aが発行するメモリアクセス要求に基づいて、キャッシュ制御切替部1c、キャッシュ制御部1dおよびキャッシュメモリ部1eが動作する(図3(h))。キャッシュ制御切替部1cは、メモリアクセス要求に基づいて、キャッシュ制御情報CINFを生成し、キャッシュ制御部1dは、キャッシュ制御情報CINFに基づいて動作する。ここで、キャッシュ制御情報CINFは、データ処理部1aのメモリアクセス特性に合わせて生成されるため、他のキャッシュ制御切替部を使用する場合に比べて、キャッシュ回路1bのキャッシュヒット率を向上することができる。また、キャッシュヒット率の向上により、新たなデータを格納する記憶領域を確保するためにキャッシュメモリ部1eからデータをデータ領域2aに書き戻す追い出し処理の頻度は低下する。この結果、データ領域2aへの無駄なメモリアクセスを低減することでキャッシュ効率を向上することができ、情報処理装置100の処理性能を向上することができる。
なお、データ処理部1aによるデータ処理は、プログラマブル部1にプログラムされたハードウェアにより実行される。このため、データ処理部1aによるデータ処理の効率は、第1プログラム2d(ソフトウェア)によるデータ処理の効率に比べて高い。したがって、データ処理部1aによるデータ処理は、データ処理部1aで実行されるデータ処理と等価なデータ処理を第1プログラム2dにより実行する場合に比べて、早く完了する(図3(i))。
データ処理部1aによるデータ処理が完了した後、第2プログラム2eは、ソフトウェアによる処理を実行する(図3(j))。この後、第2プログラム2eは、データ処理部1aにデータ処理を実行させるため、データ処理部1aを呼び出し、データ処理部1aは、データ処理を実行する(図3(k))。上述と同様に、データ処理部1aによるデータ処理は、第1プログラム2dによりデータ処理に比べて、早く完了する(図3(l))。そして、データ処理部1aによるデータ処理が完了した後、第2プログラム2eは、ソフトウェアによる処理を実行し、全体の処理が完了する(図3(m))。図3に示すように、データ処理部1aによるデータ処理を含む第2プログラム2eにより実行される全体の処理は、第1プログラム2dにより実行される全体の処理に比べて早く完了する。
以上、図1から図3に示す実施形態では、情報処理装置100は、データ処理部1aが出力するメモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、分析結果に基づいたキャッシュ制御情報CINFを出力するキャッシュ制御切替部1cを生成する。例えば、情報処理装置100が実行する第1プログラム2dは、データ処理部1aがデータ処理で使用するデータと同じデータを用いてデータ処理を実行する。このため、分析部3bは、データ処理部1aを動作させることなく、データ処理部1aによるメモリアクセスの特徴を分析することができる。これにより、プログラマブル部1に搭載される前のデータ処理部1aのメモリアクセスの特徴に合わせて、キャッシュ回路1bのキャッシュヒット率等のキャッシュ効率を最適化することができる。この結果、データ領域2aへの無駄なメモリアクセスを低減してキャッシュ効率を向上することができ、情報処理装置100の処理性能を向上することができる。
情報処理装置100は、データ処理部1aに実行させる処理を含むソースプログラムである第1プログラムを使用することで、データ処理部1aおよびキャッシュ回路1bをプログラマブル部1に搭載する前に、アクセスアドレスのパターンを分析することができる。アクセスアドレスのパターンの分析が完了した場合に、第1プログラムによる処理の続きを第2プログラムに実行させることで、同じ処理を第1プログラムと第2プログラムとで重複して実行する無駄を省くことができる。アクセスアドレスのパターンの分析結果に基づいてキャッシュ制御切替部1cの論理を生成することで、複数種のキャッシュ制御切替部1cの論理を予め準備することなく、プログラマブル部1にキャッシュ制御切替部1cをプログラムすることができる。
図4は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す。図1から図3に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図4に示す情報処理装置100Aは、例えば、ドメイン指向サーバである。情報処理装置100Aは、FPGA等のプログラマブル部10、メインメモリ20、CPU等の演算処理装置30、入出力インタフェース40、HDD50および通信インタフェース60を有する。
プログラマブル部10には、特定のアプリケーションで使用するデータを処理するデータ処理部10aおよびキャッシュ回路10b等の回路がプログラムされる。データ処理部10aは、CPUコア30aが実行するアプリケーションプログラム(第2プログラム)の制御に基づいて動作し、CPUコア30aの代わりにデータ処理を実行する。データ処理部10aは、データを処理するデータ処理部の一例である。データ処理部10aが実行するデータ処理は、第1データ処理の一例である。データ処理部10aによるメインメモリ20へのアクセス(データのリードまたはデータのライト)は、キャッシュ回路10bおよびLLC(Last Level Cache)30bを介して実行される。
キャッシュ回路10bは、図1に示すキャッシュ回路1bと同様に、キャッシュ制御切替部10c、キャッシュ制御部10dおよびキャッシュメモリ部10eを有する。キャッシュ制御切替部10cは、データ処理部10aが発行するメモリアクセス要求(リードアクセス要求またはライトアクセス要求)に基づいて、キャッシュ制御部10dに出力するキャッシュヒントおよびバースト長を決定する。キャッシュヒントは、データ処理部10aがリードアクセス要求を発行した場合、リードアクセス要求に基づいて、LLC30bから受信したデータをキャッシュメモリ部10eに保持するか否かの情報を含む。また、キャッシュヒントは、データ処理部10aがライトデータとともにライトアクセス要求を発行した場合、ライトデータをキャッシュメモリ部10eに書き込むか、LLC30bに出力するかを示す情報を含む。
バースト長は、データ処理部10aがリードアクセス要求を発行した場合、LLC30bから受信するデータの長さを示す情報を含む。キャッシュヒントおよびバースト長は、キャッシュ制御切替部10cが出力するキャッシュ制御情報の一例である。バースト長は、キャッシュ制御情報のうちの第2情報の一例である。
例えば、キャッシュ回路10bは、MESI(Modified, Exclusive, Shared, Invalid)プロトコルを用いて、データの一貫性を維持する制御を実行する。MESIプロトコルにおいて、”Modified”は、キャッシュメモリ部10eに保持されたデータが更新され(書き替えられ)、LLC30bまたはメインメモリ20が保持するデータと異なる状態を示す。”Exclusive”は、アクセス対象のデータが、キャッシュメモリ部10eのみに保持され、データが更新されていない状態を示す。”Shared”は、アクセス対象のデータが例えばLLC30bとキャッシュメモリ部10eとに保持され、データが更新されていない状態を示す。”Invalid”は、キャッシュメモリ部10eに保持されたデータが無効であることを示す。
キャッシュ制御部10dは、データ処理部10aからリードアクセス要求を受信した場合、アクセスの対象データがキャッシュメモリ部10eに保持されているか否かを判定する。キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されている場合(キャッシュヒット)、キャッシュメモリ部10eからデータを読み出し、読み出したデータをデータ処理部10aに出力する。
キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されていない場合(キャッシュミス)、LLC30bにリードアクセス要求を発行し、LLC30bから出力されるデータを受信する。この後、キャッシュ制御部10dは、リードアクセス要求に対応してキャッシュ制御切替部10cから受信するキャッシュヒントに応じて、以下のように動作する。
キャッシュヒントが”S”の場合、キャッシュ制御部10dは、LLC30bから受信したデータをデータ処理部10aに出力するとともにキャッシュメモリ部10eに格納する。キャッシュメモリ部10eにデータを格納する空き領域がない場合、キャッシュ制御部10dは、キャッシュメモリ部10eが保持するデータのいずれかをLLC30bに書き戻す追い出し処理を実行する。追い出し処理は、データをLLC30bに書き戻すためのライトアクセス要求を含む。
キャッシュヒントが”I”の場合、キャッシュ制御部10dは、LLC30bから受信したデータをキャッシュメモリ部10eに格納せずにデータ処理部10aに出力する。なお、キャッシュミスの発生時、キャッシュ制御部10dは、リードアクセス要求に対応してキャッシュ制御切替部10cから出力されるバースト長に対応する長さのデータをLLC30bから読み出すリードアクセス要求をLLC30bに発行する。
一方、キャッシュ制御部10dは、データ処理部10aからライトデータとともにライトアクセス要求を受信した場合、アクセスの対象データがキャッシュメモリ部10eに保持されているか否かを判定する。キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されている場合(キャッシュヒット)、ライトアクセス要求に対応してキャッシュ制御切替部10cから受信するキャッシュヒントに応じて、以下のように動作する。
キャッシュヒントが”M”の場合、キャッシュ制御部10dは、キャッシュメモリ部10eが保持するキャッシュヒットの対象データをライトデータで上書きし、LLC30bにライトアクセス要求を発行しない。キャッシュヒントが”I”の場合、キャッシュ制御部10dは、キャッシュメモリ部10eが保持するキャッシュヒットの対象データを削除し、ライトデータをLLC30bに書き込むライトアクセス要求をLLC30bに発行する。キャッシュ制御部10dがライトアクセス要求に基づいて出力する”M”または”I”のキャッシュヒントは、第1情報の一例である。
キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されていない場合(キャッシュミス)、ライトアクセス要求に対応してキャッシュ制御切替部10cから受信するキャッシュヒントに応じて、以下のように動作する。
キャッシュヒントが”M”の場合、キャッシュ制御部10dは、ライトデータに対応するデータの読み出し要求をLLC30bに発行し、LLC30bから受信するデータをライトデータに置き換え、キャッシュメモリ部10eに格納する。ここで、ライトデータのビット幅がLLC30bから受信するデータのビット幅より小さい場合、LLC30bから受信するデータの一部がライトデータで置き換えられる。キャッシュヒントが”I”の場合、キャッシュ制御部10dは、ライトデータをLLC30bに書き込むライトアクセス要求をLLC30bに発行する。
キャッシュメモリ部10eは、データの入出力の単位である複数のエントリ(キャッシュライン)を有し、LLC30bに対するデータの入出力は、キャッシュライン単位で実行される。また、バースト長が”1”の場合、1つのキャッシュラインに対応するデータがアクセスされる。バースト長が”2”の場合、2つのキャッシュラインに対応するデータがアクセスされる。バースト長が”4”の場合、4つのキャッシュラインに対応するデータがアクセスされる。
メインメモリ20は、例えば、複数のSDRAMが搭載されたメモリモジュールであり、データ領域20a、プログラム領域20bおよび構成情報領域20cを有する。メインメモリ20は、記憶部の一例である。データ領域20aは、データ処理部10aで処理するデータおよび演算処理装置30で使用するデータ等を保持する。
プログラム領域20bは、OS、管理プログラムおよびアプリケーションプログラム等の各種プログラム20dと、制御プログラム20e等を保持する。例えば、アプリケーションプログラムのいずれかは、データ処理部10aを使用せずに所定のデータ処理を実行する第1プログラムである。第1プログラムは、データ処理部10aが実行するデータ処理と等価なデータ処理を実行する機能を含む処理プログラムの一例である。第1プログラムが実行するデータ処理は、第2データ処理の一例である。
アプリケーションプログラムの他のいずれかは、データ処理部10aを使用して所定のデータ処理を実行する第2プログラムである。例えば、プログラム領域20bに格納される各種プログラム20dと制御プログラム20eとは、CD−ROM、DVD、USBメモリ等のコンピュータにより読み取り可能な記録媒体70またはネットワークNWを介してHDD50に格納される。この後、各種プログラム20dと制御プログラム20eとは、HDD50からメインメモリ20に転送される。
構成情報領域20cは、プログラマブル部10にプログラムされる様々な回路の構成情報を保持する。構成情報がプログラマブル部10に書き込まれることで、プログラマブル部10は、データ処理部10aおよびキャッシュ回路10b等の機能を実現する。構成情報は、予め生成されてもよく、情報処理装置100Aに要求される処理性能に合わせて、演算処理装置30が実行する論理合成用のプログラム等により生成されてもよい。なお、構成情報は、メインメモリ20以外の記憶領域に記憶されてもよく、情報処理装置100Aの外部の記憶領域に記憶されてもよい。
演算処理装置30は、各種プログラムを並列に実行可能な複数のCPUコア30a、LLC30bおよびMMU(Memory Management Unit)30cを有する。プログラマブル部10は、バスBUS1を介して演算処理装置30のLLC30bに接続され、メインメモリ20は、バスBUS2を介して演算処理装置30のMMU30cに接続される。
演算処理装置30は、CPUコア30aによりOS(Operating System)および管理プログラムを実行することで情報処理装置100Aの全体の動作を制御する。また、演算処理装置30は、CPUコア30aによりアプリケーションプログラムを実行することで、ドメイン指向サーバとして機能する。
さらに、演算処理装置30は、CPUコア30aが制御プログラム20eを実行することで、分析部30d、決定部30eおよび構成制御部30fとして機能する。なお、分析部30d、決定部30eおよび構成制御部30fは、ハードウェア(回路)として、情報処理装置100Aに搭載されてもよい。
LLC30bは、キャッシュメモリの一種であり、CPUコア30aから最も離れた(すなわち、メインメモリ20に最も近い)キャッシュメモリである。MMU30cは、メインメモリ20に対するメモリアクセスを管理する。例えば、MMU30cは、CPUコア30aが出力する仮想アドレスを、メインメモリ20に割り当てられた物理アドレスに変換する。
分析部30d、決定部30eおよび構成制御部30fのそれぞれの機能は、図1から図3で説明した分析部3b、決定部3cおよび構成制御部3dのそれぞれの機能と同様である。分析部30d、決定部30eおよび構成制御部30fの動作は、図7から図10で説明される。
入出力インタフェース40の1つは、DVD等の記録媒体70が装着される光学ドライブ装置に接続され、あるいは、USBメモリ等が装着されるコネクタを有する。他の入出力インタフェース40は、図示しないマウスおよびキーボード等の入力装置と、図示しないディスプレイ等の出力装置にそれぞれ接続される。
HDD50は、メインメモリ20に格納するプログラムおよび構成情報等を記憶する。通信インタフェース60は、インターネットまたはイントラネット等のネットワークNWに接続され、ネットワークNWとの間で情報を入出力する。入出力インタフェース40、HDD50および通信インタフェース60は、バスBUS3を介して演算処理装置30に接続される。
図5は、図4に示すプログラマブル部10のチップ構成の一例を示す。プログラマブル部10は、網掛けの矩形で示す複数の入出力端子IO、白抜きの矩形で示す複数のALM(Adaptive Logic Module)、複数のメモリM1、複数のメモリM2および複数のDSP(Digital Signal Processor)を有する。ALMには、プログラマブル部10に転送される構成情報に基づいて論理がプログラムされる。特に限定されないが、メモリM1、M2の記憶素子と、DSPの内部回路は、プログラマブル部10に予め構築されており、構成情報の転送により、接続配線が構築される。
例えば、図4に示すデータ処理部10aは、所定数の入出力端子IO、所定数のALM、所定数のメモリM1および所定数のDSPを使用してプログラマブル部10上に構築される。キャッシュメモリ部10eは、所定数のALMおよび所定数のメモリM1、M2を使用してプログラマブル部10上に構築される。キャッシュ制御部10dおよびキャッシュ制御切替部10cの各々は、所定数のALM、所定数のメモリM1および所定数のDSPを使用してプログラマブル部10上に構築される。
図6は、図4に示すプログラマブル部10にプログラムされるデータ処理部10aの一例を示す。データ処理部10aは、CPUコア30aのみでデータ処理が完結する第1プログラムの中から、プログラマブル部10に実行させるデータ処理の部分を論理合成し、構成情報を生成する。例えば、プログラマブル部10に実行させるデータ処理は、破線で囲った部分であり、他のデータ処理に比べて時間が掛かるデータ処理であり、かつ、反復性を有するデータ処理である。データ処理部10aは、構成情報がプログラマブル部10にプログラムされることで、プログラマブル部10に構築される。すなわち、CPUコア30aがプログラムにより実行するデータ処理の一部が、プログラマブル部10にオフロードされる。
そして、論理合成したデータ処理部10aによるデータ処理部分を第1プログラムから除き、データ処理部10aの呼び出し処理を追加した第2プログラムが、データ処理部10aがプログラマブル部10にプログラムされた後に実行される。これにより、プログラマブル部10は、演算処理装置30のアクセラレータとして動作し、演算処理装置30とプログラマブル部10とによりデータ処理が実行される。
図7は、図6に示す第2プログラムを実行する環境を構築する処理の一例を示す。まず、事前準備として、ステップS10において、キャッシュ制御部10dおよびキャッシュメモリ部10eが論理合成され、構成情報が生成される。ステップS12において、第1プログラムの中でプログラマブル部10に処理させる部分が、データ処理部10aとして論理合成され、構成情報が生成される。
ステップS14において、論理合成したデータ処理部10aにデータ処理を実行させる第2プログラム(ソースプログラム)が生成される。そして、ソースプログラムをコンパイルすることにより、CPUコア30aで実行可能な第2プログラムのオブジェクトファイルが生成される。ステップS16において、第1プログラム(ソースプログラム)がコンパイルされ、第1プログラムのオブジェクトファイルが生成される。
なお、ステップS12、S14が順次実行されることを除き、ステップS10、S12、S14、S16は、図7に示す順序以外で実行されてもよい。また、事前準備は、情報処理装置100Aで実行されてもよく、他のツールを使用して実行されてもよい。
事前準備が完了した後、データ処理部10aを使用してデータ処理を実行するための環境を情報処理装置100A上に構築する構築処理が実行される。構築処理は、CPUコア30aで実行するデータ処理の一部をデータ処理部10aに実行させる指示を、情報処理装置100Aを管理する管理者または情報処理装置100Aを使用するユーザから受信したことに基づいて開始される。
まず、ステップS20において、情報処理装置100Aは、演算処理装置30に第1プログラムの実行を開始させる。
次に、ステップS22において、情報処理装置100Aの分析部30dは、第1プログラムにおいてデータ処理部10aの動作に相当する命令を分析し、メモリアクセス命令の特徴を抽出する。ここで、データ処理部10aの動作に相当する命令は、図6に示した第1プログラムのうち、破線で囲った部分に含まれる命令である。
次に、ステップS24において、情報処理装置100Aの決定部30eは、ステップS22で抽出した特徴に基づいて、キャッシュ制御切替部10cの論理を生成することで、プログラマブル部10にプログラムするキャッシュ制御切替部10cを決定する。
次に、ステップS26において、情報処理装置100Aの構成制御部30fは、キャッシュ回路10bの構成情報とデータ処理部10aの構成情報とを、プログラマブル部10にプログラムする。キャッシュ回路10bは、キャッシュ制御切替部10c、キャッシュ制御部10dおよびキャッシュメモリ部10eを含む。すなわち、情報処理装置100Aは、事前に準備したキャッシュ制御部10d、キャッシュメモリ部10eおよびデータ処理部10aの構成情報と、ステップS24で生成したキャッシュ制御切替部10cの構成情報とを、プログラマブル部10にプログラムする。そして、データ処理部10aを使用してデータ処理を実行するための環境を構築する構築処理が完了する。これにより、第2プログラムの実行が可能になる。
ステップS22からステップS26までの処理は、情報処理装置100Aの制御方法の一例および情報処理装置100Aの制御プログラムの一例を示し、図3(a)から図3(e)に示した処理に対応する。換言すれば、図3の右端のデータ処理部をデータ処理部10aに置き換え、各要素の符号を付け替えることで、図3は、情報処理装置100Aの動作の例を示す。
例えば、分析部30dは、CPUコア30aが実行する第1プログラムによりデータ処理の一部を実行させた場合のメインメモリ20へのアクセスに基づいてアクセスアドレスのパターンを分析する。決定部30eは、分析部30dが分析したアクセスアドレスのパターンの特徴に基づいて、キャッシュ制御切替部10cを生成し、生成したキャッシュ制御切替部1cをプログラマブル部10にプログラムすることを決定する。構成制御部30fは、決定部30eが生成したキャッシュ制御切替部10cを、データ処理部10a、キャッシュ制御部10dおよびキャッシュメモリ部10eとともにプログラマブル部10にプログラムする。
キャッシュ制御切替部10cがプログラマブル部1にプログラムされた後、情報処理装置100Aは、第1プログラムの実行を停止し、実行を停止した個所に対応する個所から第2プログラムの実行を開始する。そして、第2プログラムは、データ処理部10aを呼び出し、第1プログラムが実行していたデータ処理のうち、未実行の処理を、データ処理部10aに実行させる。データ処理部10aが動作中、データ処理部10aが発行するメモリアクセス要求に基づいて、キャッシュ制御切替部10c、キャッシュ制御部10dおよびキャッシュメモリ部10eが動作する。キャッシュ制御切替部10cは、メモリアクセス要求に基づいて、キャッシュヒントおよびバースト長を生成し、キャッシュ制御部10dは、キャッシュヒントおよびバースト長に基づいて動作する。
なお、キャッシュ制御部10d、キャッシュメモリ部10eおよびデータ処理部10aの構成情報は、ステップS20の処理を開始する前に、プログラマブル部10にプログラムされてもよい。この場合、事前準備において、データ処理部10aとキャッシュ制御切替部10cとを互いに接続するインタフェース仕様と、キャッシュ制御切替部10cとキャッシュ制御部10dとを互いに接続するインタフェース仕様とが決められる。そして、決定部30eは、事前準備で決められたインタフェース仕様にしたがって、キャッシュ制御切替部10cの論理を生成する。
図8は、図7に示すステップS24で生成されるキャッシュ制御切替部10cを含むキャッシュ回路の動作の一例を示す。左側の欄は、データ処理部10aで実行する処理と等価な命令群(ソースプログラム)とその行番号を示す。図8に示す命令群は、図6の第1プログラムの破線の枠内で実行される命令の一例を示す。例えば、命令群は、3つのプロセスA、B、Cの処理を含む。
”LD”はロード命令を示し、”ST”はストア命令を示し、”EXE”が付く命令は演算命令を示し、”BR”は分岐命令を示す。例えば、1行目の”LD A1,Da1”は、アドレスA1のメモリ領域からデータを読み出してレジスタDa1に格納することを示す。4行目の”ST A3,Da3”は、レジスタDa3に保持されたデータをアドレスA3のメモリ領域に格納することを示す。3行目の”EXE1 Da3 (Da1,Da2)”は、レジスタDa1、Da2に保持されたデータを演算し、演算結果をレジスタDa3に格納することを示す。5行目の”BR Da3 B C”は、レジスタDa3に格納された値に応じて6行目または21行目に分岐することを示す。”B”、”C”は、ラベルを示す。
中央の欄は、キャッシュ回路10bの動作の例を示し、キャッシュヒントとバースト長は、メモリアクセス要求(ロード命令LDまたはストア命令ST)毎にキャッシュ制御切替部10cにより生成される。右側の欄は、キャッシュ制御切替部10cを持たない他のキャッシュ回路の動作の例を示し、キャッシュヒントは”S”(リードアクセス)と”M”(ライトアクセス)に固定され、バースト長は”1”に固定される。中央の欄および右側の欄において、”ミス”は、キャッシュミスの発生を示し、”ヒット”は、キャッシュヒットの発生を示し、”追い出しの発生”に示す数字は、データを追い出すキャッシュラインの数を示す。
キャッシュ回路10bの動作において、1行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスA1)では、キャッシュ制御切替部10cは、キャッシュヒント(=”I”)をキャッシュ制御部10dに出力する。データ処理部10aが、この後、リードアクセス(アドレスA1)を実行しない場合、リードアクセスに基づいてLCC30bから出力されるデータは、キャッシュメモリ部10eに保持しなくてよい。
この場合、キャッシュヒントを”I”に設定することで、キャッシュメモリ部10eからキャッシュラインが無駄に追い出されることを抑止することができる。これに対して、他のキャッシュ回路の動作では、1行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスA1)では、キャッシュヒントが”S”のため、キャッシュラインの無駄な追い出しが発生する。
2行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスA2)では、キャッシュ制御切替部10cは、キャッシュヒント(=”S”)をキャッシュ制御部10dに出力する。ロード命令LD(アドレスA2)は、22行目でも実行される。データ処理部10aが、同じアドレスのリードアクセスを複数回実行する場合、最初のリードアクセスのキャッシュヒントを”S”にすることで、2回目以降のリードアクセスをキャッシュヒットさせることができる。
4行目のストア命令STに対応してデータ処理部10aが実行するライトアクセス(アドレスA3)では、キャッシュ制御切替部10cは、キャッシュヒント(=”M”)とバースト長(=”1”)をキャッシュ制御部10dに出力する。ストア命令ST(アドレスA3)は、25行目でも実行される。データ処理部10aが、同じアドレスのライトアクセスを複数回実行する場合、ライトアクセスのキャッシュヒントを”M”にすることで、LLC30bに発行するライトアクセス要求の頻度を下げることができる。
7行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB1)では、キャッシュ制御切替部10cは、キャッシュヒント(=”S”)とバースト長(=”2”)をキャッシュ制御部10dに出力する。8行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセスのアドレスB2は、アドレスB1に連続する。この場合、バースト長を”2”に設定することで、リードアクセス(アドレスB2)をキャッシュヒットさせることができ、LLC30bへのアクセス要求の頻度を減らすことができる。
これに対して、他のキャッシュ回路の動作では、7行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB1)のバースト長が”1”に設定される。このため、8行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB2)でキャッシュミスが発生し、キャッシュ制御部10dは、LLC30bに無駄なリードアクセス要求を発行する。
10行目のストア命令STに対応してデータ処理部10aが実行するライトアクセス(アドレスB3)では、キャッシュ制御切替部10cは、キャッシュヒント(=”I”)とバースト長(=”1”)をキャッシュ制御部10dに出力する。データ処理部10aが、この後、ライトアクセス(アドレスB3)を実行しない場合、ライトアクセスとともにデータ処理部10aが出力するライトデータは、キャッシュメモリ部10eに保持しなくてよい。この場合、キャッシュヒントを”I”に設定し、ライトデータをLLC30bに直接書き込むことで、キャッシュメモリ部10eからキャッシュラインが無駄に追い出されることを抑止することができる。
これに対して、他のキャッシュ回路の動作では、10行目のストア命令STに対応してデータ処理部10aが実行するライトアクセス(アドレスB3)のキャッシュヒントが”M”に設定される。このため、その後のアクセスで使用されない無駄なデータがキャッシュメモリ部10eに保持され、キャッシュラインの無駄な追い出しが発生する。
23行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスC1)では、1行目と同様に、キャッシュ制御切替部10cは、キャッシュヒント(=”I”)をキャッシュ制御部10dに出力する。データ処理部10aが、この後、リードアクセス(アドレスC1)を実行しない場合、キャッシュヒントを”I”に設定することで、キャッシュメモリ部10eからキャッシュラインが無駄に追い出されることを抑止することができる。
このように、データ処理部10aのアクセスアドレスのパターンの特徴に基づいて生成されたキャッシュ制御切替部10cにより、キャッシュ回路10bは、無駄な追い出し処理および無駄なLLC30bへのアクセス要求が発生することを抑止することができる。この結果、他のキャッシュ回路に比べて、図4に示すバスBUS1の使用効率を向上することができ、情報処理装置100Aの処理性能を向上することができる。
図9は、図7に示すステップS22で使用する特徴抽出テーブルTBLの一例を示す。特徴抽出テーブルTBLは、分析部30dが抽出したメモリアクセス命令の特徴を記録するために使用される。特徴抽出テーブルTBLは、アクセス種別、アクセスアドレス、キャッシュヒントおよびバースト長を格納する領域を含む複数のエントリを有する。
アクセス種別の領域には、特徴を抽出したメモリアクセス命令がリード命令である場合、リードを示す情報が格納され、特徴を抽出したメモリアクセス命令がライト命令である場合、ライトを示す情報が格納される。アクセスアドレスの領域には、特徴を抽出したメモリアクセス命令に含まれるアドレスが格納される。
キャッシュヒントの領域には、キャッシュ制御部10dが使用するキャッシュヒントが格納される。キャッシュヒントは、”Shared”を示す”S”、”Modified”を示す”M”、”Invalid”を示す”I”、または”Exclusive”を示す”E”が格納される。
アクセス種別がリードの場合、キャッシュヒントは、リード命令に相当するリードアクセス要求に基づいて、キャッシュ制御部10dが、LLC30bから受信したデータをキャッシュメモリ部10eに保持するか否かを示す。アクセス種別がライトの場合、キャッシュヒントは、ライト命令に相当するライトアクセス要求に基づいて、キャッシュ制御部10dが、ライトアクセス要求に含まれるライトデータをキャッシュメモリ部10eに格納するか、LLC30bに出力するかを示す。
バースト長の領域には、メモリアクセス命令によりキャッシュメモリ部10eに入力されるデータの数を示すバースト長が格納される。なお、バースト長は、キャッシュメモリ部10eのアクセスの単位であるキャッシュラインのアクセス数を示す。
分析部30dは、メモリアクセス命令の特徴が抽出できるまで、メモリアクセス命令毎に、アクセス種別とアクセスアドレスとを特徴抽出テーブルTBLに順次格納する。そして、メモリアクセス命令の特徴が抽出しながら、各エントリに格納したメモリアクセス要求に最適なキャッシュヒントとバースト長とを判定し、判定したキャッシュヒントとバースト長とを各エントリに格納する。
図10は、図7に示すステップS22の処理の一例を示す。まず、ステップS222において、分析部30dは、特徴抽出テーブルTBLを初期化する。例えば、アクセス種別とアクセスアドレスの領域には、無効な値が格納される。キャッシュヒントの領域には、”I”が格納され、バースト長の領域には、”1”が格納される。
次に、ステップS224において、分析部30dは、順次実行される命令の中からメモリアクセス命令を検出する。なお、検出対象のメモリアクセス命令は、図6に示す第1プログラムの中で、データ処理部10aに処理させる破線で囲った部分に含まれるメモリアクセス命令である。
次に、ステップS226において、分析部30dは、検出したメモリアクセス命令がストア命令の場合、処理をステップS228に移行し、検出したメモリアクセス命令がストア命令でない場合、ロード命令であるため、処理をステップS232に移行する。
ステップS228において、分析部30dは、今回検出したストア命令に含まれるアドレスが、以前に検出したストア命令に含まれるアドレスと同じ場合、処理をステップS230に移行する。分析部30dは、検出したストア命令に含まれるアドレスが、以前に検出したストア命令に含まれるアドレスと異なる場合、処理をステップS240に移行する。
ステップS230において、分析部30dは、アドレスが互いに同じストア命令に対応して、特徴抽出テーブルTBLに、ライトを示す情報と、アドレスの値と、キャッシュヒント=”M”とを格納し、処理をステップS240に移行する。
一方、ステップS232において、分析部30dは、今回検出したロード命令に含まれるアドレスが、以前に検出したロード命令に含まれるアドレスと同じ場合、処理をステップS234に移行する。分析部30dは、検出したロード命令に含まれるアドレスが、以前に検出したロード命令に含まれるアドレスと異なる同じ場合、処理をステップS236に移行する。
ステップS234において、分析部30dは、アドレスが互いに同じロード命令に対応して、特徴抽出テーブルTBLに、リードを示す情報と、アドレスの値と、キャッシュヒント=”S”とを格納し、処理をステップS236に移行する。
ステップS236において、分析部30dは、現在のロード命令と直前のロード命令とのアドレスが互いに同じ場合、処理をステップS238に移行し、現在のロード命令と直前のロード命令とのアドレスが互いに異なる場合、処理をステップS240に移行する。ステップS238において、分析部30dは、直前のロード命令とアドレスが互いに同じロード命令に対応して、特徴抽出テーブルTBLに、リードを示す情報と、アドレスの値と、キャッシュヒント=”S”と、バースト長=”2”とを格納する。この後、処理は、ステップS240に移行される。
ステップS240において、分析部30dは、メモリアクセス命令の特徴が抽出され、特徴抽出テーブルTBLに格納した情報に基づいてキャッシュメモリ部10eのキャッシュヒット率を向上できると判断した場合、処理を終了する。分析部30dは、メモリアクセス命令の特徴の抽出が不十分であると判定した場合、処理をステップS224に戻し、メモリアクセス命令の特徴の抽出を続行する。このように、分析部30dは、第1プログラムの実行により発生する、メモリアクセス命令を利用して、データ処理部10aから発行されるメモリアクセス要求命令の特徴を抽出する。
例えば、メモリアクセス命令の特徴が格納された特徴抽出テーブルTBLは、キャッシュ制御切替部10cの一部として、プログラマブル部10内のメモリM1(図5)にプログラムされる。なお、メモリアクセス命令の特徴が格納された特徴抽出テーブルTBLは、キャッシュ制御切替部10cの一部として、プログラマブル部10内のALMにプログラムされてもよい。
以上、図4から図10に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
図11は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図11では、図7のステップS22の代わりに、ステップS22Aが実行される。ステップS22Aを除く処理は、図7と同じである。
ステップS22A、S24、S26に示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22A、S24、S26に示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。
ステップS20、S22A、S24、S26を実行する情報処理装置は、図4に示した制御プログラム20eが異なることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、ステップS20、S22A、S24、S26を実行する情報処理装置は、図4に示す分析部30dと決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様である。
ステップS22Aにおいて、情報処理装置100Aの分析部30dは、第1プログラムにおいてデータ処理部10aの動作に相当する命令を分析し、分岐命令において、分岐する確率が他より高い分岐先を検出する。そして、分析部30dは、分岐する確率が他より高い分岐先で実行されるメモリアクセスの特徴を抽出する。すなわち、分析部30dは、図12に示す複数のプロセスA、B、Cのうち、実行頻度が他のプロセスよりも高いプロセスによるアクセスアドレスのパターンを分析する。次に、ステップS24において、決定部30eは、ステップS22Aで抽出した特徴に基づいて、キャッシュ制御切替部10cの論理を生成する。
図12は、図11に示すステップS24で生成されたキャッシュ制御切替部10cを含むキャッシュ回路10bの動作の一例を示す。図8と同一または同様の要素については、詳細な説明は省略する。左側の欄に示すデータ処理部10aで実行する処理と等価な命令群(ソースプログラム)は、図8と同じである。
中央の欄は、5行目のブランチ命令BRにおいて、プロセスBで実行されるメモリアクセスの特徴の抽出に基づいて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。すなわち、中央の欄は、ラベルBに分岐する確率が他に分岐する確率より高い場合に合わせて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。
右側の欄は、5行目のブランチ命令BRにおいて、プロセスCで実行されるメモリアクセスの特徴の抽出に基づいて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。すなわち、右側の欄は、ラベルCに分岐する確率が他に分岐する確率より高い場合に合わせて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。
5行目のブランチ命令BRにおいて、ラベルBに分岐する確率が高い場合、7行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB1)のバースト長が”2”に設定される。これにより、次のリードアクセス(アドレスB2)をキャッシュヒットさせることができ、LLC30bへのアクセス要求の頻度を減らすことができる。この例では、プロセスBでのキャッシュ効率が高くなるように、全てのリードアクセスにおいて、キャッシュヒントは”S”に設定され、バースト長は”2”に設定される。
一方、5行目のブランチ命令BRにおいて、ラベルCに分岐する確率が高い場合、例えば、22行目のロード命令LD(アドレスA2)のアクセス効率を向上するため、2行目のロード命令(アドレスA2)のキャッシュヒントが”S” に設定される。また、1行目のロード命令LD(アドレスA1)と8行目のロード命令(アドレスB2)は、プロセスCでは実行されないため、キャッシュヒントが”I”に設定される。
さらに、7行目のロード命令LD(アドレスB1)が実行された後に、プロセスCにおいて、アドレスB1のリードアクセスが実行されるため(図示せず)、7行目のロード命令のキャッシュヒントが”S”に設定される。23行目のロード命令LD(アドレスC1)で読み出されたデータは、その後のプロセスCの処理で使用されないため、23行目のロード命令LDのキャッシュヒントは”I”に設定される。
これにより、22行目のロード命令LDをキャッシュヒットさせることができ、23行目のロード命令LDに基づいてキャッシュラインの無駄な追い出しが発生することを抑止することができる。また、プロセスCに関連する処理を実行する他のプロセス(1行目、8行目)においても、キャッシュラインの無駄な追い出しが発生することを抑止することができる。
なお、図12に示す動作では、ストア命令STに対応してデータ処理部10aが実行するライトアクセスは、図8の右側の欄と同様に、キャッシュヒントは”M”に設定され、バースト長は”1”に設定される。
以上、図11および図12に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
さらに、図11および図12に示す実施形態では、実行頻度が他より高い処理のアクセスアドレスのパターンの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができる。これにより、例えば、プロセスCまたはプロセスCに特化して、キャッシュ回路10bのキャッシュ効率を最適化することができる。
図13は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図13では、事前準備において、複数のキャッシュ制御切替部を論理合成するステップS11Bが、図7に対して追加される。また、図7のステップS24の代わりに、ステップS24Bが実行される。その他の処理は、図7と同じである。
ステップS22、S24B、S26に示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22、S24B、S26に示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。ステップS20、S22、S24B、S26を実行する情報処理装置は、図4に示す制御プログラム20eが異なることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、ステップS20、S22、S24B、S26を実行する情報処理装置は、図4に示す決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様である。
ステップS11Bにおいて、様々なメモリアクセスの特徴に合わせた複数種のキャッシュ制御切替部が論理合成され、構成情報が生成される。なお、事前準備は、情報処理装置100Aで実行されてもよく、他のツールを使用して実行されてもよい。ステップS11Bは、事前準備のフローにおいて、他の個所に配置されてもよい。
ステップS24Bにおいて、情報処理装置100Aの決定部30eは、ステップS22で抽出した特徴に基づいて、ステップS11Bで生成された複数種のキャッシュ制御切替部の中からメモリアクセス効率が他より高くなるキャッシュ制御切替部10cを選択する。なお、ステップS22の代わりに図11に示したステップS22Aが実行され、ステップS24Bにおいて、決定部30eが、ステップS22Aで抽出した特徴に基づいて、メモリアクセス効率が他より高くなるキャッシュ制御切替部10cを選択してもよい。
決定部30eは、事前準備で生成されたキャッシュ制御切替部の構成情報を使用できるため、アクセスアドレスのパターンの分析結果に基づいてキャッシュ制御切替部10cを生成する処理を省略することができる。これにより、プログラマブル部10にプログラムするキャッシュ制御切替部10cを準備するまでに実行される第1プログラムの命令数を最小限にすることができる。この結果、情報処理装置100Aが実行するデータ処理に使用されるデータ処理部10aの動作率を向上することができ、データ処理の処理性能を向上することができる。
以上、図13に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
さらに、図13に示す実施形態では、事前準備で生成されたキャッシュ制御切替部の構成情報を使用することで、プログラマブル部10にプログラムするキャッシュ制御切替部10cを準備するまでに実行される第1プログラムの命令数を最小限にすることができる。この結果、情報処理装置100Aが実行するデータ処理に使用されるデータ処理部10aの動作率を向上することができ、データ処理の処理性能を向上することができる。
図14は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図14では、図7のステップS24の代わりに、ステップS24Cが実行され、図7のステップS22の後にステップS23Cが追加される。ステップS23C、S24Cを除く処理は、図7と同じである。
ステップS22、S23C、S24C、S26に示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22、S23C、S24C、S26に示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。ステップS20、S22、S23C、S24C、S26を実行する情報処理装置は、図4に示す制御プログラム20eが異なることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、S20、S22、S23C、S24C、S26を実行する情報処理装置は、図4に示す決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様に動作する。
ステップS23Cにおいて、決定部30eは、プログラマブル部10において、キャッシュ制御切替部をプログラム可能な空き領域を検出する。例えば、決定部30eは、図5に示したプログラマブル部10において、未使用のALMの数、未使用のメモリM1の数および未使用のDSPの数を検出する。
次に、ステップS24Cにおいて、決定部30eは、ステップS22で抽出された特徴に基づいて、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を生成する。すなわち、決定部30eは、未使用のALM、メモリM1、DSPを使用して搭載可能な回路規模のキャッシュ制御切替部10cを生成する。
キャッシュ制御切替部10cの性能は、回路規模が大きいほど高くなり、回路規模が小さいほど低くなる。ここで、キャッシュ制御切替部10cの性能は、キャッシュヒット率が高いほど高く、キャッシュラインの追い出し頻度が少ないほど高い。このように、ステップS23C、S24Cにより、プログラマブル部10の空き領域に応じて最適な性能のキャッシュ制御切替部10cをプログラマブル部10に搭載することができる。また、空き領域の制限により、キャッシュ制御切替部10cがプログラマブル部10にプログラムされない不具合を解消することができる。
なお、図11に示すステップS22Aと同様に、分析部30dは、分岐する確率が他より高い分岐先で実行されるメモリアクセスの特徴を抽出してもよい。また、図13に示すステップS24Bと同様に、決定部30eは、キャッシュ制御切替部10cの論理を生成する代わりに、予め生成された複数のキャッシュ制御切替部の中から、メモリアクセス効率が他より高くなるキャッシュ制御切替部を選択してもよい。この場合、決定部30eは、プログラマブル部10の空き領域に合わせてキャッシュ制御切替部を選択する。さらに、決定部30eがメモリアクセス効率が他より高くなるキャッシュ制御切替部を選択することに加えて、図11に示したように、分析部30dが分岐する確率が他より高い分岐先でのメモリアクセスの特徴を抽出してもよい。
以上、図14に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
さらに、図14に示す実施形態では、プログラマブル部10の空き領域に応じた最適な性能のキャッシュ制御切替部10cをプログラマブル部10に搭載することができる。また、空き領域の制限により、キャッシュ制御切替部10cがプログラマブル部10にプログラムされない不具合を解消することができる。
図15は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図15では、事前準備において、複数のキャッシュ制御切替部を論理合成するステップS11D、S13D、17Dが、図7に対して追加される。また、図7のステップS20、S22、S24、S26の代わりに、ステップS20D、S22D、S24D、S26Dが実行される。その他の処理は、図7と同じである。
ステップS22D、S24D、S26Dに示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22D、S24D、S26Dに示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。ステップS20D、S22D、S24D、S26Dを実行する情報処理装置は、図4に示す制御プログラム20eが異なることと、分析部30dがプログラマブル部10に配置されることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、ステップS20D、S22D、S24D、S26Dを実行する情報処理装置は、図4に示す決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様に動作する。
ステップS11Dにおいて、標準的なキャッシュヒントとバースト長とを生成するデフォルトのキャッシュ制御切替部が論理合成され、構成情報が生成される。ステップS13Dにおいて、図4に示すデータ処理部10aのメモリアクセスの特徴を分析する分析回路が論理合成され、構成情報が生成される。ステップS14の後、ステップS17Dにおいて、データ処理部10a、キャッシュ制御部10d、キャッシュメモリ部10e、デフォルトのキャッシュ制御切替部および分析回路がプログラマブル部10にプログラムされる。なお、ステップS11D、S13Dは、事前準備のフローにおいて、他の個所に配置されてもよい。事前準備は、情報処理装置100Aで実行されてもよく、他のツールを使用して実行されてもよい。
事前準備が完了した後、ステップS20Dにおいて、情報処理装置100Aは、演算処理装置30に第2プログラムの実行を開始させる。次に、ステップS22Dにおいて、プログラマブル部10にプログラムされた分析部30dは、第2プログラムに呼び出されて動作するデータ処理部10aが出力するメモリアクセス要求の特徴を抽出する。すなわち、分析部30dをプログラマブル部10内に搭載することで、第1プログラムを実行することなく、第2プログラムで呼び出されるデータ処理部10aのメモリアクセスの特徴を直接分析することができる。データ処理部10a(ハードウェア)が出力するメモリアクセス要求を直接分析できるため、メモリアクセス要求の特徴の抽出に掛かる時間を、図7に示した手法に比べて短縮することができる。なお、図11に示すステップS22Aと同様に、分析部30dは、分岐する確率が他より高い分岐先で実行されるメモリアクセスの特徴を抽出してもよい。
次に、ステップS24Dにおいて、決定部30eは、プログラマブル部10上の分析部30dが抽出した特徴に基づいて、キャッシュ制御切替部10cの論理を生成する。なお、図14に示すステップS24Dと同様に、決定部30eは、ステップS22Dで抽出された特徴に基づいて、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を生成してもよい。さらに、分岐する確率が他より高い分岐先でのメモリアクセスの特徴を分析部30dが抽出し、かつ、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を決定部30eが生成してもよい。
また、図13に示すステップS24Bと同様に、決定部30eは、キャッシュ制御切替部10cの論理を生成する代わりに、予め生成された複数のキャッシュ制御切替部の中から、メモリアクセス効率が他より高くなるキャッシュ制御切替部を選択してもよい。この場合、分岐する確率が他より高い分岐先でのメモリアクセスの特徴を分析部30dが抽出してもよく、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を決定部30eが生成してもよい。さらに、分岐する確率が他より高い分岐先でのメモリアクセスの特徴を分析部30dが抽出し、かつ、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を決定部30eが生成してもよい。
次に、ステップS26Dにおいて、構成制御部30fは、プログラマブル部10にプログラムされたデフォルトのキャッシュ制御切替部を、ステップS24Dで生成されたキャッシュ制御切替部10cに置き換える。そして、情報処理装置100Aは、第2プログラムの実行を継続する。
以上、図15に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。
さらに、図15に示す実施形態では、分析部30dをプログラマブル部10内に搭載することで、第1プログラムを実行することなく、第2プログラムで呼び出されるデータ処理部10aのメモリアクセスの特徴を直接分析することができる。データ処理部10a(ハードウェア)が出力するメモリアクセス要求を直接分析できるため、メモリアクセス要求の特徴の抽出に掛かる時間を、図7による手法に比べて短縮することができる。
以上の図1から図10に示す実施形態に関し、さらに以下の付記を開示する。
(付記1)
データを記憶する記憶部と、
前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部とがプログラムされるプログラマブル部と、
前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析する分析部と、
前記分析部が分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定する決定部と、
前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、前記決定部が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする構成制御部と
を備えることを特徴とする情報処理装置。
(付記2)
前記データ処理部が実行する第1データ処理と等価な第2データ処理を実行する機能を含む処理プログラムを実行する演算処理部を備え、
前記分析部は、前記処理プログラムによる前記第2データ処理の実行により発生する前記記憶部へのアクセスに基づいて前記アクセスアドレスのパターンを分析することを特徴とする付記1記載の情報処理装置。
(付記3)
前記処理プログラムによる前記第2データ処理の実行中に前記分析部による前記アクセスアドレスのパターンの分析が完了した場合、
前記構成制御部は、前記決定部が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムし、
前記演算処理部は、前記第2データ処理のうち未実行の処理を、前記第1データ処理の一部として前記データ処理部に実行させることを特徴とする付記2記載の情報処理装置。
(付記4)
前記分析部は、前記プログラマブル部にプログラムされ、
前記構成制御部は、前記データ処理部、前記分析部およびデフォルトのキャッシュ制御切替部を前記プログラマブル部にプログラムし、前記データ処理部が発行する前記メモリアクセス要求に基づいて前記分析部が前記アクセスアドレスのパターンを分析した後、前記デフォルトのキャッシュ制御切替部を、前記決定部が決定した前記キャッシュ制御切替部に置き換えることを特徴とする付記1記載の情報処理装置。
(付記5)
前記データ処理部が実行するデータ処理は、複数のプロセスを含み、
前記分析部は、前記複数のプロセスのうち、実行頻度が他のプロセスよりも高いプロセスによる前記アクセスアドレスのパターンを分析することを特徴とする付記1ないし付記4のいずれか1項記載の情報処理装置。
(付記6)
前記決定部は、前記分析部が分析した前記アクセスアドレスのパターンに基づいて決定した前記キャッシュ制御切替部の構成情報を生成し、
前記構成制御部は、前記決定部が生成した前記キャッシュ制御切替部の構成情報を前記プログラマブル部にプログラムすることを特徴とする付記1ないし付記5のいずれか1項記載の情報処理装置。
(付記7)
前記決定部は、複数種の前記アクセスアドレスのパターンにそれぞれ対応する複数種の前記キャッシュ制御切替部の構成情報のいずれかを、前記分析部が分析した前記アクセスアドレスのパターンに基づいて選択し、
前記構成制御部は、前記決定部が選択した前記キャッシュ制御切替部の構成情報を前記プログラマブル部にプログラムすることを特徴とする付記1ないし付記5のいずれか1項記載の情報処理装置。
(付記8)
前記決定部は、前記分析部が分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部の空き領域にプログラム可能な前記キャッシュ制御切替部の論理を決定することを特徴とする付記1ないし付記7のいずれか1項記載の情報処理装置。
(付記9)
前記キャッシュ制御切替部が出力する前記キャッシュ制御情報は、データを前記記憶部に書き込む代わりに前記キャッシュメモリ部に格納するか否かを示す第1情報を含み、
前記キャッシュ制御部は、前記第1情報に応じて、データを前記記憶部または前記キャッシュメモリ部に書き込むことを特徴とする付記1ないし付記8のいずれか1項記載の情報処理装置。
(付記10)
前記キャッシュ制御切替部が出力する前記キャッシュ制御情報は、前記データ処理部が発行する前記メモリアクセス要求に対応して転送されるデータの長さを示す第2情報を含み、
前記キャッシュ制御部は、前記第2情報に応じた長さのデータを前記記憶部から読み出すことを特徴とする付記1ないし付記9のいずれか1項記載の情報処理装置。
(付記11)
データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御方法において、
前記情報処理装置が、
前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムすることを特徴とする情報処理装置の制御方法。
(付記12)
データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御プログラムにおいて、
前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする
処理を、前記情報処理装置に実行させるための制御プログラム。
(付記13)
データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御プログラムを記録した記録媒体において、
前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする
処理を、前記情報処理装置に実行させるための制御プログラムを記録した記録媒体。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。