(57)【要約】【課題】性能の低下を招くことなく、未使用のスライスの依存性チェックに伴う複雑さを解消する。【解決手段】ＳＩＭＤ演算処理パイプラインのデータパス処理回路の少なくとも一部を無効にする方法ならびに装置１００であり、処理回路は、所定のサイクルの間、１つ以上の有効フラグに応答するスライス及びステージの行列に編成されている。【選択図】図１
2006196004.tif 000002
【特許請求の範囲】
【請求項１】
スライス及びステージの行列に編成された複数のデータパス処理回路を有するＳＩＭＤ演算処理パイプラインを有し、前記処理回路の少なくとも一部は、所定のサイクルの間、１つ以上の有効フラグに応答して動作を少なくとも部分的に無効にするよう動作可能である装置。
【請求項２】
前記処理回路は、前記有効フラグの各々１つに応答して動作を個別に無効にするよう動作可能である請求項１に記載の装置。
【請求項３】
前記各処理回路にクロック信号を中断させることによって前記有効フラグの状態に応答するクロック中断回路を更に有する請求項１又は２に記載の装置。
【請求項４】
（ｉ）前記有効フラグの関数として、前記各処理回路からのそれぞれのデータ結果の、１つ以上のデスティネーションレジスタへの書き込みを無効にする、
（ｉｉ）前記処理回路からの結果の、前記パイプラインに対し前記１つ以上のソースオペランドへの転送を有効にする、の少なくとも１つを動作可能である１つ以上の制御回路を更に有する請求項１〜３のいずれかの項に記載の装置。
【請求項５】
前記１つ以上の制御回路は、前記処理回路からの前記結果内の未使用のスライスワードの、前記デスティネーションレジスタへの前記書き込みを無効にするよう動作可能であるか、
前記１つ以上の制御回路は、前記処理回路からの前記結果内の使用中のスライスワードの、前記１つ以上のソースオペランドへの前記転送を有効にするよう動作可能であるか、あるいは、
前記１つ以上の制御回路は、前記有効及び／又は無効にする機能をサイクル単位で実行するよう動作可能であるか、の少なくともいずれかに該当する請求項４に記載の装置。
【請求項６】
前記パイプラインの前記スライスに入力されようとしている命令のオペランドのいずれかが、前記処理回路の前記データ結果のいずれかに依存しているかどうかを判定するよう動作可能な依存性チェック回路を更に有し、
前記１つ以上の制御回路は、前記依存性チェック回路の前記判定と前記有効フラグとに基づいて前記各処理回路の前記転送機能を無効又は有効にするよう動作可能である請求項４に記載の装置。
【請求項７】
前記ステージのそれぞれ１つにおいて、各処理回路にそれぞれ対応する有効フラグを含む有効フラグの各組を記憶するよう動作可能な記憶回路を更に有する請求項１〜６のいずれかの項に記載の装置。
【請求項８】
前記記憶回路は、サイクル毎に、前記有効フラグの組をあるステージから次のステージの処理回路での使用のために転送を行うよう動作可能である請求項７に記載の装置。
【請求項９】
有効フラグの各組は個々のＳＩＭＤ命令に関連付けられている請求項７に記載の装置。
【請求項１０】
前記有効フラグの各組は、
各ＳＩＭＤ命令に含まれており、取り出されて前記記憶回路への転送が行われる、
前記ＳＩＭＤ命令のそれぞれ１つに対応する各ＳＩＭＤ制御命令に含まれており、前記有効フラグが前記ＳＩＭＤ制御命令から生成されて、前記記憶回路への転送が行われる、
前記ＳＩＭＤ命令内に有効フラグが存在しないか、ＳＩＭＤ制御命令がないかの少なくともいずれかの場合、所定のビットの組を選択することによって生成される、
前記ＳＩＭＤ制御命令及び前記ＳＩＭＤ命令のうちの少なくとも１つからデコードされ、所定の有効フラグの組を選択するのに使用される情報に応答して生成される、の少なくともいずれかに該当する請求項７に記載の装置。
【請求項１１】
前記ＳＩＭＤ制御命令は、前記ＳＩＭＤ命令の前、間及び後の少なくともいずれかに処理される請求項１０に記載の装置。
【請求項１２】
所定の有効フラグの組を複数記憶するよう動作可能な記憶回路を更に有し、前記ＳＩＭＤ制御命令及び前記ＳＩＭＤ命令のうちの少なくとも１つからデコードされる前記情報は、前記所定の有効フラグの組のうちの１つを選択するのに使用される請求項１０又は１１に記載の装置。
【請求項１３】
ＳＩＭＤ演算処理パイプラインのデータパス処理回路の一部を無効にするステップを有し、前記処理回路は、所定のサイクルの間、１つ以上の有効フラグに応答するスライス及びステージの行列に編成されている方法。
【請求項１４】
前記無効にするステップは、前記有効フラグの各々１つに応答して前記処理回路を個別に無効にする請求項１３に記載の方法。
【請求項１５】
前記無効にするステップは、前記有効フラグの状態に応答して前記各処理回路にクロック信号を中断させる請求項１３に記載の方法。
【請求項１６】
前記無効にするステップでは、前記有効フラグの関数として、前記各処理回路からのそれぞれのデータ結果が１つ以上のデスティネーションレジスタに書き込まれないようにするか、又は、
前記処理回路からの結果の、前記パイプラインに対し前記１つ以上のソースオペランドへの前記転送を有効にするステップを更に有するか、の少なくともいずれかに該当する請求項１３に記載の方法。
【請求項１７】
前記無効にするステップは、前記処理回路からの前記結果内の未使用のスライスワードの、前記デスティネーションレジスタへの前記書き込みを無効にする、
前記転送を行うステップは、前記処理回路からの前記結果内の使用中のスライスワードの、前記１つ以上のソースオペランドへの前記転送を有効にする、
前記無効にするステップ及び／又は転送を行うステップはサイクル単位で実行される、の少なくともいずれかに該当する請求項１３に記載の方法。
【請求項１８】
前記無効にするステップ及び／又は転送を行うステップは、依存性チェック回路の判定と前記有効フラグとに基づいており、前記依存性チェック回路は、前記パイプラインの前記スライスに入力されようとしている命令のオペランドのいずれかが、前記処理回路の前記データ結果のいずれかに依存しているかどうかを判定するよう動作可能である請求項１３に記載の方法。
【請求項１９】
前記ステージのそれぞれ１つにおいて、各処理回路にそれぞれ対応する有効フラグを含む有効フラグの各組を記憶するステップを更に有する請求項１３〜１８のいずれかの項に記載の方法。
【請求項２０】
サイクル毎に、前記有効フラグの組をあるステージから次のステージの処理回路での使用のために転送を行うステップを更に有する請求項１３〜１９のいずれかの項に記載の方法。
【請求項２１】
有効フラグの各組は個々のＳＩＭＤ命令に関連付けられている請求項２０に記載の方法。
【請求項２２】
各ＳＩＭＤ命令内に前記有効フラグの各組を提供し、記憶するために前記有効フラグを抽出するステップと、
各ＳＩＭＤ制御命令内に前記有効フラグの各組を提供し、各制御命令を前記ＳＩＭＤ命令のそれぞれ１つに関連付け、記憶するために前記ＳＩＭＤ制御命令から前記有効フラグを生成するステップと、
前記ＳＩＭＤ命令内に有効フラグが存在しないか、ＳＩＭＤ制御命令がないかの少なくともいずれかの場合、前記有効フラグの各組を生成するために、前記各ＳＩＭＤ命令をデコードして、所定のビットの組を選択するステップと、
前記ＳＩＭＤ制御命令及び前記ＳＩＭＤ命令のうちの少なくとも１つから情報をデコードして、所定の有効フラグの組を選択するために前記情報を使用するステップと、の少なくとも１つを更に有する請求項２０に記載の方法。
【請求項２３】
処理システムのＳＩＭＤ演算処理パイプラインのデータパス処理回路の一部を無効にするステップを含む動作を前記処理システムに実行させるように動作可能な実行可能プログラムを含み、前記処理回路は、所定のサイクルの間、１つ以上の有効フラグに応答するスライス及びステージの行列に編成されているプログラム。
【請求項２４】
前記無効にするステップは、前記有効フラグの各々１つに応答して前記処理回路を個別に無効にする請求項２３に記載のプログラム。
【請求項２５】
前記無効にするステップは、前記有効フラグの状態に応答して前記各処理回路にクロック信号を中断させる請求項２３に記載のプログラム。
【請求項２６】
前記無効にするステップは、前記有効フラグの関数として、前記各処理回路からのそれぞれのデータ結果が１つ以上のデスティネーションレジスタに書き込まれないようにする、
前記アクションは、前記処理回路からの結果の、前記パイプラインに対し前記１つ以上のソースオペランドへの前記転送を有効にするステップを更に有する、の少なくともいずれかに該当する請求項２３に記載のプログラム。
【請求項２７】
前記無効にするステップは、前記処理回路からの前記結果内の未使用のスライスワードの、前記デスティネーションレジスタへの前記書き込みを無効にする、
前記転送を行うステップは、前記処理回路からの前記結果内の使用中のスライスワードの、前記１つ以上のソースオペランドへの前記転送を有効にする、
前記無効にするステップ及び／又は転送を行うステップはサイクル単位で実行される、の少なくともいずれかに該当する請求項２６に記載のプログラム。
【請求項２８】
請求項２３〜２７のいずれかの項に記載のプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【請求項２９】
スライス及びステージの行列に編成されている複数のデータパス処理回路を有するＳＩＭＤ演算処理パイプラインと、
所定のサイクルの間、１つ以上の有効フラグに応答して、前記処理回路からの結果の、前記パイプラインに対し１つ以上のソースオペランドへの前記転送を、有効又は無効にするよう動作可能な転送回路と、を有する装置。
【請求項３０】
前記転送回路は、前記結果内の使用中のスライスワードの、前記処理回路から前記１つ以上のソースオペランドへの転送を有効にするよう動作可能である、
前記転送回路は、前記結果内の未使用のスライスワードの、前記処理回路から前記１つ以上のソースオペランドへの前記転送を無効にするよう動作可能である、
前記転送回路は、前記有効及び／又は無効にする機能をスライス単位で実行するよう動作可能である、
前記転送回路は、前記有効及び／又は無効にする機能をサイクル単位で実行するよう動作可能である、の少なくともいずれかに該当する請求項２９に記載の装置。
【請求項３１】
前記パイプラインの前記スライスに入力されようとしている命令のオペランドのいずれかが、前記処理回路の前記データ結果のいずれかに依存しているかどうかを判定するよう動作可能な依存性チェック回路を更に有し、
前記転送回路は、前記依存性チェック回路の前記判定と前記有効フラグとに基づいて前記各処理回路の前記転送機能を無効又は有効にするよう動作可能である請求項２９に記載の装置。
【請求項３２】
有効フラグの各組は個々のＳＩＭＤ命令に関連付けられている請求項２９〜３１のいずれかの項に記載の装置。
【請求項３３】
前記有効フラグの各組は、
各ＳＩＭＤ命令に含まれており、取り出されて前記記憶回路に転送がなされる、
前記ＳＩＭＤ命令のそれぞれ１つに対応する各ＳＩＭＤ制御命令に含まれており、前記有効フラグが前記ＳＩＭＤ制御命令から生成されて、前記記憶回路に転送がなされる、
前記ＳＩＭＤ命令内に有効フラグが存在しないか、ＳＩＭＤ制御命令がないかの少なくともいずれかの場合、所定のビットの組を選択することによって生成される、
前記ＳＩＭＤ制御命令及び前記ＳＩＭＤ命令のうちの少なくとも１つからデコードされ、所定の有効フラグの組を選択するのに使用される情報に応答して生成される、の少なくともいずれかに該当する請求項２９〜３２に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一命令複数データ（ＳＩＭＤ：single instruction, multiple data）プロセッシングパイプラインを制御するための方法ならびに装置に関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションは、リアルタイムのマルチメディア機能を伴っているために、近年はデータスループットが高くより高速なコンピュータが常に望まれている。グラフィックアプリケーションは、処理システムへの要求が大きいアプリケーションの１つであり、その理由は、グラフィックアプリケーションが所望のビジュアル結果を実現するために、比較的短時間で非常に多くのデータアクセス、データの演算処理、及びデータ操作を要求するからである。これらのアプリケーションは、１秒間に数千メガビットのデータ処理等の非常に高速な処理速度を要求する。シングルプロセッサを採用し、高速の処理速度を実現している処理システムもある一方で、マルチプロセッサアーキテクチャを利用して実装されている処理システムもある。マルチプロセッサシステムでは、複数のプロセッサが並列に（あるいは少なくとも協調して）動作し、所望の処理結果を実現することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
レイテンシの異なるデータパスの影響を受けやすいパイプラインの深いＳＩＭＤプロセッサでは、スカラーオペレーションとベクトル（ＳＩＭＤ）オペレーションが存在することで、データ依存性チェックが複雑化する場合がある。ＳＩＭＤプロセッサは、多数のオペレーション及び／又は命令を実行でき、これらオペレーションや命令のそれぞれのレイテンシは異なったものとなる場合もある。例えば、Ｉｎｔｅｌ  ＩＡ-３２のＳＳＥ命令セットでは、スカラー演算／オペレーションとＳＩＭＤ演算／オペレーションとでは用いる命令が異なる。スカラーオペレーションでは、同じレジスタを使用するが、常に同じスライスを使用する。デスティネーションレジスタの未使用のスライスワードを変更してはならない場合、適切なパイプライン操作とデータ転送が極めて複雑になる。
【０００４】
また、ＳＩＭＤプロセッサは複数のステージを有しており、各ステージが同時に当該ステージのオペレーションを実行し、その結果をデスティネーションレジスタに格納しようとすることがある。デスティネーションレジスタは共通しているが、未使用のスライスが異なるオペレーションがパイプライン内に２つ以上ある場合、データ依存性チェックは一層複雑になる。ライトアフターライト（ＷＡＷ）の依存性又はリードアフターライト（ＲＡＷ）の依存性が発生すると、ストール条件が悪化する可能性がある。ＲＡＷの依存性は、スライス毎に依存性が変わってくるので特に問題となる。
【０００５】
未使用のスライスの依存性チェックに伴う複雑さは、発行しようとしている命令（ソースレジスタなど）のデスティネーションレジスタ（オペランド）を読み出して、未使用のスライスのデータを変更せずにパイプライン処理することによって解消できる。しかし、この方法では、デスティネーションレジスタを読み出すための追加のハードウェアが必要となるほか、ストールの増大を招く可能性がある。この理由は、デスティネーションオペランド（ソースオペランドのみでなく）がＲＡＷの依存性を有する可能性があるためである。更に、未使用のスライスのデータを変更せずにパイプライン処理すると、省電力の実現が難しくなる。
【０００６】
未使用のスライスの依存性チェックに伴う複雑さを解消しうる別の方法では、命令の発行を、パイプライン内の（同じデスティネーションレジスタを有する）大半のオペレーションがライトバックステージを完了するのに十分な時間だけ遅延すなわちストールさせる。しかし、この方法は性能の著しい低下を招きかねない。
【課題を解決するための手段】
【０００７】
本発明の１つ以上の実施形態によれば、性能（レイテンシ及び／又はスループットなど）の低下を招くことなく、ＳＩＭＤスライスを個別に有効及び無効にできる柔軟性が得られる。この機能は、好ましくは有効フラグによって提供される。有効フラグを実装可能な方法には、以下のように数多くの方法がある。（ｉ）有効フラグを各ＳＩＭＤ命令に埋め込む。（ｉｉ）有効フラグを、各ＳＩＭＤ命令の前か後に追加されるプリフィクス制御命令又はサフィックス制御命令によって指定する（プリフィクス／サフィックス制御命令がなければ、全てのスライスが有効になる）。（ｉｉｉ）有効フラグの組を記憶する制御レジスタを設ける（フラグは、命令に埋め込まれたコード又はプリフィクス／サフィックス制御命令を使用して選択され、ロード命令又は転送命令により動的に変更される）。（ｉｖ）上記の方法の組合せ。
【０００８】
有効フラグを使用してＳＩＭＤスライスへのクロック信号を制御することにより、省電力を実現することができる。データ転送は、次のようにして実現されうる。依存性チェックユニットが、発行しようとしている命令のソースレジスタと、各パイプラインステージにあるオペレーションのデスティネーションレジスタの間のデータ依存性を検出する。依存性が存在し、結果がまだ生成されていない場合、命令の発行がストールされる。依存性があり、結果が既に生成されている場合、発行しようとしている命令のオペランドにその結果が転送される。しかし、ストールを回避するため、結果の転送は、好ましくは各スライスについて個別に制御される。
【０００９】
本発明の１つ以上の実施形態によれば、方法ならびに装置は、ＳＩＭＤ演算処理パイプラインのデータパス処理回路の少なくとも一部を無効にし、前記処理回路は、所定のサイクルの間、１つ以上の有効フラグに応答するスライス及びステージの行列に編成されている。好ましくは、前記無効にするステップは、前記有効フラグの各々１つに応答して前記処理回路を個別に無効にする。
【００１０】
例えば、前記無効にするステップは、前記有効フラグの状態に応答して前記各処理回路にクロック信号を中断させてもよい。
【００１１】
これに代えて、あるいは上記に加えて、前記無効にするステップは、前記各処理回路からのそれぞれのデータ結果が１つ以上のデスティネーションレジスタに書き込まれないようにしてもよい。また、前記処理回路の結果の少なくとも一部を、パイプラインのソースオペランドへ転送することを、前記無効にする特徴に付随させることも考察される。
【００１２】
好ましくは、前記無効にするステップ及び／又は転送を行うステップはサイクル単位で実行される。
【００１３】
依存性チェックにおいては、前記無効にするステップは、好ましくは依存性チェック回路の判定と前記有効フラグとに基づいており、前記依存性チェック回路は、前記パイプラインの前記スライスに入力されようとしている命令のオペランドのいずれかが、前記処理回路の前記データ結果のいずれかに依存しているかどうかを判定するよう動作可能である。
【００１４】
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、特徴及び利点等は当業者に自明となるであろう。
【発明を実施するための最良の形態】
【００１５】
本発明を説明するために、現在の好ましい形態を図面の形式に示すが、本発明は図示したとおりの構成ならびに手段に限定されないことを理解されたい。
【００１６】
図面において、同一の要素は同じ参照符号によって参照される。図１に、本発明の１つ以上の特徴を実行するために適しうる処理システム１００を例示した。簡潔を期すと共に明確になるように、図１のブロック図を装置１００を例示するものとして本明細書において参照かつ記載する。しかし、この記載は同等の効力を有する方法のさまざまな態様に容易に適用できることを理解されたい。
【００１７】
この装置１００は、好ましくはプロセッサ１０２、ローカルメモリ１０４、メインメモリ１０６（ＤＲＡＭなど）及びバス１０８を備える。プロセッサ１０２は、システムメモリ１０６からデータを要求し、このデータを操作して所望の結果を得ることができる公知の技術であればいずれを利用しても実装することができる。例えば、プロセッサ１０２は、標準的なマイクロプロセッサ、分散型マイクロプロセッサなど、ソフトウェア及び／又はファームウェアを実行することができる公知のマイクロプロセッサのいずれかを利用して実装されうる。後述するように、プロセッサ１０２は、好ましくはプロセッシングパイプラインを利用して実装される。例えば、プロセッサ１０２は、グレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報等を含むピクセルデータなどのデータを要求して操作することができるグラフィックプロセッサでありうる。
【００１８】
プロセッサが、システムメモリ１０６ではなくローカルメモリ１０４内にあるプログラムコードを実行するか、あるいはローカルメモリ１０４内にあるデータを操作できるように、ローカルメモリ１０４はプロセッサ１０２の近くに存在する。ローカルメモリ１０４は、従来のハードウェアキャッシュメモリでも、別のものであってもよい。チップ上のスペースには限りがある場合があるため、ローカルメモリ１０４はシステムメモリ１０６よりも相当サイズが小さいことがある。プロセッサ１０２は、好ましくは、プログラムを実行したりデータを操作するために、データアクセスリクエストを出して、バス１０８経由でシステムメモリ１０６からローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーする。データアクセスを容易にするためのメカニズムは、好ましくはメモリインターフェース１１０にあるダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を用いて実装される。
【００１９】
本発明の１つ以上の実施形態によれば、プロセッサ１０２は、（ＭＩＦ１１０経由で）メインメモリ１０６からローカルメモリ１０４に実行可能コードをコピーすることによりソフトウェアプログラムを実行し、ローカルメモリ１０４内でそのソフトウェアプログラムを実行しうる。ローカルメモリ１０４は比較的小容量（２５６ＫＢなど）であるため、（ソフトウェアプログラム全体ではなく）プログラムの一部と、関連するデータをローカルメモリ１０４にコピーさせて、実行させることが望ましいことがある。これには、ローカルメモリへのソフトウェアプログラムの一部分の移動と、プログラムのその一部、関数呼出し等の実行を制御及び管理する何らかのメカニズムが必要となる。
【００２０】
図２を参照すると、ＳＰＵコア（プロセッサ１０２）は、好ましくは、論理命令がパイプライン式で処理される、プロセッシングパイプラインを用いて実装される。パイプラインは、任意の数（図では４つ）のスライスと、命令が処理される任意の数（図では３つ）のステージに分けられうる。一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び命令の実行の各ステップを有している。これに関連して、プロセッサ１０２は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路を有する。
【００２１】
プロセッシングパイプラインは、スライス（スライス０、スライス１、スライス２、スライス３、．．．）とステージ（ステージ０、ステージ１、ステージ２、．．．）の行列に編成された複数のデータパス処理回路１２０から構成されうる。ＳＩＭＤ処理手法によると、スライスは１つ以上のソースレジスタ１２２からデータオペランドを受け取り、このデータをＳＩＭＤ命令に従って処理して、データを操作した結果を１つ以上のデスティネーションレジスタ１２４に書き込む。結果は、処理回路１２０内の演算論理ユニットの構成と、パイプラインで実行中の特定のプログラミング命令とに応じて、パイプラインの特定のステージ（又はその特定のサイクル）においてデスティネーションレジスタ１２４に書き込まれることに留意されたい。特定のステージの結果が用意できている（すなわちオペレーションが完了している）場合、その結果は、レジスタのライトバックステージまでパイプラインの残りのステージを通過する。別の実施形態では、結果が、ライトバックサイクルまで一時的に保持されてもよい。
【００２２】
プロセッサ１０２は、好ましくは、各処理ステージにそれぞれ関連付けられている複数の記憶要素ＥＦ０，ＥＦ１，ＥＦ２，．．．を有する記憶ユニットを備える。この記憶要素は、複数の有効フラグ１２６を保持しており、有効フラグ１２６は最も好ましくは個々の組に編成されている。このため、特定の処理サイクル内で、有効フラグ１２６の各組が、プロセッシングパイプラインのステージの１つに関連付けられている。例えば、ある処理サイクルで、ＥＦ０内の有効フラグ１２６は、プロセッシングパイプラインのステージ０に関連付けられ、ＥＦ１内の有効フラグ１２６はプロセッシングパイプライン１のステージ１に関連付けられ、ＥＦ２内の有効フラグ１２６はプロセッシングパイプラインのステージ２に関連付けられうる。次の処理サイクルでは、ＥＦ２内の有効フラグ１２６は、廃棄されるか（次のステージが存在すれば）次の処理ステージに移動し、ＥＦ１内の有効フラグ１２６はＥＦ２に移動し、ＥＦ０内の有効フラグ１２６はＥＦ１に移動する。下記に更に詳細に後述するように、パイプラインに発行される新しいＳＩＭＤ命令と共に、有効フラグ１２６の新しい組がＥＦ０に入力される。例えば、要素ＥＦ０，ＥＦ１，ＥＦ２，．．．は、パイプラインのあるステージにおいて、スライスの処理回路１２０の各々について１ビット以上の情報を保持可能なハードウェアレジスタ、ラッチ等でありうる。
【００２３】
本発明の１つ以上の実施形態によれば、処理回路１２０の少なくとも一部は、所定のサイクルの間、１つ以上の有効フラグ１２６に応答して、動作を少なくとも部分的に無効にするよう動作可能である。
【００２４】
次に図３を参照するが、これは有効フラグ１２６とプロセッシングパイプラインのスライスとの関係を例示する真理値表である。例えば、ＥＦ０内の有効フラグ１２６が“０，０，０，０”であるとすると、ステージ０のスライス０、スライス１、スライス２及びスライス３内の処理回路１２０は、好ましくはそのサイクルの間、少なくとも部分的に無効にされる。有効フラグ１２６が“０，０，０，１”の場合、ステージ０のスライス３の処理回路１２０は好ましくは有効にされ、このステージのほかの処理回路１２０は好ましくは無効にされる。有効フラグ１２６が“０，０，１，０”の場合、ステージ０のスライス２の処理回路１２０は好ましくは有効にされ、このステージのほかの処理回路１２０は好ましくは無効にされる。同様の関係は、有効フラグ１２６のほかの組合せについても容易に確認することができる。このようにして、処理回路１２０は、対応する有効フラグ１２６によって個別に（少なくとも部分的に）無効にされうる。
【００２５】
図４を参照すると、有効フラグ１２６に応答して処理回路１２０を容易に部分的あるいは完全に無効にするのに適したデジタルハードウェアの適切な実装は数多く存在するが、１つの可能な方式では、処理回路１２０が、所定のサイクルの間、有効フラグ１２６の状態（論理真、論理偽など）に応答して処理回路１２０を容易に部分的あるいは完全に無効にできるようにするディスエーブル端子（又は同等の入力要素）を備えうる。この点では、ＳＩＭＤ演算処理パイプラインは制御論理回路とデータパス論理回路を備えることが好ましい。制御論理回路は、所定の処理回路１２０で実行中のオペレーションの種類に応じた制御信号を１つ以上生成し、その回路１２０の処理挙動を制御する。この制御信号には、処理回路１２０の各種部分のためのクロックゲーティング信号、イネーブル信号などが含まれうる。有効フラグ１２６に基づいて、処理回路１２０を部分的又は完全に無効にするために、制御信号の１つ以上と論理ゲート処理（ＡＮＤ演算など）を行う。別法では、あるいは上記処理に加えて、処理回路１２０は、ゲーテッドクロック入力を有してもよく、この場合、所定のサイクルの間プロセスを無効にするため、有効フラグ１２６により、処理回路１２０に入力されるクロック信号に対するゲートの開閉処理が行われる。これは、有効フラグ１２６と制御信号とに基づくゲート処理を行った結果を、クロック信号によってゲート処理することで行うことができる。
【００２６】
パイプラインのスライスを個別に有効／無効にできることにより、スカラー演算などの特定のオペレーションについて見かけ上のレジスタ数が増加し、所定のステージの各スライスで、比較的少ないＳＩＭＤ命令によって異なるオペレーションを処理できるようになる。
【００２７】
下記に更に詳細に後述するように、有効フラグ１２６は、特定の処理回路１２０が、所定の動作サイクルの間に処理結果をデスティネーションレジスタ１２４に転送を行う機能を有効又は無効にすることができる。
【００２８】
個々の処理回路１２０に対してクロックをゲート処理できることにより、処理スループットに悪影響を与えることなく、大幅な省電力が達成され、有利である。
【００２９】
次に、図５を参照すると、これは有効フラグとＳＩＭＤ命令との関係を例示したブロック図である。好ましくは、有効フラグ１２６の各組は、個々のＳＩＭＤ命令に関連付けられている。図５に示すように、ＳＩＭＤ命令には有効フラグ１２６の組が含まれており、デコード処理時に取り出されうる。有効フラグ１２６は、取り出されると、このＳＩＭＤオペレーションがプロセッシングパイプラインに発行される際に、記憶要素ＥＦ０に転送されうる。その後、このＳＩＭＤ命令に関連付けられている有効フラグ１２６は、好ましくは、後続の処理サイクルの間に後続の記憶要素ＥＦ１、ＥＦ２等に移動する。
【００３０】
図６を参照すると、有効フラグ１２６は、各ＳＩＭＤ命令に対応するＳＩＭＤ制御命令に含まれていてもよい。このＳＩＭＤ制御命令は、ＳＩＭＤ命令に先行することも、ＳＩＭＤ命令に続くこともある（つまり、プリフィクス又はサフィックスとして機能する）。有効フラグ１２６は、デコード処理中に、抽出論理回路を介してＳＩＭＤ制御命令から生成されうる。例えば、ＳＩＭＤ制御命令の一部分に有効フラグ１２６を表す４ビットが含まれることがあり、これがデコード処理中に抽出論理回路に入力される。ＳＩＭＤ制御命令の別の部分が使用され、デコード処理の間、抽出論理回路内でこのビットをアクティブにするか又はゲート処理して有効フラグ１２６が生成されうる。別の実施形態では、ＳＩＭＤ制御命令から有効フラグ１２６を取り出す処理が、本明細書の開示を考慮に入れた当業者が知っている、その他の任意の技術を使用して実現されうる。
【００３１】
図７を参照すると、有効フラグ１２６は、デフォルトビット又はＳＩＭＤ命令からデコードされた情報を受けて作成されてもよい。ＳＩＭＤ命令に有効フラグ１２６が含まれている場合、これが例えば選択論理回路によって選択されうる。一方、ＳＩＭＤ命令に有効フラグ１２６が含まれない場合、デフォルトビット（１，１，１，１など）から有効フラグ１２６が生成されうる。別例では、ＳＩＭＤ命令に対応するＳＩＭＤ制御命令が存在する場合、このＳＩＭＤ制御命令から有効フラグ１２６が取得されてもよい。ＳＩＭＤ命令に有効フラグ１２６が含まれている場合、ＳＩＭＤ命令自体から有効フラグ１２６が取得されうる。有効フラグ１２６が含まれていない場合、デフォルトビットから有効フラグ１２６が取得されうる。
【００３２】
図８を参照すると、有効フラグ１２６は、ＳＩＭＤ制御命令又はＳＩＭＤ命令自体からデコードされ、有効フラグの特定の組１２６Ｎを選択するのに使用される情報を受けて生成されてもよい。例えば、プロセッサ１０２は、有効フラグ１２６の組を複数（組０、組１、組２，．．．，組Ｎなど）格納している制御レジスタを備えうる。制御レジスタ内のこれらの有効フラグ１２６の組は、選択論理回路と連絡しうる。有効フラグ１２６のＮ個の組のうちの１つを選択するため、ＳＩＭＤ制御命令又はＳＩＭＤ命令から取得された情報が選択論理回路に入力されうる。例えば、選択論理回路は、単純なゲート機能又はマルチプレクサ回路であってもよい。
【００３３】
当業者であれば、本明細書の開示を考慮して、上述の技術のいずれか、又はそれらの組合せに従って有効フラグを生成可能なことを理解できるであろう。
【００３４】
次に、図９を参照すると、これは、処理回路１２０から１つ以上のソースオペランドへの、結果内の使用中のスライスワードの転送を有効にする機能を実装するのに適した回路構成の例を例示したブロック図である。本発明のこの実施形態では、プロセッサ１０２は、有効フラグ１２６の関数として、各処理回路１２０から結果内の使用中のスライスワードを１つ以上のソースオペランドへの転送を行うために、転送回路として動作する制御回路１３２及び／又はデータパス回路１３４を備えうる。結果内の未使用のスライスワードの、処理回路１２０からデスティネーションレジスタ１２４への書き込みを無効にする追加の機能も実現できるように、この転送回路は、単独で用いても、図２及び／又は図４の構成と共に用いてもよいことに留意されたい。
【００３５】
制御回路１３２は、好ましくは、有効フラグ１２６と依存性チェック回路１３０からの結果とを受け取る。制御回路１３２は、各スライスのそれぞれに対応する転送制御信号１３６を生成するため、複数のゲートを利用して実装されうる。各転送制御信号１３６は、各スライス専用のデータパス回路１３４の対応する部分に入力される。データパス回路１３４は、有効フラグ１２６の関数として、使用中のスライスワードを１つ以上のソースオペランドに転送を行うよう動作可能である。たとえば、データパス回路１３４の各部分は、１つ以上のマルチプレクサ（又はセレクタ）を利用して実装されてもよく、この場合、各マルチプレクサへの入力（ＩＮ）には、（ｉ）パイプラインの各ステージ（又は少なくとも１つのステージ）からの結果と、（ｉｉ）ソースレジスタ１２２からのデータ、の１つ以上が含まれる。
【００３６】
依存性チェック回路１３０は、パイプラインのスライスに入力されようとしている命令のオペランドのいずれかかが、パイプライン内の処理回路１２０のデータ結果のいずれかに依存しているかどうかを判定するよう動作可能である。ある処理回路１２０の結果に未使用のスライスワードが存在する場合、依存性は偽となり、使用中のスライスワードが存在する場合、依存性は真となる。依存性チェック回路１３０は、プロセッシングパイプラインの各ステージ毎にそれぞれの依存性チェック結果（ステージ０の結果、ステージ１の結果など）を出力する。これらのチェック結果は、偽の依存性を除外して、真の依存性を残すため、好ましくは、各ステージ内で有効フラグ１２６によってゲート処理される。サイクル単位で各スライスについて最も初期のパイプラインステージに存在する最新の有効な（valid）結果を容易に選択できるようにする転送制御信号１３６を生成するため、ゲート処理の結果は、好ましくはスライス論理回路に入力される。
【００３７】
データパス回路１３４（セレクタ又はマルチプレクサなど）は、転送制御信号１３６に基づいて最新の結果を選択して、これを各スライスのソースオペランドに伝送する。１つ以上のスライスに依存性が存在しない場合（真）、ソースレジスタ１２２から読み出されたデータが選択されて、そのスライスのソースオペランドに伝送される。好ましくは、転送回路（制御回路１３２及び／又はデータパス回路１３４）は、スライス単位で（つまり、各スライスについて個別に）データを選択して、これをソースオペランドに容易に送信できるよう動作可能である。
【００３８】
図１０を参照すると、転送回路を使用して、ソースオペランドへの処理結果の転送を制御する方法の例が示される。この例を説明するために、プロセッシングパイプラインに発行しようとしている命令に、プロセッシングパイプライン内の処理回路１２０によって実行中の１つ以上のオペレーションの結果に依存しているオペランドが含まれるとする。この例は、ステージ０、ステージ１、ステージ２及びステージ３において実行中の全てのオペレーションで、同じデスティネーションレジスタが使用されている極めて複雑なデータ依存状況に係わっているとする。
【００３９】
デスティネーションレジスタ１２４の内容は、最初はＡ、Ｂ、Ｃ、Ｄであるとする。ステージ３では、有効フラグは“０，０，０，１”であり、スライス３の処理回路１２０の結果（Ｅ）をデスティネーションレジスタ１２４に書き込むことができる。ステージ２では、有効フラグは“１，０，０，０”であり、スライス０の処理回路１２０の結果（Ｆ）をデスティネーションレジスタ１２４に書き込むことができる。ステージ１では、有効フラグは“０，１，０，０”であり、スライス１の処理回路１２０の結果（Ｇ）をデスティネーションレジスタ１２４に書き込むことができる。ステージ０では、有効フラグは“１，１，０，１”であり、スライス０とスライス１の処理回路１２０の結果（それぞれＨとＩ）をデスティネーションレジスタ１２４に書き込むことができる。
【００４０】
各サイクルが終了すると、各ステージのオペレーション（と有効フラグ）は、次のステージ（すなわち、ステージ０→ステージ１→ステージ２→ステージ３等）に移動する。
【００４１】
有効フラグ１２６に従って、ライトバックステージで、結果内の使用中のスライスワードが、デスティネーションレジスタ１２４に書き込まれる。結果内の未使用のスライスワードは不定であり、ライトバックステージの間にデスティネーションレジスタ１２４に書き込まれることはない。
【００４２】
オペレーションが、これらのステージやこれより早いステージで完了した（すなわち結果の準備ができている）場合、好ましくは次のアクションが実行される。（ｉ）スライス０では、Ｈがステージ０からソースオペランドに転送がなされる。（ｉｉ）スライス１では、Ｉがステージ０からソースオペランドに転送がなされる。（ｉｉｉ）スライス２では、ソースレジスタ１２２からＣが読み出されて、ソースオペランドのために選択される。（ｉｖ）スライス３では、Ｅがステージ３からソースオペランドに転送がなされる。少なくともステージ０及びステージ３のオペレーションが完了しなければ、命令の発行がストールする。ステージ２のスライス０の結果（Ｆ）とステージ１でのスライス１の結果（Ｇ）が転送対象の候補となる。実際には、ステージ０の結果が最新のものであるので、ステージ１とステージ２ではなく、ステージ０のスライス０とスライス１の結果（Ｈ，Ｉ）がソースオペランドに転送がなされる。パイプラインの使用中のスライスをソースオペランドに転送を行い、未使用のスライスの転送を行わないことにより、不必要なストールの発生を防ぐことができる。
【００４３】
図１１は、ここに記載した特徴及び発明の１つ以上の更なる実施形態を実装するのに適しうるマルチプロセシングシステム１００Ａのブロック図である。システム１００Ａは、複数のプロセッサ１０２Ａ〜Ｄ、関連するローカルメモリ１０４Ａ〜Ｄ、及び共有メモリ１０６を備え、これらはバス１０８によって相互に接続されている。共有メモリ１０６は、本明細書において、メインメモリ又はシステムメモリとも呼ばれることがある。例示のため４つのプロセッサ１０２を示したが、本発明の趣旨及び範囲から逸脱することなく、任意の個数のプロセッサを使用することができる。各プロセッサ１０２は構成が同じであっても、構成が異っていてもよい。
【００４４】
ローカルメモリ１０４は、好ましくは、対応するプロセッサ１０２と同じチップ（同じ半導体基板）に配置される。しかし、ローカルメモリ１０４は、ハードウェアキャッシュメモリ機能を実装するためのオンチップ又はオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないという点で、好ましくは従来のハードウェアキャッシュメモリでない。
【００４５】
プロセッサ１０２は、好ましくは、プログラムを実行したりデータを操作するために、バス１０８経由でシステムメモリ１０６から対応するローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするため、データアクセスリクエストを出す。データアクセスを容易にするためのメカニズムは、好ましくは不図示のダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を利用して実装される。各プロセッサのＤＭＡＣは、好ましくは、本発明のその他の特徴に関して前述したものと実質的に同じ機能を有するものである。
【００４６】
適切なシステムメモリ１０６は、好ましくは高帯域メモリ接続（図示せず）を介してプロセッサ１０２に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。好ましくは、システムメモリ１０６はＤＲＡＭであるが、メモリ１０６は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ：Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
【００４７】
各プロセッサ１０２は、好ましくは、論理命令がパイプライン式で処理される、プロセッシングパイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び、命令の実行ステップを有している。これに関連して、プロセッサ１０２は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路、を有する。
【００４８】
１つ以上の実施形態では、プロセッサ１０２とローカルメモリ１０４は共通の半導体基板に配置されうる。１つ以上の更なる実施形態では、共有メモリ１０６も共通の半導体基板に配置されていても、別個に配置されていてもよい。
【００４９】
１つ以上の別の実施形態では、プロセッサ１０２の１つ以上が、メインプロセッサとして動作し、他のプロセッサに動作可能に結合されており、バス１０８経由で共有メモリ１０６に結合可能でありうる。メインプロセッサは、他のプロセッサによるデータの処理をスケジューリングし調整を行う。しかし、他のプロセッサ１０２と異なり、メインプロセッサは、共有メモリ１０６とプロセッサ１０２の１つ以上のローカルメモリ１０４との少なくとも一方から取得したデータをキャッシュすることができるハードウェアキャッシュメモリに結合されてもよい。メインプロセッサは、プログラムを実行したりデータを操作するために、ＤＭＡ法などの公知の技術のいずれかを使用して、バス１０８経由でシステムメモリ１０６からキャッシュメモリにデータ（プログラムデータを含みうる）をコピーするため、データアクセスリクエストを出す。
【００５０】
以下に本明細書で説明している1つ以上の特徴を実行するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。1つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、ＰＣシステム、サーバーシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理、及び／又は分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理は必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザーにリアルタイムの経験をしていると思わせる程速く、１つ以上のネットワークイメージの復元、３Ｄコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
【００５１】
このために、また、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール（あるいはセル）から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、１つ以上のクライアント、サーバー、ＰＣ、モバイルコンピュータ、ゲームマシン、ＰＤＡ、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスから形成されうる。
【００５２】
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫モジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的高速処理が可能になる。 またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能にする。この構造はまた、大きさや処理能力が様々なネットワークのメンバーの構築を単純化し、また、これらのメンバーが処理するアプリケーションの準備を単純化する。
【００５３】
図12を参照すると、基本的な処理モジュールはプロセッサエレメント（ＰＥ）５００である。ＰＥ５００はＩ／Ｏインターフェース５０２、プロセッシングユニット（ＰＵ）５０４、及び複数のサブプロセッシングユニット５０８、すなわち、サブプロセッシングユニット５０８Ａ、サブプロセッシングユニット５０８Ｂ、サブプロセッシングユニット５０８Ｃ、及びサブプロセッシングユニット５０８Ｄを備えている。なお、好適には、ＰＵとしてパワーＰＣ（ＰＰＥ:Power PC Element）を、ＳＰＵとしてシナジスティックプロセッシングエレメント（ＳＰＥ:Synergistic Processing Element）を用いる。ローカル（あるいは内部）ＰＥバス５１２は、データ及びアプリケーションを、ＰＵ５０４、サブプロセッシングユニット５０８、及びメモリインターフェース５１１間に送信する。ローカルＰＥバス５１２は、例えば従来のアーキテクチャを備えることができ、又は、パケット−スイッチネットワークとして実装されうる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるものの、利用可能な帯域幅を増やす。
【００５４】
ＰＥ５００はデジタル論理回路を実装するよう様々な方法を用いて構成されうる。しかしながら、好ましくは、ＰＥ５００はＳＯＩ基板を用いた集積回路として構成でき、あるいは、シリコン基板に相補性金属酸化膜半導体（ＣＭＯＳ：Complementary Metal Oxide Semiconductor）を用いた単一の集積回路とすることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミウムヒ素、及び、様々なドーパントを採用している他の、いわゆる、ＩＩＩ−Ｂ化合物を含む。ＰＥ５００はまた、高速単一磁束量子（ＲＳＦＱ：Rapid Single-flux-Quantum）論理回路などの超電導デバイスを用いて実装されうる。
【００５５】
ＰＥ５００は高帯域のメモリ接続５１６を介して、共有（メイン）メモリ５１４と密接に結合するよう構成できる。なお、メモリ５１４をオンチップ化してもよい。好ましくは、メモリ５１４はダイナミックランダムアクセスメモリ（ＤＲＡＭ：Dynamic Random Access Memory）であるが、メモリ５１４は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ：Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
【００５６】
ＰＵ５０４とサブプロセッシングユニット５０８は好ましくは、それぞれダイレクトメモリアクセス（ＤＭＡ）の機能を備えたメモリフローコントローラ（ＭＦＣ：Memory Flow Controller）と結合されており、該コントローラはメモリインターフェース５１１と共に、ＰＥ５００のＤＲＡＭ５１４とサブプロセッシングユニット５０８、ＰＵ５０４間のデータ転送を促進する。ＤＭＡＣ及び／又はメモリインターフェース５１１は、サブプロセッシングユニット５０８及びＰＵ５０４に一体化して、別個に配置されうる。更に、ＤＭＡＣの機能及び／又はメモリインターフェース５１１の機能は、１つ以上の（好ましくは全ての）サブプロセッシングユニット５０８及びＰＵ５０４に統合することができる。また、ＤＲＡＭ５１４はＰＥ５００と統合されていても、別個に配置されていてもよいことに留意されたい。例えば、ＤＲＡＭ５１４は、実例で示しているように、チップ外に配置しても、あるいは一体化してオンチップ配置としてもよい。
【００５７】
ＰＵ５０４はデータ及びアプリケーションをスタンドアローン処理できる標準プロセッサなどでありうる。作動時、ＰＵ５０４は、好ましくは、サブプロセッシングユニットによるデータ及びアプリケーション処理をスケジューリングし、調整を行う。サブプロセッシングユニットは好ましくは、単一命令複数データ（ＳＩＭＤ：Single Instruction Multiple Data）プロセッサである。ＰＵ５０４の管理下、サブプロセッシングユニットは並列で、かつ独立して、これらのデータ及びアプリケーション処理を行う。ＰＵ５０４は好ましくは、ＲＩＳＣ（Reduced Instruction Set Computing）技術を採用しているマイクロプロセッサアーキテクチャであるパワーＰＣ（ＰｏｗｅｒＰＣ）コアを用いて実装される。ＲＩＳＣは、単純な命令の組合せを用いて、より複雑な命令を実行する。従って、プロセッサのタイミングは、単純で高速の動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
【００５８】
ＰＵ５０４はサブプロセッシングユニット５０８により、データ及びアプリケーション処理をスケジューリングし調整を行う、メインプロセッシングユニットの役割を果たしているサブプロセッシングユニット５０８のうちの、１つのサブプロセッシングユニットにより実装されうる。更に、プロセッサエレメント５００内には１つ以上の実装されたＰＵが存在しうる。なお、オンチップのＰＵを複数設けるようにしてもよい。
【００５９】
本モジュール構造によれば、特定のコンピュータシステムにおけるＰＥ５００の数は、そのシステムが要求する処理能力に基づく。例えば、サーバーにおけるＰＥ５００の数は４、ワークステーションにおけるＰＥ５００の数は２、ＰＤＡにおけるＰＥ５００の数は１とすることができる。特定のソフトウェアセルの処理に割当てられるＰＥ５００のサブプロセッシングユニット数は、セル内のプログラムやデータの複雑度や規模により決定される。
【００６０】
図１３は、サブプロセッシングユニット（ＳＰＵ）５０８の好ましい構造および機能を例示した。ＳＰＵ５０８アーキテクチャは好ましくは、多目的プロセッサ（平均して高性能を広範なアプリケーションに実現するように設計されているもの）と、特殊目的プロセッサ（高性能を単一のアプリケーションに実現するように設計されているもの）間の間隙を埋める。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマーに高度な制御を提供するように設計される。ＳＰＵ５０８は、グラフィックジオメトリーパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリームプロセッシング、ＭＰＥＧのエンコード／デコード、エンクリプション、デクリプション、デバイスドライバの拡張、モデリング、ゲーム物理学、コンテンツ制作、音響合成及び処理が可能である。
【００６１】
サブプロセッシングユニット５０８は２つの基本機能ユニットを有し、それらはＳＰＵコア５１０Ａ及びメモリフローコントローラ（ＭＦＣ）５１０Ｂである。ＳＰＵコア５１０Ａはプログラムの実行、データ操作、などを行い、一方でＭＦＣ５１０ＢはシステムのＳＰＵコア５１０ＡとＤＲＡＭ５１４の間のデータ転送に関連する関数を実施する。
【００６２】
ＳＰＵコア５１０Ａはローカルメモリ５５０、命令ユニット（ＩＵ：Instruction Unit）５５２、レジスタ５５４、１つ以上の浮動小数点実行ステージ５５６、及び１つ以上の固定小数点実行ステージ５５８を有している。ローカルメモリ５５０は好ましくは、ＳＲＡＭなどの、シングルポートのランダムメモリアクセスを用いて実装される。殆どのプロセッサはキャッシュの導入により、メモリへのレイテンシを小さくする一方で、ＳＰＵコア５１０Ａはキャッシュより小さいローカルメモリ５５０を実装している。更に、リアルタイムアプリケーション（及び本明細書に述べているように、他のアプリケーション）のプログラマーたちに一貫した、予測可能なメモリアクセスレイテンシを提供するため、ＳＰＵ５０８Ａ内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット／ミスという特徴のために、数サイクルから数百サイクルまでの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましい、アクセス時間の予測可能性が低下する。ＤＭＡ転送をデータの演算処理にオーバーラップさせることで、ローカルメモリＳＲＡＭ５５０においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。ＤＭＡの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスにサービスしているレイテンシのオーバーヘッドを超過していることから、ＤＭＡの転送サイズが十分に大きく、十分に予測可能な場合（例えば、データが必要とされる前にＤＭＡコマンドが発行される場合）に、このＳＲＡＭのローカルメモリ手法による利点が得られる。
【００６３】
サブプロセッシングユニット５０８のうちの、所定の１つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ５５０を参照する。 しかしながら、ローカルメモリ５５０のそれぞれの場所はまた、システムのメモリマップ全体内に実アドレス（ＲＡ：Real Address）も割当てられる。これにより、プリビレッジソフトウェア（Privilege Software）はローカルメモリ５５０をプロセスの有効アドレス（ＥＡ：Effective Address）にマッピングする、ローカルメモリ５５０と別のローカルメモリ５５０間のＤＭＡ転送を促進する。ＰＵ５０４はまた、有効アドレスを用いてローカルメモリ５５０に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ５５０は５５６キロバイトのストレージを有し、またレジスタ５５２の容量は１２８×１２８ビットである。
【００６４】
ＳＰＵコア５０４Ａは、好ましくは、論理命令がパイプライン式で処理される、プロセッシングパイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び、命令の実行ステップを有している。これに関連して、ＩＵ５５２は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路、を有する。
【００６５】
命令バッファは、好ましくは、ローカルメモリ５５０と結合され、また、フェッチされる際に一時的に命令を格納するよう動作できる、複数のレジスタを備えている。命令バッファは好ましくは、全ての命令が一つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファはいずれの大きさでありうるが、好ましくは、２あるいは３レジスタよりは大きくないサイズである。
【００６６】
一般に、デコード回路は命令を壊し、対応する命令の関数を実施する論理的マイクロオペレーションを生成する。例えば、論理的マイクロオペレーションは、算術論理演算、ローカルメモリ５５０へのロード及びストアオペレーション、レジスタソースオペランド、及び／又は即値データオペランドを特定しうる。デコード回路はまた、ターゲットレジスタアドレス、構造リソース、機能ユニット、及び／又はバスなど、命令がどのリソースを使用するかを示しうる。デコード回路はまた、リソースが要求される命令パイプラインステージを例示した情報を与えることができる。命令デコード回路は好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
【００６７】
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために試験を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが（例えば、他の命令が実行の完了を許容することにより）アップデートされるまで、実行されることができない。依存性チェック回路は好ましくは、デコーダー回路１１２から同時に送られる複数の命令の依存性を判断する。
【００６８】
命令発行回路は浮動小数点実行ステージ５５６、及び／または固定小数点実行ステージ５５８へ命令を発行するように動作することができる。
【００６９】
レジスタ５５４は好ましくは、１２８エントリのレジスタファイルなどの、相対的に大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するよう、レジスタリネーミングを必要としない、深くパイプライン化された高周波数の実装品が可能になる。一般に、リネーミング用ハードウェアは、処理システムのかなりの割合の領域と電力を消費する。その結果、ソフトウェアのループ展開、又は他のインターリーブ技術によりレイテンシがカバーされると、最新のオペレーションが実現されうる。
【００７０】
好ましくは、ＳＰＵコア５１０Ａはスーパースカラアーキテクチャであり、これにより１つ以上の命令がクロックサイクル毎に発行される。ＳＰＵコア５１０Ａは好ましくは、命令バッファから送られる同時命令の数、例えば２〜３命令（各クロックサイクル毎に２命令あるいは３命令が発行されることを意味する）に対応する程度まで、スーパースカラとして動作する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ５５６と、固定小数点実行ステージ５５８が採用される。好ましい実施形態では、浮動小数点実行ステージ５５６は１秒あたり３２０億の浮動小数点演算速度で演算し（３２ＧＦＬＯＰＳ）、また、固定小数点実行ステージ５５８は演算速度が１秒あたり３２０億回（３２ＧＯＰＳ）となっている。
【００７１】
ＭＦＣ５１０Ｂは、好ましくは、バスインターフェースユニット（ＢＩＵ：Bus Interface Unit）５６４、メモリ管理ユニット（ＭＭＵ：Memory Management Unit）５６２、及びダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）５６０を備えている。ＤＭＡＣ５６０は例外として、ＭＦＣ５１０Ｂは好ましくは、低電力化設計とするため、ＳＰＵコア５１０Ａやバス５１２と比べて半分の周波数で（半分の速度で）実行する。ＭＦＣ５１０Ｂはバス５１２からＳＰＵ５０８に入力されるデータや命令を処理するように動作することができ、ＤＭＡＣに対しアドレス変換を行い、また、データコヒーレンシーに対しスヌープオペレーションを提供する。ＢＩＵ５６４はバス５１２とＭＭＵ５６２及びＤＭＡＣ５６０間にインターフェースを提供する。従って、ＳＰＵ５０８（ＳＰＵコア５１０Ａ及びＭＦＣ５１０Ｂを含む）及びＤＭＡＣ５６０は、バス５１２と物理的に、及び／又は論理的に結合されている。
【００７２】
ＭＭＵ５６２は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、ＭＭＵ５６２は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかしながら下位のアドレスビットは好ましくは変換不能であり、また、実アドレスの形成及びメモリへのアクセスリクエストに使用する場合には、ともに論理的及び物理的なものと考えられる。１つ以上の実施形態では、ＭＭＵ５６２は、６４ビットのメモリ管理モデルに基づいて実装され、また、４Ｋ−、６４Ｋ−、１Ｍ−、及び１６Ｍ−バイトのページサイズを有する２６４バイトの有効アドレススペースと、２５６ＭＢのセグメントサイズを提供しうる。ＭＭＵ５６２は好ましくは、ＤＭＡコマンドに対し、２６５バイトまでの仮想メモリ、２４２バイト（４テラバイト）までの物理メモリをサポートするように動作することができる。ＭＭＵ５６２のハードウェアは、８−エントリでフルアソシエイティブのＳＬＢと、２５６−エントリと、４ウエイセットアソシエイティブのＴＬＢと、ＴＬＢに対してハードウェアＴＬＢのミスハンドリングに使用される４×４リプレースメント管理テーブル（ＲＭＴ：Replacement Management Table）と、を含む。
【００７３】
ＤＭＡＣ５６０は、好ましくは、ＳＰＵコア５１０Ａや、ＰＵ５０４、及び／又は他のＳＰＵなどの、１つ以上の他のデバイスからのＤＭＡコマンドを管理するように動作することができる。ＤＭＡコマンドには３つのカテゴリが存在し、それらは、プットコマンド、ゲットコマンド、及びストレージ制御コマンドである。 プットコマンドは、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるよう動作する。 ゲットコマンドは、共有メモリ５１４からローカルメモリ５５０へデータを移動させるよう動作する。 また、ストレージ制御コマンドには、ＳＬＩコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド(atomic command)、信号送信コマンド、及び専用バリアコマンドを有しうる。ＤＭＡコマンドに応答して、ＭＭＵ５６２は有効アドレスを実アドレスに変換し、実アドレスはＢＩＵ５６４へ送られる。
【００７４】
ＳＰＵコア５１０Ａは、好ましくは、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどを送る）するために、チャネルインターフェース及びデータインターフェースを使用する。ＳＰＵコア５１０Ａはチャネルインターフェースを介して、ＤＭＡＣ５６０のＤＭＡキューへＤＭＡコマンドを送る。ＤＭＡコマンドがＤＭＡキューに存在すると、そのコマンドはＤＭＡＣ５６０内の発行及び完了論理により処理される。ＤＭＡコマンドに対する全てのバストランザクションが終了すると、完了信号がチャネルインターフェースを越えて、ＳＰＵコア５１０Ａへ送られる。
【００７５】
図14はＰＵ５０４の一般的な構造及び機能を例示している。ＰＵ５０４は２つの機能ユニットを有しており、それらはＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂである。ＰＵコア５０４Ａは、プログラム実行、データ操作、マルチプロセッサマネージメント関数などを実施し、一方でＭＦＣ５０４Ｂはシステム１００のＰＵコア５０４Ａとメモリスペース間のデータ転送に関連する機能を実行する。
【００７６】
ＰＵコア５０４ＡはＬ１キャッシュ５７０、命令ユニット５７２、レジスタ５７４、１つ以上の浮動小数点実行ステージ５７６、及び１つ以上の固定小数点実行ステージ５７８を有することができる。Ｌ１キャッシュは、共有メモリ１０６、プロセッサ１０２、又はＭＦＣ５０４Ｂを介してメモリスペースの他の部分、から受信したデータに対するデータキャッシングの機能を提供する。ＰＵコア５０４Ａが好ましくはスーパーパイプラインとして実装されるので、命令ユニット５７２は好ましくは、フェッチ、デコード、依存性チェック、発行、などを含む、多くのステージを備えた命令パイプラインとして実装される。ＰＵコア５０４はまた好ましくは、スーパースカラ構成であり、一方で１つ以上の命令がクロックサイクル毎に命令ユニット５７２から発行される。高度な処理（演算）能力を実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成で複数のステージを有する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ５７６と、固定小数点実行ステージ５７８が採用される。
【００７７】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０、Ｌ２キャッシュメモリ、キャッシュ不可能なユニット（ＮＣＵ：Non-Cachable Unit）５８４、コアインターフェースユニット（ＣＩＵ：Core Interface Unit）５８６、及びメモリ管理ユニット（ＭＭＵ）５８８を備えている。殆どのＭＦＣ５０４Ｂは、低電力化設計とするために、ＰＵコア５０４Ａとバス１０８と比べて、半分の周波数（半分の速度）で実行する。
【００７８】
ＢＩＵ５８０はバス１０８とＬ２キャッシュ５８２とＮＣＵ５８４論理ブロック間にインターフェースを提供する。このために、ＢＩＵ５８０はバス１０８上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、ＢＩＵ５８０はＬ２キャッシュ５８２とＮＣＵ５８４のために機能するため、バス１０８へロード／ストアリクエストを供給する。ＢＩＵ５８０はまた、バス１０８へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス１０８のデータオペレーションは、８ビート要するように設計され、そのために、ＢＩＵ５８０は好ましくは１２８バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は１２８ＫＢである。
【００７９】
Ｌ２キャッシュメモリ５８２（及びサポートハードウェア論理回路）は、好ましくは、５１２ＫＢのデータをキャッシュするように設計されている。例えば、Ｌ２キャッシュ５８２はキャッシュ可能なロード／ストア、データプリフェッチ、命令プリフェッチ、命令プリフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。Ｌ２キャッシュ５８２は好ましくは８ウエイのセットアソシエイティブシステムである。Ｌ２キャッシュ５８２は６つのキャストアウトキュー（６つのＲＣマシンなど）と一致する６つのリロードキューと、８つ（６４バイト幅）のストアキューを備えうる。Ｌ２キャッシュ５８２はＬ１キャッシュ５７０において、一部の、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に状態を回復するのに便利である。この構成により、Ｌ１キャッシュ５７０が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる（リクエストがＬ２キャッシュ５８２でストップしうるため）。この構成はまた、キャッシュコヒーレンシー管理をＬ２キャッシュメモリ５８２へ送るための機構も提供しうる。
【００８０】
ＮＣＵ５８４は、ＣＩＵ５８６、Ｌ２キャッシュメモリ５８２、及びＢＩＵ５８０と連動しており、通常は、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング／バッファリング回路として機能する。ＮＣＵ５８４は好ましくは、キャッシュ抑制ロード／ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、Ｌ２キャッシュ５８２により処理されないＰＵコア５０４Ａとの全ての通信を処理する。ＮＣＵ５８４は好ましくは、上述の低電力化目的を満たすように、半分の速度で実行されうる。
【００８１】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａの境界に配置され、実行ステージ５７６、５７８、命令ユニット５７２、及びＭＭＵユニット５８８からのリクエストに対し、また、Ｌ２キャッシュ５８２及びＮＣＵ５８４へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。ＰＵコア５０４Ａ及びＭＭＵ５８８は好ましくはフルスピードで実行され、一方でＬ２キャッシュ５８２及びＮＣＵ５８４は２：１の速度比で動作することができる。従って、周波数の境界がＣＩＵ５８６に存在し、その機能の一つは、２つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
【００８２】
ＣＩＵ５８６は３つの機能ブロックを有しており、それらは、ロードユニット、ストアユニット、及びリロードユニットである。更に、データプリフェッチ関数がＣＩＵ５８６により実施され、また好ましくは、ロードユニットの機能部である。ＣＩＵ５８６は、好ましくは、（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロード及びストアリクエストを受ける、 （ｉｉ）フルスピードのクロック周波数をハーフスピードに変換する（２：１のクロック周波数変換）、（ｉｉｉ）キャッシュ可能なリクエストをＬ２キャッシュ５８２へ送り、キャッシュ不可能なリクエストをＮＣＵ５８４へ送る、（ｉｖ）Ｌ２キャッシュ５８２に対するリクエストとＮＣＵ５８４に対するリクエストを公正に調停する、（ｖ）ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、Ｌ２キャッシュ５８２とＮＣＵ５８４に対する転送のフロー制御を提供する、（ｖｉ）ロードリターンデータを受信し、そのデータを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、（ｖｉｉ）スヌープリクエストを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、ように動作可能である。
【００８３】
ＭＭＵ５８８は、好ましくはＰＵコア５４０Ａに対して、第２レベルのアドレス変換機能などによりアドレス変換を行う。第１レベルの変換は好ましくは、ＭＭＵ５８８よりも小型で高速でありうる、別々の命令及びデータＥＲＡＴ（Effective to Real Address Translation）アレイにより、ＰＵコア５０４Ａにおいて提供されうる。
【００８４】
好ましい実施形態では、ＰＵコア５０４は、６４ビットの実装品で、４−６ＧＨｚ、１０Ｆ０４で動作する。レジスタは好ましくは６４ビット長（１つ以上の特殊用途のレジスタは小型でありうるが）であり、また、有効アドレスは６４ビット長である。命令ユニット５７２、レジスタ５７４、及び実行ステージ５７６と５７８は好ましくは、（ＲＩＳＣ）演算技術を実現するために、ＰｏｗｅｒＰＣステージ技術を用いて実装される。
【００８５】
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第６，５２６，４９１号に解説されており、該特許は参照として本願に組込まれる。
【００８６】
本発明の少なくとも１つの更なる態様によれば、上述の方法及び装置は、図面において例示しているような、適切なハードウェアを利用して実現されうる。そのようなハードウェアは標準デジタル回路などのいずれの従来技術、ソフトウェア、及び／又はファームウエアプログラムを実行するよう動作できるいずれの従来のプロセッサ、プログラム可能なＲＯＭ（ＰＲＯＭ）、プログラム可能なアレイ論理デバイス（ＰＡＬ：Programmable Array Logic）などの、１つ以上のプログラム可能なデジタルデバイスあるいはシステム、を用いて実装されうる。更に、図示している装置は、特定の機能ブロックに分割されて示されているが、そのようなブロックは別々の回路を用いて、及び／あるいは１つ以上の機能ユニットに組み合わせて実装されうる。更に、本発明の様々な態様は、輸送及び／又は配布のために、（フレキシブルディスク、メモリチップ、などの）適切な記憶媒体に格納されうる、ソフトウェア、及び／又はファームウエアプログラムを通じて実装されうる。
【００８７】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理及び用途の例を例示したものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨及び範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【００８８】
【図１】本発明の本発明の１つ以上の更なる態様により適しうる処理システムの構造を例示したブロック図。
【図２】図１及び／又はここに記載の他の実施形態の処理システムに使用するために適したＳＩＭＤ演算処理パイプラインを例示したブロック図。
【図３】有効フラグと、図２及び／又はここに記載の他の実施形態のプロセッシングパイプラインの動作との関係を例示した真理値表の図。
【図４】図１及び／又はここに記載した別の実施形態の処理システムに使用するために適した別の実施形態によるＳＩＭＤ演算処理パイプラインを例示したブロック図。
【図５】有効／無効情報を含むＳＩＭＤ命令をデコードすることによって有効フラグを得る（invoke）ことができることを例示したブロック図。
【図６】ＳＩＭＤ命令に対応し、有効／無効情報を含むＳＩＭＤ制御命令をデコードすることによって有効フラグを得ることができることを例示したブロック図。
【図７】ＳＩＭＤ制御命令をデコードして、その中に含まれている有効／無効情報を使用して所定のビットを選択及び／又は変更することによって有効フラグを得ることができることを例示したブロック図。
【図８】ＳＩＭＤ制御命令をデコードして、その中に含まれている有効／無効情報を使用して所定のビットを選択することによって有効フラグを得ることができることを例示したブロック図。
【図９】図１及び／又はここに記載した別の実施形態の処理システムに使用するために適した転送回路を例示したブロック図。
【図１０】有効フラグと図９及び／又はここに記載した別の実施形態の転送回路を使用して制御された、デスティネーションレジスタ及び転送オペランドの内容を例示したテーブル。
【図１１】本発明の１つ以上の態様により適しうるサブプロセッサを２つ以上有するマルチプロセシングシステムの構造を例示した説明図。
【図１２】本発明の１つ以上の更なる態様の実装に使用されうる好適なプロセッサエレメント（ＰＥ）を例示した説明図。
【図１３】本発明の１つ以上の更なる態様により適しうる、図１２の一般的なサブプロセッシングユニット（ＳＰＵ）の構造を例示した説明図。
【図１４】本発明の１つ以上の更なる態様により適しうる、図１２の一般的なプロセッシングユニット（ＰＵ）の構造を例示した説明図。
【符号の説明】
【００８９】
１００  処理システム
１００Ａ  マルチプロセシングシステム
１０２  プロセッサ
１０４  ローカルメモリ
１０６  共有メモリ
１０８  バス
１１０  メモリインターフェース
１１２  デコーダー回路
１２０  データパス処理回路
１２２  ソースレジスタ
１２４  デスティネーションレジスタ
１２６  有効フラグ
１３０  依存性チェック回路
１３２  制御回路
１３４  データパス回路
１３６  転送制御信号
５００  プロセッサエレメント
５０２  インターフェース
５０４  コア
５０８  サブプロセッシングユニット
５１０Ａ、５４０Ａ  コア
５１１  メモリインターフェース
５１２  バス
５１４  メモリ
５１４  共有メモリ
５１６  メモリ接続
５５０  ローカルメモリ
５５２、５５４  レジスタ
５５６  浮動小数点実行ステージ
５５８  固定小数点実行ステージ
５７０  キャッシュ
５７２  命令ユニット
５７４  レジスタ
５７６  浮動小数点実行ステージ
５７８  固定小数点実行ステージ
５８２  キャッシュメモリ
ＥＦ０、ＥＦ１、ＥＦ２、ＥＦ３  有効フラグ
【図１】
2006196004.tif 000003
【図２】
2006196004.tif 000004
【図３】
2006196004.tif 000005
【図４】
2006196004.tif 000006
【図５】
2006196004.tif 000007
【図６】
2006196004.tif 000008
【図７】
2006196004.tif 000009
【図８】
2006196004.tif 000010
【図９】
2006196004.tif 000011
【図１０】
2006196004.tif 000012
【図１１】
2006196004.tif 000013
【図１２】
2006196004.tif 000014
【図１３】
2006196004.tif 000015
【図１４】
2006196004.tif 000016