(57)【要約】【解決手段】  汎用使用のための内部メモリを有するグラフィクス処理ユニット（ＧＰＵ）及びそのアプリケーションがここに開示される。そのようなＧＰＵは、第１の内部メモリと、第１の内部メモリに結合される実行ユニットと、第１の内部メモリを他の処理ユニットの第２の内部メモリに結合するように構成されるインタフェースと、を含む。第１の内部メモリは積層ダイナミックランダムアクセスメモリ（ＤＲＡＭ）又は埋め込みＤＲＡＭを備えていてよい。インタフェースは第１の内部メモリをディスプレイデバイスに結合するように更に構成されていてよい。ＧＰＵは第１の内部メモリを中央処理ユニットに結合するように構成される別のインタフェースを含んでいてもよい。またＧＰＵはソフトウエアにおいて具現化され且つ／又はコンピューティングシステム内に含まれていてよい。【選択図】図２
2013504130.tif 000002
【特許請求の範囲】
【請求項１】
第１の内部メモリと、
前記第１の内部メモリに結合される実行ユニットと、
前記第１の内部メモリを他の処理ユニットの第２の内部メモリに結合するように構成されるインタフェースと、を備えるグラフィクス処理ユニット（ＧＰＵ）。
【請求項２】
前記他の処理ユニットはＧＰＵを備える請求項１の処理ユニット。
【請求項３】
前記他の処理ユニットは中央処理ユニットを備える請求項１の処理ユニット。
【請求項４】
前記第１の内部メモリは積層ダイナミックランダムアクセスメモリを備える請求項１の処理ユニット。
【請求項５】
前記第１の内部メモリは埋め込みダイナミックランダムアクセスメモリを備える請求項１の処理ユニット。
【請求項６】
前記インタフェースは前記第１の内部メモリをディスプレイデバイスに結合するように更に構成される請求項１の処理ユニット。
【請求項７】
コンピューティングデバイス上で実行される場合にグラフィクス処理ユニット（ＧＰＵ）を定義する命令が入っているコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記ＧＰＵは、
第１の内部メモリと、
前記第１の内部メモリに結合される実行ユニットと、
前記第１の内部メモリを他の処理ユニットの第２の内部メモリに結合するように構成されるインタフェースと、を備えるコンピュータプログラム製品。
【請求項８】
前記他の処理ユニットはＧＰＵを備える請求項７のコンピュータプログラム製品。
【請求項９】
前記他の処理ユニットは中央処理ユニットを備える請求項７のコンピュータプログラム製品。
【請求項１０】
前記ＧＰＵの前記第１の内部メモリは積層ダイナミックランダムアクセスメモリを備える請求項７のコンピュータプログラム製品。
【請求項１１】
前記ＧＰＵの前記第１の内部メモリは埋め込みダイナミックランダムアクセスメモリを備える請求項７のコンピュータプログラム製品。
【請求項１２】
前記ＧＰＵはハードウエア記述言語ソフトウエアにおいて具現化される請求項７のコンピュータプログラム製品。
【請求項１３】
前記ＧＰＵはべリログハードウエア記述言語ソフトウエア、ベリログＡハードウエア記述言語ソフトウエア及びＶＨＤＬハードウエア記述言語ソフトウエアの１つにおいて具現化される請求項７のコンピュータプログラム製品。
【請求項１４】
第１の内部メモリと前記第１の内部メモリに結合される第１の実行ユニットと前記第１の内部メモリを他のＧＰＵの内部メモリに結合するように構成される第１のインタフェースとを備える第１のグラフィクス処理ユニット（ＧＰＵ）と、
第２の内部メモリと前記第２の内部メモリに結合される第２の実行ユニットと前記第２の内部メモリを他のＧＰＵの内部メモリに結合するように構成される第２のインタフェースとを備える第２のＧＰＵと、を備えるシステムであって、
前記第１の内部メモリ及び前記第２の内部メモリは互いに結合されて前記第１のＧＰＵの前記第１の実行ユニットが前記第２のＧＰＵの前記第２の内部メモリにアクセスすることを可能にすると共に前記第２のＧＰＵの前記第２の実行ユニットが前記第１のＧＰＵの前記第１の内部メモリにアクセスすることを可能にするシステム。
【請求項１５】
前記第１の内部メモリは積層ダイナミックランダムアクセスメモリを備える請求項１４のシステム。
【請求項１６】
前記第１の内部メモリは埋め込みダイナミックランダムアクセスメモリを備える請求項１４のシステム。
【請求項１７】
前記第１のインタフェースは前記第１の内部メモリをディスプレイデバイスに結合するように更に構成され、
前記第２のインタフェースは前記第２の内部メモリを前記ディスプレイデバイスに結合するように更に構成される請求項１６のシステム。
【請求項１８】
外部メモリと、
キャッシュメモリを備える中央処理ユニット（ＣＰＵ）と、
前記外部メモリ及び前記ＣＰＵの間を結合するバスと、を更に備える請求項１４のシステム。
【請求項１９】
前記第１のＧＰＵは前記第１の内部メモリを前記ＣＰＵの前記キャッシュメモリに結合するように構成される他のインタフェースを更に備える請求項１８のシステム。
【請求項２０】
前記第２のＧＰＵは前記第２の内部メモリを前記ＣＰＵの前記キャッシュメモリに結合するように構成される他のインタフェースを更に備える請求項１８のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してコンピューティングデバイス（例えばコンピュータ、組み込みデバイス、携帯デバイス等）に向けられている。より特定的には、本発明はそのようなコンピューティングデバイスの処理ユニットによって使用されるメモリに向けられている。
【背景技術】
【０００２】
コンピューティングデバイスは、典型的には、中央処理ユニット（ＣＰＵ）及びグラフィクス処理ユニット（ＧＰＵ）等の１つ以上の処理ユニットを含む。ＣＰＵは、命令の正確なセットに従うことによって、コンピューティングデバイスの活動を連携させる。ＧＰＵは、エンドユーザアプリケーション（例えばビデオゲームアプリケーション）によって要求されるであろうグラフィクス処理タスク及び／又は物理的シミュレーション等のデータ並列コンピューティングタスクを行うことによってＣＰＵを支援する。ＧＰＵ及びＣＰＵは、別個のデバイス及び／又はパッケージの一部であることがあり、あるいは同じデバイス及び／又パッケージ内に含まれていることがある。更には、各処理ユニットは別のより大きなデバイス内に含まれていることがある。例えばＧＰＵは、経路付けデバイス又は例えばノースブリッジ等のブリッジデバイス内にしばしば集積化される。
【０００３】
エンドユーザアプリケーションとＧＰＵの間には何層ものソフトウエアが存在する。エンドユーザアプリケーションは、アプリケーションプログラミングインタフェース（ＡＰＩ）と通信する。ＡＰＩは、ＧＰＵに依存するフォーマットでよりはむしろ標準的なフォーマットでエンドユーザアプリケーションがグラフィクスデータ及びコマンドを出力することを可能にする。ワシントン、レドモンドのマイクロソフト社(Microsoft Corporation of Redmond, Washington)によって開発されたダイレクトＸ(DirectX)（登録商標）、クロノスグループ(Khronos Group)によって維持されるオープンＧＬ(OpenGL)（登録商標）及びオープンＣＬ(OpenCL)を含めて様々な種類のＡＰＩが商業的に利用可能である。ＡＰＩはドライバと通信する。ドライバは、ＡＰＩから受信した標準コードを、ＧＰＵによって理解されるネイティブフォーマットの命令にトランスレートする。ドライバは典型的にはＧＰＵの製造業者によって書かれる。ＧＰＵは次いでドライバからの命令を実行する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のシステムにおいては、ＣＰＵ及びＧＰＵは典型的には各々が外部メモリに結合される。外部メモリは、ＣＰＵ及び／又はＧＰＵによって実行されるべき命令及び／又は使用されるべきデータを含むであろう。外部メモリは例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）であることがある。外部メモリはかなり大きく構成され得るので、それが結合される各処理ユニットに十分な記憶容量を提供することができる。残念なことに、外部メモリへのアクセスには数百クロックサイクルを必要とするであろう。従って、外部メモリは、高性能なＧＰＵに対する十分な帯域幅又は高速メモリアクセスをメモリに提供しないかもしれない。
【０００５】
十分なメモリ帯域幅をＧＰＵに提供するための１つの見込みのある解決法は、ＧＰＵに内部メモリを設けることである。内部メモリは、例えば、埋め込み(embedded)ＤＲＡＭ又は積層(stacked)ＤＲＡＭであることがある。外部メモリと比べて、内部メモリは、より大きな帯域幅、より高速なメモリアクセスを提供し、且つより少ない電力を消費する。しかし、内部メモリの容量は、高性能なＧＰＵの記憶要求を満たすために容易には拡大され得ない。例えば、高性能なＧＰＵは、ＧＰＵの内部メモリに含まれ得るよりも多くのメモリを必要とするであろう。
【０００６】
上述に鑑み、十分なメモリ容量（外部メモリと同等な）及び大きな帯域幅（埋め込みメモリと同等な）の両方を提供するメモリ及びそのアプリケーションが必要とされている。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、汎用使用のための処理ユニット内部メモリ(an internal, processing-unit memory)及びそのアプリケーションを提供することによって、上述の必要性を満たす。本発明の実施形態の処理ユニット内部メモリは、それが処理ユニット内に埋め込まれているという理由で、大きな帯域幅を提供する。また、複数の処理ユニットメモリは十分に大きなメモリプールへと組み合わされ得るので、十分な記憶容量が提供される。
【０００８】
例えば、本発明の実施形態はＧＰＵを提供する。ＧＰＵは、第１の内部メモリと、第１の内部メモリに結合される実行ユニットと、第１の内部メモリを他の処理ユニットの第２の内部メモリに結合するように構成されるインタフェースと、を含む。ある実施形態においては、ＧＰＵはソフトウエアにおいて具現化される。別の実施形態においては、ＧＰＵはシステム内に含まれる。システムは、例えば、スーパーコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ビデオゲームコンソール、埋め込みデバイス、携帯デバイス（例えば携帯電話、スマートフォン、ＭＰ３プレイヤ、カメラ、ＧＰＳデバイス等）、又はＧＰＵを含み若しくはＧＰＵを含むように構成される別のシステムを備えていてよい。
【０００９】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。尚、本発明はここに説明される特定の実施形態に限定されない。そのような実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
【図面の簡単な説明】
【００１０】
ここに組み込まれ且つ出願書類の一部をなす添付の図面は本発明を示し、そして明細書と共に、本発明の原理を説明すること及び関連分野を含めた当業者が本発明を作りそして使用するのを可能にすることに更に役立つ。
【００１１】
【図１Ａ】図１Ａは本発明の実施形態に従い汎用使用のための処理ユニット内部メモリを含む例示的なシステムを示す図（その１）である。
【図１Ｂ】図１Ｂは本発明の実施形態に従い汎用使用のための処理ユニット内部メモリを含む例示的なシステムを示す図（その２）である。
【００１２】
【図２】図２は本発明の実施形態に従い汎用使用のための内部メモリを有する例示的なＧＰＵの詳細を示す図である。
【００１３】
【図３】図３は本発明の実施形態に従い処理要素内に含まれていてよい例示的な積層メモリを示す図である。
【００１４】
【図４】図４は本発明の実施形態に従い図２のＧＰＵによって実装される例示的な方法を示す図である。
【００１５】
本発明の特徴及び利益は、図面と共に以下に記述される詳細な説明からより明らかになり、図面において同様の参照符号は全体を通して対応する要素を識別する。図面において、同様の参照数字は一般的に同一の、機能的に類似の、及び／又は構造的に類似の要素を示す。ある要素が最初に現れる図面は対応する参照番号の一番左の単一又は複数の桁によって示される。
【発明を実施するための形態】
【００１６】
I．概説
本発明は、汎用使用のためのＧＰＵ内部メモリ及びそのアプリケーションを提供する。以下の詳細な説明において、「１つの実施形態」、「ある実施形態」、「例示的実施形態」等に対する言及は、説明される実施形態が特定の特徴、構造又は特性を含んでいてよいが、全ての実施形態が必ずしも当該特定の特徴、構造又は特性を含む必要がなくてよいことを示している。また、そのような表現は必ずしも同じ実施形態を参照しているとは限らない。更に、特定の特徴、構造又は特性がある実施形態に関連して説明されている場合には、明示的に説明されていようとなかろうと、他の実施形態に関連して当該特定の特徴、構造又は特性を具現化することは当業者の知識の範囲内にあることと言える。
【００１７】
ある実施形態によると、ＧＰＵは、１つ以上の他の処理ユニットによって使用されるように構成される内部メモリ（例えば埋め込みＤＲＡＭ又は積層ＤＲＡＭ）を含む。ＧＰＵはインタフェースを含むと共にプロトコルを実装しており、１つ以上の他のＧＰＵが当該内部メモリにアクセスすることを可能にしている。インタフェースは、各他のＧＰＵに当該内部メモリへの専用のアクセスを提供してよく、あるいは他のＧＰＵに当該内部メモリへの共有アクセスを提供してよい。ＧＰＵの内部メモリへのアクセスは、ＧＰＵそれ自身又は各他のＧＰＵによって制御されてよい。
【００１８】
ある実施形態においては、インタフェース及びプロトコルは、内部メモリが外部メモリと組み合わされることを可能にし、ＧＰＵがアクセス可能なより大きなメモリプールを形成する。外部メモリは他のＧＰＵ内に含まれていてよい。ある実施形態においては、例えば、コンピューティングデバイスは複数のＧＰＵを含み、ここでは各ＧＰＵは他のＧＰＵと共有されるように構成される内部メモリを含む。この実施形態においては、各ＧＰＵの内部メモリは統合化メモリプール(unified memory pool)へと組み合わされる。メモリプールのサイズは、共有しているＧＰＵの数に対応する。共有しているＧＰＵはいずれもがその記憶要求に対してメモリプールを使用してよい。
【００１９】
本発明の実施形態に従う例示的なＧＰＵの更なる詳細が以下に説明される。しかし、これらの詳細を提供するのに先立ちそのようなＧＰＵが実装されるであろう例示的なコンピューティングデバイスを説明することは有用である。
【００２０】
II．例示的なコンピューティングシステム
図１Ａ及び１Ｂは複数のＧＰＵを有する例示的なコンピューティングシステム１００を示しており、各ＧＰＵは、本発明の実施形態に従い汎用使用のために構成される内部メモリを含んでいる。外部メモリと比べて、内部メモリは、データへのより大きな帯域幅アクセスを各ＧＰＵに提供する。また、各ＧＰＵの内部メモリは、各ＧＰＵによってアクセス可能な更に大きなメモリプールへと組み合わされてよく、それにより各ＧＰＵに十分な記憶容量を提供することができる。
【００２１】
図１Ａの実施形態においては、各ＧＰＵは他のＧＰＵの内部メモリへの専用のアクセスを与えられている。図１Ｂの実施形態においては、各ＧＰＵは他のＧＰＵの内部メモリへの共有インタフェースを介した共有アクセスを有している。実施形態においては、コンピューティングシステム１００は、スーパーコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ビデオゲームコンソール、埋め込みデバイス、携帯デバイス（例えば携帯電話、スマートフォン、ＭＰ３プレイヤ、カメラ、ＧＰＳデバイス等）、又はＣＰＵ及び／若しくはＧＰＵを含み若しくはＣＰＵ及び／若しくはＧＰＵを含むように構成される何らかの他のデバイスを備えていてよい。
【００２２】
図１Ａ及び図１Ｂを参照すると、コンピューティングデバイス１００は、ＣＰＵ１０２、第１のＧＰＵ１１０Ａ、及び第２のＧＰＵ１１０Ｂを含む。ＣＰＵ１０２は命令を実行してコンピューティングデバイス１００の機能を制御する。ＧＰＵ１１０は、データ並列処理タスク（例えばグラフィクス処理タスク及び／又は一般計算タスク）を行うことによってＣＰＵ１０２を支援する。ＧＰＵ１１０は典型的には、それらの設計に基づいて、データ並列処理タスクを、ＣＰＵ１０２がソフトウエアにおいてそれらを行い得るであろうよりも高速に行うことができる。
【００２３】
第１のＧＰＵ１１０Ａ及び第２のＧＰＵ１１０Ｂは、それら自身の内部メモリ及び実行ユニットを各々が含む。具体的には、第１のＧＰＵ１１０Ａは内部メモリ１０６Ａ及び実行ユニット１４２Ａを含み、また第２のＧＰＵ１１０Ｂは内部メモリ１０６Ｂ及び実行ユニット１４２Ｂを含む。同様にＣＰＵ１０２はキャッシュメモリ１３０及び実行ユニット１３２を含む。内部メモリ１０６（及び随意的にキャッシュメモリ１３０）は、特定のデータが外部的に記憶されていたとした場合（例えばそのデータがシステムメモリ１０４内に記憶されていたとした場合）に可能であろうよりも高速なそのデータへのアクセス及び大きな帯域幅を提供するために、ＧＰＵ１１０が利用可能である。内部メモリ１０６は、例えば埋め込みＤＲＡＭ又は積層ＤＲＡＭを備えていてよい。
【００２４】
内部メモリ１０６Ａ、１０６Ｂ（及び随意的にキャッシュメモリ１３０）は、高速で大きな帯域幅のメモリアクセスを提供しながら相当の記憶容量（例えば４ＧＢより大きい）を提供するために、より大きなメモリプールへと組み合わされてよい。従来の外部メモリは十分な記憶容量（例えば４ＧＢより大きい）を提供し得るが、従来の外部メモリは特定の高性能な用途に対して不十分な帯域幅をもたらす。同様に、従来の埋め込みメモリはこれらの高性能な用途に対して十分な帯域幅を提供し得るが、従来の埋め込みメモリはこれらの高性能な用途に対して不十分な記憶容量（例えば４ＧＢ未満）をもたらす。従来の外部メモリ及び／又は従来の埋め込みメモリとは異なり、本発明の実施形態は、汎用使用のために他のＧＰＵが利用可能な内部メモリを含むＧＰＵを提供することによって、十分な記憶容量（例えば４ＧＢより大きい）を提供するだけでなく、大きな帯域幅をも提供する。
【００２５】
例えば、高性能なＧＰＵのフレームバッファ（即ちディスプレイデバイス上に表示されるべきデータの完全なフレームを記憶するバッファ）は、相当大きなメモリ（例えば４ギガバイト（ＧＢ）より大きい）への大きな帯域幅のアクセスを必要とするであろう。実施形態においては、第１のＧＰＵ１１０Ａは、内部メモリ１０６Ａ、Ｂ及び随意的にＣＰＵ１０２のキャッシュメモリ１３０を使用して第１のＧＰＵ１１０Ａのフレームバッファを定義してよい。同様に、第２のＧＰＵ１１０Ｂもまた、内部メモリ１０６Ａ、Ｂ及び随意的にＣＰＵ１０２のキャッシュメモリ１３０を使用して第２のＧＰＵ１１０Ｂのフレームバッファを定義してよい。このようにして、従来の外部メモリ又は埋め込みメモリとは異なり、本発明の実施形態に従い定義されるフレームバッファは、相当大きなメモリ（例えば４ＧＢより大きい）への大きな帯域幅のアクセスを提供する。
【００２６】
図１Ａの実施形態においては、既に示唆されたように、各ＧＰＵ１１０は、他の処理ユニットの内部メモリ１０６への専用のアクセスを与えられている。具体的には、第１のインタフェース１０１は、第２のＧＰＵ１１０Ｂの内部メモリ１０６Ｂへの専用アクセスを第１のＧＰＵ１１０Ａに提供し、また第１のＧＰＵ１１０Ａの内部メモリ１０６Ａへの専用アクセスを第２のＧＰＵ１１０Ｂに提供する。データは、そのデータのアドレス範囲に基づいて、内部メモリ１０６Ａ又は内部メモリ１０６Ｂのいずれかに対して書き込まれ又はいずれかからリトリーブされる(retrieved)。例えば、内部メモリ１０６Ａは第１のアドレス範囲（例えば第１の予め定められたアドレスＡ未満且つ第２の予め定められたアドレスＢ以上）を割り当てられてよく、また内部メモリ１０６Ｂは第２のアドレス範囲（例えば第１のアドレス範囲内でない全てのアドレス）を与えられてよい。しかし、第１のＧＰＵ１１０Ａ及び第２のＧＰＵ１１０Ｂが各々第１のＧＰＵ１１０Ａの内部メモリ１０６Ａ及び第２のＧＰＵ１１０Ｂの内部メモリ１０６Ｂへのアクセスを有し得ることを前提として、内部メモリ１０６Ａ及び／又は内部メモリ１０６Ｂへデータを書き込み且つこれらからデータをリトリーブするための他のスキームが、本発明の精神及び範囲から逸脱することなく実装されてよいことが理解されるはずである。
【００２７】
ある実施形態においては、第１のインタフェース１０１はディスプレイ制御器インタフェースを備えている。ディスプレイ制御器インタフェースは、ディスプレイデバイス１４０にＧＰＵのフレームバッファへのアクセスを提供する。ディスプレイ制御器インタフェースを第１のインタフェース１０１内に組み込むことによって、第１のインタフェース１０１は、従来のＧＰＵ設計に既に含まれている標準ピン上に設けられ得る。
【００２８】
第１のインタフェース１０１に加えて、第２のインタフェース１０３は、第２のＧＰＵ１１０Ｂの内部メモリ１０６Ｂへの専用アクセスをＣＰＵ１０２に提供し、またＣＰＵ１０２のキャッシュメモリ１３０への専用アクセスを第２のＧＰＵ１１０Ｂに提供する。このようにして第２のＧＰＵ１１０Ｂ及びＣＰＵ１０２は、各々第２のＧＰＵ１１０Ｂの内部メモリ１０６Ｂ及びＣＰＵ１０２のキャッシュメモリ１３０へのアクセスを有することができる。同様に、第３のインタフェース１０５は、ＣＰＵ１０２のキャッシュメモリ１３０への専用アクセスを第１のＧＰＵ１１０Ａに提供し、また第１のＧＰＵ１１０Ａの内部メモリ１０６Ａへの専用アクセスをＣＰＵ１０２に提供する。このようにして第１のＧＰＵ１１０Ａ及びＣＰＵ１０２は、各々第１のＧＰＵ１１０Ａの内部メモリ１０６Ａ及びＣＰＵ１０２のキャッシュメモリ１３０へのアクセスを有することができる。
【００２９】
図１Ｂの実施形態においては、各処理ユニットは、他の処理ユニットの内部メモリへの共有インタフェース１６４を介した共有アクセスを有する。共有インタフェース１６４は、各処理ユニット（例えば第１のＧＰＵ１１０Ａ、第２のＧＰＵ１１０Ｂ及びＣＰＵ１０２）に他の処理ユニットの内部メモリへの大きな帯域幅のアクセスを提供する。データは、そのデータのアドレス範囲に基づいて、内部メモリ１０６Ａ、内部メモリ１０６Ｂ又はキャッシュメモリ１３０に対して書き込まれ又はいずれかからリトリーブされる。例えば、内部メモリ１０６Ａは第１のアドレス範囲を割り当てられてよく、内部メモリ１０６Ｂは第２のアドレス範囲を与えられてよく、そしてキャッシュメモリ１３０は第３のアドレス範囲を割り当てられてよい。しかし、第１のＧＰＵ１１０Ａ、第２のＧＰＵ１１０Ｂ及びＣＰＵ１０２が各々第１のＧＰＵ１１０Ａの内部メモリ１０６Ａ、第２のＧＰＵ１１０Ｂの内部メモリ１０６Ｂ、及びＣＰＵ１０２のキャッシュメモリ１３０へのアクセスを有し得ることを前提として、内部メモリ１０６Ａ、内部メモリ１０６Ｂ及び／又はキャッシュメモリ１３０へデータを書き込み且つこれらからデータをリトリーブするための他のスキームが、本発明の精神及び範囲から逸脱することなく実装されてよいことが理解されるはずである。
【００３０】
実施形態においては、コンピューティングデバイス１００はまた、システムメモリ１０４、補助メモリ１２０、入力・出力（Ｉ／Ｏ）インタフェース１１６、及び／又はディスプレイデバイス１４０を含む。システムメモリ１０４は、ＣＰＵ１０２上で動作中のプログラムによって頻繁にアクセスされる情報を記憶する。システムメモリ１０４は典型的には揮発性メモリを備えており、これはコンピューティングデバイス１００への電力がオフになったときにシステムメモリ１０４内に記憶されているデータが喪失することを意味している。補助メモリ１２０は、コンピューティングデバイス１００によって使用されるデータ及び／又はアプリケーションを記憶する。補助メモリ１２０は、典型的にはシステムメモリ１０４に比べて大きな記憶容量を有しており、また典型的には不揮発性（永続的）メモリを備えており、これはコンピューティングデバイス１００への電力がオフになったとしても補助メモリ１２０内に記憶されているデータが持続することを意味している。Ｉ／Ｏインタフェース１１６は、コンピューティングデバイスシステム１００が外部デバイス１１６（例えば外部ディスプレイデバイス、外部記憶デバイス（例えばビデオゲームカートリッジ、ＣＤ、ＤＶＤ、フラッシュドライブ等）、ネットワークカード、又は何らかの他の種類の外部デバイス）と結合されることを可能にする。ディスプレイデバイス１４０はコンピューティングデバイス１００のコンテンツを表示する。ディスプレイデバイスは、陰極線管、液晶ディスプレイ（ＬＣＤ）、プラズマスクリーン、又は現在既知であるか将来開発されるかにかかわらず何らかの他の種類のディスプレイデバイスを備えていてよい。
【００３１】
ＧＰＵ１１０及びＣＰＵ１０２は、互いに、そしてシステムメモリ１０４、補助メモリ１２０及びＩ／Ｏインタフェース１１６とバス１１４を介して通信する。バス１１４は、周辺要素インタフェース(peripheral component interface)（ＰＣＩ）バス、アクセラレーテッドグラフィクスポート(accelerated graphics port)（ＡＧＰ）バス、ＰＣＩエクスプレス(PCI Express)（ＰＣＩＥ）バス、又は現在利用可能であり若しくは将来開発される他の種類のバスを含めてコンピューティングデバイスにおいて用いられる任意の種類のバスであってよい。
【００３２】
実施形態においては、コンピューティングデバイス１００は、ＧＰＵ１１０の代わりに又はＧＰＵ１１０に加えてビデオ処理ユニット（ＶＰＵ）を含んでいてよい。例えばある実施形態においては、コンピューティングデバイス１００はＧＰＵ１１０Ａ、ＣＰＵ１０２を含み、そして図１Ａ及び１Ｂに示されるＧＰＵ１１０Ｂに代えて、コンピューティングデバイス１００はＶＰＵを含む。このようにして、ＣＰＵ１０２は一般的な処理機能を行うことができ、ＧＰＵ１１０Ａはグラフィクス処理機能を行うことができ、そしてＶＰＵはビデオ処理機能を行うことができる。
【００３３】
III．例示的なＧＰＵ
図２は内部メモリ１０６を有するＧＰＵ１１０の例示的な詳細を示している。本発明の実施形態に従い、増大されたメモリフットプリント(footprint)サイズに基づいてグラフィクス処理能力を結合することによって全体的なシステム性能を増大するために、内部メモリ１０６は他のＧＰＵ又はＣＰＵにより使用され得る。
【００３４】
上述したように、ＧＰＵ１１０は実行ユニット１４２及び内部メモリ１０６を含む。図２を参照すると、実行ユニット１４２は入力論理２０２、シェーダコア２０４及び出力論理２０６を含む。内部メモリ１０６はメモリ制御器２１０及びメモリセル２１２を含む。メモリ制御器２１０はメモリセル２１２へのアクセスを制御する。メモリセル２１２はデータを記憶する。
【００３５】
ある実施形態においては、内部メモリ１０６は埋め込みダイナミックランダムアクセスメモリ（ＤＲＡＭ）を備える。埋め込みＤＲＡＭは、処理ユニットと共に共通のパッケージ内に密閉された(encapsulated)メモリである。別の実施形態においては、内部メモリ１０６は図３に示されるような積層ＤＲＡＭを備える。積層メモリは、互いの上に３次元構造で積層される複数のメモリ要素を含む。
【００３６】
内部メモリ１０６は、入力論理２０２及び出力論理２０６の両方を介して実行ユニット１４２に結合される。特に、入力論理２０２は内部メモリ１０６からデータをリトリーブすることができ、また出力論理２０６は、データをメモリセル２１２内に記憶されるように内部メモリ１０６へ送ることができる。
【００３７】
内部メモリ１０６はまた、第１のインタフェース２５０を介して他のＧＰＵの内部メモリに結合されていてよい。内部メモリ１０６を他のＧＰＵの内部メモリに結合することは、実行ユニット１４２が利用可能な総メモリプールを増大させることができる。ある実施形態においては、第１のインタフェース２５０は、図１Ａのインタフェース１０１によって示されるように、ＧＰＵ１１０の内部メモリ１０６と他のＧＰＵの内部メモリとの間に専用のアクセスを提供する。この実施形態においては、第１のインタフェース２５０は従来のＧＰＵの標準ピン上に設けられたものである。例えば第１のインタフェース２５０はディスプレイ制御器インタフェースを備えていてよく、ディスプレイ制御器インタフェースは、内部メモリ１０６に含まれるローカルフレームバッファへのディスプレイデバイスアクセスを提供する。別の実施形態においては、第１のインタフェース２５０は、図１Ｂのインタフェース１６４によって示されるように、ＧＰＵ１１０の内部メモリ１０６と他の処理ユニットの内部メモリとの間で共有されるアクセスを提供する。
【００３８】
内部メモリ１０６はまた、第２のインタフェース２６０を介してＣＰＵ１０２のキャッシュメモリ１３０に結合されていてよい。その結果、内部メモリ１０６とキャッシュメモリ１３０の組み合わせは、ＧＰＵ１１０が利用可能なメモリプールを増大させることができる。ある実施形態においては、第２のインタフェース２６０は、図１Ａの接続１０３又は接続１０５のように、ＧＰＵ１１０の内部メモリ１０６とＣＰＵ１０２のキャッシュメモリ１３０との間での専用接続を提供する。別の実施形態においては、第２のインタフェース２６０は、図１Ｂの接続１６４のように、ＧＰＵ１１０及びＣＰＵ１０２のみによって共有される接続を提供する。更なる実施形態においては、第２のインタフェースは、図１Ａ及び図１Ｂのバス１１４のように、ＧＰＵ１１０を共通のバス上でＣＰＵ１０２と結合する。
【００３９】
IV．ＧＰＵ１１０の例示的な動作
図４は本発明の実施形態に従いＧＰＵ１１０によって実装される例示的な方法４００を示している。方法４００は図２及び４を参照して以下に説明される。
【００４０】
方法４００はステップ４０２で開始し、命令が受信される。ある実施形態においては、ＧＰＵ１１０によって実行されるべき命令を入力論理２０２が受信する。命令は、例えば、システム１００のＣＰＵ１０２上で実行中のエンドユーザアプリケーションによって提供されるグラフィクス処理タスク又はデータ並列処理タスクを備えていてよい。
【００４１】
ステップ４０４では、命令に関連するロケーションが識別される。１つの例においては、データは受信された命令と共に含まれていてよい。そのようなデータは一般的に即時データと称される。別の例においては、命令はデータのロケーションを提供する。例えば、命令はデータが記憶されているアドレスを含んでいてよい。更なる例においては、命令は、データが記憶されているアドレスを入力論理２０２が計算するための情報を含む。データは、内部メモリ１０６、内部メモリ１０６が結合される他のＧＰＵの内部メモリ、又はＣＰＵ１０２のキャッシュメモリ１３０のいずれかに記憶されてよい。
【００４２】
ステップ４０６では、データがリトリーブされる。データが即時データである場合には、入力論理２０２は命令から単純に即時データを抽出する。データが内部メモリ１０６内又は内部メモリ１０６が結合されるメモリ内に記憶されている場合には、入力論理２０２はデータにアクセスするための要求をメモリ制御器２１０へ送る。一方において、データがメモリセル２１２内に記憶されている場合には、データはリトリーブされて入力論理２０２へ供給される。他方、内部メモリ１０６に結合される他のメモリ内にデータが記憶されている場合には、入力論理２０２からの要求が他のメモリにインタフェース２５０又はインタフェース２６０を介して転送される。データは次いで、他のメモリからリトリーブされて入力論理２０２へ供給される。
【００４３】
ステップ４０８では、命令が実行される。シェーダコア２０４は、ステップ４０６で入力論理２０２によって獲得されたデータに基づいて命令を実行する。
【００４４】
ステップ４１０では、命令実行の結果が出力論理２０６へ提供される。出力論理２０６は、判断ステップ４１２に示されるように、これらの結果に基づいて更なる処理が必要であるかどうかを決定する。出力論理２０６に提供される結果は、追加の処理が必要であるかどうかを示すために、フラグ又は他のなんらかの印を有していてよい。判断ステップ４１２において更なる処理が必要であることを出力論理２０６が決定した場合、出力論理２０６は結果をシェーダコア２０４へ転送し戻し、そして方法４００のステップ４０８及び４１０が繰り返される。一方、判断ステップ４１２において更なる処理が必要でないと出力論理２０６が決定した場合には、出力論理２０６は、ステップ４１４に示されるように結果を内部メモリ１０６へ提供する。
【００４５】
結果は次いで、結果が書き込まれるべきアドレスに応じて、内部メモリ１０６又は内部メモリ１０６に結合されるメモリへ書き込まれてよい。結果が内部メモリ１０６へ書き込まれるべきである場合には、メモリ制御器２１０はメモリセル２１２内の適切なアドレスへのアクセスを提供し、そして結果はそこに記憶される。一方、内部メモリに結合されるメモリへ結果が書き込まれるべきである場合には、メモリ制御器２１０はインタフェース２５０又はインタフェース２６０を介して結果を他のメモリへ転送し、そして結果は他のメモリのメモリセル内に記憶される。
【００４６】
V．例示的なソフトウエア実装
ＧＰＵ１１０のハードウエア実装に加えて、そのようなＧＰＵはまた、例えばソフトウエア（例えばコンピュータ可読プログラムコード）を記憶するように構成されるコンピュータ可読媒体内に配置されるソフトウエアにおいて具現化されてもよい。コンピュータ可読プログラムコードは、（i）ここに開示されるシステムの機能及び技術（例えばＧＰＵ１１０にタスクを提供すること、ＧＰＵ１１０内でタスクをスケジューリングすること、ＧＰＵ１１０内でタスクを実行すること、等）、（ii）ここに開示されるシステムの製造及び技術（例えばＧＰＵ１１０の製造）、又は（iii）ここに開示されるシステムの機能及び製造並びに技術の組み合わせ、の実施形態を含めて本発明の実施形態を可能にする。
【００４７】
このことは、例えば、一般的なプログラミング言語（例えばＣ又はＣ＋＋）、ベリログ(Verilog)ＨＤＬ、ＶＨＤＬ、アルテラ(Altera)ＨＤＬ（ＡＨＤＬ）等を含むハードウエア記述言語(hardware description languages)（ＨＤＬ）、あるいは他の利用可能なプログラミング及び／又は回路図等（schematic）キャプチャツール(capture tools)（例えば回路キャプチャツール）の使用を通して達成され得る。コンピュータ可読プログラムコードは、半導体、磁気ディスク、光学ディスク（例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ）を含む任意の既知のコンピュータ可読媒体内に配置され得る。従って、コンピュータ可読コードは、インターネット及びそれと同等のもの(the Internet and internets)を含む通信ネットワークを介して伝送され得る。上述したシステム及び技術によって達成される機能及び／又は提供される構造は、コンピュータ可読プログラムコードにおいて具現化されるコア（例えばシェーダコア）内で表現することができ、また集積回路の生産の一部としてハードウエアに変換されてよいことが理解される。
【００４８】
VI．結論
汎用使用のためのＧＰＵ内部メモリ及びそのアプリケーションが上に説明される。概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の１つ以上であるが全てではない例示的な実施形態を記述することができ、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。
【図１Ａ】
2013504130.tif 000003
【図１Ｂ】
2013504130.tif 000004
【図２】
2013504130.tif 000005
【図３】
2013504130.tif 000006
【図４】
2013504130.tif 000007
【国際調査報告】
2013504130.tif 000008
2013504130.tif 000009
2013504130.tif 000010