JP3818172B2 - Multiprocessor system, process control method, and process control program - Google Patents
Multiprocessor system, process control method, and process control program Download PDFInfo
- Publication number
- JP3818172B2 JP3818172B2 JP2002048101A JP2002048101A JP3818172B2 JP 3818172 B2 JP3818172 B2 JP 3818172B2 JP 2002048101 A JP2002048101 A JP 2002048101A JP 2002048101 A JP2002048101 A JP 2002048101A JP 3818172 B2 JP3818172 B2 JP 3818172B2
- Authority
- JP
- Japan
- Prior art keywords
- busy lock
- busy
- address
- lock
- instruction
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、マルチプロセッサシステム、プロセス制御方法、および、プロセス制御プログラムに関し、特に、繁忙ロック専用プロセッサを設けるマルチプロセッサシステム、プロセス制御方法、および、プロセス制御プログラムに関する。
【0002】
ここで、「繁忙ロック対象資源利用処理」とは、複数のプログラムからプログラムの一部として実行される処理であり、かつ、ロック(専有ロック)の対象となる資源を利用する処理であり、かつ、繁忙な態様で(頻繁に)実行される処理をいう。なお、上記のような繁忙ロック対象資源利用処理でロックの対象となる資源を「繁忙ロック対象資源」と呼称する。
【0003】
【従来の技術】
従来のマルチプロセッサシステムの一例が、特開平07−325791号公報に記載されている。
【0004】
図9は、当該公報に記載されたマルチプロセッサシステム(CPU(Central Processing Unit)固定システム)の構成を示すブロック図である。
【0005】
図9に示すように、このマルチプロセッサシステムは、ジョブ(プログラムの実行単位。本発明における「プロセス」に該当する)の開始時にCPU固定フラグを設定するCPU固定フラグ設定手段と、該ジョブの固定CPU番号格納領域にユーザ指定のCPU番号を格納する固定CPU番号設定手段と、空き状態のCPU発生時に実行待ちジョブキューからCPUを割り当てるジョブを選択するCPU割り当てジョブ選択手段と、該ジョブの固定CPU番号と空き状態のCPU番号とが一致した場合に該ジョブにCPUを割り当てるCPU固定判断手段およびCPU割り当て手段と、オペレータコマンド指定のCPU番号に該ジョブの固定CPU番号格納領域の値を変更する固定CPU番号再設定手段と、該ジョブを実行中のCPUから解放するCPU再割り当て手段とを含んで構成されている(CPU固定フラグおよび固定CPU番号格納領域はそれぞれn(正整数)個存在している)。
【0006】
このような構成を有するマルチプロセッサシステムをはじめとする従来のマルチプロセッサシステムでは、プログラムの実行時に、プロセス(プログラムの実行単位。上記公報では「ジョブ」と表記されている)毎にいずれかのプロセッサが割り当てられ、当該プロセスの全ての処理の実行を当該プロセッサが行うように制御すること(プロセス毎に特定のプロセッサで実行させるという制御)が行われていた。
【0007】
したがって、繁忙ロック対象資源利用処理を含むプログラムであっても、当該プログラムの全ての処理(当該繁忙ロック対象資源利用処理およびそれ以外の処理)の全ての命令が特定のプロセッサによって実行されていた。
【0008】
【発明が解決しようとする課題】
上述した従来のマルチプロセッサシステムでは、プロセス(プログラムの実行単位)毎に特定のプロセッサで実行させるという制御が行われているため、繁忙ロック対象資源利用処理が全てのプロセッサによって均等に実行される可能性があったので、複数のプログラムにおいて「プログラムの一部」として実行される繁忙ロック対象資源利用処理が実行される際に、各プロセッサにおいてキャッシュミスヒットが頻発し、当該繁忙ロック対象資源利用処理の処理性能が低下し、システムのスループットの低下が生じるおそれがあるという問題点があった。
【0009】
例えば、オンラインで多数のプロセスから頻繁にデータベースがアクセスされるマルチプロセッサシステムにおいて、データベースのアクセスにシステム共有のバッファ制御機能が利用される場合を考えてみる。
【0010】
この場合には、各プロセスから頻繁にバッファ制御機能が呼び出されることになる。ここで、バッファ制御機能はシステム共有であるため、ロック処理によりプロセス間でシリアライズする必要がある。したがって、従来のマルチプロセッサシステムのように、プロセス毎に特定のプロセッサで実行させるという制御が行われている場合には、バッファ制御機能を実現する処理を実行する複数のプロセスが複数のプロセッサで交互に実行され、バッファ制御機能を実現する処理を実行するプロセッサが変わるたびにメモリ上の共有情報(バッファ制御機能に関する管理情報や制御情報等)の参照時にキャッシュメモリのミスヒットが発生することになり、頻繁に動作するバッファ制御機能の性能が低下し、システムのスループットの低下がもたらされる。
【0011】
本発明の目的は、上述の点に鑑み、プロセッサ毎にキャッシュメモリを備える複数のプロセッサからなるマルチプロセッサシステムにおいて、プロセス毎に特定のプロセッサで実行させるという制御を行うのではなく、繁忙ロック対象資源利用処理を特定のプロセッサのみで実行することにより、繁忙ロック対象資源利用処理で参照されるメモリ領域の情報を当該プロセッサのキャッシュメモリに載せ続けることによってキャッシュヒット率を高め、システムのスループットを向上させることができるマルチプロセッサシステムを提供することにある。
【0012】
なお、本発明のマルチプロセッサシステムに対する従来技術に関する特許公報としては、上記の公報の他に、複数のプロセッサ(以下の公報では、「プロセッサモジュール」や「計算機」と表現されている)からなるシステムを考察している点で本発明と類似している「特開平04−340648号公報」および「特開平11−65863号公報」が存在する。
【0013】
上記の特開平04−340648号公報に記載された技術(「代表プロセッサモジュールの選出方法」)は、いくつかの中央処理装置とメモリとを持つプロセッサモジュールを複数備えた計算機システムにおいて、システム全体の監視等を行うための代表となるプロセッサモジュールを適切に選出するための技術である。
【0014】
また、上記の特開平11−65863号公報に記載された技術(「共有資源管理方法」)は、結合機構を用いた並列コンピュータシステムにおいて、共有資源の排他制御を集中的に実施するシステムを提供するための技術である。
【0015】
しかしながら、これらの技術は、本発明の特徴である「繁忙ロック対象資源利用処理を特定のプロセッサで実行させること」については何ら考察しておらず、本発明とは本質的に相違するものである。
【0016】
【課題を解決するための手段】
本発明のマルチプロセッサシステムは、キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムであって、
頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する前記初期設定手段と、
プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する前記プロセス開始手段と、
自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す前記実行処理選択手段と、
「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記汎用プロセス実行手段と、
「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記繁忙ロック実行手段と、
を備える前記プロセッサを有する。
【0017】
本発明のプロセス制御方法は、キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムにおけるプロセス制御方法であって、
前記初期設定手段が、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順と、
前記プロセス開始手段が、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順と、
前記実行処理選択手段が、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順と、
前記汎用プロセス実行手段が、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
前記繁忙ロック実行手段が、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
を含む。
【0018】
本発明のプロセス制御プログラムは、キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムにおけるプロセス制御プログラムであって、
前記初期設定手段に、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順を実行させ、
前記プロセス開始手段に、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順を実行させ、
前記実行処理選択手段に、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順を実行させ、
前記汎用プロセス実行手段に、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順を実行させ、
前記繁忙ロック実行手段に、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、を実行させる。
【0021】
【発明の実施の形態】
次に、本発明について図面を参照して詳細に説明する。
【0022】
(1) 第1の実施の形態
【0023】
図1は、本発明の第1の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
【0024】
図1を参照すると、本実施の形態に係るマルチプロセッサシステムは、複数のプロセッサ100と、メモリ200とを含んで構成されている。
【0025】
各プロセッサ100は、本発明を実現するための各手段からなる手段群1と、キャッシュメモリ101とを備えている。なお、図1に示すマルチプロセッサシステムでは、いずれかのプロセッサ100が繁忙ロック対象資源利用処理(繁忙ロック対象資源を利用する処理)を専用に実行するプロセッサ(繁忙ロック専用プロセッサ)になること以外に関しては、各プロセッサ100は対等の関係にある。
【0026】
メモリ200は、繁忙ロック対象資源の存在位置(アドレス)を示す情報である繁忙ロックアドレスを格納する繁忙ロックアドレス格納領域10と、繁忙ロック専用プロセッサのプロセッサ番号を格納する繁忙ロック専用プロセッサ番号格納領域11と、繁忙ロック対象資源利用処理以外の処理の実行を待機しているプロセスに関する情報(当該プロセスのプロセス番号と当該プロセスが割り当てられているプログラム中の次に実行すべき命令の命令アドレスとの組)である汎用プロセス情報がキュー形式で登録されている汎用プロセスキュー12と、繁忙ロック対象資源利用処理の実行を待機しているプロセスに関する情報(当該プロセスのプロセス番号と当該プロセスが割り当てられているプログラム中の次に実行すべき命令の命令アドレスとの組)である繁忙ロック専用プロセス情報がキュー形式で登録されている繁忙ロック専用プロセスキュー13とを具備している。
【0027】
各プロセッサ100内の手段群1は、初期設定手段2と、プロセス開始手段3と、実行処理選択手段4と、汎用プロセス実行手段5と、繁忙ロック実行手段6とを含んで構成されている。
【0028】
図2は、初期設定手段2の処理を示す流れ図(フローチャート)である。この処理は、繁忙ロックアドレス格納ステップ201と、繁忙ロック専用プロセッサ番号格納ステップ202と、汎用プロセスキュー空設定ステップ203と、繁忙ロック専用プロセスキュー空設定ステップ204とからなる。
【0029】
図3は、プロセス開始手段3の処理を示す流れ図である。この処理は、プロセス番号割り当てステップ301と、汎用プロセス情報登録ステップ302とからなる。
【0030】
図4は、実行処理選択手段4の処理を示す流れ図である。この処理は、自プロセッサ番号判定ステップ401と、汎用プロセス実行手段制御移行ステップ402と、繁忙ロック実行手段制御移行ステップ403とからなる。
【0031】
図5は、汎用プロセス実行手段5の処理を示す流れ図である。この処理は、汎用プロセスキュー空判定ステップ501と、汎用プロセス情報取り出しステップ502と、繁忙ロック対象資源ロック命令当否判定ステップ503と、命令実行ステップ504と、繁忙ロック専用プロセス情報登録ステップ505と、プログラム最後命令当否判定ステップ506と、命令アドレス進行ステップ507と、実行処理選択手段制御移行ステップ508とからなる。
【0032】
図6は、繁忙ロック実行手段6の処理を示す流れ図である。この処理は、繁忙ロック専用プロセスキュー空判定ステップ601と、繁忙ロック専用プロセス情報取り出しステップ602と、繁忙ロック対象資源アンロック命令当否判定ステップ603と、命令実行ステップ604と、汎用プロセス情報登録ステップ605と、プログラム最後命令当否判定ステップ606と、命令アドレス進行ステップ607と、実行処理選択手段制御移行ステップ608とからなる。
【0033】
図7は、本実施の形態に係るマルチプロセッサシステムの具体的な動作を説明するための図である。
【0034】
次に、図1〜図7を参照して、上記のように構成された本実施の形態に係るマルチプロセッサシステムの全体の動作について詳細に説明する。
【0035】
初めに、図1〜図6を参照して、一般的・概略的な動作について説明する。
【0036】
第1に、システム立ち上げ時の動作について説明する。
【0037】
システム立ち上げ時に、いずれかのプロセッサ100内の初期設定手段2は、以下に示すように、メモリ200内の本発明に関する情報の初期設定処理を行う(図2参照)。なお、どのプロセッサ100がこの初期設定処理を担当するかは、当該マルチプロセッサシステムにおいて予め設定されている選択アルゴリズム(従来技術と同様の選択アルゴリズム)によって決定される。
【0038】
まず、メモリ200内の繁忙ロックアドレス格納領域10に、繁忙ロック対象資源の位置を特定するためのアドレス(繁忙ロックアドレス)を格納する(ステップ201)。
【0039】
また、メモリ200内の繁忙ロック専用プロセッサ番号格納領域11に、繁忙ロック対象資源利用処理を実行するための専用のプロセッサ(繁忙ロック専用プロセッサ)のプロセッサ番号(繁忙ロック専用プロセッサ番号)を格納する(ステップ202)。
【0040】
さらに、メモリ200内の汎用プロセスキュー12を空に設定し(ステップ203)、メモリ200内の繁忙ロック専用プロセスキュー13を空に設定する(ステップ204)。
【0041】
第2に、ユーザからプログラム(繁忙ロック対象資源利用処理を含むプログラム)の開始が指示された場合の動作について説明する。
【0042】
ユーザから当該プログラムの開始が指示された場合に、いずれかのプロセッサ100内のプロセス開始手段3は、以下に示すようなプロセス開始処理を行う(図3参照)。なお、どのプロセッサ100がこのプロセス開始処理を担当するかは、当該マルチプロセッサシステムにおいて予め設定されている選択アルゴリズム(従来技術と同様の選択アルゴリズム)によって決定される。
【0043】
まず、当該プログラムにプロセス番号(当該プログラムを実行するためのプロセスのプロセス番号)を割り当てる(ステップ301)。
【0044】
また、当該プロセス番号と当該プログラムの開始命令アドレスとの組を示す情報を、汎用プロセス情報として、メモリ200内の汎用プロセスキュー12に登録する(ステップ302)。
【0045】
第3に、各プロセッサ100内の実行処理選択手段4の動作について説明する。
【0046】
実行処理選択手段4は、自プロセッサ(自己が存在するプロセッサ100。他の手段に関しても、この「自プロセッサ」という表現を用いる)がプロセスを実行する時に、以下に示すような処理を行う(図4参照)。
【0047】
まず、繁忙ロック専用プロセッサ番号格納領域11を参照し、自プロセッサのプロセッサ番号と繁忙ロック専用プロセッサ番号格納領域11のプロセッサ番号(繁忙ロック専用プロセッサ番号)とが等しいか否かを判定し(ステップ401)、その判定によって自プロセッサが繁忙ロック専用プロセッサであるか否かを判断する。
【0048】
ステップ401で「両プロセッサ番号が等しくない」と判定した場合(自プロセッサが繁忙ロック専用プロセッサではないと判断した場合)には、自プロセッサ内の汎用プロセス実行手段5に制御を渡す(ステップ402)。
【0049】
一方、ステップ401で「両プロセッサ番号が等しい」と判定した場合(自プロセッサが繁忙ロック専用プロセッサであると判断した場合)には、自プロセッサ内の繁忙ロック実行手段6に制御を渡す(ステップ403)。
【0050】
第4に、各プロセッサ100内の汎用プロセス実行手段5の動作について説明する。
【0051】
汎用プロセス実行手段5は、自プロセッサ内の実行処理選択手段4から制御を渡されると、以下に示すような処理を行う(図5参照)。
【0052】
まず、汎用プロセスキュー12が空であるか否かを判定する(ステップ501)。
【0053】
ステップ501で「汎用プロセスキュー12が空である」と判定した場合には、自プロセッサ内の実行処理選択手段4に制御を渡す(ステップ508)。
【0054】
一方、ステップ501で「汎用プロセスキュー12が空ではない」と判定した場合には、汎用プロセスキュー12からプロセス番号と命令アドレスとの組(汎用プロセス情報)を取り出し(ステップ502)、当該命令アドレスで特定される命令から順に当該プロセスが割り当てられたプログラム中の各命令の実行を試みる。
【0055】
各命令の実行に際しては、当該命令の実行前に、繁忙ロックアドレス格納領域10を参照し、当該命令が繁忙ロック対象資源利用処理の開始を示すロック命令(繁忙ロック対象資源のロック命令)であるか否かを判定する。すなわち、当該命令が、ロック命令であり、かつ、そのロック命令のロックアドレス(ロック対象の資源の存在位置を示す情報)が繁忙ロックアドレス格納領域10内の繁忙ロックアドレスと等しいか否かを判定する(ステップ503)。
【0056】
ステップ503で「当該命令が繁忙ロック対象資源利用処理の開始を示すロック命令である」と判定した場合には、当該命令を実行せずに、当該プロセス番号と当該命令の命令アドレスとの組(繁忙ロック専用プロセス情報)を繁忙ロック専用プロセスキュー13に登録し(ステップ505)、実行処理選択手段4に制御を渡す(ステップ508)。
【0057】
一方、ステップ503で「当該命令が繁忙ロック対象資源利用処理の開始を示すロック命令ではない」と判定した場合には、当該命令を実行し(ステップ504)、当該命令がプログラムの最後の命令(最終命令)であるか否かを判定する(ステップ506)。
【0058】
ステップ506で「当該命令がプログラムの最後の命令である」と判定した場合には、実行処理選択手段4に制御を渡す(ステップ508)。
【0059】
一方、ステップ506で「当該命令がプログラムの最後の命令ではない」と判定した場合には、命令アドレスを次の命令に進め(ステップ507)、当該「次の命令」を対象にしてステップ503以降の処理および判定を繰り返す。
【0060】
第5に、各プロセッサ100内の繁忙ロック実行手段6の動作について説明する。
【0061】
繁忙ロック実行手段6は、自プロセッサ内の実行処理選択手段4から制御を渡されると、以下に示すような処理を行う(図6参照)。
【0062】
まず、繁忙ロック専用プロセスキュー13が空であるか否かを判定する(ステップ601)。
【0063】
ステップ601で「繁忙ロック専用プロセスキュー13が空である」と判定した場合には、自プロセッサ内の実行処理選択手段4に制御を渡す(ステップ608)。
【0064】
一方、ステップ601で「繁忙ロック専用プロセスキュー13が空ではない」と判定した場合には、繁忙ロック専用プロセスキュー13からプロセス番号と命令アドレスとの組(繁忙ロック専用プロセス情報)を取り出し(ステップ602)、当該命令アドレスで特定される命令から順に当該プロセスが割り当てられたプログラム中の各命令の実行を試みる。
【0065】
各命令の実行に際しては、当該命令の実行前に、繁忙ロックアドレス格納領域10を参照し、当該命令が繁忙ロック対象資源利用処理の終了を示すアンロック命令(繁忙ロック対象資源のアンロック命令)であるか否かを判定する。すなわち、当該命令が、アンロック命令であり、かつ、そのアンロック命令のアンロックアドレス(アンロック対象の資源の存在位置を示す情報)が繁忙ロックアドレス格納領域10内の繁忙ロックアドレスと等しいか否かを判定する(ステップ603)。
【0066】
ステップ603で「当該命令が繁忙ロック対象資源利用処理の終了を示すアンロック命令である」と判定した場合には、当該命令を実行せずに、当該プロセス番号と当該命令の命令アドレスとの組(汎用プロセス情報)を汎用プロセスキュー12に登録し(ステップ605)、実行処理選択手段4に制御を渡す(ステップ608)。
【0067】
一方、ステップ603で「当該命令が繁忙ロック対象資源利用処理の終了を示すアンロック命令ではない」と判定した場合には、当該命令を実行し(ステップ604)、当該命令がプログラムの最後の命令(最終命令)であるか否かを判定する(ステップ606)。
【0068】
ステップ606で「当該命令がプログラムの最後の命令である」と判定した場合には、実行処理選択手段4に制御を渡す(ステップ608)。
【0069】
一方、ステップ606で「当該命令がプログラムの最後の命令ではない」と判定した場合には、命令アドレスを次の命令に進め(ステップ607)、当該「次の命令」を対象にしてステップ603以降の処理および判定を繰り返す。
【0070】
続いて、図7および上述の各流れ図(図2〜図6)を参照して、本実施の形態に係るマルチプロセッサシステムの具体的な動作について説明する。
【0071】
図7に示す例では、2台のプロセッサ100(プロセッサ701およびプロセッサ702とする)が存在し、それらのプロセッサ番号がそれぞれ「01」および「02」であるものとする。
【0072】
また、プロセッサ702を繁忙ロック専用プロセッサとし、繁忙ロック対象資源703のアドレス(繁忙ロックアドレス)をLとする。
【0073】
さらに、ユーザが開始を指示するプログラム704において、開始命令アドレスをPA1とし、繁忙ロック対象資源利用処理を開始するロック命令(繁忙ロック対象資源703のロック命令)のアドレスをPA2とし、繁忙ロック対象資源利用処理を終了するアンロック命令(繁忙ロック対象資源703のアンロック命令)のアドレスをPA3とする。
【0074】
第1に、システム立ち上げ時の動作について説明する。
【0075】
システム立ち上げ時に、プロセッサ701/702内の初期設定手段2は、以下に示すような処理を行う。
【0076】
図2のステップ201において、繁忙ロックアドレス格納領域10に繁忙ロック対象資源703のアドレス(繁忙ロックアドレス)のLを格納し、ステップ202において、繁忙ロック専用プロセッサ番号格納領域11に繁忙ロック専用プロセッサのプロセッサ番号の「02」を格納する。
【0077】
また、ステップ203において、汎用プロセスキュー12を空にし、ステップ204において、繁忙ロック専用プロセスキュー13を空にする。
【0078】
第2に、ユーザからプログラム704の開始が指示された場合の動作について説明する。
【0079】
ユーザからプログラム704の開始が指示された場合に、プロセッサ701/702内のプロセス開始手段3は、図3のステップ301において、プログラム704にプロセス番号を割り当て(本例では、このプロセス番号を「P1」とし、このプロセス番号のプロセスを「プロセスP1」と呼ぶ)、ステップ302において、当該プロセス番号P1とプログラム704の開始命令アドレスPA1との組を示す汎用プロセス情報を汎用プロセスキュー12に登録する。
【0080】
第3に、プロセッサ701(プロセッサ番号が「01」のプロセッサ100)が、プログラム704に割り当てられたプロセスP1を実行する時(プログラム704中の開始命令(アドレスPA1の命令)からアドレスPA2のロック命令の直前の命令までの実行時)の動作について説明する。
【0081】
この時には、プロセッサ701内の実行処理選択手段4は、図4のステップ401において、自プロセッサのプロセッサ番号「01」と繁忙ロック専用プロセッサ番号格納領域11内のプロセッサ番号「02」(繁忙ロック専用プロセッサ番号)とを比較して「両者が等しくない」と判断するため、ステップ402において、自プロセッサ内の汎用プロセス実行手段5に制御を渡す。
【0082】
汎用プロセス実行手段5は、図5のステップ501において、汎用プロセスキュー12が空であるか否かを判断する。
【0083】
この場合には、プロセス開始手段3によってプロセスP1のプロセス番号P1と命令アドレスPA1との組からなる汎用プロセス情報が汎用プロセスキュー12に登録された直後であるので、汎用プロセス実行手段5は、ステップ501で「汎用プロセスキュー12が空ではない」と判断する。
【0084】
したがって、汎用プロセス実行手段5は、ステップ502において、汎用プロセスキュー12からプロセス番号P1と命令アドレスPA1との組からなる汎用プロセス情報を取り出し、ステップ503において、アドレスPA1の命令がロック命令であり、かつそのロックアドレスが繁忙ロックアドレス格納領域10内の繁忙ロックアドレスLと等しいか否かを検査(判断)する。
【0085】
この場合には、「アドレスPA1の命令(プログラム704の開始命令)はロックアドレスがLのロック命令ではない」と判断できるので、汎用プロセス実行手段5は、ステップ504において、アドレスPA1の命令を実行し、ステップ506において、当該命令がプログラムの最後の命令(最終命令)であるか否かを検査(判断)する。
【0086】
この場合には、「当該命令はプログラムの最終命令ではない(アドレスPA1はプログラムの最後ではない)」と判断できるため、汎用プロセス実行手段5は、ステップ507において、命令アドレスを次の命令に進め、当該「次の命令」を対象としたステップ503の判断に戻る。
【0087】
以降、汎用プロセス実行手段5は、命令アドレスが繁忙ロック対象資源703を利用する処理を開始するロック命令のアドレスPA2に進むまで、ステップ503,ステップ504,ステップ506,およびステップ507の処理および判定を繰り返し、プログラム704中の各命令を順次実行していく。
【0088】
命令アドレスがPA2まで進むと、汎用プロセス実行手段5は、ステップ503において、「アドレスPA2の命令がロック命令であり、かつそのロックアドレスが繁忙ロックアドレス格納領域10内のLと等しい」と判断するため、ステップ505において、プロセス番号P1と命令アドレスPA2との組を繁忙ロック専用プロセス情報として繁忙ロック専用プロセスキュー13に登録し、ステップ508において、実行処理選択手段4に制御を渡す。
【0089】
第4に、プロセッサ702(プロセッサ番号が「02」のプロセッサ100)が、プログラム704に割り当てられたプロセスP1を実行する時(プログラム704中のアドレスPA2のロック命令からアドレスPA3のアンロック命令の直前の命令までの実行時)の動作について説明する。
【0090】
この時には、プロセッサ702内の実行処理選択手段4は、図4のステップ401において、自プロセッサのプロセッサ番号「02」と繁忙ロック専用プロセッサ番号格納領域11内のプロセッサ番号「02」とを比較して「両者が等しい」と判断するため、ステップ403において、自プロセッサ内の繁忙ロック実行手段6に制御を渡す。
【0091】
繁忙ロック実行手段6は、図6のステップ601において、繁忙ロック専用プロセスキュー13が空であるか否かを判断する。
【0092】
この場合には、汎用プロセス実行手段5によってプロセスP1のプロセス番号P1と命令アドレスPA2との組からなる繁忙ロック専用プロセス情報が繁忙ロック専用プロセスキュー13に登録された直後であるので、繁忙ロック実行手段6は、ステップ601で「繁忙ロック専用プロセスキュー13が空ではない」と判断する。
【0093】
したがって、繁忙ロック実行手段6は、ステップ602において、繁忙ロック専用プロセスキュー13からプロセス番号P1と命令アドレスPA2との組からなる繁忙ロック専用プロセス情報を取り出し、ステップ603において、アドレスPA2の命令がアンロック命令であり、かつそのアンロックアドレスが繁忙ロックアドレス格納領域10内の繁忙ロックアドレスLと等しいか否かを検査(判断)する。
【0094】
この場合には、「アドレスPA2の命令はアンロックアドレスがLのアンロック命令ではない」と判断できるので、繁忙ロック実行手段6は、ステップ604において、アドレスPA2の命令を実行し、ステップ606において、当該命令がプログラムの最後の命令(最終命令)であるか否かを検査(判断)する。
【0095】
この場合には、「当該命令はプログラムの最終命令ではない」と判断できるため、繁忙ロック実行手段6は、ステップ607において、命令アドレスを次の命令に進め、当該「次の命令」を対象としたステップ603の判断に戻る。
【0096】
以降、繁忙ロック実行手段6は、命令アドレスが繁忙ロック対象資源703を利用する処理を終了するアンロック命令のアドレスPA3に進むまで、ステップ603,ステップ604,ステップ606,およびステップ607の処理および判定を繰り返し、プログラム704中の各命令を順次実行していく。
【0097】
命令アドレスがPA3まで進むと、繁忙ロック実行手段6は、ステップ603において、「アドレスPA3の命令がアンロック命令であり、かつそのアンロックアドレスが繁忙ロックアドレス格納領域10内のLと等しい」と判断するため、ステップ605において、プロセス番号P1と命令アドレスPA3との組を汎用プロセス情報として汎用プロセスキュー12に登録し、ステップ608において、実行処理選択手段4に制御を渡す。
【0098】
第5に、プロセッサ701が、プログラム704に割り当てられたプロセスP1を実行する時(プログラム704中のアドレスPA3のアンロック命令から最終命令までの実行時)の動作について説明する。
【0099】
この時には、プロセッサ701内の実行処理選択手段4は、図4のステップ401において、自プロセッサのプロセッサ番号「01」と繁忙ロック専用プロセッサ番号格納領域11内のプロセッサ番号「02」とを比較して「両者が等しくない」と判断するため、ステップ402において、自プロセッサ内の汎用プロセス実行手段5に制御を渡す。
【0100】
汎用プロセス実行手段5は、図5のステップ501において、汎用プロセスキュー12が空であるか否かを判断する。
【0101】
この場合には、繁忙ロック実行手段6によってプロセスP1のプロセス番号P1と命令アドレスPA3との組からなる汎用プロセス情報が汎用プロセスキュー12に登録された直後であるので、汎用プロセス実行手段5は、ステップ501で「汎用プロセスキュー12が空ではない」と判断する。
【0102】
したがって、汎用プロセス実行手段5は、ステップ502において、汎用プロセスキュー12からプロセス番号P1と命令アドレスPA3との組からなる汎用プロセス情報を取り出し、ステップ503において、アドレスPA3の命令がロック命令であり、かつそのロックアドレスが繁忙ロックアドレス格納領域10内の繁忙ロックアドレスLと等しいか否かを検査(判断)する。
【0103】
この場合には、「アドレスPA3の命令はロックアドレスがLのロック命令ではない」と判断できるので、汎用プロセス実行手段5は、ステップ504において、アドレスPA3の命令を実行し、ステップ506において、当該命令がプログラムの最後の命令(最終命令)であるか否かを検査(判断)する。
【0104】
この場合には、「当該命令はプログラムの最終命令ではない」と判断できるため、汎用プロセス実行手段5は、ステップ507において、命令アドレスを次の命令に進め、当該「次の命令」を対象としたステップ503の判断に戻る。
【0105】
以降、汎用プロセス実行手段5は、命令アドレスがプログラム704の最終命令に進むまで、ステップ503,ステップ504,ステップ506,およびステップ507の処理および判定を繰り返し、プログラム704中の各命令を順次実行していく。
【0106】
命令アドレスがプログラム704の最終命令まで進むと、汎用プロセス実行手段5は、ステップ506において、「判断対象の命令がプログラムの最終命令である」と判断するため、ステップ508において、実行処理選択手段4に制御を渡す。
【0107】
以上のように、本例では、プログラム704の実行において、繁忙ロック対象資源703を利用する処理(アドレスPA2の命令からアドレスPA3の命令の直前の命令までによる処理)のみが繁忙ロック専用プロセッサ(プロセッサ番号「02」のプロセッサ702)で実行され、プログラム704中の他の処理はプロセッサ701で実行される。
【0108】
プログラム704以外の「繁忙ロック対象資源703を利用する処理を含むプログラム」が開始された場合も、同様に、繁忙ロック対象資源703を利用する処理のみが繁忙ロック専用プロセッサ(プロセッサ702)で実行される。したがって、繁忙ロック対象資源703を利用する処理は常にプロセッサ702で実行されることとなり、常にプロセッサ702のキャッシュメモリ101を使用して処理が行われるため、繁忙ロック対象資源703を利用する処理で使用されるメモリ領域のキャッシュヒット率が高まり、システムスループットの向上が可能になる。
【0109】
なお、上記の第1の実施の形態の変形形態として、初期設定手段2やプロセス開始手段3を特定のプロセッサ100(繁忙ロック専用プロセッサに限られないことはいうまでもない)のみに設け、初期設定処理やプロセス開始処理を当該特定のプロセッサ100だけで行わせるようにすることも可能である。
【0110】
(2) 第2の実施の形態
【0111】
図8は、本発明の第2の実施の形態の構成を示すブロック図である。
【0112】
図8を参照すると、本発明の第2の実施の形態は、図1に示した第1の実施の形態に係るマルチプロセッサシステムに対して、プロセス実行制御プログラム800を備える点が異なっている。
【0113】
プロセス実行制御プログラム800は、各プロセッサ100に読み込まれ、当該各プロセッサ100の動作を手段群1(初期設定手段2,プロセス開始手段3,実行処理選択手段4,汎用プロセス実行手段5,および繁忙ロック実行手段6)として制御する。プロセス実行制御プログラム800の制御による各プロセッサ100の動作は、第1の実施の形態における各プロセッサ100内の手段群1(テーブル初期設定手段2,プロセス開始手段3,実行処理選択手段4,汎用プロセス実行手段5,および繁忙ロック実行手段6)の動作と全く同様になるので、その詳しい説明を割愛する。
【0114】
【発明の効果】
以上説明したように、本発明によると、プロセッサ毎にキャッシュメモリを備える複数のプロセッサからなるマルチプロセッサシステムにおいて、繁忙ロック対象資源利用処理を特定のプロセッサ(繁忙ロック専用プロセッサ)のみで実行することにより、繁忙ロック対象資源利用処理で参照されるメモリ領域の情報を当該繁忙ロック専用プロセッサのキャッシュメモリに載せ続けることができ、それによって、キャッシュヒット率を高めることが可能になり、システムのスループットを向上させることができるという効果が生じる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
【図2】図1中の初期設定手段の処理を示す流れ図である。
【図3】図1中のプロセス開始手段の処理を示す流れ図である。
【図4】図1中の実行処理選択手段の処理を示す流れ図である。
【図5】図1中の汎用プロセス実行手段の処理を示す流れ図である。
【図6】図1中の繁忙ロック実行手段の処理を示す流れ図である。
【図7】図1に示すマルチプロセッサシステムの具体的な動作を説明するための図である。
【図8】本発明の第2の実施の形態の構成を示すブロック図である。
【図9】従来のマルチプロセッサシステムの一例(特開平07−325791号公報記載の発明)の構成を示すブロック図である。
【符号の説明】
1 手段群
2 初期設定手段
3 プロセス開始手段
4 実行処理選択手段
5 汎用プロセス実行手段
6 繁忙ロック実行手段
10 繁忙ロックアドレス格納領域
11 繁忙ロック専用プロセッサ番号格納領域
12 汎用プロセスキュー
13 繁忙ロック専用プロセスキュー
100 プロセッサ
101 キャッシュメモリ
200 メモリ
800 プロセス実行制御プログラム[0001]
BACKGROUND OF THE INVENTION
The present invention , Ma Multi-processor system , Process control method, and process control program In particular, Establish a busy lock dedicated processor Multiprocessor system , Process control method, and process control program .
[0002]
Here, the “busy lock target resource use process” is a process that is executed as a part of a program from a plurality of programs, and is a process that uses a resource to be locked (proprietary lock), and , A process executed in a busy manner (frequently). Note that a resource to be locked in the busy lock target resource use process as described above is referred to as a “busy lock target resource”.
[0003]
[Prior art]
An example of a conventional multiprocessor system is described in Japanese Patent Application Laid-Open No. 07-325791.
[0004]
FIG. 9 is a block diagram showing a configuration of a multiprocessor system (CPU (Central Processing Unit) fixed system) described in the publication.
[0005]
As shown in FIG. 9, this multiprocessor system includes a CPU fixed flag setting means for setting a CPU fixed flag at the start of a job (program execution unit, corresponding to “process” in the present invention), and fixing of the job. Fixed CPU number setting means for storing a user-specified CPU number in the CPU number storage area, CPU assigned job selection means for selecting a job to which a CPU is assigned from an execution waiting job queue when a free CPU occurs, and a fixed CPU for the job CPU fixing determining means and CPU assigning means for assigning a CPU to the job when the number and a free CPU number match, and a fixed for changing the value of the fixed CPU number storage area of the job to the CPU number designated by the operator command From the CPU number resetting means and the CPU executing the job Is configured to include a CPU reallocation means (CPU fixing flag and the fixed CPU number storage area is n (a positive integer) is present).
[0006]
In the conventional multiprocessor system including the multiprocessor system having such a configuration, at the time of executing a program, one of the processors for each process (program execution unit; expressed as “job” in the above publication) Is assigned and control is performed so that the processor executes all the processes of the process (control to execute the process by a specific processor for each process).
[0007]
Therefore, even for a program including a busy lock target resource utilization process, all instructions of all the processes of the program (the busy lock target resource utilization process and other processes) are executed by a specific processor.
[0008]
[Problems to be solved by the invention]
In the above-described conventional multiprocessor system, control is performed so that a specific processor executes each process (program execution unit), so that the busy lock target resource utilization processing can be executed equally by all processors. Therefore, when a busy lock target resource use process that is executed as a “part of program” is executed in a plurality of programs, cache miss hits frequently in each processor, and the busy lock target resource use process However, there is a problem in that the processing performance of the system may be reduced, and the throughput of the system may be reduced.
[0009]
For example, consider a case in which a buffer control function shared by a system is used for database access in a multiprocessor system in which a database is frequently accessed online from many processes.
[0010]
In this case, the buffer control function is frequently called from each process. Here, since the buffer control function is shared by the system, it is necessary to serialize between processes by lock processing. Therefore, when control is performed such that a specific processor is executed for each process as in a conventional multiprocessor system, a plurality of processes that execute processing for realizing a buffer control function are alternately performed by a plurality of processors. Every time the processor that executes the process that implements the buffer control function is changed, a cache memory miss occurs when referring to shared information on the memory (such as management information and control information related to the buffer control function). The performance of the frequently operated buffer control function is degraded, resulting in a decrease in system throughput.
[0011]
In view of the above-described points, an object of the present invention is not to perform control by a specific processor for each process in a multiprocessor system including a plurality of processors each having a cache memory for each processor, but to perform busy lock target resources. By executing the use process only with a specific processor, the information on the memory area referred to in the busy lock target resource use process is continuously placed in the cache memory of the processor, thereby increasing the cache hit rate and improving the system throughput. It is to provide a multiprocessor system capable of performing the above.
[0012]
In addition to the above publication, as a patent publication relating to the prior art for the multiprocessor system of the present invention, a system comprising a plurality of processors (in the following publications, expressed as “processor module” or “computer”) There are "JP-A 04-340648" and "JP-A 11-65863" which are similar to the present invention in that they are considered.
[0013]
The technique described in the above Japanese Patent Application Laid-Open No. 04-340648 (“selection method of representative processor module”) is a computer system including a plurality of processor modules having several central processing units and memories. This is a technique for appropriately selecting a representative processor module for monitoring and the like.
[0014]
Further, the technique described in the above Japanese Patent Application Laid-Open No. 11-65863 (“shared resource management method”) provides a system that performs exclusive control of shared resources centrally in a parallel computer system using a coupling mechanism. It is a technique to do.
[0015]
However, these technologies do not consider at all what is characteristic of the present invention, “to execute a busy lock target resource use process by a specific processor”, and are essentially different from the present invention. .
[0016]
[Means for Solving the Problems]
A multiprocessor system according to the present invention includes a plurality of processors including a cache, an initial setting unit, a process start unit, an execution process selection unit, a general-purpose process execution unit, and a busy lock execution unit, and a memory connected to the processor. A multiprocessor system comprising:
Stores the “busy lock target resource address”, which is the instruction address of the processing that uses the busy lock target resource, which is a frequently locked resource, in the “busy lock address storage area” of the memory, and uses the busy lock target resource The initial setting means for storing a “busy lock dedicated processor number” indicating a busy lock dedicated processor that executes only the processing to be performed in the “busy lock dedicated processor number storage area” of the memory;
The process start means for assigning a process number to a program and registering a set of a process number and a start instruction address of the program as general process information in a “general process queue” of the memory;
If the own processor number is equal to the “busy lock dedicated processor number” in the “busy lock dedicated processor number storage area”, control is passed to the busy lock execution means, and if not equal, control is passed to the general-purpose process execution means. The execution process selection means;
If the “general process queue” is empty, control is passed to the execution process selection means. If the “general process queue” is not empty, the general process information is extracted from the “general process queue”, the instruction is a lock instruction, and “ If it is equal to the “busy lock target resource address” in the “busy lock address storage area”, a set of process number and instruction address is registered in the “busy lock dedicated process queue” of the memory as dedicated process information, and the execution processing selection means If the instruction is not a lock instruction or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the instructions are sequentially executed up to the last instruction of the program, and the execution processing selecting means Control or a lock command, and the “busy lock address storage area” Said generic process executing means for sequentially executing until it equals a click target resource address ",
If the “busy lock dedicated process queue” is empty, control is passed to the execution process selection means. If the “busy lock dedicated process queue” is not empty, the dedicated process information is extracted from the “busy lock dedicated process queue” and the instruction is unloaded. If it is a lock instruction and is equal to the “busy lock target resource address” in the “busy lock address storage area”, the combination of the process number and instruction address is registered in the “general process queue” of the memory as general process information. Control is passed to the execution processing selection means, and if the instruction is not an unlock instruction or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the instructions are sequentially executed up to the last instruction of the program. Then, control is passed to the execution process selection means or an unlock command is issued, and “busy lock Said sequentially performed until equal to "busy lock target resource address" in the address storage area "in Busy lock Execution means;
Comprising the processor.
[0017]
A process control method of the present invention includes a plurality of processors each including a cache, an initial setting unit, a process start unit, an execution process selection unit, a general-purpose process execution unit, and a busy lock execution unit, and a memory connected to the processor. A process control method in a multiprocessor system including:
The initial setting means stores a “busy lock target resource address”, which is a command address for processing using a busy lock target resource, which is a resource frequently locked, in the “busy lock address storage area” of the memory, A procedure of storing a “busy lock dedicated processor number” indicating a busy lock dedicated processor that executes only a process using the busy lock target resource in the “busy lock dedicated processor number storage area” of the memory;
The process starting means assigns a process number to a program and registers a set of a process number and a program start instruction address as general process information in the “general process queue” of the memory;
The execution process selection means passes control to the busy lock execution means when its own processor number is equal to the “busy lock dedicated processor number” in the “busy lock dedicated processor number storage area”. A procedure for passing control to the process execution means;
If the “general process queue” is empty, the general process execution means transfers control to the execution process selection means. If the “general process queue” is not empty, the general process execution means takes out the general process information from the “general process queue”. If it is a lock command and is equal to the “busy lock target resource address” in the “busy lock address storage area”, a set of process number and command address is stored in the “busy lock dedicated process queue” of the memory as dedicated process information. If the command is not a lock command or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the commands are sequentially transferred to the last command of the program. Execute and pass control to the execution process selection means, or is a lock command and “busy lock A step of sequentially executed until it equals the "busy lock target resource address" Les storage area "within
Said Busy lock The execution means gives control to the execution processing selection means when the “busy lock dedicated process queue” is empty, and extracts the dedicated process information from the “busy lock dedicated process queue” when the “busy lock dedicated process queue” is not empty. If the instruction is an unlock instruction and is equal to the “busy lock target resource address” in the “busy lock address storage area”, the combination of the process number and the instruction address is used as the general process information in the “general process queue” of the memory. If the instruction is not an unlock instruction or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the instruction is transferred to the last of the program. Are executed sequentially until the instruction and control is passed to the execution process selection means, or is the unlock instruction, A step of sequentially executed until it equals the "busy lock target resource address" in the "busy lock address storage area",
including.
[0018]
A process control program according to the present invention includes a plurality of processors including a cache, an initial setting unit, a process start unit, an execution process selection unit, a general-purpose process execution unit, and a busy lock execution unit, and a memory connected to the processor. A process control program in a multiprocessor system including:
In the initial setting means, a “busy lock target resource address” that is a command address of processing that uses a busy lock target resource that is a resource that is frequently locked is stored in the “busy lock address storage area” of the memory, Executing a procedure of storing a “busy lock dedicated processor number” indicating a busy lock dedicated processor that executes only a process using the busy lock target resource in the “busy lock dedicated processor number storage area” of the memory;
The process start means assigns a process number to a program, and executes a procedure for registering a set of a process number and a program start instruction address as general process information in the “general process queue” of the memory,
If the own processor number is equal to the “busy lock dedicated processor number” in the “busy lock dedicated processor number storage area”, the control is passed to the busy lock executing means. Execute the procedure to pass control to the process execution means,
If the “general process queue” is empty, control is passed to the execution process selection means, and if the “general process queue” is not empty, the general process information is extracted from the “general process queue” If it is a lock command and is equal to the “busy lock target resource address” in the “busy lock address storage area”, a set of process number and command address is stored in the “busy lock dedicated process queue” of the memory as dedicated process information. If the command is not a lock command or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the commands are sequentially transferred to the last command of the program. Execute and pass control to the execution process selection means, or is a lock command and “busy lock To execute the steps of sequentially executed until it equals the "busy lock target resource address" Les storage area "within
Said Busy lock If the “busy lock dedicated process queue” is empty, control is passed to the execution processing selection means. If the “busy lock dedicated process queue” is not empty, the dedicated process information is extracted from the “busy lock dedicated process queue”. If the instruction is an unlock instruction and is equal to the “busy lock target resource address” in the “busy lock address storage area”, the combination of the process number and the instruction address is used as the general process information in the “general process queue” of the memory. If the instruction is not an unlock instruction or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the instruction is transferred to the last of the program. Are executed sequentially until the instruction and control is passed to the execution process selection means, or is the unlock instruction, A step of sequentially executed until it equals the "busy lock target resource address" in the "busy lock address storage area", it is executed.
[0021]
DETAILED DESCRIPTION OF THE INVENTION
Next, the present invention will be described in detail with reference to the drawings.
[0022]
(1) First embodiment
[0023]
FIG. 1 is a block diagram showing a configuration of a multiprocessor system according to the first embodiment of the present invention.
[0024]
Referring to FIG. 1, the multiprocessor system according to the present embodiment includes a plurality of
[0025]
Each
[0026]
The
[0027]
The
[0028]
FIG. 2 is a flowchart (flow chart) showing processing of the initial setting means 2. This processing includes a busy lock
[0029]
FIG. 3 is a flowchart showing the processing of the
[0030]
FIG. 4 is a flowchart showing the process of the execution process selection unit 4. This process includes a self processor number determination step 401, a general process execution means
[0031]
FIG. 5 is a flowchart showing the processing of the general-purpose process execution means 5. This process includes a general process queue
[0032]
FIG. 6 is a flowchart showing the processing of the busy lock execution means 6. This processing includes a busy lock dedicated process queue
[0033]
FIG. 7 is a diagram for explaining a specific operation of the multiprocessor system according to the present embodiment.
[0034]
Next, the overall operation of the multiprocessor system according to the present embodiment configured as described above will be described in detail with reference to FIGS.
[0035]
First, general and schematic operations will be described with reference to FIGS.
[0036]
First, the operation at system startup will be described.
[0037]
When the system is started up, the initial setting means 2 in one of the
[0038]
First, an address (busy lock address) for specifying the position of the busy lock target resource is stored in the busy lock
[0039]
Further, the processor number (busy lock dedicated processor number) of a dedicated processor (busy lock dedicated processor) for executing the busy lock target resource use processing is stored in the busy lock dedicated processor
[0040]
Further, the general-
[0041]
Secondly, the operation when the user gives an instruction to start a program (a program including a busy lock target resource utilization process) will be described.
[0042]
When the start of the program is instructed by the user, the process start means 3 in one of the
[0043]
First, a process number (a process number of a process for executing the program) is assigned to the program (step 301).
[0044]
Further, information indicating a set of the process number and the start instruction address of the program is registered in the general-
[0045]
Third, the operation of the execution process selection unit 4 in each
[0046]
The execution process selection means 4 performs the following process when the own processor (the
[0047]
First, referring to the busy lock dedicated processor
[0048]
When it is determined in step 401 that “the two processor numbers are not equal” (when it is determined that the own processor is not a busy lock dedicated processor), control is passed to the general-purpose process execution means 5 in the own processor (step 402). .
[0049]
On the other hand, if it is determined in step 401 that “both processor numbers are equal” (when it is determined that the own processor is a busy lock dedicated processor), control is passed to the busy lock execution means 6 in the own processor (step 403). ).
[0050]
Fourthly, the operation of the general-purpose process execution means 5 in each
[0051]
When the general process execution means 5 receives control from the execution process selection means 4 in its own processor, it performs the following processing (see FIG. 5).
[0052]
First, it is determined whether the general-
[0053]
If it is determined in
[0054]
On the other hand, if it is determined in
[0055]
When each instruction is executed, the busy lock
[0056]
If it is determined in
[0057]
On the other hand, if it is determined in
[0058]
If it is determined in
[0059]
On the other hand, if it is determined in
[0060]
Fifth, the operation of the busy lock execution means 6 in each
[0061]
When the busy lock execution means 6 receives control from the execution process selection means 4 in its own processor, it performs the following process (see FIG. 6).
[0062]
First, it is determined whether or not the busy lock
[0063]
If it is determined in
[0064]
On the other hand, when it is determined in
[0065]
When each instruction is executed, the busy lock
[0066]
If it is determined in
[0067]
On the other hand, if it is determined in
[0068]
If it is determined in
[0069]
On the other hand, if it is determined in
[0070]
Next, a specific operation of the multiprocessor system according to the present embodiment will be described with reference to FIG. 7 and the above-described flowcharts (FIGS. 2 to 6).
[0071]
In the example illustrated in FIG. 7, it is assumed that there are two processors 100 (
[0072]
Further, the
[0073]
Further, in the program 704 that the user instructs to start, the start instruction address is set to PA1, the address of the lock instruction (the lock instruction for the busy lock target resource 703) for starting the busy lock target resource use process is set to PA2, and the busy lock target resource Let PA3 be the address of an unlock command for ending the use process (unlock command for the busy lock target resource 703).
[0074]
First, the operation at system startup will be described.
[0075]
When the system is started up, the initial setting means 2 in the
[0076]
In
[0077]
In
[0078]
Secondly, an operation when the user gives an instruction to start the program 704 will be described.
[0079]
When the user gives an instruction to start the program 704, the process start means 3 in the
[0080]
Third, when the processor 701 (the
[0081]
At this time, the execution process selection means 4 in the
[0082]
The general-purpose process execution means 5 determines whether or not the general-
[0083]
In this case, since the general process information consisting of the combination of the process number P1 of the process P1 and the instruction address PA1 is registered in the
[0084]
Therefore, the general-purpose process execution means 5 takes out the general-purpose process information consisting of the set of the process number P1 and the instruction address PA1 from the general-
[0085]
In this case, since it can be determined that “the instruction at the address PA1 (the start instruction of the program 704) is not the lock instruction with the lock address L”, the general-purpose process execution means 5 executes the instruction at the address PA1 in
[0086]
In this case, since it can be determined that “the instruction is not the final instruction of the program (address PA1 is not the end of the program)”, the general process execution means 5 advances the instruction address to the next instruction in
[0087]
Thereafter, the general-purpose process execution means 5 performs the processes and determinations of
[0088]
When the instruction address advances to PA2, the general-purpose process execution means 5 determines in
[0089]
Fourth, when the processor 702 (the
[0090]
At this time, the execution process selection means 4 in the
[0091]
In
[0092]
In this case, since the general-purpose process execution means 5 has just registered the busy lock dedicated process information consisting of the process number P1 of the process P1 and the instruction address PA2 in the busy lock
[0093]
Accordingly, the busy lock execution means 6 takes out the busy lock dedicated process information consisting of the combination of the process number P1 and the instruction address PA2 from the busy lock
[0094]
In this case, since it can be determined that “the instruction at the address PA2 is not an unlock instruction with the unlock address L”, the busy lock execution means 6 executes the instruction at the address PA2 in
[0095]
In this case, since it can be determined that “the instruction is not the final instruction of the program”, the busy lock execution means 6 advances the instruction address to the next instruction in
[0096]
Thereafter, the busy lock execution means 6 performs the processes and determinations of
[0097]
When the instruction address advances to PA3, the busy lock execution means 6 determines in
[0098]
Fifth, the operation when the
[0099]
At this time, the execution processing selection means 4 in the
[0100]
The general-purpose process execution means 5 determines whether or not the general-
[0101]
In this case, since the general-purpose process information consisting of the set of the process number P1 of the process P1 and the instruction address PA3 is registered in the general-
[0102]
Therefore, the general-purpose process execution means 5 takes out the general-purpose process information comprising the set of the process number P1 and the instruction address PA3 from the general-
[0103]
In this case, since it can be determined that “the instruction at the address PA3 is not a lock instruction with the lock address L”, the general-purpose process execution means 5 executes the instruction at the address PA3 in
[0104]
In this case, since it can be determined that “the instruction is not the final instruction of the program”, the general-purpose
[0105]
Thereafter, the general-purpose process execution means 5 repeats the processing and determination of
[0106]
When the instruction address advances to the final instruction of the program 704, the general-purpose
[0107]
As described above, in this example, in the execution of the program 704, only the processing using the busy lock target resource 703 (processing from the instruction at the address PA2 to the instruction immediately before the instruction at the address PA3) is a busy lock dedicated processor (processor The other processing in the program 704 is executed by the
[0108]
Similarly, when a “program including processing using the busy
[0109]
As a modification of the first embodiment, the
[0110]
(2) Second embodiment
[0111]
FIG. 8 is a block diagram showing the configuration of the second exemplary embodiment of the present invention.
[0112]
Referring to FIG. 8, the second embodiment of the present invention is different from the multiprocessor system according to the first embodiment shown in FIG. 1 in that a process execution control program 800 is provided.
[0113]
The process execution control program 800 is read by each
[0114]
【The invention's effect】
As described above, according to the present invention, in a multiprocessor system composed of a plurality of processors each having a cache memory for each processor, the busy lock target resource use processing is executed only by a specific processor (busy lock dedicated processor). The information on the memory area referenced in the busy lock target resource use processing can be kept in the cache memory of the busy lock dedicated processor, thereby increasing the cache hit rate and improving the system throughput. The effect that it can be made arises.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a multiprocessor system according to a first embodiment of the present invention.
FIG. 2 is a flowchart showing processing of initial setting means in FIG. 1;
FIG. 3 is a flowchart showing processing of a process start unit in FIG. 1;
4 is a flowchart showing processing of an execution processing selection unit in FIG. 1. FIG.
FIG. 5 is a flowchart showing processing of a general-purpose process execution unit in FIG.
6 is a flowchart showing processing of busy lock execution means in FIG. 1. FIG.
7 is a diagram for explaining a specific operation of the multiprocessor system shown in FIG. 1; FIG.
FIG. 8 is a block diagram showing a configuration of a second exemplary embodiment of the present invention.
FIG. 9 is a block diagram showing a configuration of an example of a conventional multiprocessor system (the invention described in Japanese Patent Laid-Open No. 07-325791).
[Explanation of symbols]
1 Means
2 Initial setting means
3 Process start means
4 Execution process selection means
5 General-purpose process execution means
6 Busy lock execution means
10 Busy lock address storage area
11 Busy lock dedicated processor number storage area
12 General-purpose process queue
13 Process queue for busy lock
100 processor
101 Cache memory
200 memory
800 Process execution control program
Claims (3)
頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する前記初期設定手段と、
プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する前記プロセス開始手段と、
自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す前記実行処理選択手段と、
「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記汎用プロセス実行手段と、
「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記繁忙ロック実行手段と、
を備える前記プロセッサを有することを特徴とするマルチプロセッサシステム。A multiprocessor system including a plurality of processors each including a cache, an initial setting unit, a process start unit, an execution process selection unit, a general-purpose process execution unit, and a busy lock execution unit, and a memory connected to the processor,
Stores the “busy lock target resource address”, which is the instruction address of the processing that uses the busy lock target resource, which is a frequently locked resource, in the “busy lock address storage area” of the memory, and uses the busy lock target resource The initial setting means for storing a “busy lock dedicated processor number” indicating a busy lock dedicated processor that executes only the processing to be performed in the “busy lock dedicated processor number storage area” of the memory;
The process start means for assigning a process number to a program and registering a set of a process number and a start instruction address of the program as general process information in a “general process queue” of the memory;
If the own processor number is equal to the “busy lock dedicated processor number” in the “busy lock dedicated processor number storage area”, control is passed to the busy lock execution means, and if not equal, control is passed to the general-purpose process execution means. The execution process selection means;
If the “general process queue” is empty, control is passed to the execution process selection means. If the “general process queue” is not empty, the general process information is extracted from the “general process queue”, the instruction is a lock instruction, and “ If it is equal to the “busy lock target resource address” in the “busy lock address storage area”, a set of process number and instruction address is registered in the “busy lock dedicated process queue” of the memory as dedicated process information, and the execution processing selection means If the instruction is not a lock instruction or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the instructions are sequentially executed up to the last instruction of the program, and the execution processing selecting means Control or a lock command, and the “busy lock address storage area” Said generic process executing means for sequentially executing until it equals a click target resource address ",
If the “busy lock dedicated process queue” is empty, control is passed to the execution process selection means. If the “busy lock dedicated process queue” is not empty, the dedicated process information is extracted from the “busy lock dedicated process queue” and the instruction is unloaded. If it is a lock instruction and is equal to the “busy lock target resource address” in the “busy lock address storage area”, the combination of the process number and instruction address is registered in the “general process queue” of the memory as general process information. Control is passed to the execution processing selection means, and if the instruction is not an unlock instruction or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the instructions are sequentially executed up to the last instruction of the program. Then, control is passed to the execution process selection means or an unlock command is issued, and “busy lock Said busy locking execution means for sequentially executed until equal to "busy lock target resource address" in the address storage area "within
A multiprocessor system comprising the processor comprising:
前記初期設定手段が、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順と、
前記プロセス開始手段が、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順と、
前記実行処理選択手段が、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順と、
前記汎用プロセス実行手段が、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
前記繁忙ロック実行手段が、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
を含むことを特徴とするプロセス制御方法。Process control method in a multiprocessor system including a plurality of processors each including a cache, an initial setting unit, a process start unit, an execution process selection unit, a general-purpose process execution unit, and a busy lock execution unit, and a memory connected to the processor Because
The initial setting means stores a “busy lock target resource address”, which is a command address for processing using a busy lock target resource, which is a resource frequently locked, in the “busy lock address storage area” of the memory, A procedure of storing a “busy lock dedicated processor number” indicating a busy lock dedicated processor that executes only a process using the busy lock target resource in the “busy lock dedicated processor number storage area” of the memory;
The process starting means assigns a process number to a program and registers a set of a process number and a program start instruction address as general process information in the “general process queue” of the memory;
The execution process selection means passes control to the busy lock execution means when its own processor number is equal to the “busy lock dedicated processor number” in the “busy lock dedicated processor number storage area”. A procedure for passing control to the process execution means;
If the “general process queue” is empty, the general process execution means transfers control to the execution process selection means. If the “general process queue” is not empty, the general process execution means takes out the general process information from the “general process queue”. If it is a lock command and is equal to the “busy lock target resource address” in the “busy lock address storage area”, a set of process number and command address is stored in the “busy lock dedicated process queue” of the memory as dedicated process information. If the command is not a lock command or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the commands are sequentially transferred to the last command of the program. Execute and pass control to the execution process selection means, or is a lock command and “busy lock A step of sequentially executed until it equals the "busy lock target resource address" Les storage area "within
The busy lock execution means gives control to the execution process selection means when the “busy lock dedicated process queue” is empty, and if the “busy lock dedicated process queue” is not empty, the dedicated process starts from the “busy lock dedicated process queue”. If the information is taken out and the command is an unlock command and is equal to the “busy lock target resource address” in the “busy lock address storage area”, the combination of the process number and the command address is used as general process information in the “ Register in the "general-purpose process queue" and transfer control to the execution process selection means. If the instruction is not an unlock instruction or is not equal to the "busy lock target resource address" in the "busy lock address storage area", program the instruction Are executed sequentially until the last instruction of the program is passed to the execution process selection means, or unlocked. A step of sequentially executed until a decree, and equal to "busy lock target resource address" in the "busy lock address storage area" within
A process control method comprising:
前記初期設定手段に、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順を実行させ、
前記プロセス開始手段に、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順を実行させ、
前記実行処理選択手段に、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順を実行させ、
前記汎用プロセス実行手段に、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順を実行させ、
前記繁忙ロック実行手段に、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順を実行させる、
ことを特徴とするプロセス制御プログラム。Process control program in a multiprocessor system including a plurality of processors each including a cache, an initial setting unit, a process start unit, an execution process selection unit, a general-purpose process execution unit, and a busy lock execution unit, and a memory connected to the processor Because
In the initial setting means, a “busy lock target resource address” that is a command address of processing that uses a busy lock target resource that is a resource that is frequently locked is stored in the “busy lock address storage area” of the memory, Executing a procedure of storing a “busy lock dedicated processor number” indicating a busy lock dedicated processor that executes only a process using the busy lock target resource in the “busy lock dedicated processor number storage area” of the memory;
The process start means assigns a process number to a program, and executes a procedure for registering a set of a process number and a program start instruction address as general process information in the “general process queue” of the memory,
If the own processor number is equal to the “busy lock dedicated processor number” in the “busy lock dedicated processor number storage area”, the control is passed to the busy lock executing means. Execute the procedure to pass control to the process execution means,
If the “general process queue” is empty, control is passed to the execution process selection means, and if the “general process queue” is not empty, the general process information is extracted from the “general process queue” If it is a lock command and is equal to the “busy lock target resource address” in the “busy lock address storage area”, a set of process number and command address is stored in the “busy lock dedicated process queue” of the memory as dedicated process information. If the command is not a lock command or is not equal to the “busy lock target resource address” in the “busy lock address storage area”, the commands are sequentially transferred to the last command of the program. Execute and pass control to the execution process selection means, or is a lock command and “busy lock To execute the steps of sequentially executed until it equals the "busy lock target resource address" Les storage area "within
The busy locking execution unit, only from the "busy lock dedicated process Queue" passes the control to the execution processing selection means to be empty, the "busy lock dedicated process queue" is not empty "busy lock dedicated process queue" process If the information is taken out and the command is an unlock command and is equal to the “busy lock target resource address” in the “busy lock address storage area”, the combination of the process number and the command address is used as general process information in the “ Register in the "general-purpose process queue" and transfer control to the execution process selection means. If the instruction is not an unlock instruction or is not equal to the "busy lock target resource address" in the "busy lock address storage area", program the instruction Are executed sequentially until the last instruction of the program is passed to the execution process selection means, or unlocked. A decree, and to execute the steps of sequentially executed until it equals the "busy lock target resource address" in the "busy lock address storage area",
A process control program characterized by that.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002048101A JP3818172B2 (en) | 2002-02-25 | 2002-02-25 | Multiprocessor system, process control method, and process control program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002048101A JP3818172B2 (en) | 2002-02-25 | 2002-02-25 | Multiprocessor system, process control method, and process control program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003248666A JP2003248666A (en) | 2003-09-05 |
JP3818172B2 true JP3818172B2 (en) | 2006-09-06 |
Family
ID=28660989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002048101A Expired - Lifetime JP3818172B2 (en) | 2002-02-25 | 2002-02-25 | Multiprocessor system, process control method, and process control program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3818172B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5516728B2 (en) * | 2010-06-10 | 2014-06-11 | 富士通株式会社 | Multi-core processor system, control program, and control method |
-
2002
- 2002-02-25 JP JP2002048101A patent/JP3818172B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003248666A (en) | 2003-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100422940C (en) | System and method of arbitrating access of threads to shared resources within a data processing system | |
JP3880398B2 (en) | Nestable read process-write process lock for multiprocessor systems | |
JP2500101B2 (en) | How to update the value of a shared variable | |
JP5137971B2 (en) | Method and system for achieving both locking fairness and locking performance with spin lock | |
US5802585A (en) | Batched checking of shared memory accesses | |
US5761729A (en) | Validation checking of shared memory accesses | |
JP2633488B2 (en) | Method and system for performing parallel processing | |
JP2003044452A (en) | Method and system for packaging synchronous memory barrier | |
JP2013521570A (en) | CPU support for garbage collection | |
KR100538727B1 (en) | Multi-processor system | |
US20200210239A1 (en) | System and method of scheduling and computing resource allocation optimization of machine learning flows | |
US20160147516A1 (en) | Execution of complex recursive algorithms | |
JP3797570B2 (en) | Apparatus and method using semaphore buffer for semaphore instructions | |
Cole et al. | Analysis of randomized work stealing with false sharing | |
CN114153500A (en) | Instruction scheduling method, instruction scheduling device, processor and storage medium | |
US9053035B1 (en) | Multi-threaded system for performing atomic binary translations | |
JP2024500779A (en) | Address mapping aware task processing mechanism | |
JP3266029B2 (en) | Dispatching method, dispatching method, and recording medium recording dispatching program in multiprocessor system | |
JP3818172B2 (en) | Multiprocessor system, process control method, and process control program | |
Cole et al. | Efficient resource oblivious algorithms for multicores | |
JPS59167756A (en) | Dispatch control system of virtual computer | |
JPS63307553A (en) | File control system | |
US7447875B1 (en) | Method and system for management of global queues utilizing a locked state | |
JP3022398B2 (en) | Virtual computer system | |
US20230195651A1 (en) | Host device performing near data processing function and accelerator system including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050124 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050201 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050323 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050802 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060404 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060421 |
|
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: 20060523 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060605 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3818172 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100623 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100623 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110623 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110623 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120623 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120623 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130623 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term |