(57)【要約】  協働して、様々なアプリケーションのための写実的なグラフィックス能力をサポートする強力で高度にスケーラブルな視覚化解決法を提供するグラフィック処理ユニット（ＧＰＵ）の多数のコアのクラスタをサポートする、モノリシック・シリコン・チップ上に実現された高性能のグラフィックス処理及び表示システム・アーキテクチャである。本発明は、種々の並列レンダリング技術を動的に管理し、主グラフィックス・アプリケーションの適応処理を可能にすることによって、グラフィックス・パイプラインに沿ったレンダリング・ボトルネックを排除する。
2008538620.tif 000002
【特許請求の範囲】
【請求項１】
各々が、１つ又はそれ以上の並列化モードを用いて画像処理の並列化をサポートし、かつ、少なくとも１つのコンピュータ・スクリーン上に画像を表示するための手段を有し、（ｉ）グラフィックス・コマンドを出すための１つ又はそれ以上のソフトウェア・アプリケーションと、（ｉｉ）前記グラフィックス・コマンドを実施するのに用いられるデータを格納するための１つ又はそれ以上のグラフィック・ライブラリ（すなわち、ＯｐｅｎＧＬ及びＤｉｒｅｃｔＸ）である状態機械と、（ｉｉｉ）前記ＧＰＵ駆動型パイプライン・コアが前記グラフィック・ライブラリと対話するのを可能にするためのマルチ・パイプ・ドライバとをサポートしているコンピュータ・システムと接続するように適合されている、グラフィック処理ユニットを備えた多数のＧＰＵ駆動型パイプライン・コアを有する、グラフィックス処理及び表示システムを実装するモノリシック構成のシリコン・チップであって、前記マルチ・パイプ・ドライバは、（１）前記コンピュータ・システムのオペレーティング・システム（ＯＳ）及びグラフィック・ライブラリ（例えば、ＯｐｅｎＧＬ又はＤｉｒｅｃｔＸ）との対話に関連した一般的なＧＰＵドライバラリの機能を実行するためのＧＰＵドライバ・ユニット、（２）並列化ポリシー管理に従って異なる並列化モードを実行することに関連した機能を実行するための分散されたグラフィック機能制御モジュール、（３）前記ＧＰＵ駆動型グラフィック・パイプライン・コアにわたって有効な状態を保持するように、特定の状態コマンド及び該ＧＰＵ駆動型パイプライン・コアの全データの一部を転送する、状態コマンドを含む全ての入ってくるコマンドを連続的に分析するための状態監視ドライバ・モジュール、（４）データ・ボトルネックを引き起こす可能性が高い前記グラフィックス・システム内の問題領域を識別するために、該コンピュータ・システムにおいてアプリケーション・パラメータのリアルタイムな連続的監視を実行するための、（ｉ）該多数のＧＰＵ駆動型パイプライン・コアのレジスタ、（ｉｉ）制御ユニットのレジスタ、及び（ｉｉｉ）グラフィックＡＰＩコマンドからの入力を用いる、アプリケーション・プロファイリング及び分析ドライバ・モジュールと、（５）前記アプリケーション・プロファイリング及び分析ドライバ・モジュールの結果を用いて、該ＧＰＵ駆動型パイプライン・コアの前記並列化モードをフレームごとに決定し、こうした決定をＭＰ−ＳＯＣの前記制御ユニットによって実行するための並列化ポリシー管理ドライバ・モジュールとを含む、前記シリコン・チップが、
前記多数のＧＰＵ駆動型パイプライン・コアと、
前記ＧＰＵ駆動型パイプライン・コアの間でＣＰＵから来るグラフィックス・データ・ストリームを分散させ、該パイプライン・コアからの与えられた結果（フレーム・バッファ）を合成ユニットに集めるための、ＣＰＵバス上に配置されたルーティング・センタと、
を備え、
前記データを分散する方法は、前記制御ユニットによって命令され、かつ、前記現在の並列化モードによって決まり、
前記進行中の並列化モードに従って部分的なフレーム・バッファを再構成するための合成ユニットと、
前記選択された並列化モードに従って、前記グラフィックス処理及び表示システムの構成及び機能を制御するための制御ユニットと、
内部メモリ又は外部メモリを有する処理要素（ＰＥ）と、
ベンチマーク・データを前記マルチ・パイプ・ドライバに送るためのプロファイリング機能ユニットと、
単一の又は多数の表示スクリーンを実行するための表示インターフェースと、
が設けられたことを特徴とするシリコン・チップ。
【請求項２】
前記処理要素のために働き、かつ、前記ＧＰＵ駆動型パイプライン・コアに共通のグラフィックス・データをキャッシュに入れるためのキャッシュ・メモリをさらに備えることを特徴とする請求項１に記載のシリコン・チップ。
【請求項３】
前記グラフィックス・データは、テクスチャ及び頂点オブジェクトからなる群から選択されることを特徴とする請求項２に記載のシリコン・チップ。
【請求項４】
前記ベンチマーク・データは、メモリ速度、バイトでのメモリ使用量、与えられた総ピクセル数、幾何学的データ入力レンダリング、フレーム・レート、各パイプライン・コアの作業負荷、グラフィック・パイプラインの間の負荷平衡、転送されたデータ容量、テクスチャ・カウント、及び奥行き複雑度からなる群から選択されるデータを含むことを特徴とする請求項１に記載のシリコン・チップ。
【請求項５】
前記グラフィック・ライブラリは、ＯｐｅｎＧＬ及びＤｉｒｅｃｔＸからなる群から選択されることを特徴とする請求項１に記載のシリコン・チップ。
【請求項６】
前記ＧＰＵ駆動型パイプライン・コアの数は、アーキテクチャ上の制限を有さないことを特徴とする請求項１に記載のシリコン・チップ。
【請求項７】
前記ＧＰＵ駆動型パイプライン・コアは、性能ボトルネックを解決するために異なる並列化モードで組織されることを特徴とする請求項１に記載のシリコン・チップ。
【請求項８】
前記並列化モードは、オブジェクト分割モード、画像分割モード、及び時分割モードを含むことを特徴とする請求項７に記載のシリコン・チップ。
【請求項９】
前記ベンチマーク・データは、メモリ速度、バイトでのメモリ使用量、与えられた総ピクセル数、幾何学的データ入力レンダリング、フレーム・レート、各パイプライン・コアの作業負荷、パイプライン・コアの間の負荷平衡、転送されたデータ容量、テクスチャ・カウント、及び奥行き複雑度を含むことを特徴とする請求項１に記載のシリコン・チップ。
【請求項１０】
前記コンピュータ・システムの前記マザーボードに接続することができるグラフィックス・カード上に実現されることを特徴とする請求項１に記載のシリコン・チップ。
【請求項１１】
ＣＰＵバスを有するコンピュータ・システムのマザーボードに接続するためのグラフィクス・カードであって、前記グラフィックス・カードは、
（ａ）多数のＧＰＵ駆動型パイプライン・コアと、
（ｂ）前記ＧＰＵ駆動型パイプライン・コアの間で、前記ＣＰＵから来るグラフィックス・データ・ストリームを分散させ、該パイプライン・コアからの与えられた結果（フレーム・バッファ）を前記合成ユニットに集めるための、前記ＣＰＵバス上に配置されたルーティング・センタと、
（ｃ）前記進行中の並列化モードに従って前記部分的なフレーム・バッファを再構成しりための合成ユニットと、
（ｄ）時間内の任意の時点で選択された並列化モードに従って前記グラフィックス処理及び表示システムの構成及び機能を制御するための制御ユニットと、
（ｅ）内部メモリ又外部メモリを有する処理要素（ＰＥ）と、
（ｆ）ベンチマーク・データを前記マルチ・パイプ・ドライバに送るためのプロファイリング機能ユニットと、
（ｇ）単一又は多数の表示スクリーンを実行するための表示インターフェースと、
を含むグラフィックス処理及び表示サブシステムを実装するモノリシック構成のシリコン・チップを備えることを特徴とするグラフィックス・カード。
【請求項１２】
前記グラフィックス・データ・ストリームは、前記制御ユニットの制御下で、前記現在の並列化モードに応じて、前記ＧＰＵ駆動型パイプライン・コアの間で分散されることを特徴とする請求項１１に記載のグラフィックス・カード。
【請求項１３】
前記シリコン・チップは、各々が、１つ又それ以上の並列化モードを用いて画像処理の並列化をサポートし、かつ、少なくとも１つのコンピュータ・スクリーン上に画像を表示するための手段を有し、（ｉ）グラフィックス・コマンドを出すための１つ又はそれ以上のソフトウェア・アプリケーションと、（ｉｉ）前記グラフィックス・コマンドを実施するのに用いられるデータを格納するための１つ又はそれ以上のグラフィック・ライブラリ（すなわち、ＯｐｅｎＧＬ及びＤｉｒｅｃｔＸ）である状態機械と、（ｉｉｉ）前記ＧＰＵ駆動型パイプライン・コアが前記グラフィック・ライブラリと対話するのを可能にするためのマルチ・パイプ・ドライバとをサポートしているコンピュータ・システムと接続するように適合されている、コンピュータ・システムと対話するように適合されている、グラフィック処理ユニット（ＧＰＵ）を備えた多数のＧＰＵ駆動型パイプライン・コアを有することを特徴とする請求項１１に記載のグラフィックス・カード。
【請求項１４】
前記マルチ・パイプ・ドライバは、
（１）前記コンピュータ・システムのオペレーティング・システム（ＯＳ）及びグラフィック・ライブラリとの対話と関連した一般的なＧＰＵドライバの機能を実行するためのＧＰＵドライバ・ユニットと、
（２）並列化ポリシー管理に従って異なる並列化モードを実行することに関連した機能を実行するための分散されたグラフィック機能制御モジュールと、
（３）前記ＧＰＵ駆動型グラフィック・パイプライン・コアにわたって有効な状態を保持するように、特定の状態コマンドを転送する状態コマンド及び該ＧＰＵ駆動型パイプライン・コアの全データの一部を転送する、状態コマンドを含む全ての入ってくるコマンドを連続的に分析するための状態監視ドライバ・モジュールと、
（４）データ・ボトルネックを引き起こす可能性が高い前記グラフィックス・システム内の問題領域を識別するために、該コンピュータ・システムにおいてアプリケーション・パラメータのリアルタイムの連続的監視を実行するための、（ｉ）前記多数のＧＰＵ駆動型パイプライン・コアのレジスタと、（ｉｉ）前記制御ユニットのレジスタと、（ｉｉｉ）グラフィックＡＰＩコマンドとからの入力を用いる、アプリケーション・プロファイリング及び分析ドライバ・モジュールと、
（５）前記アプリケーション・プロファイリング及び分析ドライバ・モジュールの結果を用いて、該ＧＰＵ駆動型パイプライン・コアの前記並列化モードをフレームごとに決定し、こうした決定をＭＰ−ＳＯＣの該制御ユニットによって実行するための並列化ポリシー管理ドライバ・モジュールと、
を含むことを特徴とする請求項１２に記載のグラフィックス・カード。
【請求項１５】
前記処理要素のために働き、かつ、前記ＧＰＵ駆動型パイプライン・コアに共通のグラフィックス・データをキャッシュに入れるためのキャッシュ・メモリをさらに備えることを特徴とする請求項１１に記載のグラフィックス・カード。
【請求項１６】
前記グラフィックス・データは、テクスチャ及び頂点オブジェクトからなる群から選択されることを特徴とする請求項１５に記載のグラフィックス・カード。
【請求項１７】
前記ベンチマーク・データは、メモリ速度、バイトでのメモリ使用量、与えられた総ピクセル数、幾何学的データ入力レンダリング、フレーム・レート、各パイプライン・コアの作業負荷、グラフィック・パイプラインの間の負荷平衡、転送されたデータ容量、テクスチャ・カウント、及び奥行き複雑度からなる群から選択されるデータを含むことを特徴とする請求項４に記載のグラフィックス・カード。
【請求項１８】
前記グラフィック・ライブラリは、ＯｐｅｎＧＬ及びＤｉｒｅｃｔＸからなる群から選択されることを特徴とする請求項１１に記載のグラフィックス・カード。
【請求項１９】
前記ＧＰＵ駆動型パイプライン・コアの数は、アーキテクチャ上の制限を有さないことを特徴とする請求項１１に記載のグラフィックス・カード。
【請求項２０】
前記ＧＰＵ駆動型パイプライン・コアは、性能ボトルネックを解決するために異なる並列化モードで組織されることを特徴とする請求項１１に記載のグラフィックス・カード。
【請求項２１】
前記並列化モードは、オブジェクト分割モード、画像分割モード、及び時分割モードを含むことを特徴とする請求項１１に記載のグラフィックス・カード。
【請求項２２】
１つ又はそれ以上の表示スクリーン上に画像を表示するためのコンピュータ・システムであって、
ＣＰＵバスと、
（ａ）多数のＧＰＵ駆動パイプライン・コアと、
（ｂ）前記ＧＰＵ駆動型パイプライン・コアの間で、前記ＣＰＵから来る前記グラフィックス・データ・ストリームを分散させ、次に、該パイプライン・コアからの与えられた結果（フレーム・バッファ）を前記合成ユニットに集めるための、前記ＣＰＵバス上に配置されたルーティング・センタと、
を含む、グラフィックス処理及び表示サブシステムを実装するためのモノリシック構成のシリコン・チップとを有するマザーボードを備え、
前記データを分散する方法は、前記制御ユニットによって命令され、かつ、現在の並列化モードによって決まり、
前記進行中の並列化モードに従って部分的なフレーム・バッファを再構成するための合成ユニットと、
時間内の任意の時点で選択された並列化モードに従って、前記グラフィックス処理及び表示システムの構成及び機能を制御するための制御ユニットと、
内部メモリ又外部メモリを有する処理要素（ＰＥ）と、
ベンチマーク・データを前記マルチ・パイプ・ドライバに送るためのプロファイリング機能ユニットと、
単一又は多数の表示スクリーンを実行するための表示インターフェースと、
が設けられたことを特徴とするコンピュータ・システム。
【請求項２３】
前記グラフィックス・データ・ストリームは、前記制御ユニットの制御下で、前記現在の並列化モードに応じて、前記ＧＰＵ駆動型パイプライン・コアの間で分散されることを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項２４】
前記シリコン・チップは、各々が、１つ又それ以上の並列化モードを用いて画像処理の並列化をサポートし、かつ、少なくとも１つのコンピュータ・スクリーン上に画像を表示するための手段を有し、（ｉ）グラフィックス・コマンドを出すための１つ又はそれ以上のソフトウェア・アプリケーションと、（ｉｉ）前記グラフィックス・コマンドを実施するのに用いられるデータを格納するための１つ又はそれ以上のグラフィック・ライブラリ（すなわち、ＯｐｅｎＧＬ及びＤｉｒｅｃｔＸ）である状態機械と、（ｉｉｉ）前記ＧＰＵ駆動型パイプライン・コアが前記グラフィック・ライブラリと対話するのを可能にするためのマルチ・パイプ・ドライバとをサポートしているコンピュータ・システムと接続するように適合されている、グラフィック処理ユニット（ＧＰＵ）を備えた多数のＧＰＵ駆動型パイプライン・コアを有することを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項２５】
前記マルチ・パイプ・ドライバは、
（１）前記コンピュータ・システムのオペレーティング・システム（ＯＳ）及びグラフィック・ライブラリとの対話と関連した一般的なＧＰＵドライバの機能を実行するためのＧＰＵドライバ・ユニットと、
（２）並列化ポリシー管理に従って異なる並列化モードを実行することに関連した機能を実行するための分散されたグラフィック機能制御モジュールと、
（３）前記ＧＰＵ駆動型グラフィック・パイプライン・コアにわたって有効な状態を保持するように、特定の状態コマンドを転送する状態コマンド及び該ＧＰＵ駆動型パイプライン・コアの全データの一部を転送する、状態コマンドを含む全ての入ってくるコマンドを連続的に分析するための状態監視ドライバ・モジュールと、
（４）データ・ボトルネックを引き起こす可能性が高い前記グラフィックス・システム内の問題領域を識別するために、該コンピュータ・システムにおいてアプリケーション・パラメータのリアルタイムの連続的監視を実行するための、（ｉ）前記多数のＧＰＵ駆動型パイプライン・コアのレジスタと、（ｉｉ）前記制御ユニットのレジスタと、（ｉｉｉ）グラフィックＡＰＩコマンドとからの入力を用いる、アプリケーション・プロファイリング及び分析ドライバ・モジュールと、
（５）前記アプリケーション・プロファイリング及び分析ドライバ・モジュールの結果を用いて、該ＧＰＵ駆動型パイプライン・コアの前記並列化モードをフレームごとに決定し、こうした決定をＭＰ−ＳＯＣの該制御ユニットによって実行するための並列化ポリシー管理ドライバ・モジュールと、
を含むことを特徴とする請求項２４に記載のコンピュータ・システム。
【請求項２６】
前記処理要素のために働き、かつ、前記ＧＰＵ駆動型パイプライン・コアに共通のグラフィックス・データをキャッシュに入れるためのキャッシュ・メモリをさらに備えることを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項２７】
前記グラフィックス・データは、テクスチャ及び頂点オブジェクトからなる群から選択されることを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項２８】
前記ベンチマーク・データは、メモリ速度、バイトでのメモリ使用量、与えられた総ピクセル数、幾何学的データ入力レンダリング、フレーム・レート、各パイプライン・コアの作業負荷、グラフィック・パイプラインの間の負荷平衡、転送されたデータ容量、テクスチャ・カウント、及び奥行き複雑度からなる群から選択されるデータを含むことを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項２９】
前記グラフィック・ライブラリは、ＯｐｅｎＧＬ及びＤｉｒｅｃｔＸからなる群から選択されることを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項３０】
前記ＧＰＵ駆動型パイプライン・コアの数は、アーキテクチャ上の制限を有さないことを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項３１】
前記ＧＰＵ駆動型パイプライン・コアは、性能ボトルネックを解決するために異なる並列化モードで組織されることを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項３２】
前記並列化モードは、オブジェクト分割モード、画像分割モード、及び時分割モードを含むことを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項３３】
シングルＧＰＵシステムの固有の収束ボトルネックを回避する、制限されていないグラフィックス並列処理を用いる、多数のグラフィックス・コアを有することを特徴とするグラフィックス処理及び表示システム。
【請求項３４】
最良のグラフィックス性能を保証し、マルチ・チップ・システムの欠点、ＧＰＵ間の通信の制限された帯域幅、機械的複雑さ（サイズ、パワー、及び熱）、コンポーネントの冗長性、及び高コストを排除することを特徴とするグラフィックス処理及び表示システム。
【請求項３５】
単一のシリコン・チップ内の多数のグラフィックス・コアを並列化することによって、増幅されたグラフィックス処理及び表示パワーを有することを特徴とするグラフィックス処理及び表示システム。
【請求項３６】
制限されていない数の多数のグラフィックス・コアを有するシリコン・チップ上に実現されることを特徴とするグラフィックス処理及び表示システム。
【請求項３７】
多数のグラフィックス・コアのクラスタを用いるシリコン・チップ上に実現されることを特徴とするグラフィックス処理及び表示システム。
【請求項３８】
多数のグラフィック・コア又パイプを有するシリコン・チップ（すなわち、マルチ・パイプ・システム・オン・チップ、又はＭＰ−ＳＯＣ）上に実現され、高い並列性のグラフィックス表示性能を達成するためのアーキテクチャ上の柔軟性を提供することを特徴とするグラフィックス処理及び表示システム。
【請求項３９】
多数のグラフィック・コアを有するシリコン・チップ上に実現され、その幾何学的形状及びピクセル処理サブシステムの両方の中で異なる並列化モードを適応的にサポートすることを特徴とするグラフィックス処理及び表示システム。
【請求項４０】
多数のグラフィック・コアを有するシリコン・チップ上に実現され、高度なグラフィックス処理及び表示性能のための適合性を提供することを特徴とするグラフィックス処理及び表示システム。
【請求項４１】
頂点（すなわち、３Ｄ多角形形状）処理及びフラグメント処理のグラフィック・パイプライン・ボトルネックが、トランスペアレントにかつインテリジェントに解決されることを特徴とするグラフィックス処理及び表示システム。
【請求項４２】
データ及びグラフィック・コマンドをインテリジェントに分解する方法であって、状態機械のようなグラフィック・ライブラリの基本的特徴を保持し、グラフィック標準を堅く守るステップを含むことを特徴とする方法。
【請求項４３】
多数のグラフィック・コアを有し、最良の並列性能を達成するためのアーキテクチャ上の柔軟性を提供するシリコン・チップ上に実現されるグラフィックス処理・表示システムをサポートすることを特徴とするビデオ・グラフィックス・カード。
【請求項４４】
多数のグラフィック・コアを有するグラフィックス・カードを利用し、最良の並列性能を達成するためのアーキテクチャ上の柔軟性を提供する、写実的なグラフィックス処理・表示能力を有することを特徴とするコンピュータ・システム。
【請求項４５】
ビデオ・ゲーム、仮想現実、科学的視覚化を含むアプリケーション、及び写実的なグラフィックス表示能力を必要とする又は要求する他の対話式アプリケーションによって必要とされるグラフィックス処理・表示性能を有することを特徴とするコンピュータ・システム。
【発明の詳細な説明】
【背景技術】
【０００１】
過去数十年にわたって、グラフィックス・アーキテクチャ分野における研究及び開発の大部分は、３次元（３Ｄ）コンピュータ・グラフィックス・レンダリングの性能を改善する方法に関するものであった。グラフィックス・アーキテクチャは、汎用コンピュータ・アーキテクチャを推進した半導体技術と同じ進歩によって推進される。パイプライン化及び並列処理を含む同じ加速技術の多くが、この分野において用いられてきた。しかしながら、グラフィックス・レンダリング・アプリケーションにより、特別の要求が課され、新しい機会が利用できるようになる。例えば、画像表示は、一般に、多数の反復計算を必要とするので、汎用計算より容易に超並列処理を利用することができる。
高性能のグラフィックス・システムにおいては、計算数が単一の処理ユニットの能力をはるかに超えるので、並列システムが、グラフィックス・アーキテクチャの基準になった。グラフィックス計算を行うために、シリコン・ベースのグラフィックス処理ユニット（ＧＰＵ）において、今日、非常に高レベルの並列処理が利用されている。
【０００２】
典型的には、これらの計算は、グラフィック・システムの一部である、ビデオ・メモリがサポートするグラフィックス・パイプラインによって実行される。図１Ａは、ＣＰＵ（１１１）、システム・メモリ（１１２）、Ｉ／Ｏチップセット（１１３）、高速ＣＰＵ−ＧＰＵバス（１１４）（例えば、ＰＣＩエキスプレス（ＰＣＩ  ｅｘｐｒｅｓｓ）１６ｘ）、シングルＧＰＵに基づいたビデオ（グラフィック）カード（１１５）、及びディスプレイ（１１６）から構成される、ＰＣアーキテクチャの一部のような従来のグラフィック・システムのブロック図を示す。図１Ｂに示されるようなシングルＧＰＵグラフィック・パイプラインは、２つの主要部分、すなわち３Ｄグラフィックス・プリミティブ（例えば、多角形）を処理するための幾何学的サブシステムと、ピクセル値を計算するためのピクセル・サブシステムとに分解される。これらの２つの部分は、並行処理の増大のために一貫して設計される。
【０００３】
幾何学的サブシステムにおいて、グラフィックス・データベースは、規則正しく、一般に、ほぼ同一の処理を受ける多数のプリミティブからなるので、自然の並行処理は、データを別個のストリームにパーティション化し、これらを独立して処理するというものである。ピクセル・サブシステムにおいて、ピクセルは、多くの方法で並行して生成できるため、画像並行処理は、長い間、高速ラスター化アーキテクチャのための魅力的な手法であった。従来技術における並列性の高いグラフィック処理ユニット・チップ（ＧＰＵ）の一例が、図２Ａ（ＡＴＩによる「３Ｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｗｈｉｔｅ  Ｐａｐｅｒ」から取られた）に示される。幾何学的サブシステムは、６個の並列パイプからなり、ピクセル・サブシステムは、１６個の並列パイプを有する。
【０００４】
しかしながら、図２Ｂに示されるように、これらの２つのサブシステム間の「収束段階」２２１は、全データ・ストリーム帯域幅を処理する必要があるので、非常に問題がある。ピクセル・サブシステムにおいては、変換されクリップされたプリミティブの多数のストリームを、ラスター化を行っているプロセッサに向けなければならない。このことは、異なるプロセッサが異なるスクリーン領域に割り当てられる間、空間的情報に基づいてプリミティブを分類することを必要とする場合がある。並列ピクセル段階における第２の問題は、それらのデータが並列プロセッサを通るとき、データの順序が変わり得ることである。例えば、１つのプロセッサは、別のプロセッサが単一の大きいプリミティブを変換する前に２つの小さいプリミティブを変換することがある。別のウィンドウの代わりにあるウィンドウを更新する、又はダブル・バッファ間で切り替えるためのコマンドのような特定のグローバル・コマンドは、コマンドの前後にデータを同期させることが必要である。幾何学段階とピクセル段階の間のこの収束段階は、シングルＧＰＵにおける並列処理を制限する。
【０００５】
並列処理のレベルを向上させる典型的な技術は、多数のＧＰＵカード、又はカード上の多数のＧＰＵチップを使用するものであり、ここで、シングル・コアＧＰＵにおける収束制限を超えて、レンダリング性能が、さらに改善される。この技術は、今日、幾つかの学問研究（例えば、スタンフォード大学によるクロム並列グラフィックス・システム）及び商品（例えば、ＳＬＩ−Ｎｖｉｄｉａ、ＣｒｏｓｓｆｉｒｅによるデュアルＧＰＵシステム−ＡＴＩによるデュアルＧＰＵ）によって実施されている。図３は、Ｎｖｉｄｉａ  ＳＬＩ技術に基づいた商業的なデュアルＧＰＵシステム、Ａｓｕｓ  Ａ８Ｎ−ＳＬＩを示す。
【０００６】
並列化は、グラフィック・システムにおけるボトルネックを軽減することによって、性能を向上させることができる。図２Ｃは、バス転送、幾何学的処理、及びフラグメント・フィル・バウンド処理のセグメント化された段階に分解される、グラフィック・パイプラインにおける典型的なボトルネックを示す。所定のパイプラインは、上記の段階の１つの最も弱いリンクと同じ強さにすぎず、よって、主要なボトルネックが全体の処理能力を決定する。図２Ｃに示されるように、パイプライン・ボトルネックは、（２３１）幾何学的形状、テクスチャ、アニメーション、及びメタデータ転送、（２３２）幾何学的データのメモリ制限、（２３３）テクスチャ・データのメモリ制限、（２３４）幾何学的変換、及び（２３５）フラグメント・レンダリングに起因する。
【０００７】
時分割（各ＧＰＵが、次の連続するフレームを与える）、画像分割（各ＧＰＵが、各フレームのピクセルのサブセットを与える）、及びオブジェクト分割（各ＧＰＵが、幾何学的形状及びテクスチャを含む全体のデータのサブセットを与える）、並びにこれらの派生物及び組み合わせのような、ＧＰＵを並列化するための異なる方法がある。有望ではあるが、ＧＰＵチップのクラスタを並列化するこの手法は、ＧＰＵ間の通信の制限された帯域幅、機械的複雑さ（例えば、サイズ、パワー、及び熱）、コンポーネントの冗長性、及び高いコストのような幾つかの固有の問題に悩む。
したがって、こうした従来技術の装置及び方法の短所及び欠点を回避する、高速のグラフィックス処理及び表示のための改善された方法及び装置に対する、当該技術分野における大きな必要性がある。
【発明の開示】
【０００８】
したがって、本発明の主な目的は、従来技術の装置及び方法の短所及び欠点を回避する、高速グラフィックス処理及び表示のための新規な方法及び装置を提供することである。
本発明の別の目的は、無制限のグラフィックス並列処理を用いて、多数のグラフィックス・コアを有する新規なグラフィックス処理及び表示システムを提供し、シングルＧＰＵシステムの固有の収束ボトルネックを回避することである。
【０００９】
本発明の別の目的は、最良のグラフィックス性能を保証する新規なグラフィックス処理及び表示システムを提供し、マルチ・チップ・システム、制限された帯域幅のＧＰＵ間通信、機械的複雑さ（サイズ、パワー、及び熱）、コンポーネントの冗長性、及び高コストの欠点をなくすることである。
本発明の別の目的は、単一のシリコン・チップにおいて多数のグラフィック・コアを並列化することによって、増幅されたグラフィックス処理及び表示パワーを有する新規なグラフィックス処理及び表示システムを提供することである。
【００１０】
本発明の別の目的は、無制限の数の多数のグラフィック・コアを有するシリコン・チップ上に実現される新規なグラフィックス処理及び表示システムを提供することである。
本発明の別の目的は、多数のグラフィック・コアのクラスタを用いるシリコン・チップ上に実現される新規なグラフィックス処理及び表示システムを提供することである。
【００１１】
本発明の別の目的は、多数のグラフィック・コア又はパイプを有するシリコン・チップ（すなわち、マルチ・パイプ・システム・オン・チップ、又はＭＰ−ＳＯＣ）上に実現される新規なグラフィックス処理及び表示システムを提供し、高い並列性のグラフィックス表示性能を達成するためのアーキテクチャの柔軟性を提供することである。
本発明の別の目的は、多数のグラフィック・コアを有するシリコン・チップ上に実現され、その幾何学的形状及びピクセル処理サブシステムの両方の中で異なるモードの並列処理を適応的にサポートする、新規なグラフィックス処理及び表示システムを提供することである。
【００１２】
本発明の別の目的は、多数のＧＰＵコアを有するシリコン・チップ上に実現され、高度なグラフィックス処理及び表示性能のための適応性を提供する、新規なグラフィックス処理及び表示システムを提供することである。
本発明の別の目的は、頂点（すなわち、３Ｄの多角形幾何学形状）処理及びフラグメント処理のグラフィック・パイプラインのボトルネックが、トランスペアレントにかつインテリジェントに解決される、新規なグラフィックス処理及び表示システムを提供することである。
【００１３】
本発明の別の目的は、データ及びグラフィック・コマンドのインテリジェントな分解のための方法及びシステムを提供し、状態機械のようなグラフィック・ライブラリの基本的特徴を保持し、グラフィック標準を堅く守ることである。
本発明の別の目的は、多数のグラフィック・コアを有するシリコン・チップ上に実現されるグラフィックス処理及び表示システムをサポートする新しいＰＣＩグラフィックス・カードを提供し、最良の並列性能を達成するためのアーキテクチャ上の柔軟性を提供することである。
【００１４】
本発明の別の目的は、改善されたグラフィックス処理及び表示能力を有し、多数のグラフィック・コアを備えたシリコン・チップを有するグラフィックス・カードを使用し、最良の並列性能を達成するためのアーキテクチャ上の柔軟性を提供するコンピュータ・システムを提供することである。
本発明の別の目的は、ビデオ・ゲーム、仮想現実、科学的視覚化を含むアプリケーション、及び写実的なグラフィックス表示能力を必要とする又は要求する他の対話式アプリケーションによって必要とされる、改善されたグラフィックス処理及び表示性能を有するコンピュータ・システムを提供することである。
本発明のこれら及び他の目的及び利点は、以下に明らかになるであろう。
【発明を実施するための最良の形態】
【００１５】
本発明の目的を実施する方法をより完全に理解するために、簡単に下記に説明される添付の図面と共に、例証となる実施形態の以下の詳細な説明を読むことができる。
引用により本明細書に組み込まれるＷＩＰＯ公開番号ＷＯ２００５／０５０５５７  Ａ２号として発行された、出願人の従来のＰＣＴ出願第ＰＣＴ／ＩＬ０４／００１０６９号において教示された技術は、高性能でスケーラブルな視覚化解決法、多数の並列化モードを用いるオブジェクト分割分解アルゴリズム、及び適応並列化モードの管理を提供するために、市販のＧＰＵチップを張り合わせる（並行して機能する）ように働く、ハードウェア・ハブ・ドライバ及びソフトウェア・ハブ・ドライバから構成されるグラフィックス・スケーラブル・ハブ・アーキテクチャの使用を教示する。同じく、引用により本明細書に組み込まれるＷＩＰＯ公開番号ＷＯ２００４／０７０６５２  Ａ２号として発行されたＰＣＴ出願第ＰＣＴ／ＩＬ２００４／００００７９号は、オブジェクト分割並列処理の一部として、高速かつ安価なフレーム・バッファの再構成を提供するために、共用の意思決定に基づいた画像機構の構成の使用も教示する。
【００１６】
上記に特定された出願人のＰＣＴ出願において教示される手法は、多数の利益及び利点、すなわち、市販のＧＰＵを使用することによって、既存のアプリケーションに対してトランスペアレントに強力な並列システムを構成する能力を有する。しかしながら、多くのアプリケーションにおいては、代替的な手法を用いて、すなわち、高性能、高フレーム・レートの安定性のグラフィック解決法を比較的低コストで既存のグラフィック・アプリケーションに対してトランスペアレントに送信するために、モノリシック・シリコン・チップ上に実現された強力なグラフィックス処理及び表示システムを用いる、グラフィックス処理及び表示アーキテクチャをＰＣに提供することによって、従来のグラフィック・システムにおけるこうした利点を提供することが望ましい。
【００１７】
この新規な代替的手法の利点は、多数のＧＰＵクラスタのＶＳＬＩベースの小型化、高帯域幅のＧＰＵ間通信、低電力及び熱損失、コンポーネントの非冗長性、及び低コストを含む。ここで、この代替的手法の実施についての詳細が下記に説明される。
【００１８】
一般に、ここに開示される本発明は、好ましくはモノリシック構成のシングル・チップ上に実現された多数のグラフィック・パイプライン・アーキテクチャとして、半導体レベル上のグラフィックス機能を並列化するための改善された方法及び手段を教示する。表現の都合上、こうしたデバイスは、ここでは「マルチ・パイプ・システム・オン・チップ」すなわち「ＭＰ−ＳＯＣ」と呼ばれる。「シリコン・チップ上の」このシステムは、異なる並列化スキームを可能にする、柔軟なトポロジーで組織されたＧＰＵ駆動型パイプライン・コアのクラスタを含む。理論的には、パイプライン・コアの数は無制限であり、シリコン領域の考慮事項によってのみ制限される。ＭＰ−ＳＯＣは、ホストＣＰＵに常駐しているソフトウェア・ドライバ・モードによって駆動される。種々の並列化スキームにより性能の最適化が可能になる。これらのスキームは、時分割、画像分割、オブジェクト分割、及びこれらの派生物である。
本発明の例証となる実施形態は、マルチＧＰＵチップの利点を享受する、すなわち、シングルＧＰＵの収束制限をバイパスすると同時に、ＧＰＵ間の通信の制限された帯域幅、機械的複雑さ（サイズ、パワー、及び熱）、コンポーネントの冗長性、及び高コストのようなマルチＧＰＵシステムの固有の問題を除去する。
【００１９】
図４Ａに示されるように、本実施形態の物理的グラフィック・システムが、従来のマザーボード（４１８）、及びＭＰ−ＳＯＣベースのグラフィック・カード（４１５）から構成される。マザーボードは、ＣＰＵ（４１１）、システム・メモリ（４１２）、Ｉ／Ｏチップセット（４１３）であり、他の非グラフィック・コンポーネントでもある通常の組のコンポーネントを支持する（ＰＣマザーボード上に常駐する完全な組のコンポーネントについては、図１Ａを参照されたい）。ＭＰ−ＳＯＣチップ（４１６）に基づいたプリント回路グラフィック・カードは、ＰＣＩエキスプレス（ＰＣＩ  ｅｘｐｒｅｓｓ）１６×レーン・コネクタ（４１４）を介して、マザーボードに接続される。カードはまた、少なくとも１つのスクリーン（４１７）への出力も有する。ＭＰ−ＳＯＣグラフィック・カードは、マザーボード上の従来のシングルＧＰＵグラフィック・カードに取って代わるものである。ＭＰ−ＳＯＣグラフィック・カードが従来のＰＣシステム内に統合される方法は、図４Ａを図１Ａと比較することにより明らかになる。単に、シングルＧＰＵグラフィック・カード（図１Ａにおいて丸で囲まれた）を本発明のＭＰ−ＳＯＣベースのカードと置き換え、そのドライバをホストＣＰＵ（４１９）上のマルチ・パイプ・ソフト・ドライバと置き換えることによって、本発明のシステムは、ここに説明される利益及び利点の全てを有するものとして実現される。この変更は、改善された性能の他に、ユーザ及びアプリケーションに対して完全にトランスペアレントである。
【００２０】
図４Ｂは、本発明の可能な物理的実装を示す。ＭＰ−ＳＯＣ（４２２）が取り付けられる標準形式のＰＣカード（４２１）は、ＰＣＩエキスプレス・１６×・レーン・コネクタ（４２３）を介して、ホスト・コンピュータ・システムのマザーボードに接続される。表示スクリーンは、標準ＤＶＩコネクタ（４２４）を介して接続される。ＭＰ−ＳＯＣ上の多数のパイプラインは、大きい電力を消費すると予想され、ＰＣＩエキスプレス・コネクタを介する標準的な電源は十分ではないので、専用電源ケーブル（４２５）を介して、補助電源がカードに供給される。
【００２１】
図４Ｃは、ＭＰ−ＳＯＣベースのカードが接続されるマザーボード上のＰＣＩエキスプレス・コネクタ（４３１）を示す。ＰＣ上へのＭＰ−ＳＯＣの標準的な物理的実装は、従来技術のＧＰＵ駆動型ビデオ・グラフィックス・カードと容易かつ自然に置き換えられることを強調すべきである。
【００２２】
図４Ｄ及び図４Ｅは、半導体デバイスの物理的実装をさらに説明するために、ＭＰ−ＳＯＣチップの技術者の概念を説明する。図４Ｄは、可能なＭＰ−ＳＯＣシリコン配置を示す。この例においては、４つの市販のグラフィック・パイプライン・コアがある。コアの数は、シリコン領域の制限を除いて如何なる数にも拡大縮小することができる。ＭＰ−ＳＯＣの機能ユニットについての詳細な説明が下記に与えられる。図４Ｅは、ＭＰ−ＳＯＣチップの可能なパッキング及び外観を示す。前述のように、このチップは、他の周辺コンポーネント（例えば、メモリ・チップ、バス・チップ等）と共に、標準的なサイズのＰＣＢ（プリント基板）上に取り付けられ、ＰＣシステム内の唯一のグラフィック・カードとして用いられ、従来技術のビデオ・グラフィックス・カードと置き換わることを意図する。ＭＰ−ＳＯＣベースのカードの製造は、グラフィック・カード製造業者（例えば、ＡｓｕｓＴｅｃｈ、Ｇｉｇａｂｙｔｅなど）によって行うことができる。
【００２３】
図５に示されるように、マルチ・パイプＳＯＣアーキテクチャは、次のコンポーネントからなる。すなわち、
・ＣＰＵバス（例えば、１６レーンのＰＣＩエキスプレス）上に配置されたルーティング・センタ。このルーティング・センタは、グラフィック・パイプライン・コアの間でＣＰＵから来るグラフィックス・データ・ストリームを分散させ、次に、与えられた結果（フレーム・バッファ）をコアから合成ユニットに集める。このデータ分散方法は、現在の並列化モードに応じて、制御ユニットにより命令される。
・合成ユニットが、進行中の並列化モードに従って、部分的なフレーム・バッファを再構成する。
・制御ユニットは、ＣＰＵに常駐するソフト・マルチ・パイプ・ドライバの制御下にある。この制御ユニットは、並列化モードに従ってＭＰ−ＳＯＣシステム全体の構成及び機能を担当する。
・内部メモリ及び外部メモリを有する処理要素（ＰＥ）、及び随意的なキャッシュ・メモリ。このＰＥは、アーキテクチャ上の必要性に応じて、如何なる種類のプロセッサ・オン・チップとすることができる。ＰＥのために働くことに加えて、キャッシュ及びメモリは、テクスチャ、頂点オブジェクト等のような全てのパイプライン・コアに共通なグラフィックス・データをキャッシュに入れるために用いることができる。
・多数のＧＰＵ駆動型パイプライン・コア。これらのコアは、独自に設計されたものにしてもよいが、そうする必要はない。これらは、本来、通常のシングル・コアＧＰＵとして設計される。
・プロファイリング機能ユニット。このユニットは、メモリ速度、バイトでのメモリ使用量、与えられた総ピクセル数、幾何学的データ入力レンダリング、フレーム・レート、各パイプライン・コアの作業負荷、パイプライン・コアの間の負荷平衡、転送されたデータ容量、テクスチャ・カウント、及び奥行き複雑度のようなベンチマーク・データを、マルチ・パイプ・ドライバに送る。
・単一又は多数のスクリーンを実行することができる表示インターフェース。
【００２４】
図６に示されるように、システムのソフトウェアが、グラフィック・アプリケーション、グラフィックス・ライブラリ（例えば、グラフィック標準ＯｐｅｎＧＬ又はＤｉｒｅｃｔＸ）、及び独自ソフト・ドライバ（マルチ・パイプ・ドライバ）を含む。一般的なグラフィックス・アプリケーションは、ＭＰ−ＳＯＣ上で実行するために、変更も、特別なポーティングの努力も必要としない。
【００２５】
図７は、本発明の実施形態による、マルチ・パイプ・ドライバの主なタスクを示す機能ブロック図を示す。マルチ・パイプ・ドライバは、少なくとも次の動作を行う。すなわち、
・一般的なＧＰＵドライバ。オペレーティング・システム、グラフィック・ライブラリ（例えば、ＯｐｅｎＧＬ又はＤｉｒｅｃｔＸ）との対話及びＧＰＵの制御と関連した一般的なＧＰＵドライバの全ての機能を実行する。
・分散されたグラフィック機能制御。このモジュールは、並列化ポリシー管理に従って、異なる並列化モードを実行することに関連した全ての機能を実行する。以下により詳細に説明されるように、各々のモードにおいて、データは、パイプラインの間で様々に分散され、再構成される。
・状態の監視。グラフィック・ライブラリ（例えば、ＯｐｅｎＧＬ及びＧｏｒｅｃｔＸ）は、状態機械である。並列化では、グラフィック・システム全体にわたってまとまった状態に保持されなければならない。このことは、グラフィック・パイプラインにわたって有効な状態を保持するために、状態コマンド及びデータの一部を全てのパイプラインに対して多重化する必要があると同時に、入ってくるコマンドの全てを連続的に分析することによって行われる。特別な問題が、フラッシュ（Ｆｌｕｓｈ）、スワップ（Ｓｗａｐ）、アルファ・ブレンディング（Ａｌｐｈａ  ｂｌｅｎｄｉｎｇ）のようなブロッキング操作といわれるクラスによりもたらされ、このことは、グラフィック・システム全体に影響を与え、システムをブロッキング・モードに設定する。ブロッキング操作は、これらが、合成された有効ＦＢデータを必要とすること、よって、本発明の並列設定において、全てのパイプライン・コアへの影響を有するという点で、例外的なものである。ブロッキング操作の処理についてのより詳細な説明が以下に与えられる。
・アプリケーション・プロファイリング・分析モジュール。このモジュールは、実行中のアプリケーションのリアルタイム・プロファイリング及び分析を行う。このモジュールは、メモリ速度、バイトでのメモリ使用量、与えられた総ピクセル数、幾何学的データ入力レンダリング、フレーム・レート、各パイプライン・コアの作業負荷、グラフィック・パイプラインの間の負荷平衡、転送されたデータ容量、テクスチャ・カウント、及び奥行き複雑度のような、システム内のアプリケーション・パラメータを連続的に監視する。プロファイラ・モジュールは、ボトルネックを引き起こすグラフィックス・システム内の問題領域を特定する。プロファイラ・モジュールは、マルチ・パイプ・コアのレジスタ、ＭＰ−ＳＯＣ制御ユニットのレジスタ、及びグラフィックＡＰＩコマンド（例えば、ＯｐｅｎＧＬ、ＤｉｒｅｃｔＸ）からの入力を必要とする。
・並列化ポリシー管理は、上記のプロファイリング及び分析に基づいて、フレームごとに、実行されるべき並列化モードを決定する。次に、この決定は、ＭＰ−ＳＯＣ内の制御ユニットによって実行される。
【００２６】
本発明の主要な特徴は、性能ボトルネックの改善を可能にするトポロジーの柔軟性である。こうした柔軟性は、ルーティング・センタ及び合成ユニットにおける異なるマージング・スキームによって、グラフィック・パイプラインのクラスタを再構成することによって得られる。異なる並列化スキームは、異なる性能ボトルネックに影響を与える。したがって、対応する並列化スキームを用いることによって、プロファイリング・モジュールによって特定されるボトルネックを取り除くことができる。
【００２７】
図７Ｂのフローチャートは、３つの並列化モード、すなわちオブジェクト分割、画像分割、及び時分割を実行する機構を説明する。この機構は、ＭＰ−ＳＯＣユニットを有するソフト・ドライバ・モジュールの活動を組み合わせる。フローチャートのサイクルは、１つのフレームである。以下に説明されるように、これが好ましい並列化モードであるので、手始めのモードは、オブジェクト分割（ＯＤ）である。アプリケーションのプロファイリング及び分析は、ソフト・プロファイリング及び分析モジュール（Ｓ−ＰＡ）の制御下で常にオンである。並列化ポリシー管理（Ｓ−ＰＰＭ）モジュールが最適なモードについてチェックするあらゆるフレームは、３つの並列化モードから選択される。
【００２８】
オブジェクト分割（ＯＤ）経路が取られたと仮定する。分散されたグラフィック機能制御（Ｓ−ＤＧＦＣ）モジュールは、幾何学的データの分散及び使用中の合成アルゴリズムによって特徴付けられる、ＯＤについてのシステム全体を構成する。この構成が、図８に示され、後で詳細に説明される。Ｓ−ＤＧＦＣモジュールは、幾何学的データをパーティションに分解し、各々が、レンダリングのために、ルーティング・ユニット（Ｃ−ＲＣ）によって異なるＧＰＵ駆動型パイプ・コア（Ｃ−ＰＣ）に送られる。図１１に示され、以下に詳細に説明されるように、レンダリングされたデータ・ストリームは、コマンドのブロックについて、状態監視（Ｓ−ＳＭ）モジュールにより監視される。レンダリングが完了すると、全てのフレーム・バッファが、制御ユニット（Ｃ−Ｃｔｒｌ）によって合成ユニット（Ｃ−ＣＵ）に移動され、奥行き試験（以下に詳細に説明されるような）に基づいて全てのバッファを合成し１つにする。表示インターフェース・ユニット（Ｃ−ＤＩ）によって、最後のＦＢがディスプレイに移動される。フレームの終わりに、Ｓ−ＰＡ及びＳ−ＰＰＭモジュールは、並列化モード変更の選択肢を試験する。同じモードにとどまる決定行われた場合には、別のデータ・パーティションで新しいＯＤフレームが開始される。他の場合には、Ｓ−ＰＡ及びＳ−ＰＰＭモジュールによって、最適なモードについての新たな試験が行われる。
【００２９】
フローチャートの左の経路は、画像分割（ＩＤ）操作である。Ｓ−ＤＧＦＣによって設定されるようなＩＤ構成も図９に示され、後に詳細に説明される。これは、全てのパイプ・コア間で同じデータをブロードキャストすること、及び、画像ベースの合成アルゴリズムによって特徴付けられる。パイプ・コア間の画像のパーティション化は、Ｓ−ＤＧＦＣによって行われる。データは、ルーティング・センタによってブロードキャストされ、次に、パイプ・コア（Ｃ−ＰＣ）においてレンダリングされ、各々のものに、画像の別の部分が指定される。レンダリングが遂行されると、Ｃ−Ｃｔｒｌは、完全な画像の再構成のために、部分的なＦＢを合成ユニット（Ｃ−ＣＵ）に移動させる。次に、Ｃ−ＤＩは、ＦＢをディスプレイに移動させる。最後に、Ｓ−ＰＳ及びＳ−ＰＰＭモジュールによって、変更試験が行われる。結果を保留しながら、新しいフレームがＩＤモードを続行するか、又は別のモードに切り替わる。
【００３０】
時分割モードは、ＧＰＵ駆動型パイプ・コアの間でフレームを交互させる。時分割モードは、Ｓ−ＤＦＣモジュールによって交互されるように設定され、各々のコアは、Ｓ−ＤＧＦＣによってフレーム・データが指定され、Ｃ−ＲＣユニットによって移送される。各々のコア（Ｃ−ＰＣ）は、フレームを一列に生成する。次に、Ｃ−Ｃｔｒｌが、合成ユニットを介して、成熟したＦＢを表示インターフェースに、そしてディスプレイに移動させる。実際には、このモードの合成ユニットは、単にトランジットとして働く。最終的には、前の他のモードと同じように、Ｓ−ＰＡ及びＳ−ＰＰＭモジュールによるモード変更試験がある。
【００３１】
図８は、オブジェクト分割の並列化スキームについて説明する。ソフト・ドライバ、具体的には、分散されたグラフィック機能制御モジュールは、シーンの多角形データをＮ個の部分的ストリームに分解する（Ｎは、関係するパイプライン・コアの数である）。データ全体は、ＧＰＵドライバ・モジュールによって、ＭＰ−ＳＯＣルーティング・センタに送られ、ここで、各々がおよそ１／Ｎの多角形であるソフト・ドライバのパーティションに応じて、レンダリングのためにデータをＮ個のパイプライン・コアに分散させる。パイプライン・コアにおけるレンダリングは、ソフト・ドライバ（図１１及び以下に詳細に説明される）の状態監視モジュールの監視下で行われる。結果として得られる完全なフレーム・バッファが、合成ユニット内に集められる。これらは、可視ピクセルの最後の組を見つけるために、ピクセルごとに奥行きが合成される。各々のｘ−ｙ座標において、合成機構によって全ての隠されたピクセルが排除される。最後のフレーム・バッファが、ディスプレイに移動される。
【００３２】
図９は、ソフト・ドライバのプロファイリング及び分析モジュールにおけるプロファイリング、分析、及び意思決定の結果として、並列化ポリシー管理モジュールによって選択される画像分割並列化スキームについて説明する。各々のパイプライン・コアに、スクリーンの固有の１／Ｎ部分が指定される。完全な多角形データが、ＧＰＵドライバ・モジュール及びルーティング・センタを介して、パイプライン・コアの各々に送られる。パイプライン・コア内の並列レンダリングにより、各々に部分的なフレーム・バッファがもたらされる。画像セグメントは、単の一画像への２Ｄマージングのために合成ユニットに移動され、ディスプレイに移動される。
【００３３】
図１０は、ソフト・ドライバのプロファイリング及び分析モジュールにおけるプロファイリング、分析、及び意思決定の結果として、並列化ポリシー管理モジュールによって選択される時分割並列化スキームについて説明する。分散されたグラフィック機能制御モジュールは、ＧＰＵドライバ・モジュールにより、フレームをＮサイクルに分割し（Ｎ＝コアの数）、多角形データ全体をレンダリングするために、Ｎ個のフレームの各コアのタイム・スロットを可能にする。したがって、シーン多角形データは、ルータを介して、一度に異なるパイプライン・コアに分散される。各コアは、Ｎサイクルの間レンダリングを実行し、単一のフレームについて、完全なフレーム・バッファをディスプレイに出力する。合成ユニットは、ここでは、全てのパイプライン・コアの間でディスプレイへのアクセスを交互に行わせる単一のスイッチとして機能する。
異なる並列化スキームは、異なる性能ボトルネックを解決する。したがって、適時に適切なスキームを適用することによって、ボトルネックを識別し、次にこれを排除する（低減させる）必要がある。
【００３４】
図７Ｂに示されるように、プロファイラは、ボトルネックを生じさせるグラフィックス・システム内の問題領域を識別する。このことは、ドライバのアプリケーション・プロファイリング及び分析モジュールにおいて実施される。プロファイラ・モジュールは、グラフィックＡＰＩコマンド（例えば、ＯｐｅｎＧＬ、ＤｉｒｅｃｔＸ、その他）の使用、メモリ速度、バイトでのメモリ使用量、与えられた総ピクセル数、幾何学的データ入力レンダリング、フレーム・レート、各ＧＰＵの作業負荷、ＧＰＵの間の負荷平衡、転送されたデータ容量、及び奥行き複雑度等のような入力を必要とする。これらのデータ・タイプは、ＭＰ−ＳＯＣベースのグラフィックス・システム内の次のソースから集められる。すなわち、
１．ＭＰ−ＳＯＣにおけるプロファイリング機能
２．ドライバ
３．パイプライン・コア
４．チップセット・アーキテクチャ性能（ＣＨＡＰ）カウンタ
５．
典型的に、性能データは、フレーム時間ベースで取り出されるが、周期性をプロファイラの構成属性とすることもでき、或いは、性能データを取り出す前に検知するようにプロファイラが設計される検知された構成イベントに基づいて、周期性を設定することができる。
【００３５】
好ましい並列化方法の選択の結果もたらされる分析は、明確な場合には（以下に説明される）、より多くのボトルネックを減少させるという点で、オブジェクト分割方法が他の分割方法に取って代わるという仮定に基づいている。各パイプライン・コアにおけるフラグメント／フィル・バウンド処理だけを減少させる画像分割とは対照的に、オブジェクト分割は、パイプラインにわたる全てのボトルネックを実際に軽減させる。すなわち、（ｉ）各パイプラインにおいて、幾何学的形状（すなわち、多角形、線、点等）変換処理の負荷が軽減され、多角形の１／Ｎだけを処理する（Ｎは、関係するパイプライン・コアの数）、（ｉｉ）より少ない多角形がラスター化機構に供給されるので、フィル・バウンド処理が低減される、（ｉｉｉ）より少ない幾何学的メモリしか必要としない。（ｉｖ）より少ないテキスチャ・メモリしか必要としない。
【００３６】
時分割方法は、フレーム生成ごとにより多くの時間、各パイプライン・コアを許容することによってボトルネックを軽減するが、この方法は、ＣＰＵボトルネックのような深刻な問題に悩み、パイプライン・コアは、互いに利用できないフレーム・バッファを生成し、パイプラインの待ち時間がよくある。したがって、この方法は、全てのアプリケーションには適していない。その結果として、ボトルネックを解決するものとしての優位性のために、オブジェクト分割が主要な並列化モードになる。
【００３７】
以下のオブジェクト分割アルゴリズムは、多数のグラフィック・パイプライン・コアの間で多角形を分散させる。一般的なアプリケーションは、グラフィック・データのブロック（各々のブロックは、単一の頂点操作、又はバッファ・ベースの操作（頂点アレイ）のような幾何学的操作のリストからなる）を含むグラフィック・コールのストリームを生成する。典型的には、分解アルゴリズムが、パイプライン・コア間のデータを分割し、ブロックを基本データ単位として保護する。幾何学的操作は、データ・ブロックにアタッチされ、データを処理する方法を命令する。ブロックは、指定されたＧＰＵに向けられる。しかしながら、グラフィック・システム全体に影響を与え、システムをブロッキング・モードに設定する、フラッシュ、スワップ、アルファ・ブレンディングのようなブロッキング操作のグループに属する操作がある。ブロッキング操作は、これらが、合成された有効ＦＢデータを必要とすること、よって、本発明の並列設定において、全てのパイプライン・コアへの影響を有するという点で、例外的なものである。したがって、ブロッキング操作の１つが出されるたびに、全てのパイプライン・コアを同期させなければならない。各フレームは、フレームを修了させる少なくとも２つのブロッキング操作、すなわちフラッシュ及びスワップを有する。
【００３８】
図１１は、本発明の例証となる実施形態による、多数のＧＰＵ駆動型パイプライン・コアの間で多角形を分散させるためのアルゴリズムについて説明するフローチャートを示す。フレーム活動は、ＧＰＵの間でデータ・ブロックを分散させることで始まる。ステップ１１１２において、各々のグラフィック操作は、ブロッキング・モードの試験が行われる。ステップ１１１３において、通常の経路（非ブロッキング経路）において、データは、指定されたパイプライン・コアに再指向される。このループは、ブロッキング操作が検知されるまで繰り返される。
【００３９】
ブロッキング操作が検知されると、ステップ１１１４において、少なくとも次のシーケンスによって、すなわち、
レンダリングを終了させ、パイプライン・コア内の内部パイプラインをクリーンにする（フラッシング）ために、フラッシュ操作を行い、
全てのＦＢのコンテンツを単一のＦＢにマージするために合成を行い、
単一のＦＢを再び全てのパイプライン・コアに伝送し、継続のための共通の基盤を形成する、
ことによって、全てのパイプライン・コアを同期させなければならない。
【００４０】
スワップ操作は、ダブル・バッファリング機構を作動させ、前後のカラー・バッファをスワップする。ステップ１１１５においてスワップが検知された場合、このことは、パイプライン０を除いた全てのパイプライン・コアにおいて、構成されたフレームを終了させなければならないことを意味する。全てのパイプライン・コアは、コンテンツを格納するように指定されたＦＢの最終的な構成されたコンテンツを有するが、ステップ１１１６において、スクリーン（パイプライン０）に接続されたものだけが、画像を表示する。
【００４１】
別の場合は、シーンに全体的に適用され、全てのパイプライン・コアにブロードキャストスされることが必要な操作である。透明性のためのアルファ・ブレンディングのような他のブロッキング操作の１つが識別される場合には、ステップ１１１４において、全てのパイプライン・コアが以前のようにフラッシュされ、共通のＦＢにマージされる。このとき、スワップ操作は検知されず（ステップ１１１５）、したがって、全てのパイプライン・コアは同じデータを有し、ブロッキング・モードがオンである限り（ステップ１１１７）、これらの全てが同じデータを処理し続ける（ステップ１１１８）。ステップ１１１７において、ブロック・モードの終わりが検知された場合には、パイプライン・コアは、指定されたデータの作業に戻る（ステップ１１１３）。
【００４２】
オブジェクト分割の相対的な利点は、シーンの奥行き複雑度に大きく依存する。奥行き複雑度は、奥行き試験の結果としてのフラグメント交換の数（あらゆるピクセル上に描画される多角形の数）である。フラグメント交換がない（例えば、シーンの全ての多角形が同じ奥行きレベルに位置する）理想的な場合には、フィルは、減少した数の多角形に従って減少される（２つのパイプライン・コアと同様に）。しかしながら、奥行き複雑度が大きくなると、オブジェクト分割の利点は低下し、例えば、少数の多角形及び大量のテクスチャを有するアプリケーションなど、場合によっては、画像分割がより良好に行われることさえあり得る。
【００４３】
さらに、本発明は、前の処理段階によって示される負荷に基づいて、オブジェクト分割法を、画像及び時間領域における画像分割及び時分割方法と組み合わせる動的負荷平衡技術を導入する。３つの並列化方法の全てを統一されたフレームワークに組み合わせることにより、グラフィック・システムのフレーム・レートの安定性が動的に増大される。
【００４４】
図１２は、本発明の実施形態による、８つのパイプライン・コアを用いるシステムのサンプル構成を開示する。上記のサンプル構成によると、平衡型グラフィック・アプリケーションが想定される。時分割並列処理のために、パイプライン・コアは、２つのグループに分割される。１、２、３及び４と索引付けされたパイプライン・コアは、偶数のフレームを処理するように構成され、５、６、７及び８と索引付けされたパイプライン・コアは、奇数のフレームを処理するように構成されている。各グループ内で、２つのパイプライン・コア・サブグループが、画像分割のために設定され、小さい索引（それぞれ、１、２及び５、６）を有するパイプライン・コアは、スクリーンの半分を処理するように構成され、大きい高い索引のパイプライン・コア（それぞれ、３、４及び７、８）は、もう半分を処理するように構成されている。最終的に、オブジェクト分割の場合、１、３、５及び７で索引付けされたパイプライン・コアにはオブジェクトの半分が与えられ、２、４、６及び８で索引付けされたパイプライン・コアにはオブジェクトのもう半分が与えられる。
【００４５】
ある時点で、前のフレームにおいて示されたボトルネックがパイプラインのラスタ段階で生じたことをシステムが検知した場合には、このことは、フラグメント処理がフレームをレンダリングするのにかかる時間を左右すること、及び、構成が不均衡であることを意味する。その時点で、パイプライン・コアは再構成され、その結果、各々のパイプライン・コアは、それぞれのフレーム内でスクリーンの四半分をレンダリングする。パイプライン・コア１、２、３、４と５、６、７、８との間の、時分割のための最初のパーティションは、依然として保持されるが、パイプライン・コア２及びパイプライン・コア５は、それぞれ偶数フレーム及び奇数フレーム内のスクリーンの第１の四半分をレンダリングするように構成される。パイプライン・コア１及び６は第２の四半分をレンダリングし、パイプライン・コア４及び７は第３の四半分をレンダリングし、パイプライン・コア３及び８は第４の四半分をレンダリングする。オブジェクト分割は含まれない。
【００４６】
さらに、ある時点で、前のフレームにおいて示されたボトルネックがパイプの幾何学的形状段階で生じたことをシステムが検知した場合、パイプライン・コアは再構成され、その結果、各々のパイプライン・コアは、それぞれのフレーム内の幾何学的データの四半分を処理する。つまり、パイプライン・コア３及び５は、それぞれ偶数フレーム及び奇数フレームにおける多角形の第１の四半分を処理するように構成される。パイプライン・コア１及び７は、第２の四半分をレンダリングし、パイプライン・コア４及び６は、第３の四半分をレンダリングし、パイプライン・コア２及び８は、第４の四半分をレンダリングする。画像分割は含まれない。
【００４７】
フレームごとに、（時分割モード、画像分割モード、及びオブジェクト分割モードである）３つの並列化モードの全てを組み合わせるために、８つのパイプライン・コアを用いることは十分であることに留意すべきである。８より大きいパイプライン・コアの数を用いることによっても、３つのモードの全てを組み合わせることが可能になるが、非対称的な方法である。時分割サイクルにおいて、フレーム・カウント内に柔軟性も存在する。上記の例において、８つのパイプライン・コアのクラスタは、各グループがフレームを処理する２つのグループに分解された。しかしながら、時分割モードにおけるフレームの数を、例えば３又は４フレームなど、２フレームより長いシーケンスに拡張することも可能である。
【００４８】
より少数のパイプライン・コアを用いることは、並列化モードの組み合わせを可能にするが、２つのモードの組み合わせだけである。例えば、４つのパイプライン・コアだけを用いることは、時分割モードなしで、画像分割モード及びオブジェクト分割モードの組み合わせを可能にする。このことは、左のクラスタであるパイプライン・コア１〜４のグループを用いる、図１２から明らかに理解される。同様に、上部クラスタを構成するパイプライン・コア１、２、５及び６のグループは、オブジェクト分割モード及び時分割モードの両方を使用する。最後に、中間クラスタを構成するパイプライン・コア２、４、５及び６のグループは、画像分割モード及び時分割モードを使用する。
【００４９】
上記の実施形態と同様に、並列化モード間の如何なる組み合わせも、グラフィック負荷を均等に平衡させるようにスケジュール設定できることに留意すべきである。
本発明によると、全てのパイプライン・コア間の並列化処理は、各フレームの処理性能を最適化するために、オブジェクト分割モード、又は画像分割モード、又は時分割モード、或いはこれらのいずれかの組み合わせに基づくことができることにも留意すべきである。
並列化モードにおける決定は、上記のプロファイリング及び分析に基づいて、フレームごとに行われる。上述され、図８、図９、図１０、及び図１２に示されるように、次に、並列化モードにおける決定は、並列化スキームの再構成によって実行される。
【００５０】
上に詳細に説明されるＭＰ−ＳＯＣアーキテクチャは、様々な種類のグラフィックス処理及び表示システムにおいて用いるために容易に適用することができる。本発明の例証となる実施形態が、ＰＣタイプのコンピュータ・システムと共に説明されたが、本発明は、モバイル・コンピュータ装置、内蔵システム、及び写実的な品質のグラフィック視覚化をサポートする科学及び産業上のコンピュータ・システムを含む、様々な種類のシステムにおけるグラフィック性能を改善するために用い得ることが理解される。
【００５１】
本発明の例証となる実施形態において説明されたグラフィックス処理及び表示技術は、ここに説明された新規な教示の利点を有する、当業者には容易に明らかになるであろう種々の方法で変更できることが理解される。本発明の例証となる実施形態のこうした変更及び変形の全ては、ここに添付される本発明の特許請求の範囲によって定義されるような本発明の精神及び範囲内に含まれると考えられる。
【図面の簡単な説明】
【００５２】
【図１Ａ】従来のシングルＧＰＵグラフィック・カードが丸で囲まれて示される、従来技術の標準的なＰＣアーキテクチャの概略図である。
【図１Ｂ】間のデータ収束ストリームが性能を著しく制限する重大なシステム・ボトルネックを示す、幾何学的形状及びピクセル処理サブシステムを有する、シングルＧＰＵを用いる従来技術のグラフィックス・システムの簡単化されたブロック図である。
【図２Ａ】幾何学的サブシステムが６個の並列パイプからなり、ピクセル・サブシステムが１６個の並列パイプからなる、典型的な従来技術のＡＴＩ  Ｘ８００グラフィック処理ユニット・チップ（ＧＰＵ）における高い並列性を示す概略図である。
【図２Ｂ】幾何学的形状と内部のピクセル並列エンジンとの間のボトルネック収束段階（セットアップ・エンジン）を示す、従来技術のグラフィック処理ユニット（ＧＰＵ）チップ（例えば、ＡＴＩ  Ｘ８００）の内部の概略図である。
【図２Ｃ】内部に存在するデータ・ボトルネック問題を示す、従来のグラフィックス・パイプラインの概略図である。
【図３】従来技術のデュアルＧＰＵ駆動型ビデオ・グラフィックス・カードの写真である。
【図４Ａ】本発明の原子によるマルチ・パイプ・システム・オン。チップ（ＭＰ−ＳＯＣ）を用いるプリント回路グラフィックス・カードを使用するコンピュータ・システムの概略的なシステム・ブロック図であり、このシステム・ブロックは、ＣＰＵ、Ｉ／Ｏチップセット、システム・メモリ、ＭＰ−ＳＯＣに基づいたグラフィック・カード、及び表示スクリーンを示す。
【図４Ｂ】プリント回路（ＰＣ）ビデオ・グラフィックス・ボード上に取り付けられた、本発明のＭＰ−ＳＯＣを物理的に実装する概略図である。
【図４Ｃ】本発明のＭＰ−ＳＯＣベースのＰＣグラフィックス・ボードが相互接続された、マザーボード上の標準的なＰＣＩエキスプレス・グラフィックス・スロットの写真である。
【図４Ｄ】本発明の原理による、４つのＧＰＵ駆動型パイプライン・コアを含む例示的なＭＰ−ＳＯＣシリコン配置の概略図である。
【図４Ｅ】本発明のＭＰ−ＳＯＣの例示的なパッキングの概略図である。
【図５】本発明の例証となる実施形態による、ＭＰ−ＳＯＣアーキテクチャの概略的なブロック図である。
【図６】本発明の例証となる実施形態による、ＭＰ−ＳＯＣベースのコンピュータ・システムのソフトウェア・ブロック図である。
【図７Ａ】本発明の例証となる実施形態の、ＭＰ−ＳＯＣベース・システムのマルチ・パイプ・ソフトウェア・ドライバを含むモジュールをさらに示す概略的なブロック図である。
【図７Ｂ】本発明のＭＰ−ＳＯＣベースの装置及びシステム内で、３つの並列化モード（すなわち、オブジェクト分割、画像分割、及び時分割）を実行する機構によって実行される段階を示すフローチャートである。
【図８】本発明のＭＰ−ＳＯＣシステムのオブジェクト分割構成を示す概略図である。
【図９】本発明のＭＰ−ＳＯＣシステムの画像分割構成を示す概略図である。
【図１０】本発明のＭＰ−ＳＯＣシステムの時分割構成を示す概略図である。
【図１１】本発明のＭＰ−ＳＯＣベース・システムに沿って多数のＧＰＵ駆動型パイプライン・コアの間で多角形を分散させるためのプロセスを示すフローチャートである。
【図１２】本発明の原理による、並列化モードの組み合わせとして配置された８つのＧＰＵ駆動型パイプライン・コアの例を示す。
【図１Ｂ】
2008538620.tif 000003
【図２Ａ】
2008538620.tif 000004
【図２Ｂ】
2008538620.tif 000005
【図２Ｃ】
2008538620.tif 000006
【図４Ａ】
2008538620.tif 000007
【図４Ｂ】
2008538620.tif 000008
【図４Ｃ】
2008538620.tif 000009
【図４Ｄ】
2008538620.tif 000010
【図４Ｅ】
2008538620.tif 000011
【図５】
2008538620.tif 000012
【図６】
2008538620.tif 000013
【図７Ａ】
2008538620.tif 000014
【図７Ｂ】
2008538620.tif 000015
【図８】
2008538620.tif 000016
【図９】
2008538620.tif 000017
【図１０】
2008538620.tif 000018
【図１１】
2008538620.tif 000019
【図１２】
2008538620.tif 000020
【図１Ａ】
2008538620.tif 000021
【図３】
2008538620.tif 000022