JP2009199266A - データ転送制御装置、データ整合性判定方法及び記憶制御装置 - Google Patents
データ転送制御装置、データ整合性判定方法及び記憶制御装置 Download PDFInfo
- Publication number
- JP2009199266A JP2009199266A JP2008039291A JP2008039291A JP2009199266A JP 2009199266 A JP2009199266 A JP 2009199266A JP 2008039291 A JP2008039291 A JP 2008039291A JP 2008039291 A JP2008039291 A JP 2008039291A JP 2009199266 A JP2009199266 A JP 2009199266A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache memory
- stored
- address
- inspection
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】本発明のデータ転送制御装置は、キャッシュメモリへのデータ転送順序が乱れる場合でも、データがキャッシュメモリに正しく記憶されたか否かを判定できる。
【解決手段】ホスト3から入力されたデータは、キャッシュメモリ2の所定領域3Aに転送されて記憶される。各ブロック毎に第1検査用データが生成され、記憶される。データ整合性判定部6は、データの書込み終了後にキャッシュメモリ2からデータを読み出し、第2検査用コードを改めて生成する。第2検査用コードと第1検査用コードとを比較することにより、データがキャッシュメモリ2に正常に記憶されたか否かを判定することができる。データ整合性判定部6は、キャッシュメモリに書き込まれたデータのアドレスに基づいて、データの整合性を判定することもできる。
【選択図】図1
【解決手段】ホスト3から入力されたデータは、キャッシュメモリ2の所定領域3Aに転送されて記憶される。各ブロック毎に第1検査用データが生成され、記憶される。データ整合性判定部6は、データの書込み終了後にキャッシュメモリ2からデータを読み出し、第2検査用コードを改めて生成する。第2検査用コードと第1検査用コードとを比較することにより、データがキャッシュメモリ2に正常に記憶されたか否かを判定することができる。データ整合性判定部6は、キャッシュメモリに書き込まれたデータのアドレスに基づいて、データの整合性を判定することもできる。
【選択図】図1
Description
本発明は、データ転送制御装置、データ整合性判定方法及び記憶制御装置に関する。
記憶制御装置は、例えば、サーバやメインフレーム等のホストコンピュータ(以下、「ホスト」)に接続される。記憶制御装置は、RAID(Redundant Array of Inexpensive Disks)に基づく記憶領域をホストに提供する。
記憶制御装置では、例えば、RAID1〜RAID6として知られているように、データに冗長性を付加することもできる。記憶制御装置は、データにパリティデータを付加したり、あるいは、データのコピーを別のディスクドライブにも書き込むことにより、ディスクドライブの障害発生時に備えている。
さらに、保証コードを使用する記憶制御装置も知られている(特許文献1)。一つの従来技術では、保証コードとして、ホストコンピュータがアクセス先として指定する論理ブロックの論理アドレス(以下、「LA(Logical Address)」)、及び、論理ブロックのデータについて排他的論理和演算を実施して求められるLRC(Longitudinal Redundancy Check)を、論理ブロックにそれぞれ付加し、この保証コードと論理ブロックとをディスクドライブに保存させる。LAは、論理ブロックのデータが書き込まれる記憶領域のアドレスの誤りを検出するために用いられる。LRCは、論理ブロックのデータの誤りを検出するための誤り検出符号として用いられる。
ところで、キャッシュメモリにデータが順番通りに転送されない場合も考えられる。このような順番通りではない転送状態を、アウトオブオーダと呼ぶことにする。アウトオブオーダが発生した場合でも、各論理ブロックに保証コードを正しく設定する方法が提案されている(特許文献2)。なお、メモリの誤り訂正符号に関する技術も知られている(特許文献3)。
特開2000−347815号公報
特開2006−40011号公報
特開2007−115390号公報
従来技術では、アウトオブオーダが発生した場合でも論理ブロックに保証コードを設定可能である。しかし、この従来技術は、保証コードの設定方法のみを開示しており、全てのデータがキャッシュメモリに正常に転送されたか否かを判定する方法は、全く記載されていない。従って、従来技術では、キャッシュメモリに転送して記憶させるべきデータを全て受信したか否かを正確に判別することができず、使い勝手が低い。
本発明は、上記の問題点に鑑みてなされたもので、その目的は、キャッシュメモリに記憶させるデータの整合性を検出することのできるデータ転送制御装置、データ整合性判定方法及び記憶制御装置を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明の第1観点に従うデータ転送制御装置は、キャッシュメモリへのデータ転送を制御するためのデータ転送制御装置であって、キャッシュメモリへのデータ転送が不連続に実行され得る場合において、受信したデータについて、データのエラーを検出するための検査用データを生成する検査用データ生成部と、生成された検査用データを一時的に記憶するための検査用データ記憶部と、キャッシュメモリに記憶されるデータについて整合性を判定するデータ整合性判定部であって、キャッシュメモリに記憶されるデータが予め指定される指定サイズに一致し、かつ、データの連続性が維持されているか否かを判定するためのデータ整合性判定部と、を備える。
第2観点では、第1観点において、データ整合性判定部は、キャッシュメモリに指定サイズのデータを記憶させる場合に生成される第1検査用データと、キャッシュメモリから指定サイズのデータを読み出す場合に生成される第2検査用データとを比較し、第1検査用データと第2検査用データとが一致する場合に、キャッシュメモリに記憶されたデータに整合性があると判定する。
第3観点では、第2観点において、第1検査用データは検査用データ生成部により生成されて、検査用データ記憶部に記憶されており、第2検査用データはデータ検査回路により生成されるようになっており、データ検査回路は、検査用データ記憶部に記憶される第1検査用データと第2検査用データとを比較し、第1検査用データと第2検査用データとが一致する場合に、キャッシュメモリに記憶されたデータに整合性があると判定するようになっている。
第4観点では、第1観点において、データ整合性判定部は、キャッシュメモリに記憶されるデータを所定サイズ単位で管理するためのビットマップを生成するビットマップ生成部と、ビットマップに基づいてキャッシュメモリに記憶されたデータの整合性を判定するためのビットマップ検査部とを備えている。
第5観点では、第1観点において、データ整合性判定部は、キャッシュメモリに記憶されるデータのアドレスを示すログを管理するためのログ管理部と、ログに基づいてキャッシュメモリに記憶されたデータの整合性を判定するためのログ検査部とを備える。
第6観点では、第5観点において、ログ管理部は、これからキャッシュメモリに転送するデータのアドレスとキャッシュメモリに記憶済のデータのアドレスとを比較することにより、ログ内のアドレスを更新させるようになっており、ログ検査部は、ログに含まれるエントリが1つになった場合に、キャッシュメモリに記憶されたデータに整合性があると判定する。
第7観点では、第1観点において、データ整合性判定部により使用される作業領域が、キャッシュメモリに設けられている。
第8観点では、第1観点において、データ整合性判定部は、さらに、キャッシュメモリから読み出されるデータが予め指定される別の指定サイズに一致し、かつ、読み出されたデータの連続性が維持されているか否かを判定することができる。
第9観点では、第8観点において、データ整合性判定部は、キャッシュメモリから別の指定サイズのデータを読み出す場合に生成される第3検査用データと、別の指定サイズのデータを外部に送信する場合に生成される第4検査用データとを比較し、第3検査用データと第4検査用データとが一致する場合に、キャッシュメモリから読み出されて送信されるデータに整合性があると判定する。
第10観点に従うデータ整合性判定方法は、キャッシュメモリへのデータ転送が不連続に実行され得る場合に、キャッシュメモリに転送されるデータの整合性を判定するためのデータ整合性判定方法であって、受信したデータをキャッシュメモリに転送させるステップと、キャッシュメモリに転送されるデータについて、判定用データを生成するステップと、生成された判定用データを記憶するステップと、予め指定される指定サイズだけ、キャッシュメモリにデータが転送されたか否かを判定するステップと、指定サイズのデータがキャッシュメモリに転送されたと判定された場合、記憶されている判定用データに基づいて、キャッシュメモリに転送されてキャッシュメモリに記憶されたデータの整合性を判定するステップと、を備える。
第11観点では、第10観点において、判定用データは、(A)キャッシュメモリに記憶されるデータのエラーを検出するための検査用データ、(B)キャッシュメモリに記憶されるデータの有無を所定サイズ単位で管理するためのビットマップ、または、(C)キャッシュメモリに記憶されるデータのアドレスのログのうち、いずれか一つとして構成され、データの整合性を判定するステップは、(a)判定用データが検査用データとして構成される場合、データをキャッシュメモリに記憶する場合に生成される第1検査用データと、キャッシュメモリからデータを読み出す場合に生成される第2検査用データとを比較し、第1検査用データと第2検査用データとが一致する場合に、キャッシュメモリに記憶されたデータに整合性があると判定するようになっており、(b)判定用データがビットマップとして構成される場合、ビットマップの全部に、記憶済であることを示すビットがそれぞれ設定されている場合に、キャッシュメモリに記憶されたデータに整合性があると判定するようになっており、(c)判定用データがログとして構成される場合、ログに示される開始アドレス及び終了アドレスが、予め指定される指定サイズに対応する開始アドレス及び終了アドレスに一致する場合に、キャッシュメモリに記憶されたデータに整合性があると判定するようになっている。
第12観点に従う記憶制御装置は、ホストコンピュータと記憶装置との間のデータ送受信を制御するための記憶制御装置であって、ホストコンピュータとの間の通信を実行する第1通信制御部と、記憶装置との間の通信を実行する第2通信制御部と、第1通信制御部及び第2通信制御部との間に設けられ、第1通信制御部及び第2通信制御部とキャッシュメモリとの間のデータ転送をそれぞれ制御するデータ転送制御装置であって、第1通信制御部からキャッシュメモリへのデータ転送が不連続に実行され得るデータ転送制御装置と、を備え、さらに、データ転送制御装置は、受信したデータについて、データのエラーを検出するための検査用データを生成する検査用データ生成部と、生成された検査用データを一時的に記憶するための検査用データ記憶部と、キャッシュメモリに記憶されるデータについて整合性を判定するデータ整合性判定部であって、キャッシュメモリに記憶されるデータが予め指定される指定サイズに一致し、かつ、データの連続性が維持されているか否かを判定するためのデータ整合性判定部とを備えている。
本発明の各部または各ステップの少なくとも一部は、コンピュータプログラムとして構成される場合がある。このコンピュータプログラムは、記録媒体に固定して配布したり、ネットワークを介して配信することができる。
以下、図面に基づいて、本発明の実施の形態を説明する。まず最初に、本発明の概念を説明し、その次に、具体的な実施例について説明する。図1は、本発明の概念を模式的に示す説明図である。図1及び図1に関する以下の記載は、本発明の理解及び実施に必要な程度で、本発明の概要を示しており、本発明の範囲を図1に記載された範囲に限定するものではない。
図1は、本発明に従うデータ転送制御装置を含む情報処理システムの概要を示す説明図である。この情報処理システムは、例えば、データ転送制御装置1(以下、制御装置1とも呼ぶ)と、キャッシュメモリ2と、ホスト3とを備える。
サーバやメインフレーム等として構成されるホスト3は、キャッシュメモリ2に記憶させるべきデータ(ライトデータ)を発行する。制御装置1は、ホスト3から受信したライトデータをキャッシュメモリ2に転送して、キャッシュメモリ2に記憶させる。
キャッシュメモリ2は、ホスト3から受信したライトデータを一時的に記憶するメモリ装置である。なお、後述の実施例から明らかとなるように、論理ボリュームから読み出されたデータも、キャッシュメモリ2に一時的に記憶させることができる。
キャッシュメモリ2は、例えば、受信データ記憶領域2Aと、検査用データ記憶領域2Bと、判定用データ記憶領域2Cとを備えることができる。受信データ記憶領域2Aは、ホスト3から受信したデータまたは論理ボリュームから読み出されたデータを記憶するための領域である。検査用データ記憶領域2Bは、各論理ブロック毎の検査用データを記憶するための領域である。判定用データ記憶領域2Cは、キャッシュメモリ2に記憶されたデータの整合性を判定するためのデータを記憶する領域である。
制御装置1は、ホスト3とキャッシュメモリ2との間のデータ転送を制御する。制御装置1は、ホスト3から受信したデータをキャッシュメモリ2に転送して記憶させる機能のほかに、検査用データ生成部4と、検査用データ記憶部5と、整合性判定部6とを備えている。
検査用データとは、論理アドレス(LA)やLRCから構成される、データの正しさを保証するためのコードである。検査用データ生成部4は、各論理ブロック毎にそれぞれ検査用データを生成するための機能である。検査用データ記憶部5は、生成された検査用データを一時的に記憶するための機能である。
整合性判定部6は、キャッシュメモリ2に記憶されるデータの整合性を判定するための機能である。整合性とは、例えば、キャッシュメモリ2に記憶させるべき全データがキャッシュメモリ2に正しく記憶されていることを意味する。
整合性判定部6は、以下に述べるように、複数種類の方法7〜9のいずれか一つによって、データの整合性を判定可能である。第1の判定方法7は、整合性を判定するための判定用データとして、検査用データ(保証コード)を用いる方法である。第2の判定方法8は、判定用データとして、ビットマップを用いる方法である。第3の判定方法9は、判定用データとして、キャッシュメモリ2に記憶されるデータのアドレスのログを用いる方法である。
第1の判定方法7では、ホスト3から受信したデータをキャッシュメモリ2に記憶させる場合に生成される検査用データと、キャッシュメモリ2からデータを読み出した場合に生成される検査用データとを比較する。
ホスト3からデータを受信すると、検査用データ生成部4は、受信データの各論理ブロック毎にそれぞれ検査用データを生成し、これら生成された各検査用データは、検査用データ記憶部5に記憶される。
ライトコマンドによって指定されたサイズだけライトデータを受信した場合、別の検査用データ生成部7Aは、キャッシュメモリ2からデータを読み出して、検査用データを改めて生成する。検査用データ比較部7Bは、ライトデータの受信時に生成された検査用データ(第1検査用データ)と、キャッシュメモリ2からのライトデータ読み出し時に生成される検査用データ(第2検査用データ)とを比較し、一致するか否かを判定する。
受信時の検査用データと読み出し時の検査用データとが一致する場合、ホスト3から受信した全データを正しくキャッシュメモリ2に記憶させることができた場合である。つまり、正常に転送が完了した場合である。これに対し、受信時の検査用データと読み出し時の検査用データとが不一致の場合、記憶されるべきデータがキャッシュメモリ2に正しく記憶されていない場合である。つまり、転送が異常終了した場合である。整合性判定部6は、正常終了または異常終了のいずれかの判定結果6Aを出力する。異常終了が出力される場合、ホスト3は、ライトデータを再び送信する。
第2の判定方法8では、所定サイズ単位で、ホスト3から受信したデータを管理するためのビットマップを用い、ビットマップの全ビットが設定された場合に、キャッシュメモリ2にデータが正しく記憶されたと判定する。
ビットマップ生成部8Aは、ホスト3から指定されたサイズに対応するビットマップを生成する。ホスト3は、ライトコマンドによって、ライトデータのサイズを事前に通知することができる。ビットマップ生成部8Aは、ホスト3から所定サイズのデータを受信する度に、ビットマップを更新する。受信された部分に対応するビットには、例えば、「1」が設定される。ビットマップは、ビットマップ記憶部8Bに記憶される。
ビットマップ検査部8Cは、ビットマップ記憶部8Bに記憶されたビットマップを読み出し、全てのビットに受信済であることを示す値(例えば「1」)が設定されているか否かを検査する。ビットマップの全ビットが受信済に設定されている場合、キャッシュメモリ2にデータが正しく記憶されていることを意味する。
第3の判定方法9では、ログアドレスに基づいて、キャッシュメモリ2にデータが正しく記憶されているか否かを判定する。ログアドレス管理部9Aは、キャッシュメモリ2に記憶されたデータのアドレスを示すログアドレスを管理する。ログアドレスには、開始アドレスと終了アドレスとが記録される。ログアドレス検査部9Cは、ログアドレス記憶部9Bからログアドレスを読み出し、ログアドレスに基づいて、キャッシュメモリ2に記憶されたデータの整合性を判定する。
簡単な例で説明すると、ホスト3は、開始アドレス及びデータサイズを指定して、ライトコマンドを発行する。従って、開始アドレスにデータサイズを加えた値が終了アドレスとなる。ライトデータが断片的に不連続に送信された場合、各断片データの開始アドレス及び終了アドレスが、ログアドレスとして記憶される。
例えば、第1の断片データの終了アドレスと第2の断片データの開始アドレスとが一致する場合、第1の断片データの終了アドレスは、第2の断片データの終了アドレスに更新される。第1の断片データと第2の断片データとは連続するデータであると判定されるためである。このように、受信される各データのアドレスをそれぞれ検査することにより、ログアドレスには、開始アドレス及び終了アドレスがそれぞれ一つずつ残る。この場合、キャッシュメモリ2にデータが正しく記憶されたと判定することができる。これに対し、もしも、データの一部が脱落した場合は、開始アドレスと終了アドレスとのペアが複数存在することになる。
このように構成される本実施形態によれば、データがキャッシュメモリ2に不連続に転送される場合であっても、キャッシュメモリ2に記憶されるデータの整合性を判定することができ、使い勝手が向上する。
本実施形態では、第1の判定方法7〜第3の判定方法9のいずれか一つを用いることにより、データがキャッシュメモリ2に正しく記憶されたか否かを判定できる。従って、例えば、必要とする判定精度、使用可能なメモリサイズや判定所要時間等に応じて、いずれかの判定方法を採用すればよい。
例えば、第1の判定方法の場合、キャッシュメモリ2に誤ったデータが記憶されている場合でも、第1検査用データと第2検査用データとが偶然一致する可能性がある。つまり、LRCによるエラー検出には限界がある。
第2の判定方法の場合、キャッシュメモリ2に転送されたか否かをビットマップを用いて管理するため、第1の判定方法よりも確実に整合性を判定することができる。しかし、ビットマップを保存するためのバッファのサイズが大きくなる。複数のライトコマンドを同時に処理可能な仕様にする場合、各ライトコマンド毎にそれぞれビットマップを用意し、保存しなければならない。
第3の判定方法の場合、キャッシュメモリ2に記憶されたデータのアドレスを管理するため、第1の判定方法よりも確実にデータの整合性を判定できる。また、ビットマップを用いないため、判定に必要なバッファのサイズは、第2の判定方法よりも少ない。しかし、受信データの断片化の度合に応じて(データの不連続の状況に応じて)、ログアドレスのエントリ数を設定する必要がある。エントリ数を大きく設定すると、バッファを無駄に使用する可能性がある。以下、本実施形態を詳細に説明する。
図2は、本実施例に係る記憶制御装置10を含む情報処理システムの全体構成を示す説明図である。この情報処理システムは、例えば、少なくとも一つの記憶制御装置10と、少なくとも一つの記憶ドライブ搭載部20と、少なくとも一つのホスト30とを含んで構成される。記憶制御装置10内のデータ転送制御回路15は、図1中のデータ転送制御装置1に対応する。
先に、記憶ドライブ搭載部(以下、HDU)20とホスト30について説明し、次に、記憶制御装置10の構成を説明する。記憶ドライブ搭載部20は、複数の記憶ドライブ21を備えている。各記憶ドライブ21は、例えば、ハードディスクデバイスとして構成される。ハードディスクデバイスに限らず、フラッシュメモリデバイス、光磁気記憶デバイス、ホログラフィックメモリデバイス等を用いる構成でもよい。
RAID構成等によっても相違するが、例えば、2個1組や4個1組等の所定数の記憶ドライブ21によって、パリティグループが構成される。パリティグループは、パリティグループ内の各記憶ドライブ21がそれぞれ有する物理的記憶領域を、一つの記憶領域として仮想化したものである。パリティグループの有する物理的記憶領域には、論理デバイスである論理ボリューム22を一つ以上設けることができる。なお、一つの記憶ドライブ21の物理的記憶領域に、一つ以上の論理ボリューム22を設ける構成でもよい。
ホスト30は、例えば、サーバやメインフレームコンピュータとして構成され、通信ネットワークCN10,CN11を介して、記憶制御装置10に接続される。一方の通信ネットワークCN10は、例えば、FC−SAN(Fibre Channel-Storage Area Network)のように構成される。他方の通信ネットワークCN11は、例えば、IP−SAN(Internet Protocol-Storage Area Network)のように構成される。つまり、記憶制御装置10は、メインフレーム系ホスト(ホスト1,ホスト2)と、オープン系ホスト(ホスト3,ホスト4)のいずれにも対応可能である。
記憶制御装置10は、例えば、「第1通信制御部」としてのホスト通信制御部11と、「第2通信制御部」としてのディスク通信制御部12と、マイクロプロセッサ制御部13(図中、MP制御部13)と、キャッシュメモリ14と、データ転送制御回路15と、データ転送経路16とを備える。
ホスト通信制御部11は、ホスト30との間の通信を制御する回路である。ホスト通信制御部11の詳細は、図3と共に後述する。ディスク通信制御部12は、各記憶ドライブ21との通信を制御する回路である。
マイクロプロセッサ制御部13は、ホスト30から受領したコマンドに応じて、ホスト通信制御部11やディスク通信制御部12及びデータ転送制御回路15をそれぞれ制御する回路である。
データ転送制御回路15は、制御情報(データ入出力要求)やデータの転送を制御する回路である。データ転送制御回路15は、ホスト通信制御部11とマイクロプロセッサ制御部13との間の制御情報の受け渡しや、ディスク通信制御部12とマイクロプロセッサ制御部13との間の制御情報の受け渡しを制御する。
さらに、データ転送制御回路15は、ホスト通信制御部11とキャッシュメモリ14との間のデータ送受信と、ディスク通信制御部12とキャッシュメモリ14との間のデータ送受信とを制御する。なお、データ通信経路16は、例えば、PCI Expressのようなシリアル転送インターフェースとして構成される。
データ転送制御回路15は、例えば、第1データ転送回路110と、第2データ転送回路170と、キャッシュコントローラ180とを備える。第1データ転送回路110は、ホスト通信制御部11とキャッシュメモリ14との間のデータ転送を実行する。第2データ転送回路170は、ディスク通信制御部12とキャッシュメモリ14との間のデータ転送を実行する。キャッシュコントローラ180は、キャッシュメモリ14へのデータ入出力を制御する。
第1データ転送回路110及び第2データ転送回路170には、後述のように、検査用データとしてのブロック保証コード(BCCと略記)の生成及びチェックを行う機能を設けることができる。
例えば、ホスト通信制御部11がホスト30からライトコマンドを受信した場合、ホスト通信制御部11は、データ転送制御回路15を介して、マイクロプロセッサ制御部13にライトコマンドを転送する。
マイクロプロセッサ制御部13は、受領したライトコマンドに従って第1データ転送回路110に転送用パラメータを設定し、ホスト通信制御部11にデータ転送の開始を指示する。これにより、データは、ホスト通信制御部11からデータ転送制御回路15を介してキャッシュメモリ14に転送され、キャッシュメモリ14に格納される。ホスト通信制御部11は、データをキャッシュメモリ14に格納した旨をマイクロプロセッサ制御部13に通知する。
マイクロプロセッサ制御部13は、第2データ転送回路170に転送用パラメータを設定し、ディスク通信制御部12に論理ボリューム22へのデータ転送を指示する。これにより、キャッシュメモリ14から読み出されたデータは、ディスク通信制御部12を介して、論理ボリューム22を構成する記憶ドライブ21に書き込まれる。
ホスト通信制御部11がホスト30からリードコマンドを受信した場合、読み出し対象のデータが、キャッシュメモリ14に存在するか否かを調べる。キャッシュメモリ14に読み出しデータが存在しない場合、マイクロプロセッサ制御部13は、第2データ転送回路170に転送用パラメータを設定し、ディスク通信制御部12にデータ転送の開始を指示する。ディスク通信制御部12は、読み出し対象のデータを論理ボリューム22から読み出して、キャッシュメモリ14に格納する。
マイクロプロセッサ制御部13は、第1データ転送回路110に転送用パラメータを設定し、ホスト通信制御部11にデータ転送の開始を指示する。ホスト通信制御部11は、キャッシュメモリ14に格納されたデータを読み出して、ホスト30に送信する。
図3は、ホスト通信制御部11の構成を模式的に示すブロック図である。ホスト通信制御部11は、例えば、通信プロトコル回路11Aと、受信バッファ11Bと、複数のDMA(Direct Memory Access)回路11Cと、送信バッファ11Dと、PCI Express用の通信インターフェース回路11Eとを備える。
つまり、ホスト通信制御部11は、ホスト30から受信したライトデータを、複数のDMA回路11Cを用いて、データ転送制御回路15に送信する。各DMA回路11Cは、それぞれ並列に動作する。
従って、ホスト通信制御部11がホスト30から連続したライトデータを受信しても、ホスト通信制御部11から第1データ転送回路110には、不連続なデータが送信される可能性がある。即ち、ホスト通信制御部11から第1データ転送回路110には、順番が入れ替わってデータが転送される場合がある。データの順番が連続ではなく、不連続になることを、アウトオブオーダの発生と呼ぶ。
図4は、第1データ転送回路110の構成を模式的に示すブロック図である。第1データ転送回路110は、例えば、BCC(Block Check Code)を生成するためのBCC生成回路111と、BCCを記憶するためのBCCバッファ112と、データチェック回路113と、転送長カウンタ114とを備える。
データチェック回路113は、キャッシュメモリ14から読み込んだ各論理ブロックのデータに基づいてBCCを生成する機能と、この生成されたBCCとBCCバッファ112から読み出したBCCとを比較する機能とを備える。
転送長カウンタ114は、第1データ転送回路110を介して転送されるデータのサイズを検出する回路である。転送長カウンタ114によって、第1データ転送回路110を介して転送されるデータのサイズが、ホスト30から指定されたサイズ(転送長)に達したか否かを判定することができる。
図4中の左側には、ホスト30から受信されたライトデータが示されている。このライトデータは、複数の論理ブロックから構成される。各論理ブロックのサイズは、例えば、512バイトである。
ライトデータは、ホスト通信制御部11からデータ通信経路16を介して第1データ転送回路110に入力される。ライトデータは、経路P10を介して、キャッシュメモリ14に転送され、キャッシュメモリ14に記憶される。
第1データ転送回路110に入力されたライトデータは、経路P11を介して、BCC生成回路111にも入力される。BCC生成回路111は、入力されたライトデータについて、各論理ブロック毎にBCCを生成する。生成されたBCCは、BCCバッファ112に記憶される。
BCCバッファ112は、一回のライトコマンドで転送可能な最大ブロック数に対応可能なサイズを有する。BCCは、上述の通りLRC(水平パリティ部)を備える。従って、一つの論理ブロックに関する完全なBCCを生成するためには、その論理ブロックの全体がBCC生成回路111に入力される必要がある。BCCバッファ112には、BCCを算出するための途中結果を、各論理ブロック毎にそれぞれ記憶可能である。
ある論理ブロックの半分だけがBCC生成回路111に入力された場合、BCC生成回路111は、その半分の論理ブロックに基づいてBCC演算を行う。BCC生成回路111から出力されるBCC演算の途中結果は、BCCバッファ112に記憶される。
残りの半分の論理ブロックがBCC生成回路111に入力されると、BCC生成回路111は、前回算出した途中結果の値をBCCバッファ112から経路P12を介して取得し、その途中結果の値を利用して完全なBCCを算出する。完全なBCCは、BCCバッファ112に格納されると共に、キャッシュメモリ14にも記憶される。
このように、BCCバッファ112は、BCCを算出するためと、算出されたBCCを記憶するためとに使用される。BCCバッファ112を廃止し、キャッシュメモリ14内にBCCを一時記憶する作業領域を設けることもできる。
但し、BCCバッファ112に代わる作業領域をキャッシュメモリ14に設ける場合は、キャッシュメモリ14へのアクセス頻度が増大し、データ転送性能に悪影響を及ぼす可能性がある。そこで、本実施例では、第1データ転送回路110内にBCCバッファ112を設ける。これにより、BCC演算のためのキャッシュアクセスを無くして、データ転送性能の向上を図ることができる。
ライトコマンドにより指定されたサイズのライトデータを受信した場合、データチェック回路113は、キャッシュメモリ14からライトデータ(ブロック#0〜#n)を読み出して、各論理ブロック毎にBCCを算出する。
データチェック回路113は、改めて算出されたBCCとBCCバッファ112に記憶されているBCCとを比較する。両方のBCCが一致する場合、ホスト30から入力された全てのデータがキャッシュメモリ14に書き込まれたと判定することができる。
図5は、データ転送処理の概略を示すフローチャートである。なお、以下に示す各フローチャートは、本発明の理解及び実施に必要な程度で各処理の概要をそれぞれ示しており、実際のコンピュータプログラムとは相違する場合がある。いわゆる当業者であれば、図示されたステップの変更、新規なステップの追加、既存ステップの削除を行うことができるであろう。
第1データ転送回路110(以下、転送回路110とも呼ぶ)は、転送パラメータをセットし、BCCバッファ112を初期化する(S10)。即ち、転送開始時に、転送回路110は、ライトコマンドによって指定されるブロック数(ライトデータのサイズ)に応じたBCCバッファエリアを初期化する(S10)。
例えば、3個の論理ブロックをキャッシュメモリ14に転送しようとする場合、転送回路110は、3個のBCCを保持するべく、BCCバッファのエリアを初期化する。各論理ブロックに関するBCCをそれぞれ保持するためである。
そして、転送回路110は、ホスト通信制御部11からデータが入力されるのを待つ(S11)。ホスト通信制御部11からのライトデータが到着すると(S11:YES)、転送回路110は、そのライトデータのアドレスに基づいて、対応する論理ブロックの番号を算出する(S12)。転送回路110は、算出されたブロック番号に対応するBCCをBCCバッファ112から読み出す(S12)。
転送回路110は、S11で入力されたデータについてBCCを演算し、その演算結果をBCCバッファ112内の所定エリアに書き込む(S13)。つまり、BCCにはLRCが含まれるため、転送回路110(より正確には、BCC生成回路111)は、一つの論理ブロックの全データを受信するまで、完全なBCCを得ることができない。そこで、転送回路110は、BCCバッファ112に蓄積された演算途中結果を読み込んで、BCCを演算する(S13)。さらに、転送回路110は、S11で受信したライトデータをキャッシュメモリ14に転送して記憶させる(S13)。
転送回路110は、S11で受信したデータのサイズ分だけ転送長カウンタ114の値を更新させる(S14)。転送回路110は、転送長カウンタ114の値がライトコマンドで指定された転送長に一致したか否かを判定する(S15)。転送回路110は、指定されたサイズのデータを受信するまで、S11〜S14を繰り返す(s15)。例えば、指定転送長として論理ブロック3個分のサイズが指定された場合、転送回路110は、論理ブロック3個分のデータをキャッシュメモリ14に転送し終えるまで、各論理ブロックのBCCを演算しながら、データをキャッシュメモリ14に転送する。
指定されたサイズのライトデータをキャッシュメモリ14に転送した場合(S15:YES)、転送回路110は、BCCバッファ112に記憶されているBCCを、BCCバッファ112からキャッシュメモリ14に転送させて、キャッシュメモリ14内の所定場所に記憶させる(S16)。図4の右側に示すように、キャッシュメモリ14には、各論理ブロックのデータと、各論理ブロックのデータから算出されるBCCとが、それぞれ記憶されるようになっている。
続いて、転送回路110は、データチェック回路113を用いて、キャッシュメモリ14に格納されたデータが整合性を有するか否かを判定する。まず、転送回路110は、キャッシュメモリ14から1つの論理ブロックのデータを読み出し(S17)、読み出したデータについてBCCを改めて算出する(S18)。
転送回路110のデータチェック回路113は、S18で算出されたBCCと、BCCバッファ112に記憶されているBCCとが一致するか否か判定する(S19)。転送回路110は、指定されたサイズのデータを読み出すまで(上記の例では、3個の論理ブロックのデータを読み出すまで)、S17〜S19を繰り返す(S20)。
つまり、転送回路110は、キャッシュメモリ14に格納された全てのライトデータについて、各論理ブロック毎に、既に生成されているBCC(BCCバッファ112に記憶されているBCC)と改めて算出されるBCCとをそれぞれ比較する。
キャッシュメモリ14に格納するときに生成されたBCC(BCCバッファ112に記憶されているBCC)と、キャッシュメモリ14から読み出したときに生成されるBCCとが一致する場合(S19:YES)、その論理ブロックのデータは正しくキャッシュメモリ14に記憶されていると判定できる。
これに対し、BCCバッファ112に記憶されているBCCとキャッシュメモリ14からデータを読み出す際に算出されるBCCとが不一致の場合(S19:NO)、キャッシュメモリ14に記憶されたデータに何らかの異常が生じていると判定できる。そこで、この場合(S19:NO)、転送回路110は、データ転送処理を異常終了させる。異常終了された旨は、ホスト通信制御部11を介してホスト30に通知される。その通知を受領したホスト30は、再度ライトコマンドを発行し、データの書込みを試みる。
指定されたサイズだけBCCのチェックを行った場合(S20:YES)、転送回路110は、回路異常が検出されたか否かを判定する(S21)。回路異常が検出されなかった場合(S21:NO)、データ転送処理は正常に終了する。回路異常が検出された場合(S21:YES)、データ転送処理は異常終了する。
回路異常について説明する。本実施例では、データを移動させる度にBCCをチェックすることにより、異常が生じたか否かを監視する。従って、例えば、S12やS13等においてデータを移動させる場合、転送回路110は、BCCの値を確認し、異常が生じたか否かを判定する。異常が検出された場合、転送回路110は、回路異常の発生を示すフラグをセットする。そして、転送回路110は、S21において、回路異常の発生を示すフラグがセットされているか否かを確認することにより、回路異常が検出されたか否かを判定する。なお、上述の説明に代えて、データ移動時に回路異常の発生が検出された場合、その時点でデータ転送処理を異常終了させる構成でもよい。
図6〜図9に基づいて、キャッシュメモリ14へのデータの格納方法と、キャッシュメモリ14に格納されたデータの整合性をチェックする方法とを説明する。以下の説明では、ブロック番号#0〜ブロック番号#2までの合計3個の論理ブロックのデータを、キャッシュメモリ14に格納させる場合を説明する。従って、BCCバッファ112には、3個のBCCをそれぞれ保持するために、3つのエリアが設けられる。キャッシュメモリ14には、3個の論理ブロックのデータを格納するための記憶領域が確保される。
なお、説明の便宜上、各論理ブロックは、それぞれ半分ずつの単位で、転送されるものとする。例えば、ブロック番号#0の論理ブロックは、#0aと#0bの2つのデータに分かれて転送される。ブロック番号#1の論理ブロックは、#1aと#1bの2つのデータに分かれて転送される。同様に、ブロック番号#2の論理ブロックは、#2aと#2bの2つのデータに分かれて転送される。
図6(a)に示すように、最初のデータ#0aが転送回路110に入力されると、この最初のデータ#0aはキャッシュメモリ14の所定の場所に格納される。BCC生成回路111は、データ(#0a)に基づいてBCC(LRC)を算出し、その算出結果(BCC#0a)をBCCバッファ112の所定エリアに格納する。BCCバッファ112内の他のエリアには、それぞれ初期値が格納されている。BCCバッファ112に格納されたBCC#0aは、データ#0aに関するBCCの演算途中結果であり、完全なBCC値ではない。
図6(b)に示すように、最初の論理ブロック#0に関する完全なBCCは、前半部分のデータ#0aと後半部分のデータ#0bとの両方が入力された場合に生成される。最初の論理ブロック#0の後半部分のデータ#0bが転送回路110に入力されると、BCC生成回路111は、BCCバッファ112に格納されている途中結果BCC#0aとデータ#0bとに基づいて、論理ブロック#0に関するBCC#0を生成する。生成されたBCC#0は、BCCバッファ112に記憶される。なお、入力されたデータ#0bは、キャッシュメモリ14に格納される。
図7(a)は、次の論理ブロック#1の前半部分のデータ#1aが転送回路110に入力された場合を示す。データ#1aはキャッシュメモリ14の所定場所に格納される。BCC生成回路111は、初期値及びデータ#1aに基づいて、BCCの途中結果BCC#1aを算出する。この途中結果BCC#1aは、BCCバッファ112の所定エリアに格納される。
図7(b)は、データの受信に関してアウトオブオーダが発生した様子を示す。論理ブロック#1の後半部分のデータ#1bを受信するよりも前に、論理ブロック#2の前半部分のデータ#2aを先に受信した場合が示されている。
本来であれば、#0a→#0b→#1a→#1b→#2aの順番でデータが入力されるべきであるが、#1bと#2aとの受信順序が入れ替わってしまい、アウトオブオーダ状態が発生している。
この場合、後半部分のデータ#1bが未着であるから、2番目の論理ブロック#1に関する完全なBCCを生成することができない。従って、BCCバッファ112には、途中結果BCC#1aが記憶されている。同様に、3番目の論理ブロック#2に関する途中結果BCC#2aもBCCバッファ112に記憶される。
図8(a)は、論理ブロック#1の後半部分のデータ#1bを受信した様子を示す。これにより、論理ブロック#1の全データが揃うため、BCC生成回路111は、論理ブロック#1に関する完全なBCCを算出することができる。算出されたBCC#1は、BCCバッファ112に記憶される。
図8(b)は、論理ブロック#2の後半部分のデータ#2bを受信した様子を示す。つまり、転送回路110が全てのデータを受信した場合を示す。BCC生成回路111は、論理ブロック#2に関する完全なBCCを生成することができる。生成されたBCC#2はBCCバッファ112に記憶される。
図9(a)は、BCCバッファ112に記憶されている各論理ブロックのBCC(#0〜#2)を、キャッシュメモリ14に転送して記憶させる様子を示す。
図9(b)は、データチェック回路113によって、キャッシュメモリ14に記憶されたデータの整合性をチェックする様子を示す。この処理は、図5中のS17〜S21に対応する。データチェック回路113は、例えば、BCC生成回路1131と、BCC比較回路1132とを備える。
BCC生成回路1131は、チェック対象の各論理ブロックのデータをキャッシュメモリ14から読込み、各論理ブロック毎にそれぞれBCCを算出する。BCC生成回路1131によって改めて算出されるBCCは、「第2検査用データ」に該当する。
次に、BCC比較回路1132は、BCC生成回路1131により生成されるBCCと、BCCバッファ112に保持されているBCCとを比較し、両者が一致するか否かを判定する。指定されたサイズの全論理ブロックについて、記憶時に生成されたBCCと読み出し時に生成されるBCCとがそれぞれ比較される。両方のBCCが一致する場合、他に回路異常が発生していなければ、データ転送は正常に終了したと判定できる。
このように構成される本実施例によれば、キャッシュメモリ14へのデータ転送にアウトオブオーダ状況が生じた場合でも、キャッシュメモリ14に記憶されるデータに整合性があるか否かを判定することができ、使い勝手が向上する。
図10〜図14に基づいて、本発明の第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に該当する。本実施例では、ライトデータがキャッシュメモリ14に書き込まれたか否かをビットマップ(図中、BMP)で管理する。
第1データ転送回路110Aは、例えば、BCC生成回路111と、BCCバッファ112と、転送長カウンタ114と、ビットマップ制御回路120と、ビットマップバッファ121と、ビットマップ監視回路122とを備えている。
ホスト30からのライトデータは、経路P10を介してキャッシュメモリ14に転送され記憶される。また、ホスト30からのライトデータは、経路P11aを介して、BCC生成回路111及びビットマップ制御回路120にそれぞれ入力される。ビットマップ制御回路120は、経路P14を介して、ビットマップバッファ121に記憶されているビットマップを読み出すことができる。
BCC生成回路111,BCCバッファ112及び転送長カウンタ114は、第1実施例と同様の機能を実現する。即ち、BCC生成回路111は、各論理ブロック毎に、データ検査用のBCCをそれぞれ算出する。算出されたBCCは、BCCバッファ112に記憶される。ライトコマンドにより指定されるサイズのデータを受信すると、BCCバッファ112に記憶された各BCCは、キャッシュメモリ14に転送されて記憶される。
ビットマップ制御回路120は、キャッシュメモリ14に記憶されるライトデータについてビットマップを作成する。ビットマップは、ライトデータが受信されたか否かを所定サイズ単位で管理する。ビットマップは、ライトデータに含まれる各論理ブロック毎にそれぞれ用意される。ビットマップの詳細は、図11と共に後述する。
ビットマップバッファ121は、ライトデータを構成する各論理ブロックにそれぞれ対応するビットマップを保持する。第1実施例でも同様であるが、転送回路110Aは、複数のライト処理を並列にそれぞれ処理することができる。即ち、転送回路110Aは、複数のライトコマンドをほぼ同時に処理することができる。
従って、同時に処理可能なライトコマンドの数に応じて、ビットマップを用意する必要がある。例えば、ライトコマンドで指定されるデータサイズを仮に8ブロックとし、同時に処理可能なライトコマンドの数を仮に4とするならば、合計32(=4×8)のビットマップが用意される。
従って、ビットマップバッファ121のサイズを、32個のビットマップをそれぞれ記憶させるための値に設定してもよい。しかし、この場合は、ビットマップバッファ121のサイズが大きくなる。
そこで、本実施例では、ビットマップの格納領域をキャッシュメモリ14にも用意し、ライトコマンドに応じてキャッシュメモリ14からビットマップを読み出して、ビットマップバッファ121に記憶させる。
つまり、上記の例で説明すると、4個のライトコマンド毎に、それぞれ8個ずつのビットマップを予め用意する。8個のビットマップを一つのビットマップグループとして考えると、4つのビットマップグループが用意される。これら4つのビットマップグループは、それぞれキャッシュメモリ14に格納される。
ビットマップバッファ121には、4つのビットマップグループのうち、現在転送処理中のライトデータに対応するビットマップグループのビットマップがセットされる。現在転送処理中のデータに含まれるアドレス情報からブロック番号を算出し、算出されたブロック番号に対応するビットマップグループを特定する。そして、特定されたビットマップグループに属する各ビットマップをキャッシュメモリ14から読み出して、ビットマップバッファ121に記憶させる。
ビットマップ監視回路122は、現在転送処理中のライトデータに対応するビットマップグループを特定し、ビットマップバッファ121に記憶されるべきビットマップを切り換えさせる。
図11は、ビットマップT10の一例を示す説明図である。本実施例では、ライトデータを構成する各論理ブロック毎にそれぞれビットマップT10が用意される。論理ブロックのサイズは、例えば512バイトである。ビットマップT10は、論理ブロックの各バイト毎に、データを受信したか否かを管理する。
従って、ブロックサイズが512バイトの場合、ビットマップT10のサイズは、512ビットとなる。ビットマップT10の各ビットのうち、転送回路110Aに入力されたデータに対応するビットには、「1」が設定される。ビットマップT10の全ビットに1が設定された場合、そのビットマップT10によって管理されている論理ブロックの全データが受信されたことを意味する。
図12は、ビットマップの切替作業等を模式的に示す説明図である。上述の通り、キャッシュメモリ14には、各ライトコマンドに対応する各論理ブロック毎のビットマップがそれぞれ記憶されている。図12では、上述のビットマップグループをマップ番号で区別する。各ライトコマンド毎にマップ番号が対応付けられる。
ビットマップ監視回路122は、転送回路110Aに入力されたライトデータからブロック番号を検出し、検出したブロック番号に対応するマップ番号を特定する。特定されたマップ番号に対応するビットマップがキャッシュメモリ14から読み出されて、ビットマップバッファ121に記憶される。ビットマップバッファ121に記憶されていた、前のビットマップは、キャッシュメモリ14に転送されて記憶される。
ビットマップ制御回路120は、転送回路110Aに入力されたライトデータに基づいて、ビットマップバッファ121に記憶されたビットマップを更新する。つまり、ビットマップ制御回路120は、受信済のデータに対応するビットに「1」を設定する。
予め指定されたサイズのデータが転送回路110Aに入力されると、ビットマップ制御回路120は、各ビットマップの全ビットにそれぞれ「1」が設定されているか否かを検査する。
ビットマップ内の全ビットに「1」が設定されている場合、そのビットマップに対応する論理ブロックの全データは、受信されてキャッシュメモリ14に記憶されている。ビットマップが「0」のビットを有する場合、そのビットに対応するデータは受信されておらず、キャッシュメモリ14に記憶されていない。
図13に基づいて本実施例によるデータ転送処理を説明する。転送回路110Aは、ビットマップバッファ121を初期化する(S30)。ホスト通信制御部11からのライトデータが到着すると(S31:YES)、転送回路110Aのビットマップ監視回路122は、ライトデータの開始アドレス及び転送サイズに基づいてブロック番号を検出し、その検出されたブロック番号に対応するマップ番号を特定する(S32)。
続いて、ビットマップ監視回路122は、S31で受信したデータのブロック番号と、ビットマップバッファ121に設定されているマップ番号とが対応するか否かを判定する(S33)。
受信したデータのブロック番号とビットマップバッファ121に設定されているビットマップのマップ番号とが対応しない場合(S33:NO)、ビットマップ監視回路122は、ビットマップバッファ121に記憶されている各ビットマップをキャッシュメモリ14に退避させる(S34)。ビットマップ監視回路122は、S31で受信したデータのブロック番号に対応するマップ番号に基づいて、そのマップ番号に属する各ビットマップをビットマップバッファ121に転送し、記憶させる(S35)。
ビットマップ制御回路120は、ビットマップバッファ121に設定されている各ビットマップのうち、S31で受信したデータに対応するビットマップ内の所定ビットを更新させる(S36)。所定ビットとは、S31で受信したデータに対応する各ビットを意味する。
なお、受信データのブロック番号とビットマップバッファ121に設定されているビットマップのマップ番号とが対応する場合(S33:YES)、S34,S35はスキップされ、S36に移る。
転送長カウンタ114のカウント値がライトコマンドで指定されたサイズと一致するまで、S31〜S36が繰り返し実行される。指定サイズのデータについてビットマップを更新させた後(S37:YES)、ビットマップ制御回路120は、ビットマップバッファ121に記憶されている各ビットマップをキャッシュメモリ14に転送し、キャッシュメモリ14に記憶させる(S38)。そして、ビットマップ制御回路120は、ビットマップに基づいてデータの整合性をチェックする(S39)。
図14は、図13中にS39で示すデータチェック処理のフローチャートである。ビットマップ制御回路120は、S31で受信したデータに対応するビットマップをキャッシュメモリ14から読み出す(S390)。なお、キャッシュメモリ14から読み出さずに、ビットマップバッファ121からビットマップを読み出す構成でもよい。
ビットマップ制御回路120は、読み出したビットマップの全ビットに受信済であることを示す値「1」が設定されているか否かを判定する(S391)。一つでも未更新のビットがある場合(S391:NO)、つまり、一つでも「1」に設定されていないビットが存在する場合(S391:NO)、データ転送処理は異常終了する。
ビットマップの全ビットが更新されている場合(S391:YES)、つまり、ビットマップの全ビットに「1」が設定されている場合(S391:YES)、転送回路110Aは、回路異常が検出されたか否かを判定する(S392)。第1実施例で述べたように、BCCの値を監視しながらデータを移動させており、BCCの変化によって回路異常が検出された場合は、回路異常の検出を示すフラグをセットするようになっている。
回路異常が検出されなかった場合(S392:NO)、データ転送処理は正常終了する。回路異常が検出された場合(S392:YES)、データ転送処理は異常終了する。
このように構成される本実施例も第1実施例と同様の効果を奏する。本実施例では、ライトデータがキャッシュメモリ14に記憶されたか否かを、ビットマップによって管理するため、第1実施例よりも正確にデータの整合性を判定できる。
第1実施例の場合は、例えば、複数回データが書き込まれた場所のBCCや、一回もデータが書き込まれなかった場所のBCCが、偶然正しいデータのBCCと一致してしまう可能性が残る。この場合、第1実施例では、データ転送のエラーを検出できない。これに対し、本実施例では、ライトデータがキャッシュメモリ14に書き込まれたか否かを、所定サイズ(1バイト単位)で管理するため、データ転送が正常に行われたか否かを正確に判定することができる。
図15〜図20に基づいて第3実施例を説明する。本実施例では、キャッシュメモリ14に転送されたデータのアドレスをログアドレスとして管理し、ログアドレスに基づいてデータが正常にキャッシュメモリ14に記憶されたか否かを判定する。
図15は、本実施例による転送回路110Bを示す。この転送回路110Bは、例えば、BCC生成回路111と、BCCバッファ112と、転送長カウンタ114と、ログアドレス更新回路130と、ログバッファ131と、ログ監視回路132とを備える。
ホスト30からのライトデータは、経路P10を介してキャッシュメモリ14に転送され、記憶される。また、ホスト30からのライトデータは、経路P11Bを介して、BCC生成回路111及びログアドレス更新回路130にそれぞれ入力される。ログアドレス更新回路130は、経路P15を介して、ログバッファ131に記憶されているログドレスを読み出すことができる。
キャッシュメモリ14には、複数のライトコマンドのそれぞれに対応するログが記憶されている。例えば、ログ#0はライトコマンド#0に、ログ#1はライトコマンド#1に、ログ#2はライトコマンド#2にそれぞれ対応する。つまり、各ライトコマンド毎に、それぞれどこからどこまでの範囲でライトデータがキャッシュメモリ14に書き込まれたかを、ログアドレスによって管理する。ログ監視回路132は、後述のように、ライトコマンドの番号に応じたログ(ログアドレス)を、ログバッファ131に設定させる。
図16は、ログアドレスに基づいてデータの整合性を判定する様子等を示す。ログバッファ131には、各ライトコマンドに対応するログアドレスが設定される。
ログバッファ131は、例えば16個のエントリを有する。各エントリは、開始アドレス(SADR)及び終了アドレス(EADR)を備える。つまり、ログバッファ131は、開始アドレスと終了アドレスからなる16個のペアを管理可能である。
開始アドレスのサイズ及び終了アドレスのサイズは、それぞれ2バイトである。各開始アドレス及び終了アドレスは、例えば、有効であるか否かを示す有効ビットD10(1ビット)と、未使用の予約ビットD11(1ビット)と、アドレスを記憶するビットD12(14ビット)との合計16ビット(2バイト)を備える。
図17,図18で述べるように、転送回路110Bに1番目のデータが入力されると、その一番目のデータの開始アドレスと終了アドレスとがそれぞれ検出され、ログバッファ131の空いているエントリ(例えば、#0のエントリ)に登録される。
2番目のデータが転送回路110Bに入力されると、2番目のデータの開始アドレスと終了アドレスとがそれぞれ検出される。そして、2番目のデータの開始アドレス及び終了アドレスと、1番目のデータの開始アドレス及び終了アドレスとが比較される。
順番通りにデータが転送回路110Bに入力されている場合は、1番目のデータの終了アドレスと2番目のデータの開始アドレスとは一致する。キャッシュメモリ14には、1番目のデータの開始アドレスから2番目のデータの終了アドレスまでの範囲のデータが、記憶されている。そこで、ログアドレス更新回路130は、1番目のデータの終了アドレスを2番目のデータの終了アドレスに更新させる。
もしも、1番目のデータの開始アドレス及び終了アドレスと2番目のデータの開始アドレス及び終了アドレスとがいずれも不一致の場合、ログバッファ131内の空いているエントリ(例えば、#1のエントリ)に、2番目のデータの開始アドレス及び終了アドレスが登録される。
3番目のデータが転送回路110Bに入力された場合、3番目のデータの開始アドレス及び終了アドレスがそれぞれ検出される。3番目の開始アドレス及び終了アドレスは、ログバッファ131の各エントリに登録されている各アドレスと比較される。3番目のデータが、既にキャッシュメモリ14に記憶されているデータに続くデータであると判定された場合、ログバッファ131に登録されている開始アドレスまたは終了アドレスが更新される。
ライトコマンドで指定されたサイズの全データを転送回路110Bが正しく受信した場合、つまり、その転送の順番はともかく、予定されたデータを全てキャッシュメモリ14に記憶させることができた場合は、キャッシュメモリ14には、開始アドレスから指定サイズ分のライトデータが記憶される。従って、ログバッファ131には、一つの開始アドレスと一つの終了アドレスのみが記録される。
ログバッファ131内に、有効なエントリが複数存在する場合は、例えば、データの一部が消失した場合や、同一データが重複して書き込まれたような場合である。従って、複数の有効なエントリがログバッファ131に残っている場合、キャッシュメモリ14へのデータ転送に異常が生じたと判定することができる。
図17,図18を参照して、ログバッファ131で管理されるアドレスが変化する様子を説明する。図17(a)は、説明の前提となるライトデータの構造を示す。説明のために使用されるライトデータは、#1〜#4までの合計4個の論理ブロックを有する。
1番目の論理ブロックの開始アドレスは「0」、終了アドレスは「0A」である。2番目の論理ブロックの開始アドレスは「0A」、終了アドレスは「0B」である。3番目の論理ブロックの開始アドレスは「0B」、終了アドレスは「0C」である。4番目の論理ブロックの開始アドレスは「0C」、終了アドレスは「0D」である。
図17(b)には、4個の論理ブロックが順番通りにキャッシュメモリ14に転送される場合を示す。図17(b)の(1)に示すように、最初の論理ブロック(0−0A)が転送回路110Bに入力されると、ログバッファ131(1)のエントリ#0に、その論理ブロックの開始アドレス(0)と終了アドレス(0A)とが記録される。
図17(b)の(2)は、2番目の論理ブロック(0A−0B)が転送回路110Bに入力された場合を示す。ログアドレス更新回路130は、2番目の論理ブロックの開始アドレス(0A)及び終了アドレス(0B)と、ログバッファ131に記録されている開始アドレス(0)及び終了アドレス(0A)とを比較する。
この場合、2番目の論理ブロックの開始アドレス(0A)とエントリ#0に記録されている終了アドレス(0A)とは一致するため、ログアドレス更新回路130は、エントリ#0の終了アドレスを「0B」に書き換える。キャッシュメモリ14には、アドレス「0」からアドレス「0B」までのデータが記憶されているためである。
同様に、図17(b)の(3)に示すように、3番目の論理ブロック(0B−0C)が転送回路110Bに入力されると、ログアドレス更新回路130は、エントリ#0の終了アドレスを「0B」から「0C」に書き換える。
同様に、図17(b)の(4)に示すように、4番目の論理ブロック(0C−0D)が転送回路110Bに入力されると、ログアドレス更新回路130は、エントリ#0の終了アドレスを「0C」から「0D」に書き換える。
図18は、キャッシュメモリ14に転送されるデータの順番が入れ替わった場合を示す説明図である。図18の例では、1番目の論理ブロック(0−0A)→3番目の論理ブロック(0B−0C)→2番目の論理ブロック(0A−0B)→4番目の論理ブロック(0C−0D)の順番で、転送回路110Bにデータが入力されるものとする。但し、転送の順番が一部入れ替わっただけであり、データそのものは全てキャッシュメモリ14に転送される。
図18(b)の(1)に示すように、論理ブロック(0−0A)が入力されると、ログバッファ131のエントリ#0に、開始アドレス「0」及び終了アドレス(0A)が登録される。
図18(b)の(2)に示すように、論理ブロック(0B−0C)が入力されると、ログバッファ131のエントリ#1に、開始アドレス(0B)及び終了アドレス(0C)が登録される。論理ブロック(0B−0C)の開始アドレス(0B)及び終了アドレス(0C)は、既に登録されている開始アドレス(0)及び終了アドレス(0A)のいずれとも一致しないためである。従って、既存のエントリ#0に加えて、新たなエントリ#1が使用される。
図18(b)の(3)は、論理ブロック(0A−0B)が入力された場合を示す。この論理ブロックの開始アドレス(0A)は、エントリ#0に登録されている終了アドレス(0A)に一致する。また、その論理ブロックの終了アドレス(0B)は、エントリ#1に登録されている開始アドレス(0B)に一致する。
即ち、論理ブロック(0A−0B)の到着によりキャッシュメモリ14に記憶されたデータの隙間が埋められ、キャッシュメモリ14に開始アドレス「0」から終了アドレス「0C」までの連続したデータが記憶される。
そこで、ログアドレス更新回路130は、エントリ#0の終了アドレス「0A」をエントリ#1の終了アドレス「#0C」に更新し、かつ、エントリ#1を無効とする。エントリ#1に登録されている開始アドレス及び終了アドレスの、それぞれの有効ビットD10を無効に設定する。
図18(b)の(4)は、論理ブロック(0C−0D)が入力された場合を示す。この論理ブロックの開始アドレス(0C)は、エントリ#0の終了アドレス(0C)に一致するため、エントリ#0の終了アドレスは「0C」から「0D」に変更される。
図19,図20は、データ転送処理のフローチャートである。ログアドレス更新回路130は、ログバッファ131を初期化し(S50)、ホスト通信制御部11からデータが入力されるのを待つ(S51)。
データが入力されると(S51:YES)、ログ監視回路132は、このデータ転送に関するコマンド(つまり、ライトコマンドである)の番号を検出する(S52)。上述の通り、転送回路110Bは、複数のコマンドを多重処理することができる。ログバッファ131には、各ライトコマンドに対応するログアドレスがキャッシュメモリ14から読み出されて設定される。
ログ監視回路132は、ログバッファ131に設定されているログアドレスのコマンド番号と、S51で受信したライトデータに関するライトコマンドの番号とを比較する(S53)。両方のコマンド番号が一致しない場合(S53:NO)、ログ監視回路132は、ログバッファ131に記憶されているログアドレスをキャッシュメモリ14内の所定領域に退避させる(S54)。続いて、ログ監視回路132は、S52で検出されたコマンド番号に対応するログアドレスをキャッシュメモリ14から読み出して、ログバッファ131に転送する(S55)。これにより、ログバッファ131には、S52で検出されたコマンド番号に対応するログアドレスが設定される。
これに対し、S52で検出されたコマンド番号とログバッファ131に記憶されているログアドレスに対応するコマンド番号とが一致する場合(S53:YES)、S54及びS55はスキップされ、図20に示すS56に移る。
ログアドレス更新回路130は、S51で受信したデータのアドレスとログバッファ131に記憶されているログアドレスとを比較する(S56)。S51で受信したデータのアドレスを、転送アドレスと呼ぶ場合がある。転送アドレスには、開始アドレス及び終了アドレスが含まれる。
転送アドレスとログアドレスとの比較結果は、以下の3通りに分けられる。第1は、転送アドレスとログアドレスとが一つも一致しない場合、第2は、転送アドレスとログアドレスとが一カ所で一致する場合、第3は、転送アドレスとログアドレスとが二カ所で一致する場合、である。
第1の場合を説明する(S57)。図18(b)の(2)に示したように、受信データの転送アドレス(0B−0C)がログアドレス(0−0A)のいずれとも一致しない場合は、空いているエントリ#1に転送アドレス(0B−0C)が設定される。つまり、ログバッファ131内の空いているエントリ#1が一つ選択され、転送アドレスの開始アドレス(0B)及び終了アドレス(0C)がエントリ#1に登録される。さらに、開始アドレス(0B)及び終了アドレス(0C)の有効ビットD10は有効に設定される。
第2の場合を説明する(S58)。図17(b)の(2)に示すように、受信データの転送アドレス(0A−0B)のうち開始アドレス(0A)は、エントリ#0の終了アドレス(0A)に一致する。そこで、ログアドレス更新回路130は、エントリ#0の終了アドレス(0A)を、受信データの終了アドレス(0B)に更新する。
第3の場合を説明する(S59)。図18(b)の(3)に示すように、受信データの転送アドレス(0A−0B)は、エントリ#0の終了アドレス(0A)とエントリ#1の開始アドレス(0B)とに、一致する。つまり、転送アドレスは、2カ所でログアドレスに一致する。この場合、ログアドレス更新回路130は、終了アドレスの一致するエントリ#0の終了アドレス「0A」を、開始アドレスの一致するエントリの終了アドレス「0C」に更新する(S59)。そして、ログアドレス更新回路130は、開始アドレスの一致するエントリ#1の有効ビットD10を無効に設定し、そのエントリ#1を無効とする(S60)。
転送長カウンタ114の値がライトコマンドで指定されたサイズに達するまで、S51〜S60のステップが繰り返される。ライトコマンドで指定されたサイズのデータを受信した場合(S61:YES)、転送回路110Bは、ログバッファ131内の有効エントリの数が1であるか否かを判定する(S62)。
図18(b)の(3),(4)に示すように、ライトコマンドで指定された全データがキャッシュメモリ14に転送された場合、ログバッファ131には、有効なエントリが1つだけ存在する。有効なエントリが複数存在する場合は、データが分断されており、一部のデータが未だ受信されていない状態である。
有効なエントリ数が1の場合(S62:YES)、転送回路110Bは、回路異常が検出されたか否かを判定する(S63)。回路異常が検出されていない場合(S63:NO)、キャッシュメモリ14へのデータ転送は正常に終了する。回路異常が検出された場合(S63:YES)または有効なエントリ数が1ではない場合(S62:NO)、キャッシュメモリ14のデータ転送は異常終了する。異常終了の場合、ホスト30は、再びライトコマンドを発行し、ライトデータを送信する。
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、キャッシュメモリ14に転送されたデータのアドレスをログバッファ131で管理し、キャッシュメモリ14に記憶されたデータのアドレスの連続性とデータサイズとに基づいて、データの整合性をチェックする。従って、第1実施例よりも高い信頼性で、データの整合性を判定することができる。また、第2実施例のようにビットマップでデータの受信の有無を管理する場合に比べて、ログバッファ131のサイズを小さくすることができる。
ログバッファ131のエントリ数は、アウトオブオーダの発生頻度に応じて設定することができる。例えば、一つの例としては、16個程度のエントリを予め用意する。アウトオブオーダが16回以上発生した場合、そのデータ転送は失敗したものとして異常終了させ、ホスト30にリトライさせればよい。
図21に基づいて本発明の第4実施例を説明する。本実施例は、第3実施例の具体例に該当する。本実施例では、第3実施例で述べたログアドレスの管理をハードウェア回路によって実現する。
この回路は、例えば、一致箇所判定回路300と、一致判定回路311と、アドレスバッファ312と、更新回路313と、エントリ数チェック回路316等とを含んで構成される。
一致箇所判定回路300は、図20中のS56に対応する回路である。一致箇所判定回路300は、転送回路110Bに入力されたデータのアドレス(転送アドレス)と、アドレスバッファ312に記憶されたアドレスとを比較し、両アドレスが不一致であるか、両アドレスが一カ所で一致するか、両アドレスが2カ所で一致するか、を判定する。
各アドレスバッファ312には、開始アドレスまたは終了アドレスのいずれかが記憶される。開始アドレス(SADR0)と終了アドレス(EADR0)はペアとなり、一つのエントリを構成する。同様に、開始アドレス(SADR1)と終了アドレス(SADR1)、開始アドレス(SADRn)と終了アドレス(EADRn)も、それぞれ一つずつのエントリを構成する。
一致判定回路311は、アドレスバッファ312に記憶されているログアドレスと、新たに入力されたデータのアドレス(転送アドレス)とが一致するか否かを判定する回路である。一致した場合、更新すべき旨の指示が経路P32を介して更新回路313に入力される。
転送アドレスとログアドレスとが完全に不一致の場合、更新指示が、経路P31を介して、所定のアドレスバッファ312の更新回路313に入力される。具体的には、空いているエントリの各アドレスバッファに、受信データの開始アドレス(新SADR)と終了アドレス(新EADR)とを格納させるべく、指示がP31に出力される。この指示は、空いているアドレスバッファ312の更新回路313に入力される。
転送アドレスとログアドレスとが二カ所で一致する場合、更新指示が経路P30を介して終了アドレス選択部314に入力される。これにより、受信データの開始アドレス(新SADR)と一致する終了アドレスは、終了アドレス選択部314により選択された終了アドレス315で更新される。
エントリ数チェック回路316は、図20中のS62に相当する。このエントリ数チェック回路316は、有効なエントリの数を確認する。有効なエントリの数は、各エントリの開始アドレスが有効か否かを確認することにより、検出できる。
このように構成される本実施例は、第3実施例と同様の効果を奏する。本実施例では、ログアドレスに基づく整合性チェックをハードウェア回路で実現するため、より高速に転送処理を行うことができる。
図22,図23に基づいて第5実施例を説明する。本実施例では、キャッシュメモリ14からデータを読み出す場合を例に挙げて説明する。ホスト30は、リードコマンドを発行することにより、記憶制御装置10からデータを読み出すことができる。
リード要求されたデータがキャッシュメモリ14に記憶されている場合には、キャッシュメモリ14に記憶されたデータがホスト30に送信される。リード要求されたデータがキャッシュメモリ14に記憶されていない場合、論理ボリューム22からデータが読み出されて、キャッシュメモリ14に記憶される。
キャッシュメモリ14に記憶されたデータは、データ転送制御回路15及びホスト通信制御部11を介して、ホスト30に送信される。このリード処理時においても、キャッシュメモリ14から読み出されたデータがホスト30に正常に転送されたか否かを判定することができる。
転送回路110Cは、例えば、キャッシュデータ保証回路140と、リードデータ保証回路150と、比較回路160と、転送長カウンタ114とを備える。キャッシュデータ保証回路140は、キャッシュメモリ14から読み出されるデータが正しいことを保証するための回路である。リードデータ保証回路150は、ホスト30に向けて転送されるデータ(リードデータ)が正しいことを保証するための回路である。
キャッシュデータ保証回路140は、BCCチェック回路141と、BCCバッファ142とを備える。BCCバッファ142には、キャッシュメモリ14から読み出されるデータのBCCが記憶される。
キャッシュメモリ14からデータを読み出す場合、BCCチェック回路141は、読み出されたキャッシュデータから各論理ブロック毎のBCCを改めて算出し、BCCバッファ142に格納されているBCCと比較する。両方のBCCが一致している場合、キャッシュメモリ14からキャッシュデータが正しく読み出されたと判定される。
キャッシュメモリ14から読み出されたデータは、経路P20を介して、ホスト通信制御部11に転送される。リードデータ保証回路150のBCC生成回路151は、ホスト30に向けて転送されるデータのBCCをリード転送サイズの分だけ演算し、その演算結果をBCCバッファ152に記憶する。
比較回路160は、リードコマンドで指定されたサイズのデータの転送が完了すると、BCCバッファ142に記憶されているBCCとBCCバッファ152に記憶されているBCCとを比較する。両方のBCCが一致する場合、重複や脱落等を生じること無く、リードデータが正常に転送されたと判定される。
図23は、リード処理時におけるデータ転送処理を示すフローチャートである。転送回路110Cは、転送パラメータをセットし、キャッシュメモリ14に記憶されたBCCをBCCバッファ142に転送させる(S70)。また、転送回路110Cは、BCCバッファ152を初期化する(S70)。
転送回路110Cは、リード要求を受信したか否かを判定する(S71)。リード要求を受信した場合(S71:YES)、転送回路110Cは、リード要求されたデータのブロック番号を算出し、その算出された論理ブロックのデータをキャッシュメモリ14から読み出す(S72)。次に、キャッシュデータ保証処理(S73,S74)とリードデータ保証処理(S75,S76)とが並列的に実行される。
キャッシュデータ保証処理では、キャッシュメモリ14から読み出される論理ブロックについてBCCが算出される(S73)。算出されたBCCは、BCCバッファ142に記憶されているBCCと比較される(S74)。もしも、この時点でBCCが一致しない場合、転送失敗として終了させる。
リードデータ保証処理では、リード要求されたサイズの分だけBCCを算出し(S75)、算出されたBCCをBCCバッファ152に記憶させる(S76)。
転送長カウンタ114は、カウント値を更新する。リードコマンドで指定されたサイズのデータが読み出されるまで、転送回路110Cは、S71〜S77のステップを繰り返し実行する(S78)。転送長カウンタ114の値が指定サイズに達すると(S78:YES)、転送回路110Cは、BCCバッファ142(図中、BCCバッファ1)に記憶されているBCCと、BCCバッファ152(図中、BCCバッファ2)に記憶されているBCCとを比較する(S79)。
両方のBCCが一致する場合(S79:YES)、転送回路110Cは、回路異常が生じたか否かを判定する(S80)。回路異常が検出されなかった場合(S80:NO)、データ転送は正常に終了する。
これに対し、BCCバッファ142のBCCとBCCバッファ152のBCCとが不一致の場合(S79:NO)、または、回路異常が検出されていた場合(S80:YES)のいずれかの場合、データ転送は異常終了する。ホスト30は、リードコマンドを再び発行することにより、所望のデータを要求することができる。
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、キャッシュメモリ14からデータを読み出す場合にもデータの整合性をチェックすることができ、より一層使い勝手や信頼性が向上する。
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。当業者であれば、前記各実施例を適宜組み合わせることもできる。また、例えば、第1データ転送回路を中心に説明したが、第2データ転送回路にもデータの整合性をチェックするための機能を設けることができる。
1:データ転送制御装置、2:キャッシュメモリ、2A:受信データ記憶領域、2B:検査用データ記憶領域、2C:判定用データ記憶領域、3:ホスト、4:検査用データ生成部、5:検査用データ記憶部、6:整合性判定部、7A:検査用データ生成部、7B:検査用データ比較部、8A:ビットマップ生成部、8B:ビットマップ記憶部、8C:ビットマップ検査部、9A:ログアドレス管理部、9B:ログアドレス記憶部、9C:ログアドレス検査部、10:記憶制御装置、11:ホスト通信制御部、11A:通信プロトコル回路、11B:受信バッファ、11C:DMA回路、11D:送信バッファ、11E:通信インターフェース回路、12:ディスク通信制御部、13:マイクロプロセッサ制御部、14:キャッシュメモリ、15:データ転送制御回路、16:データ転送経路、20:記憶ドライブ搭載部、21:記憶ドライブ、22:論理ボリューム、30:ホスト、110,110A,110B,110C:データ転送回路、111:BCC生成回路、112:BCCバッファ、113:データチェック回路、1131:BCC生成回路、1132:BCC比較回路、114:転送長カウンタ、120:ビットマップ制御回路、121:ビットマップバッファ、122:ビットマップ監視回路、130:ログアドレス更新回路、131:ログバッファ、132:ログ監視回路、140:キャッシュデータ保証回路、141:BCCチェック回路、142:BCCバッファ、150:リードデータ保証回路、151:BCC生成回路、152:BCCバッファ、160:比較回路、170:データ転送回路、180:キャッシュコントローラ、300:一致箇所判定回路、311:一致判定回路、312:アドレスバッファ、313:更新回路、314:終了アドレス選択部、316:エントリ数チェック回路。
Claims (12)
- キャッシュメモリへのデータ転送を制御するためのデータ転送制御装置であって、
前記キャッシュメモリへのデータ転送が不連続に実行され得る場合において、
受信したデータについて、前記データのエラーを検出するための検査用データを生成する検査用データ生成部と、
生成された前記検査用データを一時的に記憶するための検査用データ記憶部と、
前記キャッシュメモリに記憶されるデータについて整合性を判定するデータ整合性判定部であって、前記キャッシュメモリに記憶されるデータが予め指定される指定サイズに一致し、かつ、前記データの連続性が維持されているか否かを判定するためのデータ整合性判定部と、
を備えるデータ転送制御装置。 - 前記データ整合性判定部は、前記キャッシュメモリに前記指定サイズのデータを記憶させる場合に生成される第1検査用データと、前記キャッシュメモリから前記指定サイズの前記データを読み出す場合に生成される第2検査用データとを比較し、前記第1検査用データと前記第2検査用データとが一致する場合に、前記キャッシュメモリに記憶されたデータに整合性があると判定する、請求項1に記載のデータ転送制御装置。
- 前記第1検査用データは前記検査用データ生成部により生成されて、前記検査用データ記憶部に記憶されており、
前記第2検査用データはデータ検査回路により生成されるようになっており、
前記データ検査回路は、前記検査用データ記憶部に記憶される前記第1検査用データと前記第2検査用データとを比較し、第1検査用データと前記第2検査用データとが一致する場合に、前記キャッシュメモリに記憶されたデータに整合性があると判定する、請求項2に記載のデータ転送制御装置。 - 前記データ整合性判定部は、前記キャッシュメモリに記憶されるデータを所定サイズ単位で管理するためのビットマップを生成するビットマップ生成部と、前記ビットマップに基づいて前記キャッシュメモリに記憶されたデータの整合性を判定するためのビットマップ検査部とを備えている、請求項1に記載のデータ転送制御装置。
- 前記データ整合性判定部は、前記キャッシュメモリに記憶されるデータのアドレスを示すログを管理するためのログ管理部と、前記ログに基づいて前記キャッシュメモリに記憶されたデータの整合性を判定するためのログ検査部とを備えている、請求項1に記載のデータ転送制御装置。
- 前記ログ管理部は、これから前記キャッシュメモリに転送するデータのアドレスと前記キャッシュメモリに記憶済のデータのアドレスとを比較することにより、前記ログ内のアドレスを更新させるようになっており、
前記ログ検査部は、前記ログに含まれるエントリが1つになった場合に、前記キャッシュメモリに記憶されたデータに整合性があると判定する請求項5に記載のデータ転送制御装置。 - 前記データ整合性判定部により使用される作業領域が、前記キャッシュメモリに設けられている、請求項1に記載のデータ転送制御装置。
- 前記データ整合性判定部は、さらに、前記キャッシュメモリから読み出されるデータが予め指定される別の指定サイズに一致し、かつ、前記読み出されたデータの連続性が維持されているか否かを判定することができる、請求項1に記載のデータ転送制御装置。
- 前記データ整合性判定部は、前記キャッシュメモリから前記別の指定サイズのデータを読み出す場合に生成される第3検査用データと、前記別の指定サイズのデータを外部に送信する場合に生成される第4検査用データとを比較し、前記第3検査用データと前記第4検査用データとが一致する場合に、前記キャッシュメモリから読み出されて送信されるデータに整合性があると判定する、請求項8に記載のデータ転送制御装置。
- キャッシュメモリへのデータ転送が不連続に実行され得る場合に、前記キャッシュメモリに転送されるデータの整合性を判定するためのデータ整合性判定方法であって、
受信したデータを前記キャッシュメモリに転送させるステップと、
前記キャッシュメモリに転送される前記データについて、判定用データを生成するステップと、
生成された前記判定用データを記憶するステップと、
予め指定される指定サイズだけ、前記キャッシュメモリに前記データが転送されたか否かを判定するステップと、
前記指定サイズのデータが前記キャッシュメモリに転送されたと判定された場合、記憶されている前記判定用データに基づいて、前記キャッシュメモリに転送されて前記キャッシュメモリに記憶されたデータの整合性を判定するステップと、
を備える、データ整合性判定方法。 - 前記判定用データは、(A)前記キャッシュメモリに記憶される前記データのエラーを検出するための検査用データ、(B)前記キャッシュメモリに記憶されるデータの有無を所定サイズ単位で管理するためのビットマップ、または、(C)前記キャッシュメモリに記憶される前記データのアドレスのログのうち、いずれか一つとして構成され、
前記データの整合性を判定するステップは、
(a)前記判定用データが前記検査用データとして構成される場合、前記データを前記キャッシュメモリに記憶する場合に生成される第1検査用データと、前記キャッシュメモリから前記データを読み出す場合に生成される第2検査用データとを比較し、前記第1検査用データと前記第2検査用データとが一致する場合に、前記キャッシュメモリに記憶されたデータに整合性があると判定するようになっており、
(b)前記判定用データが前記ビットマップとして構成される場合、前記ビットマップの全部に、記憶済であることを示すビットがそれぞれ設定されている場合に、前記キャッシュメモリに記憶されたデータに整合性があると判定するようになっており、
(c)前記判定用データが前記ログとして構成される場合、前記ログに示される開始アドレス及び終了アドレスが、予め指定される指定サイズに対応する開始アドレス及び終了アドレスに一致する場合に、前記キャッシュメモリに記憶されたデータに整合性があると判定するようになっている、
請求項10に記載のデータ整合性判定方法。 - ホストコンピュータと記憶装置との間のデータ送受信を制御するための記憶制御装置であって、
前記ホストコンピュータとの間の通信を実行する第1通信制御部と、
前記記憶装置との間の通信を実行する第2通信制御部と、
前記第1通信制御部及び前記第2通信制御部との間に設けられ、前記第1通信制御部及び前記第2通信制御部とキャッシュメモリとの間のデータ転送をそれぞれ制御するデータ転送制御装置であって、前記第1通信制御部から前記キャッシュメモリへのデータ転送が不連続に実行され得るデータ転送制御装置と、
を備え、さらに、
前記データ転送制御装置は、
受信したデータについて、前記データのエラーを検出するための検査用データを生成する検査用データ生成部と、
生成された前記検査用データを一時的に記憶するための検査用データ記憶部と、
前記キャッシュメモリに記憶されるデータについて整合性を判定するデータ整合性判定部であって、前記キャッシュメモリに記憶されるデータが予め指定される指定サイズに一致し、かつ、前記データの連続性が維持されているか否かを判定するためのデータ整合性判定部とを備えている、
記憶制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008039291A JP2009199266A (ja) | 2008-02-20 | 2008-02-20 | データ転送制御装置、データ整合性判定方法及び記憶制御装置 |
US12/081,746 US7996712B2 (en) | 2008-02-20 | 2008-04-21 | Data transfer controller, data consistency determination method and storage controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008039291A JP2009199266A (ja) | 2008-02-20 | 2008-02-20 | データ転送制御装置、データ整合性判定方法及び記憶制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009199266A true JP2009199266A (ja) | 2009-09-03 |
Family
ID=40956189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008039291A Pending JP2009199266A (ja) | 2008-02-20 | 2008-02-20 | データ転送制御装置、データ整合性判定方法及び記憶制御装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7996712B2 (ja) |
JP (1) | JP2009199266A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014167818A (ja) * | 2014-05-12 | 2014-09-11 | Hitachi Ltd | データ転送装置およびデータ転送方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4693893B2 (ja) * | 2008-11-25 | 2011-06-01 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置の制御方法 |
WO2012145916A1 (zh) * | 2011-04-29 | 2012-11-01 | 北京中天安泰信息科技有限公司 | 数据安全存储方法及装置 |
US9229645B2 (en) * | 2012-02-10 | 2016-01-05 | Hitachi, Ltd. | Storage management method and storage system in virtual volume having data arranged astride storage devices |
CN104881244B (zh) * | 2014-05-28 | 2018-02-09 | 陈杰 | 存储系统及其数据保护方法 |
CN111143240B (zh) * | 2019-12-31 | 2022-07-05 | 科华恒盛股份有限公司 | 图像存储方法、系统及终端设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000347815A (ja) | 1999-06-07 | 2000-12-15 | Hitachi Ltd | ディスクアレイシステム |
US20040148376A1 (en) * | 2002-06-28 | 2004-07-29 | Brocade Communications Systems, Inc. | Storage area network processing device |
JP4394533B2 (ja) | 2004-07-28 | 2010-01-06 | 株式会社日立製作所 | ディスクアレイシステム |
US7676730B2 (en) | 2005-09-30 | 2010-03-09 | Quantum Corporation | Method and apparatus for implementing error correction coding in a random access memory |
US7949841B2 (en) * | 2006-12-08 | 2011-05-24 | Microsoft Corporation | Protection of critical memory using replication |
-
2008
- 2008-02-20 JP JP2008039291A patent/JP2009199266A/ja active Pending
- 2008-04-21 US US12/081,746 patent/US7996712B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014167818A (ja) * | 2014-05-12 | 2014-09-11 | Hitachi Ltd | データ転送装置およびデータ転送方法 |
Also Published As
Publication number | Publication date |
---|---|
US7996712B2 (en) | 2011-08-09 |
US20090210634A1 (en) | 2009-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4767139B2 (ja) | ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法 | |
JP5247887B2 (ja) | ストレージ装置、及びその制御方法、並びにプログラム | |
US8041909B2 (en) | Disk array system and method for migrating from one storage system to another | |
JP4884885B2 (ja) | 記憶制御装置及び記憶制御装置の障害回復方法 | |
JP4634157B2 (ja) | ストレージシステム | |
US20060294300A1 (en) | Atomic cache transactions in a distributed storage system | |
JP5102915B2 (ja) | ストレージ装置及びそのデータ検証方法 | |
JP4884721B2 (ja) | 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法 | |
JP5712713B2 (ja) | 制御装置、制御方法およびストレージ装置 | |
US20080276061A1 (en) | Method and computer for determining storage device | |
JP2009199266A (ja) | データ転送制御装置、データ整合性判定方法及び記憶制御装置 | |
EP1785867A2 (en) | Method and apparatus for verifying data in a storage system | |
JP2010055210A (ja) | ストレージシステム及びデータ保証方法 | |
JP4437953B2 (ja) | データ書込み方法とチャネルアダプタ | |
JP2021131732A (ja) | データ転送システム | |
US7921265B2 (en) | Data access method, channel adapter, and data access control device | |
US20140289489A1 (en) | Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media | |
JP5198659B2 (ja) | 記憶制御装置及び記憶制御装置の制御方法 | |
JP4394533B2 (ja) | ディスクアレイシステム | |
US20100325373A1 (en) | Duplexing Apparatus and Duplexing Control Method | |
US11693577B2 (en) | Storage operation processing during data migration using migrated indicator from source storage | |
JP2016059012A (ja) | 受信装置、送信装置およびデータ転送システム | |
JP4287631B2 (ja) | 記憶装置 | |
JP2004185477A (ja) | 光記憶媒体アレイ装置およびデータ転送方法 | |
EP2924576A1 (en) | Storage control apparatus, control program, and control method |