(57)【特許請求の範囲】
【請求項１】
プログラムに記述された順に命令を発行する命令発行制御部と、
前記プログラムに順に記述された命令のうちの特定命令のアドレスを保持し、前記命令発行制御部に発行された命令のアドレスが前記特定命令のアドレスに一致する場合、ストップ命令検出指示を出力する命令アドレスチェック部と、
前記命令発行制御部に発行され、命令キャッシュ部に保持された命令を順にデコードし、前記命令アドレスチェック部から出力された前記ストップ命令検出指示を受け取った場合、前記特定命令のデコードを中断し、ストップ命令検出報告を出力する命令デコーダと、
時間同期タイマを有する実行再開フィルタ部と
を具備し、
前記命令発行制御部は、前記ストップ命令検出報告に応じて、命令の発行を中断し、
前記実行再開フィルタ部は、
前記ストップ命令検出報告に応じて、命令の実行が中断している旨をユーザに通知するための命令実行停止報告を出力し、
ユーザによる実行再開指示を受け取ってから、前記時間同期タイマが特定の時間に到達したとき、前記ユーザによる実行再開指示を命令実行再開指示として前記命令発行制御部に出力し、
前記命令発行制御部は、前記命令実行再開指示に応じて、中断した命令の発行を再開するアウトオブオーダー実行プロセッサ。
【請求項２】
前記命令デコーダにデコードされた命令を順に実行し、前記命令デコーダにデコードされた全ての命令を実行したとき、仕掛命令実行完了報告を出力する命令実行部と、
前記仕掛命令実行完了報告を受け取ったとき、命令実行再開要求を出力するシステムコントロール部と
を更に具備し、
前記実行再開フィルタ部は、前記ストップ命令検出報告に応じて、実行中断を表す実行中断フラグを保持し、前記実行中断フラグを保持している場合、前記命令実行再開要求に応じて、前記命令実行停止報告を出力する
請求項１に記載のアウトオブオーダー実行プロセッサ。
【請求項３】
前記命令デコーダは、前記ストップ命令検出指示を受け取った場合、前記特定命令のデコードを中断し、前記ストップ命令検出報告と命令実行再開要求とを出力し、
前記システムコントロール部は、前記仕掛命令実行完了報告を受け取ったとき、前記命令デコーダからの命令実行再開要求を前記命令実行再開要求として出力する
請求項２に記載のアウトオブオーダー実行プロセッサ。
【請求項４】
前記実行再開フィルタ部は、前記ユーザによる命令実行再開指示を受け取ってから、前記時間同期タイマが特定の時間に到達したとき、内部で保持している前記実行中断フラグを消去した上で、前記ユーザによる命令実行再開指示を前記命令実行再開指示として前記命令発行制御部に出力する
請求項２又は３に記載のアウトオブオーダー実行プロセッサ。
【請求項５】
前記命令実行停止報告に応じて、命令の実行が中断している旨をユーザに通知し、その通知に対してユーザによる命令実行再開指示を受け付ける診断部
を更に具備する請求項１〜４のいずれかに記載のアウトオブオーダー実行プロセッサ。
【請求項６】
前記命令発行制御部に発行された命令のアドレスを保持する命令アドレスレジスタ部を更に具備し、
前記命令アドレスチェック部は、前記命令アドレスレジスタ部に保持された命令のアドレスが前記特定命令のアドレスに一致する場合、前記ストップ命令検出指示を出力する
請求項１〜５のいずれかに記載のアウトオブオーダー実行プロセッサ。
【請求項７】
命令デコーダを有するプロセッサを用いる方法であって、
（Ｓ１）  プログラムに記述された順に命令を発行するステップと、
（Ｓ２）  前記（Ｓ１）のステップに発行された命令のアドレスが、前記プログラムに順に記述された命令のうちの特定命令のアドレスに一致する場合、ストップ命令検出指示を出力するステップと、
（Ｓ３）  前記（Ｓ１）のステップに発行され、命令キャッシュ部に保持された命令を順にデコードするステップと、
（Ｓ４）  前記ストップ命令検出指示を受け取った場合、前記特定命令のデコードを中断し、ストップ命令検出報告を出力するステップと、
（Ｓ５）  前記ストップ命令検出報告に応じて、命令の発行を中断するステップと、
（Ｓ６）  前記ストップ命令検出報告に応じて、命令の実行が中断している旨をユーザに通知するための命令実行停止報告を出力するステップと、
（Ｓ７）  ユーザによる実行再開指示を受け取ってから、特定の時間に到達したとき、前記ユーザによる実行再開指示を命令実行再開指示として出力するステップと、
（Ｓ８）  前記命令実行再開指示に応じて、中断した命令の発行を再開するステップと
を具備するアウトオブオーダー実行方法。
【請求項８】
（Ｓ９）  前記（Ｓ３）のステップによりデコードされた命令を順に実行するステップと、
（Ｓ１０）  前記（Ｓ３）のステップによりデコードされた全ての命令を実行したとき、仕掛命令実行完了報告を出力するステップと、
（Ｓ１１）  前記仕掛命令実行完了報告を受け取ったとき、命令実行再開要求を出力するステップと
を更に具備し、
前記（Ｓ６）のステップは、前記ストップ命令検出報告に応じて、実行中断を表す実行中断フラグを保持し、前記実行中断フラグを保持している場合、前記命令実行再開要求に応じて、前記命令実行停止報告を出力する
請求項７に記載のアウトオブオーダー実行方法。
【請求項９】
前記（Ｓ４）のステップは、前記ストップ命令検出指示を受け取った場合、前記特定命令のデコードを中断し、前記ストップ命令検出報告と命令実行再開要求とを出力し、
前記（Ｓ１１）のステップは、前記仕掛命令実行完了報告を受け取ったとき、前記命令デコーダからの命令実行再開要求を前記命令実行再開要求として出力する
請求項８に記載のアウトオブオーダー実行方法。
【請求項１０】
前記（Ｓ７）のステップは、前記ユーザによる命令実行再開指示を受け取ってから、時間同期タイマが特定の時間に到達したとき、内部で保持している前記実行中断フラグを消去した上で、前記ユーザによる命令実行再開指示を前記命令実行再開指示として出力する
請求項８又は９に記載のアウトオブオーダー実行方法。
【請求項１１】
（Ｓ１２）  前記命令実行停止報告に応じて、命令の実行が中断している旨をユーザに通知し、その通知に対してユーザによる命令実行再開指示を受け付けるステップ
を更に具備する
請求項７〜１０のいずれかに記載のアウトオブオーダー実行方法。
【請求項１２】
（Ｓ１３）  前記（Ｓ１）のステップに発行された命令のアドレスを保持するステップ
を更に具備し、
前記（Ｓ２）のステップは、前記（Ｓ１３）のステップに保持された命令のアドレスが前記特定命令のアドレスに一致する場合、前記ストップ命令検出指示を出力する
請求項７〜１１のいずれかに記載のアウトオブオーダー実行方法。
【請求項１３】
請求項７〜１２のいずれかに記載のアウトオブオーダー実行方法の各ステップをコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インオーダー（Ｉｎ−Ｏｒｄｅｒ）に比べて高速に動作するアウトオブオーダー（Ｏｕｔ−ｏｆ−Ｏｒｄｅｒ）実行プロセッサに関する。
【背景技術】
【０００２】
プログラムに記述された順に命令を実行する場合、その方式はインオーダーとアウトオブオーダーとに分けられる。プログラムに記述された命令が第１命令、第２命令、第３命令、…の順である場合を想定する。
【０００３】
インオーダーの場合、プログラムに記述された命令が順に実行される。インオーダーでは、例えば、第１命令、第２命令、第３命令、…の順に実行される。
【０００４】
アウトオブオーダーの場合、実行時間の短縮のために、プログラムに記述された命令の順序が変更されて実行される。アウトオブオーダーでは、例えば、第２命令と第３命令の順番が入れ替わり、第１命令、第３命令、第２命令、…の順に実行され、第３命令が実行されている間に、メモリアクセスが行われるものとする。ここで、第３命令は、割り込みにより、第２命令の結果に依存しないものとする。この場合、正確な割り込みを実現しない。
【０００５】
しかし、従来のアウトオブオーダー実行プロセッサにおいて、次のような課題がある。
【０００６】
第１の課題として、実行される命令の順序が変更されるため、特定命令の実行の中断が困難なことである。即ち、命令単位で実行中断可能な状態を作り出すことは困難であった。
【０００７】
第２の課題として、正確な実行の停止のサポートには大きいコストが必要で、かつ、ソフトウェア制御が必要であるため、特定命令を実行するタイミングでのメモリ状態のダンプができないことである。例えば、メモリダンプをとるとプログラムの実行を最初から再度実行する必要があり、長時間ジョブの解析の妨げとなっていた。
【０００８】
第３の課題として、近年の並列実行をサポートするプロセッサでの実行再開は、複数のコアをサイクル単位で同期させる必要があり、これができないことである。
【０００９】
命令の処理に関連する技術を紹介する。
【００１０】
特許文献１には、プロセッサが記載されている。プロセッサは、命令のデコード情報と実行結果を蓄えるリオーダバッファと、１個以上の演算器を持つアウトオブオーダー実行プロセッサである。このプロセッサは、先行する命令が実行を完了しないと実行不可能な同期命令を検出する同期命令検出デコーダと、リオーダバッファにおいて同期命令検出デコーダの検出結果を記憶する同期フラグと、リオーダバッファの同期フラグが立っている命令の先行命令が全て実行完了したことを検出する同期完了検出回路と、同期完了検出回路の結果によって、リオーダバッファの同期フラグが立っている命令を演算器に投入させる同期命令発行回路を備え、同期命令の実行結果に依存しない後続命令は自らも同期命令でない限りアウトオブオーダー実行することを特徴としている。
【００１１】
特許文献２には、計算機システムが記載されている。計算機システムは、計算機システムに障害が発生した際に、主記憶部内の内容をメモリダンプとして外部記憶部に保存するものである。この計算機システムは、計算機システム内の状態を監視し、計算機システムが障害を起こしたと判断した場合に、メモリダンプ採取を行うための指示を行う状態監視部と、状態監視部からの指示に基づいて主記憶部の内容を外部記憶部に保存するメモリダンプ採取部と、状態監視部からの指示に基づき、計算機システムのリブートを行う起動初期化プログラム部と、メモリダンプ採取部にメモリダンプ採取を行わせるリセット手段とを備えたことを特徴としている。
【００１２】
特許文献３には、情報処理装置が記載されている。情報処理装置は、ソフトウェア命令の先取りを行ってこの先取り命令をその実行まで保持する複数ステージからなるプログラムバッファを有し、主記憶装置に対する要求アドレスとソフトウェア命令の実行停止予定アドレスとを比較して両アドレスが一致したときにソフトウェア命令の実行停止をなすようにしたものである。この情報処理装置は、両アドレスの比較結果をプログラムバッファ内の各ステージのソフトウェア命令に対応して保持する比較結果保持手段と、プログラムバッファ内の実行しようとするソフトウェア命令が格納されているステージに対応する比較結果保持手段の内容が一致したときに、引続くソフトウェア命令の実行を抑止制御する制御手段とを含むことを特徴としている。
【００１３】
特許文献４には、情報処理装置が記載されている。情報処理装置は、先行制御方式を採用するものである。この情報処理装置は、一つ又は複数の特定条件を設定する第１の手段と、命令列実行中に前記第１の手段で設定した特定の条件を検出する第２の手段と、前記第２の手段により特定の条件を検出したときに、前記命令列の実行を一次中断してある一命令を実行した後、前記命令列の実行を再開する第３の手段とを具備したことを特徴としている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００１−５１８４６号公報（請求項１）
【特許文献２】特開２００７−９４５３７号公報（請求項１）
【特許文献３】特開平１−２４０９４１号公報（請求項１）
【特許文献４】特開平５−１４３３７８号公報（請求項１）
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明の課題は、特定命令に対して正確な実行中断・再開を行うアウトオブオーダー実行プロセッサを提供することにある。
【課題を解決するための手段】
【００１６】
本発明のアウトオブオーダー実行プロセッサは、命令発行制御部と、命令アドレスチェック部と、命令デコーダと、実行再開フィルタ部とを具備している。命令発行制御部は、プログラムに記述された順に命令を発行する。命令アドレスチェック部は、プログラムに順に記述された命令のうちの特定命令のアドレスを保持し、命令発行制御部に発行された命令のアドレスが特定命令のアドレスに一致する場合、ストップ命令検出指示を出力する。命令デコーダは、命令発行制御部に発行された命令を順にデコードし、ストップ命令検出指示を受け取った場合、特定命令のデコードを中断し、ストップ命令検出報告を出力する。命令発行制御部は、ストップ命令検出報告に応じて、命令の発行を中断する。実行再開フィルタ部は、ストップ命令検出報告に応じて、命令の実行が中断している旨をユーザに通知するための命令実行停止報告を出力する。実行再開フィルタ部は、時間同期タイマを有し、ユーザによる実行再開指示を受け取ってから、時間同期タイマが特定の時間に到達したとき、ユーザによる実行再開指示を命令実行再開指示として命令発行制御部に出力する。命令発行制御部は、命令実行再開指示に応じて、中断した命令の発行を再開する。
【発明の効果】
【００１７】
以上により、本発明のアウトオブオーダー実行プロセッサによれば、上述の構成・動作により、特定命令に対して正確な実行中断・再開を行うことができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の実施形態によるアウトオブオーダー実行プロセッサの構成を示している。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して、本発明の実施形態によるアウトオブオーダー実行プロセッサについて詳細に説明する。
【００２０】
［構成］
図１は、本発明の実施形態によるアウトオブオーダー実行プロセッサの構成を示している。
【００２１】
本発明の実施形態によるアウトオブオーダー実行プロセッサは、命令発行制御部１０１、命令アドレスレジスタ部１０２、命令キャッシュ部１０３、命令アドレスチェック部１０４、命令デコーダ１０５、命令実行部１０６、システムコントロール部１０７、実行再開フィルタ部１０８、診断部１０９を具備している。
【００２２】
本発明の実施形態によるアウトオブオーダー実行プロセッサは、コンピュータに適用され、そのコンピュータは、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、図示しない記録媒体である記憶部とを具備している。記憶部には、コンピュータに実行させるためのコンピュータプログラムが記憶されている。ＣＰＵは、起動時などに記憶部からコンピュータプログラムを読み取って実行する。コンピュータプログラムは、上記の命令発行制御部１０１、命令アドレスレジスタ部１０２、命令キャッシュ部１０３、命令アドレスチェック部１０４、命令デコーダ１０５、命令実行部１０６、システムコントロール部１０７、実行再開フィルタ部１０８、診断部１０９を含んでいる。これらの動作については後述する。
【００２３】
上述のコンピュータは、例えば、ベクトル型スーパーコンピュータであるものとする。この場合、本発明の実施形態によるアウトオブオーダー実行プロセッサは、ベクトル型スーパーコンピュータのスカラプロセッサ部分に利用される。
【００２４】
［動作］
次に、本発明の実施形態によるアウトオブオーダー実行プロセッサの動作を説明する。
【００２５】
命令発行制御部１０１は、プログラムに記述された順に命令を発行する。
【００２６】
命令アドレスレジスタ部１０２は、命令発行制御部１０１に発行された命令のアドレスを保持する。
【００２７】
命令キャッシュ部１０３は、命令アドレスレジスタ部１０２に保持されたアドレスが表す命令を保持する。即ち、命令発行制御部１０１に発行された命令を保持する。
【００２８】
命令アドレスチェック部１０４は、プログラムに順に記述された命令のうちの特定命令のアドレスを保持している。命令アドレスチェック部１０４は、命令アドレスレジスタ部１０２に保持されたアドレスが特定命令のアドレスと一致する場合、ストップ命令検出指示Ａを命令デコーダ１０５に出力する。
【００２９】
命令デコーダ１０５は、命令キャッシュ部１０３に保持された命令を順にデコードする。命令デコーダ１０５は、ストップ命令検出指示Ａを受け取った場合、命令キャッシュ部１０３に保持された特定命令のデコードを中断し、ストップ命令検出報告Ｂを実行再開フィルタ部１０８と命令発行制御部１０１とに出力し、命令実行再開要求Ｂ’をシステムコントロール部１０７に出力する。このとき、実行再開フィルタ部１０８は、ストップ命令検出報告Ｂに応じて、実行中断を表す実行中断フラグ１１０を内部で保持する。また、命令発行制御部１０１は、ストップ命令検出報告Ｂに応じて、命令の発行を中断する。
【００３０】
命令実行部１０６は、命令デコーダ１０５にデコードされた命令を順に実行する。命令実行部１０６は、命令デコーダ１０５にデコードされた全ての命令を実行したとき、仕掛命令実行完了報告Ｃをシステムコントロール部１０７に出力する。
【００３１】
システムコントロール部１０７は、実行される命令を監視する。システムコントロール部１０７は、命令実行部１０６から仕掛命令実行完了報告Ｃを受け取ったとき、命令デコーダ１０５からの命令実行再開要求Ｂ’を命令実行再開要求Ｄとして実行再開フィルタ部１０８に出力する。
【００３２】
実行再開フィルタ部１０８は、中断状態フラグ１１０を保持している場合、命令実行再開要求Ｄに応じて、命令の実行が中断している旨をユーザに通知するための命令実行停止報告を診断部１０９に出力する。
【００３３】
診断部１０９は、命令実行停止報告に応じて、命令の実行が中断している旨をユーザに通知する。
【００３４】
この際にメモリダンプの取得や、メモリへのデータの書き込み（チェックポイントイメージの展開）などが実施できる。
【００３５】
実行再開はユーザによる診断部１０９への実行再開指示で実現される。診断部１０９は、上記の通知に対して、ユーザによる実行再開指示を受け付ける。診断部１０９は、ユーザにより実行再開指示が行われた場合、その実行再開指示を実行再開フィルタ１０８に出力する。
【００３６】
実行再開フィルタ部１０８は、ユーザによる実行再開指示を受け取ってから、時間同期タイマ１１１によりカウントを開始する。カウントの結果、時間同期タイマ１１１が特定の時間に到達したとき、即ち、特定の時間が経過したとき、内部で保持している実行中断フラグ１１０を消去した上で、ユーザによる実行再開指示を命令実行再開指示Ｅとして命令発行制御部１０１に出力する。
【００３７】
この際に、実行再開フィルタ部１０８内の時間同期タイマ１１１を利用して複数のプロセッサコアが時間同期して実行再開することができる。
【００３８】
命令発行制御部１０１は、命令実行再開指示Ｅに応じて、中断した命令の発行を再開する。
【００３９】
なお、時間同期タイマ１１１による時間同期は、Ｎｅｔｗｏｒｋ  Ｔｉｍｉｎｇ  Ｐｒｏｔｏｃｏｌなどで利用されるネットワーク遅延を考慮した時間同期を採用することで容易に実現可能である。通常のソフトウェア実装の場合にはマイクロ秒単位での時間同期が限界だが、ハードウェアで厳密にタイミングを計測することで数百ピコ秒単位の時間同期が実現できる。
【００４０】
［効果］
以上の説明により、本発明の実施形態によるアウトオブオーダー実行プロセッサによれば、第１の効果として、上述の構成・動作により、特定命令に対して正確な実行中断・再開を実現することができる。
【００４１】
また、本発明の実施形態によるアウトオブオーダー実行プロセッサによれば、第２の効果として、実行中断の実現でソフトウェア割り込みを利用していないので、実行中断時の正確なメモリダンプの採取ができることである。
【００４２】
また、本発明の実施形態によるアウトオブオーダー実行プロセッサによれば、第３の効果として、数百ピコ秒単位の同期状態からの実行再開を実現しているので、同一のチェックポイントのメモリダンプから実行状態の再現を実現できることである。
【符号の説明】
【００４３】
１０１    命令発行制御部、
１０２    命令アドレスレジスタ部、
１０３    命令キャッシュ部、
１０４    命令アドレスチェック部、
１０５    命令デコーダ、
１０６    命令実行部、
１０７    システムコントロール部、
１０８    実行再開フィルタ部、
１０９    診断部、
１１０    実行中断フラグ、
１１１    時間同期タイマ、
Ａ    ストップ命令検出指示、
Ｂ    ストップ命令検出報告、
Ｂ’    命令実行再開要求、
Ｃ    仕掛命令実行完了報告、
Ｄ    命令実行再開要求、
Ｅ    命令実行再開指示
【図１】
0005621232.tif 000002