JP2004503864A - ダイナミックマルチストリーミングプロセッサでメモリ操作の原子性を実現するための方法と装置 - Google Patents
ダイナミックマルチストリーミングプロセッサでメモリ操作の原子性を実現するための方法と装置 Download PDFInfo
- Publication number
- JP2004503864A JP2004503864A JP2002511080A JP2002511080A JP2004503864A JP 2004503864 A JP2004503864 A JP 2004503864A JP 2002511080 A JP2002511080 A JP 2002511080A JP 2002511080 A JP2002511080 A JP 2002511080A JP 2004503864 A JP2004503864 A JP 2004503864A
- Authority
- JP
- Japan
- Prior art keywords
- stream
- processor
- streams
- memory
- sequence
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 48
- 238000003860 storage Methods 0.000 claims abstract description 40
- 230000007246 mechanism Effects 0.000 claims abstract description 34
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 238000013507 mapping Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 238000012544 monitoring process Methods 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000013468 resource allocation Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 235000019580 granularity Nutrition 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
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)
- Multi Processors (AREA)
Abstract
Description
【発明の属する技術分野】
本発明は、コンピュータシステムのメモリ操作の分野に属し、より詳細にはダイナミックマルチストリーミング(DMS)プロセッサにより実行されるメモリ操作に関する。
【0002】
(関連文献の相互参照)
本出願は、優先権主張の基礎となる同時継続特許出願すなわち1998年12月16日に出願された米国特許出願第09/216017号、1999年1月27日に出願された同第09/240012号、1999年3月22日に出願された同第09/273810号および1999年5月14日に出願された同第09/312302号の一部継続出願(CIP)であり、これらの4つの出願は、いずれも、参照によりその全体が本明細書に組み込まれる。
【0003】
(発明の背景)
複数のスレッドを処理することができるマルチストリ−ミングプロセッサは、当技術分野において知られており、かなりの研究開発の対象となっている。本発明はこの分野の先行する成果に着目し、その成果の上に立って、装置および方法における新規かつ自明でない改善を当技術分野にもたらすものである。本発明者は、この特許出願により、マルチストリ−ミングプロセッサの技術分野における多くの発表された論文を列挙した情報開示ステートメントを提供しており、これら論文は、ともに、本明細書で開示される本発明のいくつかの態様について付加的な背景および文脈を提供する。
【0004】
定義として、この明細書では、処理システムを参照してストリームとは、命令スレッドをサポートしかつ処理するためのプロセッサのハードウエア性能とみなす。スレッドは、ストリ−ム内で実行する実際のソフトウェアである。例えば、デスクトップコンピュータを動かすためのCPUとして実現されるマルチストリ−ミングプロセッサは、2つ以上のアプリケーション、例えばワードプロセッサプログラムとオブジェクト指向ドローイングプログラムなど、からのスレッドを同時に処理することができる。もう一つの例として、マルチストリーミング能力があるプロセッサは、パケット交換ネットワークのルータなどのように、規則的な人間の指示なしで機械を動かすことができる。例えば、あるルータでは、ネットワークのデータパケットを処理し、転送するための一以上のスレッドがあってもよく、ほかのスレッドはネットワークに接続されたほかのルータおよびサーバとのサービス品質(QOS)ネゴシエーションのためであってよく、またほかのスレッドは経路指定表などを維持するためであってよい。複数の並列スレッドを処理するどんなマルチストリーミングプロセッサでも最大の能力は、プロセッサがサポートするハードウェアストリ−ムの数で固定される。
【0005】
単一のスレッドを動作させるマルチストリ−ミングプロセッサは、未使用で空きのストリ−ムを有する単一ストリームプロセッサとして動作する。議論のため、ストリ−ムは、ストリ−ムがスレッドをサポートする時は全てアクティブである考え、そうでない場合は非アクティブであると考える。相互参照セクションで列挙するいろいろな関連ケースにおけるように、そして、IDSにより提供されかつ相互参照出願の少なくとも一つに含まれた文献におけるように、スーパースケーラプロセッサもまた当技術分野において知られている。このスーパースケーラプロセッサという用語は、一つ以上のタイプの複数の機能ユニットと、複数の機能ユニットに並列命令を出す能力とを有するプロセッサを指す。今日つくられる大部分の中央処理装置(CPU)は、それぞれのタイプの単一機能ユニット以上を有しており、この定義によるスーパースケーラプロセッサである。いくつかのCPUは、例えば、複数の浮動小数点ユニット、インテジャ−ユニット、論理ユニット、ロード/格納ユニットその他を含む、多くのそのようなユニットを有する。マルチストリ−ミングスーパースケーラプロセッサも同様に当技術分野において知られている。
【0006】
発明者は、上述のタイプを含むがこれに限られないすべてのタイプのマルチストリ−ミングプロセッサについてのアーキテクチャにおいて放置された分野があることを確認した。放置された分野は、並列ストリ−ム間の通信と、1つのアクティブなストリ−ムがアクティブなもしくはそうでない他のストリ−ムに行使できる制御タイプとであり、そのため、複数の並列スレッドのアクティビティを調整できるようにし、かつ、機能ユニットへのアクセスのようなアクティビティの処理における多様なニーズに応ずるためにダイナミックに共有できるようにする。放置された具体的な領域は、複数のストリ−ムが存在する中での外部割込みおよび内部割込みのマッピングおよび取り扱いであり、また例外処理である。
【0007】
発明者に知られているダイナミックマルチストリ−ミング(DMS)プロセッサは、複数のスレッドを処理するための複数のストリームを有し、かつ、一以上のストリームの優先順位コードの優先順位レコードを含む命令スケジューラを有する。優先順位コードは、いくつかの実施形態では、リソースへの関連アクセスを決定し、並びに、任意の時点でアクセスを有するストリームを決定する。他の実施形態では、優先順位はダイナミックに決定されて、動作中に変えられる。これは、チップ上の処理統計などのさまざまな基準により、一以上の優先順位アルゴリズムを実行することにより、ストリームのローディングに従ったチップ外からの入力により、もしくはこれらと他の方法との組み合わせによりなされる。ある実施形態では、特別なコードがストリ−ムをディスエーブルするために使われ、そしてストリ−ムは、例えばチップ上のイベント、処理統計、チップ外からの入力、およびプロセッサ割込みなど様々な方法により動的にイネーブルおよびディスエーブルされる。IPルータおよびデジタル信号処理装置を含むいくつかの具体的な適用を教示する。
【0008】
上述のDMSプロセッサは、命令プロセッサ(IP)、IPによって処理されるべきスレッドコンテキストなどのデータを格納するためのレジスタファイル、およびレジスタファイルおよびIPに結合されたレジスタ転送ユニット(RTU)を有する処理システムによってさらに高度化される。レジスタファイルは、RTUおよびIPの両方から読み書き可能な様々な状態をとりうる。IPとRTUはレジスタファイルの制御をとり、レジスタファイルの状態に応じて部分的にそれらの機能を実施し、処理後にレジスタファイルを開放するとき状態を設定する。DMSプロセッサによって使われる処理システムは、特にマルチストリーミングプロセッサに適用可能であり、ストリ−ムより多くのレジスタファイルが実装され、ストリーム中の少なくとも一のアイドルなレジスタファイルがデータのバックグラウンドロードおよびロード解除を遂行するのを可能にする。
【0009】
上述のDMSプロセッサのさらなる高度化は、独特なストリーム間制御機構を活用し、これにより、任意のストリームが他の任意のストリーム動作に影響を与えることができる。いろいろな実施形態で、ストリ−ム間制御機構は、他のストリ−ムをイネーブルまたはディスエーブルすること、他のストリ−ムをスリープモードに入れるかスリープモードから他のストリ−ムを呼びさますこと、機能リソースへのアクセスに関して他のストリームのために優先順位を設定すること、および他のストリームによる機能リソースへのアクセスを許可もしくはブロックすることのうちの一以上を遂行するための機構を含む。マスターモードがこの高度化においては教示され、そこでは、一つのストリームがマスター状態を許可され、他のストリームに関する任意ですべての利用可能な制御機構を他のストリームからの干渉なしに働かせることができる。監視モードも同様に教示され、そこでは、制御されるストリームに応じて、制御特権を変更もしくは撤回できる制御が、最小から最大まで与えられうる。マスター状態とストリーム間制御階層とが少なくとも一のオンチップビットマップによって記録され、補正される機構を含む様々な機構が開示される。この機構においては、各ストリームは各他のストリームについての制御特権を許可もしくは撤回するビットマップを維持かつ編集するが、設定はマスターストリーム以外のあらゆるストリームに有効であり、マスターストリームは設定を無視する。
【0010】
上述のDMSプロセッサに関連した開示において教示されるもう一つの特徴は、割り込み処理に関係がある。割り込みハンドラーの論理が供給され、割り込みおよび例外を検出して一以上の特定のストリームにマッピングする。いくつかの実施形態では、一の割り込みまたは例外が二以上のストリームにマッピングされることがあり、他の実施形態では、二以上の割り込みもしくは例外が一のストリームにマッピングされることがある。マッピングは静的でプロセッサデザインで決定され、プログラマブルであり、データは格納されかつ補正可能でもよく、もしくは条件付かつ動的でもよく、割り込み論理は、マッピングを決定する変数を感知するアルゴリズムを実行する。割り込みは、アクティブなストリームによって生成されたプロセッサソフトウエア(内部)の割り込み外の装置によって生成される外部割り込みであってもよく、もしくは変数に基づき条件付であってもよい。割り込みが認められた後、割り込みもしくは例外がマッピングされたストリームが、適当なサービスルーチンに誘導される。同期的方法においては、割り込みがマッピングされたすべてのストリームが割り込みを認めるまでなんら誘導は発生しない。
【0011】
本発明は、二以上の処理ストリームが一のメモリリソースを共有するシステムにおいて、メモリ操作の原子性を実現する装置および方法を提供する。本発明は、より詳細には、本発明者に知られかつ以上でおよび本明細書の他の開示で述べたDMSプロセッサを活用するようなシステムに関する。これに関して、原子性とは、各関係しているストリームが、すべての関係しているストリームに配慮しながら不可分の操作の効果を有するリード−更新−ライト操作を実施できることをいう。
【0012】
多くの場合、メモリのリードおよびライト機能のシーケンスは他のプロセッサに配慮すると原子的ではありえないことはデータ処理技術では良く知られている。これは、典型的には、2つのプロセッサが同時に同一メモリ位置にアクセスしているときに起こり得る。原子性を保証する機構がなければ、メモリの同じ位置をインクリメントするようプログラムされた2つの別個のプロセッサが、1のみインクリメントしてその位置の値をリードおよびライトしうる。たとえば、あるメモリ位置の値が4でインクリメントの値が1であるとする。一の単一ストリームプロセッサによる単一のリード、インクリメント、ライトシーケンスは値5をもたらす。もし、二つのプロセッサが別個の時間にインクリメントすれば、2つのインクリメント操作を反映して値は6となり、正しい結果となる。しかしながら2つのプロセッサが同時にインクリメントを試行すると、その値は一度だけインクリメントされ、メモリに値5を残し、望まない結果となる。
【0013】
よく知られたMIPSアーキテクチャならびに他の既知のアーキテクチャは、同時に一のメモリ位置をインクリメントしようとする二以上のプロセッサの上述の例における望まない結果が起こらないよう保証する方法を提供する。MIPSは例えば、ロードに関連づけられた命令と条件付格納命令とを含む操作のシーケンスが、原子的であるか、さもなければ失敗し、失敗したことを示すメカニズムを提供する。ロードに関連づけられた命令とその条件付格納命令との間のメモリ位置のなんらかの更新はメモリを更新することなく条件付格納を失敗させる。ついで、全体のシーケンスを繰り返すべくまた別の試行がなされる。
【0014】
DMSプロセッサにおいては、2本のストリームが原子的にメモリ位置のリードと更新を試行しているとき、リード−更新−ライトシーケンスが成功裏に完了しうるまでプロセッサリソースを用いて繰り返しループしないことが望ましい。
【0015】
明らかに必要とされるのは、単一のメモリリソースを共有するDMSプロセッサに関する上述の非効率の問題に対処しながら原子性を保証する新しい方法および装置である。そのような方法および装置は、メモリ操作の原子性を考慮に入れると同時にオンチップリソースの不必要で反復的な使用を防ぐことによってさらにDMSプロセッサの処理速度を最適化する機会を提供する。
【0016】
(発明の概要)
本発明の好ましい実施形態では、一以上の命令スレッドを流すための複数のストリームと、ストリームからの命令を処理するための一組の機能リソースと、プロセッサのストリームによって共有される選択したメモリ位置をロックするためのロック機構であり、原子性のあるメモリシーケンスを開始するときにロックをセットしかつ原子性のあるメモリシーケンスを完了するときにロックをクリアするよう動作する、ハードウエアロック機構とを含むマルチストリーミングプロセッサが提供される。好ましい実施形態では、ロック機構は、プロセッサの各ストリームと関連づけられた一以上の格納位置を含み、各格納位置は、メモリアドレス、ロックビット、およびストールビットを格納できる。
【0017】
発明の好ましい実施形態によるプロセッサにおいて、ストリームが原子性のあるメモリシーケンスを開始すると、当該ストリームに関連づけられた格納位置に対象メモリアドレスが書き込まれ、ロックビットがセットされ、ストリームと関連づけられた全てのほかの格納位置がサーチされ、合致した格納位置についてロックビットがセットされたメモリアドレスの合致が見つかった場合、ストリームはストールビットをセットし、ストールビットがクリアされるまでストリームはストールする。また、ストリームが原子性のあるシーケンスを実施し、アクセスされるメモリ位置にシーケンスの更新された結果を格納すると、当該ストリームについて関連づけられた格納位置のロックビットがクリアされ、ロック機構においてストリームに関連づけられたメモリ位置の全てのストールビットがクリアされ、他のストリームが原子性のあるシーケンスを開始するのを可能にする。さらに、ストリームが原子性のあるメモリシーケンスを開始すると、対象メモリアドレスが、当該ストリームに関連づけられた格納位置に書き込まれ、ロックビットがセットされ、ストリームに関連づけられた全てのほかの格納位置がサーチされ、合致した格納位置についてロックビットがセットされたメモリアドレスの合致が見つからない場合には、ストリームは原子性のあるシーケンスを継続する。
【0018】
好ましい実施形態では、ロック機構が、製造の間にマルチストリ−ミングプロセッサに設置されたハードウェアを含んで実現される。他の実施形態では、ロック機構が、ファームウエアもしくはソフトウエアを含んで実現されてもよい。また、いくつかの実施形態では、格納位置が、原子性のあるメモリシーケンスをプロセッサが実施するストリームにより共有されるメモリのメモリ位置を予約されてもよい。
【0019】
発明のもう一つの態様においては、マルチストリ−ミングプロセッサ上で原子性のあるメモリシーケンスを実現する方法が提供され、その方法は、(a)格納位置を、ロックビットとスト−ルビットを含む、マルチストリーミングプロセッサのストリ−ムの各々と関連付けるステップと、(b)ストリ−ムによって原子性のあるメモリシーケンスを始める際に、関連づけられた格納位置にシーケンスで修正されるメモリアドレスを書き込み、ロックビットをセットするステップと、(c)他のストリームに関連づけられた全ての格納位置を該格納位置の中に格納されたメモリアドレスおよびロックビットの状態についてサーチするステップと、(d)セットされたロックビットをも有するメモリアドレスとの合致が何ら見つからないときに、当該原子性のあるシーケンスを完了へと継続するステップと、(e)セットされたロックビットを有するメモリアドレスとの合致が見つかったときに、当該ストリームについてストールビットをセットし、当該ストールビットがクリアされるまで当該ストリームについての操作をストールするステップとを含む。
【0020】
好ましい実施形態では、前記原子性のあるシーケンスの終わりに格納操作を完了する際、格納位置に格納された合致するメモリアドレスを有するストリームのためのすべてのストールビットをクリアし、他のストリームが原子性のある操作を継続できるようにするさらなるステップ(f)がある。
【0021】
いくつかの実施形態では、前記格納位置はマルチストリーミングプロセッサ上に実現されたハードウエアレジスタであり、メモリアドレスはマルチストリーミングプロセッサのオンチップメモリ内に位置する。他の実施形態では、格納位置は、マルチストリ−ミングプロセッサが原子性のあるメモリシーケンスを実施する同じメモリ内の予約された位置である。
【0022】
以下で開示される本発明を実施可能にする詳細の実施形態において、競合するストリームによる不必要な操作を伴うことなく、全く原子的に同期メモリ操作が実施されるDMSプロセッサのためのシステムが、最初に提供される。
【0023】
(好ましい実施形態の説明)
同じプロセッサにおいて動作している複数のアクティブなストリームは、サポートするスレッドの性質によってしばしば関連づけられる。したがって、1つのストリ−ム(アクティブなストリ−ム)で動作しているスレッドが一つ以上の他のアクティブなストリ−ムの機能を開始および/または制御するのを可能にされるならば、利点となりうる。アクティブなストリ−ムは、同一のタスク上の作業を共有することがあり、したがって、データを伝達する効率的な方法を必要とする場合がある。1つのアクティブなストリ−ムが、一時的に特定の処理リソースのまたは全体のスループットを排他的に使用することを必要とするかもしれない。アクティブなそのようなストリ−ムは、その具体的な要求を主張する一方で他のアクティブなストリ−ムがより少ないリソースでできるだけ能率的に動作を継続するのを可能にする方法を必要とする。これらは、全てのマルチストリ−ミングプロセッサでの問題である。この概念と以後の説明において、アクティブストリ−ムは具体的なスレッドを実行しているストリームであり、また、スレッドコンテキストがレジスタファイルによってアクティブストリームに結合されていることも再び思い出すとよい。
【0024】
優先権主張の基礎となる米国特許出願第09/216017号明細書で記述されるように、マルチストリ−ミングプロセッサは2つ以上の命令スレッドを並列に実行するための物理的ストリームリソースと、同様に複数のレジスタファイルも有する。本発明は、全てのそのようなプロセッサに、さらには他の方法でマルチストリ−ミングを達成しうるプロセッサにも適応する。本発明のいろいろな実施形態で、編集可能な特徴の組がアクティブなストリームのために維持され、これらの特徴が、当該の具体的なストリームの上に他のアクティブなストリームによって実施されうる制御の形式を調節する。便宜上もしくは特別な理由によって、これらの編集可能な特徴は、様々な実施形態においていくつかの形式のいずれか一つをとりうる。
【0025】
好ましい実施形態では、編集可能な特徴は、プロセッサチップの上のシリコンで実現される。というのもこの構成が動作における大変早いアクセスを可能にするからである。本発明は、しかしながらこれに限らず、そのような特徴は他の方法で格納および編集可能である。編集可能な特徴は、様々な状況および実施形態において、ストリームに特定のもしくはコンテキストに特定のものとしてマッピングされてもよい。
【0026】
1つの典型的な実施形態では、ビットマップが維持され、個々のビットすなわちビットの組み合わせのバイナリ値が個々のストリームと関連づけられかつストリーム間通信および制御に関する特定の意味を割り当てられ、ある特定の時刻におけるストリーム間の管理階層、各ストリームのプロセッサリソースへのアクセス、およびマスタストリーム、イネーブルおよびディスエーブルモード、およびスリープモードのための状態制御などを示し、そのさらなる詳細を以下に述べる。
【0027】
上述のビットマップで、いくつかの管理制御ビットは、他のいずれかのアクティブなストリ−ムがそれぞれの個々のアクティブなストリ−ムの上に行使しうる制御の形式を調節する。アクティブなストリ−ムは、慎重に定義された限度の範囲内で、自身の制御ビットをセットおよびリセットすることができ、適切なパーミッションにより他のアクティブなストリ−ムもまたそうすることができる。あらゆる時点で、マスタースレッドはストリ−ムで実行することができ、このとき、ストリームはマスタースレッドを実行する間マスターストリームとされ、マスターストリームはスレーブストリームに対して完全な制御を有し、スレーブストリームの制御ビットをいつでも無効にすることができる。実行中のマスターストリームが一以上ある場合、それぞれは異なる指定されたスレーブストリームを持ちうる。適切な制御の設定により、アクティブなストリームは、他のアクティブなストリームの管理者として動作しえ、(典型的には)一時的に他のアクティブストリームの実行を制御しそれらと通信する。さらに、マスターストリームおよび管理ストリームは、直接もしくはストリームの優先順位を更新することによって、アクティブなスレーブストリームがどの処理リソースを用い得るかということに対する制御を有する。
【0028】
図1Aは、本発明の一実施形態によるマルチストリーミングプロセッサを一般化した図であり、0から3のラベルがついた4つのストリ−ム103へ複数のスレッドから命令を提供している命令キャッシュ101を示しており、この4つのストリームから命令スケジューラがアクティブなストリ−ムから機能リソ−ス107へ命令をディスパッチする。この場合4つであるがより多くてもよい複数のレジスタファイルの組109が、処理中にアクティブなストリームと関連づけられるべきスレッドコンテキストを格納するなどの処理に用いるために示される。レジスタファイルおよびデータキャッシュ111へもしくはこれらからのデータの流れおよび機能リソースは、レジスタ転送ユニット(RTU)を含むことができ、これは参照により本明細書に組み込まれる優先権の基礎となる米国特許出願第09/240012号明細書に教示されるとおりである。
【0029】
この実施形態では、独特なストリ−ム間制御ビットマップ115が個々のビットを格納し、これが、いくつかの場合には、ビットの組合せからなるバイナリ値が、個々のストリームと関連づけられ、以上で紹介したストリーム間通信および制御に関する特定の意味を割り当てられる。共有システムバス113は、命令キャッシュおよびデ−タキャッシュを結合する。示した図は典型的かつ一般的であり、当業者は、なしうる多くの変形形態が存在することを認識するであろう。本目的のための重要性は、同時に複数のスレッドをサポートするよう適合された複数のストリームということにある。
【0030】
ストリーム間制御ビットマップ115が、ストリーム間制御を定義し構成する制御設定の参照リポジトリであることは上述した。この参照において、いくかの例では単一のビットが、他の例では二以上のビットにより表されるバイナリ値が共有されるシステムリソースについてのアクティブストリームの優先順位、特定のストリームへの固定したリソース割当、およびアクティブリソース間の制御階層などを定義する。一の例示的な実施形態における特定の制御特性を以下に示す。
【0031】
本発明のこの実施形態における制御の一の態様においては、アクティブストリームは、当該ストリームに独特の制御参照データをセットおよび編集できる。他の態様においては、一のストリームが、他のストリームについての制御参照データを変更することができる。後者の態様では、各特定のストリームは、どのほかのストリームがその特定のストリームについてのどの制御データを編集しうるかを制御できる。
【0032】
図1Bは、図1Aのビットマップ115の部分であり、この場合はストリーム0である一のストリームによって許された許可の状態を示すビットの組を示し、他のストリームがストリーム0に一意に関連づけられた制御ビットを変更できるよう、もしくは、ストリーム0に関する特定の制御機能を働かせるよう許可する。この実施形態における同様のビットマップがストリーム1、2および3の各々について存在し、この説明では一つの例で十分である。このマトリックスにおいては、ストリーム1、2および3の各々について列があり、制御の定義のために行がある。やはり、これらのビットはアクティブストリーム0によってセットすることができ、ビットマップを編集する原因は、ストリーム0の機能に関連し、この機能は、ストリーム0で動作中のスレッドの性質によって定義される。ビットマップはしかしながら、マルチストリーミングプロセッサにおいてストリームに関連づけられた物理的リソースであり、ストリーム間制御および協調のいくつかの形式および程度を可能にするために存在する。
【0033】
図1Bの左から最初の行は管理とラベルづけされ、管理許可を示す。ストリーム1および2のための列の論理1は、ストリーム0が、ストリーム1および2に対して管理アクセスを許すがストリーム3には許さないことを示す。管理アクセスは、これらのほかのストリームがその瞬間のストリームの制御データを編集できることを意味する。示した設定により、ストリーム0についてのストリーム間制御データはストリーム0(自身)によりまたストリーム1および2により編集することができるがストリーム3によっては編集できない。各アクティブストリームがそれ自身の制御データを編集できるので、ストリーム1および2についての許可は、アクティブなストリーム0によっていつでも撤廃することができ、またいつでも再許可することができる。
【0034】
ストリーム0が一以上のストリームにそれ自身の制御データ構成を編集するためのアクセスを許可することができる状況の例としては、ストリーム0が非常に低い優先順位スレッドを実行中かもしくはスレッドを全く実行しておらず新しいスレッドのために単に利用可能であるかという場合である。
【0035】
図1Bの第二の行はイネーブルとラベルづけされる。ストリーム0はこの行のビットを用いてストリーム0がディスエーブルされている場合に他のストリームがストリーム0をイネーブルするパーミッションを与えるようにする。この場合には、この行には論理1が全くなく、したがってストリーム1、2もしくは3のいずれもストリーム0をイネーブルすることができない。図1Bの最初の行に関する上述の管理編集アクセスの許可と、かかるイネーブルもしくはディスエーブルなどの許可との間には明確な違いがある。第一の場合には、パーミッションが、その瞬間のストリームのための制御データを他のストリームがセットするのを許可し、広い視点でストリーム間の制御階層を再構成する。第二の例では、制御データへのアクセスが全く他のストリームには許されず、しかしながら、他のストリームはその瞬間のストリームのためのイネーブルもしくはディスエーブルなど特定の形式の制御を働かせるためのパーミッションを与えられる。イネーブルの右の次のビット行はディスエーブルであり、その例としての設定は、ストリーム1および3が、ストリーム0をディスエーブルするためのパーミッションを、その時点では与えられていることを示す。
【0036】
次のビット行は優先順位とラベルづけされ、ストリームについてのこの行の論理1は、ストリーム0が他のストリームにストリーム0のための優先順位をセットするためのパーミッションを与えることを示す。この場合、ストリーム0は、いずれのストリームもその優先順位をセットすることを許していない。優先順位は、本発明の実施形態では、典型的には、プロセッサリソースへのアクセスを示すためにセットされる。次のビット行は、割り込みとラベルづけされ、他のストリームがストリーム0に割り込めることを意味する。この場合、ストリーム2は割り込み特権を与えられている。
【0037】
本明細書の教示を与えられれば、当業者にとっては、示したマトリックスおよび特定の行の意味でなされうる様々な改訂が存在することは明らかであろう。マトリックスの図示が例示的なものであることおよびどのビットがどのストリームに関係しどの制御機能およびリソースに関係するかについての取り決めが維持される限りは、示したビットが、同様に、2バイトレジスタの個々のビットでありうることなども明らかであろう。
【0038】
本発明の好ましい実施形態では、ストリーム間制御は、複数のストリームとさらに複数の機能リソースを有するプロセッサを意味する、マルチストリーミングスーパースケーラプロセッサについて述べる。そのようなプロセッサは、例えば、いくつかのインテージャー処理ユニット、いくつかの浮動小数点処理ユニット、いくつかの分岐ユニットなどを有することができる。ビットマップ115(図1A)によって示されるストリーム間制御構成は、本発明の実施形態において、なんらかのストリームへなんらかのリソースを予約するためおよび他のストリームによる同一のリソースの使用を制限するためにセットすることができる。
【0039】
図1Cは、ストリーム0についての瞬間的なリソース割当を示すビット列である。やはり、同様のリソース割当構成が、すべてのほかのリソースについて同様に存在しうるが、説明のためには一つで十分である。この場合、4つのインテジャーユニット、4つの浮動小数点ユニット、および4つの分岐ユニットがある。瞬間的な設定は、ストリーム0がインテジャーユニット1、2および3とブランチユニット1への予約されたアクセスを有することを示す。逆に、この設定は、ストリーム0がインテジャー4、あらゆる浮動小数点ユニット、および分岐ユニット1、2もしくは3にアクセスできないことを意味する。アクティブストリームとしてのストリーム0は他のストリームへの制御ビット設定を許したり否定したりすることを含むそれ自身の構成をセットできるので、ストリーム0(もしくはなんらかのアクティブストリーム)は、特定の瞬間に、特定のリソースを予約することができる。やはり、当業者にとっては、図示した構造が例示的なものであり、数多くの方法で変更しうることは明らかである。
【0040】
いくつかの場合には、固定の割当およびスーパースケーラプロセッサにおけるリソースの分割に頼るかわりに、リソースを優先順位によってストリームに割り当てることによりもしくはいくつかのリソースのための割当と他のリソースのための優先順位管理の混合により、よりよい結果をえることができる。固定の割当により、図1Cに示されるように、一定時間の間、リソースを排他的に分配することができるが、もちろん分配は、それぞれのアクティブストリームによってそれ自身の割当のために、もしくは他のアクティブストリームによって許可が与えられた場合に何時でも編集(変更)することができる。
【0041】
図1Dは、ストリ−ム0についての優先順位設定に専用の、図1Aのビットマップ115の一部を図示する。この場合、優先順位は0から7まで変わることができ、したがって、優先順位レベルを示すビットのバイナリ値によるそれぞれの優先順位レベル設定のために3ビットが必要となる。ある実施形態では、3つの異なる種類の優先順位があり、実行優先順位、割り込み優先順位およびリソース優先順位と呼ばれる。すべての3つのタイプの優先順位は、図1Dにいくつかの形式で図示するが、図示したより多いもしくは少ない粒度もありうる。
【0042】
図1Dにおいて、トップの列は実行優先順位を示す。この設定は、ストリームが当該ストリームにおいてどのスレッドを実行できるかを決定する。すなわち、スレッドは、固有に一定の優先順位を有してもよく優先順位を割り当てられてもよく、図1Dに示された実行優先順位はストリームによって編集され得、もしくは管理アクティブストリームによってストリームのために編集される。ストリームの実行優先順位より高い優先順位を有するスレッドのみが当該ストリームにおいて実行することができる。優先順位を有するスレッドの概念は、様々な方法で実現しうる。いくつかの好ましい実施形態では、スレッドは、割り当てられかつ変更可能な優先順位をもつスレッドコンテキストによって優先順位をもつ。すなわち、コンテキストがレジスタファイルにロードされると、そのコンテキストは事前設計されたもしくは決定された粒度の優先順位番号を割り当てられることができ、そのコンテキストがアクティブになりかつストリームと関連づけられたときにストリームへとコールされた(もしくはされる)スレッドは、このとき、レジスタファイルに格納されたコンテキストの優先順位を有するものとみなすことができる。いくつかの場合には、以下の説明においてより明らかにされるように、コンテキストはレジスタファイル以外のメモリに格納することができ、より後の時間に、最初のもしくはさらなる処理のためにレジスタファイルへと引き出すことができる。格納されたコンテキストは、同様にコンテキストの優先順位レベルをもつことができる。
【0043】
図1Dのトップから2つめの列は、ストリーム0についての割り込み優先順位を示す。示した割り込み優先順位は3であり、3以上の優先順位レベルを有する割り込みのみがストリーム0に割り込めることを意味する。やはり、スレッドを有してアクティブであるときのストリーム自身もしくはアクティブな管理ストリームは、優先順位レベルを編集することができる。
【0044】
インテジャー、浮動小数点、およびブランチとラベルづけされた、図1Dのストリーム0についての優先順位レベル設定の下3つの列は、いくつかのタイプのプロセッサリソースへのアクセスのについてストリーム0の優先順位レベルを示す。これらの3つがすべてのタイプのプロセッサリソースを構成するわけではなく、したがっていくつかの実施形態ではリソース優先順位についてより多くの列がありうることは、当業者には明らかである。
【0045】
その時点で、図示されたストリーム0は、インテジャーユニットについて7の(最も高い)優先順位を有しており、浮動小数点ユニットについて4の優先順位レベルを有しており、ブランチユニットについて3の優先順位レベルを有する。これらの設定は例としてのものであり、代替実施形態では、他のプロセッサリソースのために維持される優先順位がおそらくあってもよい。本発明の様々な実施形態においては、一時的に固定されたリソース割当が排他的に用いられてもよく、他の実施形態においては、優先順位が排他的に用いられてもよく、さらに他の実施形態においては、以上の2つの混合が用いられてもよい。リソース優先順位は、リソースについて競合になった場合に、最高の優先順位をもったアクティブなストリームがそのリソースを奪うことを意味する。
【0046】
本発明のこの実施形態においては、他の制御ビットは、制御階層および状態を示すために用いられる。図1Eは、ストリーム0のためのそのような制御ビットを示す。この例では、図1Eのストリーム0についての制御ビットは、ストリーム0がその瞬間的な時に、マスタースレッドを実行しておりかつイネーブルされているがスリープモードにはないことを示す。これらのビットは表示的なものであり、主に他の動作しているアクティブストリームの参照のためのものである。例えば、あるアクティブストリームが他のストリームをディスエーブルすると、その過程で、動作しているストリームが、従属するストリームのイネーブル/ディスエーブルビットをセットする。もし、アクティブストリームが自分自身をスリープモードにするときは、そのスリープビットをセットしてからスリープモードに移り、アクティブなストリームが制御ビットをチェックすることによってそのストリームがスリープモードにあることを知り得る。あるアクティブなストリームが他のストリームに働きかけ得る制御は、いくつかの例では制御構成にビットをセットすることにより、たとえば他のストリームについてのリソース割当および/または優先順位を編集することなどにより、成し遂げられ、他の例では、他の方法で、たとえばアクティブでないストリームの新しいスレッドを開始するなど、ソフトウエア割込みを発行することを通じて成し遂げられる。
【0047】
マスターストリームは、マスタースレッドを実行するがゆえにマスターストリームであり、アクティブなマスターストリームは、マスターストリームにとってスレーブのストリームであるほかのストリームに対して完全なアクセスと制御を有する。必ずしも、なんらかのストリームが制御構成を編集するためのパーミッションをマスターストリームに与える必要はない。マスターストリームは様々な義務を有することがあり、その一つが、好ましい実施形態では、マルチストリーミングプロセッサの最初のセットアップである。本発明の実施形態によるプロセッサを活用するシステムにおけるスタートアップおよびリセットの際、マスターストリームは、通常、ブート過程のなんらかのポイントで呼び出され、例えばストリームのための初期優先順位をセットするため、監視ビットをセットするため、および特定のストリームの特定のスレッドを開始するために動作する。いくつかのケースではなんらかのデフォルト設定が専用のBIOSコードを実行することによってなされるので、これらの義務は、システムごとに変わることができまた変わり、マスタースレッドは、さらなるセットアップ義務などのために呼び出され得る。
【0048】
セットアップの後は、マスタースレッドは、通常、プロセッサのストリームの中で実行しつづけることを要しない。その終了まで達成したマスタースレッドは、それが占有するストリームで他のスレッドを開始するようセットしてリタイアすることができ、もしくは、他のアクティブストリームが割り込みサービスルーチン、他の種類の有用な機能などを実行するために使用するのに利用可能であるままにアクティブでないストリームを残して単にリタイアすることができる。マスタースレッドはいくつかの理由でリタイアした後に呼び戻される。例えば、リソース競合は、マスターストリームに解決を要求することがあり、割込みもしくは例外がマスターストリームに解決を要求することがある。いくつかのシステムのマスターストリームがオペレーティングシステムもしくはその一部、またはシステムBIOSによりロードされアクティブになったルーチンを実行していることがありうることも当業者には明らかである。本発明の実施形態によるいくつかのシステムでは、すべてのストリーム間制御機能をディスエーブルにし、プロセッサが本明細書で教示する制御能力のないプロセッサとして動作するることを可能にすることもできる。
【0049】
いくつかの実施形態で、特定の固定された機能性があってもよい。例えば、本発明によるプロセッサは、常に1つのストリ−ムをマスターストリ−ムとし他のストリームはそうしないように配線することができる。配線は、特定の機能性が、シリコン装置およびそれらの接続において実現されるハードウエアリソースによって事前設定されることを意味する。他のスレッドを特定のストリームへ特別に割当ることを設定することもできる。そのような場合には、特定のリソース優先順位および/または割り当てを設定することができ、もしくは本明細書で教示するストリーム間機能性のいずれか他のものも設定することができる。そのような事前設定は、たとえばネットワークルータなどの高度に専用化したシステム用途にとっては非常に望ましい。
【0050】
本明細書の教示に従って、当業者にとっては、制御データを表現し、格納し、アクセスする多くの方法が存在することが明らかである。ここで提供する図示は例としてのものである。好ましい実施形態では、制御データマップを直接プロセッサチップ上のシリコン装置に実現する。とりわけ制御データへのアクセスが早いという理由からこのような構成が好まれる。しかしながら、いくつかの実施形態では、制御ビットマップはシステムのいずれかのアクセス可能なメモリ装置、たとえばRAMの他に使用されない部分やフラッシュカードメモリなどにもあってよい。
【0051】
本発明の実施形態によるシステムにおけるマスタスレッドの概念および存在を上述してきた。すべてのほかのスレッドはマスタースレッドのスレーブであり、したがって、一のマスターストリーム以外の全てのアクティブストリームは、マスターにとってスレーブストリームである。しかしながら、マスタおょびスレーブ以外のほかの制御レベルも存在する。上の教示から推測できるように、特定のストリームに監視制御を許し、他のストリームへの監視責任を果たすことを期待することができる。上述の本発明の実施形態における監視ビットの状態は、監視制御の粒度を反映する。
【0052】
マスタスレッドが最初のセットアップおよびスレッドのストリームへのロードなどの目的を追求しえ、衝突や例外を解決するために戻りうることは上述した。しかしながら、いずれかほかのプロセッサシステムと全く同様に、全体のシステム機能は一以上のアプリケーションを実行するためのものである。汎用コンピュータにおいては、多くのアプリケーションがありえ、コンピュータの使用も同様に多い。利用者は、インターネットをブラウズし、電子メールを送受信し、絵をかき、写真を処理し、文書を作成し、さらに多くを行うことができる。通常、各アプリケーションは特定の機能に専用であり、アプリケーションスレッドは、アプリケーションが呼ばれたときに、プロセッサの一以上のストリームを占有する。
【0053】
例えば、パケットデータネットワークのデータルータなどのより専用のシステムでは、比較的アプリケーションは少なく、機械の機能は、通常、ユーザが開始する以外のいくつかの方法で配列される。例えば、データルータでは、機能を、処理し転送するために受信したデータの性質に従って呼び出すことができる。
【0054】
本発明のある一態様によれば、すべての実施形態において要求するわけではないが、ソフトウエアを、本発明の実施形態によるマルチストリーミングプロセッサの新規で独特の制御機能を最大限に利用するために特別に高度化することができる。また、プロセッサで実行しているいくかのソフトウエアをこの発明の実施形態により高度化することができ、他のソフトウエアは高度化することができない。通常、本発明の実施形態によるマルチストリーミングプロセッサに組み込まれた新しい制御および状態機能と協働するための特定のコードを有する、少なくともオペレーティングシステムもしくはマスタスレッドまたはその両方が存在する。
【0055】
図1Aから1Eを参照して上述した制御データリソースおよび機能が与えられれば、全てのストリームが対等で全く公平なものから多くの機能が事前設定された可変でない高度に専用のものまで、実現しうる広い構成バリエーションがある。たとえば、本発明によるいくつかのプロセッサでは、一のストリームたとえばストリーム0は設計により常にマスタストリームであってもよい。マスターストリームが全てのプロセッサリソースへの完全なアクセスを有しかつ全てのほかのストリームの制御データを操作できる一方、他のどのストリームもマスターストリームの制御機能を変更できないので、図1Bから1Eのストリームのために示し上述したデータビットおよび値は、専用のマスターストリームに対して実現する必要がない。
【0056】
上述の説明および例としてのアーキテクチャが与えられれば、本発明以前には利用可能でなく、現在では実施されうるストリーム間通信および制御機能の広いバリエーションがある。例えば、いずれか一のアクティブストリームが、その必要性からそれ自身のリソース割当および優先順位を操作することができ、これはそのストリームで実行するスレッドの性質および他のストリームで実行するためのもしくは実際に実行している利用可能なほかのスレッドの性質に、密接に関係する。また、アクティブストリームは、可能な影響についての事前の知識により他のストリームを開始し、イネーブルし、ディスエーブルし、割込み、分岐およびジョインすることができる、というのは、各アクティブストリームは他のストリームのための制御データ設定をチェックできるからである。提供される大きな利点は、プロセッサリソースの単なる使用よりもむしろ実時間効率を最大化する能力である。すなわち、ここで、システムの目的について取り上げることができる。プロセッサは、歴史的に、プロセッサリソースを最大化するよう設計されてきており、しばしば、正しくない仮定においては、最大化により同様にシステムの目的を必ず取り上げる。しかしながら、マルチストリーミングプロセッサが低い優先順位のタスクを効率的に達成するのに十分にかかわる一方より高い優先順位のタスクが不適当な注意を受け、従ってシステムの目的を適当には取り上げないことを理解するのは容易である。
【0057】
本発明の実施形態では、並列に実行する他のスレッドを必要とする、もしくはそのスレッドによって高度化されうることがあるスレッド(アプリケーション)を実行するアクティブストリームは、従属スレッドを呼び出し、利用可能なストリームで開始することができる。一例は、MPEGビデオクリップを有するWEBページにアクセスしているWEBブラウザである。本発明の実施形態によるプロセッサの一のストリームにおいて実行するブラウザは、利用可能な一のストリームで実行するためにMPEGプレイヤーを呼び出すことができる。データ制御ビットおよび値の状態は、MPEGプレイヤーのストリームの選択においてブラウザストリームをガイドする。ブラウザは、例えば、より高い優先順位を有するスレッドを実行するアクティブストリームを組み入れることはできない。しかしながら、いつでも割り込みできるという制御データビットを設定しているストリームは組み入れることができる。
【0058】
この実施形態の動作を、新しいスレッドをフォークするなどの典型的なタスクを成し遂げるための一連の操作を追うことによって説明することができる。スレッドは、他のストリームで実行するために他のスレッドをフォークすることができる。例えば、オペレーティングシステムは、アプリケーションプログラムをフォークすることを望むことがあり、もしくは、アプリケーションがサブタスクすなわちスレッドをフォークする必要がある場合がある。例外に遭遇したスレッドはその例外を処理するためのプロセスをフォークすることができる。
【0059】
本発明の実施形態におけるフォークおよびジョイン操作のための好ましい方法を図2Aに示す。図1Aのストリーム1のスレッドが新しいスレッドをフォークしているものとする。このため、監視スレッドとしてのストリーム1は、ステップ201で使用するアイドルストリームを要求し、ステップ202でそのようなストリームが利用可能になるまで待つ。ほとんどの場合、待つことにはならない。ストリーム1は、例えばステップ203におけるストリーム2などの、利用可能なストリームの番号を受け取る。いくつかの状況においては、待つ限界が必要とされ、その限界の後は、いずれのストリームも利用可能にならないと、代替的なアクションが採用される。しかしながら、この例については、ストリームがすぐさま利用可能であるもしくは妥当な間隔で利用可能になるものと想定される。
【0060】
新しいスレッドを実行すべくストリーム2を初期化するため、アクティブストリーム1は、新しいスレッドにおける最初の命令のアドレスを割り当てられたストリームのプログラムカウンタにロードし、かつ、新しいスレッドのコンテキストのほかの構成要素をステップ204でプロセッサリソースの適当な要素にロードして、ステップ205でストリーム2のために優先順位マップをセットする。ストリーム1は、ステップ206においてストリーム2のための監視制御ビット107をセットすることもできる。(あるいは、ストリーム2で実行する新しいスレッドはステップ208の後でそのビットを設定することもできる)。ストリーム2は、監視スレッドがスーパバイザとして動作するのを可能にするようセットされた監視制御ビットを有しなければならず、スーパバイザの監視制御ビットは制御されるスレッドがスーパバイザに割り込むのを可能にするようセットされなければならない。これらの初期化ステップがなされると、監視スレッドは、ステップ207においてストリーム2の新しいスレッドを開始する。あるいは、ストリーム2を内部もしくは外部イベントを待っているスリープモードにおくことができる。新しいスレッドは、ステップ208でストリーム2で実行を始める。ステップ209およびステップ210で両方のストリームが独立かつ平行に、ジョインが要求されるまで実行する。この例では、ストリーム1で実行するスレッドが最初に終了するものと仮定する。
【0061】
監視スレッドがフォークされたスレッドをジョインする必要があるとき、まず、フォークされたスレッドがいまだ実行中かどうかを調べるようチェックする。もし、実行中であれば、監視スレッドは、ステップ211でそれ自身をスリープにおく命令を実行し、ストリーム制御ビット118のスリープビットをセットする、ついで、フォークされたスレッドからのジョインソフトウエア割込みを待つ。フォークされたスレッドは、ステップ212でジョイン割込みを送り、監視スレッドは、割込みを受け、ステップ213で目を覚ます。スーパバイザはジョイン操作をステップ214で完了する。最後に、フォークされたスレッドはステップ215で終了し、他のスレッドによる利用のためにそのストリームを解放する。
【0062】
図2Bは、フォークされたストリームが監視ストリームより前に終了するもう一方の場合について図示する。この場合、フォークされたストリームが終了すると、すぐにジョイン割込みを送る(ステップ216)。その割込みは監視ストリームが終了するまで保留されたままとなり、ついで、ステップ217で割り込みがサービスされ、ジョインが完了する。レジスタが、「電子プロセッサのためのレジスタ転送ユニット」と題され、1999年1月27日に出願された同時継続の優先権主張の基礎となる出願に記載されるようにバックグラウンドでロードされ、格納される場合、コンテキストがいまだロードされていない新しいスレッドをフォークするプロセスは、図2で示すステップから図3で示すように修正される。
【0063】
図3に示すように、プログラムカウンタおよびコンテキストをセットするためのステップ204が除外されていることを除けば、ステップは、図2Aおよび図2Bにおけるステップと同一である。ステップ206の後に、新しいステップ301において、スーパバイザは、レジスタ転送ユニット(RTU)に、新しいストリームのためにコンテキストをロードするよう知らせる。これらの動作が完了すると、スーパバイザはステップ209で他の操作を続けることができる。
【0064】
RTUは、ステップ302でコンテキストの切り替えを行う。RTUが新しいストリームのコンテキストをロードすると、RTUは新しくロードしたレジスタファイルをアクティブにすることができ、やはり監視ストリームとは独立にステップ208において新しいストリームを開始することができる。図2のステップ207は、したがって除去される。残りのステップは図2Aと同一であり、スーパバイザが最初に終わるものと想定する。そうでない場合は、図2Bと同一である。同時継続出願の図2と同様に、ストリーム2によって先に利用されたレジスタファイルはセーブされる。上述の実施形態は、本発明の範囲内で実施され得る多くの実施形態の例示的なものである。当業者は、本明細書で最初に教示される強力なアーキテクチャコンセプトが、シングルチップシステム、マイクロプロセッサ、コントローラ、ルータ、デジタル信号プロセッサ(DSP)、ルーティングスイッチおよび他のネットワーク装置および他の特殊用途のために設計されたプロセッサを含むがこれらに限られない、多くのタイプのプロセッサに適用可能であることを認識するであろう。この発明の教示を、簡単なワンチップ完結システムから複雑なスーパーコンピュータプロセッサまでの、あらゆるサイズのプロセッサと関連して実施することができる。本発明は、小さいシステムのために簡単な高度に専用化した形式で実現することができ、もしくは、大きいシステムのために複雑で洗練された形式で実現することができる。マスタおよび監視ストリームがスレーブストリームのリソースの使用を制御するよう定義およびイネーブルすることにより、プロセッサを、特定のソフトウエアおよびソフトウエアの組合せの要件に合わせるため、例えば、厳格なタイミング要件に合わせるために、動的に構成することができる。例えば、ストリームにプロセッサ全体の能力のあるパーセント、すなわち特定のリソース又はリソースクラスの利用率がが保証される。したがって、新しいアーキテクチャにより、処理リソースの効率的な使用と特定スレッドの実行の最適化のバランスをとることができる。
【0065】
優先順位の使用のさらなる例として、図1Aによるプロセッサを具体化するパケットデータネットワークで使用するためのルータを考える。ルータプロセッサの各ストリームは、ストリーム0でマスタとして実行する制御プログラムを除き、3つの異なるタイプの別個のパケットフローを処理する。3つのスレーブストリームの各々が、パケットのタイムリーな転送に関する異なるサービス保証を有する異なるプロトコルを用いてパケットを処理する。特定のプロトコルおよび処理されているサービスクラスに対して、インテジャーユニットへのアクセスがサービス保証を満たすことに関して大きな影響をもつことを想定する。したがって、マスタは、最も高いサービス保証を有するストリーム1の優先順位マップを値6に設定し、ストリーム1に他のストリーム(マスタを除く)より高い、インテジャーユニットへのアクセス優先順位をあたえる。次に最も厳しいサービス保証を有するストリーム3は、より低い優先順位5を有し、ストリーム2が最も低い優先順位3を有する。最初に優先順位をセットした後、マスターは各プロトコルのスループットをモニタし、サービス保証が満たされているのを保証し、必要なときにさらに優先順位を修正する。したがって、スーパバイザは、多種多様なプロトコルおよびサービスクラスのサービス保証を満たすように必要とされる優先順位を修正することにより、スレッドの現在の必要に基づいて動的にリソースをストリームに割り当てることができる。サービス保証がハードウエアではなく監視ソフトウエアを用いて満たされるため、新しい要求が出てきたときに、ルータを容易にアップグレードすることができる。
【0066】
優先順位の利用の他の例を、さらに、データルータシステムにより説明することができる。データパケットを処理するためにストリームから一以上のスレッドが利用可能である、4つのストリームを有するシステムを考える。コンテキストが、レジスタファイルにロードされてしまっており、着信するデータパケットを処理するための4つのストリームの各々においてスレッドを開始するためストリームと関連づけられていると想定する。
【0067】
データルータの分野で知られているように、すべてのデータパケットが同等の処理を必要とするわけではない。いくつかのパケットは受信されたときに転送することだけが必要である。他のパケットは、異なるフォーマットへ再構成する必要がある。さらに他のものは、例えば、暗号化/解読する必要がある。そのパケットを処理するためのワークフローを決定するパケットのタイプは、通常、パケットのヘッダに含まれ、スレッドコンテキストがレジスタファイルにロードされ、レジスタファイルがストリーム(アクティブストリーム)と関連づけられかつデータパケットについて処理が開始された後にのみ、タイプおよび処理の範囲がプロセッサに既知となる。
【0068】
本発明の好ましい実施形態においては、図1Dに示し、上述したとおり、各ストリームは、より高い優先順位を有するプロセスのみがそのストリームで実行することができるということを意味する実行優先順位を有するものとされる。一態様において、プロセッサの各ストリームについての実行優先順位は、図1Aのビットマップ115の一部における3つの編集可能なビットとして維持される。例としてのデータルータの場合、パケットが処理されるべく到着すると、パケットのためのコンテキストがレジスタファイルにロードされる。これは、優先権の基礎となる米国特許出願第09/240012号明細書の教示によるレジスタ転送ユニット(RTU)により好ましい実施形態で行うことができる。
【0069】
直前に述べたように、パケットの性質を知り得る以前にデータパケットの処理を開始する必要がある。したがって、パケットが到着し、レジスタファイルがロードされると、各コンテキストは、最初の高い優先順位を与えられる。例えば、7段階では、各々の最初のコンテキストは6の優先順位を割り当てられる。
【0070】
次に、ストリームが利用可能になると、レジスタファイルの優先順位およびストリームの実行優先順位に従って、レジスタファイルがストリームと関連づけられる。レジスタファイルをストリームと関連づけると、ストリームにおけるコンテキストスレッドを開始し、アクティブなストリームとなる。次に、ストリームの優先順位が、ロードされたコンテキストの高い優先順位(この例では6)に設定される。新しくロードされたパケットの処理が開始すると、そのパケットが実際にファーストパケットであり、高い優先順位が実際に適切であることを決定でき、この場合、処理を完了まで続ける。本発明では、パケットの処理の完了時に、ストリームで開始される次のコンテキストが最高の優先順位を有する待ちコンテキストであることが望ましい。これを、この例では、コンテキストがロードしもしくは実行優先順位が0となるまで実行優先順位を選択的に低くすることにより行う。0に到達する唯一の場合は、任意の優先順位の待ちコンテキストが全くない場合である。この状況では、ストリームは、コンテキストが利用可能になるまで、アイドルのままである。
【0071】
この例では、パケットの処理の終了時に、実行優先順位が6の場合、実行レベルは5に、次いで4などとリセットされ、これにより、ロードされる次のコンテキストが最も高い優先順位レベルを有する待ちコンテキストであることを保証する。処理が開始すると、しかしながら、パケットが中間の優先順位に値するタイプであることを決定することがある。このとき、ストリームで実行中のスレッドは、実行優先順位をたぶん4に下げる。優先順位4より高い待ちコンテキストがない場合、アクティブストリームは、データパケットを完了まで処理しつづけ、上述の例に従い、完了すると、ストリームは実行優先順位を3、ついで2、などと新しいコンテキストがロードされるまで実行優先順位を下げる。しかしながら、新しいパケットが到着すると、新しいコンテキストは6の初期優先順位を与えられるので、新しいパケットの到着はコンテキスト切り替えを強制し、ストリームのより遅いパケットの操作を止め、そのかわりに、新しい、より高い優先順位のデータパケットの処理を開始し、ストリームの実行優先順位を6にリセットする。
【0072】
コンテキスト切り替えが起こる場合、セーブされるコンテキストはまだ優先順位4を有しており、上述のように、通常RTUの制御下で、さらなる処理のためストリームに再割当される機会を待つ。もちろん、新しく着信するデータパケットがより速いパケットである保証はないが、そうである一定の確率がある。新しいパケットがより速いパケットであると、システムの目的が高められる。そうでない場合、次に、やはり、目下優先順位レベル6であるアクティブストリームが自身の実行優先順位を再び下げる、新しくロードされたパケットの実行を潜在的に遅らせ、より速いパケットを処理しようとする。新しいパケットは、例えば、解読を要求するとても遅いパケットであることがある。このとき、アクティブストリームは、実行優先順位を2に下げ、新しいパケットが処理のために到着した場合、コンテキスト切り替えをやはり強制し、この場合、コンテキストは、遅いパケットのために2の優先順位でセーブされ、遅いパケットは、ついで、優先順位による処理機会を待つ。ストリームが実行優先順位2で実行中で、新しいパケット(6)は到着せず、しかし、4の優先順位を持った待ちコンテキストがある場合、4のコンテキストが、2の実行優先順位をもつストリームより優先する、などとなる。
【0073】
このように、たとえコンテキストがロードされかつ各新しく着信するデータパケットについて処理が開始するまでタイプを知りえないとしても、パケットをタイプに従う優先順位により処理することができ、データルーティングアプリケーションにおけるシステム目的を達成するための新しい方法を提供する一方、プロセッサの効率を保証する。
【0074】
他の多くの有用な機能が、ストリーム間制御および通信に関して本発明の教示と整合する。例えば、専用アプリケーションのための、固定マスタ/スーパバイザと固定スレーブストリームを伴う簡単な2ストリームコントローラにおいては、スレーブストリームのための単一のスーパバイザ制御ビットにより、マスタストリームに、リソース制御の有用なタイプ、例えば、浮動小数点ユニットへのアクセスを許す一方で、監視制御ビットを用いて重要な期間の間、そのような制御をスレーブが停止できるようにする。
【0075】
監視制御ビットおよびストリーム制御ビット機構を通じて、あるストリームが他のストリームに対して及ぼし得る制御のタイプには制限がない。システムの目的に依存して、単一タイプの制御もしくは多くの数の制御が適切となる。付加的な制御が、例えば、グローバルレジスタやグローバルメモリの共有、メモリ保護、割込み優先順位、割込みマスクへのアクセス、割込みもしくは例外とストリームの間のマップへのアクセスを調節することができる。一以上の低パワーモードを有するプロセッサにおいては、パワー制御へのアクセスを追加の監視制御ビットおよびストリーム制御ビットを介して調節することができ、もしくはそのような制御をマスタースレッドを実行中のストリームのために排他的に予約することもできる。
【0076】
あるストリームが他のストリームのリソースに対して及ぼし得る制御のタイプはまた多くの形式をとることができる。最も簡単な形式のうちのひとつにおいては、固定マスタ/スーパバイザと固定スレーブストリームとをもつ例えば専用アプリケーションで用いるための簡単な2ストリームコントローラでは、スレーブストリームのための単一のストリーム制御ビットは、マスタが全てのリソースの完全な利用を必要とするときに、命令シーケンスの間スレーブをディスエーブルにする能力をマスターストリームに与える。
【0077】
優先権の基礎となる米国特許出願第09/216017号明細書に記載された任意の形式の優先順位およびスケジューリングを、本発明による新しい教示と組み合わせて実施することができる。そのような優先順位が実現されなくても、一時的に一以上のリソースへのほかのストリームのアクセスを直接ブロックすることによりより簡単な制御の形式を働かせることができる。この場合、優先順位を表す監視制御ビットはリソース制御を表すビットで置き換えることができる。優先順位マップは、一時的に一以上のリソースもしくはクラスまたはリソースへのアクセスを拒否するために使用する一以上の制御ビットで置き換えることができる。例えば、あるストリームが浮動小数点ユニットの排他的な使用を必要とするとき、そのストリームは他のストリームのスーパバイザとなることができ、ストリームが排他的なアクセスを必要とする間、他のストリームの各々における浮動小数点ユニットへのアクセスを拒否するリソース制御ビットを設定することができる。他の部分的にブロックされたストリームが浮動小数点命令に出くわした場合、命令スケジューラが命令の実行を、そのストリームのための浮動小数点リソース制御ビットが監視ストリームによってリセットされるまで、停止する。
【0078】
マルチストリ−ミングプロセッサでの割込みと例外処理
割り込みと例外の分野について、上のまとめた開示において短くではあるが説明した。しかしながら、すべての多くの新しい程度の自由度およびそれによってもたらされた多様性により、複数のストリームの存在は、割込みと例外が関係するかなりの複雑さをもたらす。本発明者は、すべてのタイプのマルチストリーミングプロセッサのアーキテクチャにおいて重要な見落とされた分野が存在することを確認しており、この分野には、上述のタイプには限られず、プロセッサ外の装置、例外、およびストリーム間通信を収容するための一般的な方法として、個々のストリームによる割込みの柔軟で順番に沿った取扱いを含む。したがって、本発明者は、割込みおよび例外の調整とマッピングを介して機能性を拡張するため独特かつ強力な装置および方法をさらに提供する。これらの新しい技術を、以下に、実施可能となるように詳細に述べる。
【0079】
割り込みおよび例外に関する本発明の実施形態において、発明者はいくつかのタイプを認識する。
外部:割り込みが、プリンタインターフェース、モデム、もしくは他のI/O装置などプロセッサ外の装置によって生成される。
内部:コードのセクションを迅速に呼び出したりスレッド間で通信するなどの目的で意図的に割り込みを発生する特別な命令をプロセッサによって実行する。そのような割込みはソフトウエア割込みとしても知られる。
例外:命令の実行もしくはハードウエアエラーが原因で、特別な例外イベントが処理中におこる。例えば、命令がある数を0で割ろうとすることがあり、戻りのスタックがオーバーフローすることがあり、メモリからフェッチしようとする試行がメモリパリティエラーを起こすことがある。
【0080】
ソフトウエア割込みの領域においては、マルチストリームプロセッサのコンテキストで、本発明の実施形態では、あるストリームで実行しているスレッドは、他のストリームに割り込むことができる。本明細書の説明では、ある(アクティブな)ストリームが、アクティブであってもよく、アクティブでなくともよい、他のストリームに割り込むことができるとされる。この機構は、本発明の実施形態において、特別のイベントの処理を始めるためにもしくはコードシーケンスの特定の場所で使用される。いくつかの例では、アクティブストリームは、このストリーム間割込み能力を用いてプロセッサの制御を得、他のストリームのスレッドの実行に対して優先権を得たり、実行をストップするようにする。他の例では、ストリーム間割込みを、あるストリームによって用い、いくつかのタスクが性能もしくは応答を改善するため他のストリームによって実施されるように要求することができる。内部の、ストリーム対ストリーム割込みの例として、アプリケーションが他のスレッドもしくはタスクを実行する繰り返しのかつ頻繁な必要があるような場合における、あるストリームでのアプリケーションプログラム(スレッド)の実行を想像することができる。通常、従来技術におけるそのようなプロセスは、タスクを呼び出し、コンテキストを切り替え、タスクを処理し、ついで元のスレッドにもどるために別のコンテキスト切り替えを実施することによって達成された。本発明の実施形態では、各ストリームのための専用のレジスタを有しているので、主なアプリケーションをあるストリームにマッピングすることができ、他のタスクを別のストリームにマッピングすることができ、タスクが必要なときに第一のストリームが第二のストリームを割り込みし、かなりのプロセッサオーバーヘッドを回避する。
【0081】
当業者は、これがストリーム間割込みの多くある例の一つにすぎないことを理解するであろう。そのようなマッピングとストリーム間活動を達成するために必要な方法およびハードウエアの構造を、以下により詳細に説明する。
【0082】
ストリーム間割込みの機構の拡張において、本発明の実施形態では、アクティブなストリームは、例外処理を他のストリームに明渡すことができる。このプロセスでは、例外に直面しているストリームが、例外処理のためにマッピングされたストリームに割り込み、例外処理ストリームが完了するまで待った後それ自身の処理を続ける。この独特の能力が、特に実時間システムでは重要であり、コンテキストをかえるオーバーヘッドを回避することができる。このとき、構造化された例外処理をハードウエアで実施することもできる。
【0083】
外的割込み
図4は、本発明の一実施形態の一般的な割込みマッピングおよび処理を示すアーキテクチャの図である。この図において、0、1、2および3とラベルづけされたストリーム401は、図1Aのストリーム103と同じ4つのストリームである。外的割込みのために、プロセッサは、プロセッサ外の装置によって生成される外部割込み405を検出するための割込み検出論理403を含む。割り込み検出論理は、割込み論理407と通信する。いくつかの実施形態における論理407は割り込みマッピングデータ409と通信し、マッピングデータ409はいくつかの実施形態において図1Aの制御マップ115の一部である場合もあるが、いくつかの実施形態ではプロセッサ上もしくは外の別個のエンティティであることもある。割り込み論理は個別のストリームに割り込み、個別のストリームは論理パス411によって応答する(認める)。
【0084】
外部割込みとしては、上で短く述べたように、割り込み(405)が、プロセッサ外のソースによって生成され、本発明の実施形態に従い割り込み検出論理403によってマルチストリームプロセッサにおいて検出される。この検出はいくつかの方法のいずれかで行ってもよい。外部装置は、例えば、プロセッサへの入力ピンを有するそれぞれの専用割込み線に働きかけることができ、検出を、例えば電圧変化のリードエッジもしくはトレールエッジで行うことができる。割り込み発行のほかの手段については、本発明者に知られている。
【0085】
一度外部割込みが検出されると、論理403が割り込みの受け取りを論理407に通知する。マルチストリーミングプロセッサの技術分野で新しいいくつかの可能な機構の一つに従い割り込みを処理することはこの実施形態の論理407のタスクである。詳細には、割込み論理407が割り込みを受け取り、割り込みのタイプおよび以下の機構の任意の組合せに応じて、どのストリームもしくは複数のストリームに割り込むかを決定する。
静的マッピング:割り込みが特定のストリームにマッピングされ、このマッピングは固定であり変更可能でない。例えば、3つのタイプの割込みと2つのストリーム。タイプ1の割込みがストリーム2にマッピングされ、タイプ2の割込みがストリーム1にマッピングされ、タイプ3の割込みはストリーム1および2の両方にマッピングされる。好ましい実施形態では、この種の静的マッピングを論理407(配線)で特定の論理装置により達成し、設計時に固定する。
プログラマブルマッピング:割り込みが特定のストリームに、プログラミングビットマップもしくはデータストレージによりマッピングされる。この変形形態では、割込みマップ409があり、割り込み論理407がこのマップを参照して受け取った割り込みにつき、どのストリームもしくは複数のストリームに割り込むべきかを決定する。このマッピングは一般に、ブートアップ時もしくはオペレーティングシステムによってなされ、割込みが起こる前に固定される。一度割り込みが検出されると、このマッピングが照会され、適切なストリームが割り込まれる。例えば、3つのタイプの割込みと2つのストリームを想定する。タイプ1の割込みはストリーム2にマッピングすることができ、タイプ2の割込みはストリーム1にマッピングすることができ、タイプ3の割込みはストリーム1および2の両方にマッピングすることができる。後の時点で、ストリームが異なるスレッドを実行すると、タイプ1およびタイプ2はともにストリーム1にマッピングされ、タイプ3はストリーム1および2の両方にマッピングされる。この場合、マップ(409)は、マッピングを変更するためにオペレーティングシステムなどのソフトウエアによって変更される。
動的もしくは条件付マッピング:この場合、割込みは論理を用いることによって特定のストリームにマッピングされ、この論理は、割込みが起こった時点でのマシンの状態を認識し、割込みが発生したという事実および、例えば、割り込みのタイプなどのほかのパラメータによってもマッピングを生成する。マッピングは、割込みが起こるたびに動的に生成される。動的なマッピングのため、処理するアルゴリズム(ファームウエアもしくはソフトウエアルーチン)があってもよく、もしくは論理が、論理407に通知される割込みの結果を変えるためにセット可能なビットおよびレジスタをもっていてもよい。例えば、割込みマッピングアルゴリズムは、割込みをアクティブでないストリームにマッピングすることもでき、アクティブでないストリームがないときには、もっとも低い優先順位のスレッドを実行中のストリームへマッピングすることができる。
【0086】
一度論理407がマッピングを決定すると、ストリームは論理パス411で割り込まれる。当業者は、一度決定がなされると、割り込みがストリームへ発行されるいくつかの方法が存在することを認めるであろう。一度割り込みがストリームもしくは複数のストリームへ発行されると、ストリームは割り込みサービスルーチンを実行させるためにレディであることを認めなければならない。割り込みサービスルーチンに誘導することは、通常の技能をもった当業者にとってよく知られたプロセスである。この認容は異なるストリームについて異なる時間に起こりうる。あらゆる遅延は現在そのストリームで実行しているコードに起因し、もしくはストリームがその割込みを一時的にマスクすることもある。その割込みは、しかしながら、外部ソースが割り込みを働かせる間はペンディングのままである。割り込み検知論理403がこの振る舞いを制御する。複数のストリームが割り込みを認容するよう要求される場合、割込み論理は、すべてのストリームが認容するまで待ってから外部認容を送る。この振る舞いは、必要に応じて修正できる。すなわち、外部認容は、一のストリームのみか、他の任意の組合せで割込みを認識したのちに起こり得る。
【0087】
各ストリームが割り込みを認容すると、割込み論理は適切なサービスベクトルをそのストリームに送る。このベクトルは、ストリームの各々について同一でも異なっていてもよい。ストリームが受け取ったベクトルに依存して、関連する割込みサービスルーチンがストリームにロードされ、実行を始める。したがって、異なるストリームは同一の割込みに対して異なる応答もしくは異なる振る舞いをなしうる。例えば、オーディオ装置が2つのストリームに割り込み、その一方が割り込みサービスルーチンに誘導し、オーディオデータをハードディスクドライブに格納する。他のストリームはオーディオ再生ルーチンに誘導することができ、オーディオデータを直接スピーカに向けることができる。
【0088】
割り込まれた各ストリームがその割込みサービスルーチンを終了した後、ストリームは通常、どのスレッドであれ、割込みが発生する前に実行していたスレッドに戻る。やはり、異なるストリームは、戻るために異なる時間をかけることができる。
【0089】
内部割込み
短く上述したように、内部割込みは、一般に、オペレーティングシステムからの特定の機能性を要求するためもしくはサブルーチンを実行するためにプログラムによって使われるソフトウエア割込みである。本発明の実施形態において、これらの割込みは、外部割込みについては、上述した程度の機能性により振る舞うよう管理される。アクティブストリームによって発行されるソフトウエア割込みは論理407によって処理され、割込み論理はこれらの割込みを取扱い、上述の3つのタイプに応じて割込みをマッピングする。マッピングに関するほかの変形形態は、割込みがソフト割込みを実行しているストリームにのみマッピングされるという特別な場合である。残りのステップは上記と同様である。
【0090】
同期割込み
同期割込みは、上の場合の変形すなわち内部および外部の両方の割込みである。同期割込みは誘導段階において異なる振る舞いをする。同期割込みの場合、割込み論理は、割込みサービスルーチンを実行するためにストリームを誘導するのは、割込みがマッピングされた全てのストリームから認容を受信した後である。この振る舞いは、割込みへの応答を同期して開始することを要求するためである。例えば、デバッグ用割込み、すなわち、ストリームのうちの一で実行しているスレッドにブレークポイントがセットされたと考えられたい。デバッガは、安定した点、すなわちすべてのストリームがそれらの実行するいかなるスレッドの実行も停止している時点でのシステムの状態を見たいと思う場合がある。したがって、割込み論理は、全てのストリームに割込みを生成するが、すべてのストリームが認容を生成してはじめてストリームをデバッガサービスルーチンに誘導する。しかしながら、たとえその論理がすべてのストリームが追いつくのを待ったとしても、認容するストリームはさらなる実行を停止される。
【0091】
例外
例外はストリームで実行中のコードによって生成され、通常エラー条件を示す。例外は常に実行するコードと同期しており、すなわち例外を生成するストリームは常に同じポイントで例外を生成する。しかしながら、例外に対する多くの異なった応答がありうる。
【0092】
セルフ応答:これは、標準の非マルチストリーミングプロセッサにおけると同じである。ここでは、例外を生成するストリームが何を実行していてもストップし、例外処理ルーチンに誘導し、そこから実行コードを開始する。実行処理ルーチンが終了すると、ストリームは通常例外が起こったもとのコードの位置にもどり、元のスレッドが実行を続ける。
【0093】
他のストリームへのブロッキングの送信:ここでは、例外を生成するストリームが現在のスレッドの実行を停止するが、例外そのものの認容は行わない。そのかわり例外が全てのほかのストリームにブロードキャストされる。例外を認容するようプログラムされもしくはマッピングされたいずれのストリームもこれを行って、例外処理ルーチンの実行を開始する。いずれのストリームも例外を認容しない場合、マスタスレッドに例外が送られる。マスタスレッドがすでに実行している場合、この時点でマスタスレッドは例外処理ルーチンに誘導する。マスタスレッドが実行中でない場合は、マスタスレッドはアクティブにされ、実行のためにストリームを割り当てられ、ついで例外を処理する。マスタスレッドは、他のスレッドがしない場合にも、常にあらゆる例外を認容することができる。このように構造化された例外処理をハードウエアで実現することができる。一度例外ルーチンが戻ると、元のストリームが通知され、ついでその実行を再び始めることができる。この方法は、主として、すべてのストリームがある例外を処理するために必要なすべてのハードウエアリソースにアクセスできず、したがって能力のないストリームが能力のある一のストリームに例外を伝達しなければならないという理由にもとづいて実現されている。
【0094】
他のストリームへのノンブロッキングの送信:この方法は、上述のものと類似しているが、例外を生成する元のストリームはブロックされない。元のストリームは例外を生成しかつ実行しつづける。例外処理は他のストリームもしくはマスタスレッドによって完了するよう保証される。この方法は、一般にオーバーフローなどの致命的でない例外に用いられる。例として、オーバーフロー例外について考えると、オーバーフローを生成するストリームが、例外を生成しかつ実行しつづけることを示すフラグをセットする。他のストリームは、例外を認容し、特定の値がオーバーフローした回数をカウントするカウンタを更新する。
【0095】
いずれの例外も、上述の3つのカテゴリのいずれかにマッピングすることができる。このマッピングは、やはり割り込みについてと同一の技術を用いて行うことができる。例外も同期することができ、例外処理ルーチンは、例外がマッピングされるすべてのストリームが実行をストップしてしまい、例外を認容するまでは実行されない。
【0096】
マルチストリームプロセッサに関するソフトウエアおよびハードウエア割込みおよび例外処理を伴う、上述の機構の実現は、いくつかの(プログラムマッピングの)例では、変更可能な制御ファイルを通じて部分的に達成される。図1Aを参照すると、ストリーム間制御ビットマップ115が記載され、単一ビットの状態と複数ビットのビット値が、特定のストリームおよびイネーブル、ディスエーブル、優先順位などの機能と関連づけられる。割り込みおよび例外のマッピングおよび処理のいくつかの実施形態では、このビットマップは、割込みおよび例外の処理とマッピングに関する本明細書に記載された機能に拡張される。先に述べたように、ビットマップ115は、ビット値がアクティブストリームによって変更されうるような方法でハードウエアとしてマルチストリームプロセッサチップ上に実現されうる。他の実施形態では、ローカルメモリのファイルを、複数の割込み、割込み、および例外パラメータをマッピングするために用いることができる。そのようなビットマップの一部をマッピングのために用いる実施形態では、イネーブル、ディスエーブル、優先順位などが図1Bから図1Eに関して上の説明でマップしたように、単一のビットもしくは複数ビットのビット値を使用して、ストリームを割り込みおよび例外にマッピングすることができる。
【0097】
本発明の趣旨および範囲内で上述の実施形態でなされうる多くの変形形態が存在することは当業者には明らかである。例えば、提供した例を超えて、ストリーム間の監視特性および関係を記録し、修正しうる多くの方法がある。また同様に、実施し得る制御の粒度に広い範囲などが存在する。
【0098】
スレッド同期
背景セクションで述べたように、MIPSアーキテクチャもしくは他の既知の慣例は、カウンタをインクリメントするなど、プロセッサがメモリの単一の値に原子性のあるリード−修正−ライト操作を実施するよう試行する際に、原子性を実現するために用いることができる。
【0099】
本発明の実施形態においては、DMSプロセッサで実行する別個のストリームによってメモリ操作の原子性を実現するための方法を提供する。
【0100】
図5は、原子性が従来のMIPS命令の使用により実現される、従来の解決策を示す図である。図5は、2つの単一ストリーミングプロセッサ、すなわちプロセッサ515(プロセッサA)とプロセッサ517(プロセッサB)を示し、それぞれが共有メモリ511の同一のメモリ位置513をインクリメントする。
【0101】
この例で、メモリ位置513はメモリカウンタの値を格納し、以降カウンタ513と呼ぶことにする。図5でも、一連のMIPS命令がカウンタ513をインクリメントするために図示される。原子性の実現がなければ、起こりうる問題は、たとえば、もし、プロセッサ515がカウンタ513の値を読み、その値のインクリメントに進む場合、プロセッサ517は、第一のプロセッサが新しい値を格納する前に、同じカウンタ値を読み込むということである。この場合、カウンタの1だけのインクリメントが起こり得る。
【0102】
MIPSアーキテクチャは、この状況に対処するための標準的方法を有している。当技術分野で知られる従来の方法はリンクされたロードおよび条件つき格納(Load Linked and Store Conditional)命令を利用する。図5によって示される例において逐次のMIPS命令に従い、プロセッサ515およびプロセッサ517が共にブロック519および521に示されるように、カウンタ513をインクリメントするよう試行していると想定する。MIPSアーキテクチャの当業者は、ブロック519および521で示された命令行の各々によって意図された機能性を認識するであろう。
【0103】
示したように、プロセッサ517はカウンタ513を読むことができ、カウンタ513に格納された値をインクリメントすることもできるが、結果を格納することはできない、というのも、プロセッサ515が最初にインクリメントされた値を格納することになっていたからである。ブロック521に示される、プロセッサ517のためのリンクされたロード、条件つき格納シーケンスに従って、条件付格納命令の後のブランチ命令に留意されたい。プロセッサ515が最初にカウンタ513に書くことになっていたので、ブロック519で示したようにプロセッサ515は書くのに成功する。この条件は、他のどのプロセッサもプロセッサ515以前にはそのカウンタに書かない限り、存在する。同一のカウンタ513に書こうとするプロセッサ517は、プロセッサ515がその値を書いた後、ブロック521の格納命令後に含まれる失敗したという言葉によって示すように、格納するのに失敗する。ここで、ブロック521の第4行目に示される、ブランチ(BR)命令は、プロセッサ517にリンクされたロード命令(第一行)に戻り、再実行して、カウンタ値を再ロードするよう強制する。MIPSのリンクされたロードおよび条件付格納命令シーケンスおよび他の命令セットの実質的効果は、すべての場合において、2つの異なるプロセッサがカウンタ513をインクリメントしようとすると、カウンタが正しく2回インクリメントされるということである。
【0104】
リンクされたロード、条件付格納命令シーケンスの問題は、上の例にしたがい、第2のプロセッサ(517)がプロセッサリソースを使用して、不必要な命令シーケンスを実施することである。これは、シングルストリーミングプロセッサに関する限りは大きな問題ではない。というのも、第二のプロセッサが第一のプロセッサが終了するまで単に待てばよいからである。しかしながら、本発明者にとって関心のある状況が存在し、リンクされたロード、条件付格納の標準的動作でも、図5のプロセッサAおよびプロセッサBにDMSプロセッサ内のストリームが置き換えられたなら、大変な問題を生じ得る。
【0105】
図6は、DMSプロセッサの基本要素および動作を示す図である。本発明者に既知のそのようなプロセッサでは、命令は、通常、命令キャッシュ601から複数の動作ストリーム603へ取り出される。DMSプロセッサにおいては、各ストリームは、ソフトウエアスレッドを実行できるハードウエア機能である。スケジューラ605は、ストリームのための実行をプロセッサの機能リソースにマッピングする。このDMSプロセッサにおいて、複数のストリームを実行する上で用いるために複数のレジスタファイル609が提供され、各動作ストリームは関連づけられたレジスタファイルをもつことができる。この独特なプロセッサのある実施形態では、レジスタファイルの数がストリームの数を超え、したがって、ストリーム動作に割り込むことなくコンテキスト切り替えが実施できる。
【0106】
スケジューラ605は機能リソース607へのアクセスを許す。いくつかの実施形態では、背景セクションで述べたように、リソースへのアクセスは様々な優先順位状態に応じてストリームに対して与えることができる。いくつかの実施形態におけるストリーム間制御ビットマップ615が、動作中にストリーム0から3がお互いをマイクロ管理できるように提供される。DMSプロセッサのこの例では、複数のストリームが、同時にもしくは非常に近接した時間にデータキャッシュ611の同一のメモリ位置を読んでかつインクリメントもしくは変更しようとする。この状況は、同一のメモリ位置の内容を読みかつ変更しようとする二以上の別個のプロセッサが、間違った結果を招き得るのと同一の困難性を招き得る。従来のMIPS命令シーケンス(LL−SC)が原子性を実現するために用いられる場合、原子性のあるリード−修正−ライトシーケンスを実行しようとする複数のストリームの一以上が繰り返し再実行シーケンスに分岐して戻ることがあり、これにより、図5の例で示したように、プロセッサリソースを不必要に使うことになる。この場合は、しかしながら、別個のプロセッサの場合と反対に、一以上のストリームによる繰り返しのループはプロセッサの効率に影響を及ぼしうる。
【0107】
この状況において原子性と効率性を実現するために、本発明者は、原子性のあるリード−修正−ライトシーケンスが終わり、実行の結果を元のメモリ位置に格納するまではメモリ位置をロックする独特の方法を提供する。
【0108】
図7は、4つのストリーム(S1からS4)をもつ単一のDMSプロセッサ711を図示するブロック図であり、2つのストリームがメモリリソース713にアクセスするモードで動作しており、本発明の実施形態によるハードウエアロック機能により高度化されている。
【0109】
本発明の実施形態によるDMSプロセッサの中では、特定のメモリ位置に関する原子性のあるシーケンスを開始することを意味する命令を実行しているストリームが、そのメモリ位置にロックを生成し、そのロックは、原子性のあるシーケンスを終了する書戻し命令の実行の際に解放される。命令シーケンスは、MIPSのリンクされたロード、条件付格納命令であってもよい。DMSプロセッサ内で実行するマルチスレッドのコードは、通常のワードを格納する命令を用いることによってなど、条件付格納命令を用いることなく原子性を保証することができる。しかしながら、マルチプロセッサMIPS実装との互換性のために、ほとんどのソフトウエアが条件付格納命令を使用しつづけることが期待される。
【0110】
再び図7を参照すると、S3が最初にLL命令をアドレス715に対して実行するストリームであれば、ストリームS3は上述のようにメモリ位置をロックさせる。S3に関する全体の原子のあるリード−修正−ライト操作は、以下のように書ける。
【0111】
ハードウエアロック機構により、条件付格納命令は、いずれもまれである割り込みもしくはTLBエントリの置き換えの場合を除き、常に成功する。他のストリームが同じ命令シーケンスを使って同じメモリ位置をインクリメントしようとする場合、第一のストリームが原子性のあシーケンスを完了するまでそのストリームはストールする。
【0112】
割込みは、原子性のあるシーケンス内でのストリームについてディスエーブルされる必要はなく、ストールされたストリームについてもディスエーブルされる必要はない。ストリームが現在LL命令の実行でストールされている場合、割込みを取り除くことができ、ロックビットおよびストールビットをクリアしかつEPCはLL命令をさす(すなわち、LL命令は割り込みサービスルーチンが戻ると再び実行される)。
【0113】
本発明の実施形態におけるDMSプロセッサ内のメモリロックは、好ましい実施形態では、プロセッサのストリームの各々につきDMSプロセッサに付加された一のレジスタの使用を通じて達成される。各ストリームのためのレジスタは、実行中のストリームの各々のために必要に応じてメモリアドレスを格納するために用いられる。さらに、ロックビットがあり、メモリアドレスがロックされていることを示し、そしてストールビットがあり、関連するストリームがストールされていることを示す。これらのレジスタおよび特別のビットを、本例(図6を参照)の4ストリームDMSプロセッサのハードウエア構成を示す図8に図示する。好ましい実施形態では、4つ以上のストリームと4つ以上の関連するレジスタがあってもよい。
【0114】
本発明の実施形態においては、(例えば)LL命令があるストリームによって実行されると、関連するアドレスレジスタがそのストリームについて更新され、ロックビットがセットされる。加えて、全てのほかのLLアドレスレジスタのサーチが行われる。アドレスの合致が見つかると、ロックビットがセットされ、同一のメモリ位置について原子性のあるリード−修正−ライトシーケンスを他のストリームが開始したことを示し、第一のストリームがそのストールビットをセットし、ストールする。
【0115】
ストリームがストア操作を実施すると、そのストリームのためのロックビットがクリアされる。ロックビットがクリアされるといつでも、そのメモリアドレスについてストールしていたいずれのストリームのストールビットもやはりクリアされ、これによりストールされたストリームのための(例えば)LL命令をそのストリームについて完了することが可能になる。この場合、LL命令は再実行され、その結果は、指定されたレジスタ宛先に置かれる。
【0116】
(例えば)条件付格納命令が実行されると、もし関連ロックビットがセットされていなければ、そのSC命令は失敗し、メモリ位置への格納は行われない。これは、通常、メモリ位置のためのTLBエントリが置き換えられていた場合、割込みが取り除かれた場合、例外が発生していた場合、もしくはLLとSCの間に別のメモリ命令が存在した場合にのみ起こる。正当にデザインされたソフトウエアは原子性のあるリード−修正−ライトシーケンスを実現して、LL命令とSC命令との間にメモリ操作が入らずかつ例外が発生しないようにすべきである。
【0117】
複数のストリームが同一のメモリ位置についてストールしている場合、ストールしていないストリームのためのロックビットがクリアされたときに再実行するために、全てLL命令をスケジュールする。複数のLL命令が同一のサイクルでディスパッチされ、かつメモリアドレスが合致し、かついずれのLLアドレスレジスタも合致しない場合、一がストールし、他が進むことになる。LL命令および格納命令が同一のサイクルで同一のアドレスにディスパッチされる場合、他にストール条件が存在しないと仮定すると、LL命令はメモリ位置の古い内容を得、格納はメモリ位置を新しいデータで書き換える。
【0118】
上述のハードウエア技法を用いれば、原子性は、リード−修正−ライトシーケンスに関して、DMSプロセッサの異なるストリームによって実現され、不必要なリソースの使用を排除することにより同様にある程度の最適化も実現される。
【0119】
休眠命令
上述のように、カウンタをインクリメントする例などメモリ位置が自動的に更新される必要があるのみであるDMSプロセッサにおける状況では、すべての動作を単一のLL/SCシーケンスによって実現することができる。この場合には、DMSプロセッサはカウンタのインクリメントを望む第二のプロセッサを、第一のスレッドが格納を完了してしまうまでストールさせる。このストールはとても短く、SCが失敗しても、カウンタをリロードするのに全くCPUサイクルが浪費されない。
【0120】
いくつかの場合には、しかしながら、メモリロケーションについて、ビジーウェイトもしくはスピンロックをする必要があるかもしれない。例えば、テーブルにエントリを追加する必要がある場合、複数のメモリ位置が整合性のある方法で修正されかつ更新されなければならないことがある。この操作は、全テーブルのロックの実現にLL/SCシーケンスの使用を要求する。
【0121】
当技術分野では、セマフォ上のビジーウェイトは、通常、以下のような方法でMIPSにおいて実現されている。
【0122】
この場合、スレッドは、0(セマフォがアンロックされていることを示す)であるリード結果で成功するまで、LL命令でアドレス指定されたメモリ位置上でビジーウエイトしている。その点では、セマフォをロックする1がメモリ位置に書かれる。好ましい実施形態では、複数のストリームがこのコードを実行するとき、最初のストリームがセマフォをセットし、続行する。この同じコードを実行している他のストリームは継続してメモリ位置をテストしながらビジーウェイトする。第二のストリームがセマフォを含むメモリ位置をロックしたため、このコードを実行する第三のストリームはストールする。アンロック操作は、対象とするアドレスに以下のように0を単に格納することで実現される。
U1: SW 0,(T0)
【0123】
このようなビジーウェイト状況では、(第二のストリームについて)反復的にメモリ位置をテストする、もしくは(第三のストリームおよびそれ以降のストリームについて)ストリームを完全にストールしてCPUサイクルを浪費するより、各ストリームを明示的にストールするほうがより効率的である。
【0124】
これらの状況でCPUの効率を増大させるために、本発明の一実施形態において休眠命令が提供され、メモリ位置の待ちが数命令より長くなることが予測される場合に用いられる。上述の例を以下のように書き換えることができる。
【0125】
休眠命令は待つべきサイクル数である一の引数をとる。ストリームは、その期間だけ待ち、ついで再び実行のためにレディとなる。休眠命令は、休眠命令実行されるストリームに関連づけられたロックビットをクリアし、同一のメモリ位置のためにセットされたほかのストリームのあらゆるストールビットをクリアする。これにより、その同一のメモリ位置でストールされていたほかのストリームが先に進むことができる。
【0126】
割込みが休眠中に発生すると、スリープしているスレッドは、休眠命令の後の命令にセットされたEPCを有する割り込みをサービスする。休眠命令はブランチの遅延スロットに置くことはできない。カウントフィールドがすべて1にセットされると、カウントするサイクルはなく、コンテキストは割り込まれるまで待つ。
【0127】
明示的なストールを強制することにより、休眠命令は、プロセッサリソースのより効率的な使用を可能にする。ビジーウェイトがとても長くなりそうな場合は、ストリームは、自身の状態をセーブし、他のスレッドに切り替えて、自分で先行するほうがよい場合がある。
【0128】
マルチプロセッサの考慮
本発明の実施形態によってイネーブルされた複数のDMSプロセッサが共有メモリから共に実行する環境では、通常のLL/SCスレッドの同期機構は、ソフトウエアの観点から、単一のストリーミングプロセッサについてと同様に働く。LLおよびSC命令の対象であるメモリ位置は、共有されかつコヒーレントであるが排他的でないものとして構成されたページになければならない。SC命令が実行されると、SC命令は、無効信号を、システムのほかのキャッシュに送る。これにより、他のあらゆるプロセッサ上のSC命令が失敗させる。コヒーレントなキャッシュの無効化はワードベースではなくキャッシュラインベースで起こり、したがって、メモリ位置が実際には修正されておらず、近くの位置だけが他のプロセッサによって修正されているときには、SC命令が一のプロセッサで失敗することが起こり得る。
【0129】
代替実施形態では、上述のロック機構は、各ストリームに関連づけられた一以上のレジスタで実現することができる。この場合、所与のストリームについて同時にセットされる複数のロックを有することが可能である。所与のロックについてのロックビットは、関連するストリームが、ロックビットのセットされたメモリ位置についてのSC命令を実行するときにのみクリアされる。
【0130】
別の代替実施形態では、ロック機構は、レジスタの使用を通じてよりはむしろ、共有メモリリソースそれ自体の中に実現することができる。たとえば、共有キャッシュメモリはロックビットと各格納されるキャッシュラインのためのストリーム番号とを含むことができる。この場合、各キャッシュラインは、それがロックされているかどうかおよびどのストリームがそれをロックしたかを記録する。この実施形態のキャッシュラインはまたどのストリームがロックを待ってストールされているかを記録する。
【0131】
当業者には、実施可能なように詳細に上の例で説明した本発明による方法および装置が、スレッド処理およびストリーム割り当てに関して存在しうる内部優先順位の状態にかかわらず、いずれのDMSプロセッサの中でも利用できることは明らかである。4つのみの処理ストリームを図6および図7に記載したDMSプロセッサで示したが、この仕様のDMSプロセッサには実際には8つの処理ストリームがある。発明者は、本発明の説明の複雑さを減らすため、この明細書において4ストリームだけを示すことを選択した。
【0132】
本発明の方法および装置は、共有メモリの同一のメモリアドレスにアクセスするよう試行する2つ以上のストリームがあるときはいつでも実施できる。本発明の趣旨および範囲は頭記の特許請求の範囲によってのみ制限される。
【図面の簡単な説明】
【図1A】本発明の実施形態によるマルチストリ−ミングプロセッサの一般化された図である。
【図1B】本発明の実施形態による、制御認可データを例示している典型的なビットマップである
【図1C】本発明の実施形態による、ストリ−ムのためのリソース割当を示す図である。
【図1D】本発明の実施形態による、ストリ−ムのための優先順位を例示する図である。
【図1E】本発明の実施形態による、1つのストリ−ムのための制御インジケーターを示す図である。
【図2A】一のストリーム中のスレッドが他のストリーム中のスレッドをフォークして後にジョインする方法を図示するフローチャートである。
【図2B】一のストリーム中のスレッドが他のストリーム中のスレッドをフォークして後にジョインする別の方法を図示するフローチャートである。
【図3】一のストリーム中のスレッドが特別のレジスタ転送を含むプロセッサの他のストリーム中のスレッドをフォークする方法を図示するフローチャートである。
【図4】本発明の実施形態において、割り込みマッピングと処理を図示するアーキテクチャの図である。
【図5】従来技術によるMIPSアーキテクチャによって原子性が実現される共有メモリにおいて単一位置をインクリメントしようとする2つのプロセッサを図示するブロック図である。
【図6】本発明者に知られかつ本発明に従って用いられるDMSプロセッサの構成要素および相互接続性を図示するブロック図である。
【図7】本発明の一実施形態により、同一メモリ位置をインクリメントしようとする2以上のストリームを有する単一のDMSプロセッサを図示するブロック図である。
【図8】本発明の一実施形態によるハードウエアロック機構を図示するデータテーブルである。
Claims (12)
- 一以上の命令スレッドを流すための複数のストリ−ムと、
ストリームからの命令を処理するための一組の機能リソースと、
プロセッサのストリームによって共有される選択したメモリ位置をロックするためのロック機構であり、原始性のあるメモリシーケンスを開始するときにロックをセットしかつ原始性のあるメモリシーケンスを完了するときにロックをクリアするよう動作するハードウエアロック機構とを備えるマルチストリーミングプロセッサ。 - ロック機構が、プロセッサの各ストリームに関連づけられた一以上の格納位置を含み、各格納位置が、メモリアドレス、ロックビット、ストールビットを格納できる、請求項1に記載のマルチストリ−ミングプロセッサ。
- ストリームが原子性のあるメモリシーケンスをはじめるとき前記ストリームに関連づけられた格納位置に対象メモリアドレスが書き込まれ、かつロックビットがセットされ、ストリームに関連づけられたすべての他の格納位置がサーチされ、合致する格納位置についてロックビットがセットされた合致するメモリアドレスが見つかると、前記ストリームがストールビットをセットし、ストールビットがクリアされるまで前記ストリームがストールする、請求項2に記載のマルチストリーミングプロセッサ。
- ストリームが原子性のあるシーケンスを実施し、アクセスされたメモリ位置に前記シーケンスの変更された結果を格納すると、前記ストリームのための関連づけられた格納位置においてロックビットがクリアされ、ロック機構においてストリームに関連づけられたメモリ位置ですべてのストールビットがクリアされ、他のストリームが原子性のあるシーケンスを開始することを可能にする、請求項3に記載のマルチストリーミングプロセッサ。
- ストリームが原子性のあるメモリシーケンスを開始すると、対象メモリアドレスが前記ストリームに関連づけられた格納位置に書き込まれ、ロックビットがセットされ、ストリームに関連づけられたすべての他の格納位置がサーチされ、合致する格納位置についてロックビットがセットされた合致するメモリアドレスが見つからない場合、前記ストリームは前記原子性のあるシーケンスを続ける、請求項2に記載のマルチストリ−ミングプロセッサ。
- 前記ロック機構が、製造の間にマルチストリ−ミングプロセッサに設置されるハードウェアを含んで実現される請求項2に記載のマルチストリ−ミングプロセッサ。
- 前記ロック機構が、ファームウエアまたはソフトウェアを含んで実現される請求項4に記載のマルチストリ−ミングプロセッサ。
- 前記格納位置が、前記プロセッサが原子性のあるメモリシーケンスを実施する前記ストリ−ムによって共有されるメモリのメモリ位置を割り当てられる、請求項2に記載のマルチストリ−ミングプロセッサ。
- マルチストリ−ミングプロセッサ上で、原子性のあるメモリシーケンスを実現するための方法であって、
(a)格納位置を、ロックビットとスト−ルビットを含む、前記マルチストリーミングプロセッサの前記ストリ−ムの各々と関連付けるステップと、
(b)ストリ−ムによって原子性のあるメモリシーケンスを始める際に、関連づけられた格納位置にシーケンスで修正されるメモリアドレスを書き込み、ロックビットをセットするステップと、
(c)他のストリームに関連づけられた全ての格納位置を該格納位置の中に格納されたメモリアドレスおよびロックビットの状態についてサーチするステップと、
(d)セットされたロックビットをも有するメモリアドレスとの合致が何ら見つからないときに、前記原子性のあるシーケンスを完了へと継続するステップと、
(e)セットされたロックビットを有するメモリアドレスとの合致が見つかったときに、前記ストリームについて前記ストールビットをセットし、前記ストールビットがクリアされるまで前記ストリームについての操作をストールするステップと
を含む方法。 - 前記原子性のあるシーケンスの終わりに格納操作を完了する際、格納位置に格納された合致するメモリアドレスを有するストリームのためのすべてのストールビットをクリアし、他のストリームが原子性のある操作を継続できるようにするステップ(f)をさらに含む、請求項9に記載の方法。
- 前記格納位置が前記マルチストリーミングプロセッサ上に実現されたハードウエアレジスタであり、メモリアドレスが前記マルチストリーミングプロセッサのオンチップメモリ内に位置する請求項9に記載の方法。
- 前記格納位置が、前記マルチストリ−ミングプロセッサが原子性のあるメモリシーケンスを実施する同じメモリ内の予約された位置である、請求項9に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/592,106 | 2000-06-12 | ||
US09/592,106 US7257814B1 (en) | 1998-12-16 | 2000-06-12 | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
PCT/US2001/040900 WO2001097020A1 (en) | 2000-06-12 | 2001-06-07 | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004503864A true JP2004503864A (ja) | 2004-02-05 |
JP4926364B2 JP4926364B2 (ja) | 2012-05-09 |
Family
ID=24369309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002511080A Expired - Fee Related JP4926364B2 (ja) | 2000-06-12 | 2001-06-07 | ダイナミックマルチストリーミングプロセッサでメモリ操作の原子性を実現するための方法と装置 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1299801B1 (ja) |
JP (1) | JP4926364B2 (ja) |
AU (1) | AU2001267057A1 (ja) |
DE (1) | DE60143747D1 (ja) |
WO (1) | WO2001097020A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008511890A (ja) * | 2004-09-02 | 2008-04-17 | フリースケール セミコンダクター インコーポレイテッド | アトミック・オペレーションを用いて情報単位を変更する方法及び装置 |
JP2012520531A (ja) * | 2009-03-17 | 2012-09-06 | クアルコム,インコーポレイテッド | リアルタイムマルチスレッドスケジューラおよびスケジューリング方法 |
JP2012208662A (ja) * | 2011-03-29 | 2012-10-25 | Toyota Motor Corp | マルチスレッド・プロセッサ |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625698B2 (en) * | 2000-12-28 | 2003-09-23 | Unisys Corporation | Method and apparatus for controlling memory storage locks based on cache line ownership |
US20060218556A1 (en) * | 2001-09-28 | 2006-09-28 | Nemirovsky Mario D | Mechanism for managing resource locking in a multi-threaded environment |
IL161107A0 (en) | 2001-09-28 | 2004-08-31 | Tidal Networks Inc | Multi-threaded packet processing engine for stateful packet processing |
US20040199727A1 (en) * | 2003-04-02 | 2004-10-07 | Narad Charles E. | Cache allocation |
US8516577B2 (en) | 2010-09-22 | 2013-08-20 | Intel Corporation | Regulating atomic memory operations to prevent denial of service attack |
US9465670B2 (en) | 2011-12-16 | 2016-10-11 | Intel Corporation | Generational thread scheduler using reservations for fair scheduling |
CN111796921B (zh) * | 2020-06-30 | 2023-05-30 | 西安微电子技术研究所 | 嵌入式多核操作系统调度方法、调度装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5621260A (en) * | 1979-07-27 | 1981-02-27 | Nec Corp | Access unit |
US5142676A (en) * | 1988-12-28 | 1992-08-25 | Gte Laboratories Incorporated | Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory |
JPH05225117A (ja) * | 1992-02-14 | 1993-09-03 | Nec Corp | 主記憶装置の排他制御回路 |
JPH11327934A (ja) * | 1998-04-29 | 1999-11-30 | Stc Internatl Computers Ltd | コンピュ―タシステムのためのセマフォ |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5946711A (en) * | 1997-05-30 | 1999-08-31 | Oracle Corporation | System for locking data in a shared cache |
-
2001
- 2001-06-07 JP JP2002511080A patent/JP4926364B2/ja not_active Expired - Fee Related
- 2001-06-07 EP EP01944671A patent/EP1299801B1/en not_active Expired - Lifetime
- 2001-06-07 WO PCT/US2001/040900 patent/WO2001097020A1/en active Application Filing
- 2001-06-07 DE DE60143747T patent/DE60143747D1/de not_active Expired - Lifetime
- 2001-06-07 AU AU2001267057A patent/AU2001267057A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5621260A (en) * | 1979-07-27 | 1981-02-27 | Nec Corp | Access unit |
US5142676A (en) * | 1988-12-28 | 1992-08-25 | Gte Laboratories Incorporated | Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory |
JPH05225117A (ja) * | 1992-02-14 | 1993-09-03 | Nec Corp | 主記憶装置の排他制御回路 |
JPH11327934A (ja) * | 1998-04-29 | 1999-11-30 | Stc Internatl Computers Ltd | コンピュ―タシステムのためのセマフォ |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008511890A (ja) * | 2004-09-02 | 2008-04-17 | フリースケール セミコンダクター インコーポレイテッド | アトミック・オペレーションを用いて情報単位を変更する方法及び装置 |
JP2012520531A (ja) * | 2009-03-17 | 2012-09-06 | クアルコム,インコーポレイテッド | リアルタイムマルチスレッドスケジューラおよびスケジューリング方法 |
US9207943B2 (en) | 2009-03-17 | 2015-12-08 | Qualcomm Incorporated | Real time multithreaded scheduler and scheduling method |
JP2012208662A (ja) * | 2011-03-29 | 2012-10-25 | Toyota Motor Corp | マルチスレッド・プロセッサ |
Also Published As
Publication number | Publication date |
---|---|
EP1299801A1 (en) | 2003-04-09 |
JP4926364B2 (ja) | 2012-05-09 |
DE60143747D1 (de) | 2011-02-10 |
AU2001267057A1 (en) | 2001-12-24 |
WO2001097020A1 (en) | 2001-12-20 |
EP1299801B1 (en) | 2010-12-29 |
EP1299801A4 (en) | 2005-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7257814B1 (en) | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors | |
US7926062B2 (en) | Interrupt and exception handling for multi-streaming digital processors | |
US7765546B2 (en) | Interstream control and communications for multi-streaming digital processors | |
JP4006180B2 (ja) | マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置 | |
US7376952B2 (en) | Optimizing critical section microblocks by controlling thread execution | |
JP3714598B2 (ja) | マルチスレッド式プロセッサでのスレッド優先順位の変更 | |
US7698540B2 (en) | Dynamic hardware multithreading and partitioned hardware multithreading | |
US9047120B2 (en) | Virtual queue processing circuit and task processor | |
US8572626B2 (en) | Symmetric multi-processor system | |
WO2008023426A1 (fr) | Dispositif de traitement de tâche | |
JP2006515690A (ja) | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 | |
WO2003102758A1 (en) | Method and apparatus for real-time multithreading | |
WO2008023427A1 (fr) | Dispositif de traitement de tâche | |
JP4926364B2 (ja) | ダイナミックマルチストリーミングプロセッサでメモリ操作の原子性を実現するための方法と装置 | |
WO2000070482A1 (en) | Interrupt and exception handling for multi-streaming digital processors | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
JPH08292932A (ja) | マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法 | |
US20030225817A1 (en) | Concurrent execution of kernel work and non-kernel work in operating systems with single-threaded kernel | |
JP2004086921A (ja) | マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080605 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101019 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110113 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110419 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110517 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110916 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110922 |
|
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: 20120110 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120208 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150217 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4926364 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |