(57)【特許請求の範囲】
【請求項１】
ネットワークインターフェイス制御装置であって、
異なるタイプの外部メモリに結合されるよう構成された外部メモリインターフェイスと、
前記外部メモリインターフェイスに結合された外部メモリのタイプを記憶するよう構成されたメモリタイプレジスタと、
前記外部メモリインターフェイスに結合された外部メモリの組込自己試験を行なうよう構成されたメモリ組込自己試験（ＭＢＩＳＴ）ロジックとを有し、前記組込自己試験は前記外部メモリインターフェイスに結合されたすべての異なるタイプの外部メモリに対して実行され、前記ＭＢＩＳＴロジックは、前記組込自己試験の結果得られた情報を算術的に変更または維持することにより、前記メモリタイプレジスタに記憶された外部メモリの前記タイプに応じて、異なって解釈するよう構成された適応ロジックを含む、ネットワークインターフェイス制御装置。
【請求項２】
前記組込自己試験の前記結果は現在のアドレスを含み、前記適応ロジックは、前記現在のアドレスと、前記メモリタイプレジスタに記憶された外部メモリの前記タイプとに基づき、故障アドレスを判定するよう構成される、請求項１に記載のネットワークインターフェイス制御装置。
【請求項３】
前記適応ロジックはさらに、整数を前記現在のアドレスに加算することにより前記故障アドレスを判定するよう構成され、前記加算される整数は、前記メモリタイプレジスタに記憶された外部メモリの前記タイプに基づき選択される、請求項２に記載のネットワークインターフェイス制御装置。
【請求項４】
少なくとも或る異なるタイプの外部メモリは、異なるサイクル遅延を有し、前記メモリレジスタに記憶される外部メモリの前記タイプに関して選択される前記整数は、外部メモリの前記タイプに関する前記サイクル遅延と等しい、請求項３に記載のネットワークインターフェイス制御装置。
【請求項５】
前記メモリタイプレジスタに記憶された外部メモリの前記タイプは、パイプラインバースト同期静的ランダムアクセスメモリ（ＰＢ−ＳＳＲＡＭ）およびゼロバイトターンアラウンド同期静的ランダムアクセスメモリ（ＺＢＴ−ＳＳＲＡＭ）を含む、請求項４に記載のネットワークインターフェイス制御装置。
【請求項６】
前記整数は（−３、−２、−１、＋１、＋２、＋３）の組から選択される、請求項５に記載のネットワークインターフェイス制御装置。
【請求項７】
ネットワークインターフェイス制御装置構成であって、
異なる動作特性を有する異なるタイプの外部メモリに結合されるよう構成された外部メモリインターフェイスを有するネットワークインターフェイス制御装置と、
前記外部メモリインターフェイスに結合された外部メモリでユニバーサルなメモリ組込自己試験を行ない、かつ前記外部メモリインターフェイスに結合されたタイプの外部メモリの特有の動作特性に応じて前記試験の結果得られた情報を算術的に変更または維持することにより解釈するよう構成された、前記ネットワークインターフェイス制御装置にあるメモリ組込自己試験（ＭＢＩＳＴ）ロジックとを含む、ネットワークインターフェイス制御装置構成。
【請求項８】
前記動作特性はサイクル遅延を含む、請求項７に記載のネットワークインターフェイス制御装置構成。
【請求項９】
前記外部メモリインターフェイスに結合された外部メモリの前記タイプを記憶するよう構成されたメモリタイプレジスタをさらに含む、請求項８に記載のネットワークインターフェイス制御装置構成。
【請求項１０】
前記ＭＢＩＳＴロジックは、前記メモリタイプレジスタを参照して前記外部メモリインターフェイスに結合された外部メモリの前記タイプを判定し、かつ外部メモリの前記判定されたタイプに関するサイクル遅延を判定するようさらに構成される、請求項９に記載のネットワークインターフェイス制御装置構成。
【請求項１１】
前記ＭＢＩＳＴロジックは、前記メモリ組込自己試験の現在のアドレスと前記判定されたサイクル遅延とを加算することにより前記メモリ組込自己試験の故障アドレスを判定するようさらに構成される、請求項１０に記載のネットワークインターフェイス制御装置構成。
【請求項１２】
前記メモリタイプレジスタに記憶された外部メモリの前記タイプは、パイプラインバースト同期静的ランダムアクセスメモリ（ＰＢ−ＳＳＲＡＭ）とゼロバイトターンアラウンド同期静的ランダムアクセスメモリ（ＺＢＴ−ＳＳＲＡＭ）とを含む、請求項１１に記載のネットワークインターフェイス制御装置構成。
【請求項１３】
ネットワークインターフェイス制御装置に結合された外部メモリを試験する方法であって、
前記ネットワークインターフェイス制御装置に結合された外部メモリのタイプを判定するステップと、
前記ネットワークインターフェイス制御装置の外部メモリインターフェイスを介して前記外部メモリに対してメモリ組込自己試験（ＭＢＩＳＴ）を行なうステップとを含み、前記ＭＢＩＳＴは外部メモリの前記タイプにかかわりなく実行され、前記方法はさらに
前記ＭＢＩＳＴの結果得られた情報を算術的に変更または維持することにより、外部メモリの前記判定されたタイプに応じて、異なって解釈するステップを含む、方法。
【請求項１４】
解釈の前記ステップは、前記ネットワークインターフェイス制御装置に結合された外部メモリの前記タイプに関して、前記ＭＢＩＳＴでの故障アドレスを判定するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記故障アドレスを判定する前記ステップは、前記ＭＢＩＳＴの現在のアドレスを判定するステップと、外部メモリの前記判定されたタイプに特有のサイクル遅延を加算するステップとを含む、請求項１４に記載の方法。
【請求項１６】
前記ネットワークインターフェイス制御装置にあるレジスタにおける外部メモリのタイプを記憶するステップをさらに含み、
外部メモリの前記タイプを判定する前記ステップは前記レジスタを読出すステップを含む、請求項１５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明はネットワーク通信の分野に関し、より特定的には、ネットワークインターフェイス制御装置の外部システムメモリの試験に関する。
【０００２】
【発明の背景】
ローカルエリアネットワークでは、ネットワークケーブルまたは他の媒体を用いてネットワーク上のステーションをリンクする。各ローカルエリアネットワークアーキテクチャは、各ステーションでのネットワークインターフェイスカードが媒体へのアクセスの共有を可能にする、メディアアクセス制御装置（ＭＡＣ）を用いる。
【０００３】
従来のローカルエリアネットワークアーキテクチャでは、１０ＢＡＳＥ−Ｔなどの所定のネットワーク媒体を用いる半二重または全二重のイーサネット（Ｒ）（ＡＮＳＩ／ＩＥＥＥ規格８０２．３）プロトコルに従って動作するメディアアクセス制御装置を用いる。より新しいオペレーティングシステムでは、ネットワークステーションがネットワークの存在を検出できることが必須である。イーサネット（Ｒ）１０ＢＡＳＥ−Ｔ環境において、ネットワークは物理層（ＰＨＹ）送受信機によるリンクパルスの伝送によって検出される。１０ＢＡＳＥ−Ｔ媒体上の周期的リンクパルスはＰＨＹ受信機によって検出され、ＰＨＹ受信機は、ネットワーク媒体上で伝送を行なっている別のネットワークステーションの存在を、周期的リンクパルスの検出に基づき判定する。したがって、ステーションＡのＰＨＹ送受信機は、データパケットを送受信することなしに、１０ＢＡＳＥ−Ｔ媒体上のリンクパルスをステーションＢのＰＨＹ送信機から受信することにより、ステーションＢの存在を検出する。
【０００４】
１０ＢＡＳＥ−Ｔなどの確立したローカルエリアネットワーク媒体の代わりに従来の撚り対電話回線を用いて、コンピュータ同士をリンクすることを可能にするアーキテクチャが開発されてきた。ホームネットワーク環境とここで呼ぶそのような構成には、ホームネットワーク環境を実現するために、家庭にある既存の電話配線を用い得るという利点がある。しかしながら、電話回線はたとえば調光スイッチ、家電製品の変圧器などの、家庭にある電気機器により引き起こされるスプリアス雑音のために、本来的に雑音が多い。これに加え、撚り対電話回線は、標準的なＰＯＴＳ電話からのオンフックおよびオフフックならびに雑音パルスからの、さらに暖房システムおよび空調システムなどの電気システムからの、ターンオン過渡を被る。
【０００５】
したがって、ネットワーク上の状況をＭＡＣがいつ何時にも把握しておくことが重要であり、このことは特にホームネットワークアーキテクチャに当てはまる。通常、状態情報は外部メモリのネットワーク制御装置によって記憶される。状態情報に加え、外部メモリはまた、フレームデータおよび制御情報を記憶する。外部メモリは、ＰＣボードトレースおよび接続、ならびにネットワーク制御装置内のロジックのある部分とともに、メモリサブシステムを構成する。メモリサブシステムの故障は、システムのいずれかの要素の電気的または機械的故障、および／または、過度の負荷もしくはトレース長さなどの、ＰＣボードの設計上の欠陥の結果であり得る。
【０００６】
多くのネットワーク製品および他の製品では、埋込み型のメモリ組込自己試験（ＭＢＩＳＴ）回路を用いて、内部の静的ランダムアクセスメモリ（ＳＲＡＭｓ）を高速で試験する。ＭＢＩＳＴは通常、アクセスごとに１つのメモリロケーションの読出または書込を行なう単純な回路である。最近、現代のネットワークでの応用で必要とされる大量のデータを記憶するために、外部ＲＡＭが用いられている。バーストモード機能を可能にする数々の異なるタイプの外部メモリが採用されている。これらには、パイプラインバーストＳＲＡＭ、ノーバスレイテンシ（No Bus Latency）（ＮｏＢＬ）ＳＲＡＭおよびゼロバイトターンアラウンド（Zero Byte Turnaround）（ＺＢＴ）ＳＲＡＭが含まれる。
【０００７】
ハードウェアを最小化するために、内部ＳＲＡＭの試験に用いられる同じＭＢＩＳＴを、外部ＳＲＡＭの試験にも用いることができる。しかしながら、異なるタイプのＳＲＡＭを試験する際に或る問題が生じる。この原因は、試験での故障が報告されるたびに、スキャンアウトアドレスロケーションは常に同じでないからである。なぜなら、異なるタイプのＳＲＡＭを試験すると、ＭＢＩＳＴアドレスカウンタの増分が異なるからである。たとえば、連続読出アクセス動作を行なう際にパイプラインバーストＳＲＡＭに必要なレイテンシが原因で、ＭＢＩＳＴカウンタが常に増分するとは限らない。しかしながら、そのようなレイテンシ制約がないＺＢＴ−ＳＲＡＭにこのことは当てはまらない。この結果、異なるタイプの外部ＳＲＡＭに関して、故障したメモリロケーションの正確なロケーションを突きとめることは非常に困難である。
【０００８】
【発明の概要】
制御装置に結合された異なるタイプの外部メモリで、標準的なＭＢＩＳＴを実行することを可能にし、こうして故障したメモリロケーションの正確なロケーションを特定することを可能にする、ネットワークインターフェイス制御装置の構成が必要とされている。
【０００９】
これらおよび他の要求は、異なるタイプの外部メモリに結合されるよう構成された外部メモリインターフェイスを含むネットワークインターフェイス制御装置を提供する、この発明の実施例により満たされる。メモリタイプレジスタが、外部メモリインターフェイスに結合された外部メモリのタイプを記憶するよう構成される。制御装置はまた、外部メモリインターフェイスに結合された外部メモリの組込自己試験を行なうよう構成されたメモリ組込自己試験（ＭＢＩＳＴ）ロジックを含む。ＭＢＩＳＴロジックは、組込自己試験の結果を、メモリタイプレジスタに記憶された外部メモリのタイプに応じて、異なって解釈するよう構成された、適応ロジックを含む。
【００１０】
この発明において採用する適応ロジックは、ネットワークインターフェイス制御装置の外部メモリインターフェイスに接続され得る異なるタイプの外部メモリを勘案したものである。特定的に、同じＭＢＩＳＴを用いて異なるタイプの外部メモリを試験することができ、故障アドレスは正確に判定されるが、これはネットワークインターフェイスに結合された特定の外部メモリのレイテンシを考慮に入れるからである。
【００１１】
先に記した要求はまた、ネットワークインターフェイス制御装置に結合された外部メモリのタイプを判定するステップと、ネットワークインターフェイス制御装置の外部メモリインターフェイスを通じて外部メモリインターフェイスのＭＢＩＳＴを実行するステップとを含む、ネットワークインターフェイス制御装置に結合された外部メモリの試験方法を提供する、この発明の別の実施例によって満たされる。外部メモリのタイプにかかわらず、同じＭＢＩＳＴが実行される。ＭＢＩＳＴの結果は、外部メモリの判定されたタイプに応じて、異なって解釈される。
【００１２】
前述および他の、この発明の特徴点、局面および利点は、この発明の以下の詳細な説明および添付の図面から、より明らかとなるであろう。
【００１３】
【詳細な説明】
この発明は、外部メモリが異なるタイプのメモリの１つであり得る場合に、ネットワークインターフェイス制御装置に結合された外部メモリの正確な動作を検証するという問題に対処する。この事柄に対処するために、この発明の或る実施例では、すべての異なるタイプのメモリに関して同じＭＢＩＳＴを採用し、かつネットワークインターフェイス制御装置では適応ロジックを用いて、ＭＢＩＳＴの結果を、ネットワークインターフェイス制御装置に結合された外部メモリのタイプに応じて異なって解釈する。これにより、或るネットワークインターフェイス制御装置との使用に好適なさまざまなタイプの外部メモリの動作における、たとえばレイテンシの差を勘案することができる。
【００１４】
図１は、この発明の一実施例に従い構成されたネットワークインターフェイス制御装置の例示の一実施例のブロック図である。ネットワークインターフェイス制御装置は、確立されたメディアアクセス制御（ＭＡＣ）と物理層（ＰＨＹ）プロトコルとを用いて、システムメモリとネットワーク媒体との間でデータパケットを送受信するように構成された、ＩＥＥＥ８０２．３準拠のネットワークインターフェイスとの関連で説明される。
【００１５】
ネットワークインターフェイス１０は好ましくは、シングルチップの３２ビットイーサネット（Ｒ）制御装置であり、たとえばＰＣＩ（peripheral component interconnect）ローカルバスなどの、コンピュータのローカルバス１２と、イーサネット（Ｒ）ベースの媒体５０との間のインターフェイスを提供する。参照番号５０は、実際のネットワーク媒体か、またはこれの代わりに、ネットワーク媒体に結合された物理層送受信機への単一経路（たとえばメディア独立インターフェイス（ＭＩＩ））かのいずれかを表わす。
【００１６】
ネットワークインターフェイス１０は、ＰＣＩバスインターフェイスユニット１６と、メモリ制御ユニット１８と、ネットワークインターフェイス部２０と、記述子管理ユニット２２と、レジスタ制御および状態ユニット２４とを含む。ネットワークインターフェイス部２０は、ＩＥＥＥ８０２．３準拠および全二重可能のメディアアクセス制御（ＭＡＣ）コア２６と、秒速１０メガビット、秒速１００メガビットまたは秒速１０００メガビットの外部送受信機を接続するためのメディア独立インターフェイス（ＭＩＩ）ポート２８と、外部アドレス検出インターフェイス（ＥＡＤＩ）ポート３０と、ネットワークポートマネージャユニット３２とを含む。ネットワークインターフェイス１０はまた、外部ＥＥＰＲＯＭから読出しかつこれへと書込むためのＥＥＰＲＯＭインターフェイス３４と、ＬＥＤ制御３６と、ＩＥＥＥ１１４９．１準拠のＪＴＡＧ境界走査試験アクセスポートインターフェイス３８と、クロック発生ユニット４０と、拡張バス４２とを含む。拡張バスインターフェイスユニット４２は、フレームデータ記憶、制御データ記憶および状態データ記憶のため、外部データメモリ６０へとインターフェイスする。拡張バスインターフェイスユニット４２はまた、立上げ中に用いられる起動ＲＯＭのための不揮発性（たとえばＥＥＰＲＯＭまたはフラッシュメモリなどの）記憶装置とインターフェイスする。
【００１７】
ＰＣＩローカルバス仕様（改訂版２．２）準拠のＰＣＩバスインターフェイスユニット１６は、ＰＣＩバス１２を通じてホストコンピュータメモリからデータフレームを受信する。ＰＣＩバスインターフェイスユニット１６は、記述子管理ユニット２２の制御下で、ＰＣＩバス１２を通じてホストコンピュータからの転送を受信する。たとえば、ＰＣＩバスインターフェイスユニット１６から受信された送信データはメモリ制御ユニット１８に渡されて、これによりデータメモリに記憶される。その後、メモリ制御ユニット１８は送信データをデータメモリから検索し、来たるべきネットワークへの送信のためにＭＡＣ２６へと渡す。同様に、ネットワーク５０から受信されたデータはＭＡＣ２６により処理され、メモリ制御ユニット１８へと渡されてデータメモリ６０で記憶される。その後、メモリ制御ユニット１８はデータをデータメモリ６０から受信し、これをＰＣＩバスインターフェイスユニット１６へと渡し、こうしてデータはＰＣＩバス１２を通じてホストコンピュータ６２へと転送される。
【００１８】
記述子管理ユニット２２は、ＰＣＩバスインターフェイスユニット１６を介する、ホストコンピュータ６２への、およびこれからのデータ転送を管理する。ホストコンピュータ６２のメモリに含まれるデータ構造は、状態情報のさまざまな制御とともにデータバッファのサイズおよびロケーションを特定する。記述子管理ユニット２２は、メモリ制御ユニット１８とインターフェイスして、送信されたデータストリームに制御情報を挿入し、かつ受信されたデータストリームから状態情報を検索する。ネットワークインターフェイス部２０は、リンクの相手（たとえば中央ハブ、リピータ、ワークステーションまたはスイッチ）の対応する自動折衝ユニットと媒体５０を通じ通信を行なって、自動折衝機能を実行するネットワークポートマネージャ３２を含む。
【００１９】
ネットワークインターフェイス１０はさらに、Magic Packet技術およびＰＣＩバス電力管理インターフェイス仕様プロトコルへの準拠も含めて、Microsoft On NowおよびＡＣＰＩ仕様に従い、媒体５０上の予め定められたパターンを検出することによって、ネットワーク媒体５０を介してホストコンピュータ６２の遠隔作動（すなわちターンオン）を可能にする、電力管理ユニット４４を含む。
【００２０】
ネットワークインターフェイス１０はさらに、フレーム送受信に関するＭＡＣ２６からの情報を除外し、ネットワーク管理に必要な統計を維持する、ＭＩＢカウンタユニット４６をも含む。統計は、ホストコンピュータ６２によってＰＣＩバスインターフェイスユニット１６を介してアクセスされる。
【００２１】
図２は、ネットワークインターフェイス制御装置および外部メモリ６０を示す。以下の説明のために、ネットワークインターフェイス制御装置１０の或る要素のみを示す。
【００２２】
ネットワークインターフェイス制御装置１０は、状態を送受信するのに外部メモリ６０を用いる。好ましい実施例において、メモリのサイズは最大４メガバイト、メモリの構成は１Ｍｘ３２ビットであり得る。メモリサイズは、この発明の他の実施例ではさらに大きくなる。メモリ６０のサイズは、外部メモリサイズレジスタ６６の内容によって示される。外部メモリサイズは、ＥＥＰＲＯＭインターフェイス３４から外部メモリサイズレジスタ６６へとロードされる。
【００２３】
外部メモリ６０は、５１２バイトページの単位でプログラムされる。外部メモリ６０がどれだけ送信に割当てられるか、かつどれだけ受信に割当てられるかを特定するために、ユーザは受信バッファが始まるページ境界を境界レジスタ（図示せず）にプログラムする必要があるだろう。境界レジスタもまた、５１２バイトページの単位でプログラムされる。送信バッファスペースは境界レジスタにおける第１のアドレスで始まる。送信または受信のためにメモリを分けるかどうかは、ユーザまたはソフトウェアドライバに依り、好ましい実施例ではデフォルト値はない。好ましい実施例で必要な最小メモリサイズは、送信および受信待ち行列の各々につき５１２バイトページであり、これはメモリサイズを少なくとも４Ｋバイトに限定する。
【００２４】
ネットワークインターフェイス制御装置１０は、ソフトウェアによる外部メモリ６０の診断アクセスを許さない。しかしながら、ネットワークインターフェイス制御装置１０は、外部メモリ６０と、メモリ６０のための内部アクセスロジック１８と、ＰＣボード相互接続とに対して、大規模な高速試験を実行する内部メモリ組込自己試験（ＭＢＩＳＴ）制御装置（すなわち制御ロジック）６８への、ソフトウェアによるアクセスを提供する。
【００２５】
拡張バスインターフェイス４２（外部メモリインターフェイス）は、外部メモリ６０と外部ブートＲＯＭデバイスとにアドレスを与える外部メモリアドレスピン［１９：０］を含む。これらの出力［１９：０］のすべては一定のレベルへと強制され、外部メモリバス上のいかなるアクセスも実行されていない間電力を節約する。ＥＲＤ［３１：０］ピンは、外部メモリ６０のアクセスにデータビット［３１：０］を与える。これらの信号は一定のレベルへと強制され、外部メモリバス上のいかなるアクセスも実行されていない間電力を節約する。ブートＲＯＭアクセスのためには、ＥＲＤ［７：０］ピンは、ブートＲＯＭアクセスにデータビット［７：０］を与える。
【００２６】
／ＥＲＣＥは、外部メモリ６０のためのチップイネーブル信号となる。これは、ＥＲＡ［１９：０］ピン上の外部メモリアドレスが有効であればローにアサートされる。
【００２７】
／ＦＬＣＳは、ブートデバイスのためのチップ選択となる。これは、ブートＲＯＭアドレスおよびＥＲＡ［１９：０］ピンが有効であればローにアサートされる。
【００２８】
／ＥＲＯＥは外部メモリ出力イネーブル信号であり、これは外部メモリデバイス読出動作中にアクティブローにアサートされ、こうして外部メモリ６０はＥＲＤ［３１：０］データバスを駆動できる。この信号は、他のときは常にデアサートされる。
【００２９】
／ＥＲＷＥは外部メモリバイトイネーブルであり、これは、フラッシュ（ブートＲＯＭ）デバイスにある外部メモリ６０への書込アクセスのための書込イネーブルを与える。
【００３０】
／ＥＲＡＤＳＰは外部メモリアドレスストローブ信号であり、これは、アドレスを外部メモリ６０へとロードするアドレスストローブ信号を与える。
【００３１】
／ＥＲＡＤＶは、外部メモリ６０にアドレスアドバンス信号を与える、外部メモリアドレスアドバンスを用いる。この信号は、バーストアクセス中にローにアサートされて、外部メモリ６０にあるアドレスカウンタを増分する。
【００３２】
ＥＲＣＬＫは、すべての同期メモリアクセスのための基準クロックである。
図２を参照すると、この発明のネットワークインターフェイス制御装置１０は、ＭＢＩＳＴ手順を制御する制御ロジック６８を用いて、外部メモリ６０のサイズを判定し、かつこれの正確な動作を検証する。異なる外部メモリを受け入れるための、この発明の適応的な特徴点を説明する前に、この発明の実施例に従うＭＢＩＳＴ自体を説明する。制御ロジック６８はメモリ制御装置１８の一部をなしても、またはこの制御装置から論理的に別個のものであってもよい。制御ロジック６８は、ＭＢＩＳＴ手順を用いてメモリのサブシステムを運用する。メモリサブシステムは、外部メモリ６０と、入力／出力ロジック（拡張バスインターフェイス４２）と、外部メモリ６０にあるボードトレースとを含む。この試験は通常のメモリ動作速度で実行され、通常の、および／または最悪の場合のアクセスパターンを試験することができる。
【００３３】
ＭＢＩＳＴは、外部メモリ６０へデータを書込むことと、外部メモリ６０からこのデータを読出すことと、これを期待されるデータと比較することとを含む、パターン発生試験である。典型的に、このようなＭＢＩＳＴは、製造上の誤りに関して試験を行なう緊密に結合されたＭＢＩＳＴにおいて見出される。「緊密に結合された」という用語は、ロジックが物理的にＲＡＭブロック内に位置することと、これがＲＡＭチップの端にあるピンを通じては通常アクセスできない内部ＲＡＭ信号へのアクセスを有することとを意味する。これに対してこの発明は、ＭＢＩＳＴロジックを、外部メモリ６０に接続するネットワークインターフェイス制御装置１０上に提供し、よって緊密に結合されてはいない。これにより、ユーザの要求に応じて異なるサイズの外部メモリ６０を用いることができる。
【００３４】
制御装置ロジック６８は、ＭＢＩＳＴレジスタ６４およびＳＲＡＭサイズレジスタ６６を用いて、サイズの判定を行ないかつ外部メモリ６０の動作を検証する。これらのレジスタは、レジスタ制御および状態ユニット２４の一部を形成し得る。ＭＢＩＳＴレジスタ６４の概略図が図３で与えられる。好ましい実施例においてＭＢＩＳＴレジスタ６４は、６４ビットのレジスタである。レジスタにおけるビットフィールドを次に説明する。
【００３５】
ビット６３は、ＭＢＩＳＴが行なわれたかどうかを表示するＤＭ＿ＤＯＮＥビットである。このビットは、試験が完了したかまたは誤りが検出されたかのいずれかのために自動メモリ試験が止まると、１にセットされる。これは、ＤＭ＿ＳＴＡＲＴまたはＤＭ＿ＲＥＳＵＭＥのいずれかがセットされると、０にクリアされる。ＤＭ＿ＤＯＮＥビットは読出専用である。
【００３６】
ビット６２はＤＭ＿ＥＲＲＯＲビットであり、ＭＢＩＳＴ誤り標識として動作する。このビットは、メモリ試験ロジックがメモリ誤りを検出すると、１にセットされる。これは、ＤＭ＿ＳＴＡＲＴかＤＭ＿ＲＥＳＵＭＥかのいずれかがセットされると、０にクリアされる。このビットもまた読出専用である。
【００３７】
ＤＭ＿ＳＴＡＲＴは、ＭＢＩＳＴ開始ビットである。このビットが１にセットされると、ＤＭ＿ＥＲＲＯＲおよびＤＭ＿ＴＥＳＴ＿ＦＡＩＬビットも含めてＭＢＩＳＴロジックがリセットされ、メモリ試験プロセスが開始する。ＤＭ＿ＳＴＡＲＴは、ＤＭ＿ＲＥＳＵＭＥビットがセットされるのと同時にセットしてはならない。メモリ試験が停止すると、ＤＭ＿ＳＴＡＲＴビットは自動的にクリアされる。このビットは読出／書込である。
【００３８】
ＤＭ＿ＲＥＳＵＭＥビットはビット６０であり、ＭＢＩＳＴを再開するよう動作する。このビットを１にセットすると、メモリ試験シーケンスは最後に停止した点で再開する。このビットをセットするとＤＭ＿ＥＲＲＯＲビットがクリアされるが、ＤＭ＿ＴＥＳＴ＿ＦＡＩＬビットはクリアされない。このビットは、ＤＭ＿ＳＴＡＲＴビットがセットされるのと同時にセットしてはならない。ＤＭ＿ＲＥＳＵＭＥビットは、メモリ試験が停止すると自動的にクリアされる。このビットは読出／書込である。
【００３９】
ＤＭ＿ＦＡＩＬ＿ＳＴＯＰビットはビット５９であり、故障制御に際してＭＢＩＳＴ停止を行なう。このビットが１にセットされると、メモリ試験は、誤りが検出されるたびに停止することになる。このビットが０にクリアされると、メモリ試験は、検出された誤りの数に関わりなく完了まで実行されることになる。このビットは読出／書込である。
【００４０】
ビット番号５８は、ＭＢＩＳＴ試験故障標識として動作するＤＭ＿ＴＥＳＴ＿ＦＡＩＬビットである。このビットは、メモリ試験誤りが検出されるとセットされる。また、ＤＭ＿ＳＴＡＲＴが１にセットされるとリセットされる。また、ＤＭ＿ＲＥＳＵＭＥが１にセットされるとクリアされない。このビットは読出専用である。
【００４１】
ビット番号５７は未使用で、０として書込まれ、未定義として読出される。
ＤＭ＿ＤＩＲビット（ビット５６）はＭＢＩＳＴ試験方向である。このビットは、試験停止時にＭＢＩＳＴメモリポインタが下方向に数えていれば、１にセットされる。また、試験停止時にＭＢＩＳＴメモリポインタが上方向に数えていれば、０にクリアされる。このビットは読出専用である。
【００４２】
ビット５５−５４はＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥビットを表わし、ＭＢＩＳＴ誤りオフセット標識として動作する。このフィールドは、ＤＭ＿ＡＤＤＲフィールドの値に対する最後のメモリ試験誤りのロケーションのオフセットを示す。このフィールドの解釈は、誤り検出時にアドレスポインタが上方向に数えていたか、または下方向に数えていたかを表示するＤＭ＿ＤＩＲフィールドの値に依存する。このフィールドは読出専用である。ＤＭ＿ＤＩＲビットとＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥビットとの関数としての誤りロケーションの例示の割当が下で与えられる。
【００４３】
【表１】
0004630514.tif 000002
【００４４】
ＤＭ＿ＢＡＣＫＧビット５３−５２は、ＭＢＩＳＴバックグラウンドビットを形成する。このフィールドは、試験停止時にメモリ試験ロジックが用いていたバックグラウンドパターンを含む。このフィールドは読出専用である。
【００４５】
ビット５１−３２はＤＭ＿ＡＤＤＲビットであり、ＭＢＩＳＴアドレスを形成する。このフィールドは、試験停止時のＭＢＩＳＴアドレスポインタの内容を含む。外部メモリ６０のパイプライン性のために、この値がメモリ誤りのロケーションでないこともあり得る。実際の誤りロケーションは、上述のようにＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥフィールドの内容を加算または減算することにより得られる。このフィールドは読出専用である。
【００４６】
ＤＭ＿ＤＡＴＡビットはビット３１−０である。このフィールドは、外部メモリ６０からメモリ試験ロジックが読出した最後のデータを含む。もしＤＭ＿ＥＲＲおよびＤＭ＿ＦＡＩＬ＿ＳＴＯＰビットが両方とも１にセットされていれば、このフィールドの内容は誤りを含んでいる。このフィールドは読出専用である。
【００４７】
ＭＢＩＳＴレジスタにおける特定の割当ビットを図３および上の説明で与えたが、このビット割当は例示的なものにすぎず、ＭＢＩＳＴレジスタ６４は、異なって構成されかつ他の点においてこの発明の記述と一致することができる。レジスタの内容は、リセットピンがアサートされると０にクリアされる。
【００４８】
図４は、この発明の或る実施例に従う制御ロジック６８を用いて、外部メモリ６０の動作およびこれのサイズを検証する方法の、或る例示の実施例の流れ図である。ネットワークインターフェイス制御装置１０が始動した後、外部メモリ（ＳＲＡＭ）サイズは、ＳＲＡＭ＿ＳＩＺＥレジスタ６６で、最小許容値４にプログラムされる。このステップが完了すると、手順はステップ７２へ続き、ここでＭＢＩＳＴレジスタ６４におけるＤＭ＿ＳＴＡＲＴおよびＤＭ＿ＦＡＩＬ＿ＳＴＯＰビットが書込まれる。たとえば、ビット６３：５６は０ｘ２８によって書込まれる。ＭＢＩＳＴレジスタ６４の残余は、書込を無視するので、任意のデータを書込んでも、または全く書込まなくてもよい。この動作によって、制御ロジック６８によるメモリ試験プロセスが開始する。
【００４９】
制御ロジック６８は、ＤＭ＿ＤＯＮＥビット６３が１にセットされるまで、ＤＭ＿ＤＯＮＥビット（ビット６３）およびＤＭ＿ＥＲＲＯＲビット（ビット６２）を読出す。これを図４のステップ７４および７６として示す。ステップ７６で判定されるように、ＤＭ＿ＤＯＮＥビットが一旦セットされると、次にステップ７８で、ＤＭ＿ＥＲＲＯＲビットがセットされているかどうかが判定される。もしＤＭ＿ＥＲＲＯＲビットがセットされていれば、外部メモリ６０には欠陥があると見なされ、誤りをステップ８０で報告し、メモリ試験プロセスを出る。
【００５０】
ステップ７６で判定されるようにＤＭ＿ＤＯＮＥビットがセットされており、かつステップ７８で判定されるようにＤＭ＿ＥＲＲＯＲビットがセットされていなければ、ＳＲＡＭ＿ＳＩＺＥレジスタ６６は、ステップ８２で示すように、０ｘ８０００の最大値に再プログラムされる。次にステップ７４および７６がステップ８４および８６として再実行される。換言すれば、ＤＭ＿ＳＴＡＲＴおよびＤＭ＿ＦＡＩＬ＿ＳＴＯＰビットが、制御ロジック６８によって、ＭＢＩＳＴレジスタ６４に書込まれる。メモリ試験は次に、ＤＭ＿ＤＯＮＥビットがセットされるまで再び実行され、制御ロジック６８はＤＭ＿ＤＯＮＥおよびＤＭ＿ＥＲＲＯＲビットを読出す。このプロセスは、ステップ８６で判定されるようにＤＭ＿ＤＯＮＥビットがセットされていなければ、ステップ８４へとループして戻る。
【００５１】
ステップ８６で判定されるＤＭ＿ＤＯＮＥのセットによって示されるようにメモリ試験が完了すると、ＤＭ＿ＥＲＲＯＲビットがセットされているかどうかが再び判定される。ＤＭ＿ＥＲＲＯＲが０であれば、ＳＲＡＭ＿ＳＩＺＥレジスタ６６での現在の値が、外部メモリのサイズとしてＣＰＵ６２へと報告される（ステップ９２）。次にこのプロセスを出る。ＤＭ＿ＥＲＲＯＲビットがセットされていない（すなわち、０と等しくない）場合、ＳＲＡＭ＿ＳＩＺＥレジスタ６６は最大の１／２（０ｘ４０００）へとプログラムされ、ステップ８４−８６が繰返される。ＤＭ＿ＥＲＲＯＲビットが０になるまで、ＳＲＡＭ−ＳＩＺＥを再プログラムしかつメモリ試験を実行するこのプロセスは、外部メモリ６０のサイズが判定されるまで二分探索アルゴリズムを用いて繰返される。
【００５２】
ＭＢＩＳＴ制御装置６８が提供する上記のＭＢＩＳＴは、外部メモリインターフェイス４２に結合された外部メモリ６０のタイプに関わりなく用いられる。この発明では、ＭＢＩＳＴ制御装置６８における適応ロジック６９を用いて、外部メモリのタイプに独立してＭＢＩＳＴの実際の故障アドレスを判定する。
【００５３】
異なるタイプの外部メモリと、単一のＭＢＩＳＴによるこれらのメモリの試験とに関する問題は、適応ロジック６９が用いる故障状態標識を設けてＭＢＩＳＴ故障のメモリロケーションを正確に判定することで解決される。図５は、パイプラインバーストＳＲＡＭの外部メモリの連続バースト読出アクセスを表わし、図６は、ゼロバイトターンアラウンドＳＲＡＭの連続バースト読出アクセスを表わす。
【００５４】
図５および６の例示のタイミング図を比較することによって、単一のＭＢＩＳＴを異なる外部メモリのタイプに対して用いることに関する問題が明らかになる。連続動作をパイプラインバーストＳＲＡＭで行なう際に必要なレイテンシのために、ＭＢＩＳＴカウンタはたとえばクロック６で増分しない（図５）。これに対し、ゼロバイトターンアラウンドＳＲＡＭにはそのようなレイテンシ制約（図６）がない。したがって、ＭＢＩＳＴ制御装置６８は、同じＭＢＩＳＴを異なるメモリのタイプに対して行なう際に、故障メモリロケーションの正確なロケーションを特定することが困難となる。
【００５５】
図５で見られるように、連続バースト読出アクセス動作が実行される。パイプラインバーストＳＲＡＭにおいて、メモリロケーション０００２が試験すべきロケーションであると仮定する。データはクロック５においてのみ利用可能となる。読出されたデータが誤っている場合、ＭＢＩＳＴ制御装置６８はクロック６で誤りをフラグ表示する。図５でわかるように、クロック６でのＭＢＩＳＴのアドレスカウンタはアドレス０００４によってレジスタ記録される。しかしながらこのアドレス（０００４）は、故障の実際のメモリロケーションではない。実際のメモリロケーションは０００２、またはＭＢＩＳＴアドレスカウンタによってレジスタ記録されたものよりも２ロケーション分少ないものである。
【００５６】
別の例として、同じ図５を用いて、故障のメモリロケーションが０００１であれば、誤りはクロック５でフラグ表示される。ＭＢＩＳＴアドレスカウンタは、先の例においてはクロック６で行なわれたように、クロック５でやはりメモリロケーション０００４によってレジスタ記録されることになる。ただしこの場合、故障の実際のメモリロケーションは０００１であり、これはＭＢＩＳＴアドレスカウンタによってレジスタ記録されたものよりも３ロケーション分少ない。
【００５７】
これらの例は、パイプラインバーストＳＲＡＭの１クロックレイテンシのために、連続動作を行なう際にＭＢＩＳＴ制御装置６８が実際の故障ロケーションの判定に関して困難を抱えることを示しているが、これは実際の故障ロケーションが故障のフラグ表示時にＭＢＩＳＴアドレスカウンタでレジスタ記録されたロケーションから一貫してオフセットしていないからである。ゼロバイトターンアラウンドＳＲＡＭなどの異なるタイプのＳＲＡＭが用いられると、レイテンシの問題も変わるであろう。たとえば図６では、連続動作においてレイテンシの問題はない。したがって、ロケーション０００２における誤りはクロック６で報告され、メモリロケーション５でレジスタ記録される。報告されたメモリロケーションのオフセットおよび実際の故障メモリロケーションは、連続バースト読出アクセスの間、３（０００５−０００２）のままである。ＭＢＩＳＴ制御装置６８はしたがって、ネットワークインターフェイス制御装置１０の外部メモリインターフェイス４２に結合された外部メモリ６０のタイプを承知している必要がある。ＭＢＩＳＴ制御装置６８は、外部メモリのタイプを一旦適切に把握すると、外部メモリの各タイプに対して同じＭＢＩＳＴを用い、かつ異なるタイプの異なるレイテンシを考慮に入れることにより実際の故障メモリロケーションを正確に判定することができる。
【００５８】
この発明では、誤りが発生するとＭＢＩＳＴ制御状態マシンの状態を表示する故障状態標識を用いて、実際の故障メモリロケーションを判定する。故障状態標識（ＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥ）は、先に説明したように、ＭＢＩＳＴ６４に記憶される。ＭＢＩＳＴレジスタ６４にはまた、アドレス方向（ＤＭ＿ＤＩＲ）と、ＭＢＩＳＴ停止時のアドレスロケーション（ＤＭ＿ＡＤＤＲ）と、ＭＢＩＳＴ制御装置６８が外部メモリ６０から読出す最後のデータ（ＤＭ＿ＤＡＴＡ）とが記憶される。期待されるデータはデータバックグラウンド（ＤＭ＿ＢＡＣＫＧ）から構築される。これらは２つのビット（００、０１、１０、１１）であり、好ましい実施例では、複製されてＭＢＩＳＴ中の外部メモリへの入力を形成する。たとえば８ビットデータバスでは、期待されるデータは、２つのデータバックグラウンドビットを用いて、ビットを４度複製することにより構築され得る。これにより、００００００００、０１０１０１０１、１０１０１０１０または１１１１１１１１の期待されるデータが得られる。データバックグラウンドビットを複製するこの方式により、ＭＢＩＳＴが必要とするレジスタの数が減らされる。
【００５９】
この発明の好ましい実施例では、アドレス方向および故障状態標識がＭＢＩＳＴ制御装置６８で用いられて実際の故障メモリロケーションを計算する。ＭＢＩＳＴ制御装置６８は次に、この故障メモリロケーションをユーザに報告する。ＭＢＩＳＴの間に、ＭＢＩＳＴレジスタ６４におけるＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥの値は、外部メモリ６０のタイプとメモリ動作の現在の状態とに応じてＭＢＩＳＴ制御状態マシンにより変えられる。たとえば、或る構成レジスタでのＳＲＡＭ＿ＴＹＰＥフィールドを検査することにより、ＭＢＩＳＴ制御装置６８は、外部メモリが（このようなメモリが外部メモリインターフェイス４２に結合されると仮定すれば）パイプラインバーストＳＲＡＭであることに気付く。バースト間の１クロックレイテンシ（図５のクロック５および６）の間に、ＭＢＩＳＴ制御状態マシンはＭＢＩＳＴレジスタ６４におけるＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥの値を‘１１’から‘１０’へと変える。こうして、図５で示すように、誤りのフラグ表示時に読出されているメモリのアドレスから実際の故障メモリロケーションを判定するためのオフセットが３から２へと変わったことが示される。こうして、図５の例において、ロケーション０００２における誤りはクロック６でフラグ表示され、アドレス０００４でレジスタ記録される。したがってＤＭ＿ＡＤＤＲの値は０００４に等しい。アドレス方向（ＤＭ＿ＤＩＲ）は‘０’にセットされ、ＭＢＩＳＴ制御状態マシンが上方向に数えていることを表示する。このときのＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥの値は‘１０’にセットされ、ＤＭ＿ＤＩＲが‘０’の値を有するので−２のオフセットを示す（ＤＭ＿ＤＩＲが‘１’にセットされると、オフセットは＋２となる）。
【００６０】
図４の例示の方法に関して先に論じたように、ＭＢＩＳＴが停止し誤りが検出されると、ＭＢＩＳＴ制御装置はＭＢＩＳＴレジスタ６４を検査する。オフセットはＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥおよびＤＭ＿ＤＩＲ値から得られ、次に実際の故障メモリロケーションは、ＭＢＩＳＴ制御装置６８によって、判定されたオフセット値でＤＭ＿ＡＤＤＲの値をオフセットすることにより計算される。
【００６１】
ゼロバイトターンアラウンドＳＲＡＭなどの異なるタイプの外部メモリの例では、レイテンシの問題がパイプラインバーストＳＲＡＭにおけるのと同じではないために、ＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥの値がＭＢＩＳＴの間に変わらないこともあり得る。しかしながらこの発明は、異なるタイプの外部メモリに対して、これらの異なるメモリのタイプの異なるレイテンシを考慮に入れるので、同じＭＢＩＳＴを用いる柔軟性をもたらす。したがってこの発明は、ネットワークインターフェイス制御装置に結合するための例示の外部メモリとして上で説明した外部メモリのタイプの２つの異なるタイプに限定されず、むしろこれを他のタイプの外部メモリに対して用いてもよい。ＭＢＩＳＴ制御状態マシンはこの場合、故障状態標識の値を適切にセットする必要があるだろう。
【００６２】
この発明の２ビット故障状態標識の実現例は、既存のＭＢＩＳＴ状態マシンへと容易に組込まれ得る。この実現例のバーストアクセスモードを示す以下の部分的なVerilog ＨＤＬコードでこれを示す。状態ＢＲ１、ＢＲ２、ＢＲ３およびＢＲ４はそれぞれ、第１、第２、第３および第４のメモリロケーションのバースト読出を表わす。データが２クロック後に読出されることが可能であるため、故障状態信号は（たとえばＤ型フリップフロップによって）２度ラッチされ、この後にＭＢＩＳＴレジスタ６４におけるスキャンアウト情報を更新する。
【００６３】
【数１】
0004630514.tif 000003
【００６４】
図７および８は、ネットワークインターフェイス制御装置１０の内部ＳＲＡＭの単一のメモリロケーションアクセスの例示のタイミング図である。この内部ＳＲＡＭは、メモリ制御ユニット１８の一部をなしても、これから論理的に別個のものであってもよい。図７において、アドレスは単一のメモリロケーションアクセス中に上昇し、図８でアドレスは下降する。アドレスが上昇する（ＤＭ＿ＤＩＲ＝‘０’）図７の例において、実際の故障メモリロケーションは０００１−１＝０と計算され、ここで０００１はＤＭ＿ＡＤＤＲの値であり、‘０’は実際の故障メモリロケーションである。‘−１’のオフセットは、１のオフセットを表わすＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥ（‘０１’）の値と、オフセットをＤＭ＿ＡＤＤＲの値から減算すべきであることを表わすＤＭ＿ＤＩＲ（‘０’）とから判定される。
【００６５】
図８では、アドレスは下降し、こうしてＤＭ＿ＤＩＲの値は‘１’となる。図８における誤りに関するＤＭ＿ＡＤＤＲの値はＦＦＦＥである。アドレスが下降している（図８のＡＤＤを参照）ので、１のアドレスオフセット（ＤＭ＿ＦＡＩＬ＿ＳＴＡＴＥ＝‘０１’）はＤＭ＿ＡＤＤＲの値に加算され、こうして実際の故障メモリロケーションが得られる。この例においては、実際の故障メモリロケーションはＦＦＦＥ＋１＝ＦＦＦＦとなる。この値は、ＭＢＩＳＴ制御装置６８によってユーザに報告される。
【００６６】
こうして、この発明を用いて、内部メモリおよび異なるタイプの外部メモリに関し、実際の故障メモリロケーションを判定することができる。これにより、単一のＭＢＩＳＴを用いてオンチップ要件を減少させることが可能となる。
【００６７】
この発明を詳細に説明および例示したが、これは単に例示としてであって限定と取るべきではなく、この発明の範囲は前掲の特許請求の範囲の文言によってのみ限定されるものと明確に理解すべきである。
【図面の簡単な説明】
【図１】  ネットワークインターフェイス制御装置がＣＰＵおよび外部メモリに結合された、この発明の一実施例に従って構成されたネットワークインターフェイス制御装置のブロック図である。
【図２】  この発明の或る特徴を強調するために、ネットワークインターフェイス制御装置および外部メモリの或る要素をブロック図の形で示すブロック図である。
【図３】  この発明の一実施例に従う、ＭＢＩＳＴレジスタの概略図である。
【図４】  この発明の一実施例に従う、ＭＢＩＳＴを実行する例示の方法の流れ図である。
【図５】  この発明の或る実施例に従う、ＭＢＩＳＴ中のパイプラインバーストＲＡＭの連続バースト読出アクセスの例示のタイミング図である。
【図６】  この発明の或る実施例に従う、ＭＢＩＳＴ中のゼロバイトターンアラウンドＲＡＭの連続バースト読出アクセスの例示のタイミング図である。
【図７】  この発明の或る実施例に従う、アドレスが上昇している間のネットワークインターフェイス制御装置内のメモリの単一のメモリロケーションアクセスの例示のタイミング図である。
【図８】  この発明の或る実施例に従う、アドレスが下降している間のネットワークインターフェイス制御装置内のメモリの単一のメモリロケーションアクセスの例示のタイミング図である。
【図１】
0004630514.tif 000004
【図２】
0004630514.tif 000005
【図３】
0004630514.tif 000006
【図４】
0004630514.tif 000007
【図５】
0004630514.tif 000008
【図６】
0004630514.tif 000009
【図７】
0004630514.tif 000010
【図８】
0004630514.tif 000011