(57)【特許請求の範囲】
【請求項１】
データのＩＤごとに記憶領域が分割された記憶手段から、送信すべきデータを記憶した記憶領域を検索し、検索で抽出されたデータの送信を行う通信装置であって、
前記記憶手段の記憶領域ごとに設けられ、前記記憶領域のデータが更新されているか否かを示す第１フラグと、
前記第１フラグを所定数ごとにまとめたグループごとに設けられ、前記グループにおける第１フラグの少なくとも１つのデータが更新された状態を示しているときに、データの更新状態を示す第２フラグと、
前記第２フラグを検索してから対応する第１フラグを検索することで、送信すべきデータを記憶した記憶領域から送信すべきデータを抽出する検索処理を行い、抽出した送信すべきデータをメッセージボックスにセットする送信データセット処理部と、
前記メッセージボックスにセットされた送信すべきデータを送信する送信処理部と、を有し、
前記送信データセット処理部は、所定周期で前記検索処理を行うが、前記メッセージボックスに送信すべきデータを格納する空き領域がない場合には前記検索処理を行わないことを特徴とする通信装置。
【請求項２】
前記検索制御手段は、データの更新状態を示す第２フラグを検索してから対応する第１フラグをデータの送信順に検索して、前記第１フラグがデータ更新状態を表し、かつ最も先に送信を行うべきデータを記憶した前記記憶手段の記憶領域を検出するハードウェアを用いて検索を行うことを特徴とする請求項１記載の通信装置。
【請求項３】
前記第１フラグ及び前記第２フラグを記憶するフラグ記憶部と、
送信すべきデータを前記記憶手段に記憶させた場合に、対応する前記第１フラグと前記第２フラグとを記憶する前記フラグ記憶部の記憶領域を検出して、検出した記憶領域の前記第１フラグのフラグ状態を変更すると共に、検出した記憶領域の前記第２フラグのフラグ状態を変更する必要がある場合に変更するフラグ変更処理部とをさらに有し、
前記フラグ記憶部の前記第１フラグを記憶する記憶領域は、マトリクス状に形成されると共に、該マトリクス状に形成された記憶領域の列数は、２ｎ（ｎは任意の自然数）であり、
前記フラグ変更処理部は、２進数で表された前記送信すべきデータのＩＤ番号が前記フラグ記憶部の前記第１フラグと前記２フラグとを記憶させる記憶領域を示していることを利用して、フラグ状態を変更する前記フラグ記憶部の前記第１フラグと前記第２フラグの記憶領域を検出することを特徴とする請求項１又は２記載の通信装置。
【請求項４】
複数の通信チャネル間でのフレームデータの転送制御を行うゲートウェイ装置であって、
通信チャネルから受信したフレームデータを転送する通信チャネルを検索するルーティング処理部と、
前記ルーティング処理部で処理されたフレームデータを記憶する、フレームデータのＩＤごとに記憶領域が分割された送信バッファと、
前記送信バッファの記憶領域ごとに設けられ、前記記憶領域のデータが更新されているか否かを示す第１フラグと、前記第１フラグを所定数ごとにまとめたグループごとに設けられ、前記グループにおける第１フラグの少なくとも１つのデータが更新された状態を示しているときにデータの更新状態を示す第２フラグとを記憶するフラグ記憶部と、
前記ルーティング処理部で処理されたフレームデータを前記送信バッファに記憶すると共に、前記フラグ記憶部に記憶された第１フラグと第２フラグを更新するデータ記憶処理部と、
前記フラグ記憶部に記憶された第２フラグを検索してから対応する第１フラグを検索することで、前記送信バッファからフレームデータを抽出する検索処理を行い、抽出したフレームデータをメッセージボックスにセットする送信データセット処理部と、
前記メッセージボックスにセットされたフレームデータを通信チャネルに送信する送信処理部と、を有し、
前記送信データセット処理部は、所定周期で前記検索処理を行うが、前記メッセージボックスにフレームデータを格納する空き領域がない場合には前記検索処理を行わないことを特徴とするゲートウェイ装置。
【請求項５】
複数の通信チャネル間でのフレームデータの転送制御を行うゲートウェイ装置であって、
通信チャネルから受信したフレームデータを転送する通信チャネルを検索し、検索した通信チャネルに対応する送信ＦＩＦＯにフレームデータを記憶するルーティング処理部と、
前記送信ＦＩＦＯから読み出されたフレームデータを記憶する、フレームデータのＩＤごとに記憶領域が分割された送信バッファと、
前記送信バッファの記憶領域ごとに設けられ、前記記憶領域のデータが更新されているか否かを示す第１フラグと、前記第１フラグを所定数ごとにまとめたグループごとに設けられ、前記グループにおける第１フラグの少なくとも１つのデータが更新された状態を示しているときにデータの更新状態を示す第２フラグとを記憶するフラグ記憶部と、
前記送信ＦＩＦＯから読み出されたフレームデータを前記送信バッファに記憶するとともに、前記フラグ記憶部に記憶された第１フラグと第２フラグを更新するデータ記憶処理部と、
前記フラグ記憶部に記憶された第２フラグを検索してから対応する第１フラグを検索することで、前記送信バッファからフレームデータを抽出する検索処理を行い、抽出したフレームデータをメッセージボックスにセットする送信データセット処理部と、
前記メッセージボックスにセットされたフレームデータを通信チャネルに送信する送信処理部と、を有し、
前記送信データセット処理部は、所定周期で前記検索処理を行うが、前記メッセージボックスにフレームデータを格納する空き領域がない場合には前記検索処理を行わないことを特徴とするゲートウェイ装置。
【請求項６】
前記送信ＦＩＦＯに記憶されたフレームデータを読み出し、該読み出したフレームデータを、該フレームデータに付加されている付加情報に基づいて前記フレームデータの送信順を並び替える平準化処理を行ってから送信するフレームデータと、前記平準化処理を行わずに送信するフレームデータとに振り分ける振り分け処理部と、
前記平準化処理を行ってから送信するフレームデータを前記送信バッファに記憶させた後に、前記フレームデータを記憶させた送信バッファの記憶領域に応じて、前記フラグ記憶部の対応する前記第１フラグと前記第２フラグとを書き替える書き替え処理と、
前記平準化処理を行わずに送信するフレームデータを通信チャネルごとに用意されたメッセージボックスにセットする第１送信データセット処理と、前記ビット検索器に、前記フラグ記憶部に記憶された第２フラグを検索させてから対応する第１フラグを検索させ、前記ビット検索器から取得した情報に基づいて前記送信バッファからフレームデータを予め設定された送信順に取り出す前記平準化処理を行い、前記平準化処理後のフレームデータを前記メッセージボックスにセットする第２送信データセット処理とを有する前記送信データセット処理と、
を有することを特徴とする請求項４又は５記載のゲートウェイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファに格納されたフレームデータを検索する通信装置におけるデータ検索装置に関する。より詳細には、少なくとも２以上のバス間で転送されるフレームデータを中継するゲートウェイ装置に用いられるデータ検索装置に関する。
【背景技術】
【０００２】
少なくも２以上のバス間で転送されるフレームデータの中継を行うゲートウェイＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：電子制御ユニット）の中継手法として、フレームデータを受信した順序に従って中継する方法と、受信した順序には従わず、平準化を行って送信する方法とがある。
【０００３】
平準化とは、フレームデータの優先度や送信周期に関わらず均一に送信を行うことをいう。例えば、Ａ，Ｂ，Ｃ，Ａ，Ｄ，Ｅ，Ａ，Ｂ，Ｃ，Ａ，Ｄ，Ｅ・・・の順に連続してフレームデータを受信した場合、Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ａ，Ｂ，Ｃ，Ｄ，Ｅ・・・の順にフレームデータを並び替えて送信する。
【０００４】
フレームデータを平準化して送信する技術の１つとして、フレームデータを識別するＩＤ（ＩＤｅｎｔｉｆｉｅｒ  Ｎｕｍｂｅｒ）ごとにバッファを設けて、送信時にはこのバッファからフレームデータを送信順に読み出す技術が知られている。ＩＤは、フレームデータを送信するバス上のノード（例えば、ＥＣＵ）によって付与されるものであり、ＩＤによって送信元のノードやそのフレームデータの優先度などが判る。
【０００５】
ＩＤごとに分割されたバッファをＩＤ毎バッファと呼ぶ。また、ＩＤ毎バッファの各領域に対応して、各領域にデータが記録されているか否かを示すフラグがメモリに記録されている。
さらに、ＩＤ毎バッファは、中継するチャネルごとに設けられている。例えば、ゲートウェイＥＣＵが中継を担当するチャネル数が２チャネルであれば、ＩＤ毎バッファも２つ設けられている。
【０００６】
フレームデータの送信時には、ＩＤ毎バッファの各領域に対応して設けられたフラグに対して線形検索を行う。フラグの記録された（つまり、ＯＮ状態）ＩＤ毎バッファの領域にはフレームデータが格納されているので、フラグが記録されているＩＤ毎バッファの領域からフレームデータを読み出して送信する。
【０００７】
線形検索について図１（Ａ）を参照しながら説明する。線形検索では、フラグの検索は初回は先頭から行うが、次回以降は、前回検索が終了したバッファ領域の次のバッファ領域から行う。すなわち、１回目の検索で図１（Ａ）に示す上から７段目（ＩＤ１９２）の領域のフラグが記録されていることを検出すると、２回目の検索は８段目（ＩＤ２１６）から行う。また、検索がＩＤ毎バッファの最後の領域まで達すると、再度先頭に戻って検索を行う。検索を行った結果、最初に検索を開始した位置までフラグが記録されたバッファ領域がなければそこで検索を終了する。
【０００８】
特許文献１では、送信先を示すＩＤコードの優先順位を予め決めておくＲＡＭを設けて、データの送信完了後に、次に送信するデータが複数ある場合にはＲＡＭのＩＤコード優先順位から送信の優先順位を判定する技術を開示している。
【０００９】
特許文献２は、データ中継装置におけるデータ消失を防止することを目的としている。特許文献２では、受信するデータを一時保存するバッファを中継するデータの種類ごとに設けると共に、受信したデータの種別を識別しその種別に応じたバッファの書き込み先を指定するデータコントローラを設けている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−１５９５６８号公報
【特許文献２】特開２０００−２４４５４８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、ゲートウェイＥＣＵが中継するバス数が増加してくると、検索にかかる時間が増大し、ゲートウェイＥＣＵの中継性能が低下してしまうという課題がある。
例えば、図１（Ｂ）に示すようにＩＤ毎バッファが１００種類のＩＤを格納できるバッファであるとする。１００番目のバッファ領域に格納されたフレームデータを検索するためには、先頭のバッファ領域から検索を開始して１００回の検索を行わなければならない。従って、ゲートウェイＥＣＵの中継性能を維持できるようにするためには、高性能なＣＰＵを搭載するか、中継を行うバスの数を制限する必要がある。
また、特許文献１及び２にも、バッファに格納されたフレームデータの検索効率を改善するような技術の開示はない。
【００１２】
本発明は上記事情に鑑みてなされたものであり、バッファに記憶したフレームデータのデータ数が増加しても、フレームデータの検索を効率的に行うことができる通信装置及びゲートウェイ装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
かかる目的を達成するために本発明の通信装置は、データのＩＤごとに記憶領域が分割された記憶手段から、送信すべきデータを記憶した記憶領域を検索し、検索で抽出されたデータの送信を行う通信装置であって、前記記憶手段の記憶領域ごとに設けられ、前記記憶領域のデータが更新されているか否かを示す第１フラグと、前記第１フラグを所定数ごとにまとめたグループごとに設けられ、前記グループにおける第１フラグの少なくとも１つのデータが更新された状態を示しているときに、データの更新状態を示す第２フラグと、前記第２フラグを検索してから対応する第１フラグを検索することで、送信すべきデータを記憶した記憶領域から送信すべきデータを抽出する検索処理を行い、抽出した送信すべきデータをメッセージボックスにセットする送信データセット処理部と、前記メッセージボックスにセットされた送信すべきデータを送信する送信処理部と、を有し、
前記送信データセット処理部は、所定周期で前記検索処理を行うが、前記メッセージボックスに送信すべきデータを格納する空き領域がない場合には前記検索処理を行わないことを特徴としている。
本発明によれば、第１フラグを所定数ごとにまとめたグループごとに設けた第２フラグの検索を行ってから第１フラグの検索を行うので、検索するデータ数が増加してもフレームデータの検索を効率的に行うことができる。
また、メッセージボックスに空き領域がない場合には検索処理を行わないようにすることで、処理負荷をより軽減して送信データの送信遅れをより少なくすることが可能となる。また、メッセージボックスに送信データのセットができるようになった時点での最新のデータ状態に基づいて検索処理を行うことができるので、前回検索を行わなかった時点で更新されていなかったＩＤのデータが新たに更新された場合や、更新されていたＩＤの送信データがさらに上書き更新されるような場合にも、対応した検索処理が可能となる。
【００１４】
上記通信装置において、前記検索制御手段は、データの更新状態を示す第２フラグを検索してから対応する第１フラグをデータの送信順に検索して、前記第１フラグがデータ更新状態を表し、かつ最も先に送信を行うべきデータを記憶した前記記憶手段の記憶領域を検出するハードウェアを用いて検索を行うとよい。
従って、フレームデータの検索をハードウェアを用いて効率的に行うことができる。
【００１５】
上記通信装置において、前記第１フラグ及び前記第２フラグを記憶するフラグ記憶部と、送信すべきデータを前記記憶手段に記憶させた場合に、対応する前記第１フラグと前記第２フラグとを記憶する前記フラグ記憶部の記憶領域を検出して、検出した記憶領域の前記第１フラグのフラグ状態を変更すると共に、検出した記憶領域の前記第２フラグのフラグ状態を変更する必要がある場合に変更するフラグ変更処理部とをさらに有し、前記フラグ記憶部の前記第１フラグを記憶する記憶領域は、マトリクス状に形成されると共に、該マトリクス状に形成された記憶領域の列数は、２ｎ（ｎは任意の自然数）であり、前記フラグ変更処理部は、２進数で表された前記送信すべきデータのＩＤ番号が前記フラグ記憶部の前記第１フラグと前記２フラグとを記憶させる記憶領域を示していることを利用して、フラグ状態を変更する前記フラグ記憶部の前記第１フラグと前記第２フラグの記憶領域を検出するとよい。
従って、送信すべきデータを記憶した記憶手段の記憶領域に対応する第１フラグと第２フラグとを記憶したフラグ記憶部の記憶領域の検出が容易になる。
【００１６】
本発明のゲートウェイ装置は、複数の通信チャネル間でのフレームデータの転送制御を行うゲートウェイ装置であって、通信チャネルから受信したフレームデータを転送する通信チャネルを検索するルーティング処理部と、前記ルーティング処理部で処理されたフレームデータを記憶する、フレームデータのＩＤごとに記憶領域が分割された送信バッファと、前記送信バッファの記憶領域ごとに設けられ、前記記憶領域のデータが更新されているか否かを示す第１フラグと、前記第１フラグを所定数ごとにまとめたグループごとに設けられ、前記グループにおける第１フラグの少なくとも１つのデータが更新された状態を示しているときにデータの更新状態を示す第２フラグとを記憶するフラグ記憶部と、前記ルーティング処理部で処理されたフレームデータを前記送信バッファに記憶すると共に、前記フラグ記憶部に記憶された第１フラグと第２フラグを更新するデータ記憶処理部と、前記フラグ記憶部に記憶された第２フラグを検索してから対応する第１フラグを検索することで、前記送信バッファからフレームデータを抽出する検索処理を行い、抽出したフレームデータをメッセージボックスにセットする送信データセット処理部と、前記メッセージボックスにセットされたフレームデータを通信チャネルに送信する送信処理部と、を有し、前記送信データセット処理部は、所定周期で前記検索処理を行うが、前記メッセージボックスにフレームデータを格納する空き領域がない場合には前記検索処理を行わないことを特徴としている。
また、本発明のゲートウェイ装置は、複数の通信チャネル間でのフレームデータの転送制御を行うゲートウェイ装置であって、通信チャネルから受信したフレームデータを転送する通信チャネルを検索し、検索した通信チャネルに対応する送信ＦＩＦＯにフレームデータを記憶するルーティング処理部と、前記送信ＦＩＦＯから読み出されたフレームデータを記憶する、フレームデータのＩＤごとに記憶領域が分割された送信バッファと、前記送信バッファの記憶領域ごとに設けられ、前記記憶領域のデータが更新されているか否かを示す第１フラグと、前記第１フラグを所定数ごとにまとめたグループごとに設けられ、前記グループにおける第１フラグの少なくとも１つのデータが更新された状態を示しているときにデータの更新状態を示す第２フラグとを記憶するフラグ記憶部と、前記送信ＦＩＦＯから読み出されたフレームデータを前記送信バッファに記憶するとともに、前記フラグ記憶部に記憶された第１フラグと第２フラグを更新するデータ記憶処理部と、前記フラグ記憶部に記憶された第２フラグを検索してから対応する第１フラグを検索することで、前記送信バッファからフレームデータを抽出する検索処理を行い、抽出したフレームデータをメッセージボックスにセットする送信データセット処理部と、前記メッセージボックスにセットされたフレームデータを通信チャネルに送信する送信処理部と、を有し、前記送信データセット処理部は、所定周期で前記検索処理を行うが、前記メッセージボックスにフレームデータを格納する空き領域がない場合には前記検索処理を行わないことを特徴としている。
本発明は、第１フラグを所定数ごとにまとめたグループの更新状態を示す第２フラグを設けて、第２フラグを検索してから対応する第１フラグを検索する。従って、送信バッファに記憶したフレームデータのデータ数が増加しても、フレームデータの検索を効率的に行うことができる。
【００１７】
上記ゲートウェイ装置において、前記送信ＦＩＦＯに記憶されたフレームデータを読み出し、該読み出したフレームデータを、該フレームデータに付加されている付加情報に基づいて前記フレームデータの送信順を並び替える平準化処理を行ってから送信するフレームデータと、前記平準化処理を行わずに送信するフレームデータとに振り分ける振り分け処理部と、前記平準化処理を行ってから送信するフレームデータを前記送信バッファに記憶させた後に、前記フレームデータを記憶させた送信バッファの記憶領域に応じて、前記フラグ記憶部の対応する前記第１フラグと前記第２フラグとを書き替える書き替え処理と、前記平準化処理を行わずに送信するフレームデータを通信チャネルごとに用意されたメッセージボックスにセットする第１送信データセット処理と、前記ビット検索器に、前記フラグ記憶部に記憶された第２フラグを検索させてから対応する第１フラグを検索させ、前記ビット検索器から取得した情報に基づいて前記送信バッファからフレームデータを予め設定された送信順に取り出す前記平準化処理を行い、前記平準化処理後のフレームデータを前記メッセージボックスにセットする第２送信データセット処理とを有する前記送信データセット処理とを有するとよい。
【発明の効果】
【００１８】
本発明によれば、バッファに記憶したフレームデータのデータ数が増加しても、フレームデータの検索を効率的に行うことができる。
【図面の簡単な説明】
【００１９】
【図１】線形検索について説明するための図である。
【図２】ゲートウェイ装置の構成を示す図である。
【図３】ＣＡＮコントローラの構成を示す図である。
【図４】ハードウェア中継部の構成を示す図である。
【図５】検索エンジン部の処理手順を示すフローチャートである。
【図６】ルーティングマップの一例を示す図である。
【図７】検索エンジン部によるルーティグ後のフレームデータの処理の流れを示す図である。
【図８】ゲートウェイ装置のハードウェア構成を示す図である。
【図９】データ更新フラグとインデックスフラグを示す図である。
【図１０】ビット検索器を用いたビット検索時にソフトウェア処理部が利用するレジスタを示す図である。
【図１１】インデックスフラグ検索時のソフトウェア処理部の処理手順を示す図である。
【図１２】データ更新フラグ検索時のソフトウェア処理部の処理手順を示す図である。
【図１３】（Ａ）はインデックスフラグの１回目の検索時に、ビット検索サポートレジスタに書き込まれるビット情報を示し、（Ｂ）はインデックスフラグの２回目の検索時に、ビット検索サポートレジスタに書き込まれるビット情報を示し、（Ｃ）及び（Ｄ）はビット検索器によるデータ更新フラグの検索手順を示す図である。
【図１４】（Ａ）はデータ更新フラグの検索開始位置及び検索開始行を示す図であり、（Ｂ）はデータ更新フラグの１回目の検索時に、ビット検索サポートレジスタに書き込まれるビット情報を示し、（Ｃ）はデータ更新フラグの２回目の検索時に、ビット検索サポートレジスタに書き込まれるビット情報を示す図である。
【図１５】間接テーブルの一例を示す図である。
【図１６】送信ＦＩＦＯに書き込まれる時のフレームデータの構成を示す図である。
【図１７】（Ａ）はフレームデータの種別を表す情報の構成を示す図であり、（Ｂ）はＩＤ毎バッファ格納位置情報の構成を示す図である。
【発明を実施するための形態】
【００２０】
以下、添付図面を参照しながら本発明の好適な実施例を説明する。
【実施例】
【００２１】
まず、図２を参照しながら本実施例の構成を説明する。図２には、本発明の通信装置の実施例としてのゲートウェイ装置１０００の構成を示す。
ゲートウェイ装置１０００は、通信バスに接続したＥＣＵ間で送受信されるフレームデータの中継を行う装置である。本実施例のゲートウェイ装置１０００には、通信バスとしてＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バス２０００、ＣＡＮバス２００１、ＣＡＮバス２００２の３つが接続されている。
ＣＡＮバス２０００、２００１、２００２には、それぞれ複数のＥＣＵが接続されている。本実施例では、ＣＡＮバス２０００には、ＥＣＵ２０１０、２０１１、２０１２が接続されており、ＣＡＮバス２００１には、ＥＣＵ２０２０、２０２１、２０２２が接続されており、ＣＡＮバス２００２には、ＥＣＵ２０３０、２０３１、２０３２が接続されている。
ＥＣＵ２０１０〜２０１２、２０２０〜２０２２、２０３０〜２０３２は、例えば、エンジンＥＣＵ、ボディＥＣＵ、パワーマネジメントＥＣＵ、エアバッグＥＣＵ等の車両制御用のＥＣＵである。
ＥＣＵ２０１０〜２０１２、２０２０〜２０２２、２０３０〜２０３２は、図示を省略するが、異なる通信方式又は通信速度で通信する通信網（つまり、ネットワーク）を介してゲートウェイ装置１０００と接続する。なお、本実施例においては、ＥＣＵ２０１０〜２０１２、２０２０〜２０２２、２０３０〜２０３２は、ＣＡＮプロトコルを用いてゲートウェイ装置１０００と通信を行うとして説明するが、これに限定される訳ではなく、例えば、ＥＣＵ２０１０〜２０１２、２０２０〜２０２２、２０３０〜２０３２は、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）プロトコルを用いて通信する構成を採用できる。
【００２２】
ゲートウェイ装置１０００は、ＥＣＵ２０１０〜２０１２、２０２０〜２０２２、２０３０〜２０３２からフレームデータを受信し、受信したフレームデータを中継する中継先の通信網で使用される通信速度及び通信方式に従って変換した後に中継する。尚、ゲートウェイ装置１０００がデータを中継するために、一度に受信又は送信するデータの単位をフレームデータという。本実施例では、フレームデータは、例えば、ＣＡＮプロトコルに従った枠となる所定のデータから開始する所定の長さを有するデータであるとして説明するが、これに限定される訳ではない。
【００２３】
本発明に係るゲートウェイ装置１０００は、主にハードウェア処理によってフレームデータを中継する中継部と、主にソフトウェア処理によってフレームデータを中継する中継部との２つの中継部によって構成される。
【００２４】
ゲートウェイ装置１０００のハードウェア構成の一例について図２を参照しながら説明する。ゲートウェイ装置１０００は、ＣＡＮコントローラ１１１０、１１２０、１１３０、ＣＡＮインタフェース部１２００、ハードウェア中継部（以下、ハードマクロともいう）１３００及びソフトウェア処理部１４００で構成される。なお、ソフトウェア処理部１４００が、本実施例における通信装置のデータ検索装置として機能する。
なお、本実施例において、ゲートウェイ装置１０００は、３つのＣＡＮコントローラ１１１０から１１３０で構成されるとして説明するが、この数に限定される訳ではなく、ＣＡＮコントローラの数が複数であればよい。
また、ＣＡＮコントローラ１１１０から１１３０は、それぞれ同様の接続、構成及び機能を有するため、以下では、代表してＣＡＮコントローラ１１１０について説明を行う。
【００２５】
ＣＡＮコントローラ１１１０は、ＣＡＮバス２０００に接続し、かつＣＡＮインタフェース部１２００に接続している。ＣＡＮコントローラ１１１０は、フレームデータを制御装置であるＥＣＵ２０１０ないし２０１２から受信し、受信したフレームデータをハードウェア中継部１３００又はソフトウェア処理部１４００へ出力する。
また、ＣＡＮコントローラ１１１０は、ハードウェア中継部１３００又はソフトウェア処理部１４００から、中継先であるＥＣＵ２０１０ないし２０１２へ中継するフレームデータを取得し、取得したフレームデータをＥＣＵ２０１０ないし２０１２へ送信する。
【００２６】
尚、ＣＡＮコントローラ１１１０ないし１１３０とＣＡＮバス２０００ないし２００２とを結ぶ伝送路をチャネルという。本実施例では、ＣＡＮコントローラ１１１０とＣＡＮバス２０００とを結ぶ伝送路をチャネルＣＨ０とし、ＣＡＮコントローラ１１２０とＣＡＮバス２００１とを結ぶ伝送路をチャネルＣＨ１とし、ＣＡＮコントローラ１１３０とＣＡＮバス２００３とを結ぶ伝送路をチャネルＣＨ２とする。
【００２７】
ここで図３を参照して、ＣＡＮコントローラ１１１０のハードウェア構成の一例について説明する。図３は、ＣＡＮコントローラ１１１０のハードウェア構成の一例を表す図である。
【００２８】
ＣＡＮコントローラ１１１０は、バッファ１１１１及びＣＡＮ通信部１１１４で構成される。
バッファ１１１１は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）及びレジスタで構成され、ＣＡＮ通信部１１１４に接続している。バッファ１１１１は、互いに関連付けられた複数のメッセージボックス１１１２と完了フラグ１１１３とで構成される。
【００２９】
メッセージボックス１１１２は、例えば、ＲＡＭで構成され、受信用のメッセージボックス（以下、受信用メッセージボックスと呼ぶ。図４参照）１１１２Ａと、送信用のメッセージボックス（以下、送信用メッセージボックスと呼ぶ。図４参照）１１１２Ｂとに分けられている。受信用メッセージボックス１１１２Ａは、ＣＡＮ通信部１１１４が受信したフレームデータを記憶する記憶領域である。また、送信用メッセージボックス１１１２Ｂは、ＣＡＮバス２０００へと送信されるフレームデータを保存する記憶領域である。なお、図４では、メッセージボックス１１１２、１１２２は、便宜上、受信用メッセージボックス１１１２Ａ、１１２２Ａと送信用メッセージボックス１１１２Ｂ、１１２２Ｂとに分けて示しているが、１つのメッセージボックス１１１２、１１２２を送信用と受信用とに分けて使用しているだけである。もちろん、受信用メッセージボックスと送信用メッセージボックスとを別途設けることもできる。
【００３０】
完了フラグ１１１３は、例えば、レジスタによって記憶され、受信用メッセージボックス１１１２Ａと、送信用メッセージボックス１１１２Ｂとのそれぞれに設けられている。受信用の完了フラグ１１１３は、ＣＡＮ通信部１１１４が実行するフレームデータを受信するための処理が完了した場合に立てられる（つまり、ＯＮとなる）フラグである。より詳細に説明すると、受信用の完了フラグ１１１３は、ＣＡＮ通信部１１１４が受信したフレームデータであって、ハードウェア中継部１３００又はソフトウェア処理部１４００が未だ取得していないデータを、メッセージボックス１１１２が記憶していることを表すフラグである。
また、送信用の完了フラグ１１１３は、送信用メッセージボックス１１１２Ｂにフレームデータが格納された場合に立ち下げられる（つまり、ＯＦＦとなる）フラグである。また、記憶していたフレームデータがＥＣＵ２０１０に送信されると、フラグが立ち上げられる（つまり、ＯＮとなる）。
【００３１】
ＣＡＮ通信部１１１４は、バッファ１１１１、ＣＡＮインタフェース部１２００及びＣＡＮバス２０００に接続する。
【００３２】
ＣＡＮ通信部１１１４は、ＣＡＮ受信処理を実行することで、ＣＡＮプロトコルに従ってＣＡＮバス２０００からフレームデータを受信する。また、ＣＡＮ通信部１１１４は、受信したフレームデータを受信用メッセージボックス１１１２Ａに保存すると共に、フレームデータを保存した受信用メッセージボックス１１１２Ａに関連付けた受信用の完了フラグ１１１３を立てる。
【００３３】
更に、ＣＡＮ通信部１１１４は、フレームデータを受信したことを通知する受信割込信号を、ＣＡＮインタフェース部１２００を介してハードウェア中継部１３００及びソフトウェア処理部１４００へ出力する。
【００３４】
ハードウェア中継部１３００又はソフトウェア処理部１４００は、受信割込信号を取得すると、ＣＡＮインタフェース部１２００を介してフレームデータを参照する。ハードウェア中継部１３００又はソフトウェア処理部１４００は、参照したデータを保存した受信用メッセージボックス１１１２Ａに関連付けられている完了フラグを立ち下げる。
【００３５】
また、ＣＡＮ通信部１１１４は、ＣＡＮ送信処理を実行することで、ＣＡＮプロトコルに従って、ＣＡＮインタフェース部１２００から出力されるフレームデータをＣＡＮバス２０００へ送信する。
フレームデータのＣＡＮバス２０００への送信が完了すると、ＣＡＮ通信部１１１４は、送信が完了したデータを保存した送信用メッセージボックス１１１２Ｂに関連付けた完了フラグを立ち上げる。
【００３６】
尚、ＣＡＮ受信処理及びＣＡＮ送信処理は、ＣＡＮプロトコルに従ってフレームデータを送受信するための公知の処理により実現できるため、説明を省略する。
【００３７】
ここで図２に戻り、ゲートウェイ装置１０００の構成について引き続き説明を行う。
【００３８】
ＣＡＮインタフェース部１２００は、ＣＡＮコントローラ１１１０から１１３０及びハードウェア中継部１３００に接続している。ＣＡＮインタフェース部１２００は、ＣＡＮコントローラ１１１０から１１３０とＣＡＮインタフェース部１２００との間でデータ転送を可能とするバスＢ１０から１２と、ＣＡＮインタフェース部１２００とハードウェア中継部１３００又はソフトウェア処理部１４００との間でデータ転送を可能とする内部バスＢ２とのインタフェースを提供する。
尚、ＣＡＮインタフェース部１２００、ハードウェア中継部１３００及びソフトウェア処理部１４００は、内部バスＢ２を介して互いにデータ転送が可能なように接続している。
【００３９】
ハードウェア中継部１３００は、車両の挙動を制御する制御装置であるＥＣＵ２０１０〜２０１２、２０２０〜２０２２、２０３０〜２０３２間で送受信されるデータを、後述するハードウェア中継処理を実行することによって中継する。尚、ハードウェア中継処理は、ハードウェアを用いて実行される処理である。
【００４０】
ここで図４を参照して、ハードウェア中継部１３００のハードウェア構成について説明する。図４は、ハードウェア中継部１３００のハードウェア構成の一例を表す図である。
【００４１】
ハードウェア中継部１３００は、検索エンジン部１３１０、ルーティングマップ１３２０及び送信バッファ１３３０で構成される。
【００４２】
検索エンジン部１３１０は、図示を省略するが、例えば、ＲＡＭで構成されるメモリを有し、ＣＡＮインタフェース部１２００、ルーティングマップ１３２０、送信バッファ１３３０及びソフトウェア処理部１４００に接続している。検索エンジン部１３１０は、経路検索処理を実行することで、フレームデータに基づいて中継先のチャネル等を検索する。図５を参照して、検索エンジン部１３１０が実行する経路検索処理について説明する。図５は、検索エンジン部１３１０が実行する経路検索処理の一例を表すフローチャートである。
【００４３】
先ず、検索エンジン部１３１０は、ＣＡＮコントローラ１１１０ないし１１３０から、受信割込信号を取得したか否かを判断する（ステップＳ１）。検索エンジン部１３１０は、受信割込信号を取得したと判断する場合にはステップＳ２の処理を実行し、そうで無い場合には経路検索処理の実行を終了する。
【００４４】
ステップＳ１において、検索エンジン部１３１０は、受信割込信号を取得したと判断した場合には、ＣＡＮインタフェース部１２００を介して、ＣＡＮコントローラ１１１０ないし１１３０から中継フレームのフレームデータを取得する（ステップＳ２）。
【００４５】
その後、検索エンジン部１３１０は、取得した中継フレームデータに関連付けたＣＡＮコントローラ１１１０ないし１１３０の受信用の完了フラグを下げる（以下、ＯＦＦにするともいう）（ステップＳ３）。次に、検索エンジン部１３１０は、取得したフレームデータから、フレームデータのフォーマット種別ＩＤＥ、フレーム種別ＲＴＲ及びフレームデータを発信した装置のＩＤや中継元のチャネル、中継先のチャネル等を取得する（ステップＳ４）。
【００４６】
その後、検索エンジン部１３１０は、ルーティングマップ１３２０から、取得したフォーマット種別ＩＤＥ、フレーム種別ＲＴＲ、ＩＤや中継元のチャネル、中継先のチャネル等を保存する行を検索する（ステップＳ５）。
【００４７】
次に、検索エンジン部１３１０は、検索した行のデータをパリティを用いて検査するパリティ検査処理を実行する（ステップＳ６）。尚、検査処理は、パリティ検査処理に限定される訳ではなく、例えば、チェックサム、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）、ハッシュ値、ハミング符号、疎グラフ符号（Ｓｐａｒｓｅ  ｇｒａｐｈ  ｃｏｄｅ）又は畳込符号（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｃｏｄｅ）を用いてデータの誤りを検出する構成を採用できる。
【００４８】
ステップＳ６を実行した後に、検索エンジン部１３１０は、検索した行が保存する中継する先のチャネル（以下単に、中継先チャネルという）ＴｘＣＨの送信ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）へフレームデータを出力する（ステップＳ７）。
【００４９】
尚、送信ＦＩＦＯは、後述する送信バッファ１３３０を構成する記憶領域であって、フレームデータの先入れ先出しに用いられるものである。送信バッファ１３３０は、保存するフレームデータの送信先チャネル及び送信するフレームデータの種類毎に、複数の送信ＦＩＦＯを有する。
【００５０】
ステップＳ７を実行した後に、検索エンジン部１３１０は、フレームデータを出力したＦＩＦＯに関連付けられたハードウェアカウンタ（以下、メッセージカウンタともいう）をインクリメントする（ステップＳ８）。その後、検索エンジン部１３１０は、経路検索処理の実行を終了する。
【００５１】
尚、ハードウェアカウンタとは、関連付けられたＦＩＦＯが保存するデータの数を表すカウンタであって、ハードウェア中継部１３００が中継するデータの数を表すカウンタである。
【００５２】
ここで図４に戻り、ハードウェア中継部１３００の構成について引き続き説明を行う。
【００５３】
ルーティングマップ１３２０は、例えば、ＲＯＭやＲＡＭ等の各種メモリで構成される。ルーティングマップ１３２０は、検索エンジン部１３１０に接続している。
【００５４】
ルーティングマップ１３２０は、フレームデータのフォーマット種別ＩＤＥ、フレーム種別ＲＴＲ及びＩＤと、フレームデータの中継元及び中継先とを関連付けて保存するテーブルを保存する。
【００５５】
ここで、図６を参照して、ルーティングマップ１３２０が保存するテーブルについて説明を行う。図６は、ルーティングマップ１３２０が保存するテーブルの一例を表す図である。
【００５６】
図６に示すテーブルは、Ｐａｒ１フィールド、ＩＤＥフィールド、ＲＴＲフィールド、ＩＤフィールド、Ｐａｒ２フィールド、ＦＩＦＯフィールド、ＴｘＣＨフィールド、Ｌａｂｅｌ（ラベル）１フィールド、Ｌａｂｅｌ（ラベル）０フィールド、ＲｘＣＨフィールド及びＭａｓｋＩｎｆｏフィールドを有する。
【００５７】
Ｐａｒ１フィールドはＩＤＥフィールド、ＲＴＲフィールド及びＩＤフィールドが保存するデータのパリティを、ＩＤＥフィールドはフレームデータのフォーマット種別を、ＲＴＲフィールドはフレーム種別を、ＩＤフィールドはＣＡＮ ＩＤを保存する。なお、以下の説明では、ＣＡＮ ＩＤを単にＩＤと表記する。ＩＤは、フレームデータを送信するバス上のＣＡＮノード（例えば、ＥＣＵ）によって付与されるものであり、ＩＤによって送信元のノードやそのフレームデータの優先度などが判る。
【００５８】
Ｐａｒ２フィールドはＦＩＦＯフィールドからＭａｓｋＩｎｆｏフィールドまでのフィールドが保存するデータのパリティを、ＦＩＦＯフィールドは中継先のＦＩＦＯを、ＴｘＣＨフィールドは中継先チャネルを、Ｌａｂｅｌ１及びＬａｂｅｌ０は中継するデータに付加するデータを、ＲｘＣＨは受信した元のチャネル（以下単に、受信元チャネルという）を、ＭａｓｋＩｎｆｏは行のソートに用いるインデックスの計算時に用いるマスク値を保存する。
【００５９】
尚、ＩＤＥフィールド、ＲＴＲフィールド及びＩＤフィールドは、キーフィールドであって、ＩＤＥフィールド、ＲＴＲフィールド及びＩＤフィールドが保存するデータが全て重複する行は、テーブル中に存在しない。
【００６０】
ここで図４に戻り、ハードウェア中継部１３００の構成について引き続き説明を行う。
【００６１】
送信バッファ１３３０は、例えば、ＲＡＭ及びレジスタで構成される。送信バッファ１３３０は、検索エンジン部１３１０及びソフトウェア処理部１４００に接続している。
【００６２】
送信バッファ１３３０を構成するＲＡＭのメモリ領域は、フレームデータを保存する送信ＦＩＦＯ１３３１、１３３３、１３３５及び１３３７を構成し、送信バッファ１３３０を構成するレジスタは、送信ＦＩＦＯ１３３１、１３３３、１３３５及び１３３７に保存されたデータ数を表すハードウェアカウンタ（つまり、メッセージカウンタ）１３３２、１３３４、１３３６及び１３３８を保存する。尚、ＦＩＦＯについては、既に説明したため、詳細な説明を省略する。
【００６３】
ここで、送信ＦＩＦＯ１３３１及び１３３３は、チャネルＣＨ０へ中継されるフレームデータを保存し、送信ＦＩＦＯ１３３５及び１３３７は、チャネルＣＨ１へ中継されるデータを保存する。
【００６４】
送信ＦＩＦＯ１３３１及び１３３３には、それぞれ異なる種類のフレームデータが保存される。また、送信ＦＩＦＯ１３３１及び１３３３へのフレームデータの保存は、ルーティングマップ１３２０の検索によってＩＤＥ、ＲＴＲ、ＩＤが一致したエントリ（Ｅｎｔｒｙ）の情報ＴｘＣＨ、ＦＩＦＯ（中継先情報）に従って行われる。尚、送信ＦＩＦＯ１３３５及び１３３７についても同様であるので、説明を省略する。
【００６５】
尚、図４において、ハードウェア中継部１３００が、チャネルＣＨ２へ中継するフレームデータを保存するＦＩＦＯと、ＦＩＦＯが保存するデータ数を表すカウンタとの図示を省略しているために説明を省略するが、ハードウェア中継部１３００がフレームデータをチャネルＣＨ２へ中継する機能を有することは当然である。
【００６６】
ここで図２に戻り、ゲートウェイ装置１０００の構成について、引き続き説明を行う。
【００６７】
ソフトウェア処理部１４００は、車両の挙動を制御する制御装置であるＥＣＵ２０１０〜２０１２、２０２０〜２０２２、２０３０〜２０３２の間で送受信されるデータを中継するソフトウェア処理を実行する。
【００６８】
ソフトウェア処理部１４００は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算部１４０１、例えば、フラッシュ・メモリ等の記憶部１４０２及び割込制御部１４０３で構成され、演算部１４０１、記憶部１４０２及び割込制御部１４０３は、それぞれバスによってデータの授受が可能なように接続している。
【００６９】
ソフトウェア処理部１４００は、記憶部１４０２に格納したプログラムを演算部１４０１が読み、読込んだプログラムに従って演算部１４０１が演算を行うことで後述する各部の機能を実現する。
なお、記憶部１４０２には、後述する図９に示すデータ更新フラグ２１００とインデックスフラグ２２００とが記録される。
【００７０】
また、割込制御部１４０３は、プログラムに従った演算を行う演算部１４０１に対して、ハードウェア中継部１３００等の他のハードウェアを制御するための演算等を割込んで実行することを要求する割込信号の入出力を制御する。
【００７１】
次に、図７を参照しながらフレームデータを平準化して送信するときの処理の流れを説明する。なお、ここでは、ソフトウェア処理部１４００は、検索エンジン部１３１０からの割込信号を入力して、送信ＦＩＦＯ１３３１，１３３３，１３３５，１３３７へのアクセスを行うとして説明するが、検索エンジン部１３１０からの割込信号によらず、ソフトウェア処理部１４００が一定周期で送信ＦＩＦＯ１３３１，１３３３，１３３５，１３３７にアクセスして、送信ＦＩＦＯ１３３１，１３３３，１３３５，１３３７に格納されたフレームデータに対する処理を行うようにしてもよい。
検索エンジン部１３１０によって、フレームデータが送信先のチャネルに対応した送信ＦＩＦＯ（ここでは説明を簡略化するため、フレームデータが送信ＦＩＦＯ１３３１に格納されたものとして説明を行う）に格納されると、検索エンジン部１３１０はソフトウェア処理部１４００に対して割込信号を出力する。なお、割込信号の出力タイミングは、検索エンジン部１３１０が１フレームのフレームデータを送信ＦＩＦＯ１３３１に格納するごとに行ってもよいし、一定数のフレームデータを送信ＦＩＦＯ１３３１に格納した後に行ってもよい。また、図７には、検索エンジン部１３１０がソフトウェア処理部１４００に割込信号を出力するパスについては示していない。検索エンジン部１３１０から出力された割込信号は、図２に示す割込制御部１４０３の制御によって演算部１４０１に出力される。
【００７２】
ソフトウェア処理部１４００は、検索エンジン部１３１０からの割込信号を入力すると、送信ＦＩＦＯ１３３１に格納されたフレームデータが平準化を行うフレームデータであるか否かを判定する。ソフトウェア処理部１４００は、検索エンジン部１３１０によってフレームデータに付加された付加情報に基づいて、平準化を行うフレームデータであるのか、平準化を行わずに中継するフレームデータであるのかを判定する。検索エンジン部１３１０は、フレームデータに付加されたＩＤに基づいて、フレームデータが平準化して送信するフレームであるのか、平準化せずに送信するフレームデータであるのかを判断する。そして、検索エンジン部１３１０は、ルーティングを行い、転送先の送信ＦＩＦＯ１３３１（１３３３、１３３５、１３３７）にフレームデータを書き込むときにフレームデータに付加情報としてのラベル値を付加する（ラベル値の詳細については、図１５を参照しながら後ほど説明する）。ソフトウェア処理部１４００は、検索エンジン部１３１０によって付加されたラベル値に基づいてフレームデータが平準化を行うフレームであるのか、平準化せずに送信するフレームデータであるのかを判定する。
なお、ＩＤは、ＣＡＮ通信を行うノード（すなわち、図２に示すＣＡＮバス２０００、２００１、２００２に接続した各ＥＣＵ）ごとに設定されており、フレームデータを送信する送信元のノードによってフレームデータに付与される。また、ＩＤ（すなわち送信先ノード）に応じて平準化して送信するフレームであるのか、平準化せずに送信するフレームデータであるのかが予め設定されている。
【００７３】
ソフトウェア処理部１４００は、ラベル値に基づいて平準化を行うフレームデータであると判定すると、このフレームデータをＩＤ毎バッファ（説明を簡略化するため、以下では、ＩＤ毎バッファ１５０１にフレームデータが格納されたものとする）に一旦格納する。また、ソフトウェア処理部１４００は、ラベル値に基づいて平準化を行わないフレームデータであると判定すると、フレームデータをＩＤ毎バッファ１５０１ではなく送信用メッセージボックス１１１２Ｂに格納する。また、ソフトウェア処理部１４００は、送信ＦＩＦＯ１３３、１３３７に格納されたフレームデータについても同様の処理を行い、平準化を行わないフレームデータを送信用メッセージボックス１１２２Ｂに格納する。また、ソフトウェア処理部１４００は、平準化を行うフレームデータをＩＤ毎バッファ１５０２に一旦格納する。
【００７４】
ＩＤ毎バッファ１５０１及び１５０２には、ＩＤごとに分割された記憶領域が用意されており、ソフトウェア処理部１４００は、フレームデータに付与されたラベル値から図１５に示す間接テーブルを参照して、該当するＩＤ毎バッファ１５０１、１５０２にフレームデータを格納する。また、各ＩＤ毎バッファ１５０１、１５０２の各領域ごとに、各領域にフレームデータが格納されているか否かを示すフラグを記録する領域がＲＡＭ３００１（記憶部１４０２）に設けられている。ソフトウェア処理部１４００は、ＩＤ毎バッファ１５０１、１５０２にフレームデータを格納すると、フレームデータを格納したＩＤ毎バッファに対応するＲＡＭ３００１の領域にフラグを記録する（すなわち、ＩＤ毎バッファにデータが格納又は更新されたことを示すデータをＲＡＭ３００１に記録する）。
【００７５】
ＩＤ毎バッファ１５０１、１５０２にフレームデータが格納されると、フレームデータを平準化して送信するために、線形検索を実行する。線形検索には、ゲートウェイ装置１０００に搭載されているビット検索器１６００（ハードウェア：図８参照）を利用する。ソフトウェア処理部１４００は、ビット検索器１６００を利用して送信すべきフレームデータを記憶したＩＤ毎バッファ１５０１、１５０２の記憶領域を検出する。
ビット検索器１６００によって送信すべきフレームデータを記憶したＩＤ毎バッファ１５０１、１５０２の記憶領域を検出すると、ソフトウェア処理部１４００は、検出した記憶領域からフレームデータを取り出して、送信用メッセージボックス１１１２Ｂに格納する。
なお、ソフトウェア処理部１４００からビット検索器１６００への検索要求は、一定周期で行ってもよいし、送信用メッセージボックス１１１２Ｂに空きができた場合に行ってもよい。また、ソフトウェア処理部１４００は、一定周期でビット検索器１６００に検索要求を出力すると共に、送信用メッセージボックス１１１２Ｂに空きができたことを検出したときにも、検索要求をビット検索器１６００に出力するようにしてもよい。送信用メッセージボックス１１１２Ｂに空きがあるか否かの判定は、ＣＡＮコントローラ１１１０ないし１１３０からの送信完了の割込信号によって判定することができる。ＣＡＮコントローラ１１１０ないし１１３０は、送信用メッセージボックス１１１２Ｂに格納されたフレームデータを送信相手として設定されたＥＣＵ宛てに送信すると、ソフトウェア処理部１４００に対して送信完了の割込信号を出力する。ソフトウェア処理部１４００は、この割込信号を入力して、送信用メッセージボックス１１１２Ｂに空きができたことを認識する。
【００７６】
図８に、ゲートウェイ装置１０００のハードウェア構成を示す。ゲートウェイ装置１０００は、ＣＰＵコア３０００、ＲＡＭ３００１、ＲＯＭ３００２、乗算器３００３、ビット検索器１６００、ハードマクロ（ハードウェア中継部）１３００、ＣＡＮモジュール１８００、システムクロック発生回路１７００等を有している。なお、ＣＡＮモジュール１８００は、ＣＡＮ通信を行うＣＡＮコントローラ１１１０から１１３０に該当する。また、システムクロック発生回路１７００は、ＣＰＵコア３０００の動作クロックを提供する。
ＲＯＭ３００２には、ＣＰＵコア３０００が演算に使用するプログラムが格納されており、ＣＰＵコア３０００がプログラムに従った演算を行うことで、図２に示すソフトウェア処理部１４００内の演算部１４０１、割込制御部１４０３が構成される。また、ＲＡＭ３００１には、ＣＰＵコア３０００が演算に使用する変数等が格納される。また、ＲＡＭ３００１は、図２に示す記憶部１４０２に該当する。ＲＡＭ３００１（記憶部１４０２）には、後述する図９に示すデータ更新フラグ２１００とインデックスフラグ２２００とが記録される。乗算器３００３は、ＣＰＵコア３０００に代わって乗算演算を行う演算部である。
【００７７】
図９に、ＩＤ毎バッファ１５０１、１５０２にフレームデータが格納されているか否かを示すフラグを記録するＲＡＭ３００１のフラグデータ記憶領域の構成を示す。
図９に示すようにＲＡＭ３００１のフラグデータ記憶領域には、第１フラグとしてのデータ更新フラグ２１００と、第２フラグとしてのインデックスフラグ２２００とが記録されている。
本実施例のデータ更新フラグ２１００は、１６行８列のマトリクス状に構成したＲＡＭ３００１のフラグデータ記憶領域に記憶される。ＩＤ毎バッファ１５０１、１５０２にフレームデータが格納されると、対応するデータ更新フラグ２１００の状態が［０］から［１］に変更される。すなわち、フラグを記録した状態となり、フレームデータが更新された状態を表す。
【００７８】
また、インデックスフラグ２２００は、データ更新フラグ２１００の複数ビットをまとめたグループごとに設けられており、グループに含まれるデータ更新フラグ２１００の少なくとも１つがデータ更新された状態を示しているときに、データの更新状態を表す。本実施例では、図９に示すようにデータ更新フラグ２１００の１行分の情報を、インデックスフラグ２２００の１ビットで表現している。
例えば、図９に示すデータ更新フラグ２１００の６行目（図９に示すデータ更新フラグ２１００では、０行から１５行のうちの５行）のいずれかのビットに１が記録されていると、対応するインデックスフラグ２２００のビット「０５」に１が記録される。
このように、データ更新フラグ２１００の複数ビットの情報を集約したインデックスフラグ２２００を設けることで、フレームデータを記憶したＩＤ毎バッファの記憶領域の検索を効率的に行うことができる。
【００７９】
なお、図９に示すデータ更新フラグ２１００を記憶するＲＡＭ３００１のフラグデータ記憶領域は、１６行８列で１２８種類のＩＤまで格納可能な状態であるが、ＩＤ毎バッファ１５０１、１５０２の領域拡張に伴ってデータ更新フラグ２１００を記憶するＲＡＭ３００１のフラグデータ記憶領域も拡張させる。例えば、データ更新フラグ２１００を１６行１６列の構成としてフラグデータ記憶領域に記憶させてもよいし、同じ１６行８列のデータ更新フラグ２１００を第２データ更新フラグとしてフラグデータ記憶領域に記憶させてもよい。
また、データ更新フラグ２１００の１行のビット数を２のべき乗とすることで、データ更新フラグ２１００のビット位置、インデックスフラグ２２００のビット位置の割り出しを簡単に行うことができる。
例えば、フレームデータをＩＤ毎バッファ１５０１、１５０２に格納すると、ソフトウェア処理部１４００は、ＩＤ番号を８で割ってデータ更新フラグ２１００のビット位置と、インデックスフラグ２２００のビット位置とを算出する。このとき、データ更新フラグ２１００のビット数を２のべき乗とすると、ＩＤ番号を８で除算する処理を省くことができる。例えば、ＩＤを［５０］とすると、［５０］は２進数で１１００１０であるが、上位３ビット（１１０）がデータ更新フラグ２１００の行情報、すなわち、インデックスフラグ２２００のビット位置情報を表す。また、下位３ビットがデータ更新フラグ２１００の列情報を表している。
【００８０】
ソフトウェア処理部１４００は、ビット検索器１６００にデータ更新フラグ２１００及びインデックスフラグ２２００の検索を行わせるときには、図１０に示すビット検索サポートレジスタ２３００に検索を行うデータ更新フラグ２１００又はインデックスフラグ２２００のビット情報を書き込む。なお、ビット情報とは、ビット検索器１６００に、フラグが記録されたインデックスフラグ２２００又はデータ更新フラグ２１００を検索させるビット位置情報を示す。例えば、図９に示すインデックスフラグ２２００では、「００」〜「１５」のいずれかを示し、データ更新フラグ２１００では、０行〜１５行までのいずれかを示す。ビット検索器１６００は、ビット検索サポートレジスタ２３００に書き込まれたビット情報を参照して、フラグが記録されたデータ更新フラグ２１００又はインデックスフラグ２２００のビット位置を検出する。ビット検索器１６００は、データ更新フラグ２１００又はインデックスフラグ２２００を検索すると、フラグが記録されたビット位置を図１０に示すビット検索ステータスレジスタ２４００に書き込む。また、フラグが記録されたビット位置が検出されなければ、ビット検索器１６００は、フラグが記録されたビット位置なしの情報をビット検索ステータスレジスタ２４００に書き込む。又は、ビット検索器１６００は、ビット検索ステータスレジスタ２４００への書き込みを行わない。ソフトウェア処理部１４００は、ビット検索ステータスレジスタ２４００を参照してビット検索器１６００によるデータ更新フラグ２１００又はインデックスフラグ２２００の検索結果を認識する。
フラグが記録されたインデックスフラグ２２００又はデータ更新フラグ２１００のビット位置をハードウェアのビット検索器１６００に行わせるので、ソフトウェア処理部１４００の処理負荷を軽減させることができる。
なお、図１０に示すビット検索サポートレジスタ２３００やビット検索ステータスレジスタ２４００も、図８に示すＣＰＵコア３０００やビット検索器１６００が図８に示すＲＡＭ３００１を記憶領域として使用することで実現される。
【００８１】
次に、ソフトウェア処理部１４００の処理手順を説明する。図１１及び図１２には、ソフトウェア処理部１４００のビット検索器１６００を用いたフラグ検索の処理手順を示す。
まず、図１１を参照しながらビット検索器１６００にインデックスフラグ２２００を検索させる処理について説明する。
ソフトウェア処理部１４００は、まず、送信用メッセージボックス（以下では説明を簡略化するため、送信用メッセージボックス１１１２Ｂへのデータの格納を例に説明する）１１１２Ｂに空き領域があるか否かと、インデックスフラグ２２００のビットがすべて０であるか否かを判定する（ステップＳ１１）。送信用メッセージボックス１１１２Ｂに空き領域がなかった場合や、インデックスフラグ２２００のビットがすべて０であった場合には（ステップＳ１１／ｎｏ）、ソフトウェア処理部１４００は、この処理を終了する。
【００８２】
送信用メッセージボックス１１１２Ｂに空き領域があり、インデックスフラグ２２００のビットがすべて０ではなかった場合（ステップＳ１１／ｙｅｓ）、ソフトウェア処理部１４００は検索変数に検索開始のビット位置を代入し、検索回数を表す変数を初期化する（ステップＳ１２）。すなわち、検索回数を表す変数は「０」に設定される。また、検索変数は、ソフトウェア処理部１４００がインデックスフラグ２２００やデータ更新フラグ２１００の検索位置を識別する変数である。
初回の検索（検索回数が０回）の場合には、検索変数はビット検索器１６００に検索を行わせるインデックスフラグ２２００の検索開始のビット位置を示している。
次に、ソフトウェア処理部１４００は、検索回数を表す変数を参照して検索回数を判定する（ステップＳ１３）。
検索回数が０回であった場合には（ステップＳ１３／０回）、ソフトウェア処理部１４００は、検索変数が示すインデックスフラグ２２００のビット（検索開始のビット位置）よりも小さいビットをマスクする。そして、ソフトウェア処理部１４００は、検索変数が示すインデックスフラグ２２００のビットと、それよりも上位のビットとをビット情報としてビット検索サポートレジスタ２３００に書き込む（ステップＳ１４）。例えば、図１３（Ａ）に示すように、検索変数が示す検索開始のビット位置が、インデックスフラグ２２００のビット４であった場合には、ビット４よりも下位のビット０〜ビット３をマスクしたインデックスフラグ２２００のビット情報をビット検索サポートレジスタ２３００に書き込む。すなわち、インデックスフラグ２２００のビット４〜ビット１５の情報がビット検索サポートレジスタ２３００に書き込まれる。
ビット検索器１６００は、ビット検索サポートレジスタ２３００に書き込まれたインデックスフラグ２２００のビット情報を取得し、取得したビット情報が示すインデックスフラグ２２００のビット位置のうち、フラグが記録されているビット位置を検索する。ビット検索器１６００は、検索結果をビット検索ステータスレジスタ２４００に書き込む。図１３（Ａ）に示す例では、インデックスフラグ２２００のビット４からビット１５の中でフラグが記録されたビット位置の情報が検索される。ソフトウェア処理部１４００は、ビット検索器１６００の検索結果を記録したビット検索ステータスレジスタ２４００を参照して、フラグが記録されているインデッスフラグ２２００のビット位置を判定する。
【００８３】
また、検索回数が１回であった場合には（ステップＳ１３／１回）、ソフトウェア処理部１４００は、検索変数が示すインデックスフラグ２２００のビット位置よりも小さいビットと、検索開始位置のビット及びこのビットよりも上位のビットとをマスクする。そして、ソフトウェア処理部１４００は、マスクしたインデックスフラグ２２００のビット情報をビット検索サポートレジスタ２３００に書き込む（ステップＳ１５）。すなわち、検索回数が０回のときには、検索開始位置のビットと、この検索開始位置のビットよりも上位のビットの検索を終了しているので、今度は検索開始位置のビットよりも下位のビットの検索を行う。
例えば、検索開始位置のビットがインデックスフラグ２２００のビット４であり、検索変数が示すインデックスフラグ２２００のビット位置がビット１であった場合、ソフトウェア処理部１４００は、図１３（Ｂ）に示すようにビット４よりも上位のビット（ビット４〜ビット１５ビット）と、検索変数が示すインデックスフラグ２２００のビット位置（ビット１）よりも下位のビット（ビット０）とをマスクしてビット検索サポートレジスタ２３００に書き込む。ビット検索器１６００は、ビット検索サポートレジスタ２３００に書き込まれたインデックスフラグ２２００のビット情報を取得する。そして、ビット検索器１６００は、取得したビット情報が示すインデックスフラグ２２００のビット位置のうち、フラグが記録されているビット位置を検索する。ビット検索器１６００は、検索結果をビット検索ステータスレジスタ２４００に書き込む。
また、検索回数が２回であった場合には（ステップＳ１３／２回）、ソフトウェア処理部１４００はこの処理を終了する。
【００８４】
次に、ソフトウェア処理部１４００は、ビット検索ステータスレジスタ２４００を参照して、１が記録されているインデックスフラグ２２００のビットがあるか否かを判定する（ステップＳ１６）。
ソフトウェア処理部１４００は、１が記録されていると判定されたインデックスフラグ２２００のビット位置情報がビット検索ステータスレジスタ２４００に記録されていなかった場合には（ステップＳ１６／ｙｅｓ）、検索変数を初期化する（ステップＳ１８）。その後、ソフトウェア処理部１４００は、検索回数を１インクリメントして（ステップＳ１９）、次の検索をビット検索器１６００に実行させる（ステップＳ１３）。
【００８５】
また、ソフトウェア処理部１４００は、ビット検索ステータスレジスタ２４００に、１が記録されていると判定されたインデックスフラグ２２００のビット位置情報が記録されている場合には（ステップＳ１６／ｎｏ）、データ更新フラグ２１００の検索を行う（ステップＳ１７）。データ更新フラグ２１００の検索処理については図１２に示すフローチャートを参照しながら後ほど説明する。
【００８６】
データ更新フラグ２１００の検索が終了すると、ソフトウェア処理部１４００は、ビット検索ステータスレジスタ２４００を参照して、フラグが記録されたデータ更新フラグ２１００があるか否かを判定する（ステップＳ２０）。フラグが記録されたデータ更新フラグ２１００がなかった場合、すなわちフレームデータを格納したＩＤ毎バッファ１５０１がなかった場合には（ステップＳ２０／ｎｏ）、ソフトウェア処理部１４００は、ステップＳ１３に戻ってインデックスフラグ２２００の検索を再度行う。また、ソフトウェア処理部１４００は、フレームデータを格納した任意数のＩＤ毎バッファを検出すると（ステップＳ２０／ｙｅｓ）、検索変数を検索開始位置に保存する（ステップＳ２１）。
【００８７】
次に、ビット検索器１６００を用いてデータ更新フラグ２１００を検索させるソフトウェア処理部１４００の処理を説明する前に、図１３（Ｃ）及び（Ｄ）を参照しながらビット検索器１６００によるデータ更新フラグ２１００の検索の概略を説明する。
初回の検索では、ビット検索器１６００は、図１３（Ｃ）に示す右上（０，０）のＳからビットの検索（データありを示すフラグが記録されているか否かの検索）を開始する。その後、ビット検索器１６００は、Ｓの左側のゾーンＡを右から左に検索する。ゾーンＡを検索終了すると、ビット検索器１６００は、図１３（Ｃ）に示すゾーンＢを右から左、上から下に検索する。
【００８８】
例えば、図１３（Ｃ）に示すマトリクス（データ更新フラグの記憶領域）の４行４列目に、フラグが記録されているとする。ビット検索器１６００は、フラグが記録されている４行４列目のビット（図１３（Ｃ）に示すビットＧ）を検出すると、次の検索開始位置をフラグが記録されていたビット（Ｇ）（図１３（Ｃ）に示す４行４列目のビット）の位置に変更（検索変数が示すビット位置の変更）し、検索を終了する。
【００８９】
２回目の検索では、ビット検索器１６００は、図１３（Ｄ）に示すように前回検索終了位置（図１３（Ｄ）に示す４行４列目のビット）の左側のゾーンＣを右から左へ検索する。
ゾーンＣを検索終了後、ビット検索器１６００は、図１３（Ｄ）に示すゾーンＤを右から左、上から下に検索する。ゾーンＤの検索を終了すると、ビット検索器１６００は、ゾーンＥを右から左、上から下に検索する。
最後にビット検索器１６００は、検索開始位置（図１３（Ｄ）に示す４行４列目のビット）の右側のゾーンＦを右から左へ検索する。また、検索の途中でフラグが記録されているビットを検出した場合、次回の検索開始位置を、検出したフラグの記録されているビット位置に変更（検索変数が示すビット位置の変更）し、検索処理を終了する。
【００９０】
次に、図１２に示すフローチャートを参照しながらビット検索器１６００を用いてデータ更新フラグ２１００を検索させるソフトウェア処理部１４００の処理手順を説明する。
まず、ソフトウェア処理部１４００は、ビット検索器１６００によってフラグが記録されている（１が記録されている）と判定されたインデックスフラグ２２００のビット位置が、検索変数の示すインデックスフラグ２２００のビット位置と同じであるか否かを判定する（ステップＳ３１）。すなわち、ソフトウェア処理部１４００は、ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置を検索変数が示しているか否かを判定する。
例えば、ビット検索器１６００によるインデックスフラグ２２００の検索において、検索変数の示すインデックスフラグ２２００のビット位置がビット４であった場合、ソフトウェア処理部１４００は、上述したようにインデックスフラグ２２００のビット０〜ビット３をマスクしたビット情報をビット検索サポートレジスタ２３００に書き込み、ビット検索器１６００にインデックスフラグ２２００の検索を行わせている。このとき、ビット検索器１６００の検索結果には、検索変数が示すビット４に１が記録されているという判定結果と、それよりも上位のビット５〜ビット１５のいずれかに１が記録されているという判定結果と、ビット４〜ビット１５には１が記録されているビットは無いという判定結果とがある。
検索変数が示すビット４に１が記録されているという判定結果であれば、ビット検索器１６００によるインデックスフラグ２２００の検索結果は、検索変数が示すインデックスフラグ２２００のビット位置と同じになる。また、ビット５〜ビット１５のいずれかに１が記録されているという判定結果であれば、ビット検索器１６００のインデックスフラグ２２００の検索結果と、検索変数が示すインデックスフラグ２２００のビット位置とは異なる。
ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置を検索変数が示している場合には（ステップＳ３１／ｙｅｓ）、ソフトウェア処理部１４００はステップＳ３２に移行する。
【００９１】
ステップＳ３２では、ソフトウェア処理部１４００は、ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置が、データ更新フラグ２１００の検索開始行を示しており、検索回数が０回であるか否かを判定する。
ステップＳ３１で、ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置を検索変数が示していると判定された場合（ステップＳ３１／ｙｅｓ）、ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置と、データ更新フラグ２１００の検索開始行とが一致する。この場合、図１４（Ａ）に示すようにデータ更新フラグ２１００の検索開始行の途中のビット（図１４（Ａ）に示す例では、ビット２）から検索を開始してしまう可能性がある。すなわち、前回の検索終了位置から検索を開始するため、検索開始行の途中のビットから検索を開始する可能性がある。このため、ステップＳ３２の判定ステップを設けている。
ステップＳ３２の判定結果がｙｅｓの場合、すなわち、データ更新フラグ２１００の初回の検索では、ソフトウェア処理部１４００は、図１４（Ｂ）に示すように検索変数が示すデータ更新フラグ２１００のビット位置よりも小さいビットをマスクしたビット情報をビット検索サポートレジスタ２３００に書き込む（ステップＳ３４）。なお、ここでの検索変数は、データ更新フラグ２１００の検索位置を示す変数である。また、ステップＳ３２の判定結果がｎｏの場合、ソフトウェア処理部１４００は、図１４（Ｃ）に示すように検索変数が示すデータ更新フラグ２１００のビット位置以下のビットと、検索開始位置のデータ更新フラグ２１００のビット及びこのビットよりも上位のビットとをマスクし、マスクしたデータ更新フラグ２１００のビット情報をビット検索サポートレジスタ２３００に書き込む（ステップＳ３３）。
【００９２】
次に、ソフトウェア処理部１４００は、ビット検索ステータスレジスタ２４００を参照して、１が記録されているデータ更新フラグ２１００のビットがあるか否かを判定する（ステップＳ３５）。
ソフトウェア処理部１４００は、ビット検索ステータスレジスタ２４００に１が記録されていると判定されたデータ更新フラグ２１００のビット位置情報が記録されていなかった場合には（ステップＳ３５／ｙｅｓ）、データ更新フラグ２１００の検索位置を示す検索変数をデータ更新フラグ２１００の０ビット（先頭）に変更する。また、インデックスフラグ２２００のビット位置を示す検索変数を、ステップＳ３３、Ｓ３４で処理したビット位置から１つ下の行に変更する。例えば、ステップＳ３３、Ｓ３４の処理をデータ更新フラグ２１００の３行目で行っていれば、処理対象の行をデータ更新フラグ２１００の４行目に移す。
【００９３】
また、ステップＳ３１で、ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置を検索変数が示していない場合には（ステップＳ３１／ｎｏ）、ソフトウェア処理部１４００はステップＳ４０に移行する。
【００９４】
ステップＳ４０では、ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置を検索変数が示していない。このため、ソフトウェア処理部１４００は、ビット検索器１６００によって１が記録されていると判定されたインデックスフラグ２２００のビット位置を検索変数の示す位置とする（ステップＳ４０）。
【００９５】
次に、ソフトウェア処理部１４００は、ステップＳ４０で変更した検索変数が示す行のデータ更新フラグ２１００のビット情報を、ビット検索サポートレジスタ２３００に書き込む（ステップＳ４１）。
ビット検索器１６００は、ビット検索サポートレジスタ２３００に書き込まれたデータ更新フラグ２１００のビット情報から、１が記録されているデータ更新フラグ２１００のビット位置を検索する。ビット検索器１６００は、検索結果をビット検索ステータスレジスタ２４００に格納する。
【００９６】
ソフトウェア処理部１４００は、ビット検索ステータスレジスタ２４００を参照して、ビット検索器１６００によるデータ更新フラグ２１００の検索結果を判定する。１が記録されているデータ更新フラグ２１００のビットを検出すると、検出したデータ更新フラグ２１００のビット位置に検索変数を設定する（ステップＳ４２）。
【００９７】
次に、ソフトウェア処理部１４００は、検索変数が示すＩＤ毎バッファの記憶領域からフレームデータを読み出して送信用メッセージボックス１１１２Ｂに格納し、該当するデータ更新フラグ２１００のフラグ情報を１から０に変更する（ステップＳ４３）。
【００９８】
次に、ソフトウェア処理部１４００は、検索変数の示すデータ更新フラグ２１００のビット位置を次のビットへ１ビットシフトし（ステップＳ４４）、フレームデータの発見回数をカウントするカウンタの値を１インクリメントする（ステップＳ４５）。
【００９９】
次に、ソフトウェア処理部１４００は、ＩＤ毎バッファ１５０１の最後の記憶領域まで検索を終了したか否かを判定する（ステップＳ３７）。ＩＤ毎バッファ１５０１の最後の記憶領域まで検索を終了した場合には（ステップＳ３７／ｙｅｓ）、ソフトウェア処理部１４００は、検索変数を初期化して（ステップＳ３８）、検索回数を示すカウンタの値を１インクリメントする（ステップＳ３９）。また、ＩＤ毎バッファ１５０１の最後の記憶領域まで検索を終了していない場合には（ステップＳ３７／ｎｏ）、ソフトウェア処理部１４００は、ステップＳ３１から繰り返し処理を行う。
【０１００】
このように本実施例は、データ更新フラグ２１００の複数ビットの情報を集約したインデックスフラグ２２００を設け、インデックスフラグ２２００の検索を行ってから該当するデータ更新フラグの検索を行う。このため、フレームデータを記憶したＩＤ毎バッファの記憶領域の検索を効率的に行うことができる。
また、前回ビット検索器１６００が検索したフレームデータの記憶領域よりもよりも送信順位が高いフレームデータを記憶した記憶領域のフラグ情報をマスクする。これにより、フレームデータを平準化してデータ送信するときに有効な検索を提供することができる。
【０１０１】
なお、ＩＤ毎バッファ１５０１、１５０２に格納されたフレームデータを送信順に検索する処理として、間接テーブルとフレームデータに付加されたラベル値とを用いてもよい。ラベル値とは、検索エンジン部１３１０によって送信ＦＩＦＯ１３３１、１３３３、１３３５、１３３７に書き込まれるときにフレームデータに付与される情報であり、複数ビットの情報を有している。
ソフトウェア処理部１４００は、フレームデータに付与されたラベル値から間接テーブルを参照して、フレームデータに対する処理を決定する。図１５に間接テーブルの一例を示す。また、図１６に送信ＦＩＦＯに書き込まれる時のフレームデータの構成示す。
【０１０２】
図１５に示す間接テーブルは、フレームデータの種別を示す１バイトの情報と、ＩＤ毎バッファの格納位置を示す１バイトの情報とがラベル値ごとに区分けして記録されている。例えば、図１５に示す間接テーブルでは、ラベル値が１５のフレームデータは、状態系の一般フレームデータであり、一般ＩＤ毎バッファの［０ｘ１０］に格納するように示されている。また、ラベル値が１６のフレームデータは、状態系の優先フレームデータであり、優先ＩＤ毎バッファの［０ｘ２０］に格納するように示されている。なお、優先ＩＤ毎バッファとは、優先的に送信するフレームデータを格納するＩＤ毎バッファであり、一般ＩＤ毎バッファは、優先的には送信しないフレームデータを格納するＩＤ毎バッファである。図９に示す各ＩＤ毎バッファ１５０１、１５０２、・・・は、優先ＩＤ毎バッファ又は一般ＩＤ毎バッファに設定されている。
【０１０３】
図１７（Ａ）に、図１５の間接テーブルに記録されたフレーム種別を示す１バイトの情報の一例を示し、図１７（Ｂ）に、同じく間接テーブルに記録されたＩＤ毎バッファの格納位置を示す１バイトの情報の一例を示す。
フレームデータの種別を示す１バイトの情報は、図１７（Ａ）に示すようにビット０に一般フレームデータであるのか、優先フレームデータであるのかが示されており、ビット１には、状態系フレームデータであるのか、イベント系フレームデータであるのかが示されている。状態系フレームデータが送信順を平準化をして送信するフレームデータであり、イベント系フレームデータが送信ＦＩＦＯに格納された順に、送信用メッセージボックス１１１２Ｂに格納して送信するフレームデータである。
また、図１７（Ｂ）に示すＩＤ毎バッファ格納位置情報は、ＩＤ毎バッファへの格納位置を示す情報である。イベント系フレームデータは、ＩＤ毎バッファには格納しないので、フレーム種別がイベント系フレームデータであった場合には、ＩＤ毎バッファ格納位置情報の参照は行わない。
【０１０４】
上述した実施例は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
例えば、上述した実施例では、通信装置（ゲートウェイ装置１０００におけるデータ検索装置（ソフトウェア処理部１４００）を例に説明を行ったが、表示装置等の通信装置以外の装置に適用することも可能である。
【０１０５】
以上本発明の好ましい一実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１０６】
１０００  ゲートウェイ装置
１１１０、１１２０、１１３０  ＣＡＮコントローラ
１１１１  バッファ
１１１２  メッセージボックス
１１１２Ａ  受信用メッセージボックス
１１１２Ｂ  送信用メッセージボックス
１１１３  フラグ
１１１４  ＣＡＮ通信部
１２００  ＣＡＮインタフェース部
１３００  ハードウェア中継部
１３１０  検索エンジン部
１３２０  ルーティングマップ
１３３０  送信バッファ
１３３１、１３３３、１３３５、１３３７  送信ＦＩＦＯ
１３３２、１３３４、１３３６、１３３８  メッセージカウンタ
１４００  ソフトウェア処理部
１５０１、１５０２  ＩＤ毎バッファ
１６００  ビット検索器
２１００  データ更新フラグ
２２００  インデックスフラグ
２３００  ビット検索サポートレジスタ
２４００  ビット検索ステータスレジスタ
【図１】
0004478731.tif 000002
【図２】
0004478731.tif 000003
【図３】
0004478731.tif 000004
【図４】
0004478731.tif 000005
【図５】
0004478731.tif 000006
【図６】
0004478731.tif 000007
【図７】
0004478731.tif 000008
【図８】
0004478731.tif 000009
【図９】
0004478731.tif 000010
【図１０】
0004478731.tif 000011
【図１１】
0004478731.tif 000012
【図１２】
0004478731.tif 000013
【図１３】
0004478731.tif 000014
【図１４】
0004478731.tif 000015
【図１５】
0004478731.tif 000016
【図１６】
0004478731.tif 000017
【図１７】
0004478731.tif 000018