(57)【要約】【課題】  ＳＩＭＤ命令セットプロセッサに対しマルチスカラ実行機能を与える。【解決手段】  複数の並列実行が可能な命令のシーケンスを単一の命令ユニットにより動作される複数の実行ユニットを有するプロセッサ１１０で実行するための方法が提供される。この方法は、ａ）プロセッサ１１０に送られる命令から並列実行のため適用される複数の命令のシーケンスを検出することを含み、各シーケンスは複数の実行ユニット１１２〜１４２のサブセットにより実行のため適用されており、またｂ）実行ユニットのストール状態を表す情報を記録することを含む。次にステップｃ）が実行され、ここでは複数のシーケンスのうち実行されていないシーケンス各々に対してｉ）実行されていないシーケンスに対応するサブセット以外の複数の実行ユニット全てがストールされ、またｉｉ）命令のシーケンスが対応するサブセットにより実行される。【選択図】  図４
2005310166.tif 000002
【特許請求の範囲】
【請求項１】
単一の命令ユニットにより動作される複数の実行ユニットを有するプロセッサで複数の並列実行が可能な命令のシーケンスを実行する方法であって、
ａ）前記プロセッサに送られる命令から並列実行に適合した複数の命令のシーケンスを検出し、前記複数のシーケンスの各シーケンスは、前記複数の実行ユニットのサブセットによる実行に適合されたものであり、
ｂ）前記実行ユニットのストール状態を表す情報を記録し、
ｃ）前記複数のシーケンスのうち実行されていない各シーケンスに対して、
ｉ）前記複数の実行ユニットのうち、前記実行されていないシーケンスに対応する前記サブセットを除いて、他の全てをストールさせ、
ii）前記対応するサブセットにより前記命令のシーケンスを実行し、
ｄ）前記複数の実行ユニットの現在のストール状態が前記記録された情報により表されるストール状態と一致するかどうか判断し、かつ、
ｅ）一致しないときは、前記記録された情報により表される前記現在のストール状態が前記記録された情報と一致するまで前記ステップｂ）〜ｄ）を繰り返す、方法。
【請求項２】
各前記サブセットは、いずれの二つのサブセットに対しても、双方とも同じ実行ユニットを含まないよう、他のいずれの前記サブセットに対しても直交している請求項１記載の方法。
【請求項３】
前記ストール状態を表す前記情報は、レジスタに記録される、請求項１記載の方法。
【請求項４】
前記複数の実行ユニットのうち、１つの実行ユニットをストールさせ、ストールフラグを更にセットし、前記ストールフラグは前記複数の実行ユニットのうち、1つの特定の実行ユニットがストールされることを示す、請求項２記載の方法。
【請求項５】
前記複数の実行ユニットのうちのいずれかの実行ユニットをストールする際にストール状態フラグを更にセットする、請求項４記載の方法。
【請求項６】
前記複数の実行ユニットは、４つの実行ユニットを備え、前記４つの実行ユニットの各々は、前記プロセッサへデータを送り、また前記プロセッサからデータを受信するために結合される４つのローカルストアのうち、対応するローカルストアからデータを受信するよう動作可能である、請求項１記載の方法。
【請求項７】
前記プロセッサは、ｐ個の前記実行ユニットを備え、前記実行ユニットの各々はｍビットのデータ幅を有するオペランド上に命令を実行でき、前記プロセッサはｍビットとｐ×ｍビットとの間の範囲に及ぶ幅を有するデータに関して同時に命令を実行できる、請求項１記載の方法
【請求項８】
ｍ＝３２ビットでありｐ＝４である、請求項７記載の方法。
【請求項９】
前記実行ユニットの全てにより、並列実行が可能な命令の前記シーケンス以外の命令のシーケンスを同時に実行することを有す、請求項８記載の方法。
【請求項１０】
前記その他のシーケンスは前記対応するローカルストアから得たデータに関して実行される、請求項９記載の方法。
【請求項１１】
前記ステップｂ）を実行する前に、
ａ）ｉ）初めに前記実行ユニットのストール状態を表す情報を記録し、
ａ）ii）前記実行ユニットの一つ以上をストールさせ、かつ、前記ステップｃ）からｅ）の実行後に、
ｆ）前記複数のシーケンスのうち実行されていない各シーケンスに対して
ｉ）前記実行されていないシーケンスに対応する前記サブセットを除くすべての前記複数の実行ユニットストールさせ、
ii）前記対応するサブセットにより前記命令のシーケンスを実行し、
iii）前記複数の実行ユニットの現在のストール状態が前記記録された情報により表される前記ストール状態と一致するかどうか判断し、かつ、
iv）一致しないときは、前記記録された情報により表される前記現在のストール状態が前記記録された情報と一致するまでａ）ｉ）からｆ）iii）の前記ステップを繰り返す、請求項１記載の方法。
【請求項１２】
単一の命令ユニットと、
前記単一の命令ユニットの制御下で命令を個々に又は集合的に実行できる複数の実行ユニットと、を有したプロセッサであって、
前記プロセッサは、
ａ）前記プロセッサに送られる命令から並列実行に適合した前記複数の命令のシーケンスを検出し、前記複数のシーケンスの各シーケンスは、前記複数の実行ユニットのサブセットにより実行可能なものであり、
ｂ）前記実行ユニットのストール状態を表す情報を記録し、
ｃ）前記複数のシーケンスのうち、実行されてない各シーケンス各々に対して、
ｉ）前記複数の実行ユニットのうち前記実行されていないシーケンスに対応する前記サブセットを除く全てをストールさせ、
ii）前記対応するサブセットにより前記命令のシーケンスを実行し、
ｄ）前記実行ユニットの現在のストール状態が前記記録された情報により表されるストール状態と一致するかどうか判断し、
ｅ）一致しないときは、前記ストール状態が前記記録された情報により表される前記ストール状態と一致するまで前記ステップｂ）〜ｄ）を繰り返すよう動作可能である、プロセッサ。
【請求項１３】
各前記サブセットは、いずれの二つのサブセットに対しても、双方とも同じ実行ユニットを含まないよう、他のいずれの前記サブセットに対しても直交している、請求項１２記載のプロセッサ。
【請求項１４】
前記ストール状態を表す前記情報を記録できるレジスタを更に有する、請求項１２記載のプロセッサ。
【請求項１５】
前記プロセッサは、更に、前記複数の実行ユニットのうち１つの実行ユニットがストールするとストールフラグをセットするよう動作可能であり、前記ストールフラグは、前記複数の実行ユニットのうち特定の実行ユニットがストールされたことを示す、請求項１４記載のプロセッサ。
【請求項１６】
前記プロセッサは、更に前記複数の実行ユニットのうち、いずれの実行ユニットがストールされると、ストール状態フラグをセットするよう動作可能である、請求項１５記載のプロセッサ。
【請求項１７】
４つのローカルストアを更に有し、前記複数の実行ユニットは、４つの実行ユニットを含み、各々の実行ユニットは、前記４つのローカルストアのうち対応する１つのローカルストアからのデータの受信及びこの対応するローカルストアへのデータの記録を行うよう動作可能である、請求項１３記載のプロセッサ。
【請求項１８】
前記プロセッサは、ｐ個の前記実行ユニットを備え、各々はｍビットのデータ幅を有するオペランド上に命令を実行でき、前記プロセッサはｍビットとｐ×ｍビットとの間の範囲に及ぶ幅を有するデータに関して同時に命令を実行できる、請求項１７記載のプロセッサ。
【請求項１９】
ｍ＝３２ビットであり、ｐ＝４である、請求項１８記載のプロセッサ。
【請求項２０】
前記プロセッサは、前記対応するローカルストアの全てから得たデータに関して前記命令を実行できる、請求項１７記載のプロセッサ。
【請求項２１】
前記プロセッサは、更に、前記ステップｂ）を実行する前に、
ａ）ｉ）前記実行ユニットのストール状態を表す情報を記録し、
ａ）ii）１つ以上の前記実行ユニットをストールさせ、かつ、前記ステップｃ）〜ｅ）の実行後に、
ｆ）前記複数のシーケンスのうち実行されていない各シーケンスに対し、
ｉ）前記複数の実行ユニットのうち、前記実行されていないシーケンスに対応する前記サブセットを除く全てをストールさせ、
ii）前記対応するサブセットにより命令のシーケンスを実行し、
iii）前記複数の実行ユニットの現在のストール状態が前記記録された情報により表される前記ストール状態と一致するかどうかを判断し、かつ、
iv）一致しないときは、前記記録された情報により表される前記現在のストール状態が前記記録された情報と一致するまで、前記ステップａ）ｉ）からｆ）iii）を繰り返すよう動作可能である、請求項１２記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティング・システムに関するものである。多くのプログラムは特定の種類のプロセッサを念頭において書かれている。
なお、本発明は、米国仮特許出願第６０／５６４，６７３号（２００４年４月２２日出願）による利益を享受するものであり、該出願の開示は、本明細書に参照のため組み込まれている。
【背景技術】
【０００２】
多くのプログラムは特定の種類のプロセッサを念頭において書かれている。これらプログラムの中には、ＳＩＭＤ（シングルインストラクションマルチデータ）型プロセッサにより実行されることを目的とするプログラムもある。また、良好なパフォーマンスを得るために、プロセッサに対しマルチスカラ実行が可能であることを要求するプログラムもある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
以上のことから、ＳＩＭＤ命令セットプロセッサに対しマルチスカラ実行機能を与えることが望ましい。
【課題を解決するための手段】
【０００４】
本発明の１つの態様によれば、単一の命令ユニットにより動作される複数の実行ユニットを有するプロセッサ上に複数の並列実行が可能な命令のシーケンスを実行するための方法が提供される。この方法は、ａ）プロセッサへ送られている命令から並列実行のため適用される複数の命令のシーケンスを検出するステップを含み、各シーケンスは複数の実行ユニットのサブセットにより実行のため適用されており、及びｂ）実行ユニットのストール状態を表わす情報を記録するステップを含む。
次にステップｃ）が複数のシーケンスのうち実行されていないシーケンス各々に対し実施され、ｉ）実行されていないシーケンスに対応するサブセット以外の複数の実行ユニット全てがストールされ、またｉｉ）命令のシーケンスは対応するサブセットにより実行される。
その後、ｄ）複数の実行ユニットの現在のストール状態が、記録された情報により表されるストール状態と一致しているかどうか判断される。一致していないとき、記録された情報により表される現在のストール状態が記録された情報と一致するまでステップｂ）からｄ）が繰り返される。
好ましくは、上述のサブセットは、いずれの二つのサブセットに対しても、双方とも同じ実行ユニットを含まないように、他のいずれの前記サブセットに対しても直交している。
【発明を実施するための最良の形態】
【０００５】
図１は、本発明の実施例によるシナジスティックプロセッサユニット（Synergistic processing unit:ＳＰＵ、相乗的プロセッシングユニットとも称される）１０の構成を例示しており、命令を実行するプロセッサ及び方法が提供されている。ＳＰＵはスタンド・アローン型プロセッサあるいは大型プロセッサのサポートオペレーションであり、例えばプロセッサユニット（ＰＵ）または広帯域エンジン（ＢＥ）などであり、それらは本願出願人に譲渡された米国特許出願第０９／８１５，５５４号、２００１年３月２２日出願、に解説されており、該出願は本明細書に参照として組み込まれる。図１に例示されているように、ＳＰＵ１０は、複数の関数ユニット１２を有しており、各々は浮動小数点及び整数命令を実行することができる。ＳＰＵ１０の４つの関数ユニットは、それらが各々３２ビットの算術論理演算ユニット(ＡＬＵ)、浮動小数点演算ユニット及びシフト／シャッフルユニットを有している点で、４台のプロセッサのようである。関数ユニットは、協働して１２８ビット幅のデータ処理ができ、単独で動作して３２ビット幅のデータ処理ができ、また関数ユニットのサブセットで動作され、２つ以上のそのような関数ユニットがｎ×３２ビットのビット幅を有するデータに対して共に動作する。ＳＰＵはまた４つのローカルストア１３を含み、各々は対応する関数ユニット１２の１つから送られる情報とともに書き込まれ、また情報を記録し、対応する関数ユニットの一つにより読み込まれることができる。
【０００６】
ＳＰＵは、更にイシューロジック１４を含む。イシューロジック１４の機能は、ＳＰＵ１０で受信した命令を関数ユニット１２により実施される演算に変換し、命令を実行することである。複数の関数ユニットとローカルストアが中に入ったＳＰＵ１０の構成は、プロセッサが４つの関数ユニット１２により保持されるデータ上に、４つ全ての関数ユニット１２によって命令を同時に実行することを可能にする。命令を実行するそのような方法はシングルインストラクションマルチデータ、つまり(”ＳＩＭＤ”)として称される。その理由は、同じ命令がいくつかの実行ユニットの各々により保持される別のデータに関して、いくつかの実行ユニットにより同時に実行されるからである。ＳＰＵ１０を実現するために必要な回路の総数を減らすために、イシューロジック１４は、実行のため１度に１つの命令を準備する単一のインスタンスに制限されている。
【０００７】
ＳＰＵを、複数の関数ユニット１２及び対応するローカルストア１３という構成にすることで、関数ユニットとローカルストア各々に対して求められる機能的要求は、１つの大型の関数ユニット及びローカルストアという構成において同程度のワークを行う際に要求されるものと比較して、小さくなっている。プロセッサ１０がＳＩＭＤ命令のシーケンスを実行するに当たり既に有している機能に加え、上記に解説されているＳＩＭＤ命令シーケンスと並列実行が可能な命令を含むその他の命令シーケンスの両方を実行できるプロセッサを提供することが望ましい。並列実行が可能な命令シーケンスとは、どちらの命令シーケンスも、他方の命令シーケンスの命令結果に従属することなく、プロセッサ１０の関数ユニット１２の別々のサブセットにより実行されるようになっている命令シーケンスを意味する。
これらの命令シーケンスの並列実行を、一方の命令シーケンスの実行を他方の命令シーケンスの結果に依存することなく行うことを、マルチスカラオペレーションと称する。イシューロジック１４は、いずれの関数ユニット１２による場合でも１サイクルあたり１命令の実行の準備しか可能ではないので、互いに異なる関数ユニットと、互いに異なる関数ユニットのサブセットによりこのような並列実行が可能な命令シーケンス順次を実行し、その後ＳＩＭＤ命令シーケンスをレジュームする手法を提供することが望ましい。
【０００８】
図２に、独立したプロセッサにより並列実行が可能な命令シーケンスの実行を例示したフロー図を示す。並列実行が可能な命令シーケンスには本明細書にてこれまでに解説した方法により実行されることができるものも含まれる。この例では上記に解説されたＳＰＵとは違い、並列実行が可能な命令シーケンスは別のサブセットで動作しているプロセッサにより同時に実行される。すなわち、プロセッサ０と１の第１サブセットと、プロセッサ２と３の第２サブセットである。図３は、プロセッサ０から３による各々の命令シーケンスの実行を例示したものである。図３に示されているように、タイム５０において命令シーケンス１はプロセッサ０から３の４つ全てにより実行される。次にタイム５２において、プロセッサ０と１は命令シーケンス２の実行を開始する。一方でプロセッサ２と３は命令シーケンス３の実行を開始する。このような例では、両方の命令シーケンスは同時に実行されることができる。これはプロセッサの各々は独立しており、また独自のイシューロジックを有しているからである。命令シーケンス２と３の実行が終了すると次に命令シーケンス４は再び一緒に動作しているプロセッサ０から３の全てにより実行される。
【０００９】
図２の４つのプロセッサの配置とＳＰＵ１０との違いは、ＳＰＵ１０の関数ユニットはそれらが全て、同じイシューロジック１４を用いて、単一の命令ユニットにより動作されているため独立していない点にある。ＳＰＵ１０により特定の時間に複数の並列実行が可能な命令のシーケンスを実行する方法を、ＳＩＭＤ命令シーケンスがＳＰＵ１０の全ての関数ユニット１２によってその他の時間に実行されるのを許容する方法で提供することが望ましい。
【００１０】
本発明の一実施例を図４から図８を参照して以下に解説する。図４は、本発明の第一の好ましい実施例により命令を実行する方法を例示している。このような実施例によれば、方法は、プロセッサの実行ユニットのサブセットで並列実行が可能な命令シーケンスを実行し、一方で残りの実行ユニットをストールするために提供されている。図１に関して、“実行ユニット”とは、プロセッサのユニットであり、例えば、上記に解説されているようにイシューロジック１４の管理下で命令を実行することができる関数ユニット１２である。そのような方法で、並列実行が可能な命令シーケンスはプロセッサの実行ユニットのそれぞれのサブセットにより順次実行される。全ての並列実行が可能な命令シーケンスが実行されたとき、次にプロセッサは全ての実行ユニットによりＳＩＭＤ命令シーケンスの実行を再び始める。
【００１１】
以下、図４、５及び６を参照して本発明の実施例を記載する。図４に例示されているように、プロセッサ１１０は複数の実行ユニット１１２、１２２、１３２、１４２を備えており、これは図１に関して上記に解説されている関数ユニット１２と類似している。イシューロジック１１４とローカルストア１１３は図１に関して上記に解説されているＳＰＵ１０のそれらのエレメントと類似している。プロセッサ１１０は各実行ユニットに対し１つの複数のストールフラグ１１６、１２６、１３６、１４６を更に有し、またストールフラグ数と同数のビットを保持するチェックポイントレジスタ１１８を更に有する点で上記に解説されているＳＰＵとは異なる。プロセッサ１１０は、更にストール状態フラグ１２０とコンパレータ１２１を有する。
【００１２】
ストールフラグはプロセッサの実行ユニット１１２、１２２、１３２、または１４２がストール状態になっているかどうかを示すために機能する。ストール状態フラグ１２０は、実行ユニット１１２等のいずれかにおいてストールフラグがセットされているかどうかを示す。チェックポイントレジスタ１１８はレジスタ１１８へのＬＯＡＤ信号入力により判断されるように、特定の時間におけるストールフラグの状態を表す情報を記録する。
【００１３】
図５に例示されている方法では、ＳＰＵ１１３（図１）の４つの実行ユニット１１２による命令実行が４００において開始する。通常、命令シーケンスの幾つかはＳＩＭＤ（single instruction multiple data:シングルインストラクションマルチデータ）型であるので、ＳＩＭＤシーケンスの各命令は、全ての実行ユニット１１２、１２２、１３２及び１４２によりブロック４１０で同時に実行される。しかし、その他の命令シーケンスは、ＳＩＭＤ命令シーケンスではなく、プロセッサ１１０の実行ユニット１１２、１２２、１３２及び１４２のサブセットにより実行される並列実行が可能な命令シーケンスである。
【００１４】
特定のＳＩＭＤスレッドが実行を終了するとき、ブロック４２０において実行のためプロセッサに送られる命令が並列実行可能なスレッドを有しているかどうか判断される。そのような並列実行が可能なスレッドは、並列実行が可能な命令シーケンスに対して上述のように与えられた定義を有する。そのようなスレッドが存在する場合、そのようなスレッドは独立したプロセッサあるいはプロセッサグループにより同時に実行されることができる。解説を簡潔にするため、このステップは、ＳＩＭＤ命令シーケンスを実行した後に実施される。しかしながら、通常は、命令シーケンスがプロセッサに送られるたびに、その命令シーケンスがＳＩＭＤ命令シーケンスの実行前に送らたか実行後に送られたかに拘わらず、そのような判断がなされる。
【００１５】
ブロック４２０における判断が“Yes”、つまり並列実行が可能なスレッドを有する場合、次いで演算が実施され、イシューロジック１４の管理下で実行ユニットのそれぞれのサブセットにより並列実行が可能な命令シーケンスを順次実行する。演算は、以下のとおりである。まず、ブロック４３０において実行ユニット１１２、１２２、１３２、及び１４２の現在のストール状態に関する情報がチェックポイントレジスタ１１８に記録される。望ましくは、このような情報は各実行ユニットのストール状態を示すストールフラグ１１６、１２６、１３６、１４６からチェックポイントレジスタ１１８に記録される。
【００１６】
その後、並列実行が可能な命令シーケンスを実行する実行ユニット１１２、１２２、１３２、及び１４２のサブセットが決定される。この決定では、実行ユニット１１２、１２２、１３２、及び１４２のうち命令シーケンスを実行する特定の実行ユニットの決定もなされる。次にブロック４４０において、実行ユニット１１２、１２２、１３２及び１４２のうち命令シーケンスを実行する特定のサブセットを決定した後に残ったもののすべて対してストールフラグがセットされる。
【００１７】
実行ユニットのサブセットを指定し、またその他をストールすることは図６に更に明確に示されている。実行ユニット１１２、１２２、１３２、１４２により１から４の番号が付けられた４つの命令シーケンスの実行は、命令シーケンス間のチェンジオーバーにおけるストールフラグ状態と同じく、その中のタイムに関連して例示されている。従って、タイム６００において、命令シーケンス１はＳＩＭＤ実行が可能なプロセッサ１１０に提供されている。これは図５のＳＩＭＤ実行ブロック４１０と対応している。全ての実行ユニットは命令シーケンスを実行するように指定されるので、ストールフラグ１１６、１２６、１３６及び１４６はどれもセットされず、そしてストール状態フラグは“００００”である。その結果どのフラブもセットされていないことを示している。従って、命令シーケンスの実行は全ての実行ユニット１１２、１２２、１３２、及び１４２で続行する。
【００１８】
しかしながら、タイム６１０において、ＳＩＭＤ命令シーケンスは実行を終えており、また並列実行が可能な命令シーケンス２と３は実行のためプロセッサの実行ユニット１１２、１２２、１３２、及び１４２の別のサブセットにより受信される。このようなタイム６１０において、情報は実行ユニットのストール状態を示すチェックポイントレジスタに、並列実行が可能な命令シーケンスを実行する演算を開始する前に記録される（図５のブロック４３０）。従って、並列実行が可能な命令シーケンスの１つを実行するために実行ユニット１１２、１２２、１３２及び１４２のいずれかをストールするのに先だって、ブロック４３０において、その直前の実行ユニット１１２、１２２、１３２及び１４２のストール状態を示すようにチェックポイントレジスタに情報が記録される。
【００１９】
次に、ブロック４４０（図５）において、ストールフラグ１３６、１４６は、命令シーケンス２が実行されるときにプロセッサ１１０のストールされる実行ユニット１３２、１４２のサブセットに対しセットされる。そのため現在のストールフラグの状態は“００１１”である。次に処理は実行ユニット１１２及び１２２が命令シーケンス２（ブロック４５０）を実行する間、ストールされる実行ユニット１３２と１４２とともに続行する。
【００２０】
次に、タイム６２０（図６）で命令シーケンスが実行終了した後、さらなる並列実行が可能な命令シーケンスが実行されるために残っているかどうか判断するためのチェックがなされる。このようなチェックは、図５のブロック４６０に例示されており、現在のストールフラグがストールフラグに関してチェックポイントレジスタに記録された情報と比較される。現在のストールフラグが記録されたストールフラグ情報と一致する場合は、それ以上のそのような実行されるべき命令シーケンスは残っていないと判断される。従ってブロック４１０において示されているように、ＳＩＭＤ命令シーケンスを実行するよう処理が再開される。しかしながら、現在のストールフラグが記録されたストールフラグ情報と一致しない場合は、実行される命令シーケンスが実際には残っていると判断される。このような場合、情報はブロック４３０において示されているように、現在“００１１”である現在のストールフラグの状態に関してチェックポイントレジスタに再度記録される。
【００２１】
その後、ブロック４４０において示されているように、ストールフラグ１１６、１２６は、残りの並列実行が可能な命令シーケンス３を実行する命令ユニット１３２と１４２のサブセットに属する実行ユニットを除く全ての実行ユニット１１２、１２２、１３２、１４２に対してセットされる。従って、その時のストールフラグは、“１１００”を示す。次に、命令シーケンス３はブロック４５０において示されているように、実行ユニット１３２、１４２により実行される。
【００２２】
命令シーケンス３が実行を終えると、再びチェックが実施され（ブロック４６０）、別のこのような並列実行可能な命令シーケンスが残っているかどうかが判断される。現在のストールフラグ“１１００”は、チェックポイントレジスタに保持されている記録されたストールフラグ情報“００１１”と比較される。値は一致しないので、コントロールはブロック４３０へ戻される。ブロック４３０において、チェックポイントレジスタは現在のストールフラグ状態“１１００”とともに記録される。次に演算はブロック４４０へ進む。しかしながら、その他の並列実行が可能な命令シーケンスは存在しないので、ブロック４４０においてセットされるストールフラグはなく、またブロック４５０において実行されるその他の命令シーケンスはない。従って、ブロック４６０において次にチェックが行われるとき、記録されたストールフラグの情報“１１００”が現在のストールフラグ“１１００”と一致することが判断される。このような場合、結果は“Ｙｅｓ”であり、またＳＩＭＤ命令シーケンスの実行とともにブロック４１０において再び処理が続行する。
【００２３】
図７と８に関して、特定の実施例が以下に解説されている。図７は、このような実施例により命令シーケンスを実行する方法を例示したフロー図である。一方で図８はこのような実施例により演算される間のストールフラグ状態の変化を例示している。このような実施例では、プロセッサ１１０は図４に関して上記に解説しているように構成される。図７−８に例示している実施例は、並列実行が可能な命令シーケンスの実行がネストされた方法で実施される点で図４−６に関する上記に解説されている実施例とは異なる。つまり、特定の並列実行が可能な命令シーケンスの実行はその他のこのような命令シーケンスが実行を完了するまで遅延される。
【００２４】
図７に示されているように、ブロック７００、７１０、７２０及び７８０に関して実施される演算は、図５のブロック４００、４１０、４２０、及び４６０に関して上記に解説されている演算と同じである。チェックポイントレジスタがセットされるたびに、既存のストールフラグ情報と共にセットされる。
【００２５】
図７と８に関して特定の実施例が以下に解説される。ブロック７２０において、並列実行が可能な命令シーケンスは、プロセッサ１１０に実行のために存在することが判断される。ブロック７２５において、チェックポイントレジスタがセットされ、これは次にストールフラグ状態“００００”を記録する。次にブロック７３０においてストールフラグはその他の命令シーケンスが実行を終えるまで待つことを要求される命令シーケンス４に対しセットされる。このことはストールされる実行ユニット１４２をもたらす結果となり、またストールフラグ状態は“０００１”になる。
【００２６】
その後、ブロック７３５から７６０に関して演算が実施される。それらは図５のブロック４３０から４６０に関して上記に解説されている演算と同じである。このような時間の間、命令シーケンス２がまず実行され、次に命令シーケンス３が実行され、また次にブロック７６０で“０００１”における現在のストールフラグがチェックポイントレジスタに記録された“０００１”のストールフラグ状態と一致することが判断される。
【００２７】
このようなとき、あらかじめセットされた“０００１”のストールフラグの状態は“１１１０”へアップデートされ、また実行のため現在はリリースされている実行ユニット４により残りの命令シーケンスを実行するためコントロールがパスされる。最後に命令シーケンス４が実行を終えると、ストールフラグ状態は再度ブロック７８０におけるチェックポイントレジスタに記録されたものに対し、チェックされる。そして一致するとき、ブロック７１０においてＳＩＭＤ命令シーケンスの実行が再度続行する。
【００２８】
以上、本発明によれば、複数の並列実行が可能な命令のシーケンスを単一の命令ユニットにより動作される複数の実行ユニットを有するプロセッサ１１０で実行するための方法が提供される。この方法は、ａ）プロセッサ１１０に送られる命令から並列実行のため適用される複数の命令のシーケンスを検出することを含み、各シーケンスは複数の実行ユニット１１２〜１４２のサブセットにより実行のため適用されており、またｂ）実行ユニットのストール状態を表す情報を記録することを含む。次にステップｃ）が実行され、ここでは複数のシーケンスのうち実行されていないシーケンス各々に対してｉ）実行されていないシーケンスに対応するサブセット以外の複数の実行ユニット全てがストールされ、またｉｉ）命令のシーケンスが対応するサブセットにより実行される。その後、ステップｄ）において、複数の実行ユニットの現在のストール状態が記録された情報により表されるストール状態と一致するかどうか判断される。一致しないとき、記録された情報により表される現在のストール状態が記録された情報と一致するまでステップｂ）からｄ）が繰り返される。
なお、本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理及び用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨及び範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【００２９】
【図１】本発明の背景であるプロセッサの構成と演算を例示した図である。
【図２】本発明の背景であるプロセッサの構成と演算を例示した図である。
【図３】本発明の背景であるプロセッサの構成と演算を例示した図である。
【図４】本発明の実施例によるプロセッサの構成を例示したブロック図である。
【図５】本発明の特定の実施例による演算を例示したフロー図である。
【図６】図５に例示されている発明の実施例による演算のタイミング図である。
【図７】本発明の特定の実施例による演算を例示したフロー図である。
【図８】図５に例示されている発明の実施例による演算のタイミング図である。
【符号の説明】
【００３０】
１０      プロセッサ
１２      関数ユニット
１３      ローカルストア
１４      イシューロジック
１１０      プロセッサ
１１２      実行ユニット
１１３      ローカルストア
１１４      イシューロジック
１１６      ストールフラグ
１１８      チェックポイントレジスタ
１２０      ストール状態フラグ
１２１      コンパレータ
１３２      実行ユニット
１３６      ストールフラグ
１４２      実行ユニット
【図１】
2005310166.tif 000003
【図２】
2005310166.tif 000004
【図３】
2005310166.tif 000005
【図４】
2005310166.tif 000006
【図５】
2005310166.tif 000007
【図６】
2005310166.tif 000008
【図７】
2005310166.tif 000009
【図８】
2005310166.tif 000010