(57)【要約】【課題】命令間の追い越し機能を備えた情報処理装置において、命令間の順序保障制御を行うために実装するハードウェア量を少なくした命令実行制御装置を提供する。【解決手段】本願発明の命令実行制御装置は、命令発行装置から受信された命令であって、実行が保留されているものを記憶する記憶手段と、前記命令を受信した順序以外の順序で実行する手段であって、前記命令発行装置からバリア命令を受信すると、当該バリア命令受信前から前記記憶手段に記憶されていた第一の前記命令の実行が開始するまで、当該バリア命令の後に受信した第二の前記命令の実行を前記第一、及び、前記第二の前記命令の命令種別が所定の組み合わせである場合に保留する実行手段と、を備える。【選択図】      図１
2014153851.tif 000002
【特許請求の範囲】
【請求項１】
命令発行装置から受信された命令であって、実行が保留されているものを記憶する記憶手段と、
前記命令を受信した順序以外の順序で実行する手段であって、前記命令発行装置からバリア命令を受信すると、当該バリア命令受信前から前記記憶手段に記憶されていた第一の前記命令の実行が開始するまで、当該バリア命令の後に受信した第二の前記命令の実行を、前記第一、及び、前記第二の前記命令の命令種別が所定の組み合わせである場合に保留する実行手段と、
を備える命令実行制御装置。
【請求項２】
実行待ちの前記命令の命令情報と、当該命令が前記バリア命令前に発行されたことを示すバリア前情報と、当該命令が前記バリア命令前に発行された前記命令を追い越すことができないことを示す追い越し禁止情報を対応付けて記憶するためのエントリを複数備えた前記記憶手段と、
前記命令発行装置から前記バリア命令を受信したときに、前記命令の命令情報が格納されている前記エントリにおける前記バリア前情報を設定し、前記命令発行装置から前記バリア命令以外の前記第二の前記命令の命令情報が何れかの前記エントリに格納されたときに、当該エントリの前記命令種別と、前記バリア前情報が設定された、当該エントリを除くいずれかの前記エントリの、前記第一の前記命令の前記命令情報の前記命令種別が、前記所定の組み合わせである場合、当該エントリにおける前記追い越し禁止情報を、当該エントリを除く前記エントリに対応づけて設定する設定手段と、を備え、
前記実行手段は、前記エントリの前記追い越し禁止情報が設定されている場合、当該エントリに前記命令情報が格納された前記命令の実行を保留する、
請求項１の命令実行制御装置。
【請求項３】
前記命令発行装置から前記バリア命令を受信するたびに、２つの値を交互に切り替える切り替えフラグをさらに備え、
前記記憶手段は、前記切り替えフラグの値に対応付けられた２つのバッファを備え、前記命令発行装置から受信した、前記バリア命令を除く実行待ちの前記命令の命令情報を、前記切り替えフラグの値が切り替わった後、前記切り替えフラグの値で特定される前記バファアが一旦空になった後に、当該バッファに記憶し、
前記実行手段は、前記切り替えフラグが示す前記バッファとは異なる前記バッファに記憶されている、前記第一の前記命令の実行を開始するまで、前記切り替えフラグが示す前記バッファに記憶されている前記第二の前記命令の実行を保留する、
請求項１の命令実行制御装置。
【請求項４】
請求項１乃至３の命令実行制御装置と、前記命令発行装置とを包含する命令実行制御システム。
【請求項５】
命令発行装置から受信された命令であって、実行が保留されているものを記憶域に記憶し、
前記命令を受信した順序以外の順序で実行する際に、前記命令発行装置からバリア命令を受信すると、当該バリア命令受信前から前記記憶域に記憶されていた第一の前記命令の実行が開始するまで、当該バリア命令の後に受信した第二の前記命令の実行を、前記第一、及び、前記第二の前記命令の命令種別が所定の組み合わせである場合に保留する、
命令実行制御方法。
【請求項６】
実行待ちの前記命令の命令情報と、当該命令が前記バリア命令前に発行されたことを示すバリア前情報と、当該命令が前記バリア命令前に発行された前記命令を追い越すことができないことを示す追い越し禁止情報を対応付けて複数のエントリに記憶し、
前記命令発行装置から前記バリア命令を受信したときに、前記命令の命令情報が格納されている前記エントリにおける前記バリア前情報を設定し、前記命令発行装置から前記バリア命令以外の前記第二の前記命令の命令情報が何れかの前記エントリに格納されたときに、当該エントリの前記命令種別と、前記バリア前情報が設定された、当該エントリを除くいずれかの前記エントリの、前記第一の前記命令の前記命令情報の前記命令種別が、前記所定の組み合わせである場合、当該エントリにおける前記追い越し禁止情報を、当該エントリを除く前記エントリに対応づけて設定し、
前記エントリの前記追い越し禁止情報が設定されている場合、当該エントリに前記命令情報が格納された前記命令の実行を保留する、
請求項５の命令実行制御方法。
【請求項７】
前記命令発行装置から前記バリア命令を受信するたびに、２つの値を交互に切り替える切り替えフラグの値を切り替え、
前記命令発行装置から受信した、前記バリア命令を除く実行待ちの前記命令の命令情報を、前記切り替えフラグの値が切り替わった後、前記切り替えフラグの値で特定される前記命令記憶域が一旦空になった後に、当該命令記憶域に記憶し、
前記切り替えフラグが示す前記記憶域とは異なる前記命令記憶域に記憶されている、前記第一の前記命令の実行を開始するまで、前記切り替えフラグが示す当該命令記憶域とは異なる前記命令記憶域に記憶されている前記第二の前記命令の実行を保留する、
請求項５の命令実行制御方法。
【請求項８】
命令発行装置から受信された命令であって、実行が保留されているものを記憶域に記憶する記憶処理と、
前記命令を受信した順序以外の順序で実行する処理であって、前記命令発行装置からバリア命令を受信すると、当該バリア命令受信前から前記記憶域に記憶されていた第一の前記命令の実行が開始するまで、当該バリア命令の後に受信した第二の前記命令の実行を、前記第一、及び、前記第二の前記命令の命令種別が所定の組み合わせである場合に保留する実行処理と、
をコンピュータに実行させる命令実行制御プログラム。
【請求項９】
前記記憶域は、実行待ちの前記命令の命令情報と、当該命令が前記バリア命令前に発行されたことを示すバリア前情報と、当該命令が前記バリア命令前に発行された前記命令を追い越すことができないことを示す追い越し禁止情報を対応付けて記憶するためのエントリを複数備え、
前記命令発行装置から前記バリア命令を受信したときに、前記命令の命令情報が格納されている前記エントリにおける前記バリア前情報を設定し、前記命令発行装置から前記バリア命令以外の前記第二の前記命令の命令情報が何れかの前記エントリに格納されたときに、当該エントリの前記命令種別と、前記バリア前情報が設定された、当該エントリを除くいずれかの前記エントリの、前記第一の前記命令の前記命令情報の前記命令種別が、前記所定の組み合わせである場合、当該エントリにおける前記追い越し禁止情報を、当該エントリを除く前記エントリに対応づけて設定する設定処理と、
前記実行手段は、前記エントリの前記追い越し禁止情報が設定されている場合、当該エントリに前記命令情報が格納された前記命令の実行を保留する前記実行処理と、
をコンピュータに実行させる請求項８の命令実行制御プログラム。
【請求項１０】
前記命令発行装置から前記バリア命令を受信するたびに、２つの値を交互に切り替える切り替えフラグの値を切り替える切り替え処理と、
前記切り替えフラグの値に対応付けられた２つの命令記憶域に対して、前記命令発行装置から受信した、前記バリア命令を除く実行待ちの前記命令の命令情報を、前記切り替えフラグの値が切り替わった後、前記切り替えフラグの値で特定される前記命令記憶域が一旦空になった後に、当該命令記憶域に記憶する前記記憶処理と、
前記切り替えフラグが示す前記命令記憶域とは異なる前記命令記憶域に記憶されている、前記第一の前記命令の実行を開始するまで、前記切り替えフラグが示す前記命令記憶域に記憶されている前記第二の前記命令の実行を保留する前記実行処理と、
をコンピュータに実行させる請求項８の命令実行制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、命令間の追い越し機能を実装した計算機において、命令間の順序保障制御を行うための命令実行制御装置、命令実行制御システム、命令実行制御方法、及び、命令実行制御プログラムに関する。
【背景技術】
【０００２】
情報処理装置において、実効性能の向上は永年の課題である。実効性能を向上させるための手段の１つとして、メモリアクセス性能の向上がある。従来からプロセッサに、メモリロード命令とメモリストア命令との間での命令間の追い越し機能を実装して、メモリアクセス性能を向上させてきた。
【０００３】
命令間の追い越し機能の実現においては、実行結果が不正にならないように、例えば、同一アドレスに対するストア命令とロード命令の間など、命令間で順序保障制御を行う必要がある。
【０００４】
このような、命令間の追い越し機能を備えた情報処理装置における順序保障制御の関連技術として、特許文献１には、複数のベクトルストア命令と後続のベクトルロード命令のアドレスの依存関係のチェックを１つのアドレス比較論理で時分割に実行する装置が公開されている。この装置は、ベクトル命令のアドレス、ディスタンス、要素数情報から、メモリアクセス要素に展開する展開処理と、アドレス比較論理でのアドレス比較処理とを並行して実行して、ベクトル命令間追い越し可否判定を実行する。
【０００５】
また、特許文献２には、マルチプロセッサコンピューティングシステムのメモリ整合性挙動をエミュレートするための方法において、メモリアクションの前にメモリバリア命令を実行する方法が公開されている。この方法では、メモリバリア命令の前に実行されたメモリアクションが全てのプロセッサによって登録されていることを保障し、メモリバリア命令が、メモリバリア命令後のメモリアクションが上述で登録された全てのメモリアクションの後で実行されることを、保障している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2010-198439号公報
【特許文献２】特開2004-110811号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、ベクトル計算機におけるリストベクトルによるメモリアクセス命令は、規則性の無いアドレスに対して一度に複数のアクセスを行う。この場合、特許文献１のようなアドレス比較を行うためには、装置は一度に大量のアドレス比較を行う必要があり、限られたハードウェア量で時分割でアドレス比較を行うと、アドレス比較の処理に時間がかかるという問題がある。
【０００８】
特許文献２のようにメモリバリア命令により順序保障制御を行うようにすれば、上述のようなアドレス比較の処理に時間がかかるという問題は回避できる。しかしながら、特許文献２は、メモリバリア命令を跨ぐ個別の命令間で、具体的にどのように順序保障制御を実現するかの詳細な技術については言及していない。
【０００９】
本願発明の目的は、上述の課題を解決した命令実行制御装置、命令実行制御システム、命令実行制御方法、及び、命令実行制御プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本願発明の一実施形態の命令実行制御装置は、命令発行装置から受信された命令であって、実行が保留されているものを記憶する記憶手段と、前記命令を受信した順序以外の順序で実行する手段であって、前記命令発行装置からバリア命令を受信すると、当該バリア命令受信前から前記記憶手段に記憶されていた第一の前記命令の実行が開始するまで、当該バリア命令の後に受信した第二の前記命令の実行を、前記第一、及び、前記第二の前記命令の命令種別が所定の組み合わせである場合に保留する実行手段と、を備える。
【００１１】
本願発明の一実施形態の命令実行制御方法は、命令発行装置から受信された命令であって、実行が保留されているものを記憶域に記憶し、前記命令を受信した順序以外の順序で実行する際に、前記命令発行装置からバリア命令を受信すると、当該バリア命令受信前から前記記憶域に記憶されていた第一の前記命令の実行が開始するまで、当該バリア命令の後に受信した第二の前記命令の実行を、前記第一、及び、前記第二の前記命令の命令種別が所定の組み合わせである場合に保留する。
【００１２】
本願発明の一実施形態の命令実行制御プログラムは、命令発行装置から受信された命令であって、実行が保留されているものを記憶域に記憶する記憶処理と、前記命令を受信した順序以外の順序で実行する処理であって、前記命令発行装置からバリア命令を受信すると、当該バリア命令受信前から前記記憶域に記憶されていた第一の前記命令の実行が開始するまで、当該バリア命令の後に受信した第二の前記命令の実行を、前記第一、及び、前記第二の前記命令の命令種別が所定の組み合わせである場合に保留する実行処理と、をコンピュータに実行させる。
【発明の効果】
【００１３】
本願発明は、命令間の追い越し機能を備えた情報処理装置において、命令間の順序保障制御を限られたハードウェア量で行う場合の処理時間を短くすることを可能とする。
【図面の簡単な説明】
【００１４】
【図１】本願発明の第１の実施形態の命令実行制御システムの構成を示すブロック図である。
【図２】本願発明の第１の実施形態における記憶部のエントリ内のバリア前フラグと追い越し禁止フラグの設定動作を示すフローチャートである。
【図３】本願発明の第１の実施形態における記憶部のエントリに格納された命令の命令実行動作を示すフローチャートである。
【図４】本願発明の第２の実施形態の命令実行制御システムの構成を示すブロック図である。
【図５】本願発明の第２の実施形態における記憶部への命令情報格納動作と切り替えフラグの設定動作を示すフローチャートである。
【図６】本願発明の第２の実施形態における記憶部に格納された命令の命令実行動作を示すフローチャートである。
【図７】本願発明の第３の実施形態の命令実行制御装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
本願発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１６】
図１は本実施形態の命令実行制御システム１の構成を示すブロック図である。
【００１７】
本実施形態の命令実行制御システム１は、命令実行制御装置１０と、命令発行装置２０と、を包含している。命令発行装置２０は、命令実行制御システム１が実行する命令を発行して、命令実行制御装置１０へ送信する。
【００１８】
命令実行制御装置１０は、設定部１１と、実行部１２と、記憶部１３と、を包含している。設定部１１、及び、実行部１２は、電子回路である場合もあれば、コンピュータプログラムである場合もある。記憶部１３は、電子回路あるいはコンピュータプログラムによりアクセス制御が行われる電子メモリ等の記憶装置である。尚、命令実行制御システム１は、全て、プロセッサコア内に実装される場合もある。
【００１９】
記憶部１３は、実行待ち状態にある命令を格納する３個のエントリ１３０−１乃至１３０−３を包含している。記憶部１３が包含するエントリの数は、３個に限定されるわけではない。エントリ１３０−１乃至１３０−３は、それぞれ、命令情報１３１−１乃至１３１−３と、バリア前フラグ１３２−１乃至１３２−３と、追い越し禁止フラグ１３３−１乃至１３３−３と、追い越し禁止フラグ１３４−１乃至１３４−３と、を包含している。
【００２０】
命令情報１３１−１乃至１３１−３は、命令発行装置２０から発行された後、命令実行待ちの状態にある命令の、命令コード等の命令情報である。命令発行装置２０から発行された命令の命令情報は、実行部１２により、エントリ１３０−１乃至１３０−３におけるいずれかの空きエントリに格納され、当該命令が実行されるまで、当該エントリに記憶される。命令発行装置２０から発行された命令が、実行待ちになる要因としては、システム内の資源に対するアクセス権の獲得待ちや、他の命令との同期等がある。
【００２１】
バリア前フラグ１３２−１乃至１３２−３は、それぞれ、エントリ１３０−１乃至１３０−３に格納された命令が、バリア命令前に発行されたことを示すフラグである。
【００２２】
追い越し禁止フラグ１３３−１乃至１３３−３、及び、追い越し禁止フラグ１３４−１乃至１３４−３は、それぞれ、エントリ１３０−１乃至１３０−３に格納された命令が、バリア命令前に発行された命令を追い越して実行できないことを示すフラグである。
【００２３】
追い越し禁止フラグは、エントリ１３０−１乃至１３０−３の各々に、２個ずつ備えられている。追い越し禁止フラグ１３３−１は、エントリ１３０−１に格納された命令が、バリア命令前に発行されたエントリ１３０−２に格納された命令を追い越すことができないことを示すフラグである。追い越し禁止フラグ１３４−１は、エントリ１３０−１に格納された命令が、バリア命令前に発行されたエントリ１３０−３に格納された命令を追い越すことができないことを示すフラグである。
【００２４】
同様に、追い越し禁止フラグ１３３−２乃至１３４−２は、それぞれ、エントリ１３０−２に格納された命令が、バリア命令前に発行された、エントリ１３０−１、及び、エントリ１３０−３に格納された命令を追い越すことができないことを示すフラグである。追い越し禁止フラグ１３３−３乃至１３４−３は、それぞれ、エントリ１３０−３に格納された命令が、バリア命令前に発行された、エントリ１３０−１、及び、エントリ１３０−２に格納された命令を追い越すことができないことを示すフラグである。
【００２５】
設定部１１は、命令発行装置２からバリア命令を受信すると、エントリ１３０−１乃至１３０−３の中で、命令情報が登録されているものが存在するかどうか確認する。設定部１１は、命令情報が登録されているエントリが存在する場合、命令情報が登録されている全てのエントリにおけるバリア前フラグを１に設定する。
【００２６】
設定部１１は、命令発行装置２０から発行されたバリア命令を除く命令が、エントリ１３０−１乃至１３０−３の何れかの空きエントリに実行待ちの命令として格納されると、当該エントリ以外のエントリのバリア前フラグの値を確認する。
【００２７】
例えば、実行待ちの命令がエントリ１３０−１に格納された場合、設定部１１は、エントリ１３０−２乃至１３０−３におけるバリア前フラグ１３２−２乃至１３２−３の値を確認する。バリア前フラグ１３２−２が点灯している場合、設定部１１は、命令情報１３１−１、及び、命令情報１３１−２の命令種別が、事前に登録された所定の組み合わせであるか否かを確認する。
【００２８】
設定部１１は、バリア命令により命令実行の順序保障制御を行う対象とする命令種別の組み合わせの情報を記憶している。例えば、命令実行制御装置１０が、主記憶へのリストベクトルアクセス命令であるＶＧＴ（リストベクトル読み出し）命令とＶＳＣ（リストベクトル書き込み）命令についてのみバリア命令による順序保障制御を行う場合、設定部１１は、バリア命令を跨ぐ命令の組み合わせとして、ＶＧＴ−ＶＳＣ、ＶＳＣ−ＶＧＴ、ＶＳＣ−ＶＳＣの３通りの組み合わせを記憶している。尚、ＶＧＴ−ＶＧＴの組み合わせについては、主記憶への書き込みが発生しないため、設定部１１は、バリア命令による順序保障制御の対象外としている。
【００２９】
命令実行制御装置１０が、リストベクトルアクセス命令に限らず、主記憶アクセス系の命令全体について、バリア命令による順序保障制御を行う場合は、設定部１１は、上述の場合よりも多くの命令種別の組み合わせを、バリア命令による順序保障制御を行う対象として記憶している。
【００３０】
上述で、命令情報１３１−１、及び、命令情報１３１−２の命令種別が、事前に登録された所定の組み合わせである場合、設定部１１は、追い越し禁止フラグ１３３−１を点灯させる。命令情報１３１−１、及び、命令情報１３１−２の命令種別が、事前に登録された所定の組み合わせではない場合、エントリ１３０−１に格納された命令は、バリア命令前に発行されたエントリ１３０−２に格納された命令を追い越すことが可能であるため、設定部１１は、追い越し禁止フラグ１３３−１を点灯させない。
【００３１】
設定部１１は、エントリ１３０−１乃至１３０−３のいずれかに格納された命令が実行されると、追い越し禁止フラグ１３３−１乃至１３３−３、及び、１３４−１乃至１３４−３のうち、当該エントリに対応付けられたもので点灯しているものがあれば、当該追い越し禁止フラグをクリアする。例えば、エントリ１３０−１に格納された命令が実行された場合、設定部１１は、追い越し禁止フラグ１３３−２、及び、追い越し禁止フラグ１３３−３のうちで点灯しているものがあれば、当該追い越し禁止フラグをクリアする。
【００３２】
実行部１２は、エントリ１３０−１乃至１３０−３の何れかに格納された命令が、実行可能な状態になっても、当該命令を格納したエントリ内の２つの追い越し禁止フラグのいずれかが点灯している場合、当該命令の実行を保留する。実行部１２は、当該命令を格納したエントリ内の２つの追い越し禁止フラグの値が０になると当該命令を実行し、当該命令を実行したことを、設定部１１、及び、記憶部１３へ送信する。
【００３３】
記憶部１３は、命令発行装置２０から発行された命令の命令情報を、エントリ１３０−１乃至１３０−３の何れかの空きエントリに格納する。記憶部１３は、実行部１２から、命令を実行したことを受信すると、当該命令を格納していたエントリの命令情報とバリア前フラグをクリアし、当該エントリを未使用状態に設定する。
【００３４】
次に、図２のフローチャートを参照して、本実施形態のエントリ１３０−１乃至１３０−３における、バリア前フラグと追い越し禁止フラグの設定動作について詳細に説明する。
【００３５】
命令実行制御部１０は、命令発行装置２０から発行された命令を受信する（Ｓ１０１）。受信した命令がバリア命令の場合（Ｓ１０２でＹｅｓ）、設定部１１は、記憶部１３におけるエントリ１３０−１乃至１３０−３の中で、命令情報が登録されているものが存在するか確認する（Ｓ１０３）。
【００３６】
命令情報が登録されているエントリが存在しない場合（Ｓ１０４でＮｏ）、全体の処理は終了する。命令情報が登録されているエントリが存在する場合（Ｓ１０４でＹｅｓ）、設定部１１は、命令情報が登録されているエントリ１３０−ｘ（ｘは１乃至３の整数。ただし１つとは限らない）のバリア前フラグ１３２−ｘを１に設定し、全体の処理は終了する。
【００３７】
Ｓ１０２において、受信した命令がバリア命令でない場合（Ｓ１０２でＮｏ）、記憶部１３は、受信した命令の命令情報を、未使用エントリ１３０−ｉ（ｉは１乃至３のいずれかの整数）に、命令情報１３１−ｉとして格納する（Ｓ１０６）。設定部１１は、記憶部１３におけるエントリ１３０−ｉを除くエントリ１３０−１乃至１３０−３の中で、バリア前フラグ１３３−１乃至１３３−ｎが１であるものが存在するか確認する（Ｓ１０７）。
【００３８】
バリア前フラグが１であるものが存在しない場合（Ｓ１０８でＮｏ）、全体の処理は終了する。バリア前フラグが１であるものが存在する場合（Ｓ１０８でＹｅｓ）、設定部１１は、バリア前フラグが１であるエントリ１３０−ｙ（ｙはｉを除く１乃至３の整数。ただし１つとは限らない）の命令情報１３１−ｙと、エントリ１３０−ｉの命令情報１３１−ｉが、所定の組み合わせの命令種別であるか確認する（Ｓ１０９）。
【００３９】
命令情報１３１−ｙと命令情報１３１−ｉが所定の組み合わせの命令種別でない場合（Ｓ１１０でＮｏ）、全体の処理は終了する。命令情報１３１−ｙと命令情報１３１−ｉが所定の組み合わせの命令種別である場合（Ｓ１１０でＹｅｓ）、設定部１１は、エントリ１３０−ｉにおける、追い越し禁止フラグ１３３−ｉ乃至１３４−ｉのうち、エントリ１３０−ｙに対応するものを１に設定し（Ｓ１１１）、全体の処理は終了する。
【００４０】
次に、図３のフローチャートを参照して、本実施形態のエントリ１３０−１乃至１３０−３に格納された命令の命令実行動作について詳細に説明する。
【００４１】
実行部１２は、エントリ１３０−ｊ（ｊは１乃至３のいずれかの整数）の追い越し禁止フラグ１３３−ｊ乃至１３４−ｊが、いずれも０であるか確認する（Ｓ２０１）。追い越し禁止フラグ１３３−ｊ乃至１３４−ｊのうち、少なくともいずれかが０でない場合（Ｓ２０２でＮｏ）、実行部１２は、エントリ１３０−ｊに格納されている命令の実行を保留し（Ｓ２０３）、全体の処理は終了する。
【００４２】
追い越し禁止フラグ１３３−ｊ乃至１３４−ｊが、いずれも０である場合（Ｓ２０２でＹｅｓ）、実行部１２は、エントリ１３０−ｊに命令情報１３１−ｊが格納されている命令が、実行可能の状態にあるか確認する（Ｓ２０４）。当該命令が実行可能でない場合（Ｓ２０５でＮｏ）、処理はＳ２０３へ進む。当該命令が実行可能である場合（Ｓ２０５でＹｅｓ）、実行部１２は、エントリ１３０−ｊに格納されていた命令を実行し、当該命令を実行したことを記憶部１3、及び設定部１１へ送信する（Ｓ２０６）。
【００４３】
記憶部１３は、エントリ１３０−ｊの命令情報１３１−ｊとバリア前フラグ１３２−ｊの情報をクリアし、エントリ１３０−ｊを未使用状態に設定する（Ｓ２０７）。設定部１３は、エントリ１３０−ｊを除くエントリ１３０−１乃至１３０−３における、追い越し禁止フラグ１３３−１乃至１３３−３、及び、１３４−１乃至１３４３のうち、エントリ１３０−ｊに対応したものをクリアし（Ｓ２０８）、全体の処理は終了する。
【００４４】
本実施形態には、命令間の追い越し機能を備えたシステムにおいて、命令間の順序保障制御を限られたハードウェア量で行う場合に処理時間を短くし、また、実装するハードウェア量を少なくする効果がある。その理由は、設定部１１が、バリア命令の受信により、各エントリのバリア前フラグを点灯させ、バリア命令後に発行されてエントリに格納された命令が、バリア命令前の先行命令を追いこすことができない場合、バリア前フラグの点灯状態をもとに、当該命令に対応する追い越し禁止フラグを点灯させ、実行部１２が、当該命令の実行を、追い越し禁止フラグが消灯するまで保留するからである。命令実行制御装置１０は、上述の動作により、命令間の順序保障を実現する。
【００４５】
命令間の追い越し機能を備えたシステムにおいて、同一アドレスへアクセスする命令間で順序保障制御を行う場合、順序保障の対象となる各命令のアクセスアドレスを比較する必要がある。この方式のシステムの場合、例えば、ベクトル計算機におけるリストベクトルによるメモリアクセス命令では、規則性の無いアドレスに対して一度に複数のアドレス比較を行わなければならないため、大規模なアドレス比較回路を実装する必要が生じ、コスト等の問題から、順序保障制御の実現が困難である。
【００４６】
本実施形態では、命令実行制御装置１０が、バリア命令を利用して命令間での順序保障制御を行うため、上述のようなアドレス比較を行う必要がなく、リストベクトルによるメモリアクセス命令であっても、短い処理時間で、命令間での順序保障制御を行うことが可能となる。
【００４７】
また、本実施形態では、設定部１１は、バリア命令を跨ぐ命令の種別の組み合わせが、所定の組み合わせのときのみ、追い越し禁止フラグを点灯させ、所定の組み合わせ以外の場合は、追い越し禁止フラグを点灯させずに、バリア命令を跨いでの追い越しを許可することで、システム性能の低下を回避する効果もある。
＜第２の実施形態＞
次に、本願発明の第２の実施形態について図面を参照して詳細に説明する。
【００４８】
図４は本願発明の第２の実施形態の命令実行制御システム１の構成を示すブロック図である。本実施形態の命令実行制御装置１は、第１の実施形態と同様に、命令実行制御装置１０と、命令発行装置２０と、を包含している。
【００４９】
命令実行制御装置１０は、実行部１２と、記憶部１３と、切り替えフラグ１４と、を包含している。実行部１２は、電子回路である場合もあれば、コンピュータプログラムである場合もある。記憶部１３は、電子回路あるいはコンピュータプログラムによりアクセス制御が行われる電子メモリ等の記憶装置である。切り替えフラグ１４は、電子回路あるいはコンピュータプログラムにより値が設定されるレジスタ等の回路である。
【００５０】
記憶部１３は、バッファ１５乃至１６を包含している。バッファ１５乃至１６は、ぞれぞれ、１つ以上の命令情報１５０乃至１６０を包含している。命令情報１５０乃至１６０は、命令発行装置２０から発行され、実行待ちの状態にある命令の命令情報である。
【００５１】
記憶部１３は、命令発行装置２０から、バリア命令を除く命令を受信すると、切り替えフラグ１４の値を参照する。記憶部１３は、切り替えフラグ１４の値が０の場合は、当該命令の命令情報を、命令情報１５０としてバッファ１５に格納し、切り替えフラグ１４の値が１の場合は、当該命令の命令情報を、命令情報１６０としてバッファ１６に格納する。
【００５２】
記憶部１３は、切り替えフラグ１４の値が変更され、命令情報を格納するバッファを切り替えたときに、切り替え先のバッファに、まだ実行待ちの命令の命令情報が残っている場合は、切り替え先のバッファから全ての実行待ちの命令がなくなるまで、命令情報の格納動作を保留する。
【００５３】
記憶部１３は、バッファ１５、あるいはバッファ１６に格納された命令が、実行部１２により実行されると、当該命令の命令情報を、バッファ１５、あるいはバッファ１６から削除する。
【００５４】
切り替えフラグ１４は、命令発行装置２０からバリア命令を受信すると、値が０のときは１へ、値が１のときは０へ、値を更新する。
【００５５】
実行部１２は、切り替えフラグ１４の値を確認し、切り替えフラグ１４の値が０である場合、バリア命令前に発行された命令を格納しているバッファ１６の中に、実行可能な状態の命令があるか確認する。実行部１２は、同様に、切り替えフラグ１４の値が１である場合、バッファ１５の中に、実行可能な状態の命令があるか確認する。
【００５６】
実行部１２は、上述の確認で、実行可能な状態の命令が存在する場合、当該命令を実行して、当該命令を実行したことを記憶部１３へ送信する。実行部１２は、上述の確認で、実行可能な状態の命令が存在しない場合、もう片方のバッファに実行可能な命令が存在するか確認する。
【００５７】
実行部１２は、もう片方のバッファに実行可能な命令が存在する場合、当該命令の命令種別と、当該命令を格納したバッファでない方のバッファに格納された何れかの命令の命令種別の組み合わせが、所定の組み合わせの命令種別に該当するか確認する。
【００５８】
実行部１２は、所定の組み合わせの命令種別に該当するものが存在する場合、当該命令の実行を保留する。実行部１２は、所定の組み合わせの命令種別に該当するものが存在しない場合は、当該命令を実行する。
【００５９】
次に、図５のフローチャートを参照して、本実施形態の記憶部１３への命令情報格納動作と切り替えフラグの設定動作について詳細に説明する。
【００６０】
命令実行制御装置１０は、命令発行装置２０から発行された命令を受信する（Ｓ３０１）。受信した命令がバリア命令である場合（Ｓ３０２でＹｅｓ）、切り替えフラグ１４は、値を０から１、あるいは１から０へ更新する（Ｓ３０６）。記憶部１３は、切り替えフラグ１４が示すバッファが空であるかどうか確認する（Ｓ３０７）。
【００６１】
切り替えフラグ１４が示すバッファが空である場合（Ｓ３０８でＹｅｓ）、全体の処理は終了する。切り替えフラグ１４が示すバッファが空でない場合（Ｓ３０８でＮｏ）、記憶部１３は、切り替えフラグが示すバッファへの命令情報格納動作を保留し（Ｓ３０９）、処理はＳ３０８へ戻る。
【００６２】
受信した命令がバリア命令でない場合（Ｓ３０２でＮｏ）、切り替えフラグ１４の値が０
の場合（Ｓ３０３でＹｅｓ）、記憶部１３は、受信した命令の命令情報を、命令情報１５０としてバッファ１５に格納し（Ｓ３０４）、全体の処理は終了する。切り替えフラグ１４の値が１の場合（Ｓ３０３でＮｏ）、記憶部１３は、受信した命令の命令情報を、命令情報１６０としてバッファ１６に格納し（Ｓ３０５）、全体の処理は終了する。
【００６３】
次に、図６のフローチャートを参照して、本実施形態の記憶部１３に格納された命令の命令実行動作について詳細に説明する。
【００６４】
実行部１２は、切り替えフラグ１４の値を確認する（Ｓ４０１）。切り替えフラグ１４の値が０の場合（Ｓ４０２でＹｅｓ）、実行部１２は、バッファ１６内に格納された命令で、実行可能な状態にあるものがあるか確認する（Ｓ４０３）。切り替えフラグ１４の値が１の場合（Ｓ４０２でＮｏ）、実行部１２は、バッファ１５内に格納された命令で、実行可能な状態にあるものがあるか確認する（Ｓ４０５）。
【００６５】
バッファ１６に、実行可能な状態の命令が存在する場合（Ｓ４０４でＹｅｓ）、あるいは、バッファ１５に、実行可能な状態の命令が存在する場合（Ｓ４０６でＹｅｓ）、実行部１２は、実行可能な状態の命令を実行し、当該命令を実行したことを記憶部１３へ送信する（Ｓ４１１）。
【００６６】
バッファ１６に、実行可能な状態の命令が存在しない場合（Ｓ４０４でＮｏ）、あるいは、バッファ１５に、実行可能な状態の命令が存在しない場合（Ｓ４０６でＮｏ）、実行部１２は、もう片方のバッファに格納された命令で、実行可能な状態にあるものがあるか確認する（Ｓ４０７）。
【００６７】
もう片方のバッファに、実行可能な状態の命令が存在しない場合（Ｓ４０８でＮｏ）、全体の処理は終了する。もう片方のバッファに、実行可能な状態の命令が存在する場合（Ｓ４０８でＹｅｓ）、実行部１２は、実行可能な状態の命令の命令種別と、当該命令を格納したバッファでない方のバッファに格納された何れかの命令の命令種別の組み合わせが、所定の組み合わせの命令種別に該当するか確認する（Ｓ４０９）。
【００６８】
所定の組み合わせの命令種別に該当するものが存在する場合（Ｓ４１０でＹｅｓ）、実行部１２は、実行可能な状態の命令の実行を保留し（Ｓ４１３）、全体の処理は終了する。所定の組み合わせの命令種別に該当するものが存在しない場合（Ｓ４１０でＮｏ）、実行部１２は、実行可能な状態の命令を実行し、当該命令を実行したことを記憶部１３へ送信する（Ｓ４１１）。記憶部１３は、実行した命令の命令情報を、バッファ１５、あるいは、バッファ１６から削除し（Ｓ４１２）、全体の処理は終了する。
【００６９】
本実施形態には、第１の実施形態と同様に、命令間の追い越し機能を備えたシステムにおいて、命令間の順序保障制御を限られたハードウェア量で行う場合に処理時間を短くし、また、実装するハードウェア量を少なくする効果がある。その理由は、切り替えフラグ１４がバリア命令を受信して値が切り替わることで、記憶部１３がバリア命令前後で命令情報を格納するバッファを切り替え、実行部１２が、順序保障制御の対象とする命令に関して、バリア命令前の命令を格納している方のバッファに格納された命令の実行を開始するまで、もう片方のバッファに格納された命令の実行を保留するからである。命令実行制御装置１０は、上述の動作により、命令間の順序保障を実現する。
【００７０】
本実施形態でも、第１の実施形態と同様に、命令実行制御装置１０が、バリア命令を利用して命令間での順序保障制御を行うため、アドレス比較回路を実装する必要がなく、簡易なハードウェア構成で、命令間での順序保障制御を行うことが可能となる。
【００７１】
尚、本実施形態では、１ビットの切り替えフラグ１４により、記憶部１３は、２つのバッファ１５０乃至１６０の切り替え制御を行っているが、２ビット以上の切り替えフラグ１４により、３つ以上のバッファの切り替え制御を行ってもよい。その場合、比較的近いタイミングで複数のバリア命令が発行された場合であっても、命令実行制御装置１０が、各バリア命令間を跨ぐ命令間での順序保障制御を行うことが可能となる。
＜第３の実施形態＞
次に、本願発明の第３の実施形態について図面を参照して詳細に説明する。
【００７２】
図７は本願発明の第３の実施形態の命令実行制御装置１０の構成を示すブロック図である。本実施形態の命令実行制御装置１０は、実行部１２と、記憶部１３と、を包含している。
【００７３】
記憶部１３は、命令発行装置２０から受信された命令であって、実行が保留されているものを、命令情報１３１−１乃至１３１−ｎとして記憶する。
【００７４】
実行部１２は、命令情報１３１−１乃至１３１−ｎの命令を、命令を受信した順序以外の順序で実行する。実行部１２は、命令発行装置２０からバリア命令を受信すると、当該バリア命令受信前から記憶部１３に命令情報が記憶されていた、順序保障制御の対象となる全ての命令の実行を開始するまで、当該バリア命令の後に受信した命令の実行を、バリア命令前の命令、及び、バリア命令後の命令の命令種別が、所定の組み合わせである場合に保留する。
【００７５】
本実施形態には、第１、および、第２の実施形態と同様に、命令間の追い越し機能を備えたシステムにおいて、命令間の順序保障制御を限られたハードウェア量で行う場合に処理時間を短くし、また、実装するハードウェア量を少なくする効果がある。その理由は、実行部１２が、命令発行装置２０からバリア命令を受信すると、当該バリア命令受信前から記憶部１３に命令情報が記憶されていた全て命令の実行を開始するまで、当該バリア命令の後に受信した命令の実行を保留するからである。命令実行制御装置１０は、上述の動作により、命令間の順序保障を実現する。
【００７６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００７７】
１    命令実行制御システム
１０    命令実行制御装置
１１    設定部
１２    実行部
１３    記憶部
１３０−１乃至１３０−３    エントリ
１３１−１乃至１３１−ｎ    命令情報
１３２−１乃至１３２−３    バリア前フラグ
１３３−１乃至１３３−３    追い越し禁止フラグ
１３４−１乃至１３４−３    追い越し禁止フラグ
１４    切り替えフラグ
１５乃至１６    バッファ
１５０乃至１６０    命令情報
２０    命令発行装置
【図１】
2014153851.tif 000003
【図２】
2014153851.tif 000004
【図３】
2014153851.tif 000005
【図４】
2014153851.tif 000006
【図５】
2014153851.tif 000007
【図６】
2014153851.tif 000008
【図７】
2014153851.tif 000009