(57)【要約】【課題】分岐ポイントを特定して分岐命令を他の命令で置き換える処理を行うことなく、容易に、かつ効率的に分岐予測回路の検証を可能とする情報処理装置の分岐予測回路の試験装置、情報処理装置の分岐予測回路の試験方法及び情報処理装置の分岐予測回路の試験プログラムを提供すること。【解決手段】分岐予測回路試験装置１のランダム命令生成部１１がランダム命令列を生成し、試験実行制御部１２が該命令列を被試験対象装置２に実行させる。該命令列の実行後、試験実行制御部１２がランダム命令生成部１１に指示して該命令列をシフトし、試験実行制御部１２が、被試験対象装置２に該シフトされた新たな命令列を実行させる。検証部１３が、命令列が実行される毎にログ情報を記憶し、該ログ情報と期待値記憶部１３２に記憶された期待値とを比較して、分岐予測回路２１の動作を検証する。【選択図】図１
2008225978.tif 000002
【特許請求の範囲】
【請求項１】
分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験装置であって、
分岐命令を含むランダムな命令列を生成する手段と、
上記ランダムな命令列を被試験対象装置に与えて実行させ、該ランダムな命令列の実行後、上記ランダムな命令列を所定の命令数分シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させる試験実行制御手段と、
上記被試験対象装置による上記ランダムな命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する検証手段とを備えた
ことを特徴とする情報処理装置の分岐予測回路の試験装置。
【請求項２】
上記試験実行制御手段は、更に、上記新たな命令列が実行された後に、該新たな命令列を上記シフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置に実行させる
ことを特徴とする請求項１に記載の情報処理装置の分岐予測回路の試験装置。
【請求項３】
上記試験実行制御手段は、上記命令列に含まれる分岐命令の分岐条件を規定するデータを、上記ランダムな命令列を実行する毎に変更する
ことを特徴とする請求項１又は請求項２に記載の情報処理装置の分岐予測回路の試験装置。
【請求項４】
上記検証手段は、
前記命令列の実行中にトラップが発生したことを契機として、該トラップ発生時のログ情報を生成するログ情報生成手段と、
前記命令列の実行後に、前記生成されたログ情報と予め記憶手段に記憶された期待値もしくは先の試験時に生成されたログ情報とを比較し、該比較結果に基づいて該命令列の実行結果を検証する比較手段とを備えた
ことを特徴とする請求項１，２，又は請求項３に記載の情報処理装置の分岐予測回路の試験装置。
【請求項５】
分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験方法であって、
分岐命令を含むランダムな命令列を生成し、
上記ランダムな命令列を被試験対象装置に与えて実行させ、該ランダムな命令列の実行後、上記ランダムな命令列を所定数シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させ、
上記被試験対象装置による上記ランダムな命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する
ことを特徴とする情報処理装置の分岐予測回路の試験方法。
【請求項６】
分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験プログラムであって、
コンピュータに、
分岐命令を含むランダムな命令列を生成する処理と、
上記ランダムな命令列を被試験対象装置に与えて実行させ、該ランダムな命令列の実行後、上記ランダムな命令列を所定数シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させる処理と、
上記被試験対象装置による上記ランダムな命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する処理とを実行させる
ことを特徴とする情報処理装置の分岐予測回路の試験プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の分岐予測回路の試験技術に関し、特に、分岐命令を含むランダムな命令列を被試験対象装置に実行させて、該ランダムな命令列の実行結果に基づき該被試験対象装置の分岐予測回路の動作を検証する情報処理装置の分岐予測回路の試験装置、情報処理装置の分岐予測回路の試験方法及び情報処理装置の分岐予測回路の試験プログラムに関する。
【背景技術】
【０００２】
従来、分岐予測回路を検証するためには、命令列に含まれる分岐命令箇所（分岐ポイント）を特定し、該分岐ポイントの分岐命令を他の命令に書き換えて該命令列を実行し、分岐予測が正しくキャンセルされることを検証する必要があった。ランダム命令列を使用したシステム試験では分岐命令箇所（分岐ポイント）を特定できないため、該ランダム命令列に含まれる分岐命令を書き換える一連の処理（以下、「ファントム」という）をランダム命令列生成時に埋め込んだ上で該ランダム命令列を実行し、該実行結果に基づいて分岐予測回路の検証を行っていた。
なお、分岐予測機能を検証する具体的技術として、下記の特許文献１に、ランダム命令列を生成し、該命令列内の分岐命令の分岐先をランダムに設定し、分岐命令で比較する条件を初期設定する命令と繰り返しループから抜け出すために比較値を変化させる命令とを上記命令列内に設定し、無条件分岐命令の時ループを抜け出す命令を設定することで、分岐予測機能について試験を行う情報処理装置試験方式に関して記載されている。
【特許文献１】特開平２−１１５９４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前述した、ランダム命令列に含まれる分岐命令を書き換えるファントムをランダム命令生成時に埋め込んで該命令を実行して分岐予測回路の検証を行う技術は、機能試験レベルと変わらないため、試験のランダム性が失われる。また、命令の書き換え作業に時間を要し、試験効率の低下に繋がる。
【０００４】
本発明は上記問題点を解決するためになされたものであって、分岐ポイントを特定して分岐命令を他の命令で置き換える処理を行うことなく、容易に、かつ効率的に分岐予測回路の検証を可能とする情報処理装置の分岐予測回路の試験装置、情報処理装置の分岐予測回路の試験方法及び情報処理装置の分岐予測回路の試験プログラムの提供を目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明は、次のようにして前記課題を解決する。
（１）分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験装置を設ける。上記情報処理装置における分岐予測回路の試験装置は、分岐命令を含むランダムな命令列を生成する手段と、上記ランダムな命令列を被試験対象装置に与えて実行させ、該ランダムな命令列の実行後、上記ランダムな命令列を所定の命令数分シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させる試験実行制御手段と、上記被試験対象装置による上記ランダムな命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する検証手段とを備える。
（２）上記試験実行制御手段は、更に、上記新たな命令列が実行された後に、該新たな命令列を上記シフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置に実行させる。
（３）上記試験実行制御手段は、上記命令列に含まれる分岐命令の分岐条件を規定するデータを、上記ランダムな命令列を実行する毎に変更する。
（４）上記検証手段は、前記命令列の実行中にトラップが発生したことを契機として、該トラップ発生時のログ情報を記憶するログ情報記憶手段と、
前記命令列の実行後に、前記ログ情報記憶手段に記憶されたログ情報と予め用意された期待値もしくは先の試験時に取得したログ情報とを比較し、該比較結果に基づいて該命令列の実行結果を検証する比較手段とを備える。
（５）分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験方法を実行する。上記情報処理装置における分岐予測回路の試験方法は、分岐命令を含むランダムな命令列を生成し、上記ランダムな命令列を被試験対象装置に与えて実行させ、該ランダムな命令列の実行後、上記ランダムな命令列を所定の命令数分シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させ、上記被試験対象装置による上記ランダムな命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する。
（６）分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験プログラムを設ける。上記情報処理装置における分岐予測回路の試験プログラムは、コンピュータに、分岐命令を含むランダムな命令列を生成する処理と、上記ランダムな命令列を被試験対象装置に与えて実行させ、該ランダムな命令列の実行後、上記ランダムな命令列を所定の命令数分シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させる処理と、上記被試験対象装置による上記ランダムな命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する処理とを実行させる。
【発明の効果】
【０００６】
本発明によれば、以下の効果を奏することができる。
（１）本発明は、分岐命令を含むランダムな命令列を生成して被試験対象装置に実行させ、該ランダムな命令列の実行後、該ランダムな命令列を所定の命令数分シフトして上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成し、該新たな命令列を被試験対象装置に再度実行させ、該実行結果に基づいて、被試験対象装置の分岐予測回路の動作を検証する。従って、本発明によれば、ランダムな命令列をシフトすることによって、該ランダムな命令列に含まれる分岐命令のアドレス位置が更新され、結果的に分岐命令の元のアドレス位置に他の命令を上書きしたことと同じ状態を作ることができる。その結果、分岐ポイントを特定して分岐命令を他の命令で置き換える処理を行う必要がなくなり、容易に、かつ効率的に被試験対象装置の分岐予測回路の検証をすることが可能となる。
（２）本発明は、上記シフトされた命令列が実行された後に、該新たな命令列をシフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置に実行させる。従って、本発明によれば、例えば、シフト前の状態に戻した命令列が実行された時のログ情報と、該シフト前の元の命令列が実行された時のログ情報とが一致するかを検証することによって、精度良く被試験対象装置の分岐予測回路の動作を検証することができる。
（３）本発明は、上記命令列に含まれる分岐命令の分岐条件を規定するデータを上記ランダムな命令列を実行する毎に変更した上で、被試験対象装置の分岐予測回路の動作を検証する。従って、本発明によれば、分岐条件を規定するデータを変更しつつ、同じ命令列を繰り返し実行することを通じて、被試験対象装置の分岐予測回路の動作を検証することができる。その結果、効率良く被試験対象装置の分岐予測回路の動作を検証することが可能となる。
（４）本発明は、命令列の実行中にトラップが発生したことを契機として、該トラップ発生時のログ情報を記憶し、上記命令列の実行後に、上記記憶されたログ情報と予め用意された期待値もしくは先の試験時に取得したログ情報とを比較し、該比較結果に基づいて該命令列の実行結果を検証する。従って、本発明によれば、被試験対象装置の分岐予測回路の動作が正常であるか否かを自動的に検証することが可能となる。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明のシステム構成の一例を示す図である。
分岐予測回路試験装置１は、被試験対象装置２が備える分岐予測回路２１の動作を検証する処理装置である。分岐予測回路試験装置１は、ランダム命令生成部１１、試験実行制御部１２、検証部１３を備える。
ランダム命令生成部１１は、分岐命令を含むランダムな命令列（ランダム命令列）を生成する。試験実行制御部１２は、生成されたランダム命令列を被試験対象装置２が備える命令実行部２２に与えて実行させる。また、試験実行制御部１２は、該ランダム命令列が実行された後、上記ランダム命令生成部１１に指示して、上記ランダム命令列を所定の命令数分シフトさせて、上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度命令実行部２２に実行させる。
【０００８】
本発明の一実施形態によれば、試験実行制御部１２は、更に、上記新たな命令列が実行された後に、該新たな命令列を上記シフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置２が備える命令実行部２２に実行させる。
また、本発明の一実施形態によれば、試験実行制御部１２は、上記命令列に含まれる分岐命令の分岐条件を規定するデータを、上記被試験対象装置２が備える命令実行部２２が上記ランダム命令列を実行する毎に変更する。
【０００９】
検証部１３は、被試験対象装置２による上記ランダム命令列の実行結果に基づいて、該被試験対象装置２が備える分岐予測回路２１の動作を検証する。
検証部１３は、チェックサム生成部１３１、期待値記憶部１３２、比較部１３３を備える。チェックサム生成部１３１は、上記ランダム命令列の実行中にトラップが発生したことを契機として、該トラップ発生時の各レジスタ、メモリの内容に基づいてチェックサムを生成し、生成されたチェックサムの値をログ情報として記憶する。チェックサムは、例えば、各レジスタ、メモリの内容を加算して圧縮した形式のデータである。チェックサム生成部１３１は、ハードトラップ又はソフトトラップが発生したことを契機として、又は、トラップの発生に関係なくランダム命令列の実行終了時に、上記各レジスタ、メモリの内容をログ情報として記憶するようにしてもよい。期待値記憶部１３２には、上記ログ情報との比較対象となる期待値が予め記憶される。比較部１３３は、上記ランダム命令列が実行された後に、上記チェックサム生成部１３１によって生成されたログ情報と上記期待値記憶部１３２に予め記憶された期待値もしくは先の試験時に生成されたログ情報とを比較し、該比較結果に基づいて該命令列の実行結果の検証（分岐予測回路２１の動作の検証）を行う。
【００１０】
なお、上述した分岐予測回路試験装置１及びその各部の機能は、ＣＰＵとその上で実行されるプログラムにより実現される。当該本発明を実現するプログラムは、コンピュータが読み取り可能な記録媒体、例えば半導体メモリ、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ等に格納することができ、これらの記録媒体に記録して提供され、又は、通信インタフェースを介してネットワークを利用した送受信により提供される。
【００１１】
被試験対象装置２は、分岐予測回路試験装置１による分岐予測回路の検証処理の対象となる情報処理装置である。被試験対象装置２は、命令実行部２２と分岐予測回路２１とを備える。
分岐予測回路２１は、分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を分岐予測管理テーブル２１１に記憶する。また、分岐予測回路２１は、分岐命令の実行時に分岐予測管理テーブル２１１を参照して、該分岐予測管理テーブル２１１に該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該該分岐予測管理テーブル２１１に登録された分岐先アドレスの命令を実行対象として命令実行部２２に実行させる（分岐予測処理を行う）。命令実行部２２は、命令格納域１００に格納された命令をフェッチし、データ格納域１０１に格納されたデータをロードして、該命令を実行する。
【００１２】
図２は、分岐命令と該分岐命令の分岐条件の一例を示す図である。
図２に示すように、例えば、分岐命令ＢＲＮＺは、対象レジスタの値が０でなかったら分岐するという分岐条件を有し、分岐命令ＢＲＺは、対象レジスタの値が０であれば分岐するという分岐条件を有し、分岐命令ＢＲＧＺは、対象レジスタの値が０より大きければ分岐するという分岐条件を有し、分岐命令ＢＲＬＺは、対象レジスタの値が０より小さければ分岐するという分岐条件を有する。
【００１３】
図３は、被試験対象装置が備える分岐予測回路の分岐予測処理を説明する図である。
図３に示すように、分岐命令Ｘが命令格納域１００のＡ番地に格納され、該分岐命令Ｘの分岐先アドレスであるＢ番地に命令Ｚが格納されている。分岐予測回路２１による分岐予測処理は、以下の［１］〜［４］までの処理ステップに従って行われる。
［１］：命令実行部２２が、命令格納域１００に格納されている命令列を実行する。
［２］：分岐予測回路２１が、分岐命令ＸのアドレスであるＡ番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ番地とを分岐予測管理テーブル２１１に登録する。図３中に示す分岐予測管理テーブル２１１において、分岐アドレスというデータ項目は分岐命令のアドレスを示し、分岐先アドレスというデータ項目は分岐命令により分岐する分岐先アドレスを示す。
［３］：命令実行部２２が、再度命令列を実行する。
［４］：分岐予測回路２１が、分岐予測管理テーブル２１１を参照して、Ａ番地を分岐命令Ｘと判断し、予め分岐先アドレスであるＢ番地に格納された命令Ｚを実行する。
【００１４】
上記のように、分岐予測回路２１は、一度実行された分岐命令のアドレスと該分岐命令により分岐する分岐アドレスとの対応情報を分岐予測管理テーブル２１１に登録し、次回同じアドレスの分岐命令を実行する際に、上述した分岐予測処理を行い、予め分岐先アドレスに格納された命令を実行することによって、処理の高速化を図る。
【００１５】
以下に、図４乃至図６を参照して、本発明の第１の実施の形態について説明する。本発明の第１の実施の形態では、分岐命令を含むランダム命令列を生成して実行した後、該ランダム命令列を所定の命令数分シフトして再度実行し、該ランダム命令列の実行結果に基づき、分岐予測回路の動作を検証する。
【００１６】
図４は、本発明の第１の実施の形態に係る分岐予測回路の試験処理フローの一例を示す図である。まず、分岐予測回路試験装置１のランダム命令生成部１１が、図５（Ａ）に示すような、分岐命令Ｘを含むランダム命令列を生成する（ステップＳ１）。次に、試験実行制御部１２が、生成されたランダム命令列を被試験対象装置２の命令実行部２２に実行させる（ステップＳ２）。ステップＳ２の処理によって、ランダム命令列が実行されると、分岐予測回路２１が、図６（Ａ）に示すように、分岐命令ＸのアドレスであるＡ番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ番地とを分岐予測管理テーブル２１１に登録する。
【００１７】
次に、試験実行制御部１２が、上記ランダム命令列の実行後、ランダム命令生成部１１に指示して、該ランダム命令列の先頭にｎｏｐ命令を一つ追加させることによって該ランダム命令列をシフトする（ステップＳ３）。ｎｏｐ命令とは、命令としては存在するが動作を伴わない命令である。ステップＳ３の処理によって、例えば、図５（Ｂ）に示すような、ランダム命令列が下方向（アドレスが増加する方向）にシフトされた新たなランダム命令列が生成される。図５（Ｂ）に示すランダム命令列を参照すると、Ａ番地に命令Ｃが格納され、Ａ’番地に分岐命令Ｘが格納され、Ｂ’番地に分岐命令Ｘの分岐先の命令である命令Ｙが格納されている。
【００１８】
次に、試験実行制御部１２が、命令実行部２２に上記新たなランダム命令列を再度実行させる（ステップＳ４）。ステップＳ４における新たなランダム命令列の実行時に、分岐予測回路２１は、一旦、図６（Ａ）に示す分岐予測管理テーブル２１１中に登録されたＡ番地を検索する。しかし、図５（Ｂ）に示すように、Ａ番地には命令Ｃが分岐命令Ｘに置き換わって格納されているため、分岐予測回路２１による分岐予測処理はキャンセルされて命令Ｃが実行される。また、ステップＳ４の処理によって新たなランダム命令列が実行されると、分岐予測回路２１が、図６（Ｂ）に示すように、上記新たなランダム命令列に含まれる分岐命令ＸのアドレスであるＡ’番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ’番地とを分岐予測管理テーブル２１１に登録する。
【００１９】
次に、試験実行制御部１２が、ランダム命令生成部１１に指示して、ステップＳ４において実行されたランダム命令列にｎｏｐ命令を一つ追加させることによって該ランダム命令列をシフトする（ステップＳ５）。ステップＳ５の処理によって、例えば、図５（Ｃ）に示すような、ステップＳ４において実行されたランダム命令列が下方向にシフトされた新たなランダム命令列が生成される。図５（Ｃ）に示すランダム命令列を参照すると、Ａ’番地に命令Ｃが格納され、Ａ”番地に分岐命令Ｘが格納され、Ｂ”番地に分岐命令Ｘの分岐先の命令である命令Ｙが格納されている。
【００２０】
次に、試験実行制御部１２が、命令実行部２２に上記ステップＳ５において生成された新たなランダム命令列を再度実行させる（ステップＳ６）。該新たなランダム命令列の実行時に、分岐予測回路２１は、一旦、図６（Ｂ）に示す分岐予測管理テーブル２１１中に登録されたＡ’番地を検索する。しかし、図５（Ｃ）に示すように、Ａ’番地には命令Ｃが分岐命令Ｘに置き換わって格納されているため、分岐予測回路２１による分岐予測処理はキャンセルされて命令Ｃが実行される。また、ステップＳ６の処理によって新たなランダム命令列が実行されると、分岐予測回路２１が、図６（Ｃ）に示すように、上記新たなランダム命令列に含まれる分岐命令ＸのアドレスであるＡ”番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ”番地とを分岐予測管理テーブル２１１に登録する。  上述したランダム命令列のシフト処理（ステップＳ３、ステップＳ５）とシフトされた命令列の実行処理（ステップＳ４、ステップＳ６）と同様の処理を、ランダム命令列がＮ回シフトされるまで繰り返す。
【００２１】
分岐予測回路試験装置１の検証部１３は、例えば、上述した図４に示す処理フローに従ってランダム命令列が実行される毎に、該命令列の実行終了時の各レジスタ、メモリの内容をログ情報として記憶し、該ログ情報と期待値記憶部１３２に記憶された期待値とを比較し、該比較結果に基づいて、分岐予測処理がキャンセルされたかの検証を行う。
【００２２】
以下に、図７乃至図９を参照して、本発明の第２の実施の形態について説明する。本発明の第２の実施の形態では、分岐命令を含むランダム命令列を生成して実行し、該ランダム命令列を所定の命令数分シフトして実行した後、該実行された命令列をシフト前の元の命令列の状態に戻して再度実行する。
【００２３】
図７は、本発明の第２の実施の形態に係る分岐予測回路の試験処理フローの一例を示す図である。まず、分岐予測回路試験装置１のランダム命令生成部１１が、図８（Ａ）に示すような、分岐命令Ｘを含むランダム命令列を生成する（ステップＳ１１）。次に、試験実行制御部１２が、生成されたランダム命令列を被試験対象装置２の命令実行部２２に実行させる（ステップＳ１２）。ステップＳ１２の処理によって、ランダム命令列が実行されると、分岐予測回路２１が、図９（Ａ）に示すように、分岐命令ＸのアドレスであるＡ番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ番地とを分岐予測管理テーブル２１１に登録する。
【００２４】
次に、試験実行制御部１２が、上記ランダム命令列の実行後、ランダム命令生成部１１に指示して、該ランダム命令列の先頭にｎｏｐ命令を一つ追加させることによって該ランダム命令列をシフトする（ステップＳ１３）。ステップＳ１３の処理によって、例えば、図８（Ｂ）に示すような、ランダム命令列が下方向（アドレスが増加する方向）にシフトされた新たなランダム命令列が生成される。図８（Ｂ）に示すランダム命令列を参照すると、Ａ番地に命令Ｃが格納され、Ａ’番地に分岐命令Ｘが格納され、Ｂ’番地に分岐命令Ｘの分岐先の命令である命令Ｙが格納されている。
【００２５】
次に、試験実行制御部１２が、命令実行部２２に上記新たなランダム命令列を再度実行させる（ステップＳ１４）。ステップＳ１４における新たなランダム命令列の実行時に、分岐予測回路２１は、一旦、図９（Ａ）に示す分岐予測管理テーブル２１１中に登録されたＡ番地を検索する。しかし、図８（Ｂ）に示すように、Ａ番地には命令Ｃが分岐命令Ｘに置き換わって格納されているため、分岐予測回路２１による分岐予測処理はキャンセルされて命令Ｃが実行される。また、ステップＳ１４の処理によって新たなランダム命令列が実行されると、分岐予測回路２１が、図９（Ｂ）に示すように、上記新たなランダム命令列に含まれる分岐命令ＸのアドレスであるＡ’番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ’番地とを分岐予測管理テーブル２１１に登録する。
【００２６】
次に、試験実行制御部１２が、ランダム命令生成部１１に指示して、ステップＳ１４において実行されたランダム命令列からｎｏｐ命令を一つ削除させることによって、該ランダム命令列を上方向にシフトする（ステップＳ１５）。ステップＳ１５の処理によって、例えば、図８（Ｃ）に示すような、ステップＳ１２において実行された命令列（図８（Ａ）に示す命令列）と同じ状態の命令列が生成される。すなわち、図８（Ｂ）に示す命令列がシフト前の元の状態に戻る。図８（Ｃ）に示すランダム命令列を参照すると、Ａ番地に分岐命令Ｘが格納され、Ｂ番地に分岐命令Ｘの分岐先の命令である命令Ｙが格納されている。
【００２７】
次に、試験実行制御部１２が、命令実行部２２に上記ステップＳ１５の処理によって元の状態に戻ったランダム命令列を再度実行させる（ステップＳ１６）。図８（Ｃ）に示すように、Ａ番地には分岐命令Ｘが格納されているため、該分岐命令Ｘが実行される。ステップＳ１６の処理によってランダム命令列が実行されると、分岐予測回路２１が、図９（Ｃ）に示すように、該実行されたランダム命令列に含まれる分岐命令ＸのアドレスであるＡ番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ番地とを分岐予測管理テーブル２１１に登録する。
【００２８】
分岐予測回路試験装置１の検証部１３は、例えば、上述した図７に示す処理フローに従ってランダム命令列が実行される毎に、該命令列の実行終了時の各レジスタ、メモリの内容をログ情報として記憶する。そして、検証部１３は、例えば、ランダム命令列が下方向にシフトされて実行された時のログ情報と期待値記憶部１３２に記憶された期待値とを比較し、該比較結果に基づいて分岐予測処理がキャンセルされたかを検証する。また、検証部１３は、例えば、上記下方向にシフトされて実行されたランダム命令列がシフト前の元の命令列の状態に戻されて実行された時のログ情報と、該シフト前の元の命令列が実行された時のログ情報とが一致するかを判断し、該判断結果に基づいて、分岐予測回路２１の動作を検証する。
【００２９】
次に、図１０乃至図１２を参照して、本発明の第３の実施の形態について説明する。本発明の第３の実施の形態では、ランダム命令列に含まれる分岐命令の分岐条件を規定するデータを、該ランダム命令列を実行する毎に変更する。
【００３０】
図１０は、本発明の第３の実施の形態に係る分岐予測回路の試験処理フローの一例を示す図である。まず、分岐予測回路試験装置３のランダム命令生成部１１が、図１１（Ａ）に示すような、分岐命令Ｘを含むランダム命令列を生成する（ステップＳ２１）。該生成された図１０（Ａ）に示す命令列を参照すると、命令格納域１００のＡ番地に分岐命令Ｘが格納され、Ａ番地より前のアドレスであるＡ’番地に命令Ｃが格納されている。命令Ｃと分岐命令Ｘの処理フローを示す図１２を参照すると、命令Ｃは、図１１（Ａ）中のデータ格納域１０１のＣ番地に格納されたデータをロード（ｌｏａｄ）する命令であり、分岐命令Ｘは、命令Ｃがロードしたデータの値が０である場合に分岐先をＢ番地とし、命令Ｃがロードしたデータの値が０でない場合に分岐先をＡ＋１番地とする分岐命令である。
【００３１】
次に、試験実行制御部１２が、生成されたランダム命令列を被試験対象装置２の命令実行部２２に実行させる（ステップＳ２２）。ここで、図１１（Ａ）中のデータ格納域１０１のＣ番地には値が０であるデータＡが格納されているため、命令Ｃがロードするデータの値は０である。従って、分岐命令Ｘが実行されると、前述した図１２に示す処理フローに従って、Ｂ番地へ分岐する。分岐予測回路２１は、分岐命令ＸのアドレスであるＡ番地と該分岐命令Ｘにより分岐する分岐先アドレスであるＢ番地とを分岐予測管理テーブル２１１に登録する。
【００３２】
次に、試験実行制御部１２が、分岐命令Ｘの分岐条件を規定するデータである、データ格納域１０１のＣ番地のデータを変更する（ステップＳ２３）。例えば、図１１（Ｂ）中に示すように、データＡに替えて、値が１０であるデータＷがデータ格納域１０１のＣ番地に格納される。そして、試験実行制御部１２が、命令実行部２２に上記ステップＳ２２において実行されたランダム命令列を再度実行させる（ステップＳ２４）。該ランダム命令列に含まれる分岐命令Ｘの実行時には、分岐命令Ｘの分岐条件を規定する上記Ｃ番地のデータの値が１０に変更されているため、前述した図１２に示す処理フローに従って、Ａ＋１番地へ分岐する。分岐命令Ｘの分岐方向がＢ番地からＡ＋１番地に変更されるため、分岐予測回路２１による分岐予測処理がキャンセルされる。
【００３３】
分岐予測回路試験装置１の検証部１３は、例えば、上述した図１０に示す処理フローに従ってランダム命令列が実行される毎に、該命令列の実行終了時の各レジスタ、メモリの内容をログ情報として記憶し、該ログ情報と期待値記憶部１３２に記憶された期待値とを比較し、該比較結果に基づいて、分岐予測処理がキャンセルされたかを検証する。
【００３４】
次に、図１３を参照して、本発明の第４の実施の形態について説明する。本発明の第４の実施の形態では、命令列の実行中にトラップが発生したことを契機として、該トラップ発生時のログ情報を生成し、該命令列の実行後に、上記生成されたログ情報と予め記憶手段に記憶された期待値もしくは先の試験時に生成されたログ情報とを比較し、該比較結果に基づいて該命令列の実行結果を検証する。
【００３５】
本発明の第４の実施の形態では、ランダム命令生成部１１が、ランダム命令列を生成する際に、図１３中に示すように、ランダム命令列中の所定の命令数毎（例えば、１０２４命令毎）にソフトトラップを設定する。そして、検証部１３のチェックサム生成部１３１が、上記ランダム命令列の実行中にハードトラップ又は上記ソフトトラップが発生したことを契機として、該トラップ発生時の各レジスタ、メモリの内容をログ情報として記憶する。チェックサム生成部１３１が、トラップが発生する毎に、各レジスタ、メモリの内容に基づいて、例えば８バイトのチェックサムを生成し、該チェックサムの値を図１３中に示すログ情報として記憶するようにしてもよい。また、チェックサム生成部１３１が、最終トラップが発生した時に、上記トラップが発生する毎に作成された全てのチェックサムを統合して、図１３中に示すトータルのチェックサム（トータルchecksum２００）の値を求め、該トータルchecksum２００の値をログ情報として記憶するようにしてもよい。
【００３６】
上記ランダム命令列の実行後、検証部１３の比較部１３３が、上記記憶されたログ情報と予め期待値記憶部１３２に記憶された期待値とを比較し、該比較結果に基づいて、上記ランダム命令列の実行結果を検証する。例えば、比較部１３３は、図１３中に示すトータルchecksum２００と期待値２０１とを比較して、ランダム命令列の実行結果を検証する。
【００３７】
本発明の一実施形態によれば、各々のトラップに対応付けられた複数の期待値を予め期待値記憶部１３２に記憶しておき、比較部１３３が、トラップが発生した時にチェックサム生成部１３１によって生成されたチェックサムの値と、上記期待値記憶部１３２に記憶された複数の期待値のうちの該トラップに対応付けられた期待値とを比較するようにしてもよい。
また、本発明の一実施形態によれば、命令列実行部２１が、同じ命令列を繰り返し実行し、比較部１３３が、ある命令列の実行後に生成されたログ情報と該命令列の過去の実行時に生成されたログ情報とを比較し、該比較結果に基づいて該命令列の実行結果を検証するようにしてもよい。
【００３８】
以下に図１４乃至図１６を参照して、本発明の実施例について説明する。
図１４は本発明の実施例に係る期待値記憶部のデータ構成例を示す図である。この例では、期待値記憶部１３２は、データ、シフト、期待値といったデータ項目を有する。データには、実行対象となる命令列に含まれる分岐命令の分岐条件を規定するデータの更新回数が設定される。シフトには、命令列のシフト回数が設定される。期待値には、上記データの更新回数と命令列のシフト回数とに対応付けられた期待値が設定される。
【００３９】
図１５は、データ格納域に格納されているデータの更新を示す図である。分岐予測回路試験装置１の試験実行制御部１２は、Ｘのポインタによって、図１５に示すような、ランダムデータに含まれる各データを指定して、実行対象となる命令列に含まれる分岐命令の分岐条件を規定するアドレスに該指定された各データを設定する。Ｘは、上記分岐命令の分岐条件を規定するアドレスを示す変数である。ランダムデータは、複数のランダムなデータからなるデータである。試験実行制御部１２は、Ｘのポインタによって指定するデータを順次変更することによって、分岐命令の分岐条件を規定するデータを更新する。。
【００４０】
図１６は、本発明の実施例に係る情報処理装置の分岐予測回路の試験処理フローを示す図である。まず、ランダム命令生成部１１がランダム命令列を生成し、試験実行制御部１２が図１５中に示すようなランダムデータを生成する（ステップＳ３１）。次に、試験実行制御部１２がＸのポインタでランダムデータの先頭のデータを指定する（ステップＳ３２）。試験実行制御部１２が、データ域を初期化する（ステップＳ３３）。データ域は、ランダムな命令を実行する際のメモリ上の作業領域である。
そして、命令列実行部３１が、ランダム命令列を実行する（ステップＳ３３）。該ランダム命令列の実行中にトラップが発生すると、チェックサム生成部１３１がチェックサムを生成する（ステップＳ３５）。
【００４１】
次に、比較部１３３が、上記ステップＳ３５において生成されたチェックサムと前述した図１４に示す期待値記憶部１３２に予め記憶されている期待値とを比較する（ステップＳ３６）。試験実行制御部１２が、ランダム命令列を下方向にＮ回シフトして実行したかを判断する（ステップＳ３７）。試験実行制御部１２が、ランダム命令列を下方向にＮ回シフトして実行していないと判断した場合、試験実行制御部１２は、ランダム命令生成部１１に指示して、ランダム命令列の先頭にｎｏｐ命令を一つ追加させることによって該ランダム命令列を１命令分下方向にシフトし（ステップＳ３８）、ステップＳ３３に戻る。
【００４２】
試験実行制御部１２が、ランダム命令列を下方向にＮ回シフトして実行したと判断した場合、試験実行制御部１２が、データ格納域１０１を初期化し（ステップＳ３９）、命令実行部２２が、ランダム命令列を実行する（ステップＳ４０）。該ランダム命令列の実行中にトラップが発生すると、チェックサム生成部１３１がチェックサムを生成する（ステップＳ４１）。
次に、比較部１３３が、上記ステップＳ４１において生成されたチェックサムと図１４に示す期待値記憶部１３２に予め記憶されている期待値とを比較する（ステップＳ４２）。試験実行制御部１２が、ランダム命令列を上方向にＮ回シフトして実行したかを判断する（ステップＳ４３）。試験実行制御部１２が、ランダム命令列を上方向にＮ回シフトして実行していないと判断した場合、試験実行制御部１２は、ランダム命令生成部１１に指示して、ランダム命令列のｎｏｐ命令を一つ削除させることによって該ランダム命令列を１命令分上方向にシフトし（ステップＳ４４）、ステップＳ３９に戻る。
【００４３】
試験実行制御部１２が、ランダム命令列を上方向にＮ回シフトして実行したと判断した場合、試験実行制御部１２は、ランダム命令列に含まれる分岐命令の分岐条件を規定するデータをＭ回更新したかを判断する（ステップＳ４５）。試験実行制御部１２が、ランダム命令列に含まれる分岐命令の分岐条件を規定するデータをＭ回更新したと判断した場合は、処理を終了する。
試験実行制御部１２が、ランダム命令列に含まれる分岐命令の分岐条件を規定するデータをＭ回更新していないと判断した場合は、試験実行制御部１２は、Ｘのポインタを更新して（Ｘのポインタの指定によって他のデータを分岐命令の分岐条件を規定するアドレスに設定して）、ステップＳ３３に戻る。
【００４４】
以上から把握できるように、本発明の実施形態の特徴を述べると以下の通りである。
（付記１）分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験装置であって、
分岐命令を含むランダム命令列を生成する手段と、
上記ランダム命令列を被試験対象装置に与えて実行させ、該ランダム命令列の実行後、上記ランダム命令列を所定の命令数分シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させる試験実行制御手段と、
上記被試験対象装置による上記ランダム命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する検証手段とを備えた
ことを特徴とする情報処理装置の分岐予測回路の試験装置。
【００４５】
（付記２）上記試験実行制御手段は、更に、上記新たな命令列が実行された後に、該新たな命令列を上記シフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置に実行させる
ことを特徴とする付記１に記載の情報処理装置の分岐予測回路の試験装置。
【００４６】
（付記３）上記試験実行制御手段は、上記命令列に含まれる分岐命令の分岐条件を規定するデータを、上記ランダム命令列を実行する毎に変更する
ことを特徴とする付記１又は付記２に記載の情報処理装置の分岐予測回路の試験装置。
【００４７】
（付記４）上記検証手段は、
前記命令列の実行中にトラップが発生したことを契機として、該トラップ発生時のログ情報を生成するログ情報生成手段と、
前記命令列の実行後に、前記生成されたログ情報と予め記憶手段に記憶された期待値もしくは先の試験時に生成されたログ情報とを比較し、該比較結果に基づいて該命令列の実行結果を検証する比較手段とを備えた
ことを特徴とする付記１，２，又は付記３に記載の情報処理装置の分岐予測回路の試験装置。
【００４８】
（付記５）分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験方法であって、
分岐命令を含むランダム命令列を生成し、
上記ランダム命令列を被試験対象装置に与えて実行させ、該ランダム命令列の実行後、上記ランダム命令列を所定数シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させ、
上記被試験対象装置による上記ランダム命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する
ことを特徴とする情報処理装置の分岐予測回路の試験方法。
【００４９】
（付記６）上記新たな命令列が実行された後に、該新たな命令列を上記シフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置に実行させる
ことを特徴とする付記５に記載の情報処理装置の分岐予測回路の試験方法。
【００５０】
（付記７）上記命令列に含まれる分岐命令の分岐条件を規定するデータを、上記ランダム命令列を実行する毎に変更する
ことを特徴とする付記５又は付記６に記載の情報処理装置の分岐予測回路の試験方法。
【００５１】
（付記８）分岐命令のアドレスと該分岐命令により分岐する分岐先アドレスとの対応情報を記憶手段に記憶し、分岐命令を実行する際、上記記憶手段を参照し、該記憶手段に当該分岐命令のアドレスが登録されているとき、該分岐命令を実行することなく、該記憶手段に登録された分岐先アドレスの命令を実行対象とする分岐予測回路を有する情報処理装置における分岐予測回路の試験プログラムであって、
コンピュータに、
分岐命令を含むランダム命令列を生成する処理と、
上記ランダム命令列を被試験対象装置に与えて実行させ、該ランダム命令列の実行後、上記ランダム命令列を所定数シフトさせて上記実行された命令列に含まれる分岐命令のアドレス位置が更新された新たな命令列を生成させ、該新たな命令列を再度実行させる処理と、
上記被試験対象装置による上記ランダム命令列の実行結果に基づき上記被試験対象装置の分岐予測回路の動作を検証する処理とを実行させる
ことを特徴とする情報処理装置の分岐予測回路の試験プログラム。
【００５２】
（付記９）新たな命令列を再度実行させる処理は、更に、上記新たな命令列が実行された後に、該新たな命令列を上記シフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置に実行させる
ことを特徴とする付記８に記載の情報処理装置の分岐予測回路の試験プログラム。
【００５３】
（付記１０）新たな命令列を再度実行させる処理は、上記命令列に含まれる分岐命令の分岐条件を規定するデータを、上記ランダム命令列を実行する毎に変更する
ことを特徴とする付記８又は付記９に記載の情報処理装置の分岐予測回路の試験プログラム。
【産業上の利用可能性】
【００５４】
以上、説明したように、本発明によれば、ランダム命令列をシフトすることによって、該ランダム命令列に含まれる分岐命令のアドレス位置が更新され、結果的に分岐命令の元のアドレス位置に他の命令を上書きしたことと同じ状態を作ることができる。その結果、分岐ポイントを特定して分岐命令を他の命令で置き換える処理を行う必要がなくなり、容易に、かつ効率的に被試験対象装置の分岐予測回路の検証をすることが可能となる。また、本発明は、上記シフトされた命令列が実行された後に、該新たな命令列をシフト前の状態に戻し、シフト前の状態に戻した該命令列を被試験対象装置に実行させる。従って、本発明によれば、例えば、シフト前の状態に戻した命令列が実行された時のログ情報と、該元の命令列が実行された時のログ情報とが一致するかを検証することによって、精度良く被試験対象装置の分岐予測回路の動作を検証することができる。
【００５５】
また、本発明によれば、分岐条件を規定するデータを変更した上で同じ命令列を繰り返し実行することを通じて、被試験対象装置の分岐予測回路の動作を検証することができる。その結果、効率良く被試験対象装置の分岐予測回路の動作を検証することが可能となる。
また、本発明は、命令列の実行中にトラップが発生したことを契機として、該トラップ発生時のログ情報を記憶し、上記命令列の実行後に、上記記憶されたログ情報と予め用意された期待値もしくは先の試験時に取得したログ情報とを比較し、該比較結果に基づいて該命令列の実行結果を検証する。従って、本発明によれば、被試験対象装置の分岐予測回路の動作が正常であるか否かを自動的に検証することが可能となる。
【図面の簡単な説明】
【００５６】
【図１】本発明のシステム構成の一例を示す図である。
【図２】分岐命令と該分岐命令の分岐条件の一例を示す図である。
【図３】被試験対象装置が備える分岐予測回路の動作処理を説明する図である。
【図４】本発明の第１の実施の形態に係る分岐予測回路の試験処理フローの一例を示す図である。
【図５】ランダム命令列を示す図（１）である。
【図６】分岐予測管理テーブルに登録される分岐命令のアドレスと分岐先アドレスの例を示す図（１）である。
【図７】本発明の第２の実施の形態に係る分岐予測回路の試験処理フローの一例を示す図である。
【図８】ランダム命令列を示す図（２）である。
【図９】分岐予測管理テーブルに登録される分岐命令のアドレスと分岐先アドレスの例を示す図（２）である。
【図１０】本発明の第３の実施の形態に係る分岐予測回路の試験処理フローの一例を示す図である。
【図１１】ランダム命令列を示す図（３）である。
【図１２】命令Ｃと分岐命令Ｘの処理フローを示す図
【図１３】本発明の第４の実施の形態を説明する図である。
【図１４】本発明の実施例に係る期待値記憶部のデータ構成例を示す図である。
【図１５】データ格納域に格納されているデータの更新を示す図である。
【図１６】本発明の実施例に係る情報処理装置の分岐予測回路の試験処理フローを示す図である。
【図１７】従来の分岐予測回路の試験方法を示す図である。
【符号の説明】
【００５７】
１  分岐予測回路試験装置
１１  ランダム命令生成部
１２  試験実行制御部
１３  検証部
２１  分岐予測回路
２２  命令実行部
１００  命令格納域
１０１  データ格納域
１３１  チェックサム生成部
１３２  期待値記憶部
１３３  比較部
２００  トータルchecksum
２０１  期待値
２１１  分岐予測管理テーブル
【図１】
2008225978.tif 000003
【図２】
2008225978.tif 000004
【図３】
2008225978.tif 000005
【図４】
2008225978.tif 000006
【図５】
2008225978.tif 000007
【図６】
2008225978.tif 000008
【図７】
2008225978.tif 000009
【図８】
2008225978.tif 000010
【図９】
2008225978.tif 000011
【図１０】
2008225978.tif 000012
【図１１】
2008225978.tif 000013
【図１２】
2008225978.tif 000014
【図１３】
2008225978.tif 000015
【図１４】
2008225978.tif 000016
【図１５】
2008225978.tif 000017
【図１６】
2008225978.tif 000018
【図１７】
2008225978.tif 000019