(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-07
(45)【発行日】2024-11-15
(54)【発明の名称】送信装置、送信方法、及び移動体
(51)【国際特許分類】
H04L 69/00 20220101AFI20241108BHJP
H04L 49/9057 20220101ALI20241108BHJP
G06F 13/28 20060101ALI20241108BHJP
G06F 13/38 20060101ALI20241108BHJP
【FI】
H04L69/00
H04L49/9057
G06F13/28 310Z
G06F13/28 310J
G06F13/38 310B
(21)【出願番号】P 2022565321
(86)(22)【出願日】2021-11-22
(86)【国際出願番号】 JP2021042805
(87)【国際公開番号】W WO2022113933
(87)【国際公開日】2022-06-02
【審査請求日】2023-05-23
(31)【優先権主張番号】P 2020194635
(32)【優先日】2020-11-24
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】100120031
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100118876
【氏名又は名称】鈴木 順生
(72)【発明者】
【氏名】浅井 大史
(72)【発明者】
【氏名】大西 亮吉
【審査官】中川 幸洋
(56)【参考文献】
【文献】米国特許出願公開第2014/0006481(US,A1)
【文献】Tian He, et al.,AIDA: Adaptive Application Independent Data Aggregation in Wireless Sensor Networks,ACM Transactions on Embedded Computing Systems,Volume 3 Issue 2,2004年05月01日,https://apps.dtic.mil/sti/pdfs/ADA436798.pdf
(58)【調査した分野】(Int.Cl.,DB名)
H04L 69/00
H04L 49/9057
G06F 13/28
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
データを記憶可能な記憶部におけるメモリ領域の割り当てを管理するバッファ管理部と、
データを格納可能な送信バッファと、
第1アプリケーションに関する第1データを格納する第1バッファ部から前記第1データが入力されると、前記第1データを前記送信バッファに書き込む第3書き込み部と、
前記送信バッファに前記第1データに書き込まれたことを検出して、第1メモリ領域と第2メモリ領域とを含む第1バッファの割り当てを前記バッファ管理部に要求し、前記バッファ管理部により前記記憶部に前記第1バッファが確保されたことに応じて、前記送信バッファから前記第1データを読み出し
て、読み出した前記第1データを
前記第1バッファにおける前記第1メモリ領域に書き込む第1書き込み部と、
第2アプリケーションに関する第2データを格納する第2バッファ部から前記第2データ
が入力されると、前記記憶部に確保されている前記第1バッファを特定し、前記第1バッファにおける前記第2メモリ領域に前記第2データを書き込む第2書き込み部と、
前記第2データの書き込みが完了すると、前記第1バッファの前記第1メモリ領域における前記第1データ
と前記第2メモリ領域における前記第2データとを読み出し、
読み出した前記第1データと前記第2データとを含むパケットを生成するパケット生成部と、
を備えた送信装置。
【請求項2】
前記第1書き込み部は、CPUによって前記送信バッファから前記第1データをコピーすることにより前記第1バッファにおける前記第1メモリ領域に前記第1データの書き込みを行い、
前記第2書き込み部は、DMAによって前記第1データの前記第2メモリ領域への書き込みを行う、
請求項1に記載の送信装置。
【請求項3】
前記第1バッファの前記第2メモリ領域に前記第2データが書き込まれる前まで、前記第1データが前記第1メモリ領域に書き込まれた前記第1バッファは保持される
請求項1に記載の送信装置。
【請求項4】
前記第1バッファは、前記第1メモリ領域及び前記第2メモリ領域と、ヘッダ用の第3メモリ領域とを含み、
前記パケット生成部は、前記第1メモリ領域のうち前記第1データが格納されている範囲に基づき、前記パケットにおいて前記第1データが含まれる位置を特定する第1位置情報を生成し、
前記パケット生成部は、前記第1メモリ領域のうち前記第2データが格納されている範囲に基づき、前記パケットにおいて前記第2データが含まれる位置を特定する第2位置情報を生成し、
前記パケット生成部は、前記第1位置情報と前記第2位置情報とを含むヘッダを生成し、
生成した前記ヘッダを前記第3メモリ領域に格納し、
前記パケット生成部は、前記第3メモリ領域から前記ヘッダを読み出し、読み出した前記ヘッダと、読み出した前記第1データ及び前記第2データとを含む前記パケット
を生成する、
請求項
1に記載の送信装置。
【請求項5】
前記第3書き込み部は、前記第1バッファ部から複数入力される前記第1データを前記送信バッファに
順次書き込
み、
前記第1書き込み部は、前記送信バッファにおける複数の前記第1データに対して前記第1データが前記送信バッファに書き込まれた順番に前記バッファ管理部に前記第1バッファの割り当てを要求して前記記憶部に前記第1バッファを確保し、
前記第2書き込み部は、前記第2バッファ部から前記第2データが入力されるごとに、前記第1バッファが確保された順番に前記第1バッファを特定して、特定した前記第1バッファにおける前記第2メモリ領域に前記第2データを書き込み、
前記パケット生成部は、前記第2データが書き込まれた前記第1バッファから順番に前記パケットを生成する、
請求項1~
4のいずれか一項に記載の送信装置。
【請求項6】
前記第2データは、前記第1データよりも送信の時間制約が短いデータである
請求項1~
5のいずれか一項に記載の送信装置。
【請求項7】
前記パケットを送信する送信部
を備えた請求項1~
6のいずれか一項に記載の送信装置。
【請求項8】
前記第1データを検出する第1センサと、
前記第2データを検出する第2センサと、
前記第1バッファ部と、
前記第2バッファ部と、
請求項5に記載の送信装置と、を備え、
前記第1バッファ部は、前記第1データを検出する第1センサ
によって検出された前記第1データを順次格納し、格納された順に前記第1データを前記第3書き込み部に出力し、
前記第2バッファ部は、前記第2データを検出する第2センサ
によって検出された前記第2データを順次格納し、格納された順に前記第2データを前記第2書き込み部に出力する、
移動体。
【請求項9】
第1アプリケーションに関する第1データを格納する第1バッファ部から前記第1データが入力されると、前記第1データを送信バッファに書き込み、
前記第1データが前記送信バッファに書き込まれたことを検出して、第1メモリ領域と第2メモリ領域とを含む第1バッファを記憶部に確保し、
前記第1バッファが確保されたことに応じて、前記送信バッファから前記第1データを読み出し、読み出した前記第1データを前記第1バッファにおける第1メモリ領域に書き込み、
第2アプリケーションに関する第2データを格納する第2バッファ部から前記第2データが入力されると、前記記憶部に確保されている前記第1バッファを特定し、前記第1バッファにおける前記第2メモリ領域に前記第2データを書き込み、
前記第2データの書き込みが完了すると、前記第1バッファの前記第1メモリ領域における前記第1データと前記第2メモリ領域における前記第2データとを読み出し、読み出した前記第1データと前記第2データとを含むパケットを生成し、
前記パケットを送信する、
送信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、送信装置、受信装置、送信方法、受信方法及び移動体に関する。
【背景技術】
【0002】
パケット交換方式では、一連のデータをパケットに分割して、送信装置から受信装置に送信する。送信装置及び受信装置が備えているネットワークインターフェイスカード(NIC: Network Interface Card)は、ディスクリプタと呼ばれる構造体をリング状に保持したリングバッファと呼ばれるFIFOバッファを実装していることが多い。ディスクリプタは、パケットが格納されるメモリ領域へのポインタやパケットサイズなどを記述した情報である。パケット受信時は、NICからディスクリプタで指定されたメモリ領域に対し ダイレクトメモリアクセス(Direct Memory Access:DMA)によりパケットが書き込まれる。パケット送信時はディスクリプタで指定されたメモリ領域のパケットをメモリからNICにDMAにより転送し、NICからパケットを送信する。
【0003】
アプリケーションにおいてデータを送信又は受信する際は通常、オペレーティングシステム(Operating System:OS)のカーネル内で、パケット化又は再合成を行う。パケット化は、ディスクリプタで指定したメモリ領域に、一連のデータの一部(例えばデータグラム・セグメント)をコピーすることで行われる。また、再合成も、受信したパケットを連続したメモリ領域にコピーすることで、一連のデータとしてアプリケーションから扱えるようにする。一般にこのコピー処理はCPUの高負荷となるため、ディスクリプタで指定するメモリ領域を直接、アプリケーションから操作することで、CPUによるコピー処理を無くし、低遅延化及び高速化を図る技術も提案されている。
【0004】
しかし、複数のアプリケーションのデータを1つのパケットに合成する場合、又は1つのパケットに含まれる複数のアプリケーションのデータをアプリケーションごとに再合成する場合に、コピー処理を減らすことは容易ではない。
【先行技術文献】
【非特許文献】
【0005】
【文献】Rizzo, Luigi. "Netmap: a novel framework for fast packet I/O." In 21st USENIX Security Symposium (USENIX Security 12), pp. 101-112. 2012.Harvard
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示は、複数のアプリケーションのデータを1つのパケットで送信又は受信する場合の送信処理又は受信処理の負荷を低減する送信装置、受信装置、送信方法、受信方法及び移動体を提供する。
【課題を解決するための手段】
【0007】
本開示の送信装置は、第1アプリケーションに関する第1データを格納する送信バッファから前記第1データを読み出し、読み出した前記第1データを第1メモリ領域に書き込む第1書き込み部と、前記第1メモリ領域に前記第1データが書き込まれた後、第2アプリケーションに関する第2データの送信要求が発生した場合に、前記第1メモリ領域における前記第1データを読み出し、前記第1データと前記第2データとを含むパケットを生成するパケット生成部と、を備える。
【0008】
本開示の移動体は、前記第1データを検出する第1センサと、前記第2データを検出する第2センサと、前記送信装置と、を備える。
【0009】
本開示の受信装置は、第1データと第2データとを含むパケットが受信された場合に、前記パケットに対して第1バッファを割り当てるバッファ管理部と、前記パケットに含まれる前記第1データ及び前記第2データを前記第1バッファに書き込むパケット処理部と、前記第1バッファから前記第1データを読み出し、前記第1データを第1アプリケーションに対して出力する第1読出部と、前記第1データが前記第1バッファから読み出された後、前記第2データを前記第1バッファから読み出し、前記第2データを受信バッファに書き込む書き込み部と、前記受信バッファから前記第2データを読み出し、前記第2データを第2アプリケーションに対して出力する第2読出部と、を備える。
【0010】
本開示の受信装置は、第1データと第2データとを含むパケットが受信された場合に、前記第1データに対して第1バッファを割り当て、前記第2データに対して第2バッファを割り当てるバッファ管理部と、前記第1データを前記第1バッファに書き込み、前記第2データを前記第2バッファに書き込むパケット処理部と、前記第1バッファから前記第1データを読み出し、前記第1データを第1アプリケーションに対して出力する第1読出部と、前記第2バッファから前記第2データを読み出し、前記第2データを受信バッファに書き込む書き込み部と、前記受信バッファから前記第2データを読み出し、前記第2データを第2アプリケーションに対して出力する第2読出部と、を備える。
【0011】
本開示の送信方法は、第1アプリケーションに関する第1データを格納する送信バッファから前記第1データを読み出し、読み出した前記第1データを第1メモリ領域に書き込み、前記第1メモリ領域に前記第1データが書き込まれた後、第2アプリケーションに関する第2データの送信要求が発生した場合に、前記第1メモリ領域における前記第1データを読み出し、前記第1データと前記第2データとを含むパケットを生成し、前記パケットを送信する。
【図面の簡単な説明】
【0012】
【
図1】本実施形態に係る通信システムのブロック図。
【
図4】本実施形態に係る送信装置における送信処理部の詳細ブロック図。
【
図6】第1実施形態においてパケットを生成する動作の一例を示す図。
【
図7】第1実施形態に係る送信装置における動作の一例を示すフローチャート。
【
図8】第2実施形態に係る送信装置における送信処理部の詳細ブロック図。
【
図9】2つのディスクリプタが示すバッファの状態を模式的に示す図。
【
図10】第1実施形態においてパケットを生成する動作の一例を示す図。
【
図11】第2実施形態に係る送信装置における動作の一例を示すフローチャート。
【
図12】第3実施形態に係る送信装置における送信処理部の他の構成例を示す図。
【
図13】2つのディスクリプタが示すバッファの状態を模式的に示す図。
【
図14】第3実施形態においてパケットを生成する動作の一例を示す図。
【
図15】第3実施形態に係る送信装置における動作の一例を示すフローチャート。
【
図16】第4実施形態に係る受信装置における受信処理部の詳細ブロック図。
【
図17】ディスクリプタが示すバッファを模式的に示す図。
【
図18】第4実施形態においてパケットを受信する動作の一例を示す図。
【
図19】第4実施形態に係る受信装置における動作の一例を示すフローチャート。
【
図20】第5実施形態に係る受信装置における受信処理部の詳細ブロック図。
【
図21】2つのディスクリプタが示すバッファの状態を模式的に示す図。
【
図22】第5実施形態に係る受信装置における動作の一例を示すフローチャート。
【
図23】前述した実施形態における各装置のハードウェア構成例のブロック図。
【発明を実施するための形態】
【0013】
以下、図面を参照して、本開示の実施形態について説明する。図面は、本開示の実施形態を一例として模式的に示すものであり、本開示の実施形態は、図面に開示された形態に限定されるものではない。複数の図において同一の要素には同一の符号を付し、説明済みの要素の説明は適宜省略する。
【0014】
(第1実施形態)
図1は、本実施形態に係る通信システムのブロック図である。
図1の通信システムは、送信装置10を搭載した複数の移動体Mと、受信装置20とを備える。送信装置10及び受信装置20は、本実施形態に係る通信装置又は無線通信装置の一例に相当する。
【0015】
移動体Mは、自動車、ロボット、船舶、ドローン、モバイル端末(スマートフォン、タブレット端末等)、又は電車など、任意の移動体である。本実施形態では送信装置10は移動体に搭載されているが、送信装置10は固定設置された端末又はマシンに搭載されてもよい。本実施形態では移動体Mが自動車である場合を想定する。自動車は、ユーザの運転を支援する機能を有する自動車、及び自律的に判断して走行する自動運転車のいずれでもよい。
【0016】
送信装置10は、通信ネットワーク30に接続されている。通信ネットワーク30は、一例として、モバイルネットワーク又は無線LAN(Local Area Network)等のネットワークである。モバイルネットワークの例として、3Gネットワーク,LTEネットワーク、次世代(5G)ネットワークなどがあるが、ネットワークの種類は何でもよい。また、通信ネットワーク30は、無線ネットワークでも、有線ネットワークでもよい。通信ネットワーク30は、複数種類のネットワークを含んでいてもよい。この場合、送信装置10が、受信装置20との通信に用いるネットワークを複数種類のネットワークから選択してもよい。本実施形態では送信装置10は無線通信を行うが、有線通信を行う構成でもよい。通信ネットワーク30には、データ又はパケットを中継する1台以上の中継装置が含まれていてもよい。
【0017】
送信装置10は、移動体Mに設けられた1つ又は複数のセンサからデータを取得する。一つ又は複数のセンサは固定設置された端末又はマシンに設けられていてもよい。1つ又は複数のセンサは、受信装置における1つ又は複数のアプリケーションに提供するデータを検出する。複数のセンサにより検出されるデータは、互いに異なるアプリケーションのデータである。複数のアプリケーションのデータは互いに異なるデータフローに属する。送信装置10は、各センサにより検出されるデータを、受信装置20に送信する。より詳細には、送信装置10は、1つ又は複数のセンサのデータ(1つ又は複数のアプリケーションのデータ)を含むパケットを生成し、生成したパケットを受信装置20に送信する。複数のセンサの例は、カメラ、GPS、LiDAR(Light Detecting And Ranging)、速度センサ、加速度センサ、自動車の制御情報(エンジン回転状態、アクセルの踏み込み状態など)の検出センサ、急ブレーキの検出センサ、障害物(落下物、前方車両)の検出センサなどを含む。センサの例は上記のものに限定されない。例えば、センサは、自動車の搭乗者等のユーザから操作部を介して入力されるデータを検出するものでもよい。
【0018】
受信装置20は、通信ネットワーク30に有線又は無線により接続されている。受信装置20は例えばモバイルネットワークに配置されている。受信装置20は、モバイルネットワークのエッジコントローラでもよい。受信装置20は、送信装置10から1つ又は複数のアプリケーションに対するデータを含むパケットを受信する。受信装置20は、送信装置10から送信されたデータを処理する1つ又は複数のアプリケーションを備えている。受信装置20は送信装置10から取得したデータを、それぞれ対応するアプリケーションに渡す。
【0019】
複数のアプリケーションの例は、高精細度地図を生成するアプリケーション、エンジン制御の最適化モデルを生成するアプリケーション、道路安全情報を生成するアプリケーションなどを含む。アプリケーションによって、データ送信の時間制約、すなわち、アプリケーションにデータを提供する時間制約が異なってもよい。一例として、高精細度地図を生成するアプリケーション、及びエンジン制御の最適化モデルを生成するアプリケーションでは、データ送信の時間制約は長い(1時間、1日など)。一方、道路安全情報を生成するアプリケーションでは、データ送信の時間制約が短い(例えば10秒以下など)。一例として、時間制約の短いデータは、優先度の高いデータに対応し、時間制約の長いデータは、優先度の低いデータに対応する。
【0020】
受信装置20が中継装置として機能してもよい。この場合、受信装置20が、送信装置10から受信したデータを、1つ又は複数のアプリケーションを備える別の装置(例えばサーバ)に送信してもよい。
【0021】
送信装置10及び受信装置20は、基地局又はルータ等の中継装置を介して、互いに通信してもよい。例えば送信装置10は、所定の接続プロセスを実行することにより、近傍の基地局と無線接続する。送信装置10は、接続した基地局を介して、受信装置20と通信する。基地局と受信装置20との間の1台以上のルータが配置されていてもよい。受信装置20は、基地局と無線又は有線で接続されていてもよい。受信装置20は、複数の基地局と接続されていてもよいし、基地局と1対1で接続されていてもよい。
【0022】
図2は、送信装置10のブロック図である。送信装置10は、本実施形態に係る通信装置又は無線通信装置の一例に相当する。
【0023】
送信装置10は、複数のデータ取得部101A、101B、複数のバッファ部102A、102B、送信処理部103、制御部104、送信部105、少なくとも1つのアンテナ107を備えている。送信装置10は、アンテナ107と共に有線で接続する部分を備えていてもよいし、アンテナ107の代わりに有線で接続する部分を備えていてもよい。
【0024】
図2の例では、データ取得部は2つ設けられているが、3つ以上設けられてもよい。同様にバッファ部は2つ設けられているが、3つ以上設けられてもよい。送信部及びアンテナの組は1つ設けられているが、2つ以上設けられてもよい。
【0025】
データ取得部101A、101Bはそれぞれセンサ1A、1Bに接続されている。センサ1Aは、アプリケーションAに提供するデータを検出する。センサ1Bは、アプリケーションBに提供するデータを検出する。
図2の例ではセンサは2つであるが、3つ以上でもよい。
【0026】
複数のセンサの例は、カメラ、GPS、自動車の走行情報の検知センサ(LiDAR(Light Detecting And Ranging)、速度センサ、加速度センサ、自動車の制御情報(エンジン回転状態、アクセルの踏み込み状態など)の検出センサ、急ブレーキの検出センサ、障害物(落下物、前方車両)の検出センサなどを含む。センサは、時系列に一定間隔でデータを出力するものでも、イベントが発生したタイミングなど、特定のタイミングでデータを出力するものでもよい。センサの例は上記のものに限定されない。例えば、センサは、自動車の搭乗者等のユーザから操作部を介して入力されるデータを検出するものでもよい。
【0027】
各センサから一定間隔又は特定のタイミングで検出されるデータが、各々アプリケーションに提供されるデータとなる。
【0028】
データ取得部101A、101Bは、センサ1A、1Bで検出されたデータを取得する。センサ1Aで検出されたデータをデータA、センサ1Bで検出されたデータをデータBと記載する。データAは一例として時間制約の長いアプリケーションのデータであり、データBは一例として時間制約の短いアプリケーションのデータである場合を想定する。データ取得部101A、101Bは、取得したデータA,Bを、バッファ部102A、102Bに提供する。センサで検出されたデータは、例えばセンサの属性情報、検出時刻及びデータ本体を含む。
【0029】
バッファ部102A、102Bは、データ取得部101A、101BからデータA,Bを受け取り、受け取ったデータA,Bを内部に格納する。すなわち、バッファ部102A、102Bは、データ取得部101A、101Bから取得したデータA,Bをバッファリングする。バッファ部102Aは、データAを受け取った順序を管理しており、受け取った順序でデータAを出力する。バッファ部102Bは、データBを受け取った順序を管理しており、受け取った順序でデータBを出力する。バッファ部102A、102Bは、一例として、メモリ装置又はハードディスクなどの記録媒体により構成される。
【0030】
制御部104は、バッファ部102A、102Bからのデータの読み出し及び送信を制御する。制御部104は、一例として、アプリケーションの時間制約に応じて、バッファ部102A、102Bからデータの読み出しを制御する。制御部104はデータAの送信要求と、データBの送信要求を送信処理部103に提供する。
【0031】
送信処理部103は、制御部104の制御の下、バッファ部102A、102BからデータA、Bを読み出し、読み出したデータA、Bを含むパケット(データA,Bを多重化したパケット)を生成する。一例として送信処理部103ではIP(Internet Protocol)、UDP(Internet Protocol)又はTCP(Internet Protocol)の処理を行い、さらに上位及び下位の少なくとも一方のプロトコルの処理を行う。両データを多重化する際、両データA,Bに共通のUDPヘッダ又はTCPヘッダを付加してもよいし、データA,Bのそれぞれで独立してUDPヘッダ又はTCPヘッダを付加して、1つのパケットへ多重化してもよい。UDP又はTCPの上位層としてUDPデータグラム及びTCPセグメントの少なくとも一方を多重化するプロトコルを導入してもよい。本実施形態では1つのパケットに複数のアプリケーションのデータを多重化できる限り、どのような方法を用いてもよい。
【0032】
送信部105は、通信ネットワーク30を介して、受信装置20と通信する。送信部105は、送信処理部103から提供されたパケットに下位層のプロトコルの処理を行って、処理後のパケットを、アンテナ107を介して送信する。より詳細には、送信部105は、当該処理後のパケットを変調及びDA変換してアナログ信号とし、所望帯域の信号の抽出、及び抽出した信号の無線周波数へのアップコンバートを行う。送信部105は、無線周波数の信号をアンプで増幅等し、増幅された無線周波数の信号を、アンテナ107を介して送信する。下位層のプロトコルの処理は一例としてデータリンク層及び物理層の処理を含む。データリンク層は、一例として、イーサネット(登録商標)又はIEEE802.11のプロトコルを含む。データリンク層及び物理層の少なくとも一方の処理を送信処理部103で行ってもよい。
【0033】
図3は、受信装置20のブロック図である。受信装置20は、データ処理部(アプリケーション)201A、201B、バッファ部202A、202B、受信処理部203、受信部205、及びアンテナ207を備えている。受信装置20は、本実施形態に係る無線通信装置又は通信装置の一例に相当する。本実施形態では受信装置20は無線通信を行うが、有線通信を行う構成も排除されない。
【0034】
図3の例では、データ処理部は2つであるが、3つ以上でもよい。同様にバッファ部は2つであるが、3つ以上でもよい。また、受信部及びアンテナの組は1つであるが、2つ以上でもよい。
【0035】
受信部205は、通信ネットワーク30を介して、送信装置10から送信されたパケットを受信する。より詳細には、受信部205は、アンテナ207を介して無線信号を受信し、受信した信号を増幅し、ベースバンド周波数へダウンコンバートする。ダウンコンバートされた信号から所望帯域の信号を抽出し、抽出した信号をAD変換する。AD変換により得たデジタル信号を復調する。受信部205は、復調されたパケットに対して下位層のプロトコルの処理を行い、処理後のパケットを受信処理部203に提供する。
【0036】
受信処理部203は上記の下位層より上位のプロトコルの処理を行い、パケットからデータAとデータBとを分離する。受信処理部203は、データAをバッファ部202Aに提供し、データBをバッファ部202Bに提供する。
【0037】
バッファ部202A、202Bは、受信処理部203から提供されたデータを内部に格納する。すなわち、バッファ部202A、202Bは、受信処理部203から提供されたデータをバッファリングする。バッファ部202A、202Bは、バッファリングしているデータを、受け取った順序で出力する。出力するデータの種類に応じて、バッファ部202A、202Bからデータを出力する方式が異なってもよい。一例として、バッファ部202A、202Bは、データ処理部201A、201Bからの要求に応じてデータを出力してもよい。あるいは、バッファ部202A、202Bは、データが入力されると直ちにデータを出力してもよい。あるいは、バッファ部202A、202Bは、バッファリングしているデータを一定の時間間隔で出力してもよい。バッファ部202A、202Bは、一例として、メモリ装置又はハードディスクなどの記録媒体により構成される。
【0038】
データ処理部201A、201Bは、各々アプリケーションを実行することにより、バッファ部202A、202Bから提供されたデータを処理するアプリケーション実行部である。一例として、データ処理部201Aは、アプリケーションAとCPUとを備えており、CPUがアプリケーションAを実行する。データ処理部201Bは、一例としてアプリケーションBとCPUとを備えており、CPUがアプリケーションBを実行する。アプリケーションの例として、高精細度地図の生成、エンジン制御の最適化モデルの生成、道路安全情報の生成などがあるが、これらは一例に過ぎず、他にも様々なアプリケーションがある。
【0039】
図4は、送信処理部103の詳細ブロック図である。送信処理部103は、書き込み部120(第3書き込み部)、送信バッファ121、書き込み部122A(第1書き込み部)、書き込み部122B(第2書き込み部)、バッファ管理部123、パケット生成部125、及び記憶部126(メモリ装置)を備えている。送信バッファ121及び記憶部126は、メモリなどの記録媒体により構成される。メモリは揮発性メモリ、不揮発性メモリ又はこれらの両方でもよい。送信バッファ121及び記憶部126は、同一の記録媒体でも、別々の記録媒体でもよい。書き込み部120、書き込み部122A、書き込み部122B、バッファ管理部123、パケット生成部125の処理は、一例としてCPU(Central Processing Unit)等のプロセッサにより実行される。一例として、書き込み部122A、バッファ管理部123、パケット生成部125の処理の全部又は一部はOS(Operating System)によって実行され、書き込み部120及び書き込み部122Bの処理の全部又は一部はデータ送信用のアプリケーションによって実行される。書き込み部120のアプリケーションと書き込み部122Bのアプリケーションは同じであっても、異なってもよい。
【0040】
送信バッファ121は、所定サイズの記憶領域(例えばメモリ領域)である。書き込み部120は、バッファ部102AからデータAが入力されるごとに、送信バッファ121にデータAを書き込む。データAが送信バッファ121に順次格納される。データAは送信バッファ121における所定のアドレスから順番に格納される。送信バッファ121は一例としてFIFOバッファにより構成される。
【0041】
バッファ管理部123は、送信処理部103の初期化時に、記憶部126にディスクリプタを格納するメモリ領域を確保(生成)する。ディスクリプタのメモリ領域は一例としてリングバッファで構成される。
【0042】
またバッファ管理部123は、書き込み部122Aの要求に応じて、記憶部126にメモリ領域であるパケットバッファ(第1バッファ)を1つ以上割り当てる(生成する)。パケットバッファは、送信処理部103で生成するパケットのサイズ以上のメモリ領域を有する。パケットバッファは、一例として、一定のサイズを有する。なお、バッファ管理部123は所定個数(1個以上)のパケットバッファを記憶部126に予め生成しておいてもよい。
【0043】
図5は、パケットバッファの構成例を示す。パケットバッファはヘッダ用のメモリ領域HRと、データB用の領域RB(第2メモリ領域)と、データA用の領域RA(第1メモリ領域)とを有する。データA用の領域RAは開始アドレスSAから開始し、データB用の領域は開始アドレスSBから開始する。データA用の領域RAが、データB用の領域RBより前に位置してもよい。データB用の領域RBは、一例としてデータBの最大サイズに応じたサイズを有する。データA用の領域RAは、一例としてデータB用の領域RBのサイズとヘッダ用の領域HRのサイズと、パケットの最大サイズとに応じて決定する。
【0044】
バッファ管理部123はパケットバッファをバッファ識別子とバッファ識別子に対応するディスクリプタとで管理する。ディスクリプタは一例としてパケットバッファのアドレス(ポインタ)、格納されているデータのサイズ、アプリケーションの識別子、開始アドレスSB、開始アドレスSAなど、種々の属性を有する。ディスクリプタは一例としてリングバッファで管理される。
【0045】
書き込み部122Aは、送信バッファ121にデータAが格納されている場合、送信バッファ121に格納されているデータAのうちまだ読み出していないデータAを先頭側から読み出す。書き込み部122Aは、読み出したデータAを、ディスクリプタの情報に基づきパケットバッファにおける開始アドレスSAから書き込む(格納する)。開始アドレスSAをアプリケーションが指定してもよい。送信バッファ121から読み出すデータAのサイズは、データA用領域RAのサイズ以下である。なお、送信バッファ121に書き込む(バッファ部202Aから読み出す)データAのサイズと、送信バッファ121から読み出す(パケットバッファに書き込む)データAのサイズとが同じである必要はない。送信バッファ121にデータAが残っている場合は、パケットバッファの個数が閾値(1以上の整数)に達するまで、パケットバッファを生成して、生成したパケットバッファにデータAを送信バッファ121から読み出して、書き込んでもよい。なお、データAにデータBとは独立したプロトコルの処理を行う必要がある場合は、書き込み部122AはデータAに当該プロトコルの処理を行ってからパケットバッファに書き込んでもよい。
【0046】
書き込み部122Bは、バッファ部102BからデータBが入力されると、データBを書き込むバケットバッファに関するディスクリプタの情報を、バッファ管理部123又は書き込み部122Aから取得する。データBを書き込むパケットバッファは、データAが既に書き込まれているパケットバッファである。書き込み部122Bは、ディスクリプタの情報に基づき、パケットバッファの開始アドレスSBを特定する。開始アドレスSBをアプリケーションが指定してもよい。書き込み部122Bは、パケットバッファの開始アドレスSBからデータBを書き込む。書き込み部122Bの書き込みは、一例としてDMA(Direct Memory Access)により行われる。書き込むデータBのサイズは、データB用領域RBのサイズ以下である。書き込み部122BはデータBの書き込みを完了すると、データBを書き込んだバケットバッファに関するディスクリプタの情報を、パケット生成部125に提供する。すなわち、パケットバッファにデータBの書き込みが完了したことの通知情報、又はパケットの送信要求をパケット生成部125に送る。なお、データBにデータAとは独立したプロトコルの処理を行う場合は、書き込み部122BはデータBに当該プロトコルの処理を行ってからパケットバッファに書き込んでもよい。
【0047】
パケット生成部125は、パケットバッファにデータBの書き込みが完了したことの通知情報を受けると(データBの送信要求が発生すると)、パケットバッファに対応するファイルディスクリプタにアクセスする。パケット生成部125はパケットバッファに格納されているデータAとデータBとの情報に基づきヘッダを生成する。パケット生成部125のヘッダ書き込み部131は、生成されたヘッダを、パケットバッファにおけるヘッダ用領域HRに書き込む。
【0048】
ヘッダのサイズは、ヘッダ用領域HRと同じでも、ヘッダ用領域HRより小さくてもよい。例えば、複数種類のヘッダ又は可変長のヘッダに対応できるように、ヘッダ用領域HRのサイズに余裕を持たせておいてもよい。ヘッダはデータB用領域RBに隣接するよう末尾アドレス側に詰めて(紙面に沿って右詰めで)、格納する。但し、ヘッダをヘッダ用領域HRの先頭アドレスから(紙面に沿って左詰めで)、格納してもよい。
【0049】
パケット生成部125は、パケットバッファにおいてヘッダからパケットバッファの末尾アドレスまでの全データを読み出し、パケットとする。すなわち、HR領域に格納したヘッダと、データB用領域RBの全データと、データA用領域RAの全データとを結合しパケットとする。パケット生成部125の読み出しは、一例としてDMAにより行われる。データB用領域RBの全データは、当該領域RBにデータBが格納されていない領域が存在する場合は、当該領域のデータも含む。データA用領域RAの全領域データは、当該領域RAにデータAが格納されていない領域が存在する場合は、当該領域のデータも含む。送信処理部103で処理するプロトコルの種類に応じて、パケットの末尾にさらにエラー検出用のコード(FCS又はCRC)等を付加したり、誤り訂正符号を用いてパケットを符号化したりしてもよい。
【0050】
パケット生成部125は、ヘッダに、データAが格納されている位置を示す位置情報A(第1位置情報)と、データBが格納されている位置を示す位置情報B(第2位置情報)とを含める。位置情報Aは、例えば、パケットにおいてデータAが含まれている範囲の開始バイト位置と終了バイト位置とを含む。あるいは、位置情報Aは、パケットにおいてデータAが含まれている範囲の開始バイト位置とデータAのサイズ情報とを含む。位置情報AはデータA用領域RAのうちデータAが格納されている範囲に基づき算出できる。同様に、位置情報Bは、パケットにおいてデータBが含まれている範囲の開始バイト位置と終了バイト位置とを含む。あるいは、位置情報Bは、パケットにおいてデータBが含まれている範囲の開始バイト位置とデータBのサイズ情報とを含む。位置情報BはデータA用領域RBのうちデータBが格納されている範囲に基づき算出できる。
【0051】
パケットバッファのディスクリプタにデータBが格納されているアドレス範囲、データサイズ、データB用領域RB、データAが格納されているアドレス範囲、データAのデータサイズ、データA用領域RAを示す情報を含めておいてもよい。パケット生成部125は、ディスクリプタに含まれるこれらの情報を用いて、パケットのヘッダを生成してもよい。
【0052】
パケット生成部125は生成したパケットを送信部105に提供する。送信部105はパケットに下位層のプロトコルの処理を行って、処理後のパケットを、アンテナ107を介して送信する。
【0053】
パケットバッファからデータが読み出された後、バッファ管理部123は、当該パケットバッファを削除してもよいし、他のパケットの生成用に、再利用してもよい。
【0054】
図6(A)~
図6(C)は、パケットを生成する動作の一例を示す。
図6(A)において送信バッファ121に最初にデータA(データA_1とする)が書き込まれ、次いで2回目の書き込みでデータA(データA_2とする)が書き込まれる。送信バッファ121からデータA_1が読み出され、データA_1がパケットバッファ1の開始アドレスSAから書き込まれる。つまりデータA_1が送信バッファ121からパケットバッファ1にコピーされる。データA用領域RAのうちデータAが格納されなかった余りの領域RA1のデータは任意でよい。データA_1が読み出された後、送信バッファ121からデータA_2が読み出され、データA_2がパケットバッファ2の開始アドレスSAから書き込まれる。つまりデータA_2が送信バッファ121からパケットバッファ2にコピーされる。データA用領域RAのうちデータAが格納されなかった余りの領域RA2のデータは任意でよい。送信バッファ121に読み出していないデータAが存在し、3番目のパケットバッファ以降を生成可能な場合は、3番目のパケットバッファ3についても同様にデータAを書き込んでよい。パケットバッファは生成された順番に、次のデータBの書き込みのための処理に用いられる。
【0055】
次に、
図6(B)において、データB(データB_1とする)が書き込み部122Bに入力される。書き込み部122Bはバッファ管理部123から、最初に生成されたパケットバッファ1を指定する情報(パケットバッファ1のディスクリプタ)を受ける。書き込み部122Bは、データB_1をパケットバッファ1の開始アドレスSBから書き込む。データB用領域RBのうちデータB_1が格納されなかった余りの領域RB1のデータは任意でよい。
【0056】
次に、
図6(C)において、パケット生成部125が、パケットバッファ1のデータB_1とデータA_1との情報に基づきヘッダ(HD1とする)を生成する。パケット生成部125は、ディスクリプタの情報に基づき、ヘッダHD1を生成してもよい。パケット生成部125のヘッダ書き込み部131は、ヘッダHD1をパケットバッファ1におけるヘッダ用領域HRに書き込む。
【0057】
パケット生成部125はパケットバッファ1に含まれるヘッダHD1以降の全データをパケットバッファ1から読み出し、読み出したデータに基づくパケットを送信部105に提供する。
【0058】
この後、バッファ部102Bから次のデータB(データB_2とする。図示せず)が入力された場合、データA_2が格納されたパケットバッファ2を用いて、パケットを生成する。パケット生成の詳細は、パケットバッファ1を用いた場合と同様であるため説明を省略する。
【0059】
図7は、第1実施形態に係る送信装置10における動作の一例を示すフローチャートである。バッファ部102AからデータAが入力されるごとに書き込み部120がデータAを送信バッファ121に順番に書き込む又は格納する(S101)。データAは1つ前に格納されたデータAの末尾のアドレスに連続する。バッファ管理部123が記憶部126にパケットバッファを生成し、パケットバッファのディスクリプタを生成する(S102)。ディスクリプタは記憶部126のディスクリプタ用のメモリ領域(例えばリングバッファ)に格納される。書き込み部122Aはディスクリプタに示されるパケットバッファにおける開始アドレスSAからデータAを書き込む(S103)。データAが書き込まれたパケットバッファは、データBの送信要求が発生するまで、保持される。書き込み部122Bはバッファ部102BからデータBを受けると、書き込み部122AからデータBを書き込むパケットバッファの情報(ディスクリプタ)を取得する。書き込み部122Bは、当該パケットバッファにアクセスして、データBをパケットバッファにおける開始アドレスSBから書き込む(S104)。パケット生成部125はデータAとデータBとの情報又はディスクリプタの情報に基づきヘッダを生成し、パケットバッファにおけるヘッダ用領域HRにヘッダを書き込む(S105)。パケット生成部125は、ヘッダからパケットバッファの末尾までの全データを読み出し、読み出した全データに基づくパケットを生成して、送信部105に提供する(S106)。送信部105は、パケットを、アンテナ107を介して送信する(S107)。
【0060】
なお、データBの送信要求が発生した時点で、データAが書き込まれたパケットバッファが存在しない場合は、データAが書き込まれていないパケットバッファを用いてデータBを送信してもよい。この場合、当該パケットバッファを予め用意しておいてもよいし、書き込み部122B等の要求によりバッファ管理部123にパケットバッファを生成させてもよい。あるいは、パケットバッファを用いずに、データBから直接、ヘッダを生成し、データBにヘッダを付加することにより、パケットを生成してもよい。
【0061】
以上、第1実施形態によれば、複数のアプリケーションのデータを1つのパケットで送信する場合において、少ないコピー回数(本例では1回)のみでパケットを生成することができる。例えば時間制約の短い(優先度の高い)データBについてはデータBが生成されると速やかに、予め準備しておいた時間制約の長い(優先度の低い)データAと一緒に1つのパケットで送信する。具体的には、データAについては時間制約が長いため予めデータBと一緒にいつでも送信できるようにパケットバッファに格納して送信の準備をしておく。データBの送信要求が発生した場合には、このパケットバッファ(データAが既に格納されているパケットバッファ)にデータBを書き込むことで、データBのコピーを行うことなく、データAとデータBとを含むパケットを生成することができる。よって、複数のアプリケーションのデータ(例えば時間制約の異なる複数のアプリケーションのデータ)を含むパケットを高速に生成することができ、パケット送信の遅延化を防止できる。
【0062】
(第2実施形態)
図8は、第2実施形態に係る送信装置10の送信処理部103の詳細ブロック図である。第1実施形態に係る送信装置10のブロック図(
図4)と同一又は対応する箇所のブロックには同一の符号を付して、詳細な説明を省略する。以下、第1実施形態との差異を中心に説明する。
【0063】
バッファ管理部123は、書き込み部122Aの要求に応じて、記憶部126にデータA用バッファを生成する。データA用バッファはデータAを記憶するためのメモリ領域である。バッファ管理部123は、データA用バッファのディスクリプタを生成し、生成したディスクリプタをディスクリプタ用のメモリ領域(リングバッファ等)に格納する。ディスクリプタは一例としてデータA用バッファのアドレス、データAのアプリケーションの識別子など、種々の属性を有する。書き込み部122Aは、送信バッファ121からまだ読み出していないデータAを先頭側から読み出し、読み出したデータAを、データA用バッファに先頭アドレスから格納する。記憶部126に複数のデータA用バッファを生成し、それぞれ送信バッファ121から読み出したデータAを書き込んでおいてもよい。ディスクリプタに、データAが書き込まれたアドレス範囲を特定する情報を書き込んでもよい。例えば、データAの開始アドレス及び終了アドレス、又は、データAの開始アドレスとデータサイズの組を書き込んでもよい。
【0064】
バッファ管理部123は、書き込み部122Bの要求に応じて、記憶部126にヘッダ&データB用バッファを生成する。ヘッダ&データB用バッファはヘッダとデータBとを記憶するためのメモリ領域である。ヘッダ&データB用バッファは、ヘッダ用領域HRとデータB用領域RBとを含む。データB用領域RBの先頭アドレスは開始アドレスSBに対応する。バッファ管理部123は、ヘッダ&データB用バッファのディスクリプタを生成し、生成したディスクリプタをディスクリプタ用のメモリ領域(リングバッファ等)に格納する。ディスクリプタは一例としてヘッダ&データB用バッファのアドレス、データBのアプリケーションの識別子、開始アドレスSBなど、種々の属性を有する。バッファ管理部123は、書き込み部122Bからの複数の要求に応じて、並行して複数のヘッダ&データB用バッファを生成してもよい。
【0065】
データA用バッファのサイズ及びヘッダ&データB用バッファのサイズは、第1実施形態におけるデータA用領域RA、ヘッダ用領域HR及びデータB用領域RBと同様にして定めればよい。
【0066】
書き込み部122Bは、バッファ部102Bから入力されたデータBを書き込むべきヘッダ&データB用バッファの情報(ディスクリプタ)をバッファ管理部123から取得する。書き込み部122Bは、ヘッダ&データB用バッファにおける開始アドレスSBからデータを書き込む。書き込み部122Bによる書き込みは一例としてDMAにより行われる。ディスクリプタに、データBが書き込まれたアドレス範囲を特定する情報を書き込んでもよい。例えばデータBの開始アドレス及び終了アドレス、又は、データBの開始アドレスとデータサイズの組を書き込んでもよい。
【0067】
パケット生成部125はヘッダ書き込み部131と合成部132とを含む。パケット生成部125は、書き込み部122BからデータBが書き込まれたヘッダ&データB用バッファの情報(ディスクリプタ)を取得する。またパケット生成部125は、書き込み部122Aからまだ送信されていない最も古いデータAが格納されたデータA用バッファの情報(ディスクリプタ)を取得する。パケット生成部125は、ヘッダ&データB用バッファにおけるデータBと、データA用バッファにおけるデータAとの情報に基づきヘッダを生成する。一例として、ヘッダ&データB用バッファのディスクリプタと、データA用バッファのファイルディスクリプタとに基づきヘッダを生成してもよい。ヘッダ書き込み部131は、生成されたヘッダをヘッダ&データB用バッファにおけるヘッダ用領域HRに格納する。
【0068】
図9は、データA用バッファのディスクリプタ(Descriptor 2)と、ヘッダ&データB用バッファのディスクリプタ(Descriptor 1)とを模式的に示す。Descriptor 2とDescriptor 1が、ディスクリプタ用のメモリ領域(リングバッファ)129に格納されている。Descriptor 2には、データA用バッファにおいてデータAが格納されているアドレス範囲を特定する情報等が格納されている。Descriptor 1には、ヘッダ&データB用バッファにおいてヘッダ及びデータBが格納されているアドレス範囲を特定する情報等が格納されている。
【0069】
パケット生成部125の合成部132は、ヘッダ&データB用バッファにおけるヘッダとヘッダに続くデータBとを読み出し、データA用バッファにおけるデータAを読み出し、ヘッダとデータBとデータAとに基づきパケットを生成する。一例として、ヘッダとデータBとデータAを結合してパケットとする。合成部132の読み出しは一例としてDMAにより行われる。合成部132はパケットを送信部105に提供する。
【0070】
図10は、パケットを生成する動作の一例を示す。送信バッファ121に最初にデータA(データA_1とする)が書き込まれ、次いで2回目の書き込みでデータA(データA_2とする)が書き込まれる。送信バッファ121からデータA_1が読み出され、データA_1がデータA用バッファ1の先頭アドレスから書き込まれる。つまりデータA_1が送信バッファ121からデータA用バッファ1にコピーされる。データA用バッファ1のうちデータAが格納されなかった余りの領域RA1のデータは任意でよい。同様に、データA_1が読み出された後、送信バッファ121からデータA_2が読み出され、データA_2がデータA用バッファ2の先頭アドレスから書き込まれる。つまりデータA_2が送信バッファ121からデータA用バッファ2にコピーされる。データA用バッファ2のうちデータA_2が格納されなかった余りの領域RA2のデータは任意でよい。送信バッファ121に読み出していないデータAが存在し、3番目のデータA用バッファ以降を生成可能な場合は、3番目のデータA用バッファ以降についても同様にデータAを書き込んでよい。データA用バッファは生成された順番に、パケット生成の処理に用いられる。
【0071】
次に、データB(データB_1とする)がバッファ部102Bから書き込み部122Bに入力され、書き込み部122Bはバッファ管理部123からヘッダ&データB用バッファを指定する情報(ヘッダ&データB用バッファのディスクリプタ)を受ける。書き込み部122Bは、データB_1をヘッダ&データB用バッファの開始アドレスSBから書き込む。データB用領域RBのうちデータB_1が格納されなかった余りの領域RB1のデータは任意でよい。
【0072】
次に、パケット生成部125が、ヘッダ&データB用バッファのデータB_1と、データA用バッファ1のデータA_1との情報に基づきヘッダ(HD1とする)を生成する。パケット生成部125は、ヘッダ&データB用バッファのディスクリプタとデータA用バッファ1のディスクリプタとの情報に基づき、ヘッダHD1を生成してもよい。ヘッダ書き込み部131は、ヘッダHD1をヘッダ&データB用バッファにおけるヘッダ用領域HRに書き込む。
【0073】
合成部132は、ヘッダ&データB用バッファからヘッダHD1とデータB_1とを読み出し、データA用バッファからデータA_1を読み出し、パケットを生成する。例えば、ヘッダHD1とデータB_1とデータA_1とを結合してパケットとする。合成部132は、生成したパケットを送信部105に提供する。
【0074】
この後、バッファ部102Bから次のデータB(データB_2とする。図示せず)が入力された場合、データA_2が格納されたデータA用バッファ2を用いて、パケットを生成する。パケット生成の詳細は、データA用バッファ1を用いた場合と同様であるため説明を省略する。
【0075】
図11は、第2実施形態に係る送信装置10における動作の一例を示すフローチャートである。バッファ部102AからデータAが入力されるごとに書き込み部120がデータAを送信バッファ121に順番に書き込む又は格納する(S201)。データAは1つ前に格納されたデータAの末尾のアドレスに連続する。バッファ管理部123が記憶部126にデータA用バッファを生成し、データA用バッファのディスクリプタを生成する(S202)。ディスクリプタは記憶部126のディスクリプタ用のメモリ領域(例えばリングバッファ)に格納される。書き込み部122Aはディスクリプタに示されるデータA用バッファの先頭アドレスからデータAを書き込む(S203)。但し、データAをデータA用バッファの途中のアドレスを開始アドレスとして書き込む構成も可能である。データAが書き込まれたデータA用バッファは、データBの送信要求が発生するまで、保持される。書き込み部122Bはバッファ部102BからデータBを受けると、書き込み部122Aからバッファ管理部123にヘッダ&データB用バッファの生成を要求し、ヘッダ&データB用バッファの情報(ディスクリプタ)を取得する。書き込み部122Bは、ヘッダ&データB用バッファにアクセスして、データBを開始アドレスSBから書き込む(S204)。パケット生成部125はデータAとデータBとの情報又はディスクリプタの情報に基づきヘッダを生成し、ヘッダ書き込み部131は、ヘッダ&データB用バッファにおけるヘッダ用領域HRにヘッダを書き込む(S205)。合成部132は、ヘッダ&データB用バッファからヘッダとヘッダに続くデータBとを読み出し、データA用バッファからデータAを読み出す。合成部132は、読み出したヘッダとデータBとデータAとに基づくパケットを生成し、生成したパケットを送信部105に提供する(S206)。送信部105は、パケットを、アンテナ107を介して送信する(S207)。
【0076】
以上、第2実施形態によれば、複数のアプリケーションのデータを1つのパケットに含めて送信する場合において、少ないコピー回数(本例では1回)のみでパケットを生成することができる。例えばデータAについては時間制約が長いため予めデータBと一緒に送信できるようにデータA用バッファに格納しておく。時間制約の短い(優先度の高い)データBの送信要求が発生した場合には、データBを速やかにヘッダ&データB用バッファに格納する。ヘッダを生成してヘッダ&データB用バッファに格納した後、これらのバッファからヘッダ、データB、データAを読み出し、パケットを生成する。これにより、データBのコピーを行うことなく、データAとデータBとを含むパケットを生成することができる。よって、複数のアプリケーションのデータ(例えば時間制約の異なる複数のアプリケーションのデータ)を含むパケットを高速に生成することができる。また、第2実施形態によればデータAとデータBとで別々のバッファを用いることで、冗長なデータ(第1実施形態における領域RA1、RB1のデータ)を含まないパケットを容易に生成できる。
【0077】
(第3実施形態)
図12は、第3実施形態に係る送信装置10の送信処理部103の他の構成例を示す。第2実施形態の
図8の構成との差分を中心に説明する。
【0078】
バッファ管理部123は、記憶部126にデータB用バッファを生成する。バッファ管理部123は、データB用バッファのディスクリプタを生成し、生成したディスクリプタをディスクリプタ用のメモリ領域(リングバッファ等)に格納する。書き込み部122Bは、バッファ部102BからデータBを受けると、バッファ管理部123からデータB用バッファの情報(ディスクリプタ)を取得し、データBをデータB用バッファの先頭アドレスから書き込む。データBの書き込みは一例としてDMAにより行われる。パケット生成部125は、データB用バッファのデータBと、データA用バッファのデータAとの情報に基づきヘッダを生成する。パケット生成部125は、一例としてデータB用バッファのディスクリプタと、データA用バッファのディスクリプタとの情報に基づきヘッダを生成する。
【0079】
図13は、データA用バッファのディスクリプタ(Descriptor 2)と、データB用バッファのディスクリプタ(Descriptor 1)とを模式的に示す。Descriptor 2とDescriptor 1が、ディスクリプタ用のメモリ領域(リングバッファ)129に格納されている。Descriptor 2には、データA用バッファにおいてデータAが格納されているアドレス範囲を特定する情報等が格納されている。Descriptor 1には、データB用バッファにおいてヘッダ及びデータBが格納されているアドレス範囲を特定する情報等が格納されている。
【0080】
合成部132は、データB用バッファからデータB、データA用バッファからデータAを読み出し、さらにヘッダを用いて、パケットを生成する。例えば、ヘッダとデータB_1とデータA_1とを結合してパケットとする。合成部132の読み出しは、一例としてDMAにより行われる。合成部132は、生成したパケットを送信部105に提供する。つまり、ヘッダをデータB用バッファ等に書き込むことなく、直接、データB及びデータAと結合する。パケット生成部125はパケットを送信部105に提供する。
【0081】
図14は、パケットを生成する動作の一例を示す。データA用バッファ1、データA用バッファ2等にデータAを書き込む処理は第2実施形態と同じであるため説明を省略する。
【0082】
データB(データB_1とする)がバッファ部102Bから書き込み部122Bに入力され、書き込み部122Bはバッファ管理部123からデータB用バッファを指定する情報(データB用バッファのディスクリプタ)を受ける。書き込み部122Bは、データB_1をデータB用バッファの先頭アドレスから書き込む。データB用バッファのうちデータB_1が格納されなかった余りの領域RB1のデータは任意でよい。
【0083】
次に、パケット生成部125が、データB用バッファのデータB_1と、データA用バッファ1のデータA_1との情報に基づきヘッダ(HD1とする)を生成する。パケット生成部125は、データB用バッファのディスクリプタとデータA用バッファ1のディスクリプタとの情報に基づき、ヘッダHD1を生成してもよい。
【0084】
合成部132は、データB用バッファからデータB_1を読み出し、データA用バッファからデータA_1を読み出し、ヘッダHD1をデータB_1とデータA_1とに基づきパケットを生成する。例えば、ヘッダHD1とデータB_1とデータA_1とを結合してパケットとする。合成部132は、生成したパケットを送信部105に提供する。
【0085】
この後、バッファ部102Bから次のデータB(データB_2とする。図示せず)が入力された場合、データA_2が格納されたデータA用バッファ2を用いて、パケットを生成する。パケット生成の詳細は、データA用バッファ1を用いた場合と同様であるため説明を省略する。
【0086】
図15は、第3実施形態に係る送信装置10における動作の一例を示すフローチャートである。ステップS301~S303は、第2実施形態における
図11のステップS201~S203と同様である。書き込み部122Bはバッファ部102BからデータBを受けると、書き込み部122Aからバッファ管理部123にデータB用バッファの生成を要求し、データB用バッファの情報(ディスクリプタ)を取得する。書き込み部122Bは、データB用バッファにアクセスして、データBを開始アドレスSBから書き込む(S304)。パケット生成部125はデータAとデータBとの情報又はディスクリプタの情報に基づきヘッダを生成する(S305)。合成部132は、データB用バッファからデータBを読み出し、データA用バッファからデータAを読み出す。合成部132は、生成されたヘッダとデータBとデータAとに基づくパケットを生成し、生成したパケットを送信部105に提供する(S306)。送信部105は、パケットを、アンテナ107を介して送信する(S307)。
【0087】
以上、第3実施形態によればヘッダをバッファに格納することなく、直接、データB及びデータAと結合してパケットを生成するため、処理負荷を軽減できる。またパケットの生成処理を簡単にできる。
【0088】
(第4実施形態)
図16は、第4実施形態に係る受信装置20における受信処理部203の詳細ブロック図である。受信処理部203は、受信バッファ221、書き込み部222、バッファ管理部223、パケット処理部225、読出部227A(第2読出部)、読出部227B(第1読出部)、及び記憶部126(メモリ装置)を備えている。受信バッファ221及び記憶部226は、メモリなどの記録媒体により構成される。メモリは揮発性メモリ、不揮発性メモリ又はこれらの両方でもよい。受信バッファ221及び記憶部226は、同一の記録媒体でも、別々の記録媒体でもよい。書き込み部222、バッファ管理部223、パケット処理部225、読出部227A及び読出部227Bの処理は、一例としてCPU(Central Processing Unit)等のプロセッサにより実行される。
【0089】
受信バッファ221は、所定サイズを有する記憶領域(メモリ領域等)である。受信バッファ221は一例としてFIFOバッファにより構成される。
【0090】
バッファ管理部223は、受信処理部203の初期化時に、記憶部226にディスクリプタのメモリ領域を確保する。ディスクリプタのメモリ領域は一例としてリングバッファで構成される。
【0091】
またバッファ管理部223は、パケット処理部225の要求に応じて、記憶部226にメモリ領域であるパケットバッファ(第1バッファ)を、受信するパケットに対して割り当てる(生成する)。パケットバッファは、パケット処理部225で受信するパケットのサイズ以上のメモリ領域を有する。パケットバッファは、一例として、一定のサイズを有する。なお、バッファ管理部223は所定個数(1以上)のパケットバッファを記憶部226に予め生成しておいてもよい。
【0092】
バッファ管理部223は、パケットバッファをバッファ識別子とバッファ識別子に対応するディスクリプタとで管理する。ディスクリプタは一例としてパケットバッファのアドレス(ポインタ等)、アプリケーションの識別子、格納されているデータのサイズなど、種々の属性を有する。ディスクリプタは一例としてリングバッファで管理される。
【0093】
パケット処理部225は、受信部205からデータA(第2データ)とデータB(第1データ)とを含むパケットの受信要求を受ける。パケット処理部225は、パケットバッファの割り当て(生成)をバッファ管理部223に要求し、パケットバッファの情報(ディスクリプタ)をバッファ管理部223から取得する。パケット処理部225は、パケットバッファにパケットを先頭アドレスから書き込む。パケット処理部225はパケットの書き込みが行われたことを示す通知情報を、書き込み部222又はバッファ管理部223等に提供してもよい。ディスクリプタに、書き込まれたパケットに関する情報(パケットサイズ等)を書き込んでもよい。またパケット処理部225はパケットのヘッダの処理を行う。
【0094】
図17(A)及び
図17(B)は、パケットバッファのディスクリプタ(Descriptor 1)を模式的に示す。
図17(A)の例では、第1実施形態のパケットを受信した場合に、Descriptor 1が示すパケットバッファにパケットが書き込まれた例が示される。
図17(B)の例では、第2又は第3実施形態のパケットを受信した場合に、Descriptor 1が示すパケットバッファにパケットが書き込まれた例が示される。Descriptor 1は、ディスクリプタ用のメモリ領域(リングバッファ)229に格納されている。Descriptor 1には、パケットバッファにおいてパケットが格納されているアドレス範囲を特定する情報等が格納されていてもよい。
【0095】
読出部227Bは、バッファ管理部223又はパケット処理部225からパケットバッファの情報(ディスクリプタ)を取得し、パケットバッファの開始アドレスSBからデータBを読み出す。一例として、ヘッダの情報に基づきパケットにおけるデータBの位置を特定し、データBの位置とパケットバッファのアドレスとから開始アドレスSBを算出する。読出部227Bの読み出しは一例としてDMAにより行われる。読出部227Bは、読み出したデータBをバッファ部202Bに提供する。読出部227BはデータBの読み出しが完了したことを示す通知情報を、書き込み部222又はバッファ管理部223等に提供してもよい。
【0096】
書き込み部222は、バッファ管理部223又はパケット処理部225からパケットバッファの情報(ディスクリプタ)を取得し、パケットバッファの開始アドレスSAからデータAを読み出す。一例として、ヘッダの情報に基づきパケットにおけるデータAの位置を特定し、データAの位置とパケットバッファのアドレスとから開始アドレスSAを算出する。データAの読み出しは、読出部227BによりデータBが読み出された後、行う。データBを先に読み出すことで、時間制約の短いデータBを優先的に出力することができる。書き込み部222は、読み出したデータAを受信バッファ221に書き込む。書き込むデータAは前回書き込んだデータAの末尾のアドレスに連続する。読出部227Aは、受信バッファ221からまだ読み出していないデータAを読み出し、データAをバッファ部202Aに提供する。データAの読み出しは一例としてアプリケーションの時間制約に応じたタイミングで読み出してもよいし、一定時間ごと又は受信バッファ221にデ-タAが格納されるごとでもよい。
【0097】
パケットバッファからデータB及びデータAが読み出された後、バッファ管理部223は、当該パケットバッファを削除してもよいし、他のパケットの書き込み用に、再利用してもよい。
【0098】
図18は、パケットを受信する動作の一例を示す。パケットの受信要求に応じて、パケットがパケット処理部225によってパケットバッファに書き込まれる。読出部227Bが最初にパケットのヘッダに基づき、パケットバッファの開始アドレスSBを特定し、開始アドレスSBからデータB(データB_1とする)を読み出す。読出部227Bは、読み出したデータBをバッファ部202Bに提供する。次に、書き込み部222がパケットのヘッダに基づき、パケットバッファの開始アドレスSAを特定し、開始アドレスSAからデータA(データA_1とする)を読み出す。書き込み部222は、データA_1を受信バッファ221に書き込む。つまり、データA_1をパケットバッファから受信バッファにコピーする。読出部227Aは受信バッファ221からデータA_1を読み出して、バッファ部202Aに提供する。なお、データA_1の読み出し前に次のパケットが受信された場合は、当該パケットに含まれるデータB(データB_2とする)が読み出された後、パケットに含まれるデータA(データA_2とする)が、データA_1の末尾のアドレスに連続して書き込まれる。なお、受信バッファ221から読み出すデータAのサイズと、受信バッファ221に書き込まれるデータAのサイズが同じである必要はない。例えばデータA_1の一部と残りの一部とが別々のタイミングで読み出されてもよい。
【0099】
図19は、第4実施形態に係る受信装置20における動作の一例を示すフローチャートである。受信部205からパケットの受信要求が入力される。バッファ管理部223がパケットバッファを生成し、パケットバッファのディスクリプタを生成する。なおパケットの入力前にパケットバッファ及びディスクリプタを生成しておいてもよい。パケット処理部225がパケットをパケットバッファに書き込む(S401)。読出部227Bが、ディスクリプタに基づきパケットバッファにアクセスし、ヘッダに基づきデータBの位置を特定する(S402)。読出部227BはデータBをパケットバッファから読み出し、データBをバッファ部202Bに提供する(同S402)。読出部227BからデータBが読み出された後、書き込み部222がディスクリプタに基づきパケットバッファにアクセスし、ヘッダに基づきデータAの位置を特定する(S403)。書き込み部222は、データAをパケットバッファから読み出し、データAを受信バッファ221に書き込む(同S403)。データAは1つ前に格納されたデータAの末尾のアドレスに連続する。読出部227Aは、受信バッファ221からデータAを読み出して、データAをバッファ部202Aに提供する(S404)。
【0100】
以上、第4実施形態によれば、複数のアプリケーションのデータを含むパケットを受信した場合に、少ないコピー回数(本例では1回)のみでパケットに含まれる各データを読み出すことができる。例えばデータBについては時間制約が短いためパケットを格納したパケットバッファからデータBを即時に読み出して、出力する。時間制約の長いデータAについてはデータBが読み出された後、パケットバッファから読み出して受信バッファに格納する。これにより、データBのコピーを行うことなく、データAとデータBとをそれぞれの時間制約を満たしつつ、読み出すことができる。よって、複数のアプリケーションのデータ(例えば時間制約の異なる複数のアプリケーションのデータ)を含むパケットを高速に受信処理することができる。また、第4実施形態によれば第1実施形態で生成されたパケット、及び第2又は第3実施形態で生成されたパケットのいずれも高速に受信処理できる。
【0101】
(第5実施形態)
図20は、第5実施形態に係る受信装置20における受信処理部203の詳細ブロック図である。パケット処理部を参照する符号を符号231に振り替えている。第4実施形態の
図8の構成との差分を中心に説明する。
【0102】
バッファ管理部223は、パケットの受信要求を受けたパケット処理部225からの要求に応じて、記憶部226にデータB(第1データ)に対してデータB用バッファ(第1バッファ)及びデータA(第2データ)に対してデータA用バッファ(第2バッファ)を割り当てる。バッファ管理部223は、データB用バッファのディスクリプタを生成し、生成したディスクリプタをディスクリプタ用のメモリ領域(リングバッファ等)に格納する。バッファ管理部223は、データA用バッファのディスクリプタを生成し、生成したディスクリプタをディスクリプタ用のメモリ領域に格納する。パケット処理部231は、受信部205からパケットを受けると、パケットのヘッダを処理した後、バッファ管理部223からデータB用バッファの情報(ディスクリプタ)を取得し、データBをデータB用バッファの先頭アドレスから書き込む。パケット処理部231は、バッファ管理部223からデータA用バッファの情報(ディスクリプタ)を取得し、データAをデータA用バッファの先頭アドレスから書き込む。
【0103】
図21は、データA用バッファのディスクリプタ(Descriptor 2)と、データB用バッファのディスクリプタ(Descriptor 1)とを模式的に示す。Descriptor 2とDescriptor 1が、ディスクリプタ用のメモリ領域(リングバッファ)229に格納されている。Descriptor 2には、データA用バッファにおいてデータAが格納されているアドレス範囲を特定する情報等が格納されている。Descriptor 1には、データB用バッファにおいてヘッダ及びデータBが格納されているアドレス範囲を特定する情報等が格納されている。
【0104】
読出部227Bは、バッファ管理部223又はパケット処理部225からデータB用バッファの情報(ディスクリプタ)を取得し、データB用バッファの先頭アドレスからデータBを読み出す。読出部227Bの読み出しは一例としてDMAにより行われる。読出部227Bは、読み出したデータBをバッファ部202Bに提供する。読出部227BはデータBの読み出しが完了したことを示す通知情報を、書き込み部222又はバッファ管理部223等に提供してもよい。
【0105】
書き込み部222は、バッファ管理部223又はパケット処理部225からデータA用バッファの情報(ディスクリプタ)を取得し、データA用バッファの先頭アドレスからデータAを読み出す。データAの読み出しは、データBの読み出しと並行して行ってもよいし、データBの読み出しの後で行ってもよい。データAとデータBは別々のバッファに格納されているため、データAをデータBの読み出しのタイミングとは独立して定めることができる。書き込み部222は、読み出したデータAを受信バッファ221に書き込む。書き込むデータAは前回書き込んだデータAの末尾のアドレスに連続する。読出部227Aは、受信バッファ221からまだ読み出していないデータAを読み出し、データAをバッファ部202Aに提供する。
【0106】
図22は、第5実施形態に係る受信装置20における動作の一例を示すフローチャートである。受信部205からパケットが入力される。バッファ管理部223がデータB用バッファ及びデータA用バッファを生成し、各バッファのディスクリプタを生成する。なおパケットの入力前にデータB用バッファ、データA用バッファ及び各々バッファのディスクリプタを生成しておいてもよい。パケット処理部225がヘッダを処理後、データBをデータB用バッファに書き込み、データAをデータA用バッファに書き込む(S501)。読出部227Bが、ディスクリプタに基づきデータB用バッファにアクセスし、データBをデータB用バッファから読み出す(S502)。読出部227Bは、データBをバッファ部202Bに提供する(同S502)。書き込み部222がディスクリプタに基づきデータA用バッファにアクセスし、データAをデータA用バッファから読み出す(S503)。書き込み部222は、データAを受信バッファ221に書き込む(同S503)。データAは1つ前に格納されたデータAの末尾のアドレスに連続する。読出部227Aは、受信バッファ221からデータAを読み出して、データAをバッファ部202Aに提供する(S504)。
【0107】
以上、第5実施形態によれば、複数のアプリケーションのデータを含むパケットを受信した場合に、少ないコピー回数(本例では1回)のみでパケットに含まれる各データを読み出すことができる。例えばパケットに含まれるデータBとデータAとをそれぞれデータB用バッファ及びデータA用バッファに書き込む。つまり、データB及びデータAを複数のディスクリプタに分割してメモリ(バッファ)に転送する。データB用バッファからは即時にデータBを読み出して出力する。データAについてはデータA用バッファから受信バッファに書き込み(コピーし)、アプリケーションAの時間制約に応じたタイミング等で受信バッファから読み出す。これにより、データBのコピーを行うことなく、データAとデータBとをそれぞれの時間制約を満たしつつ、読み出すことができる。よって、複数のアプリケーションのデータ(例えば時間制約の異なる複数のアプリケーションのデータ)を含むパケットを高速に受信処理することができる。また、第4実施形態によれば第1実施形態で生成されたパケット、及び第2又は第3実施形態で生成されたパケットのいずれも高速に受信処理できる。
【0108】
(変形例)
第5実施形態においてデータB用バッファの代わりに、ヘッダ&データB用バッファを生成し、ヘッダとデータBとをヘッダ&データB用バッファに書き込んでもよい。読出部227Bは、ヘッダ&データB用バッファからデータBを読み出す。ヘッダ&データB用バッファにおけるデータBの位置は、ヘッダに基づいて特定することができる。
【0109】
(第6実施形態)
前述した実施形態における各装置(送信装置10、又は受信装置20)の一部又は全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)、又はGPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態における各装置の少なくとも一部の機能を実現するソフトウェアを、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、又はUSB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアがASIC(Application Specific Integrated Circuit)、又はFPGA(Field Programmable Gate Array)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
【0110】
ソフトウェアを収納する記憶媒体の種類は限定されるものではない。記憶媒体は、磁気ディスク、又は光ディスク等の着脱可能なものに限定されず、ハードディスク、又はメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし、コンピュータ外部に備えられてもよい。
【0111】
図23は、前述した実施形態における各装置(送信装置10、又は受信装置20)のハードウェア構成の一例を示すブロック図である。各装置は、一例として、プロセッサ91と、主記憶装置92(メモリ)と、補助記憶装置93(メモリ)と、ネットワークインタフェース94と、デバイスインタフェース95と、を備え、これらがバス96を介して接続されたコンピュータ90として実現されてもよい。
【0112】
図23のコンピュータ90は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、
図23では、1台のコンピュータ90が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース94等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態における各装置(送信装置10、又は受信装置20)は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
【0113】
前述した実施形態における各装置(送信装置10又は受信装置20)の各種演算は、1又は複数のプロセッサを用いて、又は、ネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ90と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実行されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0114】
プロセッサ91は、コンピュータの制御装置及び演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、又はASIC等)であってもよい。また、プロセッサ91は、専用の処理回路を含む半導体装置等であってもよい。プロセッサ91は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ91は、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0115】
プロセッサ91は、コンピュータ90の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ91は、コンピュータ90のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ90を構成する各構成要素を制御してもよい。
【0116】
前述した実施形態における各装置(送信装置10、又は受信装置20)は、1又は複数のプロセッサ91により実現されてもよい。ここで、プロセッサ91は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【0117】
主記憶装置92は、プロセッサ91が実行する命令及び各種データ等を記憶する記憶装置であり、主記憶装置92に記憶された情報がプロセッサ91により読み出される。補助記憶装置93は、主記憶装置92以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。前述した実施形態における各装置(送信装置10、又は受信装置20)において各種データを保存するための記憶装置は、主記憶装置92又は補助記憶装置93により実現されてもよく、プロセッサ91に内蔵される内蔵メモリにより実現されてもよい。例えば、前述した実施形態における一時記憶部140、240は、主記憶装置92又は補助記憶装置93により実現されてもよい。
【0118】
記憶装置(メモリ)1つに対して、複数のプロセッサが接続(結合)されてもよいし、単数のプロセッサが接続されてもよい。プロセッサ1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。前述した実施形態における各装置(送信装置10、又は受信装置20)が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサで構成される場合、複数のプロセッサのうち少なくとも1つのプロセッサが、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置(メモリ))とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0119】
ネットワークインタフェース94は、無線又は有線により、通信ネットワーク97に接続するためのインタフェースである。ネットワークインタフェース94は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース94により、通信ネットワーク97を介して接続された外部装置98Aと情報のやり取りが行われてもよい。なお、通信ネットワーク97は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか、又は、それらの組み合わせであってよく、コンピュータ90と外部装置98Aとの間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
【0120】
デバイスインタフェース95は、外部装置98Bと直接接続するUSB等のインタフェースである。
【0121】
外部装置98Aはコンピュータ90とネットワークを介して接続されている装置である。外部装置98Bはコンピュータ90と直接接続されている装置である。
【0122】
外部装置98A又は外部装置98Bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、又はタッチパネル等のデバイスであり、取得した情報をコンピュータ90に与える。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0123】
また、外部装置98A又は外部装置98Bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、又は有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0124】
また、外部装置98Aまた外部装置98Bは、記憶装置(メモリ)であってもよい。例えば、外部装置98Aはネットワークストレージ等であってもよく、外部装置98BはHDD等のストレージであってもよい。
【0125】
また、外部装置98A又は外部装置98Bは、前述した実施形態における各装置(送信装置10、又は受信装置20)の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ90は、外部装置98A又は外部装置98Bの処理結果の一部又は全部を送信又は受信してもよい。
【0126】
本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c、又はa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
【0127】
本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件、及び/又は状態等にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
【0128】
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0129】
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ又は専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造が動作Bを実際に実行するように構築(implemented)されていればよい。
【0130】
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」及び有する「(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0131】
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」又は「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0132】
本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件、及び/又は状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件、及び/又は状態等が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0133】
本明細書(請求項を含む)において、「最大化(maximize)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること、及びローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最小化(minimize)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること、及びローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最適化(optimize)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、及びローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的又はヒューリスティックに求めることを含む。
【0134】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、又は電子回路を含む装置等を含んでよい。
【0135】
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置(メモリ)のうち個々の記憶装置(メモリ)は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。
【0136】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更、置き換え及び部分的削除等が可能である。例えば、前述した全ての実施形態において、数値又は数式を説明に用いている場合は、一例として示したものであり、これらに限られるものではない。また、実施形態における各動作の順序は、一例として示したものであり、これらに限られるものではない。
【符号の説明】
【0137】
1A センサ
1B センサ
10 送信装置
20 受信装置
30 通信ネットワーク
90 コンピュータ
91 プロセッサ
92 主記憶装置
93 補助記憶装置
94 ネットワークインタフェース
95 デバイスインタフェース
96 バス
97 通信ネットワーク
98A 外部装置
98B 外部装置
101A、101B データ取得部
102A バッファ部
102B バッファ部
103 送信処理部
104 制御部
105 送信部
107 アンテナ
120 書き込み部
121 送信バッファ
122A 込み部
122B 込み部
123 バッファ管理部
125 パケット生成部
126 記憶部
129 リングバッファ
132 合成部
140 一時記憶部
201A、201B データ処理部
202A、202B バッファ部
203 受信処理部
205 受信部
207 アンテナ
221 受信バッファ
222 書き込み部
223 バッファ管理部
225 パケット処理部
226 記憶部
227A、227B 読出部
229 リングバッファ
231 パケット処理部