JP2007157154A - Simdアーキテクチャ内でスレッドグループを処理するためのシステムおよび方法 - Google Patents

Simdアーキテクチャ内でスレッドグループを処理するためのシステムおよび方法 Download PDF

Info

Publication number
JP2007157154A
JP2007157154A JP2006327322A JP2006327322A JP2007157154A JP 2007157154 A JP2007157154 A JP 2007157154A JP 2006327322 A JP2006327322 A JP 2006327322A JP 2006327322 A JP2006327322 A JP 2006327322A JP 2007157154 A JP2007157154 A JP 2007157154A
Authority
JP
Japan
Prior art keywords
instruction
instructions
execution pipeline
clock
operands
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
JP2006327322A
Other languages
English (en)
Other versions
JP4292197B2 (ja
Inventor
Brett W Coon
ダブリュー. クーン ブレット
John E Lindholm
エリック リンドルム ジョン
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of JP2007157154A publication Critical patent/JP2007157154A/ja
Application granted granted Critical
Publication of JP4292197B2 publication Critical patent/JP4292197B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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, 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, 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

【課題】そのハードウェアリソースを効率的に用いてより高いデータ処理スループットを達成するSMIDプロセッサを提供すること。
【解決手段】SIMDプロセッサの有効幅は、データ処理側の速度の何分の1かの速度でSIMD処理装置の命令処理側をクロッキングし、各々が複数のデータ経路を有する複数の実行パイプラインを提供することにより、拡張される。そのため、より高いデータ処理スループットが達成されると同時に、命令はフェッチされ、クロックごとに一度発行される。この構成はまた、1つの大きなスレッドグループがSIMDプロセッサを介してクラスタされ、一緒に実行されることも可能にし、その結果、グラフィックス処理に関して実行されるテクスチャメモリアクセスのようなあるタイプの動作に関してより大きなメモリ効率が達成されることが可能である。
【選択図】 図6

Description

発明の分野
[0001]本発明の実施形態は、一般に単一命令複数データ(single−instruction,multiple−data(SIMD))処理に関し、より具体的には、SIMDプロセッサ内でスレッドグループを処理するためのシステムおよび方法に関する。
関連技術の説明
[0002]SIMDプロセッサは、単一命令と複数のデータ経路を結び付け、ハードウェアが効率的にデータ並列アルゴリズム(data−parallel algorithms)を実行することを可能にする。SIMDプロセッサ実施態様の通常の利点は、パイプライン制御ハードウェアの削減と、ロックステップで複数のデータ経路を実行することから生じる命令処理とによってもたらされる。
[0003]一般に、SIMDプロセッサ内のデータ経路の数を増やすことは、より多くのデータが並列に処理されることを可能し、パフォーマンス向上をもたらすことになる。しかし、プロセッサのサイズ制限は一定の数を超えるデータ経路の数を制限する。また、データ経路の数が大きすぎる場合、ハードウェアリソースの利用不足が存在する可能性がある。
発明の概要
[0004]本発明は、効果的にそのハードウェアリソースを活用して、より高いデータ処理スループットを実現する、改善されたSIMDアーキテクチャをプロセッサに提供する。本発明の一実施形態によれば、SIMD処理装置の有効幅は、データ処理側の速度の何分の1かの速度でSIMD処理装置の命令処理側をクロッキングすることによって、実際のハードウェア幅の倍数に拡張される。本発明の別の実施形態によれば、SIMD処理装置の有効幅は、複数の実行パイプラインを提供することによって拡張される。異なるクロック速度を使用し、複数の実行パイプラインを提供することにより、大量のスレッドは、次の方程式に従ってスレッド集団に分類されることが可能である:集団_サイズ=(実行パイプラインの数)×(各実行パイプライン内のデータ経路の数)×(命令処理側のクロック速度に対するデータ処理側のクロック速度の比率)。
[0005]本発明の一実施形態によるSIMD処理装置は、第1のクロック速度で動作する命令処理セクションと、第1のクロック速度とは異なる第2のクロック速度で動作するデータ処理セクションとを含む。第2のクロック速度は第1のクロック速度の少なくとも2倍であることが望ましい。命令処理セクションはデータ処理セクション内で実行されることになる命令を発行し、発行された命令の実行に用いられることになるオペランド(operand)を収集する。複数の組のそのようなオペランドが収集される。
[0006]データ処理セクションは少なくとも第1の実行パイプラインと第2の実行パイプラインとを含む。第1の実行パイプラインは第1タイプの命令(例えば、乗算と加算(MAD))を実行するように構成され、第2の実行パイプラインは第2タイプの命令(例えば、逆数、指数関数、対数などの特殊関数命令(SFU))を実行するように構成される。各実行パイプラインは、発行された命令に従って同じく構成された複数のデータ経路を有する。
[0007]命令処理セクション内で収集されたオペランドの各組はデータ経路のうち1つに供給される。MAD命令に関連する1組のオペランドは、第1の実行パイプライン内の複数のデータ経路のうち1つに供給される。SFU命令に関連する1組のオペランドは、第2の実行パイプライン内のデータ経路のうち1つに供給される。
[0008]発行された命令に関して収集されたオペランドの組数は、第1および第2の実行パイプライン内の実際のデータ経路の数を第1のクロック速度に対する第2のクロック速度の比率で乗算した数に等しいことが好ましい。例えば、第1のクロック速度に対する第2のクロック速度の比率が2の場合、発行された命令に関して収集されたオペランドの組数は、2×(第1および第2の実行パイプライン内のデータ経路の数)となるべきである。
[0009]本発明の実施形態によれば、データ処理セクションを十分に使用し続けるためにデータ処理速度のサイクルごとに新たな命令が発行される必要はない。これは、命令処理セクションが命令処理により適した減少されたクロック速度で動作することを可能にし、そのため、命令処理セクションに関するハードウェア必要条件を削減する。
[0010]本発明の前述の特徴が詳細に理解できるように、そのいくつかが添付の図面に例示される実施形態を参照することによって、上に短くまとめられた本発明のより具体的な説明が得られよう。しかし、添付の図面は本発明の典型的な実施形態のみを例示しており、したがって、本発明はその他の等しく効果的な実施形態を認める可能性があるため、その範囲を限定するものとみなされない点に留意されたい。
詳細な説明
[0017]図1は、複数のSIMDプロセッサ124−1、124−2、・・・、124−Nに結合されたインターフェースユニット122を有するグラフィックス処理装置(GPU)120を実施するコンピュータシステム100のブロック略図である。SIMDプロセッサ124は、メモリ制御装置126を介してローカルグラフィックスメモリ130にアクセスする。GPU120およびローカルグラフィックスメモリ130は、システムメモリ112内に記憶されたドライバを用いてコンピュータシステム100の中央演算処理装置(CPU)110によってアクセスされるグラフィックスサブシステムを表す。
[0018]本発明は1つまたは複数のSIMDプロセッサ124を有する任意の処理装置に適用可能である。したがって、Nは1以上の任意の整数であってよい。また、SIMDプロセッサ124を含む処理装置はCPU、GPUまたは任意のその他の種類の処理装置であってよい。
[0019]図2は、本発明の一実施形態によるSIMDプロセッサをさらに詳しく例示する。示すように、図1に示されたSIMDプロセッサ124のいずれか1つであってよいSIMDプロセッサ200は、命令処理セクション210とデータ処理セクション220とを含む。命令処理セクション210は、データ処理セクション220のクロック速度の半分のクロック速度で動作する。便宜上、命令処理セクション210に関するクロックは以下でTクロックと呼ばれることになり、データ処理セクション220に関するクロックは以下でHクロックと呼ばれることになる。
[0020]命令処理セクション210は、SIMDプロセッサ200によって実行されることになる命令を発行するための命令ディスパッチユニット212、命令の実行に用いられるオペランドを記憶するレジスタファイル214、および1対のオペランド収集ユニット216、218を含む。オペランド収集ユニット216は第1の実行パイプライン222に結合され、第1の実行パイプライン222に供給されることになるオペランドを収集する。オペランド収集ユニット218は第2の実行パイプライン224に結合され、第2の実行パイプライン224に供給されることになるオペランドを収集する。本明細書に例示されている本発明の実施形態では、第1の実行パイプラインは第1タイプの命令(例えば、乗算と加算(MAD))を実行するように構成され、第2の実行パイプラインは第2タイプの命令(例えば、逆数、指数関数、対数などの特殊関数命令(SFU))を実行するように構成される。ある特定の命令は実行パイプライン222、224のどちらかで実行されてよい。例えば、命令MOVおよびFMULは実行パイプライン222、224のどちらかで実行されてよい。実行パイプライン222、224の各々は8つの並列かつ同じく構成されたデータ経路を有する。
[0021]命令ディスパッチユニット212が命令を発行すると、命令ディスパッチユニット212は2つの実行パイプライン222、224のうち1つにパイプライン構成信号を送る。その命令がMADタイプである場合、パイプライン構成信号は第1の実行パイプライン222に送られる。その命令がSFUタイプである場合、パイプライン構成信号は第2の実行パイプライン224に送られる。
[0022]命令を発行すると、命令ディスパッチユニット212はまた、発行された命令に関連する(本明細書で例示された実施形態では、1グループ32個の)スレッドの集団に対応するマスクも伝送する。発行された命令がMADタイプである場合、オペランド収集ユニット216は、そのスレッド集団に関連するレジスタファイル214内のレジスタを読み取り、その集団内の各スレッドに関して、発行された命令を実行するために必要とされる1組のオペランドを収集する。1組のオペランドは1つまたは複数のオペランドを含んでよい。典型的には、MADタイプの命令に関連する1組のオペランドは2つまたは3つのオペランドを含み、SFUタイプの命令に関連する1組のオペランドは1つのオペランドを含む。
[0023]発行された命令がSFUタイプである場合、オペランド収集ユニット218はそのスレッド集団に関連するレジスタファイル124内のレジスタを読み取り、その集団内の各スレッドに関して、発行された命令を実行するために必要とされる1組のオペランドを収集する。Tクロックの各サイクルの間、オペランド収集ユニット216、218の各々は16組のオペランドを収集することが可能である。これらの組は、Hクロックサイクル当たり8組の割合で実行パイプライン222、224に供給される。したがって、スレッド集団に関連する32組のオペランドは2Tクロックサイクルまたは4Hクロックサイクルで処理される。
[0024]実行パイプライン222、224の実行結果は1対の累算器226、228内に収集される。累算器226は実行パイプライン222からの実行結果を収集し、累算器228は実行パイプライン224からの実行結果を収集する。実行パイプライン222、224および累算器226、228は、データ処理セクション220の一部であり、命令処理セクション210のクロック速度の2倍のクロック速度で動作する。レジスタファイル214はTクロック速度で動作するため、累算器226、228は2Hクロックサイクルごとに、または1Tクロックサイクルごとに実行結果をレジスタファイル214にライドバックする。したがって、累算器226、228の各々は、16組の実行結果を収集した後で、レジスタファイル214にライトバックする。
[0025]動作の種類、すなわち主な算術演算(math operations)は実行パイプライン222、224内で行われることから、Hクロックは高速クロックになるよう構成される。しかし、算術演算の有効動作速度は、一般に命令処理およびレジスタファイル214に関する有効動作速度とは異なる。命令処理およびレジスタファイル214は、より遅いクロックでより効率的に動作する。したがって、SIMDプロセッサ200は2つのクロックドメインで構成され、命令処理はTクロック速度で実行され、データ処理はTクロック速度の2倍に等しいHクロック速度で実行される。
[0026]図3は、命令処理セクション210の命令ディスパッチユニット212の機能ブロック図である。命令ディスパッチユニット212は、複数のスロット(スレッド集団当たり1個のスロット)を有する命令バッファ310を含む。この実施形態でのスロット数は24個であり、各スロットは対応するスレッド集団から最高で2つまでの命令を保持することが可能である。スロットのうちいずれか1つが別の命令のための空き領域を有する場合、メモリから命令キャッシュ314にフェッチ312が行われる。命令がデコード316を受けた後で、命令キャッシュ314内に記憶された命令は経過中(in flight)の命令(例えば、発行されているが、達成されていない命令)を追跡するスコアボード322に加えられ、命令バッファ310の空き領域内に納められる。命令を復号すると、その命令はMADタイプであるかまたはSFUタイプであるかが決定され得る。
[0027]命令ディスパッチユニット212は発行論理(issue logic)320をさらに含む。発行論理320はスコアボード322を検査し、経過中の任意の命令に依存しない命令を命令バッファ310から発行する。命令バッファ310からの発行と共に、発行論理320はパイプライン構成信号を適切な実行パイプラインに送り、発行された命令に関連するスレッド集団に対応するマスクを伝送する。マスクは、集団の中のスレッドのうち活性状態にあるスレッド、すなわち、発行された命令に影響されるスレッドを示す。
[0028]図4は、命令バッファ310をさらに詳しく例示する。示するように、命令バッファ310は24個のスロットを有する。命令バッファ内の各スロットは(1グループ32個の)スレッドの集団から最高で2つまでの命令を保持することが可能である。示された例では、102および110のプログラムカウンタを有するスレッド集団(T0からT31)からの2つの命令は、命令バッファ310のスロット0内に記憶される。これら命令はMADタイプまたはSFUタイプのどちらかになる。命令がMADタイプであり、かつ命令バッファ310から発行される場合、スレッド集団(T0からT31)に関連する32組のオペランドはオペランド収集ユニット216内に収集され、実行パイプライン222に供給されることになる。他方で、命令がSFUタイプであり、かつ命令バッファ310から発行される場合、スレッド集団(T0からT31)に関連する32組のオペランドはオペランド収集ユニット218内に収集され、実行パイプライン224に供給されることになる。
[0029]図5の(A)〜(D)は、命令バッファ310から発行されたMAD命令(例えば、命令A)を実行するように構成された実行パイプライン222を介した、スレッド集団(T0からT31)の選択された処理状態を例示する。図5の(A)は、1Hクロックサイクルが経過した後の実行パイプライン222の状態を示す。示すように、1Hクロックサイクル後、それぞれスレッドT0,T1,T2,T3,T4,T5,T6,T7に関連する0,1,2,3,4,5,6,7として識別される8組のオペランドは実行パイプライン222に入り、命令Aの第1のパイプ段階で動作される。まさに次のHクロックサイクルで、新たな8組のオペランドグループは実行パイプライン222に入ることになり、命令Aの第1のパイプ段階で動作されることになり、かつ最初の8組のオペランドグループは1つ下のパイプ段階を進んだことになり、命令Aの第2のパイプ段階でさらに動作されることになる。4Hクロックサイクル後、スレッド集団に関連するすべての組のオペランドは実行パイプライン222に入ったことになる。したがって、命令Aの各パイプ段階は4Hクロックサイクルの間、活動状態にあることになる。第5のHクロックサイクルで、実行パイプライン222は新たに発行されたMADタイプの命令に従って構成されることになる。
[0030]図5の(B)は、スレッド集団に関連するすべての組のオペランドが実行パイプライン222に入り、命令Aの少数のパイプ段階で動作された後の、実行パイプライン222の状態を示す。図5の(C)は、任意の組のオペランドが実行パイプライン222を出る間際の実行パイプライン222の状態を示す。図5の(D)は、図5の(C)に示された状態から3Hクロックサイクル後の実行パイプライン222の状態を示す。もう1Hクロックサイクルが経過すると、スレッド集団に関連するすべての組のオペランドが実行パイプライン222を出たことになる。
[0031]好ましい実施形態では、命令バッファ310から命令を発行する場合、発行論理320はMADタイプの命令とSFUタイプの命令との間でこれを交互に行う。このように、実行パイプライン222、224の両方は完全に使用され続けることが可能である。命令バッファ310が単一タイプの命令のみを含む場合、MADタイプ命令またはSFUタイプ命令の連続的な発行が認められてよい。しかし、32個のスレッドの集団は実行するために2Tクロックまたは4Hクロックを必要とし、したがって、同じタイプの命令の連続的な発行(例えば、MAD−MADまたはSFU−SFU)は多くてもTクロックおきに起こってよい。2つのパイプラインに交互に異なるタイプの命令を発行することは、他方で、命令がTクロックごとに発行されることを可能にし、より高いパフォーマンスを提供する。コンパイラは、異なるタイプの命令が命令バッファ310内に記憶されることを確実にするための命令のスケジューリングに役立つ可能性がある。異なる集団をプログラム内でわずかに離すことを可能にすることもパフォーマンスを改善する可能性がある。
[0032]図6は、本発明の一実施形態による、スレッド集団に関する1つの命令を実行する際にSIMDプロセッサ200によって実行されるプロセスステップを例示する流れ図である。ステップ610で、1つの命令が命令バッファ310から発行される。次いで、複数組のオペランドがレジスタファイル214から読み取られ、発行された命令のタイプに対応するオペランド収集ユニット216または218内に収集される(ステップ612)。ステップ614で、発行された命令のタイプに対応する実行パイプライン222または224は、発行された命令を実行するように構成される。ステップ616で、収集されたオペランドは実行パイプラインを下に進み、発行された命令の複数のパイプ段階で動作される。ステップ614および616はステップ612内で収集されたオペランドのすべてが実行パイプラインを出るまで継続的に実行される。ステップ614と616とが実行される間、累算器226、228は実行パイプライン222、224を出るオペランドを収集し、Hクロックおきに(すなわち、一度に半集団)レジスタファイル214にライトバックする。ステップ612で収集されたオペランドのすべてが実行パイプラインを出ると(ステップ620)、ステップ610で発行された命令に関するSIMD処理は終了する。図5の(A)〜(D)に示された例では、レジスタファイル214への最初のライトバックは、図5の(C)に示された実行パイプラインの状態から2Hクロック後に起こり、レジスタファイル214への最終のライトバックは、図5の(C)に示された実行パイプラインの状態から4Hクロック後に起こる。
[0033]前述の本発明の実施形態では、SIMDプロセッサを介して処理されるデータの量は実行パイプラインの実際のデータ幅を増やすことなく増加される。そのため、SIMDプロセッサの有効命令処理速度は高められる。
[0034]さらに、本発明はグループスレッドに柔軟な方法を提供する。前述の本発明の実施形態では、集団は次の方程式に従って、32個のスレッドのグループとして構成される:集団_サイズ=(実行パイプラインの数)×(各実行パイプライン内のデータ経路の数)×(Tクロック速度に対するHクロック速度の比率)=2×8×2=32。本発明により提供される柔軟性は、集団サイズは調整されることが可能であるという点である。例えば、実行パイプラインの間で交互に行う場合、集団サイズは第4のTクロックごとに、またはTクロックおきに各実行パイプラインに命令を発行することによって64個に増加されることが可能である。
[0035]より大きな集団サイズを有することの利点は、グラフィック処理では、実行される多くの命令はメモリアクセスのようなテクスチャであるという点である。複数の小さなメモリアクセスグループの代わりに、1つの大きな関連メモリアクセスグループが存在する場合、これらの命令はメモリシステムによってはるかに効果的に実行される。スレッドをクラスタすること(clustering)または集団にまとめること(convoying)によって、本発明はより大きなメモリ効率を提供する。大きすぎる集団を用いることの不利な点は、分岐などが、集団内のいくつかのスレッドに同じ集団の他のスレッドとは異なる命令を実行させる原因になることである。そのような場合、同じ集団内のすべてのスレッドは一度に1つの命令しか実行できないため、パフォーマンスは低下することになる。
[0036]前述は本発明の実施形態に関するが、本発明の基本的範囲を逸脱することなく、本発明のその他の実施形態およびさらなる実施形態が考案されることが可能である。本発明の範囲は添付の特許請求の範囲によって決定される。
複数のSIMDプロセッサを有するGPUを実施するコンピュータシステムのブロック略図である。 本発明の一実施形態によるSIMDプロセッサのブロック図である。 図2に示されたSIMDプロセッサの命令ディスパッチユニットのブロック図である。 命令バッファのコンテンツを示す概念図である。 (A)〜(D)はSIMD実行パイプラインを介したスレッドグループの処理を示す図である。 スレッドグループに関する命令を実行する場合、SIMDプロセッサによって実行されるプロセスステップを例示する流れ図である。
符号の説明
100 コンピュータシステム
110 中央演算処理装置(CPU)
112 システムメモリ
120 グラフィックス処理装置(GPU)
122 インターフェースユニット
124 SIMDプロセッサ
126 メモリ制御装置
130 ローカルグラフィックスメモリ
200 SIMDプロセッサ
210 命令処理セクション
212 命令ディスパッチユニット
214 レジスタファイル
216、218 オペランド収集ユニット
220 データ処理セクション
222 第1の実行パイプライン
224 第2の実行パイプライン
226、228 累算器
310 命令バッファ
312 フェッチ
314 命令キャッシュ
316 デコード
320 発行論理
322 スコアボード

Claims (7)

  1. 複数の実行パイプラインを介して複数のコンピュータプログラム命令を処理する方法であって、
    複数のスレッドの1つのグループに関して1つの命令を発行するステップと、
    第1のクロック速度で、前記命令に関連する複数組のオペランドを収集するステップと、
    第2のクロック速度で、前記実行パイプラインのうち1つに前記収集されたオペランドを供給するステップと
    を含み、
    前記グループ内の複数のスレッドの数は、前記複数の実行パイプライン内で提供されるデータ経路の総数を前記第1のクロック速度に対する前記第2のクロック速度の比率で乗算した数である
    方法。
  2. 命令のストリームが前記第1のクロック速度で連続して発行され、前記命令の各々に関して、前記第1のクロック速度で複数組のオペランドが収集される、請求項1に記載の方法。
  3. 前記命令を少なくとも2つのタイプのうち1つに分類するステップをさらに含み、第1タイプの命令に関連するオペランドは前記第1の実行パイプラインに供給され、第2タイプの命令に関連するオペランドは前記第2の実行パイプラインに供給される、請求項2に記載の方法。
  4. 第3タイプの命令は前記第1の実行パイプラインおよび前記第2の実行パイプラインのうち1つに供給される、請求項3に記載の方法。
  5. 前記第2のクロック速度は少なくとも前記第1のクロック速度の2倍である、請求項1に記載の方法。
  6. 前記命令は前記スレッドグループに関して実行されることになる一続きの命令中の1つの命令を含み、前記複数組のオペランドの各々は前記グループ内の前記スレッドのうち1つに対応する、請求項1に記載の方法。
  7. 前記発行するステップは、複数の命令を含む命令バッファから1つの命令を選択するステップを含む、請求項6に記載の方法。
JP2006327322A 2005-12-02 2006-12-04 Simdアーキテクチャ内でスレッドグループを処理するための方法 Active JP4292197B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/292,614 US7836276B2 (en) 2005-12-02 2005-12-02 System and method for processing thread groups in a SIMD architecture

Publications (2)

Publication Number Publication Date
JP2007157154A true JP2007157154A (ja) 2007-06-21
JP4292197B2 JP4292197B2 (ja) 2009-07-08

Family

ID=38120161

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006327322A Active JP4292197B2 (ja) 2005-12-02 2006-12-04 Simdアーキテクチャ内でスレッドグループを処理するための方法

Country Status (4)

Country Link
US (1) US7836276B2 (ja)
JP (1) JP4292197B2 (ja)
CN (1) CN100538628C (ja)
TW (1) TWI331300B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009024559A (ja) * 2007-07-18 2009-02-05 Toyota Motor Corp 内燃機関の排気浄化システム
JP2017515204A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータ内の複数のスレッドを管理する制御エリアを提供するためのシステム、方法、およびコンピュータ・プログラム製品

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925860B1 (en) * 2006-05-11 2011-04-12 Nvidia Corporation Maximized memory throughput using cooperative thread arrays
US7484076B1 (en) * 2006-09-18 2009-01-27 Nvidia Corporation Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P)
US8578387B1 (en) * 2007-07-31 2013-11-05 Nvidia Corporation Dynamic load balancing of instructions for execution by heterogeneous processing engines
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US9830156B2 (en) * 2011-08-12 2017-11-28 Nvidia Corporation Temporal SIMT execution optimization through elimination of redundant operations
CN103959237B (zh) * 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN112416432A (zh) * 2011-12-23 2021-02-26 英特尔公司 用于数据类型的下转换的装置和方法
JP2014016894A (ja) 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
KR101319287B1 (ko) 2013-03-08 2013-10-17 주식회사 에이디칩스 파이프라인 구조를 갖는 프로세서
US9183611B2 (en) * 2013-07-03 2015-11-10 Apple Inc. Apparatus implementing instructions that impose pipeline interdependencies
WO2015155894A1 (ja) * 2014-04-11 2015-10-15 株式会社Murakumo プロセッサーおよび方法
KR102332523B1 (ko) 2014-12-24 2021-11-29 삼성전자주식회사 연산 처리 장치 및 방법
US9727944B2 (en) 2015-06-22 2017-08-08 Apple Inc. GPU instruction storage
GB2540937B (en) * 2015-07-30 2019-04-03 Advanced Risc Mach Ltd Graphics processing systems
US9921838B2 (en) * 2015-10-02 2018-03-20 Mediatek Inc. System and method for managing static divergence in a SIMD computing architecture
US10410097B2 (en) 2016-06-06 2019-09-10 Mutualink, Inc. System and method for distributed intelligent pattern recognition
US11016932B2 (en) 2017-09-21 2021-05-25 Alibaba Group Holding Limited Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system
US11360778B2 (en) * 2019-12-11 2022-06-14 Oracle International Corporation Dynamic insights extraction and trend prediction
US20210182073A1 (en) * 2019-12-13 2021-06-17 Yale University Modular, extensible computer processing architecture
US20230069890A1 (en) * 2021-09-03 2023-03-09 Advanced Micro Devices, Inc. Processing device and method of sharing storage between cache memory, local data storage and register files
US20230086989A1 (en) * 2021-09-17 2023-03-23 Nvidia Corporation Parallel processing of thread groups

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421028A (en) 1991-03-15 1995-05-30 Hewlett-Packard Company Processing commands and data in a common pipeline path in a high-speed computer graphics system
US5579473A (en) 1994-07-18 1996-11-26 Sun Microsystems, Inc. Interface controller for frame buffer random access memory devices
US5815166A (en) 1995-03-24 1998-09-29 3Dlabs Inc., Ltd. Graphics subsystem with slaveable rasterizer
US6178481B1 (en) 1995-12-18 2001-01-23 Texas Instruments Incorporated Microprocessor circuits and systems with life spanned storage circuit for storing non-cacheable data
US5838988A (en) * 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor
US5958047A (en) * 1997-06-25 1999-09-28 Sun Microsystems, Inc. Method for precise architectural update in an out-of-order processor
US5948106A (en) * 1997-06-25 1999-09-07 Sun Microsystems, Inc. System for thermal overload detection and prevention for an integrated circuit processor
US5860018A (en) * 1997-06-25 1999-01-12 Sun Microsystems, Inc. Method for tracking pipeline resources in a superscalar processor
US5978864A (en) * 1997-06-25 1999-11-02 Sun Microsystems, Inc. Method for thermal overload detection and prevention for an intergrated circuit processor
US5999727A (en) * 1997-06-25 1999-12-07 Sun Microsystems, Inc. Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
GB9716251D0 (en) 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
US5996060A (en) 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6288730B1 (en) 1998-08-20 2001-09-11 Apple Computer, Inc. Method and apparatus for generating texture
US6704925B1 (en) 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
US6266733B1 (en) 1998-11-12 2001-07-24 Terarecon, Inc Two-level mini-block storage system for volume data sets
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US6222550B1 (en) 1998-12-17 2001-04-24 Neomagic Corp. Multiple triangle pixel-pipelines with span-range pixel interlock for processing separate non-overlapping triangles for superscalar 3D graphics engine
US6446166B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6397300B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6405285B1 (en) 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6559852B1 (en) 1999-07-31 2003-05-06 Hewlett Packard Development Company, L.P. Z test and conditional merger of colliding pixels during batch building
US6279086B1 (en) 1999-08-04 2001-08-21 International Business Machines Corporation Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
US6819325B2 (en) 2000-03-07 2004-11-16 Microsoft Corporation API communications for vertex and pixel shaders
KR100333375B1 (ko) * 2000-06-30 2002-04-18 박종섭 반도체 소자의 게이트 제조방법
US6750869B1 (en) 2000-10-13 2004-06-15 Sony Corporation Method and design for improved fragment processing
JP2003035589A (ja) 2001-07-19 2003-02-07 Yokogawa Electric Corp フロート・レベル計
US6947047B1 (en) * 2001-09-20 2005-09-20 Nvidia Corporation Method and system for programmable pipelined graphics processing with branching instructions
US20030097395A1 (en) * 2001-11-16 2003-05-22 Petersen Paul M. Executing irregular parallel control structures
US6816161B2 (en) 2002-01-30 2004-11-09 Sun Microsystems, Inc. Vertex assembly buffer and primitive launch buffer
US7185181B2 (en) * 2002-08-05 2007-02-27 Intel Corporation Apparatus and method for maintaining a floating point data segment selector
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7714858B2 (en) 2003-04-18 2010-05-11 Hewlett-Packard Development Company, L.P. Distributed rendering of interactive soft shadows
US7015718B2 (en) * 2003-04-21 2006-03-21 International Buisness Machines Corporation Register file apparatus and method for computing flush masks in a multi-threaded processing system
US7139003B1 (en) 2003-12-15 2006-11-21 Nvidia Corporation Methods of processing graphics data including reading and writing buffers
US7103720B1 (en) 2003-10-29 2006-09-05 Nvidia Corporation Shader cache using a coherency protocol
US8274517B2 (en) 2003-11-14 2012-09-25 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US7904905B2 (en) * 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
US7278011B2 (en) * 2004-04-08 2007-10-02 International Business Machines Corporation Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table
US7552316B2 (en) 2004-07-26 2009-06-23 Via Technologies, Inc. Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system
US7237094B2 (en) * 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US7254697B2 (en) * 2005-02-11 2007-08-07 International Business Machines Corporation Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009024559A (ja) * 2007-07-18 2009-02-05 Toyota Motor Corp 内燃機関の排気浄化システム
JP2017515204A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータ内の複数のスレッドを管理する制御エリアを提供するためのシステム、方法、およびコンピュータ・プログラム製品

Also Published As

Publication number Publication date
CN100538628C (zh) 2009-09-09
US20070130447A1 (en) 2007-06-07
US7836276B2 (en) 2010-11-16
JP4292197B2 (ja) 2009-07-08
TWI331300B (en) 2010-10-01
TW200809615A (en) 2008-02-16
CN1983165A (zh) 2007-06-20

Similar Documents

Publication Publication Date Title
JP4292197B2 (ja) Simdアーキテクチャ内でスレッドグループを処理するための方法
EP3350712B1 (en) Register read/write ordering
EP3314401B1 (en) Block-based architecture with parallel execution of successive blocks
US10452399B2 (en) Broadcast channel architectures for block-based processors
US11531552B2 (en) Executing multiple programs simultaneously on a processor core
EP3350708B1 (en) Dense read encoding for dataflow isa
US20170083319A1 (en) Generation and use of block branch metadata
US10198263B2 (en) Write nullification
US20170083320A1 (en) Predicated read instructions
EP3350687B1 (en) Store nullification in the target field
US20170083327A1 (en) Implicit program order
EP3746883B1 (en) Processor having multiple execution lanes and coupling of wide memory interface via writeback circuit
EP3350690B1 (en) Implicit program order
Soliman Mat-core: a decoupled matrix core extension for general-purpose processors
Fung Dynamic warp formation: exploiting thread scheduling for efficient MIMD control flow on SIMD graphics hardware
CN114626540A (zh) 处理器和相关产品
Soliman et al. Codevelopment of multi-level instruction set architecture and hardware for an efficient matrix processor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080917

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20080917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090113

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: 20090310

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090406

R150 Certificate of patent or registration of utility model

Ref document number: 4292197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140410

Year of fee payment: 5

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

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

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

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