JP5646448B2 - パイプラインプロセッサ - Google Patents

パイプラインプロセッサ Download PDF

Info

Publication number
JP5646448B2
JP5646448B2 JP2011500284A JP2011500284A JP5646448B2 JP 5646448 B2 JP5646448 B2 JP 5646448B2 JP 2011500284 A JP2011500284 A JP 2011500284A JP 2011500284 A JP2011500284 A JP 2011500284A JP 5646448 B2 JP5646448 B2 JP 5646448B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
pipeline
path
paths
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
JP2011500284A
Other languages
English (en)
Other versions
JP2011528817A5 (ja
JP2011528817A (ja
Inventor
アンドリュー デイヴィッド ウェバー
アンドリュー デイヴィッド ウェバー
Original Assignee
イマジネイション テクノロジーズ リミテッド
イマジネイション テクノロジーズ リミテッド
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 イマジネイション テクノロジーズ リミテッド, イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2011528817A publication Critical patent/JP2011528817A/ja
Publication of JP2011528817A5 publication Critical patent/JP2011528817A5/ja
Application granted granted Critical
Publication of JP5646448B2 publication Critical patent/JP5646448B2/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/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
    • 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/3001Arithmetic 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/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • 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/3875Pipelining a single stage, e.g. superpipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、複数のインストラクションスレッド(パイプライン)からのインストラクションを実行するのに使用できる形式のパイプラインプロセッサに係り、より詳細には、複数のパイプラインを使用して、単一パイプラインにより以前に与えられた機能を行って、可能な限り低い待ち時間を維持できるようにすることにより、マイクロプロセッサの既存のバージョンとの両立性を維持しながら高いクロック速度でパイプラインからマイクロプロセッサへのインストラクションをスケジューリングすることを求めるものである。
マイクロプロセッサの実施及び開発の分野では、クロック速度及び/又は性能の改善によりマイクロプロセッサコアの能力を進歩し続けることが一般的な慣習である。クロック速度は、実施技術の改善につれて集積回路上の特徴部のサイズを益々小さくできる進歩型シリコンプロセス技術により改善することができる。しかしながら、おそらく、クロック速度の大きな改善は、装置のロジックの実施のオーバーホールを必要とする。典型的に、これは、マイクロプロセッサでは、1つのインストラクションがより多くのパイプラインステップを取り且つ各ステップがそのマイクロプロセッサの以前の実施で使用された周期より短くなるように、プロセッサのインストラクションパイプラインを再編成することを必要とする。
しかしながら、サイクル当たりの性能は、再パイプラインによりおそらく若干損なわれる。サイクル当たりの性能を改善するために、あるオペレーションの結果を予想し、特に、プログラムの流れ(分岐、ジャンプ、コール、復帰、等)を制御するインストラクションシーケンスの結果を予想するような、多くの進歩型技術を使用することが必要となる。一般的に、演算のような機能は、マイクロプロセッサの以前の実施に対し性能が若干低いが、最高クロック速度の増加及びプログラムフローの改善は、全体的なソフトウェア性能を、長いパイプラインがそれを低下させる以上に、改善させる。
上述した形式のマルチスレッドマイクロプロセッサが、本出願人の英国特許第GB2311882号に説明されている。これは、複数のインストラクションパイプラインからのインストラクションを受け取って実行できるマルチスレッド型プロセッサを備えている。種々の実行パイプラインの状態を監視するスケジューリングロジックは、各クロックサイクルにおいてどのパイプラインのインストラクションを実行すべきか決定する。このシステムの開発は、各インストラクションパイプラインのより特定の属性、例えば、実行を完了するための時間、インストラクションの平均実行速度、等を監視することにより、スケジューリングを改善する。
しかしながら、これらの特徴は、本発明の実施形態にとって重要でない。本発明の実施形態にとって意義のある1つの特徴は、単一パイプラインにおいて縮小インストラクションセットコンピュータ(RISC)及びデジタル信号プロセッサ(DSP)インストラクションセットのような異なるインストラクションセット間に区別があることである。
マイクロプロセッサのためのクロック速度限界を高めつつ現在の相対的性能を維持することが望まれることは明らかである。実際上、一方のカウントをクロック速度とし、他方のカウントをクロックサイクル当たりのインストラクションとすれば、一度に2つのカウントについての性能を改善することが望まれる。
本発明の好ましい実施形態は、プログラマーにとって、対応するマイクロプロセッサの従来の実施から単一パイプラインと同じであるように見える、異なる長さの複数のパイプラインを提供することを求めるものである。これは、インストラクションを、そのインストラクションの要件に基づいて正しいパイプラインへルーティングするインテリジェントなインストラクションスケジューリングに結合された単一演算パイプライン又はALUに関連した複数のパイプラインを提供することにより達成される。これに加えて、インストラクションスケジューラーは、特定のインストラクションに対する待ち時間を、どのパイプラインが使用されるかに基づいてそれが変化するとすれば、正しくモデリングする必要がある。
以下、添付図面を参照して、本発明の好ましい実施形態を一例として詳細に説明する。
マルチスレッド型プロセッサのブロック図である。 実行スレッドの各クロックサイクルにおけるステップを示す図である。 短いクロックサイクルの作用を示す図2の変形例である。 同じスレッドを通る2つの個別の経路に対するステップを示す。 同じスレッドにおける2つの経路を通るインストラクションの誤ったスケジューリングで生じ得る問題を示す。 図5の正しくスケジューリングされたバージョンを示す。 2つのパイプラインをもつスレッドのブロック図である。 高速パイプラインのブロック図である。 低速パイプラインのブロック図である。 同じ一般的な形態のインストラクションを区別するのに使用される比較的簡単な方法を示す。
本出願人の英国特許第GB2311882号に説明されたマルチスレッド型マイクロプロセッサは、図1に示す形式のものである。このプロセッサは、2で示された合計N+1個の実行スレッドを有し、それらは、スレッドインストラクションスケジューラ1へ通され、このスケジューラは、どのインストラクション(1つ又は複数)を次に実行するかを決定する。この例では、2つのパイプラインがあり、その第1は、アドレスユニット4であり、そしてその第2は、データユニット5である。マイクロプロセッサは、多数の異なる能力をサポートする。第1に、これは、システムプログラム、例えば、典型的な近代的なマイクロプロセッサの予想される埋め込み型ソフトウェア又はオペレーティングシステムを実行することができる。しかしながら、これは、デジタル信号処理(DSP)アクティビティを遂行するように連動されてもよい。DSPは、通常、特定のDSPアルゴリズムをデータストリームに適用してそれらを有用なエンドユーザ情報へと転じさせる無線、オーディオ及びビデオのようなアプリケーション領域を取り扱うときに使用される。マイクロプロセッサは、それらの寿命スパンにわたって、クロックサイクル当たりより多くのプロセスを実行するか、又は毎秒より多くのプロセッサクロックサイクルを実行する(CPI又はMIPS)ことから、より高い性能を達成するために設計し直されるのが有用である。
本発明の実施形態は、毎秒より多くのプロセッサクロックサイクルを使用する。これを達成するために、各個々のクロックサイクルは、あまり時間を要してはならず、それ故、演算オペレーションのようなパイプラインタスクを短い時間内に遂行することが必要である。装置の製造に使用されるシリコンプロセス(ダイ収縮として知られているプロセス)の変更により、あるときには、これが可能である。しかしながら、プロセスを変更せずに改善を行うことも必要であることは明らかである。
ダイ収縮に代わる1つのプロセスは、所与のオペレーションを遂行するのに、より多くのパイプライン段を使用することである。例えば、演算オペレーションを遂行するのに1サイクルが割り当てられたパイプラインは、同じオペレーションを遂行するのに2サイクルを使用して、各サイクルが半分の長さで済むようにし、それ故、2倍の速さで進むようにすることができる。このような解決策が使用される場合、余分なパイプライン段が、ソフトウェアプログラマーに見える付加的な待ち時間をパイプラインに含ませる。これは、マイクロプロセッサで実行されるプログラムが、オペレーションのフローに結果を使用するまで、結果が得られるのを待機する必要があることを意味する。パイプラインが2倍の速さで実行する場合、プログラムは、結果に対して1サイクル待機する必要があり、最終結果は、装置が非常に高いクロック速度を有するが、実際には、そのマイクロプロセッサの初期の世代より良好に働かないことになる。
これらのトレードオフをバランスするために使用される通常の方法は、スーパースカラー実行及び順序ずれ完了を含む。これらの技術は、ストールしたインストラクションを、その近傍の無関係のインストラクションが追い越すのを許す。しかしながら、この解決策の欠点は、非常に複雑なことである。
図1に示す形式のマイクロプロセッサは、2つの主たる観点を考慮する必要がある。第1に、埋め込み型システム又はオペレーティングシステム、例えば、LINUXから汎用ソフトウェアをサポートすることができる。第2に、デジタル信号処理(DSP)をサポートすることができる。少なくとも演算パイプラインに関する限りこれら2セットの機能には差がある。DSP機能は、汎用セットにおけるオペレーションに余計なオペレーションを追加する。例えば、(とりわけ)丸め及び飽和の概念を合体するように機能を拡張することにより汎用の追加がDSPの追加となる。
本発明の実施形態は、これら全ての機能を遂行できるパイプラインであって、DSPの付加的なオペレーションを伴わない汎用区分を複写して、汎用パイプラインを短く保持し、待ち時間の問題を回避できるようなパイプラインを取り上げる。それ故、汎用ソフトウェア及びDSP機能を伴う単一のパイプラインを従来有していたマイクロプロセッサは、今や、2つのパイプラインを有し、その一方は、汎用のソフトウェア機能のみを遂行し、そしてその他方は、汎用のソフトウェア機能及びDSP機能を遂行するものである。これらの2つのパイプラインは、異なる目的で使用され、即ち汎用機能及びDSP機能に使用される。これは、アプリケーション及び/又はオペレーティングシステムを実行するのに使用されるインストラクションの大半を、待ち時間を増加せずに高いクロック速度で実行できるようにする。同時に、DSPコードは、従来と同様に実行でき、且つ働くことができる。しかしながら、他のパイプラインからのデータに依存する場合には、より頻繁にストールするおそれがある。
本発明を実施できる形式のマイクロプロセッサのブロック図が、上述した図1に示されている。これは、スレッドインストラクションスケジューラへインストラクションを与えるインストラクションフェッチエンジン・インストラクションデコーダ2を備えている。インストラクションは、インストラクションキャッシュ3又はオンチップRAMから検索される。この図におけるパイプラインは、例えば、アドレスユニット4及びデータユニット5である。他の可能性もある。
図2は、1つのクロックサイクル内に含まれるインストラクションパイプラインの主たる機能を示す。これは、ALUサイクルである。このようなパイプラインは、多数の異なるインストラクション形式をサポートすることができ、特に、汎用オペレーティングシステムコード又はDSP機能を実行することに関連している。マイクロプロセッサ設計の分野では、DSPプログラム及び非DSPプログラムをサポートし且つそれらの間を区別できることが知られている。
図2において、各ボックスは、クロックサイクルを表す。各クロックサイクルで遂行されるステップは、次の通りである。
1.インストラクションを検索するためにインストラクションキャッシュへアドレスを送信するインストラクションキャッシュアドレス発行
2.フェッチされたインストラクションを返送するインストラクションフェッチデータ返送
3.インストラクションがALUによる分岐の遂行を要求するかどうかに関して予想を行う分岐予想ALU
4.インストラクションが前デコード段を経て進むところの前デコード
5.インストラクションを発行する発行
6.インストラクションがインストラクション発行と同時にその後デコード段を経て進むところの後デコード
7.どのインストラクションを動作すべきかのデータを検索するオペランドフェッチ
8.ALUにおいてオペランドでインストラクションを実行するところのALU
9.ALUの出力を適切なレジスタへ書き戻すレジスタ書き戻し
10.データフェッチアドレス発行
11.データフェッチヒット/ミス
12.データ返送及び書き戻し
ステップ10、11及び12は、データキャッシュ又はデータメモリへのアクセスを与えるので、プロセッサの一体的部分となるステップである。
このようなマイクロプロセッサが縮小インストラクションセットコンピュータ(RISC)をベースとする場合には、DSPインストラクションは、基本的インストラクションセットを越える拡張であると考えることができる。これらの拡張は、ある領域にしか適用できないのが最も一般的である。典型的な領域は、DSPが飽和及び丸めのような付加的な能力を要求する乗算及び他の演算を含む。
本発明の好ましい実施形態において、クロック速度の上限が上昇するにつれて、マイクロプロセッサのサイクル時間がより小さくなる。それ故、各サイクルに要求される機能を遂行するための時間は徐々に短くなる。加算、減算、シフト、乗算、等の主たる演算オペレーションの場合に、これらオペレーションのDSPバリアントは、非DSPバリアントより大きな時間プレッシャーのもとに存在することになる。これは、DSPバリアントが非DSP機能の上に付加的なステップを有するからである。
マイクロプロセッサの最高速度を、以前の実施形態の速度を越えて増加できるよう確保するためには、各々の時間が短いより多くのサイクルが存在するように設計を再パイプライン化する必要がある。図2のパイプラインの再パイプライン化の一例が図3に示されている。
明らかに、クロック速度の上限の上昇は、パイプラインの完全な部分に対して付加的なサイクルを使用することにより達成できる。例えば、図1において、インストラクションキャッシュのルックアップは、2つのサイクル(1及び2)を要するが、図2では、4つのサイクル(13、14、15及び16)を要する。これら付加的なサイクルは、各個々のサイクルで遂行されるものが少ないために要求される。それ故、装置がより高い速度でクロックするためには1サイクルの時間を短くする必要があるので、より多数のサイクルにわたって同じ量の作業を分散させる必要がある。
図3において、付加的なステップは、14及び15で示され、インストラクションキャッシュから発行されるべきインストラクションを検索するのに必要な付加的な時間を含む。この付加的な時間は、短縮されたサイクル周期の結果である。
ステップ17は、フェッチ予想ALUである。これは、インストラクションに関連した分岐及び復帰予想を含み、良く知られたプロセスである。
ステップ18では、前デコードが、インストラクションを、DSP又は非DSP特性を含むその要件へと解体し、そしてそれを使用して、どのパイプライン経路を使用するかを決定する。高速パイプライン経路を使用すべきか低速パイプライン経路を使用すべきかを指示するフラグが前デコードステップから出力される。これは、インストラクションの発行には影響しないが、将来の発行には影響する。というのは、インストラクションの発行が要求されたときにユニットがビジーであるか、又は書き込まれているレジスタが書き込み後に長い読み取り又は書き込みを行うことになる(即ち、レジスタハザード)からである。それ故、この特定の実施形態において低速経路フラグ及び可変将来スケジューリングハザードが適用されるのは、これらの演算ユニットについてのみである。
ステップ22及び23は、ALU1及びALU2と示されており、サイクル周期減少のためにALUがインストラクションを実行するのに必要な付加的な時間である。
この再パイプ化実行の主たる効果は、装置が毎秒より多くのサイクルを達成できることである。各サイクルにインストラクションをスタートできる場合には、それが、直接、秒当たりより多くのインストラクションとなる。しかしながら、あるインストラクションがその手前のインストラクションの完了を待機しなければならない(例えば、その結果を利用するために)場合には、再パイプライン化の後に、より多くのサイクルを待機することが必要になるという欠点がある。この付加的な待機時間は、短いサイクル周期により得られる速度の上昇に反作用し、マイクロプロセッサは、毎秒同じ数のインストラクションを追求して終了することができる。
本発明の好ましい実施形態は、遂行が容易なインストラクションを、遂行が困難なインストラクションから区別する。遂行が容易なものは、マイクロプロセッサの従来の実施と同じ待ち時間で実行されるよう試みられる。これを達成するために、重要な機能のセットに対して演算パイプラインが複製され、低待ち時間の完了容易なインストラクションに対する高速経路と、DSPインストラクションのような複雑なインストラクションに対する低速経路とが存在するようにされる。更に、インストラクションスケジューリングは、当該インストラクションを必要な高速又は低速パイプラインへルーティングし、そしてフライト中のレジスタを追跡して、継続インストラクションが発行されるときを正確に決定できるようにするための変更を必要とする。その間、マイクロプロセッサを動作するためのプログラマー発生インストラクションに関する限り、装置の以前の実施と同じ形態の単一パイプラインが存在することが明らかである。
この構成の重要な部分が図4に示されている。プログラムに関する限り、プロセッサは、初期の実施で存在した同じパイプラインを有するようにみえる。しかしながら、本発明の実施形態によれば、インストラクションのスケジューリングの変更は、1つ以上のスレッドが、一対のパイプラインを、それらパイプラインがクラッシュすることのない充分なコヒレンシーで使用するように、行われる。2つのパイプラインが異なる待ち時間を有するので、ハザードが存在する。図4の例では、高速パイプラインが1つのALUサイクル28を有し、一方、第3のパイプラインが2つのALUサイクル32及び33を有する。それ故、低速パイプラインを下るインストラクション発行がなされる場合には、次のサイクルに、高速パイプラインを下るインストラクション発行がなされることはあり得ない。これは、2つのパイプラインが図5に示すように同じサイクルで終了してデータクラッシュを招くことになるからである。
この問題を解決するために、インストラクションスケジューラーは、このクラッシュがトリガーされると決定した場合にインストラクションの発行を拒絶できるようにプログラムすることができる。例えば、低速経路と高速経路との間に衝突を発生することなくこれを実行できると決定するまで第2のインストラクションを発行しないようにプログラムすることができる。これが図6に示されている。明らかに、第1のインストラクションは、低速インストラクションの2サイクル後に発行される。しかしながら、低速インストラクションより1サイクル早く実行し、それ故、低速インストラクションの1サイクル後に実行を完了する。
それ故、インストラクションスケジューラーは、低速パイプラインインストラクションがちょうど発行されたときを追跡し、次のサイクルにそれに対応する高速パイプラインへのインストラクションの発行を防止するようにプログラムされる。これは、パイプラインにおいて遂行される最後のアクションを記録する各パイプラインのデータレコードを維持することにより行われる。次いで、これを使用して、同じパイプラインに許される次のアクションを決定することができる。インストラクションスケジューラーのこの部分は、全てのスレッドに適用され、従って、スレッドごとのベースではなく、パイプラインごとのベースで制御される。
インストラクションの各実行スレッドは、サイクルにおいてインストラクションを発行するかどうか決定する必要がある。これは、そのスレッドが、過去に発行されたインストラクションへの依存性を有するかどうかに依存する。例えば、あるインストラクションがメモリからレジスタにロードされ、その後、そのレジスタで演算オペレーションが行われる。それ故、古いインストラクションからの結果が新しいインストラクションにより要求されるかどうか決定するためにスレッドが古いインストラクションと新しいインストラクションとの間の依存性を監視することが必要である。レジスタインターロックは、まだ進行中のオペレーションのレコードを維持し、そして1つのパイプラインから、一方が他方より低速の2つのパイプラインへの変更が、これらレジスタインターロックに影響を及ぼす。
低速パイプラインへ送られるインストラクションは、高速パイプラインを下るように送られるインストラクションに比して、余分なインターロックを必要とする。これらの余分なハザードは、より多くのサイクルインストラクションを、低速パイプラインを下るように通過させ、そしてその結果をレジスタへ返送させるために生じる。パイプラインインターロックと同様に、これらのハザード及びインターロックは、インストラクションが低速パイプラインへと発行されるときを記録し、その情報を使用して、別のインストラクションが発行されるときを決定することにより、管理される。パイプラインへのアクセスに勝利する他のスレッドのような外部ファクタは、スレッドがそのサイクルにおいて発行するのを防止できるが、少なくともスレッドは、インストラクションを発行するのがいつ安全であるか否かを知り、それ故、主たるマルチスレッド型インストラクションスケジューラーへ発行するか否かを信号することができる。
図7は、ある付加的なインフラストラクチャーを伴う高速及び低速パイプラインを実施するハードウェアを示す。これは、パイプライン20及び22を各々通る低速経路及び高速経路を備えている。各スレッドに対してレジスタファイル24が保持される。これらは、マルチスレッド型プロセッサの各スレッドに対してレジスタの個別セットが保持されるようにしてレジスタアレイにおいて一緒にグループ編成される。マルチスレッド型レジスタファイルからのデータは、マルチプレクサ26及び28を経て低速又は高速経路22、24へデータを与えるように選択される。これらマルチプレクサからの出力は、低速経路又は高速経路のいずれかへ与えられる。「低速経路使用」又は「高速経路使用」を指示する信号と共に制御信号も各経路に与えられる。低速経路又は高速経路のいずれかによって処理された後、更に別のマルチプレクサ30が、各レジスタファイル又は複数のファイルへ書き戻すための出力を選択する。例えば、一対の数字を加算又は減算できるようにするため、各サイクルに2つの端がフェッチされるようにレジスタの対をルックアップすることが必要となる。明らかなように、2つのパイプラインに制御信号を送信することが必要である。所与のサイクルに1つのパイプラインしか使用されないので、これは、共通の信号である。それ故、この制御信号は、両パイプラインに対して共通である。
しかしながら、各パイプラインは、独立して実行すべきものであるから、どれがアクティブであるか制御するために各々に対して個別の制御信号(「低速経路使用」:「高速経路使用」)が与えられる。特定のサイクルには1つのパイプラインしか動作しないので、これらの制御は、相互に排他的である。
2つのパイプラインからの出力をマルチプレクサ30でマルチプレクスして、各サイクルに、一体化された単一の書き戻しをレジスタファイルへ与える必要があることに注意されたい。一般的に述べると、高速パイプラインは、低速パイプラインのサブセットである。高速パイプラインの一例が図8に示されている。これは、演算パイプラインの原理的特徴を示す。これらは、時間と共に情報の流れを制御するパイプラインレジスタ段32及び34、演算機能、例えば、加算36、減算38、シフト及び論理演算40、並びに分類された考えられる演算機能を単一の結果へと合体するのに使用されるマルチプレクシングユニット42である。
低速経路は、図9に示す同様の形態をたどる。これから明らかなように、高速及び低速パイプラインの構造は基本的に同じである。原理の相違は、低速パイプラインが作業遂行のために余分なパイプライン段をとることである。この例では、遂行される余分な作業は「丸め(ROUNDING)」42及び「飽和(SATURATION)」44を含むDSP演算である。これは、他のパイプラインから他の資料を要求することがある。例えば、メモリジェネレータは、DSPの目的でそれらに関連付けられたモジュラーアドレッシング機能を有する。低速経路の端には、更に別のレジスタ46が設けられている。
インストラクションスケジューラーが各インストラクションの正しいルートを決定するためには、インストラクションの形式を区別する何らかの手段が要求される。これは、図10に示すように、同じ一般的形態のインストラクションを区別するのに使用される単一インストラクションにおける比較的簡単な方法で達成される。
この図から明らかなように、インストラクションは同様の情報を含む。主たる相違は、インストラクションをDSPインストラクションとするか否かの単一ビットから生じる。フラグは、どんなインストラクションが行われるかの幾つかの観点を制御する。例えば、レジスタからのデータとは対照的にオペランドの1つがゼロであることを指示するためにフラグを使用することができる。
各インストラクションを区別するために複雑な方法を使用することもできる。その場合には、図2又は3の前デコード段の前に付加的なデコード段が必要となる。インストラクションデコーダ段のクロック速度に影響せずに余分な作業を行うことができる。決定が前もってなされ且つインストラクションスケジューラーにインストラクションが与えられるとすれば、インストラクションの複雑さのあらゆる種類のレベルが考えられる。
1:スレッドインストラクションスケジューラー
2:インストラクションフェッチエンジン・インストラクションデコーダ
3:インストラクションキャッシュ
4:アドレスユニット
5:データユニット

Claims (14)

  1. それぞれが異なる複雑さのインストラクションを含む、複数のインストラクションスレッドからのインストラクションを実行する、マルチスレッド型プロセッサにおいて、
    並列に前記インストラクションスレッドからの異なる複雑さのインストラクションを実行するための複数のパイプラインであって、前記異なる複雑さのインストラクションは異なるインストラクションセット構造からのインストラクションを含む、複数のパイプラインと、
    インストラクションを発行し、各クロックサイクルにインストラクションをどのパイプラインへ発行するかを決定するためのインストラクションスケジューラーとを備え、
    少なくとも1つのパイプラインは、複雑さの低いインストラクョンを実行するための低い待ち時間を有する速い経路と、高い複雑さを有するインストラクションを実行するための遅い経路との、2つのパイプライン経路を含み、さらに前記インストラクションスケジューラーは、2つのパイプライン経路のどちらで発行されたインストラクションを実行すべきか決定し、データクラッシュを生じないように、前記2つのパイプライン経路において前記発行されたインストラクションをスケジュールすることを特徴とする、
    マルチスレッド型プロセッサ。
  2. 前記インストラクションのいくつかは、デジタル信号処理(DSP)インストラクションであり、前記遅い経路で実行されるようになっている請求項1に記載のマルチスレッド型プロセッサ。
  3. 前記インストラクションのいくつかは、縮小インストラクションセットコンピュータ(RISC)インストラクションである、請求項1又は2のいずれかに記載のマルチスレッド型プロセッサ。
  4. 2つのパイプライン経路をもつパイプライン上の前記経路は、並列に前記インストラクションスレッドからの異なる複雑さのインストラクションを実行する、請求項1、2または3のいずれか1つの請求項に記載のマルチスレッド型プロセッサ。
  5. 前記インストラクションには、それらが高い複雑さのものであるかどうか指示するフラグが関連付けられ、インストラクションに関連したフラグを検出するための手段と、その検出されたフラグに基づいてどの経路でインストラクションを実行すべきか決定するための手段とを備えた、請求項1から4のいずれか1つの請求項に記載のマルチスレッド型プロセッサ。
  6. 2つのパイプライン経路のそれぞれで、当該経路で実行すべきインストラクションを同時に実行する、請求項1から5のいずれか1つの請求項に記載のマルチスレッド型プロセッサ。
  7. 前記インストラクションスケジューラーは、2つのパイプライン経路が異なるクロックサイクルで実行を完了するようにそれらパイプライン経路においてインストラクションをスケジューリングする、請求項6に記載のマルチスレッド型プロセッサ。
  8. 複数のインストラクションスレッドからのインストラクションを実行するための方法であって、
    前記インストラクションスレッドは、マルチスレッド型プロセッサで異なる複雑さのインストラクションをそれぞれが含むものであり、
    前記マルチスレッド型プロセッサは、並列に前記インストラクションスレッドからの異なる複雑さのインストラクションを実行するための複数のインストラクションパイプラインを備えるものであり、
    異なる複雑さの前記インストラクションは異なるインストラクションセット構成からのインストラクションを含むものであ
    前記方法は、
    インストラクションをどのインストラクションパイプラインに発行するかをインストラクションスケジューラーで決定するステップであって、少なくとも1つのインストラクションパイプラインは速いパイプライン経路と遅いパイプライン経路とを含むステップと、
    2つの前記パイプライン経路のどちらで発行されたインストラクションを実行すべきかインストラクションスケジューラーで判断するステップと、
    データクラッシュを生じないように前記発行されたインストラクションを2つの前記パイプライン経路においてスケジューリングするステップと、
    前記速いパイプライン経路で低い複雑さと待ち時間のインストラクションを実行し、かつ前記遅いパイプライン経路で高い複雑さと待ち時間のインストラクションを実行するステップと、
    を備えた方法。
  9. 前記インストラクションの幾つかは、デジタル信号処理(DSP)インストラクションであり、前記遅いパイプライン経路で実行される、ことを特徴とする請求項8に記載の方法。
  10. 前記インストラクションの幾つかは、縮小インストラクションセットコンピュータ(RISC)インストラクションであり、前記速いパイプライン経路で実行される、請求項8又は9のいずれかに記載の方法。
  11. パイプラインの前記2つのパイプライン経路を共通のクロック信号でクロックするステップを備えた、請求項8から10のいずれか1つの請求項に記載の方法。
  12. インストラクションが高い複雑さのものであるかどうか指示するフラグを各インストラクションに関連付けるステップと、インストラクションに関連したフラグを検出しそしてその検出されたフラグに基づいてインストラクションをどのパイプライン経路で実行すべきか決定するステップとを更に備えた、請求項8から11のいずれか1つの請求項に記載の方法。
  13. 2つのパイプライン経路上のそれぞれで、当該経路で実行すべきインストラクションを同時に実行するステップを備えた、請求項8から12のいずれか1つの請求項に記載の方法。
  14. 前記2つのパイプライン経路が異なるクロックサイクルで実行を完了するようにそれらパイプライン経路においてインストラクションをスケジューリングするステップを備えた、請求項13に記載の方法。
JP2011500284A 2008-03-19 2009-03-13 パイプラインプロセッサ Active JP5646448B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0805144.3 2008-03-19
GB0805144A GB2458487B (en) 2008-03-19 2008-03-19 Pipeline processors
PCT/GB2009/000693 WO2009115779A1 (en) 2008-03-19 2009-03-13 Pipeline processors

Publications (3)

Publication Number Publication Date
JP2011528817A JP2011528817A (ja) 2011-11-24
JP2011528817A5 JP2011528817A5 (ja) 2012-05-10
JP5646448B2 true JP5646448B2 (ja) 2014-12-24

Family

ID=39356772

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011500284A Active JP5646448B2 (ja) 2008-03-19 2009-03-13 パイプラインプロセッサ

Country Status (5)

Country Link
US (1) US8560813B2 (ja)
EP (1) EP2255280A1 (ja)
JP (1) JP5646448B2 (ja)
GB (1) GB2458487B (ja)
WO (1) WO2009115779A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2466984B (en) 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
CN102033737A (zh) * 2010-06-13 2011-04-27 苏州和迈微电子技术有限公司 面向嵌入式系统的多级流水数字信号处理器体系结构
KR101711388B1 (ko) * 2013-01-28 2017-03-02 삼성전자주식회사 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
US9696992B2 (en) * 2014-12-23 2017-07-04 Intel Corporation Apparatus and method for performing a check to optimize instruction flow
CN109634667B (zh) * 2018-12-11 2023-03-14 中国电子科技集团公司第四十七研究所 一种基于时钟的双速流水线架构微处理器及其实现方法
US11561798B2 (en) 2020-07-30 2023-01-24 International Business Machines Corporation On-the-fly adjustment of issue-write back latency to avoid write back collisions using a result buffer
US11614942B2 (en) 2020-10-20 2023-03-28 Micron Technology, Inc. Reuse in-flight register data in a processor
US11809874B2 (en) * 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0810431B2 (ja) * 1986-07-15 1996-01-31 日本電気株式会社 情報処理装置
JP2503984B2 (ja) * 1986-07-15 1996-06-05 日本電気株式会社 情報処理装置
JP3035828B2 (ja) * 1989-12-28 2000-04-24 甲府日本電気株式会社 情報処理装置
US5598547A (en) * 1990-06-11 1997-01-28 Cray Research, Inc. Vector processor having functional unit paths of differing pipeline lengths
JPH04116726A (ja) * 1990-09-07 1992-04-17 Koufu Nippon Denki Kk 情報処理装置
US5884057A (en) * 1994-01-11 1999-03-16 Exponential Technology, Inc. Temporal re-alignment of a floating point pipeline to an integer pipeline for emulation of a load-operate architecture on a load/store processor
JPH07244588A (ja) * 1994-01-14 1995-09-19 Matsushita Electric Ind Co Ltd データ処理装置
SG75756A1 (en) * 1994-02-28 2000-10-24 Intel Corp Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path
JP3435278B2 (ja) * 1996-02-02 2003-08-11 東芝マイクロエレクトロニクス株式会社 データ処理装置
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US5844830A (en) * 1996-08-07 1998-12-01 Sun Microsystems, Inc. Executing computer instrucrions by circuits having different latencies
US5948098A (en) * 1997-06-30 1999-09-07 Sun Microsystems, Inc. Execution unit and method for executing performance critical and non-performance critical arithmetic instructions in separate pipelines
AU2001285065A1 (en) * 2000-08-30 2002-03-13 Vxtel, Inc. Method and apparatus for a unified risc/dsp pipeline controller for both reducedinstruction set computer (risc) control instructions and digital signal process ing (dsp) instructions
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
JP2005209105A (ja) * 2004-01-26 2005-08-04 Matsushita Electric Ind Co Ltd マルチスレッドプロセッサ
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
US20060200651A1 (en) 2005-03-03 2006-09-07 Collopy Thomas K Method and apparatus for power reduction utilizing heterogeneously-multi-pipelined processor
US7415595B2 (en) * 2005-05-24 2008-08-19 Coresonic Ab Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory
US7818550B2 (en) * 2007-07-23 2010-10-19 International Business Machines Corporation Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system
US20090160863A1 (en) * 2007-12-21 2009-06-25 Michael Frank Unified Processor Architecture For Processing General and Graphics Workload

Also Published As

Publication number Publication date
WO2009115779A1 (en) 2009-09-24
US8560813B2 (en) 2013-10-15
GB0805144D0 (en) 2008-04-23
GB2458487B (en) 2011-01-19
GB2458487A (en) 2009-09-23
US20090249037A1 (en) 2009-10-01
EP2255280A1 (en) 2010-12-01
JP2011528817A (ja) 2011-11-24

Similar Documents

Publication Publication Date Title
JP5646448B2 (ja) パイプラインプロセッサ
US9715391B2 (en) Cache memory apparatus
JP6095670B2 (ja) コンピュータ・システム内のオペランド活性情報の維持
US8423750B2 (en) Hardware assist thread for increasing code parallelism
US7360218B2 (en) System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
US7676808B2 (en) System and method for CPI load balancing in SMT processors
JP5666473B2 (ja) マルチスレッド式データ処理システム
US20110265068A1 (en) Single Thread Performance in an In-Order Multi-Threaded Processor
JP2008538436A (ja) マルチスレッド化されたプロセッサ内で低消費電力モードを自動的に呼び出すための装置及び方法
US20030135716A1 (en) Method of creating a high performance virtual multiprocessor by adding a new dimension to a processor's pipeline
KR20100111700A (ko) 로킹된 오퍼레이션을 수행하기 위한 방법 및 시스템
US7028167B2 (en) Core parallel execution with different optimization characteristics to decrease dynamic execution path
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
EP1444571B1 (en) Hidden job start preparation in an instruction-parallel processor system
TW200409019A (en) Configurable processor, and instruction set, dispatch method, compilation method for such processor
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
KR100888675B1 (ko) 임베디드 코어에서 멀티 쓰레드 실행을 위해 확장된프로세서 및 임베디드 코어에서 멀티 쓰레드 실행 방법
JP2003167748A (ja) マルチスレッド計算機
JP3541356B2 (ja) 階層型命令を実行する計算機
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
JP5573038B2 (ja) マルチスレッドプロセッサ及びプログラム
JP3743155B2 (ja) パイプライン制御型計算機
JP2011008617A (ja) マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120313

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130926

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131226

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140409

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140709

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646448

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250