JP3793682B2 - コマンドキューイングの機能を持つ記憶装置 - Google Patents

コマンドキューイングの機能を持つ記憶装置 Download PDF

Info

Publication number
JP3793682B2
JP3793682B2 JP2000067154A JP2000067154A JP3793682B2 JP 3793682 B2 JP3793682 B2 JP 3793682B2 JP 2000067154 A JP2000067154 A JP 2000067154A JP 2000067154 A JP2000067154 A JP 2000067154A JP 3793682 B2 JP3793682 B2 JP 3793682B2
Authority
JP
Japan
Prior art keywords
command
storage device
time
limit
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000067154A
Other languages
English (en)
Other versions
JP2001249770A (ja
Inventor
恭介 阿知和
孝夫 佐藤
豊 ▲高▼田
裕介 平川
Original Assignee
株式会社日立グローバルストレージテクノロジーズ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立グローバルストレージテクノロジーズ filed Critical 株式会社日立グローバルストレージテクノロジーズ
Priority to JP2000067154A priority Critical patent/JP3793682B2/ja
Publication of JP2001249770A publication Critical patent/JP2001249770A/ja
Application granted granted Critical
Publication of JP3793682B2 publication Critical patent/JP3793682B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、タグキューを有する記憶装置に関する。特に、処理の見込み時間等に応じてタグキュー上のコマンドの実行順序を変える記憶装置に関する。
【0002】
【従来の技術】
SCSI−2の規格ではコマンドのキューイング及びリオーダリングをサポートしている。コマンドのキューイングを行うことで、同一または複数のイニシエーターから発行された複数のI/O要求を受け付けてキューイングすることができる。また、ハードディスク装置ではリードライトヘッドのむだな移動時間が最小になるようにコマンドの実行順序を並び替える。このコマンドキューイング及びリオーダリングについては菅谷誠一著、CQ出版社、SCSI−2詳細解説の114〜116ページに解説がある。
【0003】
本発明に近い公知例としては、「ディスク装置における実行順最適化方式」松本他、特開平6−259198号公報(以降、公知例1と呼ぶ)がある。公知例1では、並び換えキューと待機キューの二つのコマンドキューを持ち、実行するコマンドは並び換えキューから選択し、新たに入ってくるコマンドは待機キューに入れ、並び換えキューが空になった時点で並び換えキューと待機キューを交換するようにすることで、コマンドの沈み込みを防止する技術が開示されている。
【0004】
【発明が解決しようとする課題】
ライトバックキャッシュ付きのディスクコントローラーにつながったコマンドキューイングの機能を持つディスクドライブを考える。ホストコンピューターから発行されたリードコマンドは、ディスクコントローラーのキャッシュ上に要求データが無い場合、ディスクドライブから要求データ読み出すまで終了しないため、ディスクドライブのリード処理はレスポンスが重要である。一方、ホストコンピューターから発行されたライトコマンドはディスクコントローラーのキャッシュにデータを書き込んで終了報告を行った時点で完了し、キャッシュ上に書き込んだデータをディスクドライブに書き出す処理のレスポンスは重要ではなく、むしろ1秒間にキャッシュ上のどれだけのデータをディスクドライブに書き出せるかというスループットが重要である。このようにリードとライトでは要求されるレスポンス・スループットに違いがあるのにもかかわらず、レスポンスが要求されないライトコマンドにまでリードコマンドと同じように沈み込み防止を行っており、全体のスループットを低下させているという問題があった。
【0005】
本発明の目的はリードコマンドのレスポンスを確保しつつ、全体のスループットをあまり低下させない記憶装置を提供することである。
【0006】
【課題を解決するための手段】
上記目的を達成するために、沈み込み防止策をリードコマンドにのみ適用する。
【0007】
また、上記目的を達成するために、リードコマンドとライトコマンドで別に沈み込み防止策を適用し、リードコマンドをより沈み込みにくくする。
【0008】
具体的な沈み込み防止策2種類について、以下で説明する。
【0009】
あるコマンドより後から受領したコマンドに追い越される回数の制限を設け、制限回数分のコマンドに追い越されたら、当該コマンドを優先的に実行する。
【0010】
各コマンドが受領した時刻を管理し、受領してから一定時間以上実行されていないコマンドがあったら、そのコマンドを優先的に実行する。
【0011】
【発明の実施の形態】
(第1の実施例)
図1は本発明を適用するコンピューターシステム1200を示す。コンピューターシステム1200はI/O要求を発行するホストコンピューター1010、I/O要求を処理する記憶装置システム1210から構成される。
【0012】
記憶装置システム1210はI/O要求を受け付ける記憶装置コントローラー1000、データを格納している記憶装置1100から構成される。
【0013】
記憶装置コントローラー1000は、ホストコンピューター1010とのやりとりを行うホストインターフェース1030、記憶装置1100とのやりとりを行うFCインターフェース1070、記憶装置コントローラー1000を管理するCPU1020、ホストコンピューター1010からのライトデータを一時的に格納するキャッシュ1050、CPU1020が実行するプログラムやキャッシュ1050の管理データ等を格納するメモリ1060、ユーザーが記憶装置1100あるいは記憶装置コントローラー1000に対する各種パラメーターを入力するサービスボード1040から構成される。
【0014】
記憶装置1100は、記憶装置コントローラー1000とのやりとりを行うFCインターフェース1080、データが格納されているディスク1090、ディスク1090を制御するディスクコントローラー1110、受領したI/O要求を解釈しディスクコントローラー1110に指示するCPU1120、CPU1120が実行するプログラムやデータを格納するメモリ1130より構成される。ディスク1090は本実施例ではハードディスクを想定しているが、MO、CD−RW等でも本発明を適用可能である。
【0015】
図2は記憶装置1100上のメモリ1130に格納されているコマンド管理テーブル1500である。コマンド管理テーブル1500は複数のコマンド管理テーブルエントリ1510からなる。コマンド管理テーブル1500は記憶装置1100が受領したI/O要求を管理するテーブルで、I/O1個につき一つのコマンド管理テーブルエントリ1510が用意される。
【0016】
コマンド管理テーブルエントリ1510は、当該エントリの有効・無効を表す有効無効フラグ1520、I/O要求(以下、コマンドと呼ぶ)がリードかライトかを意味するリードライト種別1530、要求データの格納アドレスを表すLBA1540、要求データの長さを表すサイズ1550、当該I/O要求がそれより後から来たコマンドに何回追い越されたかを意味する追い越されカウンター1560、ディスク1090の現在のヘッド位置から当該コマンドを処理するのにかかる見込み時間を表す見込み処理時間1570、後述するタグキュー2060を構成する前方ポインター1580と後方ポインター1590より構成される。
【0017】
図3は記憶装置1100およびディスク1090の状態を管理するドライブ管理テーブル2000である。ドライブ管理テーブル2000は、リードコマンドに対して追い越され回数の限度を規定する制限回数A2010、リードライトコマンド両方に対して追い越され回数の限度を規定する制限回数B2020、ディスク1090の現在のヘッド位置2030、後述するタグキュー2060を構成するMRUポインタ2040とLRUポインタ2050から構成される。ここで、制限回数A2010は制限回数B2020よりも小さいか、制限回数A2010のみが有効であるとする。
【0018】
図4は記憶装置1100が持つタグキュー2060の概念図である。MRUポインタ2040とLRUポインタ2050がタグキュー2060の両端であり、コマンド管理テーブルエントリ1510が前方ポインタ1580と後方ポインタ1590で双方向につながっている。記憶装置1100が受け取ったコマンドはMRU位置につながれ、ディスク1090が実行するコマンドはキュー上のすべてのコマンドから条件を考慮して一つが選ばれる。MRU位置に近づく方を前、LRU位置に近づく方を後と定義する。タグキュー2060上のコマンドから一つ選ぶ処理は本実施例では後述する次コマンド決定処理4000である。
【0019】
図5は記憶装置1100が記憶装置コントローラー1000からコマンドを受領したときにCPU1120が実行するコマンド受領処理3000のフローチャートを示す。まずステップ3010で記憶装置1100はFCインターフェース1080を通じてコマンドを受領する。次にステップ3020においてCPU1120は受領したコマンドがリードかライト、あるいはそれ以外かを判定し、それ以外と判定されたらステップ3080にジャンプする。リードかライトと判定されたらステップ3030において、コマンド管理テーブルエントリ1510の有効無効フラグ1520が無効のものを探し、ステップ3040で見つけた空きコマンド管理テーブルエントリ1510の有効無効フラグ1520を有効とし、リードライト種別1530、LBA1540、サイズ1550を受領したコマンドに合わせてセットし、追い越されカウンター1560をゼロで、見込み処理時間を無効を意味する−1で初期化する。そしてステップ3050において、タグキュー2060のMRU位置に当該エントリを繋ぐ。そしてステップ3060でディスク1090が何らかのコマンドを実行中であるかどうかを判定し、実行中であればコマンド受領処理3000は終了する。実行中でなければステップ3070で当該コマンドの実行を開始し、コマンド受領処理3000は終了する。
【0020】
ステップ3020でリードでもライトでもないと判定された場合にはステップ3080において、受領したコマンドが制限回数をセットするコマンドであるかどうかを判定する。制限回数をセットするコマンドであったら、ステップ3090において、制限回数A2010と制限回数B2020をセットし、コマンド受領処理3000は終了する。制限回数をセットするコマンドでもなかったら、ステップ3100でその他のコマンドに対する処理を行い、コマンド受領処理3000は終了する。その他のコマンドに対する処理は本発明とは関係がないので説明は省略する。制限回数をセットするコマンドは、たとえばSCSIのモードセレクトコマンドで実現可能である。
【0021】
図6はディスク1090でコマンドが終了したときにCPU1120が実行するコマンド完了処理3500のフローチャートを示す。まずステップ3510において、ディスク1090がコマンドの実行を完了し、それをディスクコントローラー1110が検出してCPU1120に報告する。そしてステップ3520でCPU1120はFCインターフェース1080を経由して記憶装置コントローラー1000にコマンドの完了報告を行う。完了報告を受け取った記憶装置コントローラー1000は完了報告のあったコマンドがリードであればホストコンピューター1010に完了報告を行う。そしてステップ3530においてCPU1020は完了報告のあったコマンドに対応するコマンド管理テーブルエントリ1510をタグキュー2060から抜き、ステップ3540で当該コマンド管理テーブルエントリ1510の有効無効フラグ1520を無効とする。次にステップ3550において、未実行のリードコマンドかライトコマンドがタグキュー2060上に残っているかどうかを判定し、残っていなければコマンド完了処理3500は終了する。まだ残っていれば、ステップ4000において後述する次コマンド決定処理4000を行い、ステップ3570で決定したコマンドの実行をディスクコントローラー1110を経由してディスク1090に指示し、コマンド完了処理3500は終了する。
【0022】
図7は次コマンド決定処理4000のフローチャートを示す。まずステップ4010でタグキュー2060のLRU位置にあるコマンドを選択し、ステップ4020で次実行候補とし、ステップ4030でそのコマンドの見込み処理時間を計算し、見込み処理時間1570にセットする。見込み処理時間の計算は、シーク距離と回転待ち時間、媒体アクセス時間より算出するのが望ましいが、本実施例では簡便にするため、LBA1540とヘッド位置2030の差の絶対値を見込み処理時間の近似値として用いることにする。次にステップ4040で、制限回数B2020が有効かつ当該コマンドの追い越されカウンター1560が制限回数B2020より大きいかどうかを判定し、大きければ4110にジャンプする。大きくなければステップ4050で、制限回数A2010が有効かつ当該コマンドのリードライト種別1530がリードかつ当該コマンドの追い越されカウンター1560が制限回数A2010よりも大きいかどうかを判定し、そうであればステップ4110にジャンプし、そうでなければステップ4060で当該コマンドの前方ポインタ1580を見てまだコマンドがあるかどうかを判定する。無いと判定されたらステップ4120にジャンプし、あると判定されたらステップ4070で当該コマンドの前方ポインタ1580が示すコマンドを選択し、これ以降そのコマンドを当該コマンドとする。そしてステップ4080で当該コマンドの見込み処理時間を計算し、見込み処理時間1570にセットし、ステップ4090で当該コマンドの見込み処理時間1570と次実行候補コマンドの見込み処理時間1570を比較し、当該コマンドの見込み処理時間1570の方が小さければ、ステップ4100で当該コマンドを次実行候補コマンドとしてステップ4040へジャンプし、小さくなければステップ4100を行わずにステップ4040にジャンプする。
【0023】
ステップ4110では当該コマンドを次実行候補のコマンドとし、ステップ4120で次実行候補コマンドを次実行コマンドとして決定し、ステップ4130でヘッド位置2030に次実行コマンドのLBA1540にサイズ1550を加えた値を代入し、ステップ4140で次実行コマンドの後方ポインタ1590を辿って、次実行コマンドよりもタグキュー2060のLRU位置に近いコマンドの追い越されカウンター1560全てに1を加え、次コマンド決定処理4000は終了する。
【0024】
ここで、制限回数A2010の方が制限回数B2020よりも小さい、あるいは、制限回数A2010のみが有効な場合について考えると、ステップ4050よりリードコマンドはライトコマンドよりも少ない追い越されカウンター1560の値で次実行コマンドになるため、リードコマンドは応答時間の最悪値が軽減される。ただし、制限回数A2010のみが有効である場合は、ライトコマンドの実行時間が非常に遅くなる可能性があるため、記憶装置コントローラー1000でのタイムアウト値を非常に大きくとるか、タイムアウトをライトコマンドには適用しないか、他のコマンドの終了に応じてタイムアウト時間を伸ばす等の対応を行う必要がある。また、制限回数A2010や制限回数B2020の値によっては、ライトコマンドだけではなく、リードコマンドに対しても同様に、タイムアウトを適用しないか、他のコマンドの終了に応じてタイムアウト時間を伸ばす等の対応を行う必要がある。
【0025】
図8はユーザーがサービスボード1040から制限回数を入力したときに記憶装置コントローラー1000内のCPU1020で実行される制限回数設定処理4500のフローチャートである。まずステップ4510でユーザーがサービスボード1040より2種類の制限回数を入力する。そしてステップ4520でメモリ1060上に制限回数セットコマンドを作成する。制限回数セットコマンドは入力された2種類の制限回数を記憶装置1100に渡すためのコマンドで、例えばSCSIのモードセレクトコマンドを用いて実現できる。そしてステップ4530でFCインターフェース1070を通じて記憶装置1100に制限回数セットコマンドを発行し、制限回数設定処理4500は終了する。
【0026】
図9はホストコンピューター1010が記憶装置コントローラー1000にリードコマンドあるいはライトコマンドを発行したときに、記憶装置コントローラー1000上のCPU1020が実行する同期コマンド処理5000のフローチャートである。まずステップ5010でホストインターフェース1030を経由してコマンドを受け取る。そしてステップ5020で受領したコマンドがリードであるかどうかを判定し、リードでなければステップ5070にジャンプする。リードであればステップ5030でキャッシュ1050上に要求データがあるかどうかを判定し、あると判定されたらステップ5060にジャンプし、なければステップ5040で記憶装置1100にリード要求を発行する。そしてステップ5050で記憶装置1100からのリードデータをキャッシュ1050上に格納し、ステップ5060でキャッシュ1050上の要求データをホストインターフェース1030経由でホストコンピューター1010に転送し、ステップ5080でホストコンピューター1010に当該コマンドの完了報告を行って、同期コマンド処理5000は終了する。
【0027】
ステップ5030でリードでないと判定された場合にはステップ5070で、ホストコンピューター1010からのライトデータをホストインターフェース1030経由でキャッシュ1050上に受け取り、すぐにステップ5090でホストコンピューター1010に対して当該ライトコマンドの完了報告を行う。そして、ステップ5100で記憶装置1100に対してキャッシュ1050上の未反映データをライトするためにライト要求を記憶装置1100に発行し、ステップ5110でライトデータを記憶装置1100に転送して同期コマンド処理5000は終了する。
【0028】
ここで、本実施例では簡便化のためにホストコンピューター1010から発行されるコマンドはリード・ライトのみと仮定している。
【0029】
ここで、制御装置コントローラー1000が複数のリード・ライトコマンドを同時に処理できるように、CPU1020ではマルチタスクのオペレーティングシステムが動いていて、同期コマンド処理5000や制限回数設定処理4500はタスクとして実行されるものとする。
【0030】
以上より、ホストコンピューター1010にとって、リードコマンドはキャッシュ1050上に要求データが無い場合には記憶装置1100から要求データがリードされるのを待つ必要があるが、ライトコマンドはキャッシュ1050にデータをライトした時点で完了報告を受け取るので、記憶装置1100が実際にデータをディスク1090に書き込むのを待つ必要はない。そのため、記憶装置1100で実行されるリードコマンドはスループットと同時に応答時間の最悪値も重要な性能指標となるが、記憶装置1100で実行されるライトコマンドはスループットだけを考慮すればよく、応答時間の最悪値は特に意識する必要が無いことになる。
【0031】
これに対して、次コマンド決定処理4000のステップ4050があることで、制限回数B2020の
値が無効であるか、制限回数A2010が制限回数B2020よりも小さい場合には、リードコマンドはライトコマンドよりも少ない回数ぶん追い越されたら優先的に実行されることになるため、リードコマンドの応答時間を保証しつつ、ライトはリードほど応答時間の最悪値を制限しないことで、全体のスループットを確保することができる。
【0032】
(第2の実施例)
第1の実施例ではコマンドの追い越され回数が制限回数A2010あるいは制限回数B2020を超えたとたんに現在のヘッド位置を考慮せずに優先実行されてしまうため、追い越され制限のスループットに対する影響が大きかった。
【0033】
第2の実施例では、追い越されカウンター1560の値に応じてそのコマンドが実行されやすいようにすることで、追い越されカウンター1560が制限回数A2010または制限回数B2020を超えにくくし、追い越され制限のスループットに対する影響を少なくする。
【0034】
以下、第1の実施例と異なる部分のみを説明する。
【0035】
図10は次コマンド決定処理A4001のフローチャートである。本実施例では第1の実施例での次コマンド決定処理4000の代わりに次コマンド決定処理A4001を実行する。
【0036】
まずステップ4010でタグキュー2060のLRU位置にあるコマンドを選択し、ステップ4020で次実行候補とし、ステップ4160で第1の実施例と同様にして当該コマンドの見込み処理時間を計算し、補正を加え、見込み処理時間1570にセットする。補正は当該コマンドがリードであれば、当該コマンドの追い越されカウンター1560の値を制限回数A2010と制限回数B2020のどちらか小さい方の値で割ったものを見込み処理時間にかけることとし、ライトであれば、当該コマンドの追い越されカウンター1560の値を制限回数B2020の値で割ったものを見込み処理時間にかけることとする。制限回数B2020の値が無効の場合はライトに対する補正は行わない。これにより、追い越されカウンター1560の値が大きくなるほど見込み処理時間1570の値は実際の処理時間の見込み値よりも小さくなり、当該コマンドが実行される可能性が高くなる。次にステップ4040で、制限回数B2020が有効かつ当該コマンドの追い越されカウンター1560が制限回数B2020より大きいかどうかを判定し、大きければ4110にジャンプする。大きくなければステップ4050で、制限回数A2010が有効かつ当該コマンドのリードライト種別1530がリードかつ当該コマンドの追い越されカウンター1560が制限回数A2010よりも大きいかどうかを判定し、そうであればステップ4110にジャンプし、そうでなければステップ4060で当該コマンドの前方ポインタ1580を見てまだコマンドがあるかどうかを判定する。無いと判定されたらステップ4120にジャンプし、あると判定されたらステップ4070で当該コマンドの前方ポインタ1580が示すコマンドを選択し、これ以降そのコマンドを当該コマンドとする。そしてステップ4150で当該コマンドの見込み処理時間を計算し、ステップ4160と同様にして補正を加え、見込み処理時間1570にセットする。補正は当該コマンドがリードであれば、当該コマンドの追い越されカウンター1560の値を制限回数A2010と制限回数B2020のどちらか小さい方の値で割ったものをステップ4150で求めた見込み処理時間にかけることとし、ライトであれば、当該コマンドの追い越されカウンター1560の値を制限回数B2020の値で割ったものをステップ4150で求めた見込み処理時間にかけることとする。これにより、追い越されカウンター1560の値が大きくなるほど見込み処理時間1570の値は実際の処理時間の見込み値よりも小さくなり、当該コマンドが実行される可能性が高くなる。そして、ステップ4090で当該コマンドの見込み処理時間1570と次実行候補コマンドの見込み処理時間1570を比較し、当該コマンドの見込み処理時間1570の方が小さければ、ステップ4100で当該コマンドを次実行候補コマンドとしてステップ4040へジャンプし、小さくなければステップ4100を行わずにステップ4040にジャンプする。
【0037】
ステップ4110では当該コマンドを次実行候補のコマンドとし、ステップ4120で次実行候補コマンドを次実行コマンドとして決定し、ステップ4130でヘッド位置2030に次実行コマンドのLBA1540にサイズ1550を加えた値を代入し、ステップ4140で次実行コマンドの後方ポインタ1590を辿って、次実行コマンドよりもタグキュー2060のLRU位置に近いコマンドの追い越されカウンター1560全てに1を加え、次コマンド決定処理A4001は終了する。
【0038】
(第3の実施例)
第1の実施例、第2の実施例では後から来たコマンドに追い越される回数を制限してレスポンスの最悪値を保証していたが、第3の実施例では、コマンドが実行されずにタグキューに繋がっている時間の最大値を指定してレスポンスの最悪値を保証する。以下、第1の実施例と異なる部分についてのみ説明する。
【0039】
図11は本発明を適用するコンピューターシステムA1220を示す。コンピューターシステムA1220はI/O要求を発行するホストコンピューター1010、I/O要求を処理する記憶装置システムA1230から構成される。
【0040】
記憶装置システムA1230はI/O要求を受け付ける記憶装置コントローラー1000、データを格納している記憶装置A1101から構成される。
【0041】
記憶装置コントローラー1000は、ホストコンピューター1010とのやりとりを行うホストインターフェース1030、記憶装置1100とのやりとりを行うFCインターフェース1070、記憶装置コントローラー1000を管理するCPU1020、ホストコンピューター1010からのライトデータを一時的に格納するキャッシュ1050、CPU1020が実行するプログラムやキャッシュ1050の管理データ等を格納するメモリ1060、ユーザーが記憶装置1100あるいは記憶装置コントローラー1000に対する各種パラメーターを入力するサービスボード1040から構成される。
【0042】
記憶装置A1101は、記憶装置コントローラー1000とのやりとりを行うFCインターフェース1080、データが格納されているディスク1090、ディスク1090を制御するディスクコントローラー1110、受領したI/O要求を解釈しディスクコントローラー1110に指示するCPU1120、CPU1120が実行するプログラムやデータを格納するメモリ1130、タイマー1140より構成される。ディスク1090は本実施例ではハードディスクを想定しているが、MO、CD−RW等でも本発明を適用可能である。
【0043】
図12は記憶装置A1101上のメモリ1130に格納されているコマンド管理Aテーブル1501である。コマンド管理テーブルA1501は複数のコマンド管理テーブルエントリA1511からなる。コマンド管理テーブルA1501は記憶装置A1101が受領したI/O要求を管理するテーブルで、I/O1個につき一つのコマンド管理テーブルエントリA1511が用意される。
【0044】
コマンド管理テーブルエントリA1511は、当該エントリの有効・無効を表す有効無効フラグ1520、I/O要求(以下、コマンドと呼ぶ)がリードかライトかを意味するリードライト種別1530、要求データの格納アドレスを表すLBA1540、要求データの長さを表すサイズ1550、当該コマンドの受領時刻1600、ディスク1090の現在のヘッド位置から当該コマンドを処理するのにかかる見込み時間を表す見込み処理時間1570、タグキュー2060を構成する前方ポインター1580と後方ポインター1590より構成される。
【0045】
図13は記憶装置A1101およびディスク1090の状態を管理するドライブ管理テーブルA2100である。ドライブ管理テーブルA2100は、リードコマンドに対してタグキュー2060上に存在する時間の限度を規定する制限時間A2060、リードライトコマンド両方に対してタグキュー2060上に存在する時間の限度を規定する制限時間B2070、ディスク1090の現在のヘッド位置2030、タグキュー2060を構成するMRUポインタ2040とLRUポインタ2050から構成される。ここで、制限時間A2060は制限時間B2070よりも小さいか、制限時間A2060のみが有効であるとする。
【0046】
図14は記憶装置1101が記憶装置コントローラー1000からコマンドを受領したときにCPU1120が実行するコマンド受領処理A3200のフローチャートを示す。まずステップ3010で記憶装置1100はFCインターフェース1080を通じてコマンドを受領する。次にステップ3020においてCPU1120は受領したコマンドがリードかライト、あるいはそれ以外かを判定し、それ以外と判定されたらステップ3110にジャンプする。リードかライトと判定されたらステップ3030において、コマンド管理テーブルエントリA1511の有効無効フラグ1520が無効のものを探し、ステップ3040で見つけた空きコマンド管理Aテーブルエントリ1511の有効無効フラグ1520を有効とし、リードライト種別1530、LBA1540、サイズ1550を受領したコマンドに合わせてセットし、タイマー1140の値を受領時刻1600にセットし、見込み処理時間を無効を意味する−1で初期化する。そしてステップ3050において、タグキュー2060のMRU位置に当該エントリを繋ぐ。そしてステップ3060でディスク1090が何らかのコマンドを実行中であるかどうかを判定し、実行中であればコマンド受領処理A3200は終了する。実行中でなければステップ3070で当該コマンドの実行を開始し、コマンド受領処理A3200は終了する。
【0047】
ステップ3020でリードでもライトでもないと判定された場合にはステップ3110において、受領したコマンドが制限時刻をセットするコマンドであるかどうかを判定する。制限時刻をセットするコマンドであったら、ステップ3120において、制限時刻A2060と制限時刻B2070をセットし、コマンド受領処理A3200は終了する。制限時刻をセットするコマンドでもなかったら、ステップ3100でその他のコマンドに対する処理を行い、コマンド受領処理A3200は終了する。その他のコマンドに対する処理は本発明とは関係がないので説明は省略する。制限時刻をセットするコマンドは、たとえばSCSIのモードセレクトコマンドで実現可能である。
【0048】
図15に次コマンド決定処理B4002のフローチャートを示す。まずステップ4010でタグキュー2060のLRU位置にあるコマンドを選択し、ステップ4020で次実行候補とし、ステップ4030でそのコマンドの見込み処理時間を計算し、見込み処理時間1570にセットする。見込み処理時間の計算は、シーク距離と回転待ち時間、媒体アクセス時間より算出するのが望ましいが、本実施例では簡便にするため、LBA1540とヘッド位置2030の差の絶対値を見込み処理時間の近似値として用いることにする。次にステップ4170で、制限時間B2070が有効かつ現在のタイマー1140の値から当該コマンドの受領時刻1600を引いた値が制限時刻B2070より大きいかどうかを判定し、大きければ4110にジャンプする。大きくなければステップ4180で、制限時間A2060が有効かつ当該コマンドのリードライト種別1530がリードかつ現在のタイマー1140の値から当該コマンドの受領時刻1600を引いた値が制限時間A2060よりも大きいかどうかを判定し、そうであればステップ4110にジャンプし、そうでなければステップ4060で当該コマンドの前方ポインタ1580を見てまだコマンドがあるかどうかを判定する。無いと判定されたらステップ4120にジャンプし、あると判定されたらステップ4070で当該コマンドの前方ポインタ1580が示すコマンドを選択し、これ以降そのコマンドを当該コマンドとする。そしてステップ4080で当該コマンドの見込み処理時間を計算し、見込み処理時間1570にセットし、ステップ4090で当該コマンドの見込み処理時間1570と次実行候補コマンドの見込み処理時間1570を比較し、当該コマンドの見込み処理時間1570の方が小さければ、ステップ4100で当該コマンドを次実行候補コマンドとしてステップ4170へジャンプし、小さくなければステップ4100を行わずにステップ4170にジャンプする。
【0049】
ステップ4110では当該コマンドを次実行候補のコマンドとし、ステップ4120で次実行候補コマンドを次実行コマンドとして決定し、ステップ4130でヘッド位置2030に次実行コマンドのLBA1540にサイズ1550を加えた値を代入し、次コマンド決定処理B4002は終了する。
【0050】
ここで、制限時間A2060の方が制限時間B2070よりも小さい、あるいは、制限時間A2060のみが有効な場合について考えると、ステップ4180よりリードコマンドはライトコマンドよりも小さな制限時間で次実行コマンドになるため、リードコマンドは応答時間の最悪値が軽減される。ただし、制限時間A2060のみが有効である場合は、ライトコマンドの実行時間が非常に遅くなる可能性があるため、記憶装置コントローラー1000でのタイムアウト値を非常に大きくとるか、タイムアウトをライトコマンドには適用しないか、他のコマンドの終了に応じてタイムアウト時間を伸ばす等の対応を行う必要がある。また、制限時間A2060や制限時間B2070の値によっては、ライトコマンドだけではなく、リードコマンドに対しても同様に、タイムアウトを適用しないか、他のコマンドの終了に応じてタイムアウト時間を伸ばす等の対応を行う必要がある。
【0051】
図16はユーザーがサービスボード1040から制限時間を入力したときに記憶装置コントローラー1000内のCPU1020で実行される制限時間設定処理4600のフローチャートである。まずステップ4610でユーザーがサービスボード1040より2種類の制限時間を入力する。そしてステップ4620でメモリ1060上に制限時間セットコマンドを作成する。制限時間セットコマンドは入力された2種類の制限時間を記憶装置A1101に渡すためのコマンドで、例えばSCSIのモードセレクトコマンドを用いて実現できる。そしてステップ4630でFCインターフェース1070を通じて記憶装置A1101に制限時間セットコマンドを発行し、制限時間設定処理4600は終了する。
【0052】
本実施例でも第1の実施例と同様にして、次コマンド決定処理B4002のステップ4180があることで、制限時間B2070の値が無効であるか、制限時間A2060が制限回数B2070よりも小さい場合には、リードコマンドはライトコマンドよりもコマンドキュー上にいる時間が少ない値で優先的に実行されることになり、つまり、リードコマンドの応答時間の最悪値はライトコマンドに比べて小さくなることが期待できる。
【0053】
(第4の実施例)
第3の実施例ではコマンドがコマンドキュー上に繋がっている時間が制限時間A2060あるいは制限時間B2070を超えたとたんに現在のヘッド位置を考慮せずに優先実行されてしまうため、制限時間のスループットに対する影響が大きかった。
【0054】
第4の実施例では、現在のタイマー1140の値から受領時刻1600を引いたの値に応じてそのコマンドが実行されやすいようにすることで、現在のタイマー1140の値から受領時刻1600を引いたの値が制限時間A2060または制限時間B2070を超えにくくし、制限時間のスループットに対する影響を少なくする。
【0055】
以下、第3の実施例と異なる部分のみを説明する。
【0056】
図17は次コマンド決定処理C4003のフローチャートである。本実施例では第3の実施例での次コマンド決定処理B4002の代わりに次コマンド決定処理C4003を実行する。
【0057】
まずステップ4010でタグキュー2060のLRU位置にあるコマンドを選択し、ステップ4020で次実行候補とし、ステップ4200で第3の実施例と同様にして当該コマンドの見込み処理時間を計算し、補正を加え、見込み処理時間1570にセットする。補正は当該コマンドがリードであれば、現在のタイマー1140の値から当該コマンドの受領時刻1600を引いた値を制限時間A2060と制限時間B2070のどちらか小さい方の値で割ったものをステップ4190で求めた見込み処理時間にかけることとし、ライトであれば、現在のタイマー1140の値から当該コマンドの受領時刻1600を引いたの値を制限時間B2070の値で割ったものをステップ4190で求めた見込み処理時間にかけることとする。これにより、現在のタイマー1140の値から当該コマンドの受領時刻1600を引いた値が大きくなるほど見込み処理時間1570の値は実際の処理時間の見込み値よりも小さくなり、当該コマンドが実行される可能性が高くなる。
【0058】
次にステップ4170で、制限時間B2070が有効かつ現在のタイマー1140の値から当該コマンドの受領時刻1600を引いた値が制限時刻B2070より大きいかどうかを判定し、大きければ4110にジャンプする。大きくなければステップ4180で、制限時間A2060が有効かつ当該コマンドのリードライト種別1530がリードかつ現在のタイマー1140の値から当該コマンドの受領時刻1600を引いた値が制限時間A2060よりも大きいかどうかを判定し、そうであればステップ4110にジャンプし、そうでなければステップ4060で当該コマンドの前方ポインタ1580を見てまだコマンドがあるかどうかを判定する。無いと判定されたらステップ4120にジャンプし、あると判定されたらステップ4070で当該コマンドの前方ポインタ1580が示すコマンドを選択し、これ以降そのコマンドを当該コマンドとする。そしてステップ4190で当該コマンドの見込み処理時間を計算し、ステップ4200で、求めた見込み処理時間にステップ4200と同様にして補正を加え、見込み処理時間1570にセットする。そして、ステップ4090で当該コマンドの見込み処理時間1570と次実行候補コマンドの見込み処理時間1570を比較し、当該コマンドの見込み処理時間1570の方が小さければ、ステップ4100で当該コマンドを次実行候補コマンドとしてステップ4170へジャンプし、小さくなければステップ4100を行わずにステップ4170にジャンプする。
【0059】
ステップ4110では当該コマンドを次実行候補のコマンドとし、ステップ4120で次実行候補コマンドを次実行コマンドとして決定し、ステップ4130でヘッド位置2030に次実行コマンドのLBA1540にサイズ1550を加えた値を代入し、次コマンド決定処理C4003は終了する。
【0060】
【発明の効果】
本発明によって、リードコマンドの応答時間の最悪値を保証しつつ、スループットの低下を最小限に抑えることができる。
【図面の簡単な説明】
【図1】本発明を適用するコンピューターシステムを示す図である。
【図2】コマンド管理テーブルとそのエントリを示す図である。
【図3】ドライブ管理テーブルを示す図である。
【図4】タグキューのイメージ図である。
【図5】コマンド受領処理のフローチャートである。
【図6】コマンド完了処理のフローチャートである。
【図7】次コマンド決定処理のフローチャートである。
【図8】制限回数設定処理のフローチャートである。
【図9】同期コマンド処理のフローチャートである。
【図10】第2の実施例に対応する次コマンド決定処理Aのフローチャートである。
【図11】第3の実施例に対応するコンピューターシステムAを示す図である。
【図12】第3の実施例に対応するコマンド管理テーブルAとそのエントリを示す図である。
【図13】第3の実施例に対応するドライブ管理テーブルAを示す図である。
【図14】第3の実施例に対応するコマンド受領処理Aのフローチャートである。
【図15】第3の実施例に対応する次コマンド決定処理Bのフローチャートである。
【図16】第3の実施例に対応する制限時間設定処理のフローチャートである。
【図17】第4の実施例に対応する次コマンド決定処理Cのフローチャートである。
【符号の説明】
1200…コンピューターシステム、1210…記憶装置システム、1010…ホストコンピューター、1000…記憶装置コントローラー、1040…サービスボード、1100…記憶装置、1090…ディスク、1120…CPU、1130…メモリ、1110…ディスクコントローラー、1500…コマンド管理テーブル、1510…コマンド管理テーブルエントリ、1560…追い越されカウンター、2000…ドライブ管理テーブル、2010…制限回数A、2020…制限回数B、2030…ヘッド位置。

Claims (10)

  1. コマンドキューイングの機能を有し、コマンドを受領した順番で実行しないことがあり、後から来たコマンドに追い越される回数を制限する機能を有する記憶装置であって、
    追い越される回数の制限数を二つ以上用意し、リードコマンドとライトコマンドで別々の値を適用する機能を有することを特徴とする記憶装置。
  2. 請求項1記載の記憶装置と記憶装置を制御する記憶装置制御装置からなる記憶装置システムであって、前記記憶装置制御装置から前記記憶装置に前記追い越される回数の制限数として二つまたはそれ以上を設定することを特徴とする記憶装置システム。
  3. 請求項2記載の記憶装置システムであって、ユーザーが前記記憶装置制御装置から前記追い越される回数の制限数として二つまたはそれ以上を入力する機能を有することを特徴とする記憶装置システム。
  4. コマンドキューイングの機能を有し、コマンドを受領した順番で実行しないことがあり、後から来たコマンドに追い越される回数を制限する機能を有する記憶装置であって、
    次に実行するコマンドを決定するにあたって、コマンドキュー上の各コマンドの実行にかかる見込み時間を計算し、当該コマンドよりも後から受領したコマンドに追い越された回数を元に前記見込み時間を補正し、得られた値を比較することを特徴とする記憶装置。
  5. 請求項記載の記憶装置と、記憶装置を制御する記憶装置制御装置からなる記憶装置システム。
  6. コマンドキューイングの機能を有し、コマンドを受領した順番で実行しないことがあり、コマンドの処理時間を制限する機能を有する記憶装置であって、
    コマンドキュー上に繋がっている時間の上限を二つ以上用意し、リードコマンドとライトコマンドで別々の値を適用する機能を有することを特徴とする記憶装置。
  7. 請求項記載の記憶装置と記憶装置を制御する記憶装置制御装置からなる記憶装置システムであって、前記記憶装置制御装置から前記記憶装置にコマンドの処理時間の上限として二つまたはそれ以上を設定することを特徴とする記憶装置システム。
  8. 請求項記載の記憶装置システムであって、ユーザーが前記記憶装置制御装置からコマンドの処理時間の上限として二つまたはそれ以上を入力する機能を有することを特徴とする記憶装置システム。
  9. コマンドキューイングの機能を有し、コマンドを受領した順番で実行しないことがあり、コマンドの処理時間を制限する機能を有する記憶装置であって、
    次に実行するコマンドを決定するにあたって、コマンドキュー上の各コマンドの実行にかかる見込み時間を計算し、当該コマンドがコマンドキュー上に繋がっている時間を元に前記見込み時間を補正し、得られた値を比較することを特徴とする記憶装置。
  10. 請求項記載の記憶装置と、記憶装置を制御する記憶装置制御装置からなる記憶装置システム。
JP2000067154A 2000-03-07 2000-03-07 コマンドキューイングの機能を持つ記憶装置 Expired - Fee Related JP3793682B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000067154A JP3793682B2 (ja) 2000-03-07 2000-03-07 コマンドキューイングの機能を持つ記憶装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000067154A JP3793682B2 (ja) 2000-03-07 2000-03-07 コマンドキューイングの機能を持つ記憶装置

Publications (2)

Publication Number Publication Date
JP2001249770A JP2001249770A (ja) 2001-09-14
JP3793682B2 true JP3793682B2 (ja) 2006-07-05

Family

ID=18586393

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000067154A Expired - Fee Related JP3793682B2 (ja) 2000-03-07 2000-03-07 コマンドキューイングの機能を持つ記憶装置

Country Status (1)

Country Link
JP (1) JP3793682B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11942110B2 (en) 2022-08-31 2024-03-26 Kabushiki Kaisha Toshiba Magnetic disk device and command processing method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009013830A1 (ja) * 2007-07-26 2009-01-29 Fujitsu Limited 記憶部制御装置,記憶部制御システム,記憶部制御プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
JP4402711B2 (ja) 2007-11-05 2010-01-20 富士通株式会社 ディスクアレイ装置、ディスクアレイ装置制御方法、ディスクアレイ装置制御プログラムおよびディスクアレイ制御装置
JP4516999B2 (ja) 2008-03-28 2010-08-04 富士通株式会社 データ通信制御装置、データ通信制御方法およびそのためのプログラム
JP2010027105A (ja) 2008-07-15 2010-02-04 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ装置及びそのエラー回復処理の方法
JP5949224B2 (ja) 2012-06-29 2016-07-06 富士通株式会社 ストレージ制御装置、該プログラム及び該方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11942110B2 (en) 2022-08-31 2024-03-26 Kabushiki Kaisha Toshiba Magnetic disk device and command processing method

Also Published As

Publication number Publication date
JP2001249770A (ja) 2001-09-14

Similar Documents

Publication Publication Date Title
JP4322068B2 (ja) ストレージシステム及びそのデイスク負荷バランス制御方法
JP4318914B2 (ja) ストレージシステム及びその動的負荷管理方法
US9529724B2 (en) Layered architecture for hybrid controller
JP5951582B2 (ja) 外部キャッシュデバイスでのハイパーバイザのi/oステージング
CN110058786B (zh) 用于控制存储***中的写请求的方法、装置和计算机程序产品
CN101038532B (zh) 数据存储装置及其方法
US6381677B1 (en) Method and system for staging data into cache
KR102318477B1 (ko) Ssd 어레이 관리를 위한 스트림 식별자 기반 스토리지 시스템
JP4788528B2 (ja) ディスク制御装置、ディスク制御方法、ディスク制御プログラム
US8549526B2 (en) Access control apparatus and access control method
US20040205299A1 (en) Method of triggering read cache pre-fetch to increase host read throughput
US8386704B2 (en) Techniques for improving hard disk drive efficiency
US20040205297A1 (en) Method of cache collision avoidance in the presence of a periodic cache aging algorithm
JP4176341B2 (ja) 記憶制御装置
JP2020161014A (ja) 情報処理装置および実行制御プログラム
JP3793682B2 (ja) コマンドキューイングの機能を持つ記憶装置
US9465745B2 (en) Managing access commands by multiple level caching
JP2001125829A (ja) コントローラ装置、ディスクコントローラ、補助記憶装置、コンピュータ装置、および補助記憶装置の制御方法
US11500799B2 (en) Managing access to a CPU on behalf of a block application and a non-block application
JP5098120B2 (ja) 計算機システム及びデータベース管理システムプログラム
EP3293625B1 (en) Method and device for accessing file, and storage system
JP4373450B2 (ja) Raid制御装置及びその制御方法
JP5147296B2 (ja) 計算機システム、データベース管理方法及びプログラム
US20140337583A1 (en) Intelligent cache window management for storage systems
JP2000099446A (ja) コマンド発行制御方法および装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060410

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 7

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees