(57)【要約】  記憶ディスクのそれとは異なるサイズのセクタ・フォーマットを用いる記憶ディスクへの書込みは、書込み動作が生じ得る前に、セクタ端がディスクのセクタから読み出されることを求める。その結果、書込み動作は、セクタ端を事前に読み出さねばならないために不利益を被る。セクタ端キャッシュは、以前に実行された読出しおよび書込み動作中にセクタからセクタ端を取得することにより性能の不利益を回避する。書込み動作中にディスクからセクタ端を事前に読み出すのではなく、入出力制御装置がセクタ端キャッシュを検査して、各適切なセクタ端が既にあるかどうか判定し、新データをそのキャッシュされているセクタ端と組み合わせることができる。ＲＡＩＤ−５実装は、リード−モディファイ−ライト処理を用いて書込み動作を実施し、その書込み段階中に追加の事前読出しが必要とならないように、その読出し段階中にセクタ端を読み出し、キャッシュすることによりセクタ・キャッシュから利益を得る。
2008535088.tif 000002
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）要求が記憶ディスクとは異なるセクタ・サイズ・フォーマットを用いる、該記憶ディスクへの該Ｉ／Ｏ要求を処理する方法であって、
仮想ディスクの論理アドレスにおける読出し動作に対応するＩ／Ｏ要求を受け取ること、
該論理アドレスに関連する論理セクタを決定すること、
該記憶ディスクの物理セクタの一部に該論理セクタをマップすること、
該物理セクタのセクタ端を決定すること、
該セクタ端をキャッシュ・メモリに格納すること
を備える、方法。
【請求項２】
前記仮想ディスクの前記論理アドレスに新データを書き込むための書込み動作中に前記キャッシュ・メモリから前記セクタ端を読み出すこと、
前記セクタ端を該新データと連結すること、
前記セクタ端と該新データとの連結を前記物理セクタに格納すること
をさらに備える、請求項１に記載の方法。
【請求項３】
新データを前記論理セクタに書き込む書込み要求を受け取ること、
前記論理ブロックがマップする各物理セクタの各セクタ端を決定すること、
各セクタ端を前記キャッシュ・メモリから取得すること、
各セクタ端を該新データと組み合わせること、
各セクタ端と新データの組合せを、前記論理セクタがマップする各物理セクタに書き込むこと
をさらに備える、請求項１に記載の方法。
【請求項４】
前記物理セクタが第１の物理セクタであり、該第１の物理セクタのセクタ端のデータを変更する、前記記憶ディスクの第２の物理セクタへの書込み動作を実施すること、該セクタ端に関連するキャッシュ・メモリ内のキャッシュ・エントリを無効にすることをさらに備える、請求項１に記載の方法。
【請求項５】
前記記憶ディスクが、前記論理セクタよりサイズの小さな物理セクタを有する、請求項１に記載の方法。
【請求項６】
セグメントが所定の数の論理セクタからなる、セグメント・サイズの整合状態でＩ／Ｏ動作を実施する工程をさらに含む、請求項１に記載の方法。
【請求項７】
前記セグメントの複数の論理セクタが、均等に前記記憶ディスクの複数の物理セクタにマップして、前記記憶ディスクの記憶容量の損失なしに前記記憶ディスクを利用する、請求項６に記載の方法。
【請求項８】
前記記憶ディスクが、アドバンスト・テクノロジ・アタッチメント・ディスクである、請求項１に記載の方法。
【請求項９】
前記読出し動作が、ＲＡＩＤ−５実装のリード−モディファイ−ライト処理の一部である、請求項１に記載の方法。
【請求項１０】
物理セクタを有する記憶ディスクを備えるデータ処理システムであって、
仮想ディスクへの入出力（Ｉ／Ｏ）動作を実施するアプリケーション・ソフトウェアを実行するホスト・システムと、
該アプリケーション・ソフトウェアの該Ｉ／Ｏ動作に基づいて該記憶ディスクにＩ／Ｏ要求を発行し、該Ｉ／Ｏ要求が、該記憶ディスクとは異なるセクタ・サイズ・フォーマットを有する論理セクタを用いる入出力（Ｉ／Ｏ）制御装置であって、該Ｉ／Ｏ制御装置が、論理セクタを該記憶ディスクの物理セクタにマップし、各論理セクタに関連する物理セクタの１つまたは複数のセクタ端を識別するセクタ・マップ装置を有し、該Ｉ／Ｏ制御装置が、Ｉ／Ｏ要求で参照される論理セクタに関連する各セクタ端を読み出す入出力（Ｉ／Ｏ）制御装置と、
該Ｉ／Ｏ制御装置により読み出された各セクタ端を格納するセクタ端キャッシュと
を備える、データ処理システム。
【請求項１１】
前記論理セクタが、それぞれ各物理セクタよりバイト単位で大きい、請求項１０に記載のデータ処理システム。
【請求項１２】
前記Ｉ／Ｏ制御装置が、ＲＡＩＤ−５実装を実施する、請求項１０に記載のデータ処理システム。
【請求項１３】
前記記憶ディスクが、アドバンスト・テクノロジ・アタッチメント・ディスクである、請求項１２に記載のデータ処理システム。
【請求項１４】
前記記憶ディスクが、アドバンスト・テクノロジ・アタッチメント・ディスクである、請求項１０に記載のデータ処理システム。
【請求項１５】
前記アプリケーション・ソフトウェアが、複数のセクタからなるセグメント・サイズの整合状態でＩ／Ｏ動作を実施する、請求項１０に記載のデータ処理システム。
【請求項１６】
前記セグメント・サイズにより、均等に前記仮想ディスクの第１の数の論理セクタを前記記憶ディスクの第２の数の物理セクタにマップして、前記記憶ディスクの記憶容量の損失なしに前記記憶ディスクを利用する、請求項１５に記載のデータ処理システム。
【請求項１７】
記憶ディスクへの入出力（Ｉ／Ｏ）動作を実施する装置であって、
仮想ディスクへの入出力（Ｉ／Ｏ）動作を実施するアプリケーション・ソフトウェアを実行する手段と、
該アプリケーション・ソフトウェアの該Ｉ／Ｏ動作に基づいて該記憶ディスクにＩ／Ｏ要求を発行する手段と、
Ｉ／Ｏ要求の論理セクタを該記憶ディスクの物理セクタにマップする手段であって、該論理セクタが、該記憶ディスクとは異なるセクタ・サイズ・フォーマットを有する、手段と、
各論理セクタに関連する物理セクタの１つまたは複数のセクタ端を識別する手段と、
Ｉ／Ｏ要求で指定される論理セクタに関連する各セクタ端を読み出す手段と、
各セクタ端をキャッシュする手段と
を備える、装置。
【請求項１８】
前記論理セクタが、それぞれ各物理セクタよりバイト単位で大きい、請求項１７に記載の装置。
【請求項１９】
Ｉ／Ｏ要求を発行する前記手段が、ＲＡＩＤ−５実装を含む、請求項１７に記載のデータ処理システム。
【請求項２０】
前記記憶ディスクが、アドバンスト・テクノロジ・アタッチメント・ディスクである、請求項１７に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ハードドライブ記憶装置技術を使用するデータ処理システムに関する。より詳細には、本発明は、ディスクへの書込み動作中のシステム性能を向上させるセクタ端キャッシュに関する。
【背景技術】
【０００２】
コストの低さから、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ、アドバンスト・テクノロジ・アタッチメント）ディスク・ドライブは、様々なデータ処理システムにおいて人気のデータ記憶装置となっている。シリアルＡＴＡ（ＳＡＴＡ）プロトコルの開発により、ホットプラグ対応、柔軟なケーブル布線、および全てのデータ、コマンド、およびステータスの通信を対象とするＣＲＣ（巡回冗長検査）などの機能が提供され、その人気は高まるばかりである。さらにＡＴＡディスク・ドライブの記憶密度は、ＡＴＡディスク・ドライブをとりわけ大容量記憶システムに対して有利にしている。したがって、独立ディスク冗長アレイ（ＲＡＩＤ）実装は、従来はＳＣＳＩまたはファイバ・チャネルのディスク・ドライブ技術を採用してきたが、現在はＡＴＡディスク・ドライブの使用を採択している。
【０００３】
しかし、現在のＡＴＡディスク・ドライブが５１２バイトの標準サイズのセクタ・フォーマットだけサポートするのに対し、そのディスク・ドライブと対話するアプリケーションまたは他のソフトウェア、例えばＲＡＩＤ−０実装は、異なるサイズのセクタを必要とすることがある。セクタとは、ディスクへのアクセスがなされ得る最小の単位である。セクタ・サイズの違いは、論理アドレスおよび論理セクタと呼ばれる、アプリケーションにより指定されるアドレスおよびセクタと、ディスク・ドライブの物理アドレスおよび物理セクタとの間でのアドレス変換を必要とする。このセクタ・サイズの違いはまた、ディスク・ドライブにおける論理セクタと物理セクタとの不整合をもたらす。例えば、論理セクタが物理セクタより（バイト単位で）大きい場合、その論理セクタは複数の物理セクタに跨ってしまう。したがって、１論理セクタへの書込み動作は、実際には複数の物理セクタへの書込み動作となるが、これら物理セクタの１つまたは全てのある部分には書込みがなされない。これらの部分は、論理セクタと物理セクタとの重複部分の端に位置し、かかる端はセクタ端と呼ばれる。この書込み動作は、セクタ端からデータを得るために追加の読出しＩ／Ｏ動作を必要とすることがある。したがって、セクタ端の追加の読出しＩ／Ｏ動作は、小さな書込み動作または大きな整合していない書込み動作を実施するアプリケーションに性能面で影響を及ぼす。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、ＡＴＡ技術の様々な利点を十分生かすためには、書込み動作中にセクタ端を読み出すことで被る性能の不利益を回避または低減することのできるシステムおよび方法が求められている。
【課題を解決するための手段】
【０００５】
一態様では、本発明は、記憶ディスクへの入出力（Ｉ／Ｏ）要求を処理する方法を特徴とし、この場合、Ｉ／Ｏ要求は、記憶ディスクのそれとは異なるセクタ・サイズ・フォーマットを用いる。この方法は、仮想ディスクの論理アドレスでの読出し動作に対応するＩ／Ｏ要求を受け取ることを含む。論理アドレスに関連する論理セクタが決定され、記憶ディスクの物理セクタの一部にマップされる。物理セクタのセクタ端が決定され、キャッシュ・メモリに格納される。
【０００６】
他の態様では、本発明は、物理セクタを有する記憶ディスクを備えるデータ処理システムを特徴とする。データ処理システムは、仮想ディスクへの入出力（Ｉ／Ｏ）動作を実施するアプリケーション・ソフトウェアを実行するホスト・システムを含む。データ処理システムはまた、アプリケーション・ソフトウェアのＩ／Ｏ動作に基づいて記憶ディスクにＩ／Ｏ要求を発行する入出力（Ｉ／Ｏ）制御装置を含む。Ｉ／Ｏ要求は、記憶ディスクのそれとは異なるセクタ・サイズ・フォーマットを有する論理セクタを用いる。Ｉ／Ｏ制御装置は、論理セクタを記憶ディスクの物理セクタにマップし、各論理セクタに関連する物理セクタの１つまたは複数のセクタ端を識別するセクタ・マップ装置を備える。Ｉ／Ｏ制御装置は、Ｉ／Ｏ要求で参照される論理セクタに関連する各セクタ端を読み出す。セクタ端キャッシュは、Ｉ／Ｏ制御装置により読み出された各セクタ端を格納する。
【０００７】
他の態様では、本発明は、記憶ディスクへの入出力（Ｉ／Ｏ）動作を実施する装置を特徴とする。装置は、仮想ディスクへの入出力（Ｉ／Ｏ）動作を実施するアプリケーション・ソフトウェアを実行する手段を含む。装置はまた、アプリケーション・ソフトウェアのＩ／Ｏ動作に基づいて記憶ディスクにＩ／Ｏ要求を発行する手段と、Ｉ／Ｏ要求の論理セクタを記憶ディスクの物理セクタにマップする手段とを含む。論理セクタは、記憶ディスクのそれとは異なるセクタ・サイズ・フォーマットを有する。装置はまた、各論理セクタに関連する物理セクタの１つまたは複数のセクタ端を識別する手段と、Ｉ／Ｏ要求で指定される論理セクタに関連する各セクタ端を読み出す手段と、各セクタ端をキャッシュする手段とを備える。
【０００８】
本発明の上記および他の利点は、図面を通じて同様の符号が同様の構造要素および機能を示す添付の図面と併せ以下の説明を参照することによって、よりよく理解されよう。図面は必ずしも原寸に比例してはおらず、むしろ本発明の原理を示すために強調が施されている。
【発明を実施するための最良の形態】
【０００９】
本発明は、本明細書に記載の通り、ディスクからのセクタ端の事前読出しに関連する性能の不利益を回避または低減するシステムおよび方法を特徴とする。セクタ端は、データ処理システムのソフトウェアが、物理的記憶装置のそれとは異なるサイズのセクタ・フォーマットを用いて物理的記憶装置と対話する時に生じる。ソフトウェアは、論理セクタに指定された読出しおよび書込み要求を発行し、この論理セクタが記憶ディスクの物理セクタにマップされる。セグメントと呼ばれる、セクタの集まりへの整合をしているＩ／Ｏ動作は、セクタ端を事前に読み出す必要を回避することができる。しかし小さな（例えば、１セグメントよりもサイズの小さい）書込み動作または整合していない書込み動作では、事前に読み出されたセクタ端が、書き込まれることになる新しいデータと組み合わされ得るように、セクタ端の事前読出しが必要となる。次いで、その組合せがディスクに書き込まれる。
【００１０】
本発明のセクタ端キャッシュを用いることで、全ての書込み動作でセクタ端を事前に読み出す必要が回避される。論理ブロックへの書込み動作が、既にキャッシュに格納されている、以前に事前に読み出されたセクタ端を見つけることができ、したがってＩ／Ｏ動作を実施してディスクからセクタ端を取得する必要が回避される。さらに、セクタ端キャッシュは、有利にはＲＡＩＤ−５実装と組み合わされ、典型的には、ＲＡＩＤ−５実装における書込み動作はリード−モディファイ−ライト処理を伴い、したがって、セクタ端は、リード−モディファイ−ライト処理の読出し段階中に読み出され、キャッシュされる。このようにして、この処理の書込み段階でセクタ端を新しいデータと組み合わせる時に、追加の事前読出しが不要になる。したがって、リード−モディファイ−ライト処理の読出し段階が、論理セクタの物理セクタへのマッピングに関連する性能の不利益を吸収する。
【００１１】
図１は、本発明に従って構築されたデータ処理システム１０の一実施形態を示す。データ処理システム１０は、ホスト・システム１４、Ｉ／Ｏ制御装置１８、およびディスク２６からなるアレイ２２を含む。一般には、ホスト・システム１４は、データとソフトウェア・プログラム、例えばホスト・アプリケーション・プログラム３０とを格納する永続的記憶装置を備えるプロセッサ・ベースのシステムである。ホスト・アプリケーション・プログラムの例には、データベース、オペレーティング・システム、およびファイル・システムが含まれるが、それだけに限定されるわけではない。
【００１２】
ホスト・システム１４は、ホスト記憶装置インターコネクト２８（例えば、ファイバ・チャネル・バス、ＳＣＳＩバス）を介してＩ／Ｏ制御装置１８と接続される。Ｉ／Ｏ制御装置１８は、Ｉ／Ｏサブシステム（例えば、ＲＡＩＤ−０、ＲＡＩＤ−１、ＲＡＩＤ−５実装）を実施して、ホスト・アプリケーション・プログラム３０によって開始される読出しおよび書込みＩ／Ｏ動作に応じてディスク２６へのアクセスを制御する。Ｉ／Ｏ制御装置１８を通じて、このホスト・アプリケーション・プログラム３０はディスク・アレイ２２のディスク２６と対話するが、Ｉ／Ｏ制御装置１８は、このディスク２６を１つまたは複数の仮想ディスク３２としてホスト・アプリケーション・プログラム３０に提示する。さらに、ホスト・アプリケーション・プログラム３０は、仮想ディスク３２にＩ／Ｏ要求を発行し、Ｉ／Ｏ制御装置１８がそれらのＩ／Ｏ要求をディスク・アレイ２２内の物理ディスク２６へのＩ／Ｏ要求に変換する。
【００１３】
ディスク・アレイ２２内の各ディスク２６は、本明細書で物理セクタと呼ばれる複数のセクタを有する。物理セクタは、一様のバイト・サイズをもつ。本発明によれば、Ｉ／Ｏ制御装置１８により発行されるＩ／Ｏ要求で参照されるセクタは、以下では論理セクタと呼ばれ、ディスク２６の物理セクタのそれとは異なるサイズを有する。（一般にサイズの違いは、特定のＩ／Ｏサブシステムの機能を実施するためにＩ／Ｏ制御装置で追加情報（例えば、メタデータ）が用いられることに起因するものである）。Ｉ／Ｏ制御装置１８により参照される論理セクタをディスク２６の物理セクタに変換できるように、Ｉ／Ｏ制御装置１８はセクタ・マップ装置３４を備える。
【００１４】
この実施形態では、複数のセクタ端キャッシュ３８がＩ／Ｏ制御装置１８に常駐してセクタ端を格納する。各セクタ端キャッシュ３８は、ディスク・アレイ２２内の１つのディスク２６と関連し、そのディスク２６から得られるセクタ端をキャッシュする。他の実施形態では、１つのキャッシュでディスク・アレイ内の複数のディスクまたは全てのディスクをサポートする。キャッシュ３８はライトスルー・キャッシュ（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ  ｃａｃｈｅｓ）である。一般に各セクタ端キャッシュ３８は、比較的小さなサイズ、例えば１Ｍｂのメモリであり、ダイナミックＲＡＭ、スタティックＲＡＭ、および同期ダイナミックＲＡＭなどの高速メモリで実装される。利点は、セクタ端キャッシュ３８が、セクタ端だけをキャッシュし、Ｉ／Ｏ要求全体をキャッシュしないで済むことにより、かなりの量のメモリを節約することである。
【００１５】
キャッシュ３８内のセクタ端データは、キャッシュ・エントリが有効であれば、ダーティ（ｄｉｒｔｙ）ではなく（すなわち、まだディスクに格納されていないデータを含み）、セクタ端データは、データが取得される元になるディスク上に物理的に存在するデータをミラーする。セクタ端データに加えて、セクタ端キャッシュ３８内の各キャッシュ・エントリは他の関連データ、例えばアドレス・タグ（物理アドレスを示す）、制御ビット（すなわち、キャッシュ・エントリが有効かどうかと、キャッシュ・エントリが一番最近ではいつ使用されたかを示す）も含む。ディスクからの読出し動作中に、Ｉ／Ｏ制御装置１８は、１つまたは複数のセクタ端を、セクタ端キャッシュ３８に加えるか、キャッシュ３８に目下ある１つまたは複数のセクタ端に上書きする。ディスクへの書込み動作中に、Ｉ／Ｏ制御装置１８は、キャッシュに目下ある１つまたは複数のセクタ端を無効にして、そのデータがもはやディスク２６上のデータと合致しないことを示す。
【００１６】
好適な実施形態では、データ処理システム１０が、Ｉ／Ｏ制御装置１８が記憶装置用プロセッサとして動作するネットワーク化された記憶システムであり、ファイバ・チャネルのフロントエンドおよびシリアルＡＴＡのバックエンド（すなわち、ディスク２６がＡＴＡディスク・ドライブ）を備え、ＲＡＩＤ−５実装を実現する。ＲＡＩＤ−５実装は、ディスクに書き込まれるデータに対してパリティ計算を実施する。このパリティ計算は、リアルタイムで生じ、典型的なＲＡＩＤ−５のリード−モディファイ−ライト処理の一部である。書き込まれるデータおよびパリティ・データは、ディスク・アレイ２２内のディスク２６に跨って「ストライピング」され、ディスク２６の対応するセクタがストライプを定義する。ディスク・アレイ内の１つのディスク２６が故障すると、ＲＡＩＤ−５は、その故障したディスクの失われたデータをパリティ・データおよび残りのディスクのデータ・ブロックから再生する。
【００１７】
各書込み要求ごとに、ＲＡＩＤ−５システムは、複数のＩ／Ｏ動作をリード−モディファイ−ライト処理の一部として実施する。１つのＩ／Ｏ動作が、新データで更新されるべきストライプのデータ・ブロックを読み出し、別のＩ／Ｏ動作が、データ・ブロックに関連するパリティ・ブロックを読み出す。本発明の原理によれば、読出しＩ／Ｏ動作はまた、データおよびパリティ・ブロックに関連するセクタ端がセクタ端キャッシュ３８にキャッシュされるようにする。次いで、パリティが修正されて新しいデータを反映する。その後に別のＩ／Ｏ動作が、更新されたパリティをパリティ・ブロックに、かつ新データをデータ・ブロックに書き込む。
【００１８】
また、好適な実施形態では、ＡＴＡディスク・ドライブが５１２バイトの物理セクタを有し、ＲＡＩＤ−５実装が５２０バイトのセクタを用いる。しかし本発明の原理は、さらに以下で説明されるように、論理セクタが物理セクタより少ないバイト数をもつ場合にも適用する。この好適な実施形態が、本発明が実施されてよい様々なシステム構成の１例に過ぎないことは理解されよう。例えば、ＲＡＩＤ−０およびＲＡＩＤ−１は、ＲＡＩＤ−５でのようなリード−モディファイ−ライト処理を実施できないのでＲＡＩＤ−５実装ほど有益でないが、本発明をＲＡＩＤ−０およびＲＡＩＤ−１など他のレベルのＲＡＩＤで実施することもできる。さらに、Ｉ／Ｏ制御装置１８により提示される仮想ディスク３２にＩ／Ｏ要求を発行する時、ホスト・アプリケーション・ソフトウェア３０の異なる実施形態は、物理ディスク２６のそれと同じまたは異なるセクタ・サイズ・フォーマットを有するセクタ（これらは論理セクタとも考えられる）を用いることができる。
【００１９】
図２は、論理セクタ５０が物理セクタ５４より長さの大きい例示的なマッピングの一部を示す。この例では、論理セクタが各々５２０バイトの長さであり、物理セクタは５１２バイトの長さである。５２０バイトの論理セクタを５１２バイトの物理セクタにマップする一般的なアルゴリズムは、マッピングにおける不連続または使用されていないアドレスが存在しない場合、以下のようになる。
ＬＢＡ５１２＝（ＬＢＡ５２０＊５２０）／５１２−これは余りを切り捨てる整数演算である。
ＯＦＦＳＥＴ５１２＝（ＬＢＡ５２０＊５２０）％５１２−これは剰余関数である。
【００２０】
ただし、ＬＢＡ５１２は、論理セクタＬＢＡ５２０に対応するデータの始まりを含む物理セクタであり、ＯＦＦＳＥＴ５１２は、論理セクタＬＢＡ５２０の第１バイトを含む物理セクタＬＢＡ５１２内のバイト・オフセットを表す。フォーム（セクタ，オフセット）は、５１２バイトのセクタ・アドレス空間での５２０バイト・セクタ・データのアドレスを表す。セクタＬＢＡ５２０のデータ全てを読み出すには、物理アドレス（ＬＢＡ５１２，ＯＦＦＳＥＴ５１２）から物理アドレス（ＬＢＡ５１２＋１，（ＯＦＦＳＥＴ５１２＋５２０−１）％５１２）までのデータを読み出す必要がある。このアルゴリズムは、単独のセクタに適用する（すなわち、複数セクタの要求に対するものではない）。
【００２１】
図に示されるように、論理セクタ５０は、ブロックＡ、ブロックＢ、およびブロックＮと標識されたデータ・ブロックを含み、物理セクタ５４は、ブロック０、ブロック１、ブロック２、およびブロックＮと標識されたデータ・ブロックを含む。図示されていないが三点リーダで示されているのは、残りの中間の論理セクタおよび物理セクタである。以下では、論理セクタ５０のデータ・ブロックは論理ブロックとも呼ばれ、物理セクタ５４のデータ・ブロックは物理ブロックと呼ばれる。１例として論理ブロックＡが、物理ブロック０の全部と物理ブロック１のリーディング部分５８にマップする。論理ブロックＡがマップしない物理ブロック１の部分６２は、トレーリング・セクタ端と呼ばれるが、これは、このマップされない部分６２がマップされたリーディング部分５８の後に続く（すなわち、アドレス上、次に来る）ためである。したがって論理ブロックＡは、関連するトレーリング・セクタ端はもつが、関連するリーディング・セクタ端はもたない。
【００２２】
図３は、図２の例示的なマッピングを、特に論理ブロックＢを参照しながら示す。ブロックＢは、物理ブロック１の部分６２と物理ブロック２のリーディング部分６６にマップする。したがって、物理ブロック１の部分６２は論理ブロックＡに関してはトレーリング・セクタ端に対応し（図２）、論理ブロックＢに関してはセクタ・データに対応する。ここでは、物理ブロック１のリーディング部分５８がリーディング・セクタ端であり、物理ブロック２のトレーリング部分７０がトレーリング・セクタ端である。したがって物理ブロック１の部分５８は、論理ブロックＡに関してはセクタ・データに対応し、論理ブロックＢに関してはリーディング・セクタ端に対応する。論理ブロックＡに宛てられる書込み動作は、物理ブロック１の部分５８のデータ内容を変更し、したがって論理ブロックＢに関連するリーディング・セクタ端としての部分５８のキャッシュされているバージョンを全て無効にするように動作する。同様に、論理ブロックＢに宛てられる書込み動作は、物理ブロック１の部分６２のデータ内容を変更し、したがって論理ブロックＡに関連するトレーリング・セクタ端としての部分６２のキャッシュされているバージョンを全て無効にするように動作する。
【００２３】
図４は、図２の例示的なマッピングを再度、ここでは特に論理ブロックＮの物理セクタｎおよびｎ−１へのマッピングを参照しながら示す。ブロックＮは、物理ブロックｎ−１のトレーリング部分７４とブロックｎの全部にマップする。ブロックＮは、物理ブロックｎ−１のリーディング部分７８にはマッピングしない。したがって、この特定の論理対物理セクタ・マッピングは、リーディング・セクタ端は生成するが、トレーリング・セクタ端は生成しない。５２０バイトの論理セクタと５１２バイトの物理セクタを用いる場合、例えば、論理セクタと物理セクタとで末尾のアドレスが整合するのは、６４論理セクタごと、かつ６５物理セクタごとである。
【００２４】
論理セクタと物理セクタとで末尾のアドレスの整合を成し遂げる、一様なサイズのセグメント、例えば６５の５１２バイト物理セクタにマップされた６４の５２０バイト論理セクタからなるセグメントのＩ／Ｏアクセスは、セグメントへの整合している書込み動作中にセクタ端を事前に読み出す必要がないという利点をもつ。他の利点は、かかるセグメント・サイズが、以下の表１に記載の他のセグメント・サイズに比べて、ディスク２６の記憶容量を十分利用することである。
【００２５】
図５は、セグメントの定義が４つの物理セクタからなる１例を示す。図に示されるように、１つのセグメント６０（網掛け部分）が、ブロック０、ブロック１、ブロック２、およびブロック３と標識された４つの物理データ・ブロックを有する。この例では、各ブロックが５１２バイトの物理ブロックである。ブロック４およびその後の４番目ごとの物理ブロックが、新しいセグメントの始まりである。
【００２６】
５２０バイトの論理ブロックの５１２バイトの物理ブロックへの例示的なマッピングがまた示されている。ブロックＡ、ブロックＢ、およびブロックＣからなる３つの論理ブロックが、４つの物理ブロック、すなわちブロック０、ブロック１、ブロック２、およびブロック３にマップする。このマッピングでは、論理ブロックの開始アドレスと各セグメントの第１ブロックの開始アドレスとで必ず整合がある（例えば、ブロックＡとブロック０、ブロックＤとブロック４）ようになる。その結果、図に示されるように、４つの物理セクタからなるセグメント・サイズは、どの論理ブロックおよび物理ブロックとも末尾のアドレスでの整合をなさない。したがって、部分８２で示されるように、幾つかの物理アドレスが使用できない。それでも、そのアドレス空間の損失は、向上した書込み性能から利益を得る（例えば、セクタ端を事前に読み出す必要がない）ためには容認できる代償である。他のセグメント・サイズでも、５２０バイトの論理セクタと５１２バイトの物理セクタを再度参照すると、使用できない物理アドレスが結果として生じる。例えば、８、１６、および３２の論理ブロックからなるセグメント・サイズも、一定の損失したアドレス空間をもつ。セグメント・サイズが６４の（５２０バイト）論理ブロック（すなわち、６５の（５１２バイト）物理ブロック）の整数倍であればアドレス損失は生じない。以下の表１は、例示的なセグメント・サイズを使用できない記憶容量の百分比と比較している。
【００２７】
【表１】
2008535088.tif 000003
図６は、本発明による、ディスク２６の物理セクタからデータを読み出し、セクタ端をキャッシュする方法７０の一実施形態を示す。工程７４で、アプリケーション・プログラム３０が論理アドレスでデータの読取り要求を発行する。この論理アドレスは、特定の論理セクタ内に収まる（工程７６）。セクタ・マップ装置３４が、論理セクタを所与のディスクの１つまたは複数の物理セクタにマップする（工程７８）。論理セクタが物理セクタよりバイト単位で大きい場合、マッピングは少なくとも２つの物理セクタを識別する。論理セクタが物理セクタより小さい場合、マッピングは１つ、または多くて２つの物理セクタを識別する。
【００２８】
データ・ブロックが、各識別された物理ブロックから読み出される（工程８２）。工程８６で、Ｉ／Ｏ制御装置１８が、論理対物理セクタ・マッピングの結果として得られる各セクタ端を識別する。識別されたセクタ端は、参照される論理セクタ、およびその論理セクタの物理セクタへのマッピング次第で、リーディング・セクタ端、トレーリング・セクタ端、あいはその両方でる。本発明によれは、Ｉ／Ｏ制御装置１８は、所与のディスクに関連するセクタ端キャッシュ３８に各識別されたセクタ端を格納する（工程９０）。セクタ端をキャッシュする時に、セクタ端キャッシュ３８が有効なキャッシュ・エントリで目下満杯である場合、一番古いエントリ（すなわち、最近もっとも使用されていない）が取り除かれ、新しいセクタ端に余地を空ける。セクタ端キャッシュ３８が、キャッシュされるセクタ端のエントリを目下含む場合、一実施形態では、そのエントリは上書きされる。キャッシュ・エントリを上書きすることは、実質的に、既存のエントリのエージング・ステータスを最古に使われたエントリのその後の判定と取り換え、既存のエントリが目下無効であれば、有効ステータスを回復することになる。
【００２９】
図３をまた参照しながら、読出し動作が例によって示される。アプリケーション・プログラムが、論理ブロックＢでデータの読出し要求を発行すると考えられたい。論理ブロックＢの物理ブロック１および２へのマッピングは、物理ブロック１からリーディング・セクタ端５８を、物理ブロック２からトレーリング・セクタ端７０を識別する。Ｉ／Ｏ制御装置１８は、リーディング・セクタ端５８およびトレーリング・セクタ端７０をセクタ端キャッシュ３８に格納し、物理ブロック１の部分６２と物理ブロック２の部分６６からのセクタ・データがアプリケーション・プログラム３０に戻されて、読出し要求を満たす。
【００３０】
図７は、本発明によるセクタ端キャッシュ３８を用いて、ディスク２６の物理セクタにデータを書き込む方法１００の一実施形態を示す。工程１０４で、アプリケーション・プログラム３０が、ある論理セクタでデータを変更する書込み要求を発行する。セクタ・マップ装置３４が、その論理セクタを所与のディスクの１つまたは複数の物理セクタにマップする（工程１０８）。制御装置１８が、この論理セクタに関連する各セクタ端（リーディング、トレーリング、あるいは両方）を計算する（工程１１２）。工程１１６で、Ｉ／Ｏ制御装置１８は、所与のディスクに関連するセクタ端キャッシュ３８にアクセスしてセクタ端（１つまたは複数）が目下キャッシュされているかどうかを判定する。
【００３１】
セクタ端キャッシュ３８が、求められている各セクタ端のエントリを有し、そのエントリが有効である場合、Ｉ／Ｏ制御装置１８が、書き込まれるべき新データの一部をそのセクタ端と組み合わせる。例えば、リーディング・セクタ端はどれも新データの先頭に、トレーリング・セクタ端はどれも新データの末尾に追加される。次いで各セクタ端と新データの適切な一部との組合せが、物理セクタに書き込まれる（工程１２４）。したがって、セクタ端をキャッシュすることで、物理ブロックへの書込み動作を実施するためにその物理ブロックの中身を事前に読み出す必要を回避する。
【００３２】
例えば、図３の論理ブロックＢへの書込み要求を考えられたい。やはり論理ブロックＢが物理ブロック１および２にマップし、物理ブロック１にリーディング・セクタ端５８を、物理ブロック２にトレーリング・セクタ端７０を生成する。また、Ｉ／Ｏ制御装置１８が、リーディング・セクタ端５８およびトレーリング・セクタ端７０をセクタ端キャッシュ３８に見つけ、その両方とも有効であると考えられたい。次いでＩ／Ｏ制御装置１８は、リーディング・セクタ端５８を論理ブロックＢの新データの第１の部分の先頭に追加することによって物理ブロック１に書き込まれるべきデータを生成する。この第１の部分は、物理ブロック１の部分６２に対応する。Ｉ／Ｏ制御装置１８はまた、トレーリング・セクタ端７０を論理ブロックＢの新データの第２の部分の末尾に追加することによって物理ブロック２に書き込まれるべきデータを生成する。この第２の部分は、物理ブロック２の部分６６に対応する。次いでＩ／Ｏ制御装置１８は、リーディング・セクタ端５８と新データの第１の部分との組合せを物理ブロック１に、トレーリング・セクタ端７０と新データの第２の部分との組合せを物理ブロック２に書き込む。
【００３３】
新しいデータを１つまたは複数の物理ブロックに書き込むことは、セクタ端キャッシュ３８内に変更をもたらすことがある。上記の例を継続すると、新データを論理ブロックＢに書き込むことは、結果として新データが物理ブロック１および２に書き込まれることになる。具体的には、図３に示されるように、新データは物理ブロック１のアドレス部分６２と物理ブロック２のアドレス部分６６に書き込まれる。これらアドレス部分６２、６６は、キャッシュされているセクタ端に対応することもできる。すなわちアドレス部分６２は、図２で示されるように、論理ブロックＡへの読取りおよび書込み用のトレーリング・セクタ端であり得るし、アドレス部分６６は、論理ブロックＣ（図示せず）への読取りおよび書込み用のリーディング・セクタ端であり得る。これらセクタ端のどちらか、または両方がセクタ端キャッシュ３８に目下キャッシュされている場合、論理ブロックＢへの書込みは、結果としてそれらセクタ端に関連するキャッシュ・エントリを無効にする。
【００３４】
図７を再度参照すると、上記のようにではなく、セクタ端キャッシュ３８が、各求められているセクタ端のエントリを目下有していない場合、Ｉ／Ｏ制御装置１８は論理ブロックがマップする物理ブロックからデータを読取り（工程１２８）、工程１１６で決定された各セクタ端を所与のディスク２６に関連するセクタ端キャッシュ３８に格納し（工程１３２）、書き込まれるべき新データの一部を各セクタ端と組み合わせ（工程１２０）、その組み合わされたデータを適切な物理セクタに書き込む（工程１２４）。
【００３５】
１つの論理セクタに関連するセクタ端が、他の論理セクタに関連するセクタ・データを保持することもあり得るので、書込み動作中にセクタ端が修正されないように、リード−モディファイ−ライト処理はアトミックである。したがって、本発明によるデータ処理システム１０は、物理セクタを網羅するロック・ストラテジを使用する。物理セクタのロックは、先着順でＩ／Ｏ要求に与えられる。さらにデータ処理システム１０が、同じディスクにアクセスできる複数の記憶装置用プロセッサを備える場合、一度に１つの記憶装置用プロセッサしか、そのディスクの所与の物理セクタを修正できない。
【００３６】
ＲＡＩＤ−５実装のリード−モディファイ−ライト処理は、セクタ端を事前に読み出し、キャッシュする工程によく適している。ＲＡＩＤ−５の書込み動作は、ディスクへの書込みが生じる前にパリティを再計算するために、データおよびパリティをディスクから事前に読み出すので、この事前読出しはセクタ端を取得しキャッシュすることにも役立つ。したがって、ＲＡＩＤ−５実装をセクタ端キャッシュと組み合わせる実施形態は、論理セクタ対物理セクタ変換中のセクタ端の事前読出しに関連する性能の不利益を吸収する。さらに、アドレス損失をもたらさないセグメント・サイズ、例えば６４の５２０バイト／６５の５１２バイト・セグメントを用いることで、コストおよび記憶容量に基づいてデータ処理システム１０の設計を最適化することができる。
【００３７】
他のレベルのＲＡＩＤ実装、例えばＲＡＩＤ−１は、書込み動作を実施している時にリード−モディファイ−ライト処理を用いないので、セクタ端の事前読出しに関連する性能の不利益を招くことがある。それでも、かかるＲＡＩＤ実装は、セクタ端が既にキャッシュされ目下有効である物理ブロックへのその後の書込み中に役立つ。
【００３８】
上記で述べられたように、本発明の一部の実施形態では、論理セクタが物理セクタよりバイトにおいて小さいこともある。例えば図８は、論理セクタ５０がそれぞれ５２０バイトの長さであり、物理セクタ５４’が１０２４バイトの長さである、部分的な例示的マッピングを示す。論理セクタ５０は、ブロックＡ、ブロックＢ、ブロックＣ、ブロックＤ、およびブロックＮを含み、物理セクタ５４は、ブロック０、ブロック１、ブロック２、およびブロックｎを含む。図示されていないが三点リーダーで示されているのは、残りの中間の論理セクタおよび物理セクタである。１例として論理ブロックＡ全部が、物理ブロック０にマップし、マップされていない部分１５０を残すが、この部分がトレーリング・セクタ端である。したがって、論理ブロックＡに対する読出しは、関連するトレーリング・セクタ端を結果としてキャッシュすることになる。
【００３９】
図９は、図８の例示的なマッピングを、特に論理ブロックＢを参照しながら示す。ブロックＢは、２つの物理ブロック、ブロック０およびブロック１に跨り、物理ブロック０のトレーリング部分１５４と物理ブロック１のリーディング部分１５８にマップする。ブロックＢは物理ブロック０のリーディング部分１６２と物理ブロック１のトレーリング部分１６６にはマップしない。論理ブロックＢのこの特定の論理対物理セクタ・マッピングでは、リーディング部分１６２がリーディング・セクタ端であり、トレーリング部分１６６がトレーリング・セクタ端である。
【００４０】
図１０は、図８の例示的なマッピングを再度、ここでは特に論理ブロックＣの物理セクタへのマッピングを参照しながら示す。ブロックＣの全部が物理ブロック１内の中間部分１７０にマップし、この同じ物理ブロックのリーディング部分１７４またはトレーリング部分にはマップしない。したがって、この特定の論理対物理セクタ・マッピングは、リーディング・セクタ端（部分１７４）およびトレ・セクタ端（部分１７８）を生成し、その両方が同じ物理セクタ（ブロック１）の一部である。
【００４１】
図１１は図８の例示的なマッピングを再度、ここでは特に論理ブロックＮの物理セクタｎへのマッピングを参照しながら示す。論理ブロックＮの全部が、物理ブロックｎのトレーリング部分１８２にマップし、マップされていないリーディング・セクタ端１８６を残す。したがって、論理ブロックＮへの読出しおよび書込み動作は、結果としてリーディング・セクタ端１８６をキャッシュすることになり得る。５２０バイトの論理セクタおよび１０２４バイトの物理セクタを用いる場合、例えば、論理対物理セクタ・マッピング間で最終のアドレスが整合するのは、１２８論理セクタごと、かつ６５物理セクタごとである。
【００４２】
本発明は、特定の好適な実施形態を参照しながら示され説明されてきたが、以下の特許請求の範囲で定義される本発明の趣旨および範囲から逸脱することなく形態および細部において様々な変更がなされ得ることは当業者には理解されたい。例えば、セクタ端をキャッシュするという原理は、一般に、物理的記憶装置のそれとは異なるサイズのセクタ・フォーマットを用いて物理的記憶装置と対話するどのソフトウェアにも適用するものであり、Ｉ／Ｏ制御装置により指定される論理セクタとディスクの物理セクタとの間だけに特定されることはない。
【図面の簡単な説明】
【００４３】
【図１】ホスト、Ｉ／Ｏ制御装置、およびディスクのアレイを含む、本発明に従って構築されたデータ処理システムの一実施形態の図。
【図２】論理セクタがそれぞれ物理セクタよりバイトにおいて大きく、各論理セクタのマッピングが、その論理セクタがマップする各物理セクタ内に、リーディング・セクタ端、トレーリング・セクタ端、あるいはその両方を生成する、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図３】論理セクタがそれぞれ物理セクタよりバイト単位で大きく、各論理セクタのマッピングが、その論理セクタがマップする各物理セクタ内に、リーディング・セクタ端、トレーリング・セクタ端、あるいはその両方を生成する、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図４】論理セクタがそれぞれ物理セクタよりバイト単位で大きく、各論理セクタのマッピングが、その論理セクタがマップする各物理セクタ内に、リーディング・セクタ端、トレーリング・セクタ端、あるいはその両方を生成する、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図５】それぞれ所定の数のセクタからなる一様なサイズのセグメントを用いる、整合しているＩ／Ｏ動作に適用される、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図６】読出し要求に応じて物理ディスクからデータを読み出す方法の一実施形態の流れ図。
【図７】書込み要求に応じて物理ディスクへデータを書き込む方法の一実施形態の流れ図。
【図８】論理セクタがそれぞれ物理セクタよりバイト単位で小さく、各論理セクタのマッピングが、その論理セクタがマップする各物理セクタ内に、リーディング・セクタ端、トレーリング・セクタ端、あるいはその両方を生成する、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図９】論理セクタがそれぞれ物理セクタよりバイト単位で小さく、各論理セクタのマッピングが、その論理セクタがマップする各物理セクタ内に、リーディング・セクタ端、トレーリング・セクタ端、あるいはその両方を生成する、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図１０】論理セクタがそれぞれ物理セクタよりバイト単位で小さく、各論理セクタのマッピングが、その論理セクタがマップする各物理セクタ内に、リーディング・セクタ端、トレーリング・セクタ端、あるいはその両方を生成する、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図１１】論理セクタがそれぞれ物理セクタよりバイト単位で小さく、各論理セクタのマッピングが、その論理セクタがマップする各物理セクタ内に、リーディング・セクタ端、トレーリング・セクタ端、あるいはその両方を生成する、論理セクタの物理セクタへの例示的な部分的マッピングを示す図。
【図１】
2008535088.tif 000004
【図２】
2008535088.tif 000005
【図３】
2008535088.tif 000006
【図４】
2008535088.tif 000007
【図５】
2008535088.tif 000008
【図６】
2008535088.tif 000009
【図７】
2008535088.tif 000010
【図８】
2008535088.tif 000011
【図９】
2008535088.tif 000012
【図１０】
2008535088.tif 000013
【図１１】
2008535088.tif 000014
【国際調査報告】
2008535088.tif 000015
2008535088.tif 000016
2008535088.tif 000017