(57)【要約】【課題】  複数のユーザデータがそれぞれ複数のフレームに分割されて転送された場合のチェックコード判定に要する時間を短縮する。【解決手段】  各ユーザデータに対して互いに異なるグループＩＤが割り当てられ、受信フレームに対応するグループＩＤがレジスタ２２１に格納される。格納されたグループＩＤに対応する中間結果バッファ２２６のエントリ内の途中計算結果と、受信フレームのデータがチェックコード生成回路２２９に入力され、チェックコードが計算されて、そのエントリの途中計算結果が更新される。この動作がフレームを受信する毎に繰り返され、複数のユーザデータのチェックコードが並行して計算される。【選択図】図２
2005252712.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定する判定装置であって、
前記複数のデータブロックにそれぞれ割り当てられた複数のグループ識別子のうち、受信したフレームに対応するデータブロックのグループ識別子を格納するグループ識別子格納手段と、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段と、
前記グループ識別子格納手段に格納されたグループ識別子に対応する、前記中間結果格納手段のエントリに格納された途中計算結果と、前記受信したフレームに含まれるデータとを用いて、チェックコードの途中計算結果を生成し、該エントリに格納された途中計算結果を更新する生成手段と、
前記生成手段が１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較して、比較結果を出力する比較手段と
を備えることを特徴とする判定装置。
【請求項２】
前記生成手段は、１つのフレームを受信する毎に、前記中間結果格納手段の対応するエントリに格納された途中計算結果を更新する動作を繰り返しながら、該中間結果格納手段の複数のエントリの途中計算結果を並行して更新することを特徴とする請求項１記載の判定装置。
【請求項３】
前記受信したフレームが１つのデータブロックの最後のフレームであるか否かを示すフラグを格納するフラグ格納手段をさらに備え、前記生成手段は、該フラグが該最後のフレームであることを示していないとき、前記中間結果格納手段のエントリに格納された途中計算結果を更新し、前記比較手段は、該フラグが該最後のフレームであることを示しているとき、前記最終計算結果を前記１つのデータブロックのチェックコードと比較することを特徴とする請求項１記載の判定装置。
【請求項４】
複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定し、該データを記憶装置へ転送する制御を行うストレージ制御装置であって、
送信されたフレームを受信する受信手段と、
前記複数のデータブロックにそれぞれ異なるグループ識別子を割り当て、受信したフレームのヘッダ部の情報を解析して、該フレームに対応するデータブロックのグループ識別子を該フレームに割り当てる制御手段と、
前記受信したフレームに割り当てられたグループ識別子を格納するグループ識別子格納手段と、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段と、
前記グループ識別子格納手段に格納されたグループ識別子に対応する、前記中間結果格納手段のエントリに格納された途中計算結果と、前記受信したフレームに含まれるデータとを用いて、チェックコードの途中計算結果を生成し、該エントリに格納された途中計算結果を更新する生成手段と、
前記生成手段が１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較して、比較結果を出力する比較手段と
を備えることを特徴とするストレージ制御装置。
【請求項５】
複数のアクセス装置から複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定し、該データを格納するストレージ装置であって、
送信されたフレームを受信する受信手段と、
前記複数のデータブロックにそれぞれ異なるグループ識別子を割り当て、受信したフレームのヘッダ部の情報を解析して、該フレームに対応するデータブロックのグループ識別子を該フレームに割り当てる制御手段と、
前記受信したフレームに割り当てられたグループ識別子を格納するグループ識別子格納手段と、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段と、
前記グループ識別子格納手段に格納されたグループ識別子に対応する、前記中間結果格納手段のエントリに格納された途中計算結果と、前記受信したフレームに含まれるデータとを用いて、チェックコードの途中計算結果を生成し、該エントリに格納された途中計算結果を更新する生成手段と、
前記生成手段が１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較して、比較結果を出力する比較手段と、
前記複数のアクセス装置により共用され、各データブロックの複数のフレームに含まれるデータから組み立てられた元のデータを格納する記憶装置と
を備えることを特徴とするストレージ装置。
【請求項６】
複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定するプロセッサのためのプログラムであって、
受信したフレームのヘッダ部の情報を格納手段に格納し、該ヘッダ部の情報を解析して、該フレームが１つのデータブロックの最初のフレームか否かを判定し、
前記受信したフレームが前記最初のフレームであれば、該フレームに新たなグループ識別子を割り当て、該受信したフレームが該最初のフレームでなければ、該フレームと同じデータブロックに属する受信済みのフレームと同じグループ識別子を該フレームに割り当て、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ保持しながら各データブロックのチェックコードを計算し、計算したチェックコードと受信したチェックコードを比較する判定装置に、割り当てたグループ識別子を転送し、
前記判定装置から転送されたチェックコードの比較結果に基づいて、各データブロックの正当性を確認する
処理を前記プロセッサに実行させることを特徴とするプログラム。
【請求項７】
複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定する判定方法であって、
１つのフレームを受信する毎に、
受信したフレームのヘッダ部の情報を解析して、該フレームに対応するデータブロックのグループ識別子を該フレームに割り当て、
前記受信したフレームに割り当てられたグループ識別子をグループ識別子格納手段に格納し、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段から、前記グループ識別子格納手段に格納されたグループ識別子に対応するエントリに格納された途中計算結果を取り出し、
取り出した途中計算結果と前記受信したフレームに含まれるデータとを用いてチェックコードの途中計算結果を生成して、前記グループ識別子に対応するエントリに格納された途中計算結果を更新する動作を繰り返し、
１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較する
ことを特徴とする判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速で大容量のデータ転送を高い信頼性で行う必要のあるデータ処理システムにおけるエラー検出に係り、特に、データとそのデータに対するチェックコードを含むデータブロックが複数のフレームに分割されて転送されるようなデータ処理システムにおいて、チェックコードを用いて転送データの正当性を判定する装置および方法に関する。
【背景技術】
【０００２】
近年、ホストコンピュータとストレージ装置間で高速、大容量のデータ転送を行うための手段として、ファイバチャネルの利用が一般的になっている。ストレージ装置は、複数のホストコンピュータにより共用されるディスク装置（ディスクドライブ）等の記憶装置と、ホストコンピュータと記憶装置の間のデータ転送を制御するストレージ制御装置からなる。
【０００３】
送信側のホストコンピュータのデータは、ファイバチャネルのリンク上では最大２Ｋバイトまでの複数のフレームに分割されて転送され、受信側のストレージ装置で再び元のデータに組み上げられる。その際、転送されるそれぞれのフレームは、巡回冗長検査（Cyclic Redundancy Check ，ＣＲＣ）によってエラー保護されていて、信頼性の高いデータ転送を行うことが可能である。
【０００４】
しかし、用途によってはさらに高い信頼性が求められることがある。このような要求を満たすために、フレーム毎のＣＲＣによるエラー保護に加えて、ホストコンピュータの用意したデータ全体をチェックコードで保護する方法が利用される。
【０００５】
ここで、チェックコードとしては、保護されるデータを用いて予め決められたアルゴリズムで計算を行った結果が用いられる。ＣＲＣコードはチェックコードの１つの例であり、この用途に用いられることがあるが、他のチェックコード（他の巡回符号等）が用いられる場合もある。
【０００６】
この保護方法では、図１０に示すように、ホストコンピュータがユーザデータ１０１にチェックコード１０２を付加したものを１つのデータブロック１０３として送信する。ファイバチャネルのリンク上では、データブロック１０３が複数のフレーム１０４（１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ）に分割され、フレーム毎にＣＲＣで保護されてストレージ制御装置に転送される。チェックコード１０２は、通常、１フレームのデータより小さいので、最後のフレームに収容されて転送される。
【０００７】
ストレージ装置は、受信した各フレームのＣＲＣチェックを行って、元のデータブロック１０３に組み上げた後、ホストコンピュータがチェックコード１０２の生成に用いたのと同じアルゴリズムの計算をユーザデータ１０１に対して行う。得られた計算結果はホストコンピュータが付加したチェックコード１０２と同じになるはずなので、その計算結果をチェックコード１０２と比較することで、ユーザデータ１０１の正当性を判定することができる。
【０００８】
図１１は、このような保護方法を採用したデータ処理システムの構成図である。図１１のデータ処理システムは、１つ以上のホストコンピュータ１１１、通信ネットワーク１１２、ストレージ制御装置１１３、および１つ以上のディスク装置１１４からなる。
【０００９】
ホストコンピュータ１１１は、通信ネットワーク１１２を介してストレージ制御装置１１３に接続され、ディスク装置１１４はストレージ制御装置１１３に接続される。ストレージ制御装置１１３およびディスク装置１１４は、ストレージ装置を構成する。
【００１０】
通信ネットワーク１１２は、例えば、ファイバチャネルのリンクに対応し、スイッチを備える。一般に、通信ネットワーク１１２には複数のホストコンピュータ１１１が接続される。
【００１１】
ストレージ制御装置１１３は、プロセッサ１２１、コントローラ１２２、およびデータバッファ１２３を備え、コントローラ１２３は、チェックコード判定回路１３１およびＣＲＣチェック回路１３２を備える。
【００１２】
ストレージ制御装置１１３は、ホストコンピュータ１１１とディスク装置１１４に対するインタフェースを備え、ホストコンピュータ１１１からのデータを通信ネットワーク１１２を経由して受信する。
【００１３】
ファイバチャネルのフレームは、図１０に示したように、ヘッダ部、データ部、およびＣＲＣコードからなり、コントローラ１２２は、フレームを受信すると、まず、ＣＲＣチェック回路１３２によりフレームにエラーがあるか否かを確認する。この確認と同時に、フレームのデータ部をデータバッファ１２３に格納し、ヘッダ部をプロセッサ１２１に渡す。ヘッダ部にはフレームがどのデータブロックの一部であるかを特定し、元のデータを組み立てるのに必要な情報が含まれる。
【００１４】
ストレージ制御装置１１３は、このような動作を繰り返すことで、ホストコンピュータ１１１から順次フレームを受信し、１つのユーザデータのデータブロック全体がデータバッファ１２３内に格納されると、プロセッサ１２１がチェックコード判定回路１３１を起動する。
【００１５】
チェックコード判定回路１３１は、データバッファ１２４からデータブロックを一定量（例えば、４バイト）ずつ読み出し、読み出したデータに決められたアルゴリズムを適用する動作を繰り返すことで、データブロックのチェックコードを生成する。そして、得られたチェックコードの妥当性を判定し、判定結果をプロセッサ１２１に通知する。
【００１６】
特許文献１は光ディスク等の誤り訂正装置に関し、特許文献２はＣＲＣを用いた端末間データ転送方式に関し、特許文献３は誤り訂正符号を用いた無線データ転送に関し、特許文献４はＣＲＣを用いた記憶装置のエラー判定に関する。
【特許文献１】特開２００１−１４４６２９号公報
【特許文献２】特開平５−０９１０７２号公報
【特許文献３】特開５−０３５６２４号公報
【特許文献４】米国特許第５６３００５４号
【発明の開示】
【発明が解決しようとする課題】
【００１７】
上述した従来のチェックコード判定方法には、次のような問題がある。
従来のチェックコード判定のシーケンスによると、ユーザデータのデータブロックのすべてのフレームを受信した後に、チェックコード判定回路を起動してチェックコードの判定を行うため、判定の終了までにかなりの時間を要する。そこで、判定を早く終了させるためにフレームの受信毎にチェックコード判定回路を起動して、受信したデータまでの途中結果を計算することも考えられる。
【００１８】
しかしながら、ファイバチャネルのリンク上では、１つのユーザデータのフレームが続けて転送されるわけではなく、図１２に示すように、複数のホストコンピュータからのユーザデータがフレームに分割されて、インターリーブされた状態で転送が行われる。
【００１９】
図１２の例では、ホストコンピュータ１１１ａ、１１１ｂ、および１１１ｃからのデータブロック１４１ａ、１４１ｂ、および１４１ｃ（ユーザデータＡ、Ｂ、およびＣ）が、それぞれ３つのフレームに分割されてストレージ制御装置１１３に転送されている。これらのフレームに収容されたデータから、元のユーザデータＡ、Ｂ、およびＣが組み立てられ、ディスク装置１１４に格納される。
【００２０】
この場合、フレームの受信毎にチェックコード判定回路を起動すれば、１つのユーザデータ（例えば、ユーザデータＡ）に対するチェックコードの判定が早く終了するという利点があるが、その間、残りのユーザデータ（例えば、ユーザデータＢおよびＣ）はチェックコード判定回路に入力することができない。したがって、残りのユーザデータの判定は、先のユーザデータの判定終了まで待たされることになり、問題の十分な解決策とはならない。
【００２１】
本発明の課題は、複数のユーザデータのデータブロックがそれぞれ複数のフレームに分割されて転送されるデータ処理システムにおいて、転送データの正当性を判定するチェックコード判定に要する時間を短縮する装置および方法を提供することである。
【課題を解決するための手段】
【００２２】
図１は、本発明の第１の判定装置の原理図である。図１の判定装置は、グループ識別子格納手段１５１、中間結果格納手段１５２、生成手段１５３、および比較手段１５４を備え、複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定する。
【００２３】
グループ識別子格納手段１５１は、複数のデータブロックにそれぞれ割り当てられた複数のグループ識別子のうち、受信したフレームに対応するデータブロックのグループ識別子を格納する。中間結果格納手段１５２は、それらのデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する。
【００２４】
生成手段１５３は、グループ識別子格納手段１５１に格納されたグループ識別子に対応する、中間結果格納手段１５２のエントリに格納された途中計算結果と、受信したフレームに含まれるデータとを用いて、チェックコードの途中計算結果を生成し、そのエントリに格納された途中計算結果を更新する。
【００２５】
比較手段１５４は、生成手段１５３が１つのデータブロックの最後のフレームのデータを用いてそのデータブロックのチェックコードの最終計算結果を生成したとき、最終計算結果をそのデータブロックのチェックコードと比較して、比較結果を出力する。
【００２６】
１つのフレームを受信する毎に、受信したフレームに対応するデータブロックのグループ識別子がグループ識別子格納手段１５１に格納され、中間結果格納手段１５２から、グループ識別子格納手段１５１に格納されたグループ識別子に対応するエントリに格納された途中計算結果が取り出される。生成手段１５３は、取り出された途中計算結果と受信したフレームに含まれるデータとを用いてチェックコードの途中計算結果を生成して、そのエントリに格納された途中計算結果を更新する。
【００２７】
このような動作が複数のデータブロックの各フレーム毎に繰り返され、中間結果格納手段１５２の複数のエントリの途中計算結果が並行して更新される。そして、１つのデータブロックの最後のフレームを受信したとき、生成手段１５３は、そのフレームのデータを用いてチェックコードの最終計算結果を生成し、比較手段１５４は、最終計算結果を受信したチェックコードと比較して、比較結果を出力する。
【００２８】
こうして、最後のフレームを受信したデータブロックから順次、そのチェックコードの最終計算結果が生成され、比較結果が出力される。このような判定装置によれば、複数のデータブロックのチェックコードが並行して更新され、最後のフレームを受信すると、直ちにそのデータブロックのチェック結果が得られる。したがって、複数のユーザデータのチェックコード判定を短時間で行うことができる。
【００２９】
第１の判定装置、グループ識別子格納手段１５１、中間結果格納手段１５２、生成手段１５３、および比較手段１５４は、例えば、後述する図２のチェックコード判定回路２１４、グループＩＤレジスタ２２１、中間結果バッファ２２６、チェックコード生成回路２２９、およびチェックコード比較回路２３１にそれぞれ対応する。
【００３０】
本発明のプロセッサは、複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定し、本発明の第２の判定装置は、それらのデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ保持しながら各データブロックのチェックコードを計算し、計算したチェックコードと受信したチェックコードを比較する。
【００３１】
プロセッサは、受信したフレームのヘッダ部の情報を格納手段に格納し、その情報を解析して、そのフレームが１つのデータブロックの最初のフレームか否かを判定する。受信したフレームが最初のフレームであれば、そのフレームに新たなグループ識別子を割り当て、受信したフレームが最初のフレームでなければ、そのフレームと同じデータブロックに属する受信済みのフレームと同じグループ識別子をそのフレームに割り当てて、割り当てたグループ識別子を判定装置に転送する。そして、判定装置から転送されたチェックコードの比較結果に基づいて、各データブロックの正当性を確認する。
【００３２】
プロセッサがこのような処理を行うことで、複数のデータブロックのチェックコードが判定装置により並行して更新され、複数のユーザデータのチェックコード判定を短時間で行うことができる。
【００３３】
第２の判定装置および格納手段は、例えば、図２のチェックコード判定回路２１４およびメモリ２０１にそれぞれ対応する。
【発明の効果】
【００３４】
本発明によれば、１つのチェックコード判定回路により複数のユーザデータのチェックコード判定を並行して実行することができ、比較的少ないハードウェア量で判定時間を短縮することが可能になる。
【発明を実施するための最良の形態】
【００３５】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図２は、本実施形態のストレージ制御装置の構成図である。図２において、ブロック間の実線の矢印はデータ信号の転送を表し、破線の矢印は制御信号の転送を表す。
【００３６】
図２のストレージ制御装置は、メモリ２０１、プロセッサ２０２、コントローラ２０３、およびデータバッファ２０４を備える。コントローラ２０３は、プロセッサインタフェース（プロセッサＩ／Ｆ）２１１、ファイバチャネルインタフェース（ファイバチャネルＩ／Ｆ）２１２、バッファインタフェース（バッファＩ／Ｆ）２１３、およびチェックコード判定回路２１４を備える。図２において、コントローラ２０３内のＣＲＣチェック回路は省略されている。
【００３７】
コントローラ２０３は、プロセッサインタフェース２１１によりプロセッサ２０２と接続され、ファイバチャネルインタフェース２１２によりホストコンピュータ１１１と接続され、バッファインタフェース２１３によりデータバッファ２０４と接続される。そして、ホストコンピュータ１１１からフレームを受信すると、データ部をデータバッファ２０４へ格納し、ヘッダ部とデータを格納したデータバッファ２０４のアドレスをプロセッサ２０２へ転送する。
【００３８】
メモリ２０１は、例えば、ＲＡＭ（random access memory）等を含み、プロセッサ２０２が用いるプログラムおよびデータを格納する。プロセッサ２０２は、メモリ２０１を利用してプログラムを実行することにより、以下に説明するような処理を行う。
【００３９】
プロセッサ２０２は、コントローラ２０３から受け取ったヘッダ部分を解析し、受信したフレームがどのデータブロックのどの部分にあたるかと、データの長さとを判断する。そして、受信したフレームがあるデータブロックの最初のフレームであれば、そのフレームに対して新しいグループ識別子（グループＩＤ）を割り当てる。受信したフレームがデータブロックの最初のフレームでなければ、同じデータブロックを構成する受信済みのフレームと同じグループＩＤを割り当てる。
【００４０】
その後、プロセッサ２０２は、受信したフレームのチェックコードを判定するためにチェックコード判定回路２１４を起動する。このとき、チェックコード判定のために必要な以下の情報をコントローラ２０３に転送する。
・データバッファ２０４内で、受信したフレームのデータが格納されているアドレス
・チェックコード判定回路２１４に入力されるデータのデータ長
・ユーザデータの最初および最後を示すフラグ
・受信したフレームのデータがどのデータブロックに属するかを表すグループＩＤ
チェックコード判定回路２１４は、グループＩＤレジスタ２２１、フラグレジスタ２２２、バッファアドレスレジスタ２２３、データ長レジスタ２２４、ステートマシン回路２２５、中間結果バッファ２２６、マルチプレクサ２２７、２２８、チェックコード生成回路２２９、生成結果レジスタ２３０、チェックコード比較回路２３１、およびチェック結果レジスタ２３２を備える。
【００４１】
このうち、グループＩＤレジスタ２２１、フラグレジスタ２２２、バッファアドレスレジスタ２２３、およびデータ長レジスタ２２４は、プロセッサ２０２から転送されるグループＩＤ、フラグ、データのアドレス、およびデータ長をそれぞれ格納する。
【００４２】
チェックコード生成回路２２９は、所定のアルゴリズムに基づいて、予め決められた長さの初期値と任意の長さのデータからチェックコードを計算する。生成結果レジスタ２３０は、チェックコード生成回路２２９から出力される計算結果を格納し、中間結果バッファ２２６は、チェックコードの途中計算結果をグループＩＤ毎に格納する。マルチプレクサ２２７および２２８は、チェックコード生成回路２２９の初期値入力として、予め決められたシード値、中間結果バッファ２２６のエントリ、および生成結果レジスタ２３０の出力のいずれかを選択する。
【００４３】
チェックコード比較回路２３１は、計算されたチェックコードとデータバッファ２０４に格納されたチェックコードが一致しているかどうかを判定し、チェック結果レジスタ２３２は、チェックコード比較回路２３１から出力される判定結果を格納する。この判定結果は、プロセッサインタフェース２１１を介してプロセッサ２０２に転送される。ステートマシン回路２２５は、プロセッサ２０２からの指示により起動され、チェックコード判定回路２１４全体の動作を制御する。
【００４４】
プロセッサ２０２は、チェックコード判定回路２１４に各フレームのグループＩＤを通知し、チェックコード判定回路２１４は、チェックコードの途中計算結果をグループＩＤ毎に中間結果バッファ２２６へ格納して、その続きを計算するときに、格納された途中計算結果を初期値として用いる。このような動作により、それぞれが複数のフレームに分割された複数のユーザデータが入り混じった状態で受信しても、フレームを受信する毎に、複数のユーザデータのチェックコード判定を並行して実行することが可能となる。したがって、結果的に判定に要する時間を短縮することができる。
【００４５】
チェックコード判定回路２１４は、バッファアドレスレジスタ２２３に格納されたデータバッファ２０４のアドレスから、データの１番目のワードを読み出して、チェックコード生成回路２２９のポートＩ２へ入力すると同時に、ポートＩ１へチェックコード生成のための初期値を入力する。
【００４６】
チェックコード生成回路２２９の初期値としては、受信したフレームがデータブロックの最初のフレームであれば、予め決められたシード値が用いられ、最初のフレームでなければ、グループＩＤレジスタ２２１のグループＩＤに対応する中間結果バッファ２２６のエントリの値が用いられる。受信したフレームがデータブロックのどの部分に対応するかは、フラグレジスタ２２２のフラグを用いて判定される。
【００４７】
チェックコード生成回路２２９はチェックコードの計算結果を生成結果レジスタ２３０に出力する。チェックコード判定回路２１４は引き続きデータバッファ２０４のアドレスから２番目のワードを読み出し、チェックコード生成回路２２９のポートＩ２に入力すると同時に、生成結果レジスタ２３０の出力値をポートＩ１に入力する。この動作をプロセッサ２０２から指示された長さのデータまで繰り返す。
【００４８】
チェックコード判定回路２１４は、受信したフレームがデータブロックの最後のフレームであれば、データバッファ２０４から受信したチェックコードを読み出す。そして、チェックコード比較回路２３１は、読み出されたチェックコードを、上記のシーケンスでチェックコード生成回路２２９が最終的に生成したチェックコードの計算結果と比較する。２つのチェックコードが一致していれば、受信したデータブロックの正当性が確認できる。
【００４９】
チェックコード生成回路２２９は、フレームがデータブロックの最後でなければ、チェックコード生成回路２２９が生成したチェックコードの途中計算結果を、グループＩＤレジスタ２２１のグループＩＤに対応する中間結果バッファ２２６のエントリに格納する。
【００５０】
図３は、図２のストレージ制御装置の動作シーケンスの一例を示している。この例では、１つのデータブロックが３つのフレームに分割されてホストコンピュータ１１１から転送されている。プロセッサ２０２は、これらの３つのフレームのヘッダ部を解析して、同じデータブロックの構成要素であると判定するので、３つのフレームに同じグループＩＤを割り当てる。図３の動作シーケンスは以下の通りである。
（１）最初のフレームの受信に続いて、チェックコード判定回路２１４のステートマシン回路２２５がプロセッサ２０２から起動される。
（２）ステートマシン回路２２５は、予め決められたシード値を初期値としてチェックコード生成回路２２９に与える。
（３）チェックコード生成回路２２９は、データバッファ２０４から読み出されたデータのチェックコードを計算する。
（４）チェックコード生成回路２２９は、指示されたデータの計算を終えると、計算結果を中間結果バッファ２２６のグループＩＤに対応するエントリに格納する。
（５）２番目のフレームの受信に続いて、ステートマシン回路２２５がプロセッサから起動される。
（６）ステートマシン回路２２５は、中間結果バッファ２２６のグループＩＤに対応するエントリから読み出した値を、初期値としてチェックコード生成回路２２９に与える。
（７）チェックコード生成回路２２９は、データバッファ２０４から読み出されたデータのチェックコードを計算する。
（８）チェックコード生成回路２２９は、指示されたデータの計算を終えると、計算結果を中間結果バッファ２２６のグループＩＤに対応するエントリに格納する。
（９）３番目のフレームの受信に続いて、ステートマシン回路２２５がプロセッサから起動される。
（１０）ステートマシン回路２２５は、中間結果バッファ２２６のグループＩＤに対応するエントリから読み出した値を、初期値としてチェックコード生成回路２２９に与える。
（１１）チェックコード生成回路２２９は、データバッファ２０４から読み出されたデータのチェックコードを計算する。
（１２）チェックコード生成回路２２９は、指示されたデータの計算を終えると、計算結果をチェックコード比較回路２３１に出力する。
（１３）チェックコード比較回路２３１は、データバッファ２０４からチェックコード部分を読み出し、計算されたチェックコードと比較する。
【００５１】
次に、図４から図７までを参照しながら、図２のストレージ制御装置の動作をより詳細に説明する。
図４は、フラグレジスタ２２２に格納される先頭フラグおよび終了フラグを示している。これらのフラグはそれぞれ１ビットの情報で表される。先頭フラグが立っているとき（論理“１”のとき）、データブロックの最初のフレームであることを表し、終了フラグが立っているとき、データブロックの最後のフレームであることを表す。いずれのフラグも立っていないときは、最初でも最後でもない途中のフレームであることを表し、両方のフラグが立っているときは、最初で最後のフレームであることを表す。
【００５２】
マルチプレクサ２２７は、フラグレジスタ２２２の先頭フラグが論理“０”のとき、グループＩＤレジスタ２２１のグループＩＤに対応する中間結果バッファ２２６のエントリから出力されるデータを選択し、先頭フラグが論理“１”のときシード値を選択して、選択したデータをマルチプレクサ２２８に出力する。
【００５３】
図５は、ステートマシン回路２２５の状態遷移を示している。ステートマシン回路２２５は、プロセッサ２０２により起動されると、アイドル状態（ＩＤＬＥ）から待ち状態（ＷＡＩＴ）に遷移し、チェックコード生成回路２１４がバッファインタフェース２１３からデータを受信すると、ＷＡＩＴ状態から計算状態（ＣＡＬＣ）に遷移する。そして、チェックコードの計算に必要な制御を開始する。
【００５４】
ステートマシン回路２２５は、ＷＡＩＴ状態において、マルチプレクサ２２８がマルチプレクサ２２７の出力を選択するような制御信号を出力し、ＣＡＬＣ状態において、マルチプレクサ２２８が生成結果レジスタ２３０の出力を選択するような制御信号を出力する。
【００５５】
ＣＡＬＣ状態において、フラグレジスタ２２２の終了フラグが論理“０”のときにバッファインタフェース２１３からフレームの最後のワードを受信すると、ライト状態（ＷＲＴ）に遷移する。そして、中間結果バッファ２２６に対してライト有効信号を出力し、生成結果レジスタ２３０の計算結果を中間結果バッファ２２６へ書き込む制御を行う。
【００５６】
また、ＣＡＬＣ状態において、フラグレジスタ２２２の終了フラグが論理“１”のときにフレームの最後のワードを受信すると、チェック状態（ＣＨＫ）に遷移し、計算結果を受信したチェックコードと比較する制御を行う。そして、ＷＲＴ状態またはＣＨＫ状態の制御が終了すると、ＩＤＬＥ状態に遷移する。
【００５７】
図６は、プロセッサ２０２が行う処理のフローチャートである。プロセッサ２０２は、コントローラ２０３から受信したヘッダ部の情報をメモリ２０１に格納し、その情報を解析する（ステップ６０１）。そして、ホストコンピュータ１１１から受信したフレームがデータブロックの最初のフレームか否かを判定する（ステップ６０２）。
【００５８】
受信したフレームが最初のフレームであれば、そのフレームに新たなグループＩＤを割り当て（ステップ６０３）、さらにそのフレームがデータブロックの最後のフレームか否かを判定する（ステップ６０４）。受信したフレームが最後のフレームであれば、そのフレームはデータブロックの最初かつ最後のフレームであるので、先頭フラグおよび終了フラグに論理“１”を設定する（ステップ６０５）。また、受信したフレームが最後のフレームでなければ、先頭フラグおよび終了フラグにそれぞれ論理“１”および“０”を設定する（ステップ６０６）。
【００５９】
次に、データのアドレスおよびデータ長を設定し、グループＩＤ、先頭フラグ、および終了フラグとともにコントローラ２０３へ送信して（ステップ６０７）、チェックコード判定回路２１４を起動する（ステップ６０８）。
【００６０】
そして、コントローラ２０３から割り込み信号を受信するまで別の処理を行う（ステップ６０９）。コントローラ２０３から割り込み信号を受信すると、チェックコード判定回路２１４からチェック結果を読み出して、受信したデータブロックの正当性を確認し（ステップ６１１）、別の処理を行う（ステップ６１２）。
【００６１】
ステップ６０２において、受信したフレームが最初のフレームでなければ、そのフレームは既に受信済みのいずれかのフレームの後続データに該当する。そこで、どのデータブロックのフレームかを判別し（ステップ６１３）、対応する受信済みのフレームと同じグループＩＤを受信したフレームに割り当てる（ステップ６１４）。
【００６２】
次に、そのフレームがデータブロックの最後のフレームか否かを判定する（ステップ６１５）。受信したフレームが最後のフレームであれば、先頭フラグおよび終了フラグにそれぞれ論理“０”および“１”を設定する（ステップ６１６）。また、受信したフレームが最後のフレームでなければ、先頭フラグおよび終了フラグに論理“０”を設定する。そして、ステップ６０７以降の処理を行う。
【００６３】
データブロックとグループＩＤの対応関係を管理するために、例えば、各ユーザデータの識別子と各グループＩＤの対応関係を保持するテーブルがメモリ２０１内に設けられ、プロセッサ２０２は、そのテーブルに受信したフレームのデータ識別子とグループＩＤを登録しておく。そして、ステップ６１４において、新たに受信したフレームのデータ識別子に対応するグループＩＤをテーブルから取得して、そのフレームに割り当てる。
【００６４】
図７は、チェックコード判定回路２１４の動作タイミングチャートの一例を示している。上端の数字はクロックサイクルを表し、サイクル１から１３まではデータブロックの最初のフレームのデータ処理を表し、サイクル２１から３２まではデータブロックの最後のフレームのデータ処理を表す。ステートマシン回路２２５は、チェックコードの計算が開始されると、１サイクル毎にデータ長レジスタ２２４の値をデクリメントする。
【００６５】
データ有効信号は、データバッファ２０４からバッファインタフェース２１３を介してステートマシン回路２２５およびチェックコード比較回路２３１に出力される制御信号であり、ライト有効信号は、ステートマシン回路２２５から中間結果バッファ２２６に出力される制御信号である。以下、サイクル番号を参照しながら、チェックコード判定回路２１４の動作を説明する。
サイクル１
コントローラ２０３が最初のフレームを受信すると、プロセッサ２０２がグループＩＤ、フラグ、データ長、およびアドレスを設定し、チェックコード判定回路２１４を起動する。グループＩＤは０、先頭フラグは論理“１”、終了フラグは論理“０”、データ長はＮに設定される。これにより、ステートマシン回路２２５は、ＩＤＬＥ状態からＷＡＩＴ状態に遷移する。
サイクル４
データバッファ２０４からバッファインタフェース２１３を介して最初のデータ“Ｄ１”が読み出され、チェックコード生成回路２２９のポートＩ２に入力される。このとき、先頭フラグは論理“１”であるから、マルチプレクサ２２７はシード値を選択し、ステートマシン回路２２５はＷＡＩＴ状態であるから、マルチプレクサ２２８はマルチプレクサ２２７の出力を選択する。したがって、チェックコード生成回路２２９のポートＩ１にはシード値が入力される。ステートマシン回路２２５は、ＷＡＩＴ状態からＣＡＬＣ状態に遷移し、データ長レジスタ２２４の値は１だけデクリメントされる。
サイクル５
サイクル４でチェックコード生成回路２２９に入力されたデータから得られた値“Ｃ１”が、生成結果レジスタ２３０に格納される。データバッファ２０４から２番目のデータ“Ｄ２”が読み出され、チェックコード生成回路２２９のポートＩ２に入力される。このとき、ステートマシン回路２２５はＣＡＬＣ状態であるから、マルチプレクサ２２８は生成結果レジスタ２３０の出力を選択し、チェックコード生成回路２２９のポートＩ１には“Ｃ１”が入力される。データ長レジスタ２２４の値は１だけデクリメントされる。
サイクル６−１０
サイクル５と同様の動作が繰り返され、生成結果レジスタ２３０の値が順次更新される。
サイクル１１
チェックコード生成回路２２９から出力された値“ＣＮ−１”が、生成結果レジスタ２３０に格納され、チェックコード生成回路２２９のポートＩ１に入力される。データバッファ２０４からデータ“ＤＮ”が読み出され、チェックコード生成回路２２９のポートＩ２に入力される。データ長レジスタ２２４の値は１であり、デクリメントすると０になるので、“ＤＮ”は最後のデータと判定される。このとき、終了フラグは論理“０”であるから、ステートマシン回路２２５は、ＣＡＬＣ状態からＷＲＴ状態へ遷移する。
サイクル１２
チェックコード生成回路２２９から出力された値“ＣＮ”が、最初のフレームに対するチェックコードの計算結果として、生成結果レジスタ２３０に格納される。ステートマシン回路２２５からライト有効信号が出力され、生成結果レジスタ２３０の値“ＣＮ”が、途中計算結果として中間結果バッファ２２６へ格納される。このとき、“ＣＮ”は、グループＩＤレジスタ２２１のグループＩＤが指しているアドレス“０”のエントリに書き込まれる。
【００６６】
その後、コントローラ２０３が次のフレームを受信する毎にチェックコード判定回路２１４が起動され、中間結果バッファ２２６のアドレス“０”に格納された“ＣＮ”の値が更新される。
サイクル２１
コントローラ２０３が最後のフレームを受信すると、プロセッサ２０２がグループＩＤ、フラグ、データ長、およびアドレスを設定し、チェックコード判定回路２１４を起動する。グループＩＤは０、先頭フラグは論理“０”、終了フラグは論理“１”、データ長はＭに設定される。これにより、ステートマシン回路２２５は、ＩＤＬＥ状態からＷＡＩＴ状態に遷移する。
サイクル２４
データバッファ２０４から最初のデータ“Ｄ１”が読み出され、チェックコード生成回路２２９のポートＩ２に入力される。このとき、先頭フラグは論理“０”であるから、マルチプレクサ２２７は中間結果バッファ２２６の出力を選択し、ステートマシン回路２２５はＷＡＩＴ状態であるから、マルチプレクサ２２８はマルチプレクサ２２７の出力を選択する。したがって、チェックコード生成回路２２９のポートＩ１には、中間結果バッファ２２６のアドレス“０”のデータ“ＣＮ”が入力される。ステートマシン回路２２５は、ＷＡＩＴ状態からＣＡＬＣ状態に遷移し、データ長レジスタ２２４の値は１だけデクリメントされる。
サイクル２５−２９
サイクル５と同様の動作が繰り返され、生成結果レジスタ２３０の値が順次更新される。
サイクル３０
チェックコード生成回路２２９から出力された値“ＣＭ−１”が、生成結果レジスタ２３０に格納され、チェックコード生成回路２２９のポートＩ１に入力される。データバッファ２０４からデータ“ＤＭ”が読み出され、チェックコード生成回路２２９のポートＩ２に入力される。データ長レジスタ２２４の値は１であるから、“ＤＭ”は最後のデータと判定される。このとき、終了フラグは論理“１”であるから、ステートマシン回路２２５は、ＣＡＬＣ状態からＣＨＫ状態へ遷移する。
サイクル３１
チェックコード生成回路２２９から出力された値“ＣＭ”が、最後のフレームに対するチェックコードの計算結果として、生成結果レジスタ２３０に格納される。この“ＣＭ”は、グループＩＤ“０”のデータ全体に対するチェックコードの計算結果であり、チェックコード比較回路２３１のポートＩ４に入力される。また、データバッファ２０４から最後のフレームのデータに続くチェックコード“ＣＣ”が読み出され、チェックコード比較回路２３１のポートＩ３に入力される。
サイクル３２
チェックコード比較回路２３１は、ステートマシン回路２２５からの制御信号に従って、計算結果“ＣＭ”とチェックコード“ＣＣ”を比較し、その結果をチェック結果としてチェック結果レジスタ２３２に書き込む。
【００６７】
その後、ステートマシン回路２２５がプロセッサ２０２に割り込み信号を送信し、プロセッサ２０２は、チェック結果レジスタ２３２のチェック結果を読み出して、データブロックの正当性を確認する。
【００６８】
図３では、１つのデータブロックを構成するフレームが連続してホストコンピュータ１１１から転送されており、図７では、１つのデータブロックの最初および最後のフレームのデータ処理のみが示されているが、実際には別のデータブロックを構成するフレームが間に入ることがある。そのような場合でも、別のデータブロックに別のグループＩＤを割り当て、そのフレームのチェックコードの計算結果を中間結果バッファ２２６の別のエントリに格納することによって、複数のデータブロックのチェックコードの判定を並行して行うことができる。
【００６９】
図８は、このような場合のチェックコード判定の一例を示している。この例では、ホストコンピュータ１１１ａおよび１１１ｂから、それぞれユーザデータＡおよびＢのデータブロックが複数のフレームに分割されて、ストレージ制御装置８０１に転送されている。
【００７０】
ユーザデータＡはデータＡ１、データＡ２、・・・、データＡｘからなり、ユーザデータＢはデータＢ１、データＢ２、・・・、データＢｙからなる。各データはそれぞれ別々のフレームに収容されて転送される。ストレージ制御装置８０１は、図２のような構成を有し、データＡ１、データＢ１、データＡ２、データＢ２、・・・、データＡｘ、データＢｙの順にそれらのフレームを受信する。
【００７１】
受信したフレームのデータは、一旦、データバッファ２０４に格納され、チェックコード判定回路２１４によりデータバッファ２０４から順次読み出される。チェックコード生成回路２２９は、まず、データＡ１とシード値からチェックコードＡを計算し、途中計算結果として中間結果バッファ２２６の対応するエントリ８１１に格納する。次に、データＢ１とシード値からチェックコードＢを計算し、途中計算結果として中間結果バッファ２２６の対応するエントリ８１２に格納する。
【００７２】
次に、チェックコード生成回路２２９は、データＡ２とエントリ８１１のチェックコードＡからチェックコードを計算し、エントリ８１１のチェックコードＡを更新する。また、データＢ２とエントリ８１２のチェックコードＢからチェックコードを計算し、エントリ８１２のチェックコードＢを更新する。
【００７３】
このような更新動作が繰り返され、チェックコード生成回路２２９にデータＡｘが入力されたとき、ユーザデータＡの全体に対するチェックコードがチェックコード比較回路２３１に出力される。また、チェックコード生成回路２２９にデータＢｙが入力されたとき、ユーザデータＢの全体に対するチェックコードがチェックコード比較回路２３１に出力される。
【００７４】
図９は、プロセッサ２０２が処理に用いるプログラムおよびデータの提供方法を示している。情報処理装置等の外部装置９０１や可搬記録媒体９０２に格納されたプログラムおよびデータは、ストレージ制御装置８０１のメモリ２０１にロードされる。外部装置９０１は、そのプログラムおよびデータを搬送する搬送信号を生成し、通信ネットワーク上の任意の伝送媒体を介してストレージ制御装置８０１に送信する。可搬記録媒体９０２は、メモリカード、フレキシブルディスク、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。プロセッサ２０２は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００７５】
ところで、図１１のデータ処理システムではディスク装置がストレージ制御装置に接続されているが、本発明はテープ装置のような他の記憶装置が接続されたストレージ制御装置に対しても適用可能である。また、ディスク装置には、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等が含まれる。
【００７６】
（付記１）  複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定する判定装置であって、
前記複数のデータブロックにそれぞれ割り当てられた複数のグループ識別子のうち、受信したフレームに対応するデータブロックのグループ識別子を格納するグループ識別子格納手段と、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段と、
前記グループ識別子格納手段に格納されたグループ識別子に対応する、前記中間結果格納手段のエントリに格納された途中計算結果と、前記受信したフレームに含まれるデータとを用いて、チェックコードの途中計算結果を生成し、該エントリに格納された途中計算結果を更新する生成手段と、
前記生成手段が１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較して、比較結果を出力する比較手段と
を備えることを特徴とする判定装置。
【００７７】
（付記２）  前記生成手段は、１つのフレームを受信する毎に、前記中間結果格納手段の対応するエントリに格納された途中計算結果を更新する動作を繰り返しながら、該中間結果格納手段の複数のエントリの途中計算結果を並行して更新することを特徴とする付記１記載の判定装置。
【００７８】
（付記３）  前記受信したフレームが１つのデータブロックの最後のフレームであるか否かを示すフラグを格納するフラグ格納手段をさらに備え、前記生成手段は、該フラグが該最後のフレームであることを示していないとき、前記中間結果格納手段のエントリに格納された途中計算結果を更新し、前記比較手段は、該フラグが該最後のフレームであることを示しているとき、前記最終計算結果を前記１つのデータブロックのチェックコードと比較することを特徴とする付記１記載の判定装置。
【００７９】
（付記４）  複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定し、該データを記憶装置へ転送する制御を行うストレージ制御装置であって、
送信されたフレームを受信する受信手段と、
前記複数のデータブロックにそれぞれ異なるグループ識別子を割り当て、受信したフレームのヘッダ部の情報を解析して、該フレームに対応するデータブロックのグループ識別子を該フレームに割り当てる制御手段と、
前記受信したフレームに割り当てられたグループ識別子を格納するグループ識別子格納手段と、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段と、
前記グループ識別子格納手段に格納されたグループ識別子に対応する、前記中間結果格納手段のエントリに格納された途中計算結果と、前記受信したフレームに含まれるデータとを用いて、チェックコードの途中計算結果を生成し、該エントリに格納された途中計算結果を更新する生成手段と、
前記生成手段が１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較して、比較結果を出力する比較手段と
を備えることを特徴とするストレージ制御装置。
【００８０】
（付記５）  複数のアクセス装置から複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定し、該データを格納するストレージ装置であって、
送信されたフレームを受信する受信手段と、
前記複数のデータブロックにそれぞれ異なるグループ識別子を割り当て、受信したフレームのヘッダ部の情報を解析して、該フレームに対応するデータブロックのグループ識別子を該フレームに割り当てる制御手段と、
前記受信したフレームに割り当てられたグループ識別子を格納するグループ識別子格納手段と、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段と、
前記グループ識別子格納手段に格納されたグループ識別子に対応する、前記中間結果格納手段のエントリに格納された途中計算結果と、前記受信したフレームに含まれるデータとを用いて、チェックコードの途中計算結果を生成し、該エントリに格納された途中計算結果を更新する生成手段と、
前記生成手段が１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較して、比較結果を出力する比較手段と、
前記複数のアクセス装置により共用され、各データブロックの複数のフレームに含まれるデータから組み立てられた元のデータを格納する記憶装置と
を備えることを特徴とするストレージ装置。
【００８１】
（付記６）  複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定するプロセッサのためのプログラムであって、
受信したフレームのヘッダ部の情報を格納手段に格納し、該ヘッダ部の情報を解析して、該フレームが１つのデータブロックの最初のフレームか否かを判定し、
前記受信したフレームが前記最初のフレームであれば、該フレームに新たなグループ識別子を割り当て、該受信したフレームが該最初のフレームでなければ、該フレームと同じデータブロックに属する受信済みのフレームと同じグループ識別子を該フレームに割り当て、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ保持しながら各データブロックのチェックコードを計算し、計算したチェックコードと受信したチェックコードを比較する判定装置に、割り当てたグループ識別子を転送し、
前記判定装置から転送されたチェックコードの比較結果に基づいて、各データブロックの正当性を確認する
処理を前記プロセッサに実行させることを特徴とするプログラム。
【００８２】
（付記７）  複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定するプロセッサのためのプログラムを記録した記録媒体であって、
前記プログラムは、
受信したフレームのヘッダ部の情報を格納手段に格納し、該ヘッダ部の情報を解析して、該フレームが１つのデータブロックの最初のフレームか否かを判定し、
前記受信したフレームが前記最初のフレームであれば、該フレームに新たなグループ識別子を割り当て、該受信したフレームが該最初のフレームでなければ、該フレームと同じデータブロックに属する受信済みのフレームと同じグループ識別子を該フレームに割り当て、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ保持しながら各データブロックのチェックコードを計算し、計算したチェックコードと受信したチェックコードを比較する判定装置に、割り当てたグループ識別子を転送し、
前記判定装置から転送されたチェックコードの比較結果に基づいて、各データブロックの正当性を確認する
処理を前記プロセッサに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
【００８３】
（付記８）  複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定するプロセッサのためのプログラムを搬送する搬送信号であって、
前記プログラムは、
受信したフレームのヘッダ部の情報を格納手段に格納し、該ヘッダ部の情報を解析して、該フレームが１つのデータブロックの最初のフレームか否かを判定し、
前記受信したフレームが前記最初のフレームであれば、該フレームに新たなグループ識別子を割り当て、該受信したフレームが該最初のフレームでなければ、該フレームと同じデータブロックに属する受信済みのフレームと同じグループ識別子を該フレームに割り当て、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ保持しながら各データブロックのチェックコードを計算し、計算したチェックコードと受信したチェックコードを比較する判定装置に、割り当てたグループ識別子を転送し、
前記判定装置から転送されたチェックコードの比較結果に基づいて、各データブロックの正当性を確認する
処理を前記プロセッサに実行させることを特徴とする搬送信号。
【００８４】
（付記９）  複数のデータブロックがそれぞれ複数のフレームに分割されて送信されたとき、各データブロックに含まれるチェックコードを用いて各データブロックに含まれるデータの正当性を判定する判定方法であって、
１つのフレームを受信する毎に、
受信したフレームのヘッダ部の情報を解析して、該フレームに対応するデータブロックのグループ識別子を該フレームに割り当て、
前記受信したフレームに割り当てられたグループ識別子をグループ識別子格納手段に格納し、
前記複数のデータブロックのチェックコードの途中計算結果をグループ識別子毎にそれぞれ格納する複数のエントリを有する中間結果格納手段から、前記グループ識別子格納手段に格納されたグループ識別子に対応するエントリに格納された途中計算結果を取り出し、
取り出した途中計算結果と前記受信したフレームに含まれるデータとを用いてチェックコードの途中計算結果を生成して、前記グループ識別子に対応するエントリに格納された途中計算結果を更新する動作を繰り返し、
１つのデータブロックの最後のフレームのデータを用いて該１つのデータブロックのチェックコードの最終計算結果を生成したとき、該最終計算結果を該１つのデータブロックのチェックコードと比較する
ことを特徴とする判定方法。
【図面の簡単な説明】
【００８５】
【図１】本発明の判定装置の原理図である。
【図２】ストレージ制御装置の構成図である。
【図３】ストレージ制御装置の動作シーケンスを示す図である。
【図４】フラグレジスタのフラグを示す図である。
【図５】ステートマシン回路の状態遷移を示す図である。
【図６】プロセッサの処理のフローチャートである。
【図７】チェックコード判定回路の動作タイミングチャートである。
【図８】複数のユーザデータのチェックコード判定を示す図である。
【図９】プログラム／データの提供方法を示す図である。
【図１０】チェックコードによるデータ保護を示す図である。
【図１１】データ処理システムの構成図である。
【図１２】複数のホストコンピュータからのデータ転送を示す図である。
【符号の説明】
【００８６】
１０１  ユーザデータ
１０２  チェックコード
１０３、１４１ａ、１４１ｂ、１４１ｃ  データブロック
１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ  フレーム
１１１、１１１ａ、１１１ｂ、１１１ｃ  フレーム
１１２  通信ネットワーク
１１３、８０１  ストレージ制御装置
１５１  グループ識別子格納手段
１５２  中間結果格納手段
１５３  生成手段
１５４  比較手段
１２１、２０２  プロセッサ
１２２、２０３  コントローラ
１２３、２０４  データバッファ
１３１、２１４  チェックコード判定回路
１３２  ＣＲＣチェック回路
２０１  メモリ
２１１  プロセッサインタフェース
２１２  ファイバチャネルインタフェース
２１３  バッファインタフェース
２２１  グループＩＤレジスタ
２２２  フラグレジスタ
２２３  バッファアドレスレジスタ
２２４  データ長レジスタ
２２５  ステートマシン回路
２２６  中間結果バッファ
２２７、２２８  マルチプレクサ
２２９  チェックコード生成回路
２３０  生成結果レジスタ
２３１  チェックコード比較回路
２３２  チェック結果レジスタ
８１１、８１２  エントリ
９０１  外部装置
９０２  可搬記録媒体
【図１】
2005252712.tif 000003
【図２】
2005252712.tif 000004
【図３】
2005252712.tif 000005
【図４】
2005252712.tif 000006
【図５】
2005252712.tif 000007
【図６】
2005252712.tif 000008
【図７】
2005252712.tif 000009
【図８】
2005252712.tif 000010
【図９】
2005252712.tif 000011
【図１０】
2005252712.tif 000012
【図１１】
2005252712.tif 000013
【図１２】
2005252712.tif 000014