(57)【要約】【課題】ベクトル処理用の拡張可能な並列パイプライン浮動小数点数演算ユニットを提供する。【解決手段】本発明の一実施形態は、ベクトル処理用の浮動小数点数演算を実行する技術である。入力待ち行列は複数のベクトル入力を捕獲する。スケジューラはベクトル入力をディスパッチする。複数の浮動小数点数演算（ＦＰ）パイプラインは、スケジューラがディスパッチしたベクトル入力のスカラー成分に対して演算を行うことにより得られるＦＰ結果を生成する。アービター／アセンブラユニットは、出力部の利用を調停しつつ、ＦＰ結果をアセンブルして出力部に書き込む。【選択図】図２【特許請求の範囲】
【請求項１】
複数のベクトル入力を捕獲する一の入力待ち行列と、
前記入力待ち行列に接続され、前記複数のベクトル入力内の複数の演算をディスパッチする一のスケジューラと、
前記スケジューラに接続され、該スケジューラからディスパッチされた前記複数のベクトル入力の複数のスカラー成分に対して演算を行って得られる複数のＦＰ結果を生成する複数の浮動小数点数演算（ＦＰ）パイプラインと、
前記複数のＦＰパイプラインに接続され、一の出力部の利用を調停しつつ前記複数のＦＰ結果をアセンブルして該出力部に書き込む一のアービター／アセンブラユニットと
を含む装置。
【請求項２】
前記スケジューラは、
前記複数のベクトル入力の一のベクトル入力について一の識別子（ＩＤ）を生成する一の識別子生成器と、
前記ベクトル入力を前記複数のスカラー成分に分解する一のベクトル分解器であって、該複数のスカラー成分のそれぞれは、対応する該ベクトル入力における該スカラー成分の位置を示す一の位置タグを備える、ベクトル分解器と、
前記識別子生成器と前記ベクトル分解器とに接続され、前記複数のスカラー成分と前記位置タグとを前記複数のＦＰパイプラインへと送り、前記ＩＤを前記アービター／アセンブラユニットに転送する一のディスパッチャと
を含む、
請求項１に記載の装置。
【請求項３】
前記アービター／アセンブラユニットは、
前記ＩＤを前記出力部における一の出力バッファへと割り当てる一のアービターと、
前記複数のＦＰ結果の前記ＩＤと割り当てたＩＤとの一致をとる一のマッチング回路と、
前記割り当てたＩＤと一致する前記ＩＤを有する前記ＦＰ結果を前記出力バッファにおける前記スカラー位置タグに示される一の位置に書き込む一のアセンブラと
を含む、
請求項２に記載に記載の装置。
【請求項４】
前記複数のＦＰパイプラインのそれぞれは、前記スケジューラから送られた前記複数のスカラー成分のうち一つを選択し、また、一の更なる通行が必要であるとき又は前記ＩＤが前記割り当てたＩＤと一致しないときに再循環させるべき一のＦＰ結果を選択する一の入力セレクタを含む、
請求項３に記載の装置。
【請求項５】
前記アービター／アセンブラユニットは、前記スケジューラからディスパッチされた前記ＩＤを記憶する一のＩＤ待ち行列をさらに含む、
請求項３に記載の装置。
【請求項６】
前記アービターは、前記ＩＤ待ち行列における前記ＩＤの割り当てを、ラウンドロビン方式と先入れ先出し方式の一方に従って行う、
請求項５に記載の装置。
【請求項７】
前記アービターは、利用可能な前記出力バッファへと前記ＩＤを割り当てる、
請求項３に記載の装置。
【請求項８】
一の待ち行列へと複数のベクトル入力を捕獲することと、
前記複数のベクトル入力内の複数の演算を一のスケジューラを用いてディスパッチすることと、
前記スケジューラからディスパッチされた前記複数のベクトル入力の複数のスカラー成分に対して演算を行うことにより得られる複数のＦＰ結果を複数の浮動小数点数演算（ＦＰ）パイプラインを用いて生成することと、
前記ＦＰ結果を記憶する出力部の使用を、一のアービター／アセンブラユニットを用いて調停することと、
前記複数のＦＰ結果を前記出力部においてアセンブルすることと、
を含む方法。
【請求項９】
前記ディスパッチすることは、
前記複数のベクトル入力の一のベクトル入力について一の識別子（ＩＤ）を生成することと、
前記ベクトル入力を前記複数のスカラー成分に分解することであって、該複数のスカラー成分のそれぞれは、対応する該ベクトル入力における該スカラー成分の位置を示す一の位置タグを有することと、
前記複数のスカラー成分と前記位置タグとを前記複数のＦＰパイプラインへと送ることと、
前記ＩＤを前記アービター／アセンブラユニットに転送することと
を含む、
請求項８に記載の方法。
【請求項１０】
前記アービター／アセンブラユニットは、
前記ＩＤを前記出力部における一の出力バッファへと割り当てることと、
前記複数のＦＰ結果の前記ＩＤと割り当てたＩＤとの一致をとることと、
前記割り当てたＩＤと一致する前記ＩＤを有する前記ＦＰ結果を前記出力バッファにおける前記スカラー位置タグが示す一の位置へと書き込むことと
を含む、
請求項９に記載の方法。
【請求項１１】
前記スケジューラから送られた前記複数のスカラー成分のうち一つを選択し、また、一の更なる通行が必要であるとき又は前記ＩＤが前記割り当てたＩＤと一致しないときに前記複数のＦＰパイプラインのうちの一つへと再循環させる一のＦＰ結果を選択することをさらに含む請求項１０に記載の方法。
【請求項１２】
調停することは、前記スケジューラからディスパッチされた前記ＩＤを一のＩＤ待ち行列に記憶することを含む、
請求項１０に記載の方法。
【請求項１３】
調停することは、ラウンドロビン方式と先入れ先出し方式の一方にしたがって前記ＩＤ待ち行列における前記ＩＤの割り当てを実行することを含む、
請求項１２に記載の方法。
【請求項１４】
調停することは、利用可能な前記出力バッファへと前記ＩＤを割り当てることを含む、
請求項１０に記載の方法。
【請求項１５】
グラフィクスデータを処理する一のグラフィクスコントローラと、
前記グラフィクスコントローラに接続され、前記グラフィクスデータを記憶する一のメモリと、
前記グラフィクスコントローラに接続され、前記グラフィクスデータに対して複数の浮動小数点数演算を実行する一の浮動小数点数演算ユニット（ＦＰＵ）と
を含み、
前記ＦＰＵは、
複数のベクトル入力を捕獲する一の入力待ち行列と、
前記入力待ち行列に接続され、前記複数のベクトル入力内の複数の演算をディスパッチする一のスケジューラと、
前記スケジューラに接続され、該スケジューラからディスパッチされた前記複数のベクトル入力の複数のスカラー成分に対して演算を行うことにより得られる複数のＦＰ結果を生成する複数の浮動小数点数演算（ＦＰ）パイプラインと、
前記複数のＦＰパイプラインに接続され、出力部の利用を調停し、前記複数のＦＰ結果をアセンブルして該出力部へと書き込む一のアービター／アセンブラユニットと
を含む、
システム。
【請求項１６】
前記スケジューラは、
前記複数のベクトル入力の一のベクトル入力について一の識別子（ＩＤ）を生成する一の識別子生成器と、
前記ベクトル入力を前記複数のスカラー成分に分解する一のベクトル分解器であって、該複数のスカラー成分のそれぞれは、対応する該ベクトル入力における該スカラー成分の位置を示す一の位置タグを備える、ベクトル分解器と、
前記識別子生成器と前記ベクトル分解器とに接続され、前記複数のスカラー成分と前記位置タグとを前記複数のＦＰパイプラインへと送り、前記ＩＤを前記アービター／アセンブラユニットへと転送する一のディスパッチャと
を含む、
請求項１５に記載のシステム。
【請求項１７】
前記アービター／アセンブラユニットは、
前記ＩＤを前記出力部における一の出力バッファへと割り当てる一のアービターと、
前記複数のＦＰ結果の前記ＩＤと割り当てたＩＤとの一致をとる一のマッチング回路と、
前記割り当てたＩＤと一致する前記ＩＤを有する前記ＦＰ結果を前記出力バッファにおける前記スカラー位置タグが示す一の位置へと書き込む一のアセンブラと
を含む、
請求項１６に記載のシステム。
【請求項１８】
前記複数のＦＰパイプラインのそれぞれは、前記スケジューラから送られた前記複数のスカラー成分のうち一つを選択し、また、一の更なる通行が必要であるとき又は前記ＩＤが前記割り当てたＩＤに一致しないときに再循環させる一のＦＰ結果を選択する一の入力セレクタを含む、
請求項１７に記載のシステム。
【請求項１９】
前記アービター／アセンブラユニットは、前記スケジューラからディスパッチされた前記ＩＤを記憶する一のＩＤ待ち行列をさらに含む、
請求項１７に記載のシステム。
【請求項２０】
前記アービターは、ラウンドロビン方式と先入れ先出し方式の一方に従って前記ＩＤ待ち行列における前記ＩＤの割り当てを行う、
請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、マイクロプロセッサの分野に関し、特に浮動小数点数演算ユニットに関する。
【背景技術】
【０００２】
浮動小数点数（ＦＰ）演算の利用は、たとえば三次元（３−Ｄ）コンピュータグラフィクス、画像処理、デジタル信号処理、天気予測、宇宙探査、地震処理、数値解析等、多くの計算処理分野においてますます浸透しつつある。コンピュータシステムにおいてＦＰ演算性能を強化するための専用の浮動小数点数演算ユニットが開発されている。ＦＰが関係する処理の多くにはベクトル処理が含まれる。ベクトル処理用に設計された浮動小数点数演算プロセッサ（ＦＰＰ）は、通常パイプラインアーキテクチャを採用している。
【０００３】
パイプラインアーキテクチャを有するＦＰＰに関する既存の技術においては、ベクトル処理に通常単一の深いパイプラインを用いる。この態様は、簡易であり、いくつかの用途においては十分なものであるが、高度に集中的なベクトル処理を行うには多くの欠点がある。処理の規模が変わったときに、このアーキテクチャを拡大するにせよ縮小するにせよ、変更することは難しい。デッドロックが発生する可能性もあり、パイプラインの利用効率が低下する。簡単な命令であっても複雑な命令と同じ待ち時間を待機させられる場合もあり、パイプラインの利用が非効率的となる。その他の不利点としては、スループットが低いこと、スループットがベクトルの投入に左右されること等が挙げられる。
【図面の簡単な説明】
【０００４】
以下の記載と本発明の実施形態を図示する添付の図面を参照することにより本発明の実施形態についての最良の理解が得られる。
【０００５】
【図１Ａ】図１Ａは、本発明の一実施形態を実施してよい処理システムを示す図である。
【０００６】
【図１Ｂ】図１Ｂは、本発明の一実施形態を実施してよいグラフィクスシステムを示す図である。
【０００７】
【図２】図２は、本発明の一実施形態に係るＦＰＵを示す図である。
【０００８】
【図３】図３は、本発明の一実施形態に係るスケジューラを示す図である。
【０００９】
【図４】図４は、本発明の一実施形態に係るＦＰパイプラインを示す図である。
【００１０】
【図５】図５は、本発明の一実施形態に係るアービター／アセンブラユニットを示す図である。
【００１１】
【図６】図６は、本発明の一実施形態に係るベクトル処理用のＦＰ演算を実行する処理を説明するフローチャートである。
【００１２】
【図７】図７は、本発明の一実施形態に係るベクトル入力をディスパッチする処理を説明するフローチャートである。
【００１３】
【図８】図８は、本発明の一実施形態に係る調停／アセンブル処理を説明するフローチャートである。
【発明を実施するための最良の形態】
【００１４】
本発明の実施形態の一つは、ベクトル処理用の浮動小数点数演算を実行する技術である。入力待ち行列には複数のベクトル入力が捕獲されている。スケジューラがベクトル入力のディスパッチを処理する。スケジューラがディスパッチしたベクトル入力のスカラー成分を複数の浮動小数点数演算（ＦＰ）パイプラインが演算することによりＦＰ結果が生成される。アービター／アセンブラユニットが出力部の使用順を調停しつつ、ＦＰ結果をアセンブルして出力部へと書き込む。
【００１５】
以下の記載においては、多くの特定的詳細を述べる。しかし、本発明の実施形態はこれらの特定的詳細を含まなくても実施し得ることは理解されよう。その他の例においては、本記載についての理解を曖昧にしないために周知の回路、構造及び技術については記載を省く。
【００１６】
本発明の一実施形態を通常フローチャート、フロー図、構成図、もしくはブロック図として示される処理として記載する。フローチャートにおいては演算を順次的な処理として記載するが、演算の多くは並列もしくは同時に実行することができる。また、演算順は並べ替えてもよい。処理は含まれる演算が完了したときに終わる。処理は、方法、プログラム、手順、製造／製作方法等に対応する。
【００１７】
本発明の一実施形態は、ベクトル処理用にＦＰ演算を効率的に実行する技術である。この技術においては、一本の深いパイプラインでなく複数の浅いパイプラインを用いたＦＰユニット（ＦＰＵ）アーキテクチャを用いる。これにより、演算性能とバッファ深度に高度の拡張性が得られる。パイプライン数を変更することにより、アーキテクチャはどのような計算性能要件にも対応し得る。入力されたベクトル入力を分解もしくは分割して互いに別個であるスカラー成分のセットを得て、並列処理するために複数のＦＰパイプラインへと送り出す。簡易な調停設計により、非同期的にＦＰ結果が出力バッファへと割り当てられ、完全なベクトル結果として再び統合される。このような順序性を度外視した処理の完了法により、待ち時間が短い簡単な命令が待ち時間が長く複雑な命令に先立って完了し、高スループットとなる。調停設計によって出力バッファ領域が割り当てられることによりコマンドがディスパッチ時に完了するのでデッドロック防止性能が向上し、パイプラインの利用性が高まる。
【００１８】
図１Ａは、本発明の一実施形態を実施してよい処理システム１０を示す図である。システム１０には、プロセッサユニット１５、浮動小数点数演算ユニット（ＦＰＵ）２０、メモリコントローラハブ（ＭＣＨ）２５、メインメモリ３０、入出力コントローラハブ（ＩＯＨ）４０、インターコネクト４５、大容量記憶装置５０、及び入出力（Ｉ／Ｏ）装置４７１乃至４７Ｋが含まれる。
【００１９】
プロセッサユニット１５は、たとえば、ハイパースレッド、セキュリティ、ネットワーク、デジタルメディア等の技術を用いたプロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、組み込みプロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ、スーパースケーラコンピュータ、ベクトルプロセッサ、単一命令複数データ（ＳＩＭＤ）コンピュータ、複数命令セットコンピュータ（ＣＩＳＣ）、縮小命令セットコンピュータ（ＲＩＳＣ）、超長命令語コンピュータ（ＶＬＩＷ）、もしくはハイブリッド構造等のあらゆる種類のアーキテクチャを有する中央演算処理装置である。
【００２０】
ＦＰＵ２０は、ベクトル処理用の浮動小数点数演算を実行するコプロセッサである。ＦＰＵ２０は、プロセッサユニット１５に対して直接のインターフェースであってよく、メモリ領域等のシステム資源をプロセッサユニット１５と共有してよい。プロセッサユニット１５とＦＰＵ２０は、互いに命令とデータを交換してよいが、それにはベクトルデータとＦＰ命令が含まれる。ＦＰＵ２０を、プロセッサユニット１５のアドレス空間を占有する入出力（Ｉ／Ｏ）プロセッサと見てもよい。ＦＰＵ２０は、プロセッサユニット１５に対する直接のインターフェースである代わりにＭＣＨ２５に対するインターフェースであってもよい。ＦＰＵ２０にはベクトル処理を効率化するべく複数のＦＰパイプラインを備えた拡張性の高いアーキテクチャが用いられる。
【００２１】
ＭＣＨ２５は、メインメモリ３０、ＩＣＨ４０等のメモリ装置及び入出力装置の制御と設定を行う。ＭＣＨ２５は、たとえばグラフィクス、メディア、独立実行モード、ホスト／周辺機器バスインターフェース、メモリ制御、電力管理等多様な機能を集積したチップセットに組み込んでよい。ＭＣＨ２５もしくはＭＣＨ２５内のメモリコントローラ機能をプロセッサユニット１５に組み込んでよい。いくつかの実施形態においては、メモリコントローラは、プロセッサユニット１５の内部にあっても外部にあっても、プロセッサユニット１５内の全てのコアもしくはプロセッサに対して機能してよい。その他の実施形態においては、メモリコントローラは、プロセッサユニット１５内の異なるコアもしくはプロセッサに対してそれぞれ機能する複数の異なる部分を含んでよい。
【００２２】
メインメモリ３０は、システムコードとデータを記憶する。メインメモリ３０は、動的ランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、もしくは、リフレッシュの必要がないものを含むその他のあらゆる種類のメモリによって実施される。メインメモリ３０は、プロセッサユニット１５からアクセス可能であってよく、またはプロセッサユニット１５とＦＰＵ２０の両方からアクセス可能であってよい。
【００２３】
ＩＣＨ４０は、Ｉ／Ｏ機能を支援するよう設計された多くの機能を有する。ＩＣＨ４０は、Ｉ／Ｏ機能を実行するにあたって、ＭＣＨ２０と同一のチップセットに組み込まれてよく、又はＭＣＨ２０から分離したものであってよい。ＩＣＨ４０には、たとえば周辺機器インターコネクト（ＰＣＩ）バスインターフェース、プロセッサインターフェース、割り込みコントローラ、直接メモリアクセス（ＤＭＡ）コントローラ、電力管理ロジック、タイマ、システム管理バス（ＳＭＢｕｓ）、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、大容量記憶インターフェース、ローピンカウント（ＬＰＣ）インターフェース等多くのインターフェース機能とＩ／Ｏ機能を含めてよい。
【００２４】
インターコネクト４５は、周辺機器へのインターフェースとなる。インターコネクト４５は２地点間構成であってよく、あるいは複数の装置に接続してもよい。明確化のために付言すると、全てのインターコネクトを図示した訳ではない。インターコネクト４５には、たとえば周辺機器インターコネクト（ＰＣＩ）、ＰＣＩエクスプレス、ユニバーサルシリアルバス（ＵＳＢ）、直接メディアインターフェース（ＤＭＩ）等、いかなるインターコネクトもしくはバスを含めてよい。
【００２５】
大容量記憶装置５０は、コード、プログラム、ファイル、データ、アプリケーション等のアーカイブ情報を記憶する。大容量記憶装置５０は、コンパクトディスク（ＣＤ）読み出し専用メモリ（ＲＯＭ）５２、デジタルビデオ／多目的ディスク（ＤＶＤ）５３、フロッピードライブ５４、ハードドライブ５６、及びその他のいかなる磁気もしくは光記憶装置を含んでよい。大容量記憶装置５０は、マシンアクセス可能媒体を読み出すメカニズムである。Ｉ／Ｏ装置４７１乃至４７Ｋは、Ｉ／Ｏ機能を実行するいかなるＩ／Ｏ装置であってよい。Ｉ／Ｏ装置４７１乃至４７Ｋの例には、入力装置（たとえば、キーボード、マウス、トラックボール、ポインティングデバイス）のコントローラ、メディアカード（たとえば、音声、映像、グラフィクス）、ネットワークカード、及びその他のいかなる周辺機器コントローラが含まれる。
【００２６】
図１Ｂは、本発明の一実施形態を実施してよいグラフィクスシステム６０を示す図である。グラフィクスシステム６０には、グラフィクスコントローラ６５、浮動小数点数演算ユニット（ＦＰＵ）７０、メモリコントローラ７５、メモリ８０、ピクセルプロセッサ８５、ディスプレイプロセッサ９０、デジタル−アナログ変換器（ＤＡＣ）９５、および表示モニタが含まれる。
【００２７】
グラフィクスコントローラ６５は、たとえば高速線画、二次元（２−Ｄ）及び三次元（３−Ｄ）グラフィクスレンダリング機能、シェーディング、エイリアシング防止、ポリゴンレンダリング、透過性効果、色空間補正、αブレンディング、彩度調整（クロマキーイング）等のグラフィクス演算を実行するためのグラフィクス機能を有するプロセッサである。ＦＰＵ７０は、図１Ａに示すＦＰＵ２０と本質的に類似している。ＦＰＵ７０はグラフィクスデータに対して浮動小数点数演算を実行する。ＦＰＵ７０は、グラフィクスコントローラ６５からＦＰ命令とＦＰベクトル入力を受け取り、ＦＰ結果をグラフィクスコントローラ６５へと返還する。メモリコントローラ７５は、図１ＡのＭＣＨ２５と類似のメモリ制御機能を実行する。メモリ８０はＳＲＡＭメモリ装置もしくはＤＲＡＭメモリ装置であって、グラフィクスコントローラ６０及びＦＰＵ７０が処理した命令とグラフィクスデータを記憶する。
【００２８】
ピクセルプロセッサ８５は、たとえば幾何演算、アフィン変換、モデルビュー投影、３−Ｄクリッピング等の詳細で複雑なグラフィクス機能を実行できる専用のグラフィクスエンジンである。ピクセルプロセッサ８５は、メモリコントローラ７０に対してもインターフェースを有し、メモリ８０及び／又はグラフィクスコントローラ６５にアクセスする。ディスプレイプロセッサ９０はグラフィクスデータの表示処理を行い、パレットテーブルルックアップ、同期処理、バックライト制御、映像処理等の表示関連機能を実行する。ＤＡＣ９５は、デジタル表示データをアナログ映像信号に変換して表示モニタ９７に送信する。表示モニタ９７は、観察用スクリーン上にグラフィクス情報を表示する表示モニタである。表示モニタは、陰極線管（ＣＲＴ）モニタ、テレビ（ＴＶ）セット、液晶ディスプレイ（ＬＣＤ）、フラットパネル、もしくはデジタルＣＲＴであってよい。
【００２９】
図２は、本発明の一実施形態に係るＦＰＵ２０／７０を示す図である。ＦＰＵ２０／７０には、入力待ち行列２１０、ベクトル入力セレクタ２２０、スケジューラ２３０、ＦＰ部２４０、アービター／アセンブラユニット２４０、及び出力部２６０が含まれる。
【００３０】
入力待ち行列２１０はプロセッサユニット１５（図１）、グラフィクスコントローラ６０（図２）、もしくはベクトル入力を記憶するデータ記憶装置からの処理すべきベクトル入力を捕獲もしくは格納する。各ベクトル入力には、ＦＰ命令と命令に関連するベクトルデータが含まれる。ＦＰ命令には、ＦＰ加算、ＦＰ減算、ＦＰ乗算、ＦＰ除算、ＦＰ三角関数等のいかなるＦＰ演算が含まれ得る。ベクトルデータには、多くのスカラー成分が含まれ得る。ベクトル幅は、どのような幅でもよい（たとえば、６４ビット、１２８ビット）。入力待ち行列２１０は、適切な深さと幅を有する先入れ先出し（ＦＩＦＯ）メモリにより実施してよく、又はフラットな構成にして実質的に同時に入力の全てをもしくはそのうちのいくつかを組み合わせて送出してよい。その他の実施形態においては、入力待ち行列２１０は順序付けに制約のないバッファメモリであってよい。
【００３１】
ベクトル入力セレクタ２２０は、入力待ち行列２１０からのベクトル入力を選択してスケジューラ２３０へと送信する。ベクトル入力セレクタ２２０にはＫ個のマルチプレクサ２２５１乃至２２５Ｋを含めてよい。各マルチプレクサは多数の入力を有しており、それらは入力待ち行列２１０の一以上の出力に接続されている。ベクトル入力の選択は適切な基準に基づいて行ってよい。
【００３２】
スケジューラ２３０は、ベクトル入力セレクタ２２０が選択したベクトル入力を受け取り、ベクトル入力内に含まれる浮動小数点数演算の処理を実行させるべく、ＦＰ命令と、ＦＰ部２４０の利用可能性と、及び任意で実施例に固有のその他の基準とに基づいてＦＰ部２４０へとディスパッチする。スケジューラ２３０は、ベクトル入力のそれぞれに一意な識別子（ＩＤ）もしくは連番を割り当て、ベクトル入力の一意なＩＤをアービター／アセンブラユニット２５０に転送し、このＩＤをＦＰ部２４０にディスパッチする各演算に含める。
【００３３】
ＦＰ部２４０は、ディスパッチされたベクトル入力に対してＦＰ命令に従ってＦＰ演算を実行する。ＦＰ部２４０においては、Ｐ個のＦＰパイプライン２４５１乃至２４５Ｐが互いに独立して並列に処理を行ってよい。値Ｐは、用途に適したいかなる値であってよい。Ｐ個のＦＰパイプライン２４５１乃至２４５Ｐは同一のものでも異種のものであってもよい。それらは、たとえばＦＰ加算、ＦＰ減算、ＦＰ除算、ＦＰ乗算、ＦＰの複雑な数学的関数（たとえば、三角関数）等の特定のＦＰ演算を実行するよう設計された独立のＦＰパイプラインであってよい。Ｐ個のＦＰパイプライン２４５１乃至２４５Ｐは同一もしくは異なる深さであってよく、それにより待ち時間が同一になるか異なるものになる。スケジューラ２３０は、演算を当該ベクトル入力に対応するＦＰ命令と、ＦＰパイプラインが利用可能であるかもしくは全く使用されていないかにしたがってＰ個のＦＰパイプライン２４５１乃至２４５Ｐの一つにディスパッチする。Ｐ個のＦＰパイプライン２４５１乃至２４５Ｐのそれぞれは、スケジューラ２３０に向けてステータス信号を生成し、更なるＦＰ演算を受け入れ可能であるか不可能であるかを知らせる。あるＦＰパイプラインが利用不可であるがＦＰ命令によりこのＦＰパイプラインの利用が要求されている場合、スケジューラ２３０は当該ＦＰパイプラインもしくは別の適切なＦＰパイプラインが利用可能となるまで待ち行列に当該ベクトル入力を保持する。Ｐ個のＦＰパイプライン２４５１乃至２４５Ｐのそれぞれは、その出力においてＦＰ結果を生成する。
【００３４】
アービター／アセンブラユニット２５０は、ＦＰ部２４０からのＦＰ結果を出力部２６０に書き込む。アービター／アセンブラユニット２５０は、ＦＰ部２４０の出力において複数のＦＰ結果が得られた場合、出力部の利用を調停する。ＦＰ結果のうち調停に勝利したものがあれば、アービター／アセンブラユニット２５０は、そのＦＰ結果を出力部内において割り当てられた出力バッファの適切な位置に書き込む。つまり、アービター／アセンブラユニット２５０は、各ベクトル入力に含まれる全てのスカラー成分が処理された後、結果ベクトルのそれぞれについて対応するＦＰ結果をアセンブルする。
【００３５】
出力部２６０は、アービター／アセンブラユニット２５０が書き込んだＦＰ結果を記憶する。たとえばプロセッサユニット１５、グラフィクスコントローラ６０、もしくはその他のいかなる利用主体等の別ユニットが更なる処理を行うべくＦＰ結果を消去、読み出し、もしくは利用してよい。出力部２６０には、Ｑ個の出力バッファ２６５１乃至２６５Ｑが含まれる。各出力バッファは結果ベクトルを格納するための十分な記憶容量を有する。出力バッファは、レジスタもしくはメモリとして実施してよい。Ｑ個の出力バッファ２６５１乃至２６５Ｑのそれぞれは、あるベクトル結果に関する全てのスカラー成分を取得したか、またその記憶内容がシステム内のその他の利用主体により消去、読み出し、もしくは利用されたかを示すステータス信号を有する。アービター／アセンブラユニット２５０はこれらのステータス信号を監視して出力バッファが書き込みに関して利用可能であるか、全く利用されていないかを判断する。
【００３６】
図３は、本発明の一実施形態に係る図２に示すスケジューラ２３０を示す図である。スケジューラ２３０には、ＩＤ生成器３１０、ベクトル分解器３２０、及びディスパッチャ３３０が含まれる。
【００３７】
ＩＤ生成器３１０は、ディスパッチをスケジューリングする対象のベクトル入力に一意なＩＤを生成する。一意なＩＤは、ベクトル入力が入力待ち行列２１０に到着した順序もしくはベクトル入力セレクタ２２０に選択された順序に従って、順次的にもしくはインクリメンタルに生成してよい。ＩＤは、ゼロ乃至ｋの値を取ってよく、ｋは図２に示すＰ個のＦＰパイプライン２４５１乃至２４５Ｐに入力可能な一意なベクトル命令の数より大きい。この一意なＩＤはＦＰ部２４０のＦＰパイプラインへとスカラー成分とともにディスパッチされ、対応付けられたＦＰパイプラインをＦＰ結果とともに通行してその出力に至る。また、このＩＤは、アービター／アセンブラユニット２５０がＦＰ結果を出力バッファに割り当て同一ＩＤに属する全てのＦＰ結果を出力部２６０内の割り当てた出力バッファにおいてアセンブルするために用いられる。
【００３８】
ベクトル分解器３２０は、ベクトル入力を複数のスカラー成分へと分解する。スカラー成分のそれぞれは、対応する入力ベクトル内におけるその位置を示すスカラー位置タグを有する。ベクトル分解器３２０は、分解したスカラー成分とそれらの位置タグをディスパッチャ３３０へと転送する。
【００３９】
ディスパッチャ３３０は、ＦＰ部２４０におけるＦＰパイプライン２４５１乃至２４５Ｐのステータス信号を受け取って、各々の利用可能性を判定しスカラー成分をＦＰ部２４０の利用可能なＦＰパイプラインへと送る。ディスパッチャ３３０は、ベクトル入力のＩＤと位置タグ、及びスカラー成分をアービター／アセンブラユニット２５０にも送る。
【００４０】
図４は、本発明の一実施形態に係る図２に示すＦＰパイプライン２４５Ｋを示す図である。ＦＰパイプライン２４５Ｋには、セレクタ４１０及びパイプライン（ＰＬ）ユニット４２０が含まれる。
【００４１】
セレクタ４１０は、スケジューラ２３０から送られてきたスカラー成分とＰＬユニット４２０の出力におけるＦＰ結果とを選択する。ＦＰ結果はそのＩＤがアービター／アセンブラユニット２５０が割り当てたＩＤと一致しないとき再循環させられる。再循環させられるＦＰ結果には、無効演算とのタグを付し、その値が変更されず維持されたままＰＬユニットを通行するようにする。セレクタ４１０はＰＬユニット４２０の入力部においてマルチプレクサとして実施してよい。
【００４２】
ＰＬユニット４２０は、スカラー成分に浮動小数点数演算を実行する。ＰＬユニット４２０には、Ｍ段のＰＬ段４２５１乃至４２５Ｍが含まれる。深さＭは、拡張性及び／又はスループット要件にしたがっていかなる適切な深さであってよい。ＰＬユニット４２０は、アービター／アセンブラユニット２５０に対するその出力においてＦＰ  ＰＬ結果を生成する。また、スカラー成分が属するベクトル入力のＩＤとそのベクトルにおける位置を示すタグもＭ段のＰＬ段４２５１乃至４２５Ｍを通行する。このＦＰ  ＰＬ  ＩＤと、アービター／アセンブラユニット２５０が割り当てるＩＤとが一致するかが確認され、当該ＦＰ  ＰＬ結果を出力バッファに書き込んでよいか、セレクタ４１０へと再循環させるかが決定される。たとえば、これらの段を更に通行する必要が計算目的上必要である場合等、演算が未完了であるとき、あるいは演算は完了してはいるがＩＤが一致しないとき、ＦＰ  ＰＬ結果は再循環させられ、出力バッファが利用可能となるのを待機する。演算が完了しＩＤが一致する場合、ＦＰ  ＰＬ結果は対応する位置タグを用いて割り当てられた出力バッファの適切な位置へと書き込まれる。また、ＰＬユニット４２０はスケジューラ２３０へのステータス信号も生成し、自身がスカラー成分を処理するには混雑しているか、又は利用可能であるかを知らせる。
【００４３】
図５は、本発明の一実施形態に係るアービター／アセンブラユニット２５０を示す図である。アービター／アセンブラユニット２５０には、ＩＤ待ち行列５１０、アービター５２０、マッチング回路５３０、及びアセンブラ５３０が含まれる。
【００４４】
ＩＤ待ち行列５１０には、スケジューラ２３０から送信されたＩＤが記憶される。ＩＤ待ち行列５１０は、ＦＩＦＯもしくはその他のいかなる適切な記憶メカニズムにより実施してよい。ＩＤ待ち行列５１０の深さは、並列ＦＰパイプラインの数Ｐ、拡張性、及び／又はスループット要件に従う。また、アービター５２０が複数のＩＤを処理可能であってよい。
【００４５】
アービター５２０は、ＩＤ待ち行列５１０からＩＤを、出力部２６０からステータス信号を受け取る。出力バッファはステータス信号を供給することにより自身が利用可能であるかを知らせる。アービター５２０はＩＤを出力部２６０における出力バッファへとその出力バッファが利用可能であるならば割り当てる。アービター５２０は、ラウンドロビン、先入れ先出し、あるいはその他のいかなる適切な割り当て方式を用いてＩＤを出力バッファへと割り当ててよい。出力バッファがＩＤを割り当てられると、当該出力バッファは全てのスカラー成分が書き込まれるまで割り当てられたＩＤを使用し続ける。アービター５２０は、割り当てが終了した全てのＩＤをマッチング回路５３０へと転送する。アービター５２０におけるバッファ割り当てを遅らせることによりデッドロックの防止性能が向上し、パイプラインの利用効率が高まる。
【００４６】
マッチング回路５３０は、ＦＰパイプライン２４５１乃至２４５Ｐの出力におけるＦＰ  ＰＬ結果に対応付けられたＩＤと出力部２６０に対して割り当てたＩＤとの一致をとる。一致相手があるものがあれば、マッチング回路５３０は一致相手があった結果をアセンブラ５３０へと送る。一致相手がなかったＦＰ  ＰＬ  ＩＤについては、対応するＦＰパイプラインが当該ＦＰ  ＰＬ結果をその入力へと再循環させる。マッチング回路５３０はＦＰ  ＰＬ  ＩＤの一致を単一の割り当てＩＤに対して、あるいは複数の割り当てＩＤに対してとってよい。複数の割り当てＩＤに対して一致をとることにより、待ち時間の短いパイプラインに対応付けられた命令が待ち時間の長いパイプラインに対応付けられた命令を追い越すことが可能となるためスループットがより高まる可能性がある。マッチング回路５３０は、並列に比較を行う複数のコンパレータにより実施してよい。コンパレータをＬ個の排他的ＯＲゲートにより形成してビット毎の比較を実行し、Ｌ個の入力を有するＯＲゲートをその後段に配置してよい。但し、ＬはＩＤのワードサイズもしくは等価論理回路である。
【００４７】
アセンブラ５４０は、マッチング回路５３０の結果と、スケジューラかあの位置タグと、ＦＰ部２４０からのＦＰ  ＰＬ結果とを受け取る。アセンブラ５４０は、割り当てＩＤと一致するＩＤを有するＦＰ結果を出力バッファにおいて対応するスカラー位置タグが示す位置へと書き込む。
【００４８】
図６は、本発明の一実施形態に係るベクトル処理用のＦＰ演算を実行するための処理６００を示すフローチャートである。
【００４９】
開始されると、処理６００は、ベクトル入力を捕獲する（ブロック６１０）。各ベクトル入力はＮ個のスカラー成分を含む。次に処理６００は、ＦＰ命令とＦＰパイプラインの利用可能性にしたがってベクトル入力をＦＰパイプラインへとディスパッチする（ブロック６２０）。次に、処理６００はベクトル入力に対してＦＰ演算を実行してＦＰ結果を生成する（ブロック６３０）。その後、処理６００は出力部の利用を調停しつつ出力部においてＦＰ結果をアセンブルし（ブロック６４０）、終了する。
【００５０】
図７は、本発明の一実施形態に係る図６におけるベクトル入力をディスパッチする処理６２０を説明するフローチャートである。
【００５１】
開始されると、処理６２０はベクトル入力についてＩＤを生成する（ブロック７１０）。ＩＤは各ベクトル入力に対して一意である。次に、処理６２０は、ＩＤをアービター／アセンブラユニットへと転送する（ブロック７２０）。次に、処理６２０はベクトル入力をスカラー成分へと分解し、各スカラー成分にスカラー位置タグを対応付けてベクトル入力における当該スカラー成分の位置を示す（ブロック７３０）。次に、処理６２０はスカラー成分についてＦＰパイプラインが利用可能であるかを判定する（ブロック７４０）。利用可能でなければ、処理６２０はブロック７４０に戻ってＦＰパイプラインが利用可能になるのを待つ。利用可能でない以外の場合、処理６２０はスカラー成分、ＩＤ、及び位置タグを利用可能なＦＰパイプラインへと送る（ブロック７５０）。
【００５２】
次に、処理６２０は、現ベクトルについて未処理のスカラー成分が残っているかを判定する（ブロック７６０）。残っている場合、処理６２０はブロック７４０へと戻ってＦＰパイプラインが利用可能になるのを待つ。残っていない場合、処理６２０は終了する。
【００５３】
図８は、本発明の一実施形態に係る図６に示す調停しアセンブルする処理６４０を説明するフローチャートである。
【００５４】
開始されると、処理６４０は出力バッファが利用可能であるかを判定する（ブロック８１０）。利用可能でなければ、処理６４０は終了する。利用可能であれば、処理６４０はＩＤ待ち行列におけるＩＤを利用可能な出力バッファに割り当てる（ブロック８２０）。割り当ては、ラウンドロビン、先入れ先出し、もしくはその他のいかなる適切な割り当て方式に従って行ってよい。次に、処理６４０は、ＦＰパイプラインの出力における完了した演算のＦＰ  ＩＤが割り当てたＩＤと一致するかを判定する（ブロック８３０）。一致しなければ、処理６４０はブロック８３０に戻って一致の確認を継続する。ＦＰパイプラインは互いに独立して並列に演算するので、割り当てたＩＤに一致するＦＰ  ＩＤは当然ある。一致するものがあれば、処理６４０は一致したＩＤを有するＦＰ結果を出力バッファにおいて当該ＦＰ結果に対応付けた位置タグが示す位置に書き込む（ブロック８４０）。
【００５５】
次に、処理６４０は出力バッファにおいてベクトルが完全なものになったかを判定する（ブロック８５０）。出力バッファにおいてベクトルは、ベクトルの全てのスカラー成分が出力バッファに書き込まれたときに完全となる。完全でなければ、処理６４０はブロック８３０に戻って、以降の一致発生を確認する。完全であれば、処理６４０は出力バッファに完了した旨を記し、利用主体に結果データが準備されたことを報知する（ブロック８６０）。利用主体は、図１Ａと図１Ｂに示すプロセッサ１５もしくはグラフィクスコントローラ６５であってよい。次に、処理６４０は結果データが利用主体に用いられたかを判定する（ブロック７０）。利用されていければ、処理６４０はブロック８７０に戻って判定を継続する。利用されていれば、処理６４０は利用可能を示すステータスをアービターユニットに送って当該出力バッファが新たな結果データを受け付けるのに利用可能となったことを知らせる（ブロック８８０）。処理６４０はその後終了し、出力バッファが消去された後アービター／アセンブラユニットに利用可能を示すステータスを送って（ブロック８６０）終了する。
【００５６】
いくつかの実施形態の観点から本発明を記載したが、本発明は記載した実施形態に限定されず、添付の請求項の趣旨と範囲から逸脱せずに変更や改良を行っても実施することができることは当業者には理解されよう。したがって、本記載は制限的でなく例示的であると見なすべきである。
【図１Ａ】
2009505301.tif 000002
【図１Ｂ】
2009505301.tif 000003
【図２】
2009505301.tif 000004
【図３】
2009505301.tif 000005
【図４】
2009505301.tif 000006
【図５】
2009505301.tif 000007
【図６】
2009505301.tif 000008
【図７】
2009505301.tif 000009
【図８】
2009505301.tif 000010
【国際調査報告】
2009505301.tif 000011
2009505301.tif 000012