JP6628801B2 - プロセッサ・コアのための実行ユニット回路、プロセッサ・コア、およびプロセッサ・コア内のプログラム命令を実行する方法 - Google Patents

プロセッサ・コアのための実行ユニット回路、プロセッサ・コア、およびプロセッサ・コア内のプログラム命令を実行する方法 Download PDF

Info

Publication number
JP6628801B2
JP6628801B2 JP2017530696A JP2017530696A JP6628801B2 JP 6628801 B2 JP6628801 B2 JP 6628801B2 JP 2017530696 A JP2017530696 A JP 2017530696A JP 2017530696 A JP2017530696 A JP 2017530696A JP 6628801 B2 JP6628801 B2 JP 6628801B2
Authority
JP
Japan
Prior art keywords
load
store
queue
store operation
cache
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.)
Active
Application number
JP2017530696A
Other languages
English (en)
Other versions
JP2018501564A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2018501564A publication Critical patent/JP2018501564A/ja
Application granted granted Critical
Publication of JP6628801B2 publication Critical patent/JP6628801B2/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 or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、プロセシング・システムおよびプロセッサに関し、より詳細には、再循環するロード/ストア・キューを有する実行スライスを含む、パイプライン化されたプロセッサ・コアに関する。
今日のプロセッサ・コアでは、パイプラインが使用されて、複数の命令ストリームに対応する複数のハードウェア・スレッドを実行する。その結果、リソース共有によって、さらに、1つまたは複数のハードウェア・スレッドがイベントを待っている間でも実行が進むようにすることによって、プロセッサ・リソースのより効率的な使用を提供することができる。
既存のプロセッサ・コアにおいて、また、複数の実行スライスに分割される特定のプロセッサ・コアにおいて、命令は、実行スライスに対してディスパッチされ、実行ユニットに対して発行されるまで発行キュー内に保持される。発行キューが満たされると、追加のオペレーションは、典型的には、スライスに対してディスパッチされなくなる。発行キューは、オペレーションだけでなく、オペランドおよび状態/制御情報も含むため、リソース集約的であり、実装するにはかなりの電力とダイ面積を必要とする。
したがって、発行キューの要件が低減したプロセッサ・コアを提供することが望ましい。
本発明の好ましい実施形態は、実行ユニット回路、実行ユニットを含むプロセッサ・コア、およびプロセッサ・コアのオペレーションの方法において具現化される。
実行ユニット回路は、関数オペレーションおよびロード/ストア・オペレーションを含む命令のストリームを受け取る発行キューと、ロード・オペレーションおよびストア・オペレーションの有効アドレスを計算し、ロード・オペレーションおよびストア・オペレーションをキャッシュ・ユニットに発行するロード/ストア・パイプラインを含む複数の実行パイプラインと、を含む。実行ユニット回路は、ロード・オペレーションおよびストア・オペレーションに対応するエントリを格納する再循環キューと、発行キュー、ロード/ストア・パイプライン、および再循環キューを制御するための制御ロジックと、を含む。制御ロジックは、ロード/ストア・パイプラインがロード・オペレーションまたはストア・オペレーションの有効アドレスを計算した後に、ロード・オペレーションまたはストア・オペレーションの有効アドレスが再循環キューに書き込まれて、ロード・オペレーションまたはストア・オペレーションが発行キューから削除されるようにし、ロード・オペレーションまたはストア・オペレーションのうちの一方がキャッシュ・ユニットによって拒否される場合には、続いて、再循環キューからキャッシュ・ユニットに再発行されるようにオペレーションを行う。
本発明の上記および他の目的、特徴、ならびに利点は、添付の図面に示されるように、以下のより詳細な、本発明の好ましい実施形態の説明から、明らかになるであろう。
本発明に特有と考えられる新規の特徴は、添付の請求項において記載される。しかし、本発明自体だけでなく、その使用、さらなる目的、および利点、の好ましいモードも、以下の本発明の詳細な説明を、添付の図面と併せて読み、参照することにより、最良に理解されるであろう。図面において、同様の参照番号は同様の構成要素を表す。
本発明の一実施形態に係る技術が実施される、プロセシング・システムを示すブロック図である。 図1のプロセッサ・コア20A〜20Bを実装するために使用することができるプロセッサ・コア20の詳細を示すブロック図である。 プロセッサ・コア20の詳細を示すブロック図である。 プロセッサ・コア20のオペレーションを行う方法を示すフローチャートである。 図2および図3の命令実行スライスES0〜ES7を実装するために使用することができる命令実行スライス42AAの詳細を例示するブロック図である。 図2および図3のロード/ストア・スライスLS0〜LS7およびキャッシュ・スライスCS0〜CS7を実装するために使用することができる、ロード/ストア・スライス44およびキャッシュ・スライス46の詳細を示すブロック図である。
本発明の一例は、プロセッサ・コア内に含めるための実行スライスに関し、プロセッサ・コアは、ロード/ストア(LS)オペレーション・エントリを、LSオペレーションの有効アドレス(EA)が一旦計算されると再循環キューに移動させることにより、内部発行キューを管理する。LSオペレーションは、キャッシュ・ユニットに対して発行され、それらが拒否される場合は、LSオペレーションは、その後続いて、元の発行キュー・エントリからではなく再循環キューから再発行される。再循環キュー・エントリは、ロード・オペレーションのEA、ならびにストア・オペレーションのEAおよびストア値、のためのストレージを必要とするのみであるため、プロセッサ内の所与の数の保留状態のLS発行キュー・エントリに関する電力および領域の要件が低減される。対照的に、発行キュー・エントリは、一旦EAが解決されるとLSオペレーションの実行には必要ではない、オペランド、関連するアドレス、および条件フラグなどの他のフィールド、を格納する必要があるため、領域および電力の観点からコストがかかる。
ここで図1を参照すると、本発明の一実施形態に係るプロセシング・システムが示される。図示されるプロセシング・システムは、本発明の一実施形態にそれぞれが適合する、いくつかのプロセッサ10A〜10Dを含む。図示されるマルチプロセシング・システムは説明のためのものであり、本発明の他の実施形態に係るプロセシング・システムは、マルチスレッド・コアを有するユニプロセッサ・システムを含む。プロセッサ10A〜10Dは構造が同一であり、コア20A〜20B、およびローカル・ストレージ12を含み、ローカル・ストレージ12はキャッシュ・レベルであってもよいし、内部システム・メモリのレベルであってもよい。プロセッサ10A〜10Bは、メイン・システム・メモリ14と、ストレージ・サブシステム16とに接続され、ストレージ・サブシステム16は、着脱不可ドライブおよび光学式ドライブを含み、このドライブは、CD−ROM17などのメディアを読むためのものであり、このメディアは、コンピュータ・プログラム製品を形成し、少なくとも1つのオペレーティング・システム、関連するアプリケーション・プログラム、および、任意に、プロセッサ10A〜10Dによる実行のために複数のオペレーティング・システムのパーティションを制御するハイパーバイザ、を一般には実装するプログラム命令を含むものである。また、図示されるプロセシング・システムは、ユーザ入力を受け取るためのマウスおよびキーボード、ならびに情報を表示するためのグラフィック・ディスプレイなどの入出力(I/O)インターフェースおよびデバイス18を含む。図1のシステムは、本発明のプロセッサ・アーキテクチャが実装されるシステムの説明を提供するために使用されるが、図示されるアーキテクチャは、限定するものではなく、本発明の技術が適用される適切なコンピュータ・システムの一例を提供することが意図されていることが理解される。
ここで図2を参照すると、図1のプロセッサ・コア20A〜20Bを実装するために使用することができる例示のプロセッサ・コア20の詳細が示される。プロセッサ・コア20には、キャッシュまたはシステム・メモリからフェッチされる複数の命令ストリームを格納し、2つのクラスタCLAおよびCLBそれぞれのうちの複数のディスパッチ・キューDisp0〜Disp7に対してバス32を介して命令ストリームを提示する、命令キャッシュ(Iキャッシュ)54および命令バッファ(IBUF)31が含まれる。プロセッサ・コア20内の制御ロジックは、ディスパッチ・キューDisp0〜Disp7のいずれかからクラスタCLAおよびCLBのどちらかの命令実行スライスES0〜ES7のいずれかへの命令を認可するディスパッチ経路指定ネットワーク36を介した、ディスパッチ・キューDisp0〜Disp7から複数の命令実行スライスES0〜ES7への命令のディスパッチを制御するが、完全なクロスポイント経路指定、すなわち、任意のディスパッチ・キューから任意のスライスへの経路指定は、本発明の要件ではない。以下で説明されるような特定の構成において、クラスタCLA内のディスパッチ・キューDisp0〜Disp3からの命令のディスパッチは、クラスタCLA内の実行スライスES0〜ES3に制限され、同様に、クラスタCLB内のディスパッチ・キューDisp4〜Disp7からの命令のディスパッチは、実行スライスES4〜ES7に制限される。命令実行スライスES0〜ES7は、命令ストリーム内の命令の命令サイクルの実行サイクル部分を実行するための、論理的オペレーション、数学的オペレーション、および必要に応じて他のオペレーション、の順序付け(sequencing)および実行を行い、同一の汎用命令実行スライスES0〜ES7であってもよく、または、プロセッサ・コア20は、専用の実行スライスES0〜ES7を含んでもよい。暗号プロセッサ34A〜34B、浮動小数点ユニット(DFU)33A〜33B、および別個の分岐実行ユニット(BRU)35A〜35Bなどの他の専用ユニットを含んで、他のタスクを実行するために汎用実行スライスES0〜ES7を解放することもできる。命令実行スライスES0〜ES7は、複数の命令または命令の一部あるいはその両方を実行するための複数の内部パイプラインを含んでもよい。
命令実行サイクルのロード/ストア部分、(すなわち、内部レジスタの読み/書きに対立するものとして、キャッシュ一貫性を維持するために実行されるオペレーション)が、複数のロード/ストア(LS)スライスLS0〜LS7により実行され、LSは、命令実行スライスES0〜ES7と、最低次のキャッシュ・メモリのパーティションである複数のキャッシュ・スライスCS0〜CS7によって形成されるキャッシュ・メモリとの間のようなロードおよびストアのオペレーションを管理する。図示される実施形態では、キャッシュ・スライスCS0〜CS3が、パーティションCLAに対してアサインされ、キャッシュ・スライスCS4〜CS7が、パーティションCLBに対してアサインされ、ロード/ストア・スライスLS0〜LS7のそれぞれが、専用のメモリ・バス40のうちの対応する1つを介して、キャッシュ・スライスCS0〜CS7のうちの対応する1つへのアクセスを管理する。他の実施形態においては、キャッシュを固定のパーティションに分割しなくてもよく、個々のキャッシュ・スライスCS0〜CS7またはキャッシュ・スライスの全体のセットのうちのサブグループが、メモリ・バス40を共有のメモリ・バス(単数または複数)として実装することにより、ロード/ストア・スライスLS0〜LS7のうちの2つ以上に接続されてもよい。ロード/ストア・スライスLS0〜LS7は、ロード・オペレーションに応答するなど、対応するキャッシュ・スライスCS0〜CS7から結果データを戻すためのライトバック(結果)経路指定ネットワーク37により、命令実行スライスES0〜ES7に接続される。また、ライトバック経路指定ネットワーク37は、命令実行スライスES0〜ES7間のライトバック結果の通信も提供する。命令実行スライスES0〜ES7、ロード/ストア・スライスLS0〜LS7、およびキャッシュ・スライスCS0〜CS7の間のロード/ストア(LS)オペレーションの操作のさらなる詳細については、以下で図4〜図6を参照してさらに詳細に説明する。アドレス生成(AGEN)バス38およびストア・データ・バス39は、ロード/ストア・スライスLS0〜LS7に対して通信されるロードおよびストアのオペレーションのための通信を提供する。例えば、AGENバス38およびストア・データ・バス39は、ストア・オペレーションがフラッシュまたは無効化されない場合には、メモリ・バス40のうちの1つを介して、キャッシュ・スライスCS0〜CS7のうちの1つに、または、キャッシュ・スライスCS0〜CS7がI/Oバス41を介して接続されるより高次レベルのメモリ階層の場所に、最終的に書き込まれるストア・オペレーションを搬送する。キャッシュ・スライスCS0〜CS7のうちの1つを失ったロード・オペレーションは、ロード/ストア・スライスLS0〜LS7のうちの1つによって、特定のキャッシュ・スライスCS0〜CS7に対して発行された後、I/Oバス41を介して、要求された値を特定のキャッシュ・スライスCS0〜CS7にロードすることにより、または、直接キャッシュ・スライスCS0〜CS7およびメモリ・バス40を通して要求を発行したロード/ストア・スライスLS0〜LS7にロードすることにより、満たされる。図示される実施形態では、ロード/ストア・スライスLS0〜LS7のいずれかを、命令実行スライスES0〜ES7のいずれかについての命令のロード/ストア・オペレーション部分を実行するために使用することができるが、これは、本発明の要件ではない。さらに、いくつかの実施形態において、どのキャッシュ・スライスCS0〜CS7が所与のロード/ストア・オペレーションを実行するのかの判定は、ロード/ストア・オペレーションのオペランド・アドレスに基づくと共に、オペランド幅、およびキャッシュのアドレス可能バイトの各キャッシュ・スライスCS0〜CS7へのアサインにも基づき、なされてもよい。
命令実行スライスES0〜ES7は、内部命令を、複数のパイプラインに一斉に発行してもよく、例えば、命令実行スライスは、実行オペレーションとロード/ストア・オペレーションとを同時に実行してもよいし、または複数の内部パイプラインを使用して、複数の演算オペレーションもしくは論理的オペレーションを実行してもよいし、あるいはその両方でもよい。内部パイプラインは同一であってもよいし、または、浮動小数点、スカラ、ロード/ストアなど離散型であってもよい。さらに、所与の実行スライスは、ライトバック経路指定ネットワーク37への2つ以上のポート接続を有してもよく、例えば、ポート接続は、ロード/ストア・スライスLS0〜LS7へのロード/ストア接続に専用のものであってもよいし、あるいは、AGENバス38もしくはデータバス39またはその両方の機能を提供してもよく、別のポートが、特殊用途のスライスまたは他の命令実行スライスなどの他のスライスとの間の値の通信に使用されてもよい。ライトバック結果は、命令実行スライスES0〜ES7の種々の内部パイプラインから、命令実行スライスES0〜ES7をライトバック経路指定ネットワーク37に接続するライトバック・ポートにスケジュールされる。キャッシュ・スライスCS0〜CS7は、プロセッサ・コア20の内部に統合されても、またはプロセッサ・コア20の外部であってもよいI/Oバス41を介して、次に高次レベルのキャッシュまたはシステム・メモリと接続される。図示される例は、一致した数のロード/ストア・スライスLS0〜LS7と実行スライスES0〜ES7とを示すが、実際には、異なる数の各タイプのスライスを、特定の実装についてのリソースの必要性に従って提供することができる。
プロセッサ・コア20内では、命令シーケンサ・ユニット(ISU)30が、ディスパッチ経路指定ネットワーク36、ライトバック経路指定ネットワーク37、AGENバス38、およびストア・データ・バス39を制御する命令フローおよびネットワーク制御ブロック57を含む。また、ネットワーク制御ブロック57は、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7のオペレーションを、ディスパッチ・キューDisp0〜Disp7からの命令のディスパッチと調和させる。特に、命令フローおよびネットワーク制御ブロック57は、1つまたは複数のモード制御信号に従って、プロセッサ・コア20内の実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7の構成の中から選び出し、制御信号は、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7の使用を、1つまたは複数のシングルスレッド(ST)モードで単一のスレッドによって、および1つまたは複数のマルチスレッド(MT)モードで複数のスレッドによって割り当てる。複数のマルチスレッド・モードは、同時のマルチスレッド(SMT)モードであってもよい。例えば、図2に示す構成では、クラスタCLAは、SMTモードで第1のスレッド・セットを形成する1つまたは複数のハードウェア・スレッドに割り当てられて、ディスパッチ・キューDisp0〜Disp3が、第1のスレッド・セットについての命令ストリームの命令を受け取るだけであり、実行スライスES0〜ES3およびロード/ストア・スライスLS0〜LS3が、第1のスレッド・セットについてのオペレーションを実行するだけであり、キャッシュ・スライスCS0〜CS3が、第1のスレッド・セットによってアクセスされる値を含むだけである組み合わせられたキャッシュ・メモリを形成するようにしてもよい。同様に、かかるオペレーティング・モードでは、クラスタCLBが、第2のハードウェア・スレッド・セットに割り当てられ、ディスパッチ・キューDisp4〜Disp7が、第2のスレッド・セットについての命令ストリームの命令を受け取るだけであり、実行スライスES4〜ES7およびLSスライスLS4〜LS7が、第2のスレッド・セットについてのオペレーションを実行するだけであり、キャッシュ・スライスCS4〜CS7が、第2のスレッド・セットによってアクセスされる値を含むだけである。通信が、クラスタにわたって必要とされないとき、ライトバック経路指定ネットワーク37、クラスタCLA、およびクラスタCLBの一部を接続するトランシーバおよびスイッチswを無効にすることにより、ライトバック経路指定ネットワーク37をパーティションに分割することができる。ライトバック経路指定ネットワーク37の一部を分離することで、各クラスタ内により大きなスループットを提供し、ライトバック経路指定ネットワーク37の一部が、ライトバック経路指定ネットワーク37内の同じ数の配線について、実行スライスES0〜ES7およびLSスライスLS0〜LS7の結果に、別々の同時の経路を提供することができるようになる。したがって、スイッチswが開のとき、分割されたライトバック経路指定ネットワーク37上で、2倍のトランザクションをサポートすることができる。本発明の他の実施形態は、ディスパッチ・キューDisp0〜Disp7、実行スライスES0〜ES7、LSスライスLS0〜LS7、およびキャッシュ・スライスCS0〜CS7のセットを副次的に分割し、いくつかのクラスタが形成されて、各クラスタが特定のセットのハードウェア・スレッド上でオペレーションを行うようにすることができる。同様に、セット内のスレッドは、サブセットとしてさらにパーティション分割され、ディスパッチ・キューDisp0〜Disp7のうちの特定の1つ、実行スライスES0〜ES7のうちの特定の1つ、LSスライスLS0〜LS7のうちの特定の1つ、およびキャッシュ・スライスCS0〜CS7のうちの特定の1つにアサインされてもよい。しかし、パーティション分割は、上記で列挙したリソースの全てにわたって拡張する必要はない。例えば、クラスタCLAおよびCLBが、2つの異なるハードウェア・スレッド・セットにアサインされ、実行スライスES0〜ES2とLSスライスLS0〜LS1が、第1のハードウェア・スレッド・セットの第1のサブセットにアサインされ、実行スライスES3およびLSスライスLS2〜LS3が、第1のハードウェア・スレッド・セットの第2のサブセットにアサインされ、キャッシュ・スライスCS0〜CS3が、第1のハードウェア・スレッド・セット内の全てのスレッドによって共有されるとしてもよい。上記の例による特定の実施形態において、スイッチを含んで、実行スライスES0〜ES7の間で、ライトバック経路指定ネットワーク37をさらにパーティションに分割し、異なるスレッド・セットにアサインされる実行スライスES0〜ES7のサブグループ間の接続を分離させて、各サブグループ内で処理することができるトランザクションの数を増加させるようにしてもよい。上記は、図2に示されるバス接続されたスライス・アーキテクチャによって提供されるリソースのアサインメントの柔軟性の一例であり、スレッドのセットまたは個々のスレッドを、ディスパッチ・キューDisp0〜Disp7、実行スライスES0〜ES7、LSスライスLS0〜LS7、およびキャッシュ・スライスCS0〜CS7、などのリソースにマッピングするためにサポートされ得るいずれかの特定の構成に関して限定するものではない。
ここで図3を参照すると、プロセッサ・コア20のさらなる詳細が示される。プロセッサ・コア20は、分岐命令を評価する分岐実行ユニット52、およびIキャッシュ54からの命令のフェッチングを含む、命令のフェッチングを制御する命令フェッチ・ユニット(Iフェッチ)53を含む。命令シーケンサ・ユニット(ISU)30は、命令の順序付けを制御する。入力命令バッファ(IB)51は、設定される種々のスレッド、および任意のスーパースライス構成について割り当てられる実行スライス・リソースに従って、命令をマッピングするために、命令をバッファする。別の命令バッファ(Iバッファ)31は、ディスパッチ・キュー(図2および図3のDisp0〜Disp7)を維持するようにパーティションに分割され、ディスパッチ経路指定ネットワーク32は、IBUF31を、セグメント化された実行およびロード/ストア・スライス50に接続させ、スライス50はキャッシュ・スライス46に接続される。命令フローおよびネットワーク制御ブロック57は、セグメント化された実行およびロード/ストア・スライス50、キャッシュ・スライス46、およびディスパッチ経路指定ネットワーク32の制御を行い、モード制御/スレッド制御ロジック59に従って、図2および図3に示されるようなスライスを構成する。命令完了ユニット58も設けられて、ISU30により順序付けされた命令の完了をトラッキングする。また、ISU30は、セグメント化された実行およびロード/ストア・スライス50内のロード/ストア・スライスLS0〜LS7によりライトバック・オペレーションを制御するロジックを含む。電力管理ユニット56も、セグメント化された実行およびキャッシュ・スライス50内のアクティブなスライスの数を減少または増加させることによる省エネルギーのために備えてもよい。ISU30ならびに命令フローおよびネットワーク制御ブロック57は、単一のユニットとして示されるが、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7内ならびにその間のセグメント化された実行の制御は、それらスライスの中でパーティションに分割されて、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7のそれぞれが、他のスライスと通信を行いながら自らの実行フローおよび順序付けを制御することができるようにされてもよい。
ここで図4を参照すると、プロセッサ・コア20のオペレーションを行う方法が、本発明の一実施形態に従って示される。命令が、ディスパッチ経路指定ネットワーク32から、実行スライスES0〜ES7のうちの1つにおいて受け取られ(ステップ60)、命令がLS命令ではない場合、すなわち、命令がVS/FX命令である場合(判断61)、FX/VSパイプラインに対してFX/VS命令が発行される(ステップ62)。命令がLS命令である場合(判断61)、EAが計算され(ステップ63)、再循環キュー(DARQ)内に格納される(ステップ64)。命令がストア命令ではない場合(判断65)、命令がDARQ内に格納された後に、発行されたキューからエントリが削除される(ステップ67)。命令がストア命令である場合(判断65)、ストア値もDARQ内に格納され(ステップ66)、ストア命令のEAおよびストア値の両方がDARQ内に格納された後、発行されたキューからエントリが削除され(ステップ67)、命令がDARQから発行される(ステップ68)。命令が拒否される場合(判断69)、ステップ68が繰り返されて、その後続いて、拒否された命令を再発行する。命令が拒否されない場合(判断69)、DARQからエントリが削除される(ステップ70)。システムがシャットダウンされるまで(判断71)、ステップ60〜70のプロセスが繰り返される。本発明の他の実施形態に係る代替えの方法では、ステップ67は、命令の発行する試みが実行された後のみに実行するようにしてもよく、別の代替えの方法では、ステップ64および66は、命令が一度拒否された後のみに実行するようにしてもよく、他の変形が、DARQ内のエントリおよび発行キュー内のエントリの、ストレージを減少させる要件の利点をさらに提供する。
ここで図5を参照すると、図2および図3の命令実行スライスES0〜ES7を実装するために使用することができる実行スライス(ES)42AAの一例が示される。ディスパッチ・キューからの入力が、ディスパッチ経路指定ネットワーク32を介してレジスタ・アレイ70によって受け取られ、オペランドおよび命令が、発行キュー75の実行リザベーション・ステーション(ER)73のキューに入れられるようにすることができる。レジスタ・アレイ70は、独立した命令ストリームについて、または、実行スライス42AAが、SIMD命令の複数の部分を実行するスーパースライスにおいて結合される場合に、独立したレジスタ・セットを有するようにアーキテクトされ、一方、スーパースライスにおいてクローンである依存するレジスタ・セットは、スーパースライスが非SIMD命令を実行しているインスタンスについてアーキテクトされる。エイリアス・マッパ71は、ライトバック経路指定ネットワーク37を介して他のスライスと交換されるライトバック値などの任意の外部参照に対して、レジスタ・アレイ70において値をマッピングする。履歴バッファHB76は、ES42AAによって実行される命令のレジスタ・ターゲットの復元能力を提供する。レジスタを、モード制御信号に応答して、ライトバック経路指定ネットワーク37を使用してスーパースライス間でコピーまたは移動させて、スレッドのセットへのスライスのアサインメント、または、結合した様式でオペレーションを行って、他の実行スライスと一緒にスーパースライスとして実行するスライスのアサインメントを、再構成できるようにすることができる。実行スライス42AAは、別の実行スライス42BBと並んで示され、スーパースライスを形成するために図2および図3の実行スライスES0〜ES7内の実行スライスのペア間で提供され得る、実行インターロック制御を説明する。実行インターロック制御は、単一の命令ストリームの実行をサポートする実行スライス42AAと42BBとの間の調和を提供する。というのもそうでない場合には、実行スライスES0〜ES7は、その対応する命令ストリームの実行を単独で管理するからである。
実行スライス42AAは、実行スライス42AAに対応する命令ストリームについて、順序が乱れた命令の実行、および同時の命令の実行をサポートする複数の内部実行パイプライン74A〜74Cおよび72を含む。実行パイプライン74A〜74Cおよび72によって実行される命令は、ディスパッチ経路指定ネットワーク32を介して受け取られる命令の一部を実装する内部命令であってもよいし、またはディスパッチ経路指定ネットワーク32を介して直接受け取られる命令であってもよく、すなわち、命令をパイプラインすることが、命令ストリーム自身によってサポートされてもよく、または、命令の復号が、実行スライス42AAの上流において実行されてもよい。実行パイプライン72は、LS命令を実行するロード/ストア(LS)パイプラインであり、すなわち、1つまたは複数のオペランドから有効アドレス(EA)を計算する。再循環キュー(DARQ)78は、図4を参照して上記で示されたようなロジックに従って制御されるため、実行パイプライン72は、DARQ78内に格納される命令のEAを計算する必要がない。これは、DARQ78内のエントリがEAであり、ストア・オペレーションのストア値を伴うからである。上記で説明したように、一旦エントリがDARQ78内に存在すると、対応するエントリを発行キュー75から削除することができる。DARQ78は、より多くの数のエントリを有することができ、追加のFX/VSオペレーションのみならず他のLSオペレーションのための、発行キュー75内のストレージ空間を解放する。実行スライス42AAによって実行される命令のタイプに応じて、FX/VSパイプライン74A〜74Cは、設計および機能において異なっていてもよく、または、いくつかもしくは全てのパイプラインが同一であってもよい。例えば、指定のパイプラインが、アドレス計算、スカラまたはベクトル・オペレーション、浮動小数点オペレーションなどについて提供されてもよい。マルチプレクサ77A〜77Cは、履歴バッファ76への実行結果の経路指定/履歴バッファ76からの実行結果の経路指定、ならびに、ライトバック経路指定ネットワーク37、I/O経路指定ネットワーク39、およびAGEN経路指定ネットワーク38へのライトバック結果の経路指定、を提供し、これらは、スライスまたはオペレーション間で共有するための指定のデータを経路指定するため、または、ロード/ストア・スライスLS0〜LS7のうちの1つまたは複数に送られるアドレスまたはデータあるいはその両方のロードおよびストアのため、に提供されてもよい。データ、アドレス、および再循環キュー(DARQ)78は、次に消費するロード/ストア・スライスLS0〜LS7または実行スライスES0〜ES7によって速やかに受け入れられるようには保証されないロード/ストア・アドレスまたはストア・データなどの、実行結果または部分的結果を保持する。DARQ78内に格納された結果または部分的結果は、ロード/ストア・スライスLS0〜LS7のうちの1つ、または、暗号プロセッサ34A、34Bのうちの1つなどの特別な実行ユニット、などに将来のサイクルで送られる必要があり得る。DARQ78内に格納されたデータは、次に、それぞれマルチプレクサ77Bまたは77Cによって、AGENバス38またはストア・データ・バス39上に多重化されてもよい。
ここで図6を参照すると、図2のロード/ストア・スライスLS0〜LS7を実装するために使用することができるロード/ストア(LS)スライス44の一例が示される。ロード/ストア・アクセス・キュー(LSAQ)80は、AGENバス38と接続され、AGENバス38およびLSAQ80への直接接続は、キャッシュ・スライス46内のデータ・キャッシュ82のキャッシュ・ディレクトリ83にメモリ・バス40を介して入力を提供するマルチプレクサ81により、選択される。LSAQ80内のロジックは、上記で説明したように、例えば、データ・キャッシュ82内の対応する値の修正を他のオペレーションが完了するまで認可しないフラグがディレクトリ83内に設定されるときに、LSオペレーションの受け入れまたは拒否を制御する。また、マルチプレクサ81の出力は、ロード・リオーダ・キュー(LRQ:load reorder queue)87もしくはストア・リオーダ・キュー(SRQ:storereorder queue)88への、LSAQ80から、もしくはAGENバス38からの入力、または、ロード/ストア・スライス44内の図示されない他の実行設備への入力を提供する。ロード/ストア・スライス44は、ロード/ストア・オペレーションおよび他の関連するキャッシュ・オペレーションを実行する、ロード/ストア・ユニットの1つまたは複数のインスタンスを含んでもよい。LSスライス44に対して発行されたキャッシュ・オペレーションの実行をトラッキングするために、LRQ87およびSRQ88は、逐次一貫性またはプロセッサ・アーキテクチャにより必要とされるような他の属性あるいはその両方について、キャッシュ・オペレーションをトラッキングするためのエントリを含む。LSスライス44は、AGENバス38を介して実行スライスES0〜ES7のうちの1つまたは複数から、サイクル毎に複数のオペレーションを受け取ることができるようにしてもよいが、LSスライス44の制限により、アクセスの全てが所与の実行サイクルで一斉に実行可能でなくてもよい。かかる条件下で、LSAQ80は、まだ実行されないオペレーションに対応するエントリを格納する。SRQ88は、ストア・データ・バス39からストア・オペレーションのデータを受け取り、これは、計算されたストア・アドレスなどのオペレーション情報とペアにされる。オペレーションが実行されると、LSスライス44およびキャッシュ・スライス46によって形成されるロード/ストア・パイプ内で、キャッシュ・ミス、アドレス・トランザクションの失敗、キャッシュ読み/書きコンフリクト、欠損データ、または、そのようなオペレーションを実行することで遅延や再試行を伴う他の失敗、などの危険に遭遇することがある。いくつかの実施形態において、LRQ87およびSRQ88は、オペレーションを、実行用のロード/ストア・パイプライン内に再発行するように構成され、実行スライスES0〜ES7の制御およびオペレーションとは無関係にオペレーションを提供する。かかる構成により、ロード/ストア・スライスLS0〜LS7のうちの1つまたは複数が、リソースの割り当て取り消しが条件づけられたオペレーションまたはデータあるいはその両方を受け取るとすぐに、実行スライスES0〜ES7内のリソースが解放される。LSAQ80は、オペレーションが実行されるとすぐに、または、オペレーションのエントリまたはデータあるいはその両方が、一旦LRQ87またはSRQ88内に格納されると、リソースを開放してもよい。LSスライス44内の制御ロジックは、ロード/ストア・オペレーションを発行する特定の実行スライスES0〜ES7内のDARQ78と通信して、オペランド、アドレス、およびデータの受け入れを調和させる。他のロード/ストア・スライスへの接続は、AGENバス38およびライトバック経路指定ネットワーク37によって提供され、これらは、キャッシュ・スライス46のデータ・キャッシュ82からデータを受け取り、別のスライスのデータ非アライメント・ブロック84にデータを提供するために接続される。データ・フォーマッティング・ユニット85は、キャッシュ・スライス44を、バッファ86を介してライトバック経路指定ネットワーク37に接続して、ライトバック結果が、1つの実行スライスから別の実行スライスのリソースにライト・スルーされることを可能にする。キャッシュ・スライス46のデータ・キャッシュ82は、より高次のキャッシュ/システム・メモリから値をロードするために、および、データ・キャッシュ82から値をフラッシュまたはキャスト・アウトするために、I/O経路指定ネットワーク41にも接続される。本開示に与えられた例では、命令実行スライスES0〜ES7に対してディスパッチされた命令が、完全な外部命令、または、外部命令の一部、すなわち、復号された「内部命令」であり得ることが理解される。さらに、所与のサイクルで、命令実行スライスES0〜ES7のいずれかに対してディスパッチされた内部命令の数が、1より大きいことがあり、また、命令実行スライスES0〜ES7の1つ1つが、必ずしも所与のサイクルで内部命令を受け取るわけではない。
本発明が、その好ましい実施形態を参照して特に示され説明されたが、本発明の要旨および範囲から逸脱することなく、前述のもの、ならびに形式および詳細における他の変更がなされてよいことは、当業者によって理解されるであろう。

Claims (18)

  1. プロセッサ・コアのための実行ユニット回路であって、
    関数オペレーションおよびロード/ストア・オペレーションを含む命令のストリームを受け取るための発行キューと、
    ロード・オペレーションおよびストア・オペレーションの有効アドレスを計算し、前記ロード・オペレーションおよび前記ストア・オペレーションをキャッシュ・ユニットに発行するためのロード/ストア・パイプラインを含む、複数の内部実行パイプラインと、
    前記ロード・オペレーションおよび前記ストア・オペレーションに対応するエントリを格納するための再循環キューと、
    前記発行キュー、前記ロード/ストア・パイプライン、および前記再循環キューを制御する制御ロジックであって、前記ロード/ストア・パイプラインが前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスを計算した後に、前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスが前記再循環キューに書き込まれ、前記ロード・オペレーションまたは前記ストア・オペレーションが前記発行キューから削除され、続いて、拒否されたロード・オペレーションまたはストア・オペレーションが前記再循環キューから前記キャッシュ・ユニットに再発行されるようにする、前記制御ロジックと
    を備え
    前記制御ロジックは、前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスが前記再循環キューに書き込まれるのと同じプロセッサ・サイクルで、前記ロード・オペレーションまたは前記ストア・オペレーションを前記キャッシュ・ユニットに発行する、
    実行ユニット回路。
  2. 前記再循環キューが、前記ロード・オペレーションおよび前記ストア・オペレーションの前記有効アドレスと、ストア・オペレーションについては、前記ストア・オペレーションによって格納されるべき値と、のみを格納する、請求項1の実行ユニット回路。
  3. 前記制御ロジックは、前記有効アドレスが前記再循環キューに書き込まれると、前記発行キューからロード・オペレーションを削除し、前記有効アドレスおよび前記ストア・オペレーションにより格納されるべき前記値が前記再循環キューに書き込まれると、前記発行キューからストア・オペレーションを削除する、請求項2の実行ユニット回路。
  4. 前記制御ロジックは、前記有効アドレスが前記再循環キューに書き込まれると、前記発行キューからロード・オペレーションを削除し、前記制御ロジックは、前記発行キューから前記ストア・オペレーションを削除する前に、前記ストア・オペレーションおよび前記ストア・オペレーションにより格納されるべき値を前記キャッシュ・ユニットに発行する、請求項1の実行ユニット回路。
  5. 前記キャッシュ・ユニットは、前記ロード・オペレーションおよび前記ストア・オペレーションがバスを介して経路指定される複数のキャッシュ・スライスとして実装され、前記拒否されたロード・オペレーションまたはストア・オペレーションの前記再発行は、前記拒否されたロード・オペレーションまたはストア・オペレーションを以前拒否した別のキャッシュ・スライスとは異なるキャッシュ・スライスに対して向けられる、請求項1の実行ユニット回路。
  6. 前記制御ロジックは、前記再循環キューが満たされたとき、前記発行キューからのロード命令およびストア命令の発行を中止する、請求項1の実行ユニット回路。
  7. プロセッサ・コアであって、
    対応する複数の命令ストリームの命令を受け取るための複数のディスパッチ・キューと、
    前記ディスパッチ・キューの出力を命令実行スライスに経路指定するためのディスパッチ経路指定ネットワークと、
    前記ディスパッチ経路指定ネットワークを介して前記複数の命令ストリームの前記命令を複数の並列する命令実行スライスの発行キューに対してディスパッチするディスパッチ制御ロジックと、
    前記複数の命令ストリームを並列に実行するための複数の並列する命令実行スライスであって、関数オペレーションおよびロード/ストア・オペレーションを含む命令のストリームを受け取るための発行キューと、ロード・オペレーションおよびストア・オペレーションの有効アドレスを計算し前記ロード・オペレーションおよび前記ストア・オペレーションをキャッシュ・ユニットに発行するためのロード/ストア・パイプラインを含む複数の内部実行パイプラインと、前記ロード・オペレーションおよび前記ストア・オペレーションに対応するエントリを格納するための再循環キューと、前記発行キュー、前記ロード/ストア・パイプライン、および前記再循環キューを制御するキュー制御ロジックと、を含む前記命令実行スライスと、を備え、前記ロード/ストア・パイプラインが前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスを計算した後に、前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスが前記再循環キューに書き込まれ、前記ロード・オペレーションまたは前記ストア・オペレーションが前記発行キューから削除されるようにし、前記ロード・オペレーションまたは前記ストア・オペレーションのうちの1つが前記キャッシュ・ユニットによって拒否される場合には、続いて、拒否されたロード・オペレーションまたはストア・オペレーションが前記再循環キューから前記キャッシュ・ユニットに再発行されるようにする、プロセッサ・コア。
  8. 前記再循環キューが、前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスと、ストア・オペレーションについては、前記ストア・オペレーションによって格納されるべき値と、のみを格納する、請求項のプロセッサ・コア。
  9. 前記キュー制御ロジックは、前記有効アドレスが前記再循環キューに書き込まれると、前記発行キューからロード・オペレーションを削除し、前記有効アドレスおよび前記ストア・オペレーションにより格納されるべき前記値が前記再循環キューに書き込まれると、前記発行キューからストア・オペレーションを削除する、請求項のプロセッサ・コア。
  10. 前記キュー制御ロジックは、前記有効アドレスが前記再循環キューに書き込まれると、前記発行キューからロード・オペレーションを削除し、前記キュー制御ロジックは、前記発行キューから前記ストア・オペレーションを削除する前に、前記ストア・オペレーションおよび前記ストア・オペレーションにより格納されるべき値を前記キャッシュ・ユニットに発行する、請求項のプロセッサ・コア。
  11. 前記キュー制御ロジックは、前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスが前記再循環キューに書き込まれるのと同じプロセッサ・サイクルで、前記ロード・オペレーションまたは前記ストア・オペレーションを前記キャッシュ・ユニットに発行する、請求項のプロセッサ・コア。
  12. 前記ロード・オペレーションおよび前記ストア・オペレーションがバスを介して経路指定される複数のキャッシュ・スライスであって、前記キャッシュ・ユニットを実装する前記複数のキャッシュ・スライスをさらに備え、前記拒否されたロード・オペレーションまたはストア・オペレーションの前記再発行は、前記拒否されたロード・オペレーションまたはストア・オペレーションを以前拒否した別のキャッシュ・スライスとは異なるキャッシュ・スライスに対して向けられる、請求項のプロセッサ・コア。
  13. 前記キュー制御ロジックは、前記再循環キューが満たされたとき、前記発行キューからのロード命令およびストア命令の発行を中止する、請求項のプロセッサ・コア。
  14. プロセッサ・コア内のプログラム命令を実行する方法であって、
    発行キューにおいて、関数オペレーションおよびロード/ストア・オペレーションを含む命令のストリームを受け取るステップと、
    ロード・オペレーションおよびストア・オペレーションの有効アドレスを計算するステップと、
    前記ロード・オペレーションおよび前記ストア・オペレーションをキャッシュ・ユニットに発行するステップと、
    再循環キューにおいて、前記ロード・オペレーションおよび前記ストア・オペレーションに対応するエントリを格納するステップと、
    前記ロード・オペレーションおよび前記ストア・オペレーションを前記発行キューから削除するステップと、
    続いて、前記ロード・オペレーションまたは前記ストア・オペレーションのうちの1つが前記キャッシュ・ユニットによって拒否される場合には、前記ロード・オペレーションまたは前記ストア・オペレーションのうちの前記1つを前記再循環キューから前記キャッシュ・ユニットに再発行するステップと
    を含み、
    前記発行するステップは、エントリを格納する前記ステップが前記再循環キューに前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスを格納するのと同じプロセッサ・サイクルで、前記ロード・オペレーションまたは前記ストア・オペレーションを前記キャッシュ・ユニットに発行する、
    方法。
  15. エントリを格納する前記ステップが、前記ロード・オペレーションまたは前記ストア・オペレーションの前記有効アドレスと、ストア・オペレーションについては、前記ストア・オペレーションによって格納されるべき値と、のみを格納する、請求項1の方法。
  16. 前記有効アドレスが前記再循環キューに書き込まれると、前記発行キューからロード・オペレーションを削除するステップと、
    前記有効アドレスおよび前記ストア・オペレーションにより格納されるべき前記値が前記再循環キューに書き込まれると、前記発行キューからストア・オペレーションを削除するステップと
    をさらに含む、請求項1の方法。
  17. 前記有効アドレスが前記再循環キューに書き込まれると、前記発行キューからロード・オペレーションを削除するステップと、
    前記発行キューから前記ストア・オペレーションを削除する前に、前記ストア・オペレーションおよび前記ストア・オペレーションにより格納されるべき値を前記キャッシュ・ユニットに発行するステップと
    をさらに含む、請求項1の方法。
  18. 前記キャッシュ・ユニットは、前記ロード・オペレーションおよび前記ストア・オペレーションがバスを介して経路指定され得る複数のキャッシュ・スライスとして実装され、前記ロード・オペレーションまたは前記ストア・オペレーションを再発行する前記ステップは、前記ロード・オペレーションまたは前記ストア・オペレーションを以前拒否した別のキャッシュ・スライスとは異なるキャッシュ・スライスに対して向けられる、請求項1の方法。
JP2017530696A 2015-01-13 2015-12-29 プロセッサ・コアのための実行ユニット回路、プロセッサ・コア、およびプロセッサ・コア内のプログラム命令を実行する方法 Active JP6628801B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/595,635 US10133576B2 (en) 2015-01-13 2015-01-13 Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US14/595,635 2015-01-13
US14/724,268 US20160202988A1 (en) 2015-01-13 2015-05-28 Parallel slice processing method using a recirculating load-store queue for fast deallocation of issue queue entries
US14/724,268 2015-05-28
PCT/EP2015/081330 WO2016113105A1 (en) 2015-01-13 2015-12-29 Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries

Publications (2)

Publication Number Publication Date
JP2018501564A JP2018501564A (ja) 2018-01-18
JP6628801B2 true JP6628801B2 (ja) 2020-01-15

Family

ID=56367638

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017530696A Active JP6628801B2 (ja) 2015-01-13 2015-12-29 プロセッサ・コアのための実行ユニット回路、プロセッサ・コア、およびプロセッサ・コア内のプログラム命令を実行する方法

Country Status (5)

Country Link
US (5) US10133576B2 (ja)
JP (1) JP6628801B2 (ja)
DE (1) DE112015004983T5 (ja)
GB (1) GB2549907B (ja)
WO (1) WO2016113105A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US20170364356A1 (en) * 2016-06-16 2017-12-21 International Business Machines Corporation Techniques for implementing store instructions in a multi-slice processor architecture
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11086628B2 (en) 2016-08-15 2021-08-10 Advanced Micro Devices, Inc. System and method for load and store queue allocations at address generation time
US10481915B2 (en) 2017-09-20 2019-11-19 International Business Machines Corporation Split store data queue design for an out-of-order processor
US10572256B2 (en) 2017-10-06 2020-02-25 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10417002B2 (en) 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10579387B2 (en) 2017-10-06 2020-03-03 International Business Machines Corporation Efficient store-forwarding with partitioned FIFO store-reorder queue in out-of-order processor
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10564979B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries in an out-of-order processor
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
US10572264B2 (en) 2017-11-30 2020-02-25 International Business Machines Corporation Completing coalesced global completion table entries in an out-of-order processor
US10929140B2 (en) 2017-11-30 2021-02-23 International Business Machines Corporation Scalable dependency matrix with a single summary bit in an out-of-order processor
US10884753B2 (en) 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10942747B2 (en) 2017-11-30 2021-03-09 International Business Machines Corporation Head and tail pointer manipulation in a first-in-first-out issue queue
US10564976B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Scalable dependency matrix with multiple summary bits in an out-of-order processor
US10802829B2 (en) 2017-11-30 2020-10-13 International Business Machines Corporation Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor
US10915327B2 (en) * 2018-12-14 2021-02-09 Arm Limited Apparatus and method of dispatching instructions for execution clusters based on dependencies
US12099845B2 (en) 2022-06-16 2024-09-24 International Business Machines Corporation Load reissuing using an alternate issue queue

Family Cites Families (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095424A (en) 1986-10-17 1992-03-10 Amdahl Corporation Computer system architecture implementing split instruction and operand cache line-pair-state management
US4858113A (en) 1987-04-10 1989-08-15 The United States Of America As Represented By The Director Of The National Security Agency Reconfigurable pipelined processor
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
JPH0374721A (ja) 1989-08-16 1991-03-29 Hitachi Ltd ディジタル処理装置
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CA2073516A1 (en) 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
US5553305A (en) 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US6138230A (en) 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US6073231A (en) 1993-10-18 2000-06-06 Via-Cyrix, Inc. Pipelined processor with microcontrol of register translation hardware
JP2812189B2 (ja) 1994-02-10 1998-10-22 日本電気株式会社 プログラムダウンロード方法
US5680597A (en) 1995-01-26 1997-10-21 International Business Machines Corporation System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US6356918B1 (en) 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5822602A (en) 1996-07-23 1998-10-13 S3 Incorporated Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
US5996068A (en) 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US6026478A (en) 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6487578B2 (en) 1997-09-29 2002-11-26 Intel Corporation Dynamic feedback costing to enable adaptive control of resource utilization
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6044448A (en) 1997-12-16 2000-03-28 S3 Incorporated Processor having multiple datapath instances
US6145054A (en) * 1998-01-21 2000-11-07 Sun Microsystems, Inc. Apparatus and method for handling multiple mergeable misses in a non-blocking cache
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
JP3448481B2 (ja) 1998-03-05 2003-09-22 Kddi株式会社 非対称回線用tcp通信高速化装置
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6205519B1 (en) 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
JP3786521B2 (ja) 1998-07-01 2006-06-14 株式会社日立製作所 半導体集積回路及びデータ処理システム
US6119203A (en) * 1998-08-03 2000-09-12 Motorola, Inc. Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system
US6073215A (en) * 1998-08-03 2000-06-06 Motorola, Inc. Data processing system having a data prefetch mechanism and method therefor
ATE467171T1 (de) 1998-08-24 2010-05-15 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6219780B1 (en) 1998-10-27 2001-04-17 International Business Machines Corporation Circuit arrangement and method of dispatching instructions to multiple execution units
US6286027B1 (en) 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
US6237081B1 (en) * 1998-12-16 2001-05-22 International Business Machines Corporation Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor
DE60001776T2 (de) 1999-01-27 2004-02-05 Citizen Watch Co., Ltd. Einkapselungsverfahren einer halbleiteranordnung mit einem anisotropisch leitenden klebstoff
US6738896B1 (en) * 1999-02-01 2004-05-18 Hewlett-Packard Development Company, L.P. Method and apparatus for determining availability of a queue which allows random insertion
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
US6463524B1 (en) 1999-08-26 2002-10-08 International Business Machines Corporation Superscalar processor and method for incrementally issuing store instructions
US7512724B1 (en) 1999-11-19 2009-03-31 The United States Of America As Represented By The Secretary Of The Navy Multi-thread peripheral processing using dedicated peripheral bus
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6564315B1 (en) * 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US20020194251A1 (en) 2000-03-03 2002-12-19 Richter Roger K. Systems and methods for resource usage accounting in information management environments
US7124160B2 (en) 2000-03-08 2006-10-17 Sun Microsystems, Inc. Processing architecture having parallel arithmetic capability
WO2001067234A2 (en) 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files
US6965991B1 (en) 2000-05-12 2005-11-15 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
US7836317B2 (en) 2000-05-12 2010-11-16 Altera Corp. Methods and apparatus for power control in a scalable array of processor elements
US7086053B2 (en) 2000-06-12 2006-08-01 Sun Microsystems, Inc. Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
US6725358B1 (en) * 2000-06-22 2004-04-20 International Business Machines Corporation Processor and method having a load reorder queue that supports reservations
US6868491B1 (en) * 2000-06-22 2005-03-15 International Business Machines Corporation Processor and method of executing load instructions out-of-order having reduced hazard penalty
US7100028B2 (en) 2000-08-09 2006-08-29 Advanced Micro Devices, Inc. Multiple entry points for system call instructions
US6728866B1 (en) 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US6732236B2 (en) * 2000-12-18 2004-05-04 Redback Networks Inc. Cache retry request queue
US6880073B2 (en) * 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations
US20020165999A1 (en) 2001-03-07 2002-11-07 Ajile Systems, Inc. Apparatus and method for interfacing hardware events with software events
US6978459B1 (en) 2001-04-13 2005-12-20 The United States Of America As Represented By The Secretary Of The Navy System and method for processing overlapping tasks in a programmable network processor environment
US6948051B2 (en) 2001-05-15 2005-09-20 International Business Machines Corporation Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width
US6954846B2 (en) 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US6839828B2 (en) 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US20030120882A1 (en) 2001-12-20 2003-06-26 Granston Elana D. Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US7251594B2 (en) 2001-12-21 2007-07-31 Hitachi, Ltd. Execution time modification of instruction emulation parameters
WO2003065214A1 (en) 2002-01-30 2003-08-07 Real Enterprise Solutions Development B.V. Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
US7398374B2 (en) 2002-02-27 2008-07-08 Hewlett-Packard Development Company, L.P. Multi-cluster processor for processing instructions of one or more instruction threads
US6944744B2 (en) 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7024543B2 (en) 2002-09-13 2006-04-04 Arm Limited Synchronising pipelines in a data processing apparatus
SG111972A1 (en) 2002-10-17 2005-06-29 Agency Science Tech & Res Wafer-level package for micro-electro-mechanical systems
US20040136241A1 (en) 2002-10-31 2004-07-15 Lockheed Martin Corporation Pipeline accelerator for improved computing architecture and related system and method
US7600096B2 (en) 2002-11-19 2009-10-06 Stmicroelectronics, Inc. Coprocessor extension architecture built using a novel split-instruction transaction model
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
JP2006512655A (ja) 2002-12-30 2006-04-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ クラスタ化ilpプロセッサおよびクラスタ化ilpプロセッサにおけるバスにアクセスする方法
US7191320B2 (en) 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
US20040216101A1 (en) 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7155600B2 (en) 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7290261B2 (en) 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US20050138290A1 (en) * 2003-12-23 2005-06-23 Intel Corporation System and method for instruction rescheduling
US7669035B2 (en) 2004-01-21 2010-02-23 The Charles Stark Draper Laboratory, Inc. Systems and methods for reconfigurable computing
US7395419B1 (en) 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture
US7617496B2 (en) 2004-04-23 2009-11-10 Apple Inc. Macroscalar processor architecture
US7730456B2 (en) 2004-05-19 2010-06-01 Sony Computer Entertainment Inc. Methods and apparatus for handling processing errors in a multi-processing system
US7478198B2 (en) 2004-05-24 2009-01-13 Intel Corporation Multithreaded clustered microarchitecture with dynamic back-end assignment
JP2008502083A (ja) 2004-06-08 2008-01-24 ユニバーシティー オブ ロチェスター クラスタ化されたプロセッサ群における通信並列性のトレードオフを動的に管理する方法
US7478225B1 (en) * 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7721069B2 (en) 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US8166282B2 (en) 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7890735B2 (en) 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7237094B2 (en) 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US7302527B2 (en) * 2004-11-12 2007-11-27 International Business Machines Corporation Systems and methods for executing load instructions that avoid order violations
US7469318B2 (en) * 2005-02-10 2008-12-23 International Business Machines Corporation System bus structure for large L2 cache array topology with different latency domains
EP1883045A4 (en) 2005-05-20 2016-10-05 Sony Corp SIGNAL PROCESSOR
US20070022277A1 (en) * 2005-07-20 2007-01-25 Kenji Iwamura Method and system for an enhanced microprocessor
US20070028078A1 (en) * 2005-07-26 2007-02-01 Arm Limited Instruction queues in pipelined processors
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
WO2007031696A1 (en) * 2005-09-13 2007-03-22 Arm Limited Cache miss detection in a data processing apparatus
US7793278B2 (en) 2005-09-30 2010-09-07 Intel Corporation Systems and methods for affine-partitioning programs onto multiple processing units
US8074224B1 (en) 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
US7506132B2 (en) 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations
EP1990713B1 (en) 2006-02-28 2013-04-10 Fujitsu Ltd. Branch predicting device for computer
US7590825B2 (en) * 2006-03-07 2009-09-15 Intel Corporation Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
US20070226471A1 (en) 2006-03-13 2007-09-27 Arm Limited Data processing apparatus
JP2008123045A (ja) 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
CN201021778Y (zh) 2007-02-07 2008-02-13 株洲湘火炬汽车灯具有限责任公司 一种汽车前照灯
CN100456230C (zh) 2007-03-19 2009-01-28 中国人民解放军国防科学技术大学 超长指令字与单指令流多数据流融合的计算群单元
US7707390B2 (en) 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
US8464024B2 (en) 2007-04-27 2013-06-11 Hewlett-Packard Development Company, L.P. Virtual address hashing
US8555039B2 (en) 2007-05-03 2013-10-08 Qualcomm Incorporated System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
US8046566B2 (en) 2007-05-14 2011-10-25 International Business Machines Corporation Method to reduce power consumption of a register file with multi SMT support
US9250899B2 (en) 2007-06-13 2016-02-02 International Business Machines Corporation Method and apparatus for spatial register partitioning with a multi-bit cell register file
US7669036B2 (en) 2007-06-14 2010-02-23 Qualcomm Incorporated Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication
US7865769B2 (en) 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
JP4913685B2 (ja) 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
US7979677B2 (en) 2007-08-03 2011-07-12 International Business Machines Corporation Adaptive allocation of reservation station entries to an instruction set with variable operands in a microprocessor
JP2009064966A (ja) 2007-09-06 2009-03-26 Shinko Electric Ind Co Ltd 多層配線基板及びその製造方法ならびに半導体装置
US20090113182A1 (en) * 2007-10-24 2009-04-30 Abernathy Christopher M System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit
US20090172370A1 (en) 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Eager execution in a processing pipeline having multiple integer execution units
US7694112B2 (en) 2008-01-31 2010-04-06 International Business Machines Corporation Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation
US7844807B2 (en) * 2008-02-01 2010-11-30 International Business Machines Corporation Branch target address cache storing direct predictions
US8732438B2 (en) * 2008-04-16 2014-05-20 Oracle America, Inc. Anti-prefetch instruction
US8001331B2 (en) * 2008-04-17 2011-08-16 Arm Limited Efficiency of cache memory operations
US8078833B2 (en) 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8135942B2 (en) 2008-08-28 2012-03-13 International Business Machines Corpration System and method for double-issue instructions using a dependency matrix and a side issue queue
US8135941B2 (en) 2008-09-19 2012-03-13 International Business Machines Corporation Vector morphing mechanism for multiple processor cores
JP5300407B2 (ja) 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
US8041928B2 (en) 2008-12-22 2011-10-18 International Business Machines Corporation Information handling system with real and virtual load/store instruction issue queue
US8103852B2 (en) 2008-12-22 2012-01-24 International Business Machines Corporation Information handling system including a processor with a bifurcated issue queue
US8140832B2 (en) 2009-01-23 2012-03-20 International Business Machines Corporation Single step mode in a software pipeline within a highly threaded network on a chip microprocessor
US8271765B2 (en) * 2009-04-08 2012-09-18 International Business Machines Corporation Managing instructions for more efficient load/store unit usage
US8489792B2 (en) 2010-03-12 2013-07-16 Lsi Corporation Transaction performance monitoring in a processor bus bridge
US8700877B2 (en) 2009-09-25 2014-04-15 Nvidia Corporation Address mapping for a parallel thread processor
US8335892B1 (en) 2009-09-28 2012-12-18 Nvidia Corporation Cache arbitration between multiple clients
CN101710272B (zh) 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
CN101706714B (zh) 2009-11-23 2014-03-26 龙芯中科技术有限公司 指令发射系统及方法、处理器及其设计方法
US20110161616A1 (en) 2009-12-29 2011-06-30 Nvidia Corporation On demand register allocation and deallocation for a multithreaded processor
CN102122275A (zh) 2010-01-08 2011-07-13 上海芯豪微电子有限公司 一种可配置处理器
US8984264B2 (en) * 2010-01-15 2015-03-17 Oracle America, Inc. Precise data return handling in speculative processors
US8418187B2 (en) 2010-03-01 2013-04-09 Arm Limited Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
CN101876892B (zh) 2010-05-20 2013-07-31 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
US8713263B2 (en) 2010-11-01 2014-04-29 Advanced Micro Devices, Inc. Out-of-order load/store queue structure
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
CN102004719B (zh) 2010-11-16 2015-05-20 清华大学 支持同时多线程的超长指令字处理器结构
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US8656401B2 (en) 2011-05-13 2014-02-18 Advanced Micro Devices, Inc. Method and apparatus for prioritizing processor scheduler queue operations
GB2493209B (en) 2011-07-29 2016-02-17 Canon Kk Method and device for parallel decoding of scalable bitstream elements
US20130054939A1 (en) 2011-08-26 2013-02-28 Cognitive Electronics, Inc. Integrated circuit having a hard core and a soft core
US8850121B1 (en) * 2011-09-30 2014-09-30 Applied Micro Circuits Corporation Outstanding load miss buffer with shared entries
US8966232B2 (en) * 2012-02-10 2015-02-24 Freescale Semiconductor, Inc. Data processing system operable in single and multi-thread modes and having multiple caches and method of operation
US9223709B1 (en) 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US9262174B2 (en) 2012-04-05 2016-02-16 Nvidia Corporation Dynamic bank mode addressing for memory access
CN104583957B (zh) * 2012-06-15 2018-08-10 英特尔公司 具有无消歧乱序加载存储队列的重新排序的推测性指令序列
KR101818967B1 (ko) * 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
DE102012222344A1 (de) 2012-12-05 2014-06-05 Fidlock Gmbh Verschlussvorrichtung zum Verbinden zweier Teile
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
US9323739B2 (en) 2013-02-26 2016-04-26 Lenovo (Singapore) Pte. Ltd. Identifying words for a context
US9817667B2 (en) 2013-05-23 2017-11-14 Advanced Micro Devices, Inc. Techniques for scheduling operations at an instruction pipeline
US9417879B2 (en) 2013-06-21 2016-08-16 Intel Corporation Systems and methods for managing reconfigurable processor cores
US9639369B2 (en) 2013-11-11 2017-05-02 Apple Inc. Split register file for operands of different sizes
US9448936B2 (en) * 2014-01-13 2016-09-20 Apple Inc. Concurrent store and load operations
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9898409B2 (en) * 2014-10-09 2018-02-20 The Regents Of The University Of Michigan Issue control for multithreaded processing
US10209995B2 (en) * 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions
US9519484B1 (en) 2014-11-02 2016-12-13 Netronome Systems, Inc. Picoengine instruction that controls an intelligent packet data register file prefetch function
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US20170364356A1 (en) * 2016-06-16 2017-12-21 International Business Machines Corporation Techniques for implementing store instructions in a multi-slice processor architecture
US10318419B2 (en) * 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10223266B2 (en) * 2016-11-30 2019-03-05 International Business Machines Corporation Extended store forwarding for store misses without cache allocate
US11223520B1 (en) * 2017-01-31 2022-01-11 Intel Corporation Remote control plane directing data plane configurator
US10901744B2 (en) * 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue

Also Published As

Publication number Publication date
US20180336036A1 (en) 2018-11-22
US12061909B2 (en) 2024-08-13
GB2549907B (en) 2021-08-11
DE112015004983T5 (de) 2017-09-07
US10133576B2 (en) 2018-11-20
US20160202988A1 (en) 2016-07-14
GB2549907A (en) 2017-11-01
US20230273793A1 (en) 2023-08-31
US11150907B2 (en) 2021-10-19
GB201712270D0 (en) 2017-09-13
US11734010B2 (en) 2023-08-22
WO2016113105A1 (en) 2016-07-21
US20210406023A1 (en) 2021-12-30
JP2018501564A (ja) 2018-01-18
US20160202986A1 (en) 2016-07-14

Similar Documents

Publication Publication Date Title
JP6628801B2 (ja) プロセッサ・コアのための実行ユニット回路、プロセッサ・コア、およびプロセッサ・コア内のプログラム命令を実行する方法
US10983800B2 (en) Reconfigurable processor with load-store slices supporting reorder and controlling access to cache slices
US10223125B2 (en) Linkable issue queue parallel execution slice processing method
JP6674384B2 (ja) 動的な命令ストリーム・マッピングを使用するプロセッサ・コア、プロセッサ・コアを含むコンピュータ・システム、およびプロセッサ・コアによってプログラム命令を実行する方法(動的な命令ストリーム・マッピングを使用する並列スライス・プロセッサ)
US9798548B2 (en) Methods and apparatus for scheduling instructions using pre-decode data
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
JP5698445B2 (ja) 多重プロセッサ・コア・ベクトル・モーフ結合機構
KR101638225B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
KR101636602B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
KR101620676B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
US20130166882A1 (en) Methods and apparatus for scheduling instructions without instruction decode
TW201337767A (zh) 多頻時間切面組

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190821

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191203

R150 Certificate of patent or registration of utility model

Ref document number: 6628801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150