(57)【要約】【課題】  マスター／スレーブ制御を行うマスター装置に処理負荷をかけずにエラー回復を行う。【解決手段】  エラーハンドラ３８と通信コントローラ３６とを備え、マスタープロセッサ３２に結合するように適応されたスレーブ装置３４。エラーハンドラ３８は、スレーブ装置内部のエラーを検出し、エラーの検出に応じて、マスタープロセッサから独立して検出したエラーに基づきエラー回復操作を選択し、選択したエラー回復操作を開始し実行する。通信コントローラは、マスター／スレーブプロトコルに従ってマスタープロセッサと通信し、エラーハンドラが選択したエラー回復操作を実行している間にマスター／スレーブプロトコルを維持する。【選択図】  図２
2006074797.tif 000002
【特許請求の範囲】
【請求項１】
マスタープロセッサに結合するようにされたスレーブ装置であって、
前記スレーブ装置内部のエラーを検出するように構成され、エラーを少なくとも１つ検出するのに応じて、前記マスタープロセッサから独立して、少なくとも１つの検出したエラーに基づきエラー回復操作を選択するように構成され、前記選択したエラー回復操作を開始して実行するように構成されたエラーハンドラと、
マスター／スレーブプロトコルに従って前記マスタープロセッサと通信するように構成され、前記エラーハンドラが前記選択したエラー回復操作を実行している間に前記マスター／スレーブプロトコルを維持するように構成された通信コントローラと
を備えてなるスレーブ装置。
【請求項２】
前記通信コントローラが、前記マスター／スレーブプロトコルに従って前記マスタープロセッサによってデータトランザクションを実行するように構成され、各トランザクションが所定のデータ量を含み、前記通信コントローラは、前記エラーハンドラが前記選択したエラー回復操作を開始したときに前記マスタープロセッサにより進行中のトランザクションを完了するように構成されている、請求項１に記載のスレーブ装置。
【請求項３】
前記スレーブ装置はパケットルーティング装置を含み、該パケットルーティング装置は、
該パケットルーティング装置内部のエラーを検出するように構成され、エラーを少なくとも１つ検出するのに応じて、前記マスタープロセッサから独立して、少なくとも１つの前記検出したエラーに基づきエラー回復操作を選択するように構成され、前記選択したエラー回復操作を開始し実行するように構成されたエラーハンドラと、
マスタープロセッサとネットワークファブリックとに結合するようにされた通信コントローラであって、通信プロトコルに従って前記マスタープロセッサと前記ネットワークファブリックの間でデータパケットを転送するように構成され、前記エラーハンドラによって前記選択したエラー回復操作が実行されている間に前記通信プロトコルを維持するように構成された通信コントローラと
を含む、請求項１に記載のスレーブ装置。
【請求項４】
前記通信コントローラが、前記通信プロトコルに従って一連のデータトランザクションにより前記マスタープロセッサとパケットルーティング装置との間でデータパケットを転送するように構成され、各データトランザクションが所定のデータ量を含み、前記通信コントローラは、前記エラーハンドラが前記選択したエラー回復操作を開始しそれにより前記マスター／スレーブプロトコルを維持するときに、前記マスタープロセッサにより進行中データトランザクションを完了するように構成されている、請求項３に記載のスレーブ装置。
【請求項５】
前記通信コントローラは、前記エラーハンドラが前記選択したエラー回復操作を開始した後で前記スレーブ装置から前記マスタープロセッサへの進行中データトランザクションを完了するのに必要な量のデータを作成し提供するように構成され、前記作成されたデータの量が、前記所定のデータ量と、前記選択したエラー回復操作の前記開始前に前記スレーブ装置から前記マスタープロセッサによって受け取ったデータの量との間の差を含む、請求項１または４に記載のスレーブ装置。
【請求項６】
前記通信コントローラが、前記通信コントローラと前記マスタープロセッサとの間でデータトランザクションが進行している間に開始された選択したエラー回復操作の完了後に、前記マスタープロセッサにリセット信号を提供するように構成され、前記リセット信号が、前記マスタープロセッサにチェックポイントリトライを実行させる、請求項１または４に記載のスレーブ装置。
【請求項７】
前記通信コントローラが阻止機構をさらに含み、
前記通信コントローラは、前記通信コントローラが前記パケットルーティング装置と前記マスタープロセッサとの間でデータを転送している間に前記選択したエラー回復操作が開始されたときに、前記パケットルーティング装置から前記ネットワークファブリックに潜在的に破損したデータパケットが転送されるのを防ぐように前記阻止機構を設定し、前記阻止機構が前記マスタープロセッサによってリセットされるように構成される、請求項３に記載のスレーブ装置。
【請求項８】
マスタープロセッサに結合するようにされたスレーブ装置を操作する方法であって、
マスター／スレーブプロトコルに従って前記マスタープロセッサと通信するステップと、
前記スレーブ装置の内部エラーを少なくとも１つ検出するステップと、
少なくとも１つの前記検出した内部エラーに基づきエラー回復操作を選択するステップと、
前記選択したエラー回復操作を前記マスタープロセッサから独立に開始し実行するステップと、
前記選択したエラー回復操作の実行中に前記マスタープロセッサによって前記マスター／スレーブプロトコルを維持するステップと
を有することを特徴とする方法。
【請求項９】
前記マスタープロセッサと通信するステップが、前記マスター／スレーブプロトコルに従って前記マスタープロセッサによってデータトランザクションを実行するステップをさらに含み、各トランザクションが所定量のデータを含んでおり、
前記マスター／スレーブプロトコルを維持するステップが、前記選択したエラー回復操作を開始したときに前記マスタープロセッサによって進行中データトランザクションを完了するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
データトランザクションを完了するステップが、前記選択したエラー回復操作を開始した後で前記スレーブ装置から前記マスタープロセッサに進行中データトランザクションを完了するのに必要な量のデータを作成するステップをさらに含み、
前記作成するデータの量が、前記所定のデータ量と、前記選択したエラー回復操作の前記開始前に前記マスタープロセッサが前記進行中データトランザクションの一部として前記スレーブ装置から受け取ったデータの量との差を含む、請求項９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
マスター／スレーブ関係とは、ある装置（マスター）が別の装置（スレーブ）に対して一方向の制御権を有する通信プロトコルのことを指す。そのような関係が確立されたときには、制御の方向は、一般にマスター装置からスレーブ装置へとなる。そのような関係の一般的な例は、パラレルバスによってマスター中央処理装置（ＣＰＵ）に結合されているメモリ素子のようなスレーブ装置であり、このスレーブ装置は一般にマスターＣＰＵの完全な制御下にある。バストランザクションの中断によって生じるバスの「ハンギング」などの悪影響を回避するために、一般に、スレーブ装置のエラー回復機能は、マスターＣＰＵによって様々な程度の制御を受ける。
【０００２】
従来から、スレーブ装置は、エラーを検出しマスターＣＰＵに通知している。システムに依存するが、マスターＣＰＵは、次に、スレーブ装置にエラー回復をさせるか、特定のタイプのエラー回復操作を実行することをスレーブ装置に指示するか、回復操作自体を実行することがある。しかしながら、スレーブ装置がより複雑でより高機能になり続けているので、エラー回復も複雑になり、各装置が特定のエラー回復要件を有する。従って、スレーブ装置のエラー回復操作は、複雑になり過ぎてマスターＣＰＵが介入できなくなる可能性があり、最低でも、他のタスクの実行に費やすことができるマスターＣＰＵ処理時間をより多く消費する可能性がある。
【発明の開示】
【課題を解決するための手段】
【０００３】
１つの実施形態において、本発明は、マスタープロセッサに結合するようになされかつエラーハンドラと通信コントローラとを含むスレーブ装置を提供する。エラーハンドラは、スレーブ装置内部のエラーを検出するように構成され、エラーを少なくとも１つ検出するのに応じて、マスタープロセッサから独立して、検出した少なくとも１つのエラーに基づきエラー回復操作を選択し、選択したエラー回復操作を開始し実行するように構成される。通信コントローラは、マスター／スレーブプロトコルに従ってマスタープロセッサと通信するように構成され、エラーハンドラによる選択したエラー回復操作の実行中にマスター／スレーブプロトコルを維持するように構成される。
【発明を実施するための最良の形態】
【０００４】
本発明の実施形態は、添付図面を参照することにより、一層良く理解される。図面の要素は必ずしも互いに一律の縮尺ではない。同じ参照数字は対応する類似の部分を示す。
【０００５】
以下の詳細な説明では、詳細な説明の一部を構成し、本発明を実施することができる実例に固有の実施形態によって示した添付図面を参照する。この点において、「上」、「下」、「前」、「後ろ」、「先」、「後」などの方向を示す用語は、説明する図面の向きに関して使用される。本発明の実施形態の構成要素は多くの異なる向きで配置できるので、方向を示す用語は説明のために使用され、決して限定のためではない。本発明の範囲を逸脱することなく他の実施形態を利用することができ、構造的または論理的な変更を行うことができることを理解されたい。従って、以下の詳細な説明は、限定の意味で解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲によって定義される。
【０００６】
図１は、ネットワークシステム１０を示すブロック図である。ネットワーク１０は、ネットワークまたはサブネットワーク（サブネットと呼ばれることもある）でよく、このサブネットは、ルータによって他のサブネットと相互接続されて、さらに大きいネットワークを構成する。ネットワーク１０は、任意のタイプの交換網でよい。例えば、ネットワーク１０は、複数の装置が、保護されリモートで管理された状況において広帯域でかつ短い待ち時間で同時に通信することを可能にする交換通信ファブリックを定義するＩｎｆｉｎｉＢａｎｄアーキテクチャである。
【０００７】
ネットワーク１０は、集合的にエンドノード１２と呼ばれる、ネットワーク１０内にある４つのエンドノード１２ａ、１２ｂ、１２ｃ、および１２ｄを示す。当業者に知られているように、エンドノード１２は、エンドノード１２ｄによって示したようなプロセッサ１３のようないくつかの異なる装置を表すことがある。プロセッサ１３は、中央処理装置１８、ランダムアクセスメモリ（ＲＡＭ）などのメモリ２０、およびネットワークインタフェース２２を含む。他のエンドノード装置の例には、ネットワークへのルータや、ＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ）サブシステムなどの入出力装置がある。４つのエンドノード１２を示したが、ネットワーク１０内にさらに多い数または少ない数のエンドノードがあってもよい。
【０００８】
ネットワーク１０は、さらに、スイッチ１４ａ、１４ｂ、１４ｃおよび１４ｄ、ならびにルータ１６を含む。スイッチ１４ａ、１４ｂ、１４ｃおよび１４ｄは、集合的にスイッチ１４と呼ばれ、通信のためにエンドノード１２と接続する。例えば、プロセッサ１３は、ネットワークインタフェース３２を介してスイッチ１４ｃに接続されている。ルータ１６は、データパケットを送受信するためにネットワーク１０からリモートのサブネットまでの接続を提供する。スイッチ１４とルータ１６は共に通信ファブリック１７を構成する。ネットワーク１０内の任意の２つの装置間に１つまたは複数のリンクが存在することができる。
【０００９】
スイッチ１４はそれぞれ、エンドノード１２間と、エンドノード１２およびルータ１６間とにおいてデータパケットの流れを制御することができる。ネットワーク１０による各宛先は、スイッチ１４を通る経路を表す少なくとも２つの関連した固有のローカル識別子（ＬＩＤ）を有する。スイッチ１４は、宛先アドレスに基づいてデータのパケットを送り、その宛先アドレスは、データパケットのローカルルートヘッダ部内にあり、宛先に達するためのＬＩＤを含む。スイッチ１４が個々のパケットを受け取るとき、宛先アドレス内のローカル識別子に基づいてデータパケットが転送される。ネットワーク１０内をパケットが通過する際、スイッチ１４は直接アドレス指定されない。従って、スイッチ１４は、エンドノード１２にとって透過的であり、パケットは実質的に変更されずにスイッチ１４を通過する。
【００１０】
サブネット内のルーティングはスイッチ１４によって提供され、ルータ１６は、サブネット間ルーティングの基本的なルーティング構成要素である。従って、ルータは、サブネット間でパケットを中継することによってサブネットを相互接続し、パケットは宛先サブネットに到達する。ルータ１６は、データパケットのグローバルルートヘッダ部に基づいてパケットを転送する。ルータ１６は、パケットをあるサブネットから別のサブネットに渡すときにパケットのローカルルートヘッダ部を置き換える。
【００１１】
ネットワークシステム１０などの任意のネットワークシステム内で、様々なシステム構成要素間および／または様々なシステム構成要素内にマスター／スレーブ関係が存在することがある。例えば、プロセッサ１３とスイッチ１４ｃの間あるいはＣＰＵ１８とプロセッサ１３のメモリ２０の間にマスター／スレーブ関係が存在することがある。上記の例は、ネットワークアーキテクチャ内のマスター／スレーブ関係を示しているが、そのような関係は、装置がより大きなネットワークシステムの一部分かどうかに関係なく、その装置間に存在する可能性がある。
【００１２】
図２は、一般に、本発明によるマスターＣＰＵ３２とスレーブ装置３４を含むマスター／スレーブシステム３０を示す。スレーブ装置３４は、さらに、通信コントローラ３６とエラーハンドラ３８を含む。エラーハンドラ３８は、スレーブ装置３４の内部のエラーを検出するように構成されており、エラーを少なくとも１つ検出するのに応じて、マスターＣＰＵ３２から独立して、少なくとも１つの検出エラーに基づいてエラー回復操作を選択し、選択したエラー回復操作を開始し実行するように構成されている。通信コントローラ３６は、マスター／スレーブプロトコルに従ってマスターＣＰＵ３２と通信するように構成され、選択したエラー回復操作をエラーハンドラ３８が実行している間にマスター／スレーブプロトコルを維持するように構成される。
【００１３】
選択したエラー回復操作が完了したとき、通信コントローラ３６は、マスターＣＰＵ３２にリセット割込信号４２を提供して、マスターＣＰＵ３２に、エラー回復操作の実行が完了し、マスターＣＰＵ３２とスレーブ装置３４との間でリンク４０を介して転送されたいくつかのデータが失われたか損なわれた可能性があることを通知するように構成される。１つの実施形態において、マスターＣＰＵ３２は、リセット割込信号４２に応じて、チェックポイントリトライ操作を開始するように構成される。１つの実施形態において、エラーハンドラ３８は、複数タイプのエラーを検出し、検出したエラーのタイプまたはタイプの組み合わせに基づいて、複数のエラー回復操作から所望のエラー回復操作を選択するように構成される。
【００１４】
エラーを検出し、エラー回復操作を選択し、選択したエラー回復操作をマスターＣＰＵ３２とは独立して開始し実行することによって、本発明によるスレーブ装置３４は、普通ならマスターＣＰＵ３２がスレーブ装置３４のエラー回復操作に費やす時間を他のタスクに充てることを可能にする。さらに、エラーハンドラ３８を含むスレーブ装置３４のような、独立したエラー回復機能を有するスレーブ装置は、その装置自体の特定の設計に適応する複雑なエラー回復スキームを使用し、それにより、マスターＣＰＵ３４などのマスターＣＰＵが、接続される可能性のあるスレーブ装置ごとに個別のエラー回復機構を備える必要がなくなる。
【００１５】
図３は、本発明のある実施形態による独立したエラー回復を備えた例示のネットワークスイッチ１３４の一部分を概略的に示すブロック図である。ネットワークスイッチ１３４は、マスターＣＰＵ１３２と共にネットワークシステム１３０の一部分を構成し、ネットワークシステム１３０は、さらにネットワークファブリック１３５を含む。ネットワークスイッチ１３４は、さらに大きいネットワークファブリック１３５の一部分を構成し、ネットワークファブリック１３５は、図１のネットワークファブリック１７のネットワークスイッチ１４やルータ１６などのさらに他のネットワークスイッチおよび／またはルータを含むことがある。同様に、マスターＣＰＵ１３２は、図１のエンドノード１２などのネットワークファブリック１３５に結合されることがあるネットワークシステム１３０の複数のエンドノードのうちの１つのエンドノードを表す。エンドノード１２と同様に、マスターＣＰＵ１３２は対応する固有のＬＩＤを有する。
【００１６】
ネットワークスイッチ１３４は、ネットワークシステム１３０のマスターＣＰＵ１３２と他のエンドノードとの間でデータパケットの流れを導き制御するように構成される。ネットワークスイッチ１３４は、通信コントローラ１３６とエラーハンドラ１３８を含む。通信コントローラ１３６は、ＣＰＵバス１４２を介してマスターＣＰＵ１３２に接続されたＣＰＵインタフェース（ＩＦ）１４０と、出力パケットバッファ１４４と、入力パケットバッファ１４６と、パケットディスパッチャ１４８とを含む。出力パケットバッファ１４４とパケットディスパッチャ１４８は、リンク１５２とリンク１５４を介してネットワークファブリック１３５にそれぞれ結合されている。
【００１７】
ＣＰＵ  ＩＦ１４０は、システムプロトコルに従ってマスターＣＰＵ１３２と共にデータトランザクションを実行するように構成されている。１つの実施形態において、各データトランザクションは、所定数のデータバイトを含む。所定数のデータバイトをマスターＣＰＵ１３２から受け取るかまたはマスターＣＰＵ１３２に送ったとき、ＣＰＵ  ＩＦ１４０は、トランザクションが完了したことを示す肯定応答（ＡＣＫ）信号をマスターＣＰＵ１３２に提供する。従って、ＣＰＵ  ＩＦは、データパケットをＣＰＵ１３２から受け取ったりＣＰＵ１３２に送ったりするために複数のトランザクションを必要とする。別の実施形態において、ＣＰＵ  ＩＦ１４０は、バーストモードプロトコルに従ってマスターＣＰＵ１３２と共にデータトランザクションを実行することができる。１つの実施形態において、ＣＰＵ  ＩＦ１４０はマイクロコントローラを含む。
【００１８】
ネットワークスイッチ１３４は、マスターＣＰＵ１３２だけに結合されているように示したが、図１のネットワークスイッチ１４ｃによって示したような複数のリンクを介して複数のエンドノードに結合され、その複数のエンドノードとの間のデータの流れを導き制御するように構成されてもよいことに注意されたい。同様に、マスターＣＰＵ１３２は、ネットワークスイッチ１３４だけに結合されているように示されているが、他のスレーブ装置を含むその他の装置に結合されてもよい。
【００１９】
一般に、データパケットを送信するかまたは発生するエンドノードは、ソースエンドノードと呼ばれ、データパケットを受信するかまたは消費するエンドノードは、宛先エンドノードと呼ばれる。従って、マスターＣＰＵ１３２は、ソースエンドノードと宛先エンドノードの両方として動作することができる。以下に、マスターＣＰＵ１３２からネットワークファブリック１３５にデータを転送するとき（すなわち、マスターＣＰＵ１３２がソースエンドノードとして動作しているとき）のネットワークスイッチ１３４の動作を簡単に示す。
【００２０】
ネットワークファブリック１３５を介してデータパケットを宛先エンドノードに送るデータトランザクションを開始するために、マスターＣＰＵ１３２は、ＣＰＵバス１４２を介して、システムプロトコルに従って、データトランザクションを実行したいことを示す通知信号をＣＰＵ  ＩＦ１４０に提供する。１つの実施形態において、マスターＣＰＵ１３２は、ＣＰＵ  ＩＦ１４０と関連したチップセレクト信号をアサートすることによって、データトランザクションを実行したいかどうかをＣＰＵ  ＩＦ１４０に通知する。マスターＣＰＵ１３２は、チップセレクト信号をアサートした後に、実行したいトランザクションのタイプを示すトランザクション信号をＣＰＵ  ＩＦ１４０に提供する。１つの実施形態において、トランザクション信号は、この図のようにマスターＣＰＵ１３２がソースエンドノードとして動作しているときの書き込みコマンドと、マスターＣＰＵ１３２が宛先エンドノードとして動作しているときの読み出しコマンドとを含む。
【００２１】
トランザクション信号に応じて、ＣＰＵ  ＩＦ１４０は、システムプロトコルに従って、ＣＰＵバス１４２を介してマスターＣＰＵ１３２からデータの受け取りを開始する。ＣＰＵ  ＩＦ１４０がマスターＣＰＵ１３２からデータを受け取ると、ＣＰＵ  ＩＦ１４０は、リンク１５０を介して出力パケットバッファ１４４にデータを転送し始める。１つの実施形態においては、入ってくるデータをマスターＣＰＵ１３２から出力パケットバッファ１４４に転送するときにデータの並列−直列変換を実行する。トランザクションが完了したとき、ＣＰＵ  ＩＦ１４０は、すべてのデータを受け取ったことを示すＡＣＫ信号をマスターＣＰＵ１３２に提供する。これに応じて、マスターＣＰＵ１３２は、チップセレクト信号のアサートを解除する。以上のデータトランザクションプロセスは、所望のデータがすべてマスターＣＰＵ１３２からネットワークスイッチ１３４に転送されるまで連続的に繰り返される。
【００２２】
前述のような各データトランザクション中に、ＣＰＵ  ＩＦ１４０は、ＣＰＵ  ＩＦ１４０とマスターＣＰＵ１３２の間でデータトランザクションが続いているという指示を提供するためにトランザクションフラグ１６０をアサートする。１つの実施形態において、ＣＰＵ  ＩＦは、チップセレクト信号をアサートしたときにトランザクションフラグ１６０をアサートし、肯定応答信号を提供した後でトランザクションフラグ１６０のアサートを解除する。より詳細に後で説明するように、トランザクションフラグ１６０は、ネットワークスイッチ１３４によるエラー回復操作の一部として使用される。
【００２３】
出力パケットバッファ１４４がＣＰＵ  ＩＦ１４０からデータを受け取ると、出力コントローラ１６２は、ネットワークシステム１３０の適切な宛先エンドノードへの次の送信のために、リンク１５２を介したネットワークファブリック１３５へのデータの送信を制御する。１つの実施形態において、出力コントローラ１６２は、出力パケットバッファ１４４がデータを受け取ったときにすぐにネットワークファブリック１３５にデータを送信し始めるように構成される。別の実施形態において、出力コントローラ１６２は、出力パケットバッファ１４４が完全なデータパケットを受け取るのを待って、組み立てたデータパケットをネットワークファブリック１３５に送信する。これは一般に蓄積転送プロセスと呼ばれる。
【００２４】
次に、ネットワークファブリック１３５からマスターＣＰＵ１３２にデータを転送するとき（すなわち、マスターＣＰＵ１３２が宛先エンドノードとして動作するとき）のネットワークスイッチ１３４の動作を簡単に説明する。そのようなデータトランザクションは、パケットディスパッチャ１４８がリンク１５４を介してネットワークファブリック１３５からデータパケットを受け取ったときに開始する。前述のように、ネットワークスイッチ１３４は、マスターＣＰＵ１３２以外の他のスイッチまたはエンドノードにリンクされていることができ、各エンドノードは固有のＬＩＤを有する。従って、パケットディスパッチャ１４８は、受け取ったデータパケットのローカルヘッダに含まれるＬＩＤに基づいて、リンク１５６を介して、受け取ったデータパケットをネットワークスイッチ１３４内の適切な場所に送る。マスターＣＰＵ１３２に対応するＬＩＤを有するローカルヘッダを有するデータパケットを受け取ったとき、パケットディスパッチャ１４８は、リンク１５６ｂを介して、そのデータパケットを入力パケットバッファ１４６に送る。
【００２５】
入力コントローラ１６４は、マスターＣＰＵ１３２に対応するＬＩＤを有するパケットを受け取ると、新しいパケット割込信号１６６によってパケットの存在をマスターＣＰＵ１３２に通知する。マスターＣＰＵ１３２は、新しいパケット割込信号１６６に応じて、またソースエンドノードとして動作しているときの前の説明と同じように、入力パケットバッファ１４６からパケットを読み出すために一連のＣＰＵバストランザクションを開始する。ＣＰＵバストランザクションはそれぞれ、チップセレクト信号のアサートなどの通知手順により、データトランザクションを実行したいことをＣＰＵ  ＩＦ１４０に通知する。入力パケットバッファ１４６内のすべてのパケットを空にするために必要なＣＰＵバストランザクションの数が、システムレベルプロトコルに従って決定される。
【００２６】
チップセレクト信号をアサートした後で、マスターＣＰＵ１３２は、ＣＰＵ  ＩＦ１４０に入力パケットバッファ１４６からデータを読み取るように指示するトランザクション信号をＣＰＵ  ＩＦ１４０（すなわち、リードコマンド）に提供する。次に、ＣＰＵ  ＩＦ１４０は、ＣＰＵバスプロトコルに従って、リンク１５８とＣＰＵバス１４２を介して入力パケットバッファ１４６からマスターＣＰＵ１３２にデータを転送し始める。１つの実施形態において、ＣＰＵ  ＩＦ１４０は、マスターＣＰＵ１３２にデータを転送する前に並列−直列変換を実行する。ＣＰＵバストランザクション内の最後のデータバイトを転送した後、ＣＰＵ  ＩＦ１４０は、すべてのデータを送信したという肯定応答信号をマスターＣＰＵ１３２に送り、マスターＣＰＵ１３２は、チップセレクト信号のアサートを解除する。前と同じように、このデータトランザクションプロセスは、受け取ったすべてのデータが入力パケットバッファ１４６からマスターＣＰＵ１３２に転送されるまで連続的に繰り返される。１つの実施形態において、ＣＰＵ  ＩＦ１４０は、バーストモードプロトコルに従ってマスターＣＰＵ１３２と共にデータトランザクションを実行することができる。１つの実施形態において、ＣＰＵ  ＩＦ１４０はマイクロコントローラを含む。
【００２７】
ＣＰＵ  ＩＦ１４０がマスターＣＰＵ１３２からデータを受け取っているときと同じように、前述の各データトランザクションの間に、ＣＰＵ  ＩＦ１４０は、ＣＰＵ  ＩＦ１４０とマスターＣＰＵ１３２との間でデータトランザクションが進行中であることを示すトランザクションフラグ１６０をアサートする。１つの実施形態において、ＣＰＵ  ＩＦは、マスターＣＰＵ１３２からチップセレクト信号を受け取ったときにトランザクションフラグ１６０をアサートし、肯定応答信号を提供した後でトランザクションフラグ１６０のアサートを解除する。
【００２８】
場合によっては、マスターＣＰＵ１３２とネットワークファブリック１３５との間でデータを転送するときにネットワークスイッチ１３４内で致命的エラーが生じることがある。致命的エラーは、予期しない状態または曖昧な状態を有する制御ロジックやレジスタなどの状態を含むことがある。前述のように、従来のマスター／スレーブ関係において、ネットワークスイッチ１３４などのスレーブ装置は、単にエラーを検出しそれをマスターＣＰＵ１３２などのマスター装置に示し、そしてマスター装置がスレーブ装置のエラー回復を開始しある程度の制御を行う。しかしながら、後で説明するように、ネットワークスイッチ１３４は、マスターＣＰＵ１３２から独立して回復を検出し、選択し、開始し、実行するように構成される。
【００２９】
エラーハンドラ１３８は、致命的エラー１７０ａ〜１７０ｍとして示した、ネットワークスイッチ１３４内部の複数のエラーを検出するように構成されている。エラーハンドラ１３８は、検出した致命的エラー１７０あるいは検出した致命的エラー１７０の組み合わせに基づいて、リセットタイプ１７２ａ〜１７２ｎとして示した複数のエラーリセットまたはエラー回復操作のうちの１つを選択し開始するエラー回復プロトコルを含む。選択したリセットタイプ１７２により、バッファと作業レジスタ（図示せず）、出力パケットバッファ１４４、入力パケットバッファ１４６などのネットワークスイッチ１３４の様々な要素がリセットされてもよい。選択したエラー回復操作１７２が開始されたとき、エラーハンドラ１３８は、エラー回復フラグ１７４をアサートする。エラー回復フラグは、選択したエラー回復操作１７２が完了するまでアサートされたままである。
【００３０】
エラーハンドラ１３８が、選択したエラー回復操作１７２を独立に開始するので、ＣＰＵ  ＩＦ１４０は、マスターＣＰＵ１３２とともにシステムプロトコルを維持することによってＣＰＵバス１４２のハンギングを回避するため、選択したエラー回復操作の実行中に、進行中および保留中のデータトランザクションをマスターＣＰＵ１３２によって完了するように構成される。１つの実施形態において、ＣＰＵ  ＩＦ１４０は、トランザクション保留フラグ１６０とエラー回復フラグ１７４の状態を監視する。（進行中のトランザクションを示す）トランザクション保留フラグ１６０がアサートされている間にエラーハンドラ１３８によってエラー回復フラグ１７４がアサートされたときは、ＣＰＵ  ＩＦ１４０は、セマフォ１８０をアサートしてネットワークファブリック１３５へのデータパケットの転送を遮断する。セマフォ１８０は、まだ良好な組のＣＲＣチェックビットを有するが致命的エラー１７０によって潜在的に破壊されているデータパケットが、ネットワークファブリック１３５に送られるのを防ぐ働きをする。なお、このＣＲＣチェックビットは、出力パケットバッファコントローラ１６２によって自動的に生成される。
【００３１】
ＣＰＵ  ＩＦ１４０がマスターＣＰＵ１３２からデータを受け取っている間（すなわち、進行中トランザクション保留フラグ１６０がセットされている間）にエラー回復フラグ１７４がアサートされた場合、ＣＰＵ  ＩＦ１４０は、セマファ１６０がアサートされかつ進行中データトランザクションの内容が破棄されることをＣＰＵ  ＩＦ１４０が知っている場合でも進行中トランザクションを完了するように構成される。データトランザクションが完了した後、データトランザクションの内容がネットワークファブリック１３５に送信されないことをＣＰＵ  ＩＦ１４０が知っている場合でも、ＣＰＵ  ＩＦ１４０はマスターＣＰＵ１３２にＡＣＫ信号を提供し、トランザクションは適切に終了する。
【００３２】
１つの実施形態において、データパケットが処理されているかまたは出力パケットバッファ１４４からネットワークファブリック１３５に送られている間にセマフォ１８０がアサートされた場合、出力コントローラ１６２は、これから送られる残りのデータパケットに偽データを挿入し、その結果、ルートの宛先エンドノードまたは次のスイッチへのデータパケットに明らかなエラーが現われ、その結果確実に廃棄されるように構成される。１つの実施形態において、出力コントローラは、出てゆくデータパケットに偽ＣＲＣを挿入することによってこれを達成する。
【００３３】
１つの実施形態において、出力パケットバッファが、複数の出力データパケットを記憶するように構成されているとき（すなわち、蓄積転送スキーム）、出力コントローラ１６２は、セマフォ１８０がアサートされたときに、セマフォがアサートされる前に受け取ったパケットと、セマフォ１８０がアサートされている間またはアサートされた後で受け取ったデータパケットとの間を示すポインタをセットする。セマフォ１８０がアサートされる前に受け取ったデータパケットは、出力コントローラ１６２によってネットワークファブリック１３５に送出され、セマフォ１８０がアサートされている間またはアサートされた後で受け取ったデータパケットは、ネットワークファブリック１３５に入るのを阻止される。
【００３４】
選択したエラー回復操作が完了した後、エラーハンドラ１３８は、エラー回復フラグ１７４のアサートを解除し、続いてＣＰＵ  ＩＦ１４０は、ネットワークスイッチ１３４が、エラー回復操作を実行したばかりで、一部のデータがネットワークファブリック１３５にまだ送信されていない可能性があることを示すリセット割込信号１８２をマスターＣＰＵ１３２に提供する。これに応じて、マスターＣＰＵ１３２は、当業者に一般にチェックポイントリトライ（ｃｈｅｃｋ−ｐｏｉｎｔ  ｒｅｔｒｙ）として知られているものを開始し、前のチェックポイント状態または回復ラインから実行を再開するように構成される。マスターＣＰＵ１３２は、システムプロトコルの一部として、リセット割込１８２に応じてセマフォ１８０のアサートを解除し、それにより出力パケットバッファ１４４は、ネットワークファブリック１３５へのデータパケットの伝送を再開することができる。セマフォ１８０は、ネットワークスイッチ１３４によってリセットされることはなく、ネットワークスイッチ１３４はマスターＣＰＵ１３２がチェックポイントリトライをいつ実行したかに関与しないので、マスターＣＰＵ１３２によってリセットされなければならない。
【００３５】
エラー回復のタイプによって、出力パケットバッファ１４４は、選択したエラー回復操作１７２の一部としてリセットすなわちクリアされる場合もされない場合もある。出力パケットバッファ１４４が、１つまたは複数のデータパケットを記憶するように構成されている場合、これは、マスターＣＰＵ１３２がチェックポイントリトライを実行した後で冗長データパケットがネットワークファブリックに送られることがあることを意味する。しかしながら、宛先エンドノードに冗長データパケットを送ることは許容できるが、破損したデータパケットを正常なＣＲＣチェックビットと共にネットワークファブリックに送ることは許容できない。
【００３６】
ＣＰＵ  ＩＦ１４０が入力パケットバッファ１４６からのデータトランザクションを実行している間（すなわち、トランザクション保留フラグ１６０とエラー回復１７４の両方がアサートされている間）に選択したエラー回復操作１７２を開始した場合、ＣＰＵ  ＩＦ１４０は、入力パケットバッファ１４６がリセットされまた入力コントローラ１６４が進行中トランザクションを適切に完了できないであろうことを知っている。ＣＰＵ  ＩＦ１４０は、システムプロトコルに基づいて、進行中トランザクションを完了するためにマスターＣＰＵ１３２に転送される残りのデータの量を知る。
【００３７】
このシナリオにおいて、ＣＰＵ  ＩＦ１４０は、トランザクションにおける残りの量のデータを作成することによって進行中のデータトランザクションを完了するように構成される。１つの実施形態において、ＣＰＵ  ＩＦ１４０は、データが無効である可能性が高いことをＣＰＵ  ＩＦ１４０が知っている場合でも、単に進行中トランザクションを完了するのに必要な残りのデータ量と等しいデータ量を入力パケットバッファ１４６から転送することによって、残りのデータトランザクションを作成する。１つの実施形態において、ＣＰＵ  ＩＦ１４０は、進行中データトランザクションを完了するのに必要な残りのデータ量と等しい量のランダムデータを自己生成することによって残りのデータトランザクションを作成する。さらに別の実施形態において、ＣＰＵ  ＩＦ１４０は、進行中データトランザクションを完了するのに必要な残りのデータ量と等しい量のランダムデータをメモリ１８４から転送することによって残りのデータトランザクションを作成する。
【００３８】
進行中データトランザクションの作成を完了した後、ＣＰＵ  ＩＦ１４０は、すべてのデータが転送されたという指示をマスターＣＰＵ１３２に提供し、トランザクションが適切に終了する。１つの実施形態において、選択したエラー回復操作１７２は、データトランザクションを完了するのに必要な時間内に完了するように構成される。１つの実施形態において、エラー回復フラグ１７４がアサートされている間にマスターＣＰＵ１３２が入力パケットバッファ１４６からのデータを要求することによって開始される後のデータトランザクションは、全体がＣＰＵ  ＩＦ１４０によって作成される。
【００３９】
前の説明と同じように、選択したエラー回復操作が完了した後で、エラーハンドラ１３８は、エラー回復フラグ１７４のアサートを解除し、ＣＰＵ  ＩＦ１４０は、ネットワークスイッチ１３４がエラー回復操作を実行したばかりで、ＣＰＵ１３２が受け取ったいくつかのデータが無効である可能性があることを示すリセット割込信号１８２をマスターＣＰＵ１３２に送る。これに応じて、マスターＣＰＵは、再び、自分自身を前のチェックポイントにリセットするチェックポイントリトライを開始する。この場合も、システムプロトコルの一部として、出力データトランザクションが行われなかった可能性がある場合でも、マスターＣＰＵ１３２は、リセット割込１８２を受け取った後で、出力パケットバッファ１４４がネットワークファブリック１３５にデータパケットを送ることができるようにセマフォ１８０のアサートを解除するかまたはリセットする。
【００４０】
セマフォ１８０とリセット割込信号１８２は、エラー回復フラグ１７４がアサートされ、進行中トランザクション保留フラグ１６０もアサートされている間だけ、ＣＰＵ  ＩＦ１４０によってセットされることに注意されたい。マスターＣＰＵ１３２とＣＰＵ  ＩＦ１４０の間でトランザクションが進行していない間に、選択したエラー回復操作１７２が実行された場合は、データは影響を受けず、従って、セマフォ１８０は送られず、マスターＣＰＵ１３２はたチェックポイントリトライを実行する必要がない。
【００４１】
前述のように、マスターＣＰＵ１３２によるバストランザクションをエラーハンドラ１３８によって選択されたエラー回復操作１７２から切り離すことによって、ネットワークスイッチ１３４は、マスターＣＰＵ１３２による介入がなくても、それ自体の高度なエラー回復操作を実行することができる。これにより、接続される可能性のある他の装置へのデータトランザクションのような他の作業負荷を実行するためにマスターＣＰＵ１３２を開放することができ、ネットワークスイッチ１３４が、それ自体の必要性に合わせた高度なエラー回復機能を実行するができる。
【００４２】
図４は、本発明の１つの実施形態による独立したエラー回復を備えた例示のメモリ素子２３４の一部分を概略的に示すブロック図である。メモリ素子２３４は、マスターＣＰＵ２３２に結合してマスター／スレーブシステム２３０を構成するように適応される。メモリ素子２３４は、記憶媒体２３５と、エラーハンドラ２３８と、ＣＰＵバス２４２を介してマスターＣＰＵ２３２にマスターに結合するように適応されたメモリコントローラ２４０と、入力レジスタ２４４と、出力レジスタ２４６とを含む。
【００４３】
メモリ素子２３４は、ネットワークスイッチ１３４に関して前に説明したのと類似の態様で動作する。メモリコントローラ２４０は、システムプロトコルに従いマスターＣＰＵ２３２によってデータトランザクションを実行するように構成されている。マスターＣＰＵ２３２は、メモリ素子２３４にデータを書き込むために、メモリ素子２３４と関連したチップセレクト信号をアサートし、書き込みコマンドに従う。次に、マスターＣＰＵ２３２は、データを書き込みたいアドレスをメモリコントローラ２４０に提供する。メモリコントローラ２４０は、そのアドレスを記憶媒体２３５内の物理位置に変換し、ＣＰＵバス２４２を介してマスターＣＰＵ２３２からデータを受け取り始める。メモリコントローラ２４０は、データを入力レジスタ２４４に転送し、入力レジスタ２４４は、記憶媒体２３５内の物理位置にデータを書き込む。（システムプロトコルに従って）マスターＣＰＵ２３２から所定量のデータを受け取った後、メモリコントローラ２４０は、データトランザクションが完了したことを示すＡＣＫ信号をマスターＣＰＵ２３２に提供する。
【００４４】
同様に、メモリ素子２３４からデータを読み取るために、マスターＣＰＵ２３２は、チップセレクト信号をアサートし、読み取りコマンドに従う。次にマスターＣＰＵ２３２は、要求データを記憶媒体２３５から読み出したいアドレスを提供する。メモリコントローラは、そのアドレスを記憶媒体２３５内の物理位置に変換し、次にシステムプロトコルに従ってデータを出力レジスタ２４６とＣＰＵバス２４２を介してマスターＣＰＵ２３２に転送し始める。システムプロトコルに従って所定量のデータを転送した後、メモリコントローラ２４０は、データトランザクションが完了したことを示すＡＣＫ信号をマスターＣＰＵ２３２に提供する。
【００４５】
読み出し操作または書き込み操作を実行したとき、メモリコントローラ２４０は、データトランザクションが進行していることを示すトランザクションフラグ２６０をアサートする。１つの実施形態において、トランザクションフラグ２６０は、マスターＣＰＵ２３２がチップセレクト信号をアサートしたときにアサートされ、メモリコントローラ２４０がＡＣＫ信号を発行したときにアサートが解除される。
【００４６】
エラーハンドラ２３８は、致命的エラー２７０ａ〜２７０ｍとして示した、メモリ素子２３４内部の複数のエラーを検出するように構成される。エラーハンドラ２３８は、検出した致命的エラー２７０または検出した致命的エラー２７０の組み合わせに基づいて、リセットタイプ２７２ａ〜２７２ｎとして示したように複数のエラーリセット操作またはエラー回復操作のうちの１つを選択し開始するエラー回復プロトコルを含む。選択したリセットタイプ２７２により、様々なバッファと作業レジスタ（図示せず）や入力レジスタ２４４と出力レジスタ２４６など、メモリ素子２３４の様々な要素をリセットすることができる。エラーハンドラは、選択したエラー回復操作２７２が実行されている間、エラー回復フラグ２７４をアサートする。
【００４７】
エラーハンドラ２３８が、メモリコントローラ２４０が書き込み操作と関連したマスターＣＰＵ２３２によってデータトランザクションを実行している間に選択したエラー回復操作２７２を開始する場合、メモリコントローラ２４０は、記憶媒体２３５に書き込まれているデータが破壊されている可能性がある場合でも進行中データトランザクションを完了するように構成される。１つの実施形態において、記憶媒体２３５が、コンパクトディスクなどの追記型媒体を含むとき、入力レジスタ２４４は、記憶媒体２３５にデータを書き込む前に完全なデータトランザクションを受け取るように構成され、セマフォ２８０は、トランザクションフラグ２６０とエラー回復フラグ２７４が両方ともアサートされたときにメモリコントローラ２４０によってセットされる。セマフォ２８０は、記憶媒体２３５に潜在的な破損データが書き込まれるのを防ぐ。
【００４８】
進行中データトランザクションが完了した後で、メモリコントローラ２４０は、マスターＣＰＵ２３２にＡＣＫ信号を提供し、トランザクションは適切に終了する。選択したエラー回収操作２７２が完了した後で、エラー回復フラグ２７４はアサートを解除され、メモリコントローラ２４０は、メモリ素子２３４がエラー回復操作を実行し終えたことを示すリセット割込信号をマスターＣＰＵ２３２に提供する。これに応じて、マスターＣＰＵ２３２は、チェックポイントリトライを実行する。メモリ素子２３４がセマフォ２８０を含む場合、マスターＣＰＵ２３２は、チェックポイントリトライを実行した後の再開操作によってセマフォ２８０をシステムプロトコルの一部としてリセットする。
【００４９】
エラーハンドラ２３８が、メモリコントローラ２４０が読み取り操作と関連したマスターＣＰＵ２３２によってデータトランザクションを実行している間に選択したエラー回復操作２７２を開始する場合、メモリコントローラ２４０は、出力レジスタ２４６からマスターＣＰＵ２３２に転送されているデータが破損している可能性がある場合でも、進行中のデータトランザクションを完了するように構成される。メモリコントローラ２４０は、システムプロトコルに基づいて、エラー回復操作を開始した（すなわち、エラー回復フラグ２７４がアサートされた）後で進行中データトランザクションを完了するために、マスターＣＰＵ２３２に転送される残りのデータ量を知る。１つの実施形態において、メモリコントローラ２４０は、出力レジスタ２４６からのデータが破損している可能性があることをメモリコントローラ２４０が知っている場合でも、単に出力レジスタ２４６からの進行中データトランザクションを完了するのに必要な残りの量のデータをマスターＣＰＵ２３２に転送し続けることによって進行中データトランザクションを完了する。
【００５０】
この場合も、進行中データトランザクションを完了した後で、メモリコントローラ２４０は、マスターＣＰＵ２３２にＡＣＫ信号を提供し、トランザクションは適切に終了する。選択したエラー回復操作２７２が完了した後、エラー回復フラグ２７４はアサートを解除され、メモリコントローラ２４０は、メモリ素子２３４がエラー回復操作を実行したことを示すリセット割込信号２８２をマスターＣＰＵ２３２に提供する。これに応じて、マスターＣＰＵは、チェックポイントリトライを実行する。メモリ素子がセマフォ２８０を含む場合、マスターＣＰＵ２３２は、チェックポイントリトライを実行した後で再開操作によりセマフォ２８０をリセットする。
【００５１】
本明細書において特定の実施形態を示し説明したが、当業者は、示し説明した特定の実施形態に、本発明の範囲から逸脱することなく様々な代替および／または等価な実施形態を代用できることを理解するであろう。この出願は、本明細書に述べた特定の実施形態の任意の適応または変形を対象として含むように意図されている。従って、本発明は特許請求の範囲とその等価物によってのみ限定されるように意図されている。
【図面の簡単な説明】
【００５２】
【図１】ネットワークシステムを概略的に示すブロック図である。
【図２】本発明によるマスター／スレーブシステムを概略的に示すブロック図である。
【図３】本発明によるネットワークスイッチの１つの実施形態を示すブロック図である。
【図４】本発明によるメモリ素子の１つの実施形態を示すブロック図である。
【符号の説明】
【００５３】
３０  マスター／スレーブシステム
３２  マスターＣＰＵ
３４  スレーブ装置
３６  通信コントローラ
３８  エラーハンドラ
【図１】
2006074797.tif 000003
【図２】
2006074797.tif 000004
【図３】
2006074797.tif 000005
【図４】
2006074797.tif 000006