JP2002533807A - 割込み/ソフトウエア制御スレッド処理 - Google Patents

割込み/ソフトウエア制御スレッド処理

Info

Publication number
JP2002533807A
JP2002533807A JP2000590052A JP2000590052A JP2002533807A JP 2002533807 A JP2002533807 A JP 2002533807A JP 2000590052 A JP2000590052 A JP 2000590052A JP 2000590052 A JP2000590052 A JP 2000590052A JP 2002533807 A JP2002533807 A JP 2002533807A
Authority
JP
Japan
Prior art keywords
thread
context
memory location
instruction
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000590052A
Other languages
English (en)
Inventor
ウィンスロップ、エル.サビル
ケビン、ロス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/218,551 external-priority patent/US6275749B1/en
Application filed by Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2002533807A publication Critical patent/JP2002533807A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows

Abstract

(57)【要約】 【解決手段】 メモリとコンテキスト・レジスタ・セットとの間で完全なスレッド・コンテキストを転送することによって迅速なスレッド処理が行われる。各スレッド・コンテキストは、指定された割込みまたは命令に応答してそれぞれのメモリ位置から読出される。

Description

【発明の詳細な説明】
【0001】 発明の背景 1.発明の分野 本発明はスレッド指向処理(thread-oriented processing)に関するものであ
り、更に詳しくいえば、コンテキストの使用による多重スレッド処理(multilpe
-thread)に関するものである。
【0002】 2.関連技術についての説明 多重スレッド処理においては、プロセッサは複数の異なる処理(一般に「スレ
ッド」と呼ばれている)を逐次実行できる。所定の時間期間の経過後または特定
の命令の受け取り時などの、特定の事象の発生時に、プロセッサは1つのスレッ
ドの実行を保留し、保留するスレッドの状態を記述しているコンテキストを保存
し、別のスレッドの実行を開始する。そのスレッドもそれぞれのコンテキストに
より記述されている。各「コンテキスト」は、プロセッサが新しいスレッドの実
行を開始するため、または保留されているスレッドの動作を継続するために必要
な情報を含んでいる。通常はこの情報はメモリ・アドレスと、ステータス情報と
、データとを含んでいる。
【0003】 保存されているスレッド・コンテキストの迅速なアクセスを直接行うために、
いくつかのプロセッサはローカル・コンテキスト・レジスタの多数のバンクを含
んでいる。しかし、これは硬直した構成であって、実行できるスレッドの数を一
定数に制限する。また、設けられているレジスタ・バンクの数よりスレッドの数
が少ない時は常に効率が悪い。
【0004】 あるいは、多数のコンテキストを別々のメモリに保存できる。そのようなやり
方の種々の例が米国特許第5349680号に記述されている。その特許に従来
の情報処理装置として記述されている、それらの例の1つにおいては、主プロセ
ッサは、種々のアプリケーション・プロセスから動作を逐次実行するためのアプ
リケーション・サポート装置と、情報処理装置における動作を制御するためのシ
ステム・サポート装置とを含んでいる。この装置の効率は低いと記述されている
。その理由は、アプリケーション・サポート装置とシステム・サポート装置は同
時には決して動作させられないからである。米国特許第5349680号は保存
されている多数のコンテキストを利用する別の装置を提案しているが、それらの
装置のおのおのは2つの別々のプロセッサを使用することを要する。これは効率
を向上するための費用のかかるやり方である。
【0005】 発明の概要 本発明の目的は、一定数のローカル・コンテキスト・レジスタを使用するとい
う硬直性の不利益をこうむらない、単一プロセッサによる迅速かつ効率的な多重
スレッド処理を可能にすることである。
【0006】 この目的およびその他の目的は、コンテキストをコンテキスト・レジスタ・セ
ットとメモリとの間で交換(swapping)することによって達成される。これによ
って、最少のハードウェアにより多重スレッド処理が可能にされる。本発明によ
れば、 ・複数の割込みのそれぞれに、それぞれのメモリ位置を関連付けることと、 ・複数のスレッド・コンテキスト・ポインタのそれぞれを、前記メモリ位置に保
存し、このポインタのそれぞれは、前記スレッドのうちの1つのスレッドの動作
状態を十分に記述するスレッド・コンテキストを含むためのメモリ位置を特定す
ることと、 ・いずれかの割込みの発生に応答して、前記割込みに関連させられているそれぞ
れのメモリ位置からポインタを読出すことと、 ・スレッド・コンテキスト・ポインタ読出しによって特定されているメモリ位置
から、スレッド・コンテキストをコンテキスト・レジスタ・セットに読込むこと
と、 ・スレッド・コンテキスト読出しによって記述されているスレッドを実行するこ
とと、 を含む方法が用いられる。
【0007】 それぞれの割込みに関連させられているメモリ位置に、コンテキスト自体では
なくて、コンテキストのポインタを保存することによって、割込みは特定のコン
テキストから関係を断たれる。これによって割込みに対する応答の決定における
融通性が高くなる。また、ただ1つのメモリ位置に1より多い割込みに共通のコ
ンテキストを保存し、且つ、この共通コンテキストのアドレスをそれらの割込み
のための各ポインタに含めることによって、メモリを節約できる。更に、コンテ
キスト自体をポインタにより特定されているメモリ位置に直接保存することによ
って、1つのスレッドから別のスレッドへの迅速なプロセッサ変更が可能にされ
る。
【0008】 ここで使用している「メモリ」という語は、それが用いられる態様に一致する
ものと一般に解釈されるべきであることを意図しており、かつ、制約なしに、レ
ジスタ、RAM、DRAM、ROM、及び、それらの装置の組合わせなどの、各
種の揮発性装置および不揮発性装置を含むことに注目されたい。また、「読出し
」は、1つのメモリからの情報の検索、及び、他のメモリへのそれの書込みを意
味する。
【0009】 本発明の特に有利な実施例では、プロセッサによって実行されているプログラ
ム・ストリーム(すなわち、そのプログラムを構成している命令列)中のある命
令が、プロセッサにおいてコンテキストの変更を直接行う。これによってスレッ
ド自体による迅速なコンテキスト変更の開始が可能になる。
【0010】
【発明の実施の形態】
好適な実施例についての説明 図1の多重スレッド処理装置1は、単一のプロセッサ10とメモリ20を含ん
でいる。例示したプロセッサ10は、プログラム・カウンタ・レジスタにより特
定された命令を順次実行するためにクロックパルスを利用する、ハードウェアで
加速された装置(hardware-accelerated unit)である。通常は、プログラム・
カウンタ・レジスタは、プロセッサが読出して、実行する次の命令のメモリ位置
を含んでいる。
【0011】 プロセッサは、割込み処理器12と、コンテキスト・レジスタ・セット14と
、命令復号器16と、算術論理装置18とを含む。この実施例では、メモリ20
は、とくに、複数のスレッド・コンテキスト・ポインタPtr TC1、Ptr
TC2、Ptr TC3、...Ptr TCnと、複数のスレッド・コンテ
キストを保存するための多数のメモリ位置を有するRAMを備えている。
【0012】 プロセッサ10とメモリ20は、共通バス30に接続されて相互に通信すると
ともに、このバスに接続されている他のハードウェアとも通信する。このバスは
、アドレス、割込み、データ、読出しストローブ、書込みストローブ、装置選択
ストローブなどの情報を伝えるためのそれぞれのラインを含んでいる。好ましく
は、このバスは、プロセッサおよびメモリと共通のシリコン基板上に少なくとも
部分的に形成された高速バスである。
【0013】 プロセッサ10の動作は割込みおよびプログラム・ストリーム中の命令によっ
て全体的(entirely)に制御される。割込みは、バス30から受けられた外部割
込み、またはプロセッサ自体で、たとえば、プロセッサ内のタイマ(図示せず)
から、発生された内部割込みとすることができる。各外部割込みには、メモリ2
0内の、スレッド・コンテキスト・ポインタPtr TC1、Ptr TC2、
Ptr TC3、...Ptr TCnの1つが保存されている所定の位置が関
連付けられている。それらのポインタのおのおのには、バス30に接続されてい
るハードウェアにより利用されるスレッド・コンテキストの1つが関連付けられ
、特定のコンテキストが保存されているメモリ位置を特定する。1より多いポイ
ンタ(たとえば、Ptr TC1およびPtr TC3)に同じスレッド・コン
テキストを関連付けることができ(すなわち、「共用する」)、したがって、同
じメモリ位置を特定する。これは、たとえば、バス30に接続されている1より
多い装置、たとえば、受信FIFOおよび送信FIFO、が同じコンテキストを
利用するならば、有用である。内部割込みのそれぞれが、メモリ20内の、プロ
セッサにより利用されているスレッド・コンテキストの1つが保存されている所
定の位置に関連付けられる。
【0014】 あるコンテキストが共用されているならば、処理時間が長くなる。その理由は
、割込みサービス・スレッドが割込みの元を決定しなければならないからである
。しかし、より少ないメモリが必要とされる。逆に、ある割込みがあるコンテキ
ストを独占的に使用するものとすると、割込みサービス・スレッドは割込みの元
を固有的に特定でき、処理応答時間はより短い。これによって装置のアーキテク
チャに融通性が与えられる。
【0015】 全ての割込みは、割込み処理器12によって処理される。この割込み処理器は
スレッド・コンテキスト・ロケータ120とポインタ・レジスタ122を含み、
かつキャッシュ・マネジャー124を含むことを選択できる。スレッド・コンテ
キスト・ロケータ120は、外部割込みおよび内部割込みに関連付けられている
メモリ位置を識別するアドレスを生成する。任意の割込みに応答して、スレッド
・コンテキスト・ロケータは、スレッド・コンテキスト・ポインタPtr TC
1、Ptr TC2、Ptr TC3、...Ptr TCnの関連付けられて
いる1つが保存されているメモリ20の所定の位置を特定するアドレスを生成す
る。その後で、プロセッサは、スレッド・コンテキスト位置をこのメモリ位置か
らポインタ・レジスタ122に読み込む。外部割込みの例には、FIFO TR
ANSMIT COMPLETE、FIFO DATA RECEIVED、D
MA TRANSFER COMPLETE、FIFO TRANSMIT F
AILURE等が含まれる。内部割込みの例には、内部タイマ等が含まれる。
【0016】 好ましくは、スレッド・コンテキスト・ロケータは、プログラム可能なルック
アップ・テーブルまたは符号器などのアドレスを発生するための専用の優先順位
感知ハードウェアを備えており、両者ともこの技術で周知である。両者ともアド
レッシングの速さを最速化し、かつ、より低い優先順位の割込みより先により高
い優先順位の割込みの処理を可能にする。
【0017】 コンテキスト・レジスタ・セット14は、現在プロセッサにより実行されてい
るスレッドのコンテキストを含む複数のレジスタを備えている。好適な実施例で
は、レジスタ・セット14は、以下を含んでいる。
【0018】 ・ 現在プロセッサにより実行されているスレッドのためのコンテキストのメモ
リ・アドレスを保存するためのレジスタPTR TC。
【0019】 ・ 先に(previously)プロセッサにより実行されたスレッドのためのコンテキ
ストのメモリ・アドレスを保存するためのレジスタPREV PTR TC。
【0020】 ・ メモリ20に保存されているスレッド・コンテキスト・ポインタにより特定
されないことがあるスレッド・コンテキストの位置を特定するために用いられる
レジスタP0。
【0021】 ・ メモリ20内で次にアクセスすべき命令のアドレスを特定するために、継続
的に更新するプログラム・カウンタ・レジスタPC。
【0022】 ・ 1つまたは複数の汎用レジスタ(図示せず)。
【0023】 ・ メモリ20から読み出され、又は、算術論理装置18で発生するデータを含
むための1つまたは複数のデータ・レジスタ(図示せず)。
【0024】 命令復号器16は、メモリ20から読出された命令を、算術論理装置18によ
って処理すべきより低いレベルのオペレーション・コードに変換するための、シ
ーケンサまたはマイクロシーケンサなどの、従来のハードウェア部品である。算
術論理装置も従来のハードウェア部品である。
【0025】 図2は、順次発生する、複数の割込み例とコンテキスト変更のための複数の命
令の例との制御の下にあるプロセッサ10の動作を示す。ボックス40はそれら
の割込みおよびコンテキスト変更命令が起きるにつれてのプロセッサ内の事象列
を表す。表されているコンテキスト変更命令の例(RESTORE PREV
TC、SWITCH P0 TO TC、RESTORE FM P0 TC、
SWITCH TO PREV TC、及び、S/W INTERRUPT)が
コンテキスト・レジスタ・セット14における変更を行う。これについては後で
詳しく説明する。
【0026】 ボックス20′は、特定のポインタと、それらのポインタによって位置付けさ
れたスレッド・コンテキストと、シーケンス40において発生する命令SWIT
CH TO P0 TC及びRESTORE FM P0 TCにより位置決め
されたスレッド・コンテキストとを、含んでいる、メモリ20内の位置を表して
いる。この特定の例では、メモリ位置20′は、以下を含んでいる。
【0027】 ・ 割込みINT 1に応答してプロセッサにより読出され、かつ関連させられ
ているスレッド・コンテキストTHREAD CONTEXT Fのメモリ位置
を含むポインタPtr TC INT 1。
【0028】 ・ 割込みEXT 1に応答してプロセッサにより読出され、かつ関連させられ
ているスレッド・コンテキストTHREAD CONTEXT Aのメモリ位置
を含むポインタPtr TC EXT 1。
【0029】 ・ 割込みEXT 2に応答してプロセッサにより読出され、かつ関連させられ
ているスレッド・コンテキストTHREAD CONTEXT Bのメモリ位置
を含むポインタPtr TC EXT 2。
【0030】 ・ 割込みEXT 3に応答してプロセッサにより読出され、かつ関連させられ
ているスレッド・コンテキストTHREAD CONTEXT Cのメモリ位置
を含むポインタPtr TC EXT 3。
【0031】 ・ スレッド・コンテキストTHREAD CONTEXT A。
【0032】 ・ スレッド・コンテキストTHREAD CONTEXT B。
【0033】 ・ スレッド・コンテキストTHREAD CONTEXT C。
【0034】 ・ スレッド・コンテキストTHREAD CONTEXT D。
【0035】 ・ スレッド・コンテキストTHREAD CONTEXT E。
【0036】 ・ スレッド・コンテキストTHREAD CONTEXT F。
【0037】 この実施例では、命令RESTORE PREV TC、SWITCH TO
P0 TC、RESTORE FM P0 TC、SWITCH TO PR
EV TCおよびS/W INTERRUPTは、メモリ20に含まれており、
それらのメモリ位置がプログラム・カウンタ・レジスタPCにより特定されるた
びに、これらの命令が命令復号器16に読み込まれる。
【0038】 図2に示されているシーケンスは時刻t0で始まる。その時にはプロセッサ1
0は、コンテキスト・レジスタ・セットに含まれているTHREAD CONT
EXT Aにより表されているスレッドAを実行している。簡単にするために、
各割込みは可能にされていて、それが発生されると直ちに実行されると仮定する
ことにする。
【0039】 時刻t1では、プロセッサ10は、バス30内の割込みラインの1つを介して
外部割込みEXT 2を受ける。この割込みに応答して、プロセッサは、以下の
処理を行う。
【0040】 ・ コンテキスト・レジスタ・セット14に現在含まれているスレッド・コンテ
キスト、すなわち、スレッドAに対するコンテキスト(THREAD CONT
EXT A)を、コンテキスト・レジスタ・セット14内のPTR TCレジス
タに含まれている現在のスレッド・コンテキスト・アドレスにより特定されてい
るメモリ位置に読み込む。
【0041】 ・ レジスタPTR TCに現在含まれているアドレスをレジスタPREV P
TR TCに読み込む。
【0042】 ・ 外部割込みEXT 2に関連付けられているメモリ位置、すなわち、ポイン
タPtr TC EXT 2が保存されているメモリ位置、を特定するアドレス
を、スレッド・コンテキスト・ロケータ120に発生させる。
【0043】 ・ THREAD CONTEXT Bのメモリ位置を特定しているポインタP
tr TC EXT 2を、ポインタ・レジスタ122に読み込む。
【0044】 ・ このスレッド・コンテキストをコンテキスト・レジスタ・セット14に読み
込み、スレッドBの実行を開始する。
【0045】 時刻t2では、プロセッサ10は、スレッドB内の最後の命令として、命令R
ESTORE PREV TCに出くわす。この命令の実行において、プロセッ
サは次の処理を実行する。
【0046】 ・ PREV PTR TCレジスタからのアドレスをポインタ・レジスタ12
2に読み込む。
【0047】 ・ 所望により、PTR TCレジスタからのアドレスをPREV PTR T
Cレジスタに読み込む。
【0048】 ・ ポインタ・レジスタ122によって特定されたメモリ20′位置からのスレ
ッド・コンテキストAを、コンテキスト・レジスタ・セット14に読み込み、ス
レッドAの実行を再び開始する。
【0049】 時刻t3では、スレッドAを実行している間に、プロセッサは、プログラム・
カウンタ・レジスタPCにより特定されたメモリ20′内のそれぞれの位置から
命令SWITCH TO P0 TCを読出す。この命令は1つのスレッドから
、メモリ20′に予め保存されているスレッド・コンテキスト・ポインタPtr
TC EXT1、Ptr TC EXT2または、Ptr TC EXT3の
いずれによっても特定されないことがある別のスレッドへの切換えを可能にする
ために与えられる。この切換えを容易にするために、SWITCH TO P0
TC命令に先行する命令の1つが、切換えるべきスレッドのためのコンテキス
トの位置を特定するアドレスを、コンテキスト・レジスタ・セット内のP0レジ
スタに予め保持する。この例では、切換えは、現在のスレッドAからメモリ20
′内のどこかに配置されているスレッドDへである。この命令の実行においては
、プロセッサは、以下の処理を実行する。
【0050】 ・ THREAD CONTEXT Aを、コンテキスト・レジスタ・セット1
4内のレジスタPTR TCに含まれている現在のスレッド・コンテキスト・ア
ドレスによって特定されているメモリ位置に読み込む。
【0051】 ・ レジスタPTR TCに現在含まれているアドレスをレジスタPREV P
TR TCに読み込む。
【0052】 ・ P0レジスタからのアドレスをポインタ・レジスタ122に読み込む、 ・ ポインタ・レジスタ122により特定されているメモリ20′内の位置から
のスレッド・コンテキスト(THREAD CONTEXT D)を、コンテキ
スト・レジスタ・セット14に読み込む。
【0053】 ・ スレッドDの実行を開始する。
【0054】 時刻t4では、スレッドDの実行中にメモリ20′から読出された命令に応答
して、プロセッサ10は命令RESTORE FM P0 TCをメモリ20′
内のそれぞれの位置から読出すことによってその命令を実行する。命令REST
ORE FM P0 TCは、命令SWITCH TO P0 TCに類似する
が、コンテキスト・レジスタ・セット14に現在のコンテキストを保存すること
なくスレッドのコンテキストを読出す。この命令の実行を容易にするために、R
ESTORE FM P0 TC命令に先行する命令の1つが、復帰すべきスレ
ッドに対するコンテキストの位置を特定するアドレスをP0レジスタに予め保存
する。この例では、プロセッサは、以下の処理によりスレッドEを復帰する。
【0055】 ・ P0レジスタからのTHREAD CONTEXT Eに対するアドレスを
ポインタ・レジスタに読み込む。
【0056】 ・ 所望により、PTR TCレジスタからのアドレスを、PREV PTR
TCレジスタに読み込む。
【0057】 ・ メモリ20′からのTHREAD CONTEXT Eを、コンテキスト・
レジスタ・セットに読み込む。
【0058】 時刻t5では、スレッドEの実行中に、プロセッサは、プログラム・カウンタ
・レジスタPCにより特定されているメモリ20′内のそれぞれの位置から命令
SWITCH TO P0 TCを読み出す。この命令は、現在実行中のスレッ
ドから、先に実行されていたスレッドへの切換えを可能にするために与えられる
。この例では、切換えは現在のスレッドEからスレッドDへである。この命令の
実行に際しては、プロセッサは、以下の処理を行う。
【0059】 ・ THREAD CONTEXT Eを、コンテキスト・レジスタ・セット1
4内のレジスタPTR TCに含まれている現在のスレッド・コンテキスト・ア
ドレスによって特定されるメモリ20′内のメモリ位置に読み込む。
【0060】 ・ PREV PTR TCレジスタからのアドレスを、ポインタレジスタ12
2に読み込む。
【0061】 ・ レジスタPTR TC内に含まれている現在のアドレスを、レジスタPRE
V PTR TCに読み込む、 ・ ポインタ・レジスタ122により特定されているメモリ20′の位置からの
スレッド・コンテキストFを、コンテキスト・レジスタ・セット14に読み込み
、スレッドDの実行を再び開始する。
【0062】 時刻t6では、スレッドDの実行中に、プロセッサは、プログラム・カウンタ
・レジスタPCにより特定されているメモリ20′内のそれぞれの位置から命令
S/W INTERRUPTを読出す。この命令は、ハードウェア割込みのソフ
トウエア・エミュレーションを可能にするために与えられる。この例では、その
命令は、割込みINT 1をエミュレートする。この命令に応答して、プロセッ
サは、ハードウェア割込みINT 1を受けた時と同じように応答する。すなわ
ち、プロセッサは、以下の処理を行う。
【0063】 ・ コンテキスト・レジスタ・セット14からの現在実行中のTHREAD C
ONTEXT Dを、レジスタPTR TCに含まれているアドレスによって特
定されているメモリ位置に読み込む。
【0064】 ・ レジスタPTR TCに現在含まれているアドレスを、レジスタPREV
PTR TCに読み込む。
【0065】 ・ 割込みINT 1に関連付けられているメモリ位置、すなわち、ポインタP
tr TC INT 1が保存されているメモリ位置、を特定するアドレスをス
レッド・コンテキスト・ロケータ120に発生させる。
【0066】 ・ THREAD CONTEXT Fのメモリ位置を特定している、ポインタ
Ptr TC INT 1を、ポインタ・レジスタ122に読み込む。
【0067】 ・ このスレッド・コンテキストを、コンテキスト・レジスタ・セット14に読
み込み、スレッドFの実行を開始する。
【0068】 これまで説明してきたように、プロセッサは単一のコンテキスト・レジスタ・
セット14に含まれているコンテキストを迅速に変更する性能を有する。しかし
、コンテキストを変更する速さを増すために、プロセッサは複数のコンテキスト
・レジスタ・セットを有することが好ましい。その場合には、コンテキスト・キ
ャッシュ・マネジャー124をプロセッサに含めることを選択できる。
【0069】 最速化を達成するために、プロセッサにより実行されるべき種々のスレッドの
数と同数のコンテキスト・レジスタ・セットが、キャッシュにある。しかし、そ
のような高速があらゆるスレッドに対して不要である場合には、キャッシュ・メ
モリ空間の使用が非効率的である。本発明の他の特徴によれば、スレッドより少
ない数のコンテキスト・レジスタ・セットを有する。しかし、優先順位がより低
いスレッドよりも、優先順位がより高いスレッドの方に、スレッド当りに、より
多くのレジスタ・セットを使用できるようにすることによって、最適な効率が達
成される。図3および図4はそのような優先順位付けの2つの例を示す。
【0070】 図3は、キャッシュメモリ内に配置されて、キャッシュ・マネジャー124の
制御の下にある4つのコンテキスト・レジスタ・セット(I、II、III、I
V)を用いることによって、8つのスレッド(スレッドA、B、...H)を実
行するように構成されている装置におけるスレッド処理を表す。各コンテキスト
・レジスタ・セットは図1に示されているそれに類似するが、8つのスレッドの
おのおののコンテキストに含まれている優先順位コードpを保持するレジスタを
更に含む。この例では、 ・ 高い優先順位(p=1)のスレッドまたは低い優先順位(p=0)のスレッ
ドを指示するために単一のビットが用いられる、 ・ スレッドA、B、Cは高い優先順位のスレッドとして指定されている、 ・ スレッドD、E、F、G、Hは低い優先順位のスレッドとして指定されてい
る。
【0071】 図3の例では、時刻t0でプロセッサ10は、どのスレッドも実行しておらず
、コンテキスト・レジスタ・セットI、II、III、IVは、それらのレジス
タの1つもスレッド・コンテキストを含んでいない状態であるリセット状態にあ
る。プロセッサはそれが次のようにして割込まれるまでアイドル状態にある。
【0072】 ・ 時刻t1では、割込みEXT 2がバス30を介して受けられる。プロセッ
サは(スレッド・コンテキスト・ロケータ120を介して)ポインタPtr T
C TC EXT 2を、ポインタ・レジスタ122に読み込み、その後でTH
READ CONTEXT Bをこのポインタにより特定されている、メモリ位
置から読み出す。キャッシュ・マネジャー124は、このスレッド・コンテキス
トが高い優先順位のコードp=1を含むことと、全部で4つのコンテキスト・レ
ジスタ・セットがフリーである(すなわち、どのコンテキストも含んでいない)
こと、を判定し、THREAD CONTEXT Bをコンテキスト・レジスタ
・セットIへ送る。(この例では、キャッシュ・マネジャーは最初のフリーなレ
ジスタ・セットを数値的に常に選択するが、これは、ランダムに含んでいる、任
意のシーケンスにおいて行うことができる。)コンテキスト・レジスタ・セット
Iは今はアクティブとなり、プロセッサがスレッドBを実行するにつれて連続的
に更新される。
【0073】 ・ 時刻t2では、プロセッサ内のタイマから割込みINT 1が受信される。
プロセッサは、ポインタPtr TC INT 1を、ポインタ・レジスタ12
2に読み込み、その後でTHREAD CONTEXT Fを、このポインタに
より特定されているメモリ位置から読み出す。キャッシュ・マネジャーは、この
スレッド・コンテキストが低い優先順位のコードp=0を含んでいることと、ど
のコンテキスト・レジスタ・セットも低い優先順位のコンテキストを含んでいな
いことと、コンテキスト・レジスタ・セットII、III、IVはフリーである
こと、を判定し、THREAD CONTEXT Fをコンテキスト・レジスタ
・セットIIへ送る。(あるいは、コンテキスト・レジスタ・セットの特定の1
つを低い優先順位のスレッド・コンテキストのために保留できる。これによって
、コンテキスト・レジスタ・セットのいずれも低い優先順位のスレッド・コンテ
キストのいずれも含んでいない、という判定ステップが無くされる。)コンテキ
スト・レジスタ・セットIIはアクティブとなり、プロセッサはスレッドFの実
行を開始する。
【0074】 ・ 時刻t3では、割込みEXT 1がバス30を介して受信される。プロセッ
サは、ポインタPtr TC EXT 1をポインタ・レジスタ122に読み込
み、その後でTHREAD CONTEXT Aをこのポインタにより特定され
ているメモリ位置から読み出す。キャッシュ・マネジャー124は、このスレッ
ド・コンテキストが高い優先順位のコードp=1を含んでいることと、コンテキ
スト・レジスタ・セットIIIとIVがフリーであることと、を判定し、THR
EAD CONTEXT Aをコンテキスト・レジスタ・セットIIIへ送る。
このレジスタ・セットはアクティブとなり、プロセッサはスレッドAの実行を開
始する。
【0075】 ・ 時刻t4では、スレッドAの実行中に、プロセッサは命令SWITCH T
O P0 TCを、現在コンテキスト・レジスタ・セットIIIにあるプログラ
ム・カウンタ・レジスタPCによって特定されているメモリ20′内のそれぞれ
の位置から読出す。(この例では、THREAD CONTEXT Gのメモリ
位置に対するアドレスがコンテキスト・レジスタ・セットIIIのP0レジスタ
に予め保持される。また、スレッドG内に含まれている、優先順位コードp=0
によってキャッシュ・マネジャーが、このスレッド・コンテキストをコンテキス
ト・レジスタ・セットIIに読み込むべきであることを決定可能にされる。)こ
の命令の実行においてはプロセッサは、コンテキスト・レジスタ・セットが1つ
だけ存在する場合におけるように、次のように処理する。
【0076】 ・ コンテキスト・レジスタ・セットII内のレジスタPTR TCに含まれて
いる現在のスレッド・コンテキスト・アドレスにより特定されているメモリ位置
にTHREAD CONTEXT Fを読み込み、コンテキスト・レジスタ・セ
ットIII内のレジスタPTR TCに現在含まれているアドレスをレジスタP
REV PTR TCに読み込む。
【0077】 ・ コンテキスト・レジスタ・セットIIIのP0レジスタからのTHREAD
CONTEXT Gのアドレスを、ポインタ・レジスタ122に読み込む。
【0078】 ・ THREAD CONTEXT Gをコンテキスト・レジスタ・セットII
に読み込む。レジスタ・セットIIは今はアクティブとなり、プロセッサはスレ
ッドGの実行を開始する。
【0079】 ・ 時刻t5では、割込みEXT 3がバス30を介して受信される。プロセッ
サはポインタPtr TC EXT3をポインタ・レジスタ122に読み込み、
その後でTHREAD CONTEXT Cをこのポインタにより特定されてい
るメモリ位置から読出す。キャッシュ・マネジャー124は、このスレッド・コ
ンテキストが高い優先順位のコードp=1を含んでいることと、コンテキスト・
レジスタ・セットIVのみがフリーであることと、を判定し、THREAD C
ONTEXT Cをコンテキスト・レジスタ・セットIVへ送る。このレジスタ
・セットはアクティブとなり、プロセッサはスレッドCの実行を開始する。
【0080】 この時刻から、スレッド・コンテキストA、B、Cのそれぞれは、それぞれの
コンテキスト・レジスタ・セットIII、I、IVに保持され、それらのスレッ
ドのそれぞれは、それぞれのレジスタ・セットをアクティブにするだけで実行で
きる。スレッドD、E、F、G、Hのいずれかの実行にはそれぞれのスレッド・
コンテキストをコンテキスト・レジスタ・セットIIにロードすることを要する
【0081】 このように、高い優先順位のスレッドの数と少なくとも同数の専用の高い優先
順位のコンテキスト・レジスタ・セット(たとえば、図3に表されている)で動
作するように構成されている装置では、それらのレジスタ・セットにそれぞれの
コンテキストがひとたびロードされると、それらとメモリ20の間でコンテキス
トを再び転送するいかなる必要も決してない。したがって、そのような転送に付
随する遅延が避けられる。逆に、低い優先順位のスレッドに対してコンテキスト
・レジスタ・セットが1つだけ設けられたとすると、それらのスレッドに対する
コンテキストを、プロセッサがそれらのうちの異なる1つに変更するたびに単一
のレジスタ・セットへ転送しなければならない。
【0082】 図4は、2つの優先レベルで動作する別のシステム構成にけるスレッド処理の
例を表す。第1のレベルでは、図3の例におけるように、スレッド当りより多く
のレジスタ・セットがより低い優先順位のスレッドよりも高い優先順位のスレッ
ドに対して使用できるようにされる。第1の優先レベルでは、複数の専用コンテ
キスト・レジスタ・セットを有する各スレッド優先順位コードpに対してあふれ
優先順位アルゴリズムが利用されるが、その場合にはそれらのレジスタ・セット
の数がそれぞれの優先順位コードpを持つスレッドの数より少ない。この例では
、再び、 ・ 高い優先順位(p=1)のスレッドまたは低い優先順位(p=0)のスレッ
ドを指示するために単一のビットが利用される、 しかし、今では ・ スレッドA、B、C、Dは高い優先順位(すなわち、p=1)とされ、 ・ 割込みEXT 4に応答してプロセッサにより読出され、かつTHREAD
CONTEXT Dのメモリ位置を有する追加のポインタPtr TC EX
T 4がメモリ20′に保存されており、 ・ スレッドE、F、G、Hは低い優先順位(すなわち、p=0)とされる。
【0083】 図4の例では、時刻t0から時刻t5まで、動作は図3について説明したもの
と同じである。しかし、その後では、第2のレベルの高い優先順位のスレッドの
数より、高い優先順位のコンテキスト・レジスタ・セットが少ないので、第2の
レベルの優先順位アルゴリズムが実行される。たとえば、高い優先順位のスレッ
ドが相互に等しくない優先順位のものであるとすると、第2のレベルの優先順位
アルゴリズムは、そのような相対的優先順位に基づくものでもよい。あるいは、
それらがすべて等しい優先順位のものであるとすると、異なるアルゴリズムを利
用してもよい。以下のアルゴリズムは、高い優先順位のスレッドによるプロセッ
サの過去の利用の履歴に基づいている。
【0084】 ・ 時刻t6では、割込みEXT 4がバス30を介して受け取られる。プロセ
ッサはポインタPtr TC EXT 4を、ポインタ・レジスタ122に読み
込み、その後でTHREAD CONTEXT Dを、このポインタにより特定
されているメモリ位置から読み出す。キャッシュ・マネジャー124は、スレッ
ド・コンテキストが高い優先順位のコードp=1を含むことと、ただしコンテキ
スト・レジスタ・セットはどれもフリーでないことと、を判定する。キャッシュ
・マネジャーは、各スレッドに対するキャッシュ・メモリを使用するための要求
の履歴をトラッキングできる。好適な実施例では、これは、各スレッドに別々の
カウンタを提供し、最初にそれらのカウンタの全てを零にリセットし、その後で
、要求が行われるたびに、 ・要求が行われたスレッドに関連付けられているカウンタのみを零にリセット
し、 ・他のスレッドに対するカウンタを増加する。
【0085】 それらのカウンタに保持されている履歴から、最後の要求がスレッドBに対す
るものであったことをキャッシュ・マネジャーは判定する(割込みEXT 2が
受信され、且つ、THREAD CONTEXT Bが、コンテキスト・レジス
タ・セットIに読み込まれた時刻t1に、このスレッドBは生じたものである)
。この履歴に基づいて、プロセッサはTHREAD CONTEXT Bをメモ
リ20′に読み込み、その後でTHREAD CONTEXT Dをコンテキス
ト・レジスタ・セットIに読み込む。このレジスタ・セットは今はアクティブと
なり、プロセッサはスレッドDの実行を開始する。
【0086】 多数のコンテキスト・レジスタ・セットを設けることによってプロセッサは、
メモリ20をアクセスすることなくある数のスレッドを逐次処理する。各スレッ
ド変更に必要な時間は、最も速いバスを介してメモリをアクセスするために必要
とされるはるかに長い時間ではなくて、クロック・サイクルで測定される。
【図面の簡単な説明】
【図1】 本発明の一実施例に係る多重スレッド処理装置の動作を全体的に示す図である
【図2】 ポインタおよびスレッド・コンテキストの特定のセットがメモリに保存されて
いる図1の多重スレッド処理装置の動作を示す図である。
【図3】 優先順位付けされたスレッドでの図1の多重スレッド処理装置の動作を示す図
である。
【図4】 第1のレベルおよび第2のレベルの優先順位を有する図1の多重スレッド処理
装置の動作を示す図である。
【符号の説明】
10 プロセッサ 12 割込み処理器 14 コンテキスト・レジスタ・セット 16 命令復号器 20 メモリ 120 スレッド・コンテキスト・ロレータ 122 ポインタ・レジスタ 124 キャッシュ・マネジャー
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),CN,JP,K R,SG (71)出願人 Groenewoudseweg 1, 5621 BA Eindhoven, Th e Netherlands Fターム(参考) 5B098 AA10 BA06 BA12 CC02 GA05 GC03

Claims (31)

    【特許請求の範囲】
  1. 【請求項1】 コンテキスト・レジスタ・セットへのそれぞれのスレッド・コンテキストの読
    み込みに応答して、複数の異なるスレッドのうちのいずれかを選択的に実行する
    ために単一のプロセッサを動作する方法において、 a.複数の割込みのそれぞに、それぞれのメモリ位置を関連付けることと、 b.複数のスレッド・コンテキスト・ポインタのぞれそれを、前記メモリ位置
    に保存し、このポインタのそれぞれは、前記スレッドのうちの1つのスレッドの
    動作状態を十分に記述するスレッド・コンテキストを含むためのメモリ位置を特
    定することと、 c.いずれかの割込みの発生に応答して、前記割込みに関連付けられているそ
    れぞれのメモリ位置からポインタを読出すことと、 d.スレッド・コンテキスト・ポインタ読出しによって特定されるメモリ位置
    から、スレッド・コンテキストをコンテキスト・レジスタ・セットに読込むこと
    と、 e.スレッド・コンテキスト読出しによって記述されているスレッドを実行す
    ることと、 を備える単一のプロセッサを動作する方法。
  2. 【請求項2】 請求項1記載の方法であって、スレッド・コンテキスト・ポインタのそれぞれ
    が、異なるメモリ位置を特定する方法。
  3. 【請求項3】 請求項1記載の方法であって、1より多いスレッド・コンテキスト・ポインタ
    が、同じメモリ位置を特定する方法。
  4. 【請求項4】 請求項1記載の方法であって、プロセッサにより実行されているプログラム・
    ストリーム中における割込み命令の1つ又は複数のスレッド変更命令の1つに応
    答して実行しているスレッドを、プロセッサが変更する方法。
  5. 【請求項5】 請求項4記載の方法であって、スレッド変更命令は、現在実行しているスレッ
    ドのコンテキストを保存するため、及び、実行されているスレッドを異なるスレ
    ッドに変更するための、SWITCH命令を含む方法。
  6. 【請求項6】 請求項5記載の方法であって、 プロセッサは、先に実行したスレッドに対するコンテキストのアドレスを保存
    し、 前記スレッド変更命令は、実行しているスレッドを、前記先に実行したスレッ
    ドに変更するための第1のSWITCH命令を含む方法。
  7. 【請求項7】 請求項5記載の方法であって、第2のSWITCH命令を含み、この第2のS
    WITCH命令は、第2のSWITCH命令により特定されているメモリ位置に
    含まれているそのコンテキストを有するスレッドに、実行されているスレッドを
    変更するためのものである方法。
  8. 【請求項8】 請求項7記載の方法であって、第2のSWITCH命令は、前記コンテキスト
    のメモリ位置を暗黙的に特定する方法。
  9. 【請求項9】 請求項7記載の方法であって、第2のSWITCH命令は、前記コンテキスト
    のメモリ位置を明示的に特定する方法。
  10. 【請求項10】 請求項9記載の方法であって、第2のSWITCH命令は、前記コンテキスト
    のメモリ位置を特定するポインタを含む方法。
  11. 【請求項11】 請求項9記載の方法であって、第2のSWITCH命令は、前記コンテキスト
    のメモリ位置を特定するポインタを含むメモリ位置を特定する方法。
  12. 【請求項12】 請求項4記載の方法であって、スレッド変更命令は、現在実行しているスレッ
    ドのコンテキストを保存することなく、異なるスレッドを実行するためのRES
    TORE命令を含む方法。
  13. 【請求項13】 請求項12記載の方法であって、 プロセッサは先に実行したスレッドに対するコンテキストのアドレスを保存し
    、 前記スレッド変更命令は、実行されているスレッドを前記先に実行したスレッ
    ドに変更するための第1のRESTORE命令を含む方法。
  14. 【請求項14】 請求項12記載の方法であって、第2のRESTORE命令を含み、この第2
    のRESTORE命令は、第2のRESTORE命令により特定されているメモ
    リ位置に含まれているそのコンテキストを有するスレッドに、実行されているス
    レッドを、変更するためのものである方法。
  15. 【請求項15】 請求項14記載の方法であって、第2のRESTORE命令は前記コンテキス
    トのメモリ位置を暗黙的に特定する方法。
  16. 【請求項16】 請求項14記載の方法であって、第2のRESTORE命令は前記コンテキス
    トのメモリ位置を明示的に特定する方法。
  17. 【請求項17】 請求項16記載の方法であって、第2のRESTORE命令は前記コンテキス
    トのメモリ位置を特定するポインタを含む方法。
  18. 【請求項18】 請求項16記載の方法であって、第2のRESTORE命令は前記コンテキス
    トのメモリ位置を特定するポインタを含むメモリ位置を特定する方法。
  19. 【請求項19】 請求項4記載の方法であって、スレッド変更命令は、割込みをエミュレートす
    るためのS/W INTERRUPT命令を含む方法。
  20. 【請求項20】 請求項4記載の方法であって、複数のコンテキスト・レジスタ・セットが設け
    られ、前記単一のプロセッサは前記コンテキスト・レジスタ・セットの所定の1
    つに含まれている方法。
  21. 【請求項21】 請求項1記載の方法であって、コンテキスト・レジスタ・セットは、 a.プロセッサにより現在実行されているスレッドのコンテキストのメモリ・
    アドレスを保存するためのレジスタと、 b.スレッド・コンテキスト・ポインタによって特定されていないスレッド・
    コンテキストの位置を特定するために用いられるレジスタと、 を含む方法。
  22. 【請求項22】 請求項1記載の方法であって、コンテキスト・レジスタ・セットはプロセッサ
    で先に実行されたスレッドのコンテキストのメモリ・アドレスを保持するための
    レジスタを含む方法。
  23. 【請求項23】 請求項1記載の方法であって、プロセッサは、複数のコンテキスト・レジスタ
    ・セットを含む方法。
  24. 【請求項24】 請求項23記載の方法であって、コンテキスト・レジスタ・セットの数は、プ
    ロセッサで実行すべきスレッドの数より、少ない方法。
  25. 【請求項25】 請求項24記載の方法であって、スレッド・コンテキストが読み込まれるコン
    テキスト・レジスタ・セットを選択するために、優先順位を基にしたアルゴリズ
    ムが採用される方法。
  26. 【請求項26】 請求項24記載の方法であって、 スレッドはより高い優先順位のスレッド及びより低い優先順位のスレッドを含
    み、 より低い優先順位のスレッドよりも、より高い優先順位のスレッドが利用可能
    なように、比例して大きい数のコンテキスト・レジスタ・セットが形成される、
    される方法。
  27. 【請求項27】 請求項26記載の方法であって、少なくとも1つのスレッドの優先順位を、プ
    ロセッサの動作中に変更できる方法。
  28. 【請求項28】 請求項26記載の方法であって、 より高い優先順位のスレッド又はより低い優先順位のスレッドの1つのための
    スレッド・コンテキストの読出し時に、セット選択アルゴリズムが用いられ、 それぞれの優先順位で使用可能に形成されたコンテキスト・レジスタ・セット
    のすべてが、読出されているもの以外のスレッドのコンテキストを既に含んでい
    る方法。
  29. 【請求項29】 請求項28記載の方法であって、前記アルゴリズムは、前記スレッド・コンテ
    キストを、最後に保存されたスレッド・コンテキストを含んでいる使用可能なコ
    ンテキスト・レジスタに、読み込む方法。
  30. 【請求項30】 コンテキスト・レジスタ・セットへのそれぞれのスレッド・コンテキストの読
    み込みに応答して、複数の異なるスレッドのうちのいずれかを、複数のプロセッ
    サのぞれぞれが選択的に実行するようにプロセッサのネットワークを動作する方
    法において、 a.複数の割込みのそれぞれに、それぞれのメモリ位置を関連付けることと、 b.複数のスレッド・コンテキスト・ポインタのそれぞれを、前記メモリ位置
    に保存し、このポインタのそれぞれは、前記スレッドのうちの1つのスレッドの
    動作状態を十分に記述するスレッド・コンテキストを含むためのメモリ位置を特
    定するすることと、 c.いずれかの割込みの発生に応答して、前記割込みに関連させられているそ
    れぞれのメモリ位置からポインタを読出すことと、 d.スレッド・コンテキスト・ポインタ読出しによって特定されるメモリ位置
    から、スレッド・コンテキストをコンテキスト・レジスタ・セットに読込むこと
    と、 e.スレッド・コンテキスト読出しによって記述されているスレッドを実行す
    ることと、 を備えるプロセッサのネットワークを動作する方法。
  31. 【請求項31】 請求項30記載の方法であって、スレッドの少なくとも1つが、1より多いプ
    ロセッサにより実行できる共通スレッドである方法。
JP2000590052A 1998-12-22 1999-12-16 割込み/ソフトウエア制御スレッド処理 Withdrawn JP2002533807A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US09/218,551 US6275749B1 (en) 1998-12-22 1998-12-22 Interrupt-controlled thread processing
US09/218,551 1998-12-22
US09/273,938 US6401155B1 (en) 1998-12-22 1999-03-22 Interrupt/software-controlled thread processing
US09/273,938 1999-03-22
PCT/EP1999/010170 WO2000038060A2 (en) 1998-12-22 1999-12-16 Interrupt/software-controlled thread processing

Publications (1)

Publication Number Publication Date
JP2002533807A true JP2002533807A (ja) 2002-10-08

Family

ID=26913028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000590052A Withdrawn JP2002533807A (ja) 1998-12-22 1999-12-16 割込み/ソフトウエア制御スレッド処理

Country Status (6)

Country Link
US (1) US6401155B1 (ja)
EP (1) EP1064600A2 (ja)
JP (1) JP2002533807A (ja)
KR (1) KR20010041142A (ja)
CN (1) CN1316074A (ja)
WO (1) WO2000038060A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020169B2 (en) 2003-01-09 2011-09-13 Japan Science And Technology Agency Context switching system having context cache and a register file for the save and restore context operation
JP2013164791A (ja) * 2012-02-13 2013-08-22 Denso Corp データ処理装置
JP2015534188A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020161957A1 (en) * 2001-02-09 2002-10-31 Guillaume Comeau Methods and systems for handling interrupts
JP2003167737A (ja) 2001-11-30 2003-06-13 Nec Corp スタック使用方法
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
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
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
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
US7610473B2 (en) 2003-08-28 2009-10-27 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
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
US7631307B2 (en) * 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
US7228266B1 (en) * 2003-12-05 2007-06-05 Unisys Corporation Instruction processor emulator having separate operand and op-code interfaces
US7681196B2 (en) * 2004-11-18 2010-03-16 Oracle International Corporation Providing optimal number of threads to applications performing multi-tasking using threads
US7526579B2 (en) * 2005-01-27 2009-04-28 Innovasic, Inc. Configurable input/output interface for an application specific product
US7406550B2 (en) * 2005-01-27 2008-07-29 Innovasic, Inc Deterministic microcontroller with configurable input/output interface
US7376786B2 (en) * 2005-02-28 2008-05-20 Hitachi Global Storage Technologies Netherlands B.V. Command stack management in a disk drive
US7308565B2 (en) * 2005-06-15 2007-12-11 Seiko Epson Corporation Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US7631125B2 (en) 2005-09-30 2009-12-08 Intel Corporation Dynamically migrating channels
US7512773B1 (en) * 2005-10-18 2009-03-31 Nvidia Corporation Context switching using halt sequencing protocol
US20070101325A1 (en) * 2005-10-19 2007-05-03 Juraj Bystricky System and method for utilizing a remote memory to perform an interface save/restore procedure
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
US7916146B1 (en) 2005-12-02 2011-03-29 Nvidia Corporation Halt context switching method and system
US8533710B1 (en) * 2006-08-31 2013-09-10 Oracle America, Inc. Using observed thread activity to dynamically tune a virtual machine for responsiveness
US7768515B1 (en) * 2006-11-03 2010-08-03 Nvidia Corporation Apparatus, system, and method for reducing shadowed state memory requirements for identifying driver command exceptions in a graphics system
US7898546B1 (en) * 2006-11-03 2011-03-01 Nvidia Corporation Logical design of graphics system with reduced shadowed state memory requirements
US8819682B2 (en) * 2007-01-23 2014-08-26 Agere Systems Llc Application switching in a single threaded architecture for devices
CN101295279B (zh) * 2007-04-29 2012-05-09 国际商业机器公司 多线程环境下的调试程序的方法和系统
US20080307208A1 (en) * 2007-06-07 2008-12-11 Fujitsu Limited Application specific processor having multiple contexts
JP2009175960A (ja) * 2008-01-23 2009-08-06 Panasonic Corp 仮想マルチプロセッサシステム
JP5173714B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
CN101587448B (zh) * 2009-06-26 2012-03-21 华为技术有限公司 一种中断处理方法和装置
US9170968B2 (en) * 2012-09-27 2015-10-27 Intel Corporation Device, system and method of multi-channel processing
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
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
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9996354B2 (en) 2015-01-09 2018-06-12 International Business Machines Corporation Instruction stream tracing of multi-threaded processors
US11416421B2 (en) * 2016-07-19 2022-08-16 Cypress Semiconductor Corporation Context-based protection system
US10496573B2 (en) * 2017-03-31 2019-12-03 Intel Corporation Context-sensitive interrupts
GB201717303D0 (en) * 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
KR102340871B1 (ko) * 2019-11-25 2021-12-20 주식회사 알티스트 인터럽트 처리 장치 및 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4074353A (en) 1976-05-24 1978-02-14 Honeywell Information Systems Inc. Trap mechanism for a data processing system
JPS5616248A (en) 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
EP0134386A2 (en) 1983-08-05 1985-03-20 Ten X Technology, Inc. Method and apparatus for executing object code instructions compiled from a high-level language source
US5142677A (en) 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US5353418A (en) 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
WO1992003783A1 (en) 1990-08-23 1992-03-05 Supercomputer Systems Limited Partnership Method of implementing kernel functions
US5349680A (en) 1990-11-07 1994-09-20 Kabushiki Kaisha Toshiba Information processing apparatus for executing application programs under control of a system program
US5696957A (en) 1991-05-17 1997-12-09 Ricoh Company, Ltd Integrated circuit comprising a central processing unit for executing a plurality of programs
US5553305A (en) 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US5428779A (en) 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
JP3547482B2 (ja) 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
JP3169779B2 (ja) 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5659749A (en) 1995-05-08 1997-08-19 National Instruments Corporation System and method for performing efficient hardware context switching in an instrumentation system
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
US5944816A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020169B2 (en) 2003-01-09 2011-09-13 Japan Science And Technology Agency Context switching system having context cache and a register file for the save and restore context operation
JP2013164791A (ja) * 2012-02-13 2013-08-22 Denso Corp データ処理装置
JP2015534188A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ

Also Published As

Publication number Publication date
WO2000038060A3 (en) 2000-10-26
US6401155B1 (en) 2002-06-04
CN1316074A (zh) 2001-10-03
EP1064600A2 (en) 2001-01-03
KR20010041142A (ko) 2001-05-15
WO2000038060A2 (en) 2000-06-29

Similar Documents

Publication Publication Date Title
JP2002533807A (ja) 割込み/ソフトウエア制御スレッド処理
US5168566A (en) Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks
JP3604091B2 (ja) マルチタスキングデータ処理システム
EP0644487B1 (en) Scalable system interrupt structure for a multiprocessing system
US7350006B2 (en) System and method of interrupt handling
JP3776449B2 (ja) マルチタスク低電力制御装置
US5701493A (en) Exception handling method and apparatus in data processing systems
US7412590B2 (en) Information processing apparatus and context switching method
US6275749B1 (en) Interrupt-controlled thread processing
JPH0760415B2 (ja) マルチタスキング・データ処理システム
EP0747816A2 (en) Method and system for high performance multithread operation in a data processing system
EP0330226A2 (en) Apparatus of and method for executing subprogram in bank switching data processing system
US5968159A (en) Interrupt system with fast response time
JP2004234123A (ja) マルチスレッドコンピュータ
US4855899A (en) Multiple I/O bus virtual broadcast of programmed I/O instructions
JP3970609B2 (ja) プロセッサシステム
US5367676A (en) Data processor for multiple macro-service processings based on a single macro-service request
EP0257655B1 (en) Multitask processing apparatus
US5530871A (en) Asynchronous input and output control system
JPH0916409A (ja) マイクロコンピュータ
US5579495A (en) Information processing in which a simulation of parallelism is achieved
JP2847729B2 (ja) 情報処理装置
JPH0756633B2 (ja) タスク切換え方式
JP2000163309A (ja) メモリ管理方法およびメモリ管理装置、並びに記録媒体
JP2002544619A (ja) 専用ポインタメモリを使用するオブジェクト指向処理

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070306