(57)【特許請求の範囲】
【請求項１】
少なくとも１つのチェンジオブフロー命令を含む、複数の命令を実行するデータプロセッサ（１０）であって、
前記複数の命令の内の選択されたものを順次フェッチするための命令プリフェッチユニット（２６）、
前記命令プリフェッチユニット（２６）に結合され前記命令プリフェッチユニット（２６）によってフェッチされた前記複数の命令の内の選択されたものを選択的にデコードするための命令デコードユニット（３２）、
前記命令デコードユニット（３２）に結合された命令実行ユニット（４０）であって、該命令実行ユニット（４０）は前記命令デコードユニット（４０）によってデコードされた前記複数の命令を選択的に実行するもの、そして
前記命令プリフェッチユニット（２６）、前記命令デコードユニット（３２）および前記命令実行ユニット（４０）に結合された制御ユニット（１８）であって、該制御ユニット（１８）は記憶された制御値を有し、該記憶された制御値は前記命令デコードユニット（３２）によって条件的フロー命令が検出されたことに直接応答して命令プリフェッチユニット（２６）がさらなる命令をフェッチすることを所定の量の時間の間選択的にディスエーブルすることにより命令プリフェッチユニット（２６）を直接制御し、前記命令プリフェッチユニット（２６）のディスエーブルは前記所定量の時間が経過するまでフェッチ動作を完全に避けることによりデータプロセッサ（１０）のオーバヘッドを低減し、所定量の時間が経過した時点で命令プリフェッチユニット（２６）によるプリフェッチは自動的に再開されるもの、
を具備することを特徴とする少なくとも１つのチェンジオブフロー命令を含む、複数の命令を実行するデータプロセッサ（１０）。
【請求項２】
データプロセッサ（１０）における、条件分岐命令の実行を制御するための装置であって、
命令エンコード値を得るために命令アドレスを提供する命令フェッチ回路（２６）であって、該命令フェッチ回路は制御入力を有するもの、
前記命令フェッチ回路（２６）に結合された入力を有し前記命令エンコード値を受けるための命令デコーダ（３２）であって、該命令デコーダ（３２）は前記命令エンコード値を前記データプロセッサによって実行できる形式に変換することにより前記命令エンコード値を準備するもの、
前記命令デコーダ（３２）に結合され命令を実行するための実行ユニット（４０）、そして
前記命令フェッチ回路（２６）、前記命令デコーダ（３２）および前記実行ユニット（４０）の各々に結合された制御ユニット（１８）であって、該制御ユニット（１８）は分岐制御値に応答して制御信号を前記命令フェッチ回路（２６）の前記制御入力に提供し、前記分岐制御値は前記命令デコーダ（３２）が条件分岐命令に遭遇したことを判定した場合にさらなる命令をフェッチする複数の動作モードの内の１つを決定し、前記複数の動作モードは前記条件分岐命令によって示される命令フローの方向によって決定されるもの、
を具備することを特徴とするデータプロセッサ（１０）における、条件分岐命令の実行を制御するための装置。
【請求項３】
データプロセッサ（１０）においてチェンジオブフロー命令を実行する方法であって、
命令プリフェッチユニット（２６）によって複数の命令の内の選択されたものを順次フェッチする段階、
フェッチされた前記複数の命令の内の選択されたものを選択的にデコードする段階、
デコードされた前記複数の命令の内の選択されたものを選択的に実行する段階、そして
条件フロー命令が検出されたことに直接応答して所定量の時間の間前記命令プリフェッチユニット（２６）がさらなる命令をフェッチすることを選択的にディスエーブルすることによって前記命令プリフェッチユニット（２６）を直接制御する制御値を使用する段階であって、前記ディスエーブルは前記所定量の時間が経過するまでフェッチ動作を完全に避けることにより前記データプロセッサ（１０）のオーバベッドを低減し、前記所定量の時間が経過した時点で前記命令プリフェッチユニット（２６）によるプリフェッチは自動的に再開される、段階、
を具備することを特徴とするデータプロセッサ（１０）におけるチェンジオブフロー命令を実行する方法。
【請求項４】
データプロセッサ（１０）における、条件分岐命令の実行を制御する方法であって、
命令アドレスをフェッチしかつ命令エンコード値を得る段階、
前記命令エンコード値をデコードする段階、
前記命令エンコード値を実行する段階、そして
前記フェッチする段階を制御するために制御信号を提供する段階であって、該制御信号は分岐制御値に応じて提供され、該分岐制御値は条件分岐命令に遭遇した場合にさらなる命令がフェッチされる複数のモードの命令フェッチの１つを決定し、前記複数のモードの動作は前記条件分岐命令によって示される命令フローの方向によって決定される、段階、
を具備することを特徴とするデータプロセッサ（１０）における、条件分岐命令の実行を制御する方法。
【請求項５】
データプロセッサ（１０）における条件分岐命令の実行を行う方法であって、
命令フェッチユニット（２６）によって実行されるべき複数の命令をフェッチする段階、
実行ユニット（４０）によって実行するために前記命令をデコードする段階、そして
制御フィールドに単数または複数の制御値を提供するための単数または複数の制御ビットを有する制御回路（１８）を使用して命令フェッチユニット（２６）の動作を制御する段階であって、条件分岐命令の検出に応じて、前記単数または複数の制御値は、前記条件分岐命令によって要求される命令フローの変化の方向が前方向であるかあるいは後方向であるかの決定に基づき、それぞれ前記命令フェッチユニットに順次的な方法で付加的な命令をフェッチさせかつ条件的に実行するか、あるいは予測されたデスティネイションの命令にジャンプすることにより付加的な命令をフェッチしかつ条件的に実行するかを制御するために前記制御回路によって使用され、前記制御フィールドはプログラマによってアクセス可能である、段階、
を具備することを特徴とするデータプロセッサ（１０）における条件分岐命令の実行を行う方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はデータ処理に関し、かつより特定的にはデータプロセッサにおいて条件分岐（ｃｏｎｄｉｔｉｏｎａｌ  ｂｒａｎｃｈ）の実行を制御するための方法および装置に関する。
【０００２】
【従来の技術】
データ処理システムはもしそれがプログラム実行のための数多くの段階またはステージを含んでいれば「パイプライン化される（ｐｉｐｅｌｉｎｅｄ）」ことになる。例えば、４ステージのパイプラインはフェッチステージ、デコードステージ、実行ステージ、および書戻しステージ（ｗｒｉｔｅ−ｂａｃｋ  ｓｔａｇｅ）を含むことができる。フェッチステージの間に、次の命令があるメモリロケーションから読み出される。次に、該命令はデコードされ、実行され、かつメモリのロケーションにまたはレジスタに書戻される。これらのステージの各々は完了するのに１つまたはそれ以上のクロックサイクルを必要とするであろう。また、第１の命令がデコードされるのと同時に、第２の命令をフェッチすることができ、かつ第１の命令が実行されている間に、第２の命令をデコードし、以下同様に行うことができ、従って、「パイプライン」が満杯（ｆｕｌｌ）状態に留まっているようにされる。パイプライン化データ処理システムは実行されるプログラムが命令の流れの変化またはチェンジオブフロー（ｃｈａｎｇｅ  ｏｆ  ｆｌｏｗ）、すなわち順次的でない流れ、を含む場合に実行ペナルティを受けることがある。チェンジオブフローが生じた場合、データ処理システムは命令パイプラインを再充填するためにプログラムフローの実行を停止することが必要であろう。
【０００３】
【発明が解決しようとする課題】
チェンジオブフローが生じた場合に性能を改善するために使用される技術の内で、分岐予測、プリフェッチおよび条件的実行のような種々の機構がある。しかしながら、これらの機構の多くはデータ処理システムに増大した複雑さを加えかつすべての環境で効果的でないかもしれない。従って、種々の異なる環境に適用できる分岐予測デスティネイションプリフェッチおよび条件的実行に対する制御を提供する必要性が存在する。
【０００４】
【課題を解決するための手段】
一般に、本発明は種々の分岐の筋書きに対する命令のプリフェッチ（ｐｒｅｆｅｔｃｈｉｎｇ）および条件的実行（ｃｏｎｄｉｔｉｏｎａｌ  ｅｘｅｃｕｔｉｏｎ）のみならず、順方向または前方向（ｆｏｒｗａｒｄ）分岐予測および逆方向または後方向（ｂａｃｋｗａｒｄ）分岐予測を選択的に制御する方法およびデータ処理システムを提供する。３ビットのプログラマがアクセス可能な制御フィールドが使用されて前方向および後方向条件分岐の双方に対する命令のプリフェッチの独立した制御を可能にすることにより条件分岐命令と共に使用される活動または行動（ａｃｔｉｖｉｔｙ）の形式を特定する。また、条件的実行に対する制御が前方向および後方向分岐の双方に対して提供される。前方向および後方向分岐予測および条件的実行の独立した制御を可能にすることにより、パイプラインストール（ｐｉｐｅｌｉｎｅ  ｓｔａｌｌｓ）が低減できかつ異なる環境に対してより柔軟性あるプログラムの実行が達成できる。より詳細には、本発明はさらに図１〜図１２を参照して説明することができる。
【０００５】
本発明の一態様では、少なくとも１つのチェンジオブフロー命令を含む、複数の命令を実行するデータプロセッサ（１０）が提供され、該データプロセッサは、前記複数の命令の内の選択されたものを順次フェッチするための命令プリフェッチユニット（２６）、前記命令プリフェッチユニット（２６）に結合され前記命令プリフェッチユニット（２６）によってフェッチされた前記複数の命令の内の選択されたものを選択的にデコードするための命令デコードユニット（３２）、前記命令デコードユニット（３２）に結合された命令実行ユニット（４０）であって、該命令実行ユニット（４０）は前記命令デコードユニット（４０）によってデコードされた前記複数の命令を選択的に実行するもの、そして前記命令プリフェッチユニット（２６）、前記命令デコードユニット（３２）および前記命令実行ユニット（４０）に結合された制御ユニット（１８）であって、該制御ユニット（１８）は記憶された制御値を有し、該記憶された制御値は前記命令デコードユニット（３２）によって条件的フロー命令が検出されたことに直接応答して命令プリフェッチユニット（２６）がさらなる命令をフェッチすることを所定の量の時間の間選択的にディスエーブルすることにより命令プリフェッチユニット（２６）を直接制御し、前記命令プリフェッチユニット（２６）のディスエーブルは前記所定量の時間が経過するまでフェッチ動作を完全に避けることによりデータプロセッサ（１０）のオーバヘッドを低減し、所定量の時間が経過した時点で命令プリフェッチユニット（２６）によるプリフェッチは自動的に再開されるもの、を具備することを特徴とする。
【０００６】
本発明の別の態様では、データプロセッサ（１０）における、条件分岐命令の実行を制御するための装置が提供され、該装置は、命令エンコード値を得るために命令アドレスを提供する命令フェッチ回路（２６）であって、該命令フェッチ回路は制御入力を有するもの、前記命令フェッチ回路（２６）に結合された入力を有し前記命令エンコード値を受けるための命令デコーダ（３２）であって、該命令デコーダ（３２）は前記命令エンコード値を前記データプロセッサによって実行できる形式に変換することにより前記命令エンコード値を準備するもの、前記命令デコーダ（３２）に結合され命令を実行するための実行ユニット（４０）、そして前記命令フェッチ回路（２６）、前記命令デコーダ（３２）および前記実行ユニット（４０）の各々に結合された制御ユニット（１８）であって、該制御ユニット（１８）は分岐制御値に応答して制御信号を前記命令フェッチ回路（２６）の前記制御入力に提供し、前記分岐制御値は前記命令デコーダ（３２）が条件分岐命令に遭遇したことを判定した場合にさらなる命令をフェッチする複数の動作モードの内の１つを決定し、前記複数の動作モードは前記条件分岐命令によって示される命令フローの方向によって決定されるもの、を具備することを特徴とする。
【０００７】
本発明のさらに別の態様では、データプロセッサ（１０）においてチェンジオブフロー命令を実行する方法が提供され、該方法は、命令プリフェッチユニット（２６）によって複数の命令の内の選択されたものを順次フェッチする段階、フェッチされた前記複数の命令の内の選択されたものを選択的にデコードする段階、デコードされた前記複数の命令の内の選択されたものを選択的に実行する段階、そして条件フロー命令が検出されたことに直接応答して所定量の時間の間前記命令プリフェッチユニット（２６）がさらなる命令をフェッチすることを選択的にディスエーブルすることによって前記命令プリフェッチユニット（２６）を直接制御する制御値を使用する段階であって、前記ディスエーブルは前記所定量の時間が経過するまでフェッチ動作を完全に避けることにより前記データプロセッサ（１０）のオーバベッドを低減し、前記所定量の時間が経過した時点で前記命令プリフェッチユニット（２６）によるプリフェッチは自動的に再開されるもの、を具備することを特徴とする。
【０００８】
本発明のさらに別の態様では、データプロセッサ（１０）における、条件分岐命令の実行を制御する方法が提供され、該方法は、命令アドレスをフェッチしかつ命令エンコード値を得る段階、前記命令エンコード値をデコードする段階、前記命令エンコード値を実行する段階、そして前記フェッチする段階を制御するために制御信号を提供する段階であって、該制御信号は分岐制御値に応じて提供され、該分岐制御値は条件分岐命令に遭遇した場合にさらなる命令がフェッチされる複数のモードの命令フェッチの１つを決定し、前記複数のモードの動作は前記条件分岐命令によって示される命令フローの方向によって決定されるもの、を具備することを特徴とする。
【０００９】
本発明のさらに別の態様では、データプロセッサ（１０）における条件分岐命令の実行を行う方法が提供され、該方法は、命令フェッチユニット（２６）によって実行されるべき複数の命令をフェッチする段階、実行ユニット（４０）によって実行するために前記命令をデコードする段階、そして条件分岐命令の検出に応じて命令フェッチユニット（２６）に対し制御信号を提供する制御回路（１８）によって前記データプロセッサ（１０）の動作を制御する段階であって、前記制御信号は前記条件分岐命令によって要求される命令フローの変化の方向が前方向であるかあるいは後方向であるかの決定に基づき、それぞれ命令フェッチユニットに順次的な方法で付加的な命令をフェッチさせかつ条件的に実行するか、あるいは予測されたデスティネイションの命令にジャンプすることにより付加的な命令をフェッチしかつ条件的に実行するかを制御するもの、を具備することを特徴とする。
【００１０】
【発明の実施の形態】
図１は、ブロック図形式で、本発明に係わるパイプライン化されたデータ処理システム１０を示す。データ処理システム１０はメモリ１２およびデータプロセッサ１４を含む。データプロセッサ１４はアドレスバッファ１６、アドレスマルチプレクサ２４、制御ユニット１８、分岐制御ビットフィールド１９、命令フェッチユニット２６、命令デコーダ３２、実行ユニット４０、バスインタフェースユニット２３、データ入力バッファ２０、およびデータ出力バッファ２２を含む。命令フェッチユニット２６はプログラム制御計算ブロック２８および命令バッファ３０を含む。
【００１１】
メモリ１２はアドレスを受けるためにアドレスバスにかつデータを受けかつ提供するためにデータバスに結合されている。メモリ１２はスタティックランダムアクセスメモリ（ＳＲＡＭ）、およびダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような揮発性メモリまたは電気的にプログラム可能なリードオンリメモリ（ＥＰＲＯＭ）およびフラッシュメモリのような不揮発性メモリを含む任意の種類の伝統的なメモリとすることができる。また、メモリ１２はプロセッサ１４と同じ集積回路上にあってもよく、あるいはプロセッサ１４の外部に配置されてもよい。アドレスマルチプレクサ２４は実行ユニット（ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ）４０からオペランドアドレスを受けるための第１の複数の入力端子、命令フェッチユニット２６から命令アドレスを受けるための第２の複数の入力端子、およびアドレスバッファ１６に結合された複数の出力端子を有する。アドレスマルチプレクサ２４は前記オペランドアドレスあるいは前記命令アドレスをメモリ１２に向けるためにバスインタフェースユニット２３によって制御される。命令フェッチユニット２６はメモリから選択された命令をその後フェッチするためにデータ入力バッファ２０に結合されている。
【００１２】
命令デコーダ３２はバス４２および４４を介して命令フェッチユニット２６に結合されている。命令フェッチユニット２６は命令エンコード値（ｉｎｓｔｒｕｃｔｉｏｎ  ｅｎｃｏｄｉｎｇ  ｖａｌｕｅ）を得るために命令アドレスを提供する。命令デコーダ３２は命令フェッチユニット２６から命令エンコード値を受け、該命令エンコード値をデータプロセッサ１４によって実行できるフォーマットに変換することにより該命令エンコード値を準備し、かつ命令フェッチユニット２６によってフェッチされた命令を選択的にデコードする。命令デコーダ３２はバス４２および４４を介して実行ユニット４０に結合されている。実行ユニット４０はメモリ１２からデータを受けるためにデータ入力バッファ２０に結合されている。同様に、実行ユニット４０はメモリ１２にデータを提供するためにデータ出力バッファ２２に結合されている。実行ユニット４０は命令デコーダ３２によってデコードされた命令を選択的に実行し、かつ結果をデータ出力バッファ２２に提供する。実行ユニット４０は、例えば、演算論理ユニット（ＡＬＵ）を含むことができる。
【００１３】
バスインタフェースユニット２３は命令ユニット４０からオペランドアクセス要求を受け、かつこれに応じて、演算または操作されるべきデータにアクセスするためにアクセス制御信号をメモリ１２に提供する。また、バスインタフェースユニット２３は命令フェッチユニット２６に結合されて命令のためにメモリ１２にアクセスするための命令アクセス要求を受信する。バスインタフェースユニット２３はデータ処理システム１０において命令のシーケンスを調整するためにバス５４を介して制御ユニット１８に双方向的に結合されている。
【００１４】
制御ユニット１８は制御バス４８を介して命令フェッチユニット２６に双方向的に結合され命令フェッチユニット２６の動作を制御する。制御ユニット１８は制御バス５０を介して命令デコーダ３２に双方向的に結合され、かつ制御ユニット１８は制御バス５２を介して実行ユニット４０に双方向的に結合されている。実行ユニット４０は条件バス（ｃｏｎｄｉｔｉｏｎ  ｂｕｓ）４６を介して命令フェッチユニット２６に結合されて条件情報を命令フェッチユニット２６に提供する。図示された実施形態では、分岐制御フィールド１９は前方向および後方向分岐プリフェッチおよび条件命令の実行を制御するための政策（ｐｏｌｉｃｉｅｓ）を選択するための情報を格納する制御ユニット１８内のレジスタの３ビットの制御フィールドである。他の実施形態では、制御フィールドは１つまたはそれ以上のビットを含むことができる。制御フィールド１９は条件フロー命令（ｃｏｎｄｉｔｉｏｎａｌ  ｆｌｏｗ  ｉｎｓｔｒｕｃｔｉｏｎ）（条件分岐命令）が命令デコーダ３２によって検出されたことに応じて所定の量の時間の間命令フェッチユニット２６をディスエーブルすることにより命令フェッチユニット２６を直接制御する。制御ユニットは分岐制御フィールド１９に格納された値に応じて命令フェッチユニット２６に制御信号を提供する。分岐制御フィールド１９は命令デコーダ３２が条件分岐命令に遭遇したことを判定した場合に命令フェッチユニット２６がさらに命令をフェッチするいくつかのモードの動作の内の１つを決定する（図１２を参照）。前記動作モードは条件分岐命令によって示される命令フローの方向（後方向分岐または前方向分岐）によって決定される。条件フロー命令は、例えば、トラップ（ｔｒａｐ）またはジャンプ（ｊｕｍｐ）命令とすることができる。
【００１５】
命令フェッチユニット２６をディスエーブルすることは所定の量の時間が経過するまでフェッチ動作を完全に避けることによりデータ処理システム１０のオーバヘッドを低減する。所定量の時間が経過した後、命令フェッチユニット２６は自動的に動作を再開する。命令フェッチユニット２６はまた前方向および後方向分岐の双方に対してディスエーブルされるようにすることができる。
【００１６】
データ処理システム１０は４ステージパイプラインで命令を実行する。該４ステージはフェッチステージ、デコードステージ、実行ステージ、および書戻しステージを含む。命令フェッチステージの間に、命令が、メモリ１２のような、メモリから読み出される。該命令は次に命令デコーダ３２においてデコードされる。デコードされた命令はバス４２を介して実行ユニット４０に提供される。実行ユニット４０は命令を実行しかつ次に結果をデータ出力バッファ２２を介してメモリ１２に書き戻す。
【００１７】
図２は、本発明を説明するのに有用な一連の命令を示す。本発明を説明する目的で、命令の形式は重要ではない。従って、図２における各々の命令番号に関連する命令は単一の文字で表されている。図２の命令を実行する間に、データ処理システム１０は、例えば、条件分岐命令のような次の順次の（ｓｅｑｕｅｎｔｉａｌ）命令でなくてもよい他の命令へとデータ処理システム１０が移行することを要求する命令に遭遇するまで、順次各命令を実行することになる。図２においては、命令番号４は“Ｖ”と名付けられた条件分岐命令を示している。命令Ｖを実行した後、データ処理システム１０は順次次の命令を実行するかあるいは命令Ｖを実行した後に得られた結果に基づき命令Ｗに移行することを要求される。条件または条件的フローは命令Ｖで発出する曲がった矢印で表されている。図２に示された一連の命令をより効率的に実行するため、データ処理システム１０は分岐制御フィールド１９に含まれる所定の制御情報に基づき分岐が命令Ｘへのものかあるいは命令Ｗへのものかを予測しようと試みる。分岐予測を行うべきか否かを決定することに加えて、分岐制御フィールド１９はまた予測された次の命令ステップの条件的実行が行われるか否かを決定するために使用できる。
【００１８】
分岐制御フィールド１９はプリフェッチ、予測および、条件フロー命令に関連する、条件的実行に対して独立の制御を可能にする。本発明の一態様によれば、分岐制御フィールド１９の制御ビットに基づき、次の命令は実行されている現在の命令において条件が解明される（ｒｅｓｏｌｖｅｄ）までフェッチされない。次の命令がフェッチされないから、データ処理ユニット１０において後に捨てられるかもしれない命令をプリフェッチすることにより生じる遅延は低減される。また、不必要なプリフェッチおよび実行を除去することにより電力消費も低減できる。さらに、データ処理システムは命令をより高速かつより効率的に実行する。加えて、本発明はユーザが前方向分岐ではなく後方向分岐を、もしそれが特定のプログラムがパイプライン化プロセッサにおいてより効率的に実行されるようにするものであれば、選択できるようにすることによって柔軟性を加える。
【００１９】
図３〜図１１は、タイミング図形式で、本発明に係わる分岐制御を説明するための種々の場合を示している。図３〜図１１に示された例は説明の目的で図２の命令フローを使用する。
【００２０】
図３は、データ処理システム１０において前方向または後方向分岐におけるプリフェッチが行われないケース１（ＣＡＳＥ１）のタイミング図を示す。図３において、データプロセッサ１０の４つのパイプラインステージの各々が示されている。最初のクロックサイクルの間に、図２における命令２である、命令Ｔがフェッチされる。第２のクロックサイクルの間に、命令Ｕがフェッチされ、かつ命令Ｕがフェッチされると同時に、命令Ｔがデコードされる。クロックサイクル３において、命令Ｕがデコードされている間に命令Ｖがフェッチされる。命令Ｖは命令Ｘおよび命令Ｗをさし示す矢印によって示されるように前方向分岐命令として示されている。もし分岐制御フィールド１９（図１）における制御ビットが何らの前方向分岐もプリフェッチされるべきでないことを示せば、クロックサイクル４において、プロセッサ１０はワード「ストール（ｓｔａｌｌ）」で示されるように次の命令をプリフェッチしないことになる。しかしながら、命令Ｖはデコードされかつ命令Ｕは実行されることになり、それはこれらがパイプラインのより後のステージにあるからである。クロックサイクル４におけるストールは次のクロックサイクルにおいて命令Ｘあるいは命令Ｗのいずれがフェッチされるべきかを知るために命令Ｖが解明できるようにするために挿入される。クロックサイクル４の終わりに示されるようにいったん条件が解明されると、適切な命令が次にフェッチできる。ケース１に適用される制御フィールドの値については図１２を参照。
【００２１】
図４は、タイミング図形式で、プリフェッチのデスティネイション（ｄｅｓｔｉｎａｔｉｏｎ）が正しく予測されたケース２（ＣＡＳＥ２）を示している。説明の目的で、図４は後方向分岐を示している。しかしながら、図４は前方向分岐にも同様に適用される。クロックサイクル１において、図２に示される命令Ｚがフェッチされる。クロックサイクル２において、命令Ｚがデコードされている間に次の順次的な命令、命令Ｗ、がフェッチされる。クロックサイクル３において、命令Ｑがフェッチされ、命令Ｗがデコードされ、かつ命令Ｚが実行される。命令Ｑは条件的後方向分岐命令であり、この場合次の命令は命令Ｓまたは命令Ｒとすることができる。説明の目的で、命令Ｓが次の命令となるべきことが予測される。従って、命令Ｓがプリフェッチされ、命令Ｑがデコードされ、命令Ｗが実行され、かつ命令Ｚが書き戻される。クロックサイクル４の終わりに、条件が解明されて命令Ｓが正しい命令であったことが示されかつクロックサイクル５において、命令Ｔがプリフェッチされ、命令Ｑが実行され、かつ命令Ｗが書き戻される間に命令Ｓがデコードされる。ケース２においては、パイプラインストールは受けない。
【００２２】
図５は、タイミング図形式で、プリフェッチのデスティネイションが間違って予測されたケース３（ＣＡＳＥ３）を示している。クロックサイクル１において、命令Ｚ（図２）がフェッチされる。クロックサイクル２において、命令Ｗがフェッチされかつクロックサイクル３において、命令Ｑがフェッチされ、かつ命令Ｑは条件的後方向分岐命令である。もし後方向分岐プリフェッチが分岐制御フィールド１９において選択されていれば、命令Ｓがクロックサイクル４においてプリフェッチされる。（ケース３に適用される制御フィールドの値に対しては図１２を参照。）クロックサイクル５の間に、命令Ｑが実行されかつ命令Ｓのプリフェッチが正しくなかったことが判定される。正しい命令、命令Ｒがフェッチされる間パイプラインはストールされる。クロックサイクル６においていったん命令Ｒがフェッチされると、通常の実行が再開される。
【００２３】
図６は、タイミング図形式で、順次のプリフェッチが正しく予測されたケース４（ＣＡＳＥ４）を示している。クロックサイクル３において、分岐命令Ｖがフェッチされるが、それは分岐制御フィールド１９がプリフェッチが続いて起こるべきことを示しているためである。クロックサイクル４の間に、命令Ｘがフェッチされる。クロックサイクル５において、命令Ｖが実行されかつ条件が解明されて命令Ｘがプリフェッチすべき正しい命令であったことを示す。命令Ｘによって通常の実行が再開される。
【００２４】
図７は、タイミング図形式で、命令プリフェッチが順次的またはシーケンシャルでありかつ間違って予測されるケース５（ＣＡＳＥ５）を示している。クロックサイクル３において、命令Ｖがプリフェッチされ、この場合命令Ｖは条件的前方向分岐命令である。次の命令はクロックサイクル４において命令Ｘであるから、命令Ｘがフェッチされる。クロックサイクル５において、命令Ｖが実行される。条件が解明され命令Ｘがプリフェッチすべき間違った命令であったことを示す。プリフェッチが間違っていたから、クロッサクイクル６において、正しい命令、命令Ｗ、がフェッチされかつパイプラインが再充填される（ｒｅｆｉｌｌｅｄ）。
【００２５】
図８は、タイミング図形式で、条件的実行がイネーブルされかつ行われた分岐の予測が正しかったケース６（ＣＡＳＥ６）を示している。クロックサイクル３において、前方向分岐命令Ｖがフェッチされる。分岐が取られることが予測され、従って命令Ｗがフェッチされる。命令Ｗは条件が解明される前にクロックサイクル６において実行される。クロックサイクル６の後に、条件が解明され、かつ予測が正しかったことになり、従ってパイプラインフローは継続することができる。
【００２６】
図９は、タイミング図形式で、分岐がとられるものとして間違って予測された条件的実行を示すケース７（ＣＡＳＥ７）を示している。図８について上で述べたように、命令Ｗは次の命令であるべきことが予測される。しかしながら、この場合命令Ｗは間違った命令である。従って、クロックサイクル６の終わりに、条件が解明されかつクロックサイクル７において、正しい命令、命令Ｘ、がフェッチされかつパイプラインは正しい命令によって再充填されなければならない。
【００２７】
図１０は、タイミング図形式で、分岐がとられないものと正しく予測された条件的実行を示すケース８（ＣＡＳＥ８）を図示している。クロックサイクル３において、命令Ｖは前方向分岐命令であり、かつ予測が行われないから、次の順次的な命令、命令Ｘ、がフェッチされる。命令Ｘが実行されたクロックサイクル６の終わりに、条件が正しく解明されかつパイプラインフローは乱されない状態に留まっている。
【００２８】
図１１は、タイミング図形式で、分岐予測が行われないものと間違って予測された条件的実行を示すケース９（ＣＡＳＥ９）を図示している。クロックサイクル３において分岐命令Ｖをフェッチした後、フェッチされるべき次の順次的な命令は命令Ｘである（図２を参照）。図１１のクロックサイクル６の終わりに、条件が間違いで解明される。正しい命令は命令Ｗであるべきであるから、命令Ｗがクロックサイクル７においてフェッチされかつパイプラインはそれが正しい命令によって充填される間ストールする。
【００２９】
図１２は、図１の分岐制御フィールド１９に対する制御値および各々の制御値に対応する適用可能なケース１〜９のテーブルを示す。分岐制御フィールド１９はデータ処理１０に対するプログラマのモデルの部分である。図示された実施形態では、分岐制御フィールド１９は実行されるべき命令のシーケンス内で適切な命令を挿入することにより更新できる。これはプリフェッチおよび条件的実行の双方に対する前方向および後方向条件分岐の双方において分岐予測の効率的な使用を可能にする。
【００３０】
次に、図１２における各々の制御値に対してとられる動作または行動（ａｃｔｉｏｎｓ）の概要を示す。
【００３１】
もし分岐制御フィールドが０００を含んでいれば、前方向あるいは後方向分岐に対するプリフェッチ予測は分岐条件が解明されるまで行われない。
【００３２】
もし分岐制御フィールドが００１を含んでいれば、後方向分岐のデスティネイションがプリフェッチされるが、前方向分岐に対するプリフェッチ予測はない。
【００３３】
もし分岐制御フィールドが０１０を含んでいれば、デスティネイションをプリフェッチしかつ後方向分岐デスティネイションの条件的実行を可能にし（すなわち、後方向予測が行われかつ、条件的実行と共に、デスティネイションをプリフェッチ）、前方向分岐に対するプリフェッチ予測はない。
【００３４】
もし分岐制御フィールドが０１１を含んでいれば、後方向分岐のデスティネイションをプリフェッチし（すなわち、予測が行われかつデスティネイションをプリフェッチするが、条件的実行はない）、前方向分岐に対する順次的な命令をプリフェッチする（すなわち、予測は行われないが、条件的実行はない）。
【００３５】
もし分岐制御フィールドが１００を含んでいれば、両方の分岐方向のデスティネイションをプリフェッチする（すなわち、予測が行われるが、条件的実行はない）。
【００３６】
もし分岐制御フィールドが１０１を含んでいれば、両方の分岐方向のデスティネイションをプリフェッチし、予測された後方向分岐の条件的実行を可能にする（すなわち、予測が行われるが、前方向分岐に対する条件的実行はない）。
【００３７】
もし分岐制御フィールドが１１０を含んでいれば、両方の分岐方向のデスティネイションをプリフェッチし、予測された分岐の条件的実行を可能にする（すなわち、予測が行われ、かつすべての分岐に対する条件的実行を可能にする）。
【００３８】
もし分岐制御フィールドが１１１を含んでいれば、後方向分岐のデスティネイションをプリフェッチし、予測された後方向分岐の条件的実行を可能にする（すなわち、予測が行われかつデスティネイションをプリフェッチし、条件的実行を可能にする）。前方向分岐に対する順次的な命令をプリフェッチする（すなわち、予測は行われず、条件的実行を可能にする）。
【００３９】
【発明の効果】
プリフェッチ予測または予測プリフェッチおよび分岐命令に対する条件的実行に対して独立に制御を可能にすることにより、処理時間をより効率的に使用することが可能になり、それは間違った予測の結果としてのパイプラインストールが低減できるからである。
【００４０】
本発明がその特定の実施形態に関して説明されかつ示されたが、本発明はこれらの例示的な実施形態に限定されるものではない。当業者は本発明の精神から離れることなく変更および修正を行うことができることを認識するであろう。従って、本発明は添付の特許請求の範囲内に入るすべてのそのような変更および修正を含むことを意図している。
【図面の簡単な説明】
【図１】本発明に係わるパイプライン化データ処理システムを示すブロック図である。
【図２】本発明を説明するのに有用な一連の命令を示す説明図である。
【図３】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図４】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図５】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図６】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図７】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図８】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図９】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図１０】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図１１】本発明に係わる分岐制御を説明するために種々の場合を示すタイミング図である。
【図１２】図１の分岐制御フィールドに対する制御値および各々の制御値に関連する行動に対応する適用可能なケース１〜９をテーブル形式で示す説明図である。
【符号の説明】
１０  パイプライン化データ処理システム
１２  メモリ
１４  データプロセッサ
１６  アドレスバッファ
１８  制御ユニット
１９  分岐制御ビットフィールド
２０  データ入力バッファ
２２  データ出力バッファ
２３  バスインタフェースユニット
２４  アドレスマルチプレクサ
２６  命令フェッチユニット
２８  プログラム制御計算ブロック
３０  命令バッファ
３２  命令デコーダ
４０  実行ユニット
【図１】
0003977931.tif 000002
【図２】
0003977931.tif 000003
【図３】
0003977931.tif 000004
【図４】
0003977931.tif 000005
【図５】
0003977931.tif 000006
【図６】
0003977931.tif 000007
【図７】
0003977931.tif 000008
【図８】
0003977931.tif 000009
【図９】
0003977931.tif 000010
【図１０】
0003977931.tif 000011
【図１１】
0003977931.tif 000012
【図１２】
0003977931.tif 000013