(57)【要約】【課題】想定される遅延要因について適切なシミュレーション又はエミュレーションを行うことが可能なマルチスレッド処理装置等を提供すること。【解決手段】複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置であって、前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる特定段階の処理に対して擬似的干渉を発生させる擬似的干渉発生手段を備えることを特徴とする、マルチスレッド処理装置。【選択図】図１
2012027600.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、特定段階の処理に対して擬似的干渉を発生させる擬似的干渉発生手段を備えることを特徴とする、
マルチスレッド処理装置。
【請求項２】
請求項１に記載のマルチスレッド処理装置であって、
前記特定段階の処理は、命令フェッチ、データバスへのアクセス、演算処理のいずれかである、
マルチスレッド処理装置。
【請求項３】
請求項１又は２に記載のマルチスレッド処理装置であって、
前記擬似的干渉発生手段は、周期的に擬似的干渉を発生させる手段である、
マルチスレッド処理装置。
【請求項４】
請求項１又は２に記載のマルチスレッド処理装置であって、
前記擬似的干渉発生手段は、前記擬似的干渉を発生させるための外部入力を受け付けるインターフェースを含む、
マルチスレッド処理装置。
【請求項５】
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、複数の特定段階の処理に対して、擬似的干渉を発生させる複数の擬似的干渉発生手段と、
前記複数の擬似的干渉発生手段が発生させる擬似的干渉の順序性を規定した、擬似的干渉順序性情報が格納された記憶手段と、
前記擬似的干渉順序性情報に従って擬似的干渉を発生させるように前記複数の擬似的干渉発生手段を制御する制御手段と、
を備えることを特徴とするマルチスレッド処理装置。
【請求項６】
請求項５に記載のマルチスレッド処理装置であって、
前記擬似的干渉順序性情報は、時刻に応じた擬似的干渉の発生スケジュールに、順序性に関する情報が付与されていることを特徴とする、
マルチスレッド処理装置。
【請求項７】
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置に取り付けられるエミュレーション用部品であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、特定段階の処理に対して、擬似的干渉を発生させることを特徴とする、
マルチスレッド処理装置に取り付けられるエミュレーション用部品。
【請求項８】
請求項７に記載の、マルチスレッド処理装置に取り付けられるエミュレーション用部品であって、
前記特定段階の処理は、命令フェッチ、データバスへのアクセス、演算処理のいずれかである、
マルチスレッド処理装置に取り付けられるエミュレーション用部品。
【請求項９】
請求項７又は８に記載の、マルチスレッド処理装置に取り付けられるエミュレーション用部品であって、
前記擬似的干渉を発生させるための外部入力を受け付けるインターフェースを含む、
マルチスレッド処理装置に取り付けられるエミュレーション用部品。
【請求項１０】
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置に取り付けられるエミュレーション用部品であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、複数の特定段階の処理に対して、擬似的干渉を発生させる複数の擬似的干渉発生手段と、
前記複数の擬似的干渉発生手段が発生させる擬似的干渉の順序性を規定した、擬似的干渉順序性情報が格納された記憶手段と、
前記擬似的干渉順序性情報に従って擬似的干渉を発生させるように前記複数の擬似的干渉発生手段を制御する制御手段と、
を備えることを特徴とする、マルチスレッド処理装置に取り付けられるエミュレーション用部品。
【請求項１１】
請求項１０に記載の、マルチスレッド処理装置に取り付けられるエミュレーション用部品であって、
前記擬似的干渉順序性情報は、時刻に応じた擬似的干渉の発生スケジュールに、順序性に関する情報が付与された情報であることを特徴とする、
マルチスレッド処理装置に取り付けられるエミュレーション用部品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置、及びマルチスレッド処理装置に取り付けられるエミュレーション用部品に関する。
【背景技術】
【０００２】
近年、複数のスレッドによりハードウエアが部分的に共有されるマルチスレッド処理装置が実用化されている。この種のマルチスレッド処理装置の機能は、ハードウエアマルチスレッディングと称されており、パイプライン構造によって段階的に処理が行われる点が特徴的である。
【０００３】
また、マルチスレッド処理装置に限らず、何らかの機器（車両等の移動体、携帯電話等）に搭載される情報処理装置では、想定される遅延要因を適度に与えた状態で動作テストを行い、処理時間や処理タイミングの変化をシミュレートするのが望まれる。
【０００４】
これに関連し、リアルタイムＯＳ上で実行される複数のタスクのそれぞれに汎用のマルチスレッドＯＳ上で実行されるタスク処理スレッドを割り当て、リアルタイムＯＳの動作をマルチスレッドＯＳ上で模倣するリアルタイムＯＳシミュレータについての発明が開示されている（例えば、特許文献１参照）。このシミュレータは、リアルタイムＯＳと同一の条件下でタスク処理スレッドが発する要求を受け付け、この要求に応じてタスクの切り替えを指示するタスク切り替え指示手段と、タスク切り替え指示手段と協働して、マルチスレッドＯＳの機能を用いてタスク処理スレッドを停止および再開させることにより、タスク処理スレッドの中から選択した一のタスク処理スレッドを実行させるタスク切り替えスレッドとを備えている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−００７１４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に記載のシミュレータは、擬似的な割り込みやディスパッチを与えた状態で動作テストを行うものであるが、これらは、ハードウエアマルチスレッディングを行うマルチスレッド処理装置において想定される主要な遅延要因ではない。従って、ハードウエアマルチスレッディングを行うマルチスレッド処理装置について、適切なシミュレーションを行うことができない。
【０００７】
本発明はこのような課題を解決するためのものであり、想定される遅延要因について適切なシミュレーション又はエミュレーションを行うことが可能なマルチスレッド処理装置、及び当該エミュレーションを可能とするためのマルチスレッド処理装置に取り付けられるエミュレーション用部品を提供することを、主たる目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の第１の態様は、
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、特定段階の処理に対して擬似的干渉を発生させる擬似的干渉発生手段を備えることを特徴とする、
マルチスレッド処理装置である。
【０００９】
この本発明の第１の態様によれば、想定される遅延要因について適切なシミュレーション又はエミュレーションを行うことができる。
【００１０】
本発明の第２の態様は、
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、複数の特定段階の処理に対して、擬似的干渉を発生させる複数の擬似的干渉発生手段と、
前記複数の擬似的干渉発生手段が発生させる擬似的干渉の順序性を規定した、擬似的干渉順序性情報が格納された記憶手段と、
前記擬似的干渉順序性情報に従って擬似的干渉を発生させるように前記複数の擬似的干渉発生手段を制御する制御手段と、
を備えることを特徴とするマルチスレッド処理装置である。
【００１１】
この本発明の第２の態様によれば、想定される遅延要因について適切なシミュレーション又はエミュレーションを行うことができる。
【００１２】
本発明の第３の態様は、
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置に取り付けられるエミュレーション用部品であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、特定段階の処理に対して、擬似的干渉を発生させることを特徴とする、
マルチスレッド処理装置に取り付けられるエミュレーション用部品である。
【００１３】
この本発明の第３の態様によれば、想定される遅延要因について適切なエミュレーションをマルチスレッド処理装置に行わせることができる。
【００１４】
本発明の第４の態様は、
複数のスレッドによりハードウエアが部分的に共有され、パイプライン構造によって段階的に処理が行われるマルチスレッド処理装置に取り付けられるエミュレーション用部品であって、
前記複数のスレッドによって共有ハードウエアに重複して使用要求がなされることによる干渉が発生しうる、複数の特定段階の処理に対して、擬似的干渉を発生させる複数の擬似的干渉発生手段と、
前記複数の擬似的干渉発生手段が発生させる擬似的干渉の順序性を規定した、擬似的干渉順序性情報が格納された記憶手段と、
前記擬似的干渉順序性情報に従って擬似的干渉を発生させるように前記複数の擬似的干渉発生手段を制御する制御手段と、
を備えることを特徴とする、マルチスレッド処理装置に取り付けられるエミュレーション用部品である。
【００１５】
この本発明の第４の態様によれば、想定される遅延要因について適切なエミュレーションをマルチスレッド処理装置に行わせることができる。
【発明の効果】
【００１６】
本発明によれば、想定される遅延要因について適切なシミュレーション又はエミュレーションを行うことが可能なマルチスレッド処理装置、及び当該エミュレーションを可能とするためのマルチスレッド処理装置に取り付けられるエミュレーション用部品を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１実施例に係るマルチスレッド処理装置１のシステム構成例である。
【図２】干渉要求制御部３２の構成の概略を示す図である。
【図３】フェッチバスコントローラ３０の状態制御部により把握される命令フェッチバス２２の状態遷移を示す図である。
【図４】干渉時間管理部３４の構成の概略を示す図である。
【図５】従来の新たな機能が追加された場合のシミュレーションと、本実施例によるシミュレーションを比較したイメージ図である。
【図６】第１実施例に係るマルチスレッド処理装置１においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、自走カウンタ３２Ａ、及びカウンタ３４Ａのカウンタ値の変化を示すタイミングチャートである。
【図７】干渉要求制御部３２に代えて干渉要求インターフェース３６を備える場合のマルチスレッド処理装置１のシステム構成例である。
【図８】第１実施例に係るマルチスレッド処理装置１の変形例においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、干渉要求インターフェース３６の出力信号の有無、外部のデバッグユニットの出力信号の有無、カウンタ３４Ａのカウンタ値の変化を示すタイミングチャートである。
【図９】本発明の第２実施例に係るマルチスレッド処理装置２のシステム構成例である。
【図１０】第２実施例に係る命令フェッチユニット４０の構成の概略を示す図である
【図１１】干渉用フェッチ要求生成部４２の構成の概略を示す図である。
【図１２】第２実施例に係るマルチスレッド処理装置２においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのために実行されるフェッチ要求の変化を示すタイミングチャートである。
【図１３】干渉用フェッチ要求生成部４２に代えて干渉用フェッチ要求インターフェース４６を備える場合の命令フェッチユニット４０の構成の概略を示す図である。
【図１４】第２実施例に係るマルチスレッド処理装置２の変形例においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのフェッチ状況の変化、干渉用フェッチ要求インターフェース４６の出力信号の有無、外部のデバッグユニットの出力信号の有無の変化を示すタイミングチャートである。
【図１５】本発明の第３実施例に係るマルチスレッド処理装置３のシステム構成例である。
【図１６】第３実施例に係る命令フェッチユニット４０の構成の概略を示す図である。
【図１７】干渉判定部４４が保持する疑似的干渉発生テーブルの一例である。
【図１８】本実施例の命令フェッチユニット４０の制御部により実行される処理の流れを示すフローチャートである。
【図１９】第３実施例に係るマルチスレッド処理装置３においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのために実行されるフェッチ要求の変化と、干渉判定部４４が出力する干渉判定値の変化を示すタイミングチャートである。
【図２０】干渉判定部４４に代えて干渉判定インターフェース４８を備える場合の命令フェッチユニット４０の構成の概略を示す図である。
【図２１】第３実施例に係るマルチスレッド処理装置３の変形例においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのフェッチ状況の変化、干渉判定インターフェース４８の出力信号の状態、外部のデバッグユニットの出力信号の状態の変化を示すタイミングチャートである。
【図２２】本発明の第４実施例に係るマルチスレッド処理装置４のシステム構成例である。
【図２３】干渉要求制御部１２２の構成の概略を示す図である。
【図２４】干渉時間管理部１２４の構成の概略を示す図である。
【図２５】第４実施例に係るマルチスレッド処理装置４においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、自走カウンタ１２２Ａ、及びカウンタ１２４Ａのカウンタ値の変化を示すタイミングチャートである。
【図２６】干渉要求制御部１２２に代えて干渉要求インターフェース１２６を備える場合のマルチスレッド処理装置４のシステム構成例である。
【図２７】第４実施例に係るマルチスレッド処理装置４の変形例においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、干渉要求インターフェース１２６の出力信号の有無、外部のデバッグユニットの出力信号の有無、カウンタ１２４Ａのカウンタ値の変化を示すタイミングチャートである。
【図２８】本発明の第５実施例に係るマルチスレッド処理装置５のシステム構成例である。
【図２９】第５実施例に係るＬＳＵ８０の構成の概略を示す図である。
【図３０】干渉用ＬＤＳＴ要求生成部８２の構成の概略を示す図である。
【図３１】第５実施例に係るマルチスレッド処理装置５においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、自走カウンタ８２Ａのカウンタ値の変化を示すタイミングチャートである。
【図３２】干渉用ＬＤＳＴ要求生成部８２に代えて干渉用ＬＤＳＴ要求インターフェース８６を備える場合のＬＳＵ８０の構成の概略を示す図である。
【図３３】第５実施例に係るマルチスレッド処理装置５の変形例においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、干渉用ＬＤＳＴ要求インターフェース８６の出力信号の有無、外部のデバッグユニットの出力信号の有無の変化を示すタイミングチャートである。
【図３４】本発明の第６実施例に係るマルチスレッド処理装置６のシステム構成例である。
【図３５】第６実施例に係るＬＳＵ８０の構成の概略を示す図である。
【図３６】本実施例のＬＳＵ８０の制御部により実行される処理の流れを示すフローチャートである。
【図３７】第６実施例に係るマルチスレッド処理装置６においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、各スレッドのために実行されるロード・ストア要求の変化と、干渉判定部８４が出力する干渉判定値の変化を示すタイミングチャートである。
【図３８】干渉判定部８４に代えて干渉判定インターフェース８８を備える場合のＬＳＵ８０の構成の概略を示す図である。
【図３９】第６実施例に係るマルチスレッド処理装置６の変形例においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、各スレッドのために実行されるフェッチ要求の変化と、干渉判定部８４が出力する干渉判定値の変化と、外部のデバッグユニットの状態変化を示すタイミングチャートである。
【図４０】本発明の第７実施例に係るマルチスレッド処理装置７のシステム構成例である。
【図４１】第７実施例に係るマルチスレッド処理装置７においてシミュレーションが行われた際の演算器７０の状態変化と、各スレッドのために実行される演算要求の変化と、演算器干渉制御部７２が出力する干渉判定値の変化を示すタイミングチャートである。
【図４２】演算器干渉制御部７２に代えて演算器干渉制御用インターフェース７４を備える場合のマルチスレッド処理装置７の部分構成例である。
【図４３】第７実施例に係るマルチスレッド処理装置７の変形例においてシミュレーションが行われた際の演算器７０の状態変化と、各スレッドのために実行される演算要求の変化と、演算器干渉制御用インターフェース７４が出力する干渉判定値の変化と、外部のデバッグユニットの状態変化を示すタイミングチャートである。
【図４４】本発明の第８実施例に係るマルチスレッド処理装置８のシステム構成例である。
【図４５】発生スケジュール１７２Ａの内容を時系列で示した概念図である。
【図４６】統合干渉制御部１７０により実行される特徴的な処理の流れを示すフローチャートである。
【図４７】発生スケジュール１７２Ａを備える統合干渉制御部１７０が、図４６で説明したフローを実行しつつシミュレーションを行った場合の、シミュレーション結果の一例である。
【発明を実施するための形態】
【００１８】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００１９】
＜第１実施例＞
以下、図面を参照し、本発明の第１実施例に係るマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【００２０】
［基本構成］
図１は、本発明の第１実施例に係るマルチスレッド処理装置１のシステム構成例である。マルチスレッド処理装置１は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、干渉要求制御部３２、及び干渉時間管理部３４が付加されて構成される。シミュレーション用のソフトウエア機能部とは、フェッチバスコントローラ３０が追加ソフトウエアを実行することにより干渉要求制御部３２や干渉時間管理部３４として機能する部分を有することを意味するものであってもよいし、図示しないＯＳ（Operating  System）等が干渉要求制御部３２や干渉時間管理部３４と同等の処理を行うことを意味するものであってもよい。後述の第２実施例以下についても同様である。
【００２１】
以下、「一般的なマルチスレッド処理装置」とは、第１ないし第８実施例を通じて、マルチスレッド処理装置１から干渉要求制御部３２、及び干渉時間管理部３４を除いた構成をいうものとする。
【００２２】
マルチスレッド処理装置１は、ＲＯＭ（Read  Only  Memory）２０と、命令フェッチバス２２と、フェッチバスコントローラ３０と、命令フェッチユニット４０と、スレッド毎の命令バッファ５０＃１、５０＃２と、パイプライン制御装置６０によって制御されるスケジュール制御装置６２、命令デコーダ６４、命令発行部６６、演算器７０、ＬＳＵ（Load  Store  Unit）８０と、スレッド毎のレジスタ９０＃１、９０＃２と、ＲＡＭ（Random  Access  Memory）１００や周辺機器に接続されたデータアクセスバス１１０と、データバスコントローラ１２０と、命令フェッチバス２２とデータアクセスバス１１０を接続するバスブリッジ１３０と、を備える。
【００２３】
ここで、スレッドとは、ハードウエアを部分的に共有して処理を行なう仮想的な処理主体をいい、本実施例の場合、２個のスレッドが用意されている。以下、これらのスレッドを、スレッド＃１、スレッド＃２と称する。スレッドの個数に特段の制限はなく、如何なる個数であってもよい。本実施例の場合、命令バッファ５０＃１、５０＃２、及びレジスタ９０＃１、９０＃２はスレッド毎に用意されているが、それ以外の構成要素はスレッド間で共用される。
【００２４】
ＲＯＭ２０には、各スレッドが実行する複数の命令が格納されている。命令フェッチユニット４０は、命令フェッチバス２２を介してＲＯＭ２０から命令をフェッチし、命令バッファ５０＃１、５０＃２…のうち、該当するスレッドに対応したものに格納する。すなわち、スレッド＃１が実行する命令をフェッチした場合は命令バッファ５０＃１に命令を格納し、スレッド＃２が実行する命令をフェッチした場合は命令バッファ５０＃２に命令を格納する。命令バッファ５０＃１、５０＃２は、例えばＦＩＦＯ（First  In,  First  Out）に従って命令を入出力するように制御される。命令フェッチバス２２の制御は、フェッチバスコントローラ３０によって行われる。
【００２５】
スケジュール制御装置６２は、各スレッドに設定されている作動割合に従って、命令バッファ５０＃１と５０＃２のいずれかの先頭に格納された命令を、命令デコーダ６４に命令を出力させる。例えばスレッド＃１と＃２の作動割合が２：１に設定されていれば、スケジュール制御装置６２は、内部クロックの立ち上がりに応じて、命令バッファ５０＃１に格納された命令を２回命令デコーダ６４に出力させ、命令バッファ５０＃２に格納された命令を１回命令デコーダ６４に出力させる処理を繰り返す。
【００２６】
命令デコーダ６４は、いずれかの命令バッファから供給される命令を解読（デコード）し、命令発行部６６に出力する。命令デコーダ６４による解読結果は、例えば、演算の種別、ソースオペランド、結果の格納場所等である。
【００２７】
命令発行部６６は、命令デコーダ６４から入力された命令に従ってレジスタ９０＃１又は９０＃２から演算対象値等を取得し、演算器７０又はＬＳＵ８０に出力する。
【００２８】
演算器７０は、スレッドの要求に応じて四則演算その他の演算処理を行う。一方、ＬＳＵ８０は、スレッドの要求に応じてストア命令やロード命令を実行する。
【００２９】
パイプライン制御装置６０は、このような各段階の処理を制御する。具体的には、内部クロックの立ち上がりに応じて、スケジュール制御装置６２、命令デコーダ６４、命令発行部６６、演算器７０、ＬＳＵ８０等を作動させる。
【００３０】
［シミュレーション又はエミュレーション（以下、エミュレーション用部品とソフトウエア機能部を区別する場合を除き、これらをシミュレーションと総称する）のための構成］
本実施例に係るフェッチバスコントローラ３０は、干渉が発生しうる命令フェッチ処理に対して、擬似的干渉を発生させるための構成として、干渉要求制御部３２と、干渉時間管理部３４と、を備える。ここで、干渉とは、ハードウエアマルチスレッディングを行う装置において発生しうる現象であり、複数のスレッドによって共有ハードウエアに同時使用要求がなされることによって、処理が遅延ないし一時的に停止することをいう。
【００３１】
図２は、干渉要求制御部３２の構成の概略を示す図である。干渉要求制御部３２は、自走カウンタ３２Ａと、干渉周期レジスタ３２Ｂと、比較器３２Ｃと、を備える。
【００３２】
自走カウンタ３２Ａは、内部クロックに応じてカウンタ値を０から１ずつインクリメントして比較器３２Ｃに出力する。干渉周期レジスタ３２Ｂには、例えば９程度の値が格納されており、内部クロックに応じて格納値を比較器３２Ｃに出力する。比較器３２Ｃは、自走カウンタ３２Ａのカウンタ値と干渉周期レジスタ３２Ｂが保持する値が一致すると、干渉要求信号を出力する。干渉要求信号は、自走カウンタ３２Ａ、及びフェッチバスコントローラ３０の状態制御部に出力される。自走カウンタ３２Ａは、干渉要求信号が入力されるとカウンタ値をクリアして０に戻す。
【００３３】
ここで、フェッチバスコントローラ３０の状態制御部は、命令フェッチバス２２の状態を把握・制御している。命令フェッチバス２２の状態は、本来、「バスアイドル」と「バスビジー」の二種類の状態をとして把握されるが、本実施例のマルチスレッド処理装置１では、更に擬似的干渉が発生した状態である「干渉中」状態を含む三種類の状態として把握される。
【００３４】
図３は、フェッチバスコントローラ３０の状態制御部により把握される命令フェッチバス２２の状態遷移を示す図である。命令フェッチバス２２の状態は、バスアイドルの状態において、バス要求（命令フェッチユニット４０によるフェッチ要求）があった場合にバスビジーの状態に遷移する。反対に、バスビジーの状態において、命令フェッチバス２２へのアクセスが完了し、且つ干渉要求がなされていない場合に、バスアイドルの状態に遷移する。なお、干渉要求がなされている場合とは、干渉要求信号が出力され、且つ未だ干渉中に遷移していない場合をいう。
【００３５】
また、命令フェッチバス２２の状態は、バスアイドルの状態において干渉要求信号が出力されると干渉中の状態に遷移し、干渉中の状態において干渉終了信号（後述する）が出力されるとバスアイドルの状態に遷移する。すなわち、干渉中の状態からバスビジーの状態に直接は遷移せず、一度バスアイドルの状態を挟むことになる。
【００３６】
更に、命令フェッチバス２２の状態は、バスビジーの状態において、命令フェッチバス２２へのアクセスが完了し、且つ干渉要求がなされている場合に、干渉中の状態に遷移する。
【００３７】
図４は、干渉時間管理部３４の構成の概略を示す図である。干渉時間管理部３４は、カウンタ３４Ａと、干渉時間レジスタ３４Ｂと、比較器３４Ｃと、を備える。カウンタ３４Ａは、命令フェッチバス２２の状態が干渉中になると、内部クロックに応じてカウンタ値を０から１ずつインクリメントして比較器３４Ｃに出力する。また、カウンタ３４Ａは、命令フェッチバス２２の状態がバスアイドルになるとカウントを停止すると共に、カウンタ値をクリアして０に戻す。干渉時間レジスタ３４Ｂには、例えば４程度の値が格納されており、内部クロックに応じて格納値を比較器３４Ｃに出力する。比較器３４Ｃは、カウンタ３４Ａのカウンタ値と干渉時間レジスタ３４Ｂが保持する値が一致すると、干渉終了信号を出力する。干渉終了信号は、フェッチバスコントローラ３０の状態制御部に出力される。
【００３８】
そして、本実施例のマルチスレッド処理装置１は、干渉要求制御部３２、及び干渉時間管理部３４によって擬似的干渉が発生させられた状態で、検査対象ソフトウエア（元々存在するソフトウエア）に関する動作シミュレーションを行うことが可能である。
【００３９】
このような疑似干渉によるシミュレーションによって、マルチスレッド処理装置１に新たな機能が追加された場合（特に、スレッド数の増加を伴う場合）に、元々存在するソフトウエアの処理（スレッドの処理）がどの程度遅延するのか、或いは特定機能の処理タイミングはどの程度ズレを生じるか、周期的に行われうるのか、等を知ることができる。従って、新たなソフトウエアやスレッドを追加してからシミュレーションを行う場合に比して、テスト工数を削減することができる。図５は、従来の新たな機能が追加された場合のシミュレーションと、本実施例によるシミュレーションを比較したイメージ図である。
【００４０】
図６は、第１実施例に係るマルチスレッド処理装置１においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、自走カウンタ３２Ａ、及びカウンタ３４Ａのカウンタ値の変化を示すタイミングチャートである。なお、図６の下段は、マルチスレッド処理装置１における、シミュレーションが行われない通常動作時の命令フェッチバス２２の状態変化を示している。この通常動作時において、マルチスレッド処理装置１は、シミュレーションの実行時と同一のソフトウエアを処理している。
【００４１】
図６におけるタイミング（１）において、命令フェッチバス２２の状態はバスアイドルとなっている。タイミング（２）において、命令フェッチユニット４０によってフェッチ要求がなされる。この結果、命令フェッチバス２２の状態はバスビジーとなる。
【００４２】
タイミング（３）において、自走カウンタ３２Ａのカウンタ値が９に至り、干渉要求信号がフェッチバスコントローラ３０の状態制御部に出力される。自走カウンタ３２Ａはカウンタ値を０にクリアして再度カウントアップを開始する。この結果、命令フェッチユニット４０による命令フェッチが終了したタイミング（４）において、命令フェッチバス２２の状態は干渉中に切り替わり、カウンタ３４Ａがカウントアップを開始する。
【００４３】
タイミング（５）において、カウンタ３４Ａのカウンタ値が４に至り、干渉終了信号がフェッチバスコントローラ３０の状態制御部に出力される。この結果、命令フェッチバス２２の状態はバスアイドルとなり、カウンタ３４Ａはカウントを停止してカウンタ値を０にクリアする。
【００４４】
タイミング（６）において、自走カウンタ３２Ａのカウンタ値が９に至り、干渉要求信号がフェッチバスコントローラ３０の状態制御部に出力される。この結果、命令フェッチバス２２の状態は干渉中に切り替わり、カウンタ３４Ａがカウントアップを開始する。
【００４５】
干渉中の状態である最中のタイミング（７）において、命令フェッチユニット４０によってフェッチ要求がなされる。ここでは、命令フェッチバス２２の状態がバスアイドルではないため、命令フェッチは実行されず、待ち状態となる。
【００４６】
タイミング（８）において、カウンタ３４Ａのカウンタ値が４に至り、干渉終了信号がフェッチバスコントローラ３０の状態制御部に出力される。この結果、命令フェッチバス２２の状態は一度バスアイドルとなってから、タイミング（９）においてバスビジーの状態となり、命令フェッチが実行される。こうして、擬似的干渉による処理の遅延が実現される。
【００４７】
以上説明した本実施例のマルチスレッド処理装置１、及びそのエミュレーション用部品に相当する干渉要求制御部３２、及び干渉時間管理部３４によれば、想定される遅延要因について適切なシミュレーションを行うことができる。
【００４８】
また、新たなソフトウエア（シミュレーション機能がソフトウエア機能部によって実現される場合、当該シミュレーション機能用のソフトウエアではなく、本来マルチスレッド処理装置１が実行すべき内容のソフトウエアを意味する；第２実施例以下も同様）やスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【００４９】
［第１実施例の変形例］
なお、本実施例のマルチスレッド処理装置１において、干渉要求制御部３２に代えて、干渉要求インターフェース３６を備えるものとしてもよい。図７は、干渉要求制御部３２に代えて干渉要求インターフェース３６を備える場合のマルチスレッド処理装置１のシステム構成例である。なお、以下の図面ではインターフェースを「Ｉ／Ｆ」と略記する。
【００５０】
干渉要求インターフェース３６は、例えば外部のデバッグユニットに接続され、干渉要求信号を受信する。そして、干渉要求インターフェース３６が干渉要求信号を受信して命令フェッチバス２２の状態が干渉中となったときに、カウンタ３４Ａがカウントアップを開始し、カウンタ値と干渉時間レジスタ３４Ｂが保持する値が一致するまでの間、干渉状態を維持する。
【００５１】
図８は、第１実施例に係るマルチスレッド処理装置１の変形例においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、干渉要求インターフェース３６の出力信号の有無、外部のデバッグユニットの出力信号の有無、カウンタ３４Ａのカウンタ値の変化を示すタイミングチャートである。なお、図８の下段は、マルチスレッド処理装置１の変形例における、シミュレーションが行われない通常動作時の命令フェッチバス２２の状態変化を示している。この通常動作時において、マルチスレッド処理装置１の変形例は、シミュレーションの実行時と同一のソフトウエアを処理している。
【００５２】
図８におけるタイミング（１）において、命令フェッチバス２２の状態はバスアイドルとなっている。タイミング（２）において、命令フェッチユニット４０によってフェッチ要求がなされる。この結果、命令フェッチバス２２の状態はバスビジーとなる。
【００５３】
タイミング（３）において、外部のデバッグユニットが干渉要求信号を出力して干渉要求インターフェース３６が受信し、タイミング（４）において、干渉要求インターフェース３６が干渉要求信号を出力する。この結果、命令フェッチユニット４０による命令フェッチが終了したタイミング（５）において、命令フェッチバス２２の状態は干渉中に切り替わり、カウンタ３４Ａがカウントアップを開始する。
【００５４】
タイミング（６）において、カウンタ３４Ａのカウンタ値が４に至り、干渉終了信号がフェッチバスコントローラ３０の状態制御部に出力される。この結果、命令フェッチバス２２の状態はバスアイドルとなり、カウンタ３４Ａはカウントを停止してカウンタ値を０にクリアする。
【００５５】
タイミング（７）において、外部のデバッグユニットが干渉要求信号を出力して干渉要求インターフェース３６が受信し、タイミング（８）において、干渉要求インターフェース３６が干渉要求信号を出力する。この結果、命令フェッチバス２２の状態は干渉中に切り替わり、カウンタ３４Ａがカウントアップを開始する。
【００５６】
この状態におけるタイミング（９）において、命令フェッチユニット４０によってフェッチ要求がなされる。ここでは、命令フェッチバス２２の状態がバスアイドルではないため、命令フェッチは実行されず、待ち状態となる。
【００５７】
タイミング（１０）において、カウンタ３４Ａのカウンタ値が４に至り、干渉終了信号がフェッチバスコントローラ３０の状態制御部に出力される。この結果、命令フェッチバス２２の状態は一度バスアイドルとなってから、タイミング（１１）においてバスビジーの状態となり、命令フェッチが実行される。こうして、擬似的干渉による処理の遅延が実現される。
【００５８】
係る変形例によっても、上記第１実施例と同様の効果を奏することができる。更に、本実施例の場合、外部のデバッグユニットによって干渉要求を行うため、干渉要求に係るタイミングを、より自由に設定することができる。
【００５９】
＜第２実施例＞
以下、図面を参照し、本発明の第２実施例に係るマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【００６０】
［基本構成］
図９は、本発明の第２実施例に係るマルチスレッド処理装置２のシステム構成例である。本実施例において、第１実施例と共通する構成要素については同一の符号を付して基本機能に関する説明を省略する。
【００６１】
第２実施例に係るマルチスレッド処理装置２は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、干渉用フェッチ要求生成部４２が付加されて構成される。
【００６２】
［シミュレーションのための構成］
本実施例に係る命令フェッチユニット４０は、干渉が発生しうる命令フェッチ処理に対して、擬似的干渉を発生させるための構成として、干渉用フェッチ要求生成部４２を備える。
【００６３】
図１０は、第２実施例に係る命令フェッチユニット４０の構成の概略を示す図である。本実施例の命令フェッチユニット４０は、スレッド＃１とスレッド＃２のためのフェッチ要求を行う機能部に加えて、干渉用フェッチ要求生成部４２を備える。
【００６４】
また、図１１は、干渉用フェッチ要求生成部４２の構成の概略を示す図である。干渉用フェッチ要求生成部４２は、自走カウンタ４２Ａと、干渉フェッチ周期レジスタ４２Ｂと、比較器４２Ｃと、を備える。
【００６５】
自走カウンタ４２Ａは、内部クロックに応じてカウンタ値を０から１ずつインクリメントして比較器４２Ｃに出力する。干渉フェッチ周期レジスタ４２Ｂには、例えば９程度の値が格納されており、内部クロックに応じて格納値を比較器４２Ｃに出力する。比較器４２Ｃは、自走カウンタ４２Ａのカウンタ値と干渉フェッチ周期レジスタ４２Ｂが保持する値が一致すると、干渉用フェッチ要求信号を出力する。干渉用フェッチ要求信号は、自走カウンタ４２Ａ、及び命令フェッチユニット４０の制御部に出力される。自走カウンタ４２Ａは、干渉用フェッチ要求信号が入力されるとカウンタ値をクリアして０に戻す。命令フェッチユニット４０の制御部は、干渉用フェッチ要求信号が入力されると、ＲＯＭ２０からダミー命令をフェッチして、いずれかの命令バッファ（ダミーバッファを備えると好適である）に格納する。
【００６６】
本実施例のマルチスレッド処理装置２は、干渉用フェッチ要求生成部４２によって擬似的干渉が発生させられた状態で、検査対象ソフトウエア（元々存在するソフトウエア）に関する動作シミュレーションを行うことが可能である。
【００６７】
また、本実施例では、第１実施例とは異なり、擬似的干渉を発生させる際に実際にＲＯＭ２０から命令フェッチを行うため、擬似的干渉の終了時期を決定するための構成を省略することができる。
【００６８】
図１２は、第２実施例に係るマルチスレッド処理装置２においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのために実行されるフェッチ要求の変化を示すタイミングチャートである。なお、図１２の下段は、マルチスレッド処理装置２における、シミュレーションが行われない通常動作時の命令フェッチバス２２の状態変化とフェッチ要求の変化を示している。この通常動作時において、マルチスレッド処理装置２は、シミュレーションの実行時と同一のソフトウエアを処理している。
【００６９】
図１２におけるタイミング（１）において、スレッド＃１のためのフェッチ要求がなされ、この結果、命令フェッチバス２２を介した命令フェッチが行われ、タイミング（２）において命令フェッチが終了する。
【００７０】
タイミング（３）において、スレッド＃２のためのフェッチ要求がなされ、この結果、命令フェッチバス２２を介した命令フェッチが行われ、タイミング（４）において命令フェッチが終了する。
【００７１】
タイミング（５）において、自走カウンタ４２Ａのカウンタ値が干渉フェッチ周期レジスタ４２Ｂのレジスタ値に至り、干渉用フェッチ要求信号が出力される。この結果、命令フェッチバス２２は擬似的なスレッドに対する命令フェッチが行われている状態となる。
【００７２】
この状態が継続しているタイミング（６）において、スレッド＃１のためのフェッチ要求がなされると、擬似的干渉が生じ、スレッド＃１のための命令フェッチは実行されず、待ち状態となる。
【００７３】
この結果、擬似的なスレッドに対する命令フェッチが終了したタイミング（７）まで待って、スレッド＃１のための命令フェッチが実行され、干渉による処理の遅延が実現される（以下省略）。
【００７４】
以上説明した本実施例のマルチスレッド処理装置２、及びそのエミュレーション用部品に相当する干渉用フェッチ要求生成部４２によれば、想定される遅延要因について適切なシミュレーションを行うことができる。
【００７５】
また、新たなソフトウエアやスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【００７６】
［第２実施例の変形例］
なお、本実施例のマルチスレッド処理装置２において、干渉用フェッチ要求生成部４２に代えて、干渉用フェッチ要求インターフェース４６を備えるものとしてもよい。図１３は、干渉用フェッチ要求生成部４２に代えて干渉用フェッチ要求インターフェース４６を備える場合の命令フェッチユニット４０の構成の概略を示す図である。
【００７７】
干渉用フェッチ要求インターフェース４６は、例えば外部のデバッグユニットに接続され、干渉要求信号を受信する。そして、干渉要求信号を受信すると、干渉用フェッチ要求信号を命令フェッチユニット４０の制御部に出力する。命令フェッチユニット４０の制御部は、干渉用フェッチ要求信号が入力されると、前述のようにＲＯＭ２０からダミー命令をフェッチして、いずれかの命令バッファに格納する。
【００７８】
図１４は、第２実施例に係るマルチスレッド処理装置２の変形例においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのフェッチ状況の変化、干渉用フェッチ要求インターフェース４６の出力信号の有無、外部のデバッグユニットの出力信号の有無の変化を示すタイミングチャートである。
【００７９】
図１４におけるタイミング（１）において、スレッド＃１のためのフェッチ要求がなされ、この結果、命令フェッチバス２２を介した命令フェッチが行われ、タイミング（２）において命令フェッチが終了する。
【００８０】
タイミング（３）において、スレッド＃２のためのフェッチ要求がなされ、この結果、命令フェッチバス２２を介した命令フェッチが行われ、タイミング（４）において命令フェッチが終了する。
【００８１】
タイミング（５）において、外部のデバッグユニットが干渉要求信号を出力して干渉用フェッチ要求インターフェース４６が受信し、タイミング（６）において干渉用フェッチ要求インターフェース４６が干渉用フェッチ要求信号を出力する。この結果、命令フェッチバス２２は擬似的なスレッドに対する命令フェッチが行われている状態となる。
【００８２】
この状態が継続しているタイミング（７）において、スレッド＃１のためのフェッチ要求がなされると、擬似的干渉が生じ、スレッド＃１のための命令フェッチは実行されず、待ち状態となる。
【００８３】
この結果、擬似的なスレッドに対する命令フェッチが終了したタイミング（８）まで待って、スレッド＃１のための命令フェッチが実行され、干渉による処理の遅延が実現される（以下省略）。
【００８４】
係る変形例によっても、上記第２実施例と同様の効果を奏することができる。更に、本実施例の場合、外部のデバッグユニットによって干渉要求を行うため、干渉要求に係るタイミングを、より自由に設定することができる。
【００８５】
＜第３実施例＞
以下、図面を参照し、本発明の第３実施例に係るマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【００８６】
［基本構成］
図１５は、本発明の第３実施例に係るマルチスレッド処理装置３のシステム構成例である。本実施例において、第１実施例と共通する構成要素については同一の符号を付して基本機能に関する説明を省略する。
【００８７】
第３実施例に係るマルチスレッド処理装置３は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、干渉判定部４４が付加されて構成される。
【００８８】
［シミュレーションのための構成］
本実施例に係る命令フェッチユニット４０は、干渉が発生しうる命令フェッチ処理に対して、擬似的干渉を発生させるための構成として、干渉判定部４４を備える。
【００８９】
図１６は、第３実施例に係る命令フェッチユニット４０の構成の概略を示す図である。本実施例の命令フェッチユニット４０は、各スレッド＃１とスレッド＃２のためのフェッチ要求を行う機能部に加えて、干渉判定部４４を備える。
【００９０】
本実施例の命令フェッチユニット４０は、第１実施例や第２実施例のように周期的に擬似的干渉を発生させるのではなく、所望のパターンで擬似的干渉を発生させることができる。
【００９１】
干渉判定部４４は、例えば所定ビット数の疑似的干渉発生テーブルを保持している。図１７は、干渉判定部４４が保持する疑似的干渉発生テーブルの一例である。疑似的干渉発生テーブルは、例えば、１が擬似的干渉なし、０が擬似的干渉ありと規定する。そして、スレッドによるフェッチ要求がある度にテーブルの先頭から順に値を読み込み、擬似的干渉を発生させるか否かを判定する。
【００９２】
図１８は、本実施例の命令フェッチユニット４０の制御部により実行される処理の流れを示すフローチャートである。本フローは、例えば所定周期で繰り返し実行される。
【００９３】
まず、いずれかのスレッドによりフェッチ要求がなされたか否かを判定する（Ｓ２００）。フェッチ要求がなされなかった場合は、本フローの１ルーチンを終了する。
【００９４】
フェッチ要求がなされた場合は、干渉判定部４４に干渉判定値を要求し、これを受け取る（Ｓ２０２）。干渉判定部４４は、干渉判定値が要求される度に、疑似的干渉発生テーブルに従ってテーブル値を順に出力する。
【００９５】
干渉判定値を受け取ると、干渉判定値が値０であるか値１であるかを判定する（Ｓ２０４）。干渉判定値が値１である場合は、当該スレッドに命令フェッチを発行する（Ｓ２０６）。
【００９６】
一方、干渉判定値が値０である場合は、一定期間当該スレッドを待ち状態とし（Ｓ２０８）、再度Ｓ２０２以下の処理を実行する。
【００９７】
本実施例のマルチスレッド処理装置３は、干渉判定部４４及び命令フェッチユニット４０の制御部によって擬似的干渉が発生させられた状態で、検査対象ソフトウエア（元々存在するソフトウエア）に関する動作シミュレーションを行うことが可能である。
【００９８】
図１９は、第３実施例に係るマルチスレッド処理装置３においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのために実行されるフェッチ要求の変化と、干渉判定部４４が出力する干渉判定値の変化を示すタイミングチャートである。
【００９９】
図１９におけるタイミング（１）において、スレッド＃１からフェッチ要求がなされる。命令フェッチユニット４０では、前述のフローによって干渉判定部４４に干渉判定値を要求し、干渉判定部４４から値１の干渉判定値を受け取る。これによって、スレッド＃１に命令フェッチが発行される。
【０１００】
タイミング（２）において、スレッド＃１からフェッチ要求がなされるが、今回の干渉判定値は０である。この結果、一定期間スレッド＃１が待ち状態とされる。タイミング（３）において再度干渉判定値が要求されるが、今回の干渉判定値も値０であり、更に一定期間スレッド＃１が待ち状態とされる。タイミング（４）において再度干渉判定値が要求され、干渉判定値が１となるため、スレッド＃１に命令フェッチが発行される。
【０１０１】
タイミング（５）において、スレッド＃２からフェッチ要求がなされるが、今回の干渉判定値は値０である。この結果、一定期間スレッド＃２が待ち状態とされる。タイミング（６）において再度干渉判定値が要求され、干渉判定値が１となるため、スレッド＃２に命令フェッチが発行される。
【０１０２】
以降、タイミング（７）、（８）において、スレッド＃１、＃２からそれぞれフェッチ要求がなされ、干渉判定値が１となるため、スレッド＃１、＃２にそれぞれ命令フェッチが発行される。
【０１０３】
以上説明した本実施例のマルチスレッド処理装置３、及びそのエミュレーション用部品に相当する干渉判定部４４によれば、想定される遅延要因について適切なシミュレーションを行うことができる。
【０１０４】
また、新たなソフトウエアやスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【０１０５】
［第３実施例の変形例］
なお、本実施例のマルチスレッド処理装置３において、干渉判定部４４に代えて、干渉判定インターフェース４８を備えるものとしてもよい。図２０は、干渉判定部４４に代えて干渉判定インターフェース４８を備える場合の命令フェッチユニット４０の構成の概略を示す図である。
【０１０６】
干渉判定インターフェース４８は、例えば外部のデバッグユニットに接続され、干渉判定用信号を受信する。そして、干渉判定用信号を命令フェッチユニット４０の制御部に出力する。命令フェッチユニット４０の制御部は、図１８に示したような判定処理を行って、擬似的干渉状態を発生させる。干渉判定用信号は、例えば、ＨＩ信号が干渉なしを示し、ＬＯ信号が干渉ありを示すものとする。
【０１０７】
図２１は、第３実施例に係るマルチスレッド処理装置３の変形例においてシミュレーションが行われた際の命令フェッチバス２２の状態変化と、各スレッドのフェッチ状況の変化、干渉判定インターフェース４８を介して得られる外部のデバッグユニットの出力信号の状態の変化を示すタイミングチャートである。
【０１０８】
図２１におけるタイミング（１）において、スレッド＃１からフェッチ要求がなされる。命令フェッチユニット４０では、前述のフローによって干渉判定インターフェース４８が出力している干渉用信号を参照する。干渉判定インターフェース４８からはＨＩ信号が出力されているため、スレッド＃１に命令フェッチが発行される。タイミング（２）において、スレッド＃１による命令フェッチが終了する。
【０１０９】
タイミング（３）において、スレッド＃２からフェッチ要求がなされる。命令フェッチユニット４０では、前述のフローによって干渉判定インターフェース４８が出力している干渉用信号を参照する。干渉判定インターフェース４８からはＨＩ信号が出力されているため、スレッド＃２に命令フェッチが発行される。タイミング（４）において、スレッド＃２による命令フェッチが終了する。
【０１１０】
タイミング（５）において、外部のデバッグユニットから入力される信号がＬＯ信号に変化し、干渉判定インターフェース４８の出力信号もＬＯ信号に変化する。この状態におけるタイミング（６）において、スレッド＃１からフェッチ要求がなされると、一定期間スレッド＃１が待ち状態とされる。そして一定期間経過したタイミング（７）において、スレッド＃１に命令フェッチが発行される。
【０１１１】
また、タイミング（８）において、スレッド＃２からフェッチ要求がなされるが、スレッド＃２に命令フェッチが発行されるのは、スレッド＃１による命令フェッチが終了するタイミング（９）から一定期間経過したタイミング（１０）となる。
【０１１２】
係る変形例によっても、上記第３実施例と同様の効果を奏することができる。更に、本実施例の場合、外部のデバッグユニットによって干渉要求を行うため、干渉要求に係るタイミングを、より自由に設定することができる。
【０１１３】
＜第４実施例＞
以下、図面を参照し、本発明の第４実施例に係るマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【０１１４】
［基本構成］
図２２は、本発明の第４実施例に係るマルチスレッド処理装置４のシステム構成例である。本実施例において、第１実施例と共通する構成要素については同一の符号を付して基本機能に関する説明を省略する。
【０１１５】
第４実施例に係るマルチスレッド処理装置４は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、干渉要求制御部１２２、及び干渉時間管理部１２４が付加されて構成される。
【０１１６】
［シミュレーションのための構成］
本実施例に係るデータバスコントローラ１２０は、干渉が発生しうるデータアクセスバス１１０へのアクセス処理に対して、擬似的干渉を発生させるための構成として、干渉要求制御部１２２と、干渉時間管理部１２４と、を備える。
【０１１７】
図２３は、干渉要求制御部１２２の構成の概略を示す図である。干渉要求制御部１２２は、自走カウンタ１２２Ａと、干渉周期レジスタ１２２Ｂと、比較器１２２Ｃと、を備える。
【０１１８】
自走カウンタ１２２Ａは、内部クロックに応じてカウンタ値を０から１ずつインクリメントして比較器１２２Ｃに出力する。干渉周期レジスタ１２２Ｂには、例えば９程度の値が格納されており、内部クロックに応じて格納値を比較器１２２Ｃに出力する。比較器１２２Ｃは、自走カウンタ１２２Ａのカウンタ値と干渉周期レジスタ１２２Ｂが保持する値が一致すると、干渉要求信号を出力する。干渉要求信号は、自走カウンタ１２２Ａ、及びデータバスコントローラ１２０の状態制御部に出力される。自走カウンタ１２２Ａは、干渉要求信号が入力されるとカウンタ値をクリアして０に戻す。
【０１１９】
ここで、データバスコントローラ１２０の状態制御部は、データアクセスバス１１０の状態を把握・制御している。データアクセスバス１１０の状態は、本来、「バスアイドル」と「バスビジー」の二種類の状態をとして把握されるが、本実施例のマルチスレッド処理装置１では、更に擬似的干渉が発生した状態である「干渉中」状態を含む三種類の状態として把握される。これらの状態遷移については、第１実施例における命令フェッチバス２２の状態と同様であるため、図３を参照し、本実施例においては図示を省略する。
【０１２０】
図２４は、干渉時間管理部１２４の構成の概略を示す図である。干渉時間管理部１２４は、カウンタ１２４Ａと、干渉時間レジスタ１２４Ｂと、比較器１２４Ｃと、を備える。カウンタ１２４Ａは、データアクセスバス１１０の状態が干渉中になると、内部クロックに応じてカウンタ値を０から１ずつインクリメントして比較器１２４Ｃに出力する。また、カウンタ１２４Ａは、データアクセスバス１１０の状態がバスアイドルになるとカウントを停止すると共に、カウンタ値をクリアして０に戻す。干渉時間レジスタ１２４Ｂには、例えば４程度の値が格納されており、内部クロックに応じて格納値を比較器１２４Ｃに出力する。比較器１２４Ｃは、カウンタ１２４Ａのカウンタ値と干渉時間レジスタ１２４Ｂが保持する値が一致すると、干渉終了信号を出力する。干渉終了信号は、データバスコントローラ１２０の状態制御部に出力される。
【０１２１】
本実施例のマルチスレッド処理装置４は、干渉要求制御部１２２及び干渉時間管理部１２４によって擬似的干渉が発生させられた状態で、検査対象ソフトウエア（元々存在するソフトウエア）に関する動作シミュレーションを行うことが可能である。
【０１２２】
図２５は、第４実施例に係るマルチスレッド処理装置４においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、自走カウンタ１２２Ａ、及びカウンタ１２４Ａのカウンタ値の変化を示すタイミングチャートである。
【０１２３】
図２５におけるタイミング（１）において、データアクセスバス１１０の状態はバスアイドルとなっている。タイミング（２）において、いずれかのスレッドによってデータバス要求（データアクセスバス１１０にアクセスする要求）がなされる。この結果、データアクセスバス１１０の状態はバスビジーとなる。
【０１２４】
タイミング（３）において、自走カウンタ１２２Ａのカウンタ値が９に至り、干渉要求信号がデータバスコントローラ１２０の状態制御部に出力される。自走カウンタ１２２Ａはカウンタ値を０にクリアして再度カウントアップを開始する。この結果、いずれかのスレッドによるデータバスアクセスが終了したタイミング（４）において、データアクセスバス１１０の状態は干渉中に切り替わり、カウンタ１２４Ａがカウントアップを開始する。
【０１２５】
タイミング（５）において、カウンタ１２４Ａのカウンタ値が４に至り、干渉終了信号がデータバスコントローラ１２０の状態制御部に出力される。この結果、データアクセスバス１１０の状態はバスアイドルとなり、カウンタ１２４Ａはカウントを停止してカウンタ値を０にクリアする。
【０１２６】
タイミング（６）において、自走カウンタ１２２Ａのカウンタ値が９に至り、干渉要求信号がデータバスコントローラ１２０の状態制御部に出力される。この結果、データアクセスバス１１０の状態は干渉中に切り替わり、カウンタ１２４Ａがカウントアップを開始する。
【０１２７】
この状態におけるタイミング（７）において、いずれかのスレッドによってデータバス要求がなされる。ここでは、データアクセスバス１１０の状態がバスアイドルではないため、命令フェッチは実行されず、待ち状態となる。
【０１２８】
タイミング（８）において、カウンタ１２４Ａのカウンタ値が４に至り、干渉終了信号がデータバスコントローラ１２０の状態制御部に出力される。この結果、データアクセスバス１１０の状態は一度バスアイドルとなってから、タイミング（９）においてバスビジーの状態となり、命令フェッチが実行される。こうして、擬似的干渉による処理の遅延が実現される。
【０１２９】
以上説明した本実施例のマルチスレッド処理装置４、及びエミュレーション用部品に相当する干渉要求制御部１２２、及び干渉時間管理部１２４によれば、想定される遅延要因について適切なシミュレーションを行うことができる。
【０１３０】
また、新たなソフトウエアやスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【０１３１】
［第４実施例の変形例］
なお、本実施例のマルチスレッド処理装置４において、干渉要求制御部１２２に代えて、干渉要求インターフェース１２６を備えるものとしてもよい。図２６は、干渉要求制御部１２２に代えて干渉要求インターフェース１２６を備える場合のマルチスレッド処理装置４のシステム構成例である。
【０１３２】
干渉要求インターフェース１２６は、例えば外部のデバッグユニットに接続され、干渉要求信号を受信する。そして、干渉要求インターフェース１２６が干渉要求信号を受信してデータアクセスバス１１０の状態が干渉中となったときに、カウンタ３４Ａがカウントアップを開始し、カウンタ値と干渉時間レジスタ３４Ｂが保持する値が一致するまでの間、干渉状態を維持する。
【０１３３】
図２７は、第４実施例に係るマルチスレッド処理装置４の変形例においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、干渉要求インターフェース１２６の出力信号の有無、外部のデバッグユニットの出力信号の有無、カウンタ１２４Ａのカウンタ値の変化を示すタイミングチャートである。
【０１３４】
図２７におけるタイミング（１）において、データアクセスバス１１０の状態はバスアイドルとなっている。タイミング（２）において、いずれかのスレッドによってＬＤ要求（ロード要求）がなされる。この結果、データアクセスバス１１０の状態はバスビジーとなる。
【０１３５】
タイミング（３）において、外部のデバッグユニットが干渉要求信号を出力して干渉要求インターフェース１２６が受信する。タイミング（４）において、干渉要求インターフェース１２６が干渉要求信号を出力する。この結果、いずれかのスレッドによるデータバスアクセスが終了したタイミング（５）において、データアクセスバス１１０の状態は干渉中に切り替わり、カウンタ１２４Ａがカウントアップを開始する。
【０１３６】
タイミング（６）において、カウンタ１２４Ａのカウンタ値が４に至り、干渉終了信号がデータバスコントローラ１２０の状態制御部に出力される。この結果、データアクセスバス１１０の状態はバスアイドルとなり、カウンタ１２４Ａはカウントを停止してカウンタ値を０にクリアする。
【０１３７】
タイミング（７）において、外部のデバッグユニットが干渉要求信号を出力して干渉要求インターフェース１２６が受信する。タイミング（８）において、干渉要求インターフェース１２６が干渉要求信号を出力する。この結果、データアクセスバス１１０の状態は干渉中に切り替わり、カウンタ１２４Ａがカウントアップを開始する。
【０１３８】
この状態におけるタイミング（９）において、いずれかのスレッドによってＳＴ要求（ストア要求）がなされる。ここでは、データアクセスバス１１０の状態がバスアイドルではないため、命令フェッチは実行されず、待ち状態となる。
【０１３９】
タイミング（１０）において、カウンタ１２４Ａのカウンタ値が４に至り、干渉終了信号がデータバスコントローラ１２０の状態制御部に出力される。この結果、データアクセスバス１１０の状態は一度バスアイドルとなってから、タイミング（１１）においてバスビジーの状態となり、データバスアクセスが実行される。こうして、擬似的干渉による処理の遅延が実現される。
【０１４０】
係る変形例によっても、上記第４実施例と同様の効果を奏することができる。更に、本実施例の場合、外部のデバッグユニットによって干渉要求を行うため、干渉要求に係るタイミングを、より自由に設定することができる。
【０１４１】
＜第５実施例＞
以下、図面を参照し、本発明の第５実施例に係るマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【０１４２】
［基本構成］
図２８は、本発明の第５実施例に係るマルチスレッド処理装置５のシステム構成例である。本実施例において、第１実施例と共通する構成要素については同一の符号を付して基本機能に関する説明を省略する。
【０１４３】
第２実施例に係るマルチスレッド処理装置５は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、干渉用ＬＤＳＴ要求生成部８２が付加されて構成される。
【０１４４】
［シミュレーションのための構成］
本実施例に係るＬＳＵ８０は、干渉が発生しうるロード・ストア処理に対して、擬似的干渉を発生させるための構成として、干渉用ＬＤＳＴ要求生成部８２を備える。
【０１４５】
図２９は、第５実施例に係るＬＳＵ８０の構成の概略を示す図である。本実施例の命令ＬＳＵ８０は、各スレッドのためのロード・ストア要求を行う機能部に加えて、干渉用ＬＤＳＴ要求生成部８２を備える。
【０１４６】
また、図３０は、干渉用ＬＤＳＴ要求生成部８２の構成の概略を示す図である。干渉用フェッチ要求生成部８２は、自走カウンタ８２Ａと、干渉ＬＤＳＴ周期レジスタ８２Ｂと、比較器８２Ｃと、を備える。
【０１４７】
自走カウンタ８２Ａは、内部クロックに応じてカウンタ値を０から１ずつインクリメントして比較器８２Ｃに出力する。干渉ＬＤＳＴ周期レジスタ８２Ｂには、例えば９程度の値が格納されており、内部クロックに応じて格納値を比較器８２Ｃに出力する。比較器８２Ｃは、自走カウンタ８２Ａのカウンタ値と干渉ＬＤＳＴ周期レジスタ８２Ｂが保持する値が一致すると、干渉用ＬＤＳＴ要求信号を出力する。干渉用ＬＤＳＴ要求信号は、自走カウンタ８２Ａ、及びＬＳＵ８０の制御部に出力される。自走カウンタ８２Ａは、干渉用ＬＤＳＴ要求信号が入力されるとカウンタ値をクリアして０に戻す。ＬＳＵ８０の制御部は、干渉用ＬＤＳＴ要求信号が入力されると、ダミーデータをＲＡＭ１００から読み込み、又はＲＡＭ１００に書き込む（疑似アクセスを行う）。
【０１４８】
本実施例のマルチスレッド処理装置５は、干渉用ＬＤＳＴ要求生成部８２によって擬似的干渉が発生させられた状態で、検査対象ソフトウエア（元々存在するソフトウエア）に関する動作シミュレーションを行うことが可能である。
【０１４９】
また、本実施例では、第４実施例とは異なり、擬似的干渉を発生させる際に実際にＲＡＭ１００に対して読み書きを行うため、擬似的干渉の終了時期を決定するための構成を省略することができる。
【０１５０】
図３１は、第５実施例に係るマルチスレッド処理装置５においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、自走カウンタ８２Ａのカウンタ値の変化を示すタイミングチャートである。なお、図３１の下段は、マルチスレッド処理装置５における、シミュレーションが行われない通常動作時のデータアクセスバス１１０の状態変化を示している。この通常動作時において、マルチスレッド処理装置５は、シミュレーションの実行時と同一のソフトウエアを処理している。
【０１５１】
図３１におけるタイミング（１）において、自走カウンタ８２Ａのカウンタ値がインクリメントされ始める。タイミング（２）において、いずれかのスレッドためのＬＤ要求（ロード要求）がなされ、この結果、データアクセスバス１１０を介したＲＡＭ１００へのアクセス（図ではＬＤアクセスと表記した）が行われる。
【０１５２】
タイミング（３）において、自走カウンタ８２Ａのカウンタ値が干渉ＬＤＳＴ周期レジスタ８２Ｂのレジスタ値に至り、干渉用ＬＤＳＴ要求信号が出力される。この結果、ＬＤアクセスが終了したタイミング（４）において、データアクセスバス１１０は擬似アクセスが行われている状態となる。擬似アクセスが行われている状態は、タイミング（５）まで継続する。
【０１５３】
タイミング（６）において、自走カウンタ８２Ａのカウンタ値が干渉ＬＤＳＴ周期レジスタ８２Ｂのレジスタ値に至り、干渉用ＬＤＳＴ要求信号が出力される。この結果、データアクセスバス１１０は擬似アクセスが行われている状態となる。
【０１５４】
この状態が継続しているタイミング（７）において、いずれかのスレッドためのＳＴ要求（ストア要求）がなされると、擬似的干渉が生じ、データアクセスバス１１０を介したＲＡＭ１００へのアクセス（図ではＳＴアクセスと表記した）は実行されず、待ち状態となる。
【０１５５】
この結果、擬似アクセスが行われている状態が終了したタイミング（８）まで待って、ＳＴアクセスが実行され、干渉による処理の遅延が実現される。
【０１５６】
以上説明した本実施例のマルチスレッド処理装置５、及びそのエミュレーション用部品に相当する干渉用ＬＤＳＴ要求生成部８２によれば、想定される遅延要因について適切なシミュレーションを行うことができる。
【０１５７】
また、新たなソフトウエアやスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【０１５８】
［第５実施例の変形例］
なお、本実施例のマルチスレッド処理装置５において、干渉用ＬＤＳＴ要求生成部８２に代えて、干渉用ＬＤＳＴ要求８６を備えるものとしてもよい。図３２は、干渉用ＬＤＳＴ要求生成部８２に代えて干渉用ＬＤＳＴ要求インターフェース８６を備える場合のＬＳＵ８０の構成の概略を示す図である。
【０１５９】
干渉用ＬＤＳＴ要求インターフェース８６は、例えば外部のデバッグユニットに接続され、干渉要求信号を受信する。そして、干渉要求信号を受信すると、干渉用フェッチ要求信号をＬＳＵ８０の制御部に出力する。ＬＳＵ８０の制御部は、干渉用フェッチ要求信号が入力されると、前述のようにＲＯＭ２０からダミー命令をフェッチして、いずれかの命令バッファに格納する。
【０１６０】
図３３は、第５実施例に係るマルチスレッド処理装置５の変形例においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、干渉用ＬＤＳＴ要求インターフェース８６の出力信号の有無、外部のデバッグユニットの出力信号の有無の変化を示すタイミングチャートである。
【０１６１】
図３３におけるタイミング（１）において、いずれかのスレッドためのＬＤ要求（ロード要求）がなされ、この結果、データアクセスバス１１０を介したＲＡＭ１００へのアクセス（ＬＤアクセス）が行われる。
【０１６２】
タイミング（２）において、外部のデバッグユニットが干渉要求信号を出力して干渉用ＬＤＳＴ要求インターフェース８６が受信する。そして、タイミング（３）において干渉用ＬＤＳＴ要求インターフェース８６が干渉用ＬＤＳＴ要求信号を出力する。この結果、ＬＤアクセスが終了したタイミング（４）において、データアクセスバス１１０は擬似アクセスが行われている状態となる。擬似アクセスが行われている状態は、タイミング（５）まで継続する。
【０１６３】
タイミング（６）において、外部のデバッグユニットが干渉要求信号を出力して干渉用ＬＤＳＴ要求インターフェース８６が受信する。そして、タイミング（７）において干渉用ＬＤＳＴ要求インターフェース８６が干渉用ＬＤＳＴ要求信号を出力する。この結果、データアクセスバス１１０は擬似アクセスが行われている状態となる。
【０１６４】
この状態が継続しているタイミング（８）において、いずれかのスレッドためのＳＴ要求（ストア要求）がなされると、擬似的干渉が生じ、データアクセスバス１１０を介したＲＡＭ１００へのアクセス（図ではＳＴアクセスと表記した）は実行されず、待ち状態となる。
【０１６５】
この結果、擬似アクセスが行われている状態が終了したタイミング（８）まで待って、ＳＴアクセスが実行され、干渉による処理の遅延が実現される。
【０１６６】
係る変形例によっても、上記第５実施例と同様の効果を奏することができる。更に、本実施例の場合、外部のデバッグユニットによって干渉要求を行うため、干渉要求に係るタイミングを、より自由に設定することができる。
【０１６７】
＜第６実施例＞
以下、図面を参照し、本発明の第６実施例に係るマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【０１６８】
［基本構成］
図３４は、本発明の第６実施例に係るマルチスレッド処理装置６のシステム構成例である。本実施例において、第１実施例と共通する構成要素については同一の符号を付して基本機能に関する説明を省略する。
【０１６９】
第６実施例に係るマルチスレッド処理装置６は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、干渉判定部８４が付加されて構成される。
【０１７０】
［シミュレーションのための構成］
本実施例に係るＬＳＵ８０は、干渉が発生しうるロード・ストア処理に対して、擬似的干渉を発生させるための構成として、干渉判定部８４を備える。
【０１７１】
図３５は、第６実施例に係るＬＳＵ８０の構成の概略を示す図である。本実施例のＬＳＵ８０は、各スレッドのためのロード・ストア要求を行う機能部に加えて、干渉判定部８４を備える。
【０１７２】
本実施例のＬＳＵ８０は、第４実施例や第５実施例のように周期的に擬似的干渉を発生させるのではなく、所望のパターンで擬似的干渉を発生させることができる。
【０１７３】
干渉判定部８４は、例えば所定ビット数の疑似的干渉発生テーブルを保持している。疑似的干渉発生テーブルは、第３実施例で説明したものと同様であってよいため、図示を省略する（図１７参照）。疑似的干渉発生テーブルは、例えば、値１が擬似的干渉なし、値０が擬似的干渉ありと規定する。そして、スレッドによるロード・ストア要求がある度にテーブルの先頭から順に値を読み込み、干渉判定値として出力する。
【０１７４】
図３６は、本実施例のＬＳＵ８０の制御部により実行される処理の流れを示すフローチャートである。本フローは、例えば所定周期で繰り返し実行される。
【０１７５】
まず、いずれかのスレッドによりロード・ストア要求（図ではＬＤＳＴ要求と表記した）がなされた否かを判定する（Ｓ３００）。ロード・ストア要求がなされなかった場合は、本フローの１ルーチンを終了する。
【０１７６】
ロード・ストア要求がなされた場合は、干渉判定部８４に干渉判定値を要求し、これを受け取る（Ｓ３０２）。干渉判定部８４は、干渉判定値が要求される度に、疑似的干渉発生テーブルに従ってテーブル値を順に出力する。
【０１７７】
干渉判定値を受け取ると、干渉判定値が値０であるか否かを判定する（Ｓ３０４）。干渉判定値が値１である場合は、当該スレッドにロード・ストアを発行する（Ｓ３０６）。
【０１７８】
一方、干渉判定値が値１である場合は、一定期間当該スレッドを待ち状態とし（Ｓ３０８）、再度Ｓ３０２以下の処理を実行する。
【０１７９】
本実施例のマルチスレッド処理装置６は、干渉判定部８４及びＬＳＵ８０の制御部によって擬似的干渉が発生させられた状態で、検査対象ソフトウエア（元々存在するソフトウエア）に関する動作シミュレーションを行うことが可能である。
【０１８０】
図３７は、第６実施例に係るマルチスレッド処理装置６においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、各スレッドのために実行されるロード・ストア要求の変化と、干渉判定部８４が出力する干渉判定値の変化を示すタイミングチャートである。なお、図３７の下段は、マルチスレッド処理装置５における、シミュレーションが行われない通常動作時のデータアクセスバス１１０の状態変化を示している。この通常動作時において、マルチスレッド処理装置６は、シミュレーションの実行時と同一のソフトウエアを処理している。
【０１８１】
図３７におけるタイミング（１）において、スレッド＃１からＬＤ要求（ロード要求）がなされる。ＬＳＵ８０では、前述のフローによって干渉判定部８４に干渉判定値を要求し、干渉判定部８４から値１の干渉判定値を受け取る。これによって、スレッド＃１にロードが発行される。
【０１８２】
タイミング（２）において、スレッド＃１からＳＴ要求（ストア要求）がなされるが、今回の干渉判定値は値０である。この結果、一定期間スレッド＃１が待ち状態とされる。タイミング（３）において再度干渉判定値が要求されるが、今回の干渉判定値も値０であり、更に一定期間スレッド＃１が待ち状態とされる。タイミング（４）において再度干渉判定値が要求され、干渉判定値が１となるため、スレッド＃１にストアが発行される。
【０１８３】
タイミング（５）において、スレッド＃２からＬＤ要求がなされるが、今回の干渉判定値は値０である。この結果、一定期間スレッド＃２が待ち状態とされる。タイミング（６）において再度干渉判定値が要求され、干渉判定値が１となるため、スレッド＃２にロードが発行される。
【０１８４】
以降、タイミング（７）、（８）において、スレッド＃１、＃２からそれぞれＳＴ要求、ＬＤ要求がなされ、干渉判定値が１となるため、スレッド＃１、＃２にそれぞれロード、ストアが発行される。
【０１８５】
以上説明した本実施例のマルチスレッド処理装置６、及びエミュレーション用部品に相当する干渉判定部８４によれば、想定される遅延要因について適切なシミュレーションを行うことができる。
【０１８６】
また、新たなソフトウエアやスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【０１８７】
［第６実施例の変形例］
なお、本実施例のマルチスレッド処理装置６において、干渉判定部８４に代えて、干渉判定インターフェース８８を備えるものとしてもよい。図３８は、干渉判定部８４に代えて干渉判定インターフェース８８を備える場合のＬＳＵ８０の構成の概略を示す図である。
【０１８８】
干渉判定インターフェース８８は、例えば外部のデバッグユニットに接続され、干渉判定用信号を受信する。そして、干渉判定用信号をＬＳＵ８０の制御部に出力する。ＬＳＵ８０の制御部は、図３６に示したような判定処理を行って、擬似的干渉状態を発生させる。干渉判定用信号は、例えば、値１が干渉なしを示し、値０が干渉ありを示すものとする。
【０１８９】
図３９は、第６実施例に係るマルチスレッド処理装置６の変形例においてシミュレーションが行われた際のデータアクセスバス１１０の状態変化と、各スレッドのために実行されるフェッチ要求の変化と、干渉判定部８４が出力する干渉判定値の変化と、外部のデバッグユニットの状態変化を示すタイミングチャートである。
【０１９０】
図３９におけるタイミング（１）において、いずれかのスレッドからＬＤ要求がなされる。ＬＳＵ８０は、前述のフローによって干渉判定インターフェース８８が出力している干渉用信号を参照する。干渉判定インターフェース８８は外部のデバッグユニットにアクセスして干渉なしである旨を受信し、値１の干渉判定用信号をＬＳＵ８０の制御部に出力する。この結果、いずれかのスレッドにロードが発行される。外部のデバッグユニットは、干渉の有無を干渉判定インターフェース８８に出力すると、タイミング（２）において次の状態に遷移する。
【０１９１】
タイミング（３）において、いずれかのスレッドからＳＴ要求がなされる。ＬＳＵ８０は、前述のフローによって干渉判定インターフェース８８が出力している干渉用信号を参照する。干渉判定インターフェース８８は外部のデバッグユニットにアクセスして干渉ありである旨を受信し、値０の干渉判定用信号をＬＳＵ８０の制御部に出力する。
【０１９２】
この結果、ＳＴ要求に対して待ち状態とされる。タイミング（４）においても同様である。タイミング（５）において、干渉判定インターフェース８８は値１の干渉判定用信号をＬＳＵ８０の制御部に出力し、ストアが発行される。
【０１９３】
タイミング（６）において、いずれかのスレッドからＬＤ要求がなされる。干渉判定インターフェース８８は値０の干渉判定用信号をＬＳＵ８０の制御部に出力し、ＬＤ要求に対して待ち状態とされる。タイミング（７）において、干渉判定インターフェース８８は値１の干渉判定用信号をＬＳＵ８０の制御部に出力し、ロードが発行される。
【０１９４】
その後、タイミング（８）、（９）においていずれかのスレッドからＳＴ要求、ＬＤ要求がなされ、干渉判定インターフェース８８は値１の干渉判定用信号をＬＳＵ８０の制御部に出力するため、ストア、ロードがそれぞれ発行される。
【０１９５】
係る変形例によっても、上記第６実施例と同様の効果を奏することができる。更に、本実施例の場合、外部のデバッグユニットによって干渉要求を行うため、干渉要求に係るタイミングを、より自由に設定することができる。
【０１９６】
＜第７実施例＞
以下、図面を参照し、本発明の第７実施例に係るマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【０１９７】
［基本構成］
図４０は、本発明の第７実施例に係るマルチスレッド処理装置７のシステム構成例である。本実施例において、第１実施例と共通する構成要素については同一の符号を付して基本機能に関する説明を省略する。
【０１９８】
第７実施例に係るマルチスレッド処理装置７は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、演算器干渉制御部７２が付加されて構成される。
【０１９９】
［シミュレーションのための構成］
本実施例に係るマルチスレッド処理装置７は、干渉が発生しうる演算処理に対して、擬似的干渉を発生させるための構成として、演算器干渉制御部７２を備える。
【０２００】
演算器干渉制御部７２は、例えば所定ビット数の疑似的干渉発生テーブルを保持している。疑似的干渉発生テーブルは、第３実施例で説明したものと同様であってよいため、図示を省略する（図１７参照）。疑似的干渉発生テーブルは、例えば、値１が擬似的干渉なし、値０が擬似的干渉ありと規定する。
【０２０１】
そして、本実施例に係る命令発行部６６は、演算要求がある度に、演算器干渉制御部７２に干渉判定値を要求し、返信された干渉判定値に基づいて擬似的干渉を発生させるか否かを判定する。
【０２０２】
本実施例のマルチスレッド処理装置７は、演算器干渉制御部７２及び命令発行部６６によって擬似的干渉が発生させられた状態で、検査対象ソフトウエア（元々存在するソフトウエア）に関する動作シミュレーションを行うことが可能である。
【０２０３】
図４１は、第７実施例に係るマルチスレッド処理装置７においてシミュレーションが行われた際の演算器７０の状態変化と、各スレッドのために実行される演算要求の変化と、演算器干渉制御部７２が出力する干渉判定値の変化を示すタイミングチャートである。
【０２０４】
図４１におけるタイミング（１）において、いずれかのスレッドにより命令発行部６６に対して演算１要求がなされる。命令発行部６６では、演算器干渉制御部７２に干渉判定値を要求し、干渉判定部８４から１の干渉判定値を受け取る。これによって、演算１が実行される。
【０２０５】
タイミング（２）において、いずれかのスレッドにより命令発行部６６に対して演算２要求がなされる。命令発行部６６では、演算器干渉制御部７２に干渉判定値を要求し、干渉判定部８４から０の干渉判定値を受け取る。これによって、演算２は実行されず、待ち状態となる。タイミング（３）において再度干渉判定値が要求されるが、今回の干渉判定値も０であり、更に一定期間演算２が待ち状態とされる。タイミング（４）において再度干渉判定値が要求され、干渉判定値が１となるため、演算２が実行される。
【０２０６】
タイミング（５）において、いずれかのスレッドにより命令発行部６６に対して演算３要求がなされるが、今回の干渉判定値は０である。この結果、一定期間演算３が待ち状態とされる。タイミング（６）において再度干渉判定値が要求され、干渉判定値が１となるため、演算３が実行される。
【０２０７】
以降、タイミング（７）、（８）において、演算４、５が要求され、干渉判定値が１となるため、演算４、５が実行される。
【０２０８】
以上説明した本実施例のマルチスレッド処理装置７、及びそのエミュレーション用部品に相当する演算器干渉制御部７２によれば、想定される遅延要因について適切なシミュレーションを行うことができる。
【０２０９】
また、新たなソフトウエアやスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【０２１０】
［第７実施例の変形例］
なお、本実施例のマルチスレッド処理装置７において、演算器干渉制御部７２に代えて、演算器干渉制御用インターフェース７４を備えるものとしてもよい。図４２は、演算器干渉制御部７２に代えて演算器干渉制御用インターフェース７４を備える場合のマルチスレッド処理装置７の部分構成例である。
【０２１１】
演算器干渉制御用インターフェース７４は、例えば外部のデバッグユニットに接続され、干渉判定用信号を受信する。そして、干渉判定用信号を命令発行部６６に出力する。干渉判定用信号は、例えば、値１が干渉なしを示し、値０が干渉ありを示すものとする。
【０２１２】
図４３は、第７実施例に係るマルチスレッド処理装置７の変形例においてシミュレーションが行われた際の演算器７０の状態変化と、各スレッドのために実行される演算要求の変化と、演算器干渉制御用インターフェース７４が出力する干渉判定値の変化と、外部のデバッグユニットの状態変化を示すタイミングチャートである。
【０２１３】
図４３におけるタイミング（１）において、いずれかのスレッドから演算１要求がなされる。命令発行部６６では、演算器干渉制御用インターフェース７４に干渉判定値を要求する。演算器干渉制御用インターフェース７４は外部のデバッグユニットにアクセスして干渉なしである旨を受信し、値１の干渉判定用信号を命令発行部６６に出力する。この結果、演算１が実行される。外部のデバッグユニットは、干渉の有無を演算器干渉制御用インターフェース７４に出力すると、タイミング（２）において次の状態に遷移する。
【０２１４】
タイミング（３）において、いずれかのスレッドから演算２要求がなされる。命令発行部６６では、演算器干渉制御用インターフェース７４に干渉判定値を要求し、干渉判定部８４から値０の干渉判定値を受け取る。これによって、演算２は実行されず、待ち状態となる。タイミング（４）において再度干渉判定値が要求されるが、今回の干渉判定値も値０であり、更に一定期間演算２が待ち状態とされる。タイミング（５）において再度干渉判定値が要求され、干渉判定値が値１となるため、演算２が実行される。
【０２１５】
タイミング（６）において、いずれかのスレッドにより命令発行部６６に対して演算３要求がなされるが、今回の干渉判定値は値０である。この結果、一定期間演算３が待ち状態とされる。タイミング（７）において再度干渉判定値が要求され、干渉判定値が値１となるため、演算３が実行される。
【０２１６】
以降、タイミング（８）、（９）において、演算４、５が要求され、干渉判定値が１となるため、演算４、５が実行される。
【０２１７】
係る変形例によっても、上記第７実施例と同様の効果を奏することができる。更に、本実施例の場合、外部のデバッグユニットによって干渉要求を行うため、干渉要求に係るタイミングを、より自由に設定することができる。
【０２１８】
＜第８実施例＞
以下、図面を参照し、本発明の第８実施例に係るマルチスレッド処理装置のマルチスレッド処理装置、及びエミュレーション用部品について説明する。
【０２１９】
図４４は、本発明の第８実施例に係るマルチスレッド処理装置８のシステム構成例である。本実施例において、第１実施例と共通する構成要素については同一の符号を付して基本機能に関する説明を省略する。
【０２２０】
第８実施例に係るマルチスレッド処理装置８は、一般的なマルチスレッド処理装置に、エミュレーション用の部品、又はシミュレーション用のソフトウエア機能部としての、命令フェッチバス干渉部１４０、データバス干渉部１５０、演算器干渉部１６０、及び統合干渉制御部１７０が付加されて構成される。
【０２２１】
命令フェッチバス干渉部１４０は、第１ないし第３実施例の変形例のように、命令フェッチバス２２へのアクセス（以下、単に命令フェッチと称する）に対して、統合干渉制御部１７０（上記各実施例では「外部のデバッグユニット」と表現されている）からの指示に応じて擬似的干渉を発生させると共に、擬似的干渉の完了状態を把握して統合干渉制御部１７０に送信可能な構成となっている。
【０２２２】
データバス干渉部１５０は、第４ないし第６実施例の変形例のように、データアクセスバス１１０へのアクセス（以下、データアクセスと称する）に対して、統合干渉制御部１７０からの指示に応じて擬似的干渉を発生させると共に、擬似的干渉の完了状態を把握して統合干渉制御部１７０に送信可能な構成となっている。
【０２２３】
演算器干渉部１６０は、第７実施例の変形例のように、演算器７０の使用に対して、統合干渉制御部１７０からの指示に応じて擬似的干渉を発生させると共に、擬似的干渉の完了状態を把握して統合干渉制御部１７０に送信可能な構成となっている。
【０２２４】
統合干渉制御部１７０は、例えばマイクロコンピュータであり、各干渉部を制御すると共に、各干渉部が発生させる擬似的干渉の発生スケジュール１７２Ａを格納した記憶装置１７２を内蔵する。擬似的干渉の発生スケジュール１７２Ａは、また、擬似的干渉の順序性に関する情報が付与されており、擬似的干渉の順序性を規定している。なお、記憶装置１７２は、必ずしも統合干渉制御部１７０に内蔵される必要はなく、マルチスレッド処理装置８の如何なる箇所に取り付けられても構わない。
【０２２５】
ここで、順序性とは、ある処理と、他の処理との依存関係を示すものである。例えば、マルチスレッド処理装置における処理の流れは、典型的には、「命令フェッチ→データアクセス→演算」のように実現される。従って、「データアクセス→命令フェッチ」等のような順序で処理が行われることは稀である。また、先行処理の結果に基づいて、後続処理が演算やデータ格納等を行う場合も想定される。擬似的干渉を発生させた上で行うシミュレーションにおいても、係る順序性が遵守されることが望ましい。
【０２２６】
ところが、上記各実施例で説明したように、擬似的干渉の発生タイミングは、本来行われるスレッドの処理に依存して遅延する（すなわち、擬似的干渉自体も干渉の影響を受ける）ものである。従って、単に、擬似的干渉を順番に並べた情報に基づいて順に各干渉部に指示を行うだけでは、擬似的干渉の順序性が遵守されない場合がある。
【０２２７】
本実施例のマルチスレッド処理装置８では、係る課題に鑑み、発生スケジュール１７２Ａが規定する擬似的干渉の順序性を遵守できるように特徴的な制御を行っている。
【０２２８】
発生スケジュール１７２Ａは、例えば、以下のようなデータ構成となっている。ここで、「先行依存」とは、その擬似的干渉よりも先に発生させるべき擬似的干渉を意味する。
【０２２９】
また、干渉要求１、２、…は命令フェッチに発生させる擬似的干渉の要求であり、干渉要求Ａ、Ｂ、…はデータアクセスに発生させる擬似的干渉の要求であり、干渉要求あ、い、…は演算処理に発生させる擬似的干渉の要求である。
【０２３０】
時刻１：干渉要求１（先行依存；なし）、干渉要求あ（先行依存；なし）
時刻２：干渉要求Ａ（先行依存；干渉要求１）
時刻３：干渉要求Ｂ（先行依存；干渉要求１、干渉要求Ａ）、干渉要求い（先行依存；干渉要求Ａ）
（以下略）。
【０２３１】
なお、図４５は、発生スケジュール１７２Ａの内容を時系列で示した概念図である。図中、矢印は依存関係を示している。矢印の先側にある干渉要求が、元側にある干渉要求に依存している。
【０２３２】
図４６は、統合干渉制御部１７０により実行される特徴的な処理の流れを示すフローチャートである。本フローは、マルチスレッド処理装置８のシミュレーション開始と同時に開始される。
【０２３３】
まず、干渉要求リスト、保留リスト、及び完了マークをクリアする（Ｓ４００）。
【０２３４】
そして、当該時刻で発生させるべき擬似的干渉の要求（干渉要求）を発生スケジュール１７２Ａから読み込み（Ｓ４０２）、読み込んだ干渉要求を干渉要求リストに加える（Ｓ４０４）。干渉要求リストは、例えば統合干渉制御部１７０内部のレジスタ等に保持され、当該時刻において先行依存に該当する干渉要求がなければ発行されるべき干渉要求の一覧である。
【０２３５】
次に、干渉要求リストから一の干渉要求を取り出す。（Ｓ４０６）。以下、取り出した干渉要求を干渉要求ｉとする。干渉要求リストに複数の干渉要求が含まれる場合、取り出す順序は、例えばＦＩＦＯに従って行う（これに限定されない）。そして、干渉要求リストから干渉要求ｉを削除する（Ｓ４０８）。
【０２３６】
次に、干渉要求ｉの先行依存に挙げられている干渉要求が、全て完了しているか否かを判定する（Ｓ４１０）。ここで、先行依存に挙げられている干渉要求の完了については、後述するＳ４２０において、発生スケジュール１７２Ａの付属情報等として付与される完了マークを参照して行われる。
【０２３７】
干渉要求ｉの先行依存に挙げられている干渉要求が全て完了している場合は、干渉要求ｉを、命令フェッチバス干渉部１４０、データバス干渉部１５０、演算器干渉部１６０のうち規定されているものに干渉要求ｉを発行する（Ｓ４１２）。
【０２３８】
干渉要求ｉの先行依存に挙げられている干渉要求が全て完了していない場合は、干渉要求ｉを保留リストに加える（Ｓ４１４）。保留リストは、例えば統合干渉制御部１７０内部のレジスタ等に保持され、当該時刻において発行されるべき干渉要求であるが、先行依存に該当する干渉要求が全て完了していないため待ち状態となっている干渉要求のリストである。
【０２３９】
Ｓ４１２又はＳ４１４の処理を行うと、干渉要求リストが空の状態であるか否かを判定する（Ｓ４１６）。干渉要求リストが空の状態でなく、発行要求が残っている場合は、Ｓ４０６に戻る。
【０２４０】
一方、干渉要求リストが空の状態である場合は、保留リストの内容を干渉要求リストにコピーすると共に、保留リストをクリアする（Ｓ４１８）。
【０２４１】
そして。当該時刻までに発行された干渉要求のうち、当該時刻において実際に擬似的干渉が発生したものについては、完了マークを付与する（Ｓ４２０）。
【０２４２】
こうして当該時刻の処理を終了すると、次の時刻が到来するまで待機し（Ｓ４２２）、Ｓ４０２に戻る。
【０２４３】
なお、図４６では、終了条件について記載していないが、例えばＳ４０２において何も読み込まれなかった回数が所定回数以上継続すれば終了する、等と定めればよい。
【０２４４】
図４７は、前述のような発生スケジュール１７２Ａを備える統合干渉制御部１７０が、図４６で説明したフローを実行しつつシミュレーションを行った場合の、シミュレーション結果の一例である。以下、このシミュレーション結果において、各時刻で実行された処理について説明する。
【０２４５】
（１）時刻１において、統合干渉制御部１７０は、当該時刻で発生させるべき干渉要求、すなわち（干渉要求１）、（干渉要求あ）を干渉要求リストに加える。この時点の干渉要求リストの内容は、｛（干渉要求１）、（干渉要求あ）｝となる。
【０２４６】
次に、干渉要求リストから（干渉要求１）を取り出し、干渉要求ｉとする。干渉要求１は干渉要求リストから削除される。この時点の干渉要求リストの内容は、｛（干渉要求あ）｝となる。干渉要求１は先行依存がないため、命令フェッチバス干渉部１４０に干渉要求が通知される。ところが、時刻１においては、スレッドによる命令フェッチ（図では通常フェッチと表記した）が行われているため、命令フェッチバス干渉部１４０による擬似的干渉のための命令フェッチ（図では干渉フェッチ１と表記した）が実行されず、待ち状態となる。
【０２４７】
次に、干渉要求リストから（干渉要求あ）を取り出し、干渉要求ｉとする。（干渉要求あ）は干渉要求リストから削除される。この時点で干渉要求リストは空の状態となる。（干渉要求あ）は先行依存がないため、演算器干渉部１６０に干渉要求が通知される。演算器干渉部１６０は、干渉演算を発生させる。
【０２４８】
そして、干渉要求リストが空の状態となったため、保留リストの内容を干渉要求リストにコピーすると共に保留リストをクリアし（実際には保留リストも空の状態であるため、何も変化は生じない）、次の時刻まで待機する。干渉演算は時刻１の時点では完了しない。
【０２４９】
（２）時刻２において、当該時刻で発生させるべき干渉要求、すなわち（干渉要求Ａ）、を干渉要求リストに加える。この時点の干渉要求リストの内容は、｛（干渉要求Ａ）｝となる。
【０２５０】
次に、干渉要求リストから（干渉要求Ａ）を取り出し、干渉要求ｉとする。（干渉要求Ａ）は干渉要求リストから削除される。この時点の干渉要求リストは空の状態となる。（干渉要求Ａ）は、（干渉要求１）を先行依存とし、且つ（干渉要求１）が完了していないため、保留リストに加えられる。
【０２５１】
そして、干渉要求リストが空の状態となったため、保留リストの内容を干渉要求リストにコピーすると共に保留リストをクリアし、次の時刻まで待機する。この時点の干渉要求リストの内容は、｛（干渉要求Ａ）｝となる。
【０２５２】
時刻２においては、通常フェッチが終了しているため、干渉フェッチ１が開始される。また、干渉演算が完了するため、（干渉要求あ）に対して完了マークが付与される。
【０２５３】
（３）時刻３において、統合干渉制御部１７０は、当該時刻で発生させるべき干渉要求、すなわち（干渉要求Ｂ）、（干渉要求い）を干渉要求リストに加える。この時点の干渉要求リストの内容は、｛（干渉要求Ａ）、（干渉要求Ｂ）、（干渉要求い）｝となる。
【０２５４】
次に、干渉要求リストから（干渉要求Ａ）を取り出し、干渉要求ｉとする。（干渉要求Ａ）は干渉要求リストから削除される。この時点の干渉要求リストの内容は、｛（干渉要求Ｂ）、（干渉要求い）｝となる。（干渉要求Ａ）は、（干渉要求１）を先行依存とし、且つ（干渉要求１）が完了していないため、保留リストに加えられる。
【０２５５】
次に、干渉要求リストから（干渉要求Ｂ）を取り出し、干渉要求ｉとする。（干渉要求Ｂ）は干渉要求リストから削除される。この時点の干渉要求リストの内容は、｛（干渉要求い）｝となる。（干渉要求Ｂ）は、（干渉要求１）及び（干渉要求Ａ）を先行依存とし、且つこれらのいずれもが完了していないため、保留リストに加えられる。
【０２５６】
次に、干渉要求リストから（干渉要求い）を取り出し、干渉要求ｉとする。（干渉要求い）は干渉要求リストから削除される。この時点の干渉要求リストは空の状態となる。（干渉要求い）は、（干渉要求Ａ）を先行依存とし、且つ（干渉要求Ａ）が完了していないため、保留リストに加えられる。
【０２５７】
そして、干渉要求リストが空の状態となったため、保留リストの内容を干渉要求リストにコピーすると共に保留リストをクリアし、次の時刻まで待機する。この時点の干渉要求リストの内容は、｛（干渉要求Ａ）、（干渉要求Ｂ）、（干渉要求い）｝となる。
【０２５８】
時刻３においては、干渉フェッチ１が完了するため、（干渉要求１）に対して完了マークが付与される。
【０２５９】
（４）時刻４において、統合干渉制御部１７０は、干渉要求リストから（干渉要求Ａ）を取り出し、干渉要求ｉとする。（干渉要求Ａ）は干渉要求リストから削除される。この時点の干渉要求リストの内容は、｛（干渉要求Ｂ）、（干渉要求い）｝となる。（干渉要求Ａ）は、（干渉要求１）を先行依存とし、且つ（干渉要求１）が完了しているため、データバス干渉部１５０に干渉要求が通知される。データバス干渉部１５０は、擬似的干渉を発生させるためのデータバスアクセス（図では干渉データＡと表記した）を行う。
【０２６０】
次に、干渉要求リストから（干渉要求Ｂ）を取り出し、干渉要求ｉとする。（干渉要求Ｂ）は干渉要求リストから削除される。この時点の干渉要求リストの内容は、｛（干渉要求い）｝となる。（干渉要求Ｂ）は、（干渉要求１）及び（干渉要求Ａ）を先行依存とし、且つ（干渉要求１）が完了していないため、保留リストに加えられる。
【０２６１】
次に、干渉要求リストから（干渉要求い）を取り出し、干渉要求ｉとする。（干渉要求い）は干渉要求リストから削除される。この時点の干渉要求リストは空の状態となる。（干渉要求い）は、（干渉要求Ａ）を先行依存とし、且つ（干渉要求Ａ）が完了していないため、保留リストに加えられる。
【０２６２】
そして、干渉要求リストが空の状態となったため、保留リストの内容を干渉要求リストにコピーすると共に保留リストをクリアし、次の時刻まで待機する。この時点の干渉要求リストの内容は、｛（干渉要求Ｂ）、（干渉要求い）、｝となる。
【０２６３】
（５）時刻５において、統合干渉制御部１７０は、干渉要求リストから干渉要求リストから（干渉要求Ｂ）を取り出し、干渉要求ｉとする。（干渉要求Ｂ）は干渉要求リストから削除される。この時点の干渉要求リストの内容は、｛（干渉要求い）｝となる。（干渉要求Ｂ）は、（干渉要求１）及び（干渉要求Ａ）を先行依存とし、且つ（干渉要求１）が完了していないため、保留リストに加えられる。
【０２６４】
次に、干渉要求リストから（干渉要求い）を取り出し、干渉要求ｉとする。（干渉要求い）は干渉要求リストから削除される。この時点の干渉要求リストは空の状態となる。（干渉要求い）は、（干渉要求Ａ）を先行依存とし、且つ（干渉要求Ａ）が完了していないため、保留リストに加えられる。
【０２６５】
そして、干渉要求リストが空の状態となったため、保留リストの内容を干渉要求リストにコピーすると共に保留リストをクリアし、次の時刻まで待機する。この時点の干渉要求リストの内容は、｛（干渉要求Ｂ）、（干渉要求い）、｝となる。
【０２６６】
時刻５においては、干渉データＡが完了するため、（干渉要求Ａ）に対して完了マークが付与される。
【０２６７】
（６）時刻６において、統合干渉制御部１７０は、干渉要求リストから干渉要求リストから（干渉要求Ｂ）を取り出し、干渉要求ｉとする。（干渉要求Ｂ）は干渉要求リストから削除される。この時点の干渉要求リストの内容は、｛（干渉要求い）｝となる。（干渉要求Ｂ）は、（干渉要求１）及び（干渉要求Ａ）を先行依存とし、且つそのいずれもが完了しているため、データバス干渉部１５０に干渉要求が通知される。データバス干渉部１５０は、擬似的干渉を発生させるためのデータバスアクセス（図では干渉データＢと表記した）を行う。
【０２６８】
次に、干渉要求リストから（干渉要求い）を取り出し、干渉要求ｉとする。（干渉要求い）は干渉要求リストから削除される。この時点の干渉要求リストは空の状態となる。（干渉要求い）は、（干渉要求Ａ）を先行依存とし、且つ（干渉要求Ａ）が完了しているため、演算器干渉部１６０に干渉要求が通知される。演算器干渉部１６０は、干渉演算を発生させる。
【０２６９】
そして、干渉要求リストが空の状態となったため、保留リストの内容を干渉要求リストにコピーすると共に保留リストをクリアし、次の時刻まで待機する。この時点の干渉要求リストは空の状態となる。
【０２７０】
このように、本実施例に係る統合干渉制御部１７０では、擬似的干渉の順序性を規定した、擬似的干渉の発生スケジュール１７２Ａに従って、順序性を遵守しつつ擬似的干渉を発生させている。この結果、実際の使用場面に、より近い状態を再現してシミュレーションを行うことができる。
【０２７１】
もとより、第１ないし第７実施例と同様に、想定される遅延要因について適切なシミュレーションを行うことができる。
【０２７２】
また、新たなソフトウエアやスレッドを実際に追加することなく、これらが追加された場合の既存のソフトウエアやスレッドへの影響を知ることができ、テスト工数を削減することができる。すなわち、低コストにシミュレーションを行うことができる。
【０２７３】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【０２７４】
１、２、３、４、５、６、７、８  マルチスレッド処理装置
２０  ＲＯＭ
２２  命令フェッチバス
３０  フェッチバスコントローラ
３２  干渉要求制御部
３４  干渉時間管理部
４０  命令フェッチユニット
４２  干渉用フェッチ要求生成部
４４  干渉判定部
４６  干渉用フェッチ要求インターフェース
４８  干渉判定インターフェース
６６  命令発行部
７０  演算器
７２  演算器干渉制御部
７４  演算器干渉制御用インターフェース
８０  ＬＳＵ
８２  干渉用ＬＤＳＴ要求生成部
８４  干渉判定部
８６  干渉用ＬＤＳＴ要求インターフェース
８８  干渉判定インターフェース
１００  ＲＡＭ
１１０  データアクセスバス
１２０  データバスコントローラ
１２２  干渉要求制御部
１２４  干渉時間管理部
１２６  干渉要求インターフェース
１４０  命令フェッチバス干渉部
１５０  データバス干渉部
１６０  演算器干渉部
１７０  統合干渉制御部
１７２  記憶装置
１７２Ａ  発生スケジュール
【図１】
2012027600.tif 000003
【図２】
2012027600.tif 000004
【図３】
2012027600.tif 000005
【図４】
2012027600.tif 000006
【図５】
2012027600.tif 000007
【図６】
2012027600.tif 000008
【図７】
2012027600.tif 000009
【図８】
2012027600.tif 000010
【図９】
2012027600.tif 000011
【図１０】
2012027600.tif 000012
【図１１】
2012027600.tif 000013
【図１２】
2012027600.tif 000014
【図１３】
2012027600.tif 000015
【図１４】
2012027600.tif 000016
【図１５】
2012027600.tif 000017
【図１６】
2012027600.tif 000018
【図１７】
2012027600.tif 000019
【図１８】
2012027600.tif 000020
【図１９】
2012027600.tif 000021
【図２０】
2012027600.tif 000022
【図２１】
2012027600.tif 000023
【図２２】
2012027600.tif 000024
【図２３】
2012027600.tif 000025
【図２４】
2012027600.tif 000026
【図２５】
2012027600.tif 000027
【図２６】
2012027600.tif 000028
【図２７】
2012027600.tif 000029
【図２８】
2012027600.tif 000030
【図２９】
2012027600.tif 000031
【図３０】
2012027600.tif 000032
【図３１】
2012027600.tif 000033
【図３２】
2012027600.tif 000034
【図３３】
2012027600.tif 000035
【図３４】
2012027600.tif 000036
【図３５】
2012027600.tif 000037
【図３６】
2012027600.tif 000038
【図３７】
2012027600.tif 000039
【図３８】
2012027600.tif 000040
【図３９】
2012027600.tif 000041
【図４０】
2012027600.tif 000042
【図４１】
2012027600.tif 000043
【図４２】
2012027600.tif 000044
【図４３】
2012027600.tif 000045
【図４４】
2012027600.tif 000046
【図４５】
2012027600.tif 000047
【図４６】
2012027600.tif 000048
【図４７】
2012027600.tif 000049