(57)【要約】【課題】キャッシュメモリの論理検証を効率的に行うことができる。【解決手段】キャッシュ論理検証装置は、メモリの一部の内容の写しを保持するキャッシュメモリ２００に読み込み対象のデータが保持されているか否かを判断する段階的な処理の各段階における途中経過を取得するキャッシュ状態取得部４００と、キャッシュ状態取得部４００によって取得される各段階における途中経過と、前記段階的な処理の各段階におけるあらかじめ定められた予定途中経過と、を比較する検証部５００と、を備える。【選択図】        図１
2010061473.tif 000002
【特許請求の範囲】
【請求項１】
メモリの一部の内容の写しを保持するキャッシュメモリに読み込み対象のデータが保持されているか否かを判断する段階的な処理の各段階における途中経過を取得する取得手段と、
前記取得手段によって取得される各段階における途中経過と、前記段階的な処理の各段階におけるあらかじめ定められた予定途中経過と、を比較する比較手段と、
を備えたことを特徴とするキャッシュ論理検証装置。
【請求項２】
前記取得手段によって取得される複数の途中経過を複数の予定途中経過を結合するあらかじめ定められた順序と同一の順序で結合する整形手段をさらに備え、
前記比較手段は、
各段階の処理ごとに途中経過と予定途中経過とを比較することを特徴とする請求項１に記載のキャッシュ論理検証装置。
【請求項３】
前記比較手段による比較の結果、いずれかの段階において途中経過と予定途中経過とが異なるとき、当該段階を出力する出力手段をさらに備えることを特徴とする請求項２に記載のキャッシュ論理検証装置。
【請求項４】
前記取得手段は、
それぞれ複数のデータのアドレスに対応するキャッシュメモリの領域に保持され前記キャッシュメモリに保持されたデータのアドレスを示すタグ情報であって前記読み込み対象のデータのアドレスに対応する領域に保持されたタグ情報を取得するタグ情報取得手段と、
前記読み込み対象のデータのアドレスに対応するタグ情報が当該アドレスを含んでいるか否かを示した判定結果を取得する判定結果取得手段と、
を含むことを特徴とする請求項１に記載のキャッシュ論理検証装置。
【請求項５】
前記取得手段は、
前記タグ情報がそれぞれデータのアドレスを保持する複数のキャッシュラインを含むとき、前記読み込み対象のデータのアドレスを含むキャッシュラインを取得するライン取得手段をさらに含むことを特徴とする請求項４に記載のキャッシュ論理検証装置。
【請求項６】
前記ライン取得手段は、
前記読み込み対象のデータのアドレスを含むキャッシュラインがないとき、最も長い時間アクセスされていないデータのアドレスを含むキャッシュラインを取得することを特徴とする請求項５に記載のキャッシュ論理検証装置。
【請求項７】
メモリの一部の内容の写しを保持するキャッシュメモリに読み込み対象のデータが保持されているか否かを判断する段階的な処理を制御する制御手段をさらに備え、
前記取得手段は、
前記制御手段と一体的に設けられ前記制御手段によって制御される段階的な処理の各段階における途中経過を取得することを特徴とする請求項１に記載のキャッシュ論理検証装置。
【請求項８】
メモリの一部の内容の写しを保持するキャッシュメモリに読み込み対象のデータが保持されているか否かを判断する段階的な処理の各段階における途中経過を取得する取得工程と、
前記取得工程によって取得される各段階における途中経過と、前記段階的な処理の各段階におけるあらかじめ定められた予定途中経過と、を比較する比較工程と、
を含むことを特徴とするキャッシュ論理検証方法。
【請求項９】
メモリの一部の内容の写しを保持するキャッシュメモリに読み込み対象のデータが保持されているか否かを判断する段階的な処理の各段階における途中経過を取得する取得手順と、
前記取得手順によって取得される各段階における途中経過と、前記段階的な処理の各段階におけるあらかじめ定められた予定途中経過と、を比較する比較手順と、
をコンピュータに実行させることを特徴とするキャッシュ論理検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ論理検証装置、キャッシュ論理検証方法およびキャッシュ論理検証プログラムに関する。
【背景技術】
【０００２】
従来より、コンピュータシステムでは、ＣＰＵ（Central Processing Unit）とメインメモリとの間の速度差を埋めるために、高速読み出し／書き込みが可能なキャッシュメモリが用いられている。
【０００３】
キャッシュメモリには、メインメモリに記憶されているデータの一部が保持されており、例えば、セット・アソシアティブ方式のメモリがある。このキャッシュメモリは、キャッシュデータのメインメモリ上における記憶位置を表すアドレス（タグ）を保持するタグＲＡＭと、キャッシュデータを保持するデータＲＡＭと、を含んでいる。このタグＲＡＭおよびデータＲＡＭでは、メインメモリを分割したブロックごとに複数のキャッシュラインが対応し、このキャッシュライン数分ウェイが並列に設けられるデータ構造となっている。そして、データアクセス時には各ウェイにまたがる同一ブロックにアクセスすることが一般的に行われている。
【０００４】
このようなキャッシュメモリを設計する際、通常、キャッシュの論理設計段階で論理設計の正当性が様々な方法で検証されている。
【０００５】
例えば、キャッシュメモリを模倣した検証装置が、稼動中の計算機のメモリアクセス要求を受け取り、メモリアクセスの動作を模倣して、動作の論理検証を行う技術が開示されている。
【０００６】
また、論理検証プログラムをパイプライン方式のキャッシュメモリを模倣した検証装置によって複数の命令を１マシンサイクルごとに実行させた結果と単一命令を逐次実行するキャッシュメモリを模倣した検証装置によって単一命令ずつ実行させた結果（期待値）とを比較して検証装置に保持された内容の妥当性を検証する技術が開示されている。
【０００７】
さらに、キャッシュメモリの論理検証の具体的な例を、図１２、図１３、図１４および図１５を用いて説明する。図１２、図１３、図１４および図１５に示すように、論理検証が行われるキャッシュメモリは、ＣＰＵ１およびメインメモリと接続され、キャッシュメモリを論理的に制御するキャッシュ制御部を備えている。
【０００８】
まず、図１２では、ＣＰＵ１が、検証するための事前準備をするために、メインメモリにあらかじめデータが記憶されているアドレス（以下、検証アドレスという。）（例えば‘０ｘ１０００’番地）からデータ（例えば‘Ａ’）を読み込む。これにより、キャッシュ制御部は、検証アドレス（‘０ｘ１０００’番地）を表すタグをタグＲＡＭに保持する。また、キャッシュ制御部は、メインメモリから読み出されたデータ（‘Ａ’）をデータＲＡＭに保持する。
【０００９】
次に、図１３では、メインメモリからではなくキャッシュメモリからデータを読み込んでいることを明確に検証するための事前準備として、例えばキャッシュメモリと接続されていないＣＰＵ２が、メインメモリの検証アドレス（‘０ｘ１０００’番地）に、既に記憶されているデータ（‘Ａ’）とは異なるデータ（例えば‘Ｂ’）を書き込む。これにより、ＣＰＵ２は、メインメモリに記憶された検証アドレス（‘０ｘ１０００’番地）のデータとキャッシュ制御部に保持された検証アドレス（‘０ｘ１０００’番地）のデータとを異なるようにすることができる。
【００１０】
このような事前準備をしてから、図１４では、キャッシュメモリの論理検証をするために、ＣＰＵ１が検証アドレス（‘０ｘ１０００’番地）から再度データを読み込む。このとき、ＣＰＵ１は、キャッシュ制御部からキャッシュメモリに保持されたデータ（‘Ａ’）を取得し、取得したデータを比較部に通知する。
【００１１】
そして、図１５では、比較部が、取得したデータ（‘Ａ’）と、検証アドレス（‘０ｘ１０００’番地）からデータを読み込んだとき取得されることが期待された期待値（‘Ａ’）と、を比較する。比較した結果、比較部が、取得したデータと期待値とが一致すると判断したとき、キャッシュ制御部の動作が論理的に正当であることが検証される。一方、比較部が、取得したデータと期待値とが一致しないと判断したとき、キャッシュ制御部の動作が論理的に誤っていることが検証される。
【００１２】
【特許文献１】特開２００１−３０６３９７号公報
【特許文献２】特開２００１−２５６２７０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、キャッシュメモリの従来の論理検証では、キャッシュメモリの論理設計の正当性を効率的に検証できないという問題がある。すなわち、キャッシュメモリからデータを読み込むとき、キャッシュメモリにデータが保持されているか否かを判断する段階的な処理を行うため、読み込み処理の複数の段階のうち、どの段階が誤っているのかを効率的に検証することができない。どの段階が誤っているのかを明確に検証するためには、各段階の動作の正誤がわかるように段階ごとにメインメモリおよびキャッシュメモリに対して事前準備をする必要があり、論理検証が煩雑となる。結果的に、検証工数がかかってしまう。
【００１４】
本発明は、上記に鑑みてなされたものであって、キャッシュメモリの論理検証を効率的に行うことができるキャッシュ論理検証装置、キャッシュ論理検証方法およびキャッシュ論理検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した問題を解決し、目的を達成するために、キャッシュ論理検証装置は、メモリの一部の内容の写しを保持するキャッシュメモリに読み込み対象のデータが保持されているか否かを判断する段階的な処理の各段階における途中経過を取得する取得手段と、前記取得手段によって取得される各段階における途中経過と、前記段階的な処理の各段階におけるあらかじめ定められた予定途中経過と、を比較する比較手段と、を備えた構成を採る。
【００１６】
かかる構成によれば、キャッシュ論理検証装置は、キャッシュメモリからデータを読み込む際に段階的な処理の各段階における途中経過を直接取得することができるため、各段階における途中経過の正当性を判別することによってどの段階が誤っているのかを知ることができ、キャッシュメモリの論理検証を効率的に行うことができる。この結果、キャッシュ論理検証装置は、各段階の正当性を確実に検証できることとなり、検証品質を向上させることができる。また、キャッシュ論理検証装置が、キャッシュメモリからデータを読み込む際に段階的な処理の各段階における途中経過を一括して取得すれば、一括して取得された途中経過を一度に検証することができることになり、検証工数を削減することができる。
【発明の効果】
【００１７】
開示の装置によれば、キャッシュメモリの論理検証を効率的に行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下に、キャッシュ論理検証装置を備えた情報処理装置の実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。
【実施例１】
【００１９】
図１は、実施例１に係る情報処理装置の全体構成を示す機能ブロック図である。図１に示すように、情報処理装置は、ＣＰＵ１００と、キャッシュメモリ２００と、メインメモリ３００と、キャッシュ論理検証装置の部分を構成するキャッシュ状態取得部４００および検証部５００と、を備える。
【００２０】
ＣＰＵ１００は、検証部５００から検証指示を取得すると、検証指示を解釈しキャッシュメモリ２００に対して読み込み処理の実行を指示する。ここで、検証指示とは、例えば、キャッシュメモリ２００に保持されたデータを読み込むことによって、キャッシュメモリ２００が論理的に動作することを検証する指示である。また、ＣＰＵ１００は、キャッシュメモリ２００から読み込まれたデータを取得し、検証部５００に対して出力する。
【００２１】
キャッシュメモリ２００は、キャッシュ論理検証装置によってキャッシュの論理検証が行われる対象装置である。そして、キャッシュメモリ２００は、キャッシュ制御部２１０を備えている。
【００２２】
ここで、キャッシュメモリ２００は、メインメモリ３００上の頻繁に使用されるデータを保持するとともに、保持されたデータのメインメモリ３００上におけるアドレスを示すタグを保持する。また、本実施の形態において、キャッシュメモリ２００は、メインメモリ３００の所定のメモリブロックごとに２つのキャッシュラインが対応している２ウェイセットアソシアティブ構成を採っているものとする。以下では、同一のメモリブロックに対応する各キャッシュラインをウェイと呼ぶ。なお、キャッシュメモリ２００は、２ウェイであるとしたが、これに限定されず、４ウェイや８ウェイ等であっても良い。
【００２３】
キャッシュ制御部２１０は、ＣＰＵ１００からの読み込み指示に応じてキャッシュメモリからデータの読み込みを行い、読み込んだデータをＣＰＵ１００に対して出力する。また、キャッシュ制御部２１０は、読み込み指示からデータを読み込むまでに段階的に行われる動作によって取得される経過情報をキャッシュ状態取得部４００に出力する。経過情報は、例えば、本実施例では、タグ情報２１１、ウェイ情報２１２、ＬＲＵ２１３およびデータ２１４である。以下に、個々の経過情報について説明する。
【００２４】
キャッシュ制御部２１０は、メインメモリ３００にあらかじめデータが記憶されている検証アドレスであってＣＰＵ１００から読み込み指示がされた検証アドレスに対応するタグ情報２１１を読み込む。すなわち、タグ情報２１１は、検証アドレスに対応するタグが保持される領域からキャッシュ制御部２１０がタグを読み込むことによって取得される経過情報である。キャッシュ制御部２１０によって読み込まれるタグ情報２１１には、検証アドレスと同一のメモリブロックに対応する２つのタグがウェイごとに含まれ、ウェイごとに異なるデータのアドレスが存在している。
【００２５】
キャッシュ制御部２１０は、検証アドレスに対応するタグ情報２１１をキャッシュメモリ２００から読み込んだ後、検証アドレスがタグ情報２１１内のウェイごとのタグに含まれているか否かを判定する。具体的に、キャッシュ制御部２１０は、検証アドレスがタグ情報２１１内のウェイのタグに含まれていればキャッシュヒットを示すデータを、また検証アドレスがウェイのタグに含まれていなければキャッシュミスを示すデータを取得する。すなわち、ウェイ情報２１２は、検証アドレスがタグ情報２１１内のウェイごとのタグに含まれているか否かが判定されることによって取得される経過情報である。
【００２６】
キャッシュ制御部２１０は、検証アドレスがタグ情報２１１内のウェイごとのタグに含まれているか否かを判定したとき、検証アドレスが含まれていたタグのウェイを選択する。ここで、キャッシュ制御部２１０は、仮に検証アドレスがどちらのウェイのタグにも含まれていない場合、ＬＲＵ（Least Recently Used）制御により、タグ情報２１１から最近の使用頻度が最も低いウェイを選択し、選択されたウェイのタグに保持されたアドレスを検証アドレスに置き換える。ＬＲＵ２１３は、検証アドレスが既に含まれているタグのウェイか、または検証アドレスが含まれることになるタグのウェイが選択されることによって取得される経過情報である。
【００２７】
キャッシュ制御部２１０は、検証アドレスがタグ情報２１１内のウェイごとのタグに含まれているか否かを判定した後、検証アドレスがどちらか一方のウェイのタグに含まれていた場合、タグに対応するデータをキャッシュメモリ２００から読み込む。一方、キャッシュ制御部２１０は、検証アドレスがどちらのウェイのタグにも含まれていない場合、メインメモリ３００から読み込まれＬＲＵ制御により置き換えられたデータを読み込む。すなわち、データ２１４は、キャッシュ制御部２１０が検証アドレスを示すタグに対応するデータを読み込むことによって取得される経過情報である。
【００２８】
メインメモリ３００は、主記憶装置であって、ＣＰＵ１００における処理に必要なデータやプログラムを記憶している。メインメモリ３００には、キャッシュ論理検証装置がキャッシュメモリ２００の論理検証を行うために、あらかじめ検証アドレスにデータが書き込まれる。なお、メインメモリ３００は、キャッシュメモリ２００と比較すると大容量であるが、アクセス速度が遅いものである。
【００２９】
キャッシュ状態取得部４００は、キャッシュ制御部２１０がデータを読み込む際に段階的に行われる動作によって取得されるそれぞれの経過情報を取得する。具体的には、キャッシュ状態取得部４００は、キャッシュ制御部２１０によって段階的に行われる動作の順に出力されたタグ情報２１１、ウェイ情報２１２、ＬＲＵ２１３およびデータ２１４を取得する。また、キャッシュ状態取得部４００は、検証アドレスに対応するデータを読み込むまでの一連の経過情報が揃ったとき、一連の経過情報を後述する期待値と同一の形式に整形して、整形されたデータを出力データとして検証部５００に対して出力する。なお、キャッシュ状態取得部４００は、経過情報の取得を、例えばアサーションを記述することができるＶｅｒｉｌｏｇ言語を用いて実現しても良い。ここで、アサーションとは、キャッシュ制御部２１０の論理設計の正誤を確認するために取得されるチェックポイントを示し、データを読み込む際に段階的に行われる動作によって取得されるそれぞれの経過情報を取得することをいうものとする。
【００３０】
検証部５００は、キャッシュメモリ２００の論理検証を開始するために、キャッシュメモリ２００の検証指示をＣＰＵ１００に対して出力する。また、検証部５００は、検証指示によってキャッシュメモリ２００からＣＰＵ１００に読み込まれたデータをＣＰＵ１００から取得する。さらに、検証部５００は、キャッシュ状態取得部４００から出力データを取得する。そして、検証部５００は、キャッシュ状態取得部４００から取得された出力データと、出力データの期待値と、を比較する。ここで、出力データの期待値とは、検証指示によってデータを読み込む際に検証者が意図している経過情報の値であり、あらかじめ検証部５００に保持されている。検証部５００は、一連の経過情報の出力データと出力データの期待値とがすべて一致する場合は、キャッシュ制御部の動作が正常であることを出力する。一方、検証部５００は、一連の経過情報の出力データと出力データの期待値とがいずれか一つでも一致しない場合は、一致しない経過情報の動作を示す情報を出力する。これにより、検証部５００は、検証アドレスのデータを読み込むまでに段階的に行われる動作によって取得される経過情報を一括して検証することができる。
【００３１】
次に、図２は、実施例１に係るキャッシュ状態取得部４００の構成を示す機能ブロック図である。図２に示すように、キャッシュ状態取得部４００は、タグ情報取得部４１０と、ウェイ情報取得部４２０と、ＬＲＵ取得部４３０と、データ取得部４４０と、整形部４５０と、を備える。
【００３２】
タグ情報取得部４１０は、キャッシュ制御部２１０によって読み込まれた検証アドレスに対応するタグ情報２１１を取得して、取得されたタグ情報２１１を整形部４５０に対して出力する。なお、タグ情報２１１には、２つのウェイのタグが含まれている。
【００３３】
ウェイ情報取得部４２０は、検証アドレスがウェイごとのタグに含まれているか否かをキャッシュ制御部２１０によって判定された判定結果をウェイ情報２１２としてウェイごとに取得して、取得された判定結果を整形部４５０に対して出力する。
【００３４】
ＬＲＵ取得部４３０は、キャッシュ制御部２１０によって取得された検証アドレスが含まれているタグのウェイをＬＲＵ２１３として取得して、取得されたウェイを整形部４５０に対して出力する。
【００３５】
データ取得部４４０は、キャッシュ制御部２１０によって読み込まれた検証アドレスに対応するデータ２１４を取得して、取得されたデータ２１４を整形部４５０に対して出力する。
【００３６】
整形部４５０は、タグ取得部４１０からタグ情報２１１を取得すると、取得されたタグ情報２１１を保持する。また、整形部４５０は、ウェイ情報取得部４２０からウェイ情報２１２を取得すると、取得されたウェイ情報２１２を保持する。また、整形部４５０は、ＬＲＵ取得部４３０からＬＲＵ２１３を取得すると、取得されたＬＲＵ２１３を保持する。また、整形部４５０は、データ取得部４４０からデータ２１４を取得すると、取得されたデータ２１４を保持する。そして、整形部４５０は、データ取得部４４０からデータ２１４を取得したとき、保持した各経過情報を、検証部５００にあらかじめ保持された一連の経過情報の期待値と同一の順序で結合して、結合された出力データをまとめて検証部５００に対して出力する。なお、整形部４５０が出力データを検証部５００に対して出力する手段の一例として、出力データを１つのファイルに出力して、出力されたファイルを検証部５００が読み込むことによって、検証部５００が出力データを取得するものとしても良い。
【００３７】
次に、図３は、実施例１に係る検証部の構成を示す機能ブロック図である。図３に示すように、検証部５００は、検証指示部５１０と、比較部５２０と、期待値５２１と、結果通知部５３０と、を備える。
【００３８】
検証指示部５１０は、キャッシュメモリ２００の検証指示をＣＰＵ１００に対して出力する。
【００３９】
比較部５２０は、整形部４５０から出力データを取得すると、取得された出力データとあらかじめ保持された一連の経過情報の期待値５２１とを比較する。そして、比較部５２０は、取得された出力データと期待値５２１とが一致しているとき、一致している旨の結果通知を結果通知部５３０に出力する。一方、比較部５２０は、取得された出力データと期待値５２１とが一致していないとき、一致していない経過情報の動作を含んだ結果通知を結果通知部５３０に出力する。
【００４０】
期待値５２１は、キャッシュメモリ２００の検証シナリオごとに保持され、検証アドレスのデータを読み込む際に段階的に行われる動作によって取得されることが期待される一連の経過情報を表す。例えば、期待値５２１は、検証アドレスのデータを読み込むときのタグ情報２１１、ウェイ情報２１２、ＬＲＵ２１３およびデータ２１４を表す。
【００４１】
結果通知部５３０は、比較部５２０から結果通知を取得すると、取得された結果を、例えばモニターに出力する。
【００４２】
次に、本実施例１に係るキャッシュ状態取得の動作概要を、図４および図５を参照して説明する。図４では、キャッシュ状態取得部４００を用いて説明し、図５では、キャッシュ状態取得部４００が時系列に取得する経過情報を用いて説明する。
【００４３】
図４は、キャッシュ状態取得部４００の動作概要を示す図である。図４に示すように、タグ情報取得部４１０、ウェイ情報取得部４２０、ＬＲＵ取得部４３０およびデータ取得部４４０は、それぞれキャッシュ制御部２１０から出力される信号（ストローブ）を監視しており、ストローブを取得すると各ストローブに対応した情報を取得して、整形部４５０に対して取得した情報を出力する。
【００４４】
具体的には、ＬＲＵ取得部４３０は、キャッシュ制御部２１０から経過情報であるＬＲＵ２１３が出力されるトリガーとなるＬＲＵ更新ストローブ３０を取得すると、ＬＲＵ２１３を取得して、取得したＬＲＵ２１３を整形部４５０に対して出力する。また、タグ情報取得部４１０は、キャッシュ制御部２１０から経過情報であるタグ情報２１１が出力されるトリガーとなるタグリードストローブ１０を取得すると、タグ情報２１１に含まれるウェイ０のタグ１１およびウェイ１のタグ１２を取得して、取得したタグ１１、１２を整形部４５０に対して出力する。また、ウェイ情報取得部４２０は、キャッシュ制御部２１０から経過情報であるウェイ情報２１２が出力されるトリガーとなるキャッシュ判定ストローブ２０を取得すると、ウェイごとのタグがそれぞれキャッシュヒットまたはキャッシュミスである情報２１、２２を取得して、取得した情報２１、２２を整形部４５０に対して出力する。さらに、データ取得部４４０は、キャッシュ制御部２１０から経過情報であるデータ２１４が出力されるトリガーとなるデータリードストローブ４０を取得すると、キャッシュデータ２１４を取得して、取得したキャッシュデータ２１４を整形部４５０に対して出力する。このとき、データリードストローブ４０を取得したデータ取得部４４０は、整形部４５０に対して出力指示を出力する。
【００４５】
引き続き、出力指示を取得した整形部４５０は、タグ情報取得部４１０、ウェイ情報取得部４２０、ＬＲＵ取得部４３０およびデータ取得部４４０からそれぞれ出力された経過情報（１１，１２、２１、２２、２１３、２１４）を出力データとして整形して、検証部５００に対してまとめて出力することになる。
【００４６】
次に、図５は、キャッシュ状態取得部４００が時系列に経過情報を取得した図である。図５に示すように、キャッシュ状態取得部４００が、キャッシュ制御部２１０から出力される各経過情報を、時系列に取得する様子が示されている。なお、キャッシュ制御部２１０は、段階的に行われる動作の順に取得される経過情報、つまりタグ情報２１１、ウェイ情報２１２、ＬＲＵ２１３およびデータ２１４を出力している。
【００４７】
まず、キャッシュ状態取得部４００は、タグリードストローブ１０を取得すると、ウェイ０のタグ１１を取得する。図５の例では、ウェイ０のタグ１１は、アドレスａを表している。また、キャッシュ状態取得部４００は、ウェイ０のタグ１１を取得すると同時に、ウェイ１のタグ１２を取得する。図５では、ウェイ１のタグ１２は、アドレスｂを表している。
【００４８】
次に、キャッシュ状態取得部４００は、キャッシュ判定ストローブ２０を取得すると、ウェイ０のタグがキャッシュヒットまたはキャッシュミスであることを示す情報２１を取得する。図５の例では、情報２１は、ウェイ０のタグがキャッシュミスである情報を表している。また、キャッシュ状態取得部４００は、ウェイ０の情報２１を取得すると同時に、ウェイ１のタグがキャッシュヒットまたはキャッシュミスであることを示す情報２２を取得する。図５では、情報２２は、ウェイ１のタグがキャッシュヒットである情報を表している。
【００４９】
続いて、キャッシュ状態取得部４００は、ＬＲＵ更新ストローブ３０を取得すると、ＬＲＵ２１３を取得する。図５では、ＬＲＵ２１３は、タグがキャッシュヒットであるウェイ１を表している。
【００５０】
さらに、キャッシュ状態取得部４００は、データリードストローブ４０を取得すると、キャッシュデータ２１４を取得する。図５では、キャッシュデータ２１４は、データＢを表している。
【００５１】
そして、各信号で表された各データがまとめられたデータ、つまりアドレスａ、アドレスｂ、ミス、ヒット、データＢおよびウェイ１が出力データとなる。この出力データが、検証部５００に対して出力され、検証部５００によってあらかじめ保持された一連の経過情報の期待値５２１と比較される。
【００５２】
次に、本実施例１に係るキャッシュメモリ検証方法の処理を、図６を参照して説明する。図６は、本実施例１に係るキャッシュメモリ検証方法の処理を示すフローチャートである。
【００５３】
まず、キャッシュ制御部２１０は、ＣＰＵ１００から検証アドレスのデータを読み込む指示がされると、検証アドレスに対応するタグ情報２１１を読み込み、読み込んだタグ情報２１１をキャッシュ状態取得部４００に対して出力する。このタグ情報２１１は、検証アドレスと同一のメモリブロックに対応する２つのウェイのタグを含んでいる。すると、タグ情報取得部４１０は、キャッシュ制御部２１０によって出力されたタグ情報２１１を取得して（Ｓ１１０）、整形部４５０に対して出力する。
【００５４】
次に、検証アドレスに対応するタグ情報２１１を読み込んだキャッシュ制御部２１０は、検証アドレスがタグ情報２１１内のウェイごとのタグに含まれているか否かを判定して、ウェイごとの判定結果（ウェイ情報２１２）をキャッシュ状態取得部４００に対して出力する。すると、ウェイ取得部４２０は、キャッシュ制御部２１０によって出力されたウェイ情報２１２をキャッシュ判定として取得して（Ｓ１２０）、整形部４５０に対して出力する。
【００５５】
次に、検証アドレスがウェイごとのタグに含まれているか否かを判定したキャッシュ制御部２１０は、検証アドレスが既に含まれているかまたは含まれることになるタグのウェイを取得して、取得されたウェイ（ＬＲＵ２１３）をキャッシュ状態取得部４００に対して出力する。すると、ＬＲＵ取得部４３０は、キャッシュ制御部２１０によって出力されたＬＲＵ２１３を取得して（Ｓ１３０）、整形部４５０に対して出力する。
【００５６】
さらに、検証アドレスがウェイごとのタグに含まれているか否かを判定したキャッシュ制御部２１０は、検証アドレスがどちらか一方のウェイのタグに含まれていた場合、タグに対応するデータを読み込む。一方、キャッシュ制御部２１０は、検証アドレスがどちらのウェイのタグにも含まれていない場合、メインメモリ３００から読み込まれたデータを読み込む。そして、キャッシュ制御部２１０は、読み込んだデータ２１４をキャッシュ状態取得部４００に対して出力する。すると、データ取得部４４０は、キャッシュ制御部２１０によって出力されたデータ２１４を取得して（Ｓ１４０）、整形部４５０に対して出力する。
【００５７】
引き続き、データ取得部４４０からデータ２１４を取得した整形部４５０は、タグ情報取得部４１０から取得したタグ情報２１１、ウェイ情報取得部４２０から取得したウェイ情報２１２、ＬＲＵ取得部４３０から取得したＬＲＵ２１３およびデータ取得部４４０から取得したデータ２１４を用いて、出力データを整形する（Ｓ１５０）。このとき、整形部４５０は、あらかじめ保持された期待値５２１と同一の形式に出力データを整形する。
【００５８】
そして、整形された出力データとあらかじめ保持された期待値とが一致しているか否かが、比較部５２０によって判定される（Ｓ１６０）。
【００５９】
整形された出力データと期待値とが一致しているとき（Ｓ１６０Ｙｅｓ）、一致している旨の結果通知を結果通知部５３０に出力する。そして、結果通知部５３０は、キャッシュメモリの動作が正常である結果を出力する（Ｓ１７０）。
【００６０】
一方、整形された出力データと期待値とが一致していないとき（Ｓ１６０Ｎｏ）、一致していない経過情報の動作を含んだ結果通知を結果通知部５３０に出力する。そして、結果通知部５３０は、一致していない経過情報の動作を含んだ結果通知とともにキャッシュメモリの動作が異常である結果を出力する（Ｓ１８０）。
【００６１】
次に、図７および図８を参照して、キャッシュメモリ２００にデータを保持するときの検証動作について説明する。図７では、キャッシュメモリ２００にデータを保持する場合について説明し、図８では、キャッシュメモリ２００にデータを保持するときの経過情報を検証する場合について説明する。なお、キャッシュ制御部２１０には、検証アドレスのデータが保持されておらず、検証アドレスに対応するウェイごとのタグにいずれの情報も保持されていないものとする。
【００６２】
まず、図７を参照して、キャッシュメモリ２００にデータを保持する場合について説明する。図７に示すように、検証部５００から検証指示を取得したＣＰＵ１００は、キャッシュ制御部２１０に対してメインメモリ３００の検証アドレス（０ｘ１０００番地）のデータを読み込むように読み込み処理の実行指示を出力する。すると、キャッシュ制御部２１０は、メインメモリ３００の検証アドレスのデータがキャッシュメモリ２００に保持されていないため、メインメモリ３００から検証アドレスのデータを読み込み、読み込んだデータをキャッシュメモリ２００に保持する。
【００６３】
このとき、キャッシュ制御部２１０は、読み込み指示からデータを読み込むまでに段階的に行われる動作によって取得される経過情報をキャッシュ状態取得部４００に出力する。すなわち、キャッシュ制御部２１０は、検証アドレスに対応するウェイごとのタグを読み込むと、検証アドレスに対応するウェイごとのタグにいずれの情報も保持されていないため、ウェイ０およびウェイ１のタグ共‘０’を示すタグ情報２１１を取得して、キャッシュ状態取得部４００に出力する。また、キャッシュ制御部２１０は、検証アドレスがウェイごとのタグに含まれているか否かを判定すると、検証アドレスに対応するウェイごとのタグに検証アドレスが含まれていないため、ウェイ０およびウェイ１のタグ共キャッシュミスであることを示すウェイ情報２１２を取得して、キャッシュ状態取得部４００に出力する。そして、キャッシュ制御部２１０は、検証アドレスが含まれことになるタグのウェイ０を選択すると、ウェイ０を示すＬＲＵ２１３を取得して、キャッシュ状態取得部４００に出力する。さらに、キャッシュ制御部２１０は、メインメモリ３００から検証アドレス（０ｘ１０００番地）のデータ（‘Ａ’）を読み込み、読み込まれたデータ２１４を取得して、キャッシュ状態取得部４００に出力する。
【００６４】
そして、キャッシュ状態取得部４００は、キャッシュ制御部２１０から取得された各経過情報をまとめた出力データを期待値と同一の形式に整形して検証部５００に出力する。この出力データに含まれる各経過情報を、検証部５００が検証することになる。
【００６５】
次に、図８を参照して、キャッシュメモリ２００にデータを保持するときの経過情報を検証する場合について説明する。図８に示すように、検証部５００には、キャッシュ状態取得部４００から出力された出力データが取得されている。この出力データは、キャッシュ制御部２１０がキャッシュメモリ２００にデータを保持したとき段階的に行われる動作によって取得された各経過情報を、キャッシュ状態取得部４００がひとまとめに且つ期待値と同一の形式に出力したデータである。
【００６６】
検証部５００は、各経過情報を含んだ出力データとあらかじめ保持された一連の経過情報の期待値とを比較する。具体的には、検証部５００は、ウェイ０のタグがキャッシュミスまたはキャッシュヒットであるか否かを検証するために、期待値と出力データとの‘Ｗａｙ０＝’の経過情報を参照して、出力データの経過情報（Ｍｉｓｓ）が期待値と合致することを確認する。検証部５００は、ウェイ１のタグがそれぞれキャッシュミスまたはキャッシュヒットであるか否かを検証するために、期待値と出力データとの‘Ｗａｙ１＝’の経過情報を参照して、出力データの経過情報（Ｍｉｓｓ）が期待値と合致することを確認する。また、検証部５００は、検証アドレスが含まれことになるタグのウェイを検証するために、期待値と出力データとの‘ＬＲＵ＝’の経過情報を参照して、出力データの経過情報（Ｗａｙ０）が期待値と合致することを確認する。また、検証部５００は、ウェイ０のタグが正しいか否かを検証するために、期待値と出力データとの‘ＴＡＧ（Ｗａｙ０）＝’の経過情報を参照して、出力データの経過情報（０）が期待値と合致することを確認する。検証部５００は、ウェイ１のタグが正しいか否かを検証するために、期待値と出力データとの‘ＴＡＧ（Ｗａｙ１）＝’の経過情報を参照して、出力データの経過情報（０）が期待値と合致することを確認する。さらに、検証部５００は、読み込まれたデータが正しいか否かを検証するために、期待値と出力データとの‘Ｄａｔａ＝’の経過情報を参照して、出力データの経過情報（“Ａ”）が期待値と合致することを確認する。
【００６７】
このようにして、検証部５００は、データを読み込む際に段階的に行われる動作によって取得される経過情報を一度に検証することができるため、検証における正当性を効率的に確認することができる。また、検証部５００は、経過情報をひとまとめにした出力データをキャッシュ状態取得部４００によって期待値と同一の形式に整形されることにより、さらに検証効率の向上を図ることができる。
【００６８】
次に、図９および図１０を参照して、キャッシュメモリ２００にデータを保持した後に保持されたデータを検索するときの検証動作について説明する。図９では、キャッシュメモリ２００にデータを保持した後に保持されたデータを検索する場合について説明し、図１０では、キャッシュメモリ２００にデータを保持した後に保持されたデータを検索するときの経過情報を検証する場合について説明する。
【００６９】
まず、図９を参照して、キャッシュメモリ２００にデータを保持した後に保持されたデータを検索する場合について説明する。図９に示すように、検証部５００から検証指示を取得したＣＰＵ１００は、キャッシュ制御部２１０に対して検証アドレス（０ｘ１０００番地）のデータを読み込むように読み込み処理の実行指示を出力する。すると、キャッシュ制御部２１０は、メインメモリ３００の検証アドレスのデータがキャッシュメモリ２００に保持されているため、キャッシュメモリ２００から検証アドレスのデータを読み込む。
【００７０】
このとき、キャッシュ制御部２１０は、読み込み指示からデータを読み込むまでに段階的に行われる動作によって取得される経過情報をキャッシュ状態取得部４００に出力する。すなわち、キャッシュ制御部２１０は、検証アドレスに対応するウェイごとのタグを読み込むと、検証アドレスのデータがキャッシュメモリ２００に保持されているため、例えばウェイ０のタグに検証アドレスが含まれているとすると、ウェイ０のタグに‘１０００’を示すタグ情報２１１を取得して、キャッシュ状態取得部４００に出力する。また、キャッシュ制御部２１０は、検証アドレスがウェイごとのタグに含まれているか否かを判定すると、検証アドレスに対応するウェイ０のタグに検証アドレスを示すタグが含まれているため、ウェイ０のタグがキャッシュヒットであることおよびウェイ１のタグがキャッシュミスであることを示すウェイ情報２１２を取得して、キャッシュ状態取得部４００に出力する。そして、キャッシュ制御部２１０は、検証アドレスが含まれているタグのウェイ０を選択すると、ウェイ０を示すＬＲＵ２１３を取得して、キャッシュ状態取得部４００に出力する。さらに、キャッシュ制御部２１０は、キャッシュメモリ２００から検証アドレス（０ｘ１０００番地）のデータ（‘Ａ’）を読み込み、読み込まれたデータ２１４を取得して、キャッシュ状態取得部４００に出力する。
【００７１】
そして、キャッシュ状態取得部４００は、キャッシュ制御部２１０から取得された各経過情報をまとめた出力データを期待値と同一の形式に整形して検証部５００に出力する。この出力データに含まれる各経過情報を、検証部５００が検証することになる。
【００７２】
次に、図１０を参照して、キャッシュメモリ２００にデータを保持した後に保持されたデータを検索するときの経過情報を検証する場合について説明する。図１０に示すように、検証部５００には、キャッシュ状態取得部４００から出力された出力データが取得されている。この出力データは、キャッシュ制御部２１０がキャッシュメモリ２００にデータを保持した後保持されたデータを検索したとき段階的に行われる動作によって取得された各経過情報を、キャッシュ状態取得部４００がひとまとめに且つ期待値と同一の形式に出力したデータである。
【００７３】
検証部５００は、各経過情報を含んだ出力データとあらかじめ保持された一連の経過情報の期待値とを比較する。具体的には、検証部５００は、ウェイ０のタグがキャッシュミスまたはキャッシュヒットであるか否かを検証するために、期待値と出力データとの‘Ｗａｙ０＝’の経過情報を参照して、出力データの経過情報（Ｈｉｔ）が期待値と合致することを確認する。検証部５００は、ウェイ１のタグがそれぞれキャッシュミスまたはキャッシュヒットであるか否かを検証するために、期待値と出力データとの‘Ｗａｙ１＝’の経過情報を参照して、出力データの経過情報（Ｍｉｓｓ）が期待値と合致することを確認する。また、検証部５００は、検証アドレスが含まれるタグのウェイを検証するために、期待値と出力データとの‘ＬＲＵ＝’の経過情報を参照して、出力データの経過情報（Ｗａｙ０）が期待値と合致することを確認する。また、検証部５００は、ウェイ０のタグが正しいか否かを検証するために、期待値と出力データとの‘ＴＡＧ（Ｗａｙ０）＝’の経過情報を参照して、出力データの経過情報（１０００）が期待値と合致することを確認する。検証部５００は、ウェイ１のタグが正しいか否かを検証するために、期待値と出力データとの‘ＴＡＧ（Ｗａｙ１）＝’の経過情報を参照して、出力データの経過情報（０）が期待値と合致することを確認する。さらに、検証部５００は、読み込まれたデータが正しいか否かを検証するために、期待値と出力データとの‘Ｄａｔａ＝’の経過情報を参照して、出力データの経過情報（“Ａ”）が期待値と合致することを確認する。
【００７４】
このようにして、検証部５００は、データを読み込む際に段階的に行われる動作によって取得される経過情報を一度に検証することができるため、検証における正当性を効率的に確認することができる。また、検証部５００は、経過情報をひとまとめにした出力データをキャッシュ状態取得部４００によって期待値と同一の形式に整形されることにより、さらに検証効率の向上を図ることができる。
【００７５】
以上のように本実施例１によれば、キャッシュ論理検証装置は、メインメモリ３００の一部の内容の写しを保持するキャッシュメモリ２００に読み込み対象のデータが保持されているか否かを判断する段階的な処理の各段階における途中経過を取得するキャッシュ状態取得部４００と、キャッシュ状態取得部４００によって取得される各段階における途中経過と、段階的な処理の各段階におけるあらかじめ定められた期待値と、を比較する検証部５００と、を備える。
【００７６】
かかる構成によれば、キャッシュ論理検証装置は、キャッシュメモリ２００からデータを読み込む際に段階的な処理の各段階における途中経過を直接取得することができるため、各段階における途中経過の正当性を判別することによってどの段階が誤っているのかを知ることができ、キャッシュメモリ２００の論理検証を効率的に行うことができる。この結果、キャッシュ論理検証装置は、各段階の正当性を確実に検証できることとなり、検証品質を向上させることができる。また、キャッシュ論理検証装置が、キャッシュメモリからデータを読み込む際に段階的な処理の各段階における途中経過を一括して取得すれば、一括して取得された途中経過を一度に検証することができることになり、検証工数を削減することができる。
【実施例２】
【００７７】
ところで、上記の実施例１では、データを読み込む際に段階的に行われる動作によって取得される経過情報を取得するためにキャッシュ状態取得部４００がキャッシュ制御部２１０の外部に配置される場合を説明した。本発明はこれに限定されるものではなく、データを読み込む際に段階的に行われる動作によって取得される経過情報を取得するためにキャッシュ状態取得部４００がキャッシュ制御部２１０の内部に配置されても良い。
【００７８】
そこで、実施例２では、データを読み込む際に段階的に行われる動作によって取得される経過情報を取得するためにキャッシュ状態取得部４００がキャッシュ制御部２１０の内部に配置される場合を説明する。まず、図１１を用いて、本実施例２に係る情報処理装置の全体構成について説明する。なお、図１１において、図１と同じ部分には同じ符号を付し、詳しい説明を省略する。
【００７９】
図１１に示すように、情報処理装置は、ＣＰＵ１００と、キャッシュメモリ２００とメインメモリ３００と、検証部５００と、キャッシュ状態取得部６００と、を備える。
【００８０】
キャッシュ状態取得部６００は、キャッシュ制御部２１０の内部に配置され、キャッシュ制御部２１０がデータを読み込む際に段階的に行われる動作によって取得されるそれぞれの経過情報を直接取得し、検証部５００に対して出力する。具体的には、キャッシュ状態取得部６００は、キャッシュ制御部２１０によって段階的に行われる動作の順に出力されたタグ情報２１１、ウェイ情報２１２、ＬＲＵ２１３およびデータ２１４を取得する。また、キャッシュ状態取得部６００は、検証アドレスに対応するデータを読み込むまでの一連の経過情報が揃ったとき、一連の経過情報をあらかじめ保持された一連の経過情報の期待値と同一の形式に整形して、整形された出力データを検証部５００に対して出力する。なお、キャッシュ状態取得部４００は、経過情報の取得を、キャッシュ制御部２１０による制御と独立した論理によって実行して良いし、例えばＲＴＬ（Register Transfer Level）を用いて経過情報の取得をキャッシュ制御部２１０による制御と合成した論理によって実行しても良い。これにより、例えばキャッシュ制御部２１０をキャッシュメモリ２００とは異なる他の装置に流用するとき、キャッシュ状態取得部６００は、他の装置用に設計される必要がなくなり、他の装置の設計コストを削減することができる。
【００８１】
検証部５００は、キャッシュメモリ２００の論理検証を開始するために、キャッシュメモリ２００の検証指示をＣＰＵ１００に対して出力する。また、検証部５００は、検証指示によって読み込まれたデータをＣＰＵ１００から取得する。さらに、検証部５００は、キャッシュ状態取得部６００から出力データを取得する。そして、検証部６００は、取得された出力データと、出力データの期待値と、を比較することになる。
【００８２】
以上のように本実施例２によれば、キャッシュ論理検証装置は、メインメモリ３００の一部の内容の写しを保持するキャッシュメモリ２００に読み込み対象のデータが保持されているか否かを判断する段階的な処理の各段階における途中経過を取得するキャッシュ状態取得部６００と、キャッシュ状態取得部６００によって取得される各段階における途中経過と、段階的な処理の各段階におけるあらかじめ定められた期待値と、を比較する検証部５００と、を備える。そして、キャッシュ状態取得部６００は、キャッシュ制御部２１０の内部に設けられている。
【００８３】
かかる構成によれば、キャッシュ論理検証装置は、キャッシュメモリ２００からデータを読み込む際に段階的な処理の各段階における途中経過を直接取得することができるため、各段階における途中経過の正当性を判別することによってどの段階が誤っているのかを知ることができ、キャッシュメモリ２００の論理検証を効率的に行うことができる。この結果、キャッシュ論理検証装置は、各段階の正当性を確実に検証できることとなり、検証品質を向上させることができる。また、キャッシュ論理検証装置が、キャッシュメモリからデータを読み込む際に段階的な処理の各段階における途中経過を一括して取得すれば、一括して取得された途中経過を一度に検証することができることになり、検証工数を削減することができる。また、例えばキャッシュ制御部２１０をキャッシュメモリ２００とは異なる他の装置に流用するとき、キャッシュ状態取得部６００は、他の装置用に設計される必要がなくなり、他の装置の設計コストを削減することができる。
【００８４】
なお、キャッシュ論理検証装置のキャッシュ状態取得部４００、６００及び検証部５００の各処理機能は、その全部または任意の一部が、ＣＰＵ（Central Processing Unit）（またはＭＰＵ（Micro Processing Unit）、ＭＣＵ（Micro Controller Unit）などのマイクロ・コンピュータ）および当該ＣＰＵ（またはＭＰＵ、ＭＣＵなどのマイクロ・コンピュータ）にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されても良い。
【図面の簡単な説明】
【００８５】
【図１】本実施例１に係る情報処理装置の全体構成を示す機能ブロック図である。
【図２】本実施例１に係るキャッシュ状態取得部の構成を示す機能ブロック図である。
【図３】本実施例１に係る検証部の構成を示す機能ブロック図である。
【図４】本実施例１に係るキャッシュ状態取得の動作概要を示す図である。
【図５】本実施例１に係るキャッシュ状態取得の動作概要を示す図である。
【図６】本実施例１に係るキャッシュメモリ検証方法の処理を示すフローチャートである。
【図７】本実施例１に係るキャッシュメモリ検証の検証動作を示す図である。
【図８】本実施例１に係るキャッシュメモリ検証の検証動作を示す図である。
【図９】本実施例１に係るキャッシュメモリ検証の検証動作を示す図である。
【図１０】本実施例１に係るキャッシュメモリ検証の検証動作を示す図である。
【図１１】本実施例２に係る情報処理装置の全体構成を示す機能ブロック図である。
【図１２】キャッシュメモリを検証する従来の方法を示す図である。
【図１３】キャッシュメモリを検証する従来の方法を示す図である。
【図１４】キャッシュメモリを検証する従来の方法を示す図である。
【図１５】キャッシュメモリを検証する従来の方法を示す図である。
【符号の説明】
【００８６】
１００  ＣＰＵ
２００  キャッシュメモリ（対象装置）
２１０  キャッシュ制御部
２１１  タグ情報
２１２  ウェイ情報
２１３  ＬＲＵ
２１４  データ
３００  メインメモリ
４００  キャッシュ状態取得部
５００  検証部
【図１】
2010061473.tif 000003
【図２】
2010061473.tif 000004
【図３】
2010061473.tif 000005
【図４】
2010061473.tif 000006
【図５】
2010061473.tif 000007
【図６】
2010061473.tif 000008
【図７】
2010061473.tif 000009
【図８】
2010061473.tif 000010
【図９】
2010061473.tif 000011
【図１０】
2010061473.tif 000012
【図１１】
2010061473.tif 000013
【図１２】
2010061473.tif 000014
【図１３】
2010061473.tif 000015
【図１４】
2010061473.tif 000016
【図１５】
2010061473.tif 000017