JP2014235747A - データ処理システム - Google Patents

データ処理システム Download PDF

Info

Publication number
JP2014235747A
JP2014235747A JP2014111029A JP2014111029A JP2014235747A JP 2014235747 A JP2014235747 A JP 2014235747A JP 2014111029 A JP2014111029 A JP 2014111029A JP 2014111029 A JP2014111029 A JP 2014111029A JP 2014235747 A JP2014235747 A JP 2014235747A
Authority
JP
Japan
Prior art keywords
instruction
instructions
stream
execution
tracker
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014111029A
Other languages
English (en)
Other versions
JP6403436B2 (ja
Inventor
ヨルン・ニスタット
Nystad Johann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2014235747A publication Critical patent/JP2014235747A/ja
Application granted granted Critical
Publication of JP6403436B2 publication Critical patent/JP6403436B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】1つまたは複数のシェーダステージを含むグラフィックス処理パイプラインで、スレッドグループの処理に対する改善を提供すること。【解決手段】データ処理システムは、実行すべき命令のストリームに関して、命令ストリーム内で並べ替えることができる任意の命令が存在するか否かを判定し(41)、各々のこのような命令を命令完了トラッカに割り当て、命令のための符号化内に、命令が割り当てられている命令完了トラッカの指標を含める(42)。命令ストリーム内の各命令に対して、もしあれば、命令がどの命令完了トラッカに依存するかの指標も提供される(43、44)。次いで、命令完了トラッカに依存しているとして示される命令が実行されることになっている場合、命令を実行する前に、関連する命令完了トラッカの状態がチェックされる。【選択図】図3A

Description

本発明は、データ処理システムに関し、詳細には、1つまたは複数のプログラム可能な処理ステージ(「シェーダ」)を含むグラフィックス処理システムの動作に関する。
当技術分野で知られているように、グラフィックス処理は、最終的なレンダ出力、たとえば、表示されるフレームを生成するために、典型的には、パイプライン方式で、データに対して動作する1つまたは複数のパイプラインステージによって実行される。多くのグラフィックス処理パイプラインは、現在、一般に「シェーダ」と呼ばれる、1つまたは複数のプログラム可能な処理ステージを含む。たとえば、グラフィックス処理パイプラインは、ジオメトリシェーダ、頂点シェーダ、およびフラグメント(ピクセル)シェーダのうちの1つまたは複数、典型的にはすべてを含むことができる。これらのシェーダは、グラフィックスパイプラインの残りによって処理するための、および/または出力するための出力データ(たとえば、頂点シェーダの場合、適切に変換され、照明処理された(lit)頂点データ)の所望のセットを生成するために、入力データ値に対してシェーダプログラムを実行するプログラム可能な処理ステージである。グラフィックス処理パイプラインのシェーダは、プログラム可能な処理回路網を共有することができ、またはそれらは、各々別個のプログラム可能な処理ユニットであってもよい。
グラフィックス処理ユニット(GPU)シェーダコアは、したがって、レンダターゲット、たとえば、フレームなど、生成すべきグラフィックス出力内の各グラフィックスアイテムのための小さいプログラムを実行することによってグラフィックス処理を実行する処理ユニットである(この場合、「アイテム」は、通常、頂点またはフラグメント(ピクセル)である)。これは、一般に、典型的なレンダ出力、たとえば、フレームが、それぞれを独立して処理することができるかなり多くの頂点およびフラグメントを特徴とするという点で、高度な並列性を可能にする。
当技術分野で知られているように、グラフィックス処理パイプラインの所与の「シェーダ」によって実行すべきシェーダプログラムは、GLSL、HLSL、OpenCLなどの高レベルのシェーダプログラミング言語を使用するグラフィックス処理を必要とするアプリケーションによって提供されることになる。このシェーダプログラムは、関連した言語標準(仕様)で定義された所望のプログラミングステップを示す「式」から構成されることになる。高レベルのシェーダプログラムは、次に、シェーダ言語コンパイラによって、目標のグラフィックス処理パイプラインのためのバイナリコードに変換される。このバイナリコードは、所与の目標のグラフィックス処理パイプラインのための命令セット仕様で指定された「命令」から構成されることになる。当技術分野で知られているように、シェーダ言語表現をバイナリコード命令に変換するためのコンパイルプロセスは、コンパイラ内のプログラムのいくつかの中間表現を介して行われてもよい。したがって、高レベルのシェーダ言語で書かれるプログラムは、コンパイラ固有の中間表現に変換されてもよく(コンパイラ内にいくつかの連続的な中間表現が存在してもよい)、最終的な中間表現が、目標のグラフィックス処理パイプラインのためのバイナリコード命令に変換される。
シェーダ実行効率を向上させる既知の方法は、実行スレッド(各スレッドは、1つの頂点または1つのフラグメント(ピクセル)に対応する)を、スレッドの「グループ」または「バンドル」にグループ化することであり、1つのグループのスレッドは、一度に1つの命令のロックステップで実行される。このように、命令フェッチおよびスケジューリングリソースを、グループ内のすべてのスレッド間で共有することができる。(このようなスレッドグループに使用される他の用語は、「ワープ」および「波面(wavefront)」を含む。便宜上、「スレッドグループ」という用語が、本明細書で使用されるが、これは、特に明記しない限り、すべての等価の用語および構成を包含することを意図している。)
スレッドグループアーキテクチャでの実行ユニットは、典型的には、深くパイプライン化される。これらは、通常、クロックサイクル毎に実行を複数のスレッドグループ間で交互に行うことによって、高利用率に保たれる。
既存のスレッドグループアーキテクチャでは、グループ内の命令の実行は、厳密に順番通りの方法で行われ、スレッドグループが命令の実行を開始すると、現在の命令が完了するまで、次の命令に進むことはできない。
算術命令は、典型的に、かなり短いレイテンシを有するため、これは、通常、算術命令に関する問題ではない。GPUは、通常、算術のみのコードの利用率をかなりうまく維持するためには十分すぎるほどに実行中のスレッドグループを有する。
しかしながら、非決定的なレイテンシを有する命令については、はるかにずっと問題である可能性がある。このような命令の例は、メモリアクセス(ロード、格納、およびアトミック)およびテクスチャルックアップを含む。メモリアクセスは、キャッシュヒットの場合、低いレイテンシを有することができるが、キャッシュミスの場合、かなり高いレイテンシを示す傾向がある。これは、特に、ロードおよびアトミックに関する場合である(格納の場合は、しばしば、書き込み収集(write gathering)を実行することによって、レイテンシを隠すことができる)。テクスチャルックアップは、比較的高いキャッシュミス率によるメモリアクセス、ならびにメモリアクセスの前および後の両方での多数の固定機能の処理ステージを特徴とする傾向がある。
順次スレッドグループベースのアーキテクチャでは、少数のキャッシュミスが、キャッシュミスが解決されるために待機している間に、スレッドグループの大部分またはすべてでさえ容易にブロックさせる可能性がある。これは、ときには、同じメモリ領域に対するキャッシュミスを生成する複数のスレッドグループによってさらに悪化される。
また、スレッドのロックステップ実行のため、単一のスレッドグループ命令に関して複数のキャッシュミスを被る可能性がある。これは、グループ内の個々のスレッドが、異なるキャッシュラインでキャッシュミスを被る場合に発生する。この場合、すべてのキャッシュミスが解決されるまで、グループは、続行することができず、これは、長い時間がかかる可能性がある。
ときには、スレッドグループの大きいグループが「バンチ」を形成する場合、「バンチング」現象も生じる。この「バンチ」は、異なるタイプの実行ユニット間を全体として移動する傾向があり、その結果、「バンチ」によって現在占有されている実行ユニットは、他の実行ユニットが休止している間、フルレートで実行している。休止する実際の実行ユニットは、「バンチ」が実行される間、あちこちにシフトする。これは、かなり劣った実行ユニット利用率をもたらす。
本出願人は、したがって、たとえば、1つまたは複数のシェーダステージを含むグラフィックス処理パイプラインで、スレッドグループの処理に対する改善の余地が残っていると考えている。
本発明の第1の態様によれば、データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインを含むデータ処理システムを動作させる方法が提供され、この方法は、
実行ステージによって実行すべき命令のストリームについて、命令ストリーム内で並べ替えることができる任意の命令が存在するかどうかを判定するステップと、
命令ストリーム内で並べ替えることができると判定された各命令を、命令完了トラッカに割り当て、命令が割り当てられている命令完了トラッカの指標を、命令のための符号化に含めるステップと、
命令完了トラッカに割り当てられている命令に依存する命令ストリーム内の各命令に対して、命令完了トラッカに割り当てられている命令に依存する命令がどの命令完了トラッカに依存するかの指標を命令ストリーム内に提供するステップと、
実行のための実行ステージに命令ストリーム内の命令をディスパッチするステップと、
命令ストリーム内の命令を実行する際、
割り当てられた命令完了トラッカを使用して命令の完了を追跡するステップと、
命令完了トラッカに依存しているとして示される任意の命令について、命令を実行する前に、その命令完了トラッカの状態をチェックするステップと
を含む。
本発明の第2の態様によれば、データ処理システムが提供され、このデータ処理システムは、
データ処理動作を実行する命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインと、
実行パイプラインの実行ステージのための命令を生成するために、実行パイプラインのためのプログラムをコンパイルするコンパイラとを備え、
コンパイラは、
実行パイプラインの実行ステージによって実行すべき命令のストリームについて、命令ストリーム内で並べ替えることができる任意の命令が存在するかどうかを判定し、
命令ストリーム内で並べ替えることができると判定された各命令を、命令完了トラッカに割り当て、命令が割り当てられた命令完了トラッカの指標を命令のための符号化に含め、
命令完了トラッカに割り当てられている命令に依存する命令ストリーム内の各命令に対して、命令完了トラッカに割り当てられている命令に依存する命令がどの命令完了トラッカに依存するかの指標を命令ストリーム内に提供する
ように構成され、
実行パイプラインの少なくとも1つの実行ステージは、コンパイラからの命令ストリーム内の命令を実行する際、
割り当てられた命令完了トラッカを使用して命令の完了を追跡し、
命令完了トラッカに依存しているとして示される任意の命令について、命令を実行する前に、その命令完了トラッカの状態をチェックする
ように構成されている。
本発明は、データ処理パイプライン内の命令ストリーム(シーケンス)の実行に関する。しかしながら、本発明では、命令ストリーム内で並べ替えることができる、実行ステージに関する命令ストリーム内の命令(すなわち、順不同で実行されることが許可されることになる命令)は、識別され、次にそれらの完了が追跡され、もしあれば、そのように識別された命令に対する命令ストリーム内の命令の依存関係は、命令ストリーム内に符号化される。以下にさらに議論されるように、これは、任意の必要な命令依存関係が強制され得ることを依然として保証しながら、所与の命令シーケンス(ストリーム)内の命令が順不同で実行されることを(それが可能である場合)容易にする。その場合、これにより、たとえば、厳密に順番通りのスレッドグループ内の命令の実行に関連する、上述した問題を回避、または少なくとも低減することができる。
上述したように、本発明は、グラフィックス処理システムでの特定の用途を有することになると考えられる。したがって、データ処理システムは、好適には、グラフィックス処理システムを含み、実行パイプラインは、好適には、グラフィックス処理パイプラインを備え、実行ステージは、好適には、グラフィックス処理動作を実行するためにグラフィックスシェーダプログラムを実行する1つまたは複数のプログラム可能なグラフィックスシェーディングステージ(シェーダ)を備える。しかしながら、本発明は、同様の問題が生じる可能性がある、スカラまたはスーパスカラCPUパイプラインなどの、CPUなどの他の形態のデータ処理システムに等しく適用可能である。
同様に、上述したように、本発明は、実行スレッドがスレッドグループ内に一緒にグループ化され得るデータ処理システムに特定の用途を有することになると考えられ、スレッドグループでは、グループのスレッドは、ロックステップで、一度に1命令実行される。したがって、データ処理システム、たとえば、グラフィックス処理システムは、好適には、実行スレッドがスレッドグループ内に一緒にグループ化され得るものであり、スレッドグループでは、グループのスレッドは、ロックステップで、一度に1命令実行され、実行ステージによって実行すべき命令のストリームは、好適には、スレッドグループによって実行すべき命令のストリーム(シーケンス)である。
並べ替えることができる命令ストリーム内の命令は、任意の適切かつ所望の命令であってもよい。好適実施形態では、並べ替えることができる特定の選択された命令タイプのセットが存在する(それゆえ、特定のタイプの任意の命令が、命令ストリーム内に存在するかどうかが判定される)。好適実施形態では、「並べ替え可能な」命令(すなわち、順不同で実行されることが許可される命令)は、メモリロード、メモリ格納、メモリアトミック、属性補間、およびテクスチャルックアップのうちの1つまたは複数、好ましくはすべてを含む。
命令完了トラッカは、任意の所望かつ適切な方法で実現されてもよい。好適実施形態では、各トラッカは、命令の完了を追跡するために使用されるカウンタを備える。好適には、カウンタは、そのカウンタによって追跡されている命令が、適切な実行ユニットにディスパッチされると、インクリメントされ、命令が実際に完了すると、デクリメントされる。この場合、「0」のカウントは、問題のカウンタによって現在追跡されているすべての命令が完了していることを示すことになる(ゼロより大きいカウントは、そのトラッカに関する未処理の動作の数を示すことになる)。
命令トラッカは、任意の1時点で追跡することができる命令のセット数(たとえば、最大カウント値)を有することができる。これは、1命令程度に小さくてもよく、異なるトラッカについて異なっていてもよい。トラッカに関する命令の最大数に達している場合、そのトラッカを使用することになっている任意の新しい命令は、好適には、(トラッカが、新しい命令を追跡できるようになるまで)スレッドグループをストールさせる。
命令完了トラッカの数は、所望のように選択されてもよい。たとえば、実行ユニットおよび/またはスレッドグループに対して1つのみの命令完了トラッカが存在してもよいが、好適実施形態では、実行ユニットおよび/またはスレッドグループに対して複数の命令完了トラッカ、たとえば、2、4、または8個の命令完了トラッカが存在する。たとえば、ロード命令に対して1つのトラッカ、および格納命令に対して1つのトラッカ、または各ロードおよび格納命令に対して複数のトラッカなどが存在してもよい。
したがって、好適には、たとえば、スレッドグループのためのカウンタのセットを含む、たとえば、スレッドグループのための(そして、各スレッドグループのための)命令完了トラッカのセットが存在する。これは、事実上、したがって、命令ストリーム内の命令の依存関係を強制および追跡するために使用され得る「スコアボード」を提供し、各トラッカ(カウンタ)は、スコアボード中の1つの「スロット」または「エントリ」である。
関連データ(スコアボードに関するデータ構造)(カウント値)は、所望のように、たとえば、パイプラインメモリの適切な領域に格納されてもよい。
並べ替えることができる命令が識別されると、命令完了トラッカに割り当てられる。この割り当ては、好適には、レジスタ割り当てと同様の方法で行われる。たとえば、互いに独立した2つ以上のロードが存在する場合、1つのロードにのみ依存する命令が実行される前に、両方のロードが完了するのを待つ必要がないように、各ロードを異なる完了トラッカに割り当てることが望ましい可能性がある。一般に、システムは、所望のようにより効率的な動作を容易にするために、命令を完了トラッカに割り当てることができる。
命令が割り当てられている命令完了トラッカは、それ自体をコーディングする命令で示される(命令に含まれる)。好適には、どの命令トラッカに命令が割り当てられているのかを指定する命令符号化内の領域が存在する。この指標は、次に、命令がディスパッチおよび実行されるとき、命令完了トラッカ(たとえば、カウンタ)を更新するために使用される。
命令ストリーム内の並べ替え可能な命令を識別するだけでなく、命令ストリーム内の各命令に対して、もしあれば、命令がどの命令完了トラッカに依存するかの(すなわち、命令ストリーム内の他の命令に対する依存関係の影響の)指標が提供される。この指標は、好適には、(たとえば、命令のフィールド内の)命令コーディングの一部として、命令ストリームに含まれる。この指標は、それ自体が関係する命令によって符号化されてもよい(すなわち、問題の命令(動作)に依存する)が、好適実施形態では、この指標は、命令ストリーム内の直前の命令内に示される(命令ストリーム内の直前の命令によって符号化される)。この場合、これにより、命令完了追跡情報に基づいて、依存関係がある命令に対する命令フェッチを保留させることが可能になる。これは、電力消費を低減するのを助けることができる。
命令が実行されるとき、命令に関する指示された命令完了トラッカ依存関係が、最初にチェックされる。好適には、関連する命令完了トラッカのすべてが、それらが追跡しているすべての命令が完了したことを示す(たとえば、「0」のカウント値を有する)場合、命令は実行されるが、関連する命令完了トラッカのいずれかが、未処理の命令が存在することを示す(たとえば、ゼロより大きいカウント値を有する)場合、すべての関連する命令完了トラッカが、それらが追跡しているすべての命令が完了されたことを示すまで、命令の実行は、保留される(ストールされる)。命令は、所望のようにストールされてよく、パイプラインは、例えば、この場合、無関係なスレッドグループを代わりに実行する。
この構成は、命令の順不同の実行を、それが可能である場合、依然として促進しながら、データ依存関係が、それらが命令ストリーム内に実際に存在する場合、強制されることを可能にする。
本発明は、命令ストリーム内の依存関係を追跡および強制するための「スコアボード」構成を効果的に提供することが、上記から理解されるであろう。しかしながら、従来のスコアボードシステムとは異なり、本発明のスコアボードは、「明示的」であり、スコアボードの存在および機能は、命令コーディング内に露出される(依存関係などは、実際の実行可能なコード内にマークされる)。これは、たとえば、実行ステージ(ユニット)が、どのような依存関係の決定自体を実行するどのような必要性も排除し、それにより、たとえば、電力消費を低減し、たとえば、コンパイラが、依存関係を有する命令を設定することを可能にする。
好適実施形態では、「フェンス」命令が、命令ストリーム内に含まれて(命令ストリームに追加されて)よく、「フェンス」命令は、「フェンス」命令の後の任意の命令が実行される前に、「フェンス」命令の前のストリーム内の所与のタイプのすべての命令を強制的に完了させる。これは、命令ストリーム内の命令のグループが順番に実行されることを保証するために使用され得る。この場合、「フェンス」命令は、たとえば、1つのタイプの命令のみ、たとえば、ロード命令もしくは格納命令に、または2つ以上のタイプの命令、たとえば、ロードおよび格納命令の両方に関連することができる。このような「フェンス」命令は、(ロードおよび格納「フェンス」について)すべての命令完了トラッカに依存しているとして示されるロードおよび格納命令、(ロード「フェンス」について)以前のロード命令を追跡するために使用されているすべての命令完了トラッカに依存しているとして示されるロード命令などによって実施されてもよい。
好適実施形態では、その上、または代わりに、実行パイプラインが、たとえば、同じスレッドグループから起こるすべてのロード/格納に対して、このような「フェンス」命令を暗黙のうちに挿入することが可能である。
好適実施形態では、「分岐」命令が、命令ストリーム内に含まれて(命令ストリームに追加されて)よく、「分岐」命令は、それに関連付けられた異なる命令完了トラッカ依存関係の2つの(またはより多くの)セットを有し、命令完了トラッカ依存関係のセットのうちの1つが満たされる場合、適切な分岐が取られる。これは、命令ストリーム内の依存関係の複数の異なるセットの第1のものが満たされる場合にトリガされる、条件分岐機構を提供することができる。これは、たとえば、異なる未処理の命令が完了するのを待機する2つ以上の命令が存在するが、待機命令は、互いに対して任意の順序で実行されてもよい場合、望ましい可能性がある。この場合、分岐命令は、どの待機命令が満たされる第1のものであるかを決定する(そして次に、その命令を分岐させ、他の命令は、その後に実行される)ため使用され得る。好適実施形態では、分岐命令がチェックされる時、どの分岐条件も満たされない場合、分岐命令は、分岐条件の1つが満たされるまで、ストールされる。
このような分岐命令は、新規であり、それ自体で発明的であり得ると考えられる。
本発明の別の態様によれば、データ処理動作を実行するためにプログラム命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインを含むデータ処理システムを動作させる方法が提供され、命令の実行は、他の命令の完了に依存することができ、命令の完了は追跡され、命令の実行に関して他の命令の完了に依存する命令の依存関係は、依存関係の命令に関連付けることができ、
この方法は、
実行すべき命令のストリーム内に、命令の依存関係の2つ以上の異なるセットに関連付けられている条件分岐命令を含めるステップであって、命令依存関係の各々の異なるセットが、それに関連して従うための命令ストリーム内の所与の経路を有する、ステップと、
実行のための実行ステージに命令ストリーム内の命令をディスパッチするステップと、
命令ストリーム内の条件分岐命令を実行する際、命令に関連する命令依存関係のセットの状態をチェックし、チェックに基づいて、命令ストリーム内の経路に従うステップと
を含む。
本発明の別の態様によれば、データ処理システムが提供され、このデータ処理システムは、
データ処理動作を実行するためにプログラム命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインであって、命令の実行は、他の命令の完了に依存することができ、命令の完了は追跡され、命令の実行に関して他の命令の完了に依存する命令の依存関係は、依存関係の命令に関連付けることができる、実行パイプラインと、
処理回路網と
を備え、この処理回路網は、
実行すべき命令のストリーム内に、命令の依存関係の2つ以上の異なるセットに関連している条件分岐命令を含めることであって、命令依存関係の各々の異なるセットは、それに関連して従うための命令ストリーム内の所与の経路を有する、含めること、および
実行のための実行パイプラインに命令ストリーム内の命令をディスパッチすること
を行うように構成され、
実行パイプラインは、命令ストリーム内の条件分岐命令を実行する際、命令に関連する命令依存関係のセットの状態をチェックし、チェックに基づいて、命令ストリーム内の経路に従うように構成されている。
当業者によって理解されるように、本発明のこれらの態様および実施形態は、本明細書に記載の本発明の好適およびオプションの特徴の任意の1つもしくは複数またはすべてを、適宜に含むことができる。
命令ストリーム内の並べ替えることができる命令の識別、命令完了トラッカの割り当て(および命令のための符号化へのその包含)、ならびにもしあれば、各命令がどの命令完了トラッカに依存するかの指標の命令ストリームへの提供は、実行パイプラインのためのコンパイラによって実行される。グラフィックス処理システムの場合には、グラフィックス処理パイプラインのためのシェーダコンパイラが、好適には、この動作を実行する。コンパイラは、たとえば、好適実施形態では、実行パイプラインを含むデータ処理システムのホストプロセッサ上で動作することができる((コンパイラおよびコンパイルされたコードが、全体的なデータ処理システム、たとえば、グラフィックス処理システム内の別々のプロセッサ上で動作することになるように)実行パイプラインは、ホストプロセッサに関連付けられた、グラフィックスプロセッサなど、別のプロセッサ上にある)。しかしながら、コンパイルされたコードと同じプロセッサ上で動作するコンパイラ、または別個のシステム上で事前にコンパイルされており、コンパイルされた形態で配布されるプログラムなど、別個のプロセッサ上で動作しているコンパイラなど、他の構成も可能である。
本発明は、コンパイラ自体にもおよぶ。したがって、本発明の別の態様によれば、データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインの実行ステージのための命令を生成するためにプログラムをコンパイルするコンパイラが提供され、このコンパイラは、
実行パイプラインの実行ステージによって実行すべき命令のストリームに関して、命令ストリーム内で並べ替えることができる任意の命令が存在するかどうかを判定し、
命令ストリーム内で並べ替えることができると判定されている各命令を、命令完了トラッカに割り当て、命令が割り当てられている命令完了トラッカの指標を、命令の符号化に含め、
命令完了トラッカに割り当てられている命令に依存する命令ストリーム内の各命令に対して、命令完了トラッカに割り当てられている命令に依存する命令がどの命令完了トラッカに依存するかの指標を命令ストリーム内に提供する
ように構成されている。
したがって、本発明の別の態様によれば、データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインの実行ステージのための命令を生成するためにプログラムをコンパイルする方法が提供され、この方法は、
実行パイプラインの実行ステージによって実行すべき命令のストリームに関して、命令ストリーム内に並べ替えることができる任意の命令が存在するかどうかを判定するステップと、
命令ストリーム内で並べ替えることができると判定されている各命令を、命令完了トラッカに割り当て、命令の符号化に、割り当てられている命令完了トラッカの指標を含めるステップと、
命令完了トラッカに割り当てられている命令に依存する命令ストリーム内の各命令に対して、命令完了トラッカに割り当てられている命令に依存する命令がどの命令完了トラッカに依存するかの指標を命令ストリーム内に提供するステップと
を含む。
本発明は、本発明の命令に応じて(および本発明の命令を使用して)(すなわち、それ自体を並べ替えることができる命令を検出する必要なく、またはこのような検出を行う回路網を有する必要なく)順不同の処理を実行することができる実行ステージを有する実行パイプラインにもおよぶ。
したがって、本発明の別の態様によれば、データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含むデータ処理システムのための実行パイプラインが提供され、
実行パイプラインの少なくとも1つの実行ステージは、命令ストリーム内の命令を実行する際、
命令が命令完了トラッカに割り当てられている実行ステージのためのコンパイラによって提供される命令のための符号化内の指標に応答して、示された割り当てられた命令完了トラッカを使用して、命令の完了を追跡し、
実行ステージのためのコンパイラによって提供される命令のための符号化内の、命令ストリーム内の命令が命令完了トラッカに依存することの指標に応答して、命令完了トラッカに依存しているとして示される命令を実行する前に、示された命令完了トラッカの状態をチェックする
ように構成されている。
本発明の別の態様によれば、データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含むデータ処理システムのための実行パイプラインを動作させる方法が提供され、この方法は、
実行パイプラインの少なくとも1つの実行ステージが、命令ストリーム内の命令を実行する際、
命令が命令完了トラッカに割り当てられている実行ステージのためのコンパイラによって提供される命令のための符号化内の指標に応答して、示された割り当てられた命令完了トラッカを使用して、命令の完了を追跡するステップと、
命令ストリーム内の命令が命令完了トラッカに依存する実行ステージのためのコンパイラによって提供される命令のための符号化内の命令に応答して、命令完了トラッカに依存しているとして示される命令を実行する前に、示された命令完了トラッカの状態をチェックするステップと
を含む。
当業者によって理解されるように、本発明のこれらの態様は、本明細書に記載の本発明の好適およびオプションの特徴の任意の1つもしくは複数またはすべてを、適宜に含むことができ、好適には含む。
グラフィックス処理パイプラインの場合、実行ユニット(ステージ)は、好適には、頂点シェーダ、フラグメントシェーダなど、グラフィックス処理パイプラインのプログラム可能なシェーディングステージを含む。これらのステージは、所望のように任意の適切な方法で実現されてもよく、任意の所望のかつ適切なシェーディング、たとえば、頂点シェーディング、フラグメントシェーディングなどの機能を、それぞれ、適宜に実行することができる。フラグメントシェーダの場合、たとえば、フラグメントシェーダは、たとえば、表示のためのフレームを表すレンダ出力値のセットを生成するために、プリミティブをレンダリングすることができる。これらの出力値は、次に、表示のためのフレームバッファなど、格納および使用のための外部メモリにエクスポートされてもよい。
好適には、実行パイプラインのすべての実行ステージ(各実行ステージ)は、本発明の方法で動作することができ、実際に動作する。
各プログラム可能な処理ステージ(実行ユニット)は、プログラム可能な処理回路など、任意の適切なプログラム可能なハードウェア要素を含むことができる。各プログラム可能な処理ステージは、処理パイプラインの他のプログラム可能なステージに、別個の回路要素として提供されてもよく、またはプログラム可能な処理ステージは、それらのプログラム可能な処理回路網の一部もしくは全部(この場合、所望のプログラム可能な処理ステージとして機能するように異なってプログラムされる)を共有してもよい。
プログラム可能な処理(シェーダ)ステージだけでなく、グラフィックス処理パイプラインは、グラフィックス処理パイプラインが含むことができる、ラスタライザ、初期深度(または初期深度およびステンシル)テスタ、後期深度(または深度およびステンシル)テスタ、ブレンダ、タイルバッファ、書き出しユニットなど、任意の他の適切な所望の処理ステージを含むこともできる。
本発明は、表示のためのフレーム、テクスチャ出力のためのレンダなど、生成するためにグラフィックス処理パイプラインが使用され得るすべての形態の出力に使用され得る。グラフィックス処理からの、たとえば、フラグメントシェーディングされた出力データ値は、好適には、表示のためのフレームバッファなど、格納および使用のための外部の、たとえばメインのメモリにエクスポートされる。
本発明は、任意の適切な形式または構成のグラフィックスプロセッサに適用可能である。具体的には、タイルベースのグラフィックスプロセッサおよびグラフィックス処理システムに適用可能である。したがって、好適実施形態では、グラフィックス処理システムおよびグラフィックス処理パイプラインは、それぞれ、タイルベースのシステムおよびパイプラインである。
特に好適な実施形態では、本発明の様々な機能は、単一のグラフィックス処理プラットフォーム上で実行され、グラフィックス処理プラットフォームは、たとえば、表示デバイスのためのフレームバッファに書き込まれるレンダリングされたフラグメントデータを生成および出力する。
本発明は、適切に構成されたマイクロプロセッサベースのシステムなど、任意の適切なシステムで実施されてもよい。好適実施形態では、本発明は、コンピュータおよび/またはマイクロプロセッサベースのシステムで実施される。
本発明の様々な機能は、任意の所望の適切な方法で実行されてもよい。たとえば、本発明の機能は、所望のように、ハードウェアまたはソフトウェアで実現されてもよい。したがって、たとえば、特に明記しない限り、本発明の様々な機能的要素および「手段」は、適切な専用ハードウェア要素、および/または所望の方法で動作するようにプログラムされ得るプログラム可能なハードウェア要素など、様々な機能などを実行するために動作可能な、適切なプロセッサ、コントローラ、機能的ユニット、回路網、処理ロジック、マイクロプロセッサ構成などを含むことができる。
ここで、当業者によって理解されるように、本発明の様々な機能などは、所与のプロセッサ上で複製および/または並列に実行されてもよいことにも注意すべきである。同様に、様々な処理ステージは、所望ならば、処理回路網などを共有することができる。
上述した特定の機能を実行するために必要な任意のハードウェアを条件として、データ処理システムおよびパイプラインは、データ処理パイプラインが含む、通常の機能的ユニットなどの任意の1つもしくは複数、またはすべてを、別の方法で含むことができる。
本発明の上述した態様および実施形態のすべては、本明細書に記載の好適およびオプションの特徴の任意の1つもしくは複数、またはすべてを、適宜に含むことができ、好適には含むことも、当業者には理解されるであろう。
本明細書による方法は、ソフトウェア、たとえばコンピュータプログラムを、少なくとも部分的に使用して実施されてもよい。したがって、さらなる側面から見ると、本発明は、データ処理手段にインストールされると、特に本明細書に記載の方法を実行するように適合されるコンピュータソフトウェア、プログラム要素がデータ処理手段上で実行されると、本明細書に記載の方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびプログラムがデータ処理システム上で実行されると、本明細書に記載の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することが分かるであろう。データプロセッサは、マイクロプロセッサシステム、プログラム可能なFPGA(フィールドプログラマブルゲートアレイ)などであってもよい。
本発明は、データ処理手段を備えるグラフィックスプロセッサ、レンダラ、またはマイクロプロセッサシステムを動作させるために使用されると、前記データ処理手段と協働して、前記プロセッサ、レンダラ、またはシステムに、本発明の方法のステップを実行させる、このようなソフトウェアを含むコンピュータソフトウェアキャリアにもおよぶ。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、RAM、フラッシュメモリ、もしくはディスクなどの物理的記憶媒体であってもよく、またはワイヤ上の電子信号、光信号、もしくは衛星などへの無線信号であってもよい。
本発明の方法のすべてのステップが、コンピュータソフトウェアによって実行される必要はなく、したがって、さらに広い態様によれば、本発明は、本明細書に記載の方法のステップの少なくとも1つを実行するためのコンピュータソフトウェア、およびコンピュータソフトウェアキャリアにインストールされたこのようなコンピュータソフトウェアを提供することが、さらに理解されるであろう。
本発明は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として、適宜に適切に具体化されてもよい。このような実施は、コンピュータ可読媒体、たとえば、ディスケット、CD ROM、ROM、RAM、フラッシュメモリ、またはハードディスクなど、有形の非一時的な媒体に各々固定された一連のコンピュータ可読命令を含むことができる。光もしくはアナログ通信ラインを含むがこれらに限定されない有形の媒体を介して、またはマイクロ波、赤外線、もしくは他の伝送技術を含むがこれらに限定されない無線技術を無形的に使用して、モデムまたは他のインタフェースデバイスを介してコンピュータシステムに伝送可能な一連のコンピュータ可読命令を含むこともできる。一連のコンピュータ可読命令は、本明細書で上述した機能のすべてまたは一部を具体化する。
当業者は、このようなコンピュータ可読命令が、多くのコンピュータアーキテクチャまたはオペレーティングシステムと共に使用するためのいくつかのプログラミング言語で書かれてもよいことを理解するであろう。さらに、このような命令は、半導体、磁気、もしくは光を含むがこれらに限定されない、現在のもしくは将来の任意のメモリ技術を使用して格納されてもよく、または光、赤外線、もしくはマイクロ波を含むがこれらに限定されない、現在もしくは将来の任意の通信技術を使用して伝送されてもよい。このようなコンピュータプログラム製品は、添付の印刷されたまたは電子文書を有するリムーバブル媒体、たとえば、収縮包装されたソフトウェアとして配布されてもよく、コンピュータシステムに、たとえば、システムROMまたは固定ディスクに予めロードされてもよく、またはネットワーク、たとえば、インターネットもしくはワールドワイドウェブを介してサーバもしくは電子掲示板から配布されてもよい。
本発明のいくつかの好適実施形態を、例としてのみ、添付図面を参照して説明する。
例示的なコンピュータグラフィックス処理システムを示す図である。 本発明の方法で動作させることができるグラフィックス処理パイプラインを概略的に示す図である。 図1のグラフィックス処理システムの動作の好適実施形態を概略的に示す図である。 図1のグラフィックス処理システムの動作の好適実施形態を概略的に示す図である。 本発明の好適実施形態の動作をさらに示す図である。 本発明の好適実施形態の動作をさらに示す図である。 本発明の好適実施形態の動作をさらに示す図である。 本発明の好適実施形態の動作をさらに示す図である。
同様の参照番号は、図面内で適切な場合、同様の構成要素に使用される。
ここで、本発明の好適実施形態を、表示のためのコンピュータグラフィックスの処理との関連で説明する。
図1は、典型的なコンピュータグラフィックス処理システムを示す。
ホストプロセッサ1上で実行されるゲームなどのアプリケーション2は、関連するグラフィックス処理ユニット(グラフィックス処理パイプライン)3によって実行すべきグラフィックス処理動作を必要とすることになる。これを行うために、アプリケーションは、API(アプリケーションプログラミングインタフェース)呼び出しを生成することになり、API呼び出しは、アプリケーション2によって要求されるグラフィックス出力を生成するために、グラフィックスプロセッサ3への適切なコマンドを生成するために、ホストプロセッサ1上で実行されているグラフィックス処理パイプライン3のために、ドライバ4によって解釈される。これを容易にするために、(たとえば、表示すべきフレームを生成するために)グラフィックス出力のためのホストシステム1上で実行されているアプリケーション2からのコマンドに応答して、「コマンド」のセットがグラフィックスプロセッサ3に提供されることになる。
図2は、本実施形態のグラフィックス処理パイプライン3をより詳細に示す。
図2に示すグラフィックス処理パイプライン3は、タイルベースのレンダラであり、したがって、当技術分野で知られているように、生成すべき出力フレームなどのレンダ出力データアレイのタイルを生成することになる。
(当技術分野で知られているように、タイルベースのレンダリングでは、イミディエイトモードレンダリングでのように一度に有効に処理される全体的なレンダ出力、たとえば、フレームではなく、レンダ出力、たとえば、表示すべきフレームは、通常「タイル」と呼ばれる、複数のより小さいサブ領域に分割される。各タイル(サブ領域)は、別々に(典型的には次々に)レンダリングされ、レンダリングされたタイル(サブ領域)は、次に、完全なレンダ出力、たとえば、表示のためのフレームを提供するために、再結合される。このような構成では、レンダ出力は、典型的には、規則的なサイズおよび形状(通常、たとえば、正方形または矩形である)のサブ領域(タイル)に分割されるが、これは、必須ではない。)
レンダ出力データアレイは、当技術分野で知られているように、典型的には、スクリーンまたはプリンタなどの表示デバイス上に表示するために意図された出力フレームであってもよいが、たとえば、(「テクスチャにレンダリング(render to texture)」出力としても知られる)後のレンダリングプロセスで使用するために意図された中間データなどを含むこともできる。
(当技術分野で知られているように、コンピュータグラフィックス画像が表示されることになっている場合、通常は、最初に一連のプリミティブ(ポリゴン)として定義され、プリミティブは、次に、グラフィックスレンダリングのためのグラフィックスフラグメントに順番に分割される(ラスタライズされる)。通常のグラフィックスレンダリング動作中、レンダラは、フラグメントが正確に表示され得るように、各フラグメントに関連する(たとえば)色(赤、緑、および青、RGB)ならびに透明度(アルファ、a)データを変更することになる。フラグメントが完全にレンダラを通過した後、次に、それらの関連するデータ値は、出力する、たとえば、表示する準備ができているメモリに格納される。)
図2は、本実施形態の動作に関連するグラフィックス処理パイプライン3の主要な要素およびパイプラインステージを示す。当業者によって理解されるように、図2に示されていないグラフィックス処理パイプラインの他の要素が存在してもよい。ここで、図2は、単なる概略であり、たとえば、実際には、図示された機能ユニットおよびパイプラインステージは、それらが図2で別々のステージとして概略的に示されているにもかかわらず、かなりのハードウェア回路を共有してもよいことにも注意すべきである。図2に示すようなグラフィックス処理パイプラインのステージ、要素、およびユニットなどの各々は、所望のように実装されてもよく、したがって、たとえば、必要な動作および機能を実行するための適切な回路網および/または処理ロジックなどを備えることになることも理解されるであろう。
図2に示すように、グラフィックス処理パイプライン3は、頂点シェーダ20、ハルシェーダ21、テッセレータ22、ドメインシェーダ23、ジオメトリシェーダ24、ラスタライズステージ25、初期Z(深度)およびステンシルテストステージ26、フラグメントシェーディングステージ27の形態のレンダラ、後期Z(深度)およびステンシルテストステージ28、ブレンディングステージ29、タイルバッファ30、ならびにダウンサンプリングおよび書き出し(マルチサンプルリゾルブ)ステージ31を含む、いくつかのステージを含む。
頂点シェーダ20は、当技術分野で知られているように、たとえば、生成すべき出力に対して定義された頂点に関連付けられた入力データ値を受け取り、グラフィックス処理パイプライン3の後続のステージによって使用するための対応する「頂点シェーディングされた」出力データ値のセットを生成するために、これらのデータ値を処理する。頂点シェーディングは、たとえば、レンダリングすべき画像内の照明の効果を考慮するために、入力データを変更する。
当技術分野で知られているように、ハルシェーダ21は、パッチ制御点のセットに対して動作を実行し、パッチ定数として知られる追加のデータを生成し、テッセレーションステージ22は、ハルのより高い次元の表現を作成するために、ジオメトリを細分し、ドメインシェーダ23は、(頂点シェーダと同様)テッセレーションステージによって出力された頂点に対して動作を実行し、ジオメトリシェーダ24は、三角形、点、または線などのプリミティブ全体を処理する。これらのステージは、頂点シェーダ21と共に、グラフィックス処理パイプライン3に提供されるコマンドおよび頂点データに応答して、レンダリングすべきプリミティブをセットアップするために、変形および照明操作ならびにプリミティブセットアップなど、必要なフラグメントフロントエンド動作のすべてを効果的に実行する。
グラフィックス処理パイプライン3のラスタライズステージ25は、当技術分野で知られているように、レンダ出力(たとえば、表示すべき画像)を構成するプリミティブを、処理のための個々のグラフィックスフラグメントにラスタライズする。これを行うため、ラスタライザ25は、レンダリングするためのグラフィックスプリミティブを受信し、プリミティブをサンプリング点にラスタライズし、プリミティブをレンダリングするための(適切なサンプリング点を表す)適切な位置を有するグラフィックスフラグメントを生成する。
ラスタライザによって生成されたフラグメントは、次に、前方へ、処理するためのパイプラインの残りの部分に送られる。
初期Z/ステンシルステージ26は、当技術分野で知られているように、任意のフラグメントがこのステージで破棄され(間引かれ)得るかどうかを確認するために、ラスタライザ25から受信するフラグメントに対してZ(深度)テストを実行する。これを行うため、新しいフラグメントが、すでにレンダリングされているフラグメントによって遮蔽されることになるか否かを判定するために、ラスタライザ25から出るフラグメントの(フラグメントに関連付けられた)深度値を、すでにレンダリングされているフラグメントの深度値(これらの深度値は、タイルバッファ30の一部である深度(Z)バッファに格納される)と比較する。同時に、初期ステンシルテストが行われる。
フラグメント初期Zおよびステンシルテストステージ26に合格したフラグメントは、次に、フラグメントシェーディングステージ27に送られる。フラグメントシェーディングステージ27は、当技術分野で知られているように、適切なレンダリングされたフラグメントデータを生成するために、フラグメントを処理するために、初期Zおよびステンシルテストに合格したフラグメントに対して、適切なフラグメント処理動作を実行する。
このフラグメント処理は、当技術分野で知られているように、適切なフラグメントデータを生成するために、フラグメントに対するフラグメントシェーダプログラムの実行、フラグメントへのテクスチャの適用、フラグメントへのフォギングまたは他の操作の適用など、任意の適切な所望のフラグメントシェーディング処理を含むことができる。本実施形態では、フラグメントシェーディングステージ27は、シェーダパイプライン(プログラム可能なフラグメントシェーダ)の形態である。
次に、レンダリングされたフラグメントが、実際に最終的な画像に見られることになるかどうかを判定するために、シェーディングされたフラグメントに対して、特に、パイプライン深度テストの終わりを実行する、「後期」フラグメントZおよびステンシルテストステージ28が存在する。この深度テストは、当技術分野で知られているように、フラグメントシェーディングステージ27から出るフラグメントの(フラグメントに関連付けられた)深度値を、(深度バッファに格納されているような)すでにレンダリングされているフラグメントの深度値と比較することによって、新しいフラグメントが、すでにレンダリングされているフラグメントのフラグメントデータを置換すべきであるか否かを判定するために、タイルバッファ30内のZバッファに格納されたフラグメントの位置に対するZバッファ値を使用する。この後期フラグメント深度およびステンシルテストステージ28は、また、フラグメントに対して、任意の必要な「後期」アルファおよび/またはステンシルテストを実行する。
後期フラグメントテストステージ28に合格したフラグメントは、次に、必要であれば、ブレンダ29内のタイルバッファ30にすでに格納されたフラグメントとの任意の必要なブレンディング演算が施される。ディザなど(図示せず)など、フラグメントに対して必要な任意の他の残りの動作も、このステージで行われる。
最後に、(ブレンドされた)出力フラグメントデータ(値)は、タイルバッファ30に書き込まれ、タイルバッファ30から、出力フラグメントデータを、たとえば、表示のためのフレームバッファに出力することができる。出力フラグメントに関する深度値も、タイルバッファ30内のZバッファに適切に書き込まれる。(タイルバッファは、当技術分野で知られているように、それぞれ、(処理されているタイルの各サンプリング点に対して本質的に)バッファが表す各サンプリング点に関する適切な色、たとえば、またはZ値を格納する色および深度バッファを格納することになる。)これらのバッファは、当技術分野で知られているように、全体的なレンダ出力(たとえば、表示すべき画像)の部分(タイル)を表すフラグメントデータのアレイを格納し、バッファ内のサンプリング値の個々のセットは、全体的なレンダ出力の個々のピクセル値に対応する(たとえば、4倍のマルチサンプリングが使用されている場合、標本値の各々の2×2のセットは、出力ピクセルに対応することができる)。
タイルバッファは、グラフィックス処理パイプライン(チップ)上に(ローカルに)配置されるRAMの一部として提供される。
タイルバッファ30からのデータは、ダウンサンプリング(マルチサンプルリゾルブ)書き出しユニット31に入力され、そこから、表示デバイス(図示せず)のフレームバッファなどの外部のメモリ出力バッファに出力される(ライトバックされる)。(表示デバイスは、たとえば、コンピュータモニタまたはプリンタなどの、ピクセルのアレイを備えるディスプレイを含むことができる。)
ダウンサンプリングおよび書き出しユニット31は、出力バッファに出力するための出力値(ピクセル)を生成するために、タイルバッファ30に格納されたフラグメントデータを、出力バッファ(デバイス)のための適切な解像度に(すなわち、出力デバイスのピクセルに対応するピクセルデータのアレイが生成されるように)ダウンサンプリングする。
レンダ出力のタイルが処理され、そのデータが格納のためのメインメモリに(たとえば、メインメモリ内のフレームバッファ(図示せず)に)エクスポートされると、次に、次のタイルが処理され、全体的なレンダ出力(たとえば、表示すべきフレーム(画像))を生成するために、十分なタイルが処理されるまで、同じように続く。プロセスは、次に、次のレンダ出力(たとえば、フレーム)に対して繰り返され、同じように続く。
グラフィックス処理パイプライン3のための他の構成は、もちろん可能になる。
上記は、図1に示すグラフィックス処理システムの動作の特定の特徴を説明する。本発明の実施形態による図1に示すグラフィックス処理システムの動作のさらなる特徴を、ここで説明する。
図2から分かるように、グラフィックス処理パイプライン3は、いくつかのプログラム可能な処理または「シェーダ」ステージ、すなわち、頂点シェーダ20、ハルシェーダ21、ドメインシェーダ23、ジオメトリシェーダ24、およびフラグメントシェーダ27を含む。これらのプログラム可能なシェーダステージは、各々のシェーダプログラムを実行し、シェーダプログラムは、1つまたは複数の入力変数を有し、出力変数のセットを生成し、アプリケーションによって提供される。これを行うため、アプリケーション2は、GLSL、HLSL、OpenCLなどなどの高レベルのシェーダプログラミング言語を使用して実装されるシェーダプログラムを提供する。これらのシェーダプログラムは、次に、シェーダ言語コンパイラによって、目標のグラフィックス処理パイプライン3のためのバイナリコードに変換される。これは、当技術分野で知られているように、コンパイラ内のプログラムの1つのまたは複数の中間表現の作成を含むことができる。(コンパイラは、たとえば、ドライバ4の一部であってもよく、コンパイラを実行させるために、特別なAPI呼び出しが存在する。コンパイラの実行は、したがって、アプリケーションによって生成されるAPI呼び出しに応答してドライバによって行われるドローコール準備の一部とみなされてもよい。)
上述したように、グラフィックス処理パイプライン内の各シェーダは、生成すべきグラフィックス出力内の各グラフィックスアイテムのための小さいプログラムを実行することによってグラフィックス処理を実行する処理ユニットである(この点で「アイテム」は、通常、頂点、フラグメント、またはピクセルである)。本実施形態は、シェーダによって実行すべき実行スレッド(ここで、各スレッドは、1つのグラフィックスアイテムに対応する)が、ロックステップで、一度に1命令実行されることになっているスレッドの「グループ」または「バンドル」に編成されている状況に関連する。
本実施形態では、スレッドグループに関する命令の依存関係を追跡し、スレッドグループ内の命令の順不同の実行を可能にするために、「スコアボード」構成が使用される。これは、以下のように実現される。
本実施形態は、(各々のスレッドグループのための8個の「スコアボード」エントリまたはスロットを有する)8個の命令完了トラッカをサポートするスコアボードを使用する。所望ならば、他の数のスコアボードエントリ(スロット(命令完了トラッカ))が可能になる。
スコアボードエントリ(命令完了トラッカ)の各々は、それに関連付けられたカウンタを有する。カウンタは、限られた幅のものであり、カウンタがその最大値に達した場合、そのスコアボードスロット(カウンタ)を使用して並べ替え可能命令を実行する試みは、(カウンタが減少するまで)関連するスレッドグループをストールさせる。カウンタ幅は、1ビット程度に小さくてもよい。異なるスロットごとに異なる幅を有することも可能になる。
スコアボードに関するデータ(スロットカウンタ値)は、任意の適切な方法で実装されてもよく、たとえば、適切なパイプラインメモリに格納されてもよい。
ホストプロセッサ1上で実行されるグラフィックス処理パイプラインシェーダコンパイラが、シェーダプログラムのための命令ストリームを処理するとき、命令ストリーム内で、順不同で実行されることが許可される命令(並べ替え可能命令)を識別する。本実施形態では、(存在する場合)識別された「並べ替え可能」命令は、メモリロードおよび格納、属性補間、ならびにテクスチャルックアップである。他の構成も、もちろん可能になる。
コンパイラが、命令ストリーム内の並べ替え可能命令を識別した場合、それを、スコアボードスロット(エントリ)(命令完了トラッカ)に割り当て、並べ替え可能命令がどのスコアボードスロットに割り当てられているのかを指定するデータを、命令のフィールド内に符号化する。この割り当ては、所望のように、たとえば、命令の性質、およびスコアボードスロットの現在の使用状況に応じて行われてもよい。
並べ替え可能命令が、実行のための適切なシェーダにディスパッチされると、示されたスコアボードスロットスロット(エントリ)は、(現在、そのスロットに関連付けられた未処理の動作(命令)が存在することを示すために)そのカウンタをインクリメントする。命令が実際に完了すると、スロットのカウンタは、それに対応してデクリメントされる。
命令ストリーム内の並べ替え可能命令の識別と同様に、コンパイラは、また、命令ストリーム内の各命令に対して、並べ替え可能であろうとなかろうと、もしあれば、命令がどのスコアボードスロット(命令完了トラッカ)に依存するかを示す注釈を提供する。この注釈は、データ依存関係がシェーダプログラム内に本当に存在する場合、それらのデータ依存関係を強制するために使用される。
本実施形態では、この注釈は、関連する命令が完了することを必要とする命令上には実際に置かれず、直前の命令上に置かれる(命令内に符号化される)。これは、その依存関係がまだ満たされていない依存命令の命令フェッチを保留することを容易にする。
命令は、次に、実行のためのシェーダにディスパッチされる。シェーダでは、各命令がフェッチされる前に、示された関連する依存関係スロット(命令完了トラッカ)のカウンタ値がチェックされる。すべての関連するスロットが0のカウンタ値を有する(したがって、現在の命令が依存するすべての命令が完了していることを示す)場合、命令は、フェッチされ、実行される。すべての関連するスロットが0のカウンタ値を持たない(したがって、現在の命令が依存する命令の少なくともいくつかがまだ完了していないことを示す)場合、命令のフェッチ(したがって、実行)は、すべての関連するスロットのカウンタ値が0に達するまで、(任意の適切な機構を使用して)保留される。
図3Aおよび図3Bは、このプロセスを示す。コンパイラは、命令ストリーム内の命令に達すると(ステップ40)、それが並べ替え可能命令であるか否かを判定する(ステップ41)。そうである場合、スコアボードスロットをその命令に割り当て、その割当を命令内に符号化する(ステップ42)。そうでない場合、スコアボードスロットは、割り当てられない。
コンパイラは、次に、命令がそれ以前の命令に依存しているかどうかを判定し(ステップ43)、(もしあれば)現在の命令の決定された依存関係のための関連するスコアボードスロットによって、以前の命令に注釈を付ける(ステップ44)。
命令は、次に、シェーダにディスパッチされる(ステップ45)。並べ替え可能命令がディスパッチされると、その関連するスロットのためのカウンタは、インクリメントされる(ステップ46、47)。対応して、このような命令が完了すると、カウンタは、デクリメントされる(ステップ51)。
命令が実行されることになっている場合、命令に関連付けられているとして示される依存関係スロットのカウンタ値は、チェックされる(ステップ48)。すべての関連するスロットが0のカウンタ値を有する場合、命令は、実行される(ステップ49)。すべての関連するスロットが0のカウンタ値を持たない場合、命令の実行は、すべての関連するスロットのカウンタが0に達するまで、保留される(ステップ50)。
図4は、3つの命令、レジスタR0内にメモリからの値をロードする第1の命令と、レジスタR1内に一定の値を移動させる第2の命令と、レジスタR0およびR1の内容を加算し、結果をレジスタR2内に置く第3の命令とを含む短い命令シーケンスに関する本発明の実施形態で使用されるスコアボード構成を示す。
この場合、図4に示すように、コンパイラは、第1の命令を並べ替え可能命令であるとして識別することになるので、この例では、それをスコアボードスロット(エントリ)0に割り当てる。また、第3の命令を、第1の命令(ロード命令)の完了に依存しているとして認識するので、スコアボードエントリ(スロット)0に依存しているとして第3の命令に注釈を付ける。
命令は、次に、パイプラインにディスパッチされる。図4に示すように、第1の命令がディスパッチされると、スコアボードエントリ0のカウンタは、ロード命令が保留中であることを示すために、インクリメントされる。この場合、ロード命令は、キャッシュミスにより完了するのに長い時間を要することが仮定される。
処理は、次に、第2の命令に移り、第2の命令は、どのスコアボードスロットにも依存しないように実行されてもよい。実行ユニットは、次に、第3の命令を実行することを試みるが、スコアボードエントリ0から、第3の命令が依存するロード命令がまだ完了していないことを判定する。第3の加算命令は、したがって、この段階では実行することができない。最後に、スコアボードエントリ0のカウンタが0である場合、第3の加算命令は、実行することができ、ロードは、完了し、加算は、発行され得る。
図5は、対応する動作を示すが、この動作では、第3の加算命令の依存関係は、(図5に示すように)第2の移動命令のための符号化内に示される。この場合、移動命令が実行されると、次の命令は、スコアボードエントリ0に依存するので、第3の加算命令のフェッチは、第1のロード命令が完了するまで、延期されることが識別される。
図6は、依存する格納動作を実施するための本発明の例示的な動作を示す。この場合、一連の4つの格納命令が存在し、第4の格納命令は、第2および第3の格納命令の完了に依存することが仮定される。これを容易にするために、図6に示すように、第2および第3の格納命令は、同じスコアボードスロット(エントリ)、この場合ではスコアボードエントリ1に割り当てられ、第4の依存する格納命令は、第2および第3の格納命令が完了した後にのみ実行されるように、そのスコアボードエントリに依存しているとして示される。(しかしながら、図6に示すように、第4の格納命令は、第1の格納命令に依存しないので、第1の格納命令がまだ完了していない場合でも、実行されてもよい。)
所望であれば、上記の実施形態に対する様々な代替および追加が可能になる。
たとえば、上記の実施形態では、明示的なスコアボードが提供するもの以外の依存関係追跡は、実行されない。これは、明示的なスコアボードテストが存在しない場合、スレッドからの読み取り、書き込み、およびアトミックは、互いに対して任意の順序で実行されることを意味する。そういう状況であれば、コンパイラが、メモリ書き込みが前の読み取りまたは書き込みと重ならないことを証明できない場合、コンパイラは、この書き込みを、問題の前の読み取りまたは書き込みに依存するとしてマークする。同様に、コンパイラが、メモリ読み取りが前の書き込みと重ならないことを証明できない場合、コンパイラは、この読み取りを、すべての影響を受ける、前の書き込みに依存するとしてマークする。
これに対する代替として、別の実施形態では、コンパイラは、「メモリフェンス」命令を命令ストリーム内に挿入することができる。このような命令は、たとえば、スレッドグループからの命令に順序を強制するように、実行ユニット(たとえば、ロード/格納ユニット)に命じる命令である。たとえば、フェンス命令の前に発行されるすべてのロード/格納命令は、フェンスの後のすべてのロード/格納命令の前に完了する必要がある。これは、たとえば、すべてのスコアボード「スロット」に依存しているとして示される命令を使用することによって、達成され得る。ロードの並べ替えのみを阻止する「ロードフェンス」命令、および格納の並べ替えのみを阻止する「格納フェンス」命令を有することも可能になる。
別の可能性は、同じスレッドグループから発行されたすべてのロード/格納に対するメモリフェンスなどを暗黙的に挿入するロード/格納パイプラインを有することになる。
本出願人は、いくつかの場合、実行ユニットが、2つ以上の未処理のアイテムを待機している可能性があるが、これらのアイテムは、任意の順序で処理され得ることを認識している。この場合の実施効率を最大にするために、スコアボード「分岐」命令が使用されてもよい(この状況を認識した場合、コンパイラによって命令ストリーム内に挿入されてもよい)。この命令は、スコアボードスロット(エントリ)のサブセットをテストする条件分岐であり、テストすべきあるサブセットのすべてのスコアボードスロットが、ゼロに等しいカウンタ値を有する場合、分岐が取られ、テストすべき他のサブセットのすべてのスコアボードスロットが、ゼロに等しいカウンタ値を有する場合、別の分岐(経路)が取られ、そうでなければ、ブランチ命令は、ストールされる。テストするスコアボードスロットのセットは、分岐命令自体に符号化される。このようなスコアボード分岐命令は、2つのセットのうちの少なくとも1つが満たされるとすぐに命令が実行されるように、依存関係の2つの異なるセットで注釈付けされるべきである。分岐は、スレッドグループの相違を生じさせることができないように、スレッドグループ内のすべてのスレッドに対して常に同じ方向を取る。
図7は、スコアボード分岐命令の動作を概略的に示す。この例では、分岐命令は、シーケンス内の第3の命令であり、(この場合、シーケンス内の命令7に分岐する)行われているスコアボードエントリ0に依存し、スコアボードエントリ0または1にある第2の依存関係サブセットを有する(この場合、実行は、シーケンス内の次の命令(この場合、命令4)に移る)。どちらの分岐条件も満たされない場合、分岐命令の実行は、ストールされる。
本発明は、少なくともその好適実施形態で、たとえば、スレッドグループベースのGPUシェーダコア内のスレッドグループのための命令の順不同の実行を容易にするための機構を提供することが、上記から分かる。これは、所与の量のハードウェアリソースで利用することができる並列性の量を増加させるのを助け、したがって、実行ユニットの利用率を改善するのを助ける。
これは、少なくとも本発明の好適実施形態では、「明示的」スコアボード機構を使用することによって達成され、「明示的」スコアボード機構では、命令の依存関係が、命令自体に符号化される。
1 ホスト
2 アプリケーション
3 グラフィックス処理パイプライン
4 ドライバ
20 頂点シェーダ
21 ハルシェーダ
22 テッセレータ
23 ドメインシェーダ
24 ジオメトリシェーダ
25 ラスタライズステージ
26 初期Z(深度)およびステンシルテストステージ
27 フラグメントシェーディングステージ
28 後期Z(深度)およびステンシルテストステージ
29 ブレンディングステージ
30 タイルバッファ
31 ダウンサンプリングおよび書き出し(マルチサンプルリゾルブ)ステージ

Claims (25)

  1. データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインを含むデータ処理システムを動作させる方法であって、
    実行ステージによって実行すべき命令のストリームについて、前記命令ストリーム内で並べ替えることができる任意の命令が存在するかどうかを判定するステップと、
    前記命令ストリーム内で並べ替えることができると判定された各命令を、命令完了トラッカに割り当て、前記命令が割り当てられた前記命令完了トラッカの指標を前記命令のための符号化に含めるステップと、
    命令完了トラッカに割り当てられている命令に依存する前記命令ストリーム内の各命令に対して、命令完了トラッカに割り当てられている命令に依存する前記命令がどの命令完了トラッカに依存するかの指標を前記命令ストリーム内に提供するステップと、
    実行のための前記実行ステージに前記命令ストリーム内の命令をディスパッチするステップと、
    前記命令ストリーム内の前記命令を実行する際、
    前記割り当てられた命令完了トラッカを使用して前記命令の完了を追跡するステップと、
    命令完了トラッカに依存しているとして示される任意の命令について、前記命令を実行する前に、その命令完了トラッカの状態をチェックするステップと
    を含む、方法。
  2. 並べ替えることができる前記命令ストリーム内の前記命令が、メモリロード、メモリ格納、メモリアトミック、属性補間、およびテクスチャルックアップを含む、請求項1に記載の方法。
  3. 各命令完了トラッカが、前記命令の完了を追跡するために使用されるカウンタを備える、請求項1または2に記載の方法。
  4. 命令が割り当てられている前記命令完了トラッカが、前記命令がどの命令トラッカに割り当てられているのかを指定する命令符号化内の領域内で示される、請求項1から3のいずれか一項に記載の方法。
  5. もしあれば、前記命令ストリーム内の命令に対して提供される、前記命令がどの命令完了トラッカに依存するかの前記指標が、前記命令ストリーム内の直前の命令内で示される、請求項1から4のいずれか一項に記載の方法。
  6. フェンス命令を前記命令ストリーム内に含めるステップをさらに含み、前記フェンス命令が、前記フェンス命令の後の命令が実行される前に、前記フェンス命令の前の前記ストリーム内の所与のタイプのすべての前記命令を強制的に完了させる、請求項1から5のいずれか一項に記載の方法。
  7. 分岐命令を前記命令ストリーム内に含めるステップをさらに含み、前記分岐命令が、それに関連付けられた異なる命令トラッカ依存関係の2つ以上のセットを有し、命令トラッカ依存関係の前記セットのうちの1つが満たされる場合、分岐が取られる、請求項1から6のいずれか一項に記載の方法。
  8. 前記データ処理システムが、グラフィックス処理動作を実行するためにグラフィックスシェーダプログラムを実行する1つまたは複数のプログラム可能なシェーダステージを含むグラフィックス処理パイプラインを含むグラフィックス処理システムを備える、請求項1から7のいずれか一項に記載の方法。
  9. データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインを含むデータ処理システムを動作させる方法であって、命令の前記実行が他の命令の完了に依存することができ、命令の完了が追跡され、前記命令の実行に関して他の命令の完了に依存する命令の依存関係は、前記依存関係の命令に関連付けることができ、
    前記方法が、
    実行すべき命令のストリーム内に、命令の依存関係の2つ以上の異なるセットが関連付けられている条件分岐命令を含めるステップであって、命令依存関係の各々の異なるセットが、それに関連して従うための前記命令ストリーム内の所与の経路を有する、ステップと、
    実行のための実行ステージに前記命令ストリーム内の命令をディスパッチするステップと、
    前記命令ストリーム内の前記条件分岐命令を実行する際、前記命令に関連する命令依存関係の前記セットの状態をチェックし、前記チェックに基づいて、前記命令ストリーム内の経路に従うステップと
    を含む、方法。
  10. データ処理動作を実行する命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインと、
    前記実行パイプラインの実行ステージのための命令のストリームを生成するために、前記実行パイプラインのためのプログラムをコンパイルするコンパイラと
    を備えるデータ処理システムであって、
    前記コンパイラが、
    実行ステージによって実行すべき命令のストリームについて、前記命令ストリーム内で並べ替えることができる任意の命令が存在するかどうかを判定し、
    前記命令ストリーム内で並べ替えることができると判定された各命令を、命令完了トラッカに割り当て、命令が割り当てられた前記命令完了トラッカの指標を、前記命令のための符号化に含め、
    命令完了トラッカに割り当てられている命令に依存する前記命令ストリーム内の各命令に対して、命令完了トラッカに割り当てられている命令に依存する命令がどの命令完了トラッカに依存するかの指標を前記命令ストリーム内に提供する
    ように構成され、
    前記実行パイプラインの少なくとも1つの実行ステージが、命令ストリーム内の命令を実行する際、
    前記割り当てられた命令完了トラッカを使用して前記命令の完了を追跡し、
    前記命令完了トラッカに依存しているとして示される任意の命令について、前記命令を実行する前に、その命令完了トラッカの状態をチェックする
    ように構成されている、データ処理システム。
  11. 並べ替えることができる前記命令ストリーム内の前記命令が、メモリロード、メモリ格納、メモリアトミック、属性補間、およびテクスチャルックアップを含む、請求項10に記載のデータ処理システム。
  12. 各命令完了トラッカが、前記命令の完了を追跡するために使用されるカウンタを備える、請求項10または11に記載のデータ処理システム。
  13. 命令が割り当てられている前記命令完了トラッカが、前記命令がどの命令トラッカに割り当てられているのかを指定する命令符号化内の領域内で示される、請求項10から12のいずれか一項に記載のデータ処理システム。
  14. もしあれば、前記命令ストリーム内の命令に対して提供される、前記命令がどの命令完了トラッカ依存するかの前記指標が、前記命令ストリーム内の直前の命令内で示される、請求項10から13のいずれか一項に記載のデータ処理システム。
  15. 前記コンパイラが、さらに、フェンス命令を前記命令ストリーム内に含めるように構成され、前記フェンス命令が、前記フェンス命令の後の命令が実行される前に、前記フェンス命令の前の前記ストリーム内の所与のタイプのすべての前記命令を強制的に完了させる、請求項10から14のいずれか一項に記載のデータ処理システム。
  16. 前記コンパイラが、さらに、分岐命令を前記命令ストリーム内に含めるように構成され、前記分岐命令が、それに関連付けられた異なる命令トラッカ依存関係の2つ以上のセットを有し、命令トラッカ依存関係の前記セットのうちの1つが満たされる場合、分岐が取られる、請求項10から15のいずれか一項に記載のデータ処理システム。
  17. グラフィックス処理動作を実行するためにグラフィックスシェーダプログラムを実行する1つまたは複数のプログラム可能なシェーダステージを含むグラフィックス処理パイプラインを含むグラフィックス処理システムを備える、請求項10から16のいずれか一項に記載のデータ処理システム。
  18. データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインの実行ステージのための命令を生成するためにプログラムをコンパイルするコンパイラであって、
    前記実行パイプラインの実行ステージによって実行すべき命令のストリームに関して、前記命令ストリーム内で並べ替えることができる任意の命令が存在するかどうかを判定し、
    前記命令ストリーム内で並べ替えることができると判定されている各命令を、命令完了トラッカに割り当て、前記命令が割り当てられている前記命令完了トラッカの指標を、前記命令の符号化に含め、
    命令完了トラッカに割り当てられている命令に依存する前記命令ストリーム内の各命令に対して、命令完了トラッカに割り当てられている命令に依存する命令がどの命令完了トラッカに依存するかの指標を前記命令ストリーム内に提供する
    ように構成されている、コンパイラ。
  19. データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む、データ処理システムのための実行パイプラインであって、
    前記実行パイプラインの少なくとも1つの実行ステージが、命令ストリーム内の命令を実行する際、
    命令が命令完了トラッカに割り当てられている前記実行ステージのためのコンパイラによって提供される前記命令のための符号化内の指標に応答して、示された割り当てられた命令完了トラッカを使用して、前記命令の完了を追跡し、
    前記実行ステージのためのコンパイラによって提供される命令のための符号化内の、前記命令ストリーム内の命令が命令完了トラッカに依存することの指標に応答して、前記命令完了トラッカに依存しているとして示される前記命令を実行する前に、前記示された命令完了トラッカの状態をチェックする
    ように構成されている、実行パイプライン。
  20. データ処理動作を実行するために命令を実行する1つまたは複数のプログラム可能な実行ステージを含む実行パイプラインであって、命令の前記実行が他の命令の完了に依存することができ、命令の完了が追跡され、前記命令の実行に関して他の命令の完了に依存する命令の依存関係は、前記依存関係の命令に関連付けることができる、実行パイプラインと、
    処理回路網と
    を備えるデータ処理システムであって、
    前記処理回路網は、
    実行すべき命令のストリーム内に、命令の依存関係の2つ以上の異なるセットに関連している条件分岐命令を含めることであって、命令依存関係の各々の異なるセットが、それに関連して従うための前記命令ストリーム内の所与の分岐経路を有する、含めること、および、
    実行のための前記実行パイプラインに前記命令ストリーム内の命令をディスパッチすること
    を行うように構成され、
    前記実行パイプラインが、前記命令ストリーム内の前記条件分岐命令を実行する際、前記命令に関連する命令依存関係の前記セットの状態をチェックし、前記チェックに基づいて、前記命令ストリーム内の経路に従うように構成されている、
    データ処理システム。
  21. データ処理システム上で実行されると、請求項1から9のいずれか一項に記載の方法のすべてのステップを実行するように適合されたコードを含むコンピュータプログラム。
  22. 実質的に、添付図面のいずれか1つに関連して本明細書で説明されたようにデータ処理システムを動作させる方法。
  23. 実質的に、添付図面のいずれか1つに関連して本明細書で記載されたようなデータ処理システム。
  24. 実質的に、添付図面のいずれか1つに関連して本明細書で記載されたようなデータ処理システムのためのコンパイラ。
  25. 実質的に、添付図面のいずれか1つに関連して本明細書で記載されたようなデータ処理システムのための実行パイプライン。
JP2014111029A 2013-05-31 2014-05-29 データ処理システム Active JP6403436B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1309765.4A GB2514618B (en) 2013-05-31 2013-05-31 Data processing systems
GB1309765.4 2013-05-31

Publications (2)

Publication Number Publication Date
JP2014235747A true JP2014235747A (ja) 2014-12-15
JP6403436B2 JP6403436B2 (ja) 2018-10-10

Family

ID=48805563

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014111029A Active JP6403436B2 (ja) 2013-05-31 2014-05-29 データ処理システム

Country Status (4)

Country Link
US (1) US10176546B2 (ja)
JP (1) JP6403436B2 (ja)
CN (1) CN104217393B (ja)
GB (1) GB2514618B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018514034A (ja) * 2015-04-08 2018-05-31 アーム・リミテッド グラフィックス処理システム
JP2019016328A (ja) * 2017-07-11 2019-01-31 富士通株式会社 情報処理装置、情報処理システム及びプログラム

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8203984B2 (en) 2008-12-19 2012-06-19 Intel Corporation Power management for wireless networks
US9928564B2 (en) * 2014-06-26 2018-03-27 Intel Corporation Efficient hardware mechanism to ensure shared resource data coherency across draw calls
US9799088B2 (en) * 2014-08-21 2017-10-24 Qualcomm Incorporated Render target command reordering in graphics processing
US9824413B2 (en) * 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline
US9824414B2 (en) 2014-12-09 2017-11-21 Intel Corporation Thread dispatching for graphics processors
US10796397B2 (en) * 2015-06-12 2020-10-06 Intel Corporation Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices
GB2539958B (en) * 2015-07-03 2019-09-25 Advanced Risc Mach Ltd Data processing systems
GB2540382B (en) * 2015-07-15 2020-03-04 Advanced Risc Mach Ltd Data processing systems
CN106708723B (zh) * 2015-11-13 2019-11-08 阿里巴巴集团控股有限公司 一种测试、校验方法及装置
GB2551574B (en) * 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10310856B2 (en) 2016-11-09 2019-06-04 Arm Limited Disabling thread execution when executing instructions in a data processing system
US10649521B2 (en) 2017-04-24 2020-05-12 Intel Corporation Compensating for high head movement in head-mounted displays
GB2563582B (en) * 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
US10127626B1 (en) * 2017-07-21 2018-11-13 Arm Limited Method and apparatus improving the execution of instructions by execution threads in data processing systems
US10643369B2 (en) * 2018-05-30 2020-05-05 Advanced Micro Devices, Inc. Compiler-assisted techniques for memory use reduction in graphics pipeline
US10884720B2 (en) * 2018-10-04 2021-01-05 Microsoft Technology Licensing, Llc Memory ordering annotations for binary emulation
US10740074B2 (en) * 2018-11-30 2020-08-11 Advanced Micro Devices, Inc. Conditional construct splitting for latency hiding
US10943323B2 (en) * 2018-12-28 2021-03-09 Arm Limited Data processing systems
US11687347B2 (en) * 2021-05-25 2023-06-27 Andes Technology Corporation Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard
US11892972B2 (en) * 2021-09-08 2024-02-06 Arm Limited Synchronization mechanisms for a multi-core processor using wait commands having either a blocking or a non-blocking state
CN115510342B (zh) * 2022-11-23 2023-03-28 沐曦集成电路(上海)有限公司 利用多级指针维护乱序数据的方法、装置、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522940A (ja) * 2007-03-28 2010-07-08 クゥアルコム・インコーポレイテッド プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法
JP2011514592A (ja) * 2008-02-22 2011-05-06 クゥアルコム・インコーポレイテッド グラフィックス処理の命令レイテンシ減少のためのシステムおよび方法
JP2012216009A (ja) * 2011-03-31 2012-11-08 Nec Corp メモリアクセス命令の追い越し制御によるプログラムの高速化方法

Family Cites Families (265)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US5202975A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership Method for optimizing instruction scheduling for a processor having multiple functional resources
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JP3730252B2 (ja) * 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US5450560A (en) * 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
US5542059A (en) * 1994-01-11 1996-07-30 Exponential Technology, Inc. Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
TW260765B (ja) * 1994-03-31 1995-10-21 Ibm
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
TW295646B (ja) * 1995-01-25 1997-01-11 Ibm
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
EP0829045B1 (en) * 1995-06-01 2002-09-04 Fujitsu Limited Coordinating the issue of instructions in a parallel instruction processing system
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5911057A (en) * 1995-12-19 1999-06-08 Texas Instruments Incorporated Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
US5761515A (en) * 1996-03-14 1998-06-02 International Business Machines Corporation Branch on cache hit/miss for compiler-assisted miss delay tolerance
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US5870616A (en) * 1996-10-04 1999-02-09 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US5938760A (en) * 1996-12-17 1999-08-17 International Business Machines Corporation System and method for performance monitoring of instructions in a re-order buffer
US5961654A (en) * 1996-12-17 1999-10-05 International Business Machines Corporation Operand fetch bandwidth analysis
US6189072B1 (en) * 1996-12-17 2001-02-13 International Business Machines Corporation Performance monitoring of cache misses and instructions completed for instruction parallelism analysis
US5918005A (en) * 1997-03-25 1999-06-29 International Business Machines Corporation Apparatus region-based detection of interference among reordered memory operations in a processor
US5928334A (en) * 1997-03-28 1999-07-27 International Business Machines Corporation Hardware verification tool for multiprocessors
US6260191B1 (en) * 1997-04-07 2001-07-10 Hewlett-Packard Company User controlled relaxation of optimization constraints related to volatile memory references
US5937191A (en) * 1997-06-03 1999-08-10 Ncr Corporation Determining and reporting data accessing activity of a program
US6139199A (en) * 1997-06-11 2000-10-31 Sun Microsystems, Inc. Fast just-in-time (JIT) scheduler
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US6748587B1 (en) * 1998-01-02 2004-06-08 Hewlett-Packard Development Company, L.P. Programmatic access to the widest mode floating-point arithmetic supported by a processor
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US6247114B1 (en) * 1999-02-19 2001-06-12 Advanced Micro Devices, Inc. Rapid selection of oldest eligible entry in a queue
US6499116B1 (en) * 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
US6487715B1 (en) * 1999-04-16 2002-11-26 Sun Microsystems, Inc. Dynamic code motion optimization and path tracing
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6425072B1 (en) * 1999-08-31 2002-07-23 Advanced Micro Devices, Inc. System for implementing a register free-list by using swap bit to select first or second register tag in retire queue
US6487716B1 (en) * 1999-10-08 2002-11-26 International Business Machines Corporation Methods and apparatus for optimizing programs in the presence of exceptions
US6654869B1 (en) * 1999-10-28 2003-11-25 International Business Machines Corporation Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling
US6574727B1 (en) * 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6550002B1 (en) * 1999-11-04 2003-04-15 International Business Machines Corporation Method and system for detecting a flush of an instruction without a flush indicator
US6530042B1 (en) * 1999-11-08 2003-03-04 International Business Machines Corporation Method and apparatus for monitoring the performance of internal queues in a microprocessor
US6539502B1 (en) * 1999-11-08 2003-03-25 International Business Machines Corporation Method and apparatus for identifying instructions for performance monitoring in a microprocessor
US6591342B1 (en) * 1999-12-14 2003-07-08 Intel Corporation Memory disambiguation for large instruction windows
US6697932B1 (en) * 1999-12-30 2004-02-24 Intel Corporation System and method for early resolution of low confidence branches and safe data cache accesses
US6651163B1 (en) * 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
GB2367654B (en) * 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
US20030005422A1 (en) * 2001-07-02 2003-01-02 Nicolai Kosche Technique for improving the prediction rate of dynamically unpredictable branches
US7434030B2 (en) * 2001-09-12 2008-10-07 Renesas Technology Corp. Processor system having accelerator of Java-type of programming language
US20030074655A1 (en) * 2001-09-27 2003-04-17 Robison Arch D. Method and apparatus for alias analysis for restricted pointers
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US7260102B2 (en) * 2002-02-22 2007-08-21 Nortel Networks Limited Traffic switching using multi-dimensional packet classification
JP3870112B2 (ja) * 2002-03-13 2007-01-17 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法、コンパイル装置、及びコンパイル用プログラム
US7058937B2 (en) * 2002-04-12 2006-06-06 Intel Corporation Methods and systems for integrated scheduling and resource management for a compiler
US7082602B2 (en) * 2002-04-12 2006-07-25 Intel Corporation Function unit based finite state automata data structure, transitions and methods for making the same
US7007271B2 (en) * 2002-04-18 2006-02-28 Sun Microsystems, Inc. Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer
US8141068B1 (en) * 2002-06-18 2012-03-20 Hewlett-Packard Development Company, L.P. Compiler with flexible scheduling
AU2002368121A1 (en) * 2002-07-30 2004-02-16 The Circle For The Promotion Of Science And Engineering Command control device, function unit, program converter, and language processor
US20040025151A1 (en) * 2002-07-31 2004-02-05 Shan-Chyun Ku Method for improving instruction selection efficiency in a DSP/RISC compiler
US8108843B2 (en) * 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
US7062636B2 (en) * 2002-09-19 2006-06-13 Intel Corporation Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation
US7349399B1 (en) * 2002-09-20 2008-03-25 Redback Networks, Inc. Method and apparatus for out-of-order processing of packets using linked lists
EP1447742A1 (en) * 2003-02-11 2004-08-18 STMicroelectronics S.r.l. Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor
US7290254B2 (en) * 2003-03-25 2007-10-30 Intel Corporation Combining compilation and instruction set translation
US7093106B2 (en) * 2003-04-23 2006-08-15 International Business Machines Corporation Register rename array with individual thread bits set upon allocation and cleared upon instruction completion
US7530062B2 (en) * 2003-05-23 2009-05-05 Microsoft Corporation Optimizing compiler transforms for a high level shader language
US7159101B1 (en) * 2003-05-28 2007-01-02 Mips Technologies, Inc. System and method to trace high performance multi-issue processors
US7313790B2 (en) * 2003-06-23 2007-12-25 Intel Corporation Methods and apparatus for preserving precise exceptions in code reordering by using control speculation
US20040268098A1 (en) * 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
CA2439137A1 (en) * 2003-08-08 2005-02-08 Ibm Canada Limited - Ibm Canada Limitee Improved scheduling technique for software pipelining
US8595688B1 (en) * 2003-09-08 2013-11-26 Synopsys, Inc. Generation of instruction set from architecture description
US7114060B2 (en) * 2003-10-14 2006-09-26 Sun Microsystems, Inc. Selectively deferring instructions issued in program order utilizing a checkpoint and multiple deferral scheme
US9659339B2 (en) * 2003-10-29 2017-05-23 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US7711932B2 (en) * 2003-12-02 2010-05-04 Intel Corporation Scalable rename map table recovery
US20050125786A1 (en) * 2003-12-09 2005-06-09 Jinquan Dai Compiler with two phase bi-directional scheduling framework for pipelined processors
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
US7373484B1 (en) * 2004-01-12 2008-05-13 Advanced Micro Devices, Inc. Controlling writes to non-renamed register space in an out-of-order execution microprocessor
US7293159B2 (en) * 2004-01-15 2007-11-06 International Business Machines Corporation Coupling GP processor with reserved instruction interface via coprocessor port with operation data flow to application specific ISA processor with translation pre-decoder
JP4502650B2 (ja) * 2004-02-03 2010-07-14 日本電気株式会社 アレイ型プロセッサ
US7325124B2 (en) * 2004-04-21 2008-01-29 International Business Machines Corporation System and method of execution of register pointer instructions ahead of instruction issue
JP4376692B2 (ja) * 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
JP4178278B2 (ja) * 2004-05-25 2008-11-12 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ装置、最適化方法、コンパイラプログラム、及び記録媒体
US7941799B2 (en) * 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
US7257700B2 (en) * 2004-06-03 2007-08-14 Sun Microsystems, Inc. Avoiding register RAW hazards when returning from speculative execution
US7200723B1 (en) * 2004-08-06 2007-04-03 Xilinx, Inc. Access to a bank of registers of a device control register interface using a single address
US7506331B2 (en) * 2004-08-30 2009-03-17 International Business Machines Corporation Method and apparatus for determining the profitability of expanding unpipelined instructions
US7624255B1 (en) * 2005-03-09 2009-11-24 Nvidia Corporation Scheduling program instruction execution by using fence instructions
JP3863544B1 (ja) * 2005-07-07 2006-12-27 富士通株式会社 演算処理装置及び演算処理方法
US7937564B1 (en) * 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7508396B2 (en) * 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
JP4778286B2 (ja) * 2005-09-28 2011-09-21 パナソニック株式会社 コンパイラ装置
US7849292B1 (en) * 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US7450131B2 (en) 2005-09-30 2008-11-11 Intel Corporation Memory layout for re-ordering instructions using pointers
GB2430773A (en) * 2005-10-03 2007-04-04 Advanced Risc Mach Ltd Alignment of variable length program instructions
US20070094639A1 (en) * 2005-10-26 2007-04-26 Arm Limited Preparing assembly languague source code
US7330962B2 (en) * 2005-11-14 2008-02-12 Nvidia Corporation Dynamic instruction sequence selection during scheduling
US7840397B2 (en) * 2005-12-02 2010-11-23 Derek Chiou Simulation method
US7650487B2 (en) * 2006-03-08 2010-01-19 Sun Microsystems, Inc. Method and structure for coordinating instruction execution in out-of-order processor execution using an instruction including an artificial register dependency
US8266413B2 (en) * 2006-03-14 2012-09-11 The Board Of Trustees Of The University Of Illinois Processor architecture for multipass processing of instructions downstream of a stalled instruction
US20070220235A1 (en) * 2006-03-15 2007-09-20 Arm Limited Instruction subgraph identification for a configurable accelerator
JP4884297B2 (ja) * 2006-05-26 2012-02-29 パナソニック株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US8291431B2 (en) * 2006-08-29 2012-10-16 Qualcomm Incorporated Dependent instruction thread scheduling
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US20080084424A1 (en) * 2006-10-09 2008-04-10 Silicon Integrated Systems Corp. Early retiring instruction mechanism, method for performing the same and pixel processing system thereof
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
EP2122461A4 (en) * 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
JP4230504B2 (ja) * 2006-11-30 2009-02-25 株式会社日立製作所 データプロセッサ
US7721076B2 (en) * 2006-12-18 2010-05-18 Intel Corporation Tracking an oldest processor event using information stored in a register and queue entry
US7454597B2 (en) * 2007-01-02 2008-11-18 International Business Machines Corporation Computer processing system employing an instruction schedule cache
US7769986B2 (en) * 2007-05-01 2010-08-03 International Business Machines Corporation Method and apparatus for register renaming
US8832416B2 (en) * 2007-05-24 2014-09-09 International Business Machines Corporation Method and apparatus for instruction completion stall identification in an information handling system
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
JP2009048252A (ja) * 2007-08-14 2009-03-05 Oki Electric Ind Co Ltd プログラム変換装置及びコンパイラプログラム
US9024957B1 (en) * 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8468504B2 (en) * 2007-12-28 2013-06-18 Streaming Networks (Pvt.) Ltd. Method and apparatus for interactive scheduling of VLIW assembly code
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8041923B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8151083B2 (en) * 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8037278B2 (en) * 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8019964B2 (en) * 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8677098B2 (en) * 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8117417B2 (en) * 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8103851B2 (en) * 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US8719553B2 (en) * 2008-01-31 2014-05-06 Arm Norway As Method for re-circulating a fragment through a rendering pipeline
US7958316B2 (en) * 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic adjustment of prefetch stream priority
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US8176279B2 (en) * 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8866827B2 (en) * 2008-06-26 2014-10-21 Microsoft Corporation Bulk-synchronous graphics processing unit programming
US8933953B2 (en) * 2008-06-30 2015-01-13 Intel Corporation Managing active thread dependencies in graphics processing
US8176299B2 (en) * 2008-09-24 2012-05-08 Apple Inc. Generating stop indicators based on conditional data dependency in vector processors
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
JP5547208B2 (ja) * 2008-11-24 2014-07-09 インテル コーポレイション シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置
US10621092B2 (en) * 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US20100153776A1 (en) * 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US8078854B2 (en) * 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
GB2466078B (en) * 2008-12-15 2013-11-13 Advanced Risc Mach Ltd Apparatus and method for tracing activities of a shader program executed on shader circuitry of a data processing apparatus
US7924860B1 (en) * 2008-12-23 2011-04-12 Juniper Networks, Inc. Maintaining data unit order in a network switching device
US8131976B2 (en) * 2009-04-13 2012-03-06 International Business Machines Corporation Tracking effective addresses in an out-of-order processor
US8335912B2 (en) * 2009-04-22 2012-12-18 Oracle America, Inc. Logical map table for detecting dependency conditions between instructions having varying width operand values
US8874878B2 (en) * 2010-05-18 2014-10-28 Lsi Corporation Thread synchronization in a multi-thread, multi-flow network communications processor architecture
US8910171B2 (en) * 2009-04-27 2014-12-09 Lsi Corporation Thread synchronization in a multi-thread network communications processor architecture
US8561046B2 (en) * 2009-09-14 2013-10-15 Oracle America, Inc. Pipelined parallelization with localized self-helper threading
US9436969B2 (en) * 2009-10-05 2016-09-06 Nvidia Corporation Time slice processing of tessellation and geometry shaders
US8359588B2 (en) * 2009-11-25 2013-01-22 Arm Limited Reducing inter-task latency in a multiprocessor system
US20110131396A1 (en) * 2009-12-01 2011-06-02 Xmos Limited Timing analysis
US8863088B2 (en) * 2010-02-08 2014-10-14 Red Hat, Inc. Simulating a line of source code in a debugging tool
US8650554B2 (en) * 2010-04-27 2014-02-11 International Business Machines Corporation Single thread performance in an in-order multi-threaded processor
US8972961B2 (en) * 2010-05-19 2015-03-03 International Business Machines Corporation Instruction scheduling approach to improve processor performance
JP5853216B2 (ja) * 2010-06-25 2016-02-09 パナソニックIpマネジメント株式会社 集積回路、コンピュータシステム、制御方法
EP2591422A1 (en) * 2010-07-09 2013-05-15 Martin Vorbach Data processing device and method
US8977815B2 (en) * 2010-11-29 2015-03-10 Arm Limited Control of entry of program instructions to a fetch stage within a processing pipepline
US9026769B1 (en) * 2011-01-31 2015-05-05 Marvell International Ltd. Detecting and reissuing of loop instructions in reorder structure
US9176737B2 (en) * 2011-02-07 2015-11-03 Arm Limited Controlling the execution of adjacent instructions that are dependent upon a same data condition
GB201103699D0 (en) * 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphic processing
US9317288B2 (en) * 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9274795B2 (en) * 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US8661230B2 (en) * 2011-04-15 2014-02-25 International Business Machines Corporation Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions
US8635436B2 (en) * 2011-04-29 2014-01-21 International Business Machines Corporation Determining each stall reason for each stalled instruction within a group of instructions during a pipeline stall
CN102789377B (zh) * 2011-05-18 2015-09-30 国际商业机器公司 处理指令分组信息的方法和装置
WO2012167933A1 (en) * 2011-06-08 2012-12-13 Hyperion Core Inc. Tool-level and hardware-level code optimization and respective hardware modification
US11249799B2 (en) * 2011-09-26 2022-02-15 Labrador Diagnostics Llc Methods, systems, and devices for real time execution and optimization of concurrent test protocols on a single device
JP5930558B2 (ja) * 2011-09-26 2016-06-08 インテル・コーポレーション ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック
US9747101B2 (en) * 2011-09-26 2017-08-29 Intel Corporation Gather-op instruction to duplicate a mask and perform an operation on vector elements gathered via tracked offset-based gathering
US9021233B2 (en) * 2011-09-28 2015-04-28 Arm Limited Interleaving data accesses issued in response to vector access instructions
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
EP2783281B1 (en) * 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
CN104011705A (zh) * 2011-12-01 2014-08-27 新加坡国立大学 多形异构性多核架构
WO2013101138A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Identifying and prioritizing critical instructions within processor circuitry
GB2498203B (en) * 2012-01-06 2013-12-04 Imagination Tech Ltd Restoring a register renaming map
US9135014B2 (en) * 2012-02-15 2015-09-15 Freescale Semiconductor, Inc Data processing system with latency tolerance execution
WO2013147852A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Instruction scheduling for a multi-strand out-of-order processor
US9513922B2 (en) * 2012-04-20 2016-12-06 Freescale Semiconductor, Inc. Computer system and a method for generating an optimized program code
CN115442626A (zh) * 2012-06-29 2022-12-06 Ge视频压缩有限责任公司 视频数据流、编码器、编码视频内容的方法以及解码器
DE112012006946T5 (de) * 2012-09-27 2015-06-03 Intel Corporation Verfahren und Vorrichtung zur Planung von Speicherinstruktionen quer über atomare Bereiche bei der binären Übersetzung
JP6179093B2 (ja) * 2012-12-03 2017-08-16 富士通株式会社 演算処理装置、演算処理方法
US9798544B2 (en) * 2012-12-10 2017-10-24 Nvidia Corporation Reordering buffer for memory access locality
US9553820B2 (en) * 2012-12-17 2017-01-24 Marvell Israel (M.L.S.L) Ltd. Maintaining packet order in a parallel processing network device
WO2014096964A1 (en) * 2012-12-17 2014-06-26 Marvell Israel (M.I.S.L. ) Ltd. Maintaining packet order in a parallel processing network device
WO2014102563A1 (en) * 2012-12-26 2014-07-03 Intel Corporation Select logic using delayed reconstructed program order
US9880852B2 (en) * 2012-12-27 2018-01-30 Intel Corporation Programmable hardware accelerators in CPU
US9384522B2 (en) * 2012-12-28 2016-07-05 Qualcomm Incorporated Reordering of command streams for graphical processing units (GPUs)
US9195465B2 (en) * 2012-12-28 2015-11-24 Intel Corporation Cache coherency and processor consistency
US8966068B2 (en) * 2013-01-15 2015-02-24 International Business Machines Corporation Selective logging of network requests based on subsets of the program that were executed
US9214008B2 (en) * 2013-01-18 2015-12-15 Nvidia Corporation Shader program attribute storage
US9054998B2 (en) * 2013-02-06 2015-06-09 Freescale Semiconductor, Inc. System and method for maintaining packet order in an ordered data stream
US9286119B2 (en) * 2013-02-13 2016-03-15 Nvidia Corporation System, method, and computer program product for management of dependency between tasks
US9354884B2 (en) * 2013-03-13 2016-05-31 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
WO2014142704A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
US8832324B1 (en) * 2013-03-15 2014-09-09 International Business Machines Corporation First-in-first-out queue-based command spreading
JP6064765B2 (ja) * 2013-04-18 2017-01-25 富士通株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
US9772827B2 (en) * 2013-04-22 2017-09-26 Nvidia Corporation Techniques for determining instruction dependencies
US9354891B2 (en) * 2013-05-29 2016-05-31 Apple Inc. Increasing macroscalar instruction level parallelism
US10949200B2 (en) * 2013-06-16 2021-03-16 President And Fellows Of Harvard College Methods and apparatus for executing data-dependent threads in parallel
US9535744B2 (en) * 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
EP3019972A4 (en) * 2013-07-12 2017-04-05 New Sapience Inc. Method and system for machine comprehension
US10255075B2 (en) * 2013-07-18 2019-04-09 Nvidia Corporation System, method, and computer program product for managing out-of-order execution of program instructions
US9244746B2 (en) * 2013-08-01 2016-01-26 Intel Corporation Automatic transaction coarsening
US9304749B2 (en) * 2013-09-12 2016-04-05 Marvell World Trade Ltd. Method and system for instruction scheduling
US9342284B2 (en) * 2013-09-27 2016-05-17 Intel Corporation Optimization of instructions to reduce memory access violations
US9571541B1 (en) * 2013-10-03 2017-02-14 Marvell Israel (M.I.S.L.) Ltd. Network device architecture using cache for multicast packets
CN105794172B (zh) * 2013-10-17 2019-02-15 马维尔国际贸易有限公司 网络设备和用于在网络设备中处理报文的方法
US9223965B2 (en) * 2013-12-10 2015-12-29 International Business Machines Corporation Secure generation and management of a virtual card on a mobile device
US9235692B2 (en) * 2013-12-13 2016-01-12 International Business Machines Corporation Secure application debugging
US9928069B2 (en) * 2013-12-20 2018-03-27 Apple Inc. Predicated vector hazard check instruction
US9336100B2 (en) * 2013-12-27 2016-05-10 International Business Machines Corporation Efficient debugging of memory miscompare failures in post-silicon validation
US9766895B2 (en) * 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Opportunity multithreading in a multithreaded processor with instruction chaining capability
US9766894B2 (en) * 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Method and apparatus for enabling a processor to generate pipeline control signals
US9558000B2 (en) * 2014-02-06 2017-01-31 Optimum Semiconductor Technologies, Inc. Multithreading using an ordered list of hardware contexts
US9442734B2 (en) * 2014-02-11 2016-09-13 Apple Inc. Completion time determination for vector instructions
US9632775B2 (en) * 2014-02-11 2017-04-25 Apple Inc. Completion time prediction for vector instructions
US9361041B2 (en) * 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US20150277925A1 (en) * 2014-04-01 2015-10-01 The Regents Of The University Of Michigan Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
US9710245B2 (en) * 2014-04-04 2017-07-18 Qualcomm Incorporated Memory reference metadata for compiler optimization
US9251330B2 (en) * 2014-04-09 2016-02-02 International Business Machines Corporation Secure management of a smart card
JP6228318B2 (ja) * 2014-09-18 2017-11-08 株式会社日立製作所 計算機及び計算機システム
JP2016066218A (ja) * 2014-09-24 2016-04-28 株式会社ソシオネクスト プロセッサ、半導体集積回路、及びベクトル命令の処理方法
US20160092219A1 (en) * 2014-09-29 2016-03-31 Qualcomm Incorporated Accelerating constant value generation using a computed constants table, and related circuits, methods, and computer-readable media
US9501284B2 (en) * 2014-09-30 2016-11-22 Apple Inc. Mechanism for allowing speculative execution of loads beyond a wait for event instruction
US9690590B2 (en) * 2014-10-15 2017-06-27 Cavium, Inc. Flexible instruction execution in a processor pipeline
US9747109B2 (en) * 2014-10-15 2017-08-29 Cavium, Inc. Flexible instruction execution in a processor pipeline
US10423414B2 (en) * 2014-11-12 2019-09-24 Texas Instruments Incorporated Parallel processing in hardware accelerators communicably coupled with a processor
US9940242B2 (en) * 2014-11-17 2018-04-10 International Business Machines Corporation Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries
US9733940B2 (en) * 2014-11-17 2017-08-15 International Business Machines Corporation Techniques for instruction group formation for decode-time instruction optimization based on feedback
US10108428B2 (en) * 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US9529643B2 (en) * 2015-01-26 2016-12-27 Qualcomm Incorporated Method and system for accelerating task control flow
US10318297B2 (en) * 2015-01-30 2019-06-11 Huawei Technologies Co., Ltd. Method and apparatus for operating a self-timed parallelized multi-core processor
US9785423B2 (en) * 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
EP3304291A1 (en) * 2015-06-01 2018-04-11 Intel Corporation Multi-core processor for execution of strands of instructions grouped according to criticality
US9952871B2 (en) * 2015-06-05 2018-04-24 Arm Limited Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry
US9727944B2 (en) * 2015-06-22 2017-08-08 Apple Inc. GPU instruction storage
US9910669B2 (en) * 2015-06-26 2018-03-06 Intel Corporation Instruction and logic for characterization of data access
US20160378491A1 (en) * 2015-06-26 2016-12-29 Microsoft Technology Licensing, Llc Determination of target location for transfer of processor control
GB2540543B (en) * 2015-07-20 2020-03-11 Advanced Risc Mach Ltd Graphics processing
US20170046160A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Efficient handling of register files
US11275590B2 (en) * 2015-08-26 2022-03-15 Huawei Technologies Co., Ltd. Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
US10776115B2 (en) * 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10198263B2 (en) * 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10768936B2 (en) * 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10061584B2 (en) * 2015-09-19 2018-08-28 Microsoft Technology Licensing, Llc Store nullification in the target field
US20170083341A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Segmented instruction block
US20170153892A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Instruction And Logic For Programmable Fabric Hierarchy And Cache
US10191748B2 (en) * 2015-11-30 2019-01-29 Intel IP Corporation Instruction and logic for in-order handling in an out-of-order processor
CN108780394B (zh) * 2015-12-29 2023-07-18 英特尔公司 用于转换编码格式的硬件装置和方法
US10599428B2 (en) * 2016-03-23 2020-03-24 Arm Limited Relaxed execution of overlapping mixed-scalar-vector instructions
US10175985B2 (en) * 2016-03-28 2019-01-08 International Business Machines Corporation Mechanism for using a reservation station as a scratch register
US9928128B2 (en) * 2016-04-01 2018-03-27 International Business Machines Corporation In-pipe error scrubbing within a processor core
US9922396B2 (en) * 2016-04-04 2018-03-20 Intel Corporation Reduction of BVH-node bandwidth with incremental traversal
US20170315812A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Parallel instruction scheduler for block isa processor
US10445094B2 (en) * 2016-05-27 2019-10-15 Arm Limited Method and apparatus for reordering in a non-uniform compute device
US10795815B2 (en) * 2016-05-27 2020-10-06 Arm Limited Method and apparatus for maintaining data coherence in a non-uniform compute device
US10552152B2 (en) * 2016-05-27 2020-02-04 Arm Limited Method and apparatus for scheduling in a non-uniform compute device
US20170371660A1 (en) * 2016-06-23 2017-12-28 Microsoft Technology Licensing, Llc Load-store queue for multiple processor cores
GB2556886B (en) * 2016-11-23 2019-05-15 Imagination Tech Ltd Encoding and decoding variable length instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522940A (ja) * 2007-03-28 2010-07-08 クゥアルコム・インコーポレイテッド プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法
JP2011514592A (ja) * 2008-02-22 2011-05-06 クゥアルコム・インコーポレイテッド グラフィックス処理の命令レイテンシ減少のためのシステムおよび方法
JP2012216009A (ja) * 2011-03-31 2012-11-08 Nec Corp メモリアクセス命令の追い越し制御によるプログラムの高速化方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018514034A (ja) * 2015-04-08 2018-05-31 アーム・リミテッド グラフィックス処理システム
US10832464B2 (en) 2015-04-08 2020-11-10 Arm Limited Graphics processing systems for performing per-fragment operations when executing a fragment shader program
JP7038548B2 (ja) 2015-04-08 2022-03-18 アーム・リミテッド グラフィックス処理システム
JP2019016328A (ja) * 2017-07-11 2019-01-31 富士通株式会社 情報処理装置、情報処理システム及びプログラム

Also Published As

Publication number Publication date
GB201309765D0 (en) 2013-07-17
US20140354644A1 (en) 2014-12-04
CN104217393B (zh) 2019-07-16
CN104217393A (zh) 2014-12-17
JP6403436B2 (ja) 2018-10-10
GB2514618B (en) 2020-11-11
GB2514618A (en) 2014-12-03
US10176546B2 (en) 2019-01-08

Similar Documents

Publication Publication Date Title
JP6403436B2 (ja) データ処理システム
EP3031034B1 (en) Data processing systems
US9535700B2 (en) Data processing systems
US10853905B2 (en) Instruction execution in graphics processor shader programs
CN106373083B (zh) 图形处理
KR102641210B1 (ko) 데이터 처리 시스템
US9256466B2 (en) Data processing systems
KR102617106B1 (ko) 데이터 처리 시스템
KR20170015232A (ko) 그래픽 처리 시스템
US10127626B1 (en) Method and apparatus improving the execution of instructions by execution threads in data processing systems
US10593093B2 (en) Data processing systems
US10606595B2 (en) Data processing systems
US10310856B2 (en) Disabling thread execution when executing instructions in a data processing system
US10891708B1 (en) Shader program execution in graphics processing
US11442731B2 (en) Data processing systems including an intermediate buffer with controlled data value eviction
GB2546308A (en) Data processing systems
GB2621199A (en) An apparatus and method of optimising divergent processing in thread groups

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180713

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180813

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180911

R150 Certificate of patent or registration of utility model

Ref document number: 6403436

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250