以下に、本願の開示する情報処理装置、情報処理システム及び障害検出方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム及び障害検出方法が限定されるものではない。
図1は、情報処理装置のシステム構成図である。本実施例に係る情報処理装置は、システム制御装置1、チャネル装置2及び3、スイッチ装置4、CPU5、主記憶装置6、並びに、IO装置7及び8を有する。
CPU5は、演算処理部であり、主記憶装置6に格納されているデータなどを用いて演算処理を行う。
主記憶装置6は、例えばメモリであり、CPU5が演算に用いるためのデータなどを格納する。
IO装置7及び8は、データを管理する装置であり、保持するデータの出力や、入力されたデータの保持を行う。例えば、IO装置7及び8は、ハードディスクなどのデータを格納する装置である。IO装置7は、チャネル装置2からの読み出しの指示を受けて、自己が保持するデータをチャネル装置2へ送信する。また、IO装置7は、チャネル装置2から出力されたデータを主記憶装置6に格納する。
チャネル装置2及び3は、データの伝送経路であるチャネル毎に配置される。チャネル装置2及び3は、自己が配置されたチャネルにおけるデータ転送を制御する。図1では、1例として2つのチャネルを有する情報処理装置について図示しているが、チャネルの数はいくつでもよい。そして、図1ではチャネル装置2及び3は、2つであるが、チャネル装置は、チャネルの数に合わせて配置される。チャネル装置2と3とは、配置されたチャネルに対して同様の機能を有するため、以下では、チャネル装置2を例に説明する。
例えば、チャネル装置2は、IO装置7から入力されたデータをスイッチ装置4及びシステム制御装置1を介して、主記憶装置6へ送信する。また、チャネル装置2は、主記憶装置6から読み出されたデータをシステム制御装置1及びスイッチ装置4を介して受信し、IO装置7へ送信する。このチャネル装置2が、「第1転送部」及び「第1データ転送装置」の一例にあたる。
スイッチ装置4は、チャネル装置2とシステム制御装置1との間のデータ転送経路の制御を行う。スイッチ装置4は、チャネル装置2から入力されたデータをシステム制御装置1へ出力する。また、スイッチ装置4は、システム制御装置1から入力されたデータをシステム制御装置1によって指定されたチャネル装置2へ出力する。
システム制御装置1は、CPU5からの指示を受けて、主記憶装置6からデータを読出しスイッチ装置4を介して、CPU5により指定されたチャネル装置3へデータを送信する。また、システム制御装置1は、CPU5からの指示を受けて、チャネル装置2へデータの読み込みを指示する。そして、スイッチ装置4は、スイッチ装置4を介してチャネル装置2からデータを受信し、主記憶装置6へ格納する。このシステム制御装置1が、「第2転送部」及び「第2データ転送装置」の一例にあたる。
ここで、データがIO装置7から読み出され主記憶装置6へ格納されるまでの全体的な流れをまとめて説明する。チャネル装置2は、CPU5から指定されたデータをIO装置7から読み出す。そして、チャネル装置2は、読み出したデータをスイッチ装置4を介してシステム制御装置1へ送信する。システム制御装置1は、スイッチ装置4を介してチャネル装置2が出力したデータを受信する。そして、システム制御装置1は、受信したデータをCPU5により指定された主記憶装置6のアドレスへ格納する。
次に、図2を参照して、システム制御装置1とスイッチ装置4との間のデータ転送について詳細に説明する。図2は、システム制御装置及びチャネル装置のブロック図である。スイッチ装置4は、システム制御装置1とスイッチ装置4との間のデータ転送を仲介するだけなので、図2では省略する。
チャネル装置2は、データ入力制御部20、CRCチェック部21、データ一時格納部22、データ出力制御部23及びCRC算出部24を有する。さらに、チャネル装置2は、チェックサム算出部25、チェックサム受信部26、CRCチェック部27、チェックサム計算部28及びエラー検出部29を有する。
IO装置7は、チャネル装置2に対して、データをパケット単位に分割して送信する。この際、IO装置7は、分割したパケット毎にCRCのチェックコードを付加する。
データ入力制御部20は、CRCのチェックコードが付加されたパケットをIO装置7から受信する。そして、データ入力制御部20は、受信したパケットをCRCチェック部21へ出力し、その後、チェック結果をCRCチェック部21から受信する。
データ入力制御部20は、ECCのチェックコードを各データに付加した後、データ一時格納部22へデータを出力する。同時に、データ入力制御部20は、データをチェックサム算出部25へ出力する。
CRCチェック部21は、IO装置7からチャネル装置2へ送信されたパケットの入力をデータ入力制御部20から受ける。そして、CRCチェック部21は、受信したパケットに含まれるデータを用いてCRCのチェックコードを算出する。その後、CRCチェック部21は、受信したパケットに付加されているCRCのチェックコードと算出したCRCのチェックコードとを比較して、一致していればエラーが発生していないと判定し、一致していなければエラーの発生を検出する。
そして、CRCチェック部21は、CRCのチェック結果をデータ入力制御部20へ出力する。
データ一時格納部22は、システム制御部1へデータを転送する際に、システム制御部1のデータ受信のタイミングに合わせてデータを出力するためにデータを一時保持する。データ一時格納部22は、例えば、メモリである。
データ一時格納部22は、ECCのチェックコードが付加されたデータをデータ入力制御部20から受信し格納する。そして、データ一時格納部22は、システム制御装置1のデータ受信タイミングに合わせて、データを順次出力する。
データ出力制御部23は、システム制御装置1へ送信するデータの入力をデータ一時格納部22から受ける。データ出力制御部23は、受信したデータとECCからエラー検出及び訂正を行う。そして、データ出力制御部23は、訂正不可能なエラーが検出されなければ、処理を進める。
データ出力制御部23は、受信したデータをパケットに分割する。ここで、このパケットの長さは、IO装置7が用いるパケットの長さとは関係なく、同じ長さでもよいし異なる長さでもよい。次に、データ出力制御部23は、生成したパケットをCRC算出部24へ出力する。その後、データ出力制御部23は、CRCのチェックコードをCRC算出部24から受信する。そして、データ出力制御部23は、CRCが付加されたパケットをシステム制御装置1へ出力する。
データ出力制御部23がシステム制御装置1へデータを送信する際のパケットの最大長が、「所定の転送単位」の一例にあたる。
CRC算出部24は、システム制御部1へ送信するパケットをデータ出力制御部23から受信する。そして、CRC算出部24は、各パケットに含まれるデータの値を基にCRCのチェックコードを算出する。その後、CRC算出部24は、算出したCRCのチェックコードをデータ出力制御部23へ出力する。
チェックサム算出部25は、IO装置7から入力されたデータをデータ入力制御部20から受信する。チェックサム算出部25は、受信したデータのデータ全体のチェックサムを算出する。ここで、データ全体とは、IO装置7がデータ転送を開始して最初のパケットを送信してから、チャネルがデータ転送終了条件を満たすまでに送信された全てのデータを指す。チャネルがデータ転送終了を満たす条件とは、例えば、チャネル装置2によるデータ転送の終了通知の受信である。以下では、チェックサム算出部25が算出したチェックサムを「チャネル装置側チェックサム」という。
そして、チェックサム算出部25は、算出したチャネル装置側チェックサムをエラー検出部29へ出力する。このチェックサム算出部25が、「第1計算部」の一例にあたる。また、チャネル装置側チェックサムが、「第1エラー情報」の一例にあたる。
チェックサム受信部26は、システム制御装置1から主記憶装置6へ送信されるパケット毎に計算されたチェックサムを含むパケットを、後述するシステム制御装置1のチェックサム送信部15から受信する。以下では、システム制御装置1から主記憶装置6へ送信されるパケット毎に計算されたチェックサムを、「システム制御装置側パケット単位チェックサム」という。そして、チェックサム受信部26は、受信したパケットをCRCチェック部27へ出力する。その後、チェックサム受信部26は、CRCチェック部27からCRCのチェック結果を受信する。
CRCのチェック結果でエラーが検出されていない場合、チェックサム受信部26は、システム制御装置側パケット単位チェックサムをチェックサム計算部28へ出力する。
CRCチェック部27は、システム制御装置側パケット単位チェックサムを含むパケットの入力をチェックサム受信部26から受ける。そして、CRCチェック部27は、受信したパケットに含まれるデータを用いてCRCのチェックコードを算出する。その後、CRCチェック部27は、受信したパケットに付加されているCRCのチェックコードと算出したCRCのチェックコードとを比較して、一致していればエラーが発生していないと判定し、一致していなければエラーの発生を検出する。
そして、CRCチェック部27は、CRCのチェック結果をチェックサム受信部26へ出力する。
チェックサム計算部28は、システム制御装置側パケット単位チェックサムの入力をチェックサム受信部26から受信する。チェックサム計算部28は、データ全体に対応する全パケットの各チェックサムの受信が完了するまで待機する。そして、チェックサム受信部26は、全てのシステム制御装置側パケット単位チェックサムを用いて演算を行い、データ全体のチェックサムを算出する。
ここで、このチェックサム計算部28が算出したデータ全体のチェックサムは、システム制御装置1が主記憶装置6へ出力したデータ全体のチェックサムにあたる。以下では、チェックサム計算部28が算出したチェックサムを「システム制御装置側チェックサム」という。
その後、チェックサム計算部28は、算出したシステム制御装置側チェックサムをエラー検出部29へ出力する。このチェックサム計算部28が、「第2計算部」の一例にあたる。また、システム制御装置側チェックサムが、「第2エラー情報」の一例にあたる。
エラー検出部29は、チャネル装置側チェックサムの入力をチェックサム算出部25から受ける。また、エラー検出部29は、システム制御装置側チェックサムの入力をチェックサム計算部28から受ける。そして、エラー検出部29は、チャネル装置側チェックサムとシステム制御装置側チェックサムとを比較する。
ここで、チャネル装置側チェックサムは、チャネル装置2がIO装置7から受信したデータ全体のチェックサムである。また、システム制御装置側チェックサムは、チャネル装置2がIO装置7から受信したデータに対応する、システム制御装置1が主記憶装置6へ出力したデータ全体のチェックサムである。チャネル装置2がIO装置7から受信し、システム制御装置1が主記憶装置6へ出力するまでにエラーが発生していなければ、チャネル装置側チェックサムとシステム制御装置側チェックサムとは一致するはずである。
そこで、エラー検出部29は、チャネル装置側チェックサムとシステム制御装置側チェックサとが一致しない場合にエラーを検出する。エラー検出部29は、エラーを検出した場合、モニタなどに表示させるなどして情報処理装置の操作者にエラーの発生を通知する。ただし、図2では、操作者へのエラーの通知については図示していない。
ここで、チャネル装置2におけるデータ転送経路には、図示していないが実際にはレジスタが配置され、各レジスタにおいて、パリティ又はECCのチェックコードを用いたエラーのチェックが行われる。
次に、システム制御装置1について説明する。システム制御装置1は、データ入力制御部10、CRCチェック部11、データ一時格納部12、データ出力制御部13、チェックサム算出部14、チェックサム送信部15及びCRC算出部16を有する。
データ入力制御部10は、CRCのチェックコードが付加されたパケットをチャネル装置2のデータ出力制御部23から受信する。そして、データ入力制御部10は、受信したパケットをCRCチェック部11へ出力し、その後、チェック結果をCRCチェック部11から受信する。
CRCのチェックによりエラーが検出されなければ、データ入力制御部10は、ECCのチェックコードを各データに付加した後、データ一時格納部12へデータを出力する。
CRCチェック部11は、データ出力制御部23からデータ入力制御部10へ送信されたパケットの入力をデータ入力制御部10から受ける。そして、CRCチェック部11は、受信したパケットに含まれるデータを用いてCRCのチェックコードを算出する。その後、CRCチェック部11は、受信したパケットに付加されているCRCのチェックコードと算出したCRCのチェックコードとを比較して、一致していればエラーが発生していないと判定し、一致していなければエラーの発生を検出する。
そして、CRCチェック部11は、CRCのチェック結果をデータ入力制御部10へ出力する。
データ一時格納部12は、主記憶装置6へデータ転送する際に、主記憶装置6のデータ受信のタイミングに合わせてデータを出力するためにデータを一時保持する。データ一時格納部12は、例えば、First In, First Out(FIFO)バッファである。
データ一時格納部12は、ECCのチェックコードが付加されたデータをデータ入力制御部10から受信し格納する。そして、データ一時格納部12は、主記憶装置6のデータ受信タイミングに合わせて、データを順次出力する。
データ出力制御部13は、主記憶装置6へ送信するデータの入力をデータ一時格納部12から受ける。データ出力制御部13は、受信したデータとECCからエラー検出及び訂正を行う。そして、データ出力制御部13は、訂正不可能なエラーが検出されなければ、処理を進める。
データ出力制御部13は、受信したデータをCPU5から受信したメモリへのアクセス制御情報に合わせて、キャッシュラインサイズに分割する。
データ出力制御部13は、キャッシュラインサイズに分割したデータにECCを付加する。そして、データ出力制御部13は、ECCを付加したデータを主記憶装置6へ出力する。また、データ出力制御部13は、主記憶装置6へ出力したデータをチェックサム算出部14にも出力する。
チェックサム算出部14は、主記憶装置6へ出力されたデータの入力をデータ出力制御部13から受ける。また、チェックサム算出部14は、チャネル装置2から受信したパケット毎に含まれていたデータの情報をデータ入力制御部10から取得する。
チェックサム算出部14は、チャネル装置2から受信したパケット単位に、主記憶装置6へ出力されたデータのチェックサムを算出する。チェックサム算出部14が算出したチェックサムがシステム制御部側パケット単位チェックサムとなる。
そして、チェックサム算出部14は、算出したシステム制御部側パケット単位チェックサムをチェックサム送信部15へ出力する。このチェックサム算出部14が、「第3計算部」の一例にあたる。また、システム制御部側パケット単位チェックサムが、「所定の転送単位毎に対するエラー情報」の一例にあたる。
チェックサム送信部15は、システム制御部側パケット単位チェックサムの入力をチェックサム算出部14から受ける。そして、チェックサム送信部15は、受信したシステム制御部側パケット単位チェックサムをCRC算出部16へ出力する。その後、チェックサム送信部15は、CRCのチェックコードの入力をCRC算出部16から受ける。そして、チェックサム送信部15は、CRCのチェックコードを付加してシステム制御部側パケット単位チェックサムをチャネル装置2のチェックサム受信部26へ出力する。
CRC算出部16は、システム制御部1へ送信するシステム制御部側パケット単位チェックサムをチェックサム送信部15から受信する。そして、CRC算出部16は、各システム制御部側パケット単位チェックサムを基にCRCのチェックコードを算出する。その後、CRC算出部16は、算出したCRCのチェックコードをチェックサム送信部15へ出力する。
ここで、システム制御装置1におけるデータ転送経路には、図示していないが実際にはレジスタが配置され、各レジスタにおいて、パリティ又はECCのチェックコードを用いたエラーのチェックが行われる。
次に、図3を参照して、図2の各部が有するハードウェアについて説明する。図3は、システム制御装置及びチャネル装置のハードウェアの概略を表す構成図である。
まず、チャネル装置2側から説明する。データ入力制御部20は、IN201、Write Data Register(WDR)202及びWrite−ECC(W−ECC)203を有する。
IN201は、IO装置7からパケットを受信するレジスタである。IN201は、IO装置7から受信したパケットを、CRC−Calculator(CRC−C)211へ出力する。そして、CRC Input register(CRCI)212が保持するCRCのチェックコードと受信したパケットのCRCのチェックコードとが一致すると、IN201は、WDR202及びCheck Sum−Generator(CSM−G)251へ受信パケットに含まれるデータを出力する。
WDR202は、メモリ221へデータを書き込むためのデータ転送経路のレジスタである。WDR202は、データの入力をIN201から受ける。そして、WDR202は、受信したデータをW−ECC203へ出力する。
W−ECC203は、データの入力をWDR202から受ける。そして、W−ECC203は、受信したデータにECCのチェックコードを付加する。その後、W−ECC203は、ECCのチェックコードを付加したデータをメモリ221へ格納する。
CRCチェック部21は、CRC−C211及びCRCI212を有する。
CRC−C211は、パケットの入力をIN201から受ける。そして、CRC−C211は、受信したパケットに含まれるデータを用いてCRCのチェックコードを計算する。より詳しくは、CRC−C211は、パケットに含まれるデータを一つ取得し、そのデータのCRCのチェックコードを算出してCRCI212に格納する。次に、CRC−C211は、パケットに含まれる他のデータを取得し、CRCのチェックコードを算出する。そして、CRC−C211は、算出したCRCのチェックコードとCRCI212に格納されているCRCのチェックコードを用いて、前のデータと次のデータとを合わせたデータのCRCのチェックコードを算出する。CRC−C211は、このようなCRCのチェックコードの算出を繰り返して、パケットに含まれるワード単位のCRCのチェックコードを算出する。
CRCI212は、CRC−C211が算出したCRCのチェックコードを保持するレジスタである。
メモリ221は、データ一時格納部22に対応する。
データ出力制御部23は、Read−ECC(R−ECC)231、Read Data Register(RDR)232及びOUT233を有する。
R−ECC231は、メモリ221からデータを読み出す。そして、R−ECC231は、読み出したデータに付加されているECCのチェックコードを取得してECCのチェックを行う。エラーが検出されなければ、R−ECC231は、データをRDR232へ出力する。
RDR232は、メモリ221から読み出されたデータをシステム制御装置1へ転送するためのデータ転送経路のデータレジスタである。RDR232は、メモリ221から読み出されたデータの入力をR−ECC231から受ける。そして、RDR232は、受信したデータをCRC−C241及びOUT233へ出力する。
OUT233は、データの入力をRDR232から受ける。そして、OUT233は、受信したデータをパケットに分割する。また、OUT233は、CRC Output Register(CRCO)242から送信するパケットに付加するCRCのチェックコードを取得する。そして、OUT233は、取得したCRCチェックコードをパケットに付加してシステム制御装置1へ出力する。
CRC算出部24は、CRC−C241及びCRCO242を有する。
CRC−C241は、RDR232から受信したデータを用いてCRCのチェックコードを算出し、CRCO242に格納する。そして、CRC−C241は、CRCO242に格納されているCRCのチェックコードと受信データから算出したチェックコードとを用いたCRCのチェックコードの算出を繰り返し、送信するパケットのワード単位のCRCのチェックコードを算出する。CRC−C241は、算出した送信するパケットのワード単位のCRCのチェックコードをCRCO242に格納する。
チェックサム算出部25は、CSM−G251及びCheck Sum Register(CSMR)252を有する。
CSM−G251は、IN201から受信したデータ及びCSMR252に格納されている既に算出したチェックサムを用いてチェックサムを算出することを繰り返して、チャネル装置側チェックサムを算出する。CSM−G251は、算出したチャネル装置側チェックサムをCSMR252に格納する。
CSMR252は、CSM−G251によるチェックサムの計算結果を保持するレジスタである。
チェックサム受信部26は、IN261、Acknowledge−Receiver(ACK−R)262を有する。
IN261は、例えばシステム制御部側パケット単位チェックサムを含むパケット及びACKの信号をシステム制御装置1から受信する。そして、IN261は、ACKはACK−R262へ出力する。また、IN261は、システム制御部側パケット単位チェックサムを含むパケットをCRC−C271へ出力する。そして、IN261は、CRC−C271に格納されているCRCのチェックコードと受信したパケットのCRCのチェックコードとを比較しエラーの検出を行う。エラーが検出されなければ、IN261は、システム制御部側パケット単位チェックサムをCSM−G281へ出力する。
ACK−R262は、IN261からACKを受信すると、CRCI272を初期化する。
CRCチェック部27は、CRC−C271及びCRCI272を有する。
CRC−C271は、IN261から受信したパケットに含まれるデータ及びCRCI272に格納されている既に算出したCRCのチェックコードを用いてCRCのチェックコードを算出することを繰り返す。これにより、CRC−C271は、パケットに含まれるワード単位のCRCのチェックコードを算出する。CRC−C271は、算出したパケットに含まれるワード単位のCRCのチェックコードをCRCI272に格納する。
CRCI272は、CRC−C271によるCRCのチェックコードの計算結果を保持するレジスタである。
チェックサム計算部28は、CSM−G281及びCSMR282を有する。
CSM−G281は、IN261から受信したシステム制御装置側パケット単位チェックサム及びCSMR282に格納されている既に算出したチェックサムを用いてチェックサムを算出することを繰り返して、システム制御装置側チェックサムを算出する。CSM−G281は、算出したシステム制御装置側チェックサムをCSMR282に格納する。
CSMR282は、CSM−G281によるチェックサムの計算結果を保持するレジスタである。
コンパレータ(Comparator:C)291は、エラー検出部29にあたる。コンパレータ291は、チャネル装置側チェックサムをCSMR252から取得する。また、コンパレータ291は、システム制御装置側チェックサムをCSMR282から取得する。そして、コンパレータ291は、チャネル装置側チェックサムとシステム制御装置側チェックサムとを比較して、エラーの検出を行う。
データ入力制御部10は、IN101、WDR102及びW−ECC103を有する。
IN101は、チャネル装置2からパケットを受信するレジスタである。IN101は、OUT233から受信したパケットを、CRC−C111へ出力する。そしてCRCI112が保持するCRCのチェックコードと受信したパケットのCRCのチェックコードとが一致すると、IN101は、WDR102へ受信パケットに含まれるデータを出力する。
WDR102は、FIFOバッファ121へデータを書き込むためのデータ転送経路のレジスタである。WDR102は、データの入力をIN101から受ける。そして、WDR102は、受信したデータをW−ECC103へ出力する。
W−ECC103は、データの入力をWDR102から受ける。そして、W−ECC103は、受信したデータにECCのチェックコードを付加する。その後、W−ECC103は、ECCのチェックコードを付加したデータをFIFOバッファ121へ格納する。
CRCチェック部11は、CRC−C111及びCRCI112を有する。
CRC−C111は、IN101から受信したパケットに含まれるデータ及びCRCI112に格納されている既に算出したCRCのチェックコードを用いてCRCのチェックコードを算出することを繰り返す。これにより、CRC−C111は、パケットに含まれるワード単位のCRCのチェックコードを算出する。CRC−C111は、算出したパケットに含まれるワード単位のCRCのチェックコードをCRCI112に格納する。
CRCI112は、CRC−C111によるCRCのチェックコードの計算結果を保持するレジスタである。
FIFOバッファ121は、データ一時格納部12に対応する。
データ出力制御部13は、R−ECC131、RDR132及びOUT133を有する。
R−ECC131は、FIFOバッファ121からデータを読み出す。そして、R−ECC131は、読み出したデータに付加されているECCのチェックコードを取得してECCのチェックを行う。エラーが検出されなければ、R−ECC131は、データをRDR132へ出力する。
RDR132は、FIFOバッファ121から読み出されたデータを主記憶装置6へ転送するためのデータ転送経路のデータレジスタである。RDR132は、FIFOバッファ121から読み出されたデータの入力をR−ECC131から受ける。そして、RDR132は、受信したデータをOUT133及びCSM−G141へ出力する。
OUT133は、データの入力をRDR132から受ける。そして、OUT133は、受信したデータをキャッシュラインサイズに分割する。そして、OUT133は、分割したデータにECCのチェックコードを付加して主記憶装置6へ出力する。
チェックサム算出部14は、CSM−G141及びCSMR142を有する。
CSM−G141は、RDR132から受信したデータ及びCSMR142に格納されている既に算出したチェックサムを用いてチェックサムを算出することを繰り返し、システム制御装置側パケット単位チェックサムを算出する。CSM−G141は、算出したシステム制御装置側パケット単位チェックサムをCSMR142に格納する。
CSMR142は、CSM−G141によるチェックサムの計算結果を保持するレジスタである。
チェックサム送信部15は、ACK−Generator(ACK−G)151及びOUT152を有する。
ACK−G151は、チャネル装置2が送信した1パケット分のチェックサムの算出が終わり、システム制御装置側パケット単位チェックサムがCSMR142に格納されると、ACKの返信指示をOUT152へ送信する。ACK−151は、チャネル装置2から送信された全てのデータに対応するシステム制御装置側パケット単位チェックサムの算出が終わるまで、システム制御装置側パケット単位チェックサムが格納される度に返信指示の通知を行う。
OUT152は、ACK−G151からACKの返信指示の通知を受信すると、ACKであるパケットヘッダ部分をIN261へ出力する。
続いて、OUT152は、システム制御装置側パケット単位チェックサムをCSMR142から取得する。また、OUT152は、システム制御装置側パケット単位チェックサムを含むパケットに付加するCRCのチェックコードをCRCO162から取得する。そして、OUT152は、システム制御装置側パケット単位チェックサムを含むパケットにCRCのチェックコードを付加してIN261へ送信する。
CRC算出部16は、CRC−C161及びCRCO162を有する。
CRC−C161は、ACK−G151からACKの返信指示が送信されると、システム制御装置側パケット単位チェックサムをCSMR142から取得する。そして、CRC−C161は、取得したシステム制御装置側パケット単位チェックサムを用いてシステム制御装置側パケット単位チェックサムのCRCチェックコードを算出する。そして、CRC−C161は、算出したシステム制御装置側パケット単位チェックサムのCRCのチェックコードをCRCO162に格納する。
CRCO162は、CRC−C161によるCRCのチェックサムの計算結果を保持するレジスタである。
次に、Data#1,#2,#3−1,#3−2及び#4が、IO装置7から主記憶装置6へ転送される場合を例に各部の処理及び転送されるデータの状態を具体的に説明する。まずは、図4及び5を用いて、この場合のデータの分割の状態について説明する。図4は、IO装置から主記憶装置へ送られるデータの分割の一例を示す図である。図5は、システム制御装置からチャネル装置へ送られるシステム制御装置側パケット単位チェックサムの分割の一例を示す図である。
図4の状態301は、Data#1〜#4がIO装置7に格納された状態を表す。IO装置7に格納されている状態では、Data#1〜4は、1つの処理単位のデータ群であり、まとめて1つのCRCのチェックコードであるCRC#0が付加されている。すなわち、Data#1〜#4が、このデータ送信におけるデータ全体である。
状態302は、Data#1〜#4がIO装置7からチャネル装置2に送信される状態を表す。IO装置7は、データをパケットに分割し、Data#1及び#2を含むパケット及びData#3−1,#3−2及び#4を含むパケットを生成する。そして、IO装置7は、Data#1及び#2を含むパケットにCRC#1というCRCのチェックコードを付加してチャネル装置2へ出力する。また、IO装置7は、Data#3−1,#3−2及び#4を含むパケットにCRC#2というCRCのチェックコードを付加してチャネル装置2へ出力する。
状態303は、Data#1〜#4がチャネル装置2からシステム制御装置1に送信される状態を表す。チャネル装置2は、データをチャネル装置2とシステム制御装置1との間で送受信を行うためのパケットに分割する。この場合、チャネル装置2は、Data#1,#2及び#3−1を含むパケット及びData#3−2及び#4を含むパケットを生成する。そして、チャネル装置2は、Data#1,#2及び#3−1を含むパケットにCRC#3というCRCのチェックコードを付加してシステム制御装置1へ出力する。また、チャネル装置2は、Data#3−2及び#4を含むパケットにCRC#4というCRCのチェックコードを付加してシステム制御装置1へ出力する。
状態304は、Data#1〜#4がシステム制御装置1から主記憶装置6に送信される状態を表す。システム制御装置1は、データをキャッシュラインサイズに分割する。この場合、システム制御装置1は、Data#1〜#4をそれぞれバラバラにする。そして、システム制御装置1は、バラバラにしたData#1〜#4のそれぞれを主記憶装置6へ出力する。
状態305は、Data#1〜#4が主記憶装置6に格納された状態を表す。Data#1〜#4は、それぞれキャッシュライン毎に分割されて主記憶装置6に格納される。
図5の状態306は、Data#1〜#4が主記憶装置6に格納された状態を表す。この状態は図4の状態305と同じである。
状態307は、システム制御装置1において算出されるシステム制御装置側パケット単位チェックサムを表す。ここで、実際には、システム制御装置1は、主記憶装置6へ送信したデータと同じデータを自装置内で用いてチェックサムを算出する。ただし、図5では、主記憶装置6に格納されたデータのいずれに対応するチェックサムかが分かり易いように、主記憶装置6のデータとチェックサムとを対応させる矢印を付加している。システム制御装置1は、チャネル装置2が送信したパケットと同じパケットの1パケット分のデータに対してチェックサムを算出する。ここでは、システム制御装置1は、Data#1,#2及び#3−1を含むパケットのシステム制御装置側パケット単位チェックサムとしてチェックサム#1を算出する。また、システム制御装置1は、Data#3−2及び#4を含むパケットのシステム制御装置側パケット単位チェックサムとしてチェックサム#2を算出する。
状態308は、システム制御装置側パケット単位チェックサムがシステム制御装置1から主記憶装置6に送信される状態を表す。システム制御装置1は、チェックサム#1から算出したCRCのチェックコードであるCRC#3をチェックサム#1に付加して、チャネル装置2へ送信する。また、システム制御装置1は、チェックサム#2から算出したCRCのチェックコードであるCRC#4をチェックサム#2に付加して、チャネル装置2へ送信する。
次に、図6を参照して、以上で説明したデータ転送が行われる場合の、各部の一連の動作をまとめて説明する。図6は、データ転送を行う場合の各部の動作を表すタイミングチャートである。図6において、点線で囲われた箱は計算結果を表す。さらに、破線で囲われた箱は、各部が行う処理以外の経路上で行われるエラー検出処理を表す。そして、図6では、左端に示した各部の動作及び転送されるデータの状態を表す。
IO装置7は、チャネル装置2へパケット401及び402を送信してデータ転送を行う(ステップS1)。IN201は、パケット401、すなわちData#1,#2及びCRC#1を受信する。その後、IN201は、パケット402、すなわちData#3−1,#3−2,#4及びCRC#2を受信する。
CRC−C211及びCRCI212は、パケット401に含まれるData#1及び#2からCRC計算を行いCRCのチェックコードを算出する(ステップS2)。その後、CRC−C211及びCRC212は、CRCチェック、すなわちCRCによるエラー検出を行う(ステップS3)。次に、CRC−C211及びCRC212は、パケット402に含まれるData#3−1,#3−2及び#4からCRC計算を行いCRCのチェックコードを算出する(ステップS4)。その後、CRC−C211及びCRC212は、CRCチェックを行う(ステップS5)。
WDR202及びW−ECC203により、Data#1及び#2がメモリ221へ書き込まれる(ステップS6)。次に、WDR202及びW−ECC203により、Data#3−1,#3−2及び#4がメモリ221へ書き込まれる(ステップS7)。
さらに、データ転送経路において、各データは、パリティ又はECCのチェックを受ける(ステップS8)。
また、CSM−G251は、Data#1及び#2を用いてチェックサムを計算する(ステップS9)。算出されたData#1及び#2のチェックサムは、CSMR252に格納される。さらに、CSM−G251は、Data#3−1,#3−2及び#4とCSMR252に格納されたData#1及び#2とを用いて、Data#1〜#4のチェックサムを算出する(ステップS10)。算出されたData#1〜#4のチェックサム、すなわちチャネル装置側チェックサムは、CSMR252に格納される。
R−ECC231及びRDR232は、Data#1及び#2をメモリ221から読み出す(ステップS11)。次に、R−ECC231及びRDR232は、Data#3−1,#3−2及び#4をメモリ221から読み出す(ステップS12)。
さらに、データ転送経路において、各データは、パリティ又はECCのチェックを受ける(ステップS13)。
CRC−C241は、チャネル装置2とシステム制御装置1との間のデータの授受において使用される固有のパケット長分のデータのCRC計算を行う。ここでは、CRC−C241は、最初のパケットのCRC計算として、Data#1,#2及び#3−1を含むパケットのCRC計算を行う(ステップS14)。そして、CRC−C241は、算出したCRCのチェックコードであるCRC#3をCRCO242に格納する。また、CRC−C241は、次のパケットのCRC計算として、Data#3−2及び#4を含むパケットのCRC計算を行う(ステップS15)。そして、CRC−C241は、算出したCRCのチェックコードであるCRC#4をCRCO242に格納する。
OUT233は、Data#1,#2及び#3−1にCRC#3を付加したパケット403をシステム制御装置1のIN101へ送信する。また、OUT233は、Data#3−2及び#4にCRC#4を付加したパケット404をシステム制御装置1のIN101へ送信する。これにより、チャネ装置2からシステム制御装置1へのデータ転送が行われる(ステップS16)。IN101は、パケット403、すなわちData#1,#2,#2−1及びCRC#3を受信する。その後、IN101は、パケット404、すなわちData#3−2,#4及びCRC#4を受信する。
CRC−C111及びCRCI112は、パケット403に含まれるData#1,#2及び#3−1からCRC計算を行いCRCのチェックコードを算出する(ステップS17)。その後、CRC−C111及びCRC112は、CRCチェックを行う(ステップS18)。次に、CRC−C111及びCRC112は、パケット404に含まれるData#3−2及び#4からCRC計算を行いCRCのチェックコードを算出する(ステップS19)。その後、CRC−C111及びCRC112は、CRCチェックを行う(ステップS20)。
WDR102及びW−ECC103により、Data#1,#2及び#3−1がFIFOバッファ121へ書き込まれる(ステップS21)。次に、WDR102及びW−ECC103により、Data#3−2及び#4がFIFOバッファ121へ書き込まれる(ステップS22)。
さらに、データ転送経路において、各データは、パリティ又はECCのチェックを受ける(ステップS23)。
R−ECC131及びRDR132は、Data#1〜#4をキャッシュラインサイズに合わせてFIFOバッファ121から読み出す(ステップS24)。
OUT133が、キャッシュラインサイズに分割されたData#1〜#4を主制御装置6へ送信することで、システム制御装置1から主記憶装置6へのデータ転送が行われる(ステップS25)。
CSM−G141は、RDR132からOUT133へ送信されたデータを取得する。そして、CSM−G141は、Data#1からData#1のチェックサムを求める(ステップS26)。そして、CSM−G141は、Data#1のチェックサムをCSMR142に格納する。次に、CSM−G141は、Data#2及びCSMR142に格納されたData#1のチェックサムを用いてData#1及び#2のチェックサムを求める(ステップS27)。そして、CSM−G141は、Data#1及び#2のチェックサムをCSMR142に格納する。次に、CSM−G141は、Data#3−1及びCSMR142に格納されたData#1及び#2のチェックサムを用いてData#1,#2及び#3−1のチェックサムであるチェックサム#1を求める(ステップS28)。そして、CSM−G141は、チェックサム#1をCSMR142に格納する。
CSM−G141は、Data#3−2からData#3−2のチェックサムを求める(ステップS29)。そして、CSM−G141は、Data#3−2のチェックサムをCSMR142に格納する。次に、CSM−G141は、Data#4及びCSMR142に格納されたData#3−2のチェックサムを用いてData#3−2及び#4のチェックサムであるチェックサム#2を求める(ステップS30)。そして、CSM−G141は、チェックサム#2をCSMR142に格納する。
CRC−C161は、チェックサム#1を用いてCRC計算を行う(ステップS31)。そして、CRC−C161は、算出したCRCのチェックコードであるCRC#5をCRCO162に格納する。次に、CRC−C161は、チェックサム#2を用いてCRC計算を行う(ステップS32)。そして、CRC−C161は、算出したCRCのチェックコードであるCRC#6をCRCO162に格納する。
OUT152は、チェックサム#1にCRC#5を付加したパケット405をチャネル装置2のIN261へ送信する。また、OUT152は、チェックサム#2にCRC#6を付加したパケット406をIN261へ送信する。これにより、システム制御装置1からチャネル装置2へのデータ転送が行われる(ステップS33)。IN261は、パケット405、すなわちチェックサム#1及びCRC#5を受信する。その後、IN261は、パケット406、すなわちチェックサム#2及びCRC#6を受信する。
CRC−C271及びCRCI272は、パケット405に含まれるチェックサム#1からCRC計算を行いCRCのチェックコードを算出する(ステップS34)。その後、CRC−C271及びCRC272は、CRCチェックを行う(ステップS35)。次に、CRC−C171及びCRC172は、パケット406に含まれるチェックサム#2からCRC計算を行いCRCのチェックコードを算出する(ステップS36)。その後、CRC−C271及びCRC272は、CRCチェックを行う(ステップS37)。
CSM−G281は、チェックサム#1及びチェックサム#2を用いてData#1〜#4の全体のチェックサム、すなわちシステム制御装置側チェックサムを求める(ステップS38)。
コンパレータ291は、システム制御装置側チェックサムとチャネル装置側チェックサムとを比較してエラー検出を行う(ステップS39)。
次に、図7を参照して、チャネル装置2がIO装置7からデータを受信する動作を説明する。図7は、チャネル装置がIO装置からデータを受信する動作のフローチャートである。
IO装置7からIN201へデータの入力が開始されると、データ入力制御部20は、IO装置7から受信したデータのチェックサム結果を保持するチェックサム算出部25が有するレジスタであるCSMR252を初期化する(ステップS101)。
次に、データ入力制御部20は、パケットのヘッダ部分(以下、「パケットヘッダ」という。)を受信したか否かを判定する(ステップS102)。パケットヘッダを受信していない場合(ステップS102:否定)、データ入力制御部20は、パケットヘッダを受信するまで待機する。
これに対して、パケットヘッダを受信した場合(ステップS102:肯定)、データ入力制御部20は、パケット単位にCRCのチェック結果を保持するCRCチェック部21が有するレジスタであるCRCI212を初期化する(ステップS103)。
そして、データ入力制御部20は、IO装置7からデータの入力を受ける(ステップS104)。
CRCチェック部21は、入力されたデータのCRC計算を行い、CRCのチェックコードを算出する(ステップS105)。
チェックサム算出部25は、入力されたデータのチェックサムを計算する(ステップS106)。
データ入力制御部20は、入力されたデータをデータ一時格納部22へ書き込む(ステップS107)。
データ入力制御部20は、パケットデータ最後尾を受信したか否かを判定する(ステップS108)。最後尾を受信していない場合(ステップS108:否定)、データ入力制御部20は、ステップS104へ戻る。すなわち、データ入力制御部20は、1パケット分のデータを受け取るまで、処理を繰り返す。
これに対して、パケットデータ最後尾を受信した場合(ステップS108:肯定)、データ入力制御部20は、受信したデータの中からCRCのチェックコードを取得する(ステップS109)。そして、データ入力制御部20は、CRCI212に格納されているパケットのCRCのチェックコードと取得したCRCのチェックコードとを比較し、CRCによるエラー検出を行う(ステップS110)。
データ入力制御部20は、データ転送終了条件を検出したか否かを判定する(ステップS111)。ここで、データ転送終了条件とは、例えば、IO装置7からのデータ転送終了の通知の受信などである。データ転送終了条件を検出していない場合(ステップS111:否定)、データ入力制御部20は、ステップS102へ戻る。
これに対して、データ転送終了条件を検出した場合(ステップS111:肯定)、データ入力制御部20は、データ受信処理を終了する。
次に、図8を参照して、チャネル装置2がシステム制御装置1へデータを送信する動作を説明する。図8は、チャネル装置がシステム制御装置へデータを送信する動作のフローチャートである。
データ出力制御部23は、データ転送が開始されると、データ一時格納部22を監視し、パケット生成が可能なデータ量がデータ一時格納部22にあるか否かを判定する(ステップS201)。パケット生成可能なデータ量がない場合(ステップS201:否定)、データ出力制御部23は、パケット生成が可能なデータ量がデータ一時格納部22に溜まるまで待機する。
これに対して、パケット生成可能なデータ量がある場合(ステップS201:肯定)、データ出力制御部23は、パケットヘッダをシステム制御装置1へ出力する(ステップS202)。
そして、データ出力制御部23は、パケット単位にCRCのチェックコードを保持するCRC算出部24のレジスタであるCRCO242を初期化する(ステップS203)。
次に、データ出力制御部23は、データ一時格納部22からデータを読み出す(ステップS204)。
そして、データ出力制御部23は、読み出したデータに対してECCのチェックを行い、パリティを付加してシステム制御装置1にデータを出力する(ステップS205)。例えば、データ出力制御部23は、図3のRDR232にパリティを付加したデータをセットし、タイミングを調整してOUT233へデータをセットしシステム制御装置1に転送する。
CRC算出部24は、データ出力制御部23が読み出したデータに対してCRC計算を行い、結果をCRCO242に格納する(ステップS206)。
データ出力制御部23は、パケットのデータ最後尾を送信したか否かを判定する(ステップS207)。パケットのデータ最後尾を送信していない場合(ステップS207:否定)、データ出力制御部23は、ステップS204へ戻る。すなわち、データ出力制御部23は、1パケット分のデータを送信するまで処理を繰り返す。
パケットのデータ最後尾を送信した場合(ステップS207:肯定)、データ出力制御部23は、CRC算出部24が算出したCRCのチェックコードをシステム制御装置1へ出力する(ステップS208)。
その後、データ出力制御部23は、データ転送終了条件を検出したか否かを判定する(ステップS209)。ここで、データ転送終了検出条件とは、例えば、最後のデータであることを示すフラグがついたデータの送信などである。データ転送終了条件を検出していない場合(ステップS209:否定)、データ出力制御部23は、ステップS201へ戻る。
これに対して、データ転送終了条件を検出した場合(ステップS209:肯定)、データ出力制御部23は、データ送信処理を終了する。
次に、図9を参照して、システム制御装置1がチャネル装置2からデータを受信する動作を説明する。図9は、システム制御装置がチャネル装置からデータを受信する動作のフローチャートである。
データ入力制御部10は、パケットヘッダを受信したか否かを判定する(ステップS301)。パケットヘッダを受信していない場合(ステップS301:否定)、データ入力制御部10は、パケットヘッダを受信するまで待機する。
これに対して、パケットヘッダを受信した場合(ステップS301:肯定)、データ入力制御部10は、パケット単位にCRCのチェック結果を保持するCRCチェック部11が有するレジスタであるCRCI112を初期化する(ステップS302)。
そして、データ入力制御部10は、チャネル装置2からデータの入力を受ける(ステップS303)。
CRCチェック部11は、入力されたデータのCRC計算を行い、CRCのチェックコードを算出する(ステップS304)。
データ入力制御部10は、入力されたデータをデータ一時格納部12へ書き込む(ステップS305)。
データ入力制御部10は、パケットデータ最後尾を受信したか否かを判定する(ステップS306)。最後尾を受信していない場合(ステップS306:否定)、データ入力制御部20は、ステップS303へ戻る。すなわち、データ入力制御部10は、1パケット分のデータを受け取るまで、処理を繰り返す。
これに対して、パケットデータ最後尾を受信した場合(ステップS306:肯定)、データ入力制御部10は、受信したデータの中からCRCのチェックコードを取得する(ステップS307)。そして、データ入力制御部10は、CRCI112に格納されているパケットのCRCのチェックコードと取得したCRCのチェックコードとを比較し、CRCによるエラー検出を行う(ステップS308)。
データ入力制御部10は、チャネル装置2とのパス閉塞条件を検出したか否かを判定する(ステップS309)。ここで、パス閉塞条件とは、例えば、チャネルのオフライン設定のチャネル装置2との接続切り離しなどである。パス閉塞条件を検出していない場合(ステップS309:否定)、データ入力制御部10は、ステップS301へ戻る。
これに対して、パス閉塞条件を検出した場合(ステップS309:肯定)、データ入力制御部10は、データ受信処理を終了する。
次に、図10を参照して、システム制御装置1がチャネル装置2へデータを送信する動作を説明する。図10は、システム制御装置がチャネル装置へデータを送信する動作のフローチャートである。
データ出力制御部13は、データ一時格納部12を監視し、メモリアクセスが可能なデータ量、すなわちチャネル装置2から受信した1パケット分のデータ量がデータ一時格納部12にあるか否かを判定する(ステップS401)。メモリアクセス可能なデータ量がない場合(ステップS401:否定)、データ出力制御部13は、メモリアクセスが可能なデータ量がデータ一時格納部12に溜まるまで待機する。
これに対して、メモリアクセス可能なデータ量がある場合(ステップS401:肯定)、データ出力制御部13は、次の処理を行う。データ出力制御部13は、データ一時格納部12から読み出したデータのチェックサム結果を保持するためのチェックサム算出部14が有するレジスタであるCSMR142を初期化する(ステップS402)。
さらに、データ出力制御部13は、データをキャッシュラインサイズに分割して主記憶装置6へ格納するための初期化を行う(ステップS403)。
次に、データ出力制御部13は、データ一時格納部12からデータを読み出す(ステップS404)。そして、データ出力制御部13は、読み出したデータに対してECCのチェックを行った後、再度ECCを付加して、主記憶装置6へデータを出力する(ステップS405)。例えば、データ出力制御部13は、図3のRDR132にECCを付加したデータをセットし、タイミングを調整してOUT133へデータをセットし主記憶装置6へ転送する。
チェックサム算出部14は、データ出力制御部13が主記憶装置6へ出力したデータのチェックサムを計算し、算出したチェックサムをCSMR142へセットする(ステップS406)。
データ出力制御部13は、1キャッシュラインのデータの出力が終了したか否かを判定する(ステップS407)。1キャッシュラインのデータの出力が終了していない場合(ステップS407:否定)、データ出力制御部13は、ステップS404へ戻る。
これに対して、1キャッシュラインのデータの出力が終了した場合(ステップS407:肯定)、データ出力制御部13は、1パケット分のデータの出力が終了したか否かを判定する(ステップS408)。1パケット分のデータの出力が終了していない場合(ステップS408:否定)、データ出力制御部13は、ステップS403へ戻る。
これに対して、1パケット分のデータの出力が終了した場合(ステップS408:肯定)、データ出力制御部13は、ACKである返信用のパケットヘッダをチャネル装置2へ出力する(ステップS409)。
チェックサム送信部15は、チェックサム算出部14が保持する1パケット分のチェックサムを取得しチャネル装置2へ出力する(ステップS410)。
CRC算出部16は、チェックサム送信部15が送信したデータに対してCRC計算を行い、結果をCRCO162に格納する(ステップS411)。
そして、チェックサム送信部15は、CRC算出部16が算出したCRCのチェックコードをチャネル装置2へ出力する(ステップS412)。
その後、データ出力制御部13は、主記憶アクセス閉塞条件を検出したか否かを判定する(ステップS413)。ここで、主記憶アクセス閉塞条件とは、例えば、構成変更による主記憶装置6とシステム制御装置1とのパス接続切り離しなどである。主記憶アクセス閉塞条件を検出していない場合(ステップS413:否定)、データ出力制御部13は、ステップS401へ戻る。
これに対して、主記憶アクセス閉塞条件を検出した場合(ステップS413:肯定)、データ出力制御部13は、データ送信処理を終了する。
次に、図11を参照して、チャネル装置2がシステム制御装置1からチェックサムを受信する動作を説明する。図11は、チャネル装置がシステム制御装置からチェックサムを受信する動作のフローチャートである。
チェックサム受信部26は、システム制御装置1から受信したチェックサムを加算するためのチェックサム計算部28が有するレジスタであるCSMR282を初期化する(ステップS501)。
チェックサム受信部26は、返信用のパケットヘッダを受信したか否かを判定する(ステップS502)。パケットヘッダを受信していない場合(ステップS502:否定)、チェックサム受信部26は、パケットヘッダを受信するまで待機する。
これに対して、パケットヘッダを受信した場合(ステップS502:肯定)、チェックサム受信部26は、パケット単位にCRCのチェックコードを保持するためのCRCチェック部27が有するレジスタであるCRCI272を初期化する(ステップS503)。
そして、チェックサム受信部26は、システム制御装置1からシステム制御装置側パケット単位チェックサムを受信する(ステップS504)。
CRCチェック部27は、入力されたシステム制御装置側パケット単位チェックサムのCRC計算を行い、算出したCRCのチェックコードをCRCI272に格納する(ステップS505)。
また、チェックサム受信部26は、システム制御装置側パケット単位チェックサムに付加されていたCRCのチェックコードを取得する(ステップS506)。
チェックサム受信部26は、CRCI172に格納されているパケットのCRCのチェックコードと取得したCRCのチェックコードとを比較し、CRCによるエラー検出を行う(ステップS507)。
次に、チェックサム受信部26は、受信したシステム制御装置側パケット単位チェックサムをチェックサム計算部28へ出力する。チェックサム計算部28は、受信したシステム制御装置側パケット単位チェックサムを用いてチェックサムの計算を行う(ステップS508)。具体的には、チェックサム計算部28は、システム制御装置側パケット単位チェックサムを加算していく。
チェックサム受信部26は、データ転送終了条件を検出したか否かを判定する(ステップS509)。ここで、データ転送終了条件とは、例えば、システム制御装置1からのデータ転送終了の通知の受信などである。データ転送終了条件を検出していない場合(ステップS509:否定)、チェックサム受信部26は、ステップS502へ戻る。
これに対して、データ転送終了条件を検出した場合(ステップS509:肯定)、チェックサム計算部28は、システム制御装置側チェックサムとチャネル装置側チェックサムを用いて比較によるエラー検出を行う(ステップS510)。
以上に説明したように本実施例に係る情報処理装置は、チャネル装置とシステム制御装置が中継するデータ転送において、チャネル装置が受信したデータとシステム制御装置が送出した信号とに対して、チェックサムを用いてエラーチェックを行う。これにより、チャネル装置とシステム制御装置との間でデータ転送を行う際のパリティやECCエラーで検出困難なエラーを検出することができる。さらに、チャネル装置側でチェックサムによるエラー検出を行うので、チェックサムを付加せずにデータの転送を行うことができ、転送効率の低下を回避することができる。すなわち、本実施例に係る情報処理装置は、高い転送効率で確実なエラー検出を行うことができる。
また、システム制御装置側でチェックを行う場合、データを格納するFIFOなどの格納部へ格納する以前にチェックを行うため、データ転送経路上でエラー検出及び保証できない個所が発生してしまう。この点、本実施例に係る情報処理装置は、チャネル装置側でチェックサムによるエラー検出を行うので、システム制御装置が外部へ送出するデータをエラー検出に用いることができ、データ転送経路上のすべての個所のエラー検出及び保証を行うことができる。