JP2010073197A - 多重プロセッサ・コア・ベクトル・モーフ結合機構 - Google Patents

多重プロセッサ・コア・ベクトル・モーフ結合機構 Download PDF

Info

Publication number
JP2010073197A
JP2010073197A JP2009176387A JP2009176387A JP2010073197A JP 2010073197 A JP2010073197 A JP 2010073197A JP 2009176387 A JP2009176387 A JP 2009176387A JP 2009176387 A JP2009176387 A JP 2009176387A JP 2010073197 A JP2010073197 A JP 2010073197A
Authority
JP
Japan
Prior art keywords
processor
instructions
instruction
execution
issue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009176387A
Other languages
English (en)
Other versions
JP5698445B2 (ja
Inventor
David A Luick
デヴィッド・エー・ルイック
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 JP2010073197A publication Critical patent/JP2010073197A/ja
Application granted granted Critical
Publication of JP5698445B2 publication Critical patent/JP5698445B2/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

【課題】ストールを低減することができる、ベクトル命令を実行するための装置を提供する。
【解決手段】プロセッサは、多数の命令の発行グループを実行するための複数のパイプライン実行ユニット(P0、P1、P2、P3)を有する第1および第2のプロセッサ・コア114と、スケジューリング論理とを有する。スケジューリング論理は、プロセッサが第1の動作モードにある場合、第1の命令発行グループを第1のプロセッサ・コア114に発行して実行させ、第2の命令発行グループを第2のプロセッサ・コア114に発行して実行させる。プロセッサが第2の動作モードにある場合、第1および第2のプロセッサ・コア114に1つ以上のベクトル命令を発行して、同時に実行させる。
【選択図】図3

Description

本発明は、一般に、パイプライン・プロセッサ(pipelined processor)に関し、更に具体的には、相互に遅延させたカスケード構成(cascaded arrangement)の実行ユニットを利用するプロセッサに関する。
コンピュータ・システムは通常、いくつかの集積回路(IC)を内蔵する。集積回路には、このコンピュータ・システムにおいて情報を処理するために用いられる1つ以上のプロセッサが含まれる。最新のプロセッサは、多くの場合、パイプライン方式で命令の処理を行い、各命令を一連のステップとして実行する。各ステップは通常、パイプライン内の異なる段(ハードウェア回路)によって実行され、各パイプライン段が所与のクロック・サイクルでパイプライン内の異なる命令に対してそのステップを実行する。この結果、パイプラインがいっぱいにロードされると、各クロック・サイクルで命令が処理され、これによってスループットが増大する。
簡単な例として、パイプラインは3つの段を含む場合がある。すなわち、ロード(メモリから命令を読み取る)、実行(命令を実行する)、および記憶(結果を記憶する)である。第1のクロック・サイクルにおいて、第1の命令がパイプラインのロード段に入る。第2のクロック・サイクルにおいて、第1の命令が実行段に移動し、ロード段が解放されて、第2の命令をロードする。第3のクロック・サイクルにおいて、第1の命令の実行結果を記憶段によって記憶することができ、一方では第2の命令を実行し第3の命令をロードする。
しかしながら、通常の命令ストリームに固有の依存性のため、従来の命令パイプラインでは、ある命令を実行するための実行ユニットが先行する命令の実行によって発生する結果を待っている間、ストールする(パイプライン段が実行しない)。一例として、ロード命令は、先行する命令に依存して(例えば別のロード命令またはベース・アドレスに対するオフセットの追加)、ロードするデータのアドレスを供給する場合がある。別の例として、積算命令は、そのオペランドの1つについて、1つ以上の先行するロード命令の結果に依存することがある。いずれの場合であっても、従来の命令パイプラインは、先行する命令の結果が利用可能となるまでストールする。ストールは、数クロック・サイクルに及ぶことがある。これは例えば、先行する命令(これに以降の命令が依存する)のターゲットであるデータがL1キャッシュに常駐しておらず(結果としてL1「キャッシュ・ミス」が生じる)、比較的遅いL2キャッシュにアクセスしなければならない場合である。この結果、パイプラインを充分に活用できないため、かかるストールによって著しく性能が低下する恐れがある。
従って、好ましくはストールを低減するパイプライン命令処理機構の改良が必要とされている。
本発明の実施形態は、ベクトル命令を実行するための装置を提供する。
本発明の一実施形態は、プロセッサを提供する。このプロセッサは、概して、第1および第2のプロセッサ・コアであって、各々が多数の命令の発行グループを実行するための複数のパイプライン実行ユニットを有するプロセッサ・コアと、プロセッサが第1の動作モードにある場合、第1の命令発行グループを実行のために第1のプロセッサ・コアに発行し、第2の命令発行グループを実行のために第2のプロセッサ・コアに発行するように構成され、プロセッサが第2の動作モードにある場合、第1および第2のプロセッサ・コア上で同時に実行するために1つ以上のベクトル命令を発行するように構成された、スケジューリング論理と、を含む。
本発明の別の実施形態は、コンピューティング・システムを提供する。このコンピューティング・システムは、概して、第1および第2のプロセッサであって、各々が1つ以上のベクトル命令を実行するための複数のプロセッサ・コアを有するプロセッサと、コンピューティング・システムが第1の動作モードにある場合、1つ以上のベクトル命令を実行のために第1のプロセッサに発行し、1つ以上のベクトル命令を実行のために第2のプロセッサに発行するように構成され、コンピューティング・システムが第2の動作モードにある場合、ベクトル命令の発行グループを実行のために第1および第2のプロセッサに発行するように構成された、スケジューリング論理と、を含む。
本発明の上述の機構、利点、および目的を達成し、詳細に理解することができるように、添付図面に示した実施形態を参照することによって、上に簡潔にまとめた本発明のいっそう具体的な説明を行うことができる。
しかしながら、添付図面は、本発明の典型的な実施形態を例示するだけであり、従って、その範囲の限定として見なされないことに留意すべきである。本発明は、他の等しく有効な実施形態を許容することができるからである。
本発明の一実施形態に従ったシステムを示すブロック図である。 本発明の一実施形態に従ったコンピュータ・プロセッサを示すブロック図である。 本発明の一実施形態に従ったプロセッサのコアの1つを示すブロック図である。 従来のパイプライン・ユニットの性能を本発明の実施形態に従ったパイプライン・ユニットと比較した図である。 従来のパイプライン・ユニットの性能を本発明の実施形態に従ったパイプライン・ユニットと比較した図である。 本発明の実施形態に従って命令をスケジューリングおよび発行するための例示的な動作のフロー図である。 本発明の実施形態に従った例示的な整数カスケード遅延実行パイプライン・ユニットを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 本発明の実施形態に従った例示的な浮動小数点カスケード遅延実行パイプライン・ユニットを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 図7に示したパイプライン・ユニットを通る命令のフローを示す。 本発明の実施形態に従った例示的なベクトル・カスケード遅延実行パイプライン・ユニットを示す。 異なるアプリケーションに対して異なって見えるようにプロセッサの物理コアをモーフィングする(morph)例を示す。 本発明の実施形態に従って単一のユニットとして見えるようにモーフィングされた例示的なカスケード遅延実行パイプライン・ユニットを示す。 本発明の実施形態に従って単一のユニットとして見えるようにモーフィングされた例示的なカスケード遅延実行パイプライン・ユニットを示す。 異なるアプリケーションに対して異なって見えるようにプロセッサの物理コアをモーフィングする別の例を示す。 異なるアプリケーションに対して異なって見えるようにプロセッサの物理コアをモーフィングする別の例を示す。 本発明の一実施形態に従った例示的な物理的レイアウト(「フロアプラン」)を示す。 本発明の一実施形態に従った別の例示的なフロアプランを示す。 ベクトル処理のための物理コアのモーフィングの例を示す。 ベクトル処理のための物理コアのモーフィングの別の例を示す。 本発明の一実施形態に従ったマルチ・チップ・パッケージ(MCP)を示す。 共にモーフィングされた多数のCPUを示す。 様々なCPU間で適切なタイミングを維持する際に使用可能な論理を示す。
本発明は、概して、依存性の命令を実行する際に発生するストールを低減することができる、パイプライン方式で命令を実行するための改良された技法を提供する。相互に遅延させた実行ユニットを有するカスケード構成のパイプラインを利用することによって、ストールを低減させることができる。このカスケード遅延構成により、異なる時点で実行する異なるパイプラインにおいて実行するように依存性の命令をスケジューリングすることによって、それらの命令を共通の発行グループ内で発行することができる。
一例として、第1の命令を第1の「早い」すなわち「遅延の小さい」パイプライン上で実行するようにスケジューリングすることができ、第2の命令(第1の命令を実行することで得られる結果に依存する)を第2の「遅い」すなわち「遅延の大きい」パイプライン上で実行するようにスケジューリングすることができる。第1の命令に対して遅延させたパイプラインで第2の命令を実行するようにスケジューリングすることによって、第2の命令を実行する際にちょうど間に合うように、第1の命令の結果を利用可能とすることができる。第1の命令の結果が利用可能となるまで第2の命令の実行は遅延されるが、以降の発行グループは次のサイクルでカスケード・パイプラインに入ることができるので、スループットが増大する。換言すると、かかる遅延は第1の発行グループ上で「見られる」だけで、以降の発行グループにとっては「隠されている」ので、各パイプライン・サイクルで異なる発行グループ(依存性の命令を有するものであっても)を発行することができる。
以下で、本発明の実施形態を参照する。しかしながら、本発明は特定の記載する実施形態に限定されないことは理解されよう。以下の機構および要素のいずれの組み合わせも、異なる実施形態に関わるものであろうとなかろうと、本発明を実施し実行すると想定される。更に、様々な実施形態において、本発明は従来技術よりも優れた多くの利点を提供する。しかしながら、本発明の実施形態は他の可能な解決策または従来技術あるいはその両方よりも優れた利点を達成することができるが、所与の実施形態によって特定の利点が達成されるか否かは、本発明の限定ではない。従って、以下の態様、機構、実施形態、および利点は、単に例示に過ぎず、請求項(複数の請求項)において明示的に述べられた場合を除いて、特許請求の範囲の要素または限定として見なされない。同様に、「本発明」に対する言及は、本明細書に開示するいずれかの発明の主題の一般化として解釈されるものではなく、請求項(複数の請求項)において明示的に述べられた場合を除いて、特許請求の範囲の要素または限定として見なされるものではない。
以下は、添付図面に示した本発明の実施形態の詳細な説明である。実施形態は一例であり、本発明を明確に伝達するように詳細に記載する。しかしながら、記載する詳細の程度は予想される実施形態の変形を限定することを意図しておらず、逆に、本発明は、特許請求の範囲によって規定されるような本発明の精神および範囲内に該当する全ての変更、均等物、および代替物を包含する。
本発明の実施形態は、例えばコンピュータ・システムのようなシステムと共に用い、そういったシステムに関連付けて以下に説明することができる。本発明において用いる場合、システムとは、プロセッサおよびキャッシュ・メモリを利用するいかなるシステムも含むことができ、パーソナル・コンピュータ、インターネット機器、デジタル媒体機器、携帯情報機器(PDA:portable digital assistant)、携帯音楽/ビデオ・プレーヤ、およびビデオ・ゲーム・コンソールが含まれる。キャッシュ・メモリは、このキャッシュ・メモリを利用するプロセッサと同じダイ上に配置することができるが、場合によっては、プロセッサおよびキャッシュ・メモリは異なるダイ上に配置されることもある(例えば別個のモジュール内の別個のチップまたは単一のモジュール上の別個のチップ)。
例示的なシステムの概要
図1は、本発明の一実施形態によるシステム100を示すブロック図である。システム100は、命令およびデータを記憶するためのシステム・メモリ102と、グラフィック処理のためのグラフィック処理ユニット104と、外部デバイスと通信を行うためのI/Oインタフェースと、命令およびデータの長期記憶のための記憶デバイス108と、命令およびデータを処理するためのプロセッサ110と、を含むことができる。
本発明の一実施形態によれば、プロセッサ110は、多数のL1キャッシュ116と共にL2キャッシュ112を有することができる。各L1キャッシュ116は、多数のプロセッサ・コア114の1つによって用いられる。一実施形態によれば、各プロセッサ・コア114はパイプライン化することができ、この場合、各命令は一連の小さいステップで実行され、各ステップは異なるパイプライン段によって実行される。
図2は、本発明の一実施形態に従ったプロセッサ110を示すブロック図である。簡略化のため、図2は、プロセッサ110の単一のコア114を示し、これに関連付けて説明する。一実施形態において、各コア114は同一とすることができる(例えば同一のパイプラインを含み、同一構成のパイプライン段を有する)。他の実施形態では、コア114は異なるものとすることも可能である(例えば異なるパイプラインを含み、異なる構成のパイプライン段を有する)。
本発明の一実施形態において、L2キャッシュは、プロセッサ110によって用いられている命令およびデータの一部を含むことがある。場合によっては、プロセッサ110は、L2キャッシュ112に含まれない命令およびデータを要求することがある。要求された命令およびデータがL2キャッシュ112に含まれない場合、要求された命令およびデータを(高レベルのキャッシュまたはシステム・メモリ102から)検索し、L2キャッシュに配置することができる。プロセッサ・コア114がL2キャッシュ112から命令を要求すると、この命令は最初にプリデコーダ(predecoder)およびスケジューラ220によって処理することができる。
本発明の一実施形態において、命令はL2キャッシュ112からグループ単位でフェッチすることができ、これをI−ラインと称する。同様に、データはL2キャッシュ112からグループ単位でフェッチすることができ、これをD−ラインと称する。図1に示したL1キャッシュ116は2つの部分に分割することができる。すなわち、I−ラインを記憶するためのL1命令キャッシュ222(I−キャッシュ222)、および、D−ラインを記憶するためのL1データ・キャッシュ224(D−キャッシュ224)である。I−ラインおよびD−ラインは、L2アクセス回路210を用いてL2キャッシュ112からフェッチすることができる。
本発明の一実施形態において、L2キャッシュ112から検索されたI−ラインは、プリデコーダおよびスケジューラ220によって処理することができ、I−ラインはI−キャッシュ222に配置することができる。プロセッサの性能を更に改善するために、命令はプリデコードされることが多い。例えば、I−ラインはL2(またはもっと高い)キャッシュから検索される。かかるプリデコードは、アドレス発生、分岐予測、およびスケジューリング(命令を発行する順序を決定する)等の様々な機能を含むことができる。スケジューリングは、命令実行を制御するディスパッチ情報(1組のフラグ)として捕捉される。いくつかの実施形態では、プリデコーダ(およびスケジューラ)220を、多数のコア114およびL1キャッシュ間で共有することも可能である。
コア114は、発行およびディスパッチ回路234から命令を受信することに加えて、様々な位置からデータを受信することができる。コア114がデータ・レジスタからデータを要求した場合、レジスタ・ファイル240を用いてデータを取得することができる。コア114がメモリ位置からデータを要求した場合、キャッシュ・ロードおよび記憶回路250を用いてD−キャッシュ224からデータをロードすることができる。かかるロードを実行する場合、必要なデータに対する要求をD−キャッシュ224に発行することができる。同時に、D−キャッシュ・ディレクトリ225をチェックして、所望のデータがD−キャッシュ224内に配置されているかを判定することができる。D−キャッシュ224が所望のデータを含む場合、D−キャッシュ・ディレクトリ225は、D−キャッシュ224が所望のデータを含むことを示し、その後しばらく経った後でD−キャッシュ・アクセスを完了することができる。D−キャッシュ224が所望のデータを含まない場合、D−キャッシュ・ディレクトリ225は、D−キャッシュ224が所望のデータを含まないと示すことができる。D−キャッシュ・ディレクトリ225には、D−キャッシュ224よりも迅速にアクセスすることができるので、D−キャッシュ・ディレクトリ225にアクセスした後であるがD−キャッシュ・アクセスが完了する前に、(例えばL2アクセス回路210を用いて)所望のデータに対する要求をL2キャッシュ112に発行することができる。
場合によっては、コア114においてデータを変更することがある。変更されたデータは、レジスタ・ファイルに書き込むことができ、またはメモリに記憶することができる。ライトバック(write back)回路238を用いて、レジスタ・ファイル240にデータをライトバックすることができる。時には、ライトバック回路238は、キャッシュ・ロードおよび記憶回路250を用いてD−キャッシュ224にデータをライトバックすることができる。任意に、コア114は、キャッシュ・ロードおよび記憶回路250に直接アクセスして記憶を実行することができる。場合によっては、以下に述べるように、ライトバック回路238を用いて、命令をI−キャッシュ222にライトバックすることも可能である。
上述したように、発行およびディスパッチ回路234を用いて、命令グループを形成し、形成した命令グループをコア114に発行することができる。また、発行およびディスパッチ回路234は、I−ラインにおける命令を回転させマージするための回路を含み、これによって適切な命令グループを形成することもできる。発行グループの形成においては、発行グループ内の命令間の依存性や、命令の順序付けによって達成可能な最適化等、いくつか考慮すべき点がある。これについては以下で更に詳細に述べる。いったん発行グループを形成すると、発行グループは並列にプロセッサ・コア114へとディスパッチすることができる。場合によっては、1つの命令グループは、コア114における各パイプラインごとに1つの命令を含むことがある。任意に、命令グループは、もっと小数の命令である場合もある。
カスケード遅延実行パイプライン
本発明の一実施形態によれば、1つ以上のプロセッサ・コア114は、カスケード遅延実行パイプライン構成を利用することができる。図3に示す例において、コア114は、カスケード構成の4つのパイプラインを含む。任意に、かかる構成において、もっと小数の(2つ以上のパイプライン)またはもっと多数の(5つ以上のパイプライン)を用いることも可能である。更に、図3に示すパイプラインの物理的レイアウトは例示的なものであり、必ずしもカスケード遅延実行パイプライン・ユニットの実際の物理的レイアウトを必ずしも示すものではない。
一実施形態において、カスケード遅延実行パイプライン構成における各パイプライン(P0、P1、P2、P3)は、実行ユニット310を含むことができる。実行ユニット310は、所与のパイプラインについて1つ以上の機能を実行するいくつかのパイプライン段を含むことができる。例えば、実行ユニット310は、命令のフェッチおよびデコードの全てまたは一部を実行することができる。実行ユニットによって実行されるデコードは、プリデコーダおよびスケジューラ220により共有することができる。このプリデコーダおよびスケジューラ2230は、多数のコア114によって共有されるか、または任意に単一のコア114によって利用される。また、実行ユニットは、レジスタ・ファイルからデータを読み取り、アドレスを計算し、(例えば演算論理機構またはALUを用いて)整数演算機能を実行し、浮動小数点演算機能を実行し、命令分岐を実行し、データ・アクセス機能を実行し(例えばメモリからロードおよび記憶する)、データをレジスタに(例えばレジスタ・ファイル240に)記憶することができる。場合によっては、コア114は、命令フェッチ回路236、レジスタ・ファイル240、キャッシュ・ロードおよび記憶回路250、およびライトバック回路、ならびに他のいずれかの回路を用いて、これらの機能を実行することができる。
一実施形態において、各実行ユニット310は同一の機能を実行することができる。任意に、各実行ユニット310(または異なる実行ユニット・グループ)は、異なる機能セットを実行することができる。また、場合によっては、各コア114における実行ユニット310は、他のコアに設けられた実行ユニット310と同一または異なるものとすることができる。例えば、1つのコアにおいて、実行ユニット310および310がロード/記憶および演算機能を実行することができ、実行ユニット310および310が演算機能のみを実行することができる。
一実施形態において、図示したように、実行ユニット310における実行は、他の実行ユニット310に対して遅延させて行うことができる。また、図示した構成はカスケード遅延構成と称することができるが、図示したレイアウトは必ずしも実行ユニットの実際の物理的レイアウトを示すものではない。共通の発行グループ内の命令(例えば命令I0、I1、I2、およびI3)は、並列にパイプラインP0、P1、P2、P3に対して発行することができ、各命令は相互の命令に対して遅延させて実行することができる。例えば、命令I0は、パイプラインP0の実行ユニット310において最初に実行することができ、命令I1は、パイプラインP1の実行ユニット310において2番目に実行することができる等である。
かかる構成において、並列に実行されるグループ内の命令をプログラム順序で発行する必要がない場合(例えばいずれかのパイプに発行し得る命令間に依存性が存在しない場合)、全ての命令グループは、先行する例について順序正しく(in order)実行するように想定される。しかしながら、他の例示的な実施形態では、複数のグループにわたって順不同(out of order)の実行も許容可能である。順不同の実行においても、カスケード遅延構成は同様の利点を提供することができる。しかしながら、場合によっては、先行するグループからのある命令がそのグループによって実行することができないと決定される場合もある。一例として、第1のグループが3つのロードを有し(プログラム順序:L1、L2、およびL3)、L3がL1に依存し、L2がいずれにも依存しないという場合がある。この例では、L1およびL3は共通のグループ内で発行することができる(L3の方が遅延の大きいパイプラインに発行される)が、L2は以降の発行グループにおいて「順不同」で発行することができる。
一実施形態においては、発行グループをプロセッサ・コア114に発行すると、実行ユニット3100においてI0をすぐに実行することができる。その後、実行ユニット310において命令I0の実行が終了した後、実行ユニット310は命令L1の実行を開始することができる等となっており、コア114に対して並列に発行された命令は相互に遅延して実行されることになる。
一実施形態においては、実行ユニット310のいくつかは相互に遅延させることができるが、実行ユニット310の他のものは相互に遅延されない。第2の命令の実行が第1の命令の実行に依存する場合、転送経路312を用いて、第1の命令から第2の命令に結果を転送することができる。図示した転送経路312は例示に過ぎず、コア114は、実行ユニット310における異なる箇所から他の実行ユニット310まで、または同一の実行ユニット310まで、もっと多くの転送経路を含むことも可能である。
一実施形態においては、実行ユニット310によって実行されていない命令(例えば遅延されている命令)を、遅延キュー320またはターゲット遅延キュー330において保持することができる。遅延キュー320を用いて、実行ユニット310によってまだ実行されていない命令グループ内の命令を保持することができる。例えば、命令I0が実行ユニット3100において実行されている間、命令I1、I2、およびI3を遅延キュー330に保持することができる。いったん命令が遅延キュー330に移動すると、命令を適切な実行ユニット310に発行して実行することができる。ターゲット遅延キュー330を用いて、実行ユニット310によってすでに実行された命令の結果を保持することができる。場合によっては、ターゲット遅延キュー330内の結果を、適宜、処理のために実行ユニット310に転送するか、または無効にすることができる。同様に、状況によっては、以下に説明するように、遅延キュー320内の命令を無効にすることも可能である。
一実施形態において、命令グループ内の命令の各々が、遅延キュー320、実行ユニット320、およびターゲット遅延キュー330を通過した後、結果(例えばデータ、および以下に述べるように命令)を、レジスタ・ファイル、またはL1 I−キャッシュ222もしくはD−キャッシュ224あるいはその両方にライトバックすることができる。場合によっては、ライトバック回路238を用いて、(ターゲット遅延キュー330の1つから受信された)レジスタの最新の変更値をライトバックし、無効となった結果を捨てることができる。
カスケード遅延実行パイプラインの性能
図4および図5に示すように、カスケード遅延実行パイプラインの性能の効果を、従来の順序正しい実行パイプラインとの比較によって示すことができる。図4において、従来の「2発行」パイプライン構成2802の性能を、本発明の実施形態に従ったカスケード遅延パイプライン構成2002と比較する。図5において、従来の「4発行」パイプライン構成2804の性能を、本発明の実施形態に従ったカスケード遅延パイプライン構成2004と比較する。
単に例示的な目的のために、ロード記憶ユニット(LSU)412および演算論理機構(ALU)414のみを含む比較的簡単な構成を示す。しかしながら、様々な他のタイプの実行ユニットのカスケード遅延構成を用いて同様の性能改善を得られることは、当業者には認められよう。更に、各構成の性能については、例示的な命令発行グループ(L’−A’−L’’−A’’−ST−L)の実行に関連付けて考察する。このグループは、2つの依存性のロード−加算命令対(L’−A’およびL’’−A’’)、1つの依存性の記憶命令(ST)、および1つの依存性のロード命令(L)を含む。この例においては、各加算が先行するロードに依存するだけでなく、第2のロード(L’’)が第1の加算(A’)の結果に依存する。
まず、図4に示した従来の2発行パイプライン構成280を参照すると、第1のサイクルにおいて第1のロード(L’)が発行される。第1の加算(A’)は第1のロードの結果に依存するので、この例ではサイクル7において結果が利用可能となるまで第1の加算は発行することができない。1サイクルで第1の加算が完了すると仮定すると、その結果に依存する第2のロード(L’’)は、次のサイクルで発行することができる。ここでも、この例ではサイクル14で第2のロードの結果が利用可能となるまで、第2の加算(A’’)は発行することができない。記憶命令は依存性でないので、同一サイクルで発行することができる。更に、第3のロード命令(L)は依存性でないので、次のサイクル(サイクル15)で発行することができ、合計で発行サイクルは15となる。
次に、図4に示す2発行遅延実行パイプライン200を参照すると、発行サイクルの合計数を著しく減らすことができる。図示するように、遅延構成のため、第2のパイプライン(P1)の演算論理機構(ALU)412は、第1のパイプライン(P0)のロード記憶ユニット(LSU)412に対してパイプラインの深くに配置され、第1のロードおよび加算命令(L’−A’)は、依存性にもかかわらず、同時に発行することができる。換言すると、A’がALU412に到達するときまでに、L’の結果が利用可能となり、サイクル7で、A’の実行に用いるために転送することができる。ここでも、A’が1サイクルで完了すると仮定すると、L’’およびA’’は次のサイクルで発行することができる。以下の記憶およびロード命令は依存性でないので、それらは次のサイクルで発行することができる。従って、発行の幅を増すこともなく、カスケード遅延実行パイプライン200では、発行サイクルの合計数が9に減る。
次に、図5に示す従来の4発行パイプライン構成280を参照すると、発行幅の増大(2倍)にもかかわらず、サイクル7において第1のロード(L’)の結果が利用可能となるまで、第1の加算(A’)は発行不可能であることがわかる。しかしながら、第2のロード(L’’)の結果が利用可能となった後、発行幅の増大により、第2の加算(A’’)ならびに依存性でない記憶およびロード命令(STおよびL)を同一のサイクルで発行することができる。しかしながら、結果としては、わずかな性能増大しか得られず、発行サイクルの合計数は14に減る。
次に、図5に示す4発行カスケード遅延実行パイプライン200を参照すると、幅の広い発行グループをカスケード遅延構成と組み合わせた場合に、発行サイクルの合計数を著しく減らすことができる。図示するように、遅延構成のため、第4のパイプライン(P3)の第2の演算論理機構(ALU)412は、第3のパイプライン(P2)の第2のロード記憶ユニット(LSU)412に対してパイプラインの深くに配置され、ロード加算対(L’−A’およびL’’−A’’)は双方とも、依存性にもかかわらず、同時に発行することができる。換言すると、L’’が第3のパイプライン(P2)のLSU412に到達するときまでに、A’の結果が利用可能となり、A’’が第4のパイプライン(P3)のALU412に到達するときまでに、A’の結果が利用可能となる。このため、以降の記憶およびロード命令は次のサイクルで発行することができ、発行サイクル合計数は2に減る。
発行グループ内の命令のスケジューリング
図5は、カスケード遅延実行パイプラインにおいて実行するために、少なくともいくらかの依存性を有する命令をスケジューリングし発行するための例示的な動作500を示す。いくつかの実施形態では、多数のプロセッサ・コア(各々がカスケード遅延実行パイプライン・ユニットを有する)間で共有されるプリデコード/スケジューラ回路において、実際のスケジューリング動作を実行することができ、プロセッサ・コア内の別個の回路によって命令のディスパッチ/発行を実行することができる。一例として、共有されるプリデコーダ/スケジューラは、発行する命令の「ウィンドウ」を調べて依存性についてチェックし、どのように(どのパイプラインに)ディスパッチ回路がグループ内の命令を発行するかを制御する1組の「発行フラグ」を発生することによって、1組のスケジューリング・ルールを適用することができる。
いずれの場合でも、ステップ502において、発行対象の命令グループを受信する。このグループは、第1の命令に依存する第2の命令を含む。ステップ504において、第1の実行ユニットを有する第1のパイプラインに発行するように、第1の命令をスケジューリングする。ステップ506において、第1の実行ユニットに対して遅延させた第2の実行ユニットを有する第2のパイプラインに発行するように、第2の命令をスケジューリングする。ステップ508(実行中)において、第1の命令の実行結果を、第2の命令の実行に用いるため、第2の実行ユニットに転送する。
命令を異なるパイプラインにスケジューリングする厳密な方法は、異なる実施形態によって変動する場合があり、少なくとも部分的に、対応するカスケード遅延パイプライン・ユニットの厳密な構成に応じたものとすることができる。一例として、発行パイプライン・ユニットの幅が広くなると、より多くの命令を並列に発行することができ、スケジューリングのためにより多くの選択肢を提供することができる。一方、パイプライン・ユニットの深さが増すと、より多くの依存性の命令を同時に発行することができる。
むろん、カスケード遅延パイプライン構成を利用することによって得られる全体的な性能の向上は、多数の要因に左右される。一例として、カスケード構成の発行幅が広くなる(パイプラインが増える)と、発行グループを大きくすることが可能となり、一般に、より多くの依存性の命令を同時に発行することができる。しかしながら、電力または空間コスト等の実際的な制約のため、パイプライン・ユニットの発行幅を管理可能な数に制限することが望ましい場合がある。いくつかの実施形態では、4〜6パイプラインのカスケード構成によって、許容可能なコストで良好な性能を提供することができる。また、全体の幅は、予想される命令のタイプに依存する場合があり、これによって構成内の具体的な実行ユニットが決定されることがある。
整数カスケード遅延実行パイプラインの例示的な実施形態
図7は、整数命令を実行するためのカスケード遅延実行パイプライン・ユニット600の例示的な構成を示す。図示するように、このユニットは、2つのLSU612および2つのALU614を含む4つの実行ユニットを有する。ユニット600によって、隣接するパイプライン間で結果を直接転送することが可能となる。いくつかの実施形態では、例えば非隣接パイプライン間の直接転送によって、いっそう複雑な転送を行うことができる。いくつかの実施形態では、ターゲット遅延キュー(TDQ)630からの選択的な転送を行うことも可能である。
図8から図11は、図7に示したパイプライン・ユニット600を通る4つの命令(L’−A’−L’’−A’’)の例示的な発行グループのフローを示す。図示するように、図8において、発行グループはユニット600に入ることができる。第1のロード命令(L’)は、最小遅延の第1パイプライン(P0)にスケジューリングされている。この結果、グループ内の他の命令の前に(これらの他の命令は、L’が実行されている間に命令キュー620を下ることができる)、L’は実行される第1のLSU612Lに到達する。
図9に示すように、第1の加算A’が第2のパイプライン(P1)の第1のALU612Aに到達する際(ちょうど間に合うように)、第1のロード(L’)の実行結果が利用可能となる。場合によっては、第2のロードは、第1の加算命令の結果に依存することがあり、例えば、オフセット(例えば第1のロードL’によってロードされる)を、ベース・アドレス(例えば第1の加算A’のオペランド)に追加することによって、計算することができる。
いずれの場合でも、図10に示すように、第2のロードL’’が第3のパイプライン(P2)の第2のLSU612Lに到達する際に、第1の加算(A’)の実行結果が利用可能となる。最後に、図11に示すように、第2の加算A’’が第4のパイプライン(P3)の第2のALU612Aに到達する際に、第2のロード(L’’)の実行結果が利用可能となる。第1のグループ内の命令の実行結果は、以降の発行グループを実行する際のオペランドとして用いることができ、従って、(例えば直接またはTDQ630を介して)フィード・バックすることができる。
図示していないが、各クロック・サイクルで新しい発行グループがパイプライン・ユニット600に入ることができることは理解されよう。場合によっては、例えば、多数の依存性(L’−L’’−L’’’)を有する比較的珍しい命令ストリームのために、各新しい発行グループが最大数の命令(この例では4)を含まない場合があるが、本明細書に記載されるカスケード遅延構成は、依存性の命令を共通の発行グループにおいてストールなしで発行可能とすることによって、スループットを著しく改善することができる。
浮動小数点/ベクトル・カスケード遅延実行パイプラインの例示的な実施形態
発行グループ内の1つ以上の命令の実行を同一グループ内の別の命令の実行に対して遅延させるという、本明細書において提示するカスケード遅延実行パイプライン・ユニットの概念は、様々な異なるタイプの機能ユニットを利用した様々な異なる構成に適用することができる。更に、いくつかの実施形態では、カスケード遅延実行パイプライン・ユニットの多数の異なる構成を、同一のシステムまたは同一のチップあるいはその両方に含ませることも可能である。特定のデバイスまたはシステムと共に含ませる具体的な構成または1組の構成は、意図する用途に応じたものとすることができる。
上述の固定点実行パイプライン・ユニットは、ロード、記憶、および基本的なALU動作等、完了するのに2〜3サイクルしか必要としない比較的簡単な動作を含む発行グループを、発行グループ内の依存性にもかかわらずストールなしで実行可能とする。しかしながら、浮動小数点積算/加算(MADD)命令、ベクトル内積、ベクトル外積等、数サイクルを必要とすることがある比較的複雑な動作を実行する少なくともいくつかのパイプライン・ユニットを有することも一般的である。
市販のビデオ・ゲームに多く見られるもの等のグラフィック・コードにおいて、例えば、3Dシーン・データを処理して画素値を発生し、リアル感のあるスクリーン画像を生成する場合、高頻度でスカラ浮動小数点コードが存在する傾向がある。命令ストリームの一例として、ロード(L)を含み、この直後に入力としてロードに基づいた第1の積算/加算(MADD)があり、この後に第1のMADDの結果に基づいた第2のMADDがある場合がある。換言すると、第1のMADDはロードに依存し、第2のMADDは第1のMADDに依存する。第2のMADDの後には、第2のMADDによって発生した結果を記憶する記憶(store)がある場合がある。
図12は、上述した例示的な命令ストリームに対処するカスケード遅延実行パイプライン・ユニット800を示す。これによって、2つの依存性のMADD命令を単一の発行グループ内で同時に発行することを可能とする。図示するように、このユニットは4つの実行ユニットを有する。すなわち、第1のロード記憶ユニット(LSU)812、2つの浮動小数点ユニットFPU814および814、ならびに第2のLSU816である。ユニット800は、第1のパイプライン(P0)のロードの結果を第2のパイプライン(P1)の第1のFPU814に直接転送し、第1のMADDの結果を第2のFPU814に直接転送することを可能とする。
図13から図16は、図12に示したパイプライン・ユニット800を通る4つの命令(L’−M’−M’’−S’’)の例示的な発行グループのフローを示す(M’は第1の依存性の積算/加算を表し、M’’は第1の結果に依存する第2の積算/加算を表す)。図示するように、図13において、発行グループはユニット900に入ることができる。ロード命令(L’)は、最小遅延の第1のパイプライン(P0)にスケジューリングされている。この結果、グループ内の他の命令の前に(これらの他の命令は、L’が実行されている間に命令キュー620を下ることができる)、L’は実行される第1のLSU812に到達する。
図14に示すように、第1のMAAD命令(M’)が到着する際に、第1のロード(L’)の実行の結果を第1のFPU8141に転送することができる。図15に示すように、第2のMADD(M’’)が第3のパイプライン(P2)の第2のFPU8142にちょうど到達する時に、第1のMAAD(M’)の結果が利用可能となる。最後に、図16に示すように、記憶命令(S’)が第4のパイプライン(P3)の第2のLSU812に到達する際に、第2のMADD(M’’)の実行結果が利用可能となる。
第1のグループにおける命令の実行結果は、以降の発行グループを実行する際のオペランドとして用いることができ、従って、フィード・バックすることができ(例えば直接またはTDQ630を介して)、またはレジスタ・ファイル・ライトバック回路に転送することができる。いくつかの実施形態では、第2のMADD命令の(浮動小数点)結果を、メモリに記憶する前に処理して、例えば結果をコンパクト化するすなわち圧縮することで、もっと効率的な記憶を行うことも可能である。
図12に示した浮動小数点カスケード遅延実行パイプライン・ユニット800を、図7に示した整数カスケード遅延実行パイプライン・ユニット600と比較すると、多数の類似点および相違点を観察することができる。例えば、各々は、多数の命令キュー620を用いて、「遅延」パイプラインに発行されたいくつかの命令の実行を遅延させることができ、ターゲット遅延キュー630を用いて、「中間の」ターゲット結果を保持することができる。
ユニット800のFPU814の深さは、ユニット600のALU612よりも著しく大きくし、これによってユニット800の全体的なパイプライン深さを増すことができる。いくつかの実施形態では、この深さ増大によって、例えばL2キャッシュにアクセスする際に、いくらかの待ち時間を隠すことができる。一例として、いくつかの実施形態では、L2アクセスをパイプラインP2上で早期に開始して、第2のMADD命令についてのオペランドの1つを検索することができる。第1のMADD命令によって発生した他のオペランドは、ちょうどL2アクセスが完了した時に利用可能となり、従って効果的にL2アクセスの待ち時間を隠すことができる。
更に、転送相互接続は実質的に異なる場合がある。これは、部分的には、ロード命令が生成する結果はアドレスとして(別の命令によって)使用可能である場合があり、浮動小数点MADD命令が生成する浮動小数点の結果はアドレスとして使用可能でないという事実による。FPUは、アドレスとして使用可能な結果を生成しないので、図12に示すパイプライン相互接続方式は、実質的にもっと簡単なものである場合がある。
いくつかの実施形態では、順列命令によるベクトル処理等、対象とする目的のために、様々な他の構成のパイプライン・ユニットを生成することができる(例えば中間結果を以降の命令に対する入力として用いる場合)。図17は、かかるベクトル動作に対処するカスケード遅延実行パイプライン・ユニット1000を示す。
図12に示した実行ユニットと同様、実行ユニット1000は4つの実行ユニットを有する。これらは、第1および第2のロード記憶ユニット(LSU)1012を含むが、2つのベクトル処理ユニットFPU1014および1014を有する。ベクトル処理ユニットは、様々なベクトル処理動作、および、場合によっては、図12に示したFPU814と同様の動作、および追加の機能を実行するように構成することができる。
かかるベクトル動作の例は、内積または外積におけるもの等、多数(例えば32ビットまたはそれ以上)の積算/加算を行い、結果を合計することを含む場合がある。場合によっては、いったん内積を発生すると、そこから別の内積を発生するか、またはその結果をメモリに記憶する準備においてコンパクト化する、あるいはその両方を行うことができる。いくつかの実施形態では、発生した内積を、浮動から固定に変換、スケーリング、および圧縮した後、それをメモリに記憶するか、または追加の処理のために他に送信することができる。かかる処理は、例えば、ベクトル処理ユニット1014内でまたはLSU1012において実行することができる。
ポリモフィズム(polymorphism)
いくつかの実施形態では、ポリモフィズムを利用して、フレキシビリティを与え、限られた処理コア・セットが様々な特徴を有する広範囲のアプリケーションに対応することを可能とする。本明細書において用いる場合、ポリモフィズムという言葉は概して、1つ以上の物理的処理コアを変形して、異なるアプリケーションのために様々に異なって見えるようにすることを指す。実行しているコードを変更することなく、処理コアの性能および挙動は変動する場合がある。
この文脈において、ポリモフィズムを、上述したもののようなカスケード・パイプライン構成を有する実行ユニットに適用することで、異なるアプリケーションのために異なるパイプライン実行ユニットを効果的に提示することができる。一例として、比較的幅の狭い2つの発行実行ユニットを組み合わせて、2倍の発行幅を有する単一の実行ユニットとして見せることができる。あるタイプのアプリケーション(例えば少数のスレッドを有するアプリケーション)では、幅の広い発行グループを有する少数の実行ユニットを用いることにメリットがあり、他のアプリケーション(例えば多数のスレッドを有するアプリケーション)では、幅の狭い発行グループを有する多数の実行ユニットを用いることにメリットがある。
様々な異なる技法を用いて、1つ以上の実行ユニットを変形する(「モーフィングする」)ことで様々に異なって見えるようにするか否かを制御することができる。これらの技法は、様々な論理コンポーネント(例えばプリデコード、発行/ディスパッチ、および異なる経路選択)を制御するビットを設定するためにソフトウェアによって(例えばアプリケーションまたはオペレーゲィング・システムによって)、命令ストリームのデコード/プリデコードによって、ハードウェアにおいて動的に(例えばあるタイプのフラグを設定して、監視された実行に基づいて発行幅を変更する)、またはそれらの組み合わせによって制御を行うことを含む場合がある。
命令レベル並列性(ILP)モーフィング
モーフィングの一例は、命令レベル並列性(ILP)モーフィングと称することができる。その基本的な概念は、比較的幅の狭い実行ユニットを組み合わせて同一命令ストリームについて発行幅の増大を得ることによって、並列性の増大を達成することである。変形を制御することにより、2つの実行ユニットを組み合わせて、あるアプリケーション(例えば比較的少ないスレッドを有するゲーム・アプリケーション)について発行幅の増大を得ることができ、または別々のままとして、より多くのスレッドに対処することができる(例えば多数のタスクを有するサーバについて)。
図18は、プロセッサの物理コアを異なるアプリケーションに対して異なって見えるようにするILPモーフィングの一例を示す。図示するように、ベース・モードにおいて、2つの比較的幅の狭い処理コア1110は、別個に機能することができる。図示する例では、各コア1110は4つのパイプラインを有し、別個の命令ストリームから4つの命令発行グループを処理することができる。
しかしながら、処理コア1110をモーフィングして、連動モードにおいて単一の処理コア1120として見えるようにすることができる。図示するように、モーフィングした処理コア1120は、別々のコア1110の2倍の幅および2倍の深さを有するカスケード構成のパイプラインとして有効に機能する。この結果、処理コア1120は、単一の命令ストリームからの8つの命令を処理することができ、いくつかのアプリケーションでは、大幅に性能を向上させることができる。
追加のパイプラインに対処するようにコア1120の深さを効果的に増すため、いくつかの機構を形成して、別個のコア1110よりも遅延させた処理ユニットを有するパイプラインについて命令キュー(IQ)の深さを増し、更に、別個のコア1110よりも遅延させた処理ユニットを有するパイプラインについてターゲット遅延キュー(TDQ)の深さを増さなければならない。
図19に示すように、モーフィングしたコア1120においてIQおよびTDQの深さを増すための1つの手法は、追加のハードウェアを設けることである。図示するように、モーフィングしたコア1120は、追加のIQ1210を用いて命令をバッファし、追加のTDQ1220を用いて結果をバッファすることができる。コアが別個に機能している場合は、多数の経路および制御論理を設けて、ベース・モードにおいてこの追加した論理を効果的にバイパスすることができる。
図20に示すように、追加のハードウェアを用いてモーフィングしたコア1120においてIQおよびTDQの深さを実際に増すことの代替的な手法は、制御論理を用いて追加の深さに対処することである。一例として、プリデコードまたは発行/ディスパッチ回路あるいはその両方を、発行グループのタイミングを制御するように構成し、発行グループの全ての命令が同時にパイプラインを効果的に伝搬するようにすることができる。換言すると、図示する例において、8幅グループにおける第1の4つの命令(I0〜I3)を1サイクルで左半分のコアに発行することができ、第2の4つの命令(I4〜I7)を4サイクル後に発行する。ライトバック回路を同様に制御して、早い方の(左半分の)処理ユニットからの結果を効果的に保持して、ライトバックを適切に同期させることができる。
上述したように、様々な論理コンポーネントが同時に動作して、プロセッサ・コアのモーフィングを可能とする。例えば、プリデコード回路をフレキシブルに構成して、単一の4発行コアについてまたは連動した8発行コアについてのスケジューリングであるか否かを知らせ、それに応じてスケジューリング・フラグを設定することができる。これによって、命令をI−ライン・バッファに適切に配列することができる。実施形態によっては、多数のコアのためのリソースを連動させることができる。
例えば、図21に示すように、プリデコード回路を効果的に共に連動させて、連動コアのために幅の広い発行グループを発生することができる。いくつかの実施形態では、命令ストリームをプリデコードして、各コアに供給する命令キャッシュに命令を適切に配列することができる。上述したように、場合によっては(追加の命令キューが実施されない場合)、この配列は、ある処理コアのI−キャッシュにおいて他のものに対して同一発行グループの命令をオフセットすることを伴う場合がある。例えば、1つのI−キャッシュの命令ポインタを、個々のコアの発行幅だけ(例えば+4または+8)オフセットするように制御することによって、このオフセットを実行することができる。
いくつかの実施形態では、単一または連動の発行幅についてスケジューリングを行うように、単一のプリデコーダを構成することができる。例えば、制御ビット(ソフトウェアまたは他において設定される)が、スケジュールしている発行幅をプリデコーダに示し、プリデコーダはそれに応じて機能することができる。例えば、実行中に適切なビットを制御論理に対して実施する。これによっていくぶん複雑さが増すことがあるが、いったん幅の広い発行グループについてのスケジューリングを達成すると、幅の狭い発行グループについてのスケジューリング論理は、基本的に同じ論理のサブセットである。
いずれの場合であっても、プリデコーダ(複数のプリデコーダ)からの命令ストリームは、連動コアによる実行のために、I−キャッシュの1つ以上に流れることができる。実施形態によっては、単一のI−キャッシュが多数の連動コアに供給することができ、または命令を連動コアのI−キャッシュ間で分割することができる。更に、以下でもっと詳細に説明するが、いくつかの実施形態では、あるタイプのモーフィングによって、単一の命令が多数コアの処理ユニットを制御することができる。かかる場合、命令を各I−キャッシュにおいて複製するか、または命令の一部を各々に含ませることができる。
処理コアを連動させるために、各コアが他のコアからデータを受信し他のコアのファイル・レジスタを更新すること、または他のコアのデータ・キャッシュに書き込むこと、あるいはその両方を可能とするように準備する。従って、図21に示すように、追加のデータ経路(ワイヤ)を実装してこれらの更新を可能とする。正常動作またはベース(非連動)モードにおいてこれらの経路を単に用いないように、論理を実装することができる。最適に動作するために、あるコアが、同一コア内の更新と同じくらい迅速に他のコアのレジスタを更新することができるように、これらの経路を設計することができる。
図22に示すように、モーフィングの考えは、2つのコアだけでなくそれ以上に拡張することができる。図示した例では、4つのコアを共にモーフィングして、4倍の発行幅を有する単一のコアを形成する。図示するように、各コアは他のコアの1つ以上においてレジスタ・ファイルを更新することができる。しかしながら、この更新に実際的な制約を課す(例えばホットな転送(hot forwards)をある命令幅内に制限する)ことによって、コア間配線の数を減らし、レイアウトを容易にすることができる。
物理的フロアプラン
所望の頻度で処理コア間の更新を達成するために、注意深い計画により処理コアおよびそれらのコンポーネントの物理的レイアウト(「フロアプラン」)を行って、高頻度の更新のために伝送経路を制限することができる。
モーフィングした実行ユニットのタイミング要件を満たす物理的レイアウトを達成するために使用可能な1つの手法は、基本的に、幅の広いモーフィングした(連動した)コアについてのタイミング要件を満たすように処理コアを設計することである。幅広の発行の場合のタイミング要件を満たすことができると、幅広の発行コアを幅の狭い別個の発行コアに有効に分割するように論理を実施することができる。この手法に従って、幅広の発行コアを半分に有効に分割することによって、物理的レイアウトが有するコンポーネントは、軸を通るミラー・イメージとすることができる。
図23は、軸1510を中心として実質的に対称である「バタフライ型」フロアプランの一例を示す。このレイアウトは、ロード・ユニットとデータ・キャッシュとの間の待ち時間、および、処理ユニット(この例ではALU)間の待ち時間を最小限に抑えるように設計することができる。浮動小数点ユニットを用いる実施形態では、タイミング要件はいくぶん緩く、ロード結果を浮動小数点ユニットに提供するために、余分の1サイクルまたは2サイクルが許されることが多い。
図示した例のフロアプランは、ALU1520のクラスタを、フェッチ・データが供給される箇所(データ・キャッシュ1530)の近くに置くことによって、キャッシュ・フェッチとALUとの間の経路を最小限に抑えようと試みる。カスケード・パイプラインにおけるホットな転送を限定することによって、別個のコア間の境界を越えて実行しなければならない高速信号のルーティングは極めて少なくなり、ロード−加算の境界間のみとなる。更に、上述したように、処理コアからTLBを除去することによって、アドレス変換に関連した頻繁な発行は除去される。
図示するように、命令キュー1522、I−キャッシュ1524、および命令バッファ1526等の他のコンポーネントも、軸1510を越えてミラーリングすることができる。ベース・モードにおいては、2つの命令キャッシュ半部分1524は別個に動作し、それらの各コアに対して完全な命令を供給することができる。しかしながら、一体化すなわち連動モードにおいては、一方の命令キャッシュは命令の半分を供給することができ、他方の命令キャッシュは他の半分を供給することができる。換言すると、デコード論理は、モーフィング・モードに応じて、I−キャッシュを2つの異なる方法でロードすることができる。すなわち、1つは、各I−キャッシュが発行グループの命令の半分を供給し、もう1つは、各I−キャッシュが発行グループ命令全体を供給する。
単一のI−キャッシュが全ての命令を連動コアに提供することができる場合でも双方のI−キャッシュを利用することの1つの利点は、各I−キャッシュに半分ずつ供給させることによって、1つのI−キャッシュが命令を他方側まで全距離にわたって供給する必要がないということである。しかしながら、いくつかの実施形態では、連動させたコアのために用いられない論理コンポーネントの電源を遮断することによって、省電力化を実現することができる。例えば、連動コアのために単一のI−キャッシュまたはD−キャッシュを用いた場合、未使用のキャッシュはパワーダウンすることができる。
図示した例では、(VMX)ユニットを示す。具体的な実施形態によっては、VMXユニットは単一ユニットとして保つことができ、または、例えば軸1510を中心として分割することも可能である。
むろん、3つ以上のコアを1つにモーフィングすることができるフロアプランについて、同様の概念を適用することができる。例えば、図24は、4つのコアを組み合わせたフロアプランを示す。図示するように、かかる4コア・アプリケーションにおいては、コンポーネントのレイアウトは、水平軸1610および垂直軸1620の双方について実質的にミラー・イメージが得られるように行うことができる。上述したものと同様の技法を用いて、異なるI−キャッシュ間で命令ロードを分配させるか、または単一のI−キャッシュが命令ストリーム全体を多数コアに供給することを可能とする。
ベクトル・モーフィング
モーフィングの別の例は、ベクトル・モーフィングと称することができる。その基本的な概念は、比較的幅の狭い実行ユニットを組み合わせて同一の命令ストリームについて発行幅の拡大を図ることによって、並列性の増大を達成することである。変形を制御することにより、2つ以上の実行ユニットを組み合わせて、あるアプリケーション(例えば比較的少ないスレッドを有するゲーム・アプリケーション)について発行幅の増大を得ることができ、または別々のままとして、より多くのスレッドに対処することができる(例えば多数のタスクを有するサーバについて)。
図25は、プロセッサの物理コアを異なるアプリケーションに対して異なって見えるようにするベクトル・モーフィングの一例を示す。図示するように、ベース・モードにおいて、2つの比較的幅の狭い処理コア1710は、別個に機能することができる。図示する例では、各コア1710は4つのパイプラインを有し、別個の命令ストリームから4つの命令発行グループを処理することができる。
しかしながら、処理コア1710をモーフィングして、連動モードにおいて単一の処理コア1720として見えるようにすることができる。いくつかの実施形態では、図25に示すように、命令キューおよびターゲット遅延キューを分流させて、別個のコア1710よりも大きい並列パイプライン構成を有効に提供することができる。この結果、図26に示すもののような、いくつかの動作を用いた大きい命令(例えば64ビット・ベクトル命令)を、単一の命令と並列に処理することができる。命令内で見出される動作は、ベクトル・ロード(VL)、ベクトル積算/加算(VMADD)、ベクトル記憶(VST)、分岐条件ターゲット(BCT)、および当業者には既知の他の命令を含むことができる。
しかしながら、いくつかの実施形態においては、処理コア1710をモーフィングして、別個のコア1710よりも幅が広く深いカスケード・パイプライン構成として有効に機能することができる。この結果、処理コア1720は、単一の命令ストリームからの8以上の命令を処理することができ、これはアプリケーションによっては性能を大きく向上させることができる。
追加のパイプラインに対処するようにコア1720の深さを効果的に増すため、いくつかの機構を形成して、別個のコア1710よりも遅延させた処理ユニットを有するパイプラインについて命令キュー(IQ)の深さを増し、更に、別個のコア1710よりも遅延させた処理ユニットを有するパイプラインについてターゲット遅延キュー(TDQ)の深さを増さなければならない。
上述したように、2つの処理コアをモーフィングすることに加えて、複数の処理コアを同時にモーフィングすることも可能である。例えば、1つのチップが4つの処理コアを有し、各処理コアが4つのパイプラインを有する場合がある。いくつかの実施形態では、4つの処理コア全ての4つのパイプライン全てをモーフィングして、共に機能させることができる。図27は、本発明の実施形態に従った、共にモーフィングされた4つの処理コアを示す。
4つの処理コア全てを共にモーフィングすることができる1つの方法は、各I−キャッシュ1920に同一の命令ラインをロードして、4つのコア全てが全サイクルで同一の命令を見るようにすることである。前述の例を参照すると、この結果は、並列な同一の動作(例えばLMADD)の16インスタンスの性能である。これを可能とするために、16の要素を一度にキャッシュに有し、余分の変位(例えば+0、+4、+8、+12)を受信することで、取り込む4要素のサブセットを各コアに割り当てる(例えばコア0が要素0〜3を取り込み、コア1が要素4〜7を取り込む等)。制御論理1930によって、各処理コアに、取り込む4要素のサブセットを割り当てる。いくつかの実施形態では、制御論理は、プリデコード論理1910に結合することができる。
上述のように各I−キャッシュ1920に同一の命令ラインをロードすることにおける1つの懸念は、4つのコアの各々のI−キャッシュ1920、デコーダ、および他のハードウェアに電力を供給する際に消費されることがある不必要な電力である。これらのハードウェア・コンポーネントのいくつかは、動作には必要でない場合がある。なぜなら、1つのコアの命令は、他のコアの各々についての命令と同一だからである。例えば、ベクトル・モード構成においては、16の積算/加算または16のロードまたは16の記憶を実行する1つの命令があり、各I−キャッシュは同一の命令のコピーを有する。
上述の電力の懸念を克服しながら4つの処理コア全てを共にモーフィングする別の方法は、1つの処理コアをマスタとして指定し、対応するI−キャッシュ1920に命令ラインをロードし、残りの3つの処理コアのI−キャッシュ1920、デコーダ、および他の未使用のハードウェアの電源を切ることである。例えば、連動コアのために単一のI−キャッシュまたはD−キャッシュを用いた場合、未使用のキャッシュの電源を切ることができる。そして、マスタ処理コアのI−キャッシュ1920から残りの処理コアの全てに、バスを敷設することができる。
いくつかの実施形態においては、多数のCPUを共にモーフィングして、単一の処理コアのように見せることができる。図28は、共にモーフィングされているCPU2010を示す。いくつかの実施形態では、多数のCPU2010が別個のチップ上に存在する場合がある。第1のCPU2020をマスタとして指定し、複数の64ビット・バスを介して残りのCPU2010に命令を発行する。適切なタイミングを保証するように論理を実施することができ、様々なCPU間で命令分割を維持する。
図29は、更に、様々なCPU間で適切なタイミングを維持する際に使用可能な論理を示す。共通のI−バッファ2110を用いて命令を検索し記憶した後に、命令を発行/ディスパッチ論理2120によってディスパッチし発行することができる。I−バッファ2110および発行/ディスパッチ論理2120は、物理的にマスタ・チップ2020上に配置することができる。次いで、発行した命令を命令キューに送信した後、マスタCPU2020およびスレーブCPU2010に送信する。次いで、命令は、各CPU上の遅延論理2130を通って適切な命令の同期を確実とし、その後、各チップ上の処理コア2150の各々によって実行される。
前述のことは、本発明の実施形態を対象としているが、本発明の基本的な範囲から逸脱することなく、本発明の他の実施形態および更に別の実施形態も考案することができ、その範囲は特許請求の範囲によって決定される。
100 システム
102 システム・メモリ
104 グラフィック処理ユニット
108 記憶デバイス
110 プロセッサ
112 L2キャッシュ
116 L1キャッシュ
114 プロセッサ・コア
210 L2アクセス回路
220 プリデコーダおよびスケジューラ
232 I−ライン・バッファ
234 発行およびディスパッチ回路
236 命令フェッチ回路
238 ライトバック回路
240 レジスタ・ファイル
250 キャッシュ・ロードおよび記憶回路

Claims (13)

  1. プロセッサであって、
    第1および第2のプロセッサ・コアであって、各々が、多数の命令の発行グループを実行するための複数のパイプライン実行ユニットを有する、前記プロセッサ・コアと、
    前記プロセッサが第1の動作モードにある場合、第1の命令発行グループを実行のために前記第1のプロセッサ・コアに発行し、第2の命令発行グループを実行のために前記第2のプロセッサ・コアに発行するように構成され、前記プロセッサが第2の動作モードにある場合、前記第1および第2のプロセッサ・コア上で同時に実行するために1つ以上のベクトル命令を発行するように構成された、スケジューリング論理と、
    を含む、プロセッサ。
  2. 前記第1および第2のプロセッサ・コアが各々、N個の命令の発行グループを実行することができるN個のパイプライン実行ユニットを有する、請求項1に記載のプロセッサ。
  3. 前記第1および第2のプロセッサ・コアは各々、前記プロセッサが前記第1の動作モードにある場合に、共通の発行グループ内の命令を相互に遅延させて実行するカスケードのパイプライン実行ユニットを含む、請求項1に記載のプロセッサ。
  4. 前記プロセッサが前記第2の動作モードにある場合に、前記第1および第2のプロセッサ・コアの前記パイプライン実行ユニットが、ベクトル命令に対応する動作を並列して実行する、請求項3に記載のプロセッサ。
  5. 前記第1および第2のプロセッサ・コアが、前記プロセッサが前記第1の動作モードにある場合に、共通の発行グループ内の命令を相互に遅延させて発行することができるターゲット遅延キューを含み、
    前記プロセッサが前記第2の動作モードにある場合、前記ターゲット遅延キューが分流される、請求項4に記載のプロセッサ。
  6. 前記第1および第2の動作モード間で選択を行うようにソフトウェア命令によって制御可能な機構を更に含む、請求項1に記載のプロセッサ。
  7. 前記スケジューリング論理が、
    前記第1および第2のプロセッサ・コアに前記ベクトル命令の同一のコピーを送信し、その結果、前記第1および第2のプロセッサ・コアが単一のクロック・サイクルの間に同一の命令を見るように、更に、
    前記第1および第2のプロセッサ・コアにオフセット値を送信し、前記第1のプロセッサ・コアに前記ベクトル命令の第1のサブセットを効果的に割り当て、前記第2のプロセッサ・コアに前記ベクトル命令の第2のサブセットを割り当てるように構成されている、請求項1に記載のプロセッサ。
  8. コンピューティング・システムであって、
    第1および第2のプロセッサであって、各々が、1つ以上のベクトル命令を実行するための複数のプロセッサ・コアを有する、前記プロセッサと、
    前記コンピューティング・システムが第1の動作モードにある場合、1つ以上のベクトル命令を実行のために前記第1のプロセッサに発行し、1つ以上のベクトル命令を実行のために前記第2のプロセッサに発行するように構成され、前記コンピューティング・システムが第2の動作モードにある場合、ベクトル命令の発行グループを実行のために前記第1および第2のプロセッサに発行するように構成された、スケジューリング論理と、
    を含む、コンピューティング・システム。
  9. 前記第1および第2のプロセッサは、各々、前記コンピュータ・システムが前記第1の動作モードにある場合に、相互に同時にベクトル命令を実行する複数のプロセッサ・コアを含む、請求項8に記載のコンピューティング・システム。
  10. 前記コンピューティング・システムが前記第2の動作モードにある場合に、前記第1および第2のプロセッサの前記プロセッサ・コアは、ベクトル命令の共通の発行グループ内のベクトル命令を相互に遅延させて実行する、請求項9に記載のコンピューティング・システム。
  11. 前記第1および第2のプロセッサ・コアが、前記プロセッサが前記第1の動作モードにある場合に、共通の発行グループ内の命令を相互に遅延させて発行することができるターゲット遅延キューを含み、
    前記プロセッサが前記第2の動作モードにある場合、前記ターゲット遅延キューが分流される、請求項10に記載のコンピューティング・システム。
  12. 前記スケジューリング論理が前記第1のプロセッサとプリント回路基板を共有する、請求項8に記載のコンピューティング・システム。
  13. 前記第1および第2の動作モード間で選択を行うようにソフトウェア命令によって制御可能な機構を更に含む、請求項8に記載のコンピューティング・システム。
JP2009176387A 2008-09-19 2009-07-29 多重プロセッサ・コア・ベクトル・モーフ結合機構 Active JP5698445B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/233729 2008-09-19
US12/233,729 US8135941B2 (en) 2008-09-19 2008-09-19 Vector morphing mechanism for multiple processor cores

Publications (2)

Publication Number Publication Date
JP2010073197A true JP2010073197A (ja) 2010-04-02
JP5698445B2 JP5698445B2 (ja) 2015-04-08

Family

ID=42029443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009176387A Active JP5698445B2 (ja) 2008-09-19 2009-07-29 多重プロセッサ・コア・ベクトル・モーフ結合機構

Country Status (4)

Country Link
US (1) US8135941B2 (ja)
JP (1) JP5698445B2 (ja)
CN (1) CN101676865B (ja)
TW (1) TW201028918A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016534433A (ja) * 2013-10-23 2016-11-04 テクノロギアン トゥトキムスケスクス ヴェーテーテー オイ エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン
KR20220077076A (ko) * 2020-12-01 2022-06-08 한국전자통신연구원 멀티 프로세서 시스템 및 그의 부동 소수점 연산 처리 방법
US11893392B2 (en) 2020-12-01 2024-02-06 Electronics And Telecommunications Research Institute Multi-processor system and method for processing floating point operation thereof

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090204792A1 (en) * 2008-02-13 2009-08-13 Luick David A Scalar Processor Instruction Level Parallelism (ILP) Coupled Pair Morph Mechanism
US20130166882A1 (en) * 2011-12-22 2013-06-27 Jack Hilaire Choquette Methods and apparatus for scheduling instructions without instruction decode
CN104346285B (zh) * 2013-08-06 2018-05-11 华为技术有限公司 内存访问处理方法、装置及系统
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
US20160179530A1 (en) * 2014-12-23 2016-06-23 Elmoustapha Ould-Ahmed-Vall Instruction and logic to perform a vector saturated doubleword/quadword add
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
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
US11178072B2 (en) * 2015-06-10 2021-11-16 Mobileye Vision Technologies Ltd. Image processor and methods for processing an image
US11294815B2 (en) * 2015-06-10 2022-04-05 Mobileye Vision Technologies Ltd. Multiple multithreaded processors with shared data cache
TWI564807B (zh) * 2015-11-16 2017-01-01 財團法人工業技術研究院 排程方法及應用其的處理裝置
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
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
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
US10474468B2 (en) * 2017-02-22 2019-11-12 Advanced Micro Devices, Inc. Indicating instruction scheduling mode for processing wavefront portions
US10140252B2 (en) 2017-02-28 2018-11-27 Microsoft Technology Licensing, Llc Hardware node with matrix-vector multiply tiles for neural network processing
EP3376441B1 (en) * 2017-03-15 2021-07-14 Siemens Aktiengesellschaft A method for execution of a machine learning model on memory restricted industrial device

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
JPH1185513A (ja) * 1997-09-03 1999-03-30 Hitachi Ltd プロセッサ
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置
WO2006049331A1 (ja) * 2004-11-05 2006-05-11 Nec Corporation Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
WO2007141252A1 (en) * 2006-06-08 2007-12-13 International Business Machines Corporation Local and global branch prediction information storage
JP2008015589A (ja) * 2006-07-03 2008-01-24 Nec Corp Vliw型プロセッサおよび命令発行方法
WO2008023576A1 (fr) * 2006-08-23 2008-02-28 Nec Corporation Élément de traitement, système de processeur parallèle en mode mixte, procédé pour élément de traitement, procédé pour processeur parallèle en mode mixte, programme pour élément de traitement, et programme pour processeur parallèle en mode mixte

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2587586B2 (ja) * 1994-05-25 1997-03-05 甲府日本電気株式会社 データ転送方法
US6026479A (en) 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs
US6272616B1 (en) 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6549986B1 (en) * 2000-06-20 2003-04-15 Conexant Systems, Inc. Low power instruction cache
US6983388B2 (en) * 2000-10-25 2006-01-03 Agere Systems Inc. Method and apparatus for reducing leakage power in a cache memory by using a timer control signal that removes power to associated cache lines
US6480938B2 (en) 2000-12-15 2002-11-12 Hewlett-Packard Company Efficient I-cache structure to support instructions crossing line boundaries
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
US7194643B2 (en) 2003-09-29 2007-03-20 Intel Corporation Apparatus and method for an energy efficient clustered micro-architecture
US7099230B1 (en) * 2005-04-15 2006-08-29 Texas Instruments Incorporated Virtual ground circuit for reducing SRAM standby power
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7454598B2 (en) 2005-05-16 2008-11-18 Infineon Technologies Ag Controlling out of order execution pipelines issue tagging
US7380105B2 (en) 2006-06-16 2008-05-27 The Regents Of The University Of California Prediction based instruction steering to wide or narrow integer cluster and narrow address generation
US20080148020A1 (en) * 2006-12-13 2008-06-19 Luick David A Low Cost Persistent Instruction Predecoded Issue and Dispatcher
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US20080229065A1 (en) 2007-03-13 2008-09-18 Hung Qui Le Configurable Microprocessor

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
JPH1185513A (ja) * 1997-09-03 1999-03-30 Hitachi Ltd プロセッサ
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置
WO2006049331A1 (ja) * 2004-11-05 2006-05-11 Nec Corporation Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
WO2007141252A1 (en) * 2006-06-08 2007-12-13 International Business Machines Corporation Local and global branch prediction information storage
JP2009540412A (ja) * 2006-06-08 2009-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーション ローカル及びグローバル分岐予測情報の格納
JP2008015589A (ja) * 2006-07-03 2008-01-24 Nec Corp Vliw型プロセッサおよび命令発行方法
WO2008023576A1 (fr) * 2006-08-23 2008-02-28 Nec Corporation Élément de traitement, système de processeur parallèle en mode mixte, procédé pour élément de traitement, procédé pour processeur parallèle en mode mixte, programme pour élément de traitement, et programme pour processeur parallèle en mode mixte

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016534433A (ja) * 2013-10-23 2016-11-04 テクノロギアン トゥトキムスケスクス ヴェーテーテー オイ エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン
US11797310B2 (en) 2013-10-23 2023-10-24 Teknologian Tutkimuskeskus Vtt Oy Floating-point supportive pipeline for emulated shared memory architectures
KR20220077076A (ko) * 2020-12-01 2022-06-08 한국전자통신연구원 멀티 프로세서 시스템 및 그의 부동 소수점 연산 처리 방법
US11893392B2 (en) 2020-12-01 2024-02-06 Electronics And Telecommunications Research Institute Multi-processor system and method for processing floating point operation thereof

Also Published As

Publication number Publication date
JP5698445B2 (ja) 2015-04-08
CN101676865A (zh) 2010-03-24
US8135941B2 (en) 2012-03-13
CN101676865B (zh) 2013-11-27
TW201028918A (en) 2010-08-01
US20100077177A1 (en) 2010-03-25

Similar Documents

Publication Publication Date Title
JP5698445B2 (ja) 多重プロセッサ・コア・ベクトル・モーフ結合機構
US8756404B2 (en) Cascaded delayed float/vector execution pipeline
TWI628594B (zh) 用戶等級分叉及會合處理器、方法、系統及指令
JP6628801B2 (ja) プロセッサ・コアのための実行ユニット回路、プロセッサ・コア、およびプロセッサ・コア内のプログラム命令を実行する方法
US7945763B2 (en) Single shared instruction predecoder for supporting multiple processors
US6718457B2 (en) Multiple-thread processor for threaded software applications
US6279100B1 (en) Local stall control method and structure in a microprocessor
EP2480979B1 (en) Unanimous branch instructions in a parallel thread processor
US20080148020A1 (en) Low Cost Persistent Instruction Predecoded Issue and Dispatcher
WO2000033183A9 (en) Method and structure for local stall control in a microprocessor
US20090164758A1 (en) System and Method for Performing Locked Operations
US20080313438A1 (en) Unified Cascaded Delayed Execution Pipeline for Fixed and Floating Point Instructions
US8001361B2 (en) Structure for a single shared instruction predecoder for supporting multiple processors
US9594395B2 (en) Clock routing techniques
US20010042187A1 (en) Variable issue-width vliw processor
TWI546736B (zh) 多執行緒圖形處理單元管線
US6615338B1 (en) Clustered architecture in a VLIW processor
JP5128382B2 (ja) 複数のロード命令を実行するための方法および装置
US20080141252A1 (en) Cascaded Delayed Execution Pipeline
US20020087848A1 (en) System and method for executing conditional branch instructions in a data processor
US20080162894A1 (en) structure for a cascaded delayed execution pipeline
Wei et al. A near-memory processor for vector, streaming and bit manipulation workloads
JP2006221644A (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置
US20090204787A1 (en) Butterfly Physical Chip Floorplan to Allow an ILP Core Polymorphism Pairing
US20090204792A1 (en) Scalar Processor Instruction Level Parallelism (ILP) Coupled Pair Morph Mechanism

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120330

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140114

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140822

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150213

R150 Certificate of patent or registration of utility model

Ref document number: 5698445

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150