(57)【特許請求の範囲】
【請求項１】
複数のディスク装置と、外部からの入出力命令に応じてパリティ用のディスク装置を固定することなく前記の各ディスク装置に対して並列的に読出／書込アクセスを実行するように制御するアレイコントローラとをそなえてなるＲＡＩＤ５型のディスクアレイ装置において、
パリティ更新時に必要とされる元データおよび元パリティに関する入出力命令に対してタグ番号を付与するタグ番号付与機能と、
該タグ番号付与機能によってタグ番号を付与された入出力命令を含む複数の入出力命令を、前記の各ディスク装置におけるヘッドのトラック移動回数が少なくなるように並び換え、タグ番号を付与された入出力命令の実行を非同期に該アレイコントローラに指示するスケジューリング機能と、
該スケジューリング機能の指示に従ってタグ番号を付与された入出力命令を実行する際にはそのタグ番号を登録し、登録されたタグ番号毎に設定される状態ビットを用いて、タグ番号を付与された入出力命令による元データおよび元パリティの両方の読出状態を管理し、同一のタグ番号を付与された入出力命令の実行が該スケジューリング機能により２度指示されたことを該状態ビットにより検知すると、元データおよび元パリティの両方が読み出されたとしてパリティ更新処理が可能になったことを該アレイコントローラに通知するパリティ制御機能とがそなえられたことを特徴とする、ディスクアレイ装置。
【請求項２】
各入出力命令の命令種を解析するデコード機能をさらにそなえ、
該スケジューリング機能が、該デコード機能により解析された命令種に基づいて該複数の入出力命令を並び換え、各入出力命令の実行を該アレイコントローラに指示する機能をさらにそなえていることを特徴とする、請求項１記載のディスクアレイ装置。
【請求項３】
複数のディスク装置と、外部からの入出力命令に応じて前記の各ディスク装置に対する読出／書込アクセスを制御するアレイコントローラとをそなえてなるディスクアレイ装置において、
外部から受け付けた複数の入出力命令を、前記の各ディスク装置におけるヘッドのトラック移動回数が少なくなるように並び換えるスケジューリング処理を行なうとともに、該複数の入出力命令の前記スケジューリング処理を行なった後に他の入出力命令を受け付けた場合に、シーク時間が短くなるように、当該他の入出力命令と前記スケジューリング処理を行なわれた該複数の入出力命令との間でスケジューリング処理を行なってこれらの入出力命令の実行順序を変更し、変更された実行順序に従って該複数の入出力命令および当該他の入出力命令の実行を該アレイコントローラに指示する動的スケジューリング機能がそなえられたことを特徴とする、ディスクアレイ装置。
【発明の詳細な説明】
【０００１】
（目次）
発明の属する技術分野
従来の技術（図１５〜図１７）
発明が解決しようとする課題
課題を解決するための手段
発明の実施の形態
（ａ）第１実施形態の説明（図１）
（ｂ）第２実施形態の説明（図２）
（ｃ）第３実施形態の説明（図３）
（ｄ）第４実施形態の説明（図４）
（ｅ）静的スケジューリングを行なう場合の具体的な実施形態の説明（図５〜図１１）
（ｆ）動的スケジューリングを行なう場合の具体的な実施形態の説明（図１２〜図１４）
発明の効果
【０００２】
【発明の属する技術分野】
本発明は、複数のディスク装置を並列的にアクセスしてデータ入出力処理を行なうようにしたディスクアレイ装置に関し、特に、ＲＡＩＤ５型のディスクアレイ装置における入出力命令のスケジューリング技術に関する。
【０００３】
【従来の技術】
近年、ＣＰＵの高性能化に伴い、メモリ・サブシステムの性能が相対的に低下してきており、処理速度の向上が要求されている。ディスクアレイ装置は、安価で小型のディスク装置を複数台有し、これらのディスク装置に分散してデータを格納し、並列的にアクセス・駆動するものである。
【０００４】
ディスクアレイ装置では、複数のディスク装置に並列的にデータ転送を行なうことで、１台のディスク装置のみの場合に比べて、ディスク装置の台数倍の高速データ転送が可能になる。また、データに加え、パリティデータなどの冗長な情報を付加して記録することにより、ディスク装置の故障等を原因とするデータエラーの検出および訂正が可能になり、ディスク装置の内容を二重化して記録した場合と同程度の高信頼性を、二重化する場合よりも低価格で実現することができる。
【０００５】
このようなディスクアレイ装置は、記憶方式の違いにより５つのタイプに分類されているが、いずれのタイプにおいても、ディスクアレイ装置では、単体ディスク装置とは異なり、性能を引き出すための機構（アレイコントローラ）が必要となる。
ここで、前記５つのタイプは、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks;廉価ディスク重複配列）１〜５と略称される。
【０００６】
ＲＡＩＤ１型のディスクアレイ装置では、ディスク装置に格納されるデータのコピー（鏡像）を格納するミラーディスク装置がそなえられており、ディスク装置の利用効率は低いが冗長性があり、簡単な制御で実現できるため、広く普及している。
ＲＡＩＤ２型のディスクアレイ装置では、データがビットやバイト単位でストライピング（分割）され、それぞれのディスク装置に並列に読み書きが行なわれる。ストライピングしたデータは、全てのディスク装置で物理的に同じセクタに記録される。エラー訂正コードとしては、データから生成したハミングコードを使用する。データ用ディスク装置の他にハミングコードを記録するためのディスク装置をもち、ハミングコードから故障したディスク装置を特定して、データを復元している。このようにハミングコードによる冗長性をそなえることで、ディスク装置が故障しても正しいデータを確保できるが、ディスク装置の利用効率が悪いために実用化されていない。
【０００７】
ＲＡＩＤ３型のディスクアレイ装置１００Ａは、例えば図１５に示すように、アレイコントローラ１１０と４つの磁気ディスク装置１１１〜１１４とから構成されている。アレイコントローラ１１０は、ホストコンピュータ１２０からの入出力命令（Ｉ／Ｏ命令）に応じて、各ディスク装置１１１〜１１４に対する読出／書込アクセスを制御するものである。そして、ＲＡＩＤ３型のディスクアレイ装置１００Ａでは、例えば、データａ，ｂ，ｃをビットまたはセクタ単位にデータａ１〜ａ３，ｂ１〜ｂ３，ｃ１〜ｃ３に分割し、さらに、データａ１〜ａ３からパリティＰ１を算出し、データｂ１〜ｂ３からパリティＰ２を算出し、データｃ１〜ｃ３からパリティＰ３を算出し、これらのデータａ１〜ａ３，ｂ１〜ｂ３，ｃ１〜ｃ３およびパリティＰ１〜Ｐ３が、図１５に示すように、アレイコントローラ１１０によりディスク装置１１１〜１１４に対して同時並列的にアクセスして書き込まれている。
【０００８】
このようなＲＡＩＤ３では、データの冗長性はパリティにより保持される。また、分割したデータの並列処理によりデータの書込時間を短縮できる。しかし、１回の書込または読出のアクセスで、全てのディスク装置１１１〜１１４の並列的なシーク動作を必要とするため、大量のデータを連続して取り扱う場合には有効であるが、少量のデータをランダムにアクセスするトランザクション処理のような場合には、データ転送の高速性を生かせず、効率が低下してしまう。
【０００９】
ＲＡＩＤ４型のディスクアレイ装置１００Ｂは、図１６に示すように、ハードウエア構成自体は図１５に示したものと同様に構成されているが、このＲＡＩＤ４型のディスクアレイ装置１００Ｂでは、１つのデータをセクタ単位に分割して同じディスク装置１１１〜１１４に書き込んでいる。例えば、ディスク装置１１１にはデータａがセクタデータａ１〜ａ４に分割されて書き込まれている。パリティは固定的に決めたディスク装置１１４に格納されている。ここでは、データａ１，ｂ１，ｃ１によりパリティＰ１が算出され、データａ２，ｂ２，ｃ２によりパリティＰ２が算出され、データａ３，ｂ３，ｃ３によりパリティＰ３が算出され、データａ４，ｂ４，ｃ４によりパリティＰ４が算出されている。
【００１０】
このようなＲＡＩＤ４型のディスクアレイ装置１００Ｂにおいて、データ読出は、ディスク装置１１１〜１１３に対して並列的に行なわれる。例えばデータａの読出は、ディスク装置１１１のセクタ０〜３をアクセスし、セクタデータａ１〜ａ４を順次読み出して合成することにより行なわれる。一方、データ書込は、書込前のデータとパリティとを読み出してから新パリティを算出して書き込むため、１度の書込について、合計４回のアクセスが必要になる。例えば、ディスク装置１１１のセクタデータａ１を更新（書き換え）する場合には、更新場所の元データ（ａ１）OLD および対応するディスク装置１１４の元パリティ（Ｐ１）OLD を読み出し、新データ（ａ１）NEW と整合性のとれた新パリティ（Ｐ１）NEW を求めて書き込む動作を、更新のためのデータ書込以外にも必要とする。
【００１１】
また、書込の際に必ずパリティ用のディスク装置１１４へのアクセスが起きるため、複数のディスク装置の書込を同時に実行することができない。例えば、ディスク装置１１１のデータａ１の書込とディスク装置１１２のデータｂ２の書込とを同時に行なおうとしても、同じディスク装置１１４からパリティからパリティＰ１，Ｐ２を読み出して算出後に書き込む必要があるため、同時に書込を実行することができない。このようにＲＡＩＤ４は定義されているが、メリットが少ないため、現在、実用化の動きは少ない。
【００１２】
ＲＡＩＤ５型のディスクアレイ装置１００Ｃは、図１７に示すように、ハードウエア構成自体は図１５，図１６に示したものと同様に構成されているが、このＲＡＩＤ５型のディスクアレイ装置１００Ｃでは、パリティ用のディスク装置をＲＡＩＤ４のように固定しないことで、各ディスク装置１１１〜１１３に対する並列の読み書きアクセスを可能にしている。即ち、図１７に示すように、セクタ毎にパリティを格納されるディスク装置１１１〜１１４が異なっている。ここでも、図１６のＲＡＩＤ４と同様、データａ１，ｂ１，ｃ１によりパリティＰ１が算出され、データａ２，ｂ２，ｃ２によりパリティＰ２が算出され、データａ３，ｂ３，ｃ３によりパリティＰ３が算出され、データａ４，ｂ４，ｃ４によりパリティＰ４が算出されている。
【００１３】
このようなＲＡＩＤ５型のディスクアレイ装置１００Ｃにおいて、並列の読み書きは、例えば、ディスク装置１１１のセクタ０のデータａ１とディスク装置１１２のセクタ１のデータｂ２とは、パリティＰ１，Ｐ２が異なるディスク装置１１４，１１３に置かれているため重複せず、同時に読み書きを行なうことができる。なお、書込時に合計４回のアクセスを必要とするオーバヘッドはＲＡＩＤ４の場合と同じである。
【００１４】
このように、ＲＡＩＤ５は、非同期に複数のディスク装置１１１〜１１４にアクセスしてリード／ライトを実行できるため、少量データをランダムにアクセスするトランザクション処理に向いている。
ここで、ＲＡＩＤ４およびＲＡＩＤ５のデータ書込におけるパリティデータの生成を説明すると、次のようになる。
【００１５】
まず、冗長情報を格納したディスクアレイ装置では、次の（１）式により複数のディスク装置における同一記憶位置のデータの排他的論理和をとってパリティとし、パリティ用のディスク装置に保持している。
データａ（＋）データｂ（＋）データｃ（＋）…＝パリティＰ  （１）
ただし、上式中、（＋）は排他的論理和記号を示すものとする。
【００１６】
データとパリティの格納場所は、ＲＡＩＤ４では図１６に示したように特定のディスク装置１１４に固定されている。これに対し、ＲＡＩＤ５では、図１７に示したようにパリティをディスク装置１１１〜１１４に分散させて、パリティ読み書き動作による特定のディスク装置へのアクセスの集中を解消している。
これらのＲＡＩＤ４およびＲＡＩＤ５のデータ読み出し時は、ディスク装置１１１〜１１４内のデータは書き換えられないので、パリティの整合性は保持されるが、書込時にはパリティもデータに合わせて変更する必要がある。例えばディスク装置１１１内の１つの元データ（ａ１）OLD を新データ（ａ１）NEW に書き換えた時、パリティＰ１の整合性をとるには、次の（２）式のような計算を行ない、パリティを更新することでディスク装置のデータ全体のパリティの整合性を保つことができる。
【００１７】
元データ（＋）元パリティ（＋）新データ＝新パリティ    （２）
【００１８】
【発明が解決しようとする課題】
図１７により上述したＲＡＩＤ５型のディスクアレイ装置１００Ｃでは、各ディスク装置１１１〜１１４にデータを巡回的に格納している（ストライピング）。従って、アレイコントローラ１１０は、同一ディスク装置へのアクセス競合が無いと判断すれば、動作可能状態にある異なるディスク装置に対しても同時にＩ／Ｏ命令（入出力命令）を発行している。
【００１９】
しかし、従来のディスクアレイ装置１００Ｃは、Ｉ／Ｏ命令の並列実行による高速化のみ考慮し、個々の磁気ディスク装置１１１〜１１４でのＩ／Ｏ命令アクセス処理の高速化については考慮されておらず、以下の項目▲１▼〜▲３▼のような課題がある。
▲１▼ディスクアレイ装置を構成する各磁気ディスク装置１１１〜１１４では、ヘッドを所望のトラックに移動する際の時間（シーク時間）が、データ転送処理の大半を占めており、データ転送の高速処理を阻害する要因となっている。
【００２０】
▲２▼ホストコンピュータ１２０内のＣＰＵの見地からすると、ライトバック型キャッシュをそなえたディスクアレイ装置１００Ｃへのライト命令は、キャッシュへデータをライトした時点で終了したものと見做せる。しかし、リード命令は、ホストコンピュータ１２０内の主記憶装置へのデータ転送完了をもって処理終了となるため、ＣＰＵ側のジョブは、その間、待たされることになる。ＣＰＵでの実行時間が短いほど、その待ち時間は大きなオーバヘッドとなり、ジョブの処理時間に影響を与えることになる。つまり、特に、ホストコンピュータ１２０からアレイコントローラ１１０に対するリード要求時のレスポンス・タイムが、ジョブの処理時間に大きく影響する。
【００２１】
▲３▼データを磁気ディスク装置１１１〜１１４に書き込んだ場合、パリティの更新を行なうが、その際、前述した通り、データの書込位置にある元データと更新したいパイティの書込位置にある元パリティとを読み出す必要がある。しかし、個々の磁気ディスク装置１１１〜１１４毎にＩ／Ｏ命令のアクセス・スケジューリングを行なうため、元データと元パリティとのリード処理に関して同期をとると、スケジューリングの効果が損なわれるという問題が生じる。
【００２２】
本発明は、このような課題に鑑み創案されたもので、各ディスク装置でのヘッドのシーク時間を短縮・削減できるようにして、データ転送処理の高速化等の性能向上を実現したディスクアレイ装置を提供することを第１の目的とする。
また、本発明は、各ディスク装置でのリード命令のレスポンス・タイムを短縮できるようにして、ホスト側での待ち時間の改善（オーバヘッド時間の短縮）をはかり、ホスト側での処理性能向上を実現したディスクアレイ装置を提供することを第２の目的とする。
【００２３】
さらに、本発明は、パリティ更新時の元データと元パリティとのリード処理を非同期に行なえるようにして、各ディスク装置のスループットの向上をはかったディスクアレイ装置を提供することを第３の目的とする。
【００２６】
【課題を解決するための手段】
このため、本発明のディスクアレイ装置は、複数のディスク装置と、外部からの入出力命令に応じてパリティ用のディスク装置を固定することなく各ディスク装置に対して並列的に読出／書込アクセスを実行するように制御するアレイコントローラとをそなえてなるＲＡＩＤ５型のディスクアレイ装置において、パリティ更新時に必要とされる元データおよび元パリティに関する入出力命令に対してタグ番号を付与するタグ番号付与機能と、このタグ番号付与機能によってタグ番号を付与された入出力命令を含む複数の入出力命令を、前記の各ディスク装置におけるヘッドのトラック移動回数が少なくなるように並び換え、タグ番号を付与された入出力命令の実行を非同期に前記アレイコントローラに指示するスケジューリング機能と、このスケジューリング機能の指示に従ってタグ番号を付与された入出力命令を実行する際にはそのタグ番号を登録し、登録されたタグ番号毎に設定される状態ビットを用いて、タグ番号を付与された入出力命令による元データおよび元パリティの両方の読出状態を管理し、同一のタグ番号を付与された入出力命令の実行がこのスケジューリング機能により２度指示されたことを前記状態ビットにより検知すると、元データおよび元パリティの両方が読み出されたとしてパリティ更新処理が可能になったことをアレイコントローラに通知するパリティ制御機能とをそなえたことを特徴としている（請求項１）。
また、本発明のディスクアレイ装置は、各入出力命令の命令種を解析するデコード機能をさらにそなえ、前記スケジューリング機能が、このデコード機能により解析された命令種に基づいて前記複数の入出力命令を並び換え、各入出力命令の実行を前記アレイコントローラに指示する機能をさらにそなえてもよい（請求項２）。
【００２７】
そして、本発明のディスクアレイ装置は、複数のディスク装置と、外部からの入出力命令に応じて各ディスク装置に対する読出／書込アクセスを制御するアレイコントローラとをそなえてなるものにおいて、外部から受け付けた複数の入出力命令を、各ディスク装置におけるヘッドのトラック移動回数が少なくなるように並び換えるスケジューリング処理を行なうとともに、前記複数の入出力命令の前記スケジューリング処理を行なった後に他の入出力命令を受け付けた場合に、シーク時間が短くなるように、当該他の入出力命令と前記スケジューリング処理を行なわれた前記複数の入出力命令との間でスケジューリング処理を行なって、これらの入出力命令の実行順序を変更し、変更された実行順序に従って前記複数の入出力命令および当該他の入出力命令の実行を前記アレイコントローラに指示する動的スケジューリング機能をそなえたことを特徴としている（請求項３）。
【００２８】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
（ａ）第１実施形態の説明
図１は、本発明の第１実施形態としてのディスクアレイ装置を示すブロック図で、図１に示すように、このディスクアレイ装置は、複数の磁気ディスク装置１０と、ホストコンピュータ（図示省略）側からの入出力命令（以下、Ｉ／Ｏ命令という）に応じて各磁気ディスク装置１０に対する読出／書込アクセスを制御するアレイコントローラ１と、Ｉ／Ｏ命令を格納するための記憶装置２と、Ｉ／Ｏ命令の実行順序を決定するのに必要な情報および所定のスケジューリング・アルゴリズムに従いスケジューリングを実行する演算機能をそなえたスケジューリング装置３Ａとから構成されている。
【００２９】
ここでは、記憶装置２とスケジューリング装置３Ａとにより、外部（ホストコンピュータ）から受け付けた複数のＩ／Ｏ命令を各磁気ディスク装置１０におけるヘッドのトラック移動回数が少なくなるように並び換えて各Ｉ／Ｏ命令の実行をアレイコントローラ１に指示するスケジューリング機能が実現されている。
次に、図１に示すように構成されたディスクアレイ装置の動作について説明する。
【００３０】
アレイコントローラ１がホストコンピュータから受け取ったＩ／Ｏ命令は、記憶装置２に格納される。スケジューリング装置３Ａは、記憶装置２から適宜Ｉ／Ｏ命令を取り出し、全体のシーク時間が短くなるように、Ｉ／Ｏ命令間で命令の実行順序を変更（スケジューリング）する。
スケジューリングされたＩ／Ｏ命令列は、記憶装置２に格納される。アレイコントローラ１は、記憶装置２からスケジューリング済みのＩ／Ｏ命令を取り出して順次実行する。記憶装置２に格納されているスケジューリング済みＩ／Ｏ命令が無くなると、スケジューリング装置３Ａにより再びスケジューリング処理を行なう。
【００３１】
スケジューリング装置３Ａで実行するスケジューリング・アルゴリズムについて以下に説明する。
スケジューリング装置３Ａは、複数のＩ／Ｏ命令を、ヘッドが位置するトラックを中心にして振り分ける。このとき、ヘッドが位置するトラック番号と比べて大きいトラック番号をもつＩ／Ｏ命令の集まりは昇順にソートする一方、ヘッドが位置するトラック番号と比べて小さいトラック番号をもつＩ／Ｏ命令の集まりは降順にソートする。便宜上、次のように用語を定義する。
【００３２】
0003648311.tif 000002
また、あるＩ／Ｏ命令列の最後尾に別のＩ／Ｏ命令列を連結する操作を“＋”で表すことにする。
【００３３】
スケジューリング装置３Ａで実行するスケジューリング・アルゴリズムでは、“leng〔Ascend〕”と“leng〔Descend 〕”とを比較し、その大小関係等に応じて、以下のようにＩ／Ｏ命令の実行順序を決定する。
0003648311.tif 000003
【００３４】
このようにして、各磁気ディスク装置１０への負荷分散に加え、各磁気ディスク装置１０においてもスケジューリングを行なうため、各ディスク装置１０でのヘッドのシーク時間が短縮・削減され磁気ディスク装置１０のサービス時間を改善することが可能となり、データ転送処理の高速化等の性能も大幅に向上することになる。
【００３５】
（ｂ）第２実施形態の説明
図２は、本発明の第２実施形態としてのディスクアレイ装置を示すブロック図で、図２に示すように、このディスクアレイ装置は、図１に示したものと同様の複数の磁気ディスク装置１０，アレイコントローラ１および記憶装置２をそなえるほか、外部（ホストコンピュータ）から受け付けたＩ／Ｏ命令の命令種を解析するための命令デコード装置４と、Ｉ／Ｏ命令の実行順序を決定するのに必要な情報および所定のスケジューリング・アルゴリズムに従いスケジューリングを実行する演算機能をそなえたスケジューリング装置３Ｂとをそなえて構成されている。
【００３６】
ここでは、命令デコード装置４がデコード機能を果たすとともに、記憶装置２とスケジューリング装置３Ｂとが、前述したスケジューリング装置３Ａと同様のスケジューリング機能（各磁気ディスク装置１０におけるヘッドのトラック移動回数が少なくなるように複数のＩ／Ｏ命令を並び換えて各Ｉ／Ｏ命令の実行をアレイコントローラ１に指示するスケジューリング機能）とともに、命令デコード装置４により解析された命令種に基づいて複数のＩ／Ｏ命令を並び換えて各Ｉ／Ｏ命令の実行をアレイコントローラ１に指示するスケジューリング機能を果たしている。
【００３７】
次に、図２に示すように構成されたディスクアレイ装置の動作について説明する。
命令デコード装置４は、記憶装置２からＩ／Ｏ命令を取り出すと、取り出したＩ／Ｏ命令の解析を行なう。次に、解析されたＩ／Ｏ命令を、その命令種、つまり、そのＩ／Ｏ命令がディスクアレイ装置（磁気ディスク装置１０）に対するリード命令かライト命令かによって分類する。
【００３８】
スケジューリング装置３Ｂは、前述したアルゴリズムに基づいて、リード命令列およびライト命令列のそれぞれについて、スケジューリングを行なう。ただし、ライト命令のスケジューリング処理時に基準とするヘッドのトラックには、スケジューリング後のリード命令列の最後尾Ｉ／Ｏ命令がアクセスするトラックを使用する。
【００３９】
スケジューリング後、リード命令列の最後尾にライト命令列を連結し、記憶装置２に格納する。アレイコントローラ１は記憶装置２からスケジューリング済みのＩ／Ｏ命令を取り出して順次実行する。記憶装置２に格納されているスケジューリング済みＩ／Ｏ命令が無くなると、スケジューリング装置３Ｂにより再びスケジューリング処理を行なう。
【００４０】
このような処理により、リード命令をライト命令よりも優先的に実行することができ、リード／ライト命令混在実行時に比べて、リード命令のレスポンス・タイムの低減が可能になる。従って、Ｉ／Ｏ要求を行なうホストコンピュータ側での待ち時間も改善され、このホストコンピュータ側での処理性能向上にも寄与する。
【００４１】
（ｃ）第３実施形態の説明
図３は、本発明の第３実施形態としてのディスクアレイ装置を示すブロック図で、図３に示すように、このディスクアレイ装置は、図１に示したものと同様の複数の磁気ディスク装置１０，アレイコントローラ１Ａ，記憶装置２およびスケジューリング装置３Ｃをそなえるほか、パリティ制御装置５をそなえて構成されている。
【００４２】
ここで、アレイコントローラ１Ａは、外部（ホストコンピュータ）からのＩ／Ｏ命令に応じてパリティ用の磁気ディスク装置１０を固定することなく各磁気ディスク装置１０に対して並列的に読出／書込アクセスを実行するように制御することにより、ＲＡＩＤ５型のディスクアレイ装置を実現させている。また、このアレイコントローラ１Ａは、パリティ更新時に必要とされる元データおよび元パリティに関する入出力命令に対してタグ番号を付与するタグ番号付与機能を有している。
【００４３】
スケジューリング装置３Ｃは、図１に示したスケジューリング装置３Ａと同様に記憶装置２から取り出したＩ／Ｏ命令のスケジューリングを施すと同時に、タグ付きＩ／Ｏ命令を検出すると、パリティ制御装置５へ当該タグ番号を登録する機能を有している。
そして、パリティ制御装置５は、パリティ更新時のリード命令の非同期実行をサポートするためのもので、タグ番号を付与されたＩ／Ｏ命令を実行する際にはそのタグ番号をスケジューリング装置３Ｃにより登録されて元データおよび元パリティの両方の読出状態を管理し、元データおよび元パリティの両方が読み出された場合にパリティ更新処理が可能になったことをアレイコントローラ１Ａに通知するパリティ制御機能を果たしている。
【００４４】
次に、図３に示すように構成されたディスクアレイ装置の動作について説明する。
パリティ更新時に必要とされる元データおよび元パリティに関するＩ／Ｏ命令は、アレイコントローラ１Ａにより、タグ番号を付されたＩ／Ｏ命令に変換される。
【００４５】
そして、スケジューリング装置３Ｃは、記憶装置２から取り出したＩ／Ｏ命令のスケジューリングを施すと同時に、タグ付きＩ／Ｏ命令を検出すると、パリティ制御装置５へ当該タグ番号を登録し、元データと元パリティとの間の関連性を保証する。
アレイコントローラ１Ａは、記憶装置２からＩ／Ｏ命令を取り出して順次実行する。磁気ディスク装置１０での処理を終了すると、アレイコントローラ１Ａからパリティ制御装置５へ、その旨が通知される。
【００４６】
パリティ制御装置５では、アレイコントローラ１ＡからのＩ／Ｏ処理終了通知が、パリティ更新時のリード命令であるか否かを判定する。その結果、元データおよび元パリティの両データが揃うと、パリティ制御装置５は、アレイコントローラ１Ａへ、パリティ計算処理が実行可能であることを報告する。また、どちらか一方のデータのみであるならば、その旨を登録する。
【００４７】
このような処理によって、パリティ更新時の元データ／元パリティのリード処理時の同期を取る必要が無くなる、つまり、パリティ更新時の元データと元パリティとのリード処理を非同期に行なえるため、個々の磁気ディスク装置１０に対して行なったスケジューリングの効果を損なうことがなく、各磁気ディスク装置１０のスループットを向上させることができる。
【００４８】
（ｄ）第４実施形態の説明
図４は、本発明の第４実施形態としてのディスクアレイ装置を示すブロック図で、図３に示すように、このディスクアレイ装置は、図１に示したものと同様の複数の磁気ディスク装置１０，アレイコントローラ１および記憶装置２のほか、Ｉ／Ｏ命令の実行順序を動的に決定する動的スケジューリング装置６と、この動的スケジューリング装置６により優先的に実行するように決定されたＩ／Ｏ命令を格納するためのプライオリティ・レジスタ７をそなえて構成されている。
【００４９】
ここで、動的スケジューリング装置６は、外部（ホストコンピュータ）から受け付けた複数のＩ／Ｏ命令を、各磁気ディスク装置１０におけるヘッドのトラック移動回数が少なくなるように並び換えて、各Ｉ／Ｏ命令の実行をアレイコントローラ１に指示するとともに、スケジューリング済みのＩ／Ｏ命令よりも優先的に実行すべき他のＩ／Ｏ命令を受け付けた場合に、当該他のＩ／Ｏ命令をプライオリティ・レジスタ７に格納し、前記スケジューリング済みのＩ／Ｏ命令よりも先に当該他のＩ／Ｏ命令の実行をアレイコントローラ１に指示する動的スケジューリング機能を果たしている。
【００５０】
次に、図４に示すように構成されたディスクアレイ装置の動作について説明する。
アレイコントローラ１が、ホストコンピュータから受け取ったＩ／Ｏ命令は、記憶装置２に格納される。動的スケジューリング装置６は、記憶装置２から適宜Ｉ／Ｏ命令を取り出し、全体のシーク時間が短くなるように、Ｉ／Ｏ命令間で命令の実行順序を変更（スケジューリング）する。
【００５１】
このとき、動的スケジューリング装置６は、記憶装置２上にスケジューリング済みのＩ／Ｏ命令が存在しない場合、または、磁気ディスク装置１０でのＩ／Ｏ命令の処理開始を契機として、スケジューリング処理を開始する。後者の場合（磁気ディスク装置１０でのＩ／Ｏ命令の処理開始を契機とする場合）、記憶装置２から取り出したＩ／Ｏ命令と、記憶装置２に格納されているスケジューリング済みのＩ／Ｏ命令との間で、スケジューリング処理を行なう。
【００５２】
スケジューリングされたＩ／Ｏ命令群は、記憶装置２に格納される。また、記憶装置２に格納されているＩ／Ｏ命令に優先して実行する必要があるＩ／Ｏ命令については、プライオリティ・レジスタ７に格納する。アレイコントローラ１は、記憶装置２またはプライオリティ・レジスタ７からスケジューリング済みのＩ／Ｏ命令を取り出して順次実行する。
【００５３】
このような処理によって、各磁気ディスク装置１０に対するＩ／Ｏ命令列の実行順序を動的に並び換えることが可能になり、磁気ディスク装置１０のサービス時間のさらなる改善を行なえ、データ転送処理の高速化等の性能をより一層向上させることができる。
（ｅ）静的スケジューリングを行なう場合の具体的な実施形態の説明
図５は静的スケジューリングを行なうディスクアレイ装置の具体的な実施形態を示すブロック図である。この図５に示すディスクアレイ装置は、図１〜図３にて前述したディスクアレイ装置を組み合わせたものである。なお、図５中、既述の符号と同一の符号はほぼ同一の部分を示しているので、その詳細な説明は省略する。
【００５４】
図５に示すディスクアレイ装置はＲＡＩＤ５型のもので、このディスクアレイ装置では、図３にて前述した機能（タグ番号付与機能等）をもつアレイコントローラ１Ａが用いられている。
また、図５に示すディスクアレイ装置では、前述した記憶装置２がＦＩＦＯバッファ２１により構成され、前述した命令デコード装置４がフェッチ・ユニット４１およびデコード・ユニット４２により構成され、前述したパリティ制御装置５がリザベーション・レジスタ５１およびタグ・レジスタ５２により構成されている。
【００５５】
さらに、スケジューリング装置３（図１〜図３に示したスケジューリング装置３Ａ〜３Ｃとしての機能をもつもの）が、汎用レジスタ３１，ヘッド情報レジスタ３２，オーダリング・レジスタ３３，カウンタ３４，シーケンサ３５，演算ユニット３６およびＩ／Ｏレジスタ３７により構成されている。
なお、スケジューリング装置３のオーダリング・レジスタ３３は、図１〜図４に示した実施形態では記憶装置２に含まれるものであるが、ここでは、スケジューリング装置３内にそなえるものとする。従って、図１〜図４に示した実施形態では、アレイコントローラ１Ａで実行すべきＩ／Ｏ命令は記憶装置２から読み出されていたが、図５に示す実施形態では、後述するごとく、Ｉ／Ｏ命令は、スケジューリング装置３のオーダリング・レジスタ３３からＩ／Ｏレジスタ３７を介して読み出されるようになっている。
【００５６】
図５において、３８は外部インタフェース（Ｉ／Ｆ）で、この外部Ｉ／Ｆ３８は、アレイコントローラ１ＡとＦＩＦＯバッファ２１（記憶装置２）およびスケジューリング装置３とのインタフェースとして動作するものである。
ＦＩＦＯバッファ２１は、外部Ｉ／Ｆ３８を経由して、ホストコンピュータから送られ、アレイコントローラ１Ａにて受け付けられた複数のＩ／Ｏ命令を格納するものである。
【００５７】
命令デコード装置４において、フェッチ・ユニット４１は、ＦＩＦＯバッファ２１からＩ／Ｏ命令を取り出すものであり、デコード・ユニット４２は、フェッチ・ユニット４１から取り出したＩ／Ｏ命令を解析するものである。
パリティ制御装置５において、リザベーション・レジスタ５１は、図８にて後述する構成を有し、パリティ更新時の非同期リード命令の待ち列を保持するものであり、タグ・レジスタ５２は、図９にて後述する構成を有し、各磁気ディスク装置１０で実行しているＩ／Ｏ命令がパリティ更新に関するものかどうかを判定すべくスケジューリング装置３からタグ番号を登録されるものである。
【００５８】
スケジューリング装置３において、汎用レジスタ３１は、スケジューリング実行時に作業用バッファとして使用されるものであり、ヘッド情報レジスタ３２は、図６にて後述する構成を有し、各磁気ディスク装置１０（ＨＤＤ0 〜ＨＤＤ n-1）上のヘッドの位置を示すデータを保持するものである。
また、オーダリング・レジスタ３３は、図７にて後述する構成を有し、スケジューリング済みのＩ／Ｏ命令列を格納するものであり、カウンタ３４は、オーダリング・レジスタ３３内のＩ／Ｏ命令数を計数値として示すものである。
【００５９】
シーケンサ３５は、演算ユニット３６へのスケジューリング処理の指示あるいはフェッチ・ユニット４１へのＩ／Ｏ命令のフェッチ指示等を行なうべくこれらの演算ユニット３６やフェッチ・ユニット４１に対して所定のタイミングで指示を送出するものである。
演算ユニット３６は、シーケンサ３５からの指示に応じて実際のスケジューリング処理を前述した所定のアルゴリズムやデコード・ユニット４２による解析結果に基づいて行なうものであり、Ｉ／Ｏレジスタ３７は、各磁気ディスク装置１０で実行するＩ／Ｏ命令を、スケジューリング装置３からアレイコントローラ１Ａを介して対象磁気ディスク装置１０へ出力する際に一時的に格納するためのものである。
【００６０】
なお、ＦＩＦＯバッファ２１，ヘッド情報レジスタ３２，オーダリング・レジスタ３３，カウンタ３４およびタグ・レジスタ５２は、それぞれ磁気ディスク装置１０に対応して設けられている。
図６はヘッド情報レジスタ３２の構成を示すもので、この図６において、３２１はヘッド情報レジスタ３２における各磁気ディスク装置対応のフィールドを表し、ヘッドが位置するトラック番号を格納するものである。なお、図中、ＨＤＤ0 〜ＨＤＤ n-1は、ｎ台の磁気ディスク装置１０に対応して設定された装置番号である。
図７はオーダリング・レジスタ３３の構成を示すもので、この図７において、３３１はオーダリング・レジスタ３３における各磁気ディスク装置対応のフィールドを示し、ｎ台の磁気ディスク装置１０毎にｍ個のＩ／Ｏ命令を格納することが可能な構成になっている。
【００６１】
図８はリザベーション・レジスタ５１の構成を示すもので、この図８において、５１１はタグ番号用のフィールドで、このフィールド５１１にタグ番号を登録されることによりパリティ更新時の元データおよび元パリティの依存関係を判断できるようになっている。また、５１２は状態ビットで、この状態ビット５１２は、パリティ更新時のリード要求の実行状態を示すものである。
【００６２】
例えば、この状態ビット５１２には、２ビットの情報“００（Ｓ０）”，“０１（Ｓ１）”，“１０（Ｓ２）”，“１１（Ｓ３）”が設定される。ここで、
００（Ｓ０）：“本フィールドは無効”であることを示す。
０１（Ｓ１）：“NO DEFINITION ”であることを示す。
１０（Ｓ２）：“本フィールドはパリティ更新用に利用されている”ことを示す。
【００６３】
１１（Ｓ３）：“元データまたは元パリティいずれか一方がリードされた”ことを示す。
図９はタグ・レジスタ５２の構成を示すもので、この図９において、５２１はＶ（Valid)ビットで、このＶビット５２１は、磁気ディスク装置１０毎にそなえられるもので、このＶビット５２１に“１”が設定された場合、パリティ更新のためのＩ／Ｏアクセスが当該磁気ディスク装置１０に対して実行されていることを示す。また、５２２はタグ・フィールドで、このタグ・フィールド５２２には、前述したフィールド５１１と同様、タグ番号が登録・格納されるようになっている。
【００６４】
次に、上述のごとく構成された、本実施形態の静的スケジューリングを行なうディスクアレイ装置の動作について説明する。
上位装置であるホストコンピュータ（図示省略）から、図５に示すディスクアレイ装置にＩ／Ｏ要求があると、そのＩ／Ｏ命令が、アレイコントローラ１Ａから外部Ｉ／Ｆ３８を通して、ＦＩＦＯバッファ２１に格納される。このとき、パリティ更新に伴う元データまたは元パリティのリード処理が生じた時には、アレイコントローラ１ＡはそのＩ／Ｏ命令にタグ番号を付加する。
【００６５】
フェッチ・ユニット４１は、シーケンサ３５からの指示により、ＦＩＦＯバッファ２１から複数のＩ／Ｏ命令をフェッチする。フェッチ可能なＩ／Ｏ命令の上限は、オーダリング・レジスタ３３に格納できるＩ／Ｏ命令数ｍとする。
Ｉ／Ｏ命令のフェッチ後、デコード・ユニット４２がＩ／Ｏ命令の解析を行ない、リード命令／ライト命令に応じてＩ／Ｏ命令を分類する。Ｉ／Ｏ命令列は、汎用レジスタ３１に、リード命令／ライト命令に分け格納する。Ｉ／Ｏ命令格納後、シーケンサ３５は演算ユニット３６にスケジューリング処理の開始を指示する。
【００６６】
演算ユニット３６は、前述したアルゴリズムに従い、ヘッド情報レジスタ３２内のヘッド位置情報３２１に基づいて、汎用レジスタ３１内のＩ／Ｏ命令の実行順序を決定する。
スケジューリング後のＩ／Ｏ命令列は、当該磁気ディスク装置対応のオーダリング・レジスタ３３に格納される。カウンタ３４には、オーダリング・レジスタ３３に格納されたＩ／Ｏ命令数を記述する。
【００６７】
演算ユニット３６でのスケジューリング実行中、パリティ更新によって生じたリード命令を検出すると、リザベーション・レジスタ５１に登録されているタグ番号５１１を検索する。このとき、
（ａ）リザベーション・レジスタ５１上に本タグ番号と一致するものがある場合：特に処理は行なわない。
【００６８】
（ｂ）リザベーション・レジスタ５１上に本タグ番号と一致するものが無い場合：リザベーション・レジスタ５１の状態ビット５１２に"１０(S2)"を設定する。
シーケンサ３５は、外部Ｉ／Ｆ３８を通じてアレイコントローラ１Ａから、Ｉ／Ｏ命令を転送するよう指示を受けると、演算ユニット３６に対して処理の開始を要求する。
【００６９】
演算ユニット３６は、オーダリング・バッファ３３からＩ／Ｏ命令を取り出してＩ／Ｏレジスタ３７に格納する。このとき、カウンタ３４による計数値は、Ｉ／Ｏ命令の取出毎にデクリメントされる。また、当該Ｉ／Ｏ命令がタグ付きＩ／Ｏ命令の場合、当該磁気ディスク装置１０に対応するタグ・レジスタ５２のＶビット５２１をオン（“１”）、タグ番号フィールド５２２にそのタグ番号を記入・登録する。
【００７０】
シーケンサ３５の指示を受けた外部Ｉ／Ｆ３８は、Ｉ／Ｏレジスタ３７に格納されたＩ／Ｏ命令をアレイコントローラ１Ａに送信する。アレイコントローラ１Ａは受信したＩ／Ｏ命令を磁気ディスク装置１０に投入する。
また、磁気ディスク装置１０でのＩ／Ｏ命令処理を終了すると、シーケンサ３５はその旨を外部Ｉ／Ｆ３８を通して、アレイコントローラ１Ａから受け取る。シーケンサ３５は、演算ユニット３６に対して処理要求を出す。
【００７１】
このとき、演算ユニット３６は、以下の処理を実行する。
１．タグ・レジスタ５２内の当該磁気ディスク装置１０に対応するＶビット５２１を参照する。
（ａ）Ｖビット５２１がオフの場合：何も処理を行なわない。
（ｂ）Ｖビット５２１がオンの場合：タグ番号５２２を読み出し、以下の処理を行なう。
【００７２】
２．リザベーション・レジスタ５１のタグ番号を検索する。タグ番号５２２と一致するものを求め、状態ビット５１２を以下のように設定する。
（ａ）状態ビット５１２がＳ２の時、状態ビット５１２をＳ３に設定。
（ｂ）状態ビット５１２がＳ３の時、状態ビット５１２をＳ０に設定後、シーケンサ３５がアレイコントローラ１Ａへパリティ更新処理が開始可能である旨を通知。
【００７３】
このように、図５〜図１１に示した実施形態のディスクアレイ装置によれば、ディスクアレイ装置の個々の磁気ディスク装置１０において、アクセス要求のスケジューリングを行なうことにより、シーク時間を削減することが可能になる。従って、ディスクアレイ装置の性能（データ転送処理の高速化等の性能）が大幅に向上する。
【００７４】
また、Ｉ／Ｏ命令をリード／ライトで区別しない場合、図１０（ａ）に示すように、各リード要求のレスポンス・タイムはそれぞれＴ０，Ｔ１およびＴ２となり、平均レスポンス・タイムは（Ｔ０＋Ｔ１＋Ｔ２）／３になっていた。これに対して、本実施形態では、図１０（ｂ）に示すように、リード命令をライト命令と比べて優先的に磁気ディスク装置１０に投入することにより、各リード要求のレスポンス・タイムはそれぞれｔ０（≦Ｔ０），ｔ１（≦Ｔ１）およびｔ２（≦Ｔ２）となり、平均レスポンス・タイムは（ｔ０＋ｔ１＋ｔ２）／３〔≦（Ｔ０＋Ｔ１＋Ｔ２）／３〕と改善される。つまり、ＣＰＵ（ホストコンピュータ）での待ち時間が大幅に改善され、ホスト側での処理性能が大きく向上する。なお、図１０（ａ），（ｂ）中、ＣＰＵおよび主記憶装置は、ホストコンピュータ側にそなえられるものである。
【００７５】
さらに、パリティ更新時の元データ／元パリティ・リードを同期させると、図１１（ａ）に示すように、Ｉ／Ｏ命令ｋの待ち時間はＴ０となる。一方、本実施形態のごとく、非同期に元リード／元パリティ・リードを行なうことにより、Ｉ／Ｏ命令ｋの待ち時間はｔ０（≦Ｔ０）と短縮される。つまり、タグ番号により元データおよび元パリティの両方の読出状態を管理することで、元パリティ／元データのリードを非同期に行なうことが可能になり、各磁気ディスク装置１０のスループットが大幅に向上する。
【００７６】
（ｆ）動的スケジューリングを行なう場合の具体的な実施形態の説明
図１２は動的スケジューリングを行なうディスクアレイ装置の具体的な実施形態を示すブロック図である。この図１２に示すディスクアレイ装置は、図１，図３，図４にて前述したディスクアレイ装置を組み合わせたものである。なお、図１２中、既述の符号と同一の符号はほぼ同一の部分を示しているので、その詳細な説明は省略する。
【００７７】
図１２に示すディスクアレイ装置もＲＡＩＤ５型のもので、このディスクアレイ装置でも、図３にて前述した機能（タグ番号付与機能等）をもつアレイコントローラ１Ａが用いられている。また、図１２に示すディスクアレイ装置では、図２にて前述した機能をもたないので、図５に示したデコード・ユニット４２は省略されている。さらに、図５に示したヘッド情報レジスタ３２としての機能は、図１３にて後述するごとくスケジューリング情報レジスタ６１に組み込まれている。
【００７８】
この動的スケジューリングを行なうディスクアレイ装置では、図１２に示すように、動的スケジューリング装置６が、図５にて前述したものと同様の汎用レジスタ３１，オーダリング・レジスタ３３，カウンタ３４，シーケンサ３５，演算ユニット３６およびＩ／Ｏレジスタ３７のほか、スケジューリング情報レジスタ６１を有して構成されている。
【００７９】
このスケジューリング情報レジスタ６１は、図１３にて後述する構成を有し、ヘッド位置情報とオーダリング・レジスタ３３に格納されているＩ／Ｏ命令の情報とを格納するものである。
また、図４にて前述したプライオリティ・レジスタ７もそなえられており、このプライオリティ・レジスタ７には、前述した通り、オーダリング・レジスタ３３に格納されているＩ／Ｏ命令に対し、優先的に実行すべきＩ／Ｏ命令が格納されるようになっている。
【００８０】
図１３はスケジューリング情報レジスタ６１の構成を示すもので、この図１３において、６１１は各磁気ディスク装置１０に対応するエントリ・フィールドであり、このエントリ・フィールド６１１は、各命令のトラック番号を格納するものである。また、６１２はＵ／ＤI ビットで、このＵ／ＤI ビット６１２は、ヘッドに対する命令対象のトラックの位置関係を表す情報を設定されるものである。なお、Ｕは“ＵＰ”（ヘッド位置よりもトラック番号が大きいこと）を示し、Ｄは“ＤＯＷＮ”（ヘッド位置よりもトラック番号が小さいこと）を示し、添字の“Ｉ”は、当該ビット６１２が命令（Instruction)に対応するものであることを示している。
【００８１】
また、６１３はヘッドのトラック番号（磁気ディスク装置１０上でのヘッド位置）を格納するフィールドであり、６１４はＵ／ＤH ビットで、このＵ／ＤH ビット６１４は、ヘッドの移動方向を示す設定されるものである。なお、Ｕは“ＵＰ”（現在のヘッド位置からトラック番号の大きい方向へ移動すること）を示し、Ｄは“ＤＯＷＮ”（現在のヘッド位置からトラック番号の小さい方向へ移動すること）を示し、添字の“Ｈ”は、当該ビット６１４がヘッド（Head）に対応するものであることを示している。
【００８２】
次に、上述のごとく構成された、本実施形態の動的スケジューリングを行なうディスクアレイ装置の動作について説明する。
本実施形態は、Ｉ／Ｏ命令の動的スケジューリングを除き、図５〜図１１により先に説明した静的スケジューリングを行なうディスクアレイ装置と同一の処理を行なう。本実施形態では、Ｉ／Ｏ命令のフェッチを要求するフェッチ・ユニット４１は、ＦＩＦＯバッファ２１からＩ／Ｏ命令を取り出すと、その命令を汎用レジスタ３１に格納する。Ｉ／Ｏ命令格納後、シーケンサ３５は、演算ユニット３６にスケジューリング処理の開始を指示する。
【００８３】
演算ユニット３６は、Ｉ／Ｏ命令のアクセスするトラック番号と、スケジューリング情報レジスタ６１内のヘッド番号６１３とを比較する。比較の結果、
（ａ）〔フィールド６１３のヘッドのトラック番号〕＞〔Ｉ／Ｏ命令のトラック番号〕の場合：当該Ｉ／Ｏ命令のＵ／ＤI ビット６１２＝Ｄ
（ｂ）〔フィールド６１３のヘッドのトラック番号〕＜〔Ｉ／Ｏ命令のトラック番号〕の場合：当該Ｉ／Ｏ命令のＵ／ＤI ビット６１２＝Ｕ
とする。
【００８４】
次に、先に求めた当該Ｉ／Ｏ命令のＵ／ＤI ビット６１２と、スケジューリング情報レジスタ６１上のＩ／Ｏ命令〔ｉ，ｊ〕（０≦ｉ≦ｍ−２）のＵ／ＤI ビット６１２とを比較する。このとき、
１．Ｕ／ＤI ビット６１２と一致する場合：
トラック番号〔ｉ，ｊ〕６１１と比較する。
【００８５】
（ａ）〔トラック番号〔ｉ，ｊ〕６１１〕＞〔当該Ｉ／Ｏ命令のトラック番号〕の時
・Ｕ／ＤI ＝Ｕならば、Ｉ／Ｏ命令〔ｉ，ｊ〕の前に、当該Ｉ／Ｏ命令をソートし、オーダリング・レジスタ３３に格納する。このときＩ／Ｏ命令〔０，ｊ〕であるならば、当該Ｉ／Ｏ命令は、プライオリティ・レジスタ７へ格納する。
【００８６】
・Ｕ／ＤI ＝Ｄならば、Ｉ／Ｏ命令〔ｉ＋１，ｊ〕に関して、再びＵ／ＤI ビット６１２の比較処理を行なう。
（ｂ）〔トラック番号〔ｉ，ｊ〕６１１〕＜〔当該Ｉ／Ｏ命令のトラック番号〕の時
・Ｕ／ＤI ＝Ｕならば、Ｉ／Ｏ命令〔ｉ＋１，ｊ〕に関して、再びＵ／ＤI ビット６１２の比較処理を行なう。
【００８７】
・Ｕ／ＤI ＝Ｄならば、Ｉ／Ｏ命令〔ｉ，ｊ〕の前に、当該Ｉ／Ｏ命令をソ            ートし、オーダリング・レジスタ３３に格納する。このときＩ／Ｏ命令〔０            ，ｊ〕であるならば、当該Ｉ／Ｏ命令は、プライオリティ・レジスタ７へ格            納する。
２．Ｕ／ＤI ビット６１２と一致しない場合：
Ｕ／ＤH ビット６１４を参照する。
【００８８】
・Ｕ／ＤH ビット６１４と一致するならば、Ｉ／Ｏ命令〔ｉ，ｊ〕の前に、当該Ｉ／Ｏ命令をソートし、オーダリング・レジスタ３３に格納する。
・Ｕ／ＤH ビット６１４と一致しなければ、Ｉ／Ｏ命令〔ｉ＋１，ｊ〕に関して、再びＵ／ＤH ビット６１４の比較処理を行なう。もし、スケジューリング情報レジスタ６１に格納されている最後のＩ／Ｏ命令であるならば、本命令をオーダリング・レジスタ３３の最後尾に登録する。
【００８９】
シーケンサ３５は、外部Ｉ／Ｆ３８を通じてアレイコントローラ１Ａから、Ｉ／Ｏ命令を転送するよう指示を受けると、演算ユニット３６に対して処理の開始を要求する。
演算ユニット３６は、プライオリティ・レジスタ７にＩ／Ｏ命令があれば、プライオリティ・レジスタ７から、そうでなければオーダリング・レジスタ３３からＩ／Ｏ命令を取り出し、Ｉ／Ｏレジスタ３７へ格納する。
【００９０】
シーケンサ３５の指示を受けた外部Ｉ／Ｆ３８は、Ｉ／Ｏレジスタ３７に格納されたＩ／Ｏ命令をアレイコントローラ１Ａに送信する。
このように、図１２〜図１４に示した実施形態のディスクアレイ装置によれば、図５〜図１１に示したものと同様に、各磁気ディスク装置１０においてアクセス要求のスケジューリングを行なうことによりシーク時間を削減でき、ディスクアレイ装置の性能（データ転送処理の高速化等の性能）が大幅に向上するとともに、元パリティ／元データのリードを非同期に行なうことが可能で、各磁気ディスク装置１０のスループットが大幅に向上する。
【００９１】
さらに、図１４（ａ）に示すように、静的スケジューリング時のヘッドのトラック移動距離を“DistanceS ”とすると、
Distances ＝leng(i) ＋leng(j) ＋leng(k)
であるが、図１４（ｂ）に示すように、動的スケジューリングを行なった時のヘッドのトラック移動距離を“DistanceD ”とすると、
DistanceD ＝leng(i) ＋leng(j)
となる。
【００９２】
つまり、動的スケジューリングを行なうことにより、Ｉ／Ｏ命令ｋに関するトラック移動距離は、“Distances −DistanceD （＝leng(k))”、シーク時間もＯ（leng(k))だけ削減される。
従って、Ｉ／Ｏ要求の動的スケジューリングにより、静的スケジューリング時に比べて、シーク時間がより削減され、磁気ディスク装置１０のサービス時間のさらなる改善を行なえ、データ転送処理の高速化等の性能をより一層向上させることができる。
【００９３】
【発明の効果】
以上詳述したように、本発明のディスクアレイ装置によれば、各ディスク装置への負荷分散に加え、各ディスク装置毎にスケジューリングが行なわれるので、各ディスク装置でのヘッドのシーク時間を短縮・削減して各ディスク装置のサービス時間が改善され、データ転送処理の高速化等の性能を大幅に向上できる効果がある。さらに、パリティ更新時の元データ／元パリティのリード処理時の同期をとる必要が無くなる、つまり、パリティ更新時の元データと元パリティとのリード処理を非同期に行なえるので、前述のように各ディスク装置毎にスケジューリングを行なった場合にそのスケジューリングの効果を損なうことがなく、各ディスク装置のスループットの向上を実現できる。
【００９４】
また、本発明のディスクアレイ装置によれば、リード命令をライト命令よりも優先的に実行することができ、リード／ライト命令混在実行時に比べてリード命令のレスポンス・タイムを大幅に短縮できるので、入出力要求を行なう上位装置（ホスト）側での待ち時間が改善され、上位装置側での処理性能向上にも寄与する。
【００９６】
そして、本発明のディスクアレイ装置によれば、各ディスク装置に対する入出力命令列の実行順序を動的に並び換えることが可能になり、ディスク装置のサービス時間のさらなる改善を行なえ、データ転送処理の高速化等の性能をより一層向上させることができる。
【図面の簡単な説明】
【図１】本発明の第１実施形態としてのディスクアレイ装置を示すブロック図である。
【図２】本発明の第２実施形態としてのディスクアレイ装置を示すブロック図である。
【図３】本発明の第３実施形態としてのディスクアレイ装置を示すブロック図である。
【図４】本発明の第４実施形態としてのディスクアレイ装置を示すブロック図である。
【図５】静的スケジューリングを行なうディスクアレイ装置の具体的な実施形態を示すブロック図である。
【図６】本実施形態におけるヘッド情報レジスタの構成を示す図である。
【図７】本実施形態におけるオーダリング・レジスタの構成を示す図である。
【図８】本実施形態におけるリザベーション・レジスタの構成を示す図である。
【図９】本実施形態におけるタグ・レジスタの構成を示す図である。
【図１０】（ａ），（ｂ）は本実施形態でのリード命令についてのレスポンス・タイムの短縮効果を従来と比較して示す図である。
【図１１】（ａ），（ｂ）は本実施形態でのパリティ更新処理時の非同期操作による効果を従来と比較して示す図である。
【図１２】動的スケジューリングを行なうディスクアレイ装置の具体的な実施形態を示すブロック図である。
【図１３】本実施形態のスケジューリング情報レジスタの構成を示す図である。
【図１４】（ａ），（ｂ）の本実施形態の動的スケジューリング実施時の効果を動的スケジューリングを実施しない場合と比較して示す図である。
【図１５】ＲＡＩＤ３型のディスクアレイ装置を説明するためのブロック図である。
【図１６】ＲＡＩＤ４型のディスクアレイ装置を説明するためのブロック図である。
【図１７】ＲＡＩＤ５型のディスクアレイ装置を説明するためのブロック図である。
【符号の説明】
１  アレイコントローラ
１Ａ  アレイコントローラ（タグ番号付与機能）
２  記憶装置（スケジューリング機能）
３，３Ａ，３Ｂ，３Ｃ  スケジューリング装置（スケジューリング機能）
４  命令デコード装置
５  パリティ制御装置（パリティ制御機能）
６  動的スケジューリング装置（動的スケジューリング機能）
７  プライオリティ・レジスタ
１０  磁気ディスク装置
２１  ＦＩＦＯバッファ
３１  汎用レジスタ
３２  ヘッド情報レジスタ
３３  オーダリング・レジスタ
３４  カウンタ
３５  シーケンサ
３６  演算ユニット
３７  Ｉ／Ｏレジスタ
３８  外部インタフェース
４１  フェッチ・ユニット
４２  デコード・ユニット
５１  リザベーション・レジスタ
５２  タグ・レジスタ
６１  スケジューリング情報レジスタ
【図１】
0003648311.tif 000004
【図２】
0003648311.tif 000005
【図３】
0003648311.tif 000006
【図４】
0003648311.tif 000007
【図５】
0003648311.tif 000008
【図６】
0003648311.tif 000009
【図７】
0003648311.tif 000010
【図８】
0003648311.tif 000011
【図９】
0003648311.tif 000012
【図１０】
0003648311.tif 000013
【図１１】
0003648311.tif 000014
【図１２】
0003648311.tif 000015
【図１３】
0003648311.tif 000016
【図１４】
0003648311.tif 000017
【図１５】
0003648311.tif 000018
【図１６】
0003648311.tif 000019
【図１７】
0003648311.tif 000020