(57)【要約】【課題】キャッシュ試験の効率を向上させる。【解決手段】試験情報生成装置１０は、アクセス対象となるメモリアドレスと、メモリアドレスが示す格納領域に格納しておくデータと、メモリアドレスに対するアクセス指示とを生成する。また、試験情報生成装置１０は、アクセス指示に従ってメモリアクセスを実行した際にキャッシュメモリ２３がキャッシュするデータの期待値を生成する。そして、試験情報生成装置１０は、メモリアドレスと、アクセス指示と、期待値とを、キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成する。その後、試験情報生成装置１０は、データとアドレスリストとが異なるキャッシュライン上にキャッシュされるようにそれぞれ配置した試験データ１５を出力する。【選択図】図４
2014002557.tif 000002
【特許請求の範囲】
【請求項１】
メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成する試験データ生成装置が、
アクセス対象となるメモリアドレスと、当該メモリアドレスが示す格納領域に格納しておくデータと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを生成し、
前記メモリアドレスと、前記アクセス指示と、前記期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する
処理を実行することを特徴とする試験データ生成方法。
【請求項２】
前記キャッシュメモリに複数のデータをキャッシュさせる場合は、前記キャッシュメモリが同一のキャッシュラインに各データをキャッシュするように、前記アクセス対象となるメモリアドレスを生成することを特徴とする請求項１に記載の試験データ生成方法。
【請求項３】
前記キャッシュメモリに複数のアドレスリストをキャッシュさせる場合は、前記キャッシュメモリがそれぞれ異なるキャッシュラインに前記アドレスリストをキャッシュするように、前記アドレスリストを配置した試験データを出力する処理を実行することを特徴とする請求項１または２に記載の試験データ生成方法。
【請求項４】
前記アクセス指示がデータの読み込みである場合は、前記試験データと同じデータを前記期待値とし、前記アクセス指示がデータの書き込みである場合は、前記メモリアドレスが示す格納領域に対して書込まれるデータを前記期待値とすることを特徴とする請求項１〜３のいずれか１つに記載の試験データ生成方法。
【請求項５】
メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験方法において、
前記キャッシュメモリを有する演算処理装置が、
キャッシュ対象となるデータをメモリ上に展開し、
前記データを展開したメモリアドレスと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記データとは異なるキャッシュラインに格納されるように、前記生成したアドレスリストを前記メモリ上に展開し、
前記アドレスリストを前記キャッシュメモリにキャッシュして、当該アドレスリストに含まれる前記メモリアドレスと、前記アクセス指示とに従ってメモリアクセスを実行し、
前記メモリアクセスを実行した結果前記キャッシュメモリがキャッシュしたデータと、前記キャッシュしたアドレスリストに含まれる期待値とが一致するか否かを判定する
処理を実行することを特徴とするキャッシュメモリの試験方法。
【請求項６】
メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成する試験データ生成装置において、
アクセス対象となるメモリアドレスと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成するアドレスリスト生成部と、
前記メモリアドレスが示す格納領域に格納しておくデータを生成するデータ生成部と、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する出力部と
を有することを特徴とする試験データ生成装置。
【請求項７】
メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成するコンピュータに、
アクセス対象となるメモリアドレスと、当該メモリアドレスが示す格納領域に格納しておくデータと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを生成し、
前記メモリアドレスと、前記アクセス指示と、前記期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する
処理を実行させることを特徴とする試験データ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、試験データ生成方法、試験方法、試験データ生成装置、および試験データ生成プログラムに関する。
【背景技術】
【０００２】
従来、メモリ等の主記憶装置よりも高速で動作するキャッシュメモリを有し、データの一部をキャッシュメモリに保持することで処理の高速化を図る演算処理装置が知られている。このような演算処理装置に対しては、キャッシュメモリが正常に動作するか否かを判別するためのキャッシュ試験が行われる。
【０００３】
例えば、同一キャッシュラインに対するアクセスの競合、キャッシュメモリの構成、バスの構成等を考慮して、データの入出力が頻発するようなアクセスが発生するように、メモリアクセスを実行する。その後、演算処理装置は、メモリアクセスの結果、キャッシュメモリ上にキャッシュされたデータと、あらかじめ生成した期待値とを比較してデータの整合性を判定することで、キャッシュメモリが正常に動作するか否かを判別する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−５５３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、近年、演算処理装置が有するキャッシュメモリの容量が増大するに従って、キャッシュ試験に要する時間が増加しているため、キャッシュ試験の効率の向上が課題となっている。
【０００６】
１つの実施形態では、本発明は、キャッシュ試験の効率を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施形態では、メモリ上のデータをメモリアドレスに応じたキャッシュラインにキャッシュするキャッシュメモリを試験するための試験データを生成する試験データ生成装置である。また、試験データ生成装置は、アクセス対象となるメモリアドレスと、メモリアドレスが示す格納領域に格納しておくデータと、メモリアドレスに対するアクセス指示とを生成する。また、試験データ生成装置は、アクセス指示に従ってメモリアクセスを実行した際にキャッシュメモリがキャッシュするデータの期待値を生成する。そして、試験データ生成装置は、メモリアドレスと、アクセス指示と、期待値とを、キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成する。その後、試験データ生成装置は、データとアドレスリストとが異なるキャッシュライン上にキャッシュされるようにそれぞれ配置した試験データを出力する。
【発明の効果】
【０００８】
１つの実施形態では、キャッシュ試験の効率を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、キャッシュ試験の一例を説明するための図である。
【図２】図２は、キャッシュ試験に用いられる試験データの一例を説明するための図である。
【図３】図３は、不要な競合の発生を説明するための図である。
【図４】図４は、実施例１に係る試験情報生成装置を説明するための図である。
【図５】図５は、実施例１に係る試験データの一例を説明するための図である。
【図６】図６は、実施例１に係る試験データを用いたキャッシュ試験を説明するための図である。
【図７】図７は、実施例１に係る試験データを用いて競合のキャッシュ試験を説明するための図である。
【図８】図８は、競合の数を説明するための図である。
【図９】図９は、試験データ生成部が生成した試験データを用いたキャッシュ試験における競合の数を説明するための図である。
【図１０】図１０は、複数のＣＰＵにおけるキャッシュ試験の一例を説明するための図である。
【図１１】図１１は、実施例１に係る試験データ生成部が実行する処理の流れを説明するためのフローチャートである。
【図１２】図１２は、実施例１に係るキャッシュ試験の流れを説明するためのフローチャートである。
【図１３】図１３は、試験データを生成する処理の流れを説明するためのフローチャートである。
【図１４】図１４は、キャッシュ試験の流れを説明するためのフローチャートである。
【図１５】図１５は、実施例２に係るキャッシュ試験プログラムを説明するための図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して本願に係る試験データ生成方法、試験方法、試験データ生成装置、および試験データ生成プログラムについて説明する。
【実施例１】
【００１１】
以下の実施例１では、試験データ生成プログラムを実行することで、効率的にキャッシュ試験を行う事ができる試験データを生成する試験情報生成装置の一例を説明する。まず、試験情報生成装置が生成する試験データにより効率的なキャッシュ試験が実現されることを明確にするため、図１〜図３を用いて、キャッシュ試験の一例について説明する。
【００１２】
図１は、キャッシュ試験の一例を説明するための図である。演算処理装置１は、メモリ２、キャッシュメモリ３、コア４を有する。また、メモリ２は、アクセスアドレスリスト５、試験域６、期待値域７を有する。ここで、キャッシュメモリ３は、複数のキャッシュラインを有し、メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュダイレクトマップ方式のキャッシュメモリである。
【００１３】
アクセスアドレスリスト５には、コア４によるメモリアクセスの対象となるアクセスアドレスと、メモリアクセスの内容がデータの読み出しであるか書き込みであるかを示すアクセス指示とが含まれている。また、試験域６は、アクセス対象となるデータ「Ａ」を含む試験データ＃１を記憶する領域である。
【００１４】
ここで、試験データ＃１は、キャッシュメモリ３が１度のメモリアクセスでキャッシュする大きさ、すなわちキャッシュブロックサイズのデータであり、アクセスアドレスリスト５のアクセスアドレスが示す記憶領域にデータ「Ａ」を含んでいる。また、期待値域７は、コア４によるメモリアクセスの結果、キャッシュメモリ３に格納されるであろうデータ「Ａ」を含んだ期待値＃１を記憶する領域である。
【００１５】
以下、演算処理装置１が実行するキャッシュ試験の一例について説明する。例えば、コア４は、メモリ２にメモリアクセスを行い、アクセスアドレスリスト５の読み出しを行う。すると、キャッシュメモリ３にアクセスアドレスとアクセス指示とがキャッシュされる。
【００１６】
そして、コア４は、図１中（Ａ）に示すように、キャッシュメモリ３からアクセスアドレスとアクセス指示とを取得し、取得したアクセス指示に従って、取得したアクセスアドレスに対するメモリアクセスを実行する。すなわち、コア４は、試験データ＃１に含まれるデータ「Ａ」の領域に対するメモリアクセスを実行する。すると、キャッシュメモリ３にデータ「Ａ」を含む試験データ＃１がキャッシュされる。
【００１７】
そして、コア４は、図１中（Ｂ）に示すように、キャッシュメモリ３にキャッシュされた試験データ＃１からデータ「Ａ」の読み出しや、書き込みを行う。その後、コア４は、期待値域７から期待値＃１の読み出しを行い、キャッシュメモリ３に期待値＃１をキャッシュさせる。そして、コア４は、図１中（Ｃ）に示すように期待値＃１に含まれるデータ「Ａ」を取得し、キャッシュメモリ３上の試験データ＃１に含まれるデータ「Ａ」と比較することで、キャッシュメモリ３が正常に動作したか否かを試験する。
【００１８】
図２は、キャッシュ試験に用いられる試験データの一例を説明するための図である。例えば、試験データ８は、アクセスアドレスリスト５、試験域６、期待値域７を有する。例えば、アクセスアドレスリスト５は、試験データ＃１に含まれるデータ「Ａ」のメモリアドレスとアクセス指示、試験データ＃２に含まれるデータ「Ｂ」のメモリアドレスとアクセス指示を有する。また、アクセスアドレスリスト５は、試験データ＃３に含まれるデータ「Ｃ」のメモリアドレスとアクセス指示を有する。
【００１９】
また、試験域６には、データ「Ａ」を含む試験データ＃１、データ「Ｂ」を含む試験データ＃２、データ「Ｃ」を含む試験データ＃３が格納されている。また、期待値域７には、データ「Ａ」を含む期待値＃１、データ「Ｂ」を含む期待値＃２、データ「Ｃ」を含む期待値＃３が格納されている。
【００２０】
ここで、キャッシュ試験では、メモリアクセス時に発生するキャッシュミス、リプレース、キャッシュ内の競合によって発生する調停処理などを発生させるように試験データを配置する。例えば、試験域６の試験データ＃１〜＃３は、キャッシュメモリ３における競合を試験するため、キャッシュメモリ３が有するキャッシュラインのうち、同一のキャッシュラインにキャッシュされるように配置されている。詳細には、キャッシュメモリ３がメモリアドレスの下位ビット、すなわちインデックスに応じたキャッシュラインにデータをキャッシュする場合は、データ「Ａ」、データ「Ｂ」、データ「Ｃ」は、同一のインデックスを有するメモリアドレスに配置されている。
【００２１】
一方、期待値域７の期待値＃１〜＃３は、期待値の取り出しや、試験域６全体との比較が容易となるように配置されている。具体的には、期待値域７は、試験域６と先頭アラインを同一とし、期待値＃１〜＃３は、期待値域７の先頭からのオフセットが、試験域６の先頭から試験データ＃１〜＃３までのオフセットと同じになるように配置されている。
【００２２】
このため、コア４は、試験データ＃１データ「Ａ」のメモリアドレスに所定のオフセットを加算することで、対応する期待値＃１のデータ「Ａ」を容易に読み出すことができる。また、コア４は、試験データ＃２のデータ「Ｂ」や試験データ＃３のデータ「Ｃ」も同様に、メモリアドレスに所定のオフセットを加算することで、対応する期待値＃２のデータ「Ｂ」や期待値＃３のデータ「Ｃ」を容易に読み出すことができる。
【００２３】
しかしながら、試験域６の先頭から各試験データ＃１〜＃３までのオフセットと、期待値域７の先頭から期待値＃１〜＃３までのオフセットがそれぞれ同一となる場合には、試験データ＃１〜＃３と期待値＃１〜＃３が同一のキャッシュラインに格納されてしまう。この結果、期待値＃１〜＃３をキャッシュする際に不要な競合が発生してしまい、調停処理が発生するため、キャッシュ試験が遅延してしまう。
【００２４】
図３は、不要な競合の発生を説明するための図である。例えば、図３に示す例では、キャッシュメモリ３は、キャッシュライン＃１とキャッシュライン＃２とを有する。ここで、コア４がアクセスアドレスリスト５の読み込みを行った場合は、キャッシュメモリ３は、キャッシュライン＃２にアクセスアドレスリスト５を格納する。
【００２５】
そして、コア４は、キャッシュライン＃２に格納されたアクセスアドレスリスト５に従って、メモリアクセスを行う。具体的には、コア４は、試験データ＃１のデータ「Ａ」の読み出しを行う。すると、キャッシュメモリ３は、図３中（Ｄ）に示すように、キャッシュライン＃１に試験域６の試験データ＃１を格納する。
【００２６】
次に、コア４は、キャッシュメモリ３のキャッシュライン＃１にキャッシュした試験データ＃１のデータ「Ａ」と経験値＃１のデータ「Ａ」とを比較するため、期待値域７の期待値＃１の読み出しを行う。すると、キャッシュメモリ３は、図３中（Ｅ）に示すように、期待値＃１が、試験データ＃１と先頭アラインを同一として同じオフセットで配置されているため、期待値＃１をキャッシュライン＃１に格納してしまう。
【００２７】
すると、キャッシュメモリ３のキャッシュライン＃１において、期待値＃１を格納するための競合が発生し、調停処理を実行するので、続く試験データ＃２の読み出しが遅延してしまう。また、図３中の点線で示すように、コア４が期待値＃２の読み出しを行った場合や、期待値＃３の読み出しを行った場合にも、調停処理が発生するので、キャッシュ試験が低速化してしまう。
【００２８】
また、期待値＃１〜＃３を試験データ＃１〜＃３と同じキャッシュラインに格納した場合は、キャッシュライン上の空きウェイが無くなり、キャッシュミスによる時間ロスが発生する場合があり、キャッシュ試験を効率的に行う事ができない。そこで、以下に説明する試験情報生成装置は、キャッシュ試験を効率的に行うことができる試験データを生成する。
【００２９】
以下、図を用いて、効率的にキャッシュ試験を行う事ができる試験データを生成する試験情報生成装置の一例を説明する。図４は、実施例１に係る試験情報生成装置を説明するための図である。なお、試験情報生成装置１０は、少なくとも、試験データ生成プログラムを実行するCentral  Processing  Unit（ＣＰＵ）を有するコンピュータである。
【００３０】
図４に示すように、試験情報生成装置１０は、ＣＰＵ１１とメモリ１２を有する。また、メモリ１２は、試験データ生成プログラム１３を記憶する。また、試験データ生成プログラム１３は、試験データ生成部１４を有する。ＣＰＵ１１は、試験データ生成プログラム１３を実行することで、試験データ生成部１４の機能を発揮させ、試験データ１５を生成する。その後、試験情報生成装置１０は、試験データ１５を試験対象となる情報処理装置２０に送信する。
【００３１】
情報処理装置２０は、ＣＰＵ２１、ＣＰＵ２４、メモリ２７を有する。また、ＣＰＵ２１は、コア２２とキャッシュメモリ２３を有する。また、ＣＰＵ２４は、コア２５、キャッシュメモリ２６を有する。また、メモリ２７は、ＣＰＵ２１とＣＰＵ２４が共用する共用メモリであり、ＣＰＵ２１が有するキャッシュメモリ２３およびＣＰＵ２４が有するキャッシュメモリ２６を試験するキャッシュ試験プログラム２８を記憶する。
【００３２】
キャッシュ試験プログラム２８は、試験部２９を有しており、ＣＰＵ２１やＣＰＵ２３がキャッシュ試験プログラム２８を実行することにより、試験部２９の機能を発揮させる。具体的には、試験部２９は、試験情報生成装置１０が生成した試験データ１５を受信し、受信した試験データ１５を用いて、キャッシュメモリ２３、およびキャッシュメモリ２６を試験する機能を有する。
【００３３】
なお、図４では記載を省略したが、情報処理装置２０は、ＣＰＵ２１、ＣＰＵ２４以外にも、メモリ２７を共有する複数のＣＰＵを有するものとする。また、ＣＰＵ２４は、ＣＰＵ２１と同様の機能を発揮するものとして、以下の説明を省略する。
【００３４】
以下、試験データ生成プログラム１３がＣＰＵ１１によって実行されることで、試験データ生成部１４が発揮する機能、および、キャッシュ試験プログラム２８がＣＰＵ２１によって実行されることで、試験部２９が発揮する機能について説明する。
【００３５】
試験データ生成部１４は、ＣＰＵ２１がキャッシュメモリ２３にキャッシュさせるデータと、アクセス対象となるメモリアドレスと、アクセスの内容がデータの読み取りであるか書き込みであるかを示すアクセス指示とを生成する。また、試験データ生成部１４は、ＣＰＵ２１がアクセス指示に従ってメモリ２７に対するメモリアクセスを行った際に、キャッシュメモリ２３がキャッシュするデータである期待値を生成する。
【００３６】
次に、試験データ生成部１４は、メモリアドレスと、アクセス指示と、期待値とを、１度のメモリアクセスでキャッシュメモリ２３が１度にキャッシュすることができる大きさにまとめたアドレスリストを生成する。すなわち、試験データ生成部１４は、メモリアドレスと、アクセス指示と、期待値とを１つのキャッシュブロックのサイズにまとめたアドレスリストを生成する。
【００３７】
そして、試験データ生成部１４は、キャッシュメモリ２３が有する複数のキャッシュラインのうち、異なるキャッシュラインにアドレスリストとデータとが格納されるように配置した試験データ１５を生成する。例えば、試験データ生成部１４は、試験データ１５がメモリ２７に格納された際に、アドレスリストとデータとが異なるインデックスに展開されるように、アドレスリストとデータとを配置した試験データ１５を生成する。その後、試験データ生成部１４は、生成した試験データ１５を情報処理装置２０に送信する。
【００３８】
次に、図５を用いて、試験データ生成部１４が生成する試験データ１５の一例について説明する。図５は、実施例１に係る試験データの一例を説明するための図である。なお、図５には、試験データ１５が有するアクセスアドレスリスト３０と試験域３１とともに、試験データ１５の作成に用いる期待値域３２を記載した。
【００３９】
まず、試験データ生成部１４は、メモリアドレス「Ａ」とアクセス指示とを１つのキャッシュブロックにまとめたアドレスリストと、メモリアドレス「Ｂ」とアクセス指示とを１つのキャッシュブロックにまとめたアドレスリストとを生成する。また、試験データ生成部１４は、メモリアドレス「Ｃ」とアクセス指示とを１つのキャッシュブロックにまとめたアドレスリストとを生成する。そして、試験データ生成部１４は、各アドレスリストをまとめたアクセスアドレスリスト３０を生成する。
【００４０】
ここで、試験データ生成部１４は、キャッシュメモリ２３における競合時の動作を試験するため、キャッシュメモリ２３が同一のキャッシュラインに各試験データ「Ａ」〜「Ｃ」が格納されるよう各アドレスを設定する。例えば、試験データ生成部１４は、メモリ２７のメモリアドレスのうち、インデックスが同一となるメモリアドレス「Ａ」〜「Ｃ」を設定する。
【００４１】
次に、試験データ生成部１４は、試験域３１に各試験データ「Ａ」〜「Ｃ」を配置する。ここで、試験データ生成部１４は、メモリ２７が有する各記憶領域のうち、メモリアドレス「Ａ」〜「Ｃ」が示す記憶領域に、各試験データ「Ａ」〜「Ｃ」が格納されるように配置する。例えば、試験データ生成部１４は、メモリ２７において、試験データ１５がメモリ１２におけるメモリアドレスと同一のメモリアドレスに格納される場合は、各試験データ「Ａ」〜「Ｃ」を、メモリアドレス「Ａ」〜「Ｃ」が示す記憶領域に格納する。
【００４２】
また、例えば、試験データ生成部１４は、各試験データ「Ａ」〜「Ｃ」を任意の記憶用域に格納し、キャッシュ試験プログラム２８へ試験データ１５を送信する際に、各試験データをメモリアドレス「Ａ」〜「Ｃ」が示す記憶領域へ格納するよう指示してもよい。なお、試験データ生成部１４は、任意のデータを各試験データ「Ａ」〜「Ｃ」として用いることができる。例えば、試験データ生成部１４は、ランダム、又はキャッシュメモリ２３の試験に対して有効なパターンのデータを各試験データ「Ａ」〜「Ｃ」として用いることができる。
【００４３】
次に、試験データ生成部１４は、アクセスアドレスリスト３０に含まれる各アドレスリストの各メモリアドレスに所定のオフセットを加算した範囲を期待値域３２とする。そして、試験データ生成部１４は、期待値域３２に、各試験データ「Ａ」〜「Ｃ」に対する読み出しや書き込みの結果、キャッシュメモリ２３に格納されるであろうデータの期待値「Ａ」〜「Ｃ」を格納する。
【００４４】
その後、試験データ生成部１４は、アクセスアドレスリスト３０の各アドレスリストについて、以下の処理を実行する。まず、試験データ生成部１４は、アドレスリストに含まれるアクセス指示がデータの読み出しを示す「ｆｅｔｃｈ」である場合は、アドレスリストに含まれるメモリアドレスに所定のオフセットを加算したメモリアドレスを算出する。そして、試験データ生成部１４は、算出したメモリアドレスが示す記憶領域に格納されたデータ、すなわち期待値を取得し、取得した期待値をアドレスリストに格納する。
【００４５】
一方、試験データ生成部１４は、アクセス指示がデータの書き込みを示す「ｓｔｏｒｅ」である場合は、アドレスリストに含まれるメモリアドレスに所定のオフセットを加算した記憶領域のデータを、すなわち期待値をアクセス指示に従って書換える。そして、試験データ生成部１４は、書換えた期待値をアドレスリストに格納する。
【００４６】
例えば、試験データ生成部１４は、メモリアドレス「Ａ」を含むアドレスリストについて、メモリアドレス「Ａ」に所定のオフセットを加算した記憶領域、すなわち期待値域３２に期待値「Ａ」を格納する。そして、試験データ生成部１４は、アドレスリストに含まれるアクセス指示が「ｆｅｔｃｈ」である場合は、期待値域３２の期待値「Ａ」をメモリアドレス「Ａ」を含むアドレスリストに格納する。一方、試験データ生成部１４は、アドレスリストに含まれるアクセス指示が「ｓｔｏｒｅ」である場合は、期待値域３２の期待値「Ａ」をアクセス指示に従って書換し、書換えた期待値「Ａ」をメモリアドレス「Ａ」を含むアドレスリストに格納する。
【００４７】
この結果、図５に示す例では、試験データ生成部１４は、試験データ「Ａ」を格納するメモリアドレスであるアクセスアドレス「Ａ」と、アクセスアドレス「Ａ」に対するアクセス指示と、生成した期待値「Ａ」とを１つのキャッシュブロックにまとめる。また、試験データ生成部１４は、試験データ「Ｂ」を格納するメモリアドレスであるアクセスアドレス「Ｂ」と、アクセスアドレス「Ｂ」に対するアクセス指示と、生成した期待値「Ｂ」とを１つのキャッシュブロックにまとめる。
【００４８】
また、試験データ生成部１４は、試験データ「Ｃ」を格納するメモリアドレスであるアクセスアドレス「Ｃ」と、アクセスアドレス「Ｃ」に対するアクセス指示と、生成した期待値「Ｃ」とを１つのキャッシュブロックにまとめる。そして、試験データ生成部１４は、アクセスアドレスとアクセス指示と期待値とをまとめた各キャッシュブロック、すなわちアドレスリストを連続したメモリアドレスに格納されるように配置したアクセスアドレスリスト３０を生成する。
【００４９】
一方、図４に戻って、キャッシュ試験プログラム２８が試験データ１５を受信すると、試験部２９は、試験データ１５を用いて、キャッシュメモリ２３の試験を行う。例えば、試験部２９は、試験データ１５に含まれるアドレスリストとデータとを、メモリ２７上に展開する場合は、インデックスが異なるメモリアドレスが示す記憶領域に、アドレスリストとデータとを展開する。
【００５０】
そして、試験部２９は、コア２２にアドレスリストとデータの読み出しを実行させ、キャッシュメモリ２３にアドレスリストとデータとを読み込ませる。その後、試験部２９は、キャッシュメモリ２３上のデータと、アドレスリストに含まれる期待値とをコア２２に比較させることで、キャッシュメモリ２３が正常に動作するか否かを試験する。
【００５１】
なお、試験部２９は、任意の手法を用いて、アドレスリストとデータとを展開することができる。例えば、試験データ生成部１４が、試験データ１５をメモリ１２上で生成する際に、試験データ１５をメモリ２７に展開した際と同様の配置で生成する場合は、試験部２９は、以下の処理を実行する。すなわち、試験部２９は、メモリ２７の記憶領域のうち、メモリ１２上において試験データ１５が格納されたメモリアドレスと同一のメモリアドレスが示す記憶領域に、試験データ１５を格納する。
【００５２】
また、例えば、試験データ生成部１４は、メモリ２７上において試験データ１５を配置する位置をメモリアドレスで指定し、試験部２９は、試験データ生成部１４が指定したメモリアドレスに従って、試験データ１５を配置してもよい。また、試験部２９は、アドレスリストに含まれるメモリアドレスにデータを格納することとしてもよい。
【００５３】
次に、図６を用いて、試験データ生成部１４が生成した試験データ１５を用いて試験部２９がキャッシュメモリ２３の試験を行う処理について説明する。図６は、実施例１に係る試験データを用いたキャッシュ試験を説明するための図である。例えば、試験部２９は、コア２２によって実行されることにより、コア２２に以下の処理を実行させる。
【００５４】
例えば、コア２２は、アクセスアドレスリスト３０の読み出しを行う。すると、キャッシュメモリ２３は、アドレス「Ａ」、アクセス指示、期待値「Ａ」とをまとめたアドレスリストを１回のメモリアクセスでキャッシュする。次に、コア２２は、図６中（Ｆ）に示すように、キャッシュメモリ２３がキャッシュしたアドレス「Ａ」とアクセス指示とを取得する。
【００５５】
そして、コア２２は、アクセス指示が読み出しを示す場合、すなわち、アクセス指示が「ｆｅｔｃｈ」である場合は、アドレス「Ａ」に格納されたデータ、すなわち、試験域３１のデータ「Ａ」の読み出しを行う。すると、キャッシュメモリ２３は、データ「Ａ」を含むキャッシュブロック、すなわち試験データ＃１をキャッシュする。
【００５６】
次に、コア２２は、図６中（Ｇ）に示すように、キャッシュメモリ２３がキャッシュしたデータ「Ａ」を取得する。そして、コア２２は、アドレス「Ａ」が格納されたアドレスリストの先頭アドレスから所定のオフセットを加算したメモリアドレスから読み出しを行う事で、図６中（Ｈ）に示すように、期待値「Ａ」を取得する。
【００５７】
ここで、期待値「Ａ」は、アドレスリストに含まれる形でキャッシュメモリ２３上にキャッシュされているので、コア２２は、期待値「Ａ」を迅速に取得できる。その後、コア２２は、取得した期待値「Ａ」とキャッシュメモリ２３上のデータ「Ａ」とを比較することで、キャッシュメモリ２３が正常に動作したか否かを試験する。
【００５８】
一方、コア２２は、アクセス指示が書き込みを示す場合、すなわち、アクセス指示が「ｓｔｏｒｅ」である場合は、キャッシュメモリ２３がキャッシュした期待値「Ａ」を取得する。また、コア２２は、アドレス「Ａ」の読み出しを行い、キャッシュメモリ２３に試験データ＃１をキャッシュさせる。
【００５９】
そして、コア２２は、取得した期待値「Ａ」をアドレス「Ａ」に書き込むことで、キャッシュメモリ２３上の試験データ＃１が有するデータ「Ａ」を期待値「Ａ」に書換える。その後、コア２２は、期待値「Ａ」とキャッシュメモリ２３上のデータ「Ａ」とを比較することで、キャッシュメモリ２３が正常に動作したか否かを試験する。
【００６０】
このように、試験データ生成プログラム１３は、１つのキャッシュブロック内に、試験対象となるメモリアドレスと、アクセス指示と、期待値とをまとめたアドレスリストを生成する。この結果、コア２２は、期待値をキャッシュするためのメモリアクセスを実行せず、キャッシュメモリ２３上にすでにキャッシュされた期待値を用いて、キャッシュメモリ２３の試験を行う。
【００６１】
ここで、コア２２は、キャッシュメモリ２３上にキャッシュされたデータに対して、メモリ２７上のデータよりも高速にアクセスすることができる。この結果、コア２２は、キャッシュメモリ２３のキャッシュ試験を効率良く実行することができる。
【００６２】
次に、図７を用いて、試験データ生成部１４が生成した試験データ１５を用いて試験部２９が競合のキャッシュ試験を行う処理について説明する。図７は、実施例１に係る試験データを用いて競合のキャッシュ試験を説明するための図である。なお、図７に示す例では、キャッシュメモリ２３は、キャッシュライン＃１〜＃４を有するものとする。
【００６３】
例えば、メモリ２７は、試験データ生成部１４が生成した試験データ１５に含まれるアクセスアドレスリスト３０と試験域３１とを記憶する。ここで、アクセスアドレスリスト３０には、メモリアドレスと、アクセス指示と、期待値とを１つのキャッシュブロックにまとめたアクセスリストが複数含まれている。また、各アクセスリストは、それぞれ異なるキャッシュラインに格納されるように配置されている。具体的には、各アクセスリストは、それぞれ異なるインデックスのメモリアドレスに配置されている。
【００６４】
このため、キャッシュメモリ２３は、アドレス「Ａ」、アクセス指示、期待値「Ａ」を含むアクセスリストをキャッシュライン＃２にキャッシュする。また、キャッシュメモリ２３は、アドレス「Ｂ」、アクセス指示、期待値「Ｂ」を含むアクセスリストをキャッシュライン＃３にキャッシュする。また、キャッシュメモリ２３は、アドレス「Ａ」、アクセス指示、期待値「Ａ」を含むアクセスリストをキャッシュライン＃４にキャッシュする。このため、キャッシュメモリ２３は、競合を発生させることなく、アクセスアドレスリスト３０に含まれる各アクセスリストをキャッシュすることができる。
【００６５】
また、メモリ２７は、データ「Ａ」を含む試験データ＃１、データ「Ｂ」を含む試験データ＃２、データ「Ｃ」を含む試験データ＃３を、それぞれ同一のインデックスを有するメモリアドレスに格納する。このため、キャッシュメモリ２３は、試験データ＃１〜＃３を同一のキャッシュライン＃１に格納し、競合による調整処理を実行する。具体的には、キャッシュメモリ２３は、既に登録されたデータの追い出しやデータの登録等を行う。
【００６６】
また、キャッシュメモリ２３は、各試験データ＃１〜＃３と、アクセスアドレスリスト３０の各キャッシュブロックとを、それぞれ異なるキャッシュライン＃１〜＃４に格納する。このため、各試験データ＃１〜＃３と、各期待値「Ａ」〜「Ｃ」との間では、競合が発生しない。
【００６７】
例えば、キャッシュメモリ２３は、アクセスアドレスリスト３０からアドレス「Ａ」、アクセス指示、期待値「Ａ」を含むアクセスリストを１度のメモリアクセスでキャッシュライン＃２にキャッシュする。次に、キャッシュメモリ２３は、アドレス「Ａ」が示す格納領域のデータ「Ａ」を含む試験データ＃１をキャッシュする。ここで、キャッシュメモリ２３は、試験データ＃１を期待値「Ａ」を含むアクセスリストとは異なるキャッシュライン＃１にキャッシュするので、競合を発生させず、速やかに試験データ＃１をキャッシュできる。
【００６８】
次に、キャッシュメモリ２３は、アクセスアドレスリスト３０からアドレス「Ｂ」、アクセス指示、期待値「Ｂ」を含むアクセスリストを１度のメモリアクセスでキャッシュライン＃３にキャッシュする。この際、キャッシュメモリ２３は、アドレス「Ａ」、アクセス指示、期待値「Ａ」を含むアクセスリストとは異なるキャッシュラインに、アドレス「Ｂ」、アクセス指示、期待値「Ｂ」を含むアクセスリストを格納する。このため、キャッシュメモリ２３は、アドレス「Ｂ」、アクセス指示、期待値「Ｂ」を含むアクセスリストを速やかにキャッシュすることができる。
【００６９】
一方、キャッシュメモリ２３は、アドレス「Ｂ」が示す格納領域のデータ「Ｂ」を含む試験データ＃２を試験データ＃１と同じキャッシュライン＃１に格納する。すると、キャッシュライン＃１において競合が発生するため、キャッシュメモリ２３は、意図された調停処理を実行する。その後、キャッシュメモリ２３は、アドレス「Ｃ」、アクセス指示、期待値「Ｃ」を含むアクセスリストをキャッシュライン＃４に格納し、データ「Ｃ」を含む試験データ＃３をキャッシュライン＃１に格納する。
【００７０】
このため、キャッシュメモリ２３は、試験データ＃１〜＃３をキャッシュする際に意図された調停処理のみを実行し、アクセスアドレスリスト３０のキャッシュ時には余計な調停処理を行わない。この結果、ＣＰＵ２１は、キャッシュメモリ２３のキャッシュ試験を効率的に行う事ができる。
【００７１】
次に、図８と図９とを用いて、図１に示したキャッシュ試験方法と、試験データ生成部１４が生成した試験データ１５を用いたキャッシュ試験方法とにおいて発生する競合の数について説明する。まず、図８を用いて、図１に示したキャッシュ試験方法を実行した際に、キャッシュメモリ３において発生する競合の数を説明する。
【００７２】
図８は、競合の数を説明するための図である。例えば、図８に示す例では、キャッシュメモリ３は、アラインからのオフセットが同一となるように配置した試験データ＃１〜＃３と期待値Ａ〜Ｃとをキャッシュする。このため、キャシュメモリ３は、キャッシュライン＃１のウェイ＃０〜ウェイ＃５に期待値Ａ〜Ｃおよび試験データ＃１〜＃３を格納する。このため、キャッシュメモリ３は、試験データ＃１〜＃３をキャッシュする際だけではなく、期待値Ａ〜Ｃをキャッシュする際にも競合を３回発生させてしまう。
【００７３】
一方、図９は、試験データ生成部が生成した試験データを用いたキャッシュ試験における競合の数を説明するための図である。例えば、図９に示す例では、キャッシュメモリ２３は、キャッシュライン＃１のウェイ＃０〜＃２に試験データ＃１〜＃３を格納する。また、キャッシュメモリ２３は、アクセスアドレスリスト３０の各アクセスリスト、すなわち、期待値「Ａ」〜「Ｃ」を含むアクセスリストを、各キャッシュライン＃２〜＃４のウェイ＃０に格納する。
【００７４】
このため、キャッシュメモリ２３は、試験データ＃１〜＃３をキャッシュする際に、意図された２回の競合のみを発生させ、期待値「Ａ」〜「Ｃ」をキャッシュする際に不要な競合を発生させない。このため、試験データ生成部１４は、試験データ１５を生成することで、キャッシュメモリ２３のキャッシュ試験を効率的に行わせることができる。
【００７５】
次に、図１０を用いて、情報処理装置２０が有する複数のＣＰＵがメモリ２７に格納された試験データ１５のうち、同一のキャッシュブロックにアクセスすることでキャッシュ試験を行う例について説明する。図１０は、複数のＣＰＵにおけるキャッシュ試験の一例を説明するための図である。
【００７６】
なお、図１０に示す例では、情報処理装置２０が、ＣＰＵ２１、ＣＰＵ２４を有する例について記載した。例えば、メモリ２７は、試験データ＃１内にデータ「Ａ」とデータ「Ｂ」とを記憶する。そして、ＣＰＵ２１は、データ「Ａ」の読み出しを行う事で、キャッシュメモリ２３に試験データ＃１をキャッシュさせる。
【００７７】
また、ＣＰＵ２４は、データ「Ｂ」の読み出しを行うことで、キャッシュメモリ２６に試験データ＃１をキャッシュさせる。すなわち、ＣＰＵ２１とＣＰＵ２４は、同一のキャッシュブロック上に存在する異なるデータにアクセスする。そして、ＣＰＵ２１とＣＰＵ２４は、キャッシュメモリ２３とキャッシュメモリ２６にキャッシュされた試験データ＃１の整合性を検証する。
【００７８】
ここで、同一のキャッシュブロックに対してＣＰＵ２１、２４がそれぞれアクセスした際に、キャッシュメモリ２３、２６上にデータがコピーされるか、データが排他利用されるかは、アクセスの内容やコヒーレントを保持するプロトコルによって異なる。しかしながら、各ＣＰＵ２１、２４からのアクセスにおいて、キャッシュされるデータのコヒーレントは保障されていなければならない。このため、各ＣＰＵ２１、２４は、同一キャッシュブロックから各キャッシュメモリ２３、２６がキャッシュしたデータを比較することで、各キャッシュメモリ２３、２６がコヒーレントを保持するか否かを試験する。
【００７９】
このようなキャッシュ試験において、ＣＰＵ２１とＣＰＵ２４とが期待値の読み出しを行うたびに競合が発生すると、キャッシュ試験にかかる時間が長くなってしまう。しかしながら、ＣＰＵ２１とＣＰＵ２４は、試験データ生成部１４が作成した試験データ１５を用いることで、期待値の読み出しにおいて競合を発生させずにキャッシュ試験を行うことができる。この結果、試験データ生成部１４は、キャッシュ試験を効率的に行わせることができる。
【００８０】
次に、図１１を用いて、試験データ生成部１４が試験データ１５を生成する処理の流れについて説明する。図１１は、実施例１に係る試験データ生成部が実行する処理の流れを説明するためのフローチャートである。まず、試験データ生成部１４は、アクセス対象となるメモリアドレスと、アクセス指示とを１つのキャッシュブロックにまとめたアドレスリストを設定し、設定したアドレスリストを複数含んだアクセスアドレスリスト３０を作成する（ステップＳ１０１）。なお、この時点では、アクセスアドレスリスト３０の各アドレスリストには期待値が格納されていない。
【００８１】
次に、試験データ生成部１４は、試験域３１に対して、作成した試験データを展開する（ステップＳ１０２）。そして、試験データ生成部１４は、試験域３１の内容を所定の期待値域に対してコピーする（ステップＳ１０３）。ここで、試験データ生成部１４は、アクセスアドレスリスト３０の各アクセスリストに含まれる各メモリアドレスから算出される記憶領域を所定の期待値域とする。例えば、試験データ生成部１４は、アクセスアドレスリスト３０の各アクセスリストに設定した各メモリアドレスに、所定のオフセットを加算したメモリアドレスが示す記憶領域を、各アクセスリストに対応する期待値域とする。
【００８２】
そして、試験データ生成部１４は、アクセスアドレスリスト３０の先頭に配置されたアドレスリストから順に、以下の処理を実行する。まず、試験データ生成部１４は、アドレスリストに設定されたメモリアドレスとアクセス指示をロードする（ステップＳ１０４）。そして、試験データ生成部１４は、アクセス指示がストアであるか否かを判別し（ステップＳ１０５）、ストアである場合は（ステップＳ１０５肯定）、以下の処理を実行する。
【００８３】
まず、試験データ生成部１４は、メモリアドレスから算出された期待値域のデータを、ストアするデータに書換える（ステップＳ１０６）。そして、試験データ生成部１４は、書換えたデータを期待値として、アドレスリストに格納する（ステップＳ１０７）。一方、試験データ生成部１４は、アクセス指示がストアではない場合は（ステップＳ１０５否定）、メモリアドレスから算出された基地位置域のデータを期待値としてアドレスリストに格納する（ステップＳ１０８）。
【００８４】
その後、試験データ生成部１４は、期待値を格納したアドレスリストがアクセスアドレスリスト３０の末尾であるか否かを判別する（ステップＳ１０９）。そして、試験データ生成部１４は、期待値を格納したアドレスリストがアクセスアドレスリスト３０の末尾ではない場合は（ステップＳ１０９否定）、続くアドレスリストについて、ステップＳ１０４の処理を実行する。
【００８５】
一方、試験データ生成部１４は、期待値を格納したアドレスリストがアクセスアドレスリスト３０の末尾である場合は（ステップＳ１０９肯定）、試験データ１５の生成処理を終了する。
【００８６】
次に、図１２を用いて、キャッシュ試験プログラム２８を実行したＣＰＵ２１が実行するキャッシュ試験の流れについて説明する。図１２は、実施例１に係るキャッシュ試験の流れを説明するためのフローチャートである。なお、ＣＰＵ２１は、試験データ１５の各アドレスリストについて、以下の処理を実行する。
【００８７】
まず、ＣＰＵ２１は、アクセスアドレスリスト３０のアドレスリストからメモリアドレスをロードする（ステップＳ２０１）。この際、ＣＰＵ２１は、メモリアドレスとアクセス指示と期待値とが同一のキャッシュブロックに含まれているので、キャッシュメモリ２３にメモリアドレスとアクセス指示と期待値とを一度にキャッシュすることとなる。
【００８８】
次に、ＣＰＵ２１は、キャッシュしたアクセス指示をロードする（ステップＳ２０２）。そして、ＣＰＵ２１は、アクセス指示が「ｓｔｏｒｅ」であるか否かを判別し（ステップＳ２０３）、アクセス指示が「ｓｔｏｒｅ」である場合は（ステップＳ２０３肯定）、キャッシュした期待値をロードする（ステップＳ２０４）。そして、ＣＰＵ２１は、ステップＳ２０１にてロードしたメモリアドレスに、ステップＳ２０４にてロードした期待値を書込む（ステップＳ２０５）。
【００８９】
その後、ＣＰＵ２１は、キャッシュしたアドレスリストがアクセスアドレスリスト３０の末尾であるか否かを判別し（ステップＳ２０６）、末尾ではない場合は（ステップＳ２０６否定）、次のアドレスリストについてステップＳ２０１を実行する。一方、ＣＰＵ２１は、キャッシュしたドレスリストがアクセスアドレスリスト３０の末尾である場合は（ステップＳ２０６肯定）、キャッシュメモリ上の期待値とデータとが一致するか否かを判別する（ステップＳ２０７）。例えば、ＣＰＵ２１は、ステップＳ２０１にてキャッシュしたアドレスリストに含まれる期待値と、ステップＳ２０５にてデータの書き込みを行った際に、キャッシュメモリ２３上にキャッシュされるデータとが一致するか否かを判別する。
【００９０】
そして、ＣＰＵ２１は、キャッシュメモリ２３上の期待値とデータとが一致する場合は（ステップＳ２０７肯定）、そのまま処理を終了する。一方、ＣＰＵ２１は、キャッシュメモリ２３上の期待値とデータとが一致しない場合は（ステップＳ２０７否定）、エラーを利用者に通知し（ステップＳ２１１）、処理を終了する。
【００９１】
一方、ＣＰＵ２１は、アクセス指示が「ｓｔｏｒｅ」ではない場合は（ステップＳ２０３否定）、ステップＳ２０１にてロードしたメモリ２７のメモリアドレスからデータをｆｅｔｃｈする（ステップＳ２０８）。次に、ＣＰＵ２１は、ステップＳ２０１にてキャッシュしたアドレスリストから期待値をロードする（ステップＳ２０９）。そして、ＣＰＵ２１は、ステップＳ２０８にてｆｅｔｃｈしたデータと、ステップＳ２０９にてロードした期待値とが一致するか否かを判別する（ステップＳ２１０）。
【００９２】
その後、ＣＰＵ２１は、ステップＳ２０８にてｆｅｔｃｈしたデータと、ステップＳ２０９にてロードした期待値とが一致する場合は（ステップＳ２１０肯定）、ステップＳ２０６を実行する。一方、ＣＰＵ２１は、ステップＳ２０８にてｆｅｔｃｈしたデータと、ステップＳ２０９にてロードした期待値とが一致しない場合は（ステップＳ２１０否定）、ステップＳ２１１を実行する。
【００９３】
次に、図１３を用いて、試験データ生成部１４が試験データ１５を生成する処理の具体例について説明する。図１３は、試験データを生成する処理の流れを説明するためのフローチャートである。例えば、試験データ生成部１４は、キャッシュライン競合を起こすメモリアドレスを生成する（ステップＳ３０１）。
【００９４】
次に、試験データ生成部１４は、生成したアドレスに「ｓｔｏｒｅ」または「ｆｅｔｃｈ」をアクセス指示として付加する（ステップＳ３０２）。そして、試験データ生成部１４は、試験に必要な数のアドレスリストを生成したか否かを判別し（ステップＳ３０３）、生成していない場合は（ステップＳ３０３否定）、ステップＳ３０１を実行する。
【００９５】
一方、試験データ生成部１４は、試験に必要な数のアドレスリストを生成した場合は（ステップＳ３０３肯定）、アクセスを行う領域、すなわち、試験域３１を試験データで初期化する（ステップＳ３０４）。次に、試験データ生成部１４は、試験域３１のデータを期待値域３２へコピーし（ステップＳ３０５）、アクセスアドレスリスト３０に含まれる各アドレスリストについて、以下の処理を実行する。
【００９６】
すなわち、試験データ生成部１４は、アドレスリストからメモリアドレスとアクセス指示とを取り出し（ステップＳ３０６）、アクセス指示が「ｓｔｏｒｅ」か否かを判別する（ステップＳ３０７）。そして、試験データ生成部１４は、アクセス指示が「ｓｔｏｒｅ」ではない場合は（ステップＳ３０７否定）、メモリアドレスに対応する期待値を期待値域３２から取得し、取得した期待値をアドレスリストに格納する（ステップＳ３０８）。
【００９７】
次に、試験データ生成部１４は、アドレスリストがアクセスアドレスリスト３０の末尾であるか否かを判別し（ステップＳ３０９）、末尾ではない場合は（ステップＳ３０９否定）、次のアドレスリストについて、ステップＳ３０６を実行する。一方、試験データ生成部１４は、アドレスリストがアクセスアドレスリスト３０の末尾である場合は（ステップＳ３０９肯定）、処理を終了する。
【００９８】
また、試験データ生成部１４は、アドレスリストが「ｓｔｏｒｅ」である場合は（ステップＳ３０７肯定）、メモリアドレスに対応する期待値域３２のデータを、新たなデータに書換える（ステップＳ３１０）。そして、試験データ生成部１４は、書換した新たなデータ、すなわち期待値をアドレスリストへ格納し（ステップＳ３１１）、ステップＳ３０９の処理を実行する。
【００９９】
次に、図１４を用いて、ＣＰＵ２１が実行するキャッシュ試験の具体例について説明する。図１４は、キャッシュ試験の流れを説明するためのフローチャートである。なお、ＣＰＵ２１は、試験データ１５の各アドレスリストについて、以下の処理を実行する。
【０１００】
まず、ＣＰＵ２１は、アドレスリストからメモリアドレスとアクセス指示とを取り出す（ステップＳ４０１）。次に、ＣＰＵ２１は、アクセス指示が「ｆｅｔｃｈ」か否かを判別する（ステップＳ４０２）。そして、ＣＰＵ２１は、アクセス指示が「ｆｅｔｃｈ」である場合は（ステップＳ４０２否定）、「ｆｅｔｃｈ」命令を発行し、結果としてキャッシュメモリ２３がキャッシュするデータを結果値として読み出す（ステップＳ４０３）。
【０１０１】
次に、ＣＰＵ２１は、キャッシュメモリ２３がキャッシュするアドレスリストから期待値を読み出す（ステップＳ４０４）。また、ＣＰＵ２１は、結果値と期待値とが一致するか否かを判別し（ステップＳ４０５）、一致する場合は（ステップＳ４０５肯定）、アドレスリストがアクセスアドレスリスト３０の末尾であるか否かを判別する（ステップＳ４０６）。一方、ＣＰＵ２１は、アクセス指示が「ｆｅｔｃｈ」でない場合は（ステップＳ４０２否定）、アドレスリストから期待値を読み出し（ステップＳ４０９）、読み出したメモリアドレスに期待値をｓｔｏｒｅする（ステップＳ４１０）。
【０１０２】
そして、ＣＰＵ２１は、アドレスリストがアクセスアドレスリスト３０の末尾であると判別した場合は（ステップＳ４０６肯定）、ｓｔｏｒｅの結果と期待値が一致するか否かを判別する（ステップＳ４０７）その後、ＣＰＵ２１は、ｓｔｏｒｅの結果と期待値とが一致値する場合は（ステップＳ４０７肯定）、処理を終了する。
【０１０３】
なお、ＣＰＵ２１は、ｓｔｏｒｅの結果と期待値とが一致しない場合は（ステップＳ４０７否定）、エラーを通知して（ステップＳ４０８）、処理を終了する。また、ＣＰＵ２１は、結果値と期待値が一致しない場合は（ステップＳ４０５否定）、エラーを通知して（ステップＳ４０８）、処理を終了する。また、ＣＰＵ２１は、アドレスリストがアクセスアドレスリスト３０の末尾ではない場合は（ステップＳ４０６否定）、他のアドレスリストについて、ステップＳ４０１を実行する。
【０１０４】
［実施例１の効果］
上述したように、試験データ生成プログラム１３は、メモリアドレスと、アクセス指示と、メモリアドレスを実行した際にキャッシュメモリ２３がキャッシュするデータの期待値とを生成する。また、試験データ生成プログラム１３は、メモリアドレスが示す試験域３１に格納するデータを生成する。
【０１０５】
そして、試験データ生成プログラム１３は、メモリアドレスと、アクセス指示と、期待値とを１つのキャッシュブロックにまとめたアドレスリストを生成する。その後、試験データ生成プログラム１３は、生成したデータと異なるキャッシュラインに格納されるようにアドレスリストを配置した試験データ１５を生成する。
【０１０６】
このため、ＣＰＵ２１は、キャッシュメモリ２３のキャッシュ試験を行う際に、試験データ１５を使用する場合は、１度のメモリアクセスで、メモリアドレスと、アクセス指示と、期待値とをキャッシュメモリ２３にキャッシュさせることができる。この結果、試験データ生成プログラム１３は、キャッシュ試験の効率を向上させることができる。
【０１０７】
なお、効果の一例として、試験データ１５を用いて、１ＣＰＵ当り８万回のアクセスを行わせるキャッシュ試験を実行したが、図１に示す方法と比較して、キャッシュ試験時の消費クロック数を約１２パーセントほど減少させることができた。
【０１０８】
また、ＣＰＵ２１は、試験データ１５を用いてキャッシュ試験を行った場合は、キャッシュメモリ２３が期待値をキャッシュする際に、データとは異なるキャッシュラインにキャッシュさせる。このため、試験データ生成プログラム１３は、不要な競合による調停処理の実行を不要とするので、キャッシュ試験の効率を向上させることができる。
【０１０９】
また、試験データ生成プログラム１３は、キャッシュメモリ２３が有する同一のキャッシュラインに複数の試験データ＃１〜＃３をキャッシュさせ、競合を発生させる場合は、以下の処理を実行する。すなわち、試験データ生成プログラム１３は、アクセスアドレスリスト３０を生成する際に、キャッシュメモリ２３が同一のキャッシュラインにキャッシュするメモリアドレスを生成し、生成したメモリアドレスをアドレスリストに含める。
【０１１０】
このため、ＣＰＵ２１は、試験データ１５を用いてキャッシュ試験を行う場合は、試験データ＃１〜＃３をキャッシュする際に競合を発生させ、期待値をキャッシュする際には、競合を発生させない。このため、試験データ生成プログラム１３は、キャッシュ試験の効率を落とすことなく、同一キャッシュライン上での競合を試験することができる。
【０１１１】
また、試験データ生成プログラム１３は、アクセスアドレスリスト３０の各アドレスリストがそれぞれ異なるキャッシュラインに格納されるように、アクセスアドレスリスト３０を生成する。例えば、試験データ生成プログラム１３は、このため、ＣＰＵ２１は、試験データ１５を用いてキャッシュ試験を行う場合は、アクセスアドレスリスト３０の各アドレスリストをそれぞれ異なるキャッシュラインに格納する。この結果、試験データ生成プログラム１３は、期待値同士の競合を防ぐので、キャッシュ試験の効率を向上させることができる。
【０１１２】
また、試験データ生成プログラム１３は、アクセス指示がデータの読み込みである場合は、読み込み対象となる試験と同一のデータを期待値としてアドレスリストに格納する。また、試験データ生成プログラム１３は、アクセス指示がデータの書き込みである場合は、書き込み対象となるデータを期待値としてアドレスリストに格納する。このため、試験データ生成プログラム１３は、読み込みである場合と、書き込みである場合との両方についてキャッシュ試験を行うことができる。
【実施例２】
【０１１３】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【０１１４】
（１）試験データについて
上述したキャッシュ試験プログラム２８は、メモリ２７に試験データ１５を展開する際に、メモリ１２上におけるメモリアドレスと同一のメモリアドレスが示す記憶領域に展開した。しかし、実施例はこれに限定されるものではない。
【０１１５】
例えば、試験データ生成プログラム１３は、メモリ２７に試験データ＃１〜＃３を格納するメモリアドレスを含むアドレスリストを生成する。この際、試験データ生成プログラム１３は、キャッシュメモリ２３が同一のキャッシュラインに格納するメモリアドレスを含むアドレスリストを生成する。
【０１１６】
また、試験データ生成プログラム１３は、キャッシュメモリ２３が試験データ＃１〜＃３をキャッシュすることとなるキャッシュラインとは異なるキャッシュラインに格納するメモリアドレスを生成する。そして、試験データ生成プログラム１３は、生成したメモリアドレスにアドレスリストを格納するようキャッシュ試験プログラム２８に指示する。この結果、試験データ生成プログラム１３は、期待地と試験データ＃１〜＃３とが異なるキャッシュラインにキャッシュあれるように、試験データ１５を展開できる。
【０１１７】
さらに、試験データ生成プログラム１３は、試験データ＃１〜＃３をキャッシュ試験プログラム２８に送信するとともに、アドレスリストに含まれるメモリアドレスに格納するよう指示する。この結果、キャッシュ試験プログラム２８は、アドレスリストに含まれるメモリアドレスが示す記憶領域に、試験データ＃１〜＃３を格納することができる。
【０１１８】
なお、試験データ生成プログラム１３は、試験データ１５に含まれるアクセスアドレスリスト３０と試験域３１とを展開すべきメモリアドレスを試験データに含めて、キャッシュ試験プログラム２８に送信してもよい。このような場合には、キャッシュ試験プログラム２８は、試験データ１５に含まれるメモリアドレスに従って、アクセスアドレスリスト３０と試験域３１とを展開することとなる。
【０１１９】
（２）試験情報生成装置１０、情報処理装置２０について
上述した実施例１では、キャッシュ試験の対象となる情報処理装置２０の信頼性を考慮して、試験データ１５を生成する試験情報生成装置１０と、情報処理装置２０とが異なる装置である例について説明した。しかし、実施例はこれに限定されるものではない。例えば、試験対象となる装置が試験データを生成してもよい。
【０１２０】
図１５は、実施例２に係るキャッシュ試験プログラムを説明するための図である。例えば、図１５に示す例では、試験対象装置４０は、複数のＣＰＵ４１〜４３、メモリ４７を有する。また、各ＣＰＵ４１〜４３は、それぞれキャッシュメモリ４４〜４６を有する。また、メモリ４７は、キャッシュ試験プログラム４８を有する。
【０１２１】
キャッシュ試験プログラム４８は、試験データ生成部１４と同様の機能を発揮する試験データ生成部４９、試験データ１５と同様のデータである試験データ５０、試験部２９と同様の機能を発揮する試験部５１とを有する。すなわち、キャッシュ試験プログラム４８は、メモリ４７上に試験データ１５と同様のデータである試験データ５０を生成する。そして、キャッシュ試験プログラム４８は、生成した試験データ５０を用いて、各キャッシュメモリ４４〜４６のキャッシュ試験を実行してもよい。
【０１２２】
（３）その他
なお、試験データ生成プログラム１３は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。この試験データ生成プログラム１３は、インターネットなどのネットワークを介して配布することができる。また、この試験データ生成プログラム１３は、ハードディスク、フレキシブルディスク（ＦＤ）、Compact  Disc  Read  Only  Memory（ＣＤ−ＲＯＭ）、Magneto  Optical  Disc（ＭＯ）、Digital  Versatile  Disc（ＤＶＤ）などのコンピュータで読取可能な記録媒体に記録される。また、この試験データ生成プログラム１３は、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【０１２３】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２４】
（付記１）メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成する試験データ生成装置が、
アクセス対象となるメモリアドレスと、当該メモリアドレスが示す格納領域に格納しておくデータと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを生成し、
前記メモリアドレスと、前記アクセス指示と、前記期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する
処理を実行することを特徴とする試験データ生成方法。
【０１２５】
（付記２）前記キャッシュメモリに複数のデータをキャッシュさせる場合は、前記キャッシュメモリが同一のキャッシュラインに各データをキャッシュするように、前記アクセス対象となるメモリアドレスを生成することを特徴とする付記１に記載の試験データ生成方法。
【０１２６】
（付記３）前記キャッシュメモリに複数のアドレスリストをキャッシュさせる場合は、前記キャッシュメモリがそれぞれ異なるキャッシュラインに前記アドレスリストをキャッシュするように、前記アドレスリストを配置した試験データを出力する処理を実行することを特徴とする付記１または２に記載の試験データ生成方法。
【０１２７】
（付記４）前記アクセス指示がデータの読み込みである場合は、前記試験データと同じデータを前記期待値とし、前記アクセス指示がデータの書き込みである場合は、前記メモリアドレスが示す格納領域に対して書込まれるデータを前記期待値とすることを特徴とする付記１〜３のいずれか１つに記載の試験データ生成方法。
【０１２８】
（付記５）前記アドレスリストが前記データとは異なるキャッシュラインに格納されるように、前記アドレスリストを格納するメモリアドレスを指定した前記試験データを出力することを特徴とする付記１〜４のいずれか１つに記載の試験データ生成方法。
【０１２９】
（付記６）メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験方法において、
前記キャッシュメモリを有する演算処理装置が、
キャッシュ対象となるデータをメモリ上に展開し、
前記データを展開したメモリアドレスと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記データとは異なるキャッシュラインに格納されるように、前記生成したアドレスリストを前記メモリ上に展開し、
前記アドレスリストを前記キャッシュメモリにキャッシュして、当該アドレスリストに含まれる前記メモリアドレスと、前記アクセス指示とに従ってメモリアクセスを実行し、
前記メモリアクセスを実行した結果前記キャッシュメモリがキャッシュしたデータと、前記キャッシュしたアドレスリストに含まれる期待値とが一致するか否かを判定する
処理を実行することを特徴とするキャッシュメモリの試験方法。
【０１３０】
（付記７）前記キャッシュメモリに複数のデータをキャッシュさせる場合は、前記キャッシュメモリが同一のキャッシュラインに各データをキャッシュするように、前記アクセス対象となるメモリアドレスを生成することを特徴とする付記６に記載のキャッシュメモリの試験方法。
【０１３１】
（付記８）前記キャッシュメモリに複数のアドレスリストをキャッシュさせる場合は、前記キャッシュメモリがそれぞれ異なるキャッシュラインに前記アドレスリストをキャッシュするように、前記アドレスリストを配置することを特徴とする付記６または７に記載のキャッシュメモリの試験方法。
【０１３２】
（付記９）前記アクセス指示がデータの読み込みである場合は、前記試験データと同じデータを前記期待値とし、前記アクセス指示がデータの書き込みである場合は、前記メモリアドレスが示す格納領域に対して書込まれるデータを前記期待値とすることを特徴とする付記６〜８のいずれか１つに記載のキャッシュメモリの試験方法。
【０１３３】
（付記１０）メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成する試験データ生成装置において、
アクセス対象となるメモリアドレスと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成するアドレスリスト生成部と、
前記メモリアドレスが示す格納領域に格納しておくデータを生成するデータ生成部と、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する出力部と
を有することを特徴とする試験データ生成装置。
【０１３４】
（付記１１）前記アドレスリスト生成部は、前記キャッシュメモリに複数のデータをキャッシュさせる場合は、前記キャッシュメモリが同一のキャッシュラインに各データをキャッシュするように、前記アクセス対象となるメモリアドレスを生成することを特徴とする付記１０に記載の試験データ生成装置。
【０１３５】
（付記１２）前記前記出力部は、前記キャッシュメモリに複数のアドレスリストをキャッシュさせる場合は、前記キャッシュメモリがそれぞれ異なるキャッシュラインに前記アドレスリストをキャッシュするように、前記アドレスリストを配置した試験データを出力することを特徴とする付記１０または１１に記載の試験データ生成装置。
【０１３６】
（付記１３）前記前記アドレスリスト生成部は、アクセス指示がデータの読み込みである場合は、前記試験データと同じデータを前記期待値とし、前記アクセス指示がデータの書き込みである場合は、前記メモリアドレスが示す格納領域に対して書込まれるデータを前記期待値とすることを特徴とする付記１０〜１２のいずれか１つに記載の試験データ生成装置。
【０１３７】
（付記１４）前記出力部は、前記アドレスリストが前記データとは異なるキャッシュラインに格納されるように、前記アドレスリストを格納するメモリアドレスを指定した前記試験データを出力することを特徴とする付記１０〜１３のいずれか１つに記載の試験データ生成装置。
【０１３８】
（付記１５）メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成するコンピュータに、
アクセス対象となるメモリアドレスと、当該メモリアドレスが示す格納領域に格納しておくデータと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを生成し、
前記メモリアドレスと、前記アクセス指示と、前記期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する
処理を実行させることを特徴とする試験データ生成プログラム。
【０１３９】
（付記１６）前記キャッシュメモリに複数のデータをキャッシュさせる場合は、前記キャッシュメモリが同一のキャッシュラインに各データをキャッシュするように、前記アクセス対象となるメモリアドレスを生成することを特徴とする付記１５に記載の試験データ生成プログラム。
【０１４０】
（付記１７）前記キャッシュメモリに複数のアドレスリストをキャッシュさせる場合は、前記キャッシュメモリがそれぞれ異なるキャッシュラインに前記アドレスリストをキャッシュするように、前記アドレスリストを配置した試験データを出力する処理を実行することを特徴とする付記１５または１６に記載の試験データ生成プログラム。
【０１４１】
（付記１８）前記アクセス指示がデータの読み込みである場合は、前記試験データと同じデータを前記期待値とし、前記アクセス指示がデータの書き込みである場合は、前記メモリアドレスが示す格納領域に対して書込まれるデータを前記期待値とすることを特徴とする付記１５〜１７のいずれか１つに記載の試験データ生成プログラム。
【０１４２】
（付記１９）前記アドレスリストが前記データとは異なるキャッシュラインに格納されるように、前記アドレスリストを格納するメモリアドレスを指定した前記試験データを出力することを特徴とする付記１５〜１８のいずれか１つに記載の試験データ生成プログラム。
【０１４３】
（付記２０）コンピュータが読み取り可能な記録媒体であって、
メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成するコンピュータに、
アクセス対象となるメモリアドレスと、当該メモリアドレスが示す格納領域に格納しておくデータと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを生成し、
前記メモリアドレスと、前記アクセス指示と、前記期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する
処理を実行させる試験データ生成プログラム
を記憶することを特徴とする記録媒体。
【０１４４】
（付記２１）コンピュータが読み取り可能な記録媒体であって、
メモリアドレスに応じたキャッシュラインにデータをキャッシュするキャッシュメモリの試験用データを生成するコンピュータに、
アクセス対象となるメモリアドレスと、当該メモリアドレスが示す格納領域に格納しておくデータと、当該メモリアドレスに対するアクセス指示と、当該アクセス指示に従ってメモリアクセスを実行した際に前記キャッシュメモリがキャッシュするデータの期待値とを生成し、
前記メモリアドレスと、前記アクセス指示と、前記期待値とを、前記キャッシュメモリが１度のメモリアクセスでキャッシュ可能な単位にまとめたアドレスリストを生成し、
前記アドレスリストが前記データとは異なるキャッシュラインにキャッシュされるように、前記データと前記アドレスリストとを配置した前記試験用データを出力する
処理を実行させる試験データ生成プログラム
を記憶することを特徴とする記録媒体。
【符号の説明】
【０１４５】
１  情報処理装置
２、１２、２７、４７  メモリ
３、２３、２６、４４、４５、４６  キャッシュメモリ
４、２２、２５  コア
５、３０  アクセスアドレスリスト
６、３１  試験域
７、３２  期待値域
８、１５、５０  試験データ
１０  試験情報生成装置
１１、２１、２４、４１、４２、４３  ＣＰＵ
１３  試験データ生成プログラム
１４、４９  試験データ生成部
２８、４８  キャッシュ試験プログラム
２９、５１  試験部
４０  試験対象装置
【図１】
2014002557.tif 000003
【図２】
2014002557.tif 000004
【図３】
2014002557.tif 000005
【図４】
2014002557.tif 000006
【図５】
2014002557.tif 000007
【図６】
2014002557.tif 000008
【図７】
2014002557.tif 000009
【図８】
2014002557.tif 000010
【図９】
2014002557.tif 000011
【図１０】
2014002557.tif 000012
【図１１】
2014002557.tif 000013
【図１２】
2014002557.tif 000014
【図１３】
2014002557.tif 000015
【図１４】
2014002557.tif 000016
【図１５】
2014002557.tif 000017