JP2021525919A - スケジューラキューの割り当て - Google Patents

スケジューラキューの割り当て Download PDF

Info

Publication number
JP2021525919A
JP2021525919A JP2020566813A JP2020566813A JP2021525919A JP 2021525919 A JP2021525919 A JP 2021525919A JP 2020566813 A JP2020566813 A JP 2020566813A JP 2020566813 A JP2020566813 A JP 2020566813A JP 2021525919 A JP2021525919 A JP 2021525919A
Authority
JP
Japan
Prior art keywords
allocation
permutations
permutation
scheduler
given
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.)
Pending
Application number
JP2020566813A
Other languages
English (en)
Inventor
ティー. ソベル マシュー
ティー. ソベル マシュー
エー. プライアー ドナルド
エー. プライアー ドナルド
ガーグ アロック
ガーグ アロック
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021525919A publication Critical patent/JP2021525919A/ja
Pending legal-status Critical Current

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/3802Instruction prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

スケジューラキュー割り当てロジックを実装するシステム、装置及び方法が開示されている。プロセッサは、少なくともデコードユニット、スケジューラキュー割り当てロジック、スケジューラキュー、ピッカー及び実行ユニットを含む。割り当てロジックは、各クロックサイクルにおいてデコードユニットから複数の動作を受信する。割り当てロジックは、プロセッサの様々な実行ユニットによって実行可能な様々なタイプの動作ごとに別々の論理ユニットを含む。様々なタイプの動作ごとに、割り当てロジックは、所与のクロックサイクルにおいてスケジューラキューに様々な数の動作を割り当てるために、可能な割当順列のいずれが妥当であるかを判定する。割り当てロジックは、所与のクロックサイクルにおいて割り当てる動作の数の表示を受信し、そして、割り当てロジックは、表示によって指定された動作の数に対して妥当な割当順列の1つを選択する。【選択図】図7

Description

プロセッサパイプラインは、実行中の命令により動作する多くの様々なユニットを含む。これらのユニットには、デコードユニット、スケジューラキュー、ピッカー及び実行ユニットが含まれる。デコードユニットは、フェッチされた命令を命令動作へとデコードする。命令動作は、本明細書中で「op」とも称される。一般的に言って、opは、実行ユニットに含まれるハードウェアが実行することが可能な動作である。様々な実装例において、各命令は、実行されると命令セットアーキテクチャにしたがってその命令に対して定義された動作のパフォーマンスをもたらす1つまたは複数のopに変換される。
ピッカーは、スケジューラキューからopを選択し、それは実行ユニットによって実行される。様々なクロックサイクルにおいて、実行ユニットの全てで実行するのに利用可能なopが不十分である。他のサイクルにおいて、準備ができているopが多すぎ、それら全てが実行ユニットによって実行されることは可能でない。したがって、実行ユニットの稼働率及び/またはスループットを向上させる技術が望まれる。
本明細書中に記載する方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
コンピューティングシステムの一実装例のブロック図である。 プロセッサパイプラインの一実装例のブロック図である。 プロセッサパイプラインの一部の一実装例のブロック図である。 スケジューラキュー割り当てロジックの一実装例のブロック図である。 最初の妥当なN−op割り当て検索ユニットの一実装例のブロック図である。 割当順列を選択するためのプライオリティマトリクスの一実装例のブロック図である。 スケジューラキュー割り当てロジックを実装する方法の一実装例を例示する一般化されたフロー図である。 プライオリティマトリクスを実装する方法の一実装例を例示する一般化されたフロー図である。
以下の説明において、本明細書中に提示される方法及び機構の完全な理解を提供するために多くの具体的な詳細が記載される。しかしながら、当業者は、これらの具体的な詳細なしに様々な実装例が実施され得ることを理解すべきである。場合によっては、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書中に記載される手法を分かりづらくしないために詳細が示されていない。例示の簡潔さ及び明瞭さのために、図に示される要素は必ずしも縮尺通りでないことが理解されよう。例えば、要素の一部の寸法は、他の要素に比べて拡大されている場合がある。
スケジューラキュー割り当てロジックを実装する様々なシステム、装置及び方法が本明細書中に開示される。システムは、1つまたは複数のメモリに結合されている1つまたは複数のプロセッサを含む。各プロセッサは、命令をフェッチ、処理、及び実行する複数のパイプラインステージを有するプロセッサパイプラインを含む。一実装例では、プロセッサは、命令のアウトオブオーダー実行を用いる。命令は、フェッチされ、そしてデコードユニットによって命令動作(すなわちop)へとデコードされる。デコードユニットは、デコードされたopをスケジューラキュー割り当てロジックに伝達する。スケジューラキュー割り当てロジックは、opを、opのタイプ(例えば、算術論理演算ユニット(ALU)op、アドレス生成op)に基づいて異なるストリームに分割する。例えば、異なる3つのタイプのopがある場合、割り当てロジックは、opを第1のストリーム、第2のストリーム、そして第3のストリームに分割する。各ストリームはその後、ストリームにおける特定のタイプのopに対する割り当て可能性を処理する別々の論理ユニットに入力される。
一実装例では、別々の各論理ユニット(異なるopタイプに対応する)は、複数の様々な順列割当の妥当性をチェックする。例えば、所与のopタイプの実行ユニットに結合されているピッカーが取り付けられているスケジューラキューが5個及び現在のクロックサイクルに対して1つまたは複数のタイプの異なるopが5個ある場合、所与の論理ユニット(所与のopタイプに対する)は、5個の異なるopがこれら5個の異なるスケジューラキューに割り当てられるとき、120個の可能な割当順列のうちいずれが妥当であるかを判定する。一般的に言えば、割当順列は、1つまたは複数の動作の、1つまたは複数のスケジューラキューへの割り当てを定義する。所与の割当順列が妥当であるかを判定するのに、判定は、所与の割当順列により、各opがそのタイプのopを処理可能である実行ユニットに割り当てられる状態になるか(すなわち、割当順列が、処理のためopの妥当な割り当てをもたらすか)否かに関してなされる。また、所与の論理ユニットは、5個より少ないopが異なるスケジューラキューに割り当てられるとき、可能な割当順列のいずれが妥当であるかを判定する。例えば、所与の論理ユニットは、4個のopのみが5個の異なるスケジューラキューのうちの4個に割り当てられる場合に、いずれの割当順列が妥当であるかを判定する。また、所与の論理ユニットは、3個のopのみが5個の異なるスケジューラキューのうちの3個に割り当てられる場合に、いずれの割当順列が妥当であるかを判定する。同様に、所与の論理ユニットは、2個のopのみが5個の異なるスケジューラキューのうちの2個に割り当てられる場合に、かつ、単一のopのみが5個の異なるスケジューラキューのうちの1個に割り当てられる場合に、いずれの割当順列が妥当かを判定する。他の実装例は、5以外の他の数の異なるスケジューラキューを有することを理解すべきである。ただし、上記の技術は、これらの他の実装例で同様の方法で実行可能である。
割当順列は、特定のタイプのopを処理可能である実行ユニットに入力を行うピッカーが取り付けられているスケジューラキューに各opが割り当てられる場合に、妥当である。様々な実装例では、一部の実行ユニットは、全ての様々なopタイプのサブセットしか実行できない。また、所与のopタイプは、特定の実行ユニットでのみ実行できる複数の異なるサブタイプを有し得る。例えば、ALU opには、加算op、乗算op、除算opなどが含まれるが、一実装例では、ALU実行ユニットの全てが除算opを実行できるわけではない。他のALU実行ユニットは、様々な可能なALU opタイプの全てのサブセットしか実行できない場合がある。同様に、他のタイプのopの場合、特定の実行ユニットは、これらのopタイプのサブセットしか実行できない場合があるが、他の実行ユニットは、これらopタイプの全てを実行可能である。
一実装例では、所与の論理ユニットが、スケジューラキューのうちの1つまたは複数にopが割り当てられないときにいずれの割当順列が妥当であるかを判定する際、所与の論理ユニットは、様々なスケジューラキューの占有率状態に関する入力(すなわち、いくつの動作が現在キューに格納されているか―キューはどれくらい「満杯」か)を受信する。所与の論理ユニットは、複数の妥当な割当順列が存在する場合、いずれの妥当な割当順列を選択するかを判定するのに役立つようにこれらの入力を用いる。例えば、所与の論理ユニットは、様々なスケジューラキューの中で最も多い数のopを現在格納しているスケジューラキューへのopのスケジューリングを回避する。言い換えれば、占有率が最も高いスケジューラキューは、所与のサイクルにおいてopが割り当てられないスケジューラキューとなる。所与の論理ユニットが、1つより多いスケジューラキューにopがないままとする割当順列の妥当性をチェックしているとき、所与の論理ユニットは、opが最も多いキューを、opが割り当てられないキューとして選択する。
所与のサイクルにおいて、スケジューラキュー割り当てロジックは、様々な割当順列に対してかつ所与のサイクルにおいて割り当てられている様々な数のopに対して妥当性信号を生成する。スケジューラキュー割り当てロジックはまた、プロセッサによってサポートされている様々なopタイプごとにこれらの妥当性信号も生成する。一実装例では、スケジューラキュー割り当てロジックは、所与のサイクルにおいて割り当てるopの数の表示を受信する。この表示は、スケジューラキュー割り当てロジックが妥当性信号を生成するのと並行して生成される。スケジューラキュー割り当てロジックは、所与のサイクルにおいていくつかのopをこの表示によって指定されたopの数と一致するように割り当てる。言い換えると、この表示により、所与のサイクルにおいてopを割り当てるためにいずれの妥当性信号が検討されるかが絞り込まれる。例えば、表示が所与のサイクルにおいて7個のopを割り当てることを指定している場合、スケジューラキュー割り当てロジックは、7−op割り当てに対する妥当な割当順列の1つを選択する。一実装例では、スケジューラキュー割り当てロジックは、7−op割り当てに対する最初の妥当な割当順列を選択する。代替として、表示が所与のサイクルにおいて3個のopを割り当てることを指定している場合、スケジューラキュー割り当てロジックは、3−op割り当てに対する妥当な割当順列の1つを選択する。割り当てるのに他の数のopを指定する他の表示の場合、スケジューラキュー割り当てロジックは、指定された数に対する妥当な割当順列の1つを選択する。本開示の残りの部分で説明するこれらのかつ他の技術を用いることによって、プロセッサは、実行ユニットのスループットを最大化する方法で、opを様々な実行ユニットに動的に割り当てることが可能になる。
ここで図1を参照すると、コンピューティングシステム100の一実装例のブロック図が示される。一実装例では、コンピューティングシステム100は、少なくともプロセッサ105A〜N、入力/出力(I/O)インターフェース120、バス125、メモリコントローラ(複数可)130、ネットワークインターフェース135及びメモリデバイス(複数可)140を含む。他の実装例では、コンピューティングシステム100は、他のコンポーネントを含み、かつ/または、コンピューティングシステム100は、異なるように構成される。プロセッサ105A〜Nは、システム100に含まれる任意の数のプロセッサを表す。
一実装例では、プロセッサ105Aは、中央処理装置(CPU)などの汎用プロセッサである。一実装例では、プロセッサ105Nは、高並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)などを含む。一部の実装例では、プロセッサ105A〜Nは、複数のデータ並列プロセッサを含む。
メモリコントローラ(複数可)130は、プロセッサ105A〜N及びI/Oインターフェース120に結合されているI/Oデバイス(図示せず)によってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(複数可)140に結合されている。メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140に含まれるメモリのタイプは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)などを含む。
I/Oインターフェース120は、任意の数及びタイプのI/Oインターフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI−Extended(PCI−X)、PCIE(PCI Express)バス、ギガビットイーサネット(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺機器(図示せず)が、I/Oインターフェース120に結合されている。そうした周辺機器は、(以下に限定するものではないが)ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、または他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインターフェースカードなどを含む。ネットワークインターフェース135は、ネットワークメッセージをネットワーク経由で送受信するのに用いられる。
様々な実装例では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲーム機、サーバ、ストリーミングデバイス、ウェアラブルデバイス、または様々な他のタイプのコンピューティングシステムもしくはデバイスのいずれかである。コンピューティングシステム100のコンポーネントの数は実装例ごとに異なることに留意されたい。例えば、他の実装例では、図1に示す数よりも多いまたは少ない数の各コンポーネントが存在する。他の実装例では、コンピューティングシステム100は、図1に示さない他のコンポーネントを含むことにも留意されたい。さらに、他の実装例では、コンピューティングシステム100は図1に示す方法とは異なる方法で構成される。
ここで図2を参照すると、プロセッサパイプライン200の一実装例のブロック図が示される。様々な実装例では、プロセッサ105A〜N(図1の)が、プロセッサパイプライン200の1つまたは複数のインスタンスを含む。一実装例では、プロセッサパイプライン200は、少なくともフェッチユニット210、デコードユニット215、スケジューラキュー割り当てロジック220、キュー225A〜N及び実行ユニット230A〜Nを含む。キュー225A〜Nは本明細書中でスケジューラキューとも称されることに留意されたい。プロセッサパイプライン200はまた、図を分かりづらくしないために図示されていない他のコンポーネント(例えば、分岐予測ユニット、命令キャッシュ)も含むことも理解すべきである。他の実装例では、プロセッサパイプライン200は、他の適切な方法で構成される。
一実装例では、フェッチユニット210は、メモリ及び/または命令キャッシュからプログラムストリームの命令をフェッチし、フェッチユニット210は、フェッチされた命令をデコードユニット215に伝達する。デコードユニット215は、フェッチされた命令を命令動作(すなわち、略してop)へとデコードする。opはマイクロ−opまたはuopとも称されることに留意されたい。一般に、命令動作は、実行ユニット230A〜Nに含まれるハードウェアが実行可能である動作である。様々な実装例では、各命令は、実行されると命令セットアーキテクチャにしたがってその命令に対して定義された動作のパフォーマンスをもたらす1つまたは複数のopに変換される。任意のタイプの命令セットアーキテクチャが、プロセッサパイプライン200によって用いられる。デコードユニット215は、命令のタイプ、ソースオペランドなどを特定し、各デコードされたopは、デコード情報の一部と併せて命令を含む。各命令が単一のopに変換される実装例では、各opは、対応する命令またはその一部(例えば、opコードフィールドまたは命令のフィールド)である。一部の実装例では、デコードユニット215は、命令に対するopを生成する回路及び/またはマイクロコードの任意の組み合わせを含む。例えば、一実装例では、比較的単純なop生成(例えば命令あたり1個または2個のop)はハードウェアで対処され、より広範なop生成(例えば命令に対して3個より多いop)はマイクロコードで対処される。
デコードユニット215からのopは、スケジューラキュー割り当てロジック220に提供される。スケジューラキュー割り当てロジック220は、opをスケジューラキュー225A〜Nにどのように割り当てるかを判定する。様々な実装例では、opをキュー225A〜Nに割り当てるための複数の様々な割当順列が存在する。本明細書中で用いるように、割当順列は、1つまたは複数のopの、1つまたは複数のキューへの特定のop−キュー割り当てとして定義される。一実装例では、スケジューラキュー割り当てロジック220は、プロセッサパイプライン200に対して最大化されている実行スループットをもたらすであろう割当順列を選択しようとする。スケジューラキュー割り当てロジック220はまた、opが、特定のタイプのopを実際に実行可能である実行ユニット230A〜Nに結合されているキュー225A〜Nに割り当てられるように、割当順列を選択する。プロセッサパイプライン200に示すように、各キュー225A〜Nは、対応する実行ユニット230A〜Nに結合されている。しかしながら、他の実装例では、1つまたは複数のキュー225A〜Nは、複数の実行ユニット230A〜Nに結合されている。
所与のクロックサイクルにおいて妥当な割当順列を選択した後、opは、選択された割当順列に一致するようにキュー225A〜Nに割り当てられる。依存関係が解決されopの実行準備ができると、ピッカー(図示せず)は、実行ユニット230A〜Nで実行するために、キュー225A〜Nからopを選択する。一実装例では、個々の実行ユニット230A〜Nは、典型的なプログラムシーケンスで遭遇する様々なタイプのopの全てのサブセットしか実行できない。したがって、スケジューラキュー割り当てロジック220は、これらのopがこれらの具体的なタイプのopを実行可能である実行ユニット230A〜Nによって実行されるように、opを適切なキュー225A〜Nに割り当てる。
ここで図3を参照すると、プロセッサパイプライン300の一部の一実装例のブロック図が示される。一実装例では、プロセッサパイプライン300の一部は、プロセッサパイプライン200内に含まれる。デコードユニット(図示せず)は、命令をopへとデコードし、そして、opは、マルチプレクサ(すなわちmux)310A及びmux310Bに提供される。各mux310A〜Bは、取り付けられているスケジューリング論理ユニット320A〜Bにそれぞれ対応するタイプである最初のN個のopを選択する。論理ユニット315A〜Bは、mux310A〜Bにそれぞれ結合される選択信号を提供する。
第1のopタイプのスケジューリング論理ユニット320A及び第2のopタイプのスケジューリング論理ユニット320Bは、任意の数及びタイプのスケジューリング論理ユニットを表す。同様に、mux310A〜Bは、任意の数のスケジューリング論理ユニットに結合されている任意の数のmuxを表す。実装例に応じて、プロセッサは、任意の数の様々なopタイプ(例えば、ALU op、アドレス生成op、浮動小数点op、固定小数点op、分岐op、乗算op、除算op)を処理する。一実装例では、第1のopタイプのスケジューリング論理ユニット320Aは、ALU opをキュー325A〜Nに割り当て、第2のopタイプのスケジューリング論理ユニット320Bは、アドレス生成opをキュー350A〜Nに割り当てる、等々。他の実装例では、第1のopタイプのスケジューリング論理ユニット320A及び第2のopタイプのスケジューリング論理ユニット320Bは、他のタイプのopを、対応するキューに割り当てる。
一実装例では、各キュー325A〜N及び350A〜Nは、第1のタイプのop及び第2のタイプのopを格納する。別の実装例では、キュー325A〜N及び350A〜Nの1つまたは複数は、第1のタイプまたは第2のタイプのopのみを格納する。2つより多いタイプのopを有する実装例では、各キュー325A〜N及び350A〜Nは、3つ以上のタイプのop、2つ以上のタイプのop、または単一のタイプのopを格納する。異なる実装例では、任意の数の異なるタイプのopを格納している異なる数及びタイプのキューがあるだろうことを理解すべきである。
各キュー325A〜Nは、対応する実行ユニット335A〜Nまたは345A〜Nで実行するためにopを選択する任意の数のピッカー330A〜N及び340A〜Nを有する。同様に、各キュー350A〜Nは、対応する実行ユニット365A〜Nまたは375A〜Nで実行するためにopを選択する任意の数のピッカー360A〜N及び370A〜Nを有する。一実装例では、キュー325Aに格納可能な異なるタイプのopごとに、キュー325Aに対するピッカー330A〜Nが存在する。それぞれ異なるタイプのopは、異なるタイプの実行ユニットで実行され、実行ユニット335A〜Nは、異なるタイプのopを実行する任意の数の異なる実行ユニットを表す。一実装例では、いくつかの実行ユニットは、1つより多いタイプのopを実行可能であることに留意されたい。
他のキューにおいて、各ピッカーは、ピッカーに結合されている実行ユニットで実行されるだろうopをキューから選択する。例えば、ピッカー340A〜Nは、それぞれ実行ユニット345A〜Nで実行されるopをキュー325Nから選択し、ピッカー360A〜Nは、それぞれ実行ユニット365A〜Nで実行されるopをキュー350Aから選択し、ピッカー370A〜Nは、それぞれ実行ユニット375A〜Nで実行されるopをキュー350Nから選択する。一実装例では、プロセッサパイプラインによってサポートされている異なるタイプのopごとに、(ピッカーを介して)各キューに結合されている異なる実行ユニットが存在する。しかしながら、一部の実装例では、一部のキューは、プロセッサパイプラインによって実行されている様々なタイプのop全てのサブセットしか格納しない。例えば、プロセッサが2種類のop(ALU及びアドレス生成のop)を実行する実装例では、一部のキューはALU opのみを格納し、他のキューはアドレス生成opのみを格納する。
様々なopタイプのためのスケジューラキュー及び実行ユニットの数は実装例ごとに異なることを理解すべきである。本開示を通して説明される例は、実装の非限定的な例を例示することを意図している。他の実装例では、他の数のスケジューラキュー、実行ユニット及び他の関連構造を用いるプロセッサが可能であり、企図される。
ここで図4を参照すると、所与のopタイプのためのスケジューラ論理ユニット400の一実装例のブロック図が示される。一実装例では、スケジューラキュー割り当てロジック(例えば、図2のスケジューラキュー割り当てロジック220)は、異なるopタイプごとに別々のスケジューラ論理ユニット400を含む。別の実装例では、第1のopタイプのスケジューリング論理320A及び第2のopタイプのスケジューリング論理320Bは、スケジューラ論理ユニット400に示されるコンポーネントを含む。
一実施形態では、デコードユニットからのopは、論理ユニット410、mux415及び論理ユニット430に結合される。論理ユニット410は、特定のスケジューラ論理ユニット400に対応する所与のタイプであるopのみをデコードユニットから選択する選択信号を生成する。例えば、10個のopが所与のサイクルにおいてデコードユニットによってデコードされ、3個のopのみが特定のスケジューラ論理ユニット400に対応する所与のタイプである場合、これら3個のopが、mux415からユニット420及びプライオリティマトリクス421〜429に出力される。デコードユニットによってデコードされるopの数は、サイクルごとに、かつ実装例ごとに異なるものであり、所与のタイプのopの数も、サイクルごとに、かつ実装例ごとに異なるものになることに留意されたい。
mux415から出力されるopは、ユニット420及びプライオリティマトリクス421〜429に提供される。一実装例では、ユニット420は、最初の妥当なN−op割り当て検索ユニットであり、ここでNは整数であり、Nの値は、所与のopタイプの実行ユニットに入力を行うピッカーの数によって決定される。例えば、所与のopタイプの実行ユニットに結合されている6個のピッカーが存在する場合、Nは6に等しく、ユニット420は、6個のopを、所与のopタイプの実行ユニットに入力を行うピッカーを有する6個の異なるスケジューラキューに割り当てることの様々な可能な組み合わせの全てに対して、いずれの割当順列が妥当であるかを判定する。次に、ユニット420は、様々な可能な割当順列から、最初の妥当な割当順列を選択する。この割当順列は、mux435に結合される。一実装例では、ピッカーと実行ユニットに1対1の対応関係があり、各ピッカーは、スケジューラキューに取り付けられていることに留意されたい。ピッカーは、ピッカーに結合されている実行ユニットによって実行可能であるopを、その取り付けられているスケジューラキューから選択する。
一実装例では、(N−1)−op割り当てプライオリティマトリクス421は、(N−1)個のopを(N−1)個の異なるスケジューラキューに割り当てることの様々な順列の組み合わせの全てに対して、いずれの割当順列が妥当であるかを判定する。上記の例では、N=6である場合、プライオリティマトリクス421は、5個のopが6個のスケジューラキューのうちの5個に割り当てられるときの様々な割当順列の妥当性をチェックする。プライオリティマトリクス421はまた、スケジューラキューのそれぞれに既にいくつの保留中のopが格納されているかを示すスケジューラキュー占有率データも受信する。一実装例では、プライオリティマトリクス421は、最も高い占有率を有するキューにopを割り当てない妥当な割当順列を選択する。
実装例に応じて、(N−2)個のopがN個のスケジューラキューのうちの(N−2)個に割り当てられるときの様々な割当順列の妥当性をチェックし、(N−3)個のopがN個のスケジューラキューのうちの(N−3)個に割り当てられるときの様々な割当順列の妥当性をチェックする等を行う任意の数の他のプライオリティマトリクスが在る。一実装例では、これらのプライオリティマトリクスのそれぞれは、N個の異なるスケジューラキューの中で最も多くのopを既に格納しているスケジューラキューへのopの割り当てを回避する妥当な割当順列を選択する。これらの選択された割当順列は、次に、mux435に結合される。
スケジューラ論理ユニット400に示される最後のプライオリティマトリクスは、単一−op割り当てプライオリティマトリクス429である。プライオリティマトリクス429は、N個の異なるスケジューラキューのそれぞれに単一のopを割り当てることの妥当性をチェックする。一実装例では、プライオリティマトリクス429は、様々なスケジューラキューの中で最も少ない数のopを格納しているスケジューラキューに単一のopを割り当てることを優先する。プライオリティマトリクス429は、N個の様々な可能な割り当てから妥当な割り当てを選択し、次に、この選択された割り当ての表示をmux435に送信する。
一実装例では、論理ユニット430は、所与のクロックサイクルにおいてスケジューラキューに割り当てるopの数を判定する。一実装例では、論理ユニット430は、割り当てられているopの数は、所与のクロックサイクルにおいてピッカー−実行ユニットあたりで1つより多いopを必要としないことを保証する。一実装例では、論理ユニット430は、ユニット420及びプライオリティマトリクス421〜429が妥当な割当順列を選択するのと並行して、割り当てるopの数を判定する。論理ユニット430は、所与のクロックサイクルにおいてスケジューラキューに割り当てるopの数の判定に基づいて、選択信号を生成し、論理ユニット430は、この選択信号をmux435に伝達する。次に、mux435は、論理ユニット430によって生成された選択信号に基づいて、特定のop割当順列をmux435の出力に結合する。例えば、一実装例では、mux435への入力は、N個のop、N−1個のop、N−2個のopなどの割り当て、そして1個のopの割り当てに至るまでの割り当てのための様々なop割当順列である。論理ユニット430からの選択信号は、これら割当順列のいずれがmux435の出力に結合されるかを判定する。スケジューラキュー割り当てロジック(例えば、図2のスケジューラキュー割り当てロジック220)は、この選択されたop割当順列を用いて、所与のクロックサイクルにおいてスケジューラキューにopを割り当てる方法を判定する。
ここで図5を参照すると、最初の妥当なN−op検索ユニット500の一実装例のブロック図が示される。一実装例では、最初の妥当なN−op割り当て検索ユニット500の構成要素は、(図4の)最初の妥当なN−op割り当て検索ユニット420内に含まれる。最初の妥当なN−op割り当て検索ユニット500は、所与のクロックサイクルにおいて特定のopタイプに対するピッカーが取り付けられた利用可能なスケジューラキューの全てにopを割り当てるための妥当な割当順列を検索しようとする。一実装例では、最初の妥当なN−op割り当て検索ユニット500は、ANDゲート505A〜P、論理ユニット510及びmux520を含む。他の実装例では、最初の妥当なN−op割り当て検索ユニット500は、他のコンポーネントを用いてかつ/またはコンポーネントの他の配置を用いて実装される。
ANDゲート505A〜Pの数は、実装例によって異なり、所与のopタイプの実行ユニットに入力を行うピッカーの数に対する様々な可能な割当順列の数に基づくものである。一実装例では、所与のopタイプに対するピッカーが取り付けられているスケジューラキューへのopの様々な可能な割当順列ごとに、異なるANDゲート505A〜Pが存在する。例えば、ユニット500に対応する所与のopタイプに対するスケジューラキューに3つのピッカー−実行ユニットの組み合わせが取り付けられている場合、3個のスケジューラキューに対する3個のopの6つの異なる可能な割当順列のそれぞれをテストするための6つのANDゲート505A〜Pが存在する。所与のタイプのopに対する他の数のスケジューラキュー、ピッカー、そして実行ユニットの組み合わせの場合、ANDゲート505A〜Pの数は、対応するスケジューラキューの全てにopを割り当てるための様々な可能な割当順列の全てをテストするように、異なるだろう。
各ANDゲート505A〜Pは、スケジューラキューに取り付けられているピッカー−実行ユニットの組み合わせに基づいて、様々なスケジューラキューへのopの割り当ての妥当性をテストする。第1の、第2の、かつ第Nのopは、現在のクロックサイクルにおいてデコードユニットによってデコードされたopを指す。第1のopは、プログラム順で最も古いopを指し、第2のopは、プログラム順で2番目に古いopを指す、等々。一実装例では、ピッカーと実行ユニットの間に1対1の対応関係がある。言い換えると、各ピッカーは、対応する実行ユニットに結合されている。前述のように、一実装例では、スケジューラキューには、実行ユニットに入力を行うピッカーが取り付けられており、これら実行ユニットは、opタイプのサブセットしか実行できない。各ANDゲート505A〜Pは、スケジューラキューに結合されているピッカーによって入力される実行ユニットが、所与の割当順列に対してスケジューラキューに割り当てられているopを実行可能かどうか、を判定する。所与のANDゲートにおいて、各実行ユニットが、その対応するスケジューラキューに割り当てられているopを実行可能である場合、所与のANDゲートは、割当順列が妥当であると示す高出力(つまり、「1」ビット)を生成する。そうではなく、実行ユニットのいずれかが、その対応するスケジューラキューに割り当てられているopを実行できない場合、所与のANDゲートは、低出力(つまり、「0」ビット)を生成する。
一実装例では、最初の論理検索ユニット510は、ANDゲート505A〜Pからの最初の「1」出力を選択する。「最初の」「1」出力を構成する方向は、実装例によって異なる。一実装例では、最初の「1」出力は、ANDゲート505Aの方向からのものであり、別の実装例では、最初の「1」出力は、ANDゲート505Pの方向からのものである。他の実装例では、最初の論理検索ユニット510は、妥当な割当順列が複数ある場合、いずれの割当順列を選択するか判定するために他の技術を用いる。最初の論理検索ユニット510の出力は、mux520に結合され、最初の論理検索ユニット510のこの出力は、mux520への割当順列入力の1つを選択する。一実装例では、mux520への各割当順列入力は、この割当順列が全体的なスケジューラキュー割り当てロジック(例えば、図2のスケジューラキュー割り当てロジック220)によって選択されるものと最終的になる場合、後続の論理ユニットによって使用可能な方法で、スケジューラキューへのopの割り当てを指定して、これらのopを対応するスケジューラキューに割り当てる。他の実装例では、最初の妥当なN−op検索ユニット500は、図5に示されるものと同等の機能を行う論理ゲートの他の構成で実装されることに留意されたい。
ここで図6を参照すると、割当順列を選択するためのプライオリティマトリクス610の一実装例のブロック図が示される。一実装例では、プライオリティマトリクス421(図4の)は、プライオリティマトリクス610のコンポーネントを含む。一実装例では、プライオリティマトリクス610は、計N個のスケジューラキューのうちの(N−1)個のスケジューラキューに(N−1)個のopが割り当てられるときに妥当な割当順列を選択するように実装される。これにより、スケジューラキューの1つを、所与のクロックサイクルにおいてopが割り当てられないままとする。
図5の最初の論理検索ユニット500と同様に、プライオリティマトリクス610は、(N−1)個のopを(N−1)個のスケジューラキューに割り当てるための様々な可能な割当順列の妥当性をテストする複数のANDゲート605A〜Pに結合されている。一実装例では、プライオリティマトリクス610はまた、N個のスケジューラキューに既に格納されているopの数を指定するスケジューラキュー占有率データも受信する。一実装例では、プライオリティマトリクス610は、所与のクロックサイクルにおいて最も多くのopを有する(すなわち、最も高い占有率)スケジューラキューにopを割り当てない、最初の妥当な割当順列を選択する。次に、この割当順列は、mux620に結合される入力から選択される。後続の論理ユニットが(N−1)個のopが所与のクロックサイクルにおいて割り当てられるべきと判断した場合、この割当順列が、所与のクロックサイクルにおいてスケジューラキューにopを割り当てるのに、スケジューラキュー割り当てロジックによって使用される。スケジューラキュー割り当てロジックはまた、プライオリティマトリクス610と同じ構造にしたがう他のプライオリティマトリクスも含む。これらの他のプライオリティマトリクスは、(N−2)個のopが所与のクロックサイクルにおいて割り当てられるとき、(N−3)個のopが所与のクロックサイクルにおいて割り当てられるときなど、所与のクロックサイクルにおける1個のopの割り当てに至るまで、割当順列を判定するために用いられる。
ここで図7を参照すると、スケジューラキュー割り当てロジックを実装する方法700の一実装例が示される。説明のために、本実装例でのステップ及び図8でのステップを順次示す。しかしながら、記載される方法の様々な実装例では、記載される要素のうちの1つまたは複数が、同時に実行される、示されるのとは異なる順序で実行される、または、全体的に省略されることに留意されたい。他の追加の要素も必要に応じて実行される。本明細書中に記載される様々なシステムまたは装置のいずれも、方法700を実装するように構成されている。
デコードユニットは、所与のサイクルにおいて複数のopをデコードする(ブロック705)。デコードユニットは、複数のopをスケジューラキュー割り当てロジックに伝達する(ブロック710)。スケジューラキュー割り当てロジックは、複数のopを、異なるopタイプに対応するopのストリームへと分割する(ブロック715)。次に、opタイプごとに、スケジューラキュー割り当てロジックは、複数のスケジューラキューにopを割り当てるための複数の様々な割当順列に対する妥当性信号を生成する(ブロック720)。一実装例では、スケジューラキュー割り当てロジックは、ブロック720において様々な可能な割当順列の全てに対して妥当性信号を生成する。様々な可能な割当順列には全て、1からスケジューラキューの数までの様々な数のopに対する順列が含まれる。
また、ブロック715及び720と並行して、スケジューラキュー割り当てロジックは、所与のサイクルにおいて割り当てるopの数の表示を受信する(ブロック725)。次に、スケジューラキュー割り当てロジックは、表示によって指定されたopの数に対応する妥当な割当順列を選択する(ブロック730)。一実装例では、スケジューラキュー割り当てロジックは、ブロック730において最初の妥当な割当順列を選択する。他の実装例では、スケジューラキュー割り当てロジックは、複数の割当順列が妥当なときにいずれの割当順列を選択するかを判定するのに他の技術を用いる。次に、スケジューラキュー割り当てロジックは、選択された割当順列に一致するように、opをスケジューラキューに割り当てる(ブロック735)。ブロック735後、方法700は終了する。一実装例では、方法700は、後続のクロックサイクルごとに繰り返されることに留意されたい。
ここで図8を参照すると、プライオリティマトリクスを実装する方法800の一実装例が示される。プライオリティマトリクスは、デコードユニットから複数のopを受信する(ブロック805)。プライオリティマトリクスはまた、複数のスケジューラキューに対するキュー占有率状態も受信する(ブロック810)。プライオリティマトリクスは、複数のスケジューラキューの全てよりも少ないスケジューラキューにopを割り当てるための様々な割当順列の妥当性をテストする(ブロック815)。例えば、5個のスケジューラキューがある場合、一実装例では、プライオリティマトリクスは、4個のopを、5個のスケジューラキューのうちの4個に割り当てる様々な方法の妥当性をテストする。別の実装例では、プライオリティマトリクスは、3個のopを、5個のスケジューラキューのうちの3個に割り当てる様々な方法の妥当性をテストする。他の実装例では、5以外の他の数のスケジューラキューがあることを理解すべきである。
次に、プライオリティマトリクスは、占有率が最も高いキューへのopの割り当てを回避する割当順列を選択する(ブロック820)。他の実装例では、プライオリティマトリクスは、占有率が最も高い2つのキューへのopの割り当てを回避する割当順列を選択し、占有率が最も高い3つのキューへのopの割り当てを回避する割当順列を選択する、等々。次に、プライオリティマトリクスは、選択された割当順列の表示を生成する(ブロック825)。一実装例では、プライオリティマトリクスは、選択された割当順列の表示を、スケジューラキュー割り当てロジックの次のレベルのmuxに伝達する。ブロック825後、方法800は終了する。一実装例では、方法800はクロックサイクルごとに実行されることに留意されたい。さらに、一実装例では、スケジューラキュー割り当てロジックは、複数のプライオリティマトリクスを含み、方法800は、異なるプライオリティマトリクスごとに実行される。
様々な実装例において、ソフトウェアアプリケーションのプログラム命令が、本明細書中に記載された方法及び/または機構を実装するのに用いられる。例えば、汎用または特殊目的プロセッサによって実行可能なプログラム命令が企図されている。様々な実装例では、そうしたプログラム命令は、高水準プログラミング言語によって表される。他の実装例では、プログラム命令は、高水準プログラミング言語からバイナリ、中間、または他の形式にコンパイルされる。代替として、ハードウェアの動作または設計を記述するプログラム命令が書かれる。そうしたプログラム命令は、Cなどの高水準プログラミング言語によって表される。代替として、Verilogなどのハードウェア設計言語(HDL)が用いられる。様々な実装例では、プログラム命令は、各種の非一時的なコンピュータ可読格納媒体のいずれかに格納される。格納媒体は、プログラム命令をコンピューティングシステムにプログラム実行のために提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に言って、そうしたコンピューティングシステムは、プログラム命令を実行するように構成された少なくとも1つまたは複数のメモリ及び1つまたは複数のプロセッサを含む。
上記の実装例は実装の単なる非限定的な例であることを強調すべきである。上述の開示が完全に理解されると、多数の変形例及び変更例が、当業者に明らかとなろう。以下の特許請求の範囲は全てのそうした変形例及び変更例を包括すると解釈されることが意図される。

Claims (20)

  1. 複数の実行ユニットと、
    前記複数の実行ユニットに結合されている複数のスケジューラキューと、
    デコードユニットと、
    前記デコードユニット及び前記複数のスケジューラキューに結合されているスケジューリングロジックと、を備えるシステムであって、
    前記スケジューリングロジックは、
    所与のサイクルにおいて前記デコードユニットから複数の動作を受信し、
    前記複数の動作の複数の割当順列を判定し、割当順列は、前記複数のスケジューラキューのうちの1つまたは複数への前記複数の動作のうちの1つまたは複数の割り当てを定義するものであり、
    前記所与のサイクルにおいて前記複数のスケジューラキューのうちの1つまたは複数に割り当てる動作の所与の数の表示を受信し、
    前記複数の割当順列のうちの1つに一致する動作を、前記複数のスケジューラキューのうちの前記1つまたは複数に割り当てるように構成されている回路を備える、システム。
  2. 前記回路が、さらに、前記所与のサイクルにおいて現在格納されている動作の数が最も多いスケジューラキューに動作を割り当てることを回避するように構成されている、請求項1に記載のシステム。
  3. 前記複数の割当順列が、前記所与のサイクルにおいて割り当てる少なくとも2つの異なる数の動作のための割当順列を備える、請求項1に記載のシステム。
  4. 前記複数の動作が、第1のタイプの動作及び第2のタイプの動作を備える、請求項1に記載のシステム。
  5. 前記回路が、さらに、
    前記第1のタイプの動作のための第1の複数の割当順列が妥当であるかどうかを判定し、前記第1の複数の割当順列から、妥当である第1の割当順列を選択し、
    前記第2のタイプの動作のための第2の複数の割当順列が妥当であるかどうかを判定し、前記第2の複数の割当順列から、妥当である第2の割当順列を選択し、
    前記第1のタイプの動作を、前記第1の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当て、
    前記第2のタイプの動作を、前記第2の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てるように構成されている、請求項4に記載のシステム。
  6. 前記複数の割当順列が、所与の数の動作及び前記複数のスケジューラキューに対する全ての可能な割当順列を備える、請求項1に記載のシステム。
  7. 前記複数の割当順列のうちの前記1つに一致する前記動作が、妥当である割当順列に相当し、
    所与の割当順列は、前記所与の割当順列の各動作が、各割り当てられた動作を実行可能な実行ユニットに割り当てられているときに妥当である、請求項1に記載のシステム。
  8. 所与のサイクルにおいてデコードユニットから複数の動作を受信することと、
    前記複数の動作の複数の割当順列を判定することであって、割当順列は、前記複数の動作のうちの1つまたは複数の、複数のスケジューラキューのうちの1つまたは複数への割り当てを定義するものである、前記判定することと、
    前記所与のサイクルにおいて前記複数のスケジューラキューのうちの1つまたは複数に割り当てる動作の所与の数の表示を受信することと、
    前記複数の割当順列のうちの1つに一致する動作を、前記複数のスケジューラキューのうちの前記1つまたは複数に割り当てることと、を含む、方法。
  9. 前記所与のサイクルにおいて現在格納されている動作の数が最も多いスケジューラキューに動作を割り当てることを回避することをさらに含む、請求項8に記載の方法。
  10. 前記複数の割当順列が、前記所与のサイクルにおいて割り当てる少なくとも2つの異なる数の動作のための割当順列を備える、請求項8に記載の方法。
  11. 前記複数の動作が、第1のタイプの動作及び第2のタイプの動作を備える、請求項8に記載の方法。
  12. 前記第1のタイプの動作のための第1の複数の割当順列が妥当であるかどうかを判定し、前記第1の複数の割当順列から、妥当である第1の割当順列を選択することと、
    前記第2のタイプの動作のための第2の複数の割当順列が妥当であるかどうかを判定し、前記第2の複数の割当順列から、妥当である第2の割当順列を選択することと、
    前記第1のタイプの動作を、前記第1の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てることと、
    前記第2のタイプの動作を、前記第2の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てることと、をさらに含む、請求項11に記載の方法。
  13. 前記複数の割当順列が、所与の数の動作及び前記複数のスケジューラキューに対する全ての可能な割当順列を備える、請求項8に記載の方法。
  14. 前記複数の割当順列のうちの前記1つに一致する前記動作が、妥当である割当順列に相当し、
    所与の割当順列は、前記所与の割当順列の各動作が、各割り当てられた動作を実行可能な実行ユニットに割り当てられているときに妥当である、請求項8に記載の方法。
  15. メモリと、
    前記メモリに結合されているプロセッサであって、
    所与のサイクルにおいて前記デコードユニットから複数の動作を受信し、
    前記複数の動作の複数の割当順列を判定し、割当順列は、前記複数の動作のうちの1つまたは複数の、前記複数のスケジューラキューのうちの1つまたは複数への割り当てを定義するものであり、
    前記所与のサイクルにおいて前記複数のスケジューラキューのうちの1つまたは複数に割り当てる動作の所与の数の表示を受信し、
    前記複数の割当順列のうちの1つに一致する動作を、前記複数のスケジューラキューのうちの前記1つまたは複数に割り当てるように構成されている前記プロセッサと、を備える、装置。
  16. 前記プロセッサが、さらに、前記所与のサイクルにおいて現在格納されている動作の数が最も多いスケジューラキューに動作を割り当てることを回避するように構成されている、請求項15に記載の装置。
  17. 前記複数の割当順列は、前記所与のサイクルにおいて割り当てる少なくとも2つの異なる数の動作のための割当順列を備える、請求項15に記載の装置。
  18. 前記複数の動作が、第1のタイプの動作及び第2のタイプの動作を備える、請求項15に記載の装置。
  19. 前記プロセッサが、さらに、
    前記第1のタイプの動作のための第1の複数の割当順列が妥当であるかどうかを判定し、前記第1の複数の割当順列から、妥当である第1の割当順列を選択し、
    前記第2のタイプの動作のための第2の複数の割当順列が妥当であるかどうかを判定し、前記第2の複数の割当順列から、妥当である第2の割当順列を選択し、
    前記第1のタイプの動作を、前記第1の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当て、
    前記第2のタイプの動作を、前記第2の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てるように構成されている、請求項18に記載の装置。
  20. 前記複数の割当順列のうちの前記1つに一致する前記動作が、妥当である割当順列に相当し、
    所与の割当順列は、前記所与の割当順列の各動作が、各割り当てられた動作を実行可能な実行ユニットに割り当てられているときに妥当である、請求項15に記載の装置。
JP2020566813A 2018-05-29 2019-05-28 スケジューラキューの割り当て Pending JP2021525919A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/991,088 2018-05-29
US15/991,088 US11294678B2 (en) 2018-05-29 2018-05-29 Scheduler queue assignment
PCT/US2019/034161 WO2019231904A1 (en) 2018-05-29 2019-05-28 Scheduler queue assignment

Publications (1)

Publication Number Publication Date
JP2021525919A true JP2021525919A (ja) 2021-09-27

Family

ID=66867820

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020566813A Pending JP2021525919A (ja) 2018-05-29 2019-05-28 スケジューラキューの割り当て

Country Status (6)

Country Link
US (2) US11294678B2 (ja)
EP (1) EP3803576A1 (ja)
JP (1) JP2021525919A (ja)
KR (1) KR102491501B1 (ja)
CN (1) CN112236751A (ja)
WO (1) WO2019231904A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294678B2 (en) 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment
US11334384B2 (en) * 2019-12-10 2022-05-17 Advanced Micro Devices, Inc. Scheduler queue assignment burst mode
US11948000B2 (en) 2020-10-27 2024-04-02 Advanced Micro Devices, Inc. Gang scheduling for low-latency task synchronization
KR102664020B1 (ko) * 2021-10-28 2024-05-08 연세대학교 산학협력단 분할 스케줄링을 이용한 테스트 시간 감소 방법 및 장치
US11979476B2 (en) * 2022-10-07 2024-05-07 Google Llc High performance connection scheduler

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019927A1 (en) * 2000-08-08 2002-02-14 Mikio Hondou Apparatus for issuing an instruction to a suitable issue destination
US20100325394A1 (en) * 2009-06-23 2010-12-23 Golla Robert T System and Method for Balancing Instruction Loads Between Multiple Execution Units Using Assignment History
US20120144175A1 (en) * 2010-12-02 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for an enhanced speed unified scheduler utilizing optypes for compact logic
US20150106595A1 (en) * 2013-07-31 2015-04-16 Imagination Technologies Limited Prioritizing instructions based on type

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
US6246680B1 (en) 1997-06-30 2001-06-12 Sun Microsystems, Inc. Highly integrated multi-layer switch element architecture
EP1061439A1 (en) 1999-06-15 2000-12-20 Hewlett-Packard Company Memory and instructions in computer architecture containing processor and coprocessor
US7406554B1 (en) 2000-07-20 2008-07-29 Silicon Graphics, Inc. Queue circuit and method for memory arbitration employing same
US6519683B2 (en) * 2000-12-29 2003-02-11 Intel Corporation System and method for instruction cache re-ordering
US6782461B2 (en) 2002-02-25 2004-08-24 Intel Corporation Dynamically adjustable load-sharing circular queues
US20040151197A1 (en) 2002-10-21 2004-08-05 Hui Ronald Chi-Chun Priority queue architecture for supporting per flow queuing and multiple ports
US7689793B1 (en) 2003-05-05 2010-03-30 Marvell Israel (M.I.S.L.) Ltd. Buffer management architecture
US7047322B1 (en) 2003-09-30 2006-05-16 Unisys Corporation System and method for performing conflict resolution and flow control in a multiprocessor system
US20050283772A1 (en) 2004-06-22 2005-12-22 Kalyan Muthukumar Determination of loop unrolling factor for software loops
EP1645968B1 (en) 2004-10-11 2008-03-19 Texas Instruments Incorporated Multi-threaded DMA
US7770173B2 (en) 2005-02-03 2010-08-03 International Business Machines Corporation System for dynamic processor enablement
US7768910B2 (en) 2005-02-04 2010-08-03 Neidhardt Arnold L Calculations for admission control
US8924691B2 (en) * 2006-02-24 2014-12-30 Freescale Semiconductor, Inc. Software pipelining
US7483327B2 (en) 2006-03-02 2009-01-27 Freescale Semiconductor, Inc. Apparatus and method for adjusting an operating parameter of an integrated circuit
US7539133B2 (en) 2006-03-23 2009-05-26 Alcatel-Lucent Usa Inc. Method and apparatus for preventing congestion in load-balancing networks
US20080320274A1 (en) 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US7937568B2 (en) 2007-07-11 2011-05-03 International Business Machines Corporation Adaptive execution cycle control method for enhanced instruction throughput
US7779237B2 (en) 2007-07-11 2010-08-17 International Business Machines Corporation Adaptive execution frequency control method for enhanced instruction throughput
CN101572833B (zh) 2008-04-28 2010-11-10 华为技术有限公司 无源光网络系统中发送上行突发数据的方法、装置及系统
US20100241760A1 (en) 2009-03-18 2010-09-23 Microsoft Corporation Web Front-End Throttling
US8090892B2 (en) 2009-06-12 2012-01-03 Freescale Semiconductor, Inc. Ordered queue and methods therefor
US9286075B2 (en) 2009-09-30 2016-03-15 Oracle America, Inc. Optimal deallocation of instructions from a unified pick queue
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US9606800B1 (en) * 2012-03-15 2017-03-28 Marvell International Ltd. Method and apparatus for sharing instruction scheduling resources among a plurality of execution threads in a multi-threaded processor architecture
US9397961B1 (en) 2012-09-21 2016-07-19 Microsemi Storage Solutions (U.S.), Inc. Method for remapping of allocated memory in queue based switching elements
US9424045B2 (en) * 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9483266B2 (en) * 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US10764185B2 (en) 2013-06-25 2020-09-01 Amazon Technologies, Inc. Token-based policies burst-mode operations
US9471393B2 (en) 2013-06-25 2016-10-18 Amazon Technologies, Inc. Burst-mode admission control using token buckets
US9378168B2 (en) 2013-09-18 2016-06-28 International Business Machines Corporation Shared receive queue allocation for network on a chip communication
US9405345B2 (en) 2013-09-27 2016-08-02 Intel Corporation Constraining processor operation based on power envelope information
GB2540405B (en) * 2015-07-16 2018-04-11 Advanced Risc Mach Ltd Execution of micro-operations
US9927997B2 (en) 2015-12-21 2018-03-27 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically and selectively enabling burst mode operation in a storage device
US10178011B2 (en) 2016-02-10 2019-01-08 Hewlett Packard Enterprise Development Lp Network traffic management via network switch QoS parameters analysis
CN116755778A (zh) 2016-12-31 2023-09-15 英特尔公司 用于异构计算的系统、方法和装置
JP6912707B2 (ja) * 2017-05-15 2021-08-04 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10884753B2 (en) 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10679636B2 (en) 2018-01-12 2020-06-09 Ribbon Communications Operating Company, Inc. Methods and apparatus for supporting encoding, decoding and/or transcoding of content streams in a communication system
US10601723B2 (en) 2018-04-12 2020-03-24 Advanced Micro Devices, Inc. Bandwidth matched scheduler
US11294678B2 (en) 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019927A1 (en) * 2000-08-08 2002-02-14 Mikio Hondou Apparatus for issuing an instruction to a suitable issue destination
JP2002055814A (ja) * 2000-08-08 2002-02-20 Fujitsu Ltd 適切な発行先に命令を発行する命令発行装置
US20100325394A1 (en) * 2009-06-23 2010-12-23 Golla Robert T System and Method for Balancing Instruction Loads Between Multiple Execution Units Using Assignment History
US20120144175A1 (en) * 2010-12-02 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for an enhanced speed unified scheduler utilizing optypes for compact logic
US20150106595A1 (en) * 2013-07-31 2015-04-16 Imagination Technologies Limited Prioritizing instructions based on type

Also Published As

Publication number Publication date
WO2019231904A1 (en) 2019-12-05
KR102491501B1 (ko) 2023-01-27
US11294678B2 (en) 2022-04-05
EP3803576A1 (en) 2021-04-14
KR20210010527A (ko) 2021-01-27
CN112236751A (zh) 2021-01-15
US20220206798A1 (en) 2022-06-30
US20190369991A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
JP2021525919A (ja) スケジューラキューの割り当て
EP3371704B1 (en) Backward compatibility testing of software in a mode that disrupts timing
US11243775B2 (en) System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues
US20130179662A1 (en) Method and System for Resolving Thread Divergences
KR20110130488A (ko) 종속 행렬을 사용하여 할당해제된 로드 명령들을 추적하는 장치 및 방법
US9436450B2 (en) Method and apparatus for optimising computer program code
US20130300655A1 (en) Graphics processing unit sharing between many applications
US7120765B2 (en) Memory transaction ordering
KR102591051B1 (ko) 스케줄러 큐 할당 버스트 모드
US11467838B2 (en) Fastpath microcode sequencer
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
US9344115B2 (en) Method of compressing and restoring configuration data
US11880683B2 (en) Packed 16 bits instruction pipeline
US11500962B1 (en) Emulating fine-grained sparsity in a systolic array
GB2540944A (en) Vector operand bitsize control
KR20210089247A (ko) 그래픽 처리 장치에서 행렬 곱셈의 파이프라인 처리
US9753776B2 (en) Simultaneous multithreading resource sharing
US11803736B1 (en) Fine-grained sparsity computations in systolic array
US10956159B2 (en) Method and processor for implementing an instruction including encoding a stopbit in the instruction to indicate whether the instruction is executable in parallel with a current instruction, and recording medium therefor
US20210117196A1 (en) Register renaming after a non-pickable scheduler queue
US11630667B2 (en) Dedicated vector sub-processor system
KR102644951B1 (ko) 산술 논리 장치 레지스터 시퀀싱
US11321051B2 (en) Statistical mode determination

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230620

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230920

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240312

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240612

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240809