JP2006503385A - マルチスレッド・プロセッサの高速スレッド間割込みのための方法および装置 - Google Patents
マルチスレッド・プロセッサの高速スレッド間割込みのための方法および装置 Download PDFInfo
- Publication number
- JP2006503385A JP2006503385A JP2005501397A JP2005501397A JP2006503385A JP 2006503385 A JP2006503385 A JP 2006503385A JP 2005501397 A JP2005501397 A JP 2005501397A JP 2005501397 A JP2005501397 A JP 2005501397A JP 2006503385 A JP2006503385 A JP 2006503385A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- interrupt
- inter
- destination
- processor
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims description 41
- 230000015654 memory Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification 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
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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
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)
- Bus Control (AREA)
Abstract
マルチスレッド・プロセッサは、要求元スレッドから宛先スレッドに向けられたスレッド間割込みを処理するための割込みコントローラを含む。例示的一実施形態では、割込みコントローラは、宛先スレッドへのスレッド間割込みの送達を求める要求を受信し、スレッド間割込みの宛先スレッドがスレッド間割込みの受信をイネーブルにしているかどうかを判断し、宛先スレッドがスレッド間割込みの受信をイネーブルにしているときは、スレッドIDを使用して宛先スレッドへのスレッド間割込みの送達を制御する。要求元スレッドは、マルチスレッド・プロセッサのフラグ・レジスタ内の対応する割込み保留ビットをセットすることによって、宛先スレッドへのスレッド間割込みの送達を要求する。マルチスレッド・プロセッサのイネーブル・レジスタの対応するイネーブル・ビットがセットされている場合は、宛先スレッドのスレッド間割込みの受信はイネーブルである。このフラグ・レジスタおよびイネーブル・レジスタは、割込みコントローラ内部に実装される。
Description
本発明は、一般にデジタル・データ・プロセッサの分野に関し、より詳細にはマルチスレッド・プロセッサで使用される割込み技術に関する。
本出願は、Hokenekらの名前で2002年10月15日に出願された、「High Speed Cross−Thread Interrupts」と題する米国特許仮出願第60/418455号の優先権を主張するものであり、その開示を参照により本明細書に組み込む。
コンピュータ・システムにおいては、予期しないまたは稀にしか発生しない、動作または状態をプロセッサに知らせるために、歴史的に「割込み」機構を使用してきた。例えば、現代の代表的なコンピュータは、無効な計算、ネットワーク・パケットの到着、ディスク・アクセスの完了などについてはすべて、割込みを発生させる。プロセッサの通常の動作には関与しない特別なハードウェアによって状態を検出し、プロセッサに信号で通知する。割込みを受信すると直ぐに、プロセッサは現在のタスクを中断し、その状態を処理するために必要な諸ステップを実施し、次いで通常の実行を再開する。この割込み機能を用いると、コンピュータは、稀にしか発生しないイベントに対し、それらを常にチェックまたは「ポーリング」することを必要とせずに、直ちに応答することが可能になる。
一般に、マルチプロセッサ・システムはプロセッサ間割込みをサポートしており、それを使用して、あるプロセッサから他のプロセッサに割込みをかけることができる。プロセッサ間割込みは、様々なプロセッサの動作を同期させるため、あるいは動作中のシステムやプログラムの状態の変化をプロセッサに知らせるために使用される。例えば、マルチ・プロセッサ上で動作中のプログラムは、プログラムの状態が変化したとき、変化を検出したプロセッサだけでなく、そのプログラムの実行に関与しているすべてのプロセッサにその変化を反映させる必要がある。さらに、プロセッサ間割込みを使用して、プロセッサ間メッセージが到着したことをプロセッサに知らせることもできる。
プロセッサ間割込みの送達および受信は比較的高速であるが、それでも多数のプロセッサ・クロック・サイクルが必要になる。割込みの送受信に使用される割込みコントローラは、プロセッサから分離されていることも多く、操作のために複数サイクルの動作を必要とする。また、プロセッサは一般に、従来の割込みコントローラより高速のクロック・レートで実行されるので、ある割込みコントローラから他の割込みコントローラに実際に割込みを送信するためには、例えば、いくつかのプロセッサ・クロック・サイクルを必要とすることもある。
マルチスレッド・プロセッサとは、複数の異なる命令シーケンスすなわち「スレッド」の同時実行をサポートするプロセッサのことである。この複数の処理スレッドは、単一スレッドだけの場合より、プロセッサのより多くの計算パワーを使用するように協働する。一般に、この協働によって、代表的なマルチプロセッサ・システムよりさらに多くの同期や通信が発生し、その結果、スレッド間割込み、すなわち、あるスレッドから他のスレッドへの割込み、などの通信機構のコストが一層増大する。
「ハイパースレッド技術」を使用するインテル(登録商標)製プロセッサなど、既存のマルチスレッド・プロセッサは通常、先に説明したマルチプロセッサ・システムでプロセッサ間割込みの処理に使用される技術をエミュレートする技術を使用してスレッド間割込みを処理する。その結果、スレッド間割込みを処理する従来の技術では処理が非常に遅くなり、処理リソースの非常に大きなオーバヘッドを要することがあり得る。例えば、従来技術を使用して、あるスレッドから他のスレッドに割込みをかけるには、一般に、かなりの数の命令実行サイクルが必要になる。
米国特許仮出願第60/418455号
米国特許出願第10/161774号
米国特許出願第10/161874号
米国特許出願第10/269247号
米国特許出願第10/269373号
米国特許出願第10/269372号
米国特許出願第10/269245号
上記のことから明らかなように、マルチスレッド・プロセッサで使用される、改良されたスレッド間割込み処理技術が求められている。
本発明は、マルチスレッド・プロセッサでスレッド間割込みを処理するための改良された技術を提供する。
本発明の一態様では、マルチスレッド・プロセッサは、要求元スレッドから宛先スレッドに向けられたスレッド間割込みを処理する割込みコントローラを含む。
例示的一実施形態における割込みコントローラは、宛先スレッドへのスレッド間割込みの送達を求める要求を受信し、スレッド間割込みの宛先スレッドがスレッド間割込みの受信をイネーブルにしているかどうかを判断し、宛先スレッドがスレッド間割込みの受信をイネーブルにしている場合には、スレッドIDを使用して宛先スレッドへのスレッド間割込みの送達を制御する。
要求元スレッドは、マルチスレッド・プロセッサのフラグ・レジスタ内の対応する割込み保留ビットを設定することによって、宛先スレッドへのスレッド間割込みの送達を要求する。スレッド間割込みが宛先スレッドに送達されたときに、割込み保留ビットを自動的にクリアすることもできる。
マルチスレッド・プロセッサのイネーブル・レジスタ内の対応するイネーブル・ビットがセットされている場合は、宛先スレッドのスレッド間割込みの受信がイネーブルである。スレッド間割込みが宛先スレッドに送達されたとき、宛先スレッドが複数の割込みを同時に受信することを防ぐために、イネーブル・ビットは自動的にクリアされる。次いで、スレッド間割込みを処理した後で、宛先スレッドによる他の割込みの受信を再びイネーブルにするために、イネーブル・ビットは再セットされる。
例示的実施形態のイネーブル・レジスタおよびフラグ・レジスタは、どちらも少なくともN個の部分を含み、このN個の各部分は、マルチスレッド・プロセッサのN個のスレッドの1つに対応する。好ましくは、このN個の各スレッドは、イネーブル・レジスタのそのスレッドに対応する部分だけにアクセスすることが許され、イネーブル・レジスタの他のスレッドに対応するN−1個の部分のいずれにもアクセスすることは許されない。一方、このN個の各スレッドは、フラグ・レジスタのN個の部分のいずれにもアクセスすることが許される。
本発明の他の態様によれば、割込みコントローラの論理回路は、割込み要求を処理する割込み要求論理回路、各論理ゲートがイネーブル・レジスタおよびフラグ・レジスタの両方から対応するビットを入力として受信する複数の論理ゲート、およびマルチプレクサ回路を含むことができる。マルチプレクサ回路は、論理ゲートの出力の中から少なくとも1つの出力を選択して、少なくとも一部はスレッドIDに基づくスレッド間割込みの生成を制御する際に使用する。
割込みコントローラの論理回路はさらに、タイマ割込み、命令アドレス割込み、外部生成割込みなど、他の種類の割込みに対する、スレッド間割込みの優先度を決定する優先度論理回路を含むことができる。
有利には、本発明は、マルチスレッド・プロセッサにおいてスレッド間割込みを送達し処理する、待ち時間が少なく、かつオーバヘッドが少ない機構を提供する。例えば、上述の例示的実施形態では、所与のスレッドは、単一の命令実行サイクル以内で他のスレッドに割込みをかけることができる。
この明細書において本発明は、メイン・メモリ、マルチスレッド・キャッシュ・メモリ、およびマルチスレッド・データ・メモリが付随したマルチスレッド・プロセッサに実装されるものとして示されている。しかし、本発明が、例示した実施形態の、特定のマルチスレッド・プロセッサおよびメモリの構成を必要とするものではないこと、および本発明が、より一般的に、スレッド間割込みの改良された処理の提供が望まれる、どのようなマルチスレッド・プロセッサの割込み処理用途での使用にも適するものであることを理解されたい。
本発明によるスレッド間割込み処理技術を実装する処理システム100の一例を、図1および図2と共に説明する。
図1は、メイン・メモリ104に結合されたマルチスレッド・プロセッサ102を含む処理システム100を示す。マルチスレッド・プロセッサ102は、割込みコントローラ105、マルチスレッド・キャッシュ・メモリ110、およびマルチスレッド・データ・メモリ112を含む。
本発明の一態様によれば、マルチスレッド・プロセッサ102における、スレッド間割込みを処理するための改良された技術が提供される。例示的一実施形態では、これらの技術は、主に割込みコントローラ105内に実装される。割込みコントローラ105は、この実施形態では、好ましくは図1に一般的に示されているように、マルチスレッド・プロセッサ102の内部に組み込まれる。
割込みコントローラ105は、本発明の、スレッド間割込みを効率的に処理するための技術に従って構成されるが、当業者には周知の従来技術を用いた他の種類の割込み、例えばデータもしくは命令アドレス割込み、タイマ割込み、外部生成割込みなどを処理するようにも構成できることを理解されたい。外部生成割込みには、例えばマルチスレッド・プロセッサ102の外部の特定の装置に関連する割込みや、プロセッサの特定の入力ピンに関連する割込みなどが含まれる。
したがって、割込みコントローラ105には、本明細書に記載の特定の割込みコントローラ要素に追加してまたはその代わりに、様々な従来要素を含めることができる。
図2は、マルチスレッド・プロセッサ102の可能な一実装のより詳細な図である。この実施形態では、マルチスレッド・プロセッサ102は、割込みコントローラ105、マルチスレッド・キャッシュ・メモリ110、データ・メモリ112、キャッシュ・コントローラ114、命令デコーダ116、レジスタ・ファイル118、および1組の演算論理ユニット(ALU)120を含む。マルチスレッド・キャッシュ・メモリ110は、本明細書ではマルチスレッド・キャッシュとも呼ぶ。
当業者には明らかなように、図1および図2に示した特定の構成が、図を見やすくするために簡略化されていること、したがって、明示的に示されていない追加のまたは代替の要素を含めることができることに留意されたい。
割込みコントローラ105は、論理回路202および割込みコントローラ・レジスタ204を含む。例示の実施形態では、レジスタ204は、イネーブル・レジスタおよびフラグ・レジスタを含む。これらについては、それぞれ図3および図4と共に以下でより詳細に説明する。論理回路202、および論理回路とレジスタ204の相互作用については、図5と共に以下でより詳細に説明する。
割込みコントローラ105は、システム・バス206を介して、マルチスレッド・プロセッサ102の他の要素と結合させることができる。
この例示の実施形態では、割込みコントローラ105には、ブランチ・コントローラ210も関係している。ブランチ・コントローラ210は、キャッシュ・コントローラ114および割込みコントローラ105と結合されている。ブランチ・コントローラはまた、バス206または図には明示されていない他の適切な接続を介して、マルチスレッド・プロセッサ102中の1つまたは複数の他の要素と通信することもできる。図では分離した要素として示されているが、本明細書に記載したブランチ・コントローラ210の機能は、その全体または一部を、割込みコントローラ105の内部、またはマルチスレッド・プロセッサ102の他の要素の内部に実装することができる。ブランチ・コントローラ210または関連する割込みコントローラ105には、従来のスレッド実行コントローラに関する機能など、他の機能を実装することもできる。
マルチスレッド・キャッシュ110は、複数のスレッド・キャッシュ110−1、110−2、・・・110−Nを含む。ただし、Nはマルチスレッド・プロセッサ102によってサポートされるスレッドの数を一般化して示したものである。したがって各スレッドは、マルチスレッド・キャッシュ110内に、そのスレッドに関連づけられた対応するスレッド・キャッシュを含む。同様にデータ・メモリ112は、図にデータ・メモリ112−1、112−2、・・・112−Nとして示された、N個の異なるデータ・メモリ・インスタンスを含む。
マルチスレッド・キャッシュ110の各スレッド・キャッシュは、1つまたは複数の組のメモリ配置を有するメモリ・アレイを含むことができる。所与のスレッド・キャッシュはさらに、関連するスレッドIDを格納するためのスレッドIDレジスタを含むこと、またはそのレジスタに関連づけることができる。
マルチスレッド・キャッシュ110は、キャッシュ・コントローラ114を介してメイン・メモリ104とインタフェースする。キャッシュ・コントローラ114は、メイン・メモリ104からの適切な命令がマルチスレッド・キャッシュ110にロードされることを保証する。この例示的実施形態でのキャッシュ・コントローラ114は、論理回路または個々のスレッド・キャッシュ110−1、110−2、・・・110−Nに関連する他の処理要素と共に動作し、例えば完全連想マッピング、直接マッピング、セット連想マッピングなどのアドレスマッピング技術の少なくとも一部を実施する。本発明と共に用いるのに適した例示的なセット連想マッピング技術は、2002年6月4日出願の、米国特許出願第10/161774号および第10/161874号に記載されている。これらの発明は、どちらも本発明の譲受人に譲渡されており、その両方の開示を参照により本明細書に組み込む。
一般に、マルチスレッド・キャッシュ110は、マルチスレッド・プロセッサ102によって実行される命令を格納するために使用され、一方、データ・メモリ112は、それらの命令によって操作されるデータを格納する。各命令は、命令デコーダ116によって、マルチスレッド・キャッシュ110からフェッチされる。命令デコーダ116は、レジスタ・ファイル118およびALU120と協働し、従来の方法で命令の実行を制御する。マルチスレッド・プロセッサの各要素、例えば116、118、120などの動作については、当技術分野ではよく理解されているので本明細書ではこれ以上詳細には説明しない。
データ・メモリ112は通常、メイン・メモリ104に直接接続される。ただし、図にはこの接続は明示されていない。
1つまたは複数のメモリ、104、110、および112はそれぞれ、複数のバンクまたは他の指定された部分を含むように構成することができる。例として、各バンクは、1つまたは複数のメモリ・モジュール、または単一のメモリ・モジュールの指定された部分から構成されるものと見なせる。
マルチスレッド・プロセッサに関する、これらおよび他のメモリの、スレッドベースのバンキング技術は、2002年10月11日出願の、「Method and Apparatus for Thread−Based Memory Access in a Multithread Processor」と題する米国特許出願第10/269247号に記載されている。この発明は、本発明の譲受人に譲渡されており、その開示を参照により本明細書に組み込む。
本明細書で使用する「メモリ」という用語は、内部または外部メモリ、キャッシュ・メモリ、データ・メモリ、あるいはデータ記憶要素の他の構成を包含するように、幅広く解釈されることを意図したものである。本発明は、特定のメモリの種類、構成、または用途に限定されるものではない。ただし、メモリは一般に、プロセッサ技術分野においては、レジスタ、例えば図2のレジスタ・ファイル118を構成するレジスタなどとは別のものと解釈されていることに留意されたい。
レジスタ・ファイルへのスレッドベースのアクセス技術は、2002年10月11日出願の、「Method and Apparatus for Register File Port Reduction in a Multithreaded Processor」と題する米国特許出願第10/269373号に記載されている。この発明は、本発明の譲受人に譲渡されており、その開示を参照により本明細書に組み込む。
本発明が、図2に示された特定のマルチスレッド・プロセッサの構成を必要とするものではないことも強調しておく必要がある。本発明は、様々な他のマルチスレッド・プロセッサの構成に実装することができる。
本発明と共に使用するのに適した、図2に示した種類のマルチスレッド・プロセッサのより詳細な例が、2002年10月11日出願の、「Multithreaded Processor With Efficient Processing For Convergence Device Applications」と題する、米国特許出願第10/269372号に記載されている。この発明は、本発明の譲受人に譲渡されており、その開示を参照により本明細書に組み込む。米国特許出願第10/269372号に記載のマルチスレッド・プロセッサの例示的実施形態は、リスクベースの制御コード、デジタル・シグナル・プロセッサ(DSP)コード、Java(登録商標)コード、およびネットワーク処理コードを実行することができる。このプロセッサは、単一命令複数データ(SIMD)ベクトル・ユニット、リダクション・ユニット、および長命令語(LIW)複合命令実行を含むことができる。
マルチスレッド・プロセッサ102は、トークン・トリガ・スレッディングと呼ばれるスレッド手法、または他の適切なスレッド技術を使用するように構成することができる。好ましくは、このようなスレッド手法と共に、パイプライン手法を使用することもできる。本発明と共に使用するのに適したスレッドおよびパイプライン技術の例は、2002年10月11日出願の、「Method and Apparatus for Token Triggered Multithreading」と題する米国特許出願第10/269245号に記載されている。この発明は、本発明の譲受人に譲渡されており、その開示を参照により本明細書に組み込む。
マルチスレッド・プロセッサでは、一般に所与のスレッドを、ハードウェアと見なすことも、ソフトウェアとも見なすこともできる。所与のスレッドに関する特定のプロセッサ・ハードウェアは、より詳しくハードウェア・スレッド・ユニット、あるいは単に「コンテクスト」と呼ばれることも多い。本明細書で使用する「スレッド」という用語は、ソフトウェア・スレッドまたはハードウェア・スレッド、あるいはその両方を含むことが意図される。
次に、ブランチ・コントローラ210と、割込みコントローラ105やマルチスレッド・プロセッサ102の他の要素との相互作用についてより詳細に述べる。一般に、ブランチ・コントローラ210は、各スレッドがどの命令を実行中かを指定する情報を維持し、どの命令を命令デコーダ116に送ってデコードし、実行すべきかについて、スレッド・キャッシュに指示する。したがってブランチ・コントローラ210は通常、各スレッドごとに、個別のプログラム・カウンタと、通常の命令、分岐命令、割込みなどの後でそれぞれプログラム・カウンタを更新する機構とを維持する。
図2の構成図では、ブランチ・コントローラ210と割込みコントローラ105の間に、2本の接続212および214が示されている。この接続のより詳細な例は、以下で説明する図5に示される。ブランチ・コントローラ210は、接続212を使用して、本明細書で「次の実行」スレッドとも呼ぶ、次に実行される予定のスレッドへの割込みがあるかどうかを、割込みコントローラ105に照会する。割込みコントローラ105は、この照会に対する応答を、接続214を介してブランチ・コントローラ210に返す。図5の例では、接続212は、割込みを受ける特定のスレッドを識別するように、より詳細に指定される。一方、接続214は、割込みがある場合には、その特定の割込みに関するアドレスおよび制御出力を含む。
上述のように、一態様によれば本発明は、マルチスレッド・プロセッサ102によって使用される改良されたスレッド間割込み処理技術を提供する。
本発明の例示的一実施形態では、マルチスレッド・プロセッサ、例えばマルチスレッド・プロセッサ102は、あるスレッドから他のスレッドに単一命令実行サイクル以内で割込みをかけることができるように構成される。以下に述べるように、割込みコントローラ105をマルチスレッド・プロセッサ102に統合し、処理スレッドから割込みコントローラ・レジスタ204への迅速なアクセスを可能にすることによって、スレッド間割込みの送達、処理、またはその他の処理に必要な時間が大幅に短縮される。
図3および図4はそれぞれ、本発明による割込みコントローラ105に付随する例示的なイネーブル・レジスタおよびフラグ・レジスタを示す。図3および図4のレジスタは、図2に一般的に示したレジスタ204の特別な例と見なすことができる。以下でより詳細に説明するように、これらの例示的な割込みコントローラ・レジスタは、任意の所与の時間にどの割込みをどのスレッドに送達可能かを制御するものであるが、これらは、単一の命令実行サイクルで読み出し、または修正することができる。好ましくは上記のように、これらのレジスタはマルチスレッド・プロセッサ102と一体化される。例えば、これらの割込みコントローラ・レジスタは、割込みコントローラ105の内部、またはマルチスレッド・プロセッサ内の他の場所に組み込まれた、いわゆる「特殊用途」のレジスタであってもよい。ただし、本発明の技術を実装するには、他の種類のレジスタを使用することも可能である。
図3〜5と共に説明する各実施形態では、説明を分かりやすく簡単にするために、スレッドの数Nを8と想定する。もちろん本発明に、この特定の数のスレッドが必要なわけではない。当業者には容易に明らかになるはずであるが、開示の構成は、他の数のスレッドに対応するように容易に修正することができる。
最初に図3を参照すると、スレッド割込みイネーブル・レジスタ(TIER)300が示されている。TIERは、各スレッドに対して1つずつの、8個の異なる4ビット・レジスタと見なすことができる。ただし、この実施形態では、TIERは単一の32ビットレジタを使用して実装されており、ビット0、8、16、24がスレッド1に関連づけられ、ビット1、9、17、25がスレッド2に関連づけられ、以下同様に関連づけられる。
割込みコントローラは、各スレッドが、TIERのそのスレッドに対応する部分にだけアクセスできることを保証するように構成される。TIERは、8つの各スレッドに対し、データ・アドレス(DADR)割込みイネーブル・ビット、命令アドレス(IADR)割込みイネーブル・ビット、タイマ割込みイネーブル・ビット、およびマスタ割込みイネーブル・ビットを含む。所与の1つのスレッドに対し、マスタ割込みイネーブル・ビットがセットされると、そのスレッドは、すべての割込みソースからの割込みを受信することが可能になる。また、そのビットがクリアされると、そのスレッドでは、すべての割込みソースからの割込みの受信が阻止される。説明を分かりやすくするために、本明細書では、「セット」および「クリア」という用語を、それぞれロジック0レベル、およびロジック1レベルを表すものとして使用することを想定する。ただし、他の想定を使用することもできる。
スレッド間割込みを可能にするために、TIERの特定のビットを必要とするものではないことに留意されたい。その理由は、例示の実施形態におけるこれらの割込みが、少なくともひとつには、マルチスレッド・プロセッサ102上で動作するソフトウェアによって生成できるからである。
一般に、TIERを用いると、所与のスレッドが様々なソースからの割込みを受信できるようにすることが可能になる。この実施形態では、所与のスレッドは、TIERのそのスレッドに対応する部分のマスタ・イネーブル・ビットをセットすることによって、他のスレッドからのスレッド間割込みを含む、あらゆるソースからの割込みの受信を保証することができる。他の構成を使用して、本発明によるスレッド間割込みを可能にできることに留意されたい。
図4は、スレッド割込みフラグ・レジスタ(TIFR)400を示す。この実施形態では、このレジスタは8個のスレッド間で共用される。スレッド間でTIFRが「共用」されるとは、各スレッドがレジスタの全体にアクセスできるという意味である。このことは、TIERとは対照的であり、TIERに含まれる個別の各部分には、対応するスレッドだけがアクセス可能である。
TIFRには、この8個の各スレッドごとに、本明細書で「割込み保留」ビットとも呼ぶ1組のフラグ・ビットが含まれる。より詳細には、TIFRは、所与のスレッドに対し合計4個の割込み保留ビット、すなわちデータ・アドレス(DADR)割込み、命令アドレス(IADR)割込み、タイマ割込み、およびスレッド間(XTHR)割込みの各割込みに対する個別の割込み保留ビットを含む。本実施形態のTIFRもまた、単一の32ビット・レジスタを使用して実装され、ビット0、8、16、24がスレッド1に関連づけられ、ビット1、9、17、25がスレッド2に関連づけられ、以下同様に関連づけられている。TIFRにおいては、所与の割込み保留ビットは、セット時には対応する割込みが保留中であることを示し、クリア時には対応する割込みが保留中でないことを示す。所与のスレッドは一般に、TIFR中の対応するXTHR割込み保留ビットをセットすることによって、他のスレッドに対するスレッド間割込みを設定する。
上で示したように、本発明のTIERレジスタおよびTIFRレジスタは、図に示したような特定の構成を必要とするものではない。例えば、図3および4では単一のレジスタとして図示されているが、TIERおよびTIFRの一方、またはその両方を、別法として、スレッドあたり1レジスタ、スレッド・ペアあたり1レジスタなど、それぞれを複数のレジスタとして実装することもできる。TIERおよびTIFRについての、他の多数の代替構成は、当業者には容易に明らかになるはずである。
図5は、本発明の例示的実施形態における、割込みコントローラ105のより詳細な図を示す。割込みコントローラ105は、前述のような形で各々32ビット・レジスタとして実装された、TIER300およびTIFR400を含む。割込みコントローラ105はさらに、割込みアドレスおよび制御出力を生成するための、割込み要求論理回路502、この実施形態では32個の2入力ANDゲートで構成される論理ゲート504、マルチプレクサ回路506、および優先度論理回路508を含む。
割込み要求論理回路502は、割込み要求バス510に結合されている。このバスは、図2のシステム・バス206の少なくとも一部を表すものである。割込み要求論理回路502はまた、ライン512を介して、入力として割込み要求スレッドIDも受信する。「スレッドID」という用語は、本明細書ではスレッド_IDとも記される。所与のスレッドの1つに対するスレッドIDは、そのID用の上記スレッドIDレジスタに格納することができる。この例では、先に述べたようにN=8であり、スレッドIDは3ビットIDとすることができる。
一般に、入力510および512を使用して、TIFRのどのビットをセットすべきかを決定する。より詳細には、入力512を介して提供される割込み要求スレッドIDを使用して、割込みコントローラ105は、フラグ・レジスタの要求された宛先スレッドの部分を選択する。また、割込み要求バス510は、割込み要求の個々の種類を指定する情報を提供する。
本明細書で使用する「スレッドID」という用語は、マルチスレッド・プロセッサにおける個々のスレッドまたは1組の複数のスレッドを識別するのに適した任意の情報を含むことが意図される。限定の意味ではなく例として、スレッドIDは、マルチスレッド・プロセッサのスレッド・カウンタの出力に対応させることができる。より詳細には、所与のマルチスレッド・プロセッサは、複数のスレッドを、例えばラウンド・ロビン順など所定の順序で処理し、実行中の特定のスレッドを識別するためにスレッド・カウンタ出力を使用するように構成することができる。この実施形態では、ラウンド・ロビン順に処理される計8個のスレッドを含むことができ、各スレッドは3ビットのIDによって識別される。したがって、処理中の個々のスレッドは、3ビット・カウンタの出力を使用して識別することができる。他の実施形態では、カウンタを用いないスレッドIDの実装を使用することもできる。本発明での使用に適した、様々なスレッドID構成が、当業者には容易に明らかになるはずである。
マルチスレッド・プロセッサ102の様々なスレッドは、割込み要求論理回路502を介してTIERおよびTIFRにアクセスすることができる。他のスレッドのスレッド間割込みを要求する所与のスレッドは、割込みを受けるそのスレッドの割込み要求スレッドIDを、入力512を介して割込み要求論理回路502に提供する。スレッド間割込みによって割込みを受けるスレッドを、本明細書では「宛先」スレッドとも呼ぶ。
1組の論理ゲート504の各2入力ANDゲートは、一方がTIERから、もう一方がTIFRからの一対のビットを入力として受け取る。例えば、2入力ANDゲートの左端のゲートは、入力として、TIERおよびTIFRの32番目のビット、すなわち、TIERおよびTIFRのDADR部分のビット31として識別されるビットを受信する。TIERおよびTIFRの他のビットも同様に、ペアの形で2入力ANDゲートに印加される。
ANDゲートの出力はマルチプレクサ回路506の入力に印加される。より詳細には、4個の各8:1マルチプレクサ、506−1、506−2、506−3、および506−4は、1組の論理ゲート504における32個の2入力ANDゲートのうちの8個の出力を入力として受信する。マルチプレクサ、506−1、506−2、506−3、および506−4が受信する入力は、それぞれTIERおよびTIFRのビット0〜7、ビット8〜15、ビット16〜23、およびビット24〜31に関連づけられている。
各マルチプレクサはまた、次に実行されるスレッドのスレッドIDを、上記の図2に関して説明したような方法で、ブランチ・コントローラ210から接続212を介して割込みコントローラ105に提供される選択信号入力として受信する。このスレッドIDは、次に実行されるスレッドが何らかの保留割込みを有しているかどうかについての上記の照会と共に提供される。提供された「次に実行される」スレッドIDに基づき、各マルチプレクサは、その8入力のうちの選択された1つを優先度論理回路508に入力する。優先度論理回路508は、これらの入力を使用して、対応する割込みのための適切なアドレスおよび制御出力を生成する。
以下でより詳細に説明するように、「次に実行する」スレッドに対する保留割込みがある場合は、割込みコントローラ105は、上記の照合に応答して、最初に、その特定の宛先スレッドのマスタ割込みイネーブル・ビットがセットされているかどうかをチェックする。次に、マスタ割込みイネーブル・ビットがセットされている場合は、割込みコントローラ105は、適切な制御出力、および対応する割込みハンドラ・アドレスを、接続214を介してブランチ・コントローラに送達する。
図6は、割込みコントローラ105の、スレッド間割込み処理に関する例示的動作を示す流れ図600である。スレッド間割込みを送達するために、要求元スレッドは、ステップ602に示すように、TIFR中の、宛先スレッドに対応するXTHRビットをセットする。「次に実行する」スレッドのスレッドIDに基づいて、マルチプレクサ506−1、506−2、506−3、および506−4は、対応する2入力ANDゲートの出力を優先度論理回路508に渡す。
宛先スレッドが、TIER中のそのスレッドのマスタ・イネーブル・ビットをセットしている場合は、対応するANDゲートの出力は論理ハイ・レベルであるはずである。ステップ604に示されるように、マルチプレクサの動作に関するこの構成は、次に可能な機会にスレッド間割込みを生成して宛先スレッドに送達するよう優先度論理回路508に通知する機構を提供する。
例示の実施形態において、次に可能な機会は、一般に次に宛先スレッドが命令を実行するときに生じる。先に示したように、宛先スレッドは、そのマスタ・イネーブル・ビットをセットすることも必要になる。ステップ606において、割込みは、一般にアドレスおよび制御情報の形で優先度論理回路508から宛先スレッドに送達される。このことは、以下でさらに詳細に説明する。
割込みが宛先スレッドに送達された後で、ステップ608に示されたように、宛先のマスタ・イネーブル・ビットは自動的にクリアされる。これにより、宛先スレッドが複数の割込みを同時に受信することを防止する。この例示的実施形態では、プロセッサは一般に、複数割込みの同時受信を正しく処理することができない。次に、ステップ610に示したように、宛先スレッドによって割込みが処理される。割込みが処理された後で、ステップ612に示したように、宛先スレッドへの割込みを再度イネーブルにするために、宛先スレッドのマスタ・イネーブル・ビットが自動的にセットされる。次に処理はステップ602に戻って、他のスレッド間割込みを処理する。
図6の流れ図における、マスタ・イネーブル・ビットの自動クリアおよびセットは、本発明の要件ではなく、例示的なものと考えられたい。代替実施形態では、この機能を他の技術を使用して実装できる。例えば、マスタ・イネーブル・ビットは、適切なソフトウェア命令によって明示的にセットまたはクリアすることができる。
図には示されていないが、TIFRのXTHR割込み保留ビットを自動的にクリアする動作は、ステップ606の後のプロセスに含めることができる。ただし、このビットは割込み処理中は再度イネーブルにすべきではない。
先に示したように、優先度論理回路508は、マルチプレクサ回路506の出力に基づいて、アドレスおよび制御情報を生成する。この実施形態では、スレッド間、タイマ、命令アドレス、データ・アドレスの各割込みの優先順位は、a、b、c、dの順に固定されている。ただし、a、b、c、dはそれぞれ、マルチプレクサ506−1、506−2、506−3、506−4の出力である。4つの入力a、b、c、dの所与の組に対し、優先度論理回路508は、割込みアドレス、および複数ビットの制御信号を出力として生成する。アドレス出力は、割込みハンドラの実行アドレスを与え、このアドレスが、スレッドの新しい実行アドレスになる。複数ビットの制御信号は、例えば5ビットの信号であり、その信号の最上位ビットは、割込みが受信されたかどうかを示し、残りのビットは、どの割込みが受信されたかを示す。
より詳細な例として、アドレスおよび制御信号は、入力a、b、c、dに基づいて以下の値をとることができる。ただし、アドレスは16進表記であり、制御信号は2進表記である。
Xthr_I0=a;
スレッド間割込みアドレス:0x200
制御信号:10001
Xthr_I1=(not a and b);
タイマ割込みアドレス:0x280
制御信号:10010
Xthr_I2=(not a and not b and c);
命令アドレス割込みアドレス:0x300
制御信号:10100
Xthr_I3=(not a and not b and not c and d);
データ・アドレス割込みアドレス:0x380
制御信号:11000
その他の場合;
アドレス:任意
制御信号:00000
Xthr_I0=a;
スレッド間割込みアドレス:0x200
制御信号:10001
Xthr_I1=(not a and b);
タイマ割込みアドレス:0x280
制御信号:10010
Xthr_I2=(not a and not b and c);
命令アドレス割込みアドレス:0x300
制御信号:10100
Xthr_I3=(not a and not b and not c and d);
データ・アドレス割込みアドレス:0x380
制御信号:11000
その他の場合;
アドレス:任意
制御信号:00000
前の例で、Xthr_I0、Xthr_I1、Xthr_I2、およびXthr_I3は、優先度論理回路入力a、b、c、およびdの論理値の様々な組合せを示す。ただし、値が存在するときは、その値が論理ハイ・レベルであることを示し、値の前に項「not」が存在するときは、その値が論理ロー・レベルであることを示す。
上記の固定された優先度の構成が、本発明の要件ではないことに留意されたい。他の種類の優先度、例えばランダム優先度や、プログラマブル優先度をそのまま提供することもできる。
上記のように、本発明のスレッド間割込み技術は、従来技術と比べて大きな利益を提供する。例えば、本発明を用いると、所与のスレッドは、他のスレッドに単一命令実行サイクル以内で割込みをかけることができるようになる。したがって本発明は、マルチスレッド・プロセッサのスレッド間割込みを送達し処理するための、待ち時間が少なくオーバヘッドが少ない機構を提供するものである。
本発明の上記の実施形態は、例示のためだけのものであることが意図されており、したがって当業者には、添付の特許請求の範囲を逸脱することなく多数の代替実施形態が明らかになるはずである。例えば、例示の実施形態の割込みコントローラに関する特定の回路構成は、代替の回路構成で置き換えることができる。また、スレッドの数、イネーブル・レジスタおよびフラグ・レジスタの種類や構成、割込み優先度、スレッドID構成、ならびに例示の実施形態の他のパラメータについては、所与の用途の特定のニーズに適合するように変更することが可能である。
Claims (20)
- マルチスレッド・プロセッサにおいて要求元スレッドから宛先スレッドに向けられたスレッド間割込みを処理する方法であって、
前記宛先スレッドへの前記スレッド間割込みの送達を求める要求を受信する工程と、
前記スレッド間割込みの前記宛先スレッドが、スレッド間割込みの受信をイネーブルにしているかどうかを判断する工程と、
前記宛先スレッドがスレッド間割込みの受信をイネーブルにしている場合は、スレッドIDを使用して前記宛先スレッドへの前記スレッド間割込みの送達を制御する工程と
を含む方法。 - 前記マルチスレッド・プロセッサのフラグ・レジスタ内の対応する割込み保留ビットをセットすることによって、前記要求元スレッドが、前記宛先スレッドへの前記スレッド間割込みの送達を要求する、請求項1に記載の方法。
- 前記スレッド間割込みが前記宛先スレッドに送達されたとき、前記割込み保留ビットが自動的にクリアされる、請求項2に記載の方法。
- 前記マルチスレッド・プロセッサのイネーブル・レジスタ内の対応するイネーブル・ビットがセットされている場合は、前記宛先スレッドのスレッド間割込みの受信がイネーブルである、請求項1に記載の方法。
- 前記宛先スレッドが複数の割込みを同時に受信することを防ぐために、前記スレッド間割込みが前記宛先スレッドに送達されたときに前記イネーブル・ビットが自動的にクリアされる、請求項4に記載の方法。
- 前記宛先スレッドが前記スレッド間割込みを処理したときに、前記イネーブル・ビットが自動的に再セットされる、請求項5に記載の方法。
- 前記スレッド間割込みの前期要求が受信されると、前記マルチスレッド・プロセッサの1命令実行サイクルより短い持続時間を有する時間内に、前記スレッド間割込みが前記宛先スレッドに続いて送達される、請求項1に記載の方法。
- 前記受信、判断、および使用の各工程が、割込みコントローラに実装される、請求項1に記載の方法。
- 前記割込みコントローラが、イネーブル・レジスタ、フラグ・レジスタ、および論理回路を含む、請求項8に記載の方法。
- 前記イネーブル・レジスタが少なくともN個の部分を含み、その各々が前記マルチスレッド・プロセッサのN個のスレッドの1つに対応している、請求項9に記載の方法。
- 前記各スレッドが、前記イネーブル・レジスタのそのスレッドに対応する部分にだけアクセスすることが許され、前記イネーブル・レジスタの他のスレッドに対応するN−1個の部分のいずれにもアクセスすることが許されない、請求項10に記載の方法。
- 前記フラグ・レジスタが少なくともN個の部分を含み、その各々が前記マルチスレッド・プロセッサのN個のスレッドの1つに対応している、請求項9に記載の方法。
- 前記各スレッドが、前記フラグ・レジスタの前記N個の部分のいずれにもアクセスすることが許される、請求項12に記載の方法。
- マルチスレッド・プロセッサにおいて、要求元スレッドから宛先スレッドに向けられたスレッド間割込みを処理する装置であって、前記装置が、
論理回路を含む割込みコントローラを含み、前記割込みコントローラが、(i)前記宛先スレッドへの前記スレッド間割込みの送達を求める要求を受信し、(ii)前記スレッド間割込みの前記宛先スレッドがスレッド間割込みの受信をイネーブルにしているかどうかを判断し、(iii)前記宛先スレッドがスレッド間割込みの受信をイネーブルにしている場合は、スレッドIDを使用して前記宛先スレッドへの前記スレッド間割込みの送達を制御するように構成された装置。 - 前記割込みコントローラが、イネーブル・レジスタおよびフラグ・レジスタをさらに含み、前記フラグ・レジスタ内の対応する割込み保留ビットをセットすることによって、前記要求元スレッドが前記宛先スレッドへのスレッド間割込みの送達を要求し、前記イネーブル・レジスタ内の対応するイネーブル・ビットがセットされている場合は、前記宛先スレッドのスレッド間割込みの受信がイネーブルである、請求項14に記載の装置。
- 前記論理回路が、
前記割込み要求を処理するための割込み要求論理回路と、
前記イネーブル・レジスタおよび前記フラグ・レジスタの両方からの対応するビットを、各論理ゲートが入力として受信する複数の論理ゲートと、
前記論理ゲートの出力の中から少なくとも1つの出力を選択して、少なくとも一部は前記スレッドIDに基づく前記スレッド間割込みの生成を制御する際に使用するマルチプレクサ回路と
を含む、請求項15に記載の装置。 - タイマ割込み、命令アドレス割込み、およびデータ・アドレス割込みの少なくとも1つを含む少なくとも1つの他の種類の割込みに対する、前記スレッド間割込みの優先度を決める優先度論理回路を、前記論理回路がさらに含む、請求項16に記載の装置。
- 前記他の種類の割込みよりも高い優先度、または低い優先度を前記スレッド間割込みに提供するように前記優先度論理回路が構成される、請求項17に記載の装置。
- データ・メモリおよびキャッシュ・メモリの少なくとも一方を含むメモリと、
マルチスレッド・プロセッサ中で、要求元スレッドから宛先スレッドに向けられたスレッド間割込みを処理する割込みコントローラであって、(i)前記宛先スレッドへの前記スレッド間割込みの送達を求める要求を受信し、(ii)前記スレッド間割込みの前記宛先スレッドがスレッド間割込みの受信をイネーブルにしているかどうかを判断し、(iii)前記宛先スレッドがスレッド間割込みの受信をイネーブルにしている場合は、スレッドIDを使用して前記宛先スレッドへの前記スレッド間割込みの送達を制御するように構成された割込みコントローラと
を含むマルチスレッド・プロセッサ。 - 要求元スレッドから宛先スレッドに向けられたスレッド間割込みの処理に使用されるプログラム・コードが実施されたマシン可読の記憶媒体を、マルチスレッド・プロセッサ中に含む製品であって、前記プログラム・コードが前記プロセッサによって実行されるときに、
前記宛先スレッドへの前記スレッド間割込みの送達を求める要求を受信する工程と、
前記スレッド間割込みの前記宛先スレッドがスレッド間割込みの受信をイネーブルにしているかどうかを判断する工程と、
前記宛先スレッドがスレッド間割込みの受信をイネーブルにしている場合には、スレッドIDを使用して、前記宛先スレッドへの前記スレッド間割込みの送達を制御する工程と
を実施する製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41845502P | 2002-10-15 | 2002-10-15 | |
US10/404,175 US6971103B2 (en) | 2002-10-15 | 2003-04-01 | Inter-thread communications using shared interrupt register |
PCT/US2003/032322 WO2004036354A2 (en) | 2002-10-15 | 2003-10-10 | Method and apparatus for high speed cross-thread interrupts in a multithreaded processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006503385A true JP2006503385A (ja) | 2006-01-26 |
JP2006503385A5 JP2006503385A5 (ja) | 2006-11-30 |
Family
ID=32073254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005501397A Withdrawn JP2006503385A (ja) | 2002-10-15 | 2003-10-10 | マルチスレッド・プロセッサの高速スレッド間割込みのための方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6971103B2 (ja) |
EP (2) | EP2306313A1 (ja) |
JP (1) | JP2006503385A (ja) |
KR (1) | KR101002911B1 (ja) |
AU (1) | AU2003284098A1 (ja) |
WO (1) | WO2004036354A2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006065460A (ja) * | 2004-08-25 | 2006-03-09 | Seiko Epson Corp | 画像処理を並列処理で実行する際の負荷の割り付け |
JP2006065459A (ja) * | 2004-08-25 | 2006-03-09 | Seiko Epson Corp | 画像処理を並列処理で実行する際の負荷の割り付け |
JP2011507109A (ja) * | 2007-12-12 | 2011-03-03 | クゥアルコム・インコーポレイテッド | マルチスレッド・プロセッサのための共有割込みコントローラ |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7437724B2 (en) * | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
US7334086B2 (en) | 2002-10-08 | 2008-02-19 | Rmi Corporation | Advanced processor with system on a chip interconnect technology |
US20050033889A1 (en) * | 2002-10-08 | 2005-02-10 | Hass David T. | Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip |
US8037224B2 (en) | 2002-10-08 | 2011-10-11 | Netlogic Microsystems, Inc. | Delegating network processor operations to star topology serial bus interfaces |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7849297B2 (en) | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US20050050305A1 (en) * | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US7870553B2 (en) | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
US7610473B2 (en) * | 2003-08-28 | 2009-10-27 | Mips Technologies, Inc. | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US9032404B2 (en) | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7376954B2 (en) * | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US20050086667A1 (en) * | 2003-09-30 | 2005-04-21 | Feng Jin | Symmetric Scheduling for parallel execution |
US7222064B1 (en) * | 2003-10-10 | 2007-05-22 | Unisys Corporation | Instruction processor emulation having inter-processor messaging accounting |
WO2005099334A2 (en) * | 2004-03-31 | 2005-10-27 | Intel Corporation | Event handling mechanism |
US8074051B2 (en) * | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
TW200625097A (en) * | 2004-11-17 | 2006-07-16 | Sandbridge Technologies Inc | Data file storing multiple date types with controlled data access |
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 |
US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
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 |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7702889B2 (en) * | 2005-10-18 | 2010-04-20 | Qualcomm Incorporated | Shared interrupt control method and system for a digital signal processor |
US7971205B2 (en) | 2005-12-01 | 2011-06-28 | International Business Machines Corporation | Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status |
KR20090078790A (ko) * | 2006-09-26 | 2009-07-20 | 샌드브리지 테크놀로지스, 인코포레이티드 | 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법 |
WO2008060948A2 (en) * | 2006-11-10 | 2008-05-22 | Sandbridge Technologies, Inc. | Method and system for parallelization of pipelined computations |
US7797514B2 (en) * | 2006-11-16 | 2010-09-14 | Texas Instruments Incorporated | Scalable multi-threaded sequencing/synchronizing processor architecture |
US8181185B2 (en) * | 2007-05-31 | 2012-05-15 | Intel Corporation | Filtering of performance monitoring information |
US8190864B1 (en) * | 2007-10-25 | 2012-05-29 | Oracle America, Inc. | APIC implementation for a highly-threaded x86 processor |
EP2602710A1 (en) * | 2007-11-05 | 2013-06-12 | Aspen Acquisition Corporation | Method of encoding register instruction fields |
WO2009097444A1 (en) * | 2008-01-30 | 2009-08-06 | Sandbridge Technologies, Inc. | Method for enabling multi-processor synchronization |
US7657683B2 (en) * | 2008-02-01 | 2010-02-02 | Redpine Signals, Inc. | Cross-thread interrupt controller for a multi-thread processor |
US8762641B2 (en) * | 2008-03-13 | 2014-06-24 | Qualcomm Incorporated | Method for achieving power savings by disabling a valid array |
CN102077181B (zh) * | 2008-04-28 | 2014-07-02 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
WO2010017263A1 (en) | 2008-08-06 | 2010-02-11 | Sandbridge Technologies, Inc. | Haltable and restartable dma engine |
ATE542177T1 (de) * | 2008-08-19 | 2012-02-15 | St Microelectronics Rousset | Weiterleitungsverfahren eines unterbrechungssignals direkt an eine virtuelle bearbeitungseinheit in einem system mit einer oder mehreren physischen bearbeitungseinheiten |
JP5173714B2 (ja) | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ及びその割り込み処理方法 |
JP5225010B2 (ja) * | 2008-10-14 | 2013-07-03 | キヤノン株式会社 | プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。 |
US9026705B2 (en) * | 2012-08-09 | 2015-05-05 | Oracle International Corporation | Interrupt processing unit for preventing interrupt loss |
US10248463B2 (en) * | 2015-02-13 | 2019-04-02 | Honeywell International Inc. | Apparatus and method for managing a plurality of threads in an operating system |
US10069949B2 (en) | 2016-10-14 | 2018-09-04 | Honeywell International Inc. | System and method for enabling detection of messages having previously transited network devices in support of loop detection |
US10929178B1 (en) | 2017-06-28 | 2021-02-23 | Apple Inc. | Scheduling threads based on mask assignments for activities |
US10810086B2 (en) | 2017-10-19 | 2020-10-20 | Honeywell International Inc. | System and method for emulation of enhanced application module redundancy (EAM-R) |
US10783026B2 (en) | 2018-02-15 | 2020-09-22 | Honeywell International Inc. | Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor |
US20230169163A1 (en) * | 2021-11-29 | 2023-06-01 | Nxp B.V. | Software isolation using event driven multi-threading |
CN117171102B (zh) * | 2023-09-07 | 2024-01-26 | 山东九州信泰信息科技股份有限公司 | 一种多线程无锁高速写文件的方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694603A (en) * | 1982-09-28 | 1997-12-02 | Reiffin; Martin G. | Computer memory product with preemptive multithreading software |
US4980824A (en) * | 1986-10-29 | 1990-12-25 | United Technologies Corporation | Event driven executive |
US5524250A (en) * | 1991-08-23 | 1996-06-04 | Silicon Graphics, Inc. | Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers |
US6243735B1 (en) * | 1997-09-01 | 2001-06-05 | Matsushita Electric Industrial Co., Ltd. | Microcontroller, data processing system and task switching control method |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6697935B1 (en) * | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US6430593B1 (en) * | 1998-03-10 | 2002-08-06 | Motorola Inc. | Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system |
WO2000070482A1 (en) * | 1999-05-14 | 2000-11-23 | Clearwater Networks, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US6687818B1 (en) * | 1999-07-28 | 2004-02-03 | Unisys Corporation | Method and apparatus for initiating execution of an application processor in a clustered multiprocessor system |
US6754690B2 (en) * | 1999-09-16 | 2004-06-22 | Honeywell, Inc. | Method for time partitioned application scheduling in a computer operating system |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6661794B1 (en) * | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US6785887B2 (en) * | 2000-12-27 | 2004-08-31 | International Business Machines Corporation | Technique for using shared resources on a multi-threaded processor |
US20020103847A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Efficient mechanism for inter-thread communication within a multi-threaded computer system |
US20020144004A1 (en) * | 2001-03-29 | 2002-10-03 | Gaur Daniel R. | Driver having multiple deferred procedure calls for interrupt processing and method for interrupt processing |
-
2003
- 2003-04-01 US US10/404,175 patent/US6971103B2/en not_active Expired - Lifetime
- 2003-10-10 WO PCT/US2003/032322 patent/WO2004036354A2/en active Application Filing
- 2003-10-10 EP EP10010949A patent/EP2306313A1/en not_active Ceased
- 2003-10-10 JP JP2005501397A patent/JP2006503385A/ja not_active Withdrawn
- 2003-10-10 EP EP03776329A patent/EP1554651A4/en not_active Ceased
- 2003-10-10 AU AU2003284098A patent/AU2003284098A1/en not_active Abandoned
- 2003-10-10 KR KR1020057006201A patent/KR101002911B1/ko active IP Right Grant
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006065460A (ja) * | 2004-08-25 | 2006-03-09 | Seiko Epson Corp | 画像処理を並列処理で実行する際の負荷の割り付け |
JP2006065459A (ja) * | 2004-08-25 | 2006-03-09 | Seiko Epson Corp | 画像処理を並列処理で実行する際の負荷の割り付け |
JP4501593B2 (ja) * | 2004-08-25 | 2010-07-14 | セイコーエプソン株式会社 | 画像処理を並列処理で実行する際の負荷の割り付け |
JP4556554B2 (ja) * | 2004-08-25 | 2010-10-06 | セイコーエプソン株式会社 | 画像処理を並列処理で実行する際の負荷の割り付け |
JP2011507109A (ja) * | 2007-12-12 | 2011-03-03 | クゥアルコム・インコーポレイテッド | マルチスレッド・プロセッサのための共有割込みコントローラ |
Also Published As
Publication number | Publication date |
---|---|
AU2003284098A8 (en) | 2004-05-04 |
US6971103B2 (en) | 2005-11-29 |
WO2004036354A3 (en) | 2004-11-18 |
EP2306313A1 (en) | 2011-04-06 |
EP1554651A4 (en) | 2007-10-31 |
WO2004036354A2 (en) | 2004-04-29 |
EP1554651A2 (en) | 2005-07-20 |
KR101002911B1 (ko) | 2010-12-20 |
KR20050050126A (ko) | 2005-05-27 |
US20040073910A1 (en) | 2004-04-15 |
AU2003284098A1 (en) | 2004-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006503385A (ja) | マルチスレッド・プロセッサの高速スレッド間割込みのための方法および装置 | |
JP4610593B2 (ja) | デュアルスレッドプロセッサ | |
JP3547482B2 (ja) | 情報処理装置 | |
US20020083373A1 (en) | Journaling for parallel hardware threads in multithreaded processor | |
US20050108711A1 (en) | Machine instruction for enhanced control of multiple virtual processor systems | |
US8635621B2 (en) | Method and apparatus to implement software to hardware thread priority | |
US5949994A (en) | Dedicated context-cycling computer with timed context | |
JP2004326766A (ja) | マルチスレッド・プロセッサにおいてスレッドの優先度を調整するための装置および方法 | |
JP5413853B2 (ja) | マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス | |
WO1999021088A1 (en) | An apparatus and method to guarantee forward progress in a multithreaded processor | |
JP2005502119A (ja) | 複数スレッドの同時実行に対応するコンピュータシステムにおける割込み処理の方法 | |
US5815698A (en) | Microprocessor having delayed instructions | |
EP1027645A1 (en) | Thread switch control in a multithreaded processor system | |
JP2004532444A (ja) | マルチスレッドプロセッサ上の優先順位及び命令速度の制御 | |
US20170147345A1 (en) | Multiple operation interface to shared coprocessor | |
May | The xmos xs1 architecture | |
US20090138880A1 (en) | Method for organizing a multi-processor computer | |
WO1983001133A1 (en) | Microprocessor with memory having interleaved address inputs and interleaved instruction and data outputs | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
JP5289688B2 (ja) | プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法 | |
US7516311B2 (en) | Deterministic microcontroller context arrangement | |
JPH10260944A (ja) | 割込みシステム | |
JPH0340169A (ja) | 多重プロセツサシステムおよび複数の処理装置を制御する方法 | |
JPS6352241A (ja) | マイクロプロセツサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061010 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061010 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20081128 |