(57)【特許請求の範囲】
【請求項１】
キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムであって、
頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する前記初期設定手段と、
プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する前記プロセス開始手段と、
自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す前記実行処理選択手段と、
「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記汎用プロセス実行手段と、
「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記繁忙ロック実行手段と、
を備える前記プロセッサを有することを特徴とするマルチプロセッサシステム。
【請求項２】
キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムにおけるプロセス制御方法であって、
前記初期設定手段が、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順と、
前記プロセス開始手段が、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順と、
前記実行処理選択手段が、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順と、
前記汎用プロセス実行手段が、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
前記繁忙ロック実行手段が、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
を含むことを特徴とするプロセス制御方法。
【請求項３】
キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムにおけるプロセス制御プログラムであって、
前記初期設定手段に、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順を実行させ、
前記プロセス開始手段に、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順を実行させ、
前記実行処理選択手段に、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順を実行させ、
前記汎用プロセス実行手段に、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順を実行させ、
前記繁忙ロック実行手段に、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順を実行させる、
ことを特徴とするプロセス制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチプロセッサシステム、プロセス制御方法、および、プロセス制御プログラムに関し、特に、繁忙ロック専用プロセッサを設けるマルチプロセッサシステム、プロセス制御方法、および、プロセス制御プログラムに関する。
【０００２】
ここで、「繁忙ロック対象資源利用処理」とは、複数のプログラムからプログラムの一部として実行される処理であり、かつ、ロック（専有ロック）の対象となる資源を利用する処理であり、かつ、繁忙な態様で（頻繁に）実行される処理をいう。なお、上記のような繁忙ロック対象資源利用処理でロックの対象となる資源を「繁忙ロック対象資源」と呼称する。
【０００３】
【従来の技術】
従来のマルチプロセッサシステムの一例が、特開平０７−３２５７９１号公報に記載されている。
【０００４】
図９は、当該公報に記載されたマルチプロセッサシステム（ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）固定システム）の構成を示すブロック図である。
【０００５】
図９に示すように、このマルチプロセッサシステムは、ジョブ（プログラムの実行単位。本発明における「プロセス」に該当する）の開始時にＣＰＵ固定フラグを設定するＣＰＵ固定フラグ設定手段と、該ジョブの固定ＣＰＵ番号格納領域にユーザ指定のＣＰＵ番号を格納する固定ＣＰＵ番号設定手段と、空き状態のＣＰＵ発生時に実行待ちジョブキューからＣＰＵを割り当てるジョブを選択するＣＰＵ割り当てジョブ選択手段と、該ジョブの固定ＣＰＵ番号と空き状態のＣＰＵ番号とが一致した場合に該ジョブにＣＰＵを割り当てるＣＰＵ固定判断手段およびＣＰＵ割り当て手段と、オペレータコマンド指定のＣＰＵ番号に該ジョブの固定ＣＰＵ番号格納領域の値を変更する固定ＣＰＵ番号再設定手段と、該ジョブを実行中のＣＰＵから解放するＣＰＵ再割り当て手段とを含んで構成されている（ＣＰＵ固定フラグおよび固定ＣＰＵ番号格納領域はそれぞれｎ（正整数）個存在している）。
【０００６】
このような構成を有するマルチプロセッサシステムをはじめとする従来のマルチプロセッサシステムでは、プログラムの実行時に、プロセス（プログラムの実行単位。上記公報では「ジョブ」と表記されている）毎にいずれかのプロセッサが割り当てられ、当該プロセスの全ての処理の実行を当該プロセッサが行うように制御すること（プロセス毎に特定のプロセッサで実行させるという制御）が行われていた。
【０００７】
したがって、繁忙ロック対象資源利用処理を含むプログラムであっても、当該プログラムの全ての処理（当該繁忙ロック対象資源利用処理およびそれ以外の処理）の全ての命令が特定のプロセッサによって実行されていた。
【０００８】
【発明が解決しようとする課題】
上述した従来のマルチプロセッサシステムでは、プロセス（プログラムの実行単位）毎に特定のプロセッサで実行させるという制御が行われているため、繁忙ロック対象資源利用処理が全てのプロセッサによって均等に実行される可能性があったので、複数のプログラムにおいて「プログラムの一部」として実行される繁忙ロック対象資源利用処理が実行される際に、各プロセッサにおいてキャッシュミスヒットが頻発し、当該繁忙ロック対象資源利用処理の処理性能が低下し、システムのスループットの低下が生じるおそれがあるという問題点があった。
【０００９】
例えば、オンラインで多数のプロセスから頻繁にデータベースがアクセスされるマルチプロセッサシステムにおいて、データベースのアクセスにシステム共有のバッファ制御機能が利用される場合を考えてみる。
【００１０】
この場合には、各プロセスから頻繁にバッファ制御機能が呼び出されることになる。ここで、バッファ制御機能はシステム共有であるため、ロック処理によりプロセス間でシリアライズする必要がある。したがって、従来のマルチプロセッサシステムのように、プロセス毎に特定のプロセッサで実行させるという制御が行われている場合には、バッファ制御機能を実現する処理を実行する複数のプロセスが複数のプロセッサで交互に実行され、バッファ制御機能を実現する処理を実行するプロセッサが変わるたびにメモリ上の共有情報（バッファ制御機能に関する管理情報や制御情報等）の参照時にキャッシュメモリのミスヒットが発生することになり、頻繁に動作するバッファ制御機能の性能が低下し、システムのスループットの低下がもたらされる。
【００１１】
本発明の目的は、上述の点に鑑み、プロセッサ毎にキャッシュメモリを備える複数のプロセッサからなるマルチプロセッサシステムにおいて、プロセス毎に特定のプロセッサで実行させるという制御を行うのではなく、繁忙ロック対象資源利用処理を特定のプロセッサのみで実行することにより、繁忙ロック対象資源利用処理で参照されるメモリ領域の情報を当該プロセッサのキャッシュメモリに載せ続けることによってキャッシュヒット率を高め、システムのスループットを向上させることができるマルチプロセッサシステムを提供することにある。
【００１２】
なお、本発明のマルチプロセッサシステムに対する従来技術に関する特許公報としては、上記の公報の他に、複数のプロセッサ（以下の公報では、「プロセッサモジュール」や「計算機」と表現されている）からなるシステムを考察している点で本発明と類似している「特開平０４−３４０６４８号公報」および「特開平１１−６５８６３号公報」が存在する。
【００１３】
上記の特開平０４−３４０６４８号公報に記載された技術（「代表プロセッサモジュールの選出方法」）は、いくつかの中央処理装置とメモリとを持つプロセッサモジュールを複数備えた計算機システムにおいて、システム全体の監視等を行うための代表となるプロセッサモジュールを適切に選出するための技術である。
【００１４】
また、上記の特開平１１−６５８６３号公報に記載された技術（「共有資源管理方法」）は、結合機構を用いた並列コンピュータシステムにおいて、共有資源の排他制御を集中的に実施するシステムを提供するための技術である。
【００１５】
しかしながら、これらの技術は、本発明の特徴である「繁忙ロック対象資源利用処理を特定のプロセッサで実行させること」については何ら考察しておらず、本発明とは本質的に相違するものである。
【００１６】
【課題を解決するための手段】
本発明のマルチプロセッサシステムは、キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムであって、
頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する前記初期設定手段と、
プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する前記プロセス開始手段と、
自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す前記実行処理選択手段と、
「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記汎用プロセス実行手段と、
「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する前記繁忙ロック実行手段と、
を備える前記プロセッサを有する。
【００１７】
本発明のプロセス制御方法は、キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムにおけるプロセス制御方法であって、
前記初期設定手段が、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順と、
前記プロセス開始手段が、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順と、
前記実行処理選択手段が、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順と、
前記汎用プロセス実行手段が、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
前記繁忙ロック実行手段が、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、
を含む。
【００１８】
本発明のプロセス制御プログラムは、キャッシュ、初期設定手段、プロセス開始手段、実行処理選択手段、汎用プロセス実行手段、および、繁忙ロック実行手段を備える複数のプロセッサと、前記プロセッサと接続されるメモリとを含むマルチプロセッサシステムにおけるプロセス制御プログラムであって、
前記初期設定手段に、頻繁にロック対象となる資源である繁忙ロック対象資源を使用する処理の命令アドレスである「繁忙ロック対象資源アドレス」を前記メモリの「繁忙ロックアドレス格納領域」に格納し、繁忙ロック対象資源を使用する処理のみを実行する繁忙ロック専用プロセッサを示す「繁忙ロック専用プロセッサ番号」を前記メモリの「繁忙ロック専用プロセッサ番号格納領域」に格納する手順を実行させ、
前記プロセス開始手段に、プログラムにプロセス番号を割り当て、プロセス番号とプログラムの開始命令アドレスとの組を汎用プロセス情報とし前記メモリの「汎用プロセスキュー」に登録する手順を実行させ、
前記実行処理選択手段に、自プロセッサ番号が、「繁忙ロック専用プロセッサ番号格納領域」内の「繁忙ロック専用プロセッサ番号」と等しいと、前記繁忙ロック実行手段に制御を渡し、等しくないと、前記汎用プロセス実行手段に制御を渡す手順を実行させ、
前記汎用プロセス実行手段に、「汎用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「汎用プロセスキュー」が空でないと「汎用プロセスキュー」から汎用プロセス情報を取り出し、命令がロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を専用プロセス情報として前記メモリの「繁忙ロック専用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順を実行させ、
前記繁忙ロック実行手段に、「繁忙ロック専用プロセスキュー」が空であると前記実行処理選択手段に制御を渡し、「繁忙ロック専用プロセスキュー」が空でないと「繁忙ロック専用プロセスキュー」から専用プロセス情報を取り出し、命令がアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しければ、プロセス番号と命令アドレスとの組を汎用プロセス情報として前記メモリの「汎用プロセスキュー」に登録し前記実行処理選択手段に制御を渡し、命令がアンロック命令でないか、または「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなければ、命令をプログラムの最後の命令まで順次実行し前記実行処理選択手段に制御を渡すか、またはアンロック命令であり、かつ「繁忙ロックアドレス格納領域」内の「繁忙ロック対象資源アドレス」と等しくなるまで順次実行する手順と、を実行させる。
【００２１】
【発明の実施の形態】
次に、本発明について図面を参照して詳細に説明する。
【００２２】
（１）  第１の実施の形態
【００２３】
図１は、本発明の第１の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
【００２４】
図１を参照すると、本実施の形態に係るマルチプロセッサシステムは、複数のプロセッサ１００と、メモリ２００とを含んで構成されている。
【００２５】
各プロセッサ１００は、本発明を実現するための各手段からなる手段群１と、キャッシュメモリ１０１とを備えている。なお、図１に示すマルチプロセッサシステムでは、いずれかのプロセッサ１００が繁忙ロック対象資源利用処理（繁忙ロック対象資源を利用する処理）を専用に実行するプロセッサ（繁忙ロック専用プロセッサ）になること以外に関しては、各プロセッサ１００は対等の関係にある。
【００２６】
メモリ２００は、繁忙ロック対象資源の存在位置（アドレス）を示す情報である繁忙ロックアドレスを格納する繁忙ロックアドレス格納領域１０と、繁忙ロック専用プロセッサのプロセッサ番号を格納する繁忙ロック専用プロセッサ番号格納領域１１と、繁忙ロック対象資源利用処理以外の処理の実行を待機しているプロセスに関する情報（当該プロセスのプロセス番号と当該プロセスが割り当てられているプログラム中の次に実行すべき命令の命令アドレスとの組）である汎用プロセス情報がキュー形式で登録されている汎用プロセスキュー１２と、繁忙ロック対象資源利用処理の実行を待機しているプロセスに関する情報（当該プロセスのプロセス番号と当該プロセスが割り当てられているプログラム中の次に実行すべき命令の命令アドレスとの組）である繁忙ロック専用プロセス情報がキュー形式で登録されている繁忙ロック専用プロセスキュー１３とを具備している。
【００２７】
各プロセッサ１００内の手段群１は、初期設定手段２と、プロセス開始手段３と、実行処理選択手段４と、汎用プロセス実行手段５と、繁忙ロック実行手段６とを含んで構成されている。
【００２８】
図２は、初期設定手段２の処理を示す流れ図（フローチャート）である。この処理は、繁忙ロックアドレス格納ステップ２０１と、繁忙ロック専用プロセッサ番号格納ステップ２０２と、汎用プロセスキュー空設定ステップ２０３と、繁忙ロック専用プロセスキュー空設定ステップ２０４とからなる。
【００２９】
図３は、プロセス開始手段３の処理を示す流れ図である。この処理は、プロセス番号割り当てステップ３０１と、汎用プロセス情報登録ステップ３０２とからなる。
【００３０】
図４は、実行処理選択手段４の処理を示す流れ図である。この処理は、自プロセッサ番号判定ステップ４０１と、汎用プロセス実行手段制御移行ステップ４０２と、繁忙ロック実行手段制御移行ステップ４０３とからなる。
【００３１】
図５は、汎用プロセス実行手段５の処理を示す流れ図である。この処理は、汎用プロセスキュー空判定ステップ５０１と、汎用プロセス情報取り出しステップ５０２と、繁忙ロック対象資源ロック命令当否判定ステップ５０３と、命令実行ステップ５０４と、繁忙ロック専用プロセス情報登録ステップ５０５と、プログラム最後命令当否判定ステップ５０６と、命令アドレス進行ステップ５０７と、実行処理選択手段制御移行ステップ５０８とからなる。
【００３２】
図６は、繁忙ロック実行手段６の処理を示す流れ図である。この処理は、繁忙ロック専用プロセスキュー空判定ステップ６０１と、繁忙ロック専用プロセス情報取り出しステップ６０２と、繁忙ロック対象資源アンロック命令当否判定ステップ６０３と、命令実行ステップ６０４と、汎用プロセス情報登録ステップ６０５と、プログラム最後命令当否判定ステップ６０６と、命令アドレス進行ステップ６０７と、実行処理選択手段制御移行ステップ６０８とからなる。
【００３３】
図７は、本実施の形態に係るマルチプロセッサシステムの具体的な動作を説明するための図である。
【００３４】
次に、図１〜図７を参照して、上記のように構成された本実施の形態に係るマルチプロセッサシステムの全体の動作について詳細に説明する。
【００３５】
初めに、図１〜図６を参照して、一般的・概略的な動作について説明する。
【００３６】
第１に、システム立ち上げ時の動作について説明する。
【００３７】
システム立ち上げ時に、いずれかのプロセッサ１００内の初期設定手段２は、以下に示すように、メモリ２００内の本発明に関する情報の初期設定処理を行う（図２参照）。なお、どのプロセッサ１００がこの初期設定処理を担当するかは、当該マルチプロセッサシステムにおいて予め設定されている選択アルゴリズム（従来技術と同様の選択アルゴリズム）によって決定される。
【００３８】
まず、メモリ２００内の繁忙ロックアドレス格納領域１０に、繁忙ロック対象資源の位置を特定するためのアドレス（繁忙ロックアドレス）を格納する（ステップ２０１）。
【００３９】
また、メモリ２００内の繁忙ロック専用プロセッサ番号格納領域１１に、繁忙ロック対象資源利用処理を実行するための専用のプロセッサ（繁忙ロック専用プロセッサ）のプロセッサ番号（繁忙ロック専用プロセッサ番号）を格納する（ステップ２０２）。
【００４０】
さらに、メモリ２００内の汎用プロセスキュー１２を空に設定し（ステップ２０３）、メモリ２００内の繁忙ロック専用プロセスキュー１３を空に設定する（ステップ２０４）。
【００４１】
第２に、ユーザからプログラム（繁忙ロック対象資源利用処理を含むプログラム）の開始が指示された場合の動作について説明する。
【００４２】
ユーザから当該プログラムの開始が指示された場合に、いずれかのプロセッサ１００内のプロセス開始手段３は、以下に示すようなプロセス開始処理を行う（図３参照）。なお、どのプロセッサ１００がこのプロセス開始処理を担当するかは、当該マルチプロセッサシステムにおいて予め設定されている選択アルゴリズム（従来技術と同様の選択アルゴリズム）によって決定される。
【００４３】
まず、当該プログラムにプロセス番号（当該プログラムを実行するためのプロセスのプロセス番号）を割り当てる（ステップ３０１）。
【００４４】
また、当該プロセス番号と当該プログラムの開始命令アドレスとの組を示す情報を、汎用プロセス情報として、メモリ２００内の汎用プロセスキュー１２に登録する（ステップ３０２）。
【００４５】
第３に、各プロセッサ１００内の実行処理選択手段４の動作について説明する。
【００４６】
実行処理選択手段４は、自プロセッサ（自己が存在するプロセッサ１００。他の手段に関しても、この「自プロセッサ」という表現を用いる）がプロセスを実行する時に、以下に示すような処理を行う（図４参照）。
【００４７】
まず、繁忙ロック専用プロセッサ番号格納領域１１を参照し、自プロセッサのプロセッサ番号と繁忙ロック専用プロセッサ番号格納領域１１のプロセッサ番号（繁忙ロック専用プロセッサ番号）とが等しいか否かを判定し（ステップ４０１）、その判定によって自プロセッサが繁忙ロック専用プロセッサであるか否かを判断する。
【００４８】
ステップ４０１で「両プロセッサ番号が等しくない」と判定した場合（自プロセッサが繁忙ロック専用プロセッサではないと判断した場合）には、自プロセッサ内の汎用プロセス実行手段５に制御を渡す（ステップ４０２）。
【００４９】
一方、ステップ４０１で「両プロセッサ番号が等しい」と判定した場合（自プロセッサが繁忙ロック専用プロセッサであると判断した場合）には、自プロセッサ内の繁忙ロック実行手段６に制御を渡す（ステップ４０３）。
【００５０】
第４に、各プロセッサ１００内の汎用プロセス実行手段５の動作について説明する。
【００５１】
汎用プロセス実行手段５は、自プロセッサ内の実行処理選択手段４から制御を渡されると、以下に示すような処理を行う（図５参照）。
【００５２】
まず、汎用プロセスキュー１２が空であるか否かを判定する（ステップ５０１）。
【００５３】
ステップ５０１で「汎用プロセスキュー１２が空である」と判定した場合には、自プロセッサ内の実行処理選択手段４に制御を渡す（ステップ５０８）。
【００５４】
一方、ステップ５０１で「汎用プロセスキュー１２が空ではない」と判定した場合には、汎用プロセスキュー１２からプロセス番号と命令アドレスとの組（汎用プロセス情報）を取り出し（ステップ５０２）、当該命令アドレスで特定される命令から順に当該プロセスが割り当てられたプログラム中の各命令の実行を試みる。
【００５５】
各命令の実行に際しては、当該命令の実行前に、繁忙ロックアドレス格納領域１０を参照し、当該命令が繁忙ロック対象資源利用処理の開始を示すロック命令（繁忙ロック対象資源のロック命令）であるか否かを判定する。すなわち、当該命令が、ロック命令であり、かつ、そのロック命令のロックアドレス（ロック対象の資源の存在位置を示す情報）が繁忙ロックアドレス格納領域１０内の繁忙ロックアドレスと等しいか否かを判定する（ステップ５０３）。
【００５６】
ステップ５０３で「当該命令が繁忙ロック対象資源利用処理の開始を示すロック命令である」と判定した場合には、当該命令を実行せずに、当該プロセス番号と当該命令の命令アドレスとの組（繁忙ロック専用プロセス情報）を繁忙ロック専用プロセスキュー１３に登録し（ステップ５０５）、実行処理選択手段４に制御を渡す（ステップ５０８）。
【００５７】
一方、ステップ５０３で「当該命令が繁忙ロック対象資源利用処理の開始を示すロック命令ではない」と判定した場合には、当該命令を実行し（ステップ５０４）、当該命令がプログラムの最後の命令（最終命令）であるか否かを判定する（ステップ５０６）。
【００５８】
ステップ５０６で「当該命令がプログラムの最後の命令である」と判定した場合には、実行処理選択手段４に制御を渡す（ステップ５０８）。
【００５９】
一方、ステップ５０６で「当該命令がプログラムの最後の命令ではない」と判定した場合には、命令アドレスを次の命令に進め（ステップ５０７）、当該「次の命令」を対象にしてステップ５０３以降の処理および判定を繰り返す。
【００６０】
第５に、各プロセッサ１００内の繁忙ロック実行手段６の動作について説明する。
【００６１】
繁忙ロック実行手段６は、自プロセッサ内の実行処理選択手段４から制御を渡されると、以下に示すような処理を行う（図６参照）。
【００６２】
まず、繁忙ロック専用プロセスキュー１３が空であるか否かを判定する（ステップ６０１）。
【００６３】
ステップ６０１で「繁忙ロック専用プロセスキュー１３が空である」と判定した場合には、自プロセッサ内の実行処理選択手段４に制御を渡す（ステップ６０８）。
【００６４】
一方、ステップ６０１で「繁忙ロック専用プロセスキュー１３が空ではない」と判定した場合には、繁忙ロック専用プロセスキュー１３からプロセス番号と命令アドレスとの組（繁忙ロック専用プロセス情報）を取り出し（ステップ６０２）、当該命令アドレスで特定される命令から順に当該プロセスが割り当てられたプログラム中の各命令の実行を試みる。
【００６５】
各命令の実行に際しては、当該命令の実行前に、繁忙ロックアドレス格納領域１０を参照し、当該命令が繁忙ロック対象資源利用処理の終了を示すアンロック命令（繁忙ロック対象資源のアンロック命令）であるか否かを判定する。すなわち、当該命令が、アンロック命令であり、かつ、そのアンロック命令のアンロックアドレス（アンロック対象の資源の存在位置を示す情報）が繁忙ロックアドレス格納領域１０内の繁忙ロックアドレスと等しいか否かを判定する（ステップ６０３）。
【００６６】
ステップ６０３で「当該命令が繁忙ロック対象資源利用処理の終了を示すアンロック命令である」と判定した場合には、当該命令を実行せずに、当該プロセス番号と当該命令の命令アドレスとの組（汎用プロセス情報）を汎用プロセスキュー１２に登録し（ステップ６０５）、実行処理選択手段４に制御を渡す（ステップ６０８）。
【００６７】
一方、ステップ６０３で「当該命令が繁忙ロック対象資源利用処理の終了を示すアンロック命令ではない」と判定した場合には、当該命令を実行し（ステップ６０４）、当該命令がプログラムの最後の命令（最終命令）であるか否かを判定する（ステップ６０６）。
【００６８】
ステップ６０６で「当該命令がプログラムの最後の命令である」と判定した場合には、実行処理選択手段４に制御を渡す（ステップ６０８）。
【００６９】
一方、ステップ６０６で「当該命令がプログラムの最後の命令ではない」と判定した場合には、命令アドレスを次の命令に進め（ステップ６０７）、当該「次の命令」を対象にしてステップ６０３以降の処理および判定を繰り返す。
【００７０】
続いて、図７および上述の各流れ図（図２〜図６）を参照して、本実施の形態に係るマルチプロセッサシステムの具体的な動作について説明する。
【００７１】
図７に示す例では、２台のプロセッサ１００（プロセッサ７０１およびプロセッサ７０２とする）が存在し、それらのプロセッサ番号がそれぞれ「０１」および「０２」であるものとする。
【００７２】
また、プロセッサ７０２を繁忙ロック専用プロセッサとし、繁忙ロック対象資源７０３のアドレス（繁忙ロックアドレス）をＬとする。
【００７３】
さらに、ユーザが開始を指示するプログラム７０４において、開始命令アドレスをＰＡ１とし、繁忙ロック対象資源利用処理を開始するロック命令（繁忙ロック対象資源７０３のロック命令）のアドレスをＰＡ２とし、繁忙ロック対象資源利用処理を終了するアンロック命令（繁忙ロック対象資源７０３のアンロック命令）のアドレスをＰＡ３とする。
【００７４】
第１に、システム立ち上げ時の動作について説明する。
【００７５】
システム立ち上げ時に、プロセッサ７０１／７０２内の初期設定手段２は、以下に示すような処理を行う。
【００７６】
図２のステップ２０１において、繁忙ロックアドレス格納領域１０に繁忙ロック対象資源７０３のアドレス（繁忙ロックアドレス）のＬを格納し、ステップ２０２において、繁忙ロック専用プロセッサ番号格納領域１１に繁忙ロック専用プロセッサのプロセッサ番号の「０２」を格納する。
【００７７】
また、ステップ２０３において、汎用プロセスキュー１２を空にし、ステップ２０４において、繁忙ロック専用プロセスキュー１３を空にする。
【００７８】
第２に、ユーザからプログラム７０４の開始が指示された場合の動作について説明する。
【００７９】
ユーザからプログラム７０４の開始が指示された場合に、プロセッサ７０１／７０２内のプロセス開始手段３は、図３のステップ３０１において、プログラム７０４にプロセス番号を割り当て（本例では、このプロセス番号を「Ｐ１」とし、このプロセス番号のプロセスを「プロセスＰ１」と呼ぶ）、ステップ３０２において、当該プロセス番号Ｐ１とプログラム７０４の開始命令アドレスＰＡ１との組を示す汎用プロセス情報を汎用プロセスキュー１２に登録する。
【００８０】
第３に、プロセッサ７０１（プロセッサ番号が「０１」のプロセッサ１００）が、プログラム７０４に割り当てられたプロセスＰ１を実行する時（プログラム７０４中の開始命令（アドレスＰＡ１の命令）からアドレスＰＡ２のロック命令の直前の命令までの実行時）の動作について説明する。
【００８１】
この時には、プロセッサ７０１内の実行処理選択手段４は、図４のステップ４０１において、自プロセッサのプロセッサ番号「０１」と繁忙ロック専用プロセッサ番号格納領域１１内のプロセッサ番号「０２」（繁忙ロック専用プロセッサ番号）とを比較して「両者が等しくない」と判断するため、ステップ４０２において、自プロセッサ内の汎用プロセス実行手段５に制御を渡す。
【００８２】
汎用プロセス実行手段５は、図５のステップ５０１において、汎用プロセスキュー１２が空であるか否かを判断する。
【００８３】
この場合には、プロセス開始手段３によってプロセスＰ１のプロセス番号Ｐ１と命令アドレスＰＡ１との組からなる汎用プロセス情報が汎用プロセスキュー１２に登録された直後であるので、汎用プロセス実行手段５は、ステップ５０１で「汎用プロセスキュー１２が空ではない」と判断する。
【００８４】
したがって、汎用プロセス実行手段５は、ステップ５０２において、汎用プロセスキュー１２からプロセス番号Ｐ１と命令アドレスＰＡ１との組からなる汎用プロセス情報を取り出し、ステップ５０３において、アドレスＰＡ１の命令がロック命令であり、かつそのロックアドレスが繁忙ロックアドレス格納領域１０内の繁忙ロックアドレスＬと等しいか否かを検査（判断）する。
【００８５】
この場合には、「アドレスＰＡ１の命令（プログラム７０４の開始命令）はロックアドレスがＬのロック命令ではない」と判断できるので、汎用プロセス実行手段５は、ステップ５０４において、アドレスＰＡ１の命令を実行し、ステップ５０６において、当該命令がプログラムの最後の命令（最終命令）であるか否かを検査（判断）する。
【００８６】
この場合には、「当該命令はプログラムの最終命令ではない（アドレスＰＡ１はプログラムの最後ではない）」と判断できるため、汎用プロセス実行手段５は、ステップ５０７において、命令アドレスを次の命令に進め、当該「次の命令」を対象としたステップ５０３の判断に戻る。
【００８７】
以降、汎用プロセス実行手段５は、命令アドレスが繁忙ロック対象資源７０３を利用する処理を開始するロック命令のアドレスＰＡ２に進むまで、ステップ５０３，ステップ５０４，ステップ５０６，およびステップ５０７の処理および判定を繰り返し、プログラム７０４中の各命令を順次実行していく。
【００８８】
命令アドレスがＰＡ２まで進むと、汎用プロセス実行手段５は、ステップ５０３において、「アドレスＰＡ２の命令がロック命令であり、かつそのロックアドレスが繁忙ロックアドレス格納領域１０内のＬと等しい」と判断するため、ステップ５０５において、プロセス番号Ｐ１と命令アドレスＰＡ２との組を繁忙ロック専用プロセス情報として繁忙ロック専用プロセスキュー１３に登録し、ステップ５０８において、実行処理選択手段４に制御を渡す。
【００８９】
第４に、プロセッサ７０２（プロセッサ番号が「０２」のプロセッサ１００）が、プログラム７０４に割り当てられたプロセスＰ１を実行する時（プログラム７０４中のアドレスＰＡ２のロック命令からアドレスＰＡ３のアンロック命令の直前の命令までの実行時）の動作について説明する。
【００９０】
この時には、プロセッサ７０２内の実行処理選択手段４は、図４のステップ４０１において、自プロセッサのプロセッサ番号「０２」と繁忙ロック専用プロセッサ番号格納領域１１内のプロセッサ番号「０２」とを比較して「両者が等しい」と判断するため、ステップ４０３において、自プロセッサ内の繁忙ロック実行手段６に制御を渡す。
【００９１】
繁忙ロック実行手段６は、図６のステップ６０１において、繁忙ロック専用プロセスキュー１３が空であるか否かを判断する。
【００９２】
この場合には、汎用プロセス実行手段５によってプロセスＰ１のプロセス番号Ｐ１と命令アドレスＰＡ２との組からなる繁忙ロック専用プロセス情報が繁忙ロック専用プロセスキュー１３に登録された直後であるので、繁忙ロック実行手段６は、ステップ６０１で「繁忙ロック専用プロセスキュー１３が空ではない」と判断する。
【００９３】
したがって、繁忙ロック実行手段６は、ステップ６０２において、繁忙ロック専用プロセスキュー１３からプロセス番号Ｐ１と命令アドレスＰＡ２との組からなる繁忙ロック専用プロセス情報を取り出し、ステップ６０３において、アドレスＰＡ２の命令がアンロック命令であり、かつそのアンロックアドレスが繁忙ロックアドレス格納領域１０内の繁忙ロックアドレスＬと等しいか否かを検査（判断）する。
【００９４】
この場合には、「アドレスＰＡ２の命令はアンロックアドレスがＬのアンロック命令ではない」と判断できるので、繁忙ロック実行手段６は、ステップ６０４において、アドレスＰＡ２の命令を実行し、ステップ６０６において、当該命令がプログラムの最後の命令（最終命令）であるか否かを検査（判断）する。
【００９５】
この場合には、「当該命令はプログラムの最終命令ではない」と判断できるため、繁忙ロック実行手段６は、ステップ６０７において、命令アドレスを次の命令に進め、当該「次の命令」を対象としたステップ６０３の判断に戻る。
【００９６】
以降、繁忙ロック実行手段６は、命令アドレスが繁忙ロック対象資源７０３を利用する処理を終了するアンロック命令のアドレスＰＡ３に進むまで、ステップ６０３，ステップ６０４，ステップ６０６，およびステップ６０７の処理および判定を繰り返し、プログラム７０４中の各命令を順次実行していく。
【００９７】
命令アドレスがＰＡ３まで進むと、繁忙ロック実行手段６は、ステップ６０３において、「アドレスＰＡ３の命令がアンロック命令であり、かつそのアンロックアドレスが繁忙ロックアドレス格納領域１０内のＬと等しい」と判断するため、ステップ６０５において、プロセス番号Ｐ１と命令アドレスＰＡ３との組を汎用プロセス情報として汎用プロセスキュー１２に登録し、ステップ６０８において、実行処理選択手段４に制御を渡す。
【００９８】
第５に、プロセッサ７０１が、プログラム７０４に割り当てられたプロセスＰ１を実行する時（プログラム７０４中のアドレスＰＡ３のアンロック命令から最終命令までの実行時）の動作について説明する。
【００９９】
この時には、プロセッサ７０１内の実行処理選択手段４は、図４のステップ４０１において、自プロセッサのプロセッサ番号「０１」と繁忙ロック専用プロセッサ番号格納領域１１内のプロセッサ番号「０２」とを比較して「両者が等しくない」と判断するため、ステップ４０２において、自プロセッサ内の汎用プロセス実行手段５に制御を渡す。
【０１００】
汎用プロセス実行手段５は、図５のステップ５０１において、汎用プロセスキュー１２が空であるか否かを判断する。
【０１０１】
この場合には、繁忙ロック実行手段６によってプロセスＰ１のプロセス番号Ｐ１と命令アドレスＰＡ３との組からなる汎用プロセス情報が汎用プロセスキュー１２に登録された直後であるので、汎用プロセス実行手段５は、ステップ５０１で「汎用プロセスキュー１２が空ではない」と判断する。
【０１０２】
したがって、汎用プロセス実行手段５は、ステップ５０２において、汎用プロセスキュー１２からプロセス番号Ｐ１と命令アドレスＰＡ３との組からなる汎用プロセス情報を取り出し、ステップ５０３において、アドレスＰＡ３の命令がロック命令であり、かつそのロックアドレスが繁忙ロックアドレス格納領域１０内の繁忙ロックアドレスＬと等しいか否かを検査（判断）する。
【０１０３】
この場合には、「アドレスＰＡ３の命令はロックアドレスがＬのロック命令ではない」と判断できるので、汎用プロセス実行手段５は、ステップ５０４において、アドレスＰＡ３の命令を実行し、ステップ５０６において、当該命令がプログラムの最後の命令（最終命令）であるか否かを検査（判断）する。
【０１０４】
この場合には、「当該命令はプログラムの最終命令ではない」と判断できるため、汎用プロセス実行手段５は、ステップ５０７において、命令アドレスを次の命令に進め、当該「次の命令」を対象としたステップ５０３の判断に戻る。
【０１０５】
以降、汎用プロセス実行手段５は、命令アドレスがプログラム７０４の最終命令に進むまで、ステップ５０３，ステップ５０４，ステップ５０６，およびステップ５０７の処理および判定を繰り返し、プログラム７０４中の各命令を順次実行していく。
【０１０６】
命令アドレスがプログラム７０４の最終命令まで進むと、汎用プロセス実行手段５は、ステップ５０６において、「判断対象の命令がプログラムの最終命令である」と判断するため、ステップ５０８において、実行処理選択手段４に制御を渡す。
【０１０７】
以上のように、本例では、プログラム７０４の実行において、繁忙ロック対象資源７０３を利用する処理（アドレスＰＡ２の命令からアドレスＰＡ３の命令の直前の命令までによる処理）のみが繁忙ロック専用プロセッサ（プロセッサ番号「０２」のプロセッサ７０２）で実行され、プログラム７０４中の他の処理はプロセッサ７０１で実行される。
【０１０８】
プログラム７０４以外の「繁忙ロック対象資源７０３を利用する処理を含むプログラム」が開始された場合も、同様に、繁忙ロック対象資源７０３を利用する処理のみが繁忙ロック専用プロセッサ（プロセッサ７０２）で実行される。したがって、繁忙ロック対象資源７０３を利用する処理は常にプロセッサ７０２で実行されることとなり、常にプロセッサ７０２のキャッシュメモリ１０１を使用して処理が行われるため、繁忙ロック対象資源７０３を利用する処理で使用されるメモリ領域のキャッシュヒット率が高まり、システムスループットの向上が可能になる。
【０１０９】
なお、上記の第１の実施の形態の変形形態として、初期設定手段２やプロセス開始手段３を特定のプロセッサ１００（繁忙ロック専用プロセッサに限られないことはいうまでもない）のみに設け、初期設定処理やプロセス開始処理を当該特定のプロセッサ１００だけで行わせるようにすることも可能である。
【０１１０】
（２）  第２の実施の形態
【０１１１】
図８は、本発明の第２の実施の形態の構成を示すブロック図である。
【０１１２】
図８を参照すると、本発明の第２の実施の形態は、図１に示した第１の実施の形態に係るマルチプロセッサシステムに対して、プロセス実行制御プログラム８００を備える点が異なっている。
【０１１３】
プロセス実行制御プログラム８００は、各プロセッサ１００に読み込まれ、当該各プロセッサ１００の動作を手段群１（初期設定手段２，プロセス開始手段３，実行処理選択手段４，汎用プロセス実行手段５，および繁忙ロック実行手段６）として制御する。プロセス実行制御プログラム８００の制御による各プロセッサ１００の動作は、第１の実施の形態における各プロセッサ１００内の手段群１（テーブル初期設定手段２，プロセス開始手段３，実行処理選択手段４，汎用プロセス実行手段５，および繁忙ロック実行手段６）の動作と全く同様になるので、その詳しい説明を割愛する。
【０１１４】
【発明の効果】
以上説明したように、本発明によると、プロセッサ毎にキャッシュメモリを備える複数のプロセッサからなるマルチプロセッサシステムにおいて、繁忙ロック対象資源利用処理を特定のプロセッサ（繁忙ロック専用プロセッサ）のみで実行することにより、繁忙ロック対象資源利用処理で参照されるメモリ領域の情報を当該繁忙ロック専用プロセッサのキャッシュメモリに載せ続けることができ、それによって、キャッシュヒット率を高めることが可能になり、システムのスループットを向上させることができるという効果が生じる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
【図２】図１中の初期設定手段の処理を示す流れ図である。
【図３】図１中のプロセス開始手段の処理を示す流れ図である。
【図４】図１中の実行処理選択手段の処理を示す流れ図である。
【図５】図１中の汎用プロセス実行手段の処理を示す流れ図である。
【図６】図１中の繁忙ロック実行手段の処理を示す流れ図である。
【図７】図１に示すマルチプロセッサシステムの具体的な動作を説明するための図である。
【図８】本発明の第２の実施の形態の構成を示すブロック図である。
【図９】従来のマルチプロセッサシステムの一例（特開平０７−３２５７９１号公報記載の発明）の構成を示すブロック図である。
【符号の説明】
１  手段群
２  初期設定手段
３  プロセス開始手段
４  実行処理選択手段
５  汎用プロセス実行手段
６  繁忙ロック実行手段
１０  繁忙ロックアドレス格納領域
１１  繁忙ロック専用プロセッサ番号格納領域
１２  汎用プロセスキュー
１３  繁忙ロック専用プロセスキュー
１００  プロセッサ
１０１  キャッシュメモリ
２００  メモリ
８００  プロセス実行制御プログラム
【図１】
0003818172.tif 000002
【図２】
0003818172.tif 000003
【図３】
0003818172.tif 000004
【図４】
0003818172.tif 000005
【図５】
0003818172.tif 000006
【図６】
0003818172.tif 000007
【図７】
0003818172.tif 000008
【図８】
0003818172.tif 000009
【図９】
0003818172.tif 000010