(57)【要約】      （修正有）【課題】複数の通信インターフェースのためのゲートウェイユニットをハードウェアで提供する。【解決手段】プロセッサユニット８及びデータメモリ１０が接続可能なバスシステム６と、データ転送ユニット２０（ネットワークプロセッサと）、の間に配置するためのインタフェースユニット４が記載される。インタフェースユニット４は、アプリケーション１２ａ、１２ｂ、１２ｃとデータ転送ユニット２０との間で予め合意された識別子（ｃｈｉｄ）に従って、データメモリ１０への直接メモリアクセスする。【選択図】図１
2015207288.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサユニット（８）およびデータメモリ（１０）が接続可能なバスシステム（６）と、データ転送ユニット（２０）との間に配置するためのインタフェースユニット（４）において、
前記インタフェースユニット（４）は、アプリケーション（１２）と前記データ転送ユニット（２０）との間で予め合意された識別子（ｃｈｉｄ）に従って、前記データメモリ（１０）への直接メモリアクセスを実行することを特徴とする、インタフェースユニット（４）。
【請求項２】
前記データ転送ユニット（２０）は、ネットワークプロセッサである、請求項１に記載のインタフェースユニット（４）。
【請求項３】
前記データメモリ（１０）から前記データ転送ユニット（２０）への、データセグメント（５２；５４）とデータブロック（５６）との一方または双方の送信のために、前記インタフェースユニット（４）は、入力記述子プール（３４）の記述子（６２；６４）から、前記データメモリ（１０）内での前記データセグメント（５２；５４）のメモリ領域アドレス、および、前記合意された識別子（ｃｈｉｄ）を確認し、
前記インタフェースユニット（４）は、前記直接メモリアクセスを利用して前記データメモリ（１０）からデータセグメント（５２；５４）を読み出し、
前記データセグメント（５２；５４）は、対応するヘッダ、すなわち、前記合意された識別子（ｃｈｉｄ）を含むヘッダと共に、前記データ転送ユニット（２０）に提供される、請求項１、または２に記載のインタフェースユニット（４）。
【請求項４】
前記データセグメント（５２；５４）は、データブロック（５６）の一部であり、
前記入力記述子プール（３４）の前記記述子（６２；６４）は、前記データブロック（５６）内での前記データセグメント（５２；５４）の位置を決定する情報と、前記データセグメント（５２；５４）の送信準備態勢を示す情報とを含む、請求項３に記載のインタフェースユニット（４）。
【請求項５】
前記データ転送ユニット（２０）から前記データメモリ（１０）への、データセグメント（５２；５４）とデータブロック（５６）との一方または双方の受信のために、前記インタフェースユニット（４）は、出力記述子プール（９０）の記述子（１０８；１１０）に、前記合意された識別子（ｃｈｉｄ）と、データブロック（５６）内での前記データセグメント（５２；５４）の位置を決定する情報とを書き込む、請求項１、または２に記載のインタフェースユニット（４）。
【請求項６】
前記インタフェースユニット（４）は、直接メモリアクセスを利用して前記データメモリ（１０）にデータセグメント（５２；５４）を書き込み、
前記インタフェースユニット（４）は、前記データメモリ（１０）への前記データセグメント（５２；５４）の前記書き込みの後で、対応する前記記述子（１０８；１１０）に、前記データメモリ（１０）への書き込みアクセスが行われたことを示す情報を格納する、請求項５に記載のインタフェースユニット（４）。
【請求項７】
前記インタフェースユニット（４）は、前記データメモリ（１０）への前記直接メモリアクセスのために、バスマスタとして前記バスシステム（６）にアクセスし、
前記インタフェースユニット（４）は、入力記述子プール（３４）と出力記述子プール（９０）との一方または双方への書き込みアクセスおよび読み出しアクセスのために、バススレーブとして前記バスシステム（６）にアクセスする、請求項１〜６のいずれか１項に記載のインタフェースユニット（４）。
【請求項８】
請求項１〜６のいずれか１項に記載のインタフェースユニット（４）と、データ転送ユニット（２０）とを備える通信ユニット（１４）であって、
前記通信ユニット（１４）では、前記インタフェースユニット（４）の他に、さらなる別の通信インタフェース（２２）が前記データ転送ユニット（２０）に接続され、
複数の前記通信インタフェース（２２）は、様々な種類のネットワークと、様々な部分ネットワークとの一方または双方に割り当てられる、通信ユニット（１４）。
【請求項９】
前記通信ユニット（１４）は、ゲートウェイユニットまたはパーソナルコンピュータである、請求項８に記載の通信ユニット（１４）。
【請求項１０】
前記ネットワークは、ＣＡＮ（Controller  Area  Network）、ＦｌｅｘＲａｙ、またはイーサネット（登録商標）である、請求項８、または９に記載の通信ユニット（１４）。
【請求項１１】
請求項１〜７のいずれか１項に記載のインタフェースユニット（４）を駆動する方法であって、
データメモリ（１０）からデータ転送ユニット（２０）へのデータセグメント（５２；５４）の送信のために、アプリケーション（１２）によって、入力記述子プール（３４）の記述子（６２）の１つに、前記データメモリ（１０）内での前記データセグメント（５２；５４）のメモリ領域アドレスと、合意された識別子（ｃｈｉｄ）とが書き込まれる、方法。
【請求項１２】
請求項１〜７のいずれか１項に記載のインタフェース（４）を駆動する方法であって、
データ転送ユニット（２０）からデータメモリ（１０）へのデータセグメント（５２；５４）の受信のために、アプリケーション（１２）によって、出力記述子プール（９０）の記述子（１０８；１１０）から、合意された識別子（ｃｈｉｄ）と、データブロック（５６）内での前記データセグメント（５２；５４）の位置を決定する情報とが読み出される、方法。
【請求項１３】
前記アプリケーション（１２）は、プロセッサユニット（８）を介して、前記入力記述子プール（３４）と出力記述子プール（９０）との一方または双方への前記読み出しアクセスと、前記入力記述子プール（３４）と前記出力記述子プール（９０）との一方または双方への書き込みアクセスとの一方または双方のために、バスマスタとしてバスシステム（６）にアクセスする、請求項１１、または１２に記載の方法。
【請求項１４】
コンピュータに、請求項８〜１０のいずれか１項に記載の方法を実行させるためのプログラム。
【請求項１５】
請求項８〜１０のいずれか１項に記載の方法を実行するためのプログラムが記録された、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば請求項１の上位概念に記載のインタフェースユニットなどの、インタフェースユニットに関する。
【背景技術】
【０００２】
バスシステム上に配置され、当該バスシステムを介して直接メモリアクセス（ＤＭＡ：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を実行するシステムが公知である。特に、バスシステム上の複数のいわゆるＤＭＡユニットによって、バスシステムへのアクセス競合が増加することが知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
様々な部分ネットワーク、または、例えばＣＡＮ（ｃｏｎｔｒｏｌｌｅｒ  ａｒｅａ  ｎｅｔｗｏｒｋ。コントローラエリアネットワーク）、ＦｌｅｘＲａｙ、および／またはイーサネット（登録商標）のような様々な種類のネットワークのネットワークトラフィックを監視するために、例えばパーソナルコンピュータでは、管理すべき複数のインタフェースカードが必要となる。
【０００４】
様々な部分ネットワーク間、または、例えばＣＡＮ（ｃｏｎｔｒｏｌｌｅｒ  ａｒｅａ  ｎｅｔｗｏｒｋ、コントローラエリアネットワーク）、ＦｌｅｘＲａｙ、および／またはイーサネットのような様々な種類のネットワーク間のゲートウェイユニットは、部分ネットワーク間の所望の通信に対して常に調整される必要があり、これにより、対応するロジック部がソフトウェアで実現される。
【課題を解決するための手段】
【０００５】
本発明の根底にある問題は、請求項１に記載のインタフェースユニットによって解決される。有利な発展形態は従属請求項に示される。本発明にとって重要な特徴は、以下の明細書の記載および図面に示される。上記特徴は、単独でもまたは様々な組み合わせにおいても、本発明にとって重要となりうるが、そのことについては再度明示的に指摘されない。
【０００６】
インタフェースユニットが、アプリケーションとデータ転送ユニットとの間で予め合意された識別子に従ってデータメモリへの直接メモリアクセスを実行することによって、バスシステムとデータ転送ユニットとの間にインタフェースユニットのみ設けるということが可能であり、当該インタフェースユニットを利用して、様々な部分ネットワークまたは様々な種類のネットワークとの通信が確立される。
【０００７】
本発明のさらなる別の特徴、適用の可能性、および利点は、図面に示された本発明の実施例についての以下の明細書の記載から明らかとなろう。記述されまたは示される全ての特徴は、それ自体が、または、任意の組み合わせにおいて、特許請求項での当該特徴についての要約とは独立して、または、明細書もしくは図面での当該特徴についての記述もしくは記載とは独立して、本発明の主題となる。機能的に等価の値または特徴のために、全ての図面において、実施形態が異なる場合にも同じ符号が利用される。以下では、図面を参照しながら本発明の実施形態の例を解説する。
【図面の簡単な説明】
【０００８】
【図１】通信システムの概略図を示す。
【図２】インタフェースユニットの一部分の概略図を示す。
【図３】データセグメントの送信を概略的に示す。
【図４】インタフェースユニットのさらなる別の部分の概略図を示す。
【図５】データセグメントの受信を概略的に示す。
【発明を実施するための形態】
【０００９】
図１は、通信システム２の概略図を示している。インタフェースユニット４が、バスシステム６上に配置されている。バスシステム６は、例えば、ＰＣＩバス、または、マイクロコントローラの専用バスであってもよい。バスシステム６には、プロセッサユニット８と、データメモリ１０とが接続されている。プロセッサユニット８では、複数のアプリケーション１２ａ、１２ｂおよび１２ｃが実行可能である。プロセッサユニット８と、データメモリ１０と、バスシステム６とが、例えばマイクロコントローラの形態によるゲートウェイとしてまたはパーソナルコンピュータとして構成可能な通信ユニット１４を形成する。通信ユニット１４は、インタフェースユニット４、および／または、データ転送ユニット２０を含んでいてもよい。
【００１０】
インタフェースユニット４はデータ転送ユニット２０と接続され、これにより、データ転送ユニット２０とバスシステム６との間に配置可能である。データ転送ユニット２０は、ネットワークプロセッサとも呼ばれる。インタフェースユニット４の他に、さらなる別の通信インタフェース２２ａ、２２ｂ、および２２ｃがデータ転送ユニット２０に接続されている。通信インタフェース２２は、様々な種類のネットワーク、例えばＣＡＮ、ＦｌｅｘＲａｙ、またはイーサネットに割り当てられてもよく、および／または、上記種類のネットワークの様々な部分ネットワークに割り当てられてもよい。当然のことながら、対応するインタフェースユニット２２が存在しうるさらなる別の種類のネットワークも考えられる。通信システム２の稼働前に、アプリケーション１２ａ〜１２ｃのうちの１つとデータ転送ユニット２０との間で、１つ以上のデータセグメントに有効な識別子ｃｈｉｄが合意される。インタフェースユニット４は、通信システム２の駆動中に、アプリケーション１２ａ、１２ｂ、１２ｃとデータ転送ユニット２０との間で予め合意された識別子ｃｈｉｄに従って、バスシステム６を介して、データメモリ１０への直接メモリアクセスを実行する。
【００１１】
インタフェースユニット４とデータ転送ユニット２０とは好適にハードウェアで実現されるため、１つ以上のデータセグメントのための予め合意された識別子によって、複数の通信インタフェース２２についてのインタフェースユニット４による直接メモリアクセスのための、バスシステム６上での調停を極めて簡略化することが達成可能であり、これにより、より迅速かつ効率的にバスシステム６を介してデータ処理を行うことが可能である。有利に、複数の通信インタフェース２２が、インタフェースユニット４に対して、したがって、通信ユニット１４に対してマッピングされうる。予め合意される識別子ｃｈｉｄは、チャネル識別子（ｃｈａｎｎｅｌ  ｉｄｅｎｔｉｆｉｅｒ）とも呼ばれる。これに関連して、データ転送ユニット２０の利点も明らかとなろう。すなわち、データ転送ユニット２０は、決定論的な処理工程を含むことが可能であり、したがって、ハードウェアで実現可能である。
【００１２】
図２は、インタフェースユニット４の一部分２４を概略的に示している。ブロック２６内には、ブロック２８と、出力ユニット３０と、ブロック３２とが示されている。さらに、入力記述子プール３４が示されている。データメモリ１０からデータ転送ユニット２０へとデータセグメントを送信するために、入力記述子プール３４の記述子から、データメモリ１０内でのデータセグメントのメモリ領域アドレスと、合意された識別子ｃｈｉｄとが確認され、ブロック２８に渡される。インタフェースユニット４またはブロック２８は、矢印２７に従って、直接メモリアクセスの形態で、バスシステム６を介してデータメモリ１０からデータセグメントを読み出し、このデータセグメントを矢印３８に従って、出力ユニット３０の待ち行列４０に入れる。入力記述子プール内の記述子は、上記データセグメントおよび合意された識別子のメモリ領域アドレス、並びに、他の値を含んでいる。この記述子が、ブロック３２からブロック２８に渡される。対応して、この記述子を利用して、ブロック２８によって、矢印２７に従って読み出された上記データセグメントに合うヘッダが生成され、このヘッダは、矢印４２に従って待ち行列４４に入れられる。ブロック４６は、矢印４８に従って、データ転送ユニット２０のために合ったデータ転送ユニットデータセグメントであって、待ち行列４０のデータセグメントと、当該データセグメントに合った待ち行列４４のヘッダとを含む上記データ転送ユニットデータセグメントを、生成する。ヘッダは、出力ユニットを識別する情報ｄｅｖｉｄ（装置識別（ｄｅｖｉｃｅ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）とも呼ばれる）を含んでもよい。したがって、待ち行列４０からのデータセグメントが、合意された識別子ｃｈｉｄを含む対応するヘッダと共に、データ転送ユニットデータセグメントとして、データ転送ユニット２０に提供される。
【００１３】
矢印５０に従って、入力記述子プール３４は、プロセッサユニット８によって読み出しおよび書き込み可能である。矢印５０に従った、入力記述子プール３４への書き込みアクセスおよび読み出しアクセスのために、インタフェースユニット４は、バスシステム６上でバススレーブとして機能する。矢印２７に従った、データメモリ１０への読み出し直接メモリアクセスのためには、インタフェースユニット４のブロック２６は、バスマスタとしてバスシステム６にアクセスする。したがって、バスシステム６は、マルチマスタバス（Ｍｕｌｔｉ−Ｍｕｓｔｅｒ−Ｂｕｓ）として構成される。当然のことながら、バスシステム６は、他のバス伝達方法を有してまたはサポートしてもよく、マルチマスタバスには限定されない。
【００１４】
図３と図５は、インタフェースユニット４と、プロセッサユニット８およびデータメモリ１０を備える通信ユニット１４との間の相互作用の例を示している。
【００１５】
図３は、データメモリ１０からのデータセグメントの送信を示している。データメモリ１０の一部分内に、データブロック５６の第１のデータセグメント５２および最後のデータセグメント５４が示されている。以下では、複数のデータセグメントを有するデータブロック５６の送信について記述する。データセグメント５２〜５４は、データブロック５６の一部である。データセグメント５２〜５４それぞれのために、入力記述子プール３４には、対応する記述子６２〜６４が格納されている。通信ユニット１４は、プロセッサユニット８上で実行される対応するアプリケーション１２による各データセグメント５２〜５４の送信のために、記述子６２〜６４を格納する。これに加えて、通信ユニット１４は、データメモリ１０内でのデータセグメント５２、５４のメモリ領域アドレスと、合意された識別子ｃｈｉｄとを格納する。さらに、記述子６２〜６４には、データブロック２６内で各データセグメント５２〜５４がどの位置にあるのかが格納される。例えば、記述子６２〜６４には、データセグメント５２〜５４が、データセグメント５２のような第１のデータセグメントであるかどうかが格納される。例えば、記述子６２〜６４には、データセグメント５２〜５４が、データセグメント５４のような最後のデータセグメントであるかどうかが格納される。さらに、記述子５２〜５４の各１つに、データセグメント５２〜５４の大きさが格納される。さらに、データセグメント５２〜５４のメモリ領域アドレスまたはメモリ開始アドレスも格納されうる。入力記述子プール３４への書き込みアクセスは、矢印６６に従って示される。
【００１６】
プロセッサユニット８上で実行されるアプリケーション１２が、データブロック５６を送信した場合には、アプリケーション１２は、このデータブロック５６をデータメモリ１０に格納する。その後、矢印６６に従って、メモリ領域と合意された識別子ｃｈｉｄとに関するデータブロック５６に必要な情報が、入力記述子プール３４に書き込まれる。さらに、各記述子６２〜６４内で、各データセグメント５２〜５４の送信準備態勢がシグナリングされる。
【００１７】
各セグメント５２〜５４が、対応する記述子６２〜６４を介して、送信準備が整っているとしてマーク付けされる場合には、インタフェースユニット４は、矢印６８に従って、矢印２６に係るデータメモリ１０への直接メモリアクセスを実行することが可能である。対応して、記述子６２から始めて記述子６４まで、矢印７０に従って全データブロック５６がデータメモリ１０から読み出される。その際に、データブロック５６の読み出しは、セグメント単位または記述子単位で行われ、これにより有利に、アプリケーション１２によりデータブロック５６を充填することと平行して、インタフェースユニット４により同一データブロック５６を空にすることが可能である。矢印２６に従った、データセグメント５２、５４の読み出しおよび転送の後で、各記述子６２〜６４内の送信準備態勢のマークが、インタフェースユニット４によって消去される。送信準備態勢は、各記述子６２〜６４の送信準備態勢のマークを監視することで、通信ユニット１４によって監視されてもよい。セグメント単位での処理、および、記述子プール３４によって、データメモリ１０内に存在するデータセグメントまたはデータブロックの処理が簡略化され、ハードウェアによるインタフェースユニット４の実現と、データセグメント５２〜５４の送信のための迅速な処理とが可能になる。
【００１８】
図４は、インタフェースユニット４の一部分７４を概略的に示している。ブロック７６では、入力ユニット８０内で、矢印２８に従って、データブロック８４に、データ転送ユニットデータセグメントが、データ転送ユニット２０から供給される。矢印２８に係るデータ転送ユニットデータセグメントはヘッダ情報を含み、このヘッダ情報は、入力ユニット８０の待ち行列８６に入れられ、合意された識別子ｃｈｉｄを含んでいる。本明細書の意味におけるデータセグメント、すなわち、データメモリ１０に格納すべきデータという形でのデータセグメントは、ブロック８４によって待ち行列８８に入れられる。出力記述子プール９０は、矢印９４に係る待ち行列８６からのヘッダ情報に従って、ブロック９２によって充填される。その際に、受信されたヘッダからの合意された識別子ｃｈｉｄが、記述子プール９０に供給される。さらに、待ち行列８６からのヘッダに基づいて、データブロック５６内でのデータセグメント５２、５４の位置を決定する情報が、記述子プール９０の対応する記述子へと書き込まれる。ブロック９６は、矢印９８に従って、待ち行列８８からのデータセグメントを獲得する。
【００１９】
記述子には、対応するアプリケーション２０または通信ユニット１４によって、矢印１００に従って、データメモリ１０内の書き込むべき領域を示すメモリ領域アドレスが充填される。出力記述子プール９０からの記述子を利用して、ブロック９６は、矢印１０２に従って、直接メモリアクセスを利用して、データメモリ１０にアクセスし、データセグメント５２、５４を、記述子により提供されたメモリ領域に書き込むことが可能である。
【００２０】
ブロック９２は、出力記述子プール９０を管理し、矢印１０４に従って、データメモリ１０内の空きメモリ領域を示す空の記述子が存在することを、入力ユニット８０にシグナリングする。
【００２１】
インタフェースユニット４またはブロック７６またはブロック９６は、矢印１０２に係る、データメモリ１０への直接メモリアクセスの形態による、データセグメント５２、５４の書き込みアクセスについては、バスマスタとしてバスシステム６にアクセスする。出力記述子プール９０への書き込みアクセスおよび読み出しアクセスについては、インタフェースユニット４またはブロック７６は、矢印１００に従って、バススレーブとしてバスシステム６にアクセスする。
【００２２】
ブロック９６は、記述子プール９０内で、データメモリ１０内の空きメモリ領域を示す記述子が存在するかどうかを検査する。データメモリ１０内の空きメモリ領域を示す記述子が存在する場合には、ブロック９２は、矢印１０４に従って、ブロック８０内、および／または、示されない形態によるデータ転送ユニット２０内で、データメモリ１０の受信体勢が整っていることをシグナリングする。
【００２３】
矢印２８に従って、データ転送ユニットデータセグメントが、データ転送ユニット２０から受信される。データ転送ユニットデータセグメントのペイロード（Ｐａｙｌｏａｄ）は、データセグメント５２、５４として、待ち行列８８およびブロック９６を介して、適切な記述子を利用してデータメモリ１０へと転送される。この書き込みアクセスは、対応する記述子に記録される。対応するアプリケーション１２は、データメモリ１０への書き込みアクセスがそれについて行われる記述子であって、データメモリ１０内のどのデータ領域またはデータメモリ領域が充填されたのかについて情報を含む上記記述子を介して、データメモリ１０にアクセスし、データセグメント５２、５４を読み出すことが可能である。さらに、記述子は、データセグメント５２、５４の対応する長さと、予め合意された識別子ｃｈｉｄとを含んでいる。アプリケーション１２が、データメモリ１０からデータセグメント５２、５４を読み出した後で、アプリケーション１２は、記述子内で、データセグメント５２、５４に対応するメモリ領域が空いているとマーク付けしてもよく、または、対応する記述子を消去してもよい。ブロック９６が、データブロック５６の最後のデータセグメント５４を検出し次第、割り込み情報が生成される。この割り込み情報によって、データセグメント５２、５４に対応する適切なアプリケーション１２が作動される。当然のことながら、複数のこのような割り込み情報を収集し、特定数に達した際に、アプリケーション１２またはプロセッサユニット８に割り込みを送ってもよい。記述子プール３４および記述子プール９０は、環状バッファとして実現可能であり、インタフェースユニット４によっても、プロセッサユニット８によっても読み出しおよび書き込み可能である。
【００２４】
図５は、データ転送ユニット２０からデータメモリ１０への少なくとも１つのデータセグメント５２、５４の受信のための通信を、概略的かつ例示的に示している。データブロック５６は、第１のデータセグメント５２と、最後のデータセグメント５４と、その間に存在するさらなる別のデータセグメントとを含んでいる。
【００２５】
通信ユニット１４は、データセグメントを受信するために、矢印１０６に従って、記述子１０８〜１１０を記述子プール９０に書き込み、その際に、記述子は、データセグメント５２〜５４のための直近でまだ空のメモリ領域のメモリアドレスを１つずつ含んでいる。インタフェースユニット４は、記述子プール９０を監視し、データメモリ１０内に空きメモリ領域が存在する場合にはユニット８０にシグナリングする。空きメモリ領域についてのシグナリングの後で、直接メモリアクセスが、矢印１１２に従って開始される。データセグメント５２〜５４の書き込みの後で、インタフェースユニット４によって、対応する記述子１０８〜１１０に書き込みアクセスが記録される。対応して、通信ユニット１４は、記述子１０８〜１１０から、対応するデータセグメント５２〜５４が既にデータメモリ１０に書き込まれたかが分かる。
【００２６】
図２および図３の入力記述子プール３４には、好適にアプリケーション１２によって、アドレスの降順に書き込まれ、その際に、最後のデータセグメント５４のための最後の記述子６４で始まって、第１のデータセグメント５２のための第１の記述子６２で終わる。インタフェースユニット４は、昇順に、第１の記述子６２から始めて最後の記述子６４まで、記述子６２〜６４を読み出す。
【００２７】
これに対して、ブロック９２は、図４の矢印２８に従ってデータセグメントが到着した際には、昇順に、第１の記述子１０８から始めて最後の記述子１１０で終えて、出力記述子プール９０を充填する。
【図１】
2015207288.tif 000003
【図２】
2015207288.tif 000004
【図３】
2015207288.tif 000005
【図４】
2015207288.tif 000006
【図５】
2015207288.tif 000007