JP3818172B2 - Multiprocessor system, process control method, and process control program - Google Patents

Multiprocessor system, process control method, and process control program Download PDF

Info

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
Application number
JP2002048101A
Other languages
Japanese (ja)
Other versions
JP2003248666A (en
Inventor
正純 川名部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2002048101A priority Critical patent/JP3818172B2/en
Publication of JP2003248666A publication Critical patent/JP2003248666A/en
Application granted granted Critical
Publication of JP3818172B2 publication Critical patent/JP3818172B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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 processors 100 and a memory 200.
[0025]
Each processor 100 includes a means group 1 including means for realizing the present invention, and a cache memory 101. In the multiprocessor system shown in FIG. 1, except that any one of the processors 100 becomes a processor that exclusively executes a busy lock target resource use process (a process that uses a busy lock target resource) (a busy lock dedicated processor). The processors 100 are in an equal relationship.
[0026]
The memory 200 includes a busy lock address storage area 10 for storing a busy lock address, which is information indicating the location (address) of the busy lock target resource, and a busy lock dedicated processor number storage area for storing a processor number of the busy lock dedicated processor. 11 and information on a process waiting for execution of processing other than the busy lock target resource use processing (the process number of the process and the instruction address of the instruction to be executed next in the program to which the process is assigned) Information on the process waiting for execution of the busy lock target resource use processing (the process number and the process are assigned) Instruction add of the next instruction to be executed Busy lock only process information is a set) of the scan is and a busy lock dedicated process queue 13 which is registered in the queue format.
[0027]
The means group 1 in each processor 100 includes an initial setting means 2, a process start means 3, an execution process selection means 4, a general process execution means 5, and a busy lock execution means 6.
[0028]
FIG. 2 is a flowchart (flow chart) showing processing of the initial setting means 2. This processing includes a busy lock address storing step 201, a busy lock dedicated processor number storing step 202, a general-purpose process queue empty setting step 203, and a busy lock dedicated process queue empty setting step 204.
[0029]
FIG. 3 is a flowchart showing the processing of the process starting unit 3. This process includes a process number assignment step 301 and a general process information registration step 302.
[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 control shift step 402, and a busy lock execution means control shift step 403.
[0031]
FIG. 5 is a flowchart showing the processing of the general-purpose process execution means 5. This process includes a general process queue empty determination step 501, a general process information extraction step 502, a busy lock target resource lock command success / failure determination step 503, an instruction execution step 504, a busy lock dedicated process information registration step 505, a program It consists of a final instruction adequacy determination step 506, an instruction address progression step 507, and an execution process selection means control shift step 508.
[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 empty determination step 601, a busy lock dedicated process information extraction step 602, a busy lock target resource unlock command success / failure determination step 603, an instruction execution step 604, and a general process information registration step 605. And a program last instruction appropriateness determination step 606, an instruction address advance step 607, and an execution process selection means control shift step 608.
[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 processors 100 performs an initial setting process of information related to the present invention in the memory 200 as shown below (see FIG. 2). It should be noted that which processor 100 is in charge of the initial setting process is determined by a selection algorithm (selection algorithm similar to the prior art) set in advance in the multiprocessor system.
[0038]
First, an address (busy lock address) for specifying the position of the busy lock target resource is stored in the busy lock address storage area 10 in the memory 200 (step 201).
[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 number storage area 11 in the memory 200 ( Step 202).
[0040]
Further, the general-purpose process queue 12 in the memory 200 is set to be empty (step 203), and the busy lock dedicated process queue 13 in the memory 200 is set to be empty (step 204).
[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 processors 100 performs a process start process as shown below (see FIG. 3). Note that which processor 100 is in charge of the process start processing is determined by a selection algorithm (selection algorithm similar to the prior art) set in advance in the multiprocessor system.
[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-purpose process queue 12 in the memory 200 as general-purpose process information (step 302).
[0045]
Third, the operation of the execution process selection unit 4 in each processor 100 will be described.
[0046]
The execution process selection means 4 performs the following process when the own processor (the processor 100 in which the self is present. The expression “own processor” is also used for other means) executes the process (see FIG. 4).
[0047]
First, referring to the busy lock dedicated processor number storage area 11, it is determined whether or not the processor number of the own processor and the processor number (busy lock dedicated processor number) of the busy lock dedicated processor number storage area 11 are equal (step 401). ), It is determined whether or not the own processor is a 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 processor 100 will be described.
[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-purpose process queue 12 is empty (step 501).
[0053]
If it is determined in step 501 that “the general-purpose process queue 12 is empty”, control is passed to the execution processing selection means 4 in its own processor (step 508).
[0054]
On the other hand, if it is determined in step 501 that “the general-purpose process queue 12 is not empty”, a set of process number and instruction address (general-purpose process information) is taken out from the general-purpose process queue 12 (step 502), and the instruction address Attempts to execute each instruction in the program to which the process is assigned in order from the instruction specified in.
[0055]
When each instruction is executed, the busy lock address storage area 10 is referred to before the instruction is executed, and the instruction is a lock instruction (the busy lock target resource lock instruction) indicating the start of the busy lock target resource use process. It is determined whether or not. That is, it is determined whether or not the instruction is a lock instruction and the lock address of the lock instruction (information indicating the location of the lock target resource) is equal to the busy lock address in the busy lock address storage area 10. (Step 503).
[0056]
If it is determined in step 503 that “the command is a lock command indicating the start of busy lock target resource use processing”, the command is not executed and the set of the process number and the command address of the command ( The busy lock dedicated process information) is registered in the busy lock dedicated process queue 13 (step 505), and control is passed to the execution process selection means 4 (step 508).
[0057]
On the other hand, if it is determined in step 503 that “the command is not a lock command indicating the start of busy lock target resource use processing”, the command is executed (step 504), and the command is the last command ( It is determined whether it is a final instruction) (step 506).
[0058]
If it is determined in step 506 that “the instruction is the last instruction of the program”, control is passed to the execution process selection means 4 (step 508).
[0059]
On the other hand, if it is determined in step 506 that "the instruction is not the last instruction of the program", the instruction address is advanced to the next instruction (step 507), and the "next instruction" is targeted for step 503 and subsequent steps. Repeat the process and determination.
[0060]
Fifth, the operation of the busy lock execution means 6 in each processor 100 will be described.
[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 dedicated process queue 13 is empty (step 601).
[0063]
If it is determined in step 601 that “the busy lock dedicated process queue 13 is empty”, control is passed to the execution process selection means 4 in the own processor (step 608).
[0064]
On the other hand, when it is determined in step 601 that “the busy lock dedicated process queue 13 is not empty”, a set of the process number and instruction address (busy lock dedicated process information) is extracted from the busy lock dedicated process queue 13 (step 51). 602) Attempts to execute each instruction in the program to which the process is assigned in order from the instruction specified by the instruction address.
[0065]
When each instruction is executed, the busy lock address storage area 10 is referred to before the instruction is executed, and the instruction indicates that the busy lock target resource use process has ended (unlock instruction for the busy lock target resource). It is determined whether or not. That is, whether the instruction is an unlock instruction and whether the unlock address of the unlock instruction (information indicating the location of the resource to be unlocked) is equal to the busy lock address in the busy lock address storage area 10 It is determined whether or not (step 603).
[0066]
If it is determined in step 603 that “the command is an unlock command indicating the end of busy lock target resource use processing”, the set of the process number and the command address of the command is executed without executing the command. (General process information) is registered in the general process queue 12 (step 605), and control is passed to the execution process selection means 4 (step 608).
[0067]
On the other hand, if it is determined in step 603 that “the command is not an unlock command indicating the end of busy lock target resource use processing”, the command is executed (step 604), and the command is the last command in the program. It is determined whether it is (final instruction) (step 606).
[0068]
If it is determined in step 606 that “the instruction is the last instruction of the program”, control is passed to the execution process selection means 4 (step 608).
[0069]
On the other hand, if it is determined in step 606 that “the instruction is not the last instruction of the program”, the instruction address is advanced to the next instruction (step 607), and the “next instruction” is targeted as the step 603 and subsequent steps. Repeat the process and determination.
[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 (processor 701 and processor 702), and their processor numbers are “01” and “02”, respectively.
[0072]
Further, the processor 702 is a busy lock dedicated processor, and the address (busy lock address) of the busy lock target resource 703 is set to L.
[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 processor 701/702 performs the following processing.
[0076]
In step 201 of FIG. 2, L of the address (busy lock address) of the busy lock target resource 703 is stored in the busy lock address storage area 10, and in step 202, the busy lock dedicated processor number storage area 11 stores the busy lock dedicated processor number. Stores the processor number “02”.
[0077]
In step 203, the general-purpose process queue 12 is emptied, and in step 204, the busy lock dedicated process queue 13 is emptied.
[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 processor 701/702 assigns a process number to the program 704 in step 301 of FIG. 3 (in this example, this process number is assigned to “P1 In step 302, general process information indicating a set of the process number P1 and the start instruction address PA1 of the program 704 is registered in the general process queue 12.
[0080]
Third, when the processor 701 (the processor 100 whose processor number is “01”) executes the process P1 assigned to the program 704 (from the start instruction (the instruction at the address PA1) in the program 704), the lock instruction at the address PA2 Will be described.
[0081]
At this time, the execution process selection means 4 in the processor 701 determines that the processor number “01” of its own processor and the processor number “02” (busy lock dedicated processor in the busy lock dedicated processor number storage area 11) in step 401 of FIG. In step 402, control is passed to the general-purpose process execution means 5 in its own processor in order to determine that the two are not equal.
[0082]
The general-purpose process execution means 5 determines whether or not the general-purpose process queue 12 is empty in step 501 of FIG.
[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 general process queue 12 by the process start unit 3, the general process execution unit 5 In 501, it is determined that “the general-purpose process queue 12 is not empty”.
[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-purpose process queue 12 in Step 502, and in Step 503, the instruction at the address PA1 is a lock instruction. Further, it checks (determines) whether or not the lock address is equal to the busy lock address L in the busy lock address storage area 10.
[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 step 504. In step 506, it is checked (determined) whether the instruction is the last instruction (final instruction) of the program.
[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 step 507. Then, the process returns to the determination in step 503 for the “next instruction”.
[0087]
Thereafter, the general-purpose process execution means 5 performs the processes and determinations of Step 503, Step 504, Step 506, and Step 507 until the instruction address advances to the address PA2 of the lock instruction that starts the process using the busy lock target resource 703. Repeat each instruction in the program 704 sequentially.
[0088]
When the instruction address advances to PA2, the general-purpose process execution means 5 determines in step 503 that "the instruction at the address PA2 is a lock instruction and the lock address is equal to L in the busy lock address storage area 10". Therefore, in step 505, the set of process number P1 and instruction address PA2 is registered in the busy lock dedicated process queue 13 as busy lock dedicated process information, and in step 508, control is passed to the execution process selection means 4.
[0089]
Fourth, when the processor 702 (the processor 100 whose processor number is “02”) executes the process P1 assigned to the program 704 (from the lock instruction at the address PA2 to the immediately before the unlock instruction at the address PA3 in the program 704). The operation up to the time of the instruction will be described.
[0090]
At this time, the execution process selection means 4 in the processor 702 compares the processor number “02” of the own processor with the processor number “02” in the busy lock dedicated processor number storage area 11 in step 401 of FIG. In order to determine that “both are equal”, in step 403, control is passed to the busy lock execution means 6 in its own processor.
[0091]
In step 601 of FIG. 6, the busy lock execution means 6 determines whether or not the busy lock dedicated process queue 13 is empty.
[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 dedicated process queue 13, the busy lock execution is executed. The means 6 determines in step 601 that “the busy lock dedicated process queue 13 is not empty”.
[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 dedicated process queue 13 in step 602, and in step 603, the instruction of the address PA2 is unloaded. It is checked (determined) whether it is a lock command and its unlock address is equal to the busy lock address L in the busy lock address storage area 10.
[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 step 604, and in step 606. Then, it is checked (determined) whether or not the instruction is the last instruction (final instruction) of the program.
[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 step 607 and targets the “next instruction”. Return to the determination of step 603.
[0096]
Thereafter, the busy lock execution means 6 performs the processes and determinations of steps 603, 604, 606, and 607 until the instruction address proceeds to the address PA3 of the unlock instruction that ends the process of using the busy lock target resource 703. Are repeated, and each instruction in the program 704 is sequentially executed.
[0097]
When the instruction address advances to PA3, the busy lock execution means 6 determines in step 603 that "the instruction at the address PA3 is an unlock instruction and the unlock address is equal to L in the busy lock address storage area 10". In order to make a determination, in step 605, the set of the process number P1 and instruction address PA3 is registered in the general process queue 12 as general process information, and in step 608, control is passed to the execution process selection means 4.
[0098]
Fifth, the operation when the processor 701 executes the process P1 assigned to the program 704 (when executing from the unlock instruction to the final instruction of the address PA3 in the program 704) will be described.
[0099]
At this time, the execution processing selection means 4 in the processor 701 compares the processor number “01” of its own processor with the processor number “02” in the busy lock dedicated processor number storage area 11 in step 401 of FIG. In order to determine that “they are not equal”, in step 402, control is passed to the general-purpose process execution means 5 in the processor.
[0100]
The general-purpose process execution means 5 determines whether or not the general-purpose process queue 12 is empty in step 501 of FIG.
[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-purpose process queue 12 by the busy lock execution means 6, the general-purpose process execution means 5 In step 501, it is determined that “the general-purpose process queue 12 is not empty”.
[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-purpose process queue 12 in step 502, and in step 503, the instruction at the address PA3 is a lock instruction. Further, it checks (determines) whether or not the lock address is equal to the busy lock address L in the busy lock address storage area 10.
[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 step 504, and in step 506, It is checked (determined) whether the instruction is the last instruction (final instruction) of the program.
[0104]
In this case, since it can be determined that “the instruction is not the final instruction of the program”, the general-purpose process execution unit 5 advances the instruction address to the next instruction in step 507 and targets the “next instruction”. Return to the determination of step 503.
[0105]
Thereafter, the general-purpose process execution means 5 repeats the processing and determination of step 503, step 504, step 506, and step 507 until the instruction address advances to the final instruction of the program 704, and sequentially executes each instruction in the program 704. To go.
[0106]
When the instruction address advances to the final instruction of the program 704, the general-purpose process execution unit 5 determines in step 506 that "the instruction to be determined is the final instruction of the program". Pass control to.
[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 processor 701.
[0108]
Similarly, when a “program including processing using the busy lock target resource 703” other than the program 704 is started, only the processing using the busy lock target resource 703 is executed by the busy lock dedicated processor (processor 702). The Therefore, the processing using the busy lock target resource 703 is always executed by the processor 702, and the processing is always performed using the cache memory 101 of the processor 702. Therefore, the processing is performed using the busy lock target resource 703. The cache hit rate of the memory area to be increased increases, and the system throughput can be improved.
[0109]
As a modification of the first embodiment, the initial setting unit 2 and the process start unit 3 are provided only in a specific processor 100 (not limited to a busy lock dedicated processor). The setting process and the process start process can be performed only by the specific processor 100.
[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 processor 100, and the operation of each processor 100 is controlled by means 1 (initial setting means 2, process start means 3, execution process selection means 4, general-purpose process execution means 5, and busy lock. Control as execution means 6). The operation of each processor 100 under the control of the process execution control program 800 is performed by means 1 (table initial setting means 2, process start means 3, execution process selection means 4, general-purpose process) in each processor 100 in the first embodiment. Since the operations are the same as those of the execution means 5 and the busy lock execution means 6), a detailed description thereof will be omitted.
[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.
JP2002048101A 2002-02-25 2002-02-25 Multiprocessor system, process control method, and process control program Expired - Lifetime JP3818172B2 (en)

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)

* Cited by examiner, † Cited by third party
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

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