(57)【要約】【課題】  条件付き分岐命令での未実行側の命令列の生成を改めてし直している。また、分岐命令実行前の命令列でのレジスタ、メモリと未実行側の命令列でのレジスタ、メモリの競合を意識した生成ができていない。更に、未実行側の命令列中での条件付き分岐命令での分岐先の命令列生成ができていない。【解決手段】  条件付き分岐命令を生成した後、未実行側の命令列の生成を条件付き分岐命令以前に生成した実行命令列を選択し、見実行側の命令列として配置する。更に、配置した命令列中の条件付き分岐命令を探索し、見出したならば、分岐先の未実行命令列も上記と同様に選択し配置することで未実行側の命令列のレジスタ、メモリと条件付き分岐命令以前の命令列のレジスタ、メモリとの競合が容易に発生させることができる。【選択図】  図３
2005135123.tif 000002
【特許請求の範囲】
【請求項１】
乱数データを入力として検証命令を生成し、該検証命令の実行結果の期待値をシミュレーションにより求めて、上記検証命令を複数ストリームを有するパイプライン制御の被検証マイクロプロセッサに実行させ、実行結果と上記期待値とを比較するマイクロプロセッサの検証方法において、乱数データを入力として検証命令を生成する際に、条件付き分岐命令を検証命令として生成した場合、分岐成功では分岐不成功側に、分岐不成功では分岐成功がわに各々未実行領域に条件付き分岐命令生成以前の検証命令列から選択し、未検証命令実行領域に設定する。また、分岐不成功では、設定した未実行検証命令列の中に条件付き分岐命令があれば、分岐先に上記選択命令を設定する。これにより、条件付き分岐命令以前の検証命令列のレジスタ、メモリと未実行検証命令列の間で競合を発生させる有意な検証命令列を効率よく生成し、条件付き分岐命令に関わるパイプライン制御が働くようにすることを特徴とするマイクロプロセッサでのパイプライン制御機能検証の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサのパイプライン制御の機能検証に関し、特に分岐命令での高速実行機能に対し未実行側にも検証用命令を生成配置することにより、全ての機能検証環境下でパイプライン制御機能を最大限に活性化させることが可能なマイクロプロセッサのパイプライン制御機能検証に関する。
【背景技術】
【０００２】
マイクロプロセッサのパイプライン制御機能は顧客要求により益々の高速化傾向にある。特に、分岐命令では高度の分岐予測機能を有し２ストリーム、３ストリームと分岐する場合に性能低下を軽減する機能を有している。
【０００３】
例えば、特許文献１に記載された『データ処理装置の試験方法』においては、複数ストリームを有するパイプライン制御の分岐命令での検証を行っている。これでは、条件付き分岐命令生成時において未実行側のストリームに実行側のストリームと同様に新たに命令を生成し直している。また、分岐命令実行前の命令列でのレジスタ、メモリと未実行側の命令列でのレジスタ、メモリの競合を意識した生成ができていない。更に、未実行側の命令列中での条件付き分岐命令での分岐先の命令列生成ができていない。
【０００４】
【特許文献１】特開平０１−３０６９３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように、従来の方法では、条件付き分岐命令での未実行側の命令列の生成を改めてし直している。また、分岐命令実行前の命令列でのレジスタ、メモリと未実行側の命令列でのレジスタ、メモリの競合を意識した生成ができていない。更に、未実行側の命令列中での条件付き分岐命令での分岐先の命令列生成ができていない。そのため、命令列生成で時間を費やし、条件付き分岐命令を挟んだ未実行命令列中でのレジスタ、メモリ競合の不足と未実行命令列中での条件付き分岐命令の分岐先の未実行命令列の生成ができていないためパイプライン制御機能への負荷が掛けられていない状態で検証が行われることになり、有効なパイプライン制御機能の検証が行われない事になる。従って、有効なパイプライン制御機能を行うためには全ての環境下で、最大能力を発揮させることが必要である。
【０００６】
本発明の目的は、このような従来の課題を解決し、複数ストリームを有するパイプライン制御機能の検証を行う際に、複数ストリームの全てにパイプライン制御機能が動作する状態で、パイプライン制御機能の検証を効率よく行うことが可能なマイコンプロセッサのパイプライン制御の検証方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明によるマイコンプロセッサのパイプライン制御機能検証の方法は、乱数データを入力として検証命令列を生成し、該検証命令の実行結果の期待値をシミュレーションにより求め、上記検証命令を条件付き分岐命令を高性能に実行するパイプライン制御機能を有する被検証マイコンプロセッサに実行させ、実行結果と上記期待値とを比較するマイコンプロセッサのパイプライン制御機能検証の方法において、条件付き分岐命令を生成した後、未実行側の命令列の生成を条件付き分岐命令以前に生成した実行命令列を選択し，未実行側の命令列として配置する。更に、配置した命令列中の条件付き分岐命令を探索し、見出したならば、分岐先の未実行命令列も上記と同様に選択し配置することで未実行側の命令列のレジスタ、メモリと条件付き分岐命令以前の命令列のレジスタ、メモリとの競合が容易に発生させることができ、有意な検証命令列を生成してパイプライン制御機能が働くようにすることに特徴がある。
【発明の効果】
【０００８】
本発明によれば、複数ストリームを有するパイプライン制御機能検証において、ハードウェア内部の各種バッファ、メモリ、レジスタ類の状態と、先行演算の各ステージ動作を組み合わせた機能検証を、条件付き分岐命令以前の命令列のレジスタ、メモリと未実行側の命令列のレジスタ、メモリとの競合を発生させ、更に未実行側の命令列中の条件付き分岐命令の分岐先の未実行命令列も生成し配置することで、機能検証をパイプライン制御機能の最大能力まで活性化させた検証環境下で効率よく実行を可能とする。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の一実施例を、図面により詳細に説明する。
【００１０】
図１は、本発明の一実施例を示す検証を行うマイクロプロセッサのブロック図と乱数プログラムをライブラリよりメモリに格納して論理検証を実行する環境である。
【００１１】
図１において、１は検証対象のマイクロプロセッサ、２はマイクロプロセッサのパイプライン制御を行う機能部、３は仮想アドレスを実アドレスに変換するためのアドレス変換機能部、４はメモリの写しを持ち高速アクセスな書き込み読み出しができるキャッシュ、５は各種レジスタ、６はメモリ、７はメモリ６に格納された乱数プログラム、８は検証プログラムライブラリを格納している外部記憶装置である。
【００１２】
図１に示すように、本発明の検証方法は、マイクロプロセッサ装置１により検証が実行される。このマイクロプロセッサ１はパイプライン制御機能部２とアドレス変換機能部３とハードウェア内部のキャッシュ４、レジスタ５とメモリ６とから構成されている。本発明の検証方法は、このマイクロプロセッサ１を検証対象として、外部記憶装置８内の検証プログラムライブラリより乱数プログラム７により検証命令列を発生させて、パイプライン制御機能部２を検証するものである。
【００１３】
図２は、本発明の一実施例を示す検証方法の全体動作フローチャートである。
【００１４】
乱数プログラム７により乱数が発生され、この乱数を入力として検証命令が生成される（ステップ１００，１０１）検証命令の期待値をステップ１０２で求める。ステップ１０３で規定の検証命令数に未達成ならばステップ１０１，１０２を繰り返す。ステップ１０３で規定の検証命令数に達成ならばステップ１０５で生成した検証命令列を実行する。ステップ１０６で検証命令列の実行結果を求める。ステップ１０７で検証命令列の期待値と検証命令列の実行結果値を比較する。一致していればステップ１０９で規定の回数が未達ならばステップ１００の乱数データの生成から始め告ぎの検証命令列による検証を行う。ステップ１０７で不一致ならばステップ１０８で不一致の内容を認識できるデータをエラーメッセージとして出力する。ステップ１０９で規定回数の実行が達成されていれば終了する。
【００１５】
図３は図２でのステップ１０１検証命令生成での条件付き分岐命令生成時の未実行領域への検証命令列設定のフローチャートである。ステップ２００は生成した検証命令が条件付き分岐命令ならばステップ２０１で生成済み検証命令列の範囲を求める。ステップ２０２で該条件付き分岐命令が分岐成功しないケースならばステップ２０７分岐成功時のアドレスを求める。ステップ２０８で乱数値で生成済み検証命令列の中から移植する命令数を求める。ステップ２０９でステップ２０１で求めた生成済み検証命令列の範囲から乱数値で選択の先頭アドレスを求める。ステップ２１０でステップ２０７で求めた未実行領域へステップ２０９で求めた選択の先頭アドレスからステップ２０８で求めた移植する生成済み検証命令数分を移植する。ステップ２０２で分岐成功のケースではステップ２０３で分岐不成功アドレスを求める。ステップ２０４，２０５，２０６はステップ２０８，２０９，２１０と同様の処理を行う。ステップ２１１で分岐不成功側へ移植した未実行領域の検証命令列内に条件付き分岐命令があればステップ２０７で分岐成功アドレスを求める。同様にステップ２０８，２０９，２１０で未実行領域へ生成済みの検証命令を移植する。
【００１６】
図４は図２、図３で生成した検証命令列と未実行検証命令列の配置図の例を示す。生成した検証命令列の期待するステップはステップ３００，３０１，３０２，３０３，３０４，３０５，３０６，３０７，３１３，３１４となる。ステップ３００は生成された検証命令１でＡ，Ｂはレジスタ、メモリで検証命令１の命令仕様に従った演算をＡ，Ｂ間で行い結果をＡ，Ｂに格納する。他の検証命令も同様である。命令仕様によっては条件付き分岐命令の分岐条件を決定するフラグを設定する検証命令も生成される。通常は条件付き分岐命令の前に分岐条件を決定するフラグを設定する検証命令を生成する。ステップ３０３は条件付き分岐命令ステップ３０４のために演算結果のひとつとして分岐条件を決定するフラグを設定する。この場合はステップ３０４が分岐不成功となる分岐条件を決定するフラグを設定する。ステップ３０４条件付き分岐命令１は分岐不成功となりステップ３０５の検証命令５を実行する。ステップ３０４の分岐先アドレスの未実行検証命令列ステップ３１２が設定されている。この未実行検証命令列はステップ３００，３０１，３０２，３０３より移植したものである。これによりパイプライン制御機能はステップ３０４で分岐条件が決定する前から先行してステップ３０５，３０６，３０７をパイプラインとして実行を部分的に実行し、同様にステップ３１２も先行して部分的に実行しステップ３０４で分岐条件が決定するまで分岐成功、不成功の両ストリームをハードウェアはパイプライン制御機能を用いて実行し分岐命令による性能低下を防ぐ。しかし、ステップ３１２での先行処理による各種ハードウェア動作を、例えば、アドレス変換機能部３へのリクエスト、キャッシュ４へのリクエスト、レジスタ５へのリクエスト、メモリ６へのリクエストをステップ３０４の条件付き分岐命令１が分岐不成功が決定した時点でステップ３１２の検証命令列が部分的に実行した前述の各種リクエストをキャンセル、リセットしなければならない。これらが正常に終了しステップ３０５以降の命令が速やかに実行できることを検証可能としている。ステップ３０６で分岐条件のフラグを設定する検証命令６を実行し、ステップ３０７条件付き分岐命令２で分岐成功しステップ３１３の検証命令７をじっこうするが、ステップ３０７の分岐条件が決定するまで先行してステップ３１３の検証命令７、ステップ３１４の検証命令８を部分的に実行している。一方、分岐不成功側のステップ３０８の未実行検証命令列も先行して部分的に各種ハードウェア動作を実行している。ステップ３０８の検証命令列の内ステップ３０９はステップ３０５，３０６，３０７を移植し条件付き分岐命令以前のステップ３０５の検証命令５のレジスタ、メモリであるＩ，Ｊとステップ３０６の検証命令６のレジスタ、メモリであるＫ，Ｌがステップ３０９とレジスタ、メモリの競合が発生しパイプライン制御機能部でのリソースの順序制御の機能検証を可能としている。更に、ステップ３０９の条件付き分岐命令２の分岐成功アドレスとして未実行検証命令列としてステップ３１１を用意し同様にステップ３０５，３０６から移植しステップ３０７の条件付き分岐命令が決定するまでステップ３１０，３１１の未実行検証命令列は先行して部分的にハードウェア動作を実行し各種リクエストを発行している。従って、ステップ３０７の条件付き分岐命令がステップ３１３への分岐成功が決定すると、ステップ３０９，３１０，３１１での未実行検証命令列で発行した各種リクエストを全てキャンセル、リセットしステップ３１３の検証命令７を実行することの検証を可能とする。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施例を示す乱数プログラムとマイクロプロセッサのブロック図での論理検証実行環境を示す図。
【図２】本発明の乱数による検証命令生成処理のフローチャート。
【図３】検証命令生成での条件付き分岐命令生成時の未実行領域への検証命令列設定のフローチャート。
【図４】図３での未実行検証命令列の配置図。
【符号の説明】
【００１８】
１…マイクロプロセッサの全体ブロック図、２…パイプライン制御機能部、３…アドレス変換部、４…キャシュ、５…レジスタ群、６…メモリ、７…メモリに格納されている乱数プログラム、８…乱数プログラムが格納されているライブラリ、１００〜１０９…検証命令生成処理の各ステップ、２００〜２０９…未実行検証命令列の生成処理の各ステップ、３００〜３１４…実行、未実行検証命令列。
【図１】
2005135123.tif 000003
【図２】
2005135123.tif 000004
【図３】
2005135123.tif 000005
【図４】
2005135123.tif 000006