JPH05204656A - スレッド固有データ保持方法 - Google Patents

スレッド固有データ保持方法

Info

Publication number
JPH05204656A
JPH05204656A JP4065772A JP6577292A JPH05204656A JP H05204656 A JPH05204656 A JP H05204656A JP 4065772 A JP4065772 A JP 4065772A JP 6577292 A JP6577292 A JP 6577292A JP H05204656 A JPH05204656 A JP H05204656A
Authority
JP
Japan
Prior art keywords
thread
data
area
threads
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP4065772A
Other languages
English (en)
Inventor
Toshio Shirokibara
敏雄 白木原
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP4065772A priority Critical patent/JPH05204656A/ja
Priority to US07/983,407 priority patent/US5511192A/en
Publication of JPH05204656A publication Critical patent/JPH05204656A/ja
Pending 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/468Specific access rights for resources, e.g. using capability register

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 データ空間を共有するスレッドが大域的に宣
言された変数を固有に保持する方法の提供を目的とす
る。 【構成】 アドレス空間を定義するタスク内に実行主体
のスレッドが複数存在するプログラムを解析して複数ス
レッド毎に固有な大域データの抽出、領域の大きさおよ
び領域中の固有データのオフセットの決定、そして、実
行時に設定される領域のベースアドレスとオフセットで
アクセスする実行命令の生成を固有データ認識部3で行
い、スレッド生成時に大域データ領域の大きさをもとに
スレッドのスタックに割り当てる固有データ領域の開始
アドレスの設定をスレッド生成部6で行い、前記大域デ
ータを割り付ける領域をスタック7中に確保するととも
に上記領域の開始アドレスをプログラム実行中にスレッ
ドごとに固有データ領域開始アドレスレジスタ8に保持
するようにしている。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子計算機の並列処理
において、アドレス空間を共有しスタックのみを持つス
レッドが、大域的に宣言されたデータを固有に保持する
スレッド固有データ保持方法に関する。
【0002】
【従来の技術】従来、並列処理を効率よく実現するため
プロセスという概念をタスクとスレッドという2つの概
念に分解するモデルが提案され、実現されている。
【0003】ここで、タスクとはアドレス空間などの静
的な実行環境を定義するものであり、スレッドとは、ス
タックやプログラムカウンタなどの動的な実行環境を定
義するものである。
【0004】このようなモデルでは、1つのタスク内に
複数のスレッドが同時に存在することが可能である。こ
のことは、1つのタスク内の同じデータを用いて、複数
の処理を同時に行うことができることを意味する。ま
た、タスクとスレッドのモデルは、単純にプロセスによ
る並列処理を行う場合と比べて、次のような利点があ
る。 ・スレッド間の通信は、共有データを介して行うために
高速である。 ・スレッドはプロセスに比べて独自に持つ資源が少ない
ため、生成・消滅のオーバヘッドが少ない。
【0005】また、このようなタスクとスレッドのモデ
ルの場合、スレッド間でアドレス空間を共有しているた
め、大域データはすべてのスレッドから共有されるよう
になる。
【0006】例えば、C言語のプログラムで使用される
データは、大域変数、Auto変数の2つに大別でき、
このうち大域変数は、複数の関数からアクセスできるも
ので通常データ空間に割り当てられ、上述の大域データ
に相当しスレッド間で共有されるものである。一方、A
uto変数は、関数内で宣言され、宣言された関数内で
有効なもので、通常スタックに割り当てられる。
【0007】さて、1つのタスク中に複数のスレッドが
存在するマルチスレッド環境においては、大域的に宣言
されたデータをスレッド毎に保持する必要がある。スレ
ッド固有の大域データの必要な例として、マルチスレッ
ドサーバを次に示す。
【0008】ここでのマルチスレッドサーバは、同じサ
ービスを行うスレッドが1つのタスク内に複数存在し、
他のサーバからのサービス要求を同時に複数処理するも
ので、次のようなプログラムにより実現される。 struct msg m; get_job(){ ・・・ receive(&m); ・・・ job(); }
【0009】この場合、各スレッドは外部からのサービ
ス要求を受けるために、関数get_jobを呼び出
し、その内部で関数receiveを呼び出し、メッセ
ージの内容を変数mで受けとる。このメッセージ変数m
は通常複数の関数で処理されるため、大域的に扱う必要
がある。しかし、マルチスレッド環境では、大域的に宣
言されたデータは、スレッド間で共有されるため、上記
のようなプログラムでは、メッセージが破壊される可能
性がある。例えば、複数のサービス要求が来た場合、そ
れらの要求内容はメッセージ変数mに格納されるが、メ
ッセージ変数mはスレッド間で共有しているため、後か
ら来たメッセージの内容が上書きされ、前のメッセージ
が破壊されるおそれがある。このため、大域データをス
レッド固有に保持するための特別なデータ管理方式が必
要になっている。従来、提案されてきた方法として、以
下の2つの方法が知られている。 1.動的にスタックに割り当てる方法
【0010】この方法は、各スレッドが実行する関数内
でAuto変数として宣言することにより、スレッド固
有データをスタックに割り当てる。しかし、その関数を
呼び出した他の関数内で、その変数を参照する場合、A
uto変数は宣言された関数外では直接参照できないた
め、変数のアドレスを関数引数として渡す必要が生じ
る。この方法によるとプログラム例として図9に示すも
のがある。
【0011】この場合、各スレッドは、その生成後、関
数startから実行を開始する。また、スレッド毎に
固有データshared_dataを保持するために、
関数start内で宣言し、スタックに割り当てる。関
数startから関数func1、func2を呼び出
す場合、それぞれの関数内では固有データshared
_dataが参照できないため、そのアドレスを関数引
数として渡す必要がある。 2.変数をスレッド毎に拡張し、スレッドIDでアクセ
スする方法。
【0012】この方法は、固有に保持すべきデータを、
スレッド数の要素を持つ大域的な配列として宣言し、ス
レッド毎に一意に与えられたIDによりアクセスする方
法である。このような方法では、スレッドIDがOSレ
ベルでサポートされていない場合、スレッドID自体を
上述の方法1で保持する必要があり、また、スレッドの
数が動的に変化する場合には対応できない。この方法に
よるプログラム例として図10に示すものがある。
【0013】この場合、固有データshared_da
taは、大域的な配列として宣言されている。その要素
数は、定数THREAD_NUMで定義している。ま
た、固有データのアクセスはスレッドIDであるTHR
EAD_SELFを使用して行われる。
【0014】この例では、配列の要素数は静的にTHR
EAD_NUMまでに定まってしまい、スレッドの数に
制限が生じる。また、固有データへアクセスする場合に
は、スレッドIDであるTHREAD_SELFのOS
レベルでのサポートが必要である。
【0015】
【発明が解決しようとする課題】このように従来のスレ
ッドが大域データを固有に持つ方法において、関数内で
Auto変数として宣言する方法では、他の関数を呼び
出す場合に固有データのアドレスを関引引数として渡す
必要があるため、固有データの操作を行なう関数の呼び
出しでは、アドレスを指定する引数を含み、プログラム
が繁雑になってしまう。また、呼び出された関数では、
固有データのアドレスをスタックに保存する必要があ
り、さらに、固有データへのアクセスはアドレスによる
間接アクセスしか行なえないため、実行効率が低下する
ことになる。
【0016】一方、大域的な配列として宣言する方法で
は、スレッドIDが必要であり、さらにスレッドの動的
な生成・消滅に容易に対応できない。また、スレッドの
動的生成・消滅に対応するためには、スレッドIDをハ
ッシングして配列を引くような構造にしなくてはならな
いために実行効率が低下することになる。また、スレッ
ドの最大個数は、配列の要素数に制限されるようにもな
る。
【0017】このように、従来のものでは、スレッド固
有の大域データを実現するために、プログラムの書き易
さや実行効率を犠牲にしなければならないなどの問題点
を有している。
【0018】本発明は、上記事情に鑑みてなされたもの
で、スレッド固有データを大域変数と同様に宣言するこ
とができ、また、スレッド数の動的な変化にも対応でき
るスレッド固有データ保持方法を提供することを目的と
する。
【0019】
【課題を解決するための手段】本発明に係るスレッド固
有データ保持方法は、アドレス空間を定義するタスク内
に実行主体のスレッドが複数存在するよう電子計算機を
動作させるプログラムを入力し、このプログラムから、
複数のスレッドから大域的にアクセス可能でかつ各スレ
ッド毎に固有に保持すべきデータを抽出し、各スレッド
毎に保有するスタックのそれぞれに抽出した前記データ
を割り当てる領域を確保し、この確保した領域の基準と
なるアドレスを前記各スレッド毎に保持し、前記データ
に対するアクセスは、保持した前記アドレスに基づいて
行うことを特徴とするものである。
【0020】複数のスレッドから大域的にアクセス可能
でかつ各スレッド毎に固有に保持すべきデータが前記プ
ログラム中に複数個ある場合には、この複数個のデータ
を割り当てるのに要する領域の大きさと、この領域内で
の各データの位置とを決定し、この決定した位置に基づ
いて各データのアクセス命令を生成しておき、各スレッ
ドが保有するスタックにおける領域確保は、決定した前
記大きさに基づいて行い、前記データに対するアクセス
は、生成した前記アクセス命令と保持した前記アドレス
とに基づいて行うものである。また、領域確保と基準と
なるアドレス保持はスレッド生成時に行い、データへの
アクセスの際に用いるアドレスは、実行中のスレッドに
ついて保持されているものとするというものである。
【0021】
【作用】本発明によれば、複数のスレッドから可視の大
域データであって且つ各スレッド毎に固有に保持すべき
データであるものは、その旨をプログラム中で宣言して
おけば、このような宣言をされたデータについてはその
ための領域を各スレッド毎にスタックに確保し、その領
域の基準となるアドレスを保持し、保持したアドレスに
基づいてデータへのアクセスを行うため、このデータは
各スレッドから大域的にアクセス可能なものであって且
つスレッド独自に保持されるものとなる。つまり、スレ
ッド固有データを大域変数と同様に宣言すると、これを
データ空間ではなく各スレッドのスタックに多重的に割
り当て、各スレッドが自スタックにアクセスすることに
より、そのデータはスレッド固有に保持されていること
になる。よって、上記の宣言さえ行えば良いのでプログ
ラムが簡素化される。また、固有データのアドレスでは
なくデータそのものがスタックに保存されているため、
実行効率が向上する。さらに、上記の領域確保と基準と
なるアドレス保持をスレッド生成時にそのスレッドの自
スタックについて行うので、スレッドの生成・消滅に伴
うスレッド数の動的な変化にも対応することができる。
【0022】
【実施例】以下、本発明の一実施例を図面に従い説明す
る。図1は同実施例にかかるスレッド固有データ保持方
法を行うシステム構成を示すものであり、図4はこの方
法を概念的に説明するものである。
【0023】この場合、固有データ認識部3(101)
は、コンパイル部2がプログラム入力部1により入力さ
れたプログラム102をコンパイルする際に、このプロ
グラムを解析し、プログラム102中のスレッド固有デ
ータを認識し、それらのデータを割り付けるために必要
な領域の大きさ、および、その領域内での各データのオ
フセットを決定するようにしている。この処理を施され
たプログラムは実行ファイル103として実行ファイル
記憶部4にて記憶される。また、固有データ認識部3
(101)は、スレッド固有データ用の領域の大きさを
実行ファイル103のヘッダ部に記録し、さらに固有デ
ータのオフセットおよび実行時に決定される固有データ
領域の開始アドレス(ベースアドレス)により固有デー
タをアクセスする実行コードを実行ファイル103のテ
キスト部分に記録するようにもしている。以上の動作
は、実行前に実行ファイルを作成するにあたって行われ
るものである。
【0024】上述した固有データ認識部3の動作を図2
のフローチャートに示し、これをプログラム102の一
例を示す図5を参照しながら説明する。図5のプログラ
ムは、固有データ202、203のようにアクセスする
命令を含むfunc1,func2なる関数を実行しよ
うとするものである。図6には、図5に示すプログラム
をコンパイルするときの固有データ認識部3の内部デー
タの例を示してある。図7は、図5に示すプログラムを
コンパイルして生成される実行ファイル中に、固有デー
タ認識部3が生成して記録する固有データへのアクセス
命令の例を示すものである。
【0025】図5において、プログラム中の固有データ
data1,data2は固有データであることを示す
ためにprivate宣言(201)されている。する
と、固有データ認識部3では、privateというキ
ーワードにより、スレッド固有データを認識する(S
1)。そして、図5の場合は固有データが4バイトの整
数型の変数2個であるから、固有データ領域(図4の1
06)の大きさを8バイト(図6の301)と求める
(S2)。求めた固有データ領域の大きさを実行ファイ
ル103のヘッダ部分に記録する(S3)。また、各固
有データに対してそれぞれ固有データ領域106の内部
位置(オフセット)(図6の302)を決定する(S
4)。そして、決定したオフセットを基にアクセス命令
(図7の401、402)を生成し、これを実行ファイ
ル103のテキスト部分に記録する(S5)。図7に示
される命令の意味は、固有データ領域開始アドレス(P
SP;Private Stack Pointer )から上記のオフセット
分離れたアドレスにアクセスせよということである。
尚、この例では固有データへの値を代入する命令(図5
の202、203)に対応する命令であるから、st
(store )命令となっている。
【0026】このように作成された実行ファイルの実行
時には、実行部5が実行ファイル記憶部4から実行ファ
イルを読み込み実行を行うが、その際にスレッドを生成
したりスレッドを切り替えたりする。スレッドを生成す
る際のスレッド生成部6(104)の動作を図3(a)
に示す。スレッド生成部6(104)は、まず実行ファ
イル103中のヘッダ部分に記録されたスレッド固有デ
ータ用領域の大きさを読み(S11)、この大きさを基
に今から生成するスレッドkのスタック105(7のう
ちスレッドkに対応するもの)の最下位部分に固有デー
タ領域106を割り当てる(S12)。そして、これと
共に、スレッドの自スタックの最下位アドレスを固有デ
ータ領域開始アドレスレジスタ8(107)のPSPの
セットする(S13)。さらに、PSPから上に上記の
大きさ分固有データ領域を確保し、このときの上端のア
ドレスをスタックポインタ9のSP(Stack Pointer )
にセットする(S4)。このSPは実行時には通常のス
タックポインタとして用いられることになる。このよう
にスレッドを次々と生成していくと、スレッド1〜nの
各スタックにそれぞれ固有データ領域106が割り当て
られ、それぞれの開始アドレスがスレッド毎のPSPの
セットされることになる。この様子を図8に示す。尚、
PSPを各スタックの最下位アドレスとしたのは便宜上
であり、各スタック中の任意の位置の固有データ用の領
域を設ける基準アドレスと置き換えても良い。
【0027】このように設けられた固有データ領域中の
固有データへのアクセスの実行は、上述したようにコン
パイル時に固有データ認識部3が生成した実行ファイル
中のコード401、402の中のPSPのところに、現
在のスレッドの固有データ領域開始アドレスレジスタ8
(107)に格納されたアドレスの値を代入し、この値
とコード中のオフセットの値とで計算されるアドレスに
アクセスすることにより行われる。
【0028】一方、実行時にスレッドを切り替える際の
スレッド切替え部10(108)の動作を図3(b)に
示す。スレッド切替え部10(108)は、スレッド切
替えを行う際に、現在のPSPを他のレジスタ(SP
等)と共に読み出して(S21)これらの値をスレッド
コンテキスト管理部10に保存する(S22)。スレッ
ドコンテキスト管理部10には、スレッド生成時にセッ
トされた固有データ領域の開始アドレス、SP等をスレ
ッド毎に保持してある。そこでスレッド切替え部10
は、このスレッドコンテキスト管理部10から次に実行
するスレッドのPSP、SPを読み出して(S23)こ
れらの値を固有データ領域開始アドレスレジスタ8、ス
タックポインタ9にセットする(24)。
【0029】このような操作により、常に、あるスレッ
ドの実行中はそのスレッドの固有データ領域の開始アド
レスがPSPにセットされていることになり、固有デー
タへのアクセス命令は実行中のスレッドの固有データ領
域に対して行われるようになり、現在実行されていない
スレッドの固有データ領域へのアクセスは行われないこ
とになる。
【0030】
【発明の効果】本発明によれば、スレッドに固有な大域
データは、一般の大域データと同様に記述することがで
きるようになる。このため、Auto変数として宣言し
て記述した時に問題となるプログラムの繁雑さを防ぐこ
とができ、プログラムの生成が向上するだけでなく、バ
グの混入を防止する上でも大きな効果がある。また、固
有データは、静的に固有データ領域中の位置が定められ
るため、アドレスによる間接アクセスの必要がないこと
と、関数呼び出しごとにそのアドレスを引き渡す必要が
ないため、実行効率を向上させることができる。さら
に、固有データ領域を各スレッドのスタック中に確保す
るため、スレッド数に制限がなく、大域的な配列として
宣言する場合と比べてスレッドの動的生成・消滅に容易
に対応できることになる。このように実用上多大なる効
果を奏するスレッド固有データ保持方法が実現できる。
【図面の簡単な説明】
【図1】本発明の一実施例に係るスレッド固有データ保
持方法を行うシステム構成を表わすブロック図。
【図2】図1の固有データ認識部3の動作を示すフロー
チャート。
【図3】図1の実行部5が(a)スレッド生成部6を起
動した場合の6の動作、(b)スレッド切替部10を起
動した場合の10の動作を示すフローチャート。
【図4】本発明の一実施例に係るスレッド固有データ保
持方法を概念的に示す図。
【図5】本実施例に用いられるプログラム例を示す図。
【図6】図5に示すプログラムを解析した場合の固有デ
ータ解析部の内部データを示す図。
【図7】図5に示すプログラムをコンパイルした実行フ
ァイルを示す図。
【図8】実行中のスレッドのスタック状態を示す図。
【図9】従来のスレッド固有データを保持する方法のプ
ログラム例を示す図。
【図10】従来のスレッド固有データを保持する方法の
プログラム例を示す図。
【符号の説明】
1…プログラム入力部、2…コンパイル部、3,101
…固有データ認識部、4…実行ファイル記憶部、5…実
行部、6,104…スレッド生成部、7,105…スタ
ック、8,107…固有データ領域開始アドレスレジス
タ、9…スタックポインタ、10,108…スレッド切
替え部、11…スレッドコンテキスト管理部、102…
プログラム、103…実行ファイル、106…固有デー
タ領域。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 アドレス空間を定義するタスク内に実行
    主体のスレッドが複数存在するよう電子計算機を動作さ
    せるプログラムを入力し、 この複数のスレッドから大域的にアクセス可能でかつ各
    スレッド毎に固有に保持すべきデータを、入力した前記
    プログラムから抽出し、 各スレッド毎に保有するスタックにそれぞれ、抽出した
    前記データを割り当てる領域を確保し、 この確保した領域の基準となるアドレスを前記各スレッ
    ド毎に保持し、 前記データに対するアクセスは、保持した前記アドレス
    に基づいて行うことを特徴とするスレッド固有データ保
    持方法。
  2. 【請求項2】 アドレス空間を定義するタクス内に実行
    主体のスレッドが複数存在するよう電子計算機を動作さ
    せるプログラムを入力し、 この複数のスレッドから大域的にアクセス可能でかつ各
    スレッド毎に固有に保持すべきデータを複数個、入力し
    た前記プログラムから抽出し、 この抽出した複数個のデータを割り当てるのに要する領
    域の大きさと、この領域内での各データの位置とを決定
    し、 この決定した位置に基づいて各データのアクセス命令を
    生成しておき、 前記スレッドを生成する際に、決定した前記大きさに基
    づいてこのスレッドが保有するスタックに前記データを
    割り当てる領域を確保し、 この確保した領域の基準となるアドレスを、生成した前
    記スレッドが他のスレッドに切り替えられるかあるいは
    消滅するまでの間保持し、 前記データに対してアクセスする際には、生成した前記
    アクセス命令と保持した前記アドレスとに基づいてアク
    セスを行うことを特徴とするスレッド固有データ保持方
    法。
JP4065772A 1991-11-30 1992-03-24 スレッド固有データ保持方法 Pending JPH05204656A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP4065772A JPH05204656A (ja) 1991-11-30 1992-03-24 スレッド固有データ保持方法
US07/983,407 US5511192A (en) 1991-11-30 1992-11-30 Method and apparatus for managing thread private data in a parallel processing computer

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP3-339572 1991-11-30
JP33957291 1991-11-30
JP4065772A JPH05204656A (ja) 1991-11-30 1992-03-24 スレッド固有データ保持方法

Publications (1)

Publication Number Publication Date
JPH05204656A true JPH05204656A (ja) 1993-08-13

Family

ID=26406919

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4065772A Pending JPH05204656A (ja) 1991-11-30 1992-03-24 スレッド固有データ保持方法

Country Status (2)

Country Link
US (1) US5511192A (ja)
JP (1) JPH05204656A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039905B1 (en) 1999-11-10 2006-05-02 Fujitsu Limited Compiler device and computer-readable recording medium recorded with compiler program
JP2006164061A (ja) * 2004-12-09 2006-06-22 Denso Corp マルチタスクシステム、プログラム、及びプログラム生成方法
JP2012530995A (ja) * 2009-06-26 2012-12-06 コードプレイ、ソフトウェア、リミテッド 処理方法
JP2013016192A (ja) * 2008-03-24 2013-01-24 Nvidia Corp 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5895467A (en) * 1997-04-11 1999-04-20 Informix Software, Inc. Selectively switching memory access permission for manipulating data in a database
US5958028A (en) * 1997-07-22 1999-09-28 National Instruments Corporation GPIB system and method which allows multiple thread access to global variables
US6691118B1 (en) * 1997-10-31 2004-02-10 Oracle International Corporation Context management system for modular software architecture
US6272518B1 (en) 1998-08-17 2001-08-07 International Business Machines Corporation System and method for porting a multithreaded program to a job model
US6105049A (en) * 1998-08-25 2000-08-15 International Business Machines Corporation Resource lock/unlock capability in multithreaded computer environment
US6105050A (en) * 1998-08-25 2000-08-15 International Business Machines Corporation System for resource lock/unlock capability in multithreaded computer environment
US6112222A (en) * 1998-08-25 2000-08-29 International Business Machines Corporation Method for resource lock/unlock capability in multithreaded computer environment
US6633974B1 (en) * 1999-11-04 2003-10-14 International Business Machines Corporation Apparatus and method for controlling link stack corruption during speculative instruction branching using multiple stacks
US6742112B1 (en) * 1999-12-29 2004-05-25 Intel Corporation Lookahead register value tracking
US7069556B2 (en) * 2001-09-27 2006-06-27 Intel Corporation Method and apparatus for implementing a parallel construct comprised of a single task
US20030066056A1 (en) * 2001-09-28 2003-04-03 Petersen Paul M. Method and apparatus for accessing thread-privatized global storage objects
US7065765B2 (en) * 2001-12-05 2006-06-20 International Business Machines Corporation Serializing event handling in a threaded system with no wait states
US6968445B2 (en) * 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
CA2387200A1 (en) * 2002-05-22 2003-11-22 Ibm Canada Limited-Ibm Canada Limitee Implementation of thread-static data in multi-threaded computer systems
US20040103414A1 (en) * 2002-11-27 2004-05-27 Vomlehn David M. Method and apparatus for interprocess communications
US7233335B2 (en) * 2003-04-21 2007-06-19 Nividia Corporation System and method for reserving and managing memory spaces in a memory resource
US7444547B2 (en) 2003-06-19 2008-10-28 International Business Machines Corproation Method, system, and product for programming in a simultaneous multi-threaded processor environment
EP1505490A1 (en) * 2003-08-05 2005-02-09 Sap Ag Method and computer system for accessing thread private data
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
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
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
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading 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
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7380039B2 (en) 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7769853B2 (en) * 2007-06-12 2010-08-03 International Business Machines Corporation Method for automatic discovery of a transaction gateway daemon of specified type
US7991962B2 (en) * 2007-12-10 2011-08-02 International Business Machines Corporation System and method of using threads and thread-local storage
US8326886B2 (en) * 2010-01-21 2012-12-04 Microsoft Corporation Per-thread, per-instance data storage
US10922074B2 (en) * 2017-09-28 2021-02-16 Oracle International Corporation Deferred state mutation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4545016A (en) * 1983-01-07 1985-10-01 Tandy Corporation Memory management system
US4847754A (en) * 1985-10-15 1989-07-11 International Business Machines Corporation Extended atomic operations
US5047919A (en) * 1986-04-03 1991-09-10 Harris Corporation Method and apparatus for monitoring software execution in a parallel multiprocessor computer system
JPH01303527A (ja) * 1988-05-31 1989-12-07 Hitachi Ltd 共有資源の管理方法
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
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039905B1 (en) 1999-11-10 2006-05-02 Fujitsu Limited Compiler device and computer-readable recording medium recorded with compiler program
JP2006164061A (ja) * 2004-12-09 2006-06-22 Denso Corp マルチタスクシステム、プログラム、及びプログラム生成方法
JP2013016192A (ja) * 2008-03-24 2013-01-24 Nvidia Corp 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令
US9639365B2 (en) 2008-03-24 2017-05-02 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor
JP2012530995A (ja) * 2009-06-26 2012-12-06 コードプレイ、ソフトウェア、リミテッド 処理方法

Also Published As

Publication number Publication date
US5511192A (en) 1996-04-23

Similar Documents

Publication Publication Date Title
JPH05204656A (ja) スレッド固有データ保持方法
US8631219B2 (en) Method and system for dynamic memory management
US6601235B1 (en) Method and apparatus for dynamically deoptimizing compiled activations
US8677331B2 (en) Lock-clustering compilation for software transactional memory
US20060026183A1 (en) Method and system provide concurrent access to a software object
US20040098724A1 (en) Associating a native resource with an application
JP2001147819A (ja) 最適化装置および記録媒体
JPH04268927A (ja) メモリ管理方法
JP2008546086A (ja) 共有リソースのためのアクセス協調を伴うプログラムコードを変換する方法および装置
JP2003167737A (ja) スタック使用方法
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US7086044B2 (en) Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
Taura et al. Fine-grain multithreading with minimal compiler support—a cost effective approach to implementing efficient multithreading languages
US6959430B2 (en) Specialized heaps for creation of objects in object-oriented environments
US8296742B2 (en) Automatic native generation
JPH06337794A (ja) プログラム制御方式
US6499094B1 (en) Management of memory heap space for data files accessible to programs operating in different addressing modes
US7770152B1 (en) Method and apparatus for coordinating state and execution context of interpreted languages
US7036120B2 (en) Two tier clusters for representation of objects in Java programming environments
JP3241214B2 (ja) 分散処理装置及びプロセス実行方法
JP3807860B2 (ja) コンパイル方法および装置、並びにメソッド活動度計算方法および装置
US7082597B2 (en) Representation of objects in a Java programming environment
JP2000035890A (ja) コンパイル方法、フレーム検出方法及び装置、コード破棄方法、並びにコンピュータ
JPH09146772A (ja) 手続き呼出し方法
KR19990086969A (ko) 메모리 할당방법