(57)【特許請求の範囲】
【請求項１】
記憶装置から読出したデータを保持するデータバッファと、
前記データバッファにデータを書込む書込み要求を保持するコマンドキューと、
前記データバッファにデータを書込む際に、書込むデータを識別する識別情報を生成する識別情報生成部と、
前記データバッファに書込んだデータを読出す読出し要求を出力するとともに、前記読出し要求により読出したデータを含んだパケットを生成するパケット生成部と、
前記コマンドキューに保持された書込み要求に従って、前記記憶装置から読出したデータに、前記生成された識別情報を付与して前記データバッファに書込むとともに、前記付与した識別情報を前記コマンドキューに送信するバッファ制御部と、
前記コマンドキューに送信した識別情報を前記パケット生成部を介して受信するとともに、前記パケット生成部が出力した読出し要求を受信した場合、前記受信した読出し要求に従って前記データバッファから読出したデータに付与された識別情報と、前記パケット生成部を介して受信した識別情報とを比較する比較部と、
前記データバッファから読出したデータに付与された識別情報と、前記パケット生成部を介して受信した識別情報とが一致する場合、前記データバッファから読出したデータを、前記パケット生成部に出力する出力部を有することを特徴とする演算処理装置。
【請求項２】
演算処理装置はさらに、
前記データバッファから読出したデータに付与された識別情報と、前記パケット生成部を介して受信した識別情報とが一致しない場合、エラーを出力する報告部を有することを特徴とする請求項１記載の演算処理装置。
【請求項３】
記憶装置から読出したデータを保持するデータバッファと、前記データバッファにデータを書込む書込み要求を保持するコマンドキューとを有する演算処理装置の制御方法において、
前記演算処理装置が有する識別情報生成部が、前記データバッファにデータを書込む際に、書込むデータを識別する識別情報を生成し、
前記演算処理装置が有するパケット生成部が、前記データバッファに書込んだデータを読出す読出し要求を出力するとともに、前記読出し要求により読出したデータを含んだパケットを生成し、
前記演算処理装置が有するバッファ制御部が、前記コマンドキューに保持された書込み要求に従って、前記記憶装置から読出したデータに、前記生成された識別情報を付与して前記データバッファに書込むとともに、前記付与した識別情報を前記コマンドキューに送信し、
前記コマンドキューに送信した識別情報を前記パケット生成部を介して受信するとともに、前記パケット生成部が出力した読出し要求を受信した場合、前記演算処理装置が有する比較部が、前記受信した読出し要求に従って前記データバッファから読出したデータに付与された識別情報と、前記パケット生成部を介して受信した識別情報とを比較し、
前記演算処理装置が有する出力部が、前記データバッファから読出したデータに付与された識別情報と、前記パケット生成部を介して受信した識別情報とが一致する場合、前記データバッファから読出したデータを、前記パケット生成部に出力することを特徴とする演算処理装置の制御方法。
【請求項４】
演算処理装置の制御方法はさらに、
前記演算処理装置が有する報告部が、前記データバッファから読出したデータに付与された識別情報と、前記パケット生成部を介して受信した識別情報とが一致しない場合、エラーを出力することを特徴とする請求項３記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを読み出す処理において発生するエラーを検出する技術に関する。
【背景技術】
【０００２】
高い信頼性を要求される計算機システムにおいては、内部の様々な制御信号や主記憶データに冗長性を持たせてあり、これを用いて、エラーの発生の迅速な検出あるいはエラーの訂正等を可能とされる。特に、主記憶データについては、大容量を要求されるが故にエラーの発生頻度が比較的高くなる傾向にあるため、ＥＣＣ（Error Correcting Code）によって保護することが多い。ＥＣＣを使用すると、通常、１ビットのエラーを訂正することができ、２ビットまでのエラーの検出が可能とされる。【０００３】
しかし、かかるエラー検出機構では、正しくエラー保護された（「Ｇｏｏｄ  ＥＣＣの」）２つのデータを取り違えるような制御不良に対しては無力である。すなわち、データの内容に誤りがない限りは正常とされるので、例えば、データバッファからデータを取り出す順序を誤るとか、新しいデータが到着する前にバッファの値を参照してしまう等の制御ミスがあっても、それを検出することはできなかった。【０００４】
このようなエラーについては、従来の技術においてはハードウェアによる検出が行えず、プログラムの計算結果の間違いとしてのみ発露することとなる。したがって、このようなエラーは障害原因の同定が極めて困難である。
【発明の開示】
【０００５】
本発明は、ハードウェアにおけるエラーを検出する技術を提供することを目的とする。
上記課題を解決するために、本発明に係るエラー検出装置は、記憶装置からデータを読み出すための命令を保持する命令保持手段と、前記命令保持手段に保持されている命令に従って前記記憶装置からデータを取得するとともに、識別情報を生成する第１の処理手段と、前記記憶装置から取得したデータに前記識別情報を付与して一時記憶装置へ書き込むとともに、その識別情報を前記命令保持手段に返送する第２の処理手段と、前記命令保持手段に保持されている命令に対応する読出し要求および前記命令保持手段に返送された識別情報を受け取ったときに、その読出し要求に従って前記一時記憶装置から対応するデータを読み出し、その読み出したデータに付与されている識別情報と前記受け取った識別情報とを比較する比較手段と、前記比較手段により比較される識別情報が互いに一致しなかった場合にはエラーを検出し、上位に報告するエラー報告手段を備えた構成とする。
【０００６】
命令にしたがって所定の送信先にデータを送出する際に、一時記憶装置に格納するデータとともにその命令に対応する識別情報を生成して一時記憶装置に格納する。生成された識別情報は、命令を保持する命令保持手段に与えられる。比較手段は、命令保持手段に与えられた識別情報と、一時記憶手段から読み出したデータとともに格納されている識別情報とを比較して、比較した結果２つの識別情報が互いに一致する場合は、そのデータを送出する。一致しないときは、ハードウェアにおけるエラーとして検出する。
【０００７】
前記比較手段は、前記送信手段を介して前記読出し要求および前記命令保持手段に返送された識別情報を受け取る構成としてもよい。また、前記比較手段により比較される識別情報が互いに一致していた場合に限り、前記一次記憶装置から読み出したデータを送信先へ送信することとしてもよい。前記識別情報は、例えば昇順あるいは降順の通し番号から構成される。
【０００８】
本発明によれば、ハードウェアにおけるデータの送受信処理におけるエラーを検出することが可能とされる。
【図面の簡単な説明】
【０００９】
【図１】ＣＰＵチップの構成図である。
【図２】システムバス制御部の構成をより詳細に示した図である。
【図３】データバッファ制御部における動作を説明するための図である。
【図４】マジックＩＤを用いてエラーを検出する方法を説明するための図である。
【図５】データバッファ制御部におけるデータの読み出し部の構成図である。
【図６Ａ】データバッファ部へのデータの書き込みを開始するまでの処理を示すフローチャートである。
【図６Ｂ】データバッファ部へのデータの書き込み処理を示すフローチャートである。
【図７】データバッファ部に格納されているデータの読み出し処理を示すフローチャートである。
【図８】ネットワーク制御装置の構成図である。
【図９】ネットワーク制御装置のデータ転送制御部の構成を更に詳しく示した図である。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態に係るＣＰＵチップの構成図である。ＣＰＵチップ１は、プロセッサコア２、キャッシュ装置３およびシステムバス制御部４を含む。プロセッサコア２は、一般的には２以上のプロセッサコアから構成され、命令を生成する。キャッシュ装置３は、プロセッサコア２からの命令に基づいてデータを格納する。システムバス制御部４は、プロセッサコア２からの命令に基づいて、キャッシュ装置３に格納されているデータを読み出して、システムバスに対して読み出したデータを送出する。キャッシュ装置３から読み出したデータは、システムバス制御部４内のバッファに一時的に格納されてからシステムバスに向けて送出される。【００１１】
図２は、システムバス制御部４の構成をより詳細に示した図である。システムバス制御部４は、複数のコマンドキュー４１（４１Ａ〜４１Ｄ）、調停回路４２、パケット生成部（パケット生成器）４３およびデータバッファ制御部４４を含んで構成される。【００１２】
コマンドキュー４１は、プロセッサコア２からの命令を保持し、保持している命令を順次システムバスを介して対象となる装置に対して送信するためのキューである。コマンドキュー４１は、プロセッサコア２からの命令が、外部装置へのデータ送出を伴うか否かに応じて分類されており、図２の例においては、コマンドキュー４１Ａおよび４１Ｂはデータ送出を伴わない命令を保持し、コマンドキュー４１Ｃおよび４１Ｄはデータ送出を伴う保持すると仮定する。【００１３】
調停回路４２は、各コマンドキューを介してプロセッサコア２からの命令を受信し、いずれの命令を優先的に実行するか等の調停処理を行う。パケット生成部４３は、データ送出を伴う命令については、調停回路４２から受信した命令と、データバッファ制御部４４を介して受信したデータとからパケットを生成し、システムバスに対してパケットを送出する。【００１４】
ここで、データバッファ制御部４４は、コマンドキュー４１Ｃ、４１Ｄから受信した命令に基づいて、キャッシュ装置３からデータを読み出して所定のタイミングでパケット生成部４３に読み出したデータを転送する。このとき、まずキャッシュから取り出したデータをバッファに書き込み、次に調停回路４２における調停処理によって所定のタイミングでパケット生成部４３がデータ読み出しを要求すると、バッファからデータが読み出されて転送される。【００１５】
本実施形態に係るＣＰＵチップ１においては、データバッファ制御部４４がキャッシュ装置３から読み出したデータをバッファに書き込むときに、そのデータを識別するための識別情報と併せてデータをバッファに格納する。そして、パケット生成部４３からのデータ読み出し要求を受けてバッファのデータを読み出すときに、割り符コードとしての識別情報を用いてデータの読み出しが正常であるか否かを判定する。データの読み出しが正常であるか否かを判定するために使用されるデータの識別情報を、以下の実施例においては、マジックＩＤ（図中においてはＭａｇｉｃ−ＩＤと表記）と表記することとする。【００１６】
図３は、データバッファ制御部４４における動作を説明するための図である。データバッファ制御部４４は、マジックＩＤ生成回路５１を備え、キャッシュ装置３のデータをシステムバスに向けて送出するために、キャッシュ装置３から読み出したデータをバッファに書き込む処理およびバッファに格納されているデータを読み出してパケット生成器４３に転送する処理を実行する。書き込み処理においては、読み出したデータにキャッシュ装置３によって予め付与されているＥＣＣとともに、更にマジックＩＤも付与してバッファに一時記憶させる。以下の説明では「マジックＩＤをデータに付与する」とは、マジックＩＤをデータと対応付けることを意味するものとする。【００１７】
マジックＩＤ生成回路５１においては、キャッシュから読み出したデータをデータバッファ制御部４４において受信すると、そのデータに対して付与するマジックＩＤを生成すると共に読み出したデータにマジックＩＤを付与してバッファに格納する一方で、そのマジックＩＤおよびバッファの格納先を示すエントリ番号等の情報を、コマンドキュー４１Ｃ、４１Ｄに対して通知する。【００１８】
エントリ番号およびマジックＩＤを通知されたコマンドキュー４１Ｃ、４１Ｄにおいては、上記の調停回路４２を介して、パケット生成部４３にそれらの情報を渡す。パケット生成部４３は、調停回路４２からの指示にしたがって、所定のタイミングでデータ読み出し要求をデータバッファ制御部４４に対して送信するときに、エントリ番号やマジックＩＤもその要求に含めて渡す。データバッファ制御部４４においては、エントリ番号が示すデータに付与されているマジックＩＤと、パケット生成部４３から受信したデータ読み出し要求に含まれるマジックＩＤとを比較して、一致する場合には正常処理、すなわちバッファからデータを読み出す処理を実行する。一方、一致しない場合には、読み出しエラーとして異常を検出し、プロセッサコア２等に通知をする。【００１９】
ここで、エラーの発生する原因について説明する。ＣＰＵチップ１は、データ送出を伴う命令を実行するに際し、その命令と命令に伴い送出されるデータとは、図３に示すデータバッファ制御部４４のうち互いに異なるルートを経てシステムバスに送られる。すなわち、バッファに一時記憶したデータを読み出すパケット生成器４３からの要求は、データバッファ制御部４４におけるデータの処理状況とは関係なく調停回路４２の調停処理に基づいてなされる。このため、例えばデータの格納先のエントリ番号と要求のエントリ番号が一致しない、データを送出するよりも先にデータバッファ制御部４４においてバッファのデータを解放してしまう、あるいはバッファのデータを読み出す際に参照すべきデータと異なるデータを参照してしまう、といった問題が生じ得る。データ要求のマジックＩＤとバッファに格納されているマジックＩＤとを比較することにより、これらの問題が発生したことを検出する。以下、本実施形態に係るエラーの検出する方法について更に説明する。【００２０】
図４は、マジックＩＤを用いてエラーを検出する方法を説明するための図である。図４は、ＣＰＵチップ１からデータを送出するときの、ＣＰＵチップ１を構成する各部において処理を実行するタイミングを示す。【００２１】
まず、コマンドキュー４１Ｃ（あるいはコマンドキュー４１Ｄ）がデータバッファ制御部４４に対して、キャッシュ装置３に格納されているデータをバッファに書き込むよう要求する。要求を受信したデータバッファ制御部４４は、コマンドキュー４１に対して応答（Ａｃｋ）を返し、更にキャッシュ装置３に対し、要求に含まれる情報に基づいてデータを要求する。実施例においては、ＣＰＵチップ１から送出されるデータの１単位を６４バイトとし、キャッシュ装置３から読み出すデータについては、送出されるデータの６４バイトを８分割したデータ量、すなわち８バイトを１単位とする。ここでのバッファからキャッシュ装置３へのデータ要求も、８バイトごとにオフセット値を指定してデータ読み出しを求めるものである。８バイトごとキャッシュ装置３から読み出したデータは、順次バッファに書き込まれる。このとき、上記マジックＩＤをデータに付与した上で順次バッファに書き込んでいく。【００２２】
バッファがキャッシュ装置３に対してデータを要求してからキャッシュ装置３がデータバッファ制御部４４のバッファに対してデータの転送を開始するまでには所定の時間を要する。これに対し、データバッファ制御部４４からＡｃｋの応答を受信したコマンドキュー４１は、調停回路４２に対して受信したマジックＩＤ等の読み出すべきデータを示す情報を渡し、調停回路４２は、その情報をパケット生成器４３に渡す。そして、調停回路４２が指示するタイミングで、マジックＩＤ等の情報を用いてデータをデータバッファ制御部４４に対してデータを要求する。すなわち、パケット生成器４３は、キャッシュ装置３からデータバッファ制御部４４へのデータの転送に要する待ち時間を認識することができず、データバッファ制御部４４においてキャッシュ装置３からのデータを待っている間にパケット生成器４３がデータバッファ制御部４４に対してデータを要求することがある。【００２３】
データバッファ制御部４４においてデータをバッファに書き込むときに、そのデータに生成したマジックＩＤを付与する。これにより、データバッファ制御部４４においては、まだバッファに格納されていないデータについての読み出し要求をパケット生成器４３から受信した場合であっても、パケット生成器４３が求めるデータとバッファに格納されているデータとが一致するか否かを、データに付与されたマジックＩＤを比較して判断することにより、読み出しエラーを検出することができる。データをバッファに書き込んだ後にパケット生成器４３からデータ読み出しを要求された場合は、パケット生成器４３からのデータ要求に含まれるマジックＩＤと、参照されるバッファのデータに付与されたマジックＩＤとが一致するので、通常のデータ送出処理が継続される。【００２４】
図５は、データバッファ制御部４４におけるデータの読み出し部の構成図である。データ読み出し部は、データバッファ部５２、選択回路５３および比較回路５４を含む。
データバッファ部５２は、上記の通り、キャッシュ装置３から読み出したデータをＣＰＵチップ１の外部（システムバス）に送出するときに一時的に格納しておく仮記憶手段である。選択回路５３は、パケット生成器４３から入力された情報に基づいて、データバッファ部５２に格納されているデータを読み出す。比較回路５４は、選択回路５３が読み出したデータに付与されたマジックＩＤと、パケット生成器４３が読み出しを要求しているデータについてのマジックＩＤとを比較し、２つのマジックＩＤが互いに一致するときは、比較回路５４は選択回路５３に対してデータ転送を許可する許可通知を送信し、選択回路５３は、読み出したデータをパケット生成器４３に転送する。２つのマジックＩＤが互いに一致しないときは、エラーを上位に報告する。【００２５】
なお、マジックＩＤについては、例えば通し番号を用いることとしてもよいし、データバッファ部５２のアドレスおよびその一部を用いることとしてもよい。あるいは、擬似乱数を用いる、アドレス等の他の制御信号からハッシュ関数を用いて生成することとしてもよい。マジックＩＤとしていずれを用いることとしても、データバッファ部５２に格納されている値とパケット生成器４３から受信したデータ要求に含まれる値とを比較することにより上記のエラーを検出することが可能とされる。【００２６】
また、実施例においては６４バイトのデータを８バイトずつ分けて転送しているが、これらのデータ全てに共通するマジックＩＤを使用することとしてもよい。上記の通り、パケット生成器４３からのデータ要求には、バッファのエントリ番号およびオフセットが含まれており、オフセットによって８バイトの各データを識別することができるためである。あるいは、８バイトから構成されるデータごとに異なるマジックＩＤを生成し、オフセットとマジックＩＤとの間の矛盾を検出できるようにしてもよい。いずれを採用しても、データの書き込みのタイミングやバッファの解放のタイミング、あるいは実際に格納したバッファのエントリ番号とパケット生成器４３に渡したエントリ番号とが食い違うこと等に起因するエラーを検出することができる。【００２７】
図６Ａは、データバッファ部５２へのデータの書き込みを開始するまでの処理を示すフローチャートである。図６Ａに示す処理は、プロセッサコア２から送信されたデータ送出を伴う命令を、コマンドキュー４１において受信したことを契機として開始される。【００２８】
まず、ステップＳ１で、データバッファ制御部４４に対してデータの書き込み処理を実行するよう求める書き込み要求を、コマンドキュー４１において発行する。ステップＳ２で、発行された書き込み要求を受信したデータバッファ制御部４４は、バッファ（データバッファ部５２）に空きがあるか否かを判定する。空きがない場合は、ステップＳ７に進み、データのバッファへの書き込みが出来ない旨を応答（Ｎａｃｋ）でコマンドキュー４１に返し、処理を終了する。【００２９】
空きがある場合は、ステップＳ３に進み、データ要求を送信するためのキャッシュ装置３との間のバスがビジー状態であるか否かを判定する。ビジー状態と判定された場合は、ステップＳ７に進み、上記と同様にＮａｃｋ応答をコマンドキュー４１に送信して処理を終了する。【００３０】
ステップＳ３の判定においてバスがビジー状態ではないと判定されると、ステップＳ４に進む。ステップＳ４で、先にステップＳ１で発行した書き込み要求よりも優先度の高い書き込み要求がないかを判定する。より優先度の高い書き込み要求が存在する場合は、ステップＳ１において発行された書き込み要求にしたがってデータをバッファに書き込む処理については実行できないとして、上記と同様にステップＳ７でＮａｃｋ応答を返し、処理を終了する。【００３１】
優先度の高い書き込み要求が存在しない場合は、ステップＳ５で、書き込み先のデータバッファの番号を選択し、マジックＩＤを生成する。ここで、書き込み先のデータバッファの番号とは、図３におけるエントリ番号に相当する。ステップＳ６で、エントリ番号およびマジックＩＤ等の情報をＡｃｋ応答に含めてコマンドキュー４１に送信し、書き込み処理を開始する。コマンドキュー４１は、受信したマジックＩＤ等の情報を、調停回路４２を介してパケット生成器４３に通知する。【００３２】
図６Ｂは、データバッファ部５２へのデータの書き込み処理を示すフローチャートである。図６Ｂに示す処理は、図６Ａの処理に続いて実行される。
まず、ステップＳ８で、データバッファ制御部４４からキャッシュ装置３に対して、データ要求が送信される。実施例においては、上記の通り、６４バイトをひとまとまりとするデータは更に８分割され、８バイトごとキャッシュ装置３から読み出される。ステップＳ９で、データバッファ制御部４４において、キャッシュ装置３から読み出したデータを待ち、ステップＳ１０で、８バイトに分割されたデータのうち何番目のデータであるかを示す変数ｋを初期化する。変数ｋは、６４バイトのデータにおけるオフセットと対応付けられている。【００３３】
ステップＳ１１で、データバッファ制御部４４において受信したｋ番目のデータとステップＳ５で生成したマジックＩＤとを、データバッファ部５２のｋ番目の位置に格納する。ｋ番目のデータをマジックＩＤとともにバッファに格納する処理が完了すると、ステップＳ１２で、ｋを１加算し、変数ｋが８になるまでステップＳ１１およびステップＳ１２の処理を繰り返す。変数ｋが８になると、データの書き込み処理を終了する。【００３４】
図７は、データバッファ部５２に格納されているデータの読み出し処理を示すフローチャートである。図７に示す処理は、図６Ａおよび図６Ｂに示すデータバッファ部５２へのデータの書き込みが完了すると、調停回路４２の調停処理に応じて所定のタイミングで開示される。【００３５】
まず、ステップＳ２１で、パケット生成器４３からデータバッファ制御部４４に対して、データの読み出し要求が送信される。読み出し要求には、読み出すべきデータが格納されているデータバッファ部５２の番号すなわち上記のエントリ番号、分割されて格納されているデータの各々の位置を示すエントリ番号内のオフセット、およびマジックＩＤの情報を含む。ステップＳ２２で、データバッファ制御部４４は、受信した読み出し要求に含まれるエントリ番号およびオフセットに格納されている８バイトのデータおよびデータに付与されているマジックＩＤを読み出す。【００３６】
ステップＳ２３で、読み出し要求に含まれているマジックＩＤと、ステップＳ２２で読み出したデータに付与されているマジックＩＤとを比較し、２つのマジックＩＤが互いに一致するか否かを判定する。一致する場合は、データの読み出しを正常と判定して、ステップＳ２４に進み、読み出したデータをパケット生成器４３に送信し、処理を終了する。パケット生成器４３から受信した読み出し要求に含まれるマジックＩＤと読み出したデータに付与されているマジックＩＤとが一致しない場合は、ステップＳ２５に進み、エラーを上位装置等に報告し、異常終了する。【００３７】
以上説明したように、ＣＰＵチップ１においては、キャッシュ装置３に格納されているデータをシステムバスに送出するとき、プロセッサコア２から発行されたデータ送出のコマンドとそのコマンドにより送出されるデータとは、システムバス制御部４内においては別個のルートを通る。すなわち、データ送出の命令はコマンドキュー４１を介してパケット生成器４３に与えられる一方、命令にしたがって送出されるデータはデータバッファ制御部４４を介してパケット生成器４３に与えられる。コマンドキュー４１から命令を受け取ったパケット生成器４３は、調停回路４２の調停処理に応じて所定のタイミングでデータをデータバッファ制御部４４に対して要求するが、パケット生成器４３においては、データバッファ制御部４４における処理状況を認識することはできない。このため、パケット生成器４３がデータバッファ制御部４４にデータ要求を送信したときに、パケット生成器４３からのデータ要求に含まれるバッファのアドレスには、データが更新されておらずに古いデータが格納されている場合や、すでにそのバッファが解放されている場合、あるいはデータ要求に含まれるアドレスが実際にデータの格納されているアドレスと異なる場合も考えられる。【００３８】
しかし、これらの場合であっても、データバッファ制御部４４においては、送出すべきデータをバッファに格納するようコマンドキュー４１から要求されると、バッファにおいてデータを識別するためのマジックＩＤを生成し、キャッシュ装置３から読み出したデータをバッファに格納するときに生成したマジックＩＤを付与し、付与したマジックＩＤをデータと共にバッファに格納する。ここで、マジックＩＤを生成したときに、コマンドキュー４１を介してパケット生成器４３に対しても、送出すべきデータとマジックＩＤとを対応付けて通知する。データバッファ制御部４４においては、パケット生成器４３からのデータ読み出し要求を受け取ると、パケット生成器４３からの要求に含まれるマジックＩＤとバッファに格納されているマジックＩＤとを比較する。【００３９】
バッファから取り出したマジックＩＤとデータ要求に含まれるマジックＩＤとを比較した結果、一致する場合は従来と同様に対応するデータをバッファから取り出してパケット生成器４３に転送する。２つのマジックＩＤが一致しない場合は、システムバス制御部４において発生したエラーと判断して、上位に報告する等のエラー処理を実行する。【００４０】
マジックＩＤをバッファに格納するとともにコマンドキュー４１を介してパケット生成器４３にそのマジックＩＤを伝えているので、バッファへのデータの書き込みのタイミングとパケット生成器４３からのデータ要求のタイミングが合わずに起こるエラーや、データバッファ制御部４４内における制御エラー等を検出することが可能とされる。これらのエラーは、従来技術においてはＣＰＵチップ１内で検出することはできず、ソフトウェア等で検出するよりなかった類のエラーであり、エラーの解析等に効果を有する。【００４１】
上記のエラーの検出方法は、ＣＰＵチップ１以外への応用も可能である。以下、上記のエラーの検出方法を適用した他の例として、ネットワーク制御装置について説明する。
図８は、ネットワーク制御装置の構成図である。ネットワーク制御装置１０は、データ受信部１１、データ転送制御部１２およびデータ送信部１３を含んで構成される。図８に示すネットワーク制御装置１０は、例えば通信システムにおいて利用され、ある装置から受信したデータを更に他の装置に対して転送する。【００４２】
データ受信部１１は、他の装置から送信されたデータを、データバス等を介して受信する。データ転送制御部１２は、データバッファを含み、データ受信部１１において受信したデータを更に他の装置に対して転送するときに、マジックＩＤを用いて、エラーがないかを判断して、データ転送処理やエラー発生時の処理を制御する。データ送信部１３は、データ転送制御部１２から転送されたデータを、データバスを介してネットワーク制御装置１０の外部の他の装置に対して送信する。【００４３】
図９は、ネットワーク制御装置１０のデータ転送制御部１２の構成を更に詳しく示した図である。データ転送制御部１２は、制御コマンドキュー２１、パケット生成器２２およびデータバッファ２３を含む。【００４４】
制御コマンドキュー２１は、自装置（ネットワーク制御装置１０）から他の装置に対してデータを転送するためのコマンドを保持する。データバッファ２３およびパケット生成器２２の役割については、上記のＣＰＵチップ１におけるデータバッファ部５２およびパケット生成器４３についてのそれと同様であるので、ここでは説明を割愛する。【００４５】
既に説明した先の実施形態と同様に、本実施形態においても、データを転送するコマンドとコマンドにより転送されるデータとが別のルートを通る場合において、データバッファ２３にデータを一時的に書き込む際にマジックＩＤを生成する。生成されたマジックＩＤは、データに付与されてバッファに書き込まれるとともに、そのコマンドを転送する制御コマンドキュー２１に対してＡｃｋ応答に含めて渡される。制御コマンドキュー２１は、受け取ったマジックＩＤ等の情報をパケット生成器２２に渡し、パケット生成器２２は、データバッファ２３のデータを読み出すときにそのマジックＩＤを用いてデータ要求する。【００４６】
図８および図９に示すネットワーク制御装置１０においても、他の装置に対して送信すべきデータについて、送信前に一度バッファに格納してから転送することから、上記のＣＰＵチップ１の場合と同様に、マジックＩＤを用いてエラーを検出することが可能とされる。
【図２】
0004834722.tif 000002
【図３】
0004834722.tif 000003
【図４】
0004834722.tif 000004
【図５】
0004834722.tif 000005
【図６Ｂ】
0004834722.tif 000006
【図７】
0004834722.tif 000007
【図９】
0004834722.tif 000008
【図１】
0004834722.tif 000009
【図６Ａ】
0004834722.tif 000010
【図８】
0004834722.tif 000011