(57)【特許請求の範囲】
【請求項１】
メモリ装置とキャッシュメモリの間のデータ転送に係る試験方法であって、
第１の命令と第２の命令との組み合わせを複数回実行することであって、前記第１の命令と前記第２の命令を交互に実行開始することにより、前記第１の命令の処理の実行中に前記第２の命令の処理を割り込ませるものであり、
前記第１の命令は、前記メモリ装置内の所定サイズのデータを前記キャッシュメモリに読み込み、読み込んだデータをレジスタに格納されているストアデータで更新するためのものであり、
前記第２の命令は、前記メモリ装置内の所定サイズのデータを前記キャッシュメモリに読み込むためのものであるが、前記レジスタの使用は伴わないものであり、
前記組み合わせのそれぞれにおいて、前記第１の命令に基づいてアクセスされるアドレスと前記第２の命令に基づいてアクセスされるアドレスの差が所定値であり、前記組み合わせを複数回実行することに伴って、前記第１の命令を複数回実行することにより、前記メモリ装置内の所定サイズのデータの複数個を順番に前記キャッシュメモリに読み込むとともに、前記第２の命令を複数回実行することにより、前記メモリ装置内の所定サイズのデータの複数個を順番に前記キャッシュメモリに読み込むものである、前記組み合わせを複数回実行し、
前記組み合わせの複数回の実行が完了するまでの時間を算出する
ことを特徴とする試験方法。
【請求項２】
前記第１の命令としてストア命令を使用し、前記第２の命令としてプリフェッチ命令を用いる
ことを特徴とする請求項１に記載の試験方法。
【請求項３】
前記所定値を変更する毎に、前記第１の命令と前記第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出し、
前記所定値に応じて算出される前記時間のうち、相対的に小さいものを性能評価に用いる
ことを特徴とする請求項１に記載の試験方法。
【請求項４】
メモリ装置とキャッシュメモリの間のデータ転送に係る試験プログラムであって、
第１の命令と第２の命令との組み合わせを複数回実行することであって、前記第１の命令と前記第２の命令を交互に実行開始することにより、前記第１の命令の処理の実行中に前記第２の命令の処理を割り込ませるものであり、
前記第１の命令は、前記メモリ装置内の所定サイズのデータを前記キャッシュメモリに読み込み、読み込んだデータをレジスタに格納されているストアデータで更新するためのものであり、
前記第２の命令は、前記メモリ装置内の前記所定サイズのデータを前記キャッシュメモリに読み込むためのものであるが、前記レジスタの使用は伴わないものであり、
前記組み合わせのそれぞれにおいて、前記第１の命令に基づいてアクセスされるアドレスと前記第２の命令に基づいてアクセスされるアドレスの差が所定値であり、前記組み合わせを複数回実行することに伴って、前記第１の命令を複数回実行することにより、前記メモリ装置内の所定サイズのデータの複数個を順番に前記キャッシュメモリに読み込むとともに、前記第２の命令を複数回実行することにより、前記メモリ装置内の所定サイズのデータの複数個を順番に前記キャッシュメモリに読み込むものである、前記組み合わせを複数回実行し、
前記組み合わせの複数回の実行が完了するまでの時間を算出する、処理をプロセッサに実行させる
ことを特徴とする試験プログラム。
【請求項５】
メモリ装置とキャッシュメモリとレジスタを備え、
第１の命令と第２の命令との組み合わせを複数回実行する処理部であって、前記第１の命令と前記第２の命令を交互に実行開始することにより、前記第１の命令の処理の実行中に前記第２の命令の処理を割り込ませるものであり、
前記第１の命令は、前記メモリ装置内の所定サイズのデータを前記キャッシュメモリに読み込み、読み込んだデータをレジスタに格納されているストアデータで更新するためのものであり、
前記第２の命令は、前記メモリ装置内の所定サイズのデータを前記キャッシュメモリに読み込むためのものであるが、前記レジスタの使用は伴わないものであり、
前記組み合わせのそれぞれにおいて、前記第１の命令に基づいてアクセスされるアドレスと前記第２の命令に基づいてアクセスされるアドレスの差が所定値であり、前記組み合わせを複数回実行することに伴って、前記第１の命令を複数回実行することにより、前記メモリ装置内の所定サイズのデータの複数個を順番に前記キャッシュメモリに読み込むとともに、前記第２の命令を複数回実行することにより、前記メモリ装置内の所定サイズのデータの複数個を順番に前記キャッシュメモリに読み込むものである、前記組み合わせを複数回実行する処理部と、
前記組み合わせの複数回の実行が完了するまでの時間を算出する算出部と、を備える
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、試験方法、試験プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
企業は、デバイス間の相性を良くするため自社製のデバイスを組み合わせる方式で、複数のデバイスを含む情報処理装置を作成してきた。近年、企業は、コストダウンや開発期間の短縮の観点から他社製のデバイスを組み合わせて情報処理装置を作る方式をとっている。他社製のデバイスを組み合わせた情報処理装置において、その組み合わせによっては、情報処理装置が各デバイスの最大性能を発揮しにくいケースがある。しかし、情報処理装置は、一定の基準以上の性能を保持するのが好ましい。そのため、企業は、情報処理装置の性能評価を行い、情報処理装置の性能が一定の基準を超えているかの試験を行う。
【０００３】
試験の一例として、スループット試験が挙げられる。スループット試験は、メモリ装置からキャッシュメモリにデータを読み込む処理と、キャッシュメモリ内のデータをメモリ装置に書き込む処理を発生させ、読み込み処理と書き込み処理でのデータ転送の性能を評価することで行われる。試験対象となる情報処理装置は、キャッシュメモリ、メモリ装置、レジスタ、制御部を備える。メモリ装置は、例えば、主記憶装置である。制御部は、キャッシュメモリとメモリ装置との間のデータ転送を制御する。
【０００４】
スループット試験は、例えば、ストア命令で実現される。ストア命令は、メモリ装置にストアデータを格納する命令である。プロセッサがストア命令の実行を開始すると、制御部は、メモリ装置からキャッシュメモリにデータを読み込む。プロセッサは、キャッシュメモリに読み込まれたデータを、レジスタに格納されているストアデータで更新する。メモリ装置からキャッシュメモリへの読み込みは、ライン単位で行われる。スループット試験では、メモリ装置からキャッシュメモリにデータを読み込む処理を、キャッシュメモリサイズ分実行する。ラインは、キャッシュメモリがメモリ装置からデータを読み込む際のデータの管理単位である。
【０００５】
キャッシュメモリサイズ分のデータがキャッシュメモリに読み込まれた後に、スループット試験では、引き続きストア命令を実行させる。プロセッサがストア命令の実行を開始すると、制御部は、メモリ装置からキャッシュメモリにデータを読み込もうとする。ここで、キャッシュメモリは、新たにデータを読み込む容量がない。そのため、キャッシュメモリは、ストアデータで更新されたデータを、メモリ装置に書き込む処理を実行させる。制御部は、メモリ装置からキャッシュメモリにデータを読み込む。プロセッサは、キャッシュメモリに読み込まれたデータを、ストアデータで更新する。スループット試験では、これらの処理を、キャッシュメモリサイズ分実行する。
【０００６】
このような試験において、データの転送の性能は、キャッシュメモリサイズと、読み込み処理と書き込み処理が完了するまでの時間とを用いて算出されるスループット値を指標として評価される。企業は、算出したスループット値が一定の基準を満たしているかを判定し、情報処理装置の評価を行う。
【０００７】
情報処理装置の性能評価の例として、デュアルチャネル構造のメモリ試験で、データ転送の時間を測定し、デュアルチャネル動作を確認する方法が知られている。（例えば、特許文献１を参照）
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１８７１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
プロセッサ内のレジスタの容量は限られているため、ストア命令のようなレジスタを使用する命令を連続実行する場合、レジスタにデータが入りきらないことがある。この場合、プロセッサは、レジスタに入りきらないストアデータに係るストア命令を、レジスタに容量を確保できるまで待機させる。
【００１０】
汎用レジスタの容量が大きく、プロセッサが高速である程、処理待ちのストア命令の数が増え、処理待ちとなる命令が多くなる。そのため、スループット試験では、情報処理装置が各デバイスの性能を発揮しにくいケースがある。
【００１１】
１つの側面において、本発明は、情報処理装置の評価において、命令の処理待ちが少ない試験を行うことを目的とする。
【課題を解決するための手段】
【００１２】
１つの案では、試験方法は、第１の命令と第２の命令を用いる。第１の命令は、メモリ装置内の所定サイズのデータを順番にキャッシュメモリに読み込み、読み込んだデータをレジスタに格納されているストアデータで更新する命令である。第２の命令は、メモリ装置内における第１の命令の開始アドレスから所定値だけ異なるアドレスから所定サイズのデータを順番にキャッシュメモリに読み込み、レジスタを使用しない命令である。試験において、第１の命令と第２の命令は、交互に実行開始することで、前記第１の命令の処理を実行中に前記第２の命令の処理を割り込ませる。試験では、第１の命令と第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出する。
【発明の効果】
【００１３】
情報処理装置の評価において、命令の処理待ちが少ない試験を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】ストア命令に関するプロセッサ内の処理の例を説明する図である。
【図２】スループット試験の問題点の例を説明する図である。
【図３】本実施形態に係るスループット試験の処理例を説明する図である。
【図４Ａ】本実施形態に係るスループット試験の例（その１）を説明する図である。
【図４Ｂ】本実施形態に係るスループット試験の例（その１）を説明する図である。
【図４Ｃ】本実施形態に係るスループット試験の例（その１）を説明する図である。
【図５】本実施形態に係る機能的構成の例を説明する図である。
【図６】情報処理装置のハードウェア構成の例を示す。
【図７】本実施形態に係るプロセッサ内の処理の例を説明する図である。
【図８】本実施形態に係るスループット試験の例（その２）を説明する図である。
【図９】管理情報の例を説明する図である。
【図１０】傾向判定部の処理の例を説明する図（その１）である。
【図１１】傾向判定部の処理の例を説明する図（その２）である。
【図１２】本実施形態に係るスループット試験の例（その１）を説明するフローチャートである。
【図１３Ａ】本実施形態に係るスループット試験の例（その２）を説明するフローチャートである。
【図１３Ｂ】本実施形態に係るスループット試験の例（その２）を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本実施形態について、図面を参照しながら詳細に説明する。
図１は、ストア命令に関するプロセッサ内の処理の例を説明する図である。プロセッサ７００は、汎用レジスタ７０１と処理レジスタ７０２を備える。プロセッサ７００は、ストアデータ、アドレス情報を汎用レジスタ７０１に設定して、ストア命令を実行する。処理レジスタ７０２は、例えば、リオーダバッファである。処理レジスタ７０２は、キャッシュメモリに書き込まれるデータを保持するレジスタである。プロセッサ７００は、ストア命令を実行してキャッシュメモリに読み込まれたデータをストアデータで更新する際、ストアデータを、一旦、処理レジスタ７０２に設定した後に、処理レジスタ７０２からキャッシュメモリに書き込む。
【００１６】
図１の例におけるストア命令でメモリ装置に格納されるデータは、ストアデータa´である。ストアデータa´は、ラインサイズのデータである。プロセッサ７００は、ストアデータa´をメモリ装置に格納するストア命令を実行する場合、プロセッサ７００の内部処理として、ストアデータa´を分割してストア命令を実行する。例えば、プロセッサ７００は、ストアデータa´をストアデータa´―１〜ストアデータa´―６に分割して汎用レジスタ７０１や処理レジスタ７０２に設定する。
【００１７】
そのため、プロセッサ７００がストアデータa´をメモリ装置に格納するストア命令を開始すると、プロセッサ７００は、まず、ストアデータa´―１をメモリ装置に格納するストア命令の実行を開始する。この時点で、制御部は、メモリ装置からキャッシュメモリに、ラインサイズ分のデータの読み込みを開始する。プロセッサ７００は、ストアデータa´―１と、メモリ装置の格納先アドレス情報を汎用レジスタ７０１に設定する。併せてプロセッサ７００は、処理レジスタ７０２に、ストアデータa´―１を設定する。次に、プロセッサ７００は、ストアデータa´―２をメモリ装置に格納するストア命令の実行を開始する。プロセッサ７００は、ストアデータa´―２と、メモリ装置の格納先アドレス情報を汎用レジスタ７０１に設定する。併せてプロセッサ７００は、処理レジスタ７０２に、ストアデータa´―２を設定する。更に、プロセッサ７００は、ストアデータa´―３〜ストアデータa´―６のストア命令を実行する。プロセッサ７００は、ストアデータa´―３〜ストアデータa´―６と、ストアデータa´―３〜ストアデータa´―６のメモリ装置内の格納先アドレス情報を汎用レジスタ７０１に設定する。併せてプロセッサ７００は、処理レジスタ７０２に、ストアデータa´―３〜ストアデータa´―５を設定する。なお、ストアデータa´―１〜ストアデータa´―５のストア命令は、未だキャッシュメモリ又はメモリ装置へのストアデータの更新を行っていないため、完了していない。
【００１８】
ストアデータa´―１〜ストアデータa´―５を処理レジスタ７０２に設定した時点で処理レジスタ７０２が一杯になったため、処理レジスタ７０２は、さらにストアデータa´―６を格納するための空き容量を持たない。そこで、プロセッサ７００は、処理レジスタ７０２に空きができるまで、ストアデータa´―６をメモリ装置に格納するストア命令の実行を待つ。プロセッサ７００は、メモリ装置からキャッシュメモリに、ラインサイズ分のデータの読み込みが完了すると、処理レジスタ７０２内のストアデータa´―１〜ストアデータa´―５で、読み込んだデータを更新する。ストアデータa´―１で読み込んだデータを更新する処理が実行されると、処理レジスタ７０２に空きができるため、プロセッサ７００は、ストアデータa´―６をメモリ装置に格納するストア命令の実行を開始可能となる。その後、プロセッサ７００は、処理レジスタ７０２に、ストアデータa´―６を設定し、処理レジスタ７０２内のストアデータa´―６で、キャッシュメモリに読み込んだラインサイズのデータを更新する。これにより、プロセッサ７００は、ストアデータa´をメモリ装置に格納するストア命令に関する処理を完了する。
【００１９】
このように、プロセッサ内の処理レジスタ７０２の容量は限られているため、ストア命令のような処理レジスタ７０２を使用する命令を連続実行する場合、処理レジスタ７０２にデータが入りきらないことがある。この場合、プロセッサは、処理レジスタ７０２に入りきらないストアデータに係るストア命令を、処理レジスタ７０２に容量を確保できるまで待機させる。
【００２０】
汎用レジスタの容量が大きく、プロセッサが高速である程、処理待ちのストア命令の数が増え、処理待ちとなる命令が多くなる。そのため、スループット試験では、情報処理装置が各デバイスの性能を発揮しにくいケースがある。
【００２１】
図２は、スループット試験の問題点の例を説明する図である。情報処理装置１００は、メモリ装置１１０、キャッシュメモリ１２０、制御部１３０、レジスタ１４０、処理部１５０を備える。図２のメモリ装置１１０は、キャッシュメモリ１２０の２倍のメモリ領域を備える。メモリ装置は、例えば、主記憶装置である。メモリ装置１１０には、試験データａ〜試験データｊが格納されている。試験データａ〜試験データｊは、プロセッサが管理するデータの管理単位であるラインである。図２のキャッシュメモリ１２０は、ライン5個分のデータサイズである。図２の情報処理装置１００において、試験データａの先頭アドレスは、アドレスＡである。図２の情報処理装置１００において、試験データｆの先頭アドレスは、アドレスＢである。図２において、キャッシュメモリ１２０のメモリ領域を、キャッシュメモリサイズと称す。アドレスＢは、アドレスＡからキャッシュメモリサイズ分離れたアドレスである。制御部１３０は、キャッシュメモリとメモリ装置との間のデータ転送を制御する。処理部１５０は、プロセッサである。レジスタ１４０は、処理レジスタ７０２に対応し、例えば、リオーダバッファである。なお、以降に記載する全ての「レジスタ」は、例えば、リオーダバッファである。
【００２２】
以下に、スループット試験の処理の例を説明する。スループット試験の際に、キャッシュメモリ１２０は、予め空にされる。
【００２３】
（Ａ１）処理部１５０は、メモリ装置１１０のアドレスＡを指定して、ストア命令の実行を開始する。アドレスＡに格納されるストアデータは、試験データa´である。
【００２４】
（Ａ２）制御部１３０は、メモリ装置１１０からキャッシュメモリ１２０に試験データａを読み込む。（ロード処理）
【００２５】
（Ａ３）処理部１５０は、キャッシュメモリ１２０に読み込まれたデータを、レジスタに格納されている試験データａ´で更新する。
【００２６】
（Ａ４）処理部１５０は、処理対象とするアドレスを変更する。処理部１３０と制御部１５０は、試験データｂ〜試験データｅに関しても（Ａ１）〜（Ａ３）の処理を実行する。
【００２７】
（Ａ５）処理部１５０は、メモリ装置１１０のアドレスＢを指定して、ストア命令の実行を開始する。アドレスＢに格納されるストアデータは、試験データｂ´である。
【００２８】
（Ａ６）キャッシュメモリ１２０は、（Ａ１）〜（Ａ４）の処理により、試験データａ´〜試験データｅ´を保持している。制御部１３０は、メモリ装置１１０からキャッシュメモリ１２０に試験データｆを読み込もうとする。ここで、キャッシュメモリ１２０は、試験データｆを読み込む領域に、既に試験データａ´を保持している。そのため、制御部１３０は、試験データａ´をメモリ装置１１０に書き込む処理を実行する。
【００２９】
（Ａ７）制御部１３０は、メモリ装置１１０からキャッシュメモリ１２０に試験データｆを読み込む。（ロード処理）
【００３０】
（Ａ８）処理部１５０は、キャッシュメモリ１２０に読み込まれたデータを、レジスタに格納されている試験データｆ´で更新する。
【００３１】
（Ａ９）処理部１５０は、処理対象とするアドレスを変更する。処理部１３０と制御部１５０は、試験データｇ〜試験データｊに関しても（Ａ５）〜（Ａ８）の処理を実行する。
【００３２】
（Ａ１）〜（Ａ５）の処理により、キャッシュメモリサイズ分のデータである試験データａ〜試験データｅが、メモリ装置１１０からキャッシュメモリ１２０に読み込まれる。次の（Ａ６）〜（Ａ９）の処理により、キャッシュメモリサイズ分のデータである試験データａ´〜試験データｅ´が、キャッシュメモリ１２０からメモリ装置１１０に書き込まれる。スループット試験では、キャッシュメモリサイズと、処理に要した時間からスループット値を算出する。スループット値は、キャッシュメモリサイズを処理に要した時間で除算した単位時間あたりのデータの転送処理量である。算出したスループット値は、デバイスの性能評価に用いられる。
【００３３】
（Ａ１）から（Ａ３）までの処理及び（Ａ５）から（Ａ８）までの処理では、プロセッサ内では、図１のストアデータを分割したストア命令を連続で実行する処理が行われている。ストア命令のようなレジスタを使用する命令を連続実行するため、レジスタにデータが入りきらず、データが溢れてしまう。プロセッサは、レジスタに容量を確保できなかったストア命令の処理を、レジスタに容量を確保できるまで待機させる。
【００３４】
汎用レジスタの容量が大きく、プロセッサが高速である程、処理待ちのストア命令の数が増え、処理待ち時間が多くなってしまう。そのため、図２のようなスループット試験では、処理待ち時間を含んだスループット値が算出されてしまうという問題がある。
【００３５】
図３は、本実施形態に係るスループット試験の処理例を説明する図である。図３のメモリ装置３０１は、１３個のラインを備える。図３のメモリ装置３０１には、スループット試験に用いるストア命令の開始アドレスとして、アドレスＡが設定されている。アドレスＡは、メモリ装置３０１の先頭ラインの先頭アドレスである。また、本実施形態に係るスループット試験は、プリフェッチ命令を使用する。プリフェッチ命令は、キャッシュメモリにメモリ装置３０１からラインデータを読み込む命令である。なお、プリフェッチ命令は、レジスタを使用しない命令である。本実施形態に係るスループット試験では、プリフェッチ命令の開始アドレスも設定される。プリフェッチ命令の命令開始アドレスは、ストア命令の開始アドレスからのオフセットαとして設定される。言い換えると、プリフェッチ命令の開始アドレスは、アドレスＡ＋αとして設定される。アドレスＡ＋αは、メモリ装置３０１の上から４つ目のラインの先頭アドレスである。
【００３６】
試験を開始すると、まず、アドレスＡのデータのストア命令０１が実行される。次にアドレスＡ＋αのデータのプリフェッチ命令０１が実行される。ストア命令０１とプリフェッチ命令０１が実行されると、試験では、プリフェッチ命令とストア命令の処理対象となるアドレスを、ラインサイズ分変更する。引き続き図３の例では、ストア命令０２が実行され、プリフェッチ命令０２が実行される。また、ストア命令０２とプリフェッチ命令０２が実行されると、試験では、プリフェッチ命令とストア命令の処理対象となるアドレスを、ラインサイズ分変更する。このように、本実施形態に係るスループット試験では、ストア命令とプリフェッチ命令の組を、交互に実行する。図３の例では、ストア命令とプリフェッチ命令の組とをストア命令１３とプリフェッチ命令１３の組み合わせで実行されるまで実行する。
【００３７】
本実施形態に係るスループット試験におけるストア命令は、レジスタにストアデータを設定する。一方、プリフェッチ命令は、レジスタを使用しない。ストア命令とプリフェッチ命令が交互に実行されることで、ストア命令を連続で実行する場合に比べてレジスタの使用率は下がる。
【００３８】
本実施形態に係るスループット試験では、ストア命令とプリフェッチ命令とを交互に実行する処理の組み合わせを、ストア命令０１とプリフェッチ命令０１の組み合わせから、ストア命令１３とプリフェッチ命令１３の組み合わせまで実行する。すると、少なくとも、キャッシュメモリサイズ分のデータが、キャッシュメモリに読み込まれ、メモリ装置に書き込まれる処理が発生する。併せて試験では、ストア命令０１とプリフェッチ命令０１の組み合わせから、ストア命令１３とプリフェッチ命令１３の組み合わせの処理が完了するまでの時間を算出する。試験では、情報処理装置の性能評価に、キャッシュメモリサイズを処理に要した時間で除算した単位時間あたりの処理量をスループット値として算出する。
【００３９】
図４は、本実施形態に係るスループット試験の例（その１）を説明する図である。情報処理装置３００は、メモリ装置３０１、キャッシュメモリ３０２、処理部３０３、レジスタ３０４、制御部３０５を含む。メモリ装置３０１は、キャッシュメモリ３０２のメモリ領域を備える。メモリ装置は、例えば、主記憶装置である。メモリ装置３０１のメモリ領域は、キャッシュメモリの２倍に限定するものではない。また、図４は、キャッシュメモリサイズを限定するものではない。メモリ装置３０１には、試験データａ〜試験データｈが格納されている。試験データａ〜試験データｈは、プロセッサが管理するデータの管理単位であるラインである。図４のキャッシュメモリ３０２は、ライン４個分のデータサイズである。試験データａのメモリ装置内の先頭アドレスは、アドレスＡである。処理部３０３は、ストア命令とプリフェッチ命令とを交互に実行し、また、各命令の処理対象となるメモリ装置３０１内のアドレスを管理する。レジスタ３０４は、リオーダバッファである。処理部３０３は、プロセッサである。制御部３０５は、キャッシュメモリとメモリ装置との間のデータ転送を制御する。
【００４０】
以下に、本実施形態に係るスループット試験の処理を説明する。図４の実施例は、実現させたいアクセスの例である。処理を開始する前に、予めキャッシュメモリ３０２は空にされているものとする。
【００４１】
（Ｂ１）処理部３０３は、メモリ装置３０１のアドレスＡを指定して、ストア命令の実行を開始する。制御部３０５は、試験データａのロード処理を開始する。アドレスＡに格納されるストアデータは、試験データa´である。
【００４２】
（Ｂ２）処理部３０３は、試験時に設定されるオフセットαの値を取得する。オフセットαは、（Ｂ１）で指定したアドレスＡからのオフセットアドレスである。処理部３０３は、メモリ装置３０１内のアドレスＡ＋αを指定する。図３の情報処理装置３００において、アドレスＡ＋αは、試験データｃの先頭アドレスである。処理部３０３は、試験データｃをキャッシュメモリ３０２に格納するプリフェッチ命令を実行開始する。制御部３０５は、試験データｃのロード処理を開始する。なお、プリフェッチ命令は、ストア命令と異なり、レジスタを使用しない命令である。
【００４３】
（Ｂ３）処理部３０３は、メモリ装置３０１の（Ｂ１）で指定した次のラインを指定して、ストア命令の実行を開始する。制御部３０５は、試験データｂのロード処理を開始する。（Ｂ３）のストア命令で格納されるストアデータは、試験データｂ´である。実施例において、（Ｂ１）の試験データａのロード処理は、（Ｂ３）の処理の時点で完了している。
【００４４】
（Ｂ４）処理部３０３は、メモリ装置３０１の（Ｂ２）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データｄのロード処理を開始する。処理部３０３は、（Ｂ３）でキャッシュメモリ３０２に読み込まれた試験データａを、レジスタ３０４に格納されている試験データａ´で更新する。実施例において、（Ｂ２）のプリフェッチ命令で実行された試験データｃのロード処理は、（Ｂ４）の処理の時点で完了している。
【００４５】
（Ｂ５）処理部３０３は、メモリ装置３０１の（Ｂ３）で指定した次のラインを指定して、ストア命令の実行を開始する。制御部３０５は、試験データｃのロード処理を開始する。（Ｂ５）のストア命令で格納されるストアデータは、試験データｃ´である。実施例において、（Ｂ３）の試験データｂのロード処理は、（Ｂ５）の処理の時点で完了している。
【００４６】
（Ｂ６）処理部３０３は、メモリ装置３０１の（Ｂ４）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データｅのロード処理を開始する。処理部３０３は、（Ｂ５）でキャッシュメモリ３０２に読み込まれた試験データｂを、レジスタ３０４に格納されている試験データｂ´で更新する。実施例において、（Ｂ４）のプリフェッチ命令で実行された試験データｄのロード処理は、（Ｂ６）の処理の時点で完了している。
【００４７】
（Ｂ７）処理部３０３は、メモリ装置３０１の（Ｂ５）で指定した次のラインを指定して、ストア命令の実行を開始する。制御部３０５は、試験データｄのロード処理を開始する。（Ｂ７）のストア命令で格納されるストアデータは、試験データｄ´である。実施例において、（Ｂ５）の試験データｃのロード処理は、（Ｂ７）の処理の時点で完了している。ここで、（Ｂ７）で完了した試験データｃのキャッシュメモリ３０２内でのロード領域が、既に使用されている。そのため、制御部３０５は、（Ｂ４）の時点でロードされていた試験データｃをキャッシュメモリ３０２から削除する。
【００４８】
（Ｂ８）処理部３０３は、メモリ装置３０１の（Ｂ６）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データｆのロード処理を開始する。処理部３０３は、（Ｂ７）でキャッシュメモリ３０２に読み込まれた試験データｃを、レジスタ３０４に格納されている試験データｃ´で更新する。実施例において、（Ｂ６）のプリフェッチ命令で実行された試験データｅのロード処理は、（Ｂ８）の処理の時点で完了している。しかし、（Ｂ８）で完了した試験データｅのキャッシュメモリ３０２内でのロード領域が、既に使用されている。制御部３０５は、試験データｅのロード先のキャッシュメモリ３０２内の領域の試験データａ´を削除する。この時、制御部３０５は、試験データａ´を、メモリ装置３０１の試験データａが格納されている領域に書き込み処理を開始する。試験データａ´は、メモリ装置３０１の試験データａが格納されている領域に格納するストア命令により保持されていたデータであるためである。
【００４９】
（Ｂ９）処理部３０３は、メモリ装置３０１の（Ｂ７）で指定した次のラインを指定して、ストア命令の実行を開始する。制御部３０５は、試験データｅのロード処理を開始する。（Ｂ９）のストア命令で格納されるストアデータは、試験データｅ´である。実施例において、（Ｂ７）の試験データｄのロード処理は、（Ｂ９）の処理の時点で完了している。ここで、（Ｂ９）で完了した試験データｄのキャッシュメモリ３０２内でのロード領域が、既に使用されている。そのため、制御部３０５は、（Ｂ６）の時点でロードされていた試験データｄをキャッシュメモリ３０２から削除する。
【００５０】
（Ｂ１０）処理部３０３は、メモリ装置３０１の（Ｂ８）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データｇのロード処理を開始する。処理部３０３は、（Ｂ９）でキャッシュメモリ３０２に読み込まれた試験データｄを、レジスタ３０４に格納されている試験データｄ´で更新する。実施例において、（Ｂ８）のプリフェッチ命令で実行された試験データｆのロード処理は、（Ｂ１０）の処理の時点で完了している。しかし、（Ｂ１０）で完了した試験データｆのキャッシュメモリ３０２内でのロード領域が、既に使用されている。制御部３０５は、試験データｆのロード先のキャッシュメモリ３０２内の領域の試験データｂ´を削除する。この時、制御部３０５は、試験データｂ´を、メモリ装置３０１の試験データｂが格納されている領域に書き込み処理を開始する。試験データｂ´は、メモリ装置３０１の試験データｂが格納されている領域に格納するストア命令により保持されていたデータであるためである。また、実施例において、（Ｂ８）でメモリ装置３０１に書き込み処理の開始された試験データａ´は、（Ｂ１０）の時点で完了している。
【００５１】
（Ｂ１１）処理部３０３は、メモリ装置３０１の（Ｂ９）で指定した次のラインを指定して、ストア命令の実行を開始する。制御部３０５は、試験データｆのロード処理を開始する。（Ｂ１１）のストア命令で格納されるストアデータは、試験データｆ´である。実施例において、（Ｂ９）の試験データｅのロード処理は、（Ｂ１１）の処理の時点で完了している。ここで、（Ｂ１１）で完了した試験データｅのキャッシュメモリ３０２内でのロード領域が、既に使用されている。そのため、制御部３０５は、（Ｂ８）の時点でロードされていた試験データｅをキャッシュメモリ３０２から削除する。
【００５２】
（Ｂ１２）処理部３０３は、メモリ装置３０１の（Ｂ１０）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データｈのロード処理を開始する。処理部３０３は、（Ｂ９）でキャッシュメモリ３０２に読み込まれた試験データｅを、レジスタ３０４に格納されている試験データｅ´で更新する。実施例において、（Ｂ１０）のプリフェッチ命令で実行された試験データｇのロード処理は、（Ｂ１２）の処理の時点で完了している。しかし、（Ｂ１２）で完了した試験データｇのキャッシュメモリ３０２内でのロード領域が、既に使用されている。制御部３０５は、試験データｇのロード先のキャッシュメモリ３０２内の領域の試験データｃ´を削除する。この時、制御部３０５は、試験データｃ´を、メモリ装置３０１の試験データｃが格納されている領域に書き込み処理を開始する。試験データｃ´は、メモリ装置３０１の試験データｃが格納されている領域に格納するストア命令により保持されていたデータであるためである。また、実施例において、（Ｂ１０）でメモリ装置３０１に書き込み処理の開始された試験データｂ´は、（Ｂ１２）の時点で完了している。
【００５３】
（Ｂ１３）処理部３０３は、メモリ装置３０１の（Ｂ１１）で指定した次のラインを指定して、ストア命令の実行を開始する。制御部３０５は、試験データｇのロード処理を開始する。（Ｂ１３）のストア命令で格納されるストアデータは、試験データｇ´である。実施例において、（Ｂ１１）の試験データｆのロード処理は、（Ｂ１３）の処理の時点で完了している。ここで、（Ｂ１３）で完了した試験データｆのキャッシュメモリ３０２内でのロード領域が、既に使用されている。そのため、制御部３０５は、（Ｂ１０）の時点でロードされていた試験データｆをキャッシュメモリ３０２から削除する。
【００５４】
（Ｂ１４）処理部３０３は、メモリ装置３０１の（Ｂ１２）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データａ´のロード処理を開始する。処理部３０３は、（Ｂ１１）でキャッシュメモリ３０２に読み込まれた試験データｆを、レジスタ３０４に格納されている試験データｆ´で更新する。実施例において、（Ｂ１２）のプリフェッチ命令で実行された試験データｈのロード処理は、（Ｂ１４）の処理の時点で完了している。しかし、（Ｂ１４）で完了した試験データｈのキャッシュメモリ３０２内でのロード領域が、既に使用されている。制御部３０５は、試験データｈのロード先のキャッシュメモリ３０２内の領域の試験データｄ´を削除する。この時、制御部３０５は、試験データｄ´を、メモリ装置３０１の試験データｃが格納されている領域に書き込み処理を開始する。試験データｄ´は、メモリ装置３０１の試験データｄが格納されている領域に格納するストア命令により保持されていたデータであるためである。また、実施例において、（Ｂ１２）でメモリ装置３０１に書き込み処理の開始された試験データｃ´は、（Ｂ１４）の時点で完了している。
【００５５】
（Ｂ１５）処理部３０３は、メモリ装置３０１の（Ｂ１３）で指定した次のラインを指定して、ストア命令の実行を開始する。制御部３０５は、試験データｈのロード処理を開始する。（Ｂ１５）のストア命令で格納されるストアデータは、試験データｈ´である。実施例において、（Ｂ１３）の試験データｇのロード処理は、（Ｂ１５）の処理の時点で完了している。ここで、（Ｂ１５）で完了した試験データｇのキャッシュメモリ３０２内でのロード領域が、既に使用されている。そのため、制御部３０５は、（Ｂ１２）の時点でロードされていた試験データｇをキャッシュメモリ３０２から削除する。
【００５６】
（Ｂ１６）処理部３０３は、メモリ装置３０１の（Ｂ１４）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データｂ´のロード処理を開始する。処理部３０３は、（Ｂ１５）でキャッシュメモリ３０２に読み込まれた試験データｇを、レジスタ３０４に格納されている試験データｇ´で更新する。実施例において、（Ｂ１４）のプリフェッチ命令で実行された試験データａ´のロード処理は、（Ｂ１６）の処理の時点で完了している。しかし、（Ｂ１６）で完了した試験データａ´のキャッシュメモリ３０２内でのロード領域が、既に使用されている。制御部３０５は、試験データａ´のロード先のキャッシュメモリ３０２内の領域の試験データｅ´を削除する。この時、制御部３０５は、試験データｅ´を、メモリ装置３０１の試験データｅが格納されている領域に書き込み処理を開始する。試験データｅ´は、メモリ装置３０１の試験データｅが格納されている領域に格納するストア命令により保持されていたデータであるためである。また、実施例において、（Ｂ１４）でメモリ装置３０１に書き込み処理の開始された試験データｄ´は、（Ｂ１６）の時点で完了している。
【００５７】
（Ｂ１）〜（Ｂ１６）までの処理で、ストア命令とプリフェッチ命令とは、試験データａ〜試験データｈまでのラインを一度ずつキャッシュメモリ３０２に読み込む処理をしている。それに伴い、試験データａ´〜試験データｄ´が、メモリ装置３０１に書き込まれる処理も発生している。本実施形態に係る試験では、（Ｂ１）〜（Ｂ１６）までの時間を算出する。スループット値は、キャッシュメモリサイズを、処理に要した時間で除算し、性能評価に用いられる。（Ｂ１）〜（Ｂ１６）の処理のように、ストア命令とプリフェッチ命令を交互に実行することで、リオーダバッファであるレジスタを効率的に使用することができ、処理待ちを発生させずに、スループット値を算出できる。
【００５８】
図５は、本実施形態に係る機能的構成の例を説明する図である。図５は、図４と同じものに、同じ番号を付す。情報処理装置３００は、処理部３０３、設定部３１２、算出部３１３、傾向判定部３１４、判定部３１５、メモリ装置３０１、キャッシュメモリ３０２、レジスタ３０４、制御部３０５を備える。処理部３０３は、ストア命令とプリフェッチ命令とを交互に実行し、また、各命令の処理対象となるメモリ装置３０１内のアドレスを管理する。レジスタ３０４は、プロセッサ内に搭載されているリオーダバッファであり、プロセッサの処理で使用される。制御部３０５は、キャッシュメモリとメモリ装置との間のデータ転送を制御する。
【００５９】
設定部３１２は、スループット試験に用いられるパラメータの設定を行う。設定部３１２は、例えば、オフセットαを設定する。図３や図４のスループット試験では、１つのオフセットαを設定して、プリフェッチ命令の開始アドレスを設定し、試験を行っている。しかし、実際には、複数のオフセットαを設定可能で、オフセットαの設定毎に、スループット値を算出可能である。算出部３１３は、スループットの値を算出する。
【００６０】
傾向判定部３１４は、オフセットアルファの設定毎に、算出部３１３で算出されたスループットの値のうち、最大スループット値を判定するために用いられる。傾向判定部３１４の処理については、図７を用いて後述する。判定部３１５は、算出したスループット値と理論値とから、情報処理装置３００が一定の基準を満たしているかの判定を行う。メモリ装置３０１は、処理部３０３が使用する管理情報３２１を格納し、また、試験対象領域３２２を備える。試験対象領域３２２は、ストア命令及びプリフェッチ命令で読み出されるデータを保持する領域である。
【００６１】
図６は、情報処理装置のハードウェア構成の例を示す。情報処理装置３００は、プロセッサ３３１、キャッシュメモリ３０２、ＭＡＣ（Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）３４０、メモリ装置３０１を備える。情報処理装置３００は、例えば、コンピュータなどで実現されることがある。情報処理装置３００は、入出力装置４００と接続されている。
【００６２】
プロセッサ３３１は、Central Processing Unit（ＣＰＵ）を含む任意の処理回路とすることができる。情報処理装置は、プロセッサ３３１を複数（プロセッサ３３１ａ〜プロセッサ３３１ｎ）備えてもよい。プロセッサ３３１ａ〜プロセッサ３３１ｎは、レジスタ３０４（レジスタ３０４ａ〜レジスタ３０４ｎ）を備える。スループット試験では、単一のプロセッサを試験に用いてもよい。複数のプロセッサを指定して使用してもよい。情報処理装置３００において、プロセッサ３３１は、処理部３０３、設定部３１２、算出部３１３、傾向判別部３１４、判定部３１５として動作する。ＭＡＣ３４０は、キャッシュメモリ３０２からメモリ装置３０１へのデータ転送及びメモリ装置３０１からキャッシュメモリ３０２へのデータ転送を制御する。また、ＭＡＣ３４０は、メモリ装置３０１とキャッシュメモリ３０２間でデータ転送を行う際に、メモリ装置３０１とキャッシュメモリ３０２のアドレス情報の対応付けをし、対応付けした情報を保持している。ＭＡＣ３４０は、制御部３０５として動作する。なお、プロセッサ３３１は、例えば、外部の記憶装置に記憶されたプログラムを実行することができる。メモリ装置３０１は、プロセッサ３３１の動作により得られたデータや、プロセッサ３３１の処理に用いられるデータも、適宜、記憶する。入出力装置４００は、例えば、入力手段をボタン、キーボード、マウス等として実現でき、出力手段をディスプレイなどとして実現される。
【００６３】
図７は、本実施形態に係るプロセッサ内の処理の例を説明する図である。図７のプロセッサ７００は、プロセッサ７００は、汎用レジスタ７０１と処理レジスタ７０２を備える。プロセッサ７００は、ストアデータ、アドレス情報を汎用レジスタ７０１に設定して、ストア命令を実行する。処理レジスタ７０２は、例えば、リオーダバッファである。処理レジスタ７０２は、仕掛り中の命令の演算結果を保持するレジスタである。ストア命令を処理するプロセッサ７００の例において、プロセッサ７００が、キャッシュメモリに読み込まれたデータをストアデータで更新する際に、ストアデータは、処理レジスタ７０２から使用される。
【００６４】
本実施形態の例で用いられるストアデータa´は、ラインサイズのデータである。プロセッサ７００は、ストアデータa´をメモリ装置に格納するストア命令を実行する場合、プロセッサ７００の内部処理として、ストアデータa´を分割してストア命令を実行する。例えば、プロセッサ７００は、ストアデータa´をストアデータa´―１〜ストアデータa´―６に分割して汎用レジスタ７０１や処理レジスタ７０２に設定する。
【００６５】
処理（Ｂ１）のように、プロセッサ７００がストアデータa´をメモリ装置に格納するストア命令を開始する。すると、プロセッサ７００は、ストアデータa´―１をメモリ装置に格納するストア命令の実行を開始する。この時点で、制御部は、メモリ装置からキャッシュメモリに、ラインサイズ分のデータの読み込みを開始する。プロセッサ７００は、ストアデータa´―１と、メモリ装置の格納先アドレス情報を汎用レジスタ７０１に設定する。併せてプロセッサ７００は、処理レジスタ７０２に、ストアデータa´―１を設定する。次に、プロセッサ７００は、ストアデータa´―２をメモリ装置に格納するストア命令の実行を開始する。プロセッサ７００は、ストアデータa´―２と、メモリ装置の格納先アドレス情報を汎用レジスタ７０１に設定する。併せてプロセッサ７００は、処理レジスタ７０２に、ストアデータa´―２を設定する。
【００６６】
次に、図４の処理（Ｂ２）のように、プロセッサ７００は、ストア命令が完了する前に、プリフェッチ命令の実行を開始する。プリフェッチ命令でロードするデータは、例えば、試験データｃである。プロセッサ７００は、試験データｃをロードする命令を実行する場合、プロセッサ７００の内部処理として、試験データｃのアドレス情報を分担して指定する。例えば、プロセッサ７００は、試験データｃのアドレス情報を６分割して試験データｃ−１〜試験データｃ−６のアドレスで指定する。（Ｂ２）の処理が開始されると、プロセッサは、ストアデータａ´―１とストアデータａ´―２のストア命令の後に、試験データｃ−１と試験データｃ−２のプリフェッチ命令の実行を開始する。プロセッサ７００は、試験データｃ−１と試験データｃ−２の先頭アドレス情報を、汎用レジスタ７０１に設定する。しかし、処理レジスタ７０２には、何ら情報を設定しない。
【００６７】
引き続き処理（Ｂ１）でのストア命令は実行中なので、プロセッサ７００は、プロセッサ７００は、ストアデータa´―３とストアデータａ´―４をメモリ装置に格納するストア命令の実行を開始する。プロセッサ７００は、ストアデータa´―３とストアデータａ´―４を、メモリ装置の格納先アドレス情報を汎用レジスタ７０１に設定する。併せてプロセッサ７００は、処理レジスタ７０２に、ストアデータa´―３とストアデータａ´―４を設定する。
【００６８】
図１の例では、プロセッサ７００が６個のストア命令を実行した場合、汎用レジスタよりも処理レジスタ７０２が小さいため、処理レジスタに空きがない状態となっていた。しかしながら、図７の例のように、ストア命令が連続して実行される間に、処理レジスタ７００を使用しないプリフェッチ命令を挟むことで、プロセッサ７００が６個の命令を実行しても、処理レジスタ７０２に余裕ができる。図７の例では、汎用レジスタを効率的に使用できる。図７の例では、ストア命令を２個実行後に、プリフェッチ命令２個を実行しているが、ストア命令１個実行後に、プリフェッチ命令１個を実行するような処理であってもよい。
【００６９】
図８は、本実施形態に係るスループット試験の例（その２）を説明する図である。図８の情報処理装置３００は、図４と同じ情報処理装置である。図８の情報処理装置３００は、図４と同じ番号を付している。図８の実施例は、図３の実施例とは異なるオフセットαが設定され、好ましくない試験のアクセス例である。
【００７０】
以下に、好ましくない試験のアクセス例を説明する。
（Ｃ１）処理部３０３は、メモリ装置３０１のアドレスＡを指定して、ストア命令の実行を開始する。制御部３０５は、試験データａのロード処理を開始する。（Ｃ１）のストア命令で格納されるストアデータは、試験データａ´である。
【００７１】
（Ｃ２）処理部３０３は、試験時に設定されるオフセットαの値を取得する。オフセットαは、（Ｂ１）で指定したアドレスＡからのオフセットアドレスである。処理部３０３は、メモリ装置３０１内のアドレスＡ＋αを指定する。図６の情報処理装置３００において、アドレスＡ＋αは、試験データｂの先頭アドレスである。処理部３０３は、試験データｂをキャッシュメモリ３０２に格納するプリフェッチ命令を実行開始する。制御部３０５は、試験データｂのロード処理を開始する。なお、プリフェッチ命令は、ストア命令と異なり、レジスタを使用しない命令である。
【００７２】
（Ｃ３）処理部３０３は、メモリ装置３０１の（Ｃ１）で指定した次のラインを指定して、ストア命令の実行を開始しようとする。しかし、（Ｃ２）で実行開始された試験データｂのロード処理が途中である。そのため、試験データｂのストア命令は、（Ｃ２）のロード処理が完了するまで待たされる。（Ｃ１）のストア命令で実行された試験データａのロード処理は、（Ｃ３）の処理の時点で完了している。
【００７３】
（Ｃ４）（Ｃ２）のプリフェッチ命令で実行された試験データｂのロード処理は、（Ｃ４）の処理の時点で完了している。そのため、処理部３０３は、試験データｂのストア命令の実行を開始する。制御部３０５は、試験データｂのロード処理を開始する。（Ｃ４）のストア命令で格納されるストアデータは、試験データｂ´である。処理部３０３は、（Ｃ３）でキャッシュメモリ３０２に読み込まれた試験データａを、レジスタ３０４に格納されている試験データａ´で更新する。
【００７４】
（Ｃ５）処理部３０３は、メモリ装置３０１の（Ｃ２）で指定した次のラインを指定して、プリフェッチ命令の実行を開始する。制御部３０５は、試験データｃのロード処理を開始する。
【００７５】
（Ｃ６）処理部３０３は、メモリ装置３０１の（Ｃ４）で指定した次のラインを指定して、ストア命令の実行を開始しようとする。しかし、（Ｃ５）で実行開始された試験データｃのロード処理が途中である。そのため、試験データｃのストア命令は、（Ｃ５）のロード処理が完了するまで待たされる。（Ｃ４）のストア命令で実行された試験データｂのロード処理は、（Ｃ６）の処理の時点で完了している。
【００７６】
（Ｃ１）〜（Ｃ６）のような処理は、ストア命令とプリフェッチ命令ともに、試験データａ〜試験データｈまでのデータを対象に一度ずつ行われるまで行われる。（Ｃ３）や（Ｃ６）のように、処理待ちが発生すると、デバイスの性能評価を正しく行えないことも考えられる。そのため、本実施形態では、オフセットα毎にスループット値を算出し、最大のスループット値を効率的に行う処理を行う。
【００７７】
図９は、管理情報の例を説明する図である。管理情報は、オフセットα毎にスループット値を算出した場合に、最大のスループット値を効率的に行うために用いられる。管理情報３２１は、管理番号、オフセットアドレス、データサイズ、時間、スループット値、傾向情報を備える。例えば、管理番号の２−１の行と２−２の行は、セットで管理される。管理番号の２−１の行は、オフセットαに（０ｘ２００）が設定された場合の例である。次に、管理番号２−２の行は、オフセットαに（０ｘ２８０）が設定された場合の例である。ここで、オフセットαの（０ｘ２８０）は、（０ｘ２００）からラインサイズ分異なるアドレスである。本実施形態では、オフセットαに値を設定した場合、設定された値にライン分のアドレスサイズを加算したアドレスでもスループット値を算出する。このラインサイズ分のアドレスサイズを加算したアドレスを、隣接ポイントと称す。言い換えると、（Ｂ１）〜（Ｂ１６）の処理を実行し、スループット値を算出した場合、併せて、隣接ポイントのオフセットαを使用して、（Ｂ１）〜（Ｂ１６）の処理を実行し、スループット値を算出する。データサイズは、キャッシュメモリのサイズとして１６ＭＢが格納されている。データサイズは、スループット値を算出する際に係数として用いられる。
【００７８】
次に管理番号２−１の行の開始時間は、（Ｂ１）の処理が開始された時間である。一方、管理番号２−２の行の終了時間は、（Ｂ１６）の処理が完了した時間である。処理時間は、開始時間と終了時間の差分である。スループット値は、データサイズを処理時間で除算した単位時間あたりの転送量の値である。管理番号２−１のオフセット（０ｘ２００）を用いたスループット値の算出が完了すると、管理番号２−２のオフセット（０ｘ２８０）を用いたスループット値の算出が実行される。実行される処理は、（Ｂ１）〜（Ｂ１６）に記載の処理である。
【００７９】
傾向情報は、傾向判定部３１４で用いられる情報である。傾向判定部３１４は、管理番号２−１と２−２とのスループット値を比較し、上昇傾向にあるか下降傾向にあるかを判定する。上昇傾向は、例えば、管理番号２−２のスループット値の方が管理番号２−１のスループットの値よりも大きい場合である。一方、下降傾向は、管理番号２−２のスループット値の方が管理番号２−１のスループット値よりも小さい場合である。
【００８０】
傾向判定部３１４は、管理情報を用いて最大スループット値を、上昇傾向から下降傾向に変わる範囲で特定する。図９の例では、管理番号１−１〜管理番号２−１の間及び管理番号４−１〜管理番号５−１の間でスループット値が上昇傾向から下降傾向に変わる。傾向判定部３１４は、スループット値が上昇傾向から下降傾向が2箇所ある場合には、よりスループット値が高いほうを選択する。
【００８１】
図１０は、傾向判定部の処理の例を説明する図（その１）である。スループット値のグラフ４００Ａ〜４００Ｃは、傾向判定部３１４が傾向情報から最大スループット値を絞り込む方法の例である。グラフ４００Ａ〜グラフ４００Ｃは、縦軸のスループットの値と、横軸のプリフェッチ命令のアドレスに設定されるオフセットαの関係を示す。グラフ４００Ａ〜グラフ４００Ｃは、管理情報３２１で算出されたスループット値と、オフセットアドレスとを用いて作成される。管理情報３２１を用いてオフセットαの設定毎に上昇傾向にあるか下降傾向にあるかを判定することで、ポイント４０１〜ポイント４０５のスループット値と、傾向情報を備えるグラフ４００Ａが生成される。
【００８２】
傾向判定部３１４は、ポイント４０１〜ポイント４０５の傾向情報から、スループット値が上昇傾向から下降傾向に変わる範囲を特定する。グラフ４００Ａにおいて、スループット値が上昇傾向から下降傾向に変わる範囲は、ポイント４０２〜ポイント４０３の間である。傾向判定部３１４は、ポイント４０２〜ポイント４０３間に最大スループット値があると判定する。
【００８３】
傾向判定部３１４は、最大スループット値となるプリフェッチ命令のアドレスオフセットαを特定するため、ポイント４０２〜ポイント４０３間の絞込み処理を実行させる。グラフ４００Ｂは、絞込み処理の例を説明するグラフである。絞込み処理では、（Ｂ１）〜（Ｂ１６）の処理を、オフセットαのアドレスをポイント４０２〜ポイント４０３間で変更しながら繰り返し行う。オフセットαのアドレスをラインサイズに近いサイズを用いて、ポイント４０２〜ポイント４０３間で（Ｂ１）〜（Ｂ１６）の処理を繰り返し行う程、最大スループット値の特定は容易になる。一方で、ラインサイズに近いサイズで（Ｂ１）〜（Ｂ１６）の処理を繰り返し行うほど、最大スループット値の特定に時間を要する。
【００８４】
グラフ４００Ｂは、ポイント４０２〜ポイント４０３間を５分割し、ポイント４１１〜ポイント４１４のオフセットαを用いて（Ｂ１）〜（Ｂ１６）の処理を実行している。傾向判定部３１４は、ポイント４１１〜ポイント４１４の傾向情報から、スループット値が上昇傾向から下降傾向に変わる範囲を特定する。グラフ４００Ｂにおいて、スループット値が上昇傾向から下降傾向に変わる範囲は、ポイント４１２〜ポイント４１３の間である。傾向判定部３１４は、ポイント４１２〜ポイント４１３間に最大スループット値があると判定する。
【００８５】
グラフ４００Ｃは、傾向判定部３１４が、ポイント４１２〜ポイント４１３間に最大スループット値があると判定した後の例である。算出部は、ポイント４１２〜ポイント４１３間でアドレスを分割し、（Ｂ１）〜（Ｂ１６）の処理を繰り返し、スループット値を算出する。判定部は、ポイント４１２〜ポイント４１３間で最大スループット値を算出する。
【００８６】
図１１は、傾向判定部の処理の例を説明する図（その２）である。スループット値のグラフ５００Ａ〜グラフ５００Ｃは、傾向判定部３１４が傾向情報から最大スループット値を算出する方法の例である。グラフ５００Ａ〜グラフ５００Ｃは、縦軸のスループットの値と、横軸のプリフェッチ命令のアドレスに設定されるオフセットαの関係を示す。グラフ５００Ａ〜グラフ５００Ｃは、管理情報３２１で算出されたスループット値と、オフセットアドレスとを用いて作成される。図９の管理情報３２１を用いると、ポイント５０１〜ポイント５０５のスループット値と、傾向情報を備えるグラフ５００Ａが生成される。図１０のグラフ４００Ａ〜グラフ４００Ｃでは、最大スループット値の候補が１つであるが、図１１のグラフ５００Ａ〜グラフ５００Ｃ最大スループット値の候補が２つある場合の例である。
【００８７】
傾向判定部３１４は、ポイント５０１〜ポイント５０５の傾向情報から、スループット値が上昇傾向から下降傾向に変わる範囲を特定する。グラフ５００Ａにおいて、スループット値が上昇傾向から下降傾向に変わる範囲は、ポイント５０１〜ポイント５０２の間と、ポイント５０４〜ポイント５０５の間である。傾向判定部３１４は、ポイント５０１〜ポイント５０２の間、又は、ポイント５０４〜ポイント５０５の間に最大スループット値があると判定する。
【００８８】
傾向判定部３１４は、最大スループット値となるプリフェッチ命令のアドレスオフセットαを特定するため、ポイント５０１〜ポイント５０２の間と、ポイント５０４〜ポイント５０５の間の絞込み処理を実行させる。絞込み処理では、（Ｂ１）〜（Ｂ１６）の処理を、オフセットαのアドレスをポイント５０１〜ポイント５０２の間と、ポイント５０４〜ポイント５０５の間で変更しながら繰り返し行う。グラフ５００Ｂは、ポイント５０１〜ポイント５０２を６分割し、ポイント５１１〜ポイント５１５で（Ｂ１）〜（Ｂ１６）の処理を実行している。同様に、グラフ５００Ｂは、ポイント５２１〜ポイント５２５で（Ｂ１）〜（Ｂ１６）の処理を実行している。傾向判定部３１４は、ポイント５１１〜ポイント５１５間と、ポイント５２１〜ポイント５２５間の傾向情報から、スループット値が上昇傾向から下降傾向に変わる範囲を特定する。スループット値が上昇傾向から下降傾向に変わる範囲は、ポイント５１２〜ポイント５１３の間と、ポイント５２２〜ポイント５２３の間である。傾向判定部３１４は、ポイント５１３〜ポイント５１４の間と、ポイント５２２〜ポイント５２３の間に最大スループット値があると判定する。
【００８９】
グラフ４００Ｃは、傾向判定部３１４が、傾向判定部３１４は、ポイント５１３〜ポイント５１４の間と、ポイント５２２〜ポイント５２３の間に最大スループット値があると判定した後の例である。算出部は、ポイント５１３〜ポイント５１４の間と、ポイント５２２〜ポイント５２３の間でアドレスを分割し、（Ｂ１）〜（Ｂ１６）の処理を繰り返し、スループット値を算出する。判定部は、ポイント５１３〜ポイント５１４の間と、ポイント５２２〜ポイント５２３の間で最大スループット値を算出する。判定部は、ポイント５１３〜ポイント５１４の間と、ポイント５２２〜ポイント５２３の最大スループット値のうち、大きい方の値を算出する。
【００９０】
図１２は、本実施形態に係るスループット試験の例（その１）を説明するフローチャートである。設定部３１２は、プリフェッチ命令の対象となるアドレスＡ＋αのアドレスを設定する（ステップＳ１０１）。処理部３０３は、プリフェッチ命令の開始アドレスＡ＋αを指定し、ストア命令の開始アドレスＡを指定し、試験対象領域３２２の全てを対象に実行されるまでストア命令とプリフェッチ命令の組み合わせを繰り返し実行する（ステップＳ１０２）。算出部３１３は、処理部３０３の処理から、スループット値を算出する（ステップＳ１０３）。処理部３０３は、隣接ポイントでのスループット値が算出されているかを判定する（ステップＳ１０４）。隣接ポイントでのスループット値が算出されていない場合（ステップＳ１０４でＮＯ）、処理部３０３は、プリフェッチ命令の対象であるアドレスＡ＋αに、キャッシュメモリライン分のアドレスサイズを加算し処理をＳ１０１に返す。
【００９１】
隣接ポイントでのスループット値が算出されている場合（ステップＳ１０４でＹＥＳ）、傾向判定部３１４は、プリフェッチ命令がアドレスＡ＋αの場合と隣接ポイントを使用した場合でのスループット値から傾向判定を行う（ステップＳ１０５）。傾向判定部３１４は、スループット値が上昇傾向から下降傾向に変わる範囲内で最大のスループット値を絞り込む（ステップＳ１０６）。傾向判定部３１４は、スループット値が上昇傾向から下降傾向に変わる範囲が絞りこみ限界かを判定する（ステップＳ１０７）。スループット値が上昇傾向から下降傾向に変わる範囲がまだ絞りこめる場合（ステップＳ１０７でＮＯ）、処理部３０３は、プリフェッチ命令の対象であるアドレスＡ＋αに、Ｓ１０６で絞りこんだ範囲のアドレス情報を設定し、処理をＳ１０１に返す。スループット値が上昇傾向から下降傾向に変わる範囲が絞りこめない場合（ステップＳ１０７でＹＥＳ）、判定部３１５は、スループット値が上昇傾向から下降傾向に変わる範囲内で最大のスループット値を判定する（ステップＳ１０８）。
【００９２】
図１３は、本実施形態に係るスループット試験の例（その２）を説明するフローチャートである。図１１のフローチャートは、図９のように、複数の範囲から絞り込み処理を行う場合の例である。処理部３０３は、スループット試験に用いるメモリ装置内の使用するデータ領域と、管理情報を保持する領域を確保する（ステップＳ２０１）。処理部３０３は、キャッシュメモリ内のデータを初期化する（ステップＳ２０２）。設定部３１２は、入力されたプリフェッチ命令の対象となるアドレスＡ＋αの範囲を設定する（ステップＳ２０３）。処理部３０３は、指定された範囲のオフセットαから１つのオフセットを選択する（ステップＳ２０４）。処理部３０３は、管理情報３２１の開始時刻に時間を格納する（ステップＳ２０５）。処理部３０３は、アドレスＡ＋αのアドレスを指定し、メモリ装置からキャッシュメモリにプリフェッチするプリフェッチ命令を実行する（ステップＳ２０６）。処理部３０３は、メモリ装置内のアドレスＡを指定し、ストア命令を実行する（ステップＳ２０７）。処理部３０３は、ストア命令とプリフェッチ命令を、メモリ装置の全試験対象領域に対して実行したかを判定する（ステップＳ２０８）。処理部３０３は、メモリ装置の全試験対象領域に対して、ストア命令とプリフェッチ命令の処理を完了していない場合（ステップＳ２０８でＮＯ）、指定するアドレスをライン分変更し、Ｓ２０６とＳ２０７の処理を繰り返し実行する。処理部３０３は、メモリ装置の全試験対象領域に対して処理が完了している場合（ステップＳ２０８でＹＥＳ）、管理情報３２１の終了時刻に時間を格納する（ステップＳ２０９）。算出部３１３は、処理部３０３の処理におけるスループット値を算出する（ステップＳ２１０）。処理部３０３は、隣接ポイントでのスループット値が算出されているかを判定する（ステップＳ２１１）。隣接ポイントでのスループット値が算出されていない場合（ステップＳ２１１でＮＯ）、処理部３０３は、プリフェッチ命令の対象であるアドレスＡ＋αに、キャッシュメモリライン分のアドレスサイズを加算又は減算し、処理をＳ２０５に戻す（ステップＳ２１２）。
【００９３】
隣接ポイントでのスループット値が算出されている場合（ステップＳ２１１でＹＥＳ）、傾向判定部３１４は、プリフェッチ命令がアドレスＡ＋αの場合と隣接ポイントを使用した場合でのスループット値から傾向判定を行う（ステップＳ２１３）。傾向判定部３１４は、Ｓ２０３で指定された範囲内の全オフセットでスループット値の算出処理が実行されたかを判定する（ステップＳ２１４）。指定された範囲内の全オフセットでスループット値の算出処理が実行されていない場合（ステップＳ２１４でＮＯ）、処理部３０３は、処理をＳ２０４に戻す。指定された範囲内の全オフセットでスループット値の算出処理が実行されている場合（ステップＳ２１４でＹＥＳ）、傾向判定部３１４は、スループット値が上昇傾向から下降傾向に変わる範囲を絞り込む（ステップＳ２１５）。傾向判定部３１４は、絞りこみをした範囲内で、スループット値が上昇傾向から下降傾向に変わる範囲が絞りこみ限界かを判定する（ステップＳ２１６）。スループット値が上昇傾向から下降傾向に変わる範囲がまだ絞りこめる場合（ステップＳ２１６でＮＯ）、処理部３０３は、プリフェッチ命令の対象であるアドレスＡ＋αに、絞りこんだ範囲のアドレス情報を設定する処理のＳ２０３に処理を戻す。スループット値が上昇傾向から下降傾向に変わる範囲を絞りこめない場合（ステップＳ２１６でＹＥＳ）、傾向判定部３１４は、全てのスループット値が上昇傾向から下降傾向に変わる範囲で絞り込みが完了したかを判定する（ステップＳ２１７）。全てのスループット値が上昇傾向から下降傾向に変わる範囲で絞り込みが完了していない場合（ステップＳ２１７でＮＯ）、処理部３０３は、処理をＳ２０４に戻す。全てのスループット値が上昇傾向から下降傾向に変わる範囲で絞り込みが完了している場合（ステップＳ２１７でＹＥＳ）、判定部３１５は、スループット値が上昇傾向から下降傾向に変わる範囲内で最大のスループット値を判定する（ステップＳ２１８）。判定部３１５は、最大スループット値が、所定の閾値よりも大きいかを判定する（ステップＳ２１９）。
【００９４】
このようにして、本実施形態に係る情報処理装置は、スループット試験では、処理時間と処理対象データからスループット値を算出し、情報処理装置のスループット値の最大値と理論値とを比較し、性能評価を行う。
【００９５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
メモリ装置（３０１）とキャッシュメモリ（３０２）と間のデータ転送に係る試験方法であって、
前記メモリ装置（３０１）内の所定サイズのデータを順番に前記キャッシュメモリ（３０２）に読み込み、読み込んだデータをレジスタ（３０４）に格納されているストアデータで更新する第１の命令と、前記メモリ装置（３０１）内における前記第１の命令の開始アドレスから所定値だけ異なるアドレスから前記所定サイズのデータを順番に前記キャッシュメモリ（３０２）に読み込み、前記レジスタ（３０４）を使用しない第２の命令とを、交互に実行開始することで、前記第１の命令の処理を実行中に前記第２の命令の処理を割り込ませ、
前記第１の命令と前記第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出する
ことを特徴とする試験方法。
（付記２）
前記第１の命令としてストア命令を使用し、前記第２の命令としてプリフェッチ命令を用いる
ことを特徴とする付記１に記載の試験方法。
（付記３）
前記所定値を変更する毎に、前記第１の命令と前記第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出し、
前記所定値に応じて算出される前記時間のうち、相対的に小さいものを性能評価に用いる
ことを特徴とする付記１に記載の試験方法。
（付記４）
メモリ装置（３０１）とキャッシュメモリ（３０２）と間のデータ転送に係る試験プログラムであって、
前記メモリ装置（３０１）内の所定サイズのデータを順番に前記キャッシュメモリ（３０２）に読み込み、読み込んだデータをレジスタ（３０４）に格納されているストアデータで更新する第１の命令と、前記メモリ装置（３０１）内における前記第１の命令の開始アドレスから所定値だけ異なるアドレスから前記所定サイズのデータを順番に前記キャッシュメモリ（３０２）に読み込み、前記レジスタ（３０４）を使用しない第２の命令とを、交互に実行開始することで、前記第１の命令の処理を実行中に前記第２の命令の処理を割り込ませ、
前記第１の命令と前記第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出する、
処理をプロセッサ（３３１）に実行させることを特徴とする試験プログラム。
（付記５）
前記プロセッサ（３３１）は、前記第１の命令としてストア命令を使用し、前記第２の命令としてプリフェッチ命令を用いる
ことを特徴とする付記４に記載の試験プログラム。
（付記６）
前記プロセッサ（３３１）は、
前記所定値を変更する毎に、前記第１の命令と前記第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出し、
前記所定値に応じて算出される前記時間のうち、相対的に小さいものを性能評価に用いる
ことを特徴とする付記４に記載の試験プログラム。
（付記７）
メモリ装置（３０１）とキャッシュメモリ（３０２）とレジスタ（３０４）を備え、
前記メモリ装置（３０１）内の所定サイズのデータを順番に前記キャッシュメモリ（３０２）に読み込み、読み込んだデータをレジスタ（３０４）に格納されているストアデータで更新する第１の命令と、前記メモリ装（３０１）置内における前記第１の命令の開始アドレスから所定値だけ異なるアドレスから前記所定サイズのデータを順番に前記キャッシュメモリ（３０２）に読み込み、前記レジスタを使用しない第２の命令とを、交互に実行開始することで、前記第１の命令の処理を実行中に前記第２の命令の処理を割り込ませる処理部（３０３）と、
前記第１の命令と前記第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出する算出部（３１３）と、を備える
ことを特徴とする情報処理装置（３００）。
（付記８）
前記処理部（３０３）は、前記第１の命令としてストア命令を使用し、前記第２の命令としてプリフェッチ命令を用いる
ことを特徴とする付記７に記載の情報処理装置（３００）。
（付記９）
前記算出部（３１３）は、前記所定値を変更する毎に、前記第１の命令と前記第２の命令との組み合わせの複数回の実行が完了するまでの時間を算出し、
前記所定値に応じて算出される前記時間のうち、相対的に小さいものを性能評価に用いる
ことを特徴とする付記７に記載の情報処理装置（３００）。
【符号の説明】
【００９６】
３００  情報処理装置
３０１  メモリ装置
３０２  キャッシュメモリ
３０３  処理部
３０４  レジスタ
３０５  管理部
３１２  設定部
３１３  算出部
３１４  傾向判定部
３１５  判定部
３２１  管理情報
３２２  試験対象領域
４００  入出力装置
【図１】
0006318923.tif 000002
【図２】
0006318923.tif 000003
【図３】
0006318923.tif 000004
【図４Ａ】
0006318923.tif 000005
【図４Ｂ】
0006318923.tif 000006
【図４Ｃ】
0006318923.tif 000007
【図５】
0006318923.tif 000008
【図６】
0006318923.tif 000009
【図７】
0006318923.tif 000010
【図８】
0006318923.tif 000011
【図９】
0006318923.tif 000012
【図１０】
0006318923.tif 000013
【図１１】
0006318923.tif 000014
【図１２】
0006318923.tif 000015
【図１３Ａ】
0006318923.tif 000016
【図１３Ｂ】
0006318923.tif 000017