JP2002268897A - スレッド管理方法及び情報処理装置 - Google Patents

スレッド管理方法及び情報処理装置

Info

Publication number
JP2002268897A
JP2002268897A JP2001064415A JP2001064415A JP2002268897A JP 2002268897 A JP2002268897 A JP 2002268897A JP 2001064415 A JP2001064415 A JP 2001064415A JP 2001064415 A JP2001064415 A JP 2001064415A JP 2002268897 A JP2002268897 A JP 2002268897A
Authority
JP
Japan
Prior art keywords
thread
information
thread management
stack
memory
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
JP2001064415A
Other languages
English (en)
Inventor
Takashi Aoki
孝 青木
Takeshi Eto
健 衛藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001064415A priority Critical patent/JP2002268897A/ja
Publication of JP2002268897A publication Critical patent/JP2002268897A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】プログラムのスレッド管理におけるメモリ参照
におけるオーバーヘッドを排除し、効率のよい管理を可
能とすること。 【解決手段】仮想マシン上にマルチスレッド処理を実現
する場合のスレッド管理方法及び情報処理装置であっ
て、情報の処理を行う処理手段1aと、情報を格納する
メモリ2と、高速にアクセスできるキャッシュ領域3a
とを備え、前記処理手段1aは、現在実行中のスレッド
を管理するスレッド管理情報を前記メモリ上から前記キ
ャッシュ領域に入れる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ハードウェア上の
機能を積極的に活用したスレッド管理方法及び情報処理
装置に関する。
【0002】近年、異なるアーキテクチャやオペレーテ
ィングシステム(OS)が混在する計算機環境が一般化
するにつれ、それぞれの環境にアプリケーションソフト
ウェアを移植する作業やそれを運用・管理する作業の膨
大さは大きな問題になっている。
【0003】これを解決する手段として、仮想マシン
(ソフトウェアで実現される)を種々のプラットフォー
ムに移植して、アプリケーションをその仮想マシンに対
応したプログラムとして作成するといった方法が使われ
るようになった。これらは、ソフトウェアでの実装が簡
単なこともあって、レジスタの代わりにスタックを利用
するスタックマシンアーキテクチャをソフトウェア上の
仮想マシンの構造に採用している。また、仮想マシン上
でプログラムの多重性を実現する方法としてスレッドを
導入している。更に、これの高速実行を可能にするもの
として、ハードウェア上にスタックマシンアーキテクチ
ャを実装させたものが登場している。
【0004】しかしながら、Java(ジャバ)をはじ
めとする仮想マシンに基づいたアーキテクチャでは、ス
レッドの管理に要する時間がボトルネックとなりハード
ウェア上での実行効率がいかされていない。このため、
いかに効率よくスレッドを管理するかが重要になってい
る。
【0005】
【従来の技術】従来、スレッドを管理するデータ構造を
各スレッド毎にメモリ上に確保し、そのデータ構造を参
照してスレッドの状態を把握する方法がとられていた。
この方法では、スレッドの管理データを計算機上の一般
のデータと同じように扱っている(仮想マシンではレジ
スタもメモリに設けられる)ため、実装は簡単である
が、頻繁に参照されるにも係わらずメモリへのアクセス
が行われるため、プログラム実行上のオーバーヘッドに
なる場合があった。
【0006】
【発明が解決しようとする課題】従って、プログラムの
高速化を図ろうとすると、ハードウェアをより高速なも
のに交換する必要があり、仮想マシンを使っているた
め、ソフトウェアの利用については有効(種々の計算機
に使用できる)であるにも係わらず、計算機資源を有効
に利用できない場合があった。
【0007】本発明は、プログラムのスレッド管理にお
けるメモリ参照におけるオーバーヘッドを排除し、効率
のよい管理を可能とすることを目的とする。
【0008】
【課題を解決するための手段】図1は本発明の原理説明
図である。図1中、、はスレッド、1aは処理手
段、2はメモリ、3aはキャッシュ領域、21a、22
aはスレッド管理情報である。
【0009】本発明は、前記従来の課題を解決するため
次のような手段を有する。
【0010】(1):仮想マシン上にマルチスレッド処
理を実現する場合のスレッド管理方法及び情報処理装置
であって、情報の処理を行う処理手段1aと、情報を格
納するメモリ2と、高速アクセス可能なキャッシュ領域
3aとを備え、前記処理手段1aは、現在実行中のスレ
ッドを管理するスレッド管理情報を前記メモリ上から前
記キャッシュ領域に入れる。このため、プログラムのス
レッド管理におけるメモリ参照におけるオーバーヘッド
を排除し、効率のよい管理が可能となる。
【0011】(2):前記(1)のスレッド管理方法及
び情報処理装置において、前記処理手段は、現在実行中
のスレッドかどうかを判断して、アクセスするスレッド
管理情報の所在を判定する。このため、スレッド管理情
報の所在を容易に判定することができる。
【0012】(3):前記(1)又は(2)のスレッド
管理方法及び情報処理装置において、前記キャッシュ領
域をハードウェアによりスレッド管理用として設ける。
このため、キャッシュ領域がハードウェアであるためア
クセスを高速に行うことができる。
【0013】(4):前記(1)又は(2)のスレッド
管理方法及び情報処理装置において、前記処理手段がス
タック処理を行うためのスタックと、該スタック上の領
域を一意に示すハードウェアとを備え、前記スタック上
の領域に前記スレッド管理情報を格納する。このため、
ハードウェアを使い高速にスレッド管理情報にアクセス
することができ、また、個別にキャッシュとの間で出し
入れせずとも、OSのスレッド切替機能を使って、スレ
ッド管理情報の入れ換えを自動的に行うことができる。
【0014】
【発明の実施の形態】(1)情報処理装置の説明 図2は情報処理装置の説明図である。図2において、情
報処理装置である計算機には、CPU(中央処理装置)
1、メモリ2、キャッシュ3、外部記憶装置4、入出力
装置5が設けてある。
【0015】CPU1は、計算機の中心となって処理を
行う処理手段である。メモリ2は、種々の情報を記憶す
るものである。キャッシュ3は、メモリ2からCPU1
へのデータの読み込みを高速化するために、メモリ2と
CPU1との間に置かれるメモリである。外部記憶装置
4は、ハードディスク装置や光磁気ディスク装置等の補
助記憶装置である。
【0016】入出力装置5は、情報の入力と出力とを実
行する装置(入力装置と出力装置)であり、入力装置と
して例えば、キーボード、イメージスキャナ、音声認識
等があり、出力装置として例えば、ディスプレイ、プリ
ンタ等がある。なお、ネットワークシステムにおいては
端末装置やワークステーションを入出力装置5とみなす
ことができる。
【0017】(2):スレッド管理データの入れ替えの
説明 図3はスレッド管理データの入れ替えの説明図である。
図3において、メモリ2とスレッド管理用キャッシュ領
域31が設けてある。また、メモリ2には、スレッド管
理データ21、22が格納されている。
【0018】スレッド管理データ21、22は、メモリ
上のスレッド管理領域に格納され、このスレッド管理デ
ータ21、22には、実行場所を示すプログラムカウン
タ(PC)、スレッドの名前、スレッドの優先度、現在
使用中か否か等の状態等が格納される。スレッド管理用
キャッシュ領域31は、ハードウェア上に直接実装され
たスレッド管理用とした割り当てられたキャッシュ領域
(通常のキャッシュ3が使用できる)である。
【0019】現在実行中のスレッドの管理データ(例え
ばスレッド管理データ21)を常時、スレッド管理用キ
ャッシュ領域31にロードしておく。キャッシュ領域
は、レジスタにより一意に示されるアドレスであり、現
在実行中のスレッド管理データ(情報)21は高速にア
クセスされる。そして、実行スレッドの切り替えが行わ
れると、スレッド管理用キャッシュ領域31内の情報を
メモリ2上のデータに反映し、新たに実行されるスレッ
ド管理データ22をスレッド管理用キャッシュ領域31
にロードする。
【0020】図4はスレッド管理データの入れ替え処理
フローチャートである。処理手段であるCPU1は、ス
レッドの切り替えがおこるたびに、それまで実行中のス
レッドの管理データをメモリ2上のスレッド管理領域に
退避し、次にこれから実行しようとするスレッドの管理
データをメモリ2上の管理領域からスレッド管理用キャ
ッシュ領域31へロードするものである。即ち、現在実
行中のスレッドのスレッド管理データを積極的にキャッ
シュ領域に入れるものである。以下、図4の処理S1〜
S3に従って説明する。
【0021】S1:CPU1は、スレッドの切り替えが
おこると処理S2に移る。
【0022】S2:CPU1は、それまで実行中のスレ
ッドの管理データをメモリ2上のスレッド管理領域に退
避し処理S3に移る。
【0023】S3:CPU1は、次にこれから実行しよ
うとするスレッドの管理データをメモリ2上の管理領域
からスレッド管理用キャッシュ領域31へロードする。
【0024】図5はスレッド管理データのアクセス方法
の説明図である。処理手段であるCPU1は、各スレッ
ドの状態をチェックするに当たり、現在実行中のスレッ
ドかどうかを判断した上で、スレッド管理用キャッシュ
領域31中の管理データをアクセスするか、メモリ2内
の管理領域をアクセスするかを決定するものである。以
下、図5の処理S11〜S14に従って説明する。
【0025】S11:CPU1は、スレッド管理データ
にアクセスするとき、処理S12に移る。
【0026】S12:CPU1は、アクセスするスレッ
ドが現在アクティブなスレッドかどうかを判断する。こ
の判断で現在アクティブなスレッドの場合は処理S13
に移り、もし現在アクティブなスレッドでない場合は処
理S14に移る。
【0027】S13:CPU1は、スレッド管理用キャ
ッシュ領域31にアクセスする。
【0028】S14:CPU1は、メモリ2にアクセス
する。
【0029】(3):仮想マシンでの説明 図6は仮想マシンでのスレッド管理データの配置の説明
図である。図6において、仮想マシン(バーチャルマシ
ン)10、メモリ2上のスレッドデータ、、スレッ
ド管理用キャッシュ領域31が設けてある。スレッドデ
ータには、スレッド固有の情報23(スレッド管理デ
ータ21を除く)とスレッド管理データ21が設けてあ
り、スレッドデータには、スレッド固有の情報24
(スレッド管理データ22を除く)とスレッド管理デー
タ22が設けてある。
【0030】図6では、種々のプラットフォームに移植
して使用できる仮想マシン10を用いたシステムでのス
レッド制御を、スレッドデータ、の内部に設けた管
理データ領域(スレッド管理データ21、22)とスレ
ッド管理用のキャッシュ領域31を使い制御した例を示
している。スレッドデータ、には、スレッド固有の
情報が格納されており、その一部であるスレッド管理デ
ータ21、22はそのスレッドが実行されているときに
は、キャッシュ領域(スレッド管理用キャッシュ領域3
1)にロードされ高速アクセスの対象となる。スレッド
管理用キャッシュ領域31は、CPU1がハードウェア
のレジスタから参照することで高速に現在実行中のスレ
ッドの管理データにアクセスすることができる。スレッ
ド管理用キャッシュ領域31は、ソフトウェアによりメ
モリ上に又はハードウェアにより設けることができる。
【0031】また、現在実行中のスレッドの管理データ
の場所を常に特定のレジスタを用いて指し示すようにす
ることも可能である。この場合、スレッド管理データへ
のアクセスは、レジスタの示すメモリを読み出すだけで
アクセスできるので高速である(スレッド管理用の専用
のキャッシュを用いないのでスレッド管理データを入れ
換える必要はない)。この場合は、タスク(実行スレッ
ド)の切り替えの際にこのレジスタの値も書き換える必
要がある。
【0032】(4):スタックを使用する場合の説明 図7はスタック上にスレッド管理データを設ける説明図
である。図7において、スレッドに対応するスタック
と、スレッドに対応するスタックが設けてある。
そして、各スタック、の端にそれぞれスレッド管理
データ21、22が設けてある。なお、スタック、
の領域25、26は、各スレッド、の作業領域とな
る。
【0033】この例では各スレッドのスタック域(メモ
リ2上に構成される)の端にスレッド管理データ21、
22を置いた場合である。このように、スレッドを実現
するためには、スレッド毎にスタックを用意する必要が
ある。従って、スレッド一つについて必ずスタックが一
つ存在するので、そのスタックの一部をスレッドの管理
データとすることができる。
【0034】スタック処理を高速に実行するために設計
されたスタックマシンなどでは、現在実行中のスタック
が自動的にハードウェアによりキャッシュに入るため、
スタックの端にスレッド管理データを置くことでスレッ
ド管理データのアクセス速度が改善される。
【0035】(スタックのオーバーフロー領域を使用す
る場合の説明)スタックのオーバーフローをハードウェ
アで検知するために専用のレジスタが用意されているC
PUもある。このようなCPUでは、スタックのオーバ
ーフロー領域(スタックとしては使われない領域)にス
レッド管理データを置くことで、スタックのオーバーフ
ローレジスタを使い高速にスレッド管理データにアクセ
スすることができる。
【0036】図8はスタックオーバーフロー領域にスレ
ッド管理データを設ける説明図である。図8において、
スレッドに対応するスタック、スタックオーバーフ
ロー領域26、スタックオーバーフローレジスタ27が
設けてある。そして、このスタックオーバーフロー領域
26にスレッド管理データを置くものである。なお、ス
タック、スタックオーバーフロー領域26は、メモリ
2上に作成されるものである。
【0037】図7や図8のように、スタックの一部をス
レッド管理データとした場合は、個別にキャッシュとの
間で出し入れせずとも、OSのスレッド切替機能を使っ
て、スレッド管理データの入れ換えが自動的に行われる
というメリットがある。
【0038】以上実施の形態で説明したように、プログ
ラムのスレッド管理におけるメモリ参照におけるオーバ
ーヘッドを排除し、効率のよい管理が可能になり、スレ
ッドを用いたプログラムの運用に寄与するところが大き
い。
【0039】〔以下付記を記載する〕 (付記1) 仮想マシン上にマルチスレッド処理を実現
する場合のスレッド管理方法であって、現在実行中のス
レッドを管理するスレッド管理情報をメモリ上からキャ
ッシュ領域に入れることを特徴としたスレッド管理方
法。
【0040】(付記2) 現在実行中のスレッドかどう
かを判断して、アクセスするスレッド管理情報の所在を
判定することを特徴とした付記1記載のスレッド管理方
法。
【0041】(付記3) 前記キャッシュ領域をハード
ウェアによりスレッド管理用として設けることを特徴と
した付記1又は2記載のスレッド管理方法。
【0042】(付記4) スタック処理を行うスタック
上の領域を一意に示すハードウェアを備え、前記スタッ
ク上の領域に前記スレッド管理情報を格納するこを特徴
とした付記1又は2記載のスレッド管理方法。
【0043】(付記5) 仮想マシン上にマルチスレッ
ド処理を実現する情報処理装置であって、情報の処理を
行う処理手段と、情報を格納するメモリと、高速アクセ
ス可能なキャッシュ領域とを備え、前記処理手段は、現
在実行中のスレッドを管理するスレッド管理情報を前記
メモリ上から前記キャッシュ領域に入れることを特徴と
した情報処理装置。
【0044】(付記6) 前記処理手段は、現在実行中
のスレッドかどうかを判断して、アクセスするスレッド
管理情報の所在を判定することを特徴とした付記5記載
の情報処理装置。
【0045】(付記7) 前記キャッシュ領域をハード
ウェアによりスレッド管理用として設けることを特徴と
した付記5又は6記載の情報処理装置。
【0046】(付記8) 前記処理手段がスタック処理
を行うためのスタックと、該スタック上の領域を一意に
示すハードウェアとを備え、前記スタック上の領域に前
記スレッド管理情報を格納するこを特徴とした付記5又
は6記載の情報処理装置。
【0047】
【発明の効果】以上説明したように、本発明によれば次
のような効果がある。
【0048】(1):仮想マシン上にマルチスレッド処
理を実現する場合であって、現在実行中のスレッドを管
理するスレッド管理情報をメモリ上からキャッシュ領域
に入れるため、プログラムのスレッド管理におけるメモ
リ参照におけるオーバーヘッドを排除し、効率のよい管
理が可能となる。
【0049】(2):現在実行中のスレッドかどうかを
判断して、アクセスするスレッド管理情報の所在を判定
するため、スレッド管理情報の所在を容易に判定するこ
とができる。
【0050】(3):キャッシュ領域をハードウェアに
よりスレッド管理用として設けるため、キャッシュ領域
がハードウェアであるためアクセス速度を高速に行うこ
とができる。
【0051】(4):スタック上の領域を一意に示すハ
ードウェアとを備え、該スタック上の領域にスレッド管
理情報を格納するため、ハードウェアを使い高速にスレ
ッド管理情報にアクセスすることができ、また、個別に
キャッシュとの間で出し入れせずとも、OSのスレッド
切替機能を使って、スレッド管理情報の入れ換えを自動
的に行うことができる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】実施の形態における情報処理装置の説明図であ
る。
【図3】実施の形態におけるスレッド管理データの入れ
替えの説明図である。
【図4】実施の形態におけるスレッド管理データの入れ
替え処理フローチャートである。
【図5】実施の形態におけるスレッド管理データのアク
セス方法の説明図である。
【図6】実施の形態における仮想マシンでのスレッド管
理データの配置の説明図である。
【図7】実施の形態におけるスタック上にスレッド管理
データを設ける説明図である。
【図8】実施の形態におけるスタックオーバーフロー領
域にスレッド管理データを設ける説明図である。
【符号の説明】 、 スレッド 1a 処理手段 2 メモリ 3a キャッシュ領域 21a、22a スレッド管理情報

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】仮想マシン上にマルチスレッド処理を実現
    する場合のスレッド管理方法であって、 現在実行中のスレッドを管理するスレッド管理情報をメ
    モリ上からキャッシュ領域に入れることを特徴としたス
    レッド管理方法。
  2. 【請求項2】仮想マシン上にマルチスレッド処理を実現
    する情報処理装置であって、 情報の処理を行う処理手段と、 情報を格納するメモリと、 高速アクセス可能なキャッシュ領域とを備え、 前記処理手段は、現在実行中のスレッドを管理するスレ
    ッド管理情報を前記メモリ上から前記キャッシュ領域に
    入れることを特徴とした情報処理装置。
  3. 【請求項3】前記処理手段は、現在実行中のスレッドか
    どうかを判断して、アクセスするスレッド管理情報の所
    在を判定することを特徴とした請求項2記載の情報処理
    装置。
  4. 【請求項4】前記キャッシュ領域をハードウェアにより
    スレッド管理用として設けることを特徴とした請求項2
    又は3記載の情報処理装置。
  5. 【請求項5】前記処理手段がスタック処理を行うための
    スタックと、 該スタック上の領域を一意に示すハードウェアとを備
    え、 前記スタック上の領域に前記スレッド管理情報を格納す
    るこを特徴とした請求項2又は3記載の情報処理装置。
JP2001064415A 2001-03-08 2001-03-08 スレッド管理方法及び情報処理装置 Withdrawn JP2002268897A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001064415A JP2002268897A (ja) 2001-03-08 2001-03-08 スレッド管理方法及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001064415A JP2002268897A (ja) 2001-03-08 2001-03-08 スレッド管理方法及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2002268897A true JP2002268897A (ja) 2002-09-20

Family

ID=18923235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001064415A Withdrawn JP2002268897A (ja) 2001-03-08 2001-03-08 スレッド管理方法及び情報処理装置

Country Status (1)

Country Link
JP (1) JP2002268897A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ
JP4520788B2 (ja) * 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ

Similar Documents

Publication Publication Date Title
KR100733852B1 (ko) 계산기 시스템
US6275893B1 (en) Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US8171267B2 (en) Method and apparatus for migrating task in multi-processor system
US7661115B2 (en) Method, apparatus and program storage device for preserving locked pages in memory when in user mode
KR20080104073A (ko) 처리 유닛의 동적 로드 및 언로드
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
KR20040105685A (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어방법, 및 컴퓨터 프로그램
US20040122834A1 (en) Apparatus and method for switching mode in a computer system
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
US20210055948A1 (en) Fast thread execution transition
WO2022042127A1 (zh) 一种协程切换的方法、装置及设备
US6895583B1 (en) Task control block for a computing environment
US8266379B2 (en) Multithreaded processor with multiple caches
JP5131269B2 (ja) マルチプロセッシングシステム
JP2002268897A (ja) スレッド管理方法及び情報処理装置
US6915408B2 (en) Implementation of thread-static data in multi-threaded computer systems
KR100486259B1 (ko) 컴퓨터 시스템의 동작 속도를 향상시키는 캐쉬 구조를 가지는 프로세서 및 캐쉬 관리 방법
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
Hui et al. Supporting Hot-Swappable Components for System Software.
JPH11134204A (ja) スタック保護装置
JPS6349945A (ja) デ−タ処理装置のプロセス・ロ−ルイン方式
KR100506254B1 (ko) 임베디드 시스템의 비특권 모드에서 인터럽트 처리를 위한장치 및 방법
JP2004086921A (ja) マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法
JP2004021610A (ja) タスク管理装置
JP4780327B2 (ja) パーティション・コンテキスト制御装置及び方法、並びにコンピュータ

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080513