JP5155655B2 - マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御 - Google Patents

マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御 Download PDF

Info

Publication number
JP5155655B2
JP5155655B2 JP2007520899A JP2007520899A JP5155655B2 JP 5155655 B2 JP5155655 B2 JP 5155655B2 JP 2007520899 A JP2007520899 A JP 2007520899A JP 2007520899 A JP2007520899 A JP 2007520899A JP 5155655 B2 JP5155655 B2 JP 5155655B2
Authority
JP
Japan
Prior art keywords
instructions
microprocessor
instruction
pipeline
execution unit
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
JP2007520899A
Other languages
English (en)
Other versions
JP2008507020A (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 JP2008507020A publication Critical patent/JP2008507020A/ja
Application granted granted Critical
Publication of JP5155655B2 publication Critical patent/JP5155655B2/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/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/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/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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Description

本発明は、マイクロプロセッサの出力ポートに関連し、特に、他の実行ユニットのために、これらの出力ポートを介して提供される命令の制御に関連する。
我々の英国特許出願番号9607153.5において、マルチ・スレッドのプロセッサにおいて独立命令スレッドを実行するためのデータ処理管理システムが記載されている。これは、データ入力及び出力の優先度、及び、データ処理手段の優先度を有するマイクロプロセッサを記載する。各データ処理手段は、複数の命令スレッドの少なくとも1つからの命令を実行するためにオペレーションを実行する。制御手段は、データ入力と出力の間で、データ処理手段の選択された1つを介して、データを選択的にルーティングする。外部インターフェース(入力及び出力)は、他のオペレーションを実行するために用いられるコ・プロセッサへのインターフェースであり得る。マイクロプロセッサ内のこれらのコ・プロセッサ及び外部インターフェースは、それらが、マイクロプロセッサ上で走っている命令によって効率的にアクセスされ得るように、システムに統合される必要がある。
通常は、マイクロプロセッサは、外部ユニット又はコ・プロセッサの能力についての知識を用いて命令をスケジューリングする。しかし、もし、マイクロプロセッサが、予測できない振舞いを持つ他のモジュールに付加されるならば、これは、必ずしも可能ではなくなる。マイクロプロセッサに付加されたコ・プロセッサにとって、それらのオペレーションと振舞いに関するデータを、制御しているマイクロプロセッサに提供しないことは、非常に普通のことである。それゆえ、コ・プロセッサに命令を送っているマイクロプロセッサは、コ・プロセッサが、それらの命令を受信する能力を持つか否かについての知識を持たない。1つより多い命令の組が、1つより多いコ・プロセッサに提供され得るようなマルチ・スレッド・システムの場合には、これは特に重要である。なぜなら、いくつかのコ・プロセッサは、問題無しにそれらの命令を実行するが、他のコ・プロセッサは、いくつかの内部事情によって、ブロックされ、それ故、更なる命令を受信することが不可能となるような状況が発生し得るからである。
好ましい実施例は、複雑なコ・プロセッサが、マイクロプロセッサといずれかのコ・プロセッサの間の最小のバッファリング量でマイクロプロセッサに付加され得るようなシステムを提供する。
好ましくは、マイクロ・プロセッサのメインの実行ユニット・パイプラインは、少なくとも、いずれかの制御されていないインターフェース(コ・プロセッサ)へのパイプラインの長さと、少なくとも同じ長さであるような最小長であるように延長される。その後、全てのパイプライン化されたオペレーションは、実行されている命令が完了できるか否かを制御するために用いられるタイム・スタンプでタグを付けられ(tagged)る。もし、それらが完了していないならば、次に、それらは有効に巻戻しされ(rewound)、再スタートされる。コ・プロセッサへの書き込みのような一定の命令は、タイム・スタンプをインクリメントし、もし、そのような命令によって、出力ポートがブロックされるという指示を誘引することがわかるならば、命令ストリームは次に、正しい次の命令にポイントし、マシンの状態が、コ・プロセッサ書き込み(write)の状態を正しく反映するように、異なったタイム・スタンプを伴ったその後の(following)命令が消滅するようにされる。
それ故、要するに、好ましい実施例は、命令の上にタイム・スタンプを持つマイクロプロセッサ・パイプラインを提供する。出力ポートはレジスタを持ち、もし、レジスタが、満杯になるならば、いずれかの後続の(following)従属命令が、除去され(再巻戻しされ)、ブロック(blockage)がクリアされたときに再スタートされる。
1つの実施例により、マイクロプロセッサの出力ポートによって、少なくとも1つのそれらの実行ユニットに提供される命令を制御するための方法であって、実行ユニットのためにマイクロプロセッサ・パイプラインを介して命令のスレッドを提供するステップ、命令をタイム・スタンピングするステップ、出力ポートを介することによって順番に、実行ユニットに命令を提供するステップ、実行ユニットが、更なる命令を受信できるか否かを検知するステップ、そして、もし、当該検知の結果が、実行ユニットが、更なる命令を受信できないというものならば、スレッドのために依然としてマイクロプロセッサ・パイプラインに存在する命令を削除するステップ、及び、機能停止した実行ユニットに遭遇された前記タイム・スタンプされた命令に対応する命令からスレッドを再スタートするステップ、を含む方法が提供される。
本発明の他の実施例によって、マイクロプロセッサ出力ポートを介して、複数の実行ユニットに提供された命令を制御するための方法であって、マイクロプロセッサ・パイプラインを介して異なった実行ユニットのための複数の命令スレッドをスケジューリングするステップ、各実行スレッドに対して、その実行ユニットが、更なる命令を受信できるか否かを検知するステップ、もし、その実行ユニットが更なる命令を受信できないならば、そのスレッドのためにマイクロプロセッサ・パイプライン内に依然として存在する命令を削除するステップ、そして、後の時点において、そのスレッドの実行を再スタートするステップ、を含む方法が提供される。
本発明の好ましい実施例が、添付の図面を参照した例によって詳細に説明される。
図1において、一般的なマイクロプロセッサ1が示される。マイクロプロセッサ1は、1つあるいはそれより多いキャッシュ2か、1つあるいはそれより多いコ・プロセッサ3かのいずれかを介してそれが常駐する残りのシステムに接続される。殆どの状況において、データをキャッシュ、又は、コ・プロセッサの1つに送る能力は、最近キャッシュ又はコ・プロセッサに送られた命令のフローに関する情報を使用しているマイクロプロセッサ自身によって、完全に決定される。更に、コ・プロセッサ自身は、マイクロプロセッサに類似し得るか、又は、実際上、マイクロプロセッサであり、命令を走らせ、予測できない振舞いを表示する。予測できない振舞いを持つコ・プロセッサ、に送られるべきデータをスケジューリングするためのマイクロプロセッサ1の能力は、それがもはや、そのコ・プロセッサが、データを取得できるか否かを決定するためのシステムの状態を十分に知らないような状況において非常に限定される。
この問題に対する1つの解決法は、複数のマイクロプロセッサ、及び、いずれかの、付加されたコ・プロセッサの間にバッファを挿入することである。そのような状況において、マイクロプロセッサにとって、将来データを取得し、それによって、バッファを過負荷状態にさせない、マイクロプロセッサへのデータ転送のスケジューリングを可能とするためのバッファの能力に関するデータを維持することが可能である。しかし、このアプローチは、不十分であり得る。なぜなら、インターフェースがフリーなときに、バッファに関連するゲートをフローさせる(flowing)ことが、利用されないからである。更に、たとえ、マイクロプロセッサが、毎周期において、データをコ・プロセッサ内にストリーミングし得るとしても、バッファが満杯になるとき、又は、ドレーン・アウトされるときに、バッファ内への追加のスケジューリングから生じる過剰のレイテンシーに起因して、コ・プロセッサ・データ・ストリームにギャップが現れ得る。
このバッファリング・アプローチの例が、図2に示される。バッファ・アレンジメントを効率的に作動させるために、マイクロプロセッサは、一旦、既にパイプライン内にある何らかのトランザクションがバッファ内に格納されるために到達したときに、いかに多くのキャパシティが、バッファに残されるであろうかを知る必要がある。このキャパディティ予測は、ロジック5に、いかに多くのトランザクションがパイプライン内にあるか、及び、いかに多くのトランザクションが現在バッファ内にあるかを助言するようなデータを与えられる、マイクロプロセッサ内のロジック5によって取り扱われる。ここから、マイクロプロセッサは、どれだけの、更に多くの、データ・ワードが、バッファ4でオーバーラッピングすること無しに発行され得るかを計算できる。理解され得るように、ロジック5は、マイクロプロセッサからのパイプラインにおける転送に関するデータ、及び、バッファからの、そのフリーなキャパシティに関する情報を受信する。
バッファ4からのデータの除去は、バッファの反対側にリンクされたコ・プロセッサによって制御される。これは、フロー制御データを、レートであって、当該レートでデータがバッファから読み出されるレートを決定するバッファに送る。
データを、コ・プロセッサに送るマイクロプロセッサ上での命令の発行から、そのデータが、コ・プロセッサによって取り込まれるまでの時間の量は、マイクロプロセッサ・パイプラインの長さ、プラス、バッファを通過させるためにかかる時間の量からなる。この時間は、もしそれが、毎周期毎のコ・プロセッサへのデータ・ワードの発行をサポートすべきものならば、バッファが持たなければならない最小サイズを示すので、この時間は重要であり得る。それゆえ、そのようなアレンジメントにとって、バッファは、一般的に、全往復時間内で未解決であり得るだけの数のトランザクションを保持しなければならない。これは、往復時間が経過した後まで、マイクロプロセッサが、その動作のインパクトについて何のデータも受信しないためである。もしコ・プロセッサが、データの取り込みを停止すべきものならば、フルのデータを持つ全バッファが、パイプライン内に存在し得る。これに替わる代替法としては、バッファ・サイズを削減することが考えられ得る。しかし、この代替法によると、レートであって、当該レートでコ・プロセッサへの転送が起こり得るレートに悪影響を与え得る。
本発明の好ましい実施例は、バッファを除去し、新しい命令のスケジューリングの目的のために、マイクロプロセッサだけをその内部状態に従属させることによってこの問題を克服する。この変更には、コ・プロセッサへの、外部的に制御されたフロー制御をサポートする問題への異なったアプローチが必要とされる。命令の、一般的なプロセッサ・パイプライン・フローが、図3に示される。これは、フェッチ命令ユニット6、デコード命令ユニット7、フェッチ・オペランド・ユニット8、演算論理ユニット9、及び、宛先への書き込みユニット10を備える。
本発明の実施例は、コ・プロセッサとの通信の主要な手段として、マイクロプロセッサのパイプライン自身を用いる。それ故、これは、必要とされる追加のリンクの数を削減する。実施例において、各コ・プロセッサは、単一のバッファ・レジスタを用いて、マイクロプロセッサに付加される。マイクロプロセッサから、コ・プロセッサへのトランザクションは、マイクロプロセッサのパイプラインをフロー・ダウンし、単一のデータのワードを保持するバッファ・レジスタ内に入る。もし、レジスタから、コ・プロセッサへのフロー制御が、機能停止していることが発見されるならば、次に、マイクロプロセッサは、以後の命令であって、パイプライン(10)の「宛先への書き込み」ユニットを制御する以後の命令の一部を選択的に削除することによってコ・プロセッサに仕向けられた命令、を破棄することを選択し得る。
命令が、破棄される必要があるか否かについての判断は、各命令のタイム・スタンピングに基づいて為される。それらは、命令の効果にも基づき得る。発行された命令の多くは、コ・プロセッサ・インターフェースの状態への従属性を持たない。しかし、コ・プロセッサ転送命令、又は、メモリ・ロード及びストアのような一定の命令場合には、コ・プロセッサ・インターフェースのフロー制御に従属する必要性が存在し得る。
本発明の実施例は、現在の命令が、パイプラインに入った命令の巻戻しを引き起こし得る何かに依存する場合に、現在の命令のタイム・スタンプを変更する。タイムスタンプ自体は、少なくとも、マイクロプロセッサ・パイプラインの長さ(又は、マイクロプロセッサが、変化する長さのパイプラインを持つ場合には、利用可能な最も長いパイプライン)の2倍であるべき、ある範囲(例えば、0−n)を持つことになる。もし、コ・プロセッサ出力ポートのような外部インターフェースが、機能停止にされるならば、次に、その出力ポートを通過している命令のタイム・スタンプを含むフラグが、全てのパイプラインにブロードキャストされ、ブロードキャストで与えられたタイム・スタンプに比較して、より最近のタイム・スタンプを持つ何らかの命令が、それらの宛先に到達することを避けるべきことを指示する。これは、宛先ユニット10への書き込みが作動することを避けること、即ち、それらの命令に対する書き込みフラグが、クリアされることによって為される。
パイプライン内の、各、全ての宛先更新は、そのソース命令のタイム・スタンプでタグ付けされる。そして、所定の範囲0−nに対して、各タイム・スタンプは、log2nビットを持つことになる。ブロードキャストが為されるときに、これらのタグの各々においてテストが為されて、それが含むタイム・スタンプが、より最近のものか否かが決定される。このテストは、2つのタイム・スタンプ(two time stamps)が、タイム・スタンプ値の範囲の底部1/2又は上部1/2にあるか否かを確立することによって実行される。このテストは、頂部ビットを除外するブロードキャスト・タイム・スタンプが、パイプライン内の終了タイム・スタンプより大きいか否かを確かめるためにテストすることによって実行される。次に、もし、2つのタイム・スタンプの頂部の2ビットが一致するならば、もし、パイプラインが、ブロードキャスト・タイム・スタンプより大きくないならば、巻戻しが必要と考えられる。そうでなければ、頂部が異なるときに、もし、パイプライン・タイム・スタンプが、ブロードキャスト・タイム・スタンプより大きくないならば、巻戻しが必要である。これは、通常、テストより小さいか、又は、それと等しい。
もし、両方のタイム・スタンプが、範囲の同じ1/2内にあるならば、もし、タグされたタイム・スタンプが、ブロードキャスト・タイム・スタンプより大きいならば、タグされたタイム・スタンプはより新しい。そうでなければ、もし、タグされたタイム・スタンプが、ブロードキャスト・タイム・スタンプより小さい、又は、それと等しいならば、タグされたタイム・スタンプはより新しい。最大8状態(それ故、0−15のタイム・スタンプ範囲)を持つパイプラインに対するタイム・スタンプ比較のためのロジックの図面が、図4に示される。図4は、比較より大きいユニット(a greater than comparison unit)16を介して各パイプライン・タグ13と比較されている、ブロードキャスト・タイム・スタンプ12のビットを示す。この比較ユニット16は、ブロードキャスト・タグ、及び、MSB(most significant bit)から離れた各パイプライン・タグ13のビットの全てを用いる。排他的ORゲート11において、MSBは互いに比較され、マルチプレキサ15を制御するために用いられる。もし、頂部ビットが同じならば、排他的ORゲート11の出力はゼロであり、マルチプレキサ15の出力は、比較ユニット16の出力に結び付けられ(tied to)、巻戻しが呼び出される。もし、頂部ビットが同じでないならば、次に、マルチプレキサが、インバータ14を介した比較手段16の反転された出力にスイッチする。インバータは有効に出力を与え、このことは、パイプライン・タグが、ブロードキャスト・タグより大きくないことを意味する。したがって、もし、NSBが同じならば、パイプライン・タグが、ブロードキャスト・タグに比較して、より大きい値を持つことになる。比較器の出力は、それ故、マルチプレキサ15に直接的に繋がることになり、巻戻しが実行されることになる。
もし、パイプライン・タグのMSBが、ブロードキャスト・タグより大きいならば、パイプライン・タグの最初の3ビットが、ブロードキャスト・タグの最初の3ビットに比して、より低い値になり、それにより、出力「より大きくない」を与え、これは、インバータ14によって反転されて、マルチプレキサ15に、これを、巻戻し信号として通過させる。もし命令が破棄されるべきことが決定されるならば、マイクロプロセッサ上で走っているソフトウェアが、正しい状態に維持されていることを保証するために解決されるべきいくつかの問題が存在する。
第1の問題は、何が、マイクロプロセッサ上で走らせるための次の命令であるかの決定の発行である。本質的に、一旦、コ・プロセッサが、パイプラインの機能停止を引き起こすと、それは次に、マイクロプロセッサ・パイプラインの巻戻しを引き起こす。それゆえ、発行されるべき現在の命令が、正しい次の命令か否かを決定することが必要である。ここでの主要の決定は、コ・プロセッサにデータを送り、巻戻しを引き起こした命令の間の中間命令、及び、現在の命令が、それら自体、巻戻されたか否かについての決定に関連する。この決定は、ブロードキャスト巻戻しによって引き起こされたタイムスタンプに対して、現在の命令のタイム・スタンプを比較することによって為され得る。もし、中間命令が巻戻されたならば、次に、現在の命令のタイム・スタンプが、ブロードキャスト巻戻しタイム・スタンプから移動(move on)させられることになる。図4に示されるものと同じテスト・ロジックを用いて、これらのタイム・スタンプは、比較され得る。
もし、タイム・スタンプが変更されていることが分かったならば、次に、正しいポイントにおける命令ストリームの再スタートは、現在の命令を打ち切り(abort)、現在のプログラム・カウンタ・アドレスからの命令フェッチを再スタートすることを含む。破棄されたトランザクションの全て(any)が、パイプラインから除去されるので、巻戻しの後の現在のプログラム・カウンタ・アドレスが、ポイント(ここでプログラムが再スタートする必要がある)を正しく反映することを保証することが可能である。現在のプログラム・カウンタ値は、プログラム・カウンタ実行ユニットパイプラインから来る。パイプラインが依然として発生するときに、パイプライン内の、依然としてそのようにさせるためのアクションは破棄され、再スタート・プログラム・カウンタ・アドレスが、プログラム・カウンタ・レジスタから検索される。これは、次に、適切なポイントにおいてパイプラインを再スタートさせるために用いられる。
プログラムを再スタートさせるために残っているタスクは、コ・プロセッサ・ポートが、より多くのトランザクションを受け入れるために準備完了となるか否かによって決定される。これは、いつ、単一のバッファリング・レジスタが、自分自身を空(empty)にすることを許されるかを監視することによって決定され得る。一旦このレジスタが空であれば、コ・プロセッサが、データを受け入れるために準備完了であること、および、命令のフローが再スタートされ得ることが想定され得る。以上、我々は、コ・プロセッサ転送が、パイプラインを伝わって、コ・プロセッサに付加される単一のバッファ・レジスタに送られることを確定した(established)。コ・プロセッサが転送の受け入れを停止したとき、即ち、コ・プロセッサがデータを採用するために準備完了となるまで、データが単一のバッファ・レジスタ内に保持されねばならないとき、に検知が行われる。次に何が起こるかは、次の命令が、パイプラインを下って何らかのコ・プロセッサ転送を送ることをプラニングしているか否かに依存する。
1つの実施例では、プロセッサが、コ・プロセッサ転送のために巻戻されるときに、影響を受けたスレッドが巻戻され、同時に、固定の期間(通常は、短期間であるが、任意の周期数、例えば、8周期)の間、近寄らせないように(hold off)される。もし、再スタートが発生するポイントにおける命令ストリームが、コ・プロセッサが準備完了であることに依存しないならば、それは、コ・プロセッサが依然とてビジーか否かとは独立に、再スタートし得、以前のように続行(carry on)し得る。命令は、何かが、コ・プロセッサに送られるべきような時点まで発行され続けることになる。もし、スレッドが、再スタート後の、その最初のアクションとして、コ・プロセッサ転送を発行せねばならないならば、このポイントには即座に到達されることになる。したがって、マルチ・スレッドされたシステムにおいて影響を受けたスレッドだけの休止が好ましいことが分かる。他の影響を受けないスレッドは、好ましくは、通常とおりに実行を継続し得る。
それ故、実行はしばらくの間停止し、再スタートし、現在システムは、何かを、ビジーなコ・プロセッサに送ることを望む。そのような状況において、プロセッサは有効に、我々の英国出願番号9607153.5の書類に説明されたメカニズムを使用する。当該書類の内容は、ここに参照として取り込まれる。これは、命令スケジューラが、必要とされるリソース、及び、それらのリソースの利用可能性を知っていることを意味する。それ故、システムは、コ・プロセッサに転送するための命令を持つ。スケジューラは、それとコ・プロセッサの間の、バッファ・レジスタの状態を観察する。もし、データが既に、レジスタ内に保持されるならばコ・プロセッサはビジーであり、要求されたリソースが未だ利用可能でないので、命令は発行しない。システムがデータを自由にコ・プロセッサに送っているときに、それは、データを受信するために利用可能であり、この阻止(blockage)は決して発生しない(即ち、リソース・テストは、事実上、レジスタが、コ・プロセッサの請求を待つ間に阻止されるか否かのテストである)。
例として、我々は、毎1000周期ごとに1つのデータの項目だけを取り込むコ・プロセッサに、常にデータを送ることを試みている命令のストリームを考慮しなければならない。プログラムは、問題無しに、データの送信を開始する。送られる最初のワードは、コ・プロセッサによって採用される。第2のワードは、バッファ・レジスタで保持される。この時点で、巻戻されたロジックがトリガされ、依然としてパイプライン内に存在する第3のワードを削除する。次に、既知の良い状態を戻すために、スレッドは、短期間の間、機能停止される。即ち、正しい命令は走らせるために準備完了であり、リソース要求/利用可能性テストの結果として、当該命令はスケジューラによって保持されることになる。この状況は、第2のワードがバッファから除去されるまで、この状態で維持されることになる。第2のワードがバッファから除去される時点は1000周期の後である。この時点では、バッファ・レジスタは自由になる。次に、プログラムは、再度命令の発行を開始し、第3のワードは、バッファ・レジスタ内に保持され、更なる巻戻しを引き起こす。この工程は、命令のストリームの終了まで継続する。
それゆえ、本発明の実施例は、プロセッサを、元の、実行可能状態(ready-to-run state)に戻し、次に、バッファ・レジスタがクリアされる(このポイントで実行が再開され得る)まで待つ。1つのワードが、1000周期を占有(take over)するような、上に示された例は、極端である。インテリジェントなプロセッサを有する、より現実的な状況は、コ・プロセッサが、コ・プロセッサが進む(to go)ために十分になるまで、一連のコマンドを取り込み、プロセスを開始するというものになろう。このポイントで、コ・プロセッサはビジーになり得、コ・プロセッサがその初期プロセスを終わらせるまで、後続のコマンドが控えられる(hold off)ことを引き起こし得る。
本システムは、1つあるいはそれより多い出力ポート、及び、接続された1つあるいはそれより多いコ・プロセッサを持つマイクロプロセッサのために作動し得る。
1つあるいはそれより多いマイクロプロセサの各々が、複数の実行ユニットの命令のパイプラインを取り扱っているような、マルチ・スレッドされたシステムの場合には、命令のスレッドはスケジュールされて、それらの優先度に従属して、或いは、適用され得る他の基準に従属して、マイクロプロセッサのパイプラインを通過させる。実行される各スレッドに対して、その実行ユニットが、更なる命令を受信可能か否かについての判断が為される。不可能であれば、そのスレッドは機能停止される。もし、命令が、単に、マイクロプロセッサ内で放って置かれている(left sitting)場合には、更なるスレッドはスケジュールされ得ない。それ故、上述の実施例は、マイクロプロセッサ・パイプラインからの命令を破棄することによって、他の、機能停止されていないスレッドを、実行継続させることを可能とする。所定の時間(a predetermined amount of time)後に、機能停止されたスレッドは、次に、再スタートされる。それは、その対応する実行ユニットが、再度、上述の命令を受信するために準備完了となるような時間まで、再スタートを継続できる。マイクロプロセッサ内の命令が破棄されるときに、上述のタイム・スタンプ法を用いて、これは為される。
いくつかのコ・プロセッサにカップルされた一般的なマイクロプロセッサの図面を示す。 バッファされたコ・プロセッサ・インターフェースを示す。 一般的なプロセッサ命令パイプラインを示す。 本発明の実施例で使用するためのタイム・スタンプ比較回路を示す。
符号の説明
5 ロジック
12 ブロードキャスト・タイム・スタンプ

Claims (12)

  1. マイクロプロセッサ・出力ポートを介して、少なくとも1つの他の実行ユニットに与えられた命令を制御するための、マイクロプロセッサによる方法であって、
    前記少なくとも1つの他の実行ユニットに対して、マイクロプロセッサ・パイプラインを介して命令のスレッドを提供し、
    前記命令をタイム・スタンピングし、
    出力ポートを介して、前記少なくとも1つの他の実行ユニットに、順番に命令を提供し、
    前記マイクロプロセッサにおいて、前記他の実行ユニットが更なる命令を受け取ることができるか否かを検知し、
    そして、もし、前記検知の結果が、前記他の実行ユニットが更なる命令を受信できないというものならば、前記マイクロプロセッサ・パイプライン内に依然として存在するそのスレッドに対する命令を削除し、そして、
    実行することが不可能であった、前記タイム・スタンプされた命令に対応する命令から、前記スレッドを再スタートさせる、
    ステップを含む方法。
  2. 前記少なくとも1つの他の実行ユニットの各々が、レジスタを介して前記マイクロプロセッサ出力ポートに接続される、請求項1に記載の方法。
  3. 前記他の実行ユニットによって受け取られることが不可能な、現在の命令のタイム・スタンプを、前記パイプライン内の命令のタイム・スタンプと比較し、当該比較の結果に従属して、パイプライン内の命令を破棄するステップを含む、請求項1又は2に記載の方法。
  4. 前記パイプライン内の前記命令のタイム・スタンプの値が、前記現在の命令のタイム・スタンプの値より大きい場合に、前記パイプライン内の前記命令が破棄される、請求項3に記載の方法。
  5. アドレスであって、当該アドレス内に、前記他の実行ユニットが受信できない現在の命令が記憶される、当該アドレスに対応するメモリ内のアドレスから命令を読出すことによって機能停止したスレッドを再スタートさせるステップを含む、請求項1乃至4のいずれか一項に記載の方法。
  6. 前記マイクロプロセッサを通じて前記他の実行ユニットのための命令のマルチプル・スレッドをスケジューリングし、当該スレッドの1つが実行不可能な場合に、機能停止されていないスレッドの実行を継続するステップを含む、請求項1乃至5のいずれか一項に記載の方法。
  7. マイクロプロセッサ出力ポートを介して、少なくとも1つの他の実行ユニットに与えられた命令を、マイクロプロセッサにより制御するためのシステムであって、
    前記少なくとも1つの他の実行ユニットのための命令のスレッドを供給するマイクロプロセッサ・パイプライン、
    前記命令をタイム・スタンピングするための手段、
    前記出力ポートを介して、前記他の実行ユニットに順番に命令を与えるための手段、
    そのそれぞれの他の実行ユニットが更なる命令を受け取ることができるか否か、を検知するための手段、
    前記検知の結果が、前記他の実行ユニットが更なる命令を受け取ることができないというものである場合に、前記マイクロプロセッサ・パイプライン内に依然として存在する命令を削除するための手段、及び、
    実行することができなかった前記タイム・スタンプされた命令に対応する命令から、前記スレッドを再スタートするための手段、
    を備えるシステム。
  8. 前記他の実行ユニットの各々を、前記マイクロプロセッサ出力ポートにカップルするレジスタを備える、請求項に記載の装置。
  9. 前記他の実行ユニットによって受け取ることができない、現在の命令の前記タイム・スタンプと、前記パイプライン内の命令の前記タイム・スタンプを比較する手段と、
    前記比較の結果に従属して、前記パイプライン内の前記命令を破棄するための手段、
    を備える、請求項又はに記載の装置。
  10. 前記パイプライン内の命令を破棄するための前記手段が、それらのタイム・スタンプの値が、前記現在の命令のタイム・スタンプの値より大きい場合に、前記パイプライン内の命令を破棄する、請求項に記載の装置。
  11. 機能停止したスレッドを再スタートするための前記手段が、アドレスであって、当該アドレス内に実行できなかった現在の命令が記憶されるアドレスに対応するアドレスから命令メモリを読み取るための手段を含む、請求項ないし10のいずれかに記載の装置。
  12. 前記他の実行ユニットのために、マイクロプロセッサを通じて、命令のマルチプル・スレッドをスケジューリングするための手段、及び、
    前記スレッドの1つが実行できなかった場合に、機能停止されなかったスレッドの実行を継続するための手段、
    を備える請求項ないし11に記載の装置。
JP2007520899A 2004-07-15 2005-07-15 マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御 Active JP5155655B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0415851.5A GB0415851D0 (en) 2004-07-15 2004-07-15 Microprocessor output ports and control of instructions provided therefrom
GB0415851.5 2004-07-15
PCT/GB2005/002804 WO2006005964A1 (en) 2004-07-15 2005-07-15 Microprocessor output ports and control of instructions provided therefrom

Publications (2)

Publication Number Publication Date
JP2008507020A JP2008507020A (ja) 2008-03-06
JP5155655B2 true JP5155655B2 (ja) 2013-03-06

Family

ID=32893617

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007520899A Active JP5155655B2 (ja) 2004-07-15 2005-07-15 マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御

Country Status (5)

Country Link
US (1) US7594097B2 (ja)
EP (1) EP1766510B1 (ja)
JP (1) JP5155655B2 (ja)
GB (2) GB0415851D0 (ja)
WO (1) WO2006005964A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078851B2 (en) * 2008-12-18 2011-12-13 Faraday Technology Corp. Processor and method for recovering global history shift register and return address stack thereof by determining a removal range of a branch recovery table
US9026550B2 (en) * 2012-01-30 2015-05-05 Siemens Aktiengesellschaft Temporal pattern matching in large collections of log messages
GB2563587B (en) 2017-06-16 2021-01-06 Imagination Tech Ltd Scheduling tasks
EP3783498A1 (en) 2019-08-22 2021-02-24 Ams Ag Signal processor, processor system and method for transferring data
US20230221961A1 (en) * 2022-01-10 2023-07-13 Cisco Technology, Inc. Remote front-drop for recovery after pipeline stall

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
JP2849189B2 (ja) * 1990-08-27 1999-01-20 富士通株式会社 例外処理システム
ATE184407T1 (de) * 1994-01-03 1999-09-15 Intel Corp Verfahren und vorrichtung zum implementieren eines vierstufigen verzweigungsauflosungssystem in einem rechnerprozessor
JPH07219774A (ja) 1994-02-07 1995-08-18 Fujitsu Ltd データ処理装置および例外処理方法
JP3630904B2 (ja) * 1996-02-29 2005-03-23 三洋電機株式会社 演算実行方法および演算実行装置
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6349297B1 (en) * 1997-01-10 2002-02-19 Venson M. Shaw Information processing system for directing information request from a particular user/application, and searching/forwarding/retrieving information from unknown and large number of information resources
JP3623693B2 (ja) * 1999-06-17 2005-02-23 エヌイーシーコンピュータテクノ株式会社 ファームウェア置換装置および方法
US6574725B1 (en) 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
JP3621315B2 (ja) * 1999-11-22 2005-02-16 Necエレクトロニクス株式会社 マイクロプロセッサシステム
JP5185478B2 (ja) * 2000-02-29 2013-04-17 富士通セミコンダクター株式会社 パイプライン処理方法並びにその方法を利用するパイプライン処理装置
US6850257B1 (en) * 2000-04-06 2005-02-01 Microsoft Corporation Responsive user interface to manage a non-responsive application
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6836808B2 (en) * 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing
GB2387932B (en) 2002-04-26 2005-06-22 Motorola Inc Apparatus and method for scheduling tasks in a communications network

Also Published As

Publication number Publication date
GB2416230A (en) 2006-01-18
GB2416230B (en) 2006-09-27
GB0415851D0 (en) 2004-08-18
EP1766510A1 (en) 2007-03-28
US20080250234A1 (en) 2008-10-09
WO2006005964A1 (en) 2006-01-19
US7594097B2 (en) 2009-09-22
EP1766510B1 (en) 2012-03-28
GB0514598D0 (en) 2005-08-24
JP2008507020A (ja) 2008-03-06

Similar Documents

Publication Publication Date Title
CN100440139C (zh) 双线程处理器和方法
US8539485B2 (en) Polling using reservation mechanism
JP5263844B2 (ja) パイプラインプロセッサにおける長い待ち時間命令の処理
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
KR100951092B1 (ko) 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체
KR100304182B1 (ko) 슈퍼스칼라프로세서에서트랩을검출및실행하는장치
US6944850B2 (en) Hop method for stepping parallel hardware threads
JP5485982B2 (ja) パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム
US8006069B2 (en) Inter-processor communication method
WO2011155097A1 (ja) 命令発行制御装置及び方法
JP2007507791A (ja) トレースキャッシュベースのプロセッサ中の例外命令を処理するためのシステム及び方法
JP5413853B2 (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス
US20060184772A1 (en) Lookahead mode sequencer
JP5155655B2 (ja) マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御
JP4327008B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP5168277B2 (ja) 命令制御装置及び制御方法
JP4631442B2 (ja) プロセッサ
US20040128476A1 (en) Scheme to simplify instruction buffer logic supporting multiple strands
JP5093237B2 (ja) 命令処理装置
US20040128484A1 (en) Method and apparatus for transparent delayed write-back
US11194577B2 (en) Instruction issue according to in-order or out-of-order execution modes
US20160283233A1 (en) Computer systems and methods for context switching
US20110093863A1 (en) Context switching in a data processing apparatus
JP2000020310A (ja) プロセッサ
KR100649301B1 (ko) 마이크로쓰레드를 이용한 인터럽트 처리 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110531

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110607

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110629

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120501

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120801

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121031

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5155655

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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