図1に、本発明の一実施例を示す。
ディスクアレイ制御装置1は、ホストコンピュータ50との2つのインターフェース部(チャネルIF部)11と、磁気ディスク装置20との2つのインターフェース部(ディスクIF部)12と、2つのセレクタ部13と、2つのキャッシュメモリ部14と、2つの共有メモリ部15と、アクセスパス0:135と、アクセスパス1:136と、アクセスパス2:137とを有する。
チャネルIF部11は、ホストコンピュータ50との2つのIF(ホストIF)102と、ホストコンピュータ50に対する入出力を制御する2つのマイクロプロセッサ101と、キャッシュメモリ部14へのアクセスを制御するアクセス制御部(CMアクセス制御部)104と、共有メモリ部15へのアクセスを制御するアクセス制御部(SMアクセス制御部)105とを有し、ホストコンピュータ50とキャッシュメモリ部14間のデータ転送、及びマイクロプロセッサ101と共有メモリ部15間の制御情報の転送を実行する。マイクロプロセッサ101及びホストIF102は内部バス106によって接続され、CMアクセス制御部104は2つのホストIF102に直接接続されている。また、SMアクセス制御部105は2つのマイクロプロセッサ101に直接接続されている。
ディスクIF部12は、磁気ディスク装置20との2つのIF(ドライブIF)103と、磁気ディスク装置20に対する入出力を制御する2つのマイクロプロセッサ101と、キャッシュメモリ部14への1つのアクセス制御部(CMアクセス制御部)104と、共有メモリ部15への1つのアクセス制御部(SMアクセス制御部)105を有し、磁気ディスク装置20とキャッシュメモリ部14間のデータ転送、及びマイクロプロセッサ101と共有メモリ部15間の制御情報の転送を実行する。マイクロプロセッサ101及びドライブIF103は内部バス106によって接続され、CMアクセス制御部104は2つのドライブIF103に直接接続されている。また、SMアクセス制御部105は2つのマイクロプロセッサ101に直接接続されている。ディスクIF部はRAID機能の実行も行う。
キャッシュメモリ部14は、キャッシュメモリ(CM)コントローラ107とメモリモジュール109を有し、磁気ディスク装置20へ記録するデータを一時的に格納する。
共有メモリ部15は、共有メモリ(SM)コントローラ108とメモリモジュール109とを有し、ディスクアレイ制御装置1の制御情報(例えば、チャネルIF部及びディスクIF部とキャッシュメモリ部14との間のデータ転送制御に関する情報)等を格納する。
CMアクセス制御部104には2本のアクセスパス0:135を接続し、それらを2つの異なるセレクタ部13にそれぞれ接続する。セレクタ部13には2本のアクセスパス1:136を接続し、それらを2つの異なるCMコントローラ107にそれぞれ接続する。したがってCMコントローラ107には、2つのセレクタ部から1本ずつ、計2本のアクセスパス1:136が接続される。こうすることにより、1つのCMアクセス制御部104から1つのCMコントローラ107へのアクセスルートが2つとなる。これにより、1つのアクセスパスまたはセレクタ部13に障害が発生した場合でも、もう1つのアクセスルートによりキャッシュメモリ部14へアクセスすることが可能となるため、耐障害性を向上させることができる。
SMアクセス制御部105には2本のアクセスパス2:137を接続し、そのアクセスパス2:137を2つの異なるSMコントローラにそれぞれ接続する。したがって、SMコントローラ108には、2つのチャネルIF部11及び2つのディスクIF部12から1本ずつ、計4本のアクセスパス2:137が接続される。本実施例では、1つのSMアクセス制御部105と1つのSMコントローラ108の間には1本のアクセスパス2:137を接続したが、このアクセスパス2:137を2本に増やすことにより、1つのSMアクセス制御部105から1つのSMコントローラ108へのアクセスルートが2つとなるため、耐障害性を向上させることができる。
セレクタ部13には、2つのチャネルIF部11と、2つのディスクIF部12からそれぞれ1本ずつ、計4本のアクセスパス0:135が接続される。また、セレクタ部13には、2つのキャッシュメモリ部14へのアクセスパス1:136が1本ずつ、計2本接続される。
アクセスパス0:135とアクセスパス1:136の間に上記のようなパス数の関係があるため、セレクタ部13ではチャネルIF部11及びディスクIF部12からの4本のアクセスパス0:135からの要求の内、キャッシュメモリ部14へのアクセスパス1:136の数に相当する2個だけを選択して実行する機能を持つ。
本実施例の大きな特徴は、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間の接続形式と、チャネルIF部11及びディスクIF部12と共有メモリ部15との間の接続形式とが異なる点にある。このような構成にした理由を図1及び図2を用いて説明する。
図2に示したスター接続形式のディスクアレイ制御装置2では、ディスクアレイ制御装置2に搭載されるチャネルIF部11またはディスクIF部12の数を増やした場合、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間、及びチャネルIF部11及びディスクIF部12と共有メモリ部15との間のアクセスパス数も増えることになる。また、スター接続形式のディスクアレイ制御装置2において、スループットを向上させるためには、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間、及びチャネルIF部11及びディスクIF部12と共有メモリ部15との間のアクセスパス数を増やし、内部パス性能を向上させることが有効である。
しかし、キャッシュメモリ部14に格納される1つのデータのデータ量は、共有メモリ部15に格納される1つの制御情報のデータ量よりもかなり大きい。一例を挙げれば、メインフレームに接続されるディスク制御装置では、キャッシュメモリ部14に格納される1つのデータは数Kバイト程度(例えば2Kバイト)であるのに対し、共有メモリ部15に格納される1つの制御情報は数バイト程度(例えば4バイト)である。また、オープン系のホストコンピュータに接続されるディスク制御装置では、キャッシュメモリ部14に格納される1つのデータは数十バイト程度(例えば64バイト)であるのに対し、共有メモリ部15に格納される1つの制御情報は数バイト程度(例えば4バイト)である。したがって、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間で転送されるデータ量は、チャネルIF部11及びディスクIF部12と共有メモリ部15との間で転送されるデータ量に比べかなり多いので、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間のアクセスバスのデータ幅は、チャネルIF部11及びディスクIF部12と共有メモリ部15との間のアクセスパスのデータ幅より広くとる必要がある。例えば、前者のアクセスパスは16ビット幅のバスで構成され、後者は、8ビット幅のバスで構成される。そのため、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間のアクセスパス本数を増やすと、キャッシュメモリ部14内のキャッシュメモリコントローラ(図2ではキャッシュメモリコントローラを図示していない)のLSIのピン数不足、またはキャッシュメモリ部14を実装するパッケージにおいてコネクタのピン数不足という問題が生じる。そこで、本実施例では、図1に示すように、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間をセレクタ部13を介して接続することにより、キャッシュメモリ部14に直接接続されるアクセスパス数を削減している。
一方、上述したように、共有メモリ部13へ格納する1つの制御情報のデータ長はキャッシュメモリ部14に格納する1つのデータのデータ長に比べかなり小さいので、チャネルIF部11及びディスクIF部12と共有メモリ部15との間のアクセスパスのデータ幅は、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14との間のアクセスパスのデータ幅の半分以下とすることが可能である。したがって、共有メモリ部15へのアクセスパス数を増やしても共有メモリ部内の共有メモリメモリコントローラ(図2では共有メモリコントローラを図示していない)のLSIのピン数不足等の問題が生じることは少ない。
また、ディスクアレイ制御装置1のホストコンピュータ50への応答時間を短くするためには、共有メモリ部15に格納される制御情報へのアクセス時間をできるだけ短くする必要もある。しかし、図1に示したCMアクセス制御部104とCMコントローラ107間のように、SMアクセス制御部105とSMコントローラ108との間をセレクタ部を介して接続すると、セレクタ部での処理のオーバーヘッドにより、共有メモリ部15に格納される制御情報へのアクセス時間を短くすることができない。
そこで、本実施例では、チャネルIF部11及びディスクIF部12と共有メモリ部15との間をセレクタ部を介さず直接接続することにより、チャネルIF部11及びディスクIF部12と共有メモリ部15間に複数のアクセスパスを設け、スループットを向上させる一方、セレクタ部での処理オーバーヘッドをなくし、チャネルIF部11、及びディスクIF部12から共有メモリ部15へのアクセス時間を短縮にしている。
なお、本実施例では、耐障害性の向上という観点から、セレクタ部13、キャッシュメモリ部14、及び共有メモリ部15をそれぞれ二重化しているが、これらを二重化しなくても、上述の効果を得られることは言うまでもない。
図4は、CMアクセス制御部104内の構成を示している。CMアクセス制御部104は、セレクタ302と、アドレス、コマンド、データを一時格納するパケットバッファ303と、セレクタ部13に繋がるアクセスパス0:135とのパスIF301と、データのエラーチェック部300と、データ転送制御部310を有する。セレクタ302の2つのポートはデータ線210でホストIF102あるいはドライブIF103に接続される。また、セレクタ302の他の2つのポートはパスIF301に接続される。パスIF301はアクセスパス0:135でセレクタ部13に接続される。データ転送制御部310は、制御線1:211でホストIF102あるいはドライブIF103に接続され、制御線2:212でセレクタ部13内のデータ転送制御部315に接続される。また、データ転送制御部310は、アービタ308によりホストIF102あるいはドライブIF103からのアクセス要求のアービトレーションを行い、セレクタ302の切り替えを行う。
図6は、セレクタ部13内の構成を示している。セレクタ部13は、チャネルIF部11及びディスクIF部12に繋がるアクセスパス0:135との4つのパスIF301と、CMコントローラ107に繋がるアクセスパス1:136との2つのパスIF301と、両者間を互いに接続するセレクタ306と、パケットバッファ303と、データのエラーチェック部300と、CMアクセス制御部104から送出されたアドレス及びコマンドを解析するアドレス・コマンド(adr、cmd)解析部305と、データ転送制御部315を有する。データ転送制御部315は、制御線2:212でCMアクセス制御部104内のデータ転送制御部310に接続され、制御線3:213でCMコントローラ107内のデータ転送制御部315に接続される。また、データ転送制御部315は、アービタ308により、adr、cmd解析部305で解析した4本のアクセスパス0:135からのアクセス要求のアービトレーションを行い、セレクタ306の切り替えを行う。パケットバッファ303は、アクセスパス0:135側のパスとアクセスパス1:136側のパスでデータ転送速度に差がある場合、速度差を吸収するために、転送するデータの一部または全部をバッファリングする。
adr、cmd解析部305は、アドレス及びコマンドを格納するバッファと、adr抽出部と、cmd抽出部を有する(図示していない)。adr、cmd解析部305では、CMアクセス制御部104に接続される4本のアクセスパス0:135それぞれに1つずつ割り当てられたバッファに、アドレス、コマンドを格納する。adr抽出部及びcmd抽出部では、アクセスするCMコントローラ107とアクセスの種類を割り出し、データ転送制御部315内のアービタ308へ送出する。
図7は、キャッシュメモリ部14内の構成を示している。キャッシュメモリ部14は、CMコントローラ107とメモリモジュール109を有する。CMコントローラ107は、セレクタ部13に繋がるアクセスパス1:136との2つのパスIF301と、セレクタ304と、データを一時格納するパケットバッファ303と、データのエラーチェック部300と、メモリモジュール109へのアクセスを制御するメモリ制御部307と、CMアクセス制御部104から送出されたアドレス及びコマンドを解析するadr、cmd解析部305と、データ転送制御部315を有する。データ転送制御部315は、制御線3:213でセレクタ部13内のデータ転送制御部315に接続される。また、データ転送制御部315は、アービタ308により、adr、cmd解析部305で解析した2本のアクセスパス1:136からのアクセス要求のアービトレーションを行い、セレクタ304の切り替えを行う。
adr、cmd解析部305は、バッファと、adr抽出部と、cmd抽出部を有する(図示していない)。adr、cmd解析部305では、CMコントローラ107に接続される2本のアクセスパス1:136それぞれに1つずつ割り当てられたバッファに、アドレス、コマンドを格納する。adr抽出部及びcmd抽出部では、アクセスするメモリのアドレスとアクセスの種類を割り出し、メモリ制御部307へ送出する。また、2本のアクセスパス1:136からのアクセス要求をデータ転送制御部315内のアービタ308へ送出する。
次に、キャッシュメモリ部14へのアクセス時の手順について述べる。キャッシュメモリ部14へアクセスする場合、マイクロプロセッサ101は、ホストIF102あるいはドライブIF103へ、キャッシュメモリ部14へのアクセス開始を指示する。
アクセス開始の指示を受けたホストIF102あるいはドライブIF103は、制御線1:211によりCMアクセス制御部104内のデータ転送制御部310へアクセス開始を示す信号を送出する。それとともに、データ線210を通してアドレス、コマンド、データ(データの書き込み時のみ)を送出する。
CMアクセス制御部104は、データ線210を通して送られてきたアドレス、コマンド、データ(データの書き込み時のみ)をパケットバッファ303に格納する。データ転送制御部310はアービトレーションを行ってパスIF301の使用権を決定し、セレクタ302を切り替える。
図9は、キャッシュメモリ部14へデータを書き込む場合の、CMアクセス制御部104からCMコントローラ107へのアクセスの流れを示している。CMアクセス制御部104内のデータ転送制御部310は、アービトレーションによってアクセスパス0:135の使用権が決定されると、制御線2:212によってセレクタ部13内のデータ転送制御部315へアクセス開始を示す信号(REQ)を出す(ステップ501)。続いて、アドレス及びコマンドを送出する(ステップ502)。
セレクタ部13内のデータ転送制御部315は、CMアクセス制御部104からREQ信号を受け取ると、次にアクセスパス0:135を通して送られてくるアドレス及びコマンドを受信し、adr、cmd解析部305で解析したアクセス要求に基づいてアービトレーションを行う(ステップ503)。アービトレーションの結果、アクセスパス1:136への接続権を得たら、データ転送制御部315はセレクタ306を切り替える(ステップ504)とともに、制御線2:212により、CMアクセス制御部104内のデータ転送制御部310へ、アクセスパス1:136への接続権が得られたことを示す信号(ACK)を返す(ステップ505)。次にデータ転送制御部315は、制御線3:213によってCMコントローラ107内のデータ転送制御部315へアクセス開始を示す信号(REQ)を出す(ステップ506)。続いて、アドレス及びコマンドを送出する(ステップ507)。
CMアクセス制御部104はACK信号を受けると、パケットバッファ303からデータを読み出し、セレクタ302、パスIF301を介してアクセスパス0:135へ送出する。セレクタ部13は、アクセスパス0:135を通して送られてきたデータを、パスIF301及びセレクタ306を介してアクセスパス1:136へ送出する(ステップ509)。
CMコントローラ107内のデータ転送制御部315は、制御線3:213によってREQ信号を受け取ると、次にアクセスパス1:136を通して送られてくるアドレス及びコマンドを受信し、adr、cmd解析部305で解析したアクセス要求に基づいてアービトレーションを行い(ステップ508)、セレクタ304を切り替える。アクセスパス1:136を通して送られてくるデータはパケットバッファ303に格納する。アービトレーションの結果、メモリモジュール109へのアクセス権を得たら、メモリの制御情報をメモリ制御部307へ送出し、メモリアクセスのための前処理を行う(ステップ510)。次に、パケットバッファ303からデータを読み出し、セレクタ304を介してメモリモジュール109へ書き込む(ステップ511)。
メモリモジュール109へのアクセスが終了すると、メモリアクセスの後処理を行い、データ転送制御部315においてアクセス状況を示すステータス(STATUS)を生成する(ステップ512)。次に、ステータスをセレクタ部13を介してCMアクセス制御部104へ送出する(ステップ513)。セレクタ部13内のデータ転送制御部315はステータスを受け取ると、CMコントローラ107へのREQ信号をオフする(ステップ514)。CMアクセス制御部104内のデータ転送制御部310はステータスを受け取ると、セレクタ部13へのREQ信号をオフする(ステップ515)。セレクタ部13内のデータ転送制御部315はCMアクセス制御部104からのREQ信号のオフを確認すると、CMアクセス制御部104へのACK信号をオフする(ステップ516)。
CMアクセス制御部104内のデータ転送制御部310はステータスを受け取ると、制御線1:211により、ホストIF102あるいはドライブIF103へキャッシュメモリ部14へのアクセスの終了を報告する。
キャッシュメモリ部14からデータを読み出す場合の、CMアクセス制御部104からCMコントローラ107へのアクセスの流れは、ステップ501から508までとステップ512以降は、データの書き込みの場合と同じである。
ここでCMアクセス制御部104は、ステップ505でACK信号を受けると、データの受信待ち状態に入る。
ステップ508でメモリアクセス権を得ると、CMコントローラ107はメモリモジュール109からデータを読み出し、セレクタ304、パスIF301を介してアクセスパス1:136にデータを送出する。
セレクタ部13は、アクセスパス1:136を通してデータを受信すると、パスIF301及びセレクタ306を介してアクセスパス0:135にデータを送出する。
CMアクセス制御部104は、アクセスパス0:135を通してデータを受信すると、セレクタ302、データ線210を介してホストIF102あるいはドライブIF103へデータを送出する。
図5は、SMアクセス制御部105内の構成を示している。SMアクセス制御部104は、セレクタ302と、アドレス、コマンド、データを一時格納するパケットバッファ303と、SMコントローラ108に繋がるアクセスパス2:137とのパスIF301と、データのエラーチェック部300と、データ転送制御部310を有する。セレクタ302の2つのポートはデータ線220でマイクロプロセッサ101に接続される。また、セレクタ302の他の2つのポートはパスIF301に接続される。パスIF301はアクセスパス2:137でSMコントローラ108に接続される。データ転送制御部310は、制御線5:221でマイクロプロセッサ101に接続され、制御線6:222でSMコントローラ108内のデータ転送制御部315に接続される。また、データ転送制御部310は、アービタ308によりマイクロプロセッサ101からのアクセス要求のアービトレーションを行い、セレクタ302の切り替えを行う。
図8は、共有メモリ部15内の構成を示している。共有メモリ部15は、SMコントローラ108とメモリモジュール109を有する。SMコントローラ108は、SMアクセス制御部105に繋がるアクセスパス2:137との4つのパスIF301と、セレクタ309と、データを一時格納するパケットバッファ303と、データのエラーチェック部300と、メモリモジュール109へのアクセスを制御するメモリ制御部307と、SMアクセス制御部105から送出されたアドレス及びコマンドを解析するadr、cmd解析部305と、データ転送制御部315を有する。データ転送制御部315は、制御線6:222でSMアクセス制御部105内のデータ転送制御部310に接続される。また、データ転送制御部315は、アービタ308により、adr、cmd解析部305で解析した4本のアクセスパス2:137からのアクセス要求のアービトレーションを行い、セレクタ309の切り替えを行う。
adr、cmd解析部305は、バッファと、adr抽出部と、cmd抽出部を有する(図示していない)。adr、cmd解析部305では、SMコントローラ108に接続される4本のアクセスパス2:137それぞれに1つずつ割り当てられたバッファに、アドレス、コマンドを格納する。adr抽出部及びcmd抽出部では、アクセスするメモリのアドレスとアクセスの種類を割り出し、メモリ制御部307へ送出する。また、4本のアクセスパス2:137からのアクセス要求をデータ転送制御部315内のアービタ308へ送出する。
次に、共有メモリ部15へのアクセス時の手順について述べる。共有メモリ部15へアクセスする場合、マイクロプロセッサ101は、制御線5:221によりSMアクセス制御部105内のデータ転送制御部310へアクセス開始を示す信号を送出する。それとともに、データ線220を通してアドレス、コマンド、データ(データの書き込み時のみ)を送出する。
SMアクセス制御部105は、データ線220を通して送られてきたアドレス、コマンド、データ(データの書き込み時のみ)をパケットバッファ303に格納する。データ転送制御部310はアービトレーションを行ってパスIF301の使用権を決定し、セレクタ302を切り替える。
図10は、共有メモリ部15へデータを書き込む場合の、SMアクセス制御部105からSMコントローラ108へのアクセスの流れを示している。SMアクセス制御部105内のデータ転送制御部310は、アービトレーションによってアクセスパス2:137の使用権が決定されると、制御線6:222によってSMコントローラ108へアクセス開始を示す信号(REQ)を出す(ステップ601)。続いて、アドレス、コマンド、及びデータを連続して送出する(ステップ602)。
SMコントローラ108内のデータ転送制御部315は、制御線6:222によってREQ信号を受け取ると、次にアクセスパス2:137を通して送られてくるアドレス、コマンド、及びデータを受信する。アドレスとコマンドは、adr、cmd解析部305で解析し、アクセス要求に基づいてアービトレーションを行い(ステップ603)、セレクタ309を切り替える。データはパケットバッファ303に格納する。アービトレーションの結果、メモリモジュール109へのアクセス権を得たら、メモリの制御情報をメモリ制御部307へ送出し、メモリアクセスのための前処理を行う(ステップ604)。次に、パケットバッファ303からデータを読み出し、セレクタ309を介してメモリモジュール109へ書き込む(ステップ605)。
メモリモジュール109へのアクセスが終了すると、メモリアクセスの後処理を行い、データ転送制御部315においてアクセス状況を示すステータス(STATUS)を生成する(ステップ606)。次に、ステータスをSMアクセス制御部105へ送出する(ステップ607)。SMアクセス制御部105内のデータ転送制御部310はステータスを受け取ると、SMコントローラ108へのREQ信号をオフする(ステップ608)。
SMアクセス制御部105内のデータ転送制御部310はステータスを受け取ると、制御線5:221により、マイクロプロセッサ101へ共有メモリ部15へのアクセスの終了を報告する。
共有メモリ部15からデータを読み出す場合のSMアクセス制御部105からSMコントローラ108へのアクセスの流れは、ステップ601から604までとステップ606以降は、データの書き込みの場合と同じである。
ステップ604でメモリアクセスの前処理を行った後、SMコントローラ108はメモリモジュール109からデータを読み出し、セレクタ309、パスIF301を介してアクセスパス2:137にデータを送出する。
SMアクセス制御部105は、アクセスパス2:137を通してデータを受信すると、セレクタ302、データ線220を介してマイクロプロセッサ101へデータを送出する。
本実施例のディスクアレイ制御装置1では、ホストコンピュータ50とのチャネルを2つ有するチャネルIF部12を複数搭載しており、それらのチャネルをそれぞれ異なるホストコンピュータに接続することが可能である。そうした場合、ホストコンピュータに接続した各チャネルからの要求全てを並列に処理する必要がある。
ところでディスクアレイ制御装置1では、ホストコンピュータ50へデータを読み出す場合、磁気ディスク装置20に格納されたデータをディスクIF部12を介してキャッシュメモリ部14へ書き込み、そのデータをキャッシュメモリ部14から読み出して、チャネルIF部11を介してホストコンピュータ50へ送る。またホストコンピュータ50からディスクアレイ制御装置1へデータを書き込む場合は、ホストコンピュータ50からチャネルIF部12へ送られてきたデータをキャッシュメモリ部14へ書き込み、そのデータをキャッシュメモリ部14から読み出して、ディスクIF部12を介して磁気ディスク装置20に書き込む。さらにデータのパリティを生成して磁気ディスク装置20に書き込むため、ディスクIF部12とキャッシュメモリ部14間でさらに2〜3回のアクセスが行われる。
したがって、ホストコンピュータに接続した各チャネルからの要求全てを並列に処理するためには、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14間のスループットをホストコンピュータ50とチャネルIF部11間の最大のスループットの2倍以上にしなければならない。
本実施例では、CMアクセス制御部104とCMコントローラ107間のアクセスパスの帯域幅、及びCMコントローラ107とメモリモジュール109間の全帯域幅を、チャネルIF部11とホストコンピュータ50間の最大の帯域幅の2倍以上に設定する。これにより、全チャネルIF部11を並列に動作させることが可能となる。
本実施例によれば、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14間のスループットを高くすること、チャネルIF部11及びディスクIF部12と共有メモリ部15間のスループットを高く、且つアクセス時間を短くすることの両方が可能となる。これによって、スループットが高く、且つ応答時間の短いディスクアレイ制御装置を提供できる。
ここで、図15に示すように、チャネルIF部11及びディスクIF部12とキャッシュメモリ部14間をスイッチ(SW)16を用いた相互結合網140で接続する。この場合にも、図1に示したセレクタ部13を介して接続した構成と同様に、キャッシュメモリ部14へ複数のアクセスパスを設けることができるため、スループットを高めることが可能となる。
また図16に示すように、 1つのCMアクセス制御部104へ接続されるアクセスパス0:135の本数を図1の構成の倍の4本に増やしたディスクアレイ制御装置1においても、本実施例を実施する上で問題はない。ホストIF及びドライブIFとして、今後はファイバチャネル等のスループットが100MB/s以上の高速IFが使用されることが多くなると考えられる。チャネルIF部11及びディスクIF部12でのスループットのバランスを考えると、1つのCMアクセス制御部104に繋がる全アクセスパス0:135のスループットは、チャネルIF部11内の全ホストIF102、またはディスクIF部12内の全ドライブIF103のスループットと同等以上にする必要がある。上記のようにファイバチャネル等の高速IFを使用する場合は、図16に示すように、1つのCMアクセス制御部104に繋がるアクセスパス0:135の本数を増やすことで、アクセスパス0:135のスループットをホストIF102あるいはドライブIF103のスループット以上にすることができる。
なお、図15及び図16のディスクアレイ制御装置では、耐障害性の向上という観点から、セレクタ部13、キャッシュメモリ部14、及び共有メモリ部15をそれぞれ二重化しているが、これらを二重化しなくても、上述の効果を得られることは言うまでもない。
図1において、2つのキャッシュメモリ部14間で、メモリ領域の全部または、一部を二重化し、キャッシュメモリ部14へのデータの書き込み時に二重化した2つの領域に同じデータを書き込むことにより、データの信頼性を上げることが可能となる。
二重化した2つのキャッシュメモリ部14へデータを書き込む場合の手順は以下のようになる。
アクセス開始の指示を受けたホストIF102あるいはドライブIF103は、制御線1:211によりCMアクセス制御部104内のデータ転送制御部310へアクセス開始を示す信号を送出する。それとともに、データ線210を通して2つのアドレス、コマンドと、1つのデータを送出する。
CMアクセス制御部104は、データ線210を通して送られてきた2つのアドレス、コマンドと、1つのデータをパケットバッファ303に格納する。データ転送制御部310はアービトレーションを行ってパスIF301の使用権を決定し、セレクタ302を切り替える。
図11は、二重化した2つのキャッシュメモリ部14へデータを書き込む場合の、CMアクセス制御部104から2つのCMコントローラa、b:107へのアクセスの流れを示している。CMアクセス制御部104内のデータ転送制御部310は、アービトレーションによってアクセスパス0:135の使用権が決定されると、制御線2:212によってセレクタ部13内のデータ転送制御部315へアクセス開始を示す信号(REQ)を出す(ステップ701)。続いて、アドレス及びコマンドを2つ連続して送出する(ステップ702)。
セレクタ部13内のデータ転送制御部315は、CMアクセス制御部104からREQ信号を受け取ると、次にアクセスパス0:135を通して送られてくるアドレス及びコマンドを受信し、adr、cmd解析部305で解析したアクセス要求に基づいてアービトレーションを行う(ステップ703)。アービトレーションの結果、CMコントローラa、b:107への2本のアクセスパス1:136への接続権の両方を得たら、データ転送制御部315はセレクタ306を切り替える(ステップ704)とともに、制御線2:212により、CMアクセス制御部104内のデータ転送制御部310へ、CMコントローラa、b:107への接続権が得られたことを示す信号(ACK)を返す(ステップ705)。次にデータ転送制御部315は、制御線3:213によって2つのCMコントローラ107内のデータ転送制御部315へアクセス開始を示す信号(REQ)を出す(ステップ706a、706b)。続いて、CMコントローラa、b:107へアドレス及びコマンドを1つずつ送出する(ステップ707a、707b)。
CMアクセス制御部104はACK信号を受けると、パケットバッファ303からデータを読み出し、セレクタ302、パスIF301を介してアクセスパス0:135へ送出する(ステップ709)。セレクタ部13は、アクセスパス0:135を通して送られてきた1つのデータを、パスIF301及びセレクタ306を介して2つのアクセスパス1:136の両方へ送出する(ステップ709a、709b)。
CMコントローラa、b:107内のデータ転送制御部315は、制御線3:213によってREQ信号を受け取ると、次にアクセスパス1:136を通して送られてくるアドレス及びコマンドを受信し、adr、cmd解析部305で解析したアクセス要求に基づいてアービトレーションを行い(ステップ708a、708b)、セレクタ304を切り替える。アクセスパス1:136を通して送られてくるデータはパケットバッファ303に格納する。アービトレーションの結果、メモリモジュール109へのアクセス権を得たら、メモリの制御情報をメモリ制御部307へ送出し、メモリアクセスのための前処理を行う(ステップ710a、710b)。次に、パケットバッファ303からデータを読み出し、セレクタ304を介してメモリモジュール109へ書き込む(ステップ711a、711b)。
メモリモジュール109へのアクセスが終了すると、メモリアクセスの後処理を行い、データ転送制御部315においてアクセス状況を示すステータス(STATUS)を生成する(ステップ712a、712b)。次に、ステータスをセレクタ部13を介してCMアクセス制御部104へ送出する(ステップ713a、713b)。セレクタ部13内のデータ転送制御部315はステータスを受け取ると、CMコントローラa、b:107へのREQ信号をそれぞれオフする(ステップ714a、714b)。また、セレクタ部13はCMコントローラa、b:107の両方からステータスを受け取ったら、それらを続けてCMアクセス制御部へ送出する(ステップ713)。CMアクセス制御部104内のデータ転送制御部310は2つのステータスを受け取ると、セレクタ部13へのREQ信号をオフする(ステップ715)。セレクタ部13内のデータ転送制御部315はCMアクセス制御部104からのREQ信号のオフを確認すると、CMアクセス制御部104へのACK信号をオフする(ステップ716)。
CMアクセス制御部104内のデータ転送制御部310はステータスを受け取ると、制御線1:211により、ホストIF102あるいはドライブIF103へキャッシュメモリ部14へのアクセスの終了を報告する。
上記のように二重化したキャッシュメモリ部14にデータを二重に書き込む場合、二重に書き込むデータの一方のデータの書き込み処理を行っている間に、もう一方のデータが他のアクセスパスからの書き込み要求によって書き換えられるのを防ぐ必要がある。本実施例では、共有メモリ部15にキャッシュメモリ部14のディレクトリを格納し、キャッシュメモリ部14にアクセスする前に必ず、共有メモリ部15に格納したディレクトリにアクセス中を示すビットを立てる。これにより、キャッシュメモリ部14内の同じアドレスには同時に1つのアクセス要求しか発行されないため、二重に書き込むデータの一方のデータの書き込み処理を行っている間に、もう一方のデータが他のアクセスパスからの書き込み要求によって書き換えられるのを防ぐことができる。
ディスクアレイ制御装置1では、キャッシュメモリ部14を複数設けた場合、あるキャッシュメモリ部14から別のキャッシュメモリ部14へデータをコピーする機能が要求される。この機能は、以下に述べる手順で実現できる。
アクセス開始の指示を受けたホストIF102あるいはドライブIF103は、制御線1:211によりCMアクセス制御部104内のデータ転送制御部310へアクセス開始を示す信号を送出する。それとともに、データ線210を通して2つのアドレス、コマンドを送出する。2つのうちの1つのアドレス及びコマンドは、コピー元のアドレスとリードコマンドで、もう1つのアドレス及びコマンドはコピー先のアドレスとライトコマンドである。ここでは、CMコントローラa:107をコピー元、CMコントローラbをコピー先として説明する。
CMアクセス制御部104は、データ線210を通して送られてきた2つのアドレス、コマンドをパケットバッファ303に格納する。データ転送制御部310はアービトレーションを行ってパスIF301の使用権を決定し、セレクタ302を切り替える。
図12は、2つのキャッシュメモリ部間でデータをコピーする場合の、CMアクセス制御部104からCMコントローラa、b:107へのアクセスの流れを示している。CMアクセス制御部104内のデータ転送制御部310は、アービトレーションによってアクセスパス0:135の使用権が決定されると、制御線2:212によってセレクタ部13内のデータ転送制御部315へアクセス開始を示す信号(REQ)を出す(ステップ801)。続いて、アドレス及びコマンドを2つ連続して送出する(ステップ802)。
セレクタ部13内のデータ転送制御部315は、CMアクセス制御部104からREQ信号を受け取ると、次にアクセスパス0:135を通して送られてくるアドレス及びコマンドを受信し、adr、cmd解析部305で解析したアクセス要求に基づいてアービトレーションを行う(ステップ803)。アービトレーションの結果、CMコントローラa、b:107への2つのアクセスパス1:136への接続権の両方を得たら、データ転送制御部315はセレクタ306を切り替える(ステップ804)とともに、制御線2:212により、CMアクセス制御部104内のデータ転送制御部310へ、CMコントローラa、b:107両方への接続権が得られたことを示す信号(ACK)を返す(ステップ805)。次にデータ転送制御部315は、制御線3:213によってCMコントローラa、b:107内のデータ転送制御部315へアクセス開始を示す信号(REQ)を出す(ステップ806a、806b)。続いて、CMコントローラa、b:107へそれぞれのアドレス及びコマンドを送出する(ステップ807a、807b)。
CMアクセス制御部104はACK信号を受けると、アクセスの終了を知らせるステータスの受信待ち状態に入る。
コピー元のCMコントローラa:107内のデータ転送制御部315は、制御線3:213によってREQ信号を受け取ると、次にアクセスパス1:136を通して送られてくるアドレス及びコマンドを受信し、adr、cmd解析部305で解析したアクセス要求に基づいてアービトレーションを行い(ステップ808)、セレクタ304を切り替える。アービトレーションの結果、メモリモジュール109へのアクセス権を得たら、メモリの制御情報をメモリ制御部307へ送出し、メモリアクセスのための前処理を行う(ステップ809)。次に、メモリモジュール109からデータを読み出し(ステップ810)、セレクタ304を介してアクセスパス1:136へ送出する(ステップ811a)。
セレクタ部13は、アクセスパス1:136を通してCMコントローラa:107から送られてきたデータをCMコントローラbに繋がるアクセスパス1:136へ送出する。(ステップ811b)。
CMコントローラb:107内のデータ転送制御部315は、制御線3:213によってREQ信号を受け取ると、次にアクセスパス1:136を通して送られてくるアドレス及びコマンドを受信し、adr、cmd解析部305で解析する。その後、データを受信し始めるのを待って、メモリアクセスのアービトレーションに参加する(ステップ812)。アクセスパス1:136を通して送られてくるデータはパケットバッファ303に格納する。アービトレーションの結果、メモリモジュール109へのアクセス権を得たら、メモリの制御情報をメモリ制御部307へ送出し、メモリアクセスのための前処理を行う(ステップ813)。次に、パケットバッファ303からデータを読み出し、セレクタ304を介してメモリモジュール109へ書き込む(ステップ814)。
CMコントローラa、b:107は、それぞれCMメモリモジュール109へのアクセスが終了すると、メモリアクセスの後処理を行い、データ転送制御部315においてアクセス状況を示すステータス(STATUS)を生成する(ステップ815、818)。次に、ステータスをセレクタ部13へ送出する(ステップ816、819)。
セレクタ部13内のデータ転送制御部315はステータスを受け取ると、CMコントローラa、b:107へのREQ信号をそれぞれオフする(ステップ817、821)。また、セレクタ部13は2つのCMコントローラa、b:107の両方からステータスを受け取ったら、それらを続けてCMアクセス制御部へ送出する(ステップ820)。CMアクセス制御部104内のデータ転送制御部310は2つのステータスを受け取ると、セレクタ部13へのREQ信号をオフする(ステップ822)。セレクタ部13内のデータ転送制御部315はCMアクセス制御部104からのREQ信号のオフを確認すると、CMアクセス制御部104へのACK信号をオフする(ステップ823)。
CMアクセス制御部104内のデータ転送制御部310はステータスを受け取ると、制御線1:211により、ホストIF102あるいはドライブIF103へキャッシュメモリ部14へのアクセスの終了を報告する。
ディスクアレイ制御装置1ではまた、1つのキャッシュメモリ部14内のあるアドレスから別のアドレスへデータをコピーする機能も要求される。
この機能は、図9で示したデータの書き込み時の手順において、ステップ511のメモリモジュール109へのライトアクセスの代わりに、メモリモジュール109からデータを読み出してCMコントローラ107内のパケットバッファ303に格納し、続けてそのデータをメモリモジュール109へ書き込むという処理を行うことによって実現できる。
1…ディスクアレイ制御装置、11…チャネルIF部、12…ディスクIF部、13…セレクタ部、14…キャッシュメモリ部、15…共有メモリ部、20…磁気ディスク装置、50…ホストコンピュータ、101…マイクロプロセッサ、102…ホストIF、103…ドライブIF、104…CMアクセス制御部、105…SMアクセス制御部、106…内部バス、107…CMコントローラ、108…SMコントローラ、109…メモリモジュール、135…アクセスパス0、136…アクセスパス1、137…アクセスパス2。