JP2007504541A - プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム - Google Patents
プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム Download PDFInfo
- Publication number
- JP2007504541A JP2007504541A JP2006524961A JP2006524961A JP2007504541A JP 2007504541 A JP2007504541 A JP 2007504541A JP 2006524961 A JP2006524961 A JP 2006524961A JP 2006524961 A JP2006524961 A JP 2006524961A JP 2007504541 A JP2007504541 A JP 2007504541A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- parameters
- value
- instruction
- another
- 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.)
- Pending
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims description 54
- 239000013598 vector Substances 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 21
- 238000013500 data storage Methods 0.000 claims description 14
- 230000000295 complement effect Effects 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 101100317152 Oryza sativa subsp. japonica VPE1 gene Proteins 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 101100001347 Mus musculus Akt1s1 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- 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/3009—Thread control 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, 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
Abstract
Description
(1)2003年8月28日に出願された「Multithreading Application Specific Extension」という名称の米国仮特許出願第60/499,180号(弁理士整理番号P3865、発明者Kevin D.Kissell、速達便番号EV 315085819 US)、
(2)2003年9月12日に出願された「Multithreading Application Specific Extension to a Processor Architecture」という名称の米国仮特許出願第60/502,358号(弁理士整理番号0188.02US、発明者Kevin D.Kissell、速達便番号ER 456368993 US)、および
(3)2003年9月12日に出願された「Multithreading Application Specific Extension to a Processor Architecture」という名称の米国仮特許出願第60/502,359号(弁理士整理番号0188.03US、発明者Kevin D.Kissell、速達便番号ER 456369013 US)の恩恵について請求するものであり、これらそれぞれの米国仮特許出願については、その全体をすべての目的から参照によって本明細書に組み込む。
本発明の実施形態における記述のための「スレッドコンテキスト」とは、プロセッサ内での命令ストリームの実行の状態を記述するのに必要なプロセッサの状態の集合である。この状態は、通常、プロセッサレジスタの内容に反映される。たとえば業界標準のMIPS32 Instruction Set Architectureおよび/またはMIPS64 Instruction Set Architecture(「MIPS Processor」)と互換性のあるプロセッサでは、スレッドコンテキストは、汎用レジスタ(GPR)(general purpose register)、高低乗算器結果レジスタ、プログラムカウンタ(PC)の何らかの代表、および何らかの関連付けられた特権を有するシステム制御状態のセットを含む。システム制御状態は、通常はコプロセッサゼロ「CP0」(coprocessor zero)と呼ばれるMIPS Processorのその部分に保持され、大きくはシステム制御レジスタおよび(使用する場合は)「TLB」(Translation Lookaside Buffer)によって維持される。対照的に「プロセッサコンテキスト」とは、プロセッサの状態のさらに大きな集合であり、少なくとも1つのスレッドコンテキストを含む。再びMIPS Processorを参照すると、この場合のプロセッサコンテキストは、(上述のように)少なくとも1つのスレッドコンテキスト、ならびによく知られているMIPS32またはMIPS64の「PRA」(Privileged Resource Architecture)のインスタンス化を記述するのに必要なCP0およびシステムの状態を含むであろう(要するに、PRAは、命令セットアーキテクチャが動作する上で基づく環境および機能のセットである。PRAは、オペレーティングシステムが、プロセッサのリソース、たとえば仮想メモリ、キャッシュ、例外、およびユーザコンテキストを管理するのに必要なメカニズムを提供する)。
Multithreading ASEは、並列のスレッドおよびVPEの実行に対して、何らかの特定の実装またはスケジューリングモデルを強制するものではない。スケジューリングは、ラウンドロビン方式、任意のきめ細かさでタイムスライスされた方式、または同時方式とすることができる。しかし1つの実装によって、ブロックされているスレッドが、いずれかの共有されているプロセッサリソースを独占して、ハードウェアのデッドロックが引き起こされることがあってはならない。
好ましい実施形態におけるMultithreading ASEは、7つの命令を含む。FORKおよびYIELD命令は、スレッドの割り当て、割り当て解除、およびスケジューリングを制御し、実装され使用可能にされると、すべての実行モードにおいて利用することができる。MFTRおよびMTTR命令は、特権を有するシステムソフトウェアがスレッドの状態を管理するために利用できる、システムコプロセッサ(Cop0)命令である。新しいEMT命令および新しいDMT命令は、VPEのマルチスレッド化されたオペレーションを使用可能にしたり使用不可能にしたりするための特権を有するCop0命令である。最後に、新しいECONF命令は、特別なプロセッサ構成状態を終了させてそのプロセッサを再び初期化するための特権を有するCop0命令である。
FORK命令によって、フリーなスレッドコンテキストが割り当てられ、アクティブ化される。そのフォーマット500が、図5に示されている。FORK命令は、フィールド502(rs)および504(rt)において識別されるGPRから2つのオペランド値を取る。GPR rsのコンテンツは、新しいスレッドのためのフェッチおよび実行を開始するアドレスとして使用される。GPR rtのコンテンツは、新しいスレッドのGPRへと渡される値である。宛先GPRは、CP0のThreadConfigレジスタのForkTargetフィールドの値によって決定され、これについては図21に示されており、また以降で説明する。新しいスレッドのKernel/Supervisor/User状態は、FORKを行っているスレッドの状態に設定される。フォークのために利用できるフリーなスレッドコンテキストがない場合は、FORK命令に対してThread Exceptionが生じる。
YIELD命令によって、現在のスレッドがスケジュール解除される。そのフォーマット600が図6に示されており、図32は、本発明の一実施形態におけるシステムのYIELD命令の関数をアサートするオペレーションを示すフローチャート3200である。
MFTR命令は、1つのスレッド上で実行されているオペレーティングシステムが、別のスレッドコンテキストにアクセスできるようにする特権を有する(Cop0)命令である。そのフォーマット800が、図8に示されている。
MTTR命令は、MFTRの逆である。これは、レジスタの値を、現在のスレッドのスレッドコンテキストから別のスレッドコンテキスト内のレジスタへコピーする、特権を有するCop0命令である。そのフォーマット1000が、図10に示されている。
EMT命令は、CP0のThreadControlレジスタのTEビットを設定することによって、複数のスレッドの並行実行を使用可能にする特権を有するCop0命令であり、これについては図16に示されており、以降で説明する。そのフォーマット1200が、図12に示されている。EMTの実行に先立つTE(Threads Enabled)ビット値を含む、ThreadControlレジスタの値が、レジスタrt内に返される。
DMT命令は、CP0のThreadControlレジスタのTEビットをクリアすることによって、複数のスレッドの並行実行を禁止する特権を有するCop0命令であり、これについては図16に示されており、以降で説明する。そのフォーマット1300が、図13に示されている。
ECONF命令は、VPEの構成の終了を知らせてマルチVPEの実行を使用可能にする特権を有するCop0命令である。そのフォーマット1400が、図14に示されている。
図15のテーブル1500は、Multithreading ASEに関連するシステムコプロセッサの特権を有するリソースの概要をまとめたものである。特段の記載がない限り、以降で特定される新規のコプロセッサゼロ(CP0)レジスタおよび修正されたコプロセッサゼロ(CP0)レジスタは、コプロセッサゼロの(すなわちMIPS Processorの)従来のシステム制御レジスタのようにアクセスする(すなわち、書き込みおよび読み取りを行う)ことができる。
(A)ThreadControl Register(Coprocessor 0 Register 7,Select 1)
ThreadControlレジスタは、VPEごとにシステムコプロセッサの一部としてインスタンス化される。そのレイアウト1600が、図16に示されている。ThreadControl Registerフィールドは、図17のテーブル1700に従って定義される。
ThreadStatusレジスタは、スレッドコンテキストごとにインスタンス化される。それぞれのスレッドは、自分自身のThreadStatusのコピーを見て、特権を有するコードは、MFTRおよびMTTR命令を介して他のスレッドのThreadStatusのコピーにアクセスすることができる。そのレイアウト1800が、図18に示されている。ThreadStatus Registerフィールドは、図19のテーブル1900において定義される。
ThreadContextレジスタ2000は、図20に示されているように、プロセッサGPRと同じ幅でスレッドごとにインスタンス化される。これは純粋に、スレッド固有のストレージ、たとえばスレッドコンテキスト保存エリアへのポインタとしてオペレーティングシステムによって使用できる、ソフトウェア読み取り/書き込みレジスタである。
ThreadConfigレジスタは、プロセッサまたはVPEごとにインスタンス化される。そのレイアウト2100が、図21に示されている。ThreadConfigレジスタフィールドは、図22のテーブル2200において定義される。
ThreadScheduleレジスタは任意選択のものだが、実装する際は、スレッドごとに実装することが好ましい。そのレイアウト2300が、図23に示されている。
VPEScheduleレジスタは任意選択のものであり、VPEごとにインスタンス化することが好ましい。これは、Config3レジスタのMVPビットが、設定された場合にのみ、書き込み可能となる(図29を参照されたい)。そのフォーマット2400が、図24に示されている。
Config4 Registerは、プロセッサごとにインスタンス化される。これは、動的なマルチVPEプロセッサの構成に必要な構成情報を含む。プロセッサが、VPE構成状態(すなわち、Config3レジスタのVMCビットが設定されている状態)にない場合、M(継続)フィールド以外のすべてのフィールドの値は、実装形態によって変わり、予測できない可能性がある。そのレイアウト2500が、図25に示されている。Config4のレジスタフィールドは、図26のテーブル2600に示されているように定義される。いくつかの実施形態では、Config3レジスタ用のVMCビットが存在することができ、これは、それまで確保されていた/割り当てられていないビットとすることができる。
Multithreading ASEは、現在のMIPS32およびMIPS64のPRAのいくつかの要素を修正する。
StatusレジスタのCUビットは、マルチスレッド化された構成において、さらなる意味を持つようになっている。CUビットを設定するという動作は、コプロセッサコンテキストを、そのCUビットに関連付けられているスレッドに結合したいという要求である。コプロセッサコンテキストは、利用可能である場合には、スレッドに結合され、これによって、そのスレッドによって発行される命令は、コプロセッサに達することができ、CUビットは、そこに書き込まれている1の値を保持する。コプロセッサコンテキストがまったく利用できない場合、CUビットは、0として読み戻される。設定されているCUビットに0を書き込むと、関連付けられているすべてのコプロセッサが、割り当て解除される。
図27に示されているように、Thread例外にとって必要とされる新規のCauseレジスタExcCode値がある。
図28に示されているように、それまで確保されていたキャッシュ属性が、ITCインジケータとなる。
図29のテーブル2900に示されているように、Multithreading ASEの利用可能度および複数のスレッドコンテキストの利用可能度を表すために定義される、新規のConfig3レジスタフィールドがある。
図30に示されているように、EBaseレジスタのそれまで確保されていたビット30が、VPEコンテキストごとのVPE禁止ビットとなる。
それまで事前に設定されていたHSSフィールドが、今度はThreadConfig WiredThreadフィールドの関数として作成される。
好ましい実施形態において、オペレーティングシステムがスレッドを「手動で」作成するためのプロシージャは、次のとおりである。
1.DMTを実行して、他のスレッドの実行および場合によってはFORKを停止する。
2.ThreadControlレジスタのAlternateThreadフィールドを、連続した値に設定し、MFTR命令を用いてThreadStatusレジスタを読み取ることによって、利用可能なThreadContextを識別する。フリーなスレッドは、そのThreadStatusレジスタセットのHaltedでもなくActivatedでもないビットを有することになる。
3.選択されたスレッドのThreadStatusレジスタのHaltedビットを設定して、それが別のスレッドによって割り当てられることを防止する。
4.EMT命令を実行して、マルチスレッディングを再び使用可能にする。
5.uフィールドを1に設定した状態でMTTR命令を使用して、所望のすべてのGPRを、選択されたスレッドコンテキストへコピーする。
6.uおよびselフィールドをゼロに設定し、rtフィールドを14(EPC)に設定した状態でMTTR命令を使用して、所望の実行開始アドレスをスレッドの内部のリスタートアドレスレジスタに書き込む。
7.MTTR命令を使用して、HaltedビットにゼロをActivatedビットに1を有する値を、選択されたThreadStatusレジスタに書き込む。
好ましい実施形態において、オペレーティングシステムが現在のスレッドを終了するためのプロシージャは、次のとおりである。
1.OSが、Thread Underflow状態でのThread例外に対するサポートをまったく有していない場合には、MFTR命令を用いてThreadStatusレジスタのセットをスキャンして、プロセッサ上に別の実行可能なスレッドがあることを確認するか、またはそうでない場合には、プログラムにエラーを知らせる。
2.重要なGPRレジスタの値をすべてメモリに書き込む。
3.Status/ThreadStatusレジスタ内でKernelモードを設定する。
4.EXL/ERLをクリアして、現在のスレッドが特権を有する状態に留まっている間に、他のスレッドをスケジュールできるようにする。
5.標準的なMTC0命令を使用して、ThreadStatusレジスタのHaltedビットとActivatedビットの双方にゼロを有する値を書き込む。
ITC(Inter−Thread Communication)Storageは、きめ細かいマルチスレッディングのためのLoad−Linked/Store−Conditionalの同期化に対する代替方法を提供する任意選択の機能である。これは、ロードおよびストアによって操作されるため、命令セットアーキテクチャには見えないが、Privileged Resource Architectureには見え、相当なマイクロアーキテクチャ上のサポートを必要とする。
struct {
uint64 ef_sync_location;
uint64 force_ef_location;
uint64 bypass_location;
uint64 ef_state;
} ITC_location;
ここでは、4つのロケーションすべてが、基礎をなすストレージの同じ64ビットを参照する。このストレージへの参照は、アクセスごとに基づき同じEmpty/Fullプロトコルを義務付けられている状態で、64ビット未満のアクセスタイプ(たとえばLW、LH、LB)を有することができる。
コアまたはプロセッサは、機能ユニットなどの複数のVPE共有リソースを実装することができる。それぞれのVPEは、MIPS32またはMIPS64命令、および特権を有するリソースアーキテクチャの自分自身のインスタンス化を見る。それぞれは、自分自身のレジスタファイルまたはスレッドコンテキストアレイを見て、それぞれは、自分自身のCP0システムコプロセッサおよび自分自身のTLB状態を見る。同じプロセッサ上の2つのVPEは、2CPUのキャッシュコヒーレントなSMPマルチプロセッサからのソフトウェアにとっては見分けがつかない。
MIPS32およびMIPS64のPRAとの下位互換性を有するには、設定によって変更できるようにマルチスレッド化された//マルチVPEプロセッサは、リセット時に、健全なデフォルトのスレッド/VPE構成を有していなければならない。これは、単一のスレッドコンテキストを有する単一のVPEの構成である場合が典型的だが、必ずしもその必要はない。リセット時に、Config3レジスタのMVPビットをサンプリングして、動的なVPE構成が可能かどうかを判断することができる。この機能が、レガシーソフトウェアによるものとして無視される場合、プロセッサは、デフォルト構成用の指定に従って動作することになる。
Config1.MMU_Size
Config1.FP
Config1.MX
Config1.C2
Config3.NThreads
Config3.NITC_Pages
Config3.NITC_PLocs
Config3.MVP
VPESchedule
本明細書はここまで、マルチスレッディングを提供するためのMIPS互換システム用のアプリケーション固有の拡張について説明している。前述のように、説明されている機能およびメカニズムは、MIPSシステム以外にも適用できるため、説明されているMIPSの実装形態は、典型的なものであり、限定的なものではない。
マルチメディアデータを移送するために設計されたネットワークによって、1つのネットワーク内のさまざまなデータストリームに、さまざまなポリシーを適用する必要性を記述するための「QoS」(Quality−of−Service)という概念が発展した。たとえば音声接続は、相対的に帯域幅を必要としないが、数十ミリ秒を超える遅延を許容することはできない。ブロードバンドマルチメディアネットワーク内のQoSプロトコルは、時間が決定的に重要となる転送に際して、タイムリーな配信を確保するのに必要な特別な取り扱いおよび優先順位はいかなるものでも得られるように保証する。
複数のスレッドから命令の発行をスケジュールする複数の方法が存在する。インターリーブドスケジューラは、サイクルごとにスレッドを変更し、その一方でブロッキングスケジューラは、キャッシュミスやその他の重大な失速が生じるたびにスレッドを変更する。詳細に前述したMultithreading ASEは、特定のスレッドスケジューリングメカニズムまたはポリシーへのいかなる依存状態も回避しようと試みる、明確にマルチスレッド化されたプロセッサのためのフレームワークを提供する。しかしスケジューリングポリシーは、さまざまなスレッドの実行に関して、どんなQoS保証が可能かということに対して大きな影響を与える可能性がある。
Quality of Serviceのスレッドスケジューリングは、プログラマやシステム設計者が、コードの特定の断片の実行時間に関して自信を持って予測するステートメントを作成できるようにする、スケジューリングメカニズムおよびポリシーのセットとして大まかに定義することができる。これらのステートメントは一般に、「このコードは、Nmax以下かつNmin以上のサイクルで実行される」というフォームを有する。多くの場合、実際に重要な数値はNmaxの数値のみであるが、いくつかのアプリケーションでは、スケジュールに先んじて実行することも問題となり、したがってNminも重要となる可能性がある。NminとNmaxとの間の範囲が小さければ小さいほど、それだけシステム全体の動作を正確に予測することができる。
マルチスレッド化された発行スケジューリングに一定レベルのQoSを提供するために提案されてきた1つの単純なモデルは、単一の指定されたリアルタイムのスレッドに最高の優先順位を単純に割り当てることであり、これによってそのスレッドは、実行可能である場合、常に選択されて命令を発行することになる。これによって、Nminの最小値が提供されることになり、指定されたスレッドに関して可能なNmaxの最小値が提供されるように見えるかもしれないが、いくつかの悪影響がある。
代替となる、より強力で、ユニークなスレッドスケジューリングモデルは、発行スロットを確保することに基づく。このようなスキームにおけるハードウェアスケジューリングメカニズムは、1つまたは複数のスレッドに、それぞれM個の連続した発行スロットのうちのN個を割り当てることができる。このようなスキームは、割り込みの自由な環境におけるリアルタイムのコード断片用の優先順位スキームほど低いNminの値を提供しないが、次のようなその他の長所を有する。
上述のマルチスレッディングシステムは、意図的にスケジューリングポリシーについては中立であるが、複合型のスケジューリングモデルを可能にするように拡張することができる。このモデルでは、リアルタイムのスレッドには、スレッド発行スロットの一定割合の固定されたスケジューリングを与え、残りのスロットは、実装形態に応じたデフォルトのスケジューリングスキームによって割り当てることができる。
プロセッサにおいては、命令は、連続して速いペースで発行される。マルチスレッディング環境では、所与の固定数のスロットの中でそれぞれのスレッドが発行するスロットの比例配分した数を述べることによって、混合状態の中でそれぞれのスレッドによって消費される帯域幅を定量化することができる。逆に本発明者は、スロットの固定数を任意に述べてから、1つの特定のスレッドに対する固定数のうちの一定数のスロットを確保しておくように、プロセッサに制約を課す手段を叙述することができると認識している。そしてリアルタイムのスレッドに対して保証される帯域幅の固定された分数を指定することができる。
前述のように、割り込みサービスによって、例外を取るスレッドの実行時間に相当な変動が生じることがある。したがって厳格なQoS保証を必要とするスレッドには、割り込みサービスを免除することが望ましい。これは、好ましい一実施形態において達成され、この実施形態は、スレッドごとに単一のビットを有し、オペレーティングシステムにとって見ることができ、生じたいかなる非同期例外も、免除されないスレッドがスケジュールされるまで保留する(すなわちThreadStatus RegisterのビットIXMT、図18および図19を参照されたい)。これによって、割り込みの待ち時間が増えるが、これは、ThreadSchedule Registerの値を選択することによって、上限を設定して制御できる程度である。割り込みハンドラの実行が、免除されているリアルタイムのQoSスレッドに割り当てられていない発行スロットの間でしか生じないのであれば、割り込みサービスは、そのようなリアルタイムのコードの実行時間に対して一次的な影響をまったく及ぼさない。
可能な限り詳細に前述したMultithreading ASEは、スレッドリソースの階層的な割り当てについて記述し、ここでは複数のVPE(Virtual Processing Element)が、それぞれ複数のスレッドを含む。それぞれのVPEは、(MIPS Processor上で構成される場合には)CP0および特権を有するリソースアーキテクチャの1つの実装を有するため、1つのVPE上で実行されているオペレーティングシステムソフトウェア(「OS」)は、別のVPE上でどの発行スロットが要求されているかを直接把握して制御することはできない。したがって、それぞれのVPEの発行スロットネームスペースは、そのVPEに関連し、これは、発行スロットの割り当ての階層を意味する。
ここまで説明した固定された32ビットのThreadScheduleレジスタおよびVPEScheduleレジスタ用の実施形態では、発行帯域幅の厳密な奇数の分数を割り当てることができない。すべての発行スロットの厳密に1/3を所与のスレッドに割り当てたいプログラマは、10/32または11/32を近似値としなければならないであろう。一実施形態におけるさらなるプログラム可能なマスクまたは長さのレジスタによって、プログラマは、ThreadSchedule Registerおよび/またはVPESchedule Register内のビットのサブセットが、シーケンスを再スタートさせる前に、発行ロジックによって使用されるように指定することができる。たとえばプログラマは、30ビットのみが有効であると指定し、0x24924924によって適切なVPESchedule Registerおよび/またはThreadSchedule Registerをプログラムする。
Claims (87)
- 複数のプログラムスレッドをサポートして実行することができるプロセッサにおいて、
プログラムスレッドをスケジュールするためのパラメータと、
プログラムスレッド内に配置されてパラメータへアクセスすることができる命令とを含む、処理用のメカニズムであって、
パラメータが第1の値に等しい場合に、命令が、パラメータ内でコード化されている1つまたは複数の条件に従ってプログラムスレッドをスケジュール変更する、処理用のメカニズム。 - パラメータが、データストレージデバイス内に保持される、請求項1に記載のメカニズム。
- パラメータが第2の値に等しく、該第2の値が第1の値とは異なる場合に、命令が、プログラムスレッドを割り当て解除する、請求項1に記載のメカニズム。
- 第2の値がゼロである、請求項3に記載のメカニズム。
- パラメータが第2の値に等しく、該第2の値が第1の値とは異なる場合に、命令が、プログラムスレッドを無条件にスケジュール変更する、請求項1に記載のメカニズム。
- 第2の値が奇数値である、請求項5に記載のメカニズム。
- 第2の値がマイナス1である、請求項5に記載のメカニズム。
- 1つまたは複数の条件のうちの1つの条件が、該1つの条件が満たされるまで、実行を別のスレッドに譲っているプログラムスレッドに関連付けられている、請求項1に記載のメカニズム。
- 1つの条件が、パラメータ内のビットベクトルまたはビットフィールドのうちの1つにおいてコード化されている、請求項8に記載のメカニズム。
- プログラムスレッドがスケジュール変更される状況において、プログラムスレッドの実行が、命令に続くスレッド内の場所で再開する、請求項5に記載のメカニズム。
- パラメータが第3の値に等しく、該第3の値が第1の値および第2の値とは異なる場合に、命令が、プログラムスレッドを無条件にスケジュール変更する、請求項3に記載のメカニズム。
- 1つまたは複数の条件のうちの1つの条件が、ハードウェアの割り込みである、請求項1に記載のメカニズム。
- 1つまたは複数の条件のうちの1つの条件が、ソフトウェアの割り込みである、請求項1に記載のメカニズム。
- プログラムスレッドがスケジュール変更される状況において、プログラムスレッドの実行が、命令に続くスレッド内の場所で再開する、請求項1に記載のメカニズム。
- 複数のプログラムスレッドをサポートして実行することができるプロセッサにおいて、実行をスケジュール変更するか、またはスレッドによって自体を割り当て解除する方法であって、
(a)スレッドがスケジュール変更される際またはスケジュール変更されない際に基づく1つまたは複数の条件に関連付けられている1つまたは複数のパラメータをコード化しているデータストレージデバイス内のレコードの一部に、アクセスする命令を発行するステップと、
(b)レコードの一部の中の1つまたは複数のパラメータによるスケジュール変更のための条件に従うか、またはスレッドを割り当て解除するステップとを含む方法。 - レコードが、汎用レジスタ(GPR)内に存在する、請求項15に記載の方法。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられている、請求項15に記載の方法。
- 割り当て解除されるスレッドに関連付けられているパラメータが、ゼロの値である、請求項17に記載の方法。
- パラメータのうちの1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項15に記載の方法。
- パラメータが任意の奇数値である、請求項19に記載の方法。
- パラメータが、2の補数のマイナス1の値である、請求項19に記載の方法。
- パラメータのうちの1つが、特定の条件が満たされるまで、実行を別のスレッドに譲っているスレッドに関連付けられている、請求項15に記載の方法。
- パラメータが、レコード内のビットベクトルあるいは1つまたは複数の値フィールドのうちの1つにおいてコード化されている、請求項22に記載の方法。
- スレッドが命令を発行してスケジュール変更される状況において、スレッドの実行が、1つまたは複数の条件が満たされた際に、スレッドが発行した命令に続くスレッド命令ストリーム内の場所で再開する、請求項15に記載の方法。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項15に記載の方法。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項15に記載の方法。
- パラメータのうちの1つが、スケジュール変更のために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項15に記載の方法。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項15に記載の方法。
- 複数のソフトウェアエンティティをサポートして実行するためのデジタルプロセッサであって、
スレッドがいったん実行を別のスレッドに譲った後に、スケジュール変更される際またはスケジュール変更されない際に基づく1つまたは複数の条件に関連付けられている1つまたは複数のパラメータをコード化しているデータストレージデバイス内のレコードの一部を含む、デジタルプロセッサ。 - レコードの一部が汎用レジスタ(GPR)内に存在する、請求項29に記載のデジタルプロセッサ。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられている、請求項29に記載のデジタルプロセッサ。
- 割り当て解除されるスレッドに関連付けられているパラメータが、ゼロの値である、請求項31に記載のデジタルプロセッサ。
- パラメータのうちの1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項29に記載のデジタルプロセッサ。
- パラメータが任意の奇数値である、請求項33に記載のデジタルプロセッサ。
- パラメータが、2の補数のマイナス1の値である、請求項33に記載のデジタルプロセッサ。
- パラメータのうちの1つが、特定の条件が満たされるまで、実行を別のスレッドに譲っているスレッドに関連付けられている、請求項29に記載のデジタルプロセッサ。
- パラメータが、レコード内のビットベクトルあるいは1つまたは複数の値フィールドのうちの1つにおいてコード化されている、請求項36に記載のデジタルプロセッサ。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項29に記載のデジタルプロセッサ。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項29に記載のデジタルプロセッサ。
- パラメータのうちの1つが、スケジュール変更のために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項29に記載のデジタルプロセッサ。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項29に記載のデジタルプロセッサ。
- 複数のプログラムスレッドをサポートして実行することができる処理システムであって、
デジタルプロセッサと、
スレッドがスケジュール変更される際またはスケジュール変更されない際に基づく1つまたは複数の条件に関連付けられている1つまたは複数のパラメータをコード化しているデータストレージデバイス内のレコードの一部と、
スレッドをスケジュール変更および割り当て解除するための命令を含む命令セットとを含み、
命令が、スレッドによって発行されると、レコードの1つまたは複数のパラメータにアクセスし、処理システムが、レコードの一部の1つまたは複数のパラメータに従って、発行スレッドをスケジュール変更または割り当て解除するための1つまたは複数の条件に従う、処理システム。 - レコードが汎用レジスタ(GPR)内に存在する、請求項42に記載の処理システム。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられている、請求項41に記載の処理システム。
- 割り当て解除されるスレッドに関連付けられているパラメータが、ゼロの値である、請求項44に記載の処理システム。
- パラメータのうちの1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項44に記載の処理システム。
- パラメータが任意の奇数値である、請求項46に記載の処理システム。
- パラメータが、2の補数のマイナス1の値である、請求項46に記載の処理システム。
- パラメータのうちの1つが、特定の条件が満たされるまで、実行を別のスレッドに譲っているスレッドに関連付けられている、請求項41に記載の処理システム。
- パラメータが、レコード内のビットベクトルあるいは1つまたは複数の値フィールドのうちの1つにおいてコード化されている、請求項49に記載の処理システム。
- スレッドが命令を発行して条件付きでスケジュール変更される状況において、スレッドの実行が、1つまたは複数の条件が満たされた際に、命令に続くスレッド命令ストリーム内の場所で再開する、請求項44に記載の処理システム。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項42に記載の処理システム。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項42に記載の処理システム。
- パラメータのうちの1つが、スケジュール変更のために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項42に記載の処理システム。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項42に記載の処理システム。
- 複数のソフトウェアスレッドのうちの個々のスレッドを1つのデジタルプロセッサで実行するための1つの命令セットからの複数の命令を書き込まれているデジタルストレージメディアであって、命令セットが1つの命令を含み、該1つの命令によって発行スレッドが実行を譲り、データストレージデバイス内のレコードの一部の中のパラメータにアクセスし、割り当て解除またはスケジュール変更のための条件が、パラメータに関連付けられており、レコードの一部のパラメータによる割り当て解除またはスケジュール変更のための条件が準拠される、デジタルストレージメディア。
- レコードが汎用レジスタ(GPR)内に存在する、請求項56に記載のデジタルストレージメディア。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられている、請求項57に記載のデジタルストレージメディア。
- 割り当て解除されるスレッドに関連付けられているパラメータが、ゼロの値である、請求項58に記載のデジタルストレージメディア。
- パラメータのうちの1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項56に記載のデジタルストレージメディア。
- パラメータが任意の奇数値である、請求項60に記載のデジタルストレージメディア。
- パラメータが、2の補数のマイナス1の値である、請求項60に記載のデジタルストレージメディア。
- パラメータのうちの1つが、特定の条件が満たされるまで、実行を別のスレッドに譲っているスレッドに関連付けられている、請求項16に記載のデジタルストレージメディア。
- パラメータが、レコード内のビットベクトルあるいは1つまたは複数の値フィールドのうちの1つにおいてコード化されている、請求項63に記載のデジタルストレージメディア。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられている、請求項56に記載のデジタルストレージメディア。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項56に記載のデジタルストレージメディア。
- パラメータのうちの1つが、スケジュール変更のために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項56に記載のメカニズム。
- パラメータのうちの1つが、スケジュール変更されるのではなく割り当て解除されるスレッドに関連付けられており、パラメータのうちの別の1つが、スケジューリングのために再びキューに入れられるスレッドに関連付けられており、パラメータのうちの別の1つが、特定の条件が満たされるまで、実行を別のスレッドに譲ることに関連付けられている、請求項56に記載のデジタルストレージメディア。
- 命令が、YIELD命令である、請求項1に記載のメカニズム。
- レコードの一部が、ビットベクトルを含む、請求項1に記載のメカニズム。
- レコードの一部が、1つまたは複数のマルチビットフィールドを含む、請求項1に記載のメカニズム。
- 命令が、YIELD命令である、請求項15に記載の方法。
- 命令が、YIELD命令である、請求項42に記載の処理システム。
- 命令が、YIELD命令である、請求項56に記載のデジタルストレージメディア。
- 伝送メディアにおいて具体化されるコンピュータデータ信号であって、
複数のプログラムスレッドをサポートして実行することができるプロセッサを記述し、かつスレッドをスケジュール変更および割り当て解除するためのメカニズムを含むコンピュータ可読プログラムコードを含み、該コンピュータ可読プログラムコードが、
スレッドがスケジュール変更される際またはスケジュール変更されない際に基づく1つまたは複数の条件に関連付けられている1つまたは複数のパラメータをコード化しているデータストレージデバイス内のレコードの一部を記述するための第1のプログラムコードセグメントと、
レコードの1つまたは複数のパラメータにアクセスすることができる命令を記述するための第2のプログラムコードセグメントとを含み、命令が、スレッドによって発行されると、レコード内の1つまたは複数の値にアクセスし、該1つまたは複数の値によるスケジュール変更のための1つまたは複数の条件に従うか、またはスレッドを割り当て解除する、コンピュータデータ信号。 - 複数のプログラムスレッドをサポートすることができるプロセッサにおいて、
スレッドのスケジューリングに関連するパラメータにアクセスする命令を実行するステップであって、前記命令がプログラムスレッド内に含まれる、アクセスする命令を実行するステップと、
パラメータが第1の値に等しい場合に、命令に応答してプログラムスレッドを割り当て解除するステップとを含む、方法。 - 第1の値がゼロである、請求項76に記載の方法。
- パラメータが第2の値に等しい場合に、命令に応答してプログラムスレッドの実行を一時停止するステップをさらに含み、第2の値が第1の値とは異なる、請求項76に記載の方法。
- 第2の値が、プログラムスレッドの実行に必要とされる条件が満たされていないことを示す、請求項78に記載の方法。
- 条件が、パラメータ内でビットベクトルまたは値フィールドとしてコード化されている、請求項79に記載の方法。
- パラメータが第3の値に等しい場合に、命令に応答してプログラムスレッドをスケジュール変更するステップをさらに含み、第3の値が、第1の値および第2の値とは異なる、請求項78に記載の方法。
- 第3の値がマイナス1である、請求項81に記載の方法。
- 第3の値が奇数値である、請求項81に記載の方法。
- 複数のプログラムスレッドをサポートすることができるプロセッサにおいて、
スレッドのスケジューリングに関連するパラメータにアクセスする命令を実行するステップであって、命令がプログラムスレッド内に含まれる、アクセスする命令を実行するステップと、
パラメータが第1の値に等しい場合に、命令に応答してプログラムスレッドの実行を一時停止するステップとを含む、方法。 - パラメータが第2の値に等しい場合に、命令に応答してプログラムスレッドをスケジュール変更するステップをさらに含み、第2の値が第1の値とは異なる、請求項84に記載の方法。
- 複数のプログラムスレッドをサポートすることができるプロセッサにおいて、
スレッドのスケジューリングに関連するパラメータにアクセスする命令を実行するステップであって、命令がプログラムスレッド内に含まれる、アクセスする命令を実行するステップと、
パラメータが第1の値に等しい場合に、命令に応答してプログラムスレッドをスケジュール変更するステップとを含む、方法。 - パラメータが第2の値に等しい場合に、命令に応答してプログラムスレッドを割り当て解除するステップをさらに含み、第2の値が第1の値とは異なる、請求項86に記載の方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US49918003P | 2003-08-28 | 2003-08-28 | |
US50235903P | 2003-09-12 | 2003-09-12 | |
US50235803P | 2003-09-12 | 2003-09-12 | |
US10/684,348 US20050050305A1 (en) | 2003-08-28 | 2003-10-10 | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
PCT/US2004/029272 WO2005022386A2 (en) | 2003-08-28 | 2004-08-26 | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007504541A true JP2007504541A (ja) | 2007-03-01 |
Family
ID=34222595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006524961A Pending JP2007504541A (ja) | 2003-08-28 | 2004-08-26 | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20050050305A1 (ja) |
EP (1) | EP1660999A2 (ja) |
JP (1) | JP2007504541A (ja) |
CN (1) | CN102880447B (ja) |
WO (1) | WO2005022386A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016173836A (ja) * | 2011-07-29 | 2016-09-29 | インテル コーポレイション | 中央処理ユニット及び画像処理ユニットの同期機構 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE602004017879D1 (de) * | 2003-08-28 | 2009-01-02 | Mips Tech Inc | Integrierter mechanismus zum suspendieren und endznem prozessor |
US7870553B2 (en) * | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7836450B2 (en) * | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | 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 |
US7594089B2 (en) | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
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 |
US7496921B2 (en) * | 2003-08-29 | 2009-02-24 | Intel Corporation | Processing block with integrated light weight multi-threading support |
US7477255B1 (en) * | 2004-04-12 | 2009-01-13 | Nvidia Corporation | System and method for synchronizing divergent samples in a programmable graphics processing unit |
US7324112B1 (en) | 2004-04-12 | 2008-01-29 | Nvidia Corporation | System and method for processing divergent samples in a programmable graphics processing unit |
US7664928B1 (en) * | 2005-01-19 | 2010-02-16 | Tensilica, Inc. | Method and apparatus for providing user-defined interfaces for a configurable processor |
US7814487B2 (en) * | 2005-04-26 | 2010-10-12 | Qualcomm Incorporated | System and method of executing program threads in a multi-threaded processor |
US8205146B2 (en) * | 2005-07-21 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | Persistent error detection in digital memory |
US7984281B2 (en) * | 2005-10-18 | 2011-07-19 | Qualcomm Incorporated | Shared interrupt controller for a multi-threaded processor |
US7702889B2 (en) * | 2005-10-18 | 2010-04-20 | Qualcomm Incorporated | Shared interrupt control method and system for a digital signal processor |
US7913255B2 (en) * | 2005-10-20 | 2011-03-22 | Qualcomm Incorporated | Background thread processing in a multithread 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 |
US8156493B2 (en) * | 2006-04-12 | 2012-04-10 | The Mathworks, Inc. | Exception handling in a concurrent computing process |
US8081184B1 (en) * | 2006-05-05 | 2011-12-20 | Nvidia Corporation | Pixel shader program thread assembly |
US8046775B2 (en) * | 2006-08-14 | 2011-10-25 | Marvell World Trade Ltd. | Event-based bandwidth allocation mode switching method and apparatus |
US9665970B2 (en) * | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US8402463B2 (en) * | 2006-10-30 | 2013-03-19 | Hewlett-Packard Development Company, L.P. | Hardware threads processor core utilization |
US7698540B2 (en) * | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US8261049B1 (en) | 2007-04-10 | 2012-09-04 | Marvell International Ltd. | Determinative branch prediction indexing |
GB2451845B (en) * | 2007-08-14 | 2010-03-17 | Imagination Tech Ltd | Compound instructions in a multi-threaded processor |
US9009020B1 (en) * | 2007-12-12 | 2015-04-14 | F5 Networks, Inc. | Automatic identification of interesting interleavings in a multithreaded program |
US8433884B2 (en) * | 2008-06-19 | 2013-04-30 | Panasonic Corporation | Multiprocessor |
US9785462B2 (en) * | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
GB201001621D0 (en) * | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
JP5488697B2 (ja) * | 2010-08-30 | 2014-05-14 | 富士通株式会社 | マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム |
CN102183922A (zh) * | 2011-03-21 | 2011-09-14 | 浙江机电职业技术学院 | Acs运动控制器实时暂停的实现方法 |
CN102833120B (zh) * | 2011-06-14 | 2017-06-13 | 中兴通讯股份有限公司 | 一种快速自动化测试中处理网管服务器异常的方法及系统 |
US8832417B2 (en) | 2011-09-07 | 2014-09-09 | Qualcomm Incorporated | Program flow control for multiple divergent SIMD threads using a minimum resume counter |
US9513975B2 (en) * | 2012-05-02 | 2016-12-06 | Nvidia Corporation | Technique for computational nested parallelism |
US9256429B2 (en) | 2012-08-08 | 2016-02-09 | Qualcomm Incorporated | Selectively activating a resume check operation in a multi-threaded processing system |
US9229721B2 (en) | 2012-09-10 | 2016-01-05 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
US9811364B2 (en) * | 2013-06-13 | 2017-11-07 | Microsoft Technology Licensing, Llc | Thread operation across virtualization contexts |
CN106651748B (zh) | 2015-10-30 | 2019-10-22 | 华为技术有限公司 | 一种图像处理方法与图像处理装置 |
CN105677487B (zh) * | 2016-01-12 | 2019-02-15 | 浪潮通用软件有限公司 | 一种控制资源占用的方法及装置 |
US10459778B1 (en) | 2018-07-16 | 2019-10-29 | Microsoft Technology Licensing, Llc | Sending messages between threads |
CN109039732B (zh) * | 2018-07-26 | 2021-07-23 | 中国建设银行股份有限公司 | 消息处理系统及消息处理方法 |
GB2580327B (en) * | 2018-12-31 | 2021-04-28 | Graphcore Ltd | Register files in a multi-threaded processor |
CN110278488B (zh) * | 2019-06-28 | 2021-07-27 | 百度在线网络技术(北京)有限公司 | 一种播放控制方法及装置 |
US11599441B2 (en) * | 2020-04-02 | 2023-03-07 | EMC IP Holding Company LLC | Throttling processing threads |
CN112559160B (zh) * | 2021-02-19 | 2021-06-04 | 智道网联科技(北京)有限公司 | 地图引擎多线程的控制方法及装置 |
CN116954950B (zh) * | 2023-09-04 | 2024-03-12 | 北京凯芯微科技有限公司 | 一种核间通信方法和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08249195A (ja) * | 1995-02-03 | 1996-09-27 | Internatl Business Mach Corp <Ibm> | 命令スレッドを処理するための方法およびシステム |
WO2003019360A2 (en) * | 2001-08-24 | 2003-03-06 | International Business Machines Corporation | System for yielding to a processor |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3665404A (en) * | 1970-04-09 | 1972-05-23 | Burroughs Corp | Multi-processor processing system having interprocessor interrupt apparatus |
JPS6258341A (ja) * | 1985-09-03 | 1987-03-14 | Fujitsu Ltd | 入出力割込処理方式 |
CN1040588C (zh) * | 1986-08-20 | 1998-11-04 | 东芝机械株式会社 | 适用于实现顺序控制和伺服控制的计算机控制系统和方法 |
US4817051A (en) * | 1987-07-02 | 1989-03-28 | Fairchild Semiconductor Corporation | Expandable multi-port random access memory |
US4843541A (en) * | 1987-07-29 | 1989-06-27 | International Business Machines Corporation | Logical resource partitioning of a data processing system |
US5428754A (en) * | 1988-03-23 | 1995-06-27 | 3Dlabs Ltd | Computer system with clock shared between processors executing separate instruction streams |
EP0473714A1 (en) * | 1989-05-26 | 1992-03-11 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
US5410710A (en) * | 1990-12-21 | 1995-04-25 | Intel Corporation | Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems |
FR2677474B1 (fr) * | 1991-06-04 | 1993-09-24 | Sextant Avionique | Dispositif permettant d'accroitre les performances d'un noyau d'executif temps reel associe a une structure multiprocesseur pouvant comprendre un nombre eleve de processeurs. |
US5542076A (en) * | 1991-06-14 | 1996-07-30 | Digital Equipment Corporation | Method and apparatus for adaptive interrupt servicing in data processing system |
JPH05204656A (ja) * | 1991-11-30 | 1993-08-13 | Toshiba Corp | スレッド固有データ保持方法 |
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
CA2100540A1 (en) * | 1992-10-19 | 1994-04-20 | Jonel George | System and method for performing resource reconfiguration in a computer system |
US5758142A (en) * | 1994-05-31 | 1998-05-26 | Digital Equipment Corporation | Trainable apparatus for predicting instruction outcomes in pipelined processors |
US5481719A (en) * | 1994-09-09 | 1996-01-02 | International Business Machines Corporation | Exception handling method and apparatus for a microkernel data processing system |
JP3169779B2 (ja) * | 1994-12-19 | 2001-05-28 | 日本電気株式会社 | マルチスレッドプロセッサ |
US5867704A (en) * | 1995-02-24 | 1999-02-02 | Matsushita Electric Industrial Co., Ltd. | Multiprocessor system shaving processor based idle state detection and method of executing tasks in such a multiprocessor system |
US5727203A (en) * | 1995-03-31 | 1998-03-10 | Sun Microsystems, Inc. | Methods and apparatus for managing a database in a distributed object operating environment using persistent and transient cache |
US5799188A (en) * | 1995-12-15 | 1998-08-25 | International Business Machines Corporation | System and method for managing variable weight thread contexts in a multithreaded computer system |
US5706514A (en) * | 1996-03-04 | 1998-01-06 | Compaq Computer Corporation | Distributed execution of mode mismatched commands in multiprocessor computer systems |
US5790871A (en) * | 1996-05-17 | 1998-08-04 | Advanced Micro Devices | System and method for testing and debugging a multiprocessing interrupt controller |
US5944816A (en) * | 1996-05-17 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor configured to execute multiple threads including interrupt service routines |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US5949994A (en) * | 1997-02-12 | 1999-09-07 | The Dow Chemical Company | Dedicated context-cycling computer with timed context |
US6175916B1 (en) * | 1997-05-06 | 2001-01-16 | Microsoft Corporation | Common-thread inter-process function calls invoked by jumps to invalid addresses |
US5991856A (en) * | 1997-09-30 | 1999-11-23 | Network Associates, Inc. | System and method for computer operating system protection |
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 |
US6088787A (en) * | 1998-03-30 | 2000-07-11 | Celestica International Inc. | Enhanced program counter stack for multi-tasking central processing unit |
US6560626B1 (en) * | 1998-04-02 | 2003-05-06 | Microsoft Corporation | Thread interruption with minimal resource usage using an asynchronous procedure call |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6189093B1 (en) * | 1998-07-21 | 2001-02-13 | Lsi Logic Corporation | System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register |
US6253306B1 (en) * | 1998-07-29 | 2001-06-26 | Advanced Micro Devices, Inc. | Prefetch instruction mechanism for processor |
US6920634B1 (en) * | 1998-08-03 | 2005-07-19 | International Business Machines Corporation | Detecting and causing unsafe latent accesses to a resource in multi-threaded programs |
US6223228B1 (en) * | 1998-09-17 | 2001-04-24 | Bull Hn Information Systems Inc. | Apparatus for synchronizing multiple processors in a data processing system |
US6205414B1 (en) * | 1998-10-02 | 2001-03-20 | International Business Machines Corporation | Methodology for emulation of multi-threaded processes in a single-threaded operating system |
US6205543B1 (en) * | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
US6401155B1 (en) * | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
US7111290B1 (en) * | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
JP2000305795A (ja) * | 1999-04-20 | 2000-11-02 | Nec Corp | 並列処理装置 |
US6542991B1 (en) * | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
US6493741B1 (en) * | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6738796B1 (en) * | 1999-10-08 | 2004-05-18 | Globespanvirata, Inc. | Optimization of memory requirements for multi-threaded operating systems |
US6889319B1 (en) * | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US7649901B2 (en) * | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US6658449B1 (en) * | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
US20020016869A1 (en) * | 2000-06-22 | 2002-02-07 | Guillaume Comeau | Data path engine |
US6591379B1 (en) * | 2000-06-23 | 2003-07-08 | Microsoft Corporation | Method and system for injecting an exception to recover unsaved data |
SE522271C2 (sv) * | 2000-07-05 | 2004-01-27 | Ericsson Telefon Ab L M | Förfarande och anordning i kopplingsnod för ett telesystem |
WO2002021323A2 (en) * | 2000-09-08 | 2002-03-14 | Avaz Networks | Hardware function generator support in a dsp |
US6728846B2 (en) * | 2000-12-22 | 2004-04-27 | Bull Hn Information Systems Inc. | Method and data processing system for performing atomic multiple word writes |
US6907520B2 (en) * | 2001-01-11 | 2005-06-14 | Sun Microsystems, Inc. | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor |
US20020103847A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Efficient mechanism for inter-thread communication within a multi-threaded computer system |
JP3702813B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
JP3702815B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | プロセッサ間レジスタ継承方法及びその装置 |
JP3632635B2 (ja) * | 2001-07-18 | 2005-03-23 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US7185183B1 (en) * | 2001-08-02 | 2007-02-27 | Mips Technologies, Inc. | Atomic update of CPO state |
US7181600B1 (en) * | 2001-08-02 | 2007-02-20 | Mips Technologies, Inc. | Read-only access to CPO registers |
US7487339B2 (en) * | 2001-10-12 | 2009-02-03 | Mips Technologies, Inc. | Method and apparatus for binding shadow registers to vectored interrupts |
US6877083B2 (en) * | 2001-10-16 | 2005-04-05 | International Business Machines Corporation | Address mapping mechanism for behavioral memory enablement within a data processing system |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US6957323B2 (en) * | 2001-11-14 | 2005-10-18 | Elan Research, Inc. | Operand file using pointers and reference counters and a method of use |
US7428732B2 (en) * | 2001-12-05 | 2008-09-23 | Intel Corporation | Method and apparatus for controlling access to shared resources in an environment with multiple logical processors |
JP4054572B2 (ja) * | 2001-12-17 | 2008-02-27 | キヤノン株式会社 | アプリケーション実行システム |
US7216338B2 (en) * | 2002-02-20 | 2007-05-08 | Microsoft Corporation | Conformance execution of non-deterministic specifications for components |
US6922745B2 (en) * | 2002-05-02 | 2005-07-26 | Intel Corporation | Method and apparatus for handling locks |
US20040015684A1 (en) * | 2002-05-30 | 2004-01-22 | International Business Machines Corporation | Method, apparatus and computer program product for scheduling multiple threads for a processor |
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 |
US6971103B2 (en) * | 2002-10-15 | 2005-11-29 | Sandbridge Technologies, Inc. | Inter-thread communications using shared interrupt register |
US7073042B2 (en) * | 2002-12-12 | 2006-07-04 | Intel Corporation | Reclaiming existing fields in address translation data structures to extend control over memory accesses |
US7203823B2 (en) * | 2003-01-09 | 2007-04-10 | Sony Corporation | Partial and start-over threads in embedded real-time kernel |
US7376954B2 (en) * | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US9032404B2 (en) * | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7870553B2 (en) * | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US7849297B2 (en) * | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7836450B2 (en) * | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
DE602004017879D1 (de) * | 2003-08-28 | 2009-01-02 | Mips Tech Inc | Integrierter mechanismus zum suspendieren und endznem prozessor |
US6993598B2 (en) * | 2003-10-09 | 2006-01-31 | International Business Machines Corporation | Method and apparatus for efficient sharing of DMA resource |
US7689867B2 (en) * | 2005-06-09 | 2010-03-30 | Intel Corporation | Multiprocessor breakpoint |
US7386636B2 (en) * | 2005-08-19 | 2008-06-10 | International Business Machines Corporation | System and method for communicating command parameters between a processor and a memory flow controller |
US7657683B2 (en) * | 2008-02-01 | 2010-02-02 | Redpine Signals, Inc. | Cross-thread interrupt controller for a multi-thread processor |
-
2003
- 2003-10-10 US US10/684,348 patent/US20050050305A1/en not_active Abandoned
-
2004
- 2004-08-26 WO PCT/US2004/029272 patent/WO2005022386A2/en active Application Filing
- 2004-08-26 JP JP2006524961A patent/JP2007504541A/ja active Pending
- 2004-08-26 EP EP04783500A patent/EP1660999A2/en not_active Ceased
- 2004-08-26 CN CN201210164802.7A patent/CN102880447B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08249195A (ja) * | 1995-02-03 | 1996-09-27 | Internatl Business Mach Corp <Ibm> | 命令スレッドを処理するための方法およびシステム |
WO2003019360A2 (en) * | 2001-08-24 | 2003-03-06 | International Business Machines Corporation | System for yielding to a processor |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016173836A (ja) * | 2011-07-29 | 2016-09-29 | インテル コーポレイション | 中央処理ユニット及び画像処理ユニットの同期機構 |
Also Published As
Publication number | Publication date |
---|---|
WO2005022386A3 (en) | 2005-04-28 |
CN102880447A (zh) | 2013-01-16 |
US20050050305A1 (en) | 2005-03-03 |
CN102880447B (zh) | 2018-02-06 |
EP1660999A2 (en) | 2006-05-31 |
WO2005022386A2 (en) | 2005-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4818919B2 (ja) | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム | |
JP2007504541A (ja) | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム | |
US7376954B2 (en) | Mechanisms for assuring quality of service for programs executing on a multithreaded processor | |
US9069605B2 (en) | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention | |
US7676664B2 (en) | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts | |
US7870553B2 (en) | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts | |
US8266620B2 (en) | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts | |
WO2005022384A1 (en) | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090224 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090303 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090601 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100608 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100902 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100909 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101208 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110802 |