(57)【特許請求の範囲】
【請求項１】
受信したメッセージを取り扱う装置であって、
１つ以上のテストストリングまたはマスクストリング、およびスクリーニング処理中に、前記テストストリングおよび前記マスクストリングのうちのどのストリングを使用するか、または前記テストストリングおよび前記マスクストリングのうちのどのストリングの組合せを使用するか、を示す構成セットアップを記憶するシステムメモリと、
プロセッサの代わりに、受信中に、オンザフライで部分ごとに受信メッセージを解釈およびスクリーニングするように動作し、前記スクリーニングを通過させると決定された受信メッセージを、処理のために前記プロセッサに提供する通信インターフェース・コントローラと、を備え、
前記コントローラは、
受信したメッセージのそれぞれについて、一連のステージでスクリーニング中に比較を実行し、各ステージでは、受信した各メッセージの一部を前記１つ以上のテストストリングまたはマスクストリングの対応部分と比較し、
前記メッセージの受信の間、前記一連のステージを順番に実行し、連続したステージは特定の受信したメッセージのそれぞれの部分に対してＦＩＦＯバッファ内に連続して受信するように動作し、
前記ステージのそれぞれで、前記記憶した構成セットアップにより指示された通りに、前記ＦＩＦＯバッファ内の前記受信したメッセージの前記部分を、記憶した前記テストストリングおよび／または前記マスクストリングのそれぞれ、または前記テストストリングおよび前記マスクストリングの組のそれぞれの対応部分と順番に比較し、
前記ステージのそれぞれおよび順番の比較のそれぞれについて、前記システムメモリから対応する部分をフェッチする、ように構成されている装置。
【請求項２】
受信したメッセージのそれぞれについて、前記コントローラは、前記スクリーニング中に、前記メッセージのユーザが選択したビットを、テストストリングの対応するビットと比較し、前記メッセージが前記比較に基づいて前記スクリーニングを通過させるか決定する請求項１記載の装置。
【請求項３】
前記比較を実行する時、前記コントローラは、前記テストストリングと共にマスクストリングを使用して、前記比較からの前記テストストリングの特定のビットをマスクするように動作する請求項２記載の装置。
【請求項４】
前記コントローラは、前記スクリーニングを実行するために、記憶された前記構成セットアップを使用して、前記第１メモリから前記記憶された対応するテストリングを取り出すように構成されている請求項１記載の装置。
【請求項５】
前記コントローラは、前記スクリーニングに応じて、受信したメッセージが第１優先度のものであるか、第２優先度のものであるか、を決定するように動作し、前記第１優先度は前記第２優先度より優先度が高い請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記コントローラは、第１および第２メッセージバッファを備え、前記第１優先度を有すると決定されたメッセージを前記第１メッセージバッファに、前記第２優先度を有すると決定されたメッセージを前記第２メッセージバッファに、記憶するように構成され、前記第１バッファは前記第１優先度のメッセージ用に予約されている請求項５記載の装置。
【請求項７】
請求項１から６のいずれか１項に記載の装置を備えるマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ受信に関する。特に、本発明は、受信したメッセージを取り扱う装置および対応する方法に関する。このようなメッセージは、例えば、イーサネット(Ethernet)（商標名）メッセージのようなフレームまたはパッケージに基づくメッセージである。
【背景技術】
【０００２】
イーサネット（商標名）ＭＡＣ機能性は、マイクロコントローラにおいて重要であると考えられている。このようなマイクロコントローラは、実時間アプリケーションと同様に、一般の産業用および自動車用アプリケーションでの使用が図られている。
【０００３】
例として、産業用実時間イーサネット（商標名）プロトコル（例えば、イーサネット（商標名）パワーリンクまたはプロフィネット(Profinet)）は、リクエストに関する高速応答時間を必要としている。これらの種類のプロトコルをサポートするため、新規なハードウエアの特徴が要望されている。しかしながら、一般用のアプリケーションも、このような特徴から利益が得られることが要望されている。
【０００４】
マイクロコントローラ・プロセッサまたは中央処理ユニット（ＣＰＵ）を、入ってきたメッセージ（リクエスト）の解析の仕事から開放して演算時間を少なくして、バスの負荷が重たくても重要なメッセージの受信を保証し、マイクロコントローラがリクエストに対して高速な応答時間を提供可能であることを保証することが望まれている。
【０００５】
上記のように考えられた通信インターフェース・コントローラは、フィルタ受信機構を有する。しかしながら、このようなコントローラは、次のような短所を有すると考えられている。
【０００６】
上記のように考えられた通信インターフェース・コントローラの１つのタイプは、完全な行き先アドレスフィルタが入っている（インプリメントされている）。入ってきたメッセージは、行き先アドレスが受信機のステーションアドレスに一致するならば受付され、他のメッセージは拒絶される。入ってきたメッセージの小さな部分（行き先アドレス）のみがフィルタ値（ステーションアドレス）と比較される。このあらかじめ定義されたメッセージ片(fragment)は、長さの点およびメッセージ内での位置の点で固定されている。
【０００７】
１つより多い行き先アドレスのフィルタリング／受信をサポートするために、ハッシュテーブルフィルタがインプリメントされる。完全アドレスフィルタと同様に、固定メッセージ片、すなわちステーションアドレスのみが比較される。ハッシュコードは、メッセージにおける行き先アドレスから算出される。このコードは、各テーブルエントリィに対する受入れフラグを含むハッシュテーブルにアクセスするのに使用される。もし受入れフラグがクリアされると、対応するメッセージは拒絶される。ハッシュテーブルは、いくつかの行き先アドレスが同一のハッシュキーに導くことができるため、不完全フィルタである。したがって、パケットは、それらが拒絶されても受け入れられることがある。
【０００８】
上記のように考えられたコントローラは、１つの受信バッファキューを有するようになる。もしこのキュー（保留メモリ）が全て占有されると、プロセッサ（すなわち、ソフトウエア）が、記憶された受信メッセージを処理するまで、それ以上のメッセージは受信されない。特に高いバス負荷の下では、入ってきた重要なメッセージは、ソフトウエアが重要なものを特定するほど十分に高速にメッセージを処理できないため、失われることになる。
【０００９】
フィルタ一致における所定のメッセージの自動送信の一般原理は知られているが（例えば、ポート(Port)GmbHの産業用イーサネット（商標名）ＭＡＣ仕様を参照のこと）、このような自動送信は適当な方法で処理できると考えられる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第6535514B1号
【特許文献２】米国特許第6519263B1号
【特許文献３】米国特許第6753873B2号
【特許文献４】米国特許第5479441号
【特許文献５】米国特許第6662247B1号
【特許文献６】米国特許第6407999B1号
【特許文献７】米国特許第6363069B1号
【特許文献８】米国特許第6408006B1号
【特許文献９】米国特許第5983275号
【特許文献１０】米国特許第5299313号
【特許文献１１】米国特許第5305321号
【特許文献１２】米国特許第6381648B1号
【特許文献１３】米国特許第5343471号
【特許文献１４】米国特許第6938040B2号
【特許文献１５】米国特許第6658480B2号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記の観点からの装置および方法が要望されていた。
【課題を解決するための手段】
【００１２】
本発明の第１の態様の実施形態によれば、受信したメッセージを取り扱う装置が提供され、この装置は、受信中（すなわち、受信されている間）に、オンザフライで部分ごとに受信メッセージをスクリーニングするように動作し、スクリーニングを通過させると決定された受信メッセージを、処理のためにプロセッサに提供する通信インターフェース・コントローラを備える。このようなコントローラは、基本的にプロセッサの代わりに機能し、その受信したメッセージを解釈してスクリーニングし、プロセッサの負荷を低減する。
【００１３】
この装置は、プロセッサを備えてもよい。例えば、プロセッサは装置のＣＰＵ(central processing unit)であればよい。装置は、メッセージを部分ごとに受信し、受信にしたがってそれらの部分をスクリーニングするためにＦＩＦＯバッファを備えてもよい。
【００１４】
受信したメッセージをオンザフライで、できればハードウエアで、スクリーニングすることにより、メモリおよびバッファ空間のようなシステム資源を節約できる。したがって、例えば、受信したメッセージをスクリーニングする前に、できればブロック内にメッセージを完全に記憶する必要はない。
【００１５】
例えば、装置は、プロセッサをコントローラに接続する内部バスのようなバスを有してもよい。好ましくは、プロセッサに負荷をかける危険のないように、装置は、受信したメッセージをバスに渡す前に、そのようなスクリーニングを実行するように構成されている。
【００１６】
受信したメッセージのそれぞれについて、コントローラは、スクリーニング中に、メッセージのユーザ選択ビットを、テストストリングの対応するビットと比較して、その比較結果に応じてメッセージがスクリーニングを通過したかどうかを決定するように動作可能であってもよい。すなわち、装置は、例えば、アドレスビットまたはヘッダビット以外の受信したメッセージのビット、またはメッセージの異なる部分に渡って存在する選択ビット（プレアンブル、ヘッダ、データ、フッタ）を、テストストリングと比較するように動作可能であってもよい。
【００１７】
コントローラは、比較を実行する時に、テストストリングに組み合わせてマスクストリングを使用して、テストストリングの特定のビットを比較からマスク（除外）するように動作可能であってもよい。マスクストリングとテストストリングの組合せは、装置が実行可能な異なるスクリーニングプロセスを増加する。例えば、１つのテストストリングは、多くのマスクストリングと一緒に使用可能であればよく、逆も同様である。
【００１８】
装置は、１つ以上のテストストリングおよび／またはマスクストリングを記憶する第１メモリを備えてもよい。コントローラが、第１メモリを備えてもよい。装置は、ユーザが第１メモリ内に所望のストリングを記憶するのを可能にするように構成されていてもよい。そのようにして、ユーザは、装置が特定の方法で受信したメッセージをスクリーニングするのが可能であってもよい。このような柔軟性（フレキシビリティ）は有利である。
【００１９】
装置は、記憶されたテストリングに対応し、第１メモリに記憶されたテストリングを参照するための構成セットアップを記憶する第２メモリを備えてもよい。コントローラが、第２メモリを備えてもよい。
【００２０】
第１および第２メモリは、同一メモリの一部であってもよい。第１および第２メモリのサイズは、例えばそれらのメモリにおける空間要求に応じて、動的に制御されてもよい。これにより、メモリの使用は最適化されてよい。
【００２１】
このような構成セットアップにより、スクリーニング処理中にどのストリングまたはストリングの組合せ（例えば、テストおよびマスクストリング）を使用するかを定義することが可能であってよい。これにより、装置を自由に構成することが可能であってよい。例えば、構成セットアップは、ストリングが構成中に使用される順番で定義するのに使用されてよい。
【００２２】
コントローラは、スクリーニングを実行するために、記憶された構成セットアップを使用して、第１メモリから記憶された対応するテストリングを取り出すように構成されていてもよい。コントローラは、記憶されたテストストリングおよび／またはマスクストリングのいずれの組を、受信したメッセージと比較するかを決定するため、記憶された構成セットアップを使用するように構成されていてもよい。
【００２３】
使用のフレキシビリティのため、装置は、ユーザが所望のストリングを第１メモリに、対応する構成セットアップを第２メモリに記憶可能に構成されており、コントローラが、受信したメッセージの所望のビットを、１つ以上の所望のテストストリングおよび／またはマスクストリングと比較するように構成されていてもよい。
【００２４】
コントローラは、受信したメッセージのそれぞれについて、一連のステージで比較を実行するように構成されていてもよい。以下に説明するように、ＦＩＦＯ(first-in-first-out)バッファが使用されてもよい。各ステージは、受信したメッセージの一部をテストストリングおよび／またはマスクストリングの対応部分と比較することを備えてもよい。
【００２５】
コントローラは、ＦＩＦＯバッファを備え、関係するメッセージの受信の間ステージの処理を順番に実行するように構成され、連続したステージは特定の受信したメッセージのそれぞれの部分に対してＦＩＦＯバッファ内に連続して受信するように動作してもよい。ステートマシーンがこの処理を制御してもよい。
【００２６】
コントローラは、ステージのそれぞれで、記憶した構成セットアップにより指示された通りに、関係する受信したメッセージの部分を、記憶したテストストリングおよび／またはマスクストリングのそれぞれ、またはテストストリングおよび／またはマスクストリングの組のそれぞれの対応部分と比較するように構成されてもよい。これにより、スクリーニングプロセスは、他のチャンクをＦＩＦＯバッファ内に受信する前に、メッセージの受信した各チャンクを効果的に十分に取り扱ってよい。
【００２７】
コントローラは、スクリーニングに応じて、受信したメッセージが第１優先度のものであるか、第２優先度のものであるか、を決定するように動作可能であってもよく、第１優先度は第２優先度より優先度が高い。より好ましくは、このような優先度情報は、スクリーニングプロセスの間導出されてもよく、プロセッサによるメッセージの次の処理は、高優先度のメッセージに焦点が当てられてもよい。スクリーニングは、もちろん、メッセージをより高い優先度に分類するか、受信時間または送信元などの優先度以外の分類要因に基づいて分類するのに使用されてもよい。
【００２８】
コントローラは、第１および第２メッセージバッファを備えてもよく、第１優先度を有すると決定されたメッセージを第１メッセージバッファに、第２優先度を有すると決定されたメッセージを第２メッセージバッファに、記憶するように動作可能でもよく、第１バッファは第１優先度のメッセージ用に予約されている。第１および第２バッファのサイズは、例えばそれらのバッファにおける空間要求に応じて、動的に制御されてもよい。例えば、第１および第２バッファは、同一バッファの一部であってもよい。これにより、バッファの使用は最適化されてもよい。
【００２９】
コントローラは、第１優先度のメッセージの受信を、プロセッサに知らせるように動作可能であってもよい。これにより、プロセッサは、（例えば、インタラプトにより）重要なメッセージを即座に取り扱うことができてもよい。このような重要なメッセージは、例えば実時間のアプリケーションにおける、高速の応答時間を必要としてもよい。
【００３０】
ＦＩＦＯバッファは、第１ＦＩＦＯバッファであってもよく、コントローラは、関係するメッセージが第１優先度のものであるかまたは第２優先度のものであるの決定が完了する間、特定の受信したメッセージのスクリーニングされる部分を保持する第２ＦＩＦＯバッファを有してもよく、スクリーニングされる部分は、第１ＦＩＦＯバッファに保持されている間にすでに比較に使用される。この配置は、スクリーニングの特定のステージ（例えば、優先度または他の分類要因）が完了するまでにメッセージの受信部分を保持する容量を提供することにより、メッセージをオンザフライでスクリーニング性能を有利にサポートする。
【００３１】
第１および第２ＦＩＦＯバッファは、単一ＦＩＦＯバッファの一部であってもよい。コントローラは、単一ＦＩＦＯバッファ内の第１および第２ＦＩＦＯバッファの長さを動的に制御するように動作可能であってもよい。
【００３２】
単一ＦＩＦＯバッファは、分離した物理的なユニットに分配されてもよいが、論理的には単一のバッファとして機能する。上記のほかの各種のメモリおよびバッファについても、当然同様のことが言える。
【００３３】
コントローラは、スクリーニングを通過させると決定したメッセージについて、所定の応答メッセージを送信するように動作可能であってもよい。これにより、例えばメッセージがプロセッサにより処理される前に、応答が即座に出されてもよい。
【００３４】
装置は、プロセッサを備えてもよい。コントローラは、プロセッサに、メッセージの受信開始を知らせるように動作可能であってもよく、プロセッサは、受信開始を知らせる信号に応じて、受信中の少なくとも部分的にメッセージに対する応答を準備するように動作可能であってもよい。これにより、例えばアプリケーションに応じて数ｍｓまたは数十ｍｓであるメッセージを受信中の時間が、応答を準備するプロセッサにより有効に使用されてもよい。応答は、例えば応答メッセージ、または応答信号の出力のようなほかの応答であってもよい。コントローラは、受信中の初期に（受信の開始であってもよい）、そのメッセージをプロセッサに送るべきか決定するように動作可能であってもよく、それによりプロセッサは特定の（例えば重要な）メッセージに対する信号を受信するのみである。
【００３５】
コントローラは、ハードウエアとして実現される。
【００３６】
本態様は、装置を備えるマイクロコントローラにも、マイクロコントローラを備える設備にも、拡大される。このような設備は、例えば、産業用ロボットであってもよい。
【００３７】
本発明の第２の態様の実施形態によれば、受信したメッセージを取り扱う方法が提供され、この方法は、受信中に、オンザフライで部分ごとに受信メッセージを解釈およびスクリーニングし、スクリーニングを通過させると決定された受信メッセージを処理のためにプロセッサに提供する。
【００３８】
装置の態様の特徴は、方法の態様にも適用され、逆も同様である。
【図面の簡単な説明】
【００３９】
【図１】図１は、本発明を具体化したシステムの概略図である。
【図２】図２は、図１のシステムの各部分を表す概略図である。
【図３】図３は、図１のシステムにより実行される方法のフローチャートである。
【図４】図４は、本発明を具体化した別のシステムの概略図である。
【図５】図５は、図４のシステムで図２の各部に対応する部分を表す概略図である。
【発明を実施するための形態】
【００４０】
付属の図面は、例としてのみ参照される。
【００４１】
本発明の実施形態が、柔軟な（フレキシブルな）フィルタ機構を提供するものとして一般的に説明される。入ってきたメッセージまたはその片は、ユーザー定義の値と比較される。フィルタ一致に応じて、入ってきたメッセージは、廃棄又は受け付けられ、入ってきたメッセージは高優先度メッセージとして特定され、専用受信バッファに送られ、そして用意された又はあらかじめ設けられた又は記憶されたメッセージの自動送信が引き起こされる。本発明の実施形態は、効率的で、フレキシブルで、低コストで実施可能であると考えられる。
【００４２】
１つの実施形態では、メッセージの例示の形式として入ってきたイーサネット（商標名）メッセージが、（取り扱われるという意味で）ＣＰＵの介在無しに、予備選択および処理される。いずれ明らかになるように、本発明の実施形態は、イーサネット（商標名）ネットワークから到着したメッセージのフレキシブルな変更可能な取扱を可能にする。フィルタ機構は、高ネットワーク（ネットワークバス）負荷の下でも、高優先度メッセージを特定してこれらのメッセージの受信および記憶を保証する。
【００４３】
一般的に、通信ネットワークは、いくつかのノードを備え、それぞれの間でデータパケットを交換する。バス・トポロジー・ネットワークでは、各ノードは、意図された送り先アドレスにかかわらず、典型的にはすべての送信されたメッセージを受信可能である。
【００４４】
このようなネットワークの１つの短所は、単一ノードの過負荷の危険の可能性である。受信ノードは、一般に入ってきたメッセージを処理すべきか、それとも他のノード向けなので廃棄できるかをチェックする必要がある。もしこれらのチェックがソフトウエアで実行されるならば、そのノードで実行するほかのアプリケーションに利用できるＣＰＵの演算容量が、メッセージの取扱のために確保されなければならない。高ネットワーク負荷の下で、メッセージは、バッファのオーバーフローのために失われることが起こり得る。例えば、ＣＰＵは受信したメッセージを十分に高速で取り扱うことができないことになる。
【００４５】
ＣＰＵの負荷を低減することが望まれており、本発明の実施形態は、入ってきたメッセージをハードウエアで選択する（予備処理すなわち取り扱う）ことによりこの要望を実現する。更に、本発明の実施形態は、比較ストリングスの長さの点でフレキシブルであり、このような比較ストリングスと比較するメッセージの部分の位置においてもフレキシブルであり、低コストで実現できる解決策を提供する。
【００４６】
図１は、本発明を具体化したシステム１の概略図である。システム１は、例えば、イーサネット（商標名）ネットワーク上のノードとして働くことが意図されたマイクロコントローラの一部であってもよい。しかしながら、システム１は、例えばＡＳＩＣ(Application-Specific Integrated Circuit)、ＦＰＧＡ(Field-Programmable Gate Array)またはスタンドアロンＭＡＣ(Media Access Controller)などのほかのデバイスの一部であってもよい。システム１は、イーサネット（商標名）ネットワーク以外のほかの形式のネットワーク、例えば論理バストポロジーを有するどのようなネットワーク上のノードの一部を形成することが意図されていてもよい。
【００４７】
システム１は、プロセッサ、すなわちＣＰＵ２と、メディアアクセスコントローラ（ＭＡＣ）４と、ランダム・アクセス・メモリ（ＲＡＭ）のようなメモリ６と、バス接続のような内部接続８と、ネットワークに接続される外部ターミナル又はその類似のもの１０と、を備える。
【００４８】
コントローラ４は、使用時には、ターミナル１０を介してネットワークに直接的又は間接的に接続され、ネットワークから入ってきたメッセージを受信する。ネットワークは、例えば、ＷＬＡＮのようなＬＡＮ、またはインターネットのような広域ネットワークの一部であってもよい。このようなメッセージは、例えば、データ部分、およびヘッダ、フッター、プレアンブルなどの関係する管理情報を備える情報のパケットまたはフレームであると考えられる。メッセージの１つの例示の形式であるイーサネット（商標名）フレームの構造に関する情報は、ＩＥＥＥ８０２．３仕様書（http://standards.ieee.org/getieee802）で見つけることができる。公知のように、ＩＥＥＥ８０２．３は、有線イーサネット（商標名）の物理レイヤーとデータ・リンク・レイヤーのメディア・アクセス・コントロール（ＭＡＣ）サブレイヤーを定義するＩＥＥＥ基準の集合である。
【００４９】
コントローラ４は、図１に示すのと同様の比較器として実現されるフィルタ１２を備える。フィルタ１２自体は、ネットワークからのメッセージを受信するコントローラ内に、その一部分（受信ユニット）の近くに配置される。
【００５０】
メモリ６は、内部接続８を介してコントローラ４に接続される。使用に際して、またはユーザによるセットアップに従って、または製造中に、マスクストリングと比較ストリングが、メモリ６内に記憶される。使用中、入ってきた（および出て行く）メッセージも、メモリ６に記憶される。例えば、メモリ６は、例えばシステム１を有するマイクロコントローラのようなより大きなデバイスの一般的なシステムメモリであってもよい。
【００５１】
システム１は、以下の原理に従って動作するように構成される。
【００５２】
メッセージは、バイトのストリングと見なすことができる。それ以上の取扱（例えばプロセッサ２によるソフトウエア処理）のためにメッセージを選択するか、または不適切としてメッセージを拒絶するために、メッセージのバイトストリングまたはその片は、ユーザ定義のストリングと比較される。これらのユーザ定義のストリング（テストストリング）は、（メモリ６のような）システムメモリに記憶され、任意の位置と長さを有している。記述（ディスクリプタ:descriptor）テーブルも、メモリ６に記憶され、記憶された各ストリングの開始アドレスおよびバイト数についての情報を詳細に表している。
【００５３】
（同様にユーザにより定義される）マスクストリングも、同様の方法で任意に記憶されるようにしてもよい。このようなマスクストリングは、入ってきたメッセージのどの片が、ユーザ定義のストリングと比較されるかを規定する。１つのマスクストリングが、いくつかのテストストリングに割り当てられるか、逆に１つのテストストリングがいくつかのマスクストリングに割り当てられてもよい。このような組合せは、記述テーブルに詳細が記されてもよい。他の実施形態では、このような組合せの使用を実現するためにレジスタが採用され、例えば１つのマスクストリングが、いくつかのテストストリングに割り当てられてもよい。このようなテストストリングは、比較ストリングと呼ばれる。
【００５４】
入ってきたメッセージは数百バイト（例えば１５００バイト）で構成されてもよく、比較ストリングの長さはこの実施形態ではフレキシブルであるから、システム１は、（むしろメッセージとストリングの比較ブロックにより）メッセージの受信中に、メッセージとストリングの比較を（スクリーニング機能として）、オンザフライ(on the fly)で部分ごとに（例えばチャンクバイチャンク(chunk-by-chunk)で）順番に実行するように構成されている。これにより、システム資源（メモリ、バッファなど）が節約され、低コストでの実現を可能にする。
【００５５】
図２は、システム１の各部分を表す概略図である。
【００５６】
メモリ６は、記述テーブル２０を有するように示されており、１番目からｉ番目のマスクストリング２２１から２２ｉおよび１番目からｎ番目のマスクストリング２４１から２４ｎがテーブルに記憶されている。コントローラ４は、ＦＩＦＯバッファ３０、マスクストリングバッファ３２および比較ストリングバッファ３４により実現された比較器機能を有するように示されている。図２から、入ってきたまたは受信したメッセージは、オンザフライで、ネットワークから外部ターミナルを介してＦＩＦＯバッファ３０を通って、受信（ＲＸ）バッファ３６に渡されるようにすることが好ましい。受信バッファ３６は、メモリ６の一部であってもよい。
【００５７】
メッセージ部分またはあるサイズのチャンク（例えば、システム１のデータバス幅）の受信後、比較またはスクリーニングサイクルが開始されてもよい。システム１では、コントローラ４の一部である比較器ステートマシーン（図示せず）が１番目の比較ストリングの等しいサイズの部分を、そしてもし適用可能であれば、メモリ６からの関係するマスクストリングの対応部分を、フェッチする。メッセージ、比較ストリングおよびマスクストリングの部分は、互いに同じサイズである必要はないことが好ましい。これらのバイトストリングの位置および長さに関する情報は、比較器ステートマシーンによりアクセスされる記述テーブル内に記憶されている。
【００５８】
フェッチが完了した後、比較ステップが、図２において一方向を示す矢印で示されるように実行される。もし比較ストリングのこの部分の比較結果が一致しなければ、この特定の比較ストリングを使用した更なる比較は不要であると考えられ、したがってこの比較ストリングは更なる処理から除外されてもよい。
【００５９】
フェッチ／比較サイクルは、（それぞれの時点でマスクストリングの対応部分を任意に採用して）記述テーブル内の、または記述テーブルの一部内でリストに入れられた各比較ストリングについて、繰り返される。入ってきたメッセージの部分当たりで採用される比較およびマスクストリングの最大数は、メモリ転送（ストリング部分のフェッチ）のバンド幅および入ってきたメッセージのデータレートに依存する。例えば、オンザフライでスクリーニングを実行する時、受信ＦＩＦＯバッファが更なるメッセージデータの挿入を可能にするためにクリアされなければならない前に、すべてのストリングの比較が完了されなければならない。
【００６０】
比較ストリングの全体の一致／不一致結果は、そのストリングが不一致のために除外されるか、またはそのストリングが最後まで比較が成功してそのストリングが一致したとなるか、のいずれかの後に決定される。
【００６１】
図３は、システム１により実行される方法のフローチャートである。方法４０は、ステップ４２から６６を備える。
【００６２】
ステップ４２において、メッセージの一部（あるバイト数）が受信され、ここではＸバイトが受信される。方法は次にステップ４４に進み、そこでは変数Ｊは値“１”に初期化される。次のステップ４６では、比較ストリングＪが比較プロセスから除外されているかの判定が行われる。もしストリングＪが除外されていれば（すなわちステップ４６で“ＹＥＳ”の場合）、方法は後で説明するステップ５８に進む。もしストリングＪが除外されていなければ（すなわちステップ４６で“ＮＯ”の場合）、方法はステップ４８に進む。
【００６３】
ステップ４８では、受信したメッセージの部分に対応する比較ストリングＪの部分が、例えばメモリ６からフェッチされる。次の任意に設けられるステップ５０では、（受信したメッセージの部分および比較ストリングのフェッチした部分に対応する）マスクストリングの部分も、例えばメモリ６からフェッチされる。マスクストリングは、比較ストリングＪに割り当てられたマスクストリングであっても、他の比較ストリングであってもよい。
【００６４】
ステップ５２では、フェッチしたストリング部分とメッセージの受信した部分の比較が実行される。次のステップ５４では、比較結果が一致または不一致であるかが決定される。
【００６５】
もし一致が見つからなければ（ステップ５４で“ＮＯ”の場合）、方法はステップ５６に進み、ストリングＪが更なる処理から除外される。その場合、次に、方法はステップ５８に進み、変数Ｊの値が増加される。
【００６６】
しかしながら、もし一致が見つかれば（ステップ５４で“ＹＥＳ”の場合）、方法はステップ６０に進み、ストリングＪの終端まで達したか、すなわちステップ４８でフェッチした部分がそのストリングの最後の部分であるかが判定される。もしストリングＪの終端まで達していれば（ステップ６０の“ＹＥＳ”の場合）、方法はステップ６２に進み、ストリングＪも一致が見つかったことが記録される。ステップ６２は、一致がストリングＪのすべての部分で見つかった場合のみ到達することが望ましい。次に、方法はステップ５６に進み、比較ストリングＪは、（十分に比較されたので）更なる比較から除外され、ステップ５８に進んで、変数Ｊの値が増加される。ストリングＪの終端に達していなければ（ステップ６０で“ＮＯ”の場合）、方法はステップ５８に進み、再び変数Ｊの値が増加される。
【００６７】
ステップ５８から、方法はステップ６４に進み、変数Ｊの値がＮに等しいか判定され、ここでＮは比較される比較ストリングの個数である。もしＪがＮに等しくなければ（ステップ６４で“ＮＯ”の場合）、方法はステップ４６に戻る。このように、メッセージの受信部分のそれぞれについて、除外されないそれぞれの比較ストリング（および任意でマスクストリングも）の対応部分が、メッセージ部分と比較される。もしＪがＮに等しければ（ステップ６４で”ＹＥＳ“の場合）、すべての除外されていない比較ストリングのメッセージに対応する部分の現在受信している部分について、フェッチして比較し、次に方法はステップ６６に進む。
【００６８】
ステップ６６は、受信したメッセージの終端に達したか、すなわちステップ４２で受信されたメッセージの部分がメッセージの最終部分であるかが判断される。もし受信したメッセージの終端に達した場合（ステップ６６で“ＮＯ”の場合）は、方法はステップ４２に戻る。このようにして、上記の方法は、受信されるのに応じて（すなわちオンザフライで）、メッセージの終端に達するまで、メッセージの受信部分のそれぞれについて繰り返される。もし、メッセージの終端に達した場合（ステップ６６で“ＹＥＳ”の場合）には、方法は終了する。もちろん、方法は受信したメッセージのそれぞれに対して繰り返されてもよい。
【００６９】
方法４０は、比較器アルゴリズムと考えられてもよく、ハードウエアの形で、例えばステートマシンにより実現されてもよい。このようなステートマシンは、受信したメッセージ（フレーム）内の位置を追跡するためのバイトカウンタを有してもよい。テストストリング／マスクストリングの割り当ての構成は、レジスタに記憶されてもよい。
【００７０】
上記に例として述べたように、比較結果は、ＣＰＵ負荷を低減するために、メッセージの予備選択またはプレ処理に使用可能である。例えば、システム１は、比較一致のメッセージのみを（ＣＰＵに送るように）受け付けるように構成されてもよい。もちろん、比較ストリングをどのようにセットアップするかに応じて、システム１は、比較不一致のメッセージのみを受けるように構成してもよい。同様に、システム１は、比較一致または比較不一致のメッセージを拒絶するだけであるように構成してもよい。
【００７１】
１つの実施形態では、システム１は、比較一致（または適宜比較不一致）のあらかじめ定義されたメッセージを自動送信するように構成される。本実施形態では、送信はハードウエアにより起動されてもよく、入ってきたメッセージと出て行くメッセージのレイテンシィを非常に短くしてもよい。このような特徴は、高速の実時間応用を実現する場合に特に有利である。
【００７２】
他の実施形態では、システム１は、もしネットワーク上で高バス負荷がある場合に、メッセージが失われる問題にもさらに適用できる。この実施形態では、比較器を有するコントローラ４は、優先度にしたがって、高優先度のメッセージを特定して、そのようなメッセージを確実に受信するように構成される。
【００７３】
図４は、本発明を実現するシステム１００の概略図である。システム１００は、例えば、イーサネット（商標名）ネットワーク上のノードとして動作することを意図したマイクロコントローラの一部であってもよい。システム１００は、システム１に類似していると考えられてもよく、優先度の異なるレベルのメッセージを取り扱うという特徴を有する。
【００７４】
システム１００は、プロセッサすなわちＣＰＵ１０２（図示せず）と、メディアアクセスコントローラ（ＭＡＣ）１０４と、ランダム・アクセス・メモリ（ＲＡＭ）のようなメモリ１０６と、バス接続のような内部接続１０８と、（そこからメッセージを受信する）ネットワークに接続される外部ターミナル又はその類似のもの１１０と、比較器１１２と、ＦＩＦＯバッファ１３０と、別のＦＩＦＯバッファ１４０と、決定ユニット１５０と、を備える。要素１０２、１０４、１０６、１０８、１１０、１１２および１３０は、それぞれ要素２、４、６、８、１０、１２および３０に類似していると考えられてもよく、重複する説明は省略する。ＦＩＦＯバッファ１４０は、受信バッファ３６に対応すると考えられてもよく、他の実施形態では、受信バッファ３６に加えて設けられてもよい。
【００７５】
一般的に、入ってきたメッセージは、通常はシステム内のまたはメモリ１０６のような専用ＲＡＭ内の確保されたメモリエリアに記憶されてもよい。もしネットワークが高負荷の状態で、メッセージが高周波数で受信されるならば、ＣＰＵ１０２は、新しいメッセージが到着する速度で受信したメッセージを処理することができない。確保されたメモリエリアは満杯になり、バッファのオーバーフローが発生してもよい。
【００７６】
システム１００において、重要情報が失われる危険を低減するため、メモリ１０６は、第１（高優先度）バッファ１５２および第２（標準）バッファ１５４、および（バッファ１５２、１５４の管理のための）対応する第１および第２バッファ記述テーブル１５６、１５８を有するように配置される。第１バッファ１５２は、予約され、すなわち重要とみなされるメッセージのために（例えば、排他的に）使用される。第２バッファ１５４は、他のメッセージに使用される。第１および第２バッファのサイズは、バッファの使用を最適化するために、例えば要求に応じて、動的に制御されてもよい。
【００７７】
図４において、高優先度メッセージを特定するため、前述の比較処理は、例えば、方法４０に先行して使用されることが望ましい。例えば、１つ以上の比較ストリングは、高優先度メッセージを検出するのに使用されてもよい。
【００７８】
受信したメッセージが高優先度であると決定される前に、受信したメッセージの１つより多い部分が、比較される必要があることが注目される。したがって、このために、比較処理の間に使用されるＦＩＦＯバッファ（図２のＦＩＦＯバッファ３０参照）は、第２ステージ、すなわち図４で“ａ”および“ｂ”と記されている２個のＦＩＦＯバッファ１３０および１４０が設けられるステージに効果的に提供される。
【００７９】
第１ステージのＦＩＦＯバッファ１３０は、その時点でまだ比較されていないか比較されているメッセージチャンクまたはその部分を保持し、第２ステージのＦＩＦＯバッファ１４０は、すでに比較されたかまたはメモリ１０６に転送されたメッセージチャンクを保持する。一旦メッセージが高優先度であるかないかについての決定がなされると、この場合は比較器１１２から、信号は決定ユニット１５０に送られてもよい。その時点で、（オンザフライの）メッセージを第１メッセージバッファ１５２または第２メッセージバッファ１５４に送るかが判明し、したがって決定ユニットはこのプロセスに影響するか制御することになる。
【００８０】
ＦＩＦＯバッファ１３０のサイズは、システムバスのバンド幅およびテストストリングの最大数、例えば、入ってきたメッセージまたはそのチャンクをどのような速度で比較してシステムメモリ内に転送するかによる。ＦＩＦＯバッファ１３０のサイズは、優先度決定が完了する前にバッファされる受信したメッセージの量に影響する。１つの実施形態では、２個のＦＩＦＯバッファ１３０および１４０は、単一のＦＩＦＯバッファの一部として、それぞれの長さを定義するのに使用される２個のポインタと一緒に設ければよい。このようにして、バッファ１３０および１４０の長さは、システムの動作を最適化するために、（例えば、ステートマシンにより）動的に制御されてもよい。
【００８１】
したがって、システム１００において、使用される高優先度メッセージバッファ１５２は、標準バッファ１５４の代わりに、高優先度メッセージを記憶するように選択される。使用するインタラプトは、ＣＰＵの高優先度メッセージのような受信を知らせるのに使用されてもよい。
【００８２】
図５は、図２に対応する概略図であるが、図４のシステムに関係する。記述における重複を避けるため、これまで説明した要素は、図５においても同様の参照番号で示される。
【００８３】
ＦＩＦＯバッファ１３０および１４０は、単一の組み合わされたＦＩＦＯバッファとして、互いに横に並んで示される。メモリ１０６は、図４に示した要素に加えて、図２の要素２０、２２および２４を有するように示される。
【００８４】
図１と図２の間および図４と図５の間で、２つの図の一方に示された要素が他方では示されていないのは、記載を簡単にするためである。しかしながら、もちろんそれぞれの場合で２つの図は一緒に考慮されると理解されるべきである。
【００８５】
本発明の実施形態は、例えばＣＰＵ２のようなプロセッサへの信号を早期にインタラプトできるように、例えばコントローラ４または１０４のようなコントローラを使用する可能性を有していてもよい。すなわち、コントローラは、メッセージの受信開始をプロセッサに知らせるように動作する。その場合、プロセッサは、そのような信号に応じて、少なくともその受信の間部分的にメッセージに応答する準備を行うように動作可能であってもよい。
【００８６】
このようにして、メッセージが受信される間の時間は、例えばアプリケーションに依存するが数ｍｓから数十ｍｓの長さであり、プロセッサがそのような応答を準備する上で有効に使用されてもよい。例えば、６４バイトのフレーム（メッセージ）は、（システムに応じて）受信に５ｍｓから５０ｍｓ程度の時間を要する。この時間は、例えば実時間のアプリケーションで、プロセッサにより有効に使用されてもよい。
【００８７】
応答は、例えば、応答メッセージまたは応答信号の出力のようなほかの応答であってもよい。コントローラは、応答の早い時期（応答の開始であると考えることができる）で、そのような信号がプロセッサに送られるべきか決定するように動作可能であってもよく、プロセッサはある（例えば重要な）メッセージに対するそのような信号を受けるだけである。
【００８８】
ここに記載した実施形態は、フレキシブルなメッセージのフィルタリングを提供して、入ってきたメッセージのＣＰＵにより処理される数を低減する。このような実施形態は、フレキシブルなフィルタ長、（比較ストリングおよび／またはマスクストリングと）比較される受信メッセージの部分または片のフレキシビリティ、効率的なメモリの使用、選択されるマスク／フィルタ対象の使用、および優先度が付けられたメッセージの効率的な取扱（高バス負荷に起因するメッセージの消失が無い）を、コストの点で効率的な方法で可能にする。
【００８９】
ステートメント１：主処理ユニットでの応答の必要無しに、通信ネットワークから受信したメッセージをフィルタする方法が開示されている。ビットストリームが受信される間、メッセージは比較ビットストリームおよびマスクビットストリームと比較される。結果が一致するまで、所定のビット数は比較されず、メッセージビットストリーム、比較ビットストリームおよびマスクビットストリームの終了にはならず、比較は継続する。
【００９０】
ステートメント２：比較およびマスクのストリングサイズが利用可能なメモリサイズによってのみ制限され、メッセージの固定片の代わりに完全なメッセージストリングをカバーできる方法（ステートメント１を参照）が開示されている。
【００９１】
ステートメント３：比較ビットストリームおよびマスクビットストリームが、固定メモリバッファの代わりにシステムメモリから得られる方法（ステートメント１を参照）が開示されている。この方法は、メモリ資源のフレキシブルな割り当てを可能にする。
【００９２】
ステートメント４：信号が、比較ビットストリームまたはマスクビットストリームがシステムメモリから得られたことを示し、メッセージ転送のバス参加者に通常割り当てられるよりも、システムメモリのアービトレーションにおける比較方法の一時的なより高い優先度を可能にする。
【００９３】
ステートメント５：比較の完了で、
・一致の場合のメッセージのシステムへの送信、
・不一致の場合のメッセージのシステムへの送信、
・一致の場合のメッセージの無視、
・不一致の場合のメッセージの無視、
・一致の場合のシステムメモリから通信ネットワークへの所定のメッセージの送信、
・不一致の場合のシステムメモリから通信ネットワークへの所定のメッセージの送信、または
・一致の場合の標準バッファの代わりの専用メモリへのメッセージの送信、のうちの１つ以上のユーザ定義の動作が引き起こされる方法（ステートメント１を参照）が開示されている。
【００９４】
ステートメント６：入ってきたビットストリームは、入ってきたメッセージが高優先度であると決定されるまで、小さなＦＩＦＯ内に記憶される、優先度を有するメッセージの特別な取扱方法が開示されている。高優先度の場合、ＦＩＦＯ内容は高優先度メッセージのために予約された所定のバッファ位置に送信され、所定のインタラプトが発生される。高優先度でない場合、メッセージは標準のバッファ位置に送信され、標準の優先度のインタラプトが発生される。
【００９５】
以下、実施形態に関し、更に以下の付記を開示する。
（付記１）
受信したメッセージを取り扱う装置であって、
プロセッサの代わりに、受信中に、オンザフライで部分ごとに受信メッセージを解釈およびスクリーニングするように動作し、前記スクリーニングを通過させると決定された受信メッセージを、処理のために前記プロセッサに提供する通信インターフェース・コントローラを備える装置。
（付記２）
前記プロセッサを備える付記１記載の装置。
（付記３）
受信したメッセージのそれぞれについて、前記コントローラは、前記スクリーニング中に、前記メッセージのユーザが選択したビットを、テストストリングの対応するビットと比較し、前記メッセージが前記比較に基づいて前記スクリーニングを通過させるか決定する付記１または２記載の装置。
（付記４）
前記比較を実行する時、前記コントローラは、前記テストストリングと共にマスクストリングを使用して、前記比較からの前記テストストリングの特定のビットをマスクするように動作する付記３記載の装置。
（付記５）
前記コントローラは、１つ以上の前記テストストリングおよび／または前記マスクストリングを記憶する第１メモリを備える付記３または４記載の装置。
（付記６）
ユーザが前記第１メモリ内に所望のストリングを記憶させることができる付記５記載の装置。
（付記７）
前記コントローラは、前記記憶されたテストリングに対応し、前記第１メモリに記憶された前記テストリングを参照するための構成セットアップを記憶する第２メモリを備える付記５または６記載の装置。
（付記８）
前記第１および第２メモリは、同一メモリの一部である付記７記載の装置。
（付記９）
前記コントローラは、前記スクリーニングを実行するために、記憶された前記構成セットアップを使用して、前記第１メモリから前記記憶された対応するテストリングを取り出すように構成されている付記７または８記載の装置。
（付記１０）
前記コントローラは、記憶された前記テストストリングおよび／または前記マスクストリングのいずれの組を、受信したメッセージと比較するかを決定するため、記憶された前記構成セットアップを使用するように構成されている付記７から９のいずれか記載の装置。
（付記１１）
ユーザが所望のストリングを前記第１メモリに、対応する構成セットアップを前記第２メモリに記憶可能に構成されており、前記コントローラは、前記受信したメッセージの所望のビットを、１つ以上の所望の前記テストストリングおよび／または前記マスクストリングと比較する付記７から１０のいずれか記載の装置。
（付記１２）
前記コントローラは、受信したメッセージのそれぞれについて、一連のステージで前記比較を実行し、各ステージは、受信したメッセージの一部を前記テストストリングおよび／または前記マスクストリングの対応部分と比較することを備える付記３から１１のいずれか記載の装置。
（付記１３）
前記コントローラは、ＦＩＦＯバッファを備え、関係するメッセージの受信の間前記ステージの処理を順番に実行するように構成され、連続したステージは特定の受信したメッセージのそれぞれの部分に対して前記ＦＩＦＯバッファ内に連続して受信するように動作する付記１２記載の装置。
（付記１４）
付記１２および１３のうちの付記７を引用する装置であって、前記コントローラは、前記ステージのぞれぞれで、前記記憶した構成セットアップにより指示された通りに、関係する受信したメッセージの前記部分を、記憶した前記テストストリングおよび／または前記マスクストリングのそれぞれ、または前記テストストリングおよび／または前記マスクストリングの組のそれぞれの対応部分と比較するように構成されている装置。
（付記１５）
前記コントローラは、前記スクリーニングに応じて、受信したメッセージが第１優先度のものであるか、第２優先度のものであるか、を決定するように動作し、前記第１優先度は前記第２優先度より優先度が高い付記１から１４のいずれか記載の装置。
（付記１６）
前記コントローラは、第１および第２メッセージバッファを備え、前記第１優先度を有すると決定されたメッセージを前記第１メッセージバッファに、前記第２優先度を有すると決定されたメッセージを前記第２メッセージバッファに、記憶するように構成され、前記第１バッファは前記第１優先度のメッセージ用に予約されている付記１５記載の装置。
（付記１７）
前記コントローラは、前記第１優先度のメッセージの受信を、前記プロセッサに知らせるように構成されている付記１５または１６記載の装置。
（付記１８）
付記１５から１７のいずれかのうち付記１３を引用する装置であって、前記ＦＩＦＯバッファは、第１ＦＩＦＯバッファであり、前記コントローラは、関係する前記メッセージが第１優先度のものであるかまたは第２優先度のものであるの決定が完了する間、特定の受信したメッセージのスクリーニングされる部分を保持する第２ＦＩＦＯバッファを有し、前記スクリーニングされる部分は、前記第１ＦＩＦＯバッファに保持されている間前記比較に使用される装置。
（付記１９）
前記第１および第２ＦＩＦＯバッファは、単一ＦＩＦＯバッファの一部であり、前記コントローラは、前記単一ＦＩＦＯバッファ内の前記第１および第２ＦＩＦＯバッファの長さを動的に制御するように構成されている付記１８記載の装置。
（付記２０）
前記コントローラは、前記スクリーニングを通過させると決定したメッセージについて、所定の応答メッセージを送信する付記１から１９のいずれか記載の装置。
（付記２１）
前記プロセッサを備え、
前記コントローラは、前記プロセッサに、前記メッセージの受信開始を知らせるように構成され、
前記プロセッサは、前記受信開始を知らせる信号に応じて、前記受信中の少なくとも部分的に、前記メッセージに対する応答を準備するように構成されている付記１から２０のいずれか記載の装置。
（付記２２）
前記コントローラは、ハードウエアとして実現されている付記１から２１のいずれか記載の装置。
（付記２３）
付記１から２２のいずれか記載の装置を備えるマイクロコントローラ。
（付記２４）
受信したメッセージを取り扱う方法であって、
プロセッサの代わりに、受信中に、オンザフライで部分ごとに受信メッセージを解釈およびスクリーニングし、前記スクリーニングを通過させると決定された受信メッセージを、処理のために前記プロセッサに提供する方法。
【符号の説明】
【００９６】
２    ＣＰＵ
４    ＭＡＣ(media access controller)
６    ＲＡＭ
１２    比較器
２０    記述テーブル
２２ｉ    ｉ番目マスク
２４ｎ    ｎ番目ストリング
３２    マスク
３４    比較ストリング
【図１】
0005581995.tif 000002
【図２】
0005581995.tif 000003
【図３】
0005581995.tif 000004
【図４】
0005581995.tif 000005
【図５】
0005581995.tif 000006