JP2007504539A - プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム - Google Patents
プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム Download PDFInfo
- Publication number
- JP2007504539A JP2007504539A JP2006524929A JP2006524929A JP2007504539A JP 2007504539 A JP2007504539 A JP 2007504539A JP 2006524929 A JP2006524929 A JP 2006524929A JP 2006524929 A JP2006524929 A JP 2006524929A JP 2007504539 A JP2007504539 A JP 2007504539A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- instruction
- microprocessor
- operand
- register
- 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
- 230000007246 mechanism Effects 0.000 title description 8
- 239000013598 vector Substances 0.000 claims abstract description 28
- 230000001143 conditioned effect Effects 0.000 claims abstract 4
- 238000000034 method Methods 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000005070 sampling Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 14
- 238000007726 management method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000002829 reductive effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 6
- 230000006854 communication Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 101100317152 Oryza sativa subsp. japonica VPE1 gene Proteins 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 101100001347 Mus musculus Akt1s1 gene Proteins 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000009977 dual effect 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
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 101150110971 CIN7 gene Proteins 0.000 description 1
- 101100286980 Daucus carota INV2 gene Proteins 0.000 description 1
- 101100508840 Daucus carota INV3 gene Proteins 0.000 description 1
- 101150110298 INV1 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 101100397044 Xenopus laevis invs-a gene Proteins 0.000 description 1
- 101100397045 Xenopus laevis invs-b gene Proteins 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 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
- 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
- 238000013519 translation 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/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
- 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/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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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
-
- 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
-
- 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
- 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/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Abstract
Description
本発明の実施形態における記述のための「スレッドコンテキスト」とは、プロセッサ内での命令ストリームの実行の状態を記述するのに必要なプロセッサの状態の集合である。この状態は通常、プロセッサレジスタの内容に反映される。たとえば業界標準のMIPS32 Instruction Set Architecture、および/またはMIPS64 Instruction Set Architecture(「MIPS Processor」)と互換性のあるプロセッサでは、スレッドコンテキストは、汎用レジスタ(GPR)(general purpose register)、高低乗算器結果レジスタ、プログラムカウンタ(PC)(program counter)のある表示、および何らかの関連付けられた特権を有するシステム制御状態のセットを含む。システム制御状態は、通常は「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命令によって、現在のスレッドが選択的にスケジュール解除される。第1の実施形態によるYIELD命令600のフォーマットが、図6に示されており、図32は、本発明の一実施形態におけるシステムによる、図6のYIELD命令の機能をアサートするオペレーションを示すフローチャート3200である。YIELD命令3500の第2の実施形態については、以降で図35から図40を参照して説明する。
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)レジスタは、コプロセッサゼロの(すなわち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に示されている。Schedule Vector(図示されているように、一実施形態では32ビット幅である)は、関連付けられているスレッドに関する要求されている発行帯域幅のスケジューリングを記述したものである。この実施形態では、それぞれのビットは、プロセッサまたはVPEの発行帯域幅の1/32を表し、それぞれのビットロケーションは、32スロットのスケジューリングサイクルにおける個別のスロットを表す。
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をプログラムする。
次いで図35を参照すると、本発明の代替実施形態によるYIELD命令3500のフォーマットを示すブロック図が示されている。図35のYIELD命令3500は、図示されているように、図6の命令600に類似している。しかし図35のYIELD命令3500は、2つの相違点を含む。第1に、以降で説明するように、rsフィールド3502によって指定されているレジスタに保存されている値の意味が、若干異なる。第2に、図35のYIELD命令3500はまた、第2のオペランドフィールドrd 3504を含む。図35の実施形態では、rdオペランドフィールド3504は、YIELD命令3500のビット11から15を含む。rdオペランドフィールド3504は、以降で説明するように、YIELD命令3500の完了時に、結果値を受け取るGPRなどの宛先レジスタを指定する。
Claims (63)
- 並行したプログラムスレッドを実行するように構成されているマイクロプロセッサで実行するためのyield命令であって、
スレッドの実行を一時停止するようマイクロプロセッサに指示するためのオペコードを含み、yield命令が、前記スレッド内の命令であり、
前記yield命令がさらに、
1つのオペランドを含み、前記オペランドが第1の所定の値である場合には、マイクロプロセッサが、前記スレッドの実行を終了させ、前記オペランドが第2の所定の値である場合には、マイクロプロセッサが、実行用に前記スレッドを無条件にスケジュール変更する、命令。 - 前記オペランドが、マイクロプロセッサのレジスタ内に保存されている、請求項1に記載の命令。
- 前記レジスタが、命令によって指定される複数の汎用レジスタのうちの1つである、請求項1に記載の命令。
- 前記オペランドが、スタックメモリ内に保存されている、請求項1に記載の命令。
- 実行用に前記スレッドをスケジュール変更するマイクロプロセッサが、スレッドスケジューリングポリシーに従って前記スレッドを実行に適格であると指定するマイクロプロセッサを含む、請求項1に記載の命令。
- 前記オペランドが所定の値のセット内の値である場合に、マイクロプロセッサが、実行用に前記スレッドを条件付きでスケジュール変更し、前記所定の値のセットが、前記第1および第2の所定の値を除く、請求項1に記載の命令。
- 実行用に前記スレッドを条件付きでスケジュール変更するマイクロプロセッサが、前記オペランドによって指定された条件が満たされて初めて、スレッドスケジューリングポリシーに従って前記スレッドを実行に適格であると指定するマイクロプロセッサを含む、請求項6に記載の命令。
- 前記オペランドが、複数のクォリファイヤ入力の1つまたは複数を指定し、前記複数のクォリファイヤ入力の前記1つまたは複数のうちの少なくとも1つが真である場合に、前記条件が満たされる、請求項7に記載の命令。
- 命令の結果値を受け取るための第2のオペランドをさらに含み、前記結果値が、前記命令に応答してサンプリングされた前記複数のクォリファイヤ入力の状態を指定する、請求項8に記載の命令。
- 前記結果値が、1つのビットベクトルを含む、請求項9に記載の命令。
- 前記オペランドが、マイクロプロセッサのプログラム可能なマスクレジスタ内で指定されていない、マイクロプロセッサによって受け取られた前記複数のクォリファイヤ入力のうちの1つまたは複数を指定する場合に、マイクロプロセッサが、yield命令に対して例外を立てる、請求項8に記載の命令。
- 前記所定の値のセットが、正の整数を含む、請求項6に記載の命令。
- 命令の結果値を受け取るための第2のオペランドをさらに含む、請求項1に記載の命令。
- 前記第2のオペランドが、マイクロプロセッサのレジスタ内に保存されている、請求項13に記載の命令。
- 前記レジスタが、命令によって指定される複数の汎用レジスタのうちの1つである、請求項14に記載の命令。
- 前記第2のオペランドが、スタックメモリ内に保存されている、請求項1に記載の命令。
- 前記スレッドの実行を一時停止するマイクロプロセッサが、前記スレッド内の命令をフェッチおよび発行することを停止するマイクロプロセッサを含む、請求項1に記載の命令。
- 前記スレッドの実行を終了させるマイクロプロセッサが、前記スレッド内の命令をフェッチおよび発行することを終了させるマイクロプロセッサを含む、請求項1に記載の命令。
- 前記スレッドの実行を終了させるマイクロプロセッサが、それまで前記スレッドの実行用として割り当てられていたハードウェアリソースを解放して、前記解放されたハードウェアリソースを、別のスレッドによる割り当てに利用できるようにするマイクロプロセッサを含む、請求項1に記載の命令。
- 前記ハードウェアリソースが、プログラムカウンタレジスタを含む、請求項19に記載の命令。
- 前記ハードウェアリソースが、汎用レジスタのセットを含む、請求項19に記載の命令。
- 前記第1の所定の値が、ゼロ(0)である、請求項1に記載の命令。
- 前記第2の所定の値が、マイナス1(−1)である、請求項1に記載の命令。
- 前記スレッドが、プログラム命令のシーケンスを含む、請求項1に記載の命令。
- 前記スレッドが、前記プログラム命令のシーケンスの実行に関連付けられているマイクロプロセッサの状態変化のシーケンスをさらに含む、請求項24に記載の命令。
- 命令を含むプログラムスレッドの実行を選択的にスケジュールするかまたは終了させるようマイクロプロセッサに指示する命令を実行するためのマイクロプロセッサであって、
1つのオペランドと、
前記オペランドが第1の所定の値である場合には、スレッドの実行を終了させ、また前記オペランドが第2の所定の値である場合には、実行用にスレッドをスケジュールするための、前記オペランドを受け取るために結合されているスケジューラとを含む、マイクロプロセッサ。 - 命令の前記オペランドを保存するためのレジスタをさらに含む、請求項26に記載のマイクロプロセッサ。
- 前記レジスタが、命令によって指定される汎用レジスタを含む、請求項27に記載のマイクロプロセッサ。
- 対応する複数のイベントを示すための、前記スケジューラに結合されている複数の入力をさらに含み、
前記オペランドが、前記第1および第2の所定の値を除く所定の値のセット内にある場合に、前記オペランドが、前記複数の入力の1つまたは複数を指定するビットベクトルである、請求項26に記載のマイクロプロセッサ。 - 前記オペランドが前記所定の値のセット内にある場合に、前記ビットベクトルによって指定される前記複数の入力の前記1つまたは複数のうちの少なくとも1つが真になるまで、前記スケジューラがスレッドの実行を一時停止する、請求項29に記載のマイクロプロセッサ。
- 前記複数の入力のうちの少なくとも1つが、マイクロプロセッサの外部で生成された信号を受け取る、請求項29に記載のマイクロプロセッサ。
- 前記複数の入力のうちの少なくとも1つが、マイクロプロセッサの内部で生成された信号を受け取る、請求項29に記載のマイクロプロセッサ。
- 前記複数の入力のうちの1つまたは複数を指定する値を保存するための、前記スケジューラに結合されているマスクレジスタをさらに含む、請求項29に記載のマイクロプロセッサ。
- 前記オペランドが前記所定の値のセット内にある場合に、前記オペランドが、前記マスクレジスタの値によって指定されていない前記複数の入力のうちの1つまたは複数を指定すると、マイクロプロセッサが、命令に対して例外を立てる、請求項33に記載のマイクロプロセッサ。
- 命令の結果値を保存するための、前記複数の入力および前記マスクレジスタに結合されている第2のレジスタをさらに含み、前記結果値が、前記命令に応答してサンプリングされて前記マスクレジスタの値によって条件付けられた前記複数の入力の状態を指定する、請求項33に記載のマイクロプロセッサ。
- 命令の結果値を保存するための、前記複数の入力に結合されている第2のレジスタをさらに含み、前記結果値が、前記命令に応答してサンプリングされた前記複数の入力の状態を指定する、請求項29に記載のマイクロプロセッサ。
- 前記第1の所定の値が、ゼロ(0)であり、前記第2の所定の値が、マイナス1(−1)である、請求項26に記載のマイクロプロセッサ。
- マイクロプロセッサ内でプログラムスレッドの実行を選択的に一時停止するかまたは終了させる方法であって、
プログラムスレッド内に、1つのオペランドを指定する命令を発行するステップと、
オペランドが第1の所定の値である場合に、スレッドの実行を終了させるステップと、
オペランドが第2の所定の値である場合に、スレッドの実行を無条件にスケジュール変更するステップとを含み、前記第1の所定の値と前記第2の所定の値が異なる、方法。 - マイクロプロセッサが、イベント信号をモニタするように構成され、オペランドが所定の値のセット内にある場合に、オペランドが、イベント信号の1つまたは複数を指定し、
オペランドが所定の値のセット内にある場合に、オペランドによって指定されたイベント信号の1つまたは複数のうちの少なくとも1つが真になるまで、スレッドの実行を一時停止するステップをさらに含む、請求項38に記載の方法。 - 前記発行するステップの後に、1つまたは複数のイベント信号の値をサンプリングするステップと、
サンプリングされた値を命令の結果値として保存するステップとをさらに含む、請求項39に記載の方法。 - サンプリングされた値を保存する前記ステップが、サンプリングされた値を、命令によって指定された結果レジスタ内に保存するステップを含む、請求項40に記載の方法。
- オペランドによって指定されたイベント信号の1つまたは複数のうちのすべてが、マイクロプロセッサのマスクレジスタ内でも指定されているかどうかを判定するステップと、
オペランドによって指定されたイベント信号の1つまたは複数のうちのすべてより少ないイベント信号が、マスクレジスタ内でイネーブルされていない場合に、命令に対して例外を立てるステップとをさらに含む、請求項39に記載の方法。 - オペランドによって指定されたイベント信号の1つまたは複数のうちの少なくとも1つがいったん真になると、実行用にスレッドをスケジュール変更するステップをさらに含む、請求項39に記載の方法。
- 第1の所定の値が、ゼロ(0)であり、第2の所定の値が、マイナス1(−1)であり、所定の値のセットが、正の整数を含む、請求項39に記載の方法。
- オペランドが第1の所定の値である場合に、それまでスレッドに割り当てられていたスレッドコンテキストを、新たなスレッドによるその後の使用のために解放するステップをさらに含む、請求項38に記載の方法。
- 第1の所定の値が、ゼロ(0)であり、第2の所定の値が、マイナス1(−1)である、請求項38に記載の方法。
- 複数の信号ソースと、
プログラムスレッド内の命令を実行し、命令のオペランドが第1の所定の値である場合には、前記スレッドの実行を終了させ、そうでない場合には、前記オペランドによって指定された前記複数の信号のうちの1つまたは複数の条件に基づいて実行用に前記スレッドをスケジュール変更するように構成されている、前記複数の信号ソースによって生成される複数の信号を受け取るために結合されているマイクロプロセッサとを含む、処理システム。 - 前記マイクロプロセッサが、前記オペランドが第2の所定の値である場合に、実行用に前記スレッドを無条件にスケジュール変更するように構成されている、請求項47に記載の処理システム。
- 前記マイクロプロセッサが、前記オペランドが前記第1および第2の所定の値を除く所定の値のセット内にある場合に、前記オペランドによって指定された前記複数の信号のうちの1つまたは複数の前記条件に基づいて、実行用に前記スレッドを条件付きでスケジュール変更するように構成されている、請求項48に記載の処理システム。
- 前記複数の信号ソースのうちの少なくとも1つが、入力/出力デバイスを含む、請求項47に記載の処理システム。
- 命令が、前記複数の信号の値を示すオペランドを戻す、請求項47に記載の処理システム。
- 前記複数の信号ソースを前記マイクロプロセッサへの複数の入力にマップするための、前記複数の信号ソースと前記マイクロプロセッサとの間に結合されている複数のレジスタをさらに含む、請求項47に記載の処理システム。
- 前記マイクロプロセッサが、
前記複数の信号を複数のクォリファイヤ入力にマップするための、前記複数の信号を受け取るために結合されている複数のレジスタをさらに含み、前記オペランドが、実行用に前記スレッドを条件付きでスケジュール変更するための前記条件を決定するために、前記クォリファイヤ入力上でマイクロプロセッサによって実行されるブール関数を指定する、請求項47に記載の処理システム。 - 前記マイクロプロセッサが、
前記オペランドを保存するために結合されているレジスタをさらに含む、請求項47に記載の処理システム。 - 中に含まれているオペランドスタック内に前記オペランドを保存するための、前記マイクロプロセッサに結合されているメモリをさらに含む、請求項47に記載の処理システム。
- コンピューティングデバイスと共に使用するためのコンピュータプログラム製品であって、
コンピュータで使用可能なメディアであって、マイクロプロセッサに指示する命令を実行するためのマイクロプロセッサに、命令を含むプログラムスレッドの実行を選択的にスケジュールさせるかまたは終了させるための、前記メディア内で具体化されるコンピュータ可読プログラムコードを有する、コンピュータで使用可能なメディアを含み、前記コンピュータ可読プログラムコードが、
命令のオペランドを提供するための第1のプログラムコードと、
前記オペランドが第1の所定の値である場合には、スレッドの実行を終了させ、前記オペランドが第2の所定の値である場合には、実行用にスレッドをスケジュールするための、前記オペランドを受け取るために結合されている、スケジューラを提供するための第2のプログラムコードとを含む、コンピュータプログラム製品。 - 前記コンピュータ可読プログラムコードが、
対応する複数のイベントを示すための、前記スケジューラに結合されている、複数の入力を提供するための第3のプログラムコードをさらに含み、前記オペランドが、前記第1および第2の所定の値を除く所定の値のセット内にある場合に、前記オペランドが、前記複数の入力のうちの1つまたは複数を指定するビットベクトルである、請求項56に記載のコンピュータプログラム製品。 - 前記コンピュータ可読プログラムコードが、
前記複数の入力のうちの1つまたは複数を指定する値を保存するための、前記スケジューラに結合されている、マスクレジスタを提供するための第4のプログラムコードをさらに含む、請求項57に記載のコンピュータプログラム製品。 - 前記コンピュータ可読プログラムコードが、
命令の結果値を保存するための、前記複数の入力および前記マスクレジスタに結合されている、第2のレジスタを提供するための第5のプログラムコードをさらに含み、前記結果値が、前記命令に応答してサンプリングされて前記マスクレジスタの値によって条件付けられた前記複数の入力の状態を指定する、請求項58に記載のコンピュータプログラム製品。 - 伝送メディアで具体化されるコンピュータデータ信号であって、
命令を含むプログラムスレッドの実行を選択的にスケジュールするかまたは終了させるようマイクロプロセッサに指示する命令を実行するためのマイクロプロセッサを提供するためのコンピュータ可読プログラムコードを含み、前記コンピュータ可読プログラムコードが、
命令のオペランドを保存するための、レジスタを提供するための第1のプログラムコードと、
前記オペランドが第1の所定の値である場合には、スレッドの実行を終了させ、前記オペランドが第2の所定の値である場合には、実行用にスレッドをスケジュールするための、前記レジスタに結合されている、スケジューラを提供するための第2のプログラムコードとを含む、コンピュータデータ信号。 - 前記コンピュータ可読プログラムコードが、
対応する複数のイベントを示すための、前記スケジューラに結合されている、複数の入力を提供するための第3のプログラムコードをさらに含み、前記オペランドが、前記第1および第2の所定の値を除く所定の値のセット内にある場合に、前記オペランドが、前記複数の入力のうちの1つまたは複数を指定するビットベクトルである、請求項60に記載のコンピュータデータ信号。 - 前記コンピュータ可読プログラムコードが、
前記複数の入力のうちの1つまたは複数を指定する値を保存するための、前記スケジューラに結合されている、マスクレジスタを提供するための第4のプログラムコードをさらに含む、請求項61に記載のコンピュータデータ信号。 - 前記コンピュータ可読プログラムコードが、
命令の結果値を保存するための、前記複数の入力および前記マスクレジスタに結合されている、第2のレジスタを提供するための第5のプログラムコードをさらに含み、前記結果値が、前記命令に応答してサンプリングされて前記マスクレジスタの値によって条件付けられた、前記複数の入力の状態を指定する、請求項62に記載のコンピュータデータ信号。
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US49918003P | 2003-08-28 | 2003-08-28 | |
US60/499,180 | 2003-08-28 | ||
US50235803P | 2003-09-12 | 2003-09-12 | |
US50235903P | 2003-09-12 | 2003-09-12 | |
US60/502,359 | 2003-09-12 | ||
US60/502,358 | 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 |
US10/684,350 | 2003-10-10 | ||
US10/684,348 | 2003-10-10 | ||
US10/684,350 US7376954B2 (en) | 2003-08-28 | 2003-10-10 | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
PCT/US2004/028108 WO2005022381A2 (en) | 2003-08-28 | 2004-08-27 | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007504539A true JP2007504539A (ja) | 2007-03-01 |
JP4818919B2 JP4818919B2 (ja) | 2011-11-16 |
Family
ID=34624066
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006524929A Expired - Fee Related JP4818919B2 (ja) | 2003-08-28 | 2004-08-27 | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム |
JP2006524900A Expired - Fee Related JP4740851B2 (ja) | 2003-08-28 | 2004-08-27 | 仮想プロセッサリソースの動的構成のための機構体 |
JP2006524868A Expired - Fee Related JP4818918B2 (ja) | 2003-08-28 | 2004-08-27 | マルチスレッド化されたマイクロプロセッサで並行命令ストリームを開始する命令 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006524900A Expired - Fee Related JP4740851B2 (ja) | 2003-08-28 | 2004-08-27 | 仮想プロセッサリソースの動的構成のための機構体 |
JP2006524868A Expired - Fee Related JP4818918B2 (ja) | 2003-08-28 | 2004-08-27 | マルチスレッド化されたマイクロプロセッサで並行命令ストリームを開始する命令 |
Country Status (5)
Country | Link |
---|---|
US (6) | US7424599B2 (ja) |
EP (3) | EP1660993B1 (ja) |
JP (3) | JP4818919B2 (ja) |
DE (1) | DE602004017879D1 (ja) |
WO (1) | WO2005022381A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011086298A (ja) * | 2009-10-19 | 2011-04-28 | Arm Ltd | プログラム・フロー制御 |
JP2017509081A (ja) * | 2014-03-27 | 2017-03-30 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | マルチスレッディングの動的有効化のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品 |
Families Citing this family (227)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2836407B1 (fr) * | 2002-02-28 | 2004-05-14 | Thermagen | Procede de fabrication d'emballage metallique |
US7627721B2 (en) * | 2002-10-08 | 2009-12-01 | Rmi Corporation | Advanced processor with cache coherency |
KR100591755B1 (ko) * | 2003-07-22 | 2006-06-22 | 삼성전자주식회사 | 복수의 스레드를 동시에 처리하는 장치 및 방법 |
EP1660993B1 (en) | 2003-08-28 | 2008-11-19 | MIPS Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a 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 |
US7711931B2 (en) | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
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 |
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 |
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 |
US8732644B1 (en) | 2003-09-15 | 2014-05-20 | Nvidia Corporation | Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits |
US8775997B2 (en) | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for testing and configuring semiconductor functional circuits |
US8768642B2 (en) * | 2003-09-15 | 2014-07-01 | Nvidia Corporation | System and method for remotely configuring semiconductor functional circuits |
US20050094551A1 (en) * | 2003-09-25 | 2005-05-05 | Broadcom Corporation | Processor instruction for DMT encoding |
US7751557B2 (en) * | 2003-09-26 | 2010-07-06 | Broadcom Corporation | Data de-scrambler |
US7903810B2 (en) * | 2003-09-26 | 2011-03-08 | Broadcom Corporation | Single instruction for data scrambling |
US7756273B2 (en) * | 2003-09-26 | 2010-07-13 | Broadcom Corporation | System and method for bit-reversing and scrambling payload bytes in an asynchronous transfer mode cell |
US6897871B1 (en) | 2003-11-20 | 2005-05-24 | Ati Technologies Inc. | Graphics processing architecture employing a unified shader |
US8711161B1 (en) | 2003-12-18 | 2014-04-29 | Nvidia Corporation | Functional component compensation reconfiguration system and method |
US7770169B2 (en) * | 2004-05-17 | 2010-08-03 | Oracle America, Inc. | Thread rendezvous for read-only code in an object-oriented computing environment |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7320063B1 (en) | 2005-02-04 | 2008-01-15 | Sun Microsystems, Inc. | Synchronization primitives for flexible scheduling of functional unit operations |
US8723231B1 (en) | 2004-09-15 | 2014-05-13 | Nvidia Corporation | Semiconductor die micro electro-mechanical switch management system and method |
US8711156B1 (en) * | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
US7203100B2 (en) | 2004-11-01 | 2007-04-10 | Sun Mircosystems, Inc. | Efficient implementation of a read scheme for multi-threaded register file |
US7707578B1 (en) | 2004-12-16 | 2010-04-27 | Vmware, Inc. | Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system |
US20060136919A1 (en) * | 2004-12-17 | 2006-06-22 | Sun Microsystems, Inc. | System and method for controlling thread suspension in a multithreaded processor |
CN100520714C (zh) * | 2005-01-25 | 2009-07-29 | Nxp股份有限公司 | 多线程处理器 |
US7483422B2 (en) * | 2005-02-10 | 2009-01-27 | International Business Machines Corporation | Data processing system, method and interconnect fabric for selective link information allocation in a data processing system |
US8254411B2 (en) * | 2005-02-10 | 2012-08-28 | International Business Machines Corporation | Data processing system, method and interconnect fabric having a flow governor |
US7743233B2 (en) * | 2005-04-05 | 2010-06-22 | Intel Corporation | Sequencer address management |
US7389403B1 (en) * | 2005-08-10 | 2008-06-17 | Sun Microsystems, Inc. | Adaptive computing ensemble microprocessor architecture |
US7721151B2 (en) * | 2005-08-30 | 2010-05-18 | Cisco Technology, Inc. | Selective error recovery of processing complex using privilege-level error discrimination |
US7844971B2 (en) * | 2005-09-28 | 2010-11-30 | Intel Corporation | Method and apparatus for detecting cross-thread stack access in multithreaded programs |
US8185895B2 (en) * | 2005-11-30 | 2012-05-22 | International Business Machines Corporation | Method, apparatus and program storage device for providing an anchor pointer in an operating system context structure for improving the efficiency of accessing thread specific data |
KR100663709B1 (ko) * | 2005-12-28 | 2007-01-03 | 삼성전자주식회사 | 재구성 아키텍처에서의 예외 처리 방법 및 장치 |
US8108863B2 (en) | 2005-12-30 | 2012-01-31 | Intel Corporation | Load balancing for multi-threaded applications via asymmetric power throttling |
US20070226795A1 (en) * | 2006-02-09 | 2007-09-27 | Texas Instruments Incorporated | Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture |
KR100714710B1 (ko) * | 2006-02-22 | 2007-05-04 | 삼성전자주식회사 | 입출력 작업에 의해 블로킹된 스레드를 강제 종료하는 장치및 방법 |
KR100770034B1 (ko) * | 2006-03-02 | 2007-10-26 | 삼성전자주식회사 | 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 |
GB0605383D0 (en) * | 2006-03-17 | 2006-04-26 | Williams Paul N | Processing system |
US7802073B1 (en) * | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
WO2007115429A1 (en) * | 2006-03-31 | 2007-10-18 | Intel Corporation | Managing and supporting multithreaded resources for native code in a heterogeneous managed runtime environment |
EP2011018B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US7792895B1 (en) * | 2006-06-16 | 2010-09-07 | Nvidia Corporation | Efficient matrix multiplication on a parallel processing device |
US7912889B1 (en) * | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
US8046775B2 (en) * | 2006-08-14 | 2011-10-25 | Marvell World Trade Ltd. | Event-based bandwidth allocation mode switching method and apparatus |
US7657708B2 (en) * | 2006-08-18 | 2010-02-02 | Mips Technologies, Inc. | Methods for reducing data cache access power in a processor using way selection bits |
US7650465B2 (en) * | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
US9665970B2 (en) * | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US7493436B2 (en) * | 2006-10-26 | 2009-02-17 | International Business Machines Corporation | Interrupt handling using simultaneous multi-threading |
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 |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US7975272B2 (en) * | 2006-12-30 | 2011-07-05 | Intel Corporation | Thread queuing method and apparatus |
US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
JP5595633B2 (ja) * | 2007-02-26 | 2014-09-24 | スパンション エルエルシー | シミュレーション方法及びシミュレーション装置 |
US8219789B2 (en) * | 2007-03-14 | 2012-07-10 | XMOS Ltd. | Interface processor |
US9367321B2 (en) * | 2007-03-14 | 2016-06-14 | Xmos Limited | Processor instruction set for controlling an event source to generate events used to schedule threads |
US8095782B1 (en) * | 2007-04-05 | 2012-01-10 | Nvidia Corporation | Multiple simultaneous context architecture for rebalancing contexts on multithreaded processing cores upon a context change |
US7979683B1 (en) * | 2007-04-05 | 2011-07-12 | Nvidia Corporation | Multiple simultaneous context architecture |
US8521993B2 (en) * | 2007-04-09 | 2013-08-27 | Intel Corporation | Providing thread fairness by biasing selection away from a stalling thread using a stall-cycle counter in a hyper-threaded microprocessor |
US8261049B1 (en) | 2007-04-10 | 2012-09-04 | Marvell International Ltd. | Determinative branch prediction indexing |
US7681020B2 (en) * | 2007-04-18 | 2010-03-16 | International Business Machines Corporation | Context switching and synchronization |
WO2008132761A2 (en) * | 2007-04-26 | 2008-11-06 | Hewlett-Packard Development Company L.P. | Method and system for managing heap across process replication |
US8219788B1 (en) | 2007-07-23 | 2012-07-10 | Oracle America, Inc. | Virtual core management |
US8132170B2 (en) * | 2007-08-07 | 2012-03-06 | International Business Machines Corporation | Call stack sampling in a data processing system |
JP5043560B2 (ja) * | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
US20090063881A1 (en) * | 2007-08-31 | 2009-03-05 | Mips Technologies, Inc. | Low-overhead/power-saving processor synchronization mechanism, and applications thereof |
US8782779B2 (en) * | 2007-09-26 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | System and method for achieving protected region within computer system |
US20090089031A1 (en) * | 2007-09-28 | 2009-04-02 | Rockwell Automation Technologies, Inc. | Integrated simulation of controllers and devices |
US20090089029A1 (en) * | 2007-09-28 | 2009-04-02 | Rockwell Automation Technologies, Inc. | Enhanced execution speed to improve simulation performance |
US7801710B2 (en) * | 2007-09-28 | 2010-09-21 | Rockwell Automation Technologies, Inc. | Simulation controls for model variability and randomness |
US8069021B2 (en) * | 2007-09-28 | 2011-11-29 | Rockwell Automation Technologies, Inc. | Distributed simulation and synchronization |
US8548777B2 (en) * | 2007-09-28 | 2013-10-01 | Rockwell Automation Technologies, Inc. | Automated recommendations from simulation |
US20090089234A1 (en) * | 2007-09-28 | 2009-04-02 | Rockwell Automation Technologies, Inc. | Automated code generation for simulators |
US20090100249A1 (en) * | 2007-10-10 | 2009-04-16 | Eichenberger Alexandre E | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core |
US8724483B2 (en) | 2007-10-22 | 2014-05-13 | Nvidia Corporation | Loopback configuration for bi-directional interfaces |
US8321840B2 (en) * | 2007-12-27 | 2012-11-27 | Intel Corporation | Software flow tracking using multiple threads |
US20090210873A1 (en) * | 2008-02-15 | 2009-08-20 | International Business Machines Corporation | Re-tasking a managed virtual machine image in a virtualization data processing system |
JP5278336B2 (ja) * | 2008-02-15 | 2013-09-04 | 日本電気株式会社 | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム |
JP4996519B2 (ja) * | 2008-03-27 | 2012-08-08 | パナソニック株式会社 | 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法 |
WO2009118731A2 (en) | 2008-03-27 | 2009-10-01 | Rocketick Technologies Ltd | Design simulation using parallel processors |
US8566830B2 (en) * | 2008-05-16 | 2013-10-22 | Microsoft Corporation | Local collections of tasks in a scheduler |
US8561072B2 (en) * | 2008-05-16 | 2013-10-15 | Microsoft Corporation | Scheduling collections in a scheduler |
JP5379122B2 (ja) * | 2008-06-19 | 2013-12-25 | パナソニック株式会社 | マルチプロセッサ |
US9032377B2 (en) * | 2008-07-10 | 2015-05-12 | Rocketick Technologies Ltd. | Efficient parallel computation of dependency problems |
US20100011357A1 (en) * | 2008-07-13 | 2010-01-14 | International Business Machines Corporation | System and method for garbage collection in a virtual machine |
US20100017583A1 (en) * | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US8024732B2 (en) * | 2008-07-28 | 2011-09-20 | Microsoft Corporation | State separation for application changes |
US7827321B2 (en) | 2008-10-02 | 2010-11-02 | International Business Machines Corporation | Central processing unit measurement facility |
US9449314B2 (en) * | 2008-10-02 | 2016-09-20 | International Business Machines Corporation | Virtualization of a central processing unit measurement facility |
US8209559B2 (en) * | 2008-12-24 | 2012-06-26 | Intel Corporation | Low power polling techniques |
WO2010095182A1 (ja) * | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | マルチスレッドプロセッサ及びデジタルテレビシステム |
JP2010204874A (ja) * | 2009-03-03 | 2010-09-16 | Nec Corp | スレッド制御システム、方法及びプログラム |
US8561040B2 (en) * | 2009-03-10 | 2013-10-15 | Oracle America, Inc. | One-pass compilation of virtual instructions |
US9250973B2 (en) * | 2009-03-12 | 2016-02-02 | Polycore Software, Inc. | Apparatus and associated methodology of generating a multi-core communications topology |
US8910171B2 (en) * | 2009-04-27 | 2014-12-09 | Lsi Corporation | Thread synchronization in a multi-thread network communications processor architecture |
US9444757B2 (en) | 2009-04-27 | 2016-09-13 | Intel Corporation | Dynamic configuration of processing modules in a network communications processor architecture |
US9461930B2 (en) | 2009-04-27 | 2016-10-04 | Intel Corporation | Modifying data streams without reordering in a multi-thread, multi-flow network processor |
US20100333071A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines |
US8593472B1 (en) * | 2009-07-31 | 2013-11-26 | Nvidia Corporation | System and method for accessing a frame buffer via a storage driver |
US10169072B2 (en) * | 2009-09-23 | 2019-01-01 | Nvidia Corporation | Hardware for parallel command list generation |
US20110173420A1 (en) * | 2010-01-08 | 2011-07-14 | International Business Machines Corporation | Processor resume unit |
US8447960B2 (en) * | 2010-01-08 | 2013-05-21 | International Business Machines Corporation | Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition |
KR101644800B1 (ko) * | 2010-01-07 | 2016-08-02 | 삼성전자주식회사 | 컴퓨팅 시스템 및 방법 |
US9331869B2 (en) | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US9176783B2 (en) | 2010-05-24 | 2015-11-03 | International Business Machines Corporation | Idle transitions sampling with execution context |
US8516492B2 (en) * | 2010-06-11 | 2013-08-20 | International Business Machines Corporation | Soft partitions and load balancing |
JP5548037B2 (ja) * | 2010-06-11 | 2014-07-16 | パナソニック株式会社 | 命令発行制御装置及び方法 |
US8843684B2 (en) | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8667253B2 (en) | 2010-08-04 | 2014-03-04 | International Business Machines Corporation | Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register |
JP5488697B2 (ja) | 2010-08-30 | 2014-05-14 | 富士通株式会社 | マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム |
WO2012037491A2 (en) | 2010-09-17 | 2012-03-22 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US8793474B2 (en) | 2010-09-20 | 2014-07-29 | International Business Machines Corporation | Obtaining and releasing hardware threads without hypervisor involvement |
US8713290B2 (en) | 2010-09-20 | 2014-04-29 | International Business Machines Corporation | Scaleable status tracking of multiple assist hardware threads |
US8572628B2 (en) | 2010-12-02 | 2013-10-29 | International Business Machines Corporation | Inter-thread data communications in a computer processor |
US8561070B2 (en) | 2010-12-02 | 2013-10-15 | International Business Machines Corporation | Creating a thread of execution in a computer processor without operating system intervention |
WO2012093488A1 (ja) * | 2011-01-07 | 2012-07-12 | 富士通株式会社 | スケジューリング方法、およびマルチコアプロセッサシステム |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
TWI533129B (zh) | 2011-03-25 | 2016-05-11 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊 |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9128748B2 (en) | 2011-04-12 | 2015-09-08 | Rocketick Technologies Ltd. | Parallel simulation using multiple co-simulators |
US9158592B2 (en) * | 2011-05-02 | 2015-10-13 | Green Hills Software, Inc. | System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor |
TWI666551B (zh) | 2011-05-20 | 2019-07-21 | 美商英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
EP2710480B1 (en) | 2011-05-20 | 2018-06-20 | Intel Corporation | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
US9026630B2 (en) * | 2011-06-14 | 2015-05-05 | Vmware, Inc. | Managing resources in a distributed system using dynamic clusters |
US8856784B2 (en) | 2011-06-14 | 2014-10-07 | Vmware, Inc. | Decentralized management of virtualized hosts |
US8701107B2 (en) | 2011-06-14 | 2014-04-15 | Vmware, Inc. | Decentralized management of virtualized hosts |
WO2012174334A1 (en) * | 2011-06-16 | 2012-12-20 | Caustic Graphics, Inc. | Graphics processor with non-blocking concurrent architecture |
CN102831053B (zh) * | 2011-06-17 | 2015-05-13 | 阿里巴巴集团控股有限公司 | 一种测试执行的调度方法及装置 |
US8695010B2 (en) | 2011-10-03 | 2014-04-08 | International Business Machines Corporation | Privilege level aware processor hardware resource management facility |
CN102495726B (zh) * | 2011-11-15 | 2015-05-20 | 无锡德思普科技有限公司 | 机会多线程方法及处理器 |
IN2014CN03678A (ja) | 2011-11-22 | 2015-09-25 | Soft Machines Inc | |
CN104040491B (zh) | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
FR2984554B1 (fr) * | 2011-12-16 | 2016-08-12 | Sagemcom Broadband Sas | Bus logiciel |
WO2013100959A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Processor accelerator interface virtualization |
WO2013113366A1 (de) * | 2012-01-31 | 2013-08-08 | Siemens Aktiengesellschaft | Verfahren zum betreiben eines prozessors |
JP5894496B2 (ja) * | 2012-05-01 | 2016-03-30 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US9003218B2 (en) | 2012-05-21 | 2015-04-07 | International Business Machines Corporation | Power shifting in multicore platforms by varying SMT levels |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9298631B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Managing transactional and non-transactional store observability |
US9223687B2 (en) | 2012-06-15 | 2015-12-29 | International Business Machines Corporation | Determining the logical address of a transaction abort |
US9298469B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Management of multiple nested transactions |
US9262320B2 (en) | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US10534421B2 (en) | 2013-06-13 | 2020-01-14 | Microsoft Technology Licensing, Llc | Virtual per-processor timers for multiprocessor systems |
US9367325B2 (en) * | 2013-06-29 | 2016-06-14 | Intel Corporation | Common architecture state presentation for processor having processing cores of different types |
US9251071B2 (en) | 2013-08-30 | 2016-02-02 | Apple Inc. | Concurrent inline cache optimization in accessing dynamically typed objects |
US9477628B2 (en) * | 2013-09-28 | 2016-10-25 | Intel Corporation | Collective communications apparatus and method for parallel systems |
GB2526018B (en) * | 2013-10-31 | 2018-11-14 | Silicon Tailor Ltd | Multistage switch |
US9830206B2 (en) * | 2013-12-18 | 2017-11-28 | Cray Inc. | Cross-thread exception handling |
US9558000B2 (en) * | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
US9766894B2 (en) | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Method and apparatus for enabling a processor to generate pipeline control signals |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9213569B2 (en) | 2014-03-27 | 2015-12-15 | International Business Machines Corporation | Exiting multiple threads in a computer |
US9223574B2 (en) | 2014-03-27 | 2015-12-29 | International Business Machines Corporation | Start virtual execution instruction for dispatching multiple threads in a computer |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9772867B2 (en) | 2014-03-27 | 2017-09-26 | International Business Machines Corporation | Control area for managing multiple threads in a computer |
US9804846B2 (en) * | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9195493B2 (en) * | 2014-03-27 | 2015-11-24 | International Business Machines Corporation | Dispatching multiple threads in a computer |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
GB201406392D0 (en) * | 2014-04-09 | 2014-05-21 | Advanced Risc Mach Ltd | Data processing systems |
US9652262B2 (en) * | 2014-10-09 | 2017-05-16 | The Regents Of The University Of Michigan | Operation parameter control based upon queued instruction characteristics |
US9733987B2 (en) * | 2015-02-20 | 2017-08-15 | Intel Corporation | Techniques to dynamically allocate resources of configurable computing resources |
US9747108B2 (en) | 2015-03-27 | 2017-08-29 | Intel Corporation | User-level fork and join processors, methods, systems, and instructions |
US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
RU2609744C1 (ru) * | 2015-10-05 | 2017-02-02 | Олег Александрович Козелков | Логический процессор |
US20170139740A1 (en) * | 2015-11-12 | 2017-05-18 | Futurewei Technologies, Inc. | Systems and Methods for Real Time Context Based Isolation and Virtualization |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US10592252B2 (en) | 2015-12-31 | 2020-03-17 | Microsoft Technology Licensing, Llc | Efficient instruction processing for sparse data |
US10459727B2 (en) | 2015-12-31 | 2019-10-29 | Microsoft Technology Licensing, Llc | Loop code processor optimizations |
US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
US10318356B2 (en) * | 2016-03-31 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread |
US10318302B2 (en) * | 2016-06-03 | 2019-06-11 | Synopsys, Inc. | Thread switching in microprocessor without full save and restore of register file |
US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US10558463B2 (en) | 2016-06-03 | 2020-02-11 | Synopsys, Inc. | Communication between threads of multi-thread processor |
US10249017B2 (en) * | 2016-08-11 | 2019-04-02 | Intel Corporation | Apparatus and method for shared resource partitioning through credit management |
US10613859B2 (en) | 2016-08-18 | 2020-04-07 | Synopsys, Inc. | Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions |
US10552158B2 (en) | 2016-08-18 | 2020-02-04 | Synopsys, Inc. | Reorder buffer scoreboard having multiple valid bits to indicate a location of data |
US10678599B2 (en) * | 2016-09-13 | 2020-06-09 | Rockley Photonics Limited | Hardware efficient system and method for load balancing using a random number |
US10552212B2 (en) * | 2016-11-28 | 2020-02-04 | Arm Limited | Data processing |
US10579499B2 (en) * | 2017-04-04 | 2020-03-03 | International Business Machines Corporation | Task latency debugging in symmetric multiprocessing computer systems |
US10565126B2 (en) | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
US10489304B2 (en) | 2017-07-14 | 2019-11-26 | Arm Limited | Memory address translation |
US10353826B2 (en) * | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
US10467159B2 (en) | 2017-07-14 | 2019-11-05 | Arm Limited | Memory node controller |
US10592424B2 (en) | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
US10613989B2 (en) | 2017-07-14 | 2020-04-07 | Arm Limited | Fast address translation for virtual machines |
US10534719B2 (en) | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
GB2565338B (en) * | 2017-08-10 | 2020-06-03 | Mips Tech Llc | Fault detecting and fault tolerant multi-threaded processors |
US10846089B2 (en) | 2017-08-31 | 2020-11-24 | MIPS Tech, LLC | Unified logic for aliased processor instructions |
WO2019183831A1 (en) * | 2018-03-28 | 2019-10-03 | Intel Corporation | Address space identifier management in complex input/output virtualization environments |
US10884850B2 (en) | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
US10740104B2 (en) * | 2018-08-16 | 2020-08-11 | International Business Machines Corporation | Tagging target branch predictors with context with index modification and late stop fetch on tag mismatch |
CN110955503B (zh) * | 2018-09-27 | 2023-06-27 | 深圳市创客工场科技有限公司 | 任务调度方法及装置 |
GB2580327B (en) * | 2018-12-31 | 2021-04-28 | Graphcore Ltd | Register files in a multi-threaded processor |
US11080062B2 (en) | 2019-01-12 | 2021-08-03 | MIPS Tech, LLC | Address manipulation using indices and tags |
GB2581821B (en) | 2019-02-28 | 2021-06-30 | Advanced Risc Mach Ltd | Conditional yield to hypervisor instruction |
US11474861B1 (en) * | 2019-11-27 | 2022-10-18 | Meta Platforms Technologies, Llc | Methods and systems for managing asynchronous function calls |
US11294709B2 (en) | 2020-02-18 | 2022-04-05 | Nxp Usa, Inc. | System and method of obtaining multiple factor performance gain in processing system |
GB202012418D0 (en) * | 2020-08-10 | 2020-09-23 | Nordic Semiconductor Asa | Processing apparatus |
US11586443B2 (en) * | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Thread-based processor halting |
US20230058935A1 (en) * | 2021-08-18 | 2023-02-23 | Micron Technology, Inc. | Managing return parameter allocation |
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 (146)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US578142A (en) * | 1897-03-02 | Jacob fierz | ||
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 | 入出力割込処理方式 |
DE3688506T2 (de) | 1986-08-13 | 1993-09-09 | Toshiba Machine Co Ltd | Datenverarbeitungsanlage. |
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 |
US5159686A (en) * | 1988-02-29 | 1992-10-27 | Convex Computer Corporation | Multi-processor computer system having process-independent communication register addressing |
US5428754A (en) * | 1988-03-23 | 1995-06-27 | 3Dlabs Ltd | Computer system with clock shared between processors executing separate instruction streams |
WO1990014629A2 (en) | 1989-05-26 | 1990-11-29 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
US5253308A (en) * | 1989-06-21 | 1993-10-12 | Amber Engineering, Inc. | Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing |
US5148538A (en) * | 1989-10-20 | 1992-09-15 | International Business Machines Corporation | Translation look ahead based cache access |
US5247694A (en) * | 1990-06-14 | 1993-09-21 | Thinking Machines Corporation | System and method for generating communications arrangements for routing data in a massively parallel 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 |
US5301298A (en) * | 1991-10-11 | 1994-04-05 | Intel Corporation | Processor for multiple cache coherent protocols |
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 |
US5784589A (en) * | 1993-10-18 | 1998-07-21 | Cyrix Corporation | Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline |
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 |
SE9404294D0 (sv) * | 1994-12-09 | 1994-12-09 | Ellemtel Utvecklings Ab | sätt och anordning vid telekommunikation |
JP3169779B2 (ja) | 1994-12-19 | 2001-05-28 | 日本電気株式会社 | マルチスレッドプロセッサ |
US6128720A (en) | 1994-12-29 | 2000-10-03 | International Business Machines Corporation | Distributed processing array with component processors performing customized interpretation of instructions |
US5812811A (en) | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
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 |
US5835748A (en) | 1995-12-19 | 1998-11-10 | Intel Corporation | Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file |
US5706514A (en) | 1996-03-04 | 1998-01-06 | Compaq Computer Corporation | Distributed execution of mode mismatched commands in multiprocessor computer systems |
US5892934A (en) * | 1996-04-02 | 1999-04-06 | Advanced Micro Devices, Inc. | Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine |
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 |
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
US5812830A (en) * | 1996-11-14 | 1998-09-22 | Hewlett-Packard Company | Debug system with raw mode trigger capability |
US5854922A (en) * | 1997-01-16 | 1998-12-29 | Ford Motor Company | Micro-sequencer apparatus and method of combination state machine and instruction memory |
US5949994A (en) * | 1997-02-12 | 1999-09-07 | The Dow Chemical Company | Dedicated context-cycling computer with timed context |
US6314511B2 (en) * | 1997-04-03 | 2001-11-06 | University Of Washington | Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers |
US6067608A (en) * | 1997-04-15 | 2000-05-23 | Bull Hn Information Systems Inc. | High performance mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis |
US6175916B1 (en) * | 1997-05-06 | 2001-01-16 | Microsoft Corporation | Common-thread inter-process function calls invoked by jumps to invalid addresses |
US5870597A (en) * | 1997-06-25 | 1999-02-09 | Sun Microsystems, Inc. | Method for speculative calculation of physical register addresses in an out of order processor |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US6128641A (en) * | 1997-09-12 | 2000-10-03 | Siemens Aktiengesellschaft | Data processing unit with hardware assisted context switching capability |
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 |
US5923892A (en) * | 1997-10-27 | 1999-07-13 | Levy; Paul S. | Host processor and coprocessor arrangement for processing platform-independent code |
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 |
US6647508B2 (en) | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
US6014737A (en) * | 1997-11-19 | 2000-01-11 | Sony Corporation Of Japan | Method and system for allowing a processor to perform read bypassing while automatically maintaining input/output data integrity |
US6189083B1 (en) * | 1998-02-26 | 2001-02-13 | Compaq Computer Corporation | Method and apparatus for accessing a cache memory utilization distingushing bit RAMs |
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 |
US6092175A (en) * | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
JP3611964B2 (ja) * | 1998-04-16 | 2005-01-19 | 富士通株式会社 | 記憶装置、記憶制御方法及び記憶媒体 |
JP3209205B2 (ja) * | 1998-04-28 | 2001-09-17 | 日本電気株式会社 | プロセッサにおけるレジスタ内容の継承装置 |
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 |
US6380945B1 (en) * | 1998-11-09 | 2002-04-30 | Broadcom Corporation | Graphics display system with color look-up table loading mechanism |
US6952827B1 (en) | 1998-11-13 | 2005-10-04 | Cray Inc. | User program and operating system interface in a multithreaded environment |
US6286027B1 (en) | 1998-11-30 | 2001-09-04 | Lucent Technologies Inc. | Two step thread creation with register renaming |
US6205543B1 (en) | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
US7020879B1 (en) | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
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 |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US6330656B1 (en) | 1999-03-31 | 2001-12-11 | International Business Machines Corporation | PCI slot control apparatus with dynamic configuration for partitioned systems |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
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 |
US6986137B1 (en) | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
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 |
US6671795B1 (en) | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
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 |
US20010052053A1 (en) | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
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 |
US6957432B2 (en) | 2000-03-21 | 2005-10-18 | Microsoft Corporation | Real-time scheduler |
US20010034751A1 (en) | 2000-04-21 | 2001-10-25 | Shinichiro Eto | Real-time OS simulator |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
US6480845B1 (en) | 2000-06-14 | 2002-11-12 | Bull Hn Information Systems Inc. | Method and data processing system for emulating virtual memory working spaces |
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 |
US6941353B1 (en) | 2000-06-29 | 2005-09-06 | Auran Holdings Pty Ltd | E-commerce system and method relating to program objects |
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 |
US6643759B2 (en) * | 2001-03-30 | 2003-11-04 | Mips Technologies, Inc. | Mechanism to extend computer memory protection schemes |
US6671791B1 (en) * | 2001-06-15 | 2003-12-30 | Advanced Micro Devices, Inc. | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms |
JP3702814B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
JP3702815B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | プロセッサ間レジスタ継承方法及びその装置 |
JP3702813B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
JP3630118B2 (ja) * | 2001-07-12 | 2005-03-16 | 日本電気株式会社 | スレッド終了方法及び装置並びに並列プロセッサシステム |
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 |
US6779065B2 (en) * | 2001-08-31 | 2004-08-17 | Intel Corporation | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads |
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 |
JP2003167748A (ja) * | 2001-11-30 | 2003-06-13 | Fujitsu Ltd | マルチスレッド計算機 |
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 | キヤノン株式会社 | アプリケーション実行システム |
US20030126416A1 (en) | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US7127561B2 (en) | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US6925550B2 (en) | 2002-01-02 | 2005-08-02 | Intel Corporation | Speculative scheduling of instructions with source operand validity bit and rescheduling upon carried over destination operand invalid bit detection |
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 |
US20030225816A1 (en) * | 2002-06-03 | 2003-12-04 | Morrow Michael W. | Architecture to support multiple concurrent threads of execution on an arm-compatible 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 |
US7152170B2 (en) * | 2003-02-20 | 2006-12-19 | Samsung Electronics Co., Ltd. | Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating |
US6977093B2 (en) * | 2003-03-24 | 2005-12-20 | Hung Chien-Lung | Health food processing process using germinated rice to make health food containing natural eatable fibers, GABA, IP6, and probiotic |
DE60323811D1 (de) | 2003-04-09 | 2008-11-13 | Jaluna S A | Betriebssysteme |
US7093106B2 (en) * | 2003-04-23 | 2006-08-15 | International Business Machines Corporation | Register rename array with individual thread bits set upon allocation and cleared upon instruction completion |
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 |
WO2005022385A1 (en) | 2003-08-28 | 2005-03-10 | Mips Technologies, Inc. | Mechanisms for dynamic configuration of virtual processor resources |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US7418585B2 (en) | 2003-08-28 | 2008-08-26 | 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 |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
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 |
EP1660993B1 (en) * | 2003-08-28 | 2008-11-19 | MIPS Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US7849297B2 (en) | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | 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 |
US6993598B2 (en) * | 2003-10-09 | 2006-01-31 | International Business Machines Corporation | Method and apparatus for efficient sharing of DMA resource |
US7558939B2 (en) * | 2005-03-08 | 2009-07-07 | Mips Technologies, Inc. | Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor |
US7627770B2 (en) | 2005-04-14 | 2009-12-01 | Mips Technologies, Inc. | Apparatus and method for automatic low power mode invocation in a multi-threaded processor |
US7600135B2 (en) | 2005-04-14 | 2009-10-06 | Mips Technologies, Inc. | Apparatus and method for software specified power management performance using low power virtual threads |
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 |
-
2004
- 2004-08-27 EP EP04786607A patent/EP1660993B1/en active Active
- 2004-08-27 EP EP04782455A patent/EP1660998A1/en not_active Ceased
- 2004-08-27 US US10/929,097 patent/US7424599B2/en active Active
- 2004-08-27 US US10/929,342 patent/US7321965B2/en active Active
- 2004-08-27 EP EP04782325.7A patent/EP1658563B1/en active Active
- 2004-08-27 US US10/928,746 patent/US7610473B2/en active Active
- 2004-08-27 WO PCT/US2004/028108 patent/WO2005022381A2/en active Application Filing
- 2004-08-27 JP JP2006524929A patent/JP4818919B2/ja not_active Expired - Fee Related
- 2004-08-27 JP JP2006524900A patent/JP4740851B2/ja not_active Expired - Fee Related
- 2004-08-27 JP JP2006524868A patent/JP4818918B2/ja not_active Expired - Fee Related
- 2004-08-27 DE DE602004017879T patent/DE602004017879D1/de active Active
- 2004-08-27 US US10/929,102 patent/US7694304B2/en active Active
-
2007
- 2007-12-03 US US11/949,603 patent/US7676660B2/en not_active Expired - Lifetime
-
2009
- 2009-10-23 US US12/605,201 patent/US8145884B2/en not_active Expired - Lifetime
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 (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011086298A (ja) * | 2009-10-19 | 2011-04-28 | Arm Ltd | プログラム・フロー制御 |
JP2017509081A (ja) * | 2014-03-27 | 2017-03-30 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | マルチスレッディングの動的有効化のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品 |
Also Published As
Publication number | Publication date |
---|---|
WO2005022381A2 (en) | 2005-03-10 |
US7321965B2 (en) | 2008-01-22 |
US8145884B2 (en) | 2012-03-27 |
EP1660993A2 (en) | 2006-05-31 |
US20100115243A1 (en) | 2010-05-06 |
US20050120194A1 (en) | 2005-06-02 |
JP2007504535A (ja) | 2007-03-01 |
US7694304B2 (en) | 2010-04-06 |
EP1658563A1 (en) | 2006-05-24 |
US20050240936A1 (en) | 2005-10-27 |
US20050125795A1 (en) | 2005-06-09 |
EP1660998A1 (en) | 2006-05-31 |
WO2005022381A3 (en) | 2005-06-16 |
JP4740851B2 (ja) | 2011-08-03 |
DE602004017879D1 (de) | 2009-01-02 |
JP2007504536A (ja) | 2007-03-01 |
EP1658563B1 (en) | 2013-06-05 |
US20080140998A1 (en) | 2008-06-12 |
JP4818918B2 (ja) | 2011-11-16 |
US7424599B2 (en) | 2008-09-09 |
US20050125629A1 (en) | 2005-06-09 |
EP1660993B1 (en) | 2008-11-19 |
JP4818919B2 (ja) | 2011-11-16 |
US7676660B2 (en) | 2010-03-09 |
US7610473B2 (en) | 2009-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4818919B2 (ja) | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム | |
US7376954B2 (en) | Mechanisms for assuring quality of service for programs executing on a multithreaded processor | |
JP2007504541A (ja) | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム | |
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 | |
US9032404B2 (en) | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor | |
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 | |
US7849297B2 (en) | Software emulation of directed exceptions in a multithreading processor | |
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: 20090602 |
|
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 |
|
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: 20110802 |
|
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: 20110831 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140909 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4818919 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
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 |