JP5607545B2 - マイクロプロセッサシステムにおける命令フェッチングの優先順位付け - Google Patents

マイクロプロセッサシステムにおける命令フェッチングの優先順位付け Download PDF

Info

Publication number
JP5607545B2
JP5607545B2 JP2010545556A JP2010545556A JP5607545B2 JP 5607545 B2 JP5607545 B2 JP 5607545B2 JP 2010545556 A JP2010545556 A JP 2010545556A JP 2010545556 A JP2010545556 A JP 2010545556A JP 5607545 B2 JP5607545 B2 JP 5607545B2
Authority
JP
Japan
Prior art keywords
instruction
thread
instructions
priority
threads
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
JP2010545556A
Other languages
English (en)
Other versions
JP2011511378A (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 JP2011511378A publication Critical patent/JP2011511378A/ja
Application granted granted Critical
Publication of JP5607545B2 publication Critical patent/JP5607545B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Description

本発明は、マイクロプロセッサシステムにおける命令フェッチングの優先順位付けに関し、特にマルチスレッドマイクロプロセッサシステムにおけるこの実装に関する。
本発明者らの欧州特許出願EP0891588号には、複数のデータ入力と複数のデータ出力との間でデータ処理手段を介して複数の実行スレッドをルーティングするマルチスレッドマイクロプロセッサ及びデータ処理管理システムについての記載がある。データ処理手段はデータ記憶手段にアクセスすることができ、システムは、実行できるルーティング動作及びデータ処理動作を繰り返し決定して、ルーティング及びデータ処理動作の少なくとも一方の実行をそれぞれのクロックサイクルで開始する。
このようなシステムでは、メモリ管理ユニットを使用して、内部メモリキャッシュ又は外部メモリのいずれかからデータをフェッチする。通常、外部メモリは単一のデータ経路しか持たず、従ってメモリプレアービタを使用して、メモリからのデータに関して異なるスレッドからの要求間でアービトレーションを行う。
本発明者らの欧州特許出願EP1738259号では、実行中の様々なスレッドに付随する様々なメトリックを使用してメモリアービトレーションを改善するためのスキームを提案している。
上述した種類のマルチスレッドプロセッサに対する改善として、本発明者らが「スーパースレッディング」と呼ぶ概念が導入されてきた。この概念では、所与のクロックサイクルで2以上の実行スレッドに対して命令が出される。全ての実行スレッドに対する命令を単一のクロックサイクルで出すことができ、4スレッドの実施構成では最大で1クロックサイクル当たり4つの命令が出される。しかしながら、このような実施構成は、全ての実施可能なスレッドが、利用可能ないつでも実行できる命令を有している場合にしか完全に利用されることはない。
マルチスレッドプロセッサのいくつかの実施構成では、例えば1つのスレッドに対して8つまでの命令を保持できる命令バッファがスレッドに提供される。この命令バッファは命令フェッチルーチンを使用することによって満たされ、この命令フェッチルーチンは、使用される現在の命令に先だって命令をフェッチすることができ、さらに命令によって生じ得る分岐又はハードウェアループ予測などの動作も決定できることが好ましい。
複数のスレッドを利用する場合、通常、命令データをフェッチできるソースは1つ又は2つしか存在しない。これらは、命令キャッシュ及び組み込み命令RAMメモリである。したがって、4つの実行スレッドを有する装置では、命令データのソースよりも多くのスレッドが存在するため、スレッド間アービトレーションを実施して命令データへのアクセスを最適化することが必要となる。
本発明の好ましい実施形態は、異なる実行スレッドのための命令フェッチング間の効率的なアービトレーションの問題に対処する一方で、できるだけ多くのスレッドがそのバッファ内に次の実行のための少なくとも1つの命令を有することを確実にしようと試みる。
本発明の1つの態様によれば、少なくとも1つの命令ソースからの、マルチスレッドプロセッサシステムにおける複数の実行命令スレッドの各々に対する命令のフェッチングに優先順位を付ける方法が提供され、この方法は、個々のスレッドに関して、そのスレッドでの実行のために現在バッファされている命令の数に基づいて第1のメトリックを決定するステップと、個々のスレッドに関して実行ベースの第2のメトリックを決定するステップと、第1及び第2のメトリックからスレッドの優先順位を決定するステップと、命令を要求している決定優先順位の最も高いスレッドのソースから命令をフェッチするステップとを含む。
本発明の上記の及びその他の態様は、ここで参照すべき添付の特許請求の範囲で定義される。
以下、添付図面への参照の一例として本発明の好ましい実施形態の詳細な説明を示す。
本発明を具体化するマルチスレッドプロセッサを示す図である。 図1のシステムで使用する命令フェッチサブシステムを示す図である。 図2の命令フェッチサブシステムで使用する命令フェッチユニットを示す図である。 図2の命令フェッチサブシステムと共に使用するプライオリティアービタを示す図である。
図1に示すシステムはマルチスレッドプロセッサコアを含む。このマルチスレッドプロセッサコアは、各々が命令フェッチユニット2を介して命令を提供するいくつかのスレッドを実行することができる。複数の実行スレッドの各々により実行される命令は、各スレッドごとに1つのスレッド命令フェッチユニット2によりフェッチされる。システムはあらゆる数のスレッドを有することができるが、現在では通常2又は4が使用される。一般に、これらのスレッドは、スレッド命令スケジューラ4を介してこれらの命令を出す能力に従って並行して動作するように構成されるが、個々のクロックサイクルで1つのスレッドのみが実行できるシステムでこれらを使用することもできる。本例では2つの命令ソースが存在し、命令キャッシュ6が外部メモリから命令を読み出し、コアコードメモリ8が、オペレーティングシステム命令及びこの種のその他の命令を記憶する。命令キャッシュとスレッド命令フェッチユニットとの間にはアービトレータが位置し、コアコードメモリ8とスレッド命令フェッチユニットとの間にはさらなるアービトレータが位置する。このアービトレータを使用して、いずれのスレッドが次に個々の命令ソースから命令を読み出すべきかを決定する。
この例では、スレッド命令スケジューラ4が、この図では演算/論理ユニット(ALU)12で表される4つの実行パイプラインの各々に命令を出す。これらが複数の実行スレッドを実行する。
実行スレッド上のデータメモリに対する要求が命令として開始され、この命令は出された後に、要求をデータキャッシュ14へルーティングするか、又はRAMコアコードデータメモリ16へルーティングするかの決定ポイントに命令スケジューラを介して渡される。MMU18が、データキャッシュ14及び命令キャッシュ6からの要求を処理して外部メモリからデータを読み出す。
この構成の変形例として、コードとデータとの間でRAMを共有することができる。しかしながら、この場合実施構成が複雑になり、現在では使用されていない。当然ながら実行ユニット間には、本発明の表現を理解する必要がないという理由で明確化のためにこの図には示していない多くの相互接続が存在する。
完全な実施構成では、キャッシュサブシステム3の代わりにアクセスできる少量のオンチップRAMを組み込むことができる。いくつかのシステムでは、命令RAM及びデータRAMも組み込むことができる。
マルチスレッドプロセッサは多くの他の文献に記載されており、当業者には周知であろう。本明細書で説明する本発明の実施形態は、好ましくは2以上のスレッドに対する命令をあらゆる所与のクロックサイクルで出すことができる命令スケジューラに供給するための命令のフェッチの優先順位付けに焦点を合わせている。本発明を具体化する適当なシステムのブロック図を図2に示す。この図は、命令フェッチサブシステムにおける主要素を全て示している。
この実施形態では2つの命令データソースが存在するが、これは1つのみであっても又は3以上であってもよい。これらは、命令キャッシュ20及びオンチップRAM22であり、オンチップRAM22は、実行命令スレッドの様々なスレッド上で実行される必要があり得るマイクロプロセッサのための組み込み命令を搭載する。スレッドが命令を要求した場合、命令キャッシュ20又はオンチップRAM22のいずれかから命令をフェッチする必要がある。命令を要求するスレッドは、利用可能な命令ソースの1つ、すなわち要求された命令を含むソースへこの要求を送信する。個々のスレッドは、クロックサイクルにつき1つの命令フェッチしか出すことができない。
2つの命令ソースが存在する場合、異なるスレッドが別のものとして個々の命令ソースに同時にアクセスすることができる。命令キャッシュ20又はオンチップRAM22のいずれかから命令にアクセスすべきスレッドを決定するために、個々の命令ソースは、これらとスレッドの各々の命令フェッチユニットとの間に結合されたプライオリティアービタ24を有する。
個々のプライオリティアービタは、スレッドの各々(スレッド0〜スレッドn)の命令フェッチユニット26に結合される。この接続を介して、プライオリティアービタは、命令に対する要求を関連する優先順位付けデータと共に受け取り、フェッチされた命令を命令フェッチユニット26に提供することができる。
個々の命令フェッチユニット26は命令バッファを含み、この命令バッファは、命令デコーダ及びリソース連動ユニット28に供給する準備が整っている命令を8つまで保持することができ、その後命令スケジューラ30に命令を出して、この命令スケジューラ30がさらに個々の命令をプロセッサに渡して命令が実行される。
プライオリティアービタ24は、個々のスレッドの命令スレッドフェッチユニット26から、命令フェッチユニット26が命令バッファ内に、又は命令バッファ内にロードする処理において残した命令データがいくつ存在するかについての測定値、すなわち現在バッファ済みの命令の数に関するデータを受け取ることによって動作する。したがって、命令バッファが8つの命令を含むことができ、現在のところ5つの命令を含んでいる場合、現在スレッドが5つのバッファ済み命令(又はそのバッファ内に3つのさらなる命令用のスペース)を有する旨を示すデータがプライオリティアービタへ送信される。次に、プライオリティアービタは、他のスレッドから受け取ったデータとこのデータを比較して、スレッドの優先順位を決定する。その後、プライオリティアービタは、優先順位が最も高く命令の要求も行っているスレッドに優先権を与える。
プライオリティアービタ24は、この命令を出すための第1の優先順位付けの測定値をさらなる測定値と組み合わせることができる。この第2の測定値は、スレッドに与えられる総合的な優先順位のより高度な測定値である。通常、この測定値は、スレッドのいくつかの異なる特性の組み合わせである。これらの特性は、スレッドを実行しなければならない期限であるデッドラインカウント、スレッドの実行が最初に要求されてからの遅延である遅延カウント、これから実行すべき命令の数、及びスレッドに与えられる公称優先順位である優先順位を含むことができる。デッドラインカウントは、スレッドの実行をいつ完了させる必要があるかを決定するので、これらの中で最も重要である。この種の測定値では、スレッドの優先順位に関するその他の要素を使用することもできる。
したがって、本発明の好ましい実施形態では、個々のプライオリティアービタ24が、命令の必要性に関する優先順位の測定値、すなわちスレッドの命令バッファの充満度に基づく測定値と、いくつかの異なる因子に基づくことができる総合的なスレッドの優先順位とを組み合わせる。これらを使用して、個々のプライオリティアービタが、命令キャッシュ又はオンチップRAMのいずれかから個々のサイクルで命令を要求する場合、いずれの所与のサイクルにおいても、決定優先順位が最も高いスレッドが命令キャッシュ又はオンチップRAMに適宜アクセスできるスレッドとなるようにスレッドの優先順位の順番リストを決定することができる。スレッドは、一度にこれらの命令ソースの1つにしかアクセスしない。スレッドが両方から同時に命令をフェッチすることはできない。
この例では、命令キャッシュに1つ及びオンチップRAMに1つの、2つのプライオリティアービタを示している。各々には同じメトリックが提供される。各々が、クロックサイクルごとに同じ優先順位リストを生成する。しかしながら、これらのプライオリティアービタは、関連するソースから命令を要求する相互に排他的なスレッドの組を有する。単一のソースを含むあらゆる数の命令ソースによって本発明の実施形態を実施することができる。
より具体的には、本発明の実施形態は、2又はそれ以上のスレッド(通常は4)を有するマルチスレッドプロセッサ上で実行される。マルチスレッドプロセッサとは、実行ユニット、キャッシュ及びメモリを備え、付加的に複数の実行命令のスレッドの概念を組み入れたマイクロプロセッサのことである。スレッドは、マイクロプロセッサのリソースを利用するように作用する数々の命令で構成され、これらのリソースのいくつかはこの特定のスレッドに固有のものとすることができ、いくつかはスレッド間で共有することができる。リソースは、キャッシュ及び関連メモリ内のレジスタ、帯域幅、及び空間を含む。
マルチスレッドプロセッサにおける個々のスレッドは固有のプログラムカウンタを有し、これをさらに使用して、このスレッドの命令フェッチを制御する。したがって、全てのスレッドが、命令メモリ又は命令キャッシュから命令をフェッチしてこのスレッド上で実行するための1つのハードウェアを有する。個々のスレッドが固有の命令メモリ又は命令キャッシュを有することは可能であるが、全てのスレッド間で命令メモリ及び命令キャッシュを共有し、メモリ又はキャッシュへのアクセス権に関してこれらの間でアービトレーションを行うことにより、コスト及びサイズが最小化される。
ラウンドロビンなどの単純なアービトレーション法は、ある程度まで十分機能することができる。異なるスレッドが異なる作業負荷を有し、最も需要の高いスレッドが命令にアクセスする際に他のスレッドよりも上の優先順位を得るようにスレッドの優先順位間のバランスを取る必要がある場合に困難が生じる。
上述した本発明者らの欧州特許出願第EP1738259号では、より高度なアービトレーションの1つの形について説明しており、この場合、ハードウェアが時間に伴うスレッドの負荷をモニタし、これを定められたリソース要件と照合する。この欧州特許では、この形を使用してメモリなどのリソースへのアクセスを決定する。
本発明者らは、2以上のスレッドがあらゆる所与のサイクルで命令を出すことができることを理解している。これが行われるためにはいくつかの基準を満たす必要があり、まず第1に、全てのスレッドが発行可能な命令を有している必要があり、第2に、2つのスレッドが同じリソースを同時に使用することを試みないようにこれらの命令が互いに両立し得る必要がある。この状況では、リソースが、実行ユニット、データキャッシュアクセス、コプロセッサアクセスなどをカバーする。したがって、n個のスレッドのシステムでは、単一のサイクル中に0とnの間のあらゆる数のスレッドが命令を出し得る。
特に2以上のスレッドが同時に命令を実行できるスーパースレッディングプロセッサでは、いずれのスレッドがいずれのリソースを必要としているかを判断するための処理が複雑となる。しかしながら、個々の命令を実行予定候補として命令スケジューラ4に対して利用可能にする前のプレデコード段階を通じてこれらの命令を渡すことにより判断が開始される。このプレデコード段階を使用して、命令が必要とするリソースを選出する。
スーパースレッディングプロセッサでは、減少したこれらのリソース要件の組がテストされる。単純な例を選択すると、スレッドが、実行ユニットを使用してデータメモリのフェッチ要求を送信し、いくつかのデータをロード又は記憶したいと望むことがある。別のスレッドが、同じ実行ユニット又はデータメモリポートを使用してデータメモリをフェッチしたいと望む場合、第1のスレッドの実行と両立しなくなることにより、これらの2つは同時には発行されなくなる。しかしながら、別のスレッドが、これらのリソースを必要としないプログラム分岐などの異なる命令セットを実行したいと望む場合には両立可能と見なされ、スレッドを使用してデータメモリのフェッチを要求するのと同時に、実行のために別のスレッドが発行される。
適切な判断を行うために、存在するスレッドは全て、互いに並行してテストされた定められた全てのリソース要件を有する。この処理は、スレッドAがスレッドBと両立できる場合には定義によりスレッドBがスレッドAと両立することもできるという点で対称的である。したがって、このテストは、個々のスレッドのペア間で一度行うだけでよい。
この両立性テストの結果、個々のスレッドのペアリングに対してフラグが生成され、このフラグの状態により、スレッドに両立性があるかどうかが判断される。したがって、個々のスレッドを他の全てのスレッドに対してテストした結果、個々のスレッドのペアごとに両立性フラグが生成され、この状態により、スレッドが実行に関して両立性があるかどうか、すなわち同時にリソース要件と重複するスレッドが2つのみであるかどうかが判定される。
また、スレッドはランク付けされた順序を有する。両立性状態の情報を使用して、より低いランクの各々を順々に検討することにより、この順序における個々のランク、最終的な両立性の設定が作成されるようになる。あるランクが、優先順位の最も高いスレッドと両立性がある場合、このスレッドが実行のための設定に追加され、両立性がなければ、このスレッドはスキップされ次のスレッドが検討される。実際の命令の予定への最終ステップでは、ランキングの最も高い発行できるスレッドが決定され、すなわちリソース又はレジスタが利用可能になるのを待つことはない。その後、このスレッドが、そのスーパースレッディングセット(このスレッドと共に実行できる他のスレッド)と共に発行される。
スレッドが同時に命令を出す能力を最大にするためには、できる限り全てのスレッドが発行可能な命令を有していることが重要である。したがって、プライオリティアービタは、スレッド命令バッファ内に何も有していない、又はスレッド命令バッファのスレッド命令外で実行されているスレッドのフェッチング命令に適宜優先権を与えるように構成される。この結果、これらのスレッドは、総合的な優先順位ランキングがより高いスレッドを含む命令をフェッチする際に他のスレッドよりも優先される。
スレッド命令フェッチユニットの好ましい実施形態を図3に示している。個々のスレッドには、このような命令フェッチユニットが提供される。命令キャッシュから命令を取得することに関連してこの特定の例を示しているが、同様にこの例を図2に示すようなオンチップRAMと共に使用することもできる。
命令フェッチユニットは命令アドレス供給ユニット32を含み、これが命令に対する要求を命令キャッシュへ送信する。命令キャッシュ内で命令を検索する時間に起因して、命令アドレス供給ユニット32からの命令の発行間にはいくらかの待ち時間が存在し、数々の発行命令から待ち時間を低減又は全く排除するのに十分な頻度で命令を要求するように命令フェッチエンジンを構成することが好ましい。
非マルチスレッドマイクロプロセッサでは、命令の消費が最大要求レートよりも低い場合、命令フェッチのパイプラインが失速することがある。しかしながら、スレッド間で命令キャッシュを共有するマルチスレッドシステムでは、このような失速によりスレッド間に依存関係が生じ、いくつかの命令を要求したもののこれらを使用していないスレッドがシステム内の全ての他のスレッドを失速得るようになるので、通常このような失速が起きる可能性はない。したがって、個々のスレッド命令フェッチユニットは、一定数の命令要求の戻りデータを保持できる命令バッファを組み込んでいる。命令バッファ内に存在する記憶できるスロットと同じ数の命令要求を送信中とすることができる。命令バッファは34で示している。命令バッファを経て、命令は、命令データ供給ユニット36を介して命令スケジューラに渡される。
本発明の好ましい実施形態では、38における命令バッファの充満度に関するデータが、スレッド命令フェッチユニットから抽出される。このデータは、命令バッファ内で利用可能なスロットの数を示すデータ値、又はいくつのスロットがすでに占有されているかを示すデータ値であってもよい。このデータは、図2に示す種類のプライオリティアービタ24に提供され、このプライオリティアービタがこのデータを使用して、他のスレッドと比較して命令が不足しつつあるスレッドの命令フェッチに優先順位を付ける。この結果、このスレッドの命令バッファにできるだけ早くさらなる要求が提供されて、命令スケジューラに対して大量の命令が利用可能となることを確実にする。
したがって、いくつかのスレッドの各々に図3の命令フェッチユニットを使用して、どのスレッドの命令バッファが最も多くの命令を有し、どれが最も少ないかを示すデータを提供することができる。これらのデータがプライオリティアービタによって比較され、優先順位付けリストが生成される。この結果、命令バッファ内の命令が最も少ないスレッドを、(このスレッドが命令を要求しているとした場合)次のクロックサイクルの次の命令フェッチに対して優先させることができる。同時に、スレッドの少なくとも1つが命令スケジューラに命令を出し、この結果さらに次のクロックサイクルの優先順位を変更することができる。したがって、優先順位が最も高く、命令ソースからの命令も要求しているスレッドが、命令をフェッチすることになる。
上述したように、このシステムは、スレッドを個々の命令フェッチユニット内の命令バッファ34の充満度に基づく順序にソートすることにより、スレッドに優先順位を付ける。本発明の好ましい実施形態は、付加的なアービトレーションのレベルを追加することによりこれを修正する。
図2に示す種類のプライオリティアービタを図4にさらに詳細に示す。プライオリティアービタ24は命令要求を受け取り、その関連するオンチップRAM又は命令キャッシュからの命令を、マルチスレッドプロセッサにおいて提供されるそれぞれのスレッドの命令フェッチエンジンの各々に与える。プライオリティアービタへの入力は、それぞれの命令バッファの充満度により個々のスレッドの命令フェッチエンジンに関して決定された優先順位である。この入力を別個のユニットで得ることができる。或いは、関連データ値をプライオリティアービタ自体に提供し、その後このプライオリティアービタが必要な優先順位を計算するようにしてもよい。
個々の命令フェッチユニットは、自身の命令バッファを満たすのに十分な命令しかフェッチできないので、命令バッファが満たされたスレッドは、各サイクルにおいて新しいフェッチを要求することはない。したがって、プライオリティアービタは、新しい命令を要求している最も高い優先順位のスレッドを、このスレッドの要求信号を介して決定する。
プライオリティアービタ24により決定された、又は別個のユニットから受け取った優先順位は、発明者らが自動MIPSアロケーション(AMA)メトリックと呼ぶ上述した優先順位に関する付加的な測定値と組み合わされる。これは、例えば、デッドラインカウント、遅延カウント、及びスレッドの実行に影響を与えるその他の考えられる因子の組み合わせであってもよい。事実上、命令バッファの充満度から決定されたプライオリティメトリックと組み合わせることができるのは実行ベースのメトリックである。
AMAメトリックは、単純なスレッドの順序に容易化され、すなわちこれはソートしたスレッドのリストである。これは、バッファ容量に関するデータのリストを有する個々のスレッドの各々の命令バッファの充満度とは対照的である。次に、プライオリティアービタ24により、これらの2つの情報を使用して優先順位が決定される。
バッファ容量は極めて重要であり、リストが形成され、最も満たされたスレッドの命令バッファから最も空に近いものへの順序でソートされる。最も空に近いものに高い優先順位がある。スレッドが全て異なるバッファ充満度を有する場合、本発明の好ましい実施形態では、これで処理が終了する。AMAメトリックは、同じバッファ充満度を有するスレッドの正しい順序を決定するためにのみ使用される。
例えば、4つのスレッドを有し、各々の命令バッファが空である場合、各々に命令がフェッチされる必要性は等しい。したがって、次にアービタは、個々のスレッドのAMAメトリックについて検討する必要がある。これらは、3、2、1、及び0にランク付けされる。3を最も高い優先順位のメトリックとし、0を最も低い優先順位のメトリックとした場合、3のAMAを有するスレッドが、次の命令フェッチに対して最も高い優先順位を有することになる。
別の例では、スレッド0、1、2、及び3の命令に対する必要性にそれぞれ1、2、2、0の優先順位が与えられ、個々のスレッドのAMAメトリックがそれぞれ3、2、1、及び0である場合、最終的な優先順位は、1、3、2、及び0になる。これは、スレッド1及び2が命令に対する最も高い必要性を有し、これらの2つのスレッドのうち、スレッド1は3のAMA優先順位を有し、スレッド2は2のAMA優先順位を有するからである。
全てのスレッドが異なる必要性を有する場合、命令をフェッチする順序が決定され、AMAメトリックは命令をフェッチする順序には影響を与えない。プライオリティアービタは、より速い優先順位の決定を可能にするので、現在ではハードウェアに実装することが好ましい。しかしながら、ソフトウェアの方がより速くなる場合、アービタをソフトウェアの形で実装することもでき、実際にいくつかのアプリケーションでは、現在ソフトウェアの実施形態により許容できるパフォーマンスが与えられることがある。動作時には、スレッドの各々を個々のクロックサイクルで内部的にチェックして、これらがいずれかの特定のメモリから命令を要求しているかどうかを判定する。最も高い優先順位のスレッドが命令を要求しており、これが何らかの方法でブロックされていなければ要求が出される。これは、将来のサイクルで使用される必要なメトリックを変えることになる。最も高い優先順位のスレッドが要求を作成していなければ、他の全ての優先順位を順々に検討して、これらを使用できるかどうかを確認する。命令を要求できるスレッドがない場合、このサイクルでは要求は作成されない。
命令がフェッチされると、この命令はオンチップRAM又は命令キャッシュからスレッド命令フェッチユニットに直接供給される。命令が命令フェッチユニットに到達する順序は、フェッチされる命令のソース及び個々のソース内の命令の場所によって様々であってもよい。
命令キャッシュから又は専用の命令メモリから命令をフェッチできる図2のシステムを使用して、異なるスレッドが命令キャッシュ及び命令メモリにそれぞれ同時にアクセスできることが理解されるであろう。これには、2つのプライオリティアービタが必要となる。2つの装置間でアービタの優先順位リストを共有することができる。
したがって、好ましい実施形態では、スレッドを実行するための命令フェッチユニットの各々に結合された個々の命令ソースごとにアービタが提供される。これらは、命令を要求する個々のスレッドから様々な時点で命令フェッチ要求を受け取り、要求間でアービテーションを行っていずれのスレッドがこのソースから命令を受け取るべきかを決定する。個々のスレッドは、1クロックサイクル当たり1つの命令フェッチしか出すことができない。スレッドは、異なるソースからの命令を要求しないと同時に、依然として第1のソースからの未処理の要求を有していることが好ましい。
20 命令キャッシュ
22 オンチップRAM
24 プライオリティアービタ
26 命令フェッチ
28 命令デコード及びリソース連動
30 命令スケジューラ

Claims (8)

  1. 複数の命令ソースからの、マルチスレッドプロセッサシステムにおける複数の実行命令スレッドの各々に対する命令のフェッチングに優先順位を付ける方法であって、
    複数の命令をバッファするためのバッファを各々含む個々のスレッド毎に、そのスレッドでの実行のために現在バッファされている命令の数に基づいて第1のメトリックを決定するステップと、
    前記個々のスレッドからの前記第1のメトリックから、命令をフェッチするための優先順位を決定するステップと、
    記優先順位のリストを、個々のスレッド毎の実行ベースの優先順位メトリックと組み合わせて、スレッドの優先順位の順番リストを決定するステップと、
    命令を要求しているスレッドのうちで前記決定された優先順位が最も高い前記スレッドのために、前記命令のソースから、命令をフェッチするステップと、
    を含み、
    前記第1のメトリックが個々のスレッド毎の充満度に基づいており、前記第1のメトリックが前記優先順位を最初に決定し、前記実行ベースの優先順位メトリックが前記第1のメトリックからでは競合が存在するスレッド間の優先順位を決定スレッドが、前記複数の命令ソースのいずれか1つから、前記複数の命令ソースの各々に設けられた優先順位アービタを介して、命令を要求することができ、2以上のスレッドが、個々のクロックサイクルで命令を実行することができる、ことを特徴とする方法。
  2. スレッドが、個々のクロックサイクルで命令ソースから命令を要求することができる、
    ことを特徴とする請求項1に記載の方法。
  3. 第1の命令ソースから命令を要求したスレッドは、前記第1の命令ソースに対する要求が完了するまで第2の命令ソースから命令を要求することができない、
    ことを特徴とする請求項に記載の方法。
  4. 前記スレッドが、自身のバッファ内に命令を含むいずれのスレッドを個々のクロックサイクルで実行すべきかを決定するための実行ランクの順序を有する、
    ことを特徴とする請求項に記載の方法。
  5. 複数の命令ソースからの、マルチスレッドプロセッサシステムにおける複数の実行命令スレッドの各々に対する命令のフェッチングに優先順位を付けるシステムであって、前記システムが、
    複数の命令をバッファするためのバッファを各々含む個々のスレッド毎に、そのスレッドでの実行のために現在バッファされている命令の数に基づいて第1のメトリックを決定して、個々のスレッドからの前記第1のメトリックから、命令をフェッチするための優先順位を決定する優先順位アービタ(24)であって、前記優先順位と実行ベースの優先順位メトリックとを組み合わせて、スレッドの優先順位の順番リストを決定する、前記複数の命令ソースの各々に設けられた複数の優先順位アービタ(24)と、
    命令を要求しているスレッドのうちで前記決定された優先順位が最も高い前記スレッドのために、前記命令のソースから、命令をフェッチするための命令フェッチユニット(26)と、を備え、
    前記第1のメトリックが個々のスレッド毎の充満度に基づいており、前記第1のメトリックが前記優先順位を最初に決定し、前記実行ベースの優先順位メトリックが前記第1のメトリックからでは競合が存在するスレッド間の優先順位を決定スレッドが、前記複数の命令ソースのいずれか1つから、該命令ソースに設けられた優先順位アービタを介して、命令を要求することができ、2以上のスレッドが、個々のクロックサイクルで命令を実行する、ことを特徴とするシステム。
  6. スレッドが、個々のクロックサイクルで命令ソースから命令を要求することができる、
    ことを特徴とする請求項に記載のシステム。
  7. 第1の命令ソースから命令を要求したスレッドは、前記第1の命令ソースに対する要求が完了するまで第2の命令ソースから命令を要求することができない、
    ことを特徴とする請求項に記載のシステム。
  8. スレッドが、自身のバッファ内に命令を含むいずれのスレッドを個々のクロックサイクルで実行すべきかを決定するための実行ランクの順序を有する、
    ことを特徴とする請求項に記載のシステム。
JP2010545556A 2008-02-07 2009-02-09 マイクロプロセッサシステムにおける命令フェッチングの優先順位付け Active JP5607545B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0802314.5 2008-02-07
GB0802314A GB2457265B (en) 2008-02-07 2008-02-07 Prioritising of instruction fetching in microprocessor systems
PCT/GB2009/000360 WO2009098489A1 (en) 2008-02-07 2009-02-09 Prioritising of instruction fetching in microprocessor systems

Publications (2)

Publication Number Publication Date
JP2011511378A JP2011511378A (ja) 2011-04-07
JP5607545B2 true JP5607545B2 (ja) 2014-10-15

Family

ID=39204442

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010545556A Active JP5607545B2 (ja) 2008-02-07 2009-02-09 マイクロプロセッサシステムにおける命令フェッチングの優先順位付け

Country Status (5)

Country Link
US (2) US9348600B2 (ja)
EP (1) EP2240850B1 (ja)
JP (1) JP5607545B2 (ja)
GB (1) GB2457265B (ja)
WO (1) WO2009098489A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101325063B (zh) * 2007-06-12 2011-02-16 建兴电子科技股份有限公司 全息储存系统中寻找定位点位置的方法
JP5173711B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
TWI474280B (zh) * 2010-04-21 2015-02-21 Via Tech Inc 增進繪圖處理單元之總處理量的方法與系統
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8738830B2 (en) 2011-03-03 2014-05-27 Hewlett-Packard Development Company, L.P. Hardware interrupt processing circuit
US9645823B2 (en) 2011-03-03 2017-05-09 Hewlett-Packard Development Company, L.P. Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity
US9189283B2 (en) 2011-03-03 2015-11-17 Hewlett-Packard Development Company, L.P. Task launching on hardware resource for client
JP5803972B2 (ja) 2013-04-18 2015-11-04 株式会社デンソー マルチコアプロセッサ
JP6384380B2 (ja) 2015-03-27 2018-09-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20170139716A1 (en) 2015-11-18 2017-05-18 Arm Limited Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
US10353711B2 (en) * 2016-09-06 2019-07-16 Apple Inc. Clause chaining for clause-based instruction execution
EP4229506A1 (en) * 2020-10-14 2023-08-23 Telefonaktiebolaget LM Ericsson (publ) Apparatus and method for simultaneous multithreaded instruction scheduling in a microprocessor

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583089B1 (en) * 1992-08-12 2000-01-26 Advanced Micro Devices, Inc. Instruction decoder
JPH07281954A (ja) * 1994-04-11 1995-10-27 Hitachi Ltd 高速pcシステム
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6938147B1 (en) 1999-05-11 2005-08-30 Sun Microsystems, Inc. Processor with multiple-thread, vertically-threaded pipeline
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
JP3845043B2 (ja) * 2002-06-28 2006-11-15 富士通株式会社 命令フェッチ制御装置
GB2415060B (en) * 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US7392366B2 (en) * 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
JP4631442B2 (ja) * 2005-01-13 2011-02-16 セイコーエプソン株式会社 プロセッサ
US7853777B2 (en) 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor

Also Published As

Publication number Publication date
GB0802314D0 (en) 2008-03-12
US9870228B2 (en) 2018-01-16
WO2009098489A1 (en) 2009-08-13
US9348600B2 (en) 2016-05-24
US20090210660A1 (en) 2009-08-20
US20160232007A1 (en) 2016-08-11
EP2240850A1 (en) 2010-10-20
GB2457265B (en) 2010-06-09
EP2240850B1 (en) 2016-08-10
JP2011511378A (ja) 2011-04-07
GB2457265A (en) 2009-08-12

Similar Documents

Publication Publication Date Title
JP5607545B2 (ja) マイクロプロセッサシステムにおける命令フェッチングの優先順位付け
US8082420B2 (en) Method and apparatus for executing instructions
JP5631976B2 (ja) マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置
US7949855B1 (en) Scheduler in multi-threaded processor prioritizing instructions passing qualification rule
US5918033A (en) Method and apparatus for dynamic location and control of processor resources to increase resolution of data dependency stalls
JP5498505B2 (ja) データバースト間の競合の解決
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
US20080046689A1 (en) Method and apparatus for cooperative multithreading
US10545892B2 (en) Multi-thread processor and its interrupt processing method
JP6260303B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2007241918A (ja) プロセッサ装置
US7725659B2 (en) Alignment of cache fetch return data relative to a thread
WO2018098183A1 (en) Dual mode local data store
WO2006129767A1 (ja) マルチスレッド中央演算装置および同時マルチスレッディング制御方法
JP4631442B2 (ja) プロセッサ
US11907126B2 (en) Processor with multiple op cache pipelines

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130904

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131204

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140304

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140717

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140725

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140828

R150 Certificate of patent or registration of utility model

Ref document number: 5607545

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250