(57)【要約】  性質の異なる複数のスレッドを実行するプロセッサ（１Ｐ）においては、命令制御装置（１）が設けられる。命令制御装置（１）においては、第一の命令制御部（１１）が、第一の命令列に含まれる命令を前記命令実行部（１Ｐｃ）に発行する。また、第二の命令制御部（１２）が、第二の命令列に含まれる命令を前記命令実行部（１Ｐｃ）に発行する。ここで、第二の命令制御部（１２）の遅延時間は、前記第一の命令制御部（１１）の遅延時間よりも短い。
2010021119.tif 000002
【特許請求の範囲】
【請求項１】
命令列に含まれる命令を命令実行部に発行する命令制御装置であって、
第一の命令列に含まれる命令を前記命令実行部に発行する第一の命令制御部と、
第二の命令列に含まれる命令を前記命令実行部に発行し、かつ、前記第二の命令列が当該第二の命令制御部に入力されてから、当該第二の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間は、前記第一の命令列が前記第一の命令制御部に入力されてから、当該第一の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間よりも短い第二の命令制御部と
を備えることを特徴とする命令制御装置。
【請求項２】
主記憶から取得された予め定められた２つの命令列から前記第一の命令列を選択し、選択した当該第一の命令列を前記第一の命令制御部に供給すると共に、当該２つの命令列から前記第二の命令列を選択し、選択した当該第二の命令列を前記第二の命令制御部に供給する選択部を更に備える
ことを特徴とする請求項１記載の命令制御装置。
【請求項３】
前記第一の命令制御部および前記第二の命令制御部は、それぞれ、当該命令制御部に供給される命令列に基づいて、当該命令列を実行する実行動作を特定する制御情報を生成し、生成する制御情報を前記命令実行部に供給する
ことを特徴とする請求項２記載の命令制御装置。
【請求項４】
前記第一の命令制御部は、当該第一の命令制御部に供給された前記第一の命令列に対して予め定められた並列度の並列化の処理を行い、
前記第二の命令制御部は、当該第二の命令制御部に供給された命令列に対して、前記第一の命令制御部の並列化の処理における並列度よりも小さな並列度での並列化の処理を行う
ことを特徴とする請求項３記載の命令制御装置。
【請求項５】
前記第一の命令制御部は、前記第一の命令列における２つの命令の間の依存関係を検出し、検出する依存関係による制約が守られた当該２つの命令の実行順序を決定する命令スケジューリング処理を行い、決定した実行順序で当該２つの命令をそれぞれ実行する制御情報を生成し、
前記第二の命令制御部は、前記第二の命令列のスケジューリング処理を行って、当該スケジューリング処理により決定した実行順序で、当該第二の命令列の２つの命令をそれぞれ実行する制御情報を生成し、かつ、当該第二の命令制御部が行う命令スケジューリング処理は、前記小さな並列度での並列化の処理に際して制約となる前記依存関係のみを検出する
ことを特徴とする請求項４記載の命令制御装置。
【請求項６】
前記第一の命令制御部は、パイプライン動作によって前記第一の命令列の制御情報を生成し、
前記第二の命令制御部は、同じくパイプライン動作によって前記第二の命令列の制御情報を生成し、かつ、当該パイプライン動作におけるパイプラインステージ数が、前記第一の命令制御部のパイプライン動作のパイプラインステージ数よりも少ない
ことを特徴とする請求項５記載の命令制御装置。
【請求項７】
前記第一の命令制御部および前記第二の命令制御部のうちの一方を特定する特定情報をそれぞれ保持する第一の記憶部および第二の記憶部を更に備え、
前記選択部は、
前記第一の記憶部の特定情報が前記第一の命令制御部を特定する場合には、前記２つの命令列のうちで予め定められた一方の命令列を前記第一の命令制御部にのみ供給し、当該特定情報が前記第二の命令制御部を特定する場合には、前記第二の命令制御部にのみ供給し、
前記第二の記憶部の特定情報が前記第一の命令制御部を特定する場合には、前記２つの命令列のうちで他方の命令列を前記第一の命令制御部にのみ供給し、当該特定情報が前記第二の命令制御部を特定する場合には、前記第二の命令制御部にのみ供給し、
前記第一の命令制御部および前記第二の命令制御部のそれぞれは、当該命令制御部に供給される命令列のうちに、前記特定情報に対して、当該命令が示す予め定められた設定情報を設定する予め定められた命令が含まれる場合に、前記命令実行部に当該設定をさせる制御情報を生成する
ことを特徴とする請求項６記載の命令制御装置。
【請求項８】
前記第一の命令制御部が行う前記並列化の処理により前記命令実行部が前記第一の命令列に含まれる命令を並列に実行する個数の最大個数を検出し、当該第一の命令列が、検出される当該最大個数が予め定められた個数より少ない特定命令列か否かを検知する検知部を更に備え、
前記選択部は、特定命令列であると検知された命令列を、前記第二の命令制御部のみに供給する
ことを特徴とする請求項４記載の命令制御装置。
【請求項９】
前記選択部は、前記命令実行部が、前記第一の命令列又は前記第二の命令列に含まれる予め定められた分岐命令を実行する場合、前記主記憶から読み出される、当該分岐命令の分岐先の命令列の予め定められた先頭部分を、前記第二の命令制御部のみに供給する前記第二の命令列として選択する
ことを特徴とする請求項６記載の命令制御装置。
【請求項１０】
前記命令実行部が命令を実行中か否かを検出する検出部を更に備え、
前記選択部は、前記検出部により前記命令実行部が命令を実行中ではないと検出される場合に命令列が実行される際には、当該命令列を前記第二の命令制御部のみに供給する
ことを特徴とする請求項６記載の命令制御装置。
【請求項１１】
前記命令実行部が命令を実行中か否かを検出する検出部を更に備え、
前記選択部は、前記検出部により前記命令実行部が命令を実行中であると検出される場合に命令列が実行される際にのみ、当該命令列を前記第一の命令制御部に供給する
ことを特徴とする請求項６記載の命令制御装置。
【請求項１２】
前記予め定められた命令は、前記第一の命令制御部および第二の命令制御部のうちの一方を特定する属性が含まれる予め定められた分岐命令であり、
前記第一の命令制御部および前記第二の命令制御部は、それぞれ、当該命令制御部に供給される命令列に当該分岐命令が含まれる場合に、当該分岐命令の前記属性が特定する命令制御部を特定する特定情報を、当該分岐命令が示す前記記憶部に設定させる制御情報を生成する
ことを特徴とする請求項７記載の命令制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は命令制御装置に関し、特に複数のスレッドから成るプログラムを、スレッドを切り替えながら並行に実行する、マルチスレッド型のプロセッサにおける命令制御装置に関するものである。
【背景技術】
【０００２】
近年のプロセッサの性能向上に伴い、単一のプロセッサに求められる処理の内容はますます多彩になっている。特にディジタルＴＶ等のマルチメディア機器においては、メディア処理やシステム制御といった複数の処理を同時に処理する必要があり、これを実現するために複数の処理を時分割で実行するマルチスレッド型のプロセッサが注目されている。【０００３】
マルチスレッド型のプロセッサでは、レジスタセットを複数備える等の手法により、複数のスレッドを少ないオーバヘッドで切り替えることが可能であり、複数の処理を同時進行で効率よく処理できる特徴がある。【０００４】
図８は、従来のマルチスレッド型のプロセッサ９０Ｐにおける命令制御装置９０の構成を示したものである。【０００５】
プロセッサ９０Ｐは、主記憶９１Ｐと、命令フェッチ部９２Ｐと、命令制御装置９０と、命令実行部９３Ｐとを備える。【０００６】
主記憶９１Ｐは、プロセッサ９０Ｐが実行する命令が格納された命令列を記憶する。【０００７】
命令フェッチ部９２Ｐは、主記憶９１Ｐから、プロセッサ９０Ｐが実行する、スレッドが互いに異なる命令列９１ａ、９２ａを読み出し、それぞれ、命令制御装置９０に供給する。【０００８】
命令制御装置９０は、命令フェッチ部９２Ｐによって主記憶９１Ｐから読み出された命令列９１ａ、９２ａに対して並列化の処理を行い、命令実行部９３Ｐに供給するように構成されている。なお、具体的には、命令制御装置９０は、命令列を実行する実行動作を特定する制御情報を命令実行部に供給する。そして、命令制御装置９０は、命令列に含まれる命令のグルーピングを行い、グルーピングされたそれら命令を並列に実行する実行動作を特定する制御情報を生成し、生成する制御情報を命令実行部９３Ｐに供給する。【０００９】
なお、時分割で、論理的に同時に、複数の処理を実行することは、それらの処理が「並行」に実行されることと呼ばれる。他方、実行される時間が互いに重なり合って、物理的に同時に複数の処理が実行されることは、それらの処理が「並列」に実行されることと呼ばれる。【００１０】
そして、命令制御装置９０は、第一の命令制御部９１と、第二の命令制御部９２との２つの命令制御部を備える。【００１１】
第一の命令制御部９１は、命令フェッチ部９２Ｐより供給された、一方のスレッドの命令列９１ａに対して、パイプラインの４ステージ分の処理によって、並列に実行可能な命令を最大４命令までグルーピングする。これにより、第一の命令制御部９１は、最大４命令までグルーピングされた制御情報を生成して、命令実行部９３Ｐに供給する。【００１２】
第二の命令制御部９２は、第一の命令制御部９１が命令列９１ａの制御情報を供給するのと同様に、命令フェッチ部９２Ｐより第二の命令制御部９２に供給された、他方のスレッドの命令列９２ａに対して、パイプラインの４ステージ分の処理によって、並列に実行可能な命令を最大４命令までグルーピングする。これにより、第二の命令制御部９２は、最大４命令までグルーピングされた制御情報を生成して、命令実行部９３Ｐに供給する。【００１３】
命令実行部９３Ｐは、第一の命令制御部９１、および第二の命令制御部９２より供給された命令列の命令を実行する。そして、このとき、命令実行部９３Ｐは、第一の命令制御部９１により供給される命令列の命令を実行するのと並行に、他方の第二の命令制御部９２により供給される命令列を実行する。命令実行部９３Ｐは、３ステージ分の処理によって実行を行う。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特許第２９０８５９８号公報（第３６頁、図１）
【発明の概要】
【発明が解決しようとする課題】
【００１５】
図９は、プログラムの一例として、プログラム８１とプログラム８２とを示す図である。【００１６】
図１０は、上記のように構成された従来の命令制御装置９０においてプログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。【００１７】
図１０において、縦方向に並ぶ複数の行は、最上段の１つの行と、その１つの行に続く第１番目の４つの行と、第１番目の４つの行に続く第２番目の４つの行と、第２番目の４つの行に更に続く３つの行との４つの部分に分かれる。最上段の１つの行は、命令フェッチ部９２Ｐの処理内容を示す行である。そして、第１番目の４つの行は、第一の命令制御部９１の処理内容を示す４つの行である。すなわち、第１番目の４つの行は、第一の命令制御部９１が行う４ステージの処理内容をそれぞれ示す。第１番目の４つの行は、図１０において９１−１から９１−４の記号がそれぞれ付された４つの行である。次に、第２番目の４つの行は、第二の命令制御部９２の処理内容を示す４つの行である。すなわち、第２番目の４つの行は、第二の命令制御部９２が行う４ステージの処理内容をそれぞれ示す。第２番目の４つの行は、図１０において９２−１から９２−４の記号がそれぞれ付された４つの行である。第２番目の４つの行に続く３つの行は、命令実行部１Ｐｃが行う３ステージの処理内容をそれぞれ示す。この３つの行は、図１０において実行部−１から実行部−３の記号がそれぞれ付された３つの行である。【００１８】
また、横方向の複数の列は、左の列から、右の列へと、最左端の第１サイクルの列から、最右端の第１６サイクルの列までである。それぞれの列は、プロセッサ９０Ｐの１つのサイクルでの処理内容を示す。それぞれの列におけるそれぞれの行は、その列のサイクルでの、命令実行部９３Ｐ等のその行の構成部分における処理内容を示す。【００１９】
そして、図１０において、ハッチングが付されたボックスは、第二の命令制御部９２により処理されるプログラム８２が、そのボックスの行の構成部分により、そのボックスの列のサイクルにおいて処理されることを示している。同様に、図１０で、ハッチングのない白抜きのボックスは、第一の命令制御部１１により処理されるプログラム８１が、そのボックスの列のサイクルにおいて、そのボックスの行の構成部分により処理されることを示している。【００２０】
プログラム８１を実行する場合、第一の命令制御部９１は、最大４命令までの命令の並列化が可能であるため、プログラム８１はそれぞれ命令グループ８１ａ、命令グループ８１ｂ、命令グループ８１ｃの３つの命令グループ（図９、図１０）に分割されて実行される。図１０においては、これら命令グループ８１ａ、命令グループ８１ｂ、命令グループ８１ｃが、互いに異なる、矢印線により示される４つの流れの処理によってそれぞれプロセッサ９０Ｐに処理され、第３サイクル〜第８サイクルにおける、第一の命令制御部９１の４つの行で、プログラム８１がこれら３つの命令グループに分割されることが、第一の命令制御部９１の行の白抜きのボックスにより示されている。【００２１】
次に、プログラム８２を実行する場合、第二の命令制御部９２は、最大４命令までの命令の並列化が可能であるが、プログラム８２にはレジスタ間の依存が存在するため、プログラム８２は命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割されて実行される（図９、図１０）。図１０においては、これら命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄが、互いに異なる、矢印線により示される４つの流れの処理により、それぞれ、プロセッサ９０Ｐに処理され、第４サイクル〜第１０サイクルで、第二の命令制御部９１がプログラム８１を、これら３つの命令グループに分割することを示している。【００２２】
上記の動作において、第一の命令制御部９１は、４ステージ分の処理を行うため、プログラム８１の処理に分岐した場合には、命令実行部９３Ｐでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後、処理を開始する。この７サイクルの分岐ペナルティの分岐ペナルティ時間を、図１０では、最下部の破線の２つの矢印線のうちの、上側の矢印線により示している。【００２３】
同様に第二の命令制御部９２は、４ステージ分の処理を行うため、他方のプログラム８２の処理に分岐した場合には、命令実行部９３Ｐでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後処理を開始する。この７サイクルの分岐ペナルティ時間は、図１０では、最下部の破線の２つの矢印線のうちの、下側の矢印線によって示している。【００２４】
確かに、上記の構成により、プロセッサ９０Ｐは、プログラム８１、８２を並行に実行することが可能であり、複数のスレッドの命令列を、少ないオーバヘッドで実行することが可能である。【００２５】
しかし、従来の構成による命令制御装置９０では、互いに同一のパイプラインステージ数の第一の命令制御部９１、第二の命令制御部９２を設けて、全てのプログラムに対して均一な命令制御を行っているために、多様な性質を持つプログラムに対して、それぞれ、その性質に適した命令制御を行うことが困難であった。【００２６】
例えば、上記の動作において、プログラム８２は最大でも２命令の並列度しか持たないプログラムであるにもかかわらず、４命令の並列化が可能な第二の命令制御部９２で処理されるため、本来必要な並列化処理よりも多くの処理が必要である。つまり、多くのパイプラインステージを用いることによって命令制御部での遅延時間が無用に長くなってしまい、ひいては分岐ペナルティが増大して、プロセッサ９０Ｐの動作効率が低下するという課題があった。【００２７】
本発明の目的は、複数のスレッドの命令列を処理する命令制御装置において、多様な性質を持つプログラムに対して、それぞれその性質に適した命令制御を行うことで、無用な遅延時間を減らし、プロセッサの効率的な動作を可能とする命令制御装置を提供することにある。
【課題を解決するための手段】
【００２８】
本発明の命令制御装置は、上記課題を解決するため、次の構成を採った。【００２９】
本発明の第１の命令制御装置は、命令列に含まれる命令を命令実行部に発行する命令制御装置であって、第一の命令列に含まれる命令を前記命令実行部に発行する第一の命令制御部と、第二の命令列に含まれる命令を前記命令実行部に発行し、かつ、第二の命令列が当該第二の命令制御部に入力されてから、当該第二の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間は、前記第一の命令列が前記第一の命令制御部に入力されてから、当該第一の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間よりも短い第二の命令制御部と、を備えることを特徴とする命令制御装置である。【００３０】
このような命令制御装置によれば、遅延時間が短い比較的簡単な命令制御がされると弊害がある性質の命令列は、第一の命令列として、第一の命令制御部による命令制御がされる一方で、第二の命令制御部の命令制御がされても弊害のない性質の命令列に対しては、当該命令列を第二の命令列として、遅延時間が短い簡単な命令制御ができて、無用な遅延時間を減らすことができ、多様な性質を持つプログラムに対して、それぞれ、そのプログラムの性質に適した命令制御部を選択することにより、遅延時間が短くてより効率的な命令制御を行うことができ、プロセッサを効率的に動作させることが可能である。【００３１】
また、本発明の第２の命令制御装置は、主記憶から取得された予め定められた２つの命令列から前記第一の命令列を選択し、選択した当該第一の命令列を前記第一の命令制御部に供給すると共に、当該２つの命令列から前記第二の命令列を選択し、選択した当該第二の命令列を前記第二の命令制御部に供給する選択部を更に備える、ことを特徴とする第１の命令制御装置である。【００３２】
このようにすれば、命令制御装置内において、選択部により、遅延時間が短い比較的簡単な命令制御処理がされると弊害がある性質の命令列は第一の命令列に、第二の命令制御部の命令制御がされても弊害のない性質の命令列は第二の命令列にそれぞれ適切に選択できて、第一の命令制御部および第二の命令制御部に各々供給でき、シンプルな構成で、効率的な動作を実現できる。【００３３】
なお、例えば、選択部は、第一の命令制御部に供給する命令列を前記２つの命令列のうちから選択する第一のセレクタ回路と、第二の命令制御部に供給する命令列を前記２つの命令列のうちから選択する第二のセレクタ回路とを備えてもよく、例えば、第一のセレクタ回路は、他方の第二のセレクタ回路により一方の命令列が選択されると、他方の命令列を選択するものであってもよい。【００３４】
なお、本発明の命令制御装置は、処理内容の異なる複数の命令制御部を設け、そのスレッドの性質に適した命令制御部へと、スレッドの命令列が供給される構成をとってもよい。【００３５】
また、本発明の命令制御装置は、主記憶から取得した第一の命令列および第二の命令列を処理し、命令実行部の制御情報を生成する命令制御装置において、前記命令制御装置は、制御部選択部（選択部）と、第一の命令制御部と、第二の命令制御部とを有し、前記制御部選択部は、前記第一の命令列および前記第二の命令列をそれぞれ前記第一の命令制御部と前記第二の命令制御部の何れかに供給し、前記第一の命令制御部は、供給された命令列に対して所定の処理を行い、前記第二の命令制御部は、供給された命令列に対して前記第一の命令制御部が行う処理とは異なる処理を行うことを特徴とする命令制御装置であってもよい。【００３６】
また、本発明の命令制御装置は、命令処理内容の異なる複数の命令制御部を有し、制御選択部は、そのスレッドの命令列の性質に適した命令制御部へと、スレッドの命令列を供給することによって、性質の互いに異なる複数のスレッドの命令列のそれぞれに対して、そのスレッドに適した命令制御を適用することが可能となるものであってもよい。【００３７】
また、本発明の命令制御装置は、並列化可能な並列度の異なる複数の命令制御部を設け、制御部選択部がスレッドの命令列の並列度に適した命令制御部を選択して、処理する命令列を供給する構成をとってもよい。【００３８】
なお、命令制御部を選択するとは、より詳細には、例えば、命令列をその命令制御部には供給すると共に、他方の命令制御部には供給しないことを意味する。【００３９】
ここで、本発明の命令制御装置は、前記第一の命令制御部は、供給された命令列に対して所定の並列度の並列化の処理を行い、前記第二の命令制御部は、供給された命令列に対して前記第一の命令制御部より小さな並列度での並列化の処理を行うことを特徴とする命令制御装置であってもよい。【００４０】
また、本発明の命令制御装置は、前記第一の命令制御部は、供給された命令列に対して所定の依存検出に基づく命令スケジューリング処理を行い、前記第二の命令制御部は、供給された命令列に対して前記第一の命令制御部より簡略化された依存検出に基づく命令スケジューリング処理を行うことを特徴とする命令制御装置であってもよい。【００４１】
また、本発明の命令制御装置は、前記命令制御装置は、パイプライン動作に基づいて前記命令実行部の制御情報を生成し、前記第一の命令制御部は、所定のパイプラインステージ数で供給された命令列に対する処理を行い、前記第二の命令制御部は、前記第一の命令制御部より少ないパイプラインステージ数で供給された命令列に対する処理を行うことを特徴とする命令制御装置であってもよい。【００４２】
また、本発明の命令制御装置は、前記命令制御部は、プログラムによって書き換え可能である第一の設定レジスタと第二の設定レジスタを有し、前記制御部選択部は、前記第一の設定レジスタの設定内容に基づいて前記第一の命令列の供給先を決定し、さらに、前記制御部選択部は、前記第二の設定レジスタの設定内容に基づいて前記第二の命令列の供給先を決定することを特徴とする命令制御装置であってもよい。【００４３】
また、本発明の命令制御装置は、前記制御部選択部は、前記第一の命令制御部が並列化した前記第一の命令列および前記第二の命令列の並列度を監視し、当該命令列の並列度が所定の値以下である場合は、以後当該命令列を前記第二の命令制御部に供給することを特徴とする命令制御装置であってもよい。【００４４】
また、本発明の命令制御装置は、前記制御部選択部は、前記命令実行部が前記第一の命令列および前記第二の命令列に基づく分岐命令を実行した場合には、当該命令列の分岐先に対応する命令列を前記第二の命令制御部に供給することを特徴とする命令制御装置であってもよい。【００４５】
また、本発明の命令制御装置は、前記制御部選択部は、前記第一の命令列および前記第二の命令列の前記命令実行部への供給状態を監視し、当該命令列の前記命令実行部への供給が滞っている場合には当該命令列を前記第二の命令制御部に供給することを特徴とする命令制御装置であってもよい。【００４６】
また、本発明の命令制御装置は、前記制御部選択部は、前記第一の命令列および前記第二の命令列の前記命令実行部への供給状態を監視し、当該命令列が前記命令実行部へ充分供給されている場合には、当該命令列を前記第一の命令制御部に供給することを特徴とする命令制御装置であってもよい。【００４７】
また、本発明の命令制御装置は、前記第一の設定レジスタと前記第二の設定レジスタは、プログラムに含まれるサブルーチンコール命令に付与された属性に基づいて更新されることを特徴とする命令制御装置であってもよい。【００４８】
また、本発明の命令制御装置は、命令スケジューリングの際の依存検出の詳細度の異なる複数の命令制御部を設け、制御部選択部がスレッド内の命令の依存状況に適した命令制御部を選択して、処理する命令列を供給する構成をとってもよい。【００４９】
また、本発明の命令制御装置は、処理内容およびパイプライン段数の異なる複数の命令制御部を設け、制御部選択部が、命令列の性質および、パイプラインレイテンシのトレードオフに基づいて命令制御部を選択して、処理する命令列を供給する構成をとってもよい。【００５０】
また、本発明の命令制御装置は、自身が処理した命令列の並列度を監視し、それに応じて制御部選択部が並列度に応じて適した命令制御部を選択して、処理する命令列を供給する構成をとってもよい。【００５１】
また、本発明の命令制御装置は、自身の命令の供給状況を監視し、命令供給が滞っている場合は、制御部選択部が、より短いパイプライン段数の命令制御部を選択して、処理する命令列を供給する構成をとってもよい。【００５２】
また、本発明の命令制御装置は、自身が処理するスレッド毎にスレッドの属性を保持するレジスタを有し、制御部選択部がスレッドの属性に対応した命令制御部を選択して、処理する命令を供給する構成をとってもよい。【００５３】
また、本発明の命令制御装置は、プログラムによってスレッドの属性を保持するレジスタを書き換えることが可能で、制御部選択部がスレッドの属性に対応した命令制御部を選択して、処理する命令を供給する構成をとってもよい。【００５４】
また、本発明の命令制御装置は、サブルーチンコール命令に付与された属性によってスレッドの属性を保持するレジスタを書き換えることが可能で、制御部選択部がスレッドの属性に対応した命令制御部を選択して、処理する命令を供給する構成をとってもよい。
【発明の効果】
【００５５】
以上の構成により、本発明による命令制御装置では、多様な性質を持つプログラムに対して、それぞれ、そのプログラムに適した命令制御部を選択することにより、無用な遅延時間を減らし、より効率的な命令制御を行うことができ、プロセッサを効率的に動作させることが可能である。
【図面の簡単な説明】
【００５６】
【図１】図１は、第１の実施の形態による命令制御装置の構成を示す図である。
【図２】図２は、第１の実施の形態による命令制御装置によって、プログラム例を実行した際のパイプライン動作を示す図である。
【図３】図３は、第２の実施の形態による命令制御装置の構成を示す図である。
【図４】図４は、第２の実施の形態による命令制御装置によって、プログラム例を最初に実行した際のパイプライン動作を示す図である。
【図５】図５は、第２の実施の形態による命令制御装置によって、プログラム例を再度実行した際のパイプライン動作を示す図である。
【図６】図６は、第３の実施の形態による命令制御装置の構成を示す図である。
【図７】図７は、第３の実施の形態による命令制御装置によって、プログラム例を実行した際のパイプライン動作を示す図である。
【図８】図８は、従来の構成による命令制御装置の構成を示す図である。
【図９】図９は、プログラム例を示す図である。
【図１０】図１０は、従来の構成による命令制御装置によって、プログラム例を実行した際のパイプライン動作を示す図である。
【発明を実施するための形態】
【００５７】
（実施の形態１）
図１は、本発明の実施の形態１による命令制御装置１および命令制御装置１を有するプロセッサ１Ｐの構成を示したものである。
【００５８】
プロセッサ１Ｐは、主記憶１Ｐａと、命令フェッチ部１Ｐｂと、命令制御装置１と、命令実行部１Ｐｃとを備える。
【００５９】
主記憶１Ｐａは、プロセッサ１Ｐが実行する命令の命令列を記憶する。
【００６０】
命令フェッチ部１Ｐｂは、主記憶１Ｐａからプロセッサ１Ｐが実行する、スレッドが互いに異なる命令列Ｉｄａ、Ｉｄｂを読み出し、読み出したそれら命令列Ｉｄａ、命令列Ｉｄｂを命令制御装置１に供給する。
【００６１】
命令制御装置１は、命令フェッチ部１Ｐｂによって主記憶１Ｐａから読み出された命令列Ｉｄａ、Ｉｄｂに対して並列化の処理を行い、命令実行部１Ｐｃに供給するように構成されている。
【００６２】
制御部選択部１０は、制御部選択情報１３ｄに従って命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１、第二の命令制御部１２の何れかに供給する。以下、制御部が、第一の命令制御部１１に供給する命令列として選択し、第一の命令制御部１１に供給する命令列を第一命令列と呼び、第二の命令制御部１２に供給する命令列として選択し、第二の命令制御部１２に供給する命令列を、第二命令列と呼ぶ。これら第一命令列及び第二命令列は、それぞれ、請求の範囲の記載における「第一の命令列」及び「第二の命令列」の一例である。
【００６３】
なお、制御部選択部１０は、例えば、命令列Ｉｄａおよび命令列Ｉｄｂが入力されて、第一の命令制御部１１に供給する第一命令列をそれら命令列Ｉｄａおよび命令列Ｉｄｂのうちから選択して、選択する命令列を第一の命令制御部１１に出力する第一のセレクタ回路を備えてもよい。そして、制御部選択部１０は、例えば、命令列Ｉｄａおよび命令列Ｉｄｂが入力されて、第二の命令制御部１２に供給する第二命令列をそれらから選択し、選択する命令列を第二の命令制御部１２に出力する第二のセレクタ回路を備えてもよい。
【００６４】
なお、以下の説明では、制御部選択部１０が、第一の命令制御部１１に供給する命令列として命令列Ｉｄａを選択し、第二の命令制御部１２に供給する命令列には命令列Ｉｄａを選択しないことは、次のように記載される。すなわち、そのことは、制御部選択部１０はその命令列Ｉｄａを供給する供給先の命令制御部として、第一の命令制御部１１および第二の命令制御部１２のうちから、第二の命令制御部１２を選択することと記載される。なお、命令列Ｉｄｂを供給する命令制御部を選択する旨の記載についても、同様であり、上記の例による。
【００６５】
第一の命令制御部１１は、制御部選択部１０から供給された命令列に対して、パイプラインの４ステージ分の処理によって、並列に実行可能な命令を、最大４命令までグルーピングし、命令実行部１Ｐｃに供給する。
【００６６】
第二の命令制御部１２は、制御部選択部１０から供給された命令列に対して、パイプラインの２ステージ分の処理によって、並列に実行可能な命令を最大２命令までグルーピングし、命令実行部１Ｐｃに供給する。
【００６７】
ここで、より具体的には、第一の命令制御部１１および第二の命令制御部１２は、それぞれ、当該命令制御部に制御部選択部１０から供給される命令列に基づいて、供給される当該命令列を実行する実行動作を特定する制御情報を生成し、生成する当該制御情報を命令実行部１Ｐｃに供給することにより、その命令列を命令実行部１Ｐｃに実行させる。それぞれの命令制御部は、制御情報を供給することで、制御情報の命令列に含まれる命令を命令実行部１Ｐｃに発行する。
【００６８】
そして、それぞれの命令制御部は、供給される命令列における２つの命令の間の依存関係を検出し、検出する依存関係による制約が守られた、当該２つの命令の実行順序を決定する命令スケジューリング処理を行い、決定する実行順序で命令を命令実行部１Ｐｃに実行させる制御情報を生成する。
【００６９】
なお、上述した、命令の間の依存関係には、例えば、データ依存の関係、制御依存の関係、資源競合の関係などの、関係を有する２つの命令が実行されるタイミングの間の時間関係が制約される種々の命令の間の関係が含まれる。
【００７０】
そして、より詳しくは、それぞれの命令制御部は、例えば、依存関係により実行順序を入れ替えることが禁止される２つの命令を、入れ替えが生じない範囲で別の実行順序にそれぞれ移動させ、移動後の、禁止されている入れ替えがされていない実行順序で、それら命令をそれぞれ実行させる制御情報を生成する。また、例えば、それぞれの命令制御部は、一方の命令の実行完了等の予め定められたタイミングより後のタイミングで、他方の命令を実行させる制約を生じさせる依存関係がある場合において、その予め定められたタイミングよりも後のタイミングで他方の命令が実行される実行順序で、その他方の命令を実行させる制御情報を生成する。
【００７１】
なお、上述の通り、第一の命令制御部１１および第二の命令制御部１２が、命令のグルーピングを行う最大の命令の個数は、それぞれ、４命令および２命令である。以下、このような、グルーピングが行われる最大の命令の個数のことを、並列化限度数と呼ぶ。この並列化限度数は、請求の範囲の記載における、並列化の処理の「並列度」の一例をなす。それぞれの命令制御部は、複数の命令の実行順序を、互いに同一の実行順序に決定することにより、それらの命令をグルーピングして、それらの命令を並列に命令実行部１Ｐｃに実行させる。
【００７２】
このため、第二の命令制御部１２は、並列化限度数がより少ない並列化の処理を行い、並列化限度数がより少ない並列化の処理に際して制約となる依存関係のみを検出するので、比較的スケジューリング処理が簡素である。また、第二の命令制御部１２は、並列化限度数が少なく、つまり、並列に同じ実行順序で実行させる命令の個数が少ないことから、実行順序の最適化において検討する実行順序の範囲が狭く、スケジューリング処理がより簡素である。
【００７３】
また、上述の通り、第一の命令制御部１１は４ステージで、第一の命令制御処理を行い、第二の命令制御部１２は２ステージで、第一の命令制御処理とは異なった、第二の命令制御処理を行う。よって、命令制御処理を開始してから、その命令制御処理で発行される命令の実行を命令実行部１Ｐｃが開始するまでの遅延時間が、第一の命令制御部１１では４サイクルで、第二の命令制御部１２では２サイクルである。
【００７４】
記憶部１３は、第一の命令制御部１１および第二の命令制御部のうち一方の命令制御部を特定する制御部選択情報１３ｄを保持する。記憶部１３は、例えば、制御部選択情報１３ｄを保持するレジスタによって構成される。
【００７５】
そして、記憶される制御部選択情報１３ｄには、第一のスレッドの命令列Ｉｄａ用の第一の制御部選択情報と、第二のスレッドの命令列Ｉｄｂ用の第二の制御部選択情報とが含まれ、記憶部１３は、第一の制御部選択情報を記憶する第一のレジスタ等の第一部分と、第二の制御部選択情報を記憶する第二レジスタ等の第二部分との２つの部分を備える。
【００７６】
命令実行部１Ｐｃは、第一の命令制御部１１、第二の命令制御部１２より供給された命令を並行に３ステージ分の処理によって実行する。なお、命令実行部１Ｐｃは、それぞれのステージの処理において、一方の命令制御部の命令を処理するのと並行に、他方の命令制御部の命令の処理を行う。命令実行部１Ｐｃは、例えば、データを一時的に保持する一時保持レジスタや、主記憶１Ｐａにアクセスするアクセス装置、保持レジスタやアクセス装置等から入力されるデータに対して、四則演算などの演算を行うＡＬＵ（Arithmetic and Logic Unit）などを備えて、これらの構成を制御情報により示されるように動作させることにより、制御情報により示される命令列を実行する。
【００７７】
命令実行部１Ｐｃはさらに、命令列Ｉｄａ、命令列Ｉｄｂによる特定の命令（以下、更新命令）が命令実行部１Ｐｃによって実行された場合に、制御部選択情報１３ｄに設定された設定内容を更新するように構成されている。
【００７８】
なお、第一の命令制御部１１および第二の命令制御部１２は、それぞれ、当該命令制御部に供給される命令列のうちに、上記更新命令が含まれる場合に、上記した更新を命令実行部１Ｐｃに行わせる制御情報を生成する。
【００７９】
ここで、上述した第一のスレッドの制御部選択情報および第二のスレッドの制御部選択情報には、それぞれ、その制御部選択情報のスレッド命令列が、仮に、第一の命令制御部１１により命令制御されたとしても２命令よりも多い命令が並列に実行されない特定命令列であるか否かを示す設定内容が格納される。ここで、どのようにして格納されるかについては、後述する。
【００８０】
以下、第一の命令制御部１１が命令列の命令制御処理をした場合に並列に実行される命令の個数の最大個数を、その命令列の可能最大並列数と呼ぶものとする。上述の特定命令列とは、可能最大並列数が、第二の命令制御部１２の並列化限度数（２命令）以下である命令列である。
【００８１】
そして、上述した更新命令は、分岐先の命令列を実行開始させる、サブルーチン命令や、メソッド呼び出し命令、関数呼び出し命令、ｇｏｔｏ命令、例外処理起動命令、システムコール命令、条件付分岐命令などの各種の分岐命令として構成された予め定められた命令である。そして、この更新命令は、実行開始させる分岐先の命令列のスレッドに対応する制御部選択情報を、実行開始させる前に予め、実行開始させる命令列に対応する適切な値に更新させる。ここで、例えば、更新命令には、命令制御部を特定する特定情報を示す１ビットのオペランドとして有しており、命令実行部１Ｐｃは、更新命令が実行される場合に、起動される命令列のスレッドの制御部選択情報を、そのオペランドが特定する命令制御部を特定する設定内容に更新してから、その命令列を起動させる。なお、このような更新命令は、コンパイラやプログラムによって、命令列中の適切な箇所に、適切なオペランドを有するものが格納される。
【００８２】
そして、制御部選択部１０は、第一のスレッドの命令列Ｉｄａについては、そのスレッドの制御部選択情報を取得して、その命令列Ｉｄａを供給する命令制御部として、取得する、そのスレッドの制御部選択情報が特定する命令制御部を選択し、換言すれば、特定される命令制御部に供給する命令列として、その命令列Ｉｄａを選択する。一方、制御部選択部１０は、第二のスレッドの制御部選択情報を取得して、取得する制御部選択情報により特定される命令制御部に、他方の第二の命令列Ｉｄｂを供給する。
【００８３】
図２は、実施の形態１における命令制御装置１において、プログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。
【００８４】
図２において、縦方向の複数の行は、最上段の１つの行と、その１つの行に続く４つの行と、その４つの行に続く２つの行と、その２つの行に続く３つの行との４つの部分に分かれる。そして、最上段の１つの行は、命令フェッチ部１Ｐｂの処理内容を示す。それに続く４つの行は、第一の命令制御部１１の処理内容を示す４つの行であり、すなわち、第一の命令制御部１１が行う４ステージの処理内容をそれぞれ示す。この４つの行は、図２において１１−１から１１−４の記号がそれぞれ付された４つの行である。そして、それに続く２つの行は、第二の命令制御部１２の処理内容を示す２つの行であり、すなわち、第二の命令制御部１２が行う２ステージの処理内容をそれぞれ示す。この２つの行は、図２において１２−１から１２−２の記号がそれぞれ付された２つの行である。そして、それに続く最下部の３つの行は、命令実行部１Ｐｃが行う３ステージの処理内容をそれぞれ示す。この３つの行は、図２において実行部−１から実行部−３の記号がそれぞれ付された３つの行である。
【００８５】
また、横方向の複数の列は、左の列から、右の列へと、最左端の第１サイクルの列から、最右端の第１５サイクルの列までである。それぞれの列は、プロセッサ１Ｐの１つのサイクルでの処理内容を示す。それぞれの列における、プロセッサ１Ｐの命令フェッチ部１Ｐｂ等の構成部分に対応する行において、その行の構成部分における、その列のサイクルでの処理が示される。
【００８６】
そして、図２で、ハッチングが付されたボックスは、第二の命令制御部１２により処理されるプログラム８２が、そのボックスの列のサイクルで、そのボックスの行の構成部分により処理されることを示す。
【００８７】
また、図２で、ハッチングのない白抜きのボックスは、第一の命令制御部１１により処理されるプログラム８１が、そのボックスのサイクルにおいて、そのボックスの行の構成部分により、処理されることを示す。
【００８８】
プログラム８１を、第一の命令制御部１１により命令制御処理される第一命令列として実行する場合、予め特定の命令（上述した更新命令）を実行することによって、第一命令列を第一の命令制御部１１に供給するように制御部選択情報１３ｄに設定する。つまり、プログラム８１のスレッドの制御部選択情報に、第一の命令制御部１１を特定する設定を行う。これにより、第一の命令制御部１１は、最大４命令までの命令の並列化が可能であるため、プログラム８１は８１ａ、８１ｂ、８１ｃの３つの命令グループに分割される（図２、図９参照）。ここで、図２においては、このような、第一の命令制御部１１の処理が、第一の命令制御部１１の４つの行の、複数の白抜きのボックスによって示される。
【００８９】
次に、プログラム８２を、第二の命令制御部１２により命令制御処理される第二命令列として実行する場合、予め特定の命令（更新命令）を実行することによって命令列Ｉｄｂを第二の命令制御部１２に供給するように制御部選択情報１３ｄに設定する。第二の命令制御部１２は、最大２命令までの命令の並列化が可能であるため、プログラム８２はそれぞれ命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割される。図２においては、このような、第二の命令制御部１２の処理が、第二の命令制御部１２の２つの行の、ハッチング付きの複数のボックスによって示される。
【００９０】
上記の動作において、第一の命令制御部１１は４ステージ分の処理を行い、図２において第３サイクル〜第６サイクルに示される４サイクル遅延時間があるため、プログラム８１の処理に分岐した場合には、命令実行部での３サイクルの処理を加えた３＋４＝７サイクル分の分岐ペナルティを伴った後処理を開始する。
【００９１】
また、第二の命令制御部１２は２ステージ分の処理を行い、図２において第４サイクル〜第５サイクルの２サイクルの遅延時間があるため、プログラム８２の処理に分岐した場合には、命令実行部での３サイクルの処理を加えた２＋３＝５サイクル分の分岐ペナルティを伴った後処理を開始する。
【００９２】
このようにして、命令列に含まれる命令を命令実行部１Ｐｃに発行する命令制御装置１であって、第一の命令列に含まれる命令を前記命令実行部１Ｐｃに発行する第一の命令制御部１１と、第二の命令列に含まれる命令を前記命令実行部１Ｐｃに発行し、かつ、第二の命令列が当該第二の命令制御部１２に入力されてから、当該第二の命令列に含まれる命令が前記命令実行部１Ｐｃにより実行開始されるまでの遅延時間は、前記第一の命令列が前記第一の命令制御部１１に入力されてから、当該第一の命令列に含まれる命令が前記命令実行部１Ｐｃにより実行開始されるまでの遅延時間よりも短い第二の命令制御部とを備える命令制御装置１が構成される。
【００９３】
このような実施の形態１による命令制御装置１では、並列化の余地の少ないプログラム８２等の、特定命令列である命令列に対して、並列化限度数が小さく所要ステージの少ない第二の命令制御部１２を使用することによって、遅延時間ひいては分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサに対してより効率的な処理を行うことが可能となる。
【００９４】
なお、このような、実施の形態１による命令制御装置１では、特定の命令（更新命令）を実行することによって制御部選択情報１３ｄを更新することができるが、これ（更新命令）はサブルーチンコール命令であってもよい。そして、サブルーチンコール命令は、例えば、そのサブルーチンコール命令に付与された、例えばオペランドなどの情報が示す命令制御部を選択する。つまり、サブルーチンコール命令は、その命令が実行させるサブルーチンに含まれる命令を処理する命令制御部として、その情報が示す命令制御部を選択する。この場合、サブルーチンコール命令等の、更新命令である分岐命令は、例えば、その分岐命令が起動される命令列が実行されるスレッドが、当該サブルーチン命令が実行されているスレッドと同じになる場合には、当該分岐命令が実行されているスレッドの制御部選択情報を更新してもよい。
【００９５】
（実施の形態２）
図３は、本発明の実施の形態２による命令制御装置１Ａおよび命令制御装置１Ａを有するプロセッサ１ＡＰの構成を示したものである。
【００９６】
なお、主記憶１Ｐａ、命令フェッチ部１Ｐｂ、制御部選択部１０、第一の命令制御部１１、第二の命令制御部１２の構成は実施の形態１と同等である。
【００９７】
すなわち、命令制御装置１Ａは、命令フェッチ部１Ｐｂによって主記憶１Ｐａから読み出された命令列Ｉｄａ、命令列Ｉｄｂに対して並列化の処理を行い、命令実行部１Ｐｃに供給するように構成されている。
【００９８】
また、制御部選択部１０は、制御部選択情報１３ｄに従って命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１、第二の命令制御部１２の何れかに供給する。
【００９９】
命令実行部１Ｐｃは、第一の命令制御部１１、第二の命令制御部１２より供給された命令を並行に３ステージ分の処理によって実行する。
【０１００】
そして、命令制御装置１Ａは、更に、並列度監視部１Ａｘを備える。
【０１０１】
並列度監視部１Ａｘは、第一の命令制御部１１が処理した命令グループの並列度を監視し、並列度の最大値が３並列を下回っていることが検知される場合に、その命令列を第二の命令制御部１２へ供給するように制御部選択情報１３ｄを、設定するように構成されている。
【０１０２】
また、制御部選択情報１３ｄは初期状態として、命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１へ供給するように設定されている。
【０１０３】
なお、この実施の形態２では、制御部選択情報１３ｄは、例えば、第一のスレッドの命令列Ｉｄａを特定する命令列情報と、第二のスレッドの命令列Ｉｄｂを特定する命令列情報とが含まれるものとする。そして、制御部選択情報１３ｄは、さらに、命令列情報と、何れか一方の命令制御部を特定する特定情報との間を対応付ける対応関係とが含まれるものとする。ここで、特定情報は、対応関係により対応付けられる命令列情報が上記並列度監視部１Ａｘによる設定を受けていない初期状態において、第二の命令制御部１２を特定する設定にされているものとする。そして、記憶部１３は、取得される制御部選択情報のスレッドの命令列の命令列情報が入力されて、入力される命令列情報に対応関係が対応させる特定情報を、制御部選択部１０に取得させる。
【０１０４】
そして、実施の形態１の説明で述べた、それぞれのスレッドの制御部選択情報は、そのスレッドの命令列情報により特定される命令列の対応関係が当該命令列に対応させる特定情報により構成される。
【０１０５】
図４は、本実施の形態における命令制御装置１Ａにより、プログラム８１、８２を最初に並行に実行した場合のパイプライン処理の動作を示す図である。
【０１０６】
プログラム８１を最初に実行する場合、制御部選択部１０は制御部選択情報の先述の初期状態に従って、プログラム８１を第一の命令制御部１１へ供給する。
【０１０７】
第一の命令制御部１１は、最大４命令までの命令の並列化が可能であるため、プログラム８１は８１ａ、８１ｂ、８１ｃの３つの命令グループに分割される（図４、図９参照）。さらに、並列度監視部１Ａｘは、第一の命令制御部１１が処理した命令の並列度を監視した結果、プログラム８１の命令列は３並列以上の並列度で並列化されているため（つまり、プログラム８１は可能最大並列数（先述）が、第二の命令制御部１２の並列化限度数（２命令）よりも大きい、特定命令列ではない命令列であることが検知されるために）、プログラム８１の命令列は次回の処理時も第一の命令制御部１１で処理するように制御部選択情報１３ｄを設定する。つまり、並列度監視部１Ａｘは、初期状態であった、プログラム８１の命令列の特定情報を、そのまま、初期状態における、第一の命令制御部１１を特定する設定内容に維持し、変更しない。
【０１０８】
次に、プログラム８２を最初に実行する場合、制御部選択部１０は、制御部選択情報の先述の初期状態に従って、プログラム８２を第一の命令制御部１１に供給する（図４参照）。なお、これにより、第一の命令制御部１１は、第４サイクル〜第１０サイクルの間、プログラム８１とプログラム８２の処理を、図４に示されるように、並行処理する。
【０１０９】
そして、第一の命令制御部１１は、最大４命令までの命令の並列化が可能であるが、プログラム８２にはレジスタ間の依存が存在するため、プログラム８２は命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割される（図４、図９参照）。
【０１１０】
さらに、並列度監視部１Ａｘは、第一の命令制御部１１が処理した命令の並列度を監視した結果、プログラム８２の命令列は３並列を下回る並列度で並列化されているため、つまり、プログラム８２は可能最大並列数が、第二の命令制御部１２の並列化限度数（２命令）以下である特定命令列であることが検知されるために、プログラム８２の命令列は次回の処理時は第二の命令制御部１２で処理するように制御部選択情報１３ｄを設定する。つまり、並列度監視部１Ａｘは、初期状態であった、プログラム８２の命令列の特定情報を、初期状態における、第一の命令制御部１１を特定する設定内容から、第二の命令制御部１２を特定する設定内容に更新する。
【０１１１】
上記の動作において、第一の命令制御部１１は、４ステージ分の処理を行い、遅延時間が４サイクルであるため、プログラム８１の処理に分岐した場合には、命令実行部１Ｐｃは、当該命令実行部１Ｐｃでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後に、プログラム８１の処理を開始する。
【０１１２】
同様に、プログラム８２の処理に分岐した場合にも７サイクル分の分岐ペナルティを伴った後に、命令実行部１Ｐｃはプログラム８２の処理を開始する。
【０１１３】
図５は、図４に示される最初の動作の実行後、再度プログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。
【０１１４】
プログラム８１は、記憶部１３におけるプログラム８１の設定内容が変更されていないことから、最初にプログラムを実行した時と同様の動作で、命令グループ８１ａ、命令グループ８１ｂ、命令グループ８１ｃの３つの命令グループに第一の命令制御部１１により分割される。一方、プログラム８２は、変更されていることから、制御部選択情報１３ｄに従って、第二の命令制御部１２で処理され、命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに第二の命令制御部１２により分割されて実行される。
【０１１５】
上記の再度の実行動作において、第一の命令制御部１１は４ステージ分の処理を行うため、プログラム８１の処理に分岐した場合には、命令実行部１Ｐｃでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１１６】
また、第二の命令制御部１２は２ステージ分の処理を行うため、プログラム８２の処理に分岐した場合には、命令実行部１Ｐｃでの３サイクルの処理を加えた２＋３＝５サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１１７】
これにより、本実施の形態によるプロセッサ１ＡＰでは、並列化の余地の少ない命令列（特定命令列）に対しては、並列度監視部１Ａｘの制御によって並列化限度数が小さく所要ステージの少ない第二の命令制御部１２を使用する。これによって、例えば上述した更新命令などによる制御などのソフトウェアによる明示的な制御を介在させることなく、並列度監視部１Ａｘによる検出等がされることで、分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサ１ＡＰに対してより効率的な処理を、簡単に行うことが可能となる。
【０１１８】
（実施の形態３）
図６は、本発明の実施の形態３による命令制御装置１Ｂの構成を示したものである。
【０１１９】
なお、主記憶１Ｐａ、命令フェッチ部１Ｐｂ、第一の命令制御部１１、第二の命令制御部１２の構成は実施の形態１と同等である。
【０１２０】
すなわち、命令制御装置１Ｂは、命令フェッチ部１Ｐｂによって主記憶１Ｐａから読み出された命令列Ｉｄａ、命令列Ｉｄｂに対して並列化の処理を行い、命令実行部１Ｐｃに供給するように構成されている。
【０１２１】
また、制御部選択部１０Ｂは、制御部選択情報１３ｄ、命令供給状態監視部１Ｂｘによる検知の結果に従って、命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１、第二の命令制御部１２の何れかに供給する。
【０１２２】
また、命令実行部１Ｐｃは、第一の命令制御部１１、第二の命令制御部１２より供給された命令を並行に３ステージ分の処理によって実行する。
【０１２３】
そして、命令実行部１Ｐｃは、さらに、実施の形態１の場合と同様に、命令列Ｉｄａ、命令列Ｉｄｂによる特定の命令（更新命令）が命令実行部１Ｐｃによって実行された場合に、制御部選択情報１３ｄに設定された当該命令列の供給先を更新するように構成されている。
【０１２４】
命令供給状態監視部１Ｂｘは、命令実行部１Ｐｃが命令を実行中であるか否かを検知し、実行中でないと検知する場合には、制御部選択情報１３ｄに設定された情報によらず、命令列を第二の命令制御部１２に供給するように制御部選択部１０Ｂを制御する。
【０１２５】
図７は、実施の形態３における命令制御装置１Ｂにおいて、プログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。
【０１２６】
プログラム８１を実行する場合、予め特定の命令（更新命令）を実行することによって、プログラム８１を第一の命令制御部１１に供給するように制御部選択情報１３ｄに設定する。しかし、図７における第３サイクル、第５サイクルにおいて、プログラム８１の先頭部分（命令グループ８１ｄ、命令グループ８１ｅ：図７、図９参照）が制御部選択部１０Ｂに供給されている時点では、命令列による命令は命令実行部１Ｐｃでは実行されていない。図７においては、この点が、第３サイクル、第５サイクルの列における命令実行部１Ｐｃの３つの行において、白抜きのボックスも、ハッチング付きのボックスもないことにより図示されている。このため、命令供給状態監視部１Ｂｘの制御により、プログラム８１の先頭部分（命令グループ８１ｄ、命令グループ８１ｅ：図７、図９参照）は第二の命令制御部１２に供給され、プログラム８１はそれぞれ命令グループ８１ｄ、命令グループ８１ｅ、命令グループ８１ｂ、命令グループ８１ｃの４つの命令グループに分割される（図７、図９参照）。つまり、命令供給状態監視部１Ｂｘは、これら第３サイクル、第５サイクルで、それぞれ、命令実行部１Ｐｃが命令を実行中でないことを検出して、制御部選択部１０Ｂに、制御部選択情報１３ｄの内容に関わらずに、プログラム８１の命令制御部として、第二の命令制御部１２を選択させる。なお、第５サイクルより後では、命令供給状態監視部１Ｂｘは、実行中であることを検出するので、制御部選択部１０Ｂは、制御部選択情報１３ｄの設定内容に従って、実施の形態１の場合と同様に、プログラム８１を第一の命令制御部１１に供給すると共に、プログラム８２を第二の命令制御部１２に供給する。
【０１２７】
次に、プログラム８２を実行する場合、予め特定の命令（更新命令）を実行することによって、プログラム８２を第二の命令制御部１２に供給するように制御部選択情報１３ｄに設定する。第一の命令制御部１１は、最大２命令までの命令の並列化が可能であるため、プログラム８２はそれぞれ命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割される。なお、第４サイクルでは、命令供給状態監視部１Ｂｘは、命令がまだ実行中でないので、プログラム８２を第二の命令制御部１２に供給させる制御をする。但し、命令が実行中となった後、つまり、第５サイクル以後も、第二の命令制御部１２は、制御部選択情報１３ｄの設定内容に従って、プログラム８２を継続して第二の命令制御部１２に供給する。
【０１２８】
上記の動作において、第二の命令制御部１２は２ステージ分の処理を行うため、プログラム８１の処理に分岐した場合には、命令実行部１Ｐｃでの３サイクルの処理を加えた２＋３＝５サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１２９】
同様に、プログラム８２も、５サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１３０】
以上のように、実施の形態３による命令制御装置１Ｂでは、並列化の余地の少ない命令列（特定命令列）に対して、並列化限度数が小さく所要ステージの少ない第二の命令制御部１２を使用することによって、無用な遅延時間を削減し、ひいては、分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサに対してより効率的な処理を行うことが可能となる。
【０１３１】
さらに、分岐が発生した際にも、分岐先の命令列の先頭部分（命令グループ８１ｄ、命令グループ８１ｅ：図７、図９参照）について、所要ステージの少ない第二の命令制御部１２を使用することによって、遅延時間を減らし、分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサに対してより効率的な処理を行うことが可能となる。
【０１３２】
（他の実施の形態）
さらに、本発明の命令制御装置は、以下の記載によって示される、他の形態を採ってもよい。そして、上記の複数の実施の形態のうちのそれぞれは、次の記載の一部を加えた形態にされてもよい。
【０１３３】
（Ａ）制御部選択部１０は、制御部選択情報１３ｄが、互いにスレッドが異なる命令列Ｉｄａ、命令列Ｉｄｂの何れについても、互いに同一の命令制御部により処理させる設定内容である場合には、図４のように設定内容が初期状態である場合および図６の場合以外のその他の場合にも、両者の命令列を１つのその命令制御部に処理させるものとしてもよい。
【０１３４】
（Ｂ）制御部選択部１０は、命令列Ｉｄａおよび命令列Ｉｄｂのうちで、可能最大並列数が、例えば第二の命令制御部１２の並列化限度数（２個）などの予め定められた個数以下である方の命令列を特定する選択情報を取得してもよい。そして、制御部選択部１０は、取得する選択情報が特定する命令列を、それら命令列Ｉｄａおよび命令列Ｉｄｂのうちで、第二の命令制御部１２に供給する第二命令列に選択し、第二の命令制御部１２に供給すると共に、他方の命令列を第一命令列に選択して、第一の命令制御部１１に供給するものであってもよい。
【０１３５】
（Ｃ）プロセッサでは、１つのスレッドの命令列のみが実行される場合があってもよい。この場合、制御部選択部１０は、例えば、その１つのスレッドの命令列の制御部選択情報を取得して、取得する制御部選択情報が特定する命令制御部にその命令列を供給すると共に、その命令制御部以外の他方の命令制御部には何れの命令列も供給しないものとしてもよい。
【０１３６】
（Ｄ）また、命令制御装置は、次のようなものであってもよい。上記のそれぞれの実施の形態に示される命令制御装置は、以下に示される命令制御装置が有する機能、性質、構成部分等の少なくとも一部が付け加えられた形態により、実施されてもよい。なお、付け加えがされた形態に限定されることはない。
【０１３７】
すなわち、命令制御装置は、第一の命令制御部と、第二の命令制御部と、選択部とを備える。そして、第一の命令制御部が、命令列を実行する実行動作を行う命令実行部の実行動作を制御することにより、命令列を当該命令実行部に実行させる。第二の命令制御部が、前記第一の命令制御部が実行させる命令列を実行するのと並列や並行など、同時に、前記命令実行部が実行する他の命令列を当該命令実行部に実行させる。そして、第二の命令制御部は、実行をさせる命令制御処理が、前記第一の命令制御部が命令列を実行させる第一の命令制御処理よりも、命令列に対する処理を開始してから当該命令列の実行動作が開始するまでの遅延時間が短い第二の命令制御処理である命令制御部である。そして、選択部が、前記命令実行部により実行される命令列を、前記第一の命令制御部と、前記第二の命令制御部とのうちの一方に供給する。
【０１３８】
なお、ここで選択部は、例えばスレッドが互いに異なる２つの命令列等の、予め定められた２つの命令列のうち一方の命令列を、一方の命令制御部に供給すると共に、他方の命令列は他方の命令制御部に供給するものであってもよい。なお、選択部は、こうして２つの命令列を同時に供給するだけではなく、１つの命令列のみを一方の命令制御部にのみ供給することがあるものであってもよい。
【０１３９】
そして、選択部は、第一の命令制御処理がされた場合の処理時間（遅延時間）および実行動作（並列に実行される命令の最大の個数）よりも、第二の命令制御処理された場合の処理時間および実行動作の方が優位であることを判定する予め定められた判定基準に応じた動作をしてもよい。すなわち、選択部は、例えば、この判定基準が満たされることを示す予め定められた判定情報（制御部選択情報）により第二の命令制御処理される方が優位と示される場合に、第二の命令制御部１２に命令列を供給するものであってもよい。選択部は、このような判定情報を、例えば、判定情報を記憶する予め定められた記憶部から取得するものであってもよいし、判定情報を生成する予め定められた情報生成部から取得するものであってもよい。
【０１４０】
ここで、判定情報は、実行される命令列が、第二の命令制御処理された場合の処理時間および実行動作の方が優位となる性質を有する特定命令列である場合に、第二の命令制御処理される方が優位であることを判定する判定基準が満たされることを示すものであってもよい。
【０１４１】
そして、判定基準は、例えば、当該命令列の前記可能最大並列数（プログラム８１では４命令、プログラム８２では２命令）が、命令制御部が並列化を可能な限度の前記並列化限度数（第一の命令制御部１１では４命令、第二の命令制御部１２では２命令）のうちで、大きくない方の並列化限度数（２命令）以下であか否かに関する基準であってよい。例えば、判定基準は、上記の可能最大並列数が、上記される、大きくない方の並列化限度数以下であり、何れの命令制御部により処理されても実行動作が互いに同一ないし予め定められた近傍範囲内である場合に、処理時間が長くない方の命令制御部（第二の命令制御部１２）の処理がされる方を優位と判定する判定基準などであってよい。このように、判定基準は、実行動作が予め定められた近傍範囲内ないし互いに同一である場合に、処理時間（遅延時間）が長くない方の命令制御処理（第二の命令制御部１２の命令制御処理）される方を優位と判定する判定基準であってもよい。
【０１４２】
そして、命令制御装置は、命令制御処理および実行動作の少なくとも一部に含まれる、処理対象の命令列が特定命令列である場合に生じる予め定められた検出動作が生じるか否かを検出してもよい。そして、命令制御装置は、検出結果が前記判定情報である検出部（並列度監視部１Ａｘ）を更に備えており、選択部は、一例としては、このような検出部により検出される当該検出結果を取得して、取得される当該検出結果を前記判定情報として用いるものであってもよい。
【産業上の利用可能性】
【０１４３】
本発明にかかる命令制御装置は、スレッド内の命令の性質に適した命令制御を行うことが可能であり、性質の異なる複数のスレッドを実行する情報処理装置の高性能化、低消費電力化、低価格化ができて有用である。
【符号の説明】
【０１４４】
１、１Ａ、１Ｂ、９０  命令制御装置
１０、１０Ｂ  制御部選択部
１１、９１  第一の命令制御部
１２、９２  第二の命令制御部
１３  記憶部
１３ｄ  制御部選択情報
Ｉｄａ、Ｉｄｂ、９１ａ、９２ａ  命令列
１Ａｘ  並列度監視部
１ＡＰ、１ＢＰ、１Ｐ、９０Ｐ  プロセッサ
１Ｂｘ  命令供給状態監視部
１Ｐａ、９１Ｐ  主記憶
１Ｐｂ、９２Ｐ  命令フェッチ部
１Ｐｃ、９３Ｐ  命令実行部
８１、８２  プログラム
【図１】
2010021119.tif 000003
【図２】
2010021119.tif 000004
【図３】
2010021119.tif 000005
【図４】
2010021119.tif 000006
【図５】
2010021119.tif 000007
【図６】
2010021119.tif 000008
【図７】
2010021119.tif 000009
【図８】
2010021119.tif 000010
【図９】
2010021119.tif 000011
【図１０】
2010021119.tif 000012
【手続補正書】
【提出日】平成23年2月15日(2011.2.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は命令制御装置に関し、特に複数のスレッドから成るプログラムを、スレッドを切り替えながら並行に実行する、マルチスレッド型のプロセッサにおける命令制御装置に関するものである。
【背景技術】
【０００２】
近年のプロセッサの性能向上に伴い、単一のプロセッサに求められる処理の内容はますます多彩になっている。特にディジタルＴＶ等のマルチメディア機器においては、メディア処理やシステム制御といった複数の処理を同時に処理する必要があり、これを実現するために複数の処理を時分割で実行するマルチスレッド型のプロセッサが注目されている。
【０００３】
マルチスレッド型のプロセッサでは、レジスタセットを複数備える等の手法により、複数のスレッドを少ないオーバヘッドで切り替えることが可能であり、複数の処理を同時進行で効率よく処理できる特徴がある。
【０００４】
図８は、従来のマルチスレッド型のプロセッサ９０Ｐにおける命令制御装置９０の構成を示したものである。
【０００５】
プロセッサ９０Ｐは、主記憶９１Ｐと、命令フェッチ部９２Ｐと、命令制御装置９０と、命令実行部９３Ｐとを備える。
【０００６】
主記憶９１Ｐは、プロセッサ９０Ｐが実行する命令が格納された命令列を記憶する。
【０００７】
命令フェッチ部９２Ｐは、主記憶９１Ｐから、プロセッサ９０Ｐが実行する、スレッドが互いに異なる命令列９１ａ、９２ａを読み出し、それぞれ、命令制御装置９０に供給する。
【０００８】
命令制御装置９０は、命令フェッチ部９２Ｐによって主記憶９１Ｐから読み出された命令列９１ａ、９２ａに対して並列化の処理を行い、命令実行部９３Ｐに供給するように構成されている。なお、具体的には、命令制御装置９０は、命令列を実行する実行動作を特定する制御情報を命令実行部に供給する。そして、命令制御装置９０は、命令列に含まれる命令のグルーピングを行い、グルーピングされたそれら命令を並列に実行する実行動作を特定する制御情報を生成し、生成する制御情報を命令実行部９３Ｐに供給する。
【０００９】
なお、時分割で、論理的に同時に、複数の処理を実行することは、それらの処理が「並行」に実行されることと呼ばれる。他方、実行される時間が互いに重なり合って、物理的に同時に複数の処理が実行されることは、それらの処理が「並列」に実行されることと呼ばれる。
【００１０】
そして、命令制御装置９０は、第一の命令制御部９１と、第二の命令制御部９２との２つの命令制御部を備える。
【００１１】
第一の命令制御部９１は、命令フェッチ部９２Ｐより供給された、一方のスレッドの命令列９１ａに対して、パイプラインの４ステージ分の処理によって、並列に実行可能な命令を最大４命令までグルーピングする。これにより、第一の命令制御部９１は、最大４命令までグルーピングされた制御情報を生成して、命令実行部９３Ｐに供給する。
【００１２】
第二の命令制御部９２は、第一の命令制御部９１が命令列９１ａの制御情報を供給するのと同様に、命令フェッチ部９２Ｐより第二の命令制御部９２に供給された、他方のスレッドの命令列９２ａに対して、パイプラインの４ステージ分の処理によって、並列に実行可能な命令を最大４命令までグルーピングする。これにより、第二の命令制御部９２は、最大４命令までグルーピングされた制御情報を生成して、命令実行部９３Ｐに供給する。
【００１３】
命令実行部９３Ｐは、第一の命令制御部９１、および第二の命令制御部９２より供給された命令列の命令を実行する。そして、このとき、命令実行部９３Ｐは、第一の命令制御部９１により供給される命令列の命令を実行するのと並行に、他方の第二の命令制御部９２により供給される命令列を実行する。命令実行部９３Ｐは、３ステージ分の処理によって実行を行う。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特許第２９０８５９８号公報（第３６頁、図１）
【発明の概要】
【発明が解決しようとする課題】
【００１５】
図９は、プログラムの一例として、プログラム８１とプログラム８２とを示す図である。
【００１６】
図１０は、上記のように構成された従来の命令制御装置９０においてプログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。
【００１７】
図１０において、縦方向に並ぶ複数の行は、最上段の１つの行と、その１つの行に続く第１番目の４つの行と、第１番目の４つの行に続く第２番目の４つの行と、第２番目の４つの行に更に続く３つの行との４つの部分に分かれる。最上段の１つの行は、命令フェッチ部９２Ｐの処理内容を示す行である。そして、第１番目の４つの行は、第一の命令制御部９１の処理内容を示す４つの行である。すなわち、第１番目の４つの行は、第一の命令制御部９１が行う４ステージの処理内容をそれぞれ示す。第１番目の４つの行は、図１０において９１−１から９１−４の記号がそれぞれ付された４つの行である。次に、第２番目の４つの行は、第二の命令制御部９２の処理内容を示す４つの行である。すなわち、第２番目の４つの行は、第二の命令制御部９２が行う４ステージの処理内容をそれぞれ示す。第２番目の４つの行は、図１０において９２−１から９２−４の記号がそれぞれ付された４つの行である。第２番目の４つの行に続く３つの行は、命令実行部１Ｐｃが行う３ステージの処理内容をそれぞれ示す。この３つの行は、図１０において実行部−１から実行部−３の記号がそれぞれ付された３つの行である。
【００１８】
また、横方向の複数の列は、左の列から、右の列へと、最左端の第１サイクルの列から、最右端の第１６サイクルの列までである。それぞれの列は、プロセッサ９０Ｐの１つのサイクルでの処理内容を示す。それぞれの列におけるそれぞれの行は、その列のサイクルでの、命令実行部９３Ｐ等のその行の構成部分における処理内容を示す。
【００１９】
そして、図１０において、ハッチングが付されたボックスは、第二の命令制御部９２により処理されるプログラム８２が、そのボックスの行の構成部分により、そのボックスの列のサイクルにおいて処理されることを示している。同様に、図１０で、ハッチングのない白抜きのボックスは、第一の命令制御部１１により処理されるプログラム８１が、そのボックスの列のサイクルにおいて、そのボックスの行の構成部分により処理されることを示している。
【００２０】
プログラム８１を実行する場合、第一の命令制御部９１は、最大４命令までの命令の並列化が可能であるため、プログラム８１はそれぞれ命令グループ８１ａ、命令グループ８１ｂ、命令グループ８１ｃの３つの命令グループ（図９、図１０）に分割されて実行される。図１０においては、これら命令グループ８１ａ、命令グループ８１ｂ、命令グループ８１ｃが、互いに異なる、矢印線により示される４つの流れの処理によってそれぞれプロセッサ９０Ｐに処理され、第３サイクル〜第８サイクルにおける、第一の命令制御部９１の４つの行で、プログラム８１がこれら３つの命令グループに分割されることが、第一の命令制御部９１の行の白抜きのボックスにより示されている。
【００２１】
次に、プログラム８２を実行する場合、第二の命令制御部９２は、最大４命令までの命令の並列化が可能であるが、プログラム８２にはレジスタ間の依存が存在するため、プログラム８２は命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割されて実行される（図９、図１０）。図１０においては、これら命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄが、互いに異なる、矢印線により示される４つの流れの処理により、それぞれ、プロセッサ９０Ｐに処理され、第４サイクル〜第１０サイクルで、第二の命令制御部９１がプログラム８１を、これら３つの命令グループに分割することを示している。
【００２２】
上記の動作において、第一の命令制御部９１は、４ステージ分の処理を行うため、プログラム８１の処理に分岐した場合には、命令実行部９３Ｐでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後、処理を開始する。この７サイクルの分岐ペナルティの分岐ペナルティ時間を、図１０では、最下部の破線の２つの矢印線のうちの、上側の矢印線により示している。
【００２３】
同様に第二の命令制御部９２は、４ステージ分の処理を行うため、他方のプログラム８２の処理に分岐した場合には、命令実行部９３Ｐでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後処理を開始する。この７サイクルの分岐ペナルティ時間は、図１０では、最下部の破線の２つの矢印線のうちの、下側の矢印線によって示している。
【００２４】
確かに、上記の構成により、プロセッサ９０Ｐは、プログラム８１、８２を並行に実行することが可能であり、複数のスレッドの命令列を、少ないオーバヘッドで実行することが可能である。
【００２５】
しかし、従来の構成による命令制御装置９０では、互いに同一のパイプラインステージ数の第一の命令制御部９１、第二の命令制御部９２を設けて、全てのプログラムに対して均一な命令制御を行っているために、多様な性質を持つプログラムに対して、それぞれ、その性質に適した命令制御を行うことが困難であった。
【００２６】
例えば、上記の動作において、プログラム８２は最大でも２命令の並列度しか持たないプログラムであるにもかかわらず、４命令の並列化が可能な第二の命令制御部９２で処理されるため、本来必要な並列化処理よりも多くの処理が必要である。つまり、多くのパイプラインステージを用いることによって命令制御部での遅延時間が無用に長くなってしまい、ひいては分岐ペナルティが増大して、プロセッサ９０Ｐの動作効率が低下するという課題があった。
【００２７】
本発明の目的は、複数のスレッドの命令列を処理する命令制御装置において、多様な性質を持つプログラムに対して、それぞれその性質に適した命令制御を行うことで、無用な遅延時間を減らし、プロセッサの効率的な動作を可能とする命令制御装置を提供することにある。
【課題を解決するための手段】
【００２８】
本発明の命令制御装置は、上記課題を解決するため、次の構成を採った。
【００２９】
本発明の第１の命令制御装置は、命令列に含まれる命令を命令実行部に発行する命令制御装置であって、第一の命令列に含まれる命令を前記命令実行部に発行する第一の命令制御部と、第二の命令列に含まれる命令を前記命令実行部に発行し、かつ、第二の命令列が当該第二の命令制御部に入力されてから、当該第二の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間は、前記第一の命令列が前記第一の命令制御部に入力されてから、当該第一の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間よりも短い第二の命令制御部と、を備えることを特徴とする命令制御装置である。
【００３０】
このような命令制御装置によれば、遅延時間が短い比較的簡単な命令制御がされると弊害がある性質の命令列は、第一の命令列として、第一の命令制御部による命令制御がされる一方で、第二の命令制御部の命令制御がされても弊害のない性質の命令列に対しては、当該命令列を第二の命令列として、遅延時間が短い簡単な命令制御ができて、無用な遅延時間を減らすことができ、多様な性質を持つプログラムに対して、それぞれ、そのプログラムの性質に適した命令制御部を選択することにより、遅延時間が短くてより効率的な命令制御を行うことができ、プロセッサを効率的に動作させることが可能である。
【００３１】
また、本発明の第２の命令制御装置は、主記憶から取得された予め定められた２つの命令列から前記第一の命令列を選択し、選択した当該第一の命令列を前記第一の命令制御部に供給すると共に、当該２つの命令列から前記第二の命令列を選択し、選択した当該第二の命令列を前記第二の命令制御部に供給する選択部を更に備える、ことを特徴とする第１の命令制御装置である。
【００３２】
このようにすれば、命令制御装置内において、選択部により、遅延時間が短い比較的簡単な命令制御処理がされると弊害がある性質の命令列は第一の命令列に、第二の命令制御部の命令制御がされても弊害のない性質の命令列は第二の命令列にそれぞれ適切に選択できて、第一の命令制御部および第二の命令制御部に各々供給でき、シンプルな構成で、効率的な動作を実現できる。
【００３３】
なお、例えば、選択部は、第一の命令制御部に供給する命令列を前記２つの命令列のうちから選択する第一のセレクタ回路と、第二の命令制御部に供給する命令列を前記２つの命令列のうちから選択する第二のセレクタ回路とを備えてもよく、例えば、第一のセレクタ回路は、他方の第二のセレクタ回路により一方の命令列が選択されると、他方の命令列を選択するものであってもよい。
【００３４】
なお、本発明の命令制御装置は、処理内容の異なる複数の命令制御部を設け、そのスレッドの性質に適した命令制御部へと、スレッドの命令列が供給される構成をとってもよい。
【００３５】
また、本発明の命令制御装置は、主記憶から取得した第一の命令列および第二の命令列を処理し、命令実行部の制御情報を生成する命令制御装置において、前記命令制御装置は、制御部選択部（選択部）と、第一の命令制御部と、第二の命令制御部とを有し、前記制御部選択部は、前記第一の命令列および前記第二の命令列をそれぞれ前記第一の命令制御部と前記第二の命令制御部の何れかに供給し、前記第一の命令制御部は、供給された命令列に対して所定の処理を行い、前記第二の命令制御部は、供給された命令列に対して前記第一の命令制御部が行う処理とは異なる処理を行うことを特徴とする命令制御装置であってもよい。
【００３６】
また、本発明の命令制御装置は、命令処理内容の異なる複数の命令制御部を有し、制御選択部は、そのスレッドの命令列の性質に適した命令制御部へと、スレッドの命令列を供給することによって、性質の互いに異なる複数のスレッドの命令列のそれぞれに対して、そのスレッドに適した命令制御を適用することが可能となるものであってもよい。
【００３７】
また、本発明の命令制御装置は、並列化可能な並列度の異なる複数の命令制御部を設け、制御部選択部がスレッドの命令列の並列度に適した命令制御部を選択して、処理する命令列を供給する構成をとってもよい。
【００３８】
なお、命令制御部を選択するとは、より詳細には、例えば、命令列をその命令制御部には供給すると共に、他方の命令制御部には供給しないことを意味する。
【００３９】
ここで、本発明の命令制御装置は、前記第一の命令制御部は、供給された命令列に対して所定の並列度の並列化の処理を行い、前記第二の命令制御部は、供給された命令列に対して前記第一の命令制御部より小さな並列度での並列化の処理を行うことを特徴とする命令制御装置であってもよい。
【００４０】
また、本発明の命令制御装置は、前記第一の命令制御部は、供給された命令列に対して所定の依存検出に基づく命令スケジューリング処理を行い、前記第二の命令制御部は、供給された命令列に対して前記第一の命令制御部より簡略化された依存検出に基づく命令スケジューリング処理を行うことを特徴とする命令制御装置であってもよい。
【００４１】
また、本発明の命令制御装置は、前記命令制御装置は、パイプライン動作に基づいて前記命令実行部の制御情報を生成し、前記第一の命令制御部は、所定のパイプラインステージ数で供給された命令列に対する処理を行い、前記第二の命令制御部は、前記第一の命令制御部より少ないパイプラインステージ数で供給された命令列に対する処理を行うことを特徴とする命令制御装置であってもよい。
【００４２】
また、本発明の命令制御装置は、前記命令制御部は、プログラムによって書き換え可能である第一の設定レジスタと第二の設定レジスタを有し、前記制御部選択部は、前記第一の設定レジスタの設定内容に基づいて前記第一の命令列の供給先を決定し、さらに、前記制御部選択部は、前記第二の設定レジスタの設定内容に基づいて前記第二の命令列の供給先を決定することを特徴とする命令制御装置であってもよい。
【００４３】
また、本発明の命令制御装置は、前記制御部選択部は、前記第一の命令制御部が並列化した前記第一の命令列および前記第二の命令列の並列度を監視し、当該命令列の並列度が所定の値以下である場合は、以後当該命令列を前記第二の命令制御部に供給することを特徴とする命令制御装置であってもよい。
【００４４】
また、本発明の命令制御装置は、前記制御部選択部は、前記命令実行部が前記第一の命令列および前記第二の命令列に基づく分岐命令を実行した場合には、当該命令列の分岐先に対応する命令列を前記第二の命令制御部に供給することを特徴とする命令制御装置であってもよい。
【００４５】
また、本発明の命令制御装置は、前記制御部選択部は、前記第一の命令列および前記第二の命令列の前記命令実行部への供給状態を監視し、当該命令列の前記命令実行部への供給が滞っている場合には当該命令列を前記第二の命令制御部に供給することを特徴とする命令制御装置であってもよい。
【００４６】
また、本発明の命令制御装置は、前記制御部選択部は、前記第一の命令列および前記第二の命令列の前記命令実行部への供給状態を監視し、当該命令列が前記命令実行部へ充分供給されている場合には、当該命令列を前記第一の命令制御部に供給することを特徴とする命令制御装置であってもよい。
【００４７】
また、本発明の命令制御装置は、前記第一の設定レジスタと前記第二の設定レジスタは、プログラムに含まれるサブルーチンコール命令に付与された属性に基づいて更新されることを特徴とする命令制御装置であってもよい。
【００４８】
また、本発明の命令制御装置は、命令スケジューリングの際の依存検出の詳細度の異なる複数の命令制御部を設け、制御部選択部がスレッド内の命令の依存状況に適した命令制御部を選択して、処理する命令列を供給する構成をとってもよい。
【００４９】
また、本発明の命令制御装置は、処理内容およびパイプライン段数の異なる複数の命令制御部を設け、制御部選択部が、命令列の性質および、パイプラインレイテンシのトレードオフに基づいて命令制御部を選択して、処理する命令列を供給する構成をとってもよい。
【００５０】
また、本発明の命令制御装置は、自身が処理した命令列の並列度を監視し、それに応じて制御部選択部が並列度に応じて適した命令制御部を選択して、処理する命令列を供給する構成をとってもよい。
【００５１】
また、本発明の命令制御装置は、自身の命令の供給状況を監視し、命令供給が滞っている場合は、制御部選択部が、より短いパイプライン段数の命令制御部を選択して、処理する命令列を供給する構成をとってもよい。
【００５２】
また、本発明の命令制御装置は、自身が処理するスレッド毎にスレッドの属性を保持するレジスタを有し、制御部選択部がスレッドの属性に対応した命令制御部を選択して、処理する命令を供給する構成をとってもよい。
【００５３】
また、本発明の命令制御装置は、プログラムによってスレッドの属性を保持するレジスタを書き換えることが可能で、制御部選択部がスレッドの属性に対応した命令制御部を選択して、処理する命令を供給する構成をとってもよい。
【００５４】
また、本発明の命令制御装置は、サブルーチンコール命令に付与された属性によってスレッドの属性を保持するレジスタを書き換えることが可能で、制御部選択部がスレッドの属性に対応した命令制御部を選択して、処理する命令を供給する構成をとってもよい。
【発明の効果】
【００５５】
以上の構成により、本発明による命令制御装置では、多様な性質を持つプログラムに対して、それぞれ、そのプログラムに適した命令制御部を選択することにより、無用な遅延時間を減らし、より効率的な命令制御を行うことができ、プロセッサを効率的に動作させることが可能である。
【図面の簡単な説明】
【００５６】
【図１】図１は、第１の実施の形態による命令制御装置の構成を示す図である。
【図２】図２は、第１の実施の形態による命令制御装置によって、プログラム例を実行した際のパイプライン動作を示す図である。
【図３】図３は、第２の実施の形態による命令制御装置の構成を示す図である。
【図４】図４は、第２の実施の形態による命令制御装置によって、プログラム例を最初に実行した際のパイプライン動作を示す図である。
【図５】図５は、第２の実施の形態による命令制御装置によって、プログラム例を再度実行した際のパイプライン動作を示す図である。
【図６】図６は、第３の実施の形態による命令制御装置の構成を示す図である。
【図７】図７は、第３の実施の形態による命令制御装置によって、プログラム例を実行した際のパイプライン動作を示す図である。
【図８】図８は、従来の構成による命令制御装置の構成を示す図である。
【図９】図９は、プログラム例を示す図である。
【図１０】図１０は、従来の構成による命令制御装置によって、プログラム例を実行した際のパイプライン動作を示す図である。
【発明を実施するための形態】
【００５７】
（実施の形態１）
図１は、本発明の実施の形態１による命令制御装置１および命令制御装置１を有するプロセッサ１Ｐの構成を示したものである。
【００５８】
プロセッサ１Ｐは、主記憶１Ｐａと、命令フェッチ部１Ｐｂと、命令制御装置１と、命令実行部１Ｐｃとを備える。
【００５９】
主記憶１Ｐａは、プロセッサ１Ｐが実行する命令の命令列を記憶する。
【００６０】
命令フェッチ部１Ｐｂは、主記憶１Ｐａからプロセッサ１Ｐが実行する、スレッドが互いに異なる命令列Ｉｄａ、Ｉｄｂを読み出し、読み出したそれら命令列Ｉｄａ、命令列Ｉｄｂを命令制御装置１に供給する。
【００６１】
命令制御装置１は、命令フェッチ部１Ｐｂによって主記憶１Ｐａから読み出された命令列Ｉｄａ、Ｉｄｂに対して並列化の処理を行い、命令実行部１Ｐｃに供給するように構成されている。
【００６２】
制御部選択部１０は、制御部選択情報１３ｄに従って命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１、第二の命令制御部１２の何れかに供給する。以下、制御部が、第一の命令制御部１１に供給する命令列として選択し、第一の命令制御部１１に供給する命令列を第一命令列と呼び、第二の命令制御部１２に供給する命令列として選択し、第二の命令制御部１２に供給する命令列を、第二命令列と呼ぶ。これら第一命令列及び第二命令列は、それぞれ、請求の範囲の記載における「第一の命令列」及び「第二の命令列」の一例である。
【００６３】
なお、制御部選択部１０は、例えば、命令列Ｉｄａおよび命令列Ｉｄｂが入力されて、第一の命令制御部１１に供給する第一命令列をそれら命令列Ｉｄａおよび命令列Ｉｄｂのうちから選択して、選択する命令列を第一の命令制御部１１に出力する第一のセレクタ回路を備えてもよい。そして、制御部選択部１０は、例えば、命令列Ｉｄａおよび命令列Ｉｄｂが入力されて、第二の命令制御部１２に供給する第二命令列をそれらから選択し、選択する命令列を第二の命令制御部１２に出力する第二のセレクタ回路を備えてもよい。
【００６４】
なお、以下の説明では、制御部選択部１０が、第一の命令制御部１１に供給する命令列として命令列Ｉｄａを選択し、第二の命令制御部１２に供給する命令列には命令列Ｉｄａを選択しないことは、次のように記載される。すなわち、そのことは、制御部選択部１０はその命令列Ｉｄａを供給する供給先の命令制御部として、第一の命令制御部１１および第二の命令制御部１２のうちから、第二の命令制御部１２を選択することと記載される。なお、命令列Ｉｄｂを供給する命令制御部を選択する旨の記載についても、同様であり、上記の例による。
【００６５】
第一の命令制御部１１は、制御部選択部１０から供給された命令列に対して、パイプラインの４ステージ分の処理によって、並列に実行可能な命令を、最大４命令までグルーピングし、命令実行部１Ｐｃに供給する。
【００６６】
第二の命令制御部１２は、制御部選択部１０から供給された命令列に対して、パイプラインの２ステージ分の処理によって、並列に実行可能な命令を最大２命令までグルーピングし、命令実行部１Ｐｃに供給する。
【００６７】
ここで、より具体的には、第一の命令制御部１１および第二の命令制御部１２は、それぞれ、当該命令制御部に制御部選択部１０から供給される命令列に基づいて、供給される当該命令列を実行する実行動作を特定する制御情報を生成し、生成する当該制御情報を命令実行部１Ｐｃに供給することにより、その命令列を命令実行部１Ｐｃに実行させる。それぞれの命令制御部は、制御情報を供給することで、制御情報の命令列に含まれる命令を命令実行部１Ｐｃに発行する。
【００６８】
そして、それぞれの命令制御部は、供給される命令列における２つの命令の間の依存関係を検出し、検出する依存関係による制約が守られた、当該２つの命令の実行順序を決定する命令スケジューリング処理を行い、決定する実行順序で命令を命令実行部１Ｐｃに実行させる制御情報を生成する。
【００６９】
なお、上述した、命令の間の依存関係には、例えば、データ依存の関係、制御依存の関係、資源競合の関係などの、関係を有する２つの命令が実行されるタイミングの間の時間関係が制約される種々の命令の間の関係が含まれる。
【００７０】
そして、より詳しくは、それぞれの命令制御部は、例えば、依存関係により実行順序を入れ替えることが禁止される２つの命令を、入れ替えが生じない範囲で別の実行順序にそれぞれ移動させ、移動後の、禁止されている入れ替えがされていない実行順序で、それら命令をそれぞれ実行させる制御情報を生成する。また、例えば、それぞれの命令制御部は、一方の命令の実行完了等の予め定められたタイミングより後のタイミングで、他方の命令を実行させる制約を生じさせる依存関係がある場合において、その予め定められたタイミングよりも後のタイミングで他方の命令が実行される実行順序で、その他方の命令を実行させる制御情報を生成する。
【００７１】
なお、上述の通り、第一の命令制御部１１および第二の命令制御部１２が、命令のグルーピングを行う最大の命令の個数は、それぞれ、４命令および２命令である。以下、このような、グルーピングが行われる最大の命令の個数のことを、並列化限度数と呼ぶ。この並列化限度数は、請求の範囲の記載における、並列化の処理の「並列度」の一例をなす。それぞれの命令制御部は、複数の命令の実行順序を、互いに同一の実行順序に決定することにより、それらの命令をグルーピングして、それらの命令を並列に命令実行部１Ｐｃに実行させる。
【００７２】
このため、第二の命令制御部１２は、並列化限度数がより少ない並列化の処理を行い、並列化限度数がより少ない並列化の処理に際して制約となる依存関係のみを検出するので、比較的スケジューリング処理が簡素である。また、第二の命令制御部１２は、並列化限度数が少なく、つまり、並列に同じ実行順序で実行させる命令の個数が少ないことから、実行順序の最適化において検討する実行順序の範囲が狭く、スケジューリング処理がより簡素である。
【００７３】
また、上述の通り、第一の命令制御部１１は４ステージで、第一の命令制御処理を行い、第二の命令制御部１２は２ステージで、第一の命令制御処理とは異なった、第二の命令制御処理を行う。よって、命令制御処理を開始してから、その命令制御処理で発行される命令の実行を命令実行部１Ｐｃが開始するまでの遅延時間が、第一の命令制御部１１では４サイクルで、第二の命令制御部１２では２サイクルである。
【００７４】
記憶部１３は、第一の命令制御部１１および第二の命令制御部のうち一方の命令制御部を特定する制御部選択情報１３ｄを保持する。記憶部１３は、例えば、制御部選択情報１３ｄを保持するレジスタによって構成される。
【００７５】
そして、記憶される制御部選択情報１３ｄには、第一のスレッドの命令列Ｉｄａ用の第一の制御部選択情報と、第二のスレッドの命令列Ｉｄｂ用の第二の制御部選択情報とが含まれ、記憶部１３は、第一の制御部選択情報を記憶する第一のレジスタ等の第一部分と、第二の制御部選択情報を記憶する第二レジスタ等の第二部分との２つの部分を備える。
【００７６】
命令実行部１Ｐｃは、第一の命令制御部１１、第二の命令制御部１２より供給された命令を並行に３ステージ分の処理によって実行する。なお、命令実行部１Ｐｃは、それぞれのステージの処理において、一方の命令制御部の命令を処理するのと並行に、他方の命令制御部の命令の処理を行う。命令実行部１Ｐｃは、例えば、データを一時的に保持する一時保持レジスタや、主記憶１Ｐａにアクセスするアクセス装置、保持レジスタやアクセス装置等から入力されるデータに対して、四則演算などの演算を行うＡＬＵ（Arithmetic and Logic Unit）などを備えて、これらの構成を制御情報により示されるように動作させることにより、制御情報により示される命令列を実行する。
【００７７】
命令実行部１Ｐｃはさらに、命令列Ｉｄａ、命令列Ｉｄｂによる特定の命令（以下、更新命令）が命令実行部１Ｐｃによって実行された場合に、制御部選択情報１３ｄに設定された設定内容を更新するように構成されている。
【００７８】
なお、第一の命令制御部１１および第二の命令制御部１２は、それぞれ、当該命令制御部に供給される命令列のうちに、上記更新命令が含まれる場合に、上記した更新を命令実行部１Ｐｃに行わせる制御情報を生成する。
【００７９】
ここで、上述した第一のスレッドの制御部選択情報および第二のスレッドの制御部選択情報には、それぞれ、その制御部選択情報のスレッド命令列が、仮に、第一の命令制御部１１により命令制御されたとしても２命令よりも多い命令が並列に実行されない特定命令列であるか否かを示す設定内容が格納される。ここで、どのようにして格納されるかについては、後述する。
【００８０】
以下、第一の命令制御部１１が命令列の命令制御処理をした場合に並列に実行される命令の個数の最大個数を、その命令列の可能最大並列数と呼ぶものとする。上述の特定命令列とは、可能最大並列数が、第二の命令制御部１２の並列化限度数（２命令）以下である命令列である。
【００８１】
そして、上述した更新命令は、分岐先の命令列を実行開始させる、サブルーチン命令や、メソッド呼び出し命令、関数呼び出し命令、ｇｏｔｏ命令、例外処理起動命令、システムコール命令、条件付分岐命令などの各種の分岐命令として構成された予め定められた命令である。そして、この更新命令は、実行開始させる分岐先の命令列のスレッドに対応する制御部選択情報を、実行開始させる前に予め、実行開始させる命令列に対応する適切な値に更新させる。ここで、例えば、更新命令には、命令制御部を特定する特定情報を示す１ビットのオペランドとして有しており、命令実行部１Ｐｃは、更新命令が実行される場合に、起動される命令列のスレッドの制御部選択情報を、そのオペランドが特定する命令制御部を特定する設定内容に更新してから、その命令列を起動させる。なお、このような更新命令は、コンパイラやプログラムによって、命令列中の適切な箇所に、適切なオペランドを有するものが格納される。
【００８２】
そして、制御部選択部１０は、第一のスレッドの命令列Ｉｄａについては、そのスレッドの制御部選択情報を取得して、その命令列Ｉｄａを供給する命令制御部として、取得する、そのスレッドの制御部選択情報が特定する命令制御部を選択し、換言すれば、特定される命令制御部に供給する命令列として、その命令列Ｉｄａを選択する。一方、制御部選択部１０は、第二のスレッドの制御部選択情報を取得して、取得する制御部選択情報により特定される命令制御部に、他方の第二の命令列Ｉｄｂを供給する。
【００８３】
図２は、実施の形態１における命令制御装置１において、プログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。
【００８４】
図２において、縦方向の複数の行は、最上段の１つの行と、その１つの行に続く４つの行と、その４つの行に続く２つの行と、その２つの行に続く３つの行との４つの部分に分かれる。そして、最上段の１つの行は、命令フェッチ部１Ｐｂの処理内容を示す。それに続く４つの行は、第一の命令制御部１１の処理内容を示す４つの行であり、すなわち、第一の命令制御部１１が行う４ステージの処理内容をそれぞれ示す。この４つの行は、図２において１１−１から１１−４の記号がそれぞれ付された４つの行である。そして、それに続く２つの行は、第二の命令制御部１２の処理内容を示す２つの行であり、すなわち、第二の命令制御部１２が行う２ステージの処理内容をそれぞれ示す。この２つの行は、図２において１２−１から１２−２の記号がそれぞれ付された２つの行である。そして、それに続く最下部の３つの行は、命令実行部１Ｐｃが行う３ステージの処理内容をそれぞれ示す。この３つの行は、図２において実行部−１から実行部−３の記号がそれぞれ付された３つの行である。
【００８５】
また、横方向の複数の列は、左の列から、右の列へと、最左端の第１サイクルの列から、最右端の第１５サイクルの列までである。それぞれの列は、プロセッサ１Ｐの１つのサイクルでの処理内容を示す。それぞれの列における、プロセッサ１Ｐの命令フェッチ部１Ｐｂ等の構成部分に対応する行において、その行の構成部分における、その列のサイクルでの処理が示される。
【００８６】
そして、図２で、ハッチングが付されたボックスは、第二の命令制御部１２により処理されるプログラム８２が、そのボックスの列のサイクルで、そのボックスの行の構成部分により処理されることを示す。
【００８７】
また、図２で、ハッチングのない白抜きのボックスは、第一の命令制御部１１により処理されるプログラム８１が、そのボックスのサイクルにおいて、そのボックスの行の構成部分により、処理されることを示す。
【００８８】
プログラム８１を、第一の命令制御部１１により命令制御処理される第一命令列として実行する場合、予め特定の命令（上述した更新命令）を実行することによって、第一命令列を第一の命令制御部１１に供給するように制御部選択情報１３ｄに設定する。つまり、プログラム８１のスレッドの制御部選択情報に、第一の命令制御部１１を特定する設定を行う。これにより、第一の命令制御部１１は、最大４命令までの命令の並列化が可能であるため、プログラム８１は８１ａ、８１ｂ、８１ｃの３つの命令グループに分割される（図２、図９参照）。ここで、図２においては、このような、第一の命令制御部１１の処理が、第一の命令制御部１１の４つの行の、複数の白抜きのボックスによって示される。
【００８９】
次に、プログラム８２を、第二の命令制御部１２により命令制御処理される第二命令列として実行する場合、予め特定の命令（更新命令）を実行することによって命令列Ｉｄｂを第二の命令制御部１２に供給するように制御部選択情報１３ｄに設定する。第二の命令制御部１２は、最大２命令までの命令の並列化が可能であるため、プログラム８２はそれぞれ命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割される。図２においては、このような、第二の命令制御部１２の処理が、第二の命令制御部１２の２つの行の、ハッチング付きの複数のボックスによって示される。
【００９０】
上記の動作において、第一の命令制御部１１は４ステージ分の処理を行い、図２において第３サイクル〜第６サイクルに示される４サイクル遅延時間があるため、プログラム８１の処理に分岐した場合には、命令実行部での３サイクルの処理を加えた３＋４＝７サイクル分の分岐ペナルティを伴った後処理を開始する。
【００９１】
また、第二の命令制御部１２は２ステージ分の処理を行い、図２において第４サイクル〜第５サイクルの２サイクルの遅延時間があるため、プログラム８２の処理に分岐した場合には、命令実行部での３サイクルの処理を加えた２＋３＝５サイクル分の分岐ペナルティを伴った後処理を開始する。
【００９２】
このようにして、命令列に含まれる命令を命令実行部１Ｐｃに発行する命令制御装置１であって、第一の命令列に含まれる命令を前記命令実行部１Ｐｃに発行する第一の命令制御部１１と、第二の命令列に含まれる命令を前記命令実行部１Ｐｃに発行し、かつ、第二の命令列が当該第二の命令制御部１２に入力されてから、当該第二の命令列に含まれる命令が前記命令実行部１Ｐｃにより実行開始されるまでの遅延時間は、前記第一の命令列が前記第一の命令制御部１１に入力されてから、当該第一の命令列に含まれる命令が前記命令実行部１Ｐｃにより実行開始されるまでの遅延時間よりも短い第二の命令制御部とを備える命令制御装置１が構成される。
【００９３】
このような実施の形態１による命令制御装置１では、並列化の余地の少ないプログラム８２等の、特定命令列である命令列に対して、並列化限度数が小さく所要ステージの少ない第二の命令制御部１２を使用することによって、遅延時間ひいては分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサに対してより効率的な処理を行うことが可能となる。
【００９４】
なお、このような、実施の形態１による命令制御装置１では、特定の命令（更新命令）を実行することによって制御部選択情報１３ｄを更新することができるが、これ（更新命令）はサブルーチンコール命令であってもよい。そして、サブルーチンコール命令は、例えば、そのサブルーチンコール命令に付与された、例えばオペランドなどの情報が示す命令制御部を選択する。つまり、サブルーチンコール命令は、その命令が実行させるサブルーチンに含まれる命令を処理する命令制御部として、その情報が示す命令制御部を選択する。この場合、サブルーチンコール命令等の、更新命令である分岐命令は、例えば、その分岐命令が起動される命令列が実行されるスレッドが、当該サブルーチン命令が実行されているスレッドと同じになる場合には、当該分岐命令が実行されているスレッドの制御部選択情報を更新してもよい。
【００９５】
（実施の形態２）
図３は、本発明の実施の形態２による命令制御装置１Ａおよび命令制御装置１Ａを有するプロセッサ１ＡＰの構成を示したものである。
【００９６】
なお、主記憶１Ｐａ、命令フェッチ部１Ｐｂ、制御部選択部１０、第一の命令制御部１１、第二の命令制御部１２の構成は実施の形態１と同等である。
【００９７】
すなわち、命令制御装置１Ａは、命令フェッチ部１Ｐｂによって主記憶１Ｐａから読み出された命令列Ｉｄａ、命令列Ｉｄｂに対して並列化の処理を行い、命令実行部１Ｐｃに供給するように構成されている。
【００９８】
また、制御部選択部１０は、制御部選択情報１３ｄに従って命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１、第二の命令制御部１２の何れかに供給する。
【００９９】
命令実行部１Ｐｃは、第一の命令制御部１１、第二の命令制御部１２より供給された命令を並行に３ステージ分の処理によって実行する。
【０１００】
そして、命令制御装置１Ａは、更に、並列度監視部１Ａｘを備える。
【０１０１】
並列度監視部１Ａｘは、第一の命令制御部１１が処理した命令グループの並列度を監視し、並列度の最大値が３並列を下回っていることが検知される場合に、その命令列を第二の命令制御部１２へ供給するように制御部選択情報１３ｄを、設定するように構成されている。
【０１０２】
また、制御部選択情報１３ｄは初期状態として、命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１へ供給するように設定されている。
【０１０３】
なお、この実施の形態２では、制御部選択情報１３ｄは、例えば、第一のスレッドの命令列Ｉｄａを特定する命令列情報と、第二のスレッドの命令列Ｉｄｂを特定する命令列情報とが含まれるものとする。そして、制御部選択情報１３ｄは、さらに、命令列情報と、何れか一方の命令制御部を特定する特定情報との間を対応付ける対応関係とが含まれるものとする。ここで、特定情報は、対応関係により対応付けられる命令列情報が上記並列度監視部１Ａｘによる設定を受けていない初期状態において、第二の命令制御部１２を特定する設定にされているものとする。そして、記憶部１３は、取得される制御部選択情報のスレッドの命令列の命令列情報が入力されて、入力される命令列情報に対応関係が対応させる特定情報を、制御部選択部１０に取得させる。
【０１０４】
そして、実施の形態１の説明で述べた、それぞれのスレッドの制御部選択情報は、そのスレッドの命令列情報により特定される命令列の対応関係が当該命令列に対応させる特定情報により構成される。
【０１０５】
図４は、本実施の形態における命令制御装置１Ａにより、プログラム８１、８２を最初に並行に実行した場合のパイプライン処理の動作を示す図である。
【０１０６】
プログラム８１を最初に実行する場合、制御部選択部１０は制御部選択情報の先述の初期状態に従って、プログラム８１を第一の命令制御部１１へ供給する。
【０１０７】
第一の命令制御部１１は、最大４命令までの命令の並列化が可能であるため、プログラム８１は８１ａ、８１ｂ、８１ｃの３つの命令グループに分割される（図４、図９参照）。さらに、並列度監視部１Ａｘは、第一の命令制御部１１が処理した命令の並列度を監視した結果、プログラム８１の命令列は３並列以上の並列度で並列化されているため（つまり、プログラム８１は可能最大並列数（先述）が、第二の命令制御部１２の並列化限度数（２命令）よりも大きい、特定命令列ではない命令列であることが検知されるために）、プログラム８１の命令列は次回の処理時も第一の命令制御部１１で処理するように制御部選択情報１３ｄを設定する。つまり、並列度監視部１Ａｘは、初期状態であった、プログラム８１の命令列の特定情報を、そのまま、初期状態における、第一の命令制御部１１を特定する設定内容に維持し、変更しない。
【０１０８】
次に、プログラム８２を最初に実行する場合、制御部選択部１０は、制御部選択情報の先述の初期状態に従って、プログラム８２を第一の命令制御部１１に供給する（図４参照）。なお、これにより、第一の命令制御部１１は、第４サイクル〜第１０サイクルの間、プログラム８１とプログラム８２の処理を、図４に示されるように、並行処理する。
【０１０９】
そして、第一の命令制御部１１は、最大４命令までの命令の並列化が可能であるが、プログラム８２にはレジスタ間の依存が存在するため、プログラム８２は命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割される（図４、図９参照）。
【０１１０】
さらに、並列度監視部１Ａｘは、第一の命令制御部１１が処理した命令の並列度を監視した結果、プログラム８２の命令列は３並列を下回る並列度で並列化されているため、つまり、プログラム８２は可能最大並列数が、第二の命令制御部１２の並列化限度数（２命令）以下である特定命令列であることが検知されるために、プログラム８２の命令列は次回の処理時は第二の命令制御部１２で処理するように制御部選択情報１３ｄを設定する。つまり、並列度監視部１Ａｘは、初期状態であった、プログラム８２の命令列の特定情報を、初期状態における、第一の命令制御部１１を特定する設定内容から、第二の命令制御部１２を特定する設定内容に更新する。
【０１１１】
上記の動作において、第一の命令制御部１１は、４ステージ分の処理を行い、遅延時間が４サイクルであるため、プログラム８１の処理に分岐した場合には、命令実行部１Ｐｃは、当該命令実行部１Ｐｃでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後に、プログラム８１の処理を開始する。
【０１１２】
同様に、プログラム８２の処理に分岐した場合にも７サイクル分の分岐ペナルティを伴った後に、命令実行部１Ｐｃはプログラム８２の処理を開始する。
【０１１３】
図５は、図４に示される最初の動作の実行後、再度プログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。
【０１１４】
プログラム８１は、記憶部１３におけるプログラム８１の設定内容が変更されていないことから、最初にプログラムを実行した時と同様の動作で、命令グループ８１ａ、命令グループ８１ｂ、命令グループ８１ｃの３つの命令グループに第一の命令制御部１１により分割される。一方、プログラム８２は、変更されていることから、制御部選択情報１３ｄに従って、第二の命令制御部１２で処理され、命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに第二の命令制御部１２により分割されて実行される。
【０１１５】
上記の再度の実行動作において、第一の命令制御部１１は４ステージ分の処理を行うため、プログラム８１の処理に分岐した場合には、命令実行部１Ｐｃでの３サイクルの処理を加えた４＋３＝７サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１１６】
また、第二の命令制御部１２は２ステージ分の処理を行うため、プログラム８２の処理に分岐した場合には、命令実行部１Ｐｃでの３サイクルの処理を加えた２＋３＝５サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１１７】
これにより、本実施の形態によるプロセッサ１ＡＰでは、並列化の余地の少ない命令列（特定命令列）に対しては、並列度監視部１Ａｘの制御によって並列化限度数が小さく所要ステージの少ない第二の命令制御部１２を使用する。これによって、例えば上述した更新命令などによる制御などのソフトウェアによる明示的な制御を介在させることなく、並列度監視部１Ａｘによる検出等がされることで、分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサ１ＡＰに対してより効率的な処理を、簡単に行うことが可能となる。
【０１１８】
（実施の形態３）
図６は、本発明の実施の形態３による命令制御装置１Ｂの構成を示したものである。
【０１１９】
なお、主記憶１Ｐａ、命令フェッチ部１Ｐｂ、第一の命令制御部１１、第二の命令制御部１２の構成は実施の形態１と同等である。
【０１２０】
すなわち、命令制御装置１Ｂは、命令フェッチ部１Ｐｂによって主記憶１Ｐａから読み出された命令列Ｉｄａ、命令列Ｉｄｂに対して並列化の処理を行い、命令実行部１Ｐｃに供給するように構成されている。
【０１２１】
また、制御部選択部１０Ｂは、制御部選択情報１３ｄ、命令供給状態監視部１Ｂｘによる検知の結果に従って、命令列Ｉｄａ、命令列Ｉｄｂをそれぞれ第一の命令制御部１１、第二の命令制御部１２の何れかに供給する。
【０１２２】
また、命令実行部１Ｐｃは、第一の命令制御部１１、第二の命令制御部１２より供給された命令を並行に３ステージ分の処理によって実行する。
【０１２３】
そして、命令実行部１Ｐｃは、さらに、実施の形態１の場合と同様に、命令列Ｉｄａ、命令列Ｉｄｂによる特定の命令（更新命令）が命令実行部１Ｐｃによって実行された場合に、制御部選択情報１３ｄに設定された当該命令列の供給先を更新するように構成されている。
【０１２４】
命令供給状態監視部１Ｂｘは、命令実行部１Ｐｃが命令を実行中であるか否かを検知し、実行中でないと検知する場合には、制御部選択情報１３ｄに設定された情報によらず、命令列を第二の命令制御部１２に供給するように制御部選択部１０Ｂを制御する。
【０１２５】
図７は、実施の形態３における命令制御装置１Ｂにおいて、プログラム８１、８２を並行に実行した場合のパイプライン処理の動作を示す図である。
【０１２６】
プログラム８１を実行する場合、予め特定の命令（更新命令）を実行することによって、プログラム８１を第一の命令制御部１１に供給するように制御部選択情報１３ｄに設定する。しかし、図７における第３サイクル、第５サイクルにおいて、プログラム８１の先頭部分（命令グループ８１ｄ、命令グループ８１ｅ：図７、図９参照）が制御部選択部１０Ｂに供給されている時点では、命令列による命令は命令実行部１Ｐｃでは実行されていない。図７においては、この点が、第３サイクル、第５サイクルの列における命令実行部１Ｐｃの３つの行において、白抜きのボックスも、ハッチング付きのボックスもないことにより図示されている。このため、命令供給状態監視部１Ｂｘの制御により、プログラム８１の先頭部分（命令グループ８１ｄ、命令グループ８１ｅ：図７、図９参照）は第二の命令制御部１２に供給され、プログラム８１はそれぞれ命令グループ８１ｄ、命令グループ８１ｅ、命令グループ８１ｂ、命令グループ８１ｃの４つの命令グループに分割される（図７、図９参照）。つまり、命令供給状態監視部１Ｂｘは、これら第３サイクル、第５サイクルで、それぞれ、命令実行部１Ｐｃが命令を実行中でないことを検出して、制御部選択部１０Ｂに、制御部選択情報１３ｄの内容に関わらずに、プログラム８１の命令制御部として、第二の命令制御部１２を選択させる。なお、第５サイクルより後では、命令供給状態監視部１Ｂｘは、実行中であることを検出するので、制御部選択部１０Ｂは、制御部選択情報１３ｄの設定内容に従って、実施の形態１の場合と同様に、プログラム８１を第一の命令制御部１１に供給すると共に、プログラム８２を第二の命令制御部１２に供給する。
【０１２７】
次に、プログラム８２を実行する場合、予め特定の命令（更新命令）を実行することによって、プログラム８２を第二の命令制御部１２に供給するように制御部選択情報１３ｄに設定する。第一の命令制御部１１は、最大２命令までの命令の並列化が可能であるため、プログラム８２はそれぞれ命令グループ８２ａ、命令グループ８２ｂ、命令グループ８２ｃ、命令グループ８２ｄの４つの命令グループに分割される。なお、第４サイクルでは、命令供給状態監視部１Ｂｘは、命令がまだ実行中でないので、プログラム８２を第二の命令制御部１２に供給させる制御をする。但し、命令が実行中となった後、つまり、第５サイクル以後も、第二の命令制御部１２は、制御部選択情報１３ｄの設定内容に従って、プログラム８２を継続して第二の命令制御部１２に供給する。
【０１２８】
上記の動作において、第二の命令制御部１２は２ステージ分の処理を行うため、プログラム８１の処理に分岐した場合には、命令実行部１Ｐｃでの３サイクルの処理を加えた２＋３＝５サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１２９】
同様に、プログラム８２も、５サイクル分の分岐ペナルティを伴った後処理を開始する。
【０１３０】
以上のように、実施の形態３による命令制御装置１Ｂでは、並列化の余地の少ない命令列（特定命令列）に対して、並列化限度数が小さく所要ステージの少ない第二の命令制御部１２を使用することによって、無用な遅延時間を削減し、ひいては、分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサに対してより効率的な処理を行うことが可能となる。
【０１３１】
さらに、分岐が発生した際にも、分岐先の命令列の先頭部分（命令グループ８１ｄ、命令グループ８１ｅ：図７、図９参照）について、所要ステージの少ない第二の命令制御部１２を使用することによって、遅延時間を減らし、分岐ペナルティを削減することが可能となり、従来の構成によるプロセッサに対してより効率的な処理を行うことが可能となる。
【０１３２】
（他の実施の形態）
さらに、本発明の命令制御装置は、以下の記載によって示される、他の形態を採ってもよい。そして、上記の複数の実施の形態のうちのそれぞれは、次の記載の一部を加えた形態にされてもよい。
【０１３３】
（Ａ）制御部選択部１０は、制御部選択情報１３ｄが、互いにスレッドが異なる命令列Ｉｄａ、命令列Ｉｄｂの何れについても、互いに同一の命令制御部により処理させる設定内容である場合には、図４のように設定内容が初期状態である場合および図６の場合以外のその他の場合にも、両者の命令列を１つのその命令制御部に処理させるものとしてもよい。
【０１３４】
（Ｂ）制御部選択部１０は、命令列Ｉｄａおよび命令列Ｉｄｂのうちで、可能最大並列数が、例えば第二の命令制御部１２の並列化限度数（２個）などの予め定められた個数以下である方の命令列を特定する選択情報を取得してもよい。そして、制御部選択部１０は、取得する選択情報が特定する命令列を、それら命令列Ｉｄａおよび命令列Ｉｄｂのうちで、第二の命令制御部１２に供給する第二命令列に選択し、第二の命令制御部１２に供給すると共に、他方の命令列を第一命令列に選択して、第一の命令制御部１１に供給するものであってもよい。
【０１３５】
（Ｃ）プロセッサでは、１つのスレッドの命令列のみが実行される場合があってもよい。この場合、制御部選択部１０は、例えば、その１つのスレッドの命令列の制御部選択情報を取得して、取得する制御部選択情報が特定する命令制御部にその命令列を供給すると共に、その命令制御部以外の他方の命令制御部には何れの命令列も供給しないものとしてもよい。
【０１３６】
（Ｄ）また、命令制御装置は、次のようなものであってもよい。上記のそれぞれの実施の形態に示される命令制御装置は、以下に示される命令制御装置が有する機能、性質、構成部分等の少なくとも一部が付け加えられた形態により、実施されてもよい。なお、付け加えがされた形態に限定されることはない。
【０１３７】
すなわち、命令制御装置は、第一の命令制御部と、第二の命令制御部と、選択部とを備える。そして、第一の命令制御部が、命令列を実行する実行動作を行う命令実行部の実行動作を制御することにより、命令列を当該命令実行部に実行させる。第二の命令制御部が、前記第一の命令制御部が実行させる命令列を実行するのと並列や並行など、同時に、前記命令実行部が実行する他の命令列を当該命令実行部に実行させる。そして、第二の命令制御部は、実行をさせる命令制御処理が、前記第一の命令制御部が命令列を実行させる第一の命令制御処理よりも、命令列に対する処理を開始してから当該命令列の実行動作が開始するまでの遅延時間が短い第二の命令制御処理である命令制御部である。そして、選択部が、前記命令実行部により実行される命令列を、前記第一の命令制御部と、前記第二の命令制御部とのうちの一方に供給する。
【０１３８】
なお、ここで選択部は、例えばスレッドが互いに異なる２つの命令列等の、予め定められた２つの命令列のうち一方の命令列を、一方の命令制御部に供給すると共に、他方の命令列は他方の命令制御部に供給するものであってもよい。なお、選択部は、こうして２つの命令列を同時に供給するだけではなく、１つの命令列のみを一方の命令制御部にのみ供給することがあるものであってもよい。
【０１３９】
そして、選択部は、第一の命令制御処理がされた場合の処理時間（遅延時間）および実行動作（並列に実行される命令の最大の個数）よりも、第二の命令制御処理された場合の処理時間および実行動作の方が優位であることを判定する予め定められた判定基準に応じた動作をしてもよい。すなわち、選択部は、例えば、この判定基準が満たされることを示す予め定められた判定情報（制御部選択情報）により第二の命令制御処理される方が優位と示される場合に、第二の命令制御部１２に命令列を供給するものであってもよい。選択部は、このような判定情報を、例えば、判定情報を記憶する予め定められた記憶部から取得するものであってもよいし、判定情報を生成する予め定められた情報生成部から取得するものであってもよい。
【０１４０】
ここで、判定情報は、実行される命令列が、第二の命令制御処理された場合の処理時間および実行動作の方が優位となる性質を有する特定命令列である場合に、第二の命令制御処理される方が優位であることを判定する判定基準が満たされることを示すものであってもよい。
【０１４１】
そして、判定基準は、例えば、当該命令列の前記可能最大並列数（プログラム８１では４命令、プログラム８２では２命令）が、命令制御部が並列化を可能な限度の前記並列化限度数（第一の命令制御部１１では４命令、第二の命令制御部１２では２命令）のうちで、大きくない方の並列化限度数（２命令）以下であか否かに関する基準であってよい。例えば、判定基準は、上記の可能最大並列数が、上記される、大きくない方の並列化限度数以下であり、何れの命令制御部により処理されても実行動作が互いに同一ないし予め定められた近傍範囲内である場合に、処理時間が長くない方の命令制御部（第二の命令制御部１２）の処理がされる方を優位と判定する判定基準などであってよい。このように、判定基準は、実行動作が予め定められた近傍範囲内ないし互いに同一である場合に、処理時間（遅延時間）が長くない方の命令制御処理（第二の命令制御部１２の命令制御処理）される方を優位と判定する判定基準であってもよい。
【０１４２】
そして、命令制御装置は、命令制御処理および実行動作の少なくとも一部に含まれる、処理対象の命令列が特定命令列である場合に生じる予め定められた検出動作が生じるか否かを検出してもよい。そして、命令制御装置は、検出結果が前記判定情報である検出部（並列度監視部１Ａｘ）を更に備えており、選択部は、一例としては、このような検出部により検出される当該検出結果を取得して、取得される当該検出結果を前記判定情報として用いるものであってもよい。
【産業上の利用可能性】
【０１４３】
本発明にかかる命令制御装置は、スレッド内の命令の性質に適した命令制御を行うことが可能であり、性質の異なる複数のスレッドを実行する情報処理装置の高性能化、低消費電力化、低価格化ができて有用である。
【符号の説明】
【０１４４】
１、１Ａ、１Ｂ、９０  命令制御装置
１０、１０Ｂ  制御部選択部
１１、９１  第一の命令制御部
１２、９２  第二の命令制御部
１３  記憶部
１３ｄ  制御部選択情報
Ｉｄａ、Ｉｄｂ、９１ａ、９２ａ  命令列
１Ａｘ  並列度監視部
１ＡＰ、１ＢＰ、１Ｐ、９０Ｐ  プロセッサ
１Ｂｘ  命令供給状態監視部
１Ｐａ、９１Ｐ  主記憶
１Ｐｂ、９２Ｐ  命令フェッチ部
１Ｐｃ、９３Ｐ  命令実行部
８１、８２  プログラム
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令列に含まれる命令を命令実行部に発行する命令制御装置であって、
第一の命令列に含まれる命令を前記命令実行部に発行する第一の命令制御部と、
第二の命令列に含まれる命令を前記命令実行部に発行し、かつ、前記第二の命令列が当該第二の命令制御部に入力されてから、当該第二の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間は、前記第一の命令列が前記第一の命令制御部に入力されてから、当該第一の命令列に含まれる命令が前記命令実行部により実行開始されるまでの遅延時間よりも短い第二の命令制御部と
を備え、
前記第一の命令制御部は、当該第一の命令制御部に供給された前記第一の命令列に対して予め定められた並列度の並列化の処理を行い、
前記第二の命令制御部は、当該第二の命令制御部に供給された命令列に対して、前記第一の命令制御部の並列化の処理における並列度よりも小さな並列度での並列化の処理を行うことを特徴とする命令制御装置。
【請求項２】
主記憶から取得された予め定められた２つの命令列から前記第一の命令列を選択し、選択した当該第一の命令列を前記第一の命令制御部に供給すると共に、当該２つの命令列から前記第二の命令列を選択し、選択した当該第二の命令列を前記第二の命令制御部に供給する選択部を更に備える
ことを特徴とする請求項１記載の命令制御装置。
【請求項３】
前記第一の命令制御部および前記第二の命令制御部は、それぞれ、当該命令制御部に供給される命令列に基づいて、当該命令列を実行する実行動作を特定する制御情報を生成し、生成した制御情報を前記命令実行部に供給する
ことを特徴とする請求項２記載の命令制御装置。
【請求項４】
前記第一の命令制御部は、前記第一の命令列における２つの命令の間の依存関係を検出し、検出する依存関係による制約が守られた当該２つの命令の実行順序を決定する命令スケジューリング処理を行い、決定した実行順序で当該２つの命令をそれぞれ実行する制御情報を生成し、
前記第二の命令制御部は、前記第二の命令列のスケジューリング処理を行って、当該スケジューリング処理により決定した実行順序で、当該第二の命令列の２つの命令をそれぞれ実行する制御情報を生成し、かつ、当該第二の命令制御部が行う命令スケジューリング処理は、前記小さな並列度での並列化の処理に際して制約となる前記依存関係のみを検出する
ことを特徴とする請求項３記載の命令制御装置。
【請求項５】
前記第一の命令制御部は、パイプライン動作によって前記第一の命令列の制御情報を生成し、
前記第二の命令制御部は、同じくパイプライン動作によって前記第二の命令列の制御情報を生成し、かつ、当該パイプライン動作におけるパイプラインステージ数が、前記第一の命令制御部のパイプライン動作のパイプラインステージ数よりも少ない
ことを特徴とする請求項４記載の命令制御装置。
【請求項６】
前記第一の命令制御部および前記第二の命令制御部のうちの一方を特定する特定情報をそれぞれ保持する第一の記憶部および第二の記憶部を更に備え、
前記選択部は、
前記第一の記憶部の特定情報が前記第一の命令制御部を特定する場合には、前記２つの命令列のうちで予め定められた一方の命令列を前記第一の命令制御部にのみ供給し、当該特定情報が前記第二の命令制御部を特定する場合には、前記第二の命令制御部にのみ供給し、
前記第二の記憶部の特定情報が前記第一の命令制御部を特定する場合には、前記２つの命令列のうちで他方の命令列を前記第一の命令制御部にのみ供給し、当該特定情報が前記第二の命令制御部を特定する場合には、前記第二の命令制御部にのみ供給し、
前記第一の命令制御部および前記第二の命令制御部のそれぞれは、当該命令制御部に供給される命令列のうちに、前記特定情報に対して、当該命令が示す予め定められた設定情報を設定する予め定められた命令が含まれる場合に、前記命令実行部に当該設定をさせる制御情報を生成する
ことを特徴とする請求項５記載の命令制御装置。
【請求項７】
前記第一の命令制御部が行う前記並列化の処理により前記命令実行部が前記第一の命令列に含まれる命令を並列に実行する個数の最大個数を検出し、当該第一の命令列が、検出される当該最大個数が予め定められた個数より少ない特定命令列か否かを検知する検知部を更に備え、
前記選択部は、特定命令列であると検知された命令列を、前記第二の命令制御部のみに供給する
ことを特徴とする請求項３記載の命令制御装置。
【請求項８】
前記選択部は、前記命令実行部が、前記第一の命令列又は前記第二の命令列に含まれる予め定められた分岐命令を実行する場合、前記主記憶から読み出される、当該分岐命令の分岐先の命令列の予め定められた先頭部分を、前記第二の命令制御部のみに供給する前記第二の命令列として選択する
ことを特徴とする請求項５記載の命令制御装置。
【請求項９】
前記命令実行部が命令を実行中か否かを検出する検出部を更に備え、
前記選択部は、前記検出部により前記命令実行部が命令を実行中ではないと検出される場合に命令列が実行される際には、当該命令列を前記第二の命令制御部のみに供給する
ことを特徴とする請求項５記載の命令制御装置。
【請求項１０】
前記命令実行部が命令を実行中か否かを検出する検出部を更に備え、
前記選択部は、前記検出部により前記命令実行部が命令を実行中であると検出される場合に命令列が実行される際にのみ、当該命令列を前記第一の命令制御部に供給する
ことを特徴とする請求項５記載の命令制御装置。
【請求項１１】
前記予め定められた命令は、前記第一の命令制御部および第二の命令制御部のうちの一方を特定する属性が含まれる予め定められた分岐命令であり、
前記第一の命令制御部および前記第二の命令制御部は、それぞれ、当該命令制御部に供給される命令列に当該分岐命令が含まれる場合に、当該分岐命令の前記属性が特定する命令制御部を特定する特定情報を、当該分岐命令が示す前記記憶部に設定させる制御情報を生成する
ことを特徴とする請求項６記載の命令制御装置。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010021119.tif 000013
【図２】
2010021119.tif 000014
【図３】
2010021119.tif 000015
【図４】
2010021119.tif 000016
【図５】
2010021119.tif 000017
【図６】
2010021119.tif 000018
【図７】
2010021119.tif 000019
【図８】
2010021119.tif 000020
【図９】
2010021119.tif 000021
【図１０】
2010021119.tif 000022
【国際調査報告】
2010021119.tif 000023
2010021119.tif 000024
2010021119.tif 000025