(57)【特許請求の範囲】
【請求項１】
それぞれプロセッサを有し、ホストコンピュータ又はディスク装置と接続され
た複数のインタフェース部と、
前記複数のインタフェース部に直接接続され、制御データを格納する2重化された共有メモリと、
前記ホストコンピュータから送信されたデータを一時的に格納する複数のキャッシュメモリと、
前記複数のキャッシュメモリ及び前記複数のインタフェース部に接続されるセレクタと、
前記キャッシュメモリと前記セレクタの間を接続する第一のアクセスパスと、
前記セレクタと、前記複数のインタフェース部の間を接続する第二のアクセスパスと、を有し、
前記セレクタによって前記第一のアクセスパスの本数を絞って、前記第二のアクセスパスの本数よりも減らし、
前記複数のインタフェース部の前記プロセッサは、前記２重化された共有メモリに前記制御情報の２重ライトを行うことを特徴とするディスクアレイ制御装置。
【請求項２】
前記共有メモリと前記各インタフェース部との間がそれぞれ２重化されたアクセ
スパスにより接続され、
前記２重化されたアクセスパスの内、一方が故障した場合、他方に処理を割り当
てることを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項３】
前記各インタフェース部は、該インタフェース部内の前記プロセッサから２重ライトの要求を受け取った場合、前記２重ライトする制御データを、前記２重化された共有メモリの各メモリに対し交互に送信する手段を有することを特徴とする請求項１乃至２のいずれかに記載のディスクアレイ制御装置。
【請求項４】
前記各インタフェース部は、前記２重ライトするデータを前記２重化された共有メモリに並列に送信することを特徴とする請求項１乃至２のいずれかに記載のディスクアレイ制御装置。
【請求項５】
前記各インタフェース部は、前記プロセッサの要求に応じて前記共有メモリにアクセスする際に、前記インタフェース部と前記共有メモリを接続するアクセスパスのいずれかを選択する選択手段を有することを特徴とする請求項１乃至２のいずれかに記載のディスクアレイ制御装置。
【請求項６】
前記各インタフェース部は、前記各アクセスパスに対応した複数のキューを有し、
前記選択手段は、前記各キューにキューイングされている処理待ちの数に応じて、アクセスパスの選択をすることを特徴とする請求項５記載のディスクアレイ制御装置。
【請求項７】
前記選択手段は、前記複数のキューのうちキューイングされている処理待ちの数が少ない方の前記キューに対応したアクセスパスを選択することを特徴とする請求項６に記載のディスクアレイ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストコンピュータ又はディスク装置とのインタフェース部を制御する複数のＣＰＵと、制御情報を格納する複数のメモリを含んで構成されるディスクアレイ制御装置に関する。
【０００２】
【従来の技術】
共有メモリ型マルチプロセッサシステムを用いるディスクアレイ制御装置として、図２１に示す構成のものが知られている。図２１に示す制御装置では、複数のＣＰＵ−ＰＫ（パッケージ）２１０１と、制御情報を格納する共有メモリを搭載する共有メモリパッケージ（ＳＭ−ＰＫ）＃Ａ  ２１０３、及び共有メモリパッケージ（ＳＭ−ＰＫ）＃Ｂ  ２１０４とが、共有メモリバス２１０２を介して接続されている。各ＣＰＵ−ＰＫは、ホストコンピュータ又はディスク装置の何れかに接続される。各ＣＰＵ−ＰＫは、複数のＣＰＵを有しており、各ＣＰＵは、共有メモリに格納されている制御情報を用いて、ホストコンピュータ又はディスク装置からのデータ転送、又はホストコンピュータ又はディスク装置へのデータ転送を制御等を行う。
【０００３】
また、従来のメモリ制御装置では、メモリアクセスの応答時間の短縮、処理トランザクション数の増大を図るため、複数のＣＰＵとメモリとの間を複数のバスで接続したものがある。また、処理トランザクション数を増加させるには、処理トランザクションをそれら複数のバスに最適に振り分ける必要がある。トランザクションを振り分ける技術に関しては、特開平９−１４６８６３号公報に、各パスの使用、未使用のフラグを見てトランザクションを振り分ける旨が開示されている。
【０００４】
また、、従来のメモリ制御装置では、信頼性を向上させるため、バスを２系統化、メモリを２重化したものがある。このようなメモリ制御装置は、例えば、特開平９−３２５９１６号公報に、メモリアクセスに関して２本のバスを使うことにより、処理トランザクション数を増大させ、同時にデータの信頼性を向上するために重要なデータは２個のメモリに２重化ライトしている。この様な方式では非同期な複数メモリに同一データを書くため、同時に複数の２重ライトが発生するとデータの不一致またはデットロックを起こす可能性がある。ここでは２重ライトについて、メモリアドレス毎に使用するバスを固定することによりアクセス経路を単一化し、データの不一致またはデットロックの問題を避けている。
【０００５】
しかし、このような方式では、多数のアクセスが発生した場合、バスでの処理がシリアルになり応答時間、処理トランザクション数に関して性能ボトルネックとなる。またバスを２重化したとはいえ、バスの故障が発生した場合、接続しているＣＰＵはすべて影響を受けることになる。
【０００６】
性能、信頼性の向上を図ったものとしてと、CPUとメモリの間を一対一に接続するスター接続方式がある。特開昭５８−１６３６２号公報には、各ＣＰＵから２重化された各メモリに対し、１本づつパスが接続されている。この方式は、上述の方式に比較して同時にアクセスできるパス数が増え、処理トランザクション数もさらに増大する。また、各ＣＰＵ毎にパスが接続されているので、本方式は、上述の方式に比較し、１本のパスの故障により影響を受けるＣＰＵの範囲は狭く、信頼性も高い。さらに、この技術では，２重ライト処理時のデータの不一致またはデットロックを避けるために、共有メモリ間インターフェィスをもうけている。
【０００７】
【発明が解決しようとする課題】
ディスクアレイ制御装置において、共有メモリではキャッシュメモリほど大量のデータの転送は必要としないが、トランザクション数を増加させ、一回の転送の応答時間の短縮が必要である。したがって、特開昭５８−１６３６２号公報に記載されている技術のように、各ＣＰＵと共有メモリとの間を１対１接続するのが適している。
【０００８】
一方、各ＣＰＵとキャッシュメモリとの間では、大量のデータを高速に転送する必要があるので、これらの間のアクセスパス数を増やす必要がある。そのためには、特開昭５８−１６３６２号公報に記載されている技術のように、これらの間を１対１接続するのが適している。
【０００９】
しかし、キャッシュメモリを構成するパッケージに実装できるコネクタ数、又は、各メモリを構成するＬＳＩに実装できるピン数の数には物理的に限りがあるので、各ＣＰＵと共有メモリとの間のアクセスパス数を増やすことには限界がある。
【００１０】
また、上述のように，処理トランザクション数を増加し、信頼性を向上するには，バス接続方式よりスター接続方式の方が優れているが、特開昭５８-１６３６２号公報に開示された技術では、2重ライト処理用に共有メモリ間にインターフェィスを設けているため、このインターフェィスに障害が発生すると共有メモリ全体が使用できなくなるという問題がある。また、2重ライト時には両方の共有メモリをすべてロックして他のアクセスを拒絶するため、処理トランザクション数が減少するという問題もある。さらに、パスの本数を単純に増やしても、先ほどのバス方式の様に２重ライトをシリアルに処理する必要があるので、トランザクション数はそれほど増加しない。また各ＣＰＵと共有メモリ間のパスは１本なので，そのパスに障害が発生した場合，データにアクセスできなくなる可能性がある。
【００１１】
そこで、本発明の目的は、複数のＣＰＵと２重化された各メモリとの間を、メモリアクセスの応答時間の短縮と、処理トランザクション数を増加させることにある。
【００１２】
また、２重ライト時にデータの不一致またはデットロックを起こさないパスの選択制御手段を提供することにある。
【００１３】
【課題を解決するための手段】
上記問題を解決するために、本発明はＣＰＵと各共有メモリパスを接続し、制御を行う共有メモリバスインターフェィス部に各パスの使用状況を示すパスロックテーブルを設け、共有メモリと各共有メモリパスを接続し制御する共有メモリ制御回路にメモリのロック情報を示すメモリロックテーブルを設ける。２重ライト以外の処理（１重リード、１重ライト、アトミックモディファイ）の場合は各パスの中で処理待ちトランザクション数を示す、バスキュー長の短いパスを選択する。２重ライト、２重アトミックモディファイの場合、パスを選択する時に上記パスロックテーブルを参照し、既に処理中の２重ライト数が一定数以下なら２重処理を開始し一定数以上なら待つ。さらに２重ライトするパスを選択する際に、すでに処理中の２重ライト処理とは異なるパスで処理を行う様にパスを選択する。
【００１４】
【発明の実施の形態】
以下、本発明の実施例について説明する。
【００１５】
まず、最初に、本発明のディスクアレイ制御装置の全体構成例を図２を用いて説明する。ディスクアレイ制御装置６１０は、上位装置５００と、磁気ディスク５７０、５８０等に接続されている。５００は汎用コンピュータ、ワークステーション、パーソナルコンピュータに代表される上位装置（ホスト）であり、二次記憶装置に対してリード、ライト等の命令を発行し、結果を受けとる。ＣＨＡ−ＰＫ５１０、５２０はチャネルアダプタパッケージであり、上位装置５００からの命令を受け取り、キャッシュ５５０、共有メモリ５６０、ＤＫＡ-ＰＫ５３０、５４０をアクセスする。ＤＫＡ-ＰＫ５３０、５４０はディスクアダプタパッケージであり、共有メモリ５６０またはＣＨＡ-ＰＫ５１０、５２０からの命令により、磁気ディスク５７０、５８０、５９０、６００をアクセスする。ここでＣＨＡ-ＰＫ５１０、５２０、ＤＫＡ-ＰＫ５３０、５４０は図１のＣＰＵ−ＰＫ１０等と同じ構成になっている。５１１、５１２、５１３、５１４、５２１、５２２、５２３、５２４、５３３、５３４、５４３、５４４はＣＰＵであり各パッケージを制御する。ＤＤＴＡ５１５、５２５、５３３、５４３は、上位装置５００または磁気ディスク５７０、５８０、５９０、６００とキャッシュ５５０との間のデータの送受信を行う。ＭＰＡ５１６、５２６、５３４、５４４は、各ＣＰＵと共有メモリ５６０との間の共有データのやり取りを制御する。５５０はキャッシュであり、上位装置５００または磁気ディスク５７０、５８０、５９０、６００のデータを一時的に格納する。Ｓｅｌｅｃｔｏｒ５５１、５５２、５５３、５５４は、ＤＤＴＡ５１５、５２５、５３３、５４３とCache５５５、５５６、５５７、５５８との間の接続を制御する。５５５、５５６、５５７、５５８はＣａｃｈｅであり、各Ｓｅｌｅｃｔｏｒから来るデータを格納する制御回路とメモリである。５６０は共有メモリであり上位装置５００との応答、キャッシュ５５０、磁気ディスク５７０、５８０、５９０、６００のデータのアクセスに関する制御データを格納する。５６１、５６２はＳＭＡ-A、Ｂであり、各ＭＰＡから来る制御データを格納する制御回路とメモリである。ここでＳＭＡ-A５６１、ＳＭＡ-Ｂ５６２は図１のＳＭＡ-ＰＫ＃Ａ１２０、ＳＭＡ-ＰＫ＃Ｂ１４０と同じ構成を取っている。５７０、５８０、５９０、６００は磁気ディスクであり、データを格納し必要とあればキャッシュ５５０にデータをロードする。
【００１６】
ＤＤＴＡ５１５、５２５等とＣａｃｈｅ５５５、５５６等との間では、大量のデータを高速に転送する必要があるので、ＤＤＴＡ５１５、５２５等とＣａｃｈｅ５５５、５５６等との間のアクセスパス数を増やす必要がある。そのためには、ＤＤＴＡ５１５、５２５等とＣａｃｈｅ５５５、５５６等との間を１対１接続するのが適している。しかし、Ｃａｃｈｅ５５５、５５６等を構成するパッケージに実装できるコネクタ数、又は、キャッシュ１１３を構成するＬＳＩに実装できるピン数の数には物理的に限りがあるので、ＤＤＴＡ５１５、５２５等とＣａｃｈｅ５５５、５５６等との間のアクセスパス数を増やすことには限界がある。そこで、ＤＤＴＡ５１５、５２５等とＣａｃｈｅ５５５、５５６等との間にセレクタ５５１、５５２等を設け、ＤＤＴＡ５１５、５２５等とセレクタ５５１、５５２等との間を１対１接続することにより、ＤＤＴＡ５１５、５２５等とセレクタ５５１、５５２等との間のアクセスパス数を増やす。一方、セレクタ５５１、５５２等で、複数のＤＤＴＡ５１５、５２５等からのアクセス要求を所定数に絞ることにより、Ｃａｃｈｅ５５５、５５６等とセレクタ５５１、５５２等との間のアクセスパス数を、ＤＤＴＡ５１５、５５２等とＣａｃｈｅ５５５、５５６等との間のアクセスパス数よりも減らし、上述のコネクタ数、又はピン数の問題を解決している。
【００１７】
一方、共有メモリではキャッシュメモリほど大量のデータの転送は必要としないが、トランザクション数を増加させ、一回の転送の応答時間の短縮が必要である。そこで、ＳＭＡ−Ａ５６１、ＳＭＡ−Ｂ５６２と各ＣＰＵ−ＰＫとの間は、セレクタ部での遅延を避けるため、セレクタを介さずに接続している。ただし、ＭＰＡとＳＭＡ−Ａ、ＳＭＡ−Ｂとの間にも、セレクタを設ける構成してもよい。
【００１８】
なお、以下の説明で利用するディスクアレイ制御装置の構成図では、キャッシュメモリを省略している。
【００１９】
［実施例１］
図１は、本発明のディスクアレイ制御装置の一実施例を示している。
【００２０】
１０，４０，５０はＣＰＵパッケージ（ＣＰＵ-ＰＫ＃１、＃２、＃３）であり，複数のＣＰＵ，メモリ等からなる。１５，１８はＣＰＵであり各メモリのリード，ライト，演算，命令実行を行う。２０，２３はローカルメモリであり各ＣＰＵに必要な情報，プログラムを格納する。２５，２８はローカルバス回路でありＣＰＵ１５，ローカルメモリ２０，共有メモリインターフェィス３０を接続し，互いのデータのやり取りを管理する。３０は共有メモリインターフェィス（ＭＰＡ）であり，ＣＰＵ１５，１８等と共有メモリパス（６０〜１１５）との間を接続しデータのやり取りを制御する。共有メモリインターフェィス３０は内部にバスロックテーブルを持ち，パスの選択，排他処理を行う際に用いる。６０，６５，７０，７５，８０，８５，９０，９５，１００，１０５，１１０，１１５は共有メモリバスであり，ＣＰＵ１５，１８と共有メモリ１３０，１５０との間で送信されるデータは、この共有メモリバスを用いて送信される。１２０はＳＭA-ＰＫ＃Ａ、１４０はＳＭA-ＰＫ＃Ｂであり、各ＭＰＡから来る制御データを格納する制御回路とメモリである。ＳＭＡ-ＰＫ＃Ａ１２０とＳＭＡ-ＰＫ＃Ｂ１４０はメモリの一部が互いに対となっており、２重化されている。１２５は共有メモリ制御回路Ａ（ＳＭＡ-Ａ），１４５は共有メモリ制御回路Ｂ（ＳＭＡ-Ａ）であり各ＣＰＵパッケージからくる共有メモリアクセスを処理する。１２６、１４６はメモリロックテーブルであり、共有メモリのロック情報を管理する。１３０、１５０は共有メモリであり、各ＣＰＵ間で共有する制御情報等を格納する。
【００２１】
図３は、図１の構成を更に詳細に説明したものである。
【００２２】
ＣＰＵ-ＰＫ＃１（１０）内の共有メモリバスインターフェィス（MPA)内には、バスロックテーブル３１以外に、各パス毎に処理待ちトランザクションを登録するキューがある。３２はＡ面バス０キュー、３３はＡ面バス１キュー、３４はＢ面パス０キュー、３５はＢ面バス１キューである。ＭＰＡ３０はこのキュー並んでいる順番通りにトランザクションを各パスに通す。またこのキューで処理を待っているトランザクションの数をバスキュー長としてカウントし、バスロックテーブル３１に記録する。また現在処理中のアクセスの種類や、キュー内にある２重アクセスの数等もバスロックテーブル３１に記録する。ＣＰＵ-ＰＫ１０からＳＭＡ-ＰＫ１２５、１４５へは各２本のパスがあり、よって最大で同時に４回のアクセスが処理できることになる。各パスからのアクセス要求を受けた共有メモリ制御回路-Ａ１２５、共有メモリ制御回路-Ａ１４５はアクセス要求の優先順位を決めて、共有メモリ１３０、１５０のアクセスを行う。その際メモリロックテーブルにアクセス中のアドレスを記憶し、他のアクセスがそのアドレスを後から要求しても排他する。また２重ライトの場合、Ａ面の共有メモリ１３０、Ｂ面の共有メモリ１５０の内、先にライトする方をマスタとし後でライトする方をスレーブとする。この順番はユーザが設定したデータ長によってマスタ、スレーブが入れ替わる。図３の例ではＡ面の0x00..000から0xA0..000までがマスタ面であるとすると、次の0xB0..000まではスレーブ面となる。その時Ｂ面は0x00..000から0xA0..000までがスレーブ面であり、次の0xB0..000まではマスタ面となる。この方式によって従来ではシリアルに処理していた２重ライトを、条件によっては並列に処理することが可能となる。図３の例では２重ライト、リード領域についてのみ示しているが、１重ライト、リード領域の場合Ａ面とＢ面では異なるアドレスが割り当てられるので、上記に示したようなマスタ、スレーブの設定はない。
【００２３】
図４を用いて、本発明の実施例１を適用した場合の利点を示す。２重ライトが効率よく処理できる例では、２個の２重ライトに対し、互い異なる共有メモリがマスタに割り当てられた場合に、マスタ面のアクセス、スレーブ面のアクセスに対し、４本のパスを使い分けることによってほぼ平行してアクセスが可能になる。よって処理トランザクション数を増加させることが可能になる。ただし、２重ライトでデッドロックが生じる例にあるようにパスの選択を間違えると、お互いに相手が使いたいパスを占有し続けデッドロックが生じ、処理は前に進まなくなる。よってバスロックテーブル３１やメモリロックテーブル１２６、１４６を用いてデッドロックの無いバスの選択を行う必要がある。
【００２４】
図５は、バスロックテーブル３１を示す。４００は共有メモリ面であり、パスの接続している共有メモリ面を示している。４０５は使用バス番号であり、システム全体で何番目のパスなのかを示す。４１０はバスキュー長でパスのキューで処理を順番待ちしているトランザクション数を示している。４１５はキュー内の２重アクセスであり、処理中または待ち行列に並んでいるトランザクションの中に２重ライトが含まれているかどうかを示している。４２０は処理中のアクセス種類であり、処理中のアクセスが１重リード、１重ライト、２重ライト、アトミックモディファイ（リード、ライト）、２重アトミックモデファイ（リード、ライト）のどれであるかを示す。４２５は処理中のロックの有無であり、アトミックモディファイの様に処理中のリードの終了後もパスをロックし続けるか否かを示す。４３０は処理中のマスタ、スレーブの有無を示し、処理中のアクセスがマスタ側なのか、スレーブ側なのかを示している。
【００２５】
図６は、メモリロックテーブル１２６、１４６を示す。４５０は使用バス番号であり、システム全体で何番目のパスからのアクセスなのかを示す。４５５は排他開始アドレスであり、アクセスしている共有メモリの先頭アドレスを示す。４６０は排他終了アドレスであり、アクセスしている共有メモリの終端アドレスを示す。排他開始アドレス４５５と排他終了アドレス４６０の範囲のデータは排他となり、他のアクセスはできないことになる。また排他するデータ長はユーザが前もって設定する。４６５はロックアクセスの有無であり、マスタ、アトミックモディファイの場合は共有メモリ１３０、１５０のアクセス終了後も排他を解除しないことを示す。アクセスが完全に終了後、共有メモリバスインターフェィス３０からの命令によって初めてこのロックは解除され、ロックアクセスの有無の欄は空欄になる。
【００２６】
図７に本発明の実施例１における１重ライト、１重リードの動作を示す。以下特に断らない限り図２の構成を例に説明する。（１）１重ライトの動作ではアドレス、コマンド、データはＣＰＵ１５、１８からローカルバス回路２５、２８を通してＭＰＡ３０に送信され、ＭＰＡ３０から共有メモリパスの０番目６０、７０または１番目６５、７５のバスを選択してＳＭＡ-ＰＫ＃Ａ１２０、ＳＭＡ-ＰＫ＃Ｂ１４０の共有メモリ制御回路１２５、１４５へ送られる。ライト処理が終了すると終了情報を乗せたステータスがＳＭＡから同じ共有メモリバスを通してＭＰＡ３０に送信され、ＭＰＡ３０からローカルパス回路２５、２８を通して次の送信が可能であることを示すレディがＣＰＵ１５、１８に戻される。（２）のリードの動作ではアドレス、コマンドはＣＰＵ１５、１８からローカルバス回路２５、２８を通してＭＰＡ３０に送信され、ＭＰＡ３０から共有メモリパスの０番目６０、７０または１番目６５、７５のバスを選択してＳＭＡの共有メモリ制御回路１２５、１４５へ送られる。リード処理が終了するとデータ、ステータスがＳＭＡの共有メモリ制御回路１２５、１４５から同じ共有メモリバスを通してＭＰＡ３０に送信され、ＭＰＡ３０からデータとレディがＣＰＵ１５、１８に戻される。１重ライト、１重リードの動作中ＭＰＡ３０はＳＭＡ-ＰＫ＃Ａ１２０、ＳＭＡ-ＰＫ＃Ｂ１４０からステータスが返ってくるまで共有メモリバスを切り離さず保持している。
【００２７】
図８に２重ライトの動作を示す。これ以降、特に断りがなければ、Ａ面共有メモリ１３０をマスタとして話を進めるが、これはＢ面共有メモリ１５０がマスタになった場合でも同様である。（３）２重ライトの動作ではアドレス、コマンド、データはＣＰＵからローカルバスを通してＭＰＡ３０に送信される。ＭＰＡ３０からはマスタになる面（図９の例ではＡ面）の０番目６０または１番目６５のバスを選択してＳＭＡ-ＰＫ＃Ａ１２０の共有メモリ制御回路-Ａ１２５に送信される。ライト処理が終了すると終了情報を乗せたステータスがＳＭＡ-ＰＫ＃Ａ１２０の共有メモリ制御回路-Ａ１２５から同じ共有メモリバスを通してＭＰＡ３０に送信される。この後もマスタ側のパスは共有メモリ制御回路-Ａ１２５が保持し、他のアクセスはこのパスを使うことができない。ステータスが正常ならば、ＭＰＡ３０は次にスレーブになる面（図9の例ではＢ面）の０番目７０または１番目７５のバスを選択してＳＭＡ-ＰＫ＃Ｂ１４０の共有メモリ制御回路-Ｂ１４５にアドレス、コマンド、データを送信する。ライト処理が終了すると終了情報を乗せたステータスがＳＭＡ-ＰＫ＃Ｂ１４０から同じ共有メモリバスを通してＭＰＡ３０に送信される。スレーブ側は転送終了後パスをすぐに開放する。ステータスが正常ならば、ＭＰＡ３０が保持していたマスタ側のパスを開放するためのアンロック命令が共有メモリ制御回路-Ａ１２５に送信され、マスタ側のパスが開放される。次にローカルパスを通して次の送信が可能であることを示すレディがＣＰＵ１５、１８に戻される。
【００２８】
図９に、１重アトミックモディファイ、２重アトミックモディファイの動作を示す。アトミックモディファイは、共有メモリのリードの後に他のアクセスを介入させることなくライトを行う処理で、マルチプロセッサの同期化等に必要な機能である。（４）１重アトミックモディファイの動作では、アドレス、コマンドはＣＰＵ１５、１８からローカルバスを通してＭＰＡ３０に送信され、ＭＰＡ３０から共有メモリパスの０番目６０または１番目６５のバスを選択してＳＭＡ-ＰＫ＃Ａ１２０（この例では共有メモリ制御回路-Ａ１２５）へ送られる。リード処理が終了するとデータ、ステータスがＳＭＡ-ＰＫ＃Ａ１２０から同じ共有メモリバスを通してＭＰＡ３０に送信され、ＭＰＡ３０からデータとステータスがＣＰＵ１５、１８に戻される。この後もリードで用いたパスは共有メモリ制御回路-Ａ１２５が保持し、他のアクセスはこのパスを使うことができない。ステータスが正常でＣＰＵ１５、１８がモディファイ処理を行った後、ＭＰＡ３０は次にＳＭＡ-ＰＫ＃Ａ１２０の共有メモリ制御回路-Ａ１２５にアドレス、コマンド、データを送信する。ライト処理が終了すると終了情報を乗せたステータスがＳＭＡの共有メモリ制御回路-Ａ１２５から同じ共有メモリバスを通してＭＰＡ３０に送信される。また同時に今までロックしていたパスも開放する。次にＭＰＡ３０から次の送信が可能であることを示すレディがＣＰＵ１５、１８に戻される。（５）２重アトミックモディファイ動作では、前半のリードは１重アトミックモディファイと同じである。ステータスが正常でＣＰＵ１５、１８がモディファイ処理を行った後、ＭＰＡ３０はすでにパスを確保しているマスタ側共有メモリ１３０とまだ確保していないスレーブ側共有メモリ１５０に対して、２重ライトの処理を行う。ＭＰＡ３０からアドレス、コマンド、データはマスタ側バスを使ってＳＭＡ-ＰＫ＃Ａ１２０の共有メモリ制御回路-Ａ１２５に送信される。ライト処理が終了すると終了情報を乗せたステータスがＳＭＡの共有メモリ制御回路から同じ共有メモリバスを通してＭＰＡ３０に送信される。スレーブ側では、０番目７０または１番目７５のパスを選択してＳＭＡ-ＰＫ＃Ｂの共有メモリ制御回路Ｂ-１４５にアドレス、コマンド、データを送信する。ライト処理が終了すると終了情報を乗せたステータスがＳＭＡ-ＰＫ＃Ｂから同じ共有メモリバスを通してＭＰＡ３０に送信される。スレーブ側は転送終了後パスをすぐに開放する。ステータスが正常ならば、ＭＰＡ３０が保持していたマスタ側のパスを開放するためのアンロック命令が共有メモリ制御回路-Ａ１２５に送信され、マスタ側のパスが開放される。次にローカルパスを通して次の送信が可能であることを示すレディがＣＰＵ１５、１８に戻される。図７、８、９で示した各アクセスを実現するために共有メモリバスインターフェィス（ＭＰＡ）３０と共有メモリ制御回路Ａ（ＳＭＡ-Ａ）１２５、共有メモリ制御回路Ｂ（ＳＭＡ-Ｂ）１４５で以下に述べる様な、処理フローが必要である。
【００２９】
図１０に、パスキュー振り分け処理のフローを示す。これは共有メモリバスインターフェィス（ＭＰＡ）３０においてＣＰＵ１５、１８等からトランザクションを受け取り、ＭＰＡ３０の各バスキューに投入するまでのフローである。７００からパスキュー振り分け処理が開始される。ステップ７０１では複数のＣＰＵ１５、１８等から来る処理をラウンドロビン等を使って優先順位をつけて、一番優先度の高い処理を選択する。ステップ７０２ではその処理がＳＭＡ-ＰＫ＃Ａ１２０（Ａ面）処理から開始するかを判定する。もしＳＭＡ-ＰＫ＃Ｂ１２０（Ｂ面）から処理が開始されるのならばステップ７０３のアクセス処理に進む。もしＡ面から処理が開始されるのならば、ステップ７１０のアクセス処理へ進む。ここでステップ７０３とステップ７１０はＡ面、B面の違いを除いて、処理内容はまったく同じである。ステップ７１１では処理が２重ライトまたは２重アトミックモディファイであるかを判定する。もし、２重ライトまたは２重アトミックモディファイならばステップ７３０の２重ライトまたは２重アトミックモディファイ処理に進む。ステップ７３０については後で説明する。もし２重ライトまたは２重アトミックモディファイでないならばステップ７２０のキュー選択処理に進む。ステップ７２０内のステップ７２１ではＭＰＡ３０内のパスロックテーブル３１のパスキュー長４１０をＡ面に関して見る。ステップ７２２ではパス０（６０）とパス１（６５）のパスキュー長４１０を比較する。もしパス０（６０）の方が長ければ、ステップ７２３に進み、パスキュー１に処理を入れる。次にステップ７２４に進み、パスロックテーブル３１内のパス１キュー長を１加算し、処理の登録を行う。もしパス１（６５）の方が長ければ、ステップ７２７に進み、パスキュー０に処理を入れる。次にステップ７２７に進み、パスロックテーブル３１内のパス１キュー長を１加算し、処理の登録を行う。もしどちらの長さも同じならば、ステップ７２５に進み、前回ＣＰＵが使わなかったパスキューに処理を入れる。次にステップ７２８へ進み、パスロックテーブル３１内の該当するバスキュー長を１加算し、処理の登録を行う。ステップ７２３、７２６、７２８の後はステップ７０１に戻る。ステップ７０３のＢ面のアクセス処理が終了した後も同様にステップ７０１へ戻る。以上のキュー選択処理７１０により、ＣＰＵ１５、１８の出す処理は２本のパスのパスキュー長の短い方へ入る制御が行われるので、パス効率が向上する。
【００３０】
図１１に、２重ライト、２重アトミックモディファイ処理のフローを示す。ステップ７３１ではアクセスがマスタ側の処理なのかを判定する。もしスレーブ側の処理ならば、ステップ７３４へ進む。もしマスタ側の処理ならばステップ７３２に進みバスロックテーブル３１のキュー内の２重アクセス４１５、処理中のマスタ/スレーブの有無４３０を調べ、マスタ側の処理および２重アトミックモディファイの個数を数える。ステップ７３３ではマスタ数が２以下であるかを判定する。２以上であればすでに２個以上マスタ側の処理が入っており、これ以上２重ライト、２重アトミックモディファイの処理は不可能である。よってステップ７３２に戻り、マスタ数が１以下になるまで待つ。もしマスタ数が１以下になったら、ステップ７３４に進む。ステップ７３４ではバスロックテーブル３１より、アクセスする共有メモリ面（該当面）のパスが２本とも正常で、かつどちらかにマスタ側の処理があるかを調べる。もしどちらかにマスタ側の処理があるならば、ステップ７３５に進み、マスタがないパスに処理を入れる。次にステップ７３６に進み、バスロックテーブル３１内の該当バスのバスキュー長４１０を１加算してステップ７３７へ進む。もしマスタがどちらにも無ければ、ステップ７２０に進みキュー選択処理を行い、入れるパスを確定しステップ７３７に進む。ステップ７３７ではバスロックテーブルのキュー内２重アクセス４１５を登録する。以上の２重ライト、２重アトミックモディファイ処理７３０によってパスを確定することにより、デッドロックなしに２重ライト、２重アトミックモディファイのアクセスを最適にキューに振り分けることが可能になる。
【００３１】
図１２に、各パスキューの処理のフローを示す。これは各キューに入った処理を各パスを通してＳＭＡ-ＰＫ＃Ａ１２０、ＳＭＡ-ＰＫ＃Ｂ１４０に送信し、その返答があれば、それをＣＰＵ１５、１８等に返す処理である。ステップ７５０から各パスキューの処理が開始される。ステップ７５１ではバスキューより実行可能な処理を取り出す。ステップ７５２では取り出した処理についてパス毎にＳＭＡアクセス処理を行う。SMAアクセス処理はＳＭＡに対して図７、８、９のようなプロトコルでコマンド等を発行し、データ、ステータス等を受け取ることである。ステップ７５３では返ってきたステータス等より処理が正常終了したかを判定する。もし正常終了ならば、ステップ７６０のコマンド終了処理へ進む。もし異常終了ならば、ステップ７５４の障害処理を行い、ステップ７６０へ進む。障害処理の詳細については本発明とは直接関係ないのでこれ以上の説明は省略する。ただしパス障害処理については後で説明する。ステップ７６０のコマンド終了処理については後で説明する。コマンド終了処理７６０が終了した後ステップ７５１に戻る。
【００３２】
図１３にコマンド終了処理を示す。ＳＭＡアクセス処理が終了した後、バスロックテーブル３１の処理中アクセス種類４２０、処理中のロックの有無４２５、処理中のマスタ/スレーブの有無４３０を調べその組み合わせによってコマンド終了処理７６０にある次に行う処理を選択する。次に行う処理は図７、８、９のプロトコルを実現するために必要な処理である。
【００３３】
以上図１０、１１、１２で説明した処理をＭＰＡ３０の中で行う。ＭＰＡ３０から発行されたコマンド等はＳＭＡ-ＰＫ＃Ａ１２０、ＳＭＡ-ＰＫ＃Ｂ１４０に送信されて、処理が行われる。
【００３４】
図１４に、ＳＭＡ内各パス処理のフローを示す。これはＳＭＡ-ＰＫ＃Ａ１２０、ＳＭＡ-ＰＫ＃Ｂ１４０に到着した各パスからの処理に優先順位をつけメモリロック等を行い，共有メモリのアクセス処理を実行、その後終了処理を行いＭＰＡ３０に終了報告を行うまでのフローである。ステップ８００からＳＭＡ内各パス処理が開始される。ステップ８０１では各パスに到着した処理のデコード、エラーのチェックを行う。ステップ８０２では到着した処理が２重ライト、アトミックモディファイ等の最後発生するアンロック以外かどうかの判定を行う。もしアンロック以外であればステップ８０３に進む。アンロックであれば図１５の４へ進む。ステップ８０３では各パスに到着した処理の実行順位をラウンドロビン等で決定する。ステップ８０４では各パスに有る処理がランドロビンの結果実行可能かどうかを判定する。実行可能でない場合再度ステップ８０３に戻る。実行可能ならば、ステップ８０５に進み、メモリロックテーブル１２６、１４６の排他開始アドレス４５５、排他終了アドレス４６０を参照してすでに排他処理中ののアドレスと重なるかどうかを検索する。アドレスが重なっていればその領域はロックされていることになる。ステップ８０６では検索結果よりアクセス先が未ロック領域であるかどうかを判定する。もしロック領域ならば、ロックが開放されるまで待つ。もし未ロック領域ならば、ステップ８０７に進み、メモリロックテーブル１２６、１４６に排他開始アドレス４５５、排他終了アドレス４６０で示されるアクセス範囲、ロックアクセスの有無等を登録する。その後ステップ８１０では共有メモリのアクセス処理を行い共有メモリ１３０、１５０のリード、ライト等が処理される。共有メモリ１３０、１５０の処理が終わった後のフローについては図１４、１５の２以降に示す。
【００３５】
図１５に、ＳＭＡ内各パス処理（続き）のフローを示す。ステップ８２０では共有メモリ１３０、１５０からデータ、ステータスを受け取る。ステップ８２１ではデータ、ステータスより、処理が正常終了したかどうかを判定する。もし正常終了ならば、ステップ７８２３へ進む。もし異常終了ならば、ステップ８２２の障害処理を行い、ステップ８２３へ進む。障害処理の詳細については本発明とは直接関係ないのでこれ以上の説明は省略する。ステップ８２３では終了した処理がロックアクセス処理であるのかを判定する。もしロックアクセスならば、そのままメモリ、パスをロックしたままで、ステップ８２５へ進む。もしロックアクセスでないならば、ステップ８２４に進み、メモリロックテーブル１２６、１４６に登録した使用パス番号４５０、排他開始アドレス４５５、排他終了アドレス４６０、ロックアクセスの有無４６５を削除する。その後ステップ８２５に進む。ステップ８２５では処理の正常終了、異常終了等のステータスを生成してＭＰＡ３０に送信する。
【００３６】
図１６に、共有メモリのアクセス処理のフローを示す。ステップ８１０より共有メモリのアクセス処理が開始される。ステップ８１１ではＳＭＡ内各パスよりメモリアクセスを受け取る。ステップ８１２では先行している処理があるかどうかを判定する。もしなければ、ステップ８１８に進む。もしあればステップ８１３に進み、アクセスが終了している処理があるかどうかを判定する。もしなければ、ステップ８１４に進みメモリ多重アクセスが可能かどうか判定する。もし可能でなければそのままステップ８１３にもどる。もし可能ならばステップ８１８に進む。アクセスが終了している処理があれば、ステップ８１５に進み、その処理が正常終了したかどうかを判定する。もし正常終了ならば、ステップ７８１７へ進む。もし異常終了ならば、ステップ８１６の障害処理を行い、ステップ８１７へ進む。障害処理の詳細については本発明とは直接関係ないのでこれ以上の説明は省略する。ステップ８１７では処理の正常終了、異常終了等のステータスを生成してＭＰＡ３０に送信する。ステップ８１８では共有メモリへのリード、ライトを実際に行っている。その後ステップ８１１に戻る。
【００３７】
以上、図１０から図１６に示した、ＭＰＡ３０とＳＭＡ-ＰＫ＃Ａ１３０、ＳＭＡ-ＰＫ＃Ｂ１５０の処理フローを実現することにより、２重ライト時にデータの不一致またはデットロック無しで効率の良いパス選択ができる。また図１７で示すようなパス障害処理を行うことで、パスの２重化が実現でき、信頼性が向上する。
【００３８】
図１７に本発明の実施例１におけるパス障害処理のフローを示す。ステップ８５０からバス障害処理が開始される。ステップ８５１ではエラー情報の収集をステータス等から集める。ステップ８５２ではパス障害であるかどうかを判定する。もしパス障害でなければその他の障害処理を行う。もしバス障害であれば、ステップ８５４に進み障害パスの特定を行う。ステップ８５５では障害パスを利用する各ＣＰＵ１５、１８、ＳＭＡ-ＰＫ＃Ａ１３０、ＳＭＡ-ＰＫ＃Ｂ１５０に対してパス閉塞を報告する。ステップ８５６ではパスロックテーブル３１内の使用パス番号を変更する。ステップ８５７では障害パスを論理的、物理的に閉塞を行う。ステップ８５８でパス障害処理は終了する。
【００３９】
以上図１から図１７に示した実施例１によれば、２重化したパスをスター型に接続した２重化共有メモリ制御装置において、共有メモリバスインターフェス側にパスロックテーブルを、共有メモリ制御回路側にメモリロックテーブルを持ち、これを参照しながらパスを選択することにより、１重系アクセスだけでなく、２重ライト、２重アトミックモディファイのパス選択をデットロック無しに効率よくできるので、処理待ち時間が短縮し、処理トランザクション数の増加を図ることが可能になる。
【００４０】
［実施例２］
次に、本発明のディスクアレイ制御装置の他の実施例について説明する。以下、特に説明のない部分は実施例１と同じとする。
【００４１】
図１８に、本実施例の基本構成を示す。ここで実施例１と異なる所は共有メモリ１３０、１５０におけるマスタスレーブの配置の方法である。実施例２では共有メモリ１２０、１４０のどちらか片面をすべてマスタとしている。これにより２重ライト、２重アトミックモディファイのパス選択は必ずマスタになった共有メモリの面から始まるので、デッドロックの可能性が無くなり、制御も楽になる。ただし、これらのアクセスがすべてシリアルな処理になるので、トランザクション数の増加は実施例１に比較して少なくなる。
【００４２】
図１９に本発明の実施例２における２重ライト、２重アトミックモディファイ処理のフローを示す。この部分は図１１の２重ライト、２重アトミックモディファイ処理７３０に対応する部分である。ステップ９２１ではアクセスマスタ側の処理かどうかを判定する。もしスレーブ側の処理であれば、ステップ９２４に進む。もしマスタ側であれば、ステップ９２２に進みバスロックテーブル３１より全キュー内のマスタ処理数を数える。ステップ９２３ではマスタ処理数が２以下かどうか判定する。２以上ならば、これ以上２重ライト、２重アトミックモディファイ処理は入れないので、ステップ９２２に戻り、待つ。もしマスタ数が１以下であれば、処理が可能なのでステップ７２１のキュー選択処理へ進む。ステップ９２４ではステップ７３７ではバスロックテーブル３１のキュー内２重アクセス４１５を登録する。
【００４３】
以上の様な場合、２重ライトの処理時間が余計にかかる欠点があるが、もし２重ライトの中でマスタ、スレーブの順番が入れ替わっても問題ないライトがある場合、たとえば、ＣＰＵ１５、１８のマイクロプログラムの中で２重ライトの順番が制御できる場合は以下に示すようなライトの順番を無視する２重ライトを用いることで２重ライトの処理時間を削減することが可能になる。
【００４４】
図２０に本発明の実施例２におけるライトの順番無視する２重ライトを示す。ここでは、ＭＰＡ３０から送信するマスタ面へのライトとスレーブ面へのライトは同時に発生し、バスのロックも行わないので、応答時間は短縮できる。
【００４５】
以上図１８から図２０に示した実施例２によれば、２重化したパスをスター型に接続した２重化共有メモリ制御装置において、共有メモリバスインターフェス側にパスロックテーブルを、共有メモリ制御回路側にメモリロックテーブルを持ち、これを参照しながらパスを選択することにより、１重リード、１重ライト、１重リードモディファイライトの処理待ち時間が短縮し、処理トランザクション数の増加を図ることが可能になる。
【００４６】
本実施例では、ディスクアレイ制御装置について説明したが、上述の２重化共有メモリ装置は、高信頼性と高トランザクション性能が必要なシステム、具体的にはフォールトトレラントコンピュータに適用しても良い。
【００４７】
【発明の効果】
２重ライト時に各パスの使用状況を示すパスロックテーブルを参照することにより、２重ライト以外の処理（１重リード、１重ライト、アトミックモディファイ）の場合は各パスの中で処理待ちトランザクション数の少ないパスを選択し、２重ライト、２重アトミックモディファイの場合、パスを選択する時に上記パスロックテーブルを参照しすでに処理中の２重ライト数が一定数以下なら２重処理を開始し、さらに２重ライトするパスを選択する際に、すでに処理中の２重ライト処理とは異なるパスで処理を行う様にパスを選択するので、データの不一致またはデットロック無しで効率の良いパス選択ができ、処理待ち時間が短縮し、処理トランザクション数が増加する。また共有メモリパスは２系統化されており、１本障害時にも共有メモリアクセスが可能になり、信頼性が向上する。
【図面の簡単な説明】
【図１】本発明のディスクアレイ制御装置の全体構成を示す。
【図２】本発明のディスクアレイ制御装置の全体構成を示す図である。
【図３】本発明のディスクアレイ制御装置の基本構成を示す図である。
【図４】本発明のディスクアレイ制御装置の利点を示す図である。
【図５】本発明のディスクアレイ制御装置におけるバスロックテーブルを示す図である。
【図６】本発明のディスクアレイ制御装置におけるメモリロックテーブルを示す図である。
【図７】本発明のディスクアレイ制御装置における、１重リード、１重ライトの動作を示す図である。
【図８】本発明のディスクアレイ制御装置における２重ライトの動作を示す図である。
【図９】本発明のディスクアレイ制御装置における１重アトミックモディファイ、２重アトミックモディファイの動作を示す図である。
【図１０】本発明のディスクアレイ制御装置におけるバスキュー振り分け処理のフローを示す図である。
【図１１】本発明のディスクアレイ制御装置における２重ライト、２重アトミックモディファイ処理のフローを示す図である。
【図１２】本発明のディスクアレイ制御装置における各パスキューの処理のフローを示す図である。
【図１３】本発明のディスクアレイ制御装置におけるコマンド終了処理を示す図である。
【図１４】本発明のディスクアレイ制御装置におけるＳＭＡ内各パス処理のフローを示す図である。
【図１５】本発明のディスクアレイ制御装置におけるＳＭＡ内各パス処理（続き）のフローを示す図である。
【図１６】本発明のディスクアレイ制御装置における共有メモリのアクセス処理のフローを示す図である。
【図１７】本発明のディスクアレイ制御装置におけるパス障害処理のフローを示す図である。
【図１８】本発明のディスクアレイ制御装置の基本構成を示す図である。
【図１９】本発明のディスクアレイ制御装置における２重ライト、２重アトミックモディファイ処理のフローを示す図である。
【図２０】本発明のディスクアレイ制御装置におけるライトの順番無視する２重ライトを示す図である。
【図２１】従来のディスクアレイ制御装置を示す図である。
【符号の説明】
１０、４０、５０・・・ＣＰＵパッケージ（ＣＰＵ-ＰＫ）、
１５、１８・・・ＣＰＵ、
２０、２３・・・ローカルメモリ、
２５、２８・・・ローカルバス回路、
３０・・・共有メモリパスインターフェィス（ＭＰＡ）、
３１・・・パスロックテーブル、
６０、６５、７０、７５、８０、８５、９０、９５、１００、１０５、１１０、１１５・・・共有メモリパス、
１２０・・・ＳＭＡパッケージＡ（ＳＭＡ-ＰＫ＃Ａ）、
１４０・・・ＳＭＡパッケージＢ（ＳＭＡ-ＰＫ＃Ｂ）、
１２５・・・共有メモリ制御回路Ａ（ＳＭＡ-Ａ）、
１４０・・・共有メモリ制御回路Ｂ（ＳＭＡ-Ｂ）、
１３０、１５０・・・共有メモリ。
【図１】
0003716126.tif 000002
【図２】
0003716126.tif 000003
【図３】
0003716126.tif 000004
【図４】
0003716126.tif 000005
【図５】
0003716126.tif 000006
【図６】
0003716126.tif 000007
【図７】
0003716126.tif 000008
【図８】
0003716126.tif 000009
【図９】
0003716126.tif 000010
【図１０】
0003716126.tif 000011
【図１１】
0003716126.tif 000012
【図１２】
0003716126.tif 000013
【図１３】
0003716126.tif 000014
【図１４】
0003716126.tif 000015
【図１５】
0003716126.tif 000016
【図１６】
0003716126.tif 000017
【図１７】
0003716126.tif 000018
【図１８】
0003716126.tif 000019
【図１９】
0003716126.tif 000020
【図２０】
0003716126.tif 000021
【図２１】
0003716126.tif 000022