(57)【要約】【課題】アクセス制御方法及び計算機システムにおいて、複数の本体装置が記憶装置を共有する計算機システムの高速化を可能とすることを目的とする。【解決手段】複数の本体装置が記憶装置を共有する計算機システムにおけるアクセス制御方法において、前記複数の本体装置から前記記憶装置へ発行するアクセス命令に加え、排他権付きアクセス命令を予め定義し、前記記憶装置において、任意の本体装置から転送された前記排他権付きアクセス命令に基づいて他の本体装置のアクセス状況を監視し、前記他の本体装置のアクセス命令がアクセスする領域と前記排他権付きアクセス命令のアクセスする領域が重なる場合は排他で実行するように構成する。【選択図】図７
2010086010.tif 000002
【特許請求の範囲】
【請求項１】
複数の本体装置が記憶装置を共有する計算機システムにおけるアクセス制御方法であって、
前記複数の本体装置から前記記憶装置へ発行するアクセス命令に加え、排他権付きアクセス命令を予め定義し、
前記記憶装置において、任意の本体装置から転送された前記排他権付きアクセス命令に基づいて他の本体装置のアクセス状況を監視し、前記他の本体装置のアクセス命令がアクセスする領域と前記排他権付きアクセス命令のアクセスする領域が重なる場合は排他で実行する、
アクセス制御方法。
【請求項２】
複数の本体装置と、
前記複数の本体装置が共有する記憶装置とを備え、
前記複数の本体装置から前記記憶装置へ発行するアクセス命令に加え、排他権付きアクセス命令が予め定義されており、
前記記憶装置は、任意の本体装置から転送された前記排他権付きアクセス命令に基づいて他の本体装置のアクセス状況を監視し、前記他の本体装置のアクセス命令がアクセスする領域と前記排他権付きアクセス命令のアクセスする領域が重なる場合は排他で実行する優先順位決定回路を有する、
計算機システム。
【請求項３】
前記記憶装置はアクセス領域が書き換え可能か否かを示すテーブルを有し、
前記優先順位決定回路は、前記他の本体装置のアクセス命令がアクセスする領域が前記排他権付きアクセス命令がアクセスする領域と重ならない場合、前記テーブルを参照することなく前記他の本体装置にアクセス命令の実行権獲得を判断する、
請求項２記載の計算機システム。
【請求項４】
前記記憶装置は、前記複数の本体装置と接続する複数のポートと有し、
前記優先順位決定回路は、前記アクセス命令の実行権獲得を前記他の本体装置に対応するポートに通知する、
請求項３記載の計算機システム。
【請求項５】
前記優先順位決定回路は、前記他の本体装置のアクセス命令がアクセスする領域が前記任意の本体装置から転送された前記テーブルを書き換えるためのテーブル書き換え命令がアクセスする領域と重ならない場合、前記テーブルを参照することなく前記他の本体装置にアクセス命令の実行権獲得を判断する、
請求項３又は４記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス制御方法及び計算機システムに係り、特に複数の本体装置から共有する記憶装置へのアクセスの排他制御を行うアクセス制御方法及び計算機システムに関する。
【背景技術】
【０００２】
図１は、従来のアクセス制御を説明するブロック図であり、図２は、従来のアクセス制御の問題点を説明する図である。
【０００３】
図１に示す計算機システムでは、２つの本体装置１−０，１−１(以下、クラスタ（Cluster）ＣＬ０，ＣＬ１と言う）が単一の記憶装置（以下、ＳＳＵ（System Storage Unit）と言う）２を共有している。各クラスタＣＬ０，ＣＬ１は、ＣＰＵ等のプロセッサを有する。
【０００４】
クラスタＣＬ０がＳＳＵ２のアクセス領域２１を書き換える場合の手順は、以下のようになる。先ず、クラスタＣＬ０はアクセス領域２１が現在書き換え可能か否かを示すテーブル２２の値を参照する。テーブル２２には、ＳＳＵ２内の各アクセス領域毎に書き換え可能か否かを示す値が書き込まれている。クラスタＣＬ０が書き換えようとしているアクセス領域２１が書き込み可能な状態であると、クラスタＣＬ０はテーブル２２の値を書き換えて書き込み権を取得する。一方、クラスタＣＬ０が書き換えようとしているアクセス領域２１が書き込み不可の状態であると、テーブル２２の値を何度か読み出し直し、書き込み可能な状態になるまで待機する。テーブル２２の読み出しから書き換えまでの間は、図２に示すように、他のクラスタＣＬ１による同一テーブル２２へのアクセスは保留される。このテーブル２２を書き換えるためのテーブル書き換え命令はＬＯＣＫ命令と呼ばれ、ＬＯＣＫ命令のデータ長は例えば８バイト以下である。
【０００５】
クラスタＣＬ０は、テーブル２２の読み出しによってアクセス領域２１の書き込み権を確保すると、アクセス領域２１を書き換える。クラスタＣＬ０は、アクセス領域２１の書き換え終了後、テーブル２２を書き換えることにより書き込み権を手放す。
【０００６】
ここで、クラスタＣＬ０がアクセス領域２１を書き換えている時に、他のクラスタＣＬ１はクラスタＣＬ０が書き換えた後のアクセス領域２１のデータを使用したいとする。この場合、クラスタＣＬ０は上記の手順に従ってアクセス領域２１を書き換える。従って、クラスタＣＬ１がクラスタＣＬ０のアクセス領域２１の更新終了を確認するためには、（Ａ）クラスタＣＬ１がテーブル２２を読み出してクラスタＣＬ０が書き換えを実行中でないことを知り、アクセス領域２１のデータを読み出して更新データが入ったことを確認するか、或いは、（Ｂ）クラスタＣＬ１がアクセス領域２１のデータのみを読み出すことでクラスタＣＬ０による更新が完全に終了したか否か（即ち、書き込み途中でないか否か）を判別可能なデータをアクセス領域２１に書き込むことで、クラスタＣＬ１がアクセス領域２１のデータのみを読み出して更新データが入ったことを確認することができる。
【０００７】
クラスタＣＬ１がクラスタＣＬ０のアクセス領域２１の更新終了を確認する方法（Ａ）、（Ｂ）のうち、後者の方法（Ｂ）の方が一度の命令実行で済むので高速処理が期待できる。しかし、この場合でもアクセス領域２１がクラスタＣＬ０により更新途中の場合には、クラスタＣＬ１は何度もアクセスを繰り返して更新完了を待たなくてはならない。又、近年のメモリアクセス速度の向上に伴い、ＳＳＵ２の内部処理よりもクラスタＣＬ０，ＣＬ１とＳＳＵ２間の転送処理の方がメモリアクセス速度の向上の妨げとなりつつある。このため、各クラスタＣＬ０，ＣＬ１のＳＳＵ２への命令発行数を減らした方が、メモリアクセス速度の向上に寄与することになる。
【０００８】
アドレスの一定の範囲を特定のメモリアクセス手段が確保し、確保された範囲内では他のメモリアクセス手段を排除して自由に読み書きすることが提案されているが、確保された範囲を解除するには再度命令の発行が必要となる。
【特許文献１】特開平３−１６０５５２号公報
【特許文献２】特開昭６１−２５９３６２号公報
【特許文献３】特開平１０−２７１３１号公報
【特許文献４】特開平５−２５６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来のアクセス制御では、１つの本体装置（クラスタ）が他の本体装置のアクセス領域の更新終了を確認する手順を高速化することが難しいため、複数の本体装置が記憶装置を共有する計算機システムの高速化が難しいという問題があった。
【００１０】
そこで、本発明は、複数の本体装置が記憶装置を共有する計算機システムの高速化を可能とするアクセス制御方法及び計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一観点によれば、複数の本体装置が記憶装置を共有する計算機システムにおけるアクセス制御方法であって、前記複数の本体装置から前記記憶装置へ発行するアクセス命令に加え、排他権付きアクセス命令を予め定義し、前記記憶装置において、任意の本体装置から転送された前記排他権付きアクセス命令に基づいて他の本体装置のアクセス状況を監視し、前記他の本体装置のアクセス命令がアクセスする領域と前記排他権付きアクセス命令のアクセスする領域が重なる場合は排他で実行するアクセス制御方法が提供される。
【００１２】
本発明の一観点によれば、複数の本体装置と、前記複数の本体装置が共有する記憶装置とを備え、前記複数の本体装置から前記記憶装置へ発行するアクセス命令に加え、排他権付きアクセス命令が予め定義されており、前記記憶装置は、任意の本体装置から転送された前記排他権付きアクセス命令に基づいて他の本体装置のアクセス状況を監視し、前記他の本体装置のアクセス命令がアクセスする領域と前記排他権付きアクセス命令のアクセスする領域が重なる場合は排他で実行する優先順位決定回路を有する計算機システムが提供される。
【発明の効果】
【００１３】
開示のアクセス制御方法及び計算機システムによれば、複数の本体装置が記憶装置を共有する計算機システムの高速化が可能となる。
【発明を実施するための最良の形態】
【００１４】
開示のアクセス制御方法及び計算機システムでは、複数の本体装置が記憶装置を共有する場合において、共有する記憶装置へのアクセス命令に排他権付きアクセス命令を追加することにより、共有する記憶装置への転送命令と排他権付き排他権付きアクセス命令を排他で実行する。
【００１５】
１つの本体装置が他の本体装置のアクセス領域の更新終了を確認する手順を高速化することができるため、複数の本体装置が記憶装置を共有する計算機システムの高速化が可能となる。
【００１６】
以下に、本発明のアクセス制御方法及び計算機システムの各実施例を、図３以降と共に説明する。
【実施例】
【００１７】
図３は、本発明の一実施例におけるアクセス制御を説明する図である。ここでは説明の便宜上、本発明が複数の本体装置(クラスタ）ＣＬ０，ＣＬ１が単一の記憶装置を共有する計算機システムに適用されるものとする。クラスタＣＬ０が記憶装置内のデータ領域のうちアクセス領域を書き換える場合の手順は、以下のようになる。図３中、Ａ，Ｂ，Ｃ，Ｄは記憶装置内のデータ領域のアドレスを示す。
【００１８】
この場合、クラスタＣＬ０が発行する書き込み命令に排他権付き書き込み命令を追加する。追加する排他権付き書き込み命令（ブロックコンカレンシ（ＢＣ：Block Concurrency）命令、以下、単にＢＣ命令と言う)は、記憶装置にデータを転送する場合には他のクラスタのアクセス状況を監視し、他のクラスタの書き込み（ストア、Store）及び読み出し又はフェッチ（Fetch）を含むアクセスとＢＣ命令のアクセスの領域が重なる場合は排他で実行する。
【００１９】
図３において、クラスタＣＬ０はアドレスＢ〜ＤまでのＢＣ命令で、クラスタＣＬ１はアドレスＡ〜Ｃの通常のアクセス（Store/Fetch）命令であるものとする。アドレスＢ，ＣがＢ<Ｃの関係にあるものとすると、アドレスＢ〜ＣまではクラスタＣＬ０のアクセスの領域とクラスタＣＬ１のアクセスの領域が重複している。つまり、クラスタＣＬ１の通常のアクセス命令が先に実行されている場合、後から入ったクラスタＣＬ０のＢＣ命令は先の通常のアクセス命令とアクセスの領域が一部重複している。この場合、クラスタＣＬ１の通常のアクセス命令のアドレスＡ〜Ｃのデータ転送が全て終了するまで、クラスタＣＬ０のＢＣ命令の実行が、記憶装置内の優先順位決定回路（ＰＲＩＯ）がこのＢＣ命令にアクセス許可を与えないことで保留される。これとは逆に、クラスタＣＬ０のアドレスＢ〜Ｄの書き込み命令に追加されているＢＣ命令が先に実行されている場合に、後からクラスタＣＬ１のアドレスＡ〜Ｃの通常のアクセス命令を受けた場合、先のクラスタＣＬ０のＢＣ命令が全て終了してから後のクラスタＣＬ１の通常のアクセス命令が実行される。
【００２０】
クラスタＣＬ０が書き込み命令に追加するＢＣ命令により、他のクラスタＣＬ１からＢＣ命令とアクセスが重なる領域を読んだ場合に途中結果が見えてしまう不都合が解消され、又、ＢＣ命令の実行中は他のクラスタＣＬ１の通常のアクセス命令の実行は保留される。保留された通常のアクセス命令は、ＢＣ命令の実行終了後直ちに実行されるため、他のクラスタＣＬ１が記憶装置を何度もアクセスし直してクラスタＣＬ０によるアクセスの終了を確認する場合と比較すると、より高速に処理を行なうことができる。
【００２１】
尚、クラスタＣＬ０が発行する読み出し命令に排他権付き読み出し命令を追加することもできる。追加する排他権付き読み出し命令（ＢＣ命令)は、記憶装置からのデータを転送する場合には他のクラスタのアクセス状況を監視し、他のクラスタの書き込み及び読み出しを含むアクセスとＢＣ命令のアクセスの領域が重なる場合は排他で実行するようにすれば良い。
【００２２】
図４は、本発明の一実施例における計算機システムを説明するブロック図である。図４中、図１と同一部分には同一符号を付し、その説明は省略する。
【００２３】
ＳＳＵ２内には、図４に示す如く接続された複数のポート２３−０〜２３−ｎ（ＰＯＲＴ０〜ＰＯＲＴｎ）、優先順位決定回路（ＰＲＩＯ）２４及びメモリ２５が設けられている。クラスタＣＬ０〜ＣＬｎとＳＳＵ２とは、ＰＯＲＴ０〜ＰＯＲＴｎを介して接続されている。各クラスタＣＬ０〜ＣＬｎがＳＳＵ２へアクセスする際には、対応するＰＯＲＴ０〜ＰＯＲＴｎに対して書き込み命令又は読み出し命令等の命令、アクセスアドレス及び転送長を通知する。各ＰＯＲＴ０〜ＰＯＲＴｎは、通知されたアクセスアドレス及び転送長をＰＲＩＯ２４に通知する。ＰＲＩＯ２４内には、後述するＬＯＣＫアドレスレジスタ２４１及び開始／終了アドレスレジスタ２４２が設けられている。尚、図４では、図１に示す如きテーブル２２の図示は省略する。
【００２４】
各クラスタＣＬ０〜ＣＬｎからＳＳＵ２へのアクセス種別には、各クラスタＣＬ０〜ＣＬｎ内のＣＰＵに同期する命令（同期命令）と、ＣＰＵに同期せずＣＰＵは起動のみ行い終了時にＣＰＵに割り込む命令（非同期命令）がある。非同期命令は、各クラスタＣＬ０〜ＣＬｎ内で幾つかのブロックに分割されて実行され、同期命令は非同期命令より優先順位が高く設定されているため、同期命令は分割された非同期命令に割り込んで実行される。このため、ＳＳＵ２から見ると、各クラスタＣＬ０〜ＣＬｎから実行される命令は常に１命令づつとなる。
【００２５】
例えばクラスタＣＬ０がＳＳＵ２にアクセスする際には、データ書き込み命令、データ読み出し命令、テーブル書き換え命令（ＬＯＣＫ命令）等のアクセス種別と、アクセス開始アドレス、アクセス長が通知されている。ＬＯＣＫ命令のアクセス長は、テーブルの書き換え時間を早めるためにアクセスの最短長になっている。
【００２６】
図５は、並列に実行されるアクセスを説明する図である。例えばクラスタＣＬ０からのアクセスはＳＳＵ２内で細分化され、アドレスの若番から順に実行される。ＳＳＵ２は、アクセスアドレスが違えば幾つかのアクセスを並列に実行できるように設計されている。図５は、並列に実行できるアクセス数が４つ、即ち、４バンク（４ＢＡＮＫ）ある場合を示す。アクセスが細分化される単位は、１度のアクセスを実行したら次のバンクに移る程度の長さである。説明の便宜上、図５ではクラスタＣＬ０からのアクセスを２重線で示し、クラスタＣＬ１からのアクセスを太線で示す。
【００２７】
クラスタＣＬ０のスタートアドレスがＢＡＮＫ０に相当する場合、最初の分割されたブロックのアクセスは図５のＳＴ１のように実行される。次のブロックはＢＡＮＫ１に相当するように予め決められているため、次のブロックのアクセスは図５のＳＴ２のように実行される。以下同様にして、順に図５のＳＴ３，ＳＴ４のブロックのアクセスが実行され、図５のＳＴ５で元のＢＡＮＫ０のブロックのアクセスに戻る。図５のＳＴ１で示す最初のブロックのアクセスとＳＴ５で示すＢＡＮＫ０に戻るブロックのアクセスとの時間間隔を十分長く設定することで、図５にＰで示すように、他のクラスタＣＬ１のアクセスを実行することができる。
【００２８】
次に、クラスタのアクセスの処理を、図６と共に説明する。図６は、書き込み動作を説明する図である。図６中、「ＰＯＲＴ」は任意のポート、「ＰＲＩＯ」はＰＲＩＯ２４、「メモリ」はメモリ２５を示す。
【００２９】
任意のクラスタＣＬからのアクセス命令を受けたＰＯＲＴは、バンク単位に命令を細分化し、細分化した単位毎にＰＲＩＯ２４にアクセスを要求する（ＳＴ１１：ＲＥＱ）。ＰＲＩＯ２４は、他のクラスタＣＬからのアクセスが競合していないか否かを確認し、競合している場合はＰＲＩＯ２４内部にある各クラスタＣＬからのアクセスを平均化するフラグに従って優先順位を決める競合処理を行い、アクセス許可をＰＯＲＴに返す（ＳＴ１２：許可）と共に、メモリ２５に選択されたＰＯＲＴを通知する（ＳＴ１３：ＰＯＲＴ通知）。アクセス命令が書き込み命令の場合、アクセス許可が与えられたＰＯＲＴはデータを細分化された単位分だけメモリ２５に送る（ＳＴ１４：データ転送）。一方、アクセス命令が読み出し命令の場合、メモリは細分化された単位分だけデータを指定のＰＯＲＴに転送する。以下、ＰＯＲＴはクラスタＣＬから指定の転送長分に達するまで再度ＰＲＩＯ２４にアスセス要求を繰り返す（ＳＴ１５：ＲＥＱ）。
【００３０】
クラスタＣＬ間の競合は、このバンク単位で起こり、ＰＲＩＯ２４が上記フラグを管理している。例えば、図５に示すように、ＢＡＮＫ０でクラスタＣＬＫ０からのアクセスＳＴ１とクラスタＣＬ１からのアクセスＰが競合しているものとする。この場合、ＰＲＩＯ２４は、クラスタＣＬ０のアクセスＳＴ１が実行された場合は次の競合で他のクラスタＣＬが選択されるように、クラスタＣＬ０の優先順位を最下位に更新するようにフラグを変化させる。図５のアクセスＳＴ１では、クラスタＣＬ０のアクセスが先に実行されているが、その間クラスタＣＬ１のアクセスはクラスタＣＬ０のアクセス終了まで待たされ、アクセスが許可された時点で実行される。競合がない場合は、ＰＲＩＯ２４は各クラスタＣＬのアクセスを先着順に実行する。
【００３１】
ＬＯＣＫ命令の転送長はバンク長よりも短いため、ＬＯＣＫ命令の管理もバンク単位で行なう。ＰＲＩＯ２４は、各クラスタＣＬ０〜ＣＬｎに対応してＬＯＣＫアドレスレジスタ２４１を有し、ＬＯＣＫ命令の実行中はＬＯＣＫアドレスレジスタ２４１にＬＯＣＫ命令のアドレスが保持される。ＰＲＩＯ２４は、バンク内でどのクラスタＣＬのアクセスを実行するかを選択する際に、実行するべきアクセスのアドレスとＬＯＣＫ命令のアドレスに重なりがないか否かをチェックする。クラスタＣＬからのアクセスのアドレスとＬＯＣＫ命令のアドレスが重なる場合は、該当するバンク以降のブロックのアクセスは対象のＬＯＣＫ命令が終了するまでＰＲＩＯ２４が対応するＰＯＲＴにアクセス許可を与えないことで保留される。
【００３２】
ＬＯＣＫ命令でＰＲＩＯ２４は各ＰＯＲＴ０〜ＰＯＲＴｎ毎にＬＯＣＫアドレスレジスタ２４１を持つのと同様に、ポート単位に実行中の命令の開始アドレスと終了アドレスを保持する開始／終了アドレスレジスタ２４２を有する。
【００３３】
ＢＣ命令が実行される際には、各クラスタＣＬが実行しようとしているアクセス又は実行中のアクセスの開始アドレスと終了アドレス、これから実行しようとするＢＣ命令の開始アドレスと終了アドレスが比較される。この時比較されるアドレスは、ＳＳＵ２内部でバンク単位に分割されたアドレスではなく、クラスタＣＬから通知された命令全体のアドレスである。実行中の命令（１つのブロックでも既に実行済み）とこれから実行しようとするＢＣ命令のアドレスが重なった場合は、実行中の命令が全て終了するまでＢＣの実行は待たされる。ＢＣ命令が待ち状態の場合は、他のクラスタＣＬからのＢＣ命令と重なるアクセスもＢＣ命令の待ち状態が解除されるまで待たされる。逆に、ＢＣ命令が１ブロックでも実行されている場合でも、他のクラスタＣＬからのＢＣ命令のアドレスと重なるアクセスはＢＣ命令の終了まで待たされる。
【００３４】
尚、ＢＣ命令はハードウェアで認識して他の命令と区別する必要があるので、ソフトウェア又はファームウェアで明確に定義しておく必要がある。又、ＢＣ命令は、他の拡張済の命令と区別する必要がある。従って、ＢＣ命令用に新たなオペランドか区別するフラグを割り当てることが望ましい。
【００３５】
図７は、本発明の一実施例におけるアクセス制御処理を説明するフローチャートである。図７において、ステップＳ１は任意のクラスタＣＬの処理、ステップＳ２，Ｓ３，Ｓ３１〜Ｓ３５は任意のＰＯＲＴの処理、ステップＳ１１〜Ｓ２６はＰＲＩＯ２４の処理を示す。クラスタＣＬからの命令がＢＣ命令であるか否かは、例えばソフトウェアにより定義されており、ＰＲＩＯ２４はこの定義に従ってＢＣ命令を認識して他の命令と区別できるものとする。
【００３６】
図７において、クラスタＣＬでは、ステップＳ１はＰＯＲＴへアクセス命令を発行する。
【００３７】
ＰＯＲＴでは、ステップＳ２は命令をバンク単位に分割し、ステップＳ３はＰＲＩＯ２４へ命令全体の転送長、アクセスアドレス（オーダアドレス）、分類された最初の転送長等を通知する。
【００３８】
ＰＲＩＯ２４では、ステップＳ１１は通知された命令がＢＣ命令であるか否かを判定し、判定結果がＮＯであると、ステップＳ１２は通知された命令が実行中のＢＣ命令のアドレスと重なるアドレスをアクセスするか否かを判定する。ステップＳ１１の判定結果がＹＥＳであると、ステップＳ１３は実行中の命令のアドレスとＢＣ命令のアドレスが重なるか否かを判定し、判定結果がＹＥＳであると、ステップＳ１４は他のクラスタの異なるアクセスの終了を待ち、処理はステップＳ１１へ戻る。ステップＳ１４は、ステップＳ１２の判定結果がＹＥＳの場合にも行われる。ステップＳ１３の判定結果がＮＯであると、ステップＳ１５はＢＣ命令のアドレスがＬＯＣＫ命令のアドレスと重なるか否かを判定する。ステップＳ１５の判定結果がＹＥＳであると、ステップＳ１６はアドレスが重なるＬＯＣＫ命令の終了を待ち、処理はステップＳ１１へ戻る。ステップＳ１２又はステップＳ１５の判定結果がＮＯであると、処理はステップＳ１７へ進む。
【００３９】
ステップＳ１７は、分割された命令のアドレスが他のクラスタＣＬのＬＯＣＫ命令のアドレスと重なるか否かを判定する。ステップＳ１７の判定結果がＹＥＳであると、ステップＳ１８は重なるアドレスのＬＯＣＫ命令の終了を待ち、処理はステップＳ１７へ戻る。ステップＳ１７の判定結果がＮＯであると、ステップＳ１９は通知された命令がＬＯＣＫ命令であるか否かを判定する。ステップＳ１９の判定結果がＹＥＳであると、ステップＳ２０はＬＯＣＫ命令により書き換えるテーブルのアドレスを保持し、処理はステップＳ１７へ戻る。
【００４０】
ステップＳ１９の判定結果がＮＯであると、ステップＳ２１は分割された命令がアクセスするバンクが空いているか否かを判定する。ステップＳ２１の判定結果がＮＯであると、ステップＳ２２は分割された命令がアクセスするバンクが空くまで待ち、処理はステップＳ２１へ戻る。ステップ２１の判定結果がＹＥＳであると、ステップＳ２３は分割された命令のアクセスが他のクラスタＣＬのアクセスと競合するか否かを判定する。ステップＳ２３の判定結果がＹＥＳであると、ステップＳ２４は優先度に従ってＰＲＩＯ２４内部にある各クラスタＣＬからのアクセスを平均化するフラグに従って優先順位を決める競合処理を行い、処理はステップＳ２５へ進む。ステップＳ２５は分割された命令が競合処理により実行権を獲得したか否かを判定し、判定結果がＮＯであると処理はステップＳ２３へ戻る。ステップＳ２３の判定結果がＮＯ、或いは、ステップＳ２５の判定結果がＹＥＳであると、ステップＳ２６はＰＯＲＴに分割された命令が実行権を獲得したことを通知し、処理はステップＳ３１へ進む。
【００４１】
ＰＯＲＴでは、ステップＳ３１は書き込み命令の場合はクラスタＣＬからのデータをメモリ２５へ転送し、読み出し命令の場合はメモリ２５からのデータをクラスタＣＬへ転送する。ステップＳ３２は、分割された命令のアクセスは全て終了したか否かを判定する。ステップＳ３２の判定結果がＮＯであると、ステップＳ３３は次の分割された命令のアクセスをＰＲＩＯ２４へ通知し、処理はステップＳ１７へ戻る。ステップＳ３２の判定結果がＹＥＳであると、ステップＳ３４は分割された命令がＬＯＣＫ命令であるか否かを判定する。ステップＳ３４の判定結果がＹＥＳであると、ステップＳ３５はＬＯＣＫ命令のアドレスの解除をＰＲＩＯ２４へ通知する。ステップＳ３４の判定結果がＮＯ、或いは、ステップＳ３５の後、処理は終了する。
【００４２】
図８は、比較例におけるアクセス制御処理を説明するフローチャートである。図８中、図７と同一ステップには同一符号を付し、その説明は省略する。この比較例は、上記実施例の如きＢＣ命令を使用しないものである。
【００４３】
例えばクラスタＣＬ０がＳＳＵ２に書き込むデータを他のクラスタＣＬ１が使用する場合を考えると、比較例の場合、クラスタＣＬ１はＳＳＵ２内のテーブルを参照してクラスタＣＬ０がアクセス領域をアクセス中でないことを確認してからアクセス領域からデータを読み出す。テーブルを参照せずに、直接アクセス領域を見に行くと、書き込みと読み出しが同時に実行されるため、クラスタＣＬ１が読み出したデータはクラスタＣＬ０が更新途中のデータであるか否かの判別ができない。このため、比較例の場合、クラスタＣＬ１がクラスタＣＬ０のアクセス領域の更新終了を確認する手順を高速化することが難しいため、複数のクラスタが記憶装置を共有する計算機システムの高速化が難しい。
【００４４】
これに対し、上記実施例では、クラスタＣＬ０がＢＣ命令を発行することで、クラスタＣＬ１はテーブルを参照することなく、直接アクセス領域を見に行っても、クラスタＣＬ１が読み出したデータは全て更新済み、或いは、更新前のデータであり、更新途中のデータではないことが保証される。
【００４５】
図７と図８の比較からもわかるように、上記実施例では図７のステップＳ１１〜Ｓ１６を追加するだけで、複数のクラスタが記憶装置を共有する場合において、共有する記憶装置へのアクセス命令に排他権付きアクセス命令を追加することにより、共有する記憶装置への転送命令と排他権付き排他権付きアクセス命令を排他で実行することができる。これにより、１つのクラスタが他のクラスタのアクセス領域の更新終了を確認する手順を高速化することができ、複数のクラスタが記憶装置を共有する計算機システムの高速化が可能となる。
【００４６】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
複数の本体装置が記憶装置を共有する計算機システムにおけるアクセス制御方法であって、
前記複数の本体装置から前記記憶装置へ発行するアクセス命令に加え、排他権付きアクセス命令を予め定義し、
前記記憶装置において、任意の本体装置から転送された前記排他権付きアクセス命令に基づいて他の本体装置のアクセス状況を監視し、前記他の本体装置のアクセス命令がアクセスする領域と前記排他権付きアクセス命令のアクセスする領域が重なる場合は排他で実行する、
アクセス制御方法。
（付記２）
前記記憶装置はアクセス領域が書き換え可能か否かを示すテーブルを備え、
前記記憶装置において、前記他の本体装置のアクセス命令がアクセスする領域が前記排他権付きアクセス命令がアクセスする領域と重ならない場合、前記テーブルを参照することなく前記他の本体装置にアクセス命令の実行権獲得を判断する、
付記１記載のアクセス制御方法。
（付記３）
前記記憶装置において、前記他の本体装置のアクセス命令がアクセスする領域が前記任意の本体装置から転送された前記テーブルを書き換えるためのテーブル書き換え命令がアクセスする領域と重ならない場合、前記テーブルを参照することなく前記他の本体装置にアクセス命令の実行権獲得を判断する、
付記２記載のアクセス制御方法。
（付記４）
複数の本体装置と、
前記複数の本体装置が共有する記憶装置とを備え、
前記複数の本体装置から前記記憶装置へ発行するアクセス命令に加え、排他権付きアクセス命令が予め定義されており、
前記記憶装置は、任意の本体装置から転送された前記排他権付きアクセス命令に基づいて他の本体装置のアクセス状況を監視し、前記他の本体装置のアクセス命令がアクセスする領域と前記排他権付きアクセス命令のアクセスする領域が重なる場合は排他で実行する優先順位決定回路を有する、
計算機システム。
（付記５）
前記記憶装置はアクセス領域が書き換え可能か否かを示すテーブルを有し、
前記優先順位決定回路は、前記他の本体装置のアクセス命令がアクセスする領域が前記排他権付きアクセス命令がアクセスする領域と重ならない場合、前記テーブルを参照することなく前記他の本体装置にアクセス命令の実行権獲得を判断する、
付記４記載の計算機システム。
（付記６）
前記記憶装置は、前記複数の本体装置と接続する複数のポートと有し、
前記優先順位決定回路は、前記アクセス命令の実行権獲得を前記他の本体装置に対応するポートに通知する、
付記５記載の計算機システム。
（付記７）
前記優先順位決定回路は、前記他の本体装置のアクセス命令がアクセスする領域が前記任意の本体装置から転送された前記テーブルを書き換えるためのテーブル書き換え命令がアクセスする領域と重ならない場合、前記テーブルを参照することなく前記他の本体装置にアクセス命令の実行権獲得を判断する、
付記５又は６記載の計算機システム。
【００４７】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００４８】
【図１】従来のアクセス制御を説明するブロック図である。
【図２】従来のアクセス制御の問題点を説明する図である。
【図３】本発明の一実施例におけるアクセス制御を説明する図である。
【図４】本発明の一実施例における計算機システムを説明するブロック図である。
【図５】並列に実行されるアクセスを説明する図である。
【図６】書き込み動作を説明する図である。
【図７】本発明の一実施例におけるアクセス制御処理を説明するフローチャートである。
【図８】比較例におけるアクセス制御処理を説明するフローチャートである。
【符号の説明】
【００４９】
１−０〜１−ｎ      クラスタ（ＣＬ）
２      記憶装置（ＳＳＵ）
２３−０〜２３−ｎ      ポート（ＰＯＲＴ）
２４      優先順位決定回路（ＰＲＩＯ）
２５      メモリ
【図１】
2010086010.tif 000003
【図２】
2010086010.tif 000004
【図３】
2010086010.tif 000005
【図４】
2010086010.tif 000006
【図５】
2010086010.tif 000007
【図６】
2010086010.tif 000008
【図７】
2010086010.tif 000009
【図８】
2010086010.tif 000010