JP7145607B2 - Dma転送装置、dma転送装置の制御方法、および通信装置 - Google Patents
Dma転送装置、dma転送装置の制御方法、および通信装置 Download PDFInfo
- Publication number
- JP7145607B2 JP7145607B2 JP2017238920A JP2017238920A JP7145607B2 JP 7145607 B2 JP7145607 B2 JP 7145607B2 JP 2017238920 A JP2017238920 A JP 2017238920A JP 2017238920 A JP2017238920 A JP 2017238920A JP 7145607 B2 JP7145607 B2 JP 7145607B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- transfer
- checksum
- dma
- dma transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Bus Control (AREA)
Description
前記プロトコルスタックを実行中の前記プロセッサから転送命令を受信した場合に、前記第1のデータと前記第2のデータのそれぞれに対して第1のチェックサムの演算を行う第1の演算手段と、
前記制御ハードウェアから転送命令を受信した場合に、前記連結処理が行われる前記第1のデータおよび前記第2のデータと通信ヘッダとに対して前記第1のチェックサムの演算と異なる第2のチェックサムの演算を行う第2の演算手段と、
前記第1の演算手段または前記第2の演算手段による演算を介して得られたチェックサムデータを転送先アドレスに応じたメモリの領域に転送する転送手段と、
を有し、
前記第2の演算手段による演算は、前記プロセッサが前記第1のデータと前記第2のデータの連結が必要であると判断した場合に、前記連結処理が行われる前記第1のデータと前記第2のデータを転送するための転送命令を前記制御ハードウェアが前記DMA転送装置へ送信することに応じて行われることを特徴とする。
(通信装置100の構成)
図1に、以下に説明する実施形態における通信装置100の概略構成図を示す。CPU101は、通信装置100に含まれる各機能ブロック、各ソフトウェア、各ハードウェアを制御する。本実施形態では、CPU101は、アプリケーションとプロトコルスタックの2つのソフトウェアを制御する。アプリケーションは、通信装置100としてカメラやカムコーダを想定する場合に、撮像した画像や動画像のデータをインターネットやメディアサーバにアップロードする際に動作するソフトウェアである。プロトコルスタックは、TCP(UDP)/IP等の通信プロトコル処理を行うソフトウェアである。具体的には、プロトコルスタックは、TCP(UDP)/IP通信における再送制御やパケットの順序保証、チェックサムを使用した通信パケットの整合性検査を行う。また、プロトコルスタックは、これらの機能を実現するための通信ヘッダであるTCP(UDP)ヘッダ、IPヘッダを生成する。
図2に、本実施形態における第1のチェックサム演算部112使用時のDMA転送例を示す。以下、DMA転送部110が、アプリケーションがメモリ106に出力したデータグラムをプロトコルスタックが使用するメモリ107へDMA転送する際に、第1のチェックサム演算部112を利用してペイロードサムを計算することを含む動作について説明する。
図3に、本実施形態における第2のチェックサム演算部113使用時のDMA転送例を示す。ここでは、アプリケーションからのデータグラムが、メモリ106からメモリ107へペイロードサム演算を伴ってDMA転送された後、プロトコルスタック(CPU101)がペイロード長を変更すると判断する場合を想定する。この場合、当該ペイロードサムを用いてインターネットチェックサムを計算することができなくなる。ペイロード長が変更される場合とは、例えば、データグラムを連結する場合や、MSSが変更される場合である。このような場合に、DMA転送部110が第2のチェックサム演算部113を利用してインターネットチェックサムを演算する動作について説明する。
図4に、本実施形態におけるCPU101(プロトコルスタック)の処理フローチャートを示す。ここでは、アプリケーションからのデータグラムが、メモリ106からメモリ107へペイロードサム演算を伴ってDMA転送された後、ペイロード長を変更するか否かに応じて動作を切り替えるフローチャートに関して説明を行う。
図5に、本実施形態におけるDMA転送部110の処理フローチャートを示す。図5は、DMA転送部110が、CPU101(プロトコルスタック)もしくはシーケンサ103から、演算転送命令または転送命令を受信した場合の処理を示すフローチャートである。
図6に、ペイロード長の変更無しの場合の各処理ブロックのシーケンスチャートを示す。S600では、CPU101で動作するプロトコルスタックが、アプリケーションからのデータを転送するためのデスクリプタを生成する。S601では、CPU101が生成したデスクリプタをメモリ106に格納する。S602では、CPU101で動作するプロトコルスタックが、DMA転送部110に対して演算転送命令を発行する。S603では、DMA転送部110が演算転送命令を受信し、続くS604で、メモリ106からデスクリプタを読み込む。次に、DMA転送部110は、読み込んだデスクリプタを解析し、メモリ106における、転送元アドレスに一致するアドレスからデータを読み込む。続いて、DMA転送部110の第1のチェックサム演算部112が、読み込まれたデータを用いてペイロードサムを計算する。ペイロードサムの計算が終了すると、S605において、DMA転送部110は、メモリ107における、デスクリプタ内の転送先アドレスに一致するアドレスに、データおよびペイロードサムを書き込む。データ転送が完了すると、S606において、DMA転送部110は、CPU101に対して、演算転送命令に対する演算タ転送完了を通知する。
図7に、ペイロード長の変更有りの場合の各処理ブロックのシーケンスチャートを示す。S700~S706の処理シーケンスは、図6におけるS600~S606と同様であるため、説明を省略する。すなわち、S700~S706において、第1のチェックサム演算部112により、ペイロードサムが演算される。
第1の実施形態では、ペイロード長がプロトコルスタックの処理時に変更される場合に、シーケンサ103がインターネットチェックサムの演算をCPU101に代わって行うことを説明した。第2の実施形態では、ペイロード長がプロトコルスタックの処理時に変更される場合に加えて、通信パケットの再送時にも変更され得る場合について説明する。以下、第1の実施形態と異なる点について説明する。
図8に、本実施形態におけるCPU101(プロトコルスタック)の処理フローチャートを示す。S800において、プロトコルスタックは、通信パケット送信後の通信パケット再送時のペイロード変更があるかどうかを判断する。ペイロード変更が発生する場合は、送信時のペイロードの途中までは正しく受信されており、送信時のペイロードの途中から再送パケット(最初に送信した通信パケットの一部を含む通信パケット)を生成する場合である。この場合、ペイロードが変更となるため、送信時に計算したペイロードサムは利用できなくなる。ここで、再送発生時にどこまで正しく受信できたかは、送信先からの確認応答パケットのACK番号を解析すること等により確認することができる。
図9に、ペイロード変更有りの場合の各処理ブロックのシーケンスチャートを示す。S900は、第1の実施形態において説明した図6および図7に示す通信パケットの送信シーケンスである。当該通信シーケンス後、S901で通信部108は、送信パケットに対する確認応答パケットを受信する。S902では、CPU101で動作するプロトコルスタックが、通信部108で受信した確認応答パケットを解析する。そして、プロトコルスタックは、通信相手先が送信パケットに含まれるデータの途中から正しく受信できていないことを検出し、ペイロード変更が生じる再送を行うことを決定する。続いて、プロトコルスタックは、S903において、再送時のデータ開始位置を確認応答パケットのACK番号から決定する。再送時のデータ開始位置を決定後、プロトコルスタックは、S904において、シーケンサ103に対して演算転送命令の代行を依頼する。この際、プロトコルスタックは、通信相手先で正しく受信できなかったデータの開始位置を、シーケンサ103に通知する。S905において、シーケンサ103は演算代行通知を受信し、通信ヘッダを内部メモリ105に生成する。続いて、シーケンサ103は、S906において、生成した通信ヘッダとメモリ107に格納されたペイロードからインターネットチェックサムを演算しつつ、DMA転送するためのデスクリプタを生成する。S907において、シーケンサ103は、生成したデスクリプタをメモリ106に格納する。ここで、デスクリプタにおける転送元アドレスには、CPU101から通知されるデータ開始位置に一致するメモリ106におけるアドレスが記載される。デスクリプタ格納後、シーケンサ103は、S908において、DMA転送部110に対して、演算転送命令を発行する。
第1の実施形態では、メモリ106からメモリ107にデータをDMA転送する際に、ペイロードサムを演算することを前提として説明を行った。しかしながら、再送を伴わないUDPプロトコルにおいては、DMA転送部110が、メモリ106から送信バッファ109にDMA転送を行う際に、第2のチェックサム演算部113を用いてインターネットチェックサムを計算し、通信パケットを生成してもよい。また、TCPプロトコルにおいては、アプリケーションとプロトコルスタック間におけるメモリ領域の管理により、メモリ106において再送のためのデータ管理が行える場合には、メモリ107への転送(コピー)なしに通信パケットを構成してもよい。また、データ転送が必要なアプリケーションか否かの種別に応じて、通信パケットを送信バッファ109に生成する(第1の実施形態)か、上記のようにメモリ107へのデータコピーなしに通信パケットを生成するかを切り替えてもよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
Claims (11)
- プロトコルスタックを実行可能な少なくとも1つのプロセッサと、アプリケーションからの第1のデータと第2のデータを連結するための連結処理を行うことが可能な制御ハードウェアとを有する通信装置に備えられるDMA(Direct Memory Access)転送装置であって、
前記プロトコルスタックを実行中の前記プロセッサから転送命令を受信した場合に、前記第1のデータと前記第2のデータのそれぞれに対して第1のチェックサムの演算を行う第1の演算手段と、
前記制御ハードウェアから転送命令を受信した場合に、前記連結処理が行われる前記第1のデータおよび前記第2のデータと通信ヘッダとに対して前記第1のチェックサムの演算と異なる第2のチェックサムの演算を行う第2の演算手段と、
前記第1の演算手段または前記第2の演算手段による演算を介して得られたチェックサムデータを転送先アドレスに応じたメモリの領域に転送する転送手段と、
を有し、
前記第2の演算手段による演算は、前記プロセッサが前記第1のデータと前記第2のデータの連結が必要であると判断した場合に、前記連結処理が行われる前記第1のデータと前記第2のデータを転送するための転送命令を前記制御ハードウェアが前記DMA転送装置へ送信することに応じて行われることを特徴とするDMA転送装置。 - 前記第2のチェックサムの演算は、前記プロセッサが前記第1のデータと前記第2のデータの連結が不要であると判断した場合、前記プロセッサが前記第1のチェックサムをメモリから読み込み、読み込んだ前記第1のチェックサムを用いて前記プロセッサによって行われることを特徴とする請求項1に記載のDMA転送装置。
- 受信した転送命令に基づいて転送元アドレスと前記転送先アドレスとを含む情報を取得する取得手段と、
前記第1の演算手段または前記第2の演算手段を選択する選択手段と、をさらに備え、
前記第1の演算手段は、前記転送元アドレスに応じたメモリの領域からのデータに対して、前記第1のチェックサムの演算を行い、
前記第2の演算手段は、前記転送元アドレスに応じたメモリの領域からのデータに対して、前記第2のチェックサムの演算を行う
ことを特徴とする請求項1又は2に記載のDMA転送装置。 - 前記選択手段は、前記転送命令の発行元に基づいて、前記第1の演算手段または前記第2の演算手段を選択することを特徴とする請求項3に記載のDMA転送装置。
- 前記第1のチェックサムの演算は、前記第2のチェックサムの演算より計算量が少ないことを特徴とする請求項3又は4に記載のDMA転送装置。
- 前記第1のチェックサムの演算は、16ビットワードごとの1の補数和であり、前記第2のチェックサムの演算は、16ビットワードごとの1の補数和の1の補数であることを特徴とする請求項3から5のいずれか1項に記載のDMA転送装置。
- 請求項1乃至6のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
前記プロセッサにより前記第1のデータと前記第2のデータの連結が不要であると判断された場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、前記プロセッサにより前記第1のデータと前記第2のデータの連結が必要であると判断された場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。 - 請求項1乃至6のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
前記プロセッサにより前記アプリケーションからのデータをパケット化して伝送可能な最大データサイズが変更されていないと判断された場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、前記プロセッサにより前記最大データサイズが変更されていると判断された場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。 - 請求項1乃至6のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
前記アプリケーションからのデータがパケット化された通信パケット送信後において、
前記プロセッサにより当該通信パケットを再送すると判断された場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、前記プロセッサにより当該通信パケットの一部を再送すると判断された場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。 - 請求項1乃至6のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
前記アプリケーションからのデータを、前記転送手段が前記転送先アドレスに応じたメモリの領域にコピーする必要がある場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、当該コピーの必要が無い場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。 - プロトコルスタックを実行可能な少なくとも1つのプロセッサと、アプリケーションからの第1のデータと第2のデータを連結するための連結処理を行うことが可能な制御ハードウェアとを有する通信装置に備えられるDMA(Direct Memory Access)転送装置の制御方法であって、
前記プロトコルスタックを実行中の前記プロセッサから転送命令を受信した場合に、前記第1のデータと前記第2のデータのそれぞれに対して第1のチェックサムの演算を行う第1の演算工程と、
前記制御ハードウェアから転送命令を受信した場合に、前記連結処理が行われる前記第1のデータおよび前記第2のデータと通信ヘッダとに対して前記第1のチェックサムの演算と異なる第2のチェックサムの演算を行う第2の演算工程と、
前記第1の演算工程または前記第2の演算工程による演算を介して得られたチェックサムデータを転送先アドレスに応じたメモリの領域に転送する転送工程と、
を有し、
前記第2の演算工程による演算は、前記プロセッサが前記第1のデータと前記第2のデータとの連結が必要であると判断した場合に、前記連結処理が行われる前記第1のデータと前記第2のデータを転送するための転送命令を前記制御ハードウェアが前記DMA転送装置へ送信することに応じて行われることを特徴とするDMA転送装置の制御方法。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017238920A JP7145607B2 (ja) | 2017-12-13 | 2017-12-13 | Dma転送装置、dma転送装置の制御方法、および通信装置 |
| US16/213,024 US10833703B2 (en) | 2017-12-13 | 2018-12-07 | DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium |
| US17/029,248 US11336297B2 (en) | 2017-12-13 | 2020-09-23 | DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017238920A JP7145607B2 (ja) | 2017-12-13 | 2017-12-13 | Dma転送装置、dma転送装置の制御方法、および通信装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2019106063A JP2019106063A (ja) | 2019-06-27 |
| JP7145607B2 true JP7145607B2 (ja) | 2022-10-03 |
Family
ID=67062017
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017238920A Active JP7145607B2 (ja) | 2017-12-13 | 2017-12-13 | Dma転送装置、dma転送装置の制御方法、および通信装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP7145607B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102866045B1 (ko) * | 2020-11-06 | 2025-09-26 | 삼성전자주식회사 | 직접 메모리 억세스 엔진을 포함하는 메모리 장치, 이를 포함하는 시스템 및 메모리 장치의 동작방법 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010057033A (ja) | 2008-08-29 | 2010-03-11 | Nec Electronics Corp | 通信装置及び方法 |
| JP2015207223A (ja) | 2014-04-22 | 2015-11-19 | キヤノン株式会社 | 情報処理装置、情報処理方法 |
| JP2017103734A (ja) | 2015-12-04 | 2017-06-08 | キヤノン株式会社 | 通信装置およびその制御方法、プログラム |
| JP2017108357A (ja) | 2015-12-11 | 2017-06-15 | キヤノン株式会社 | 演算装置及び演算方法、通信装置 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11126181A (ja) * | 1997-10-22 | 1999-05-11 | Mitsubishi Electric Corp | 演算機能付き情報転送装置 |
-
2017
- 2017-12-13 JP JP2017238920A patent/JP7145607B2/ja active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010057033A (ja) | 2008-08-29 | 2010-03-11 | Nec Electronics Corp | 通信装置及び方法 |
| JP2015207223A (ja) | 2014-04-22 | 2015-11-19 | キヤノン株式会社 | 情報処理装置、情報処理方法 |
| JP2017103734A (ja) | 2015-12-04 | 2017-06-08 | キヤノン株式会社 | 通信装置およびその制御方法、プログラム |
| JP2017108357A (ja) | 2015-12-11 | 2017-06-15 | キヤノン株式会社 | 演算装置及び演算方法、通信装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2019106063A (ja) | 2019-06-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6433146B2 (ja) | 情報処理装置、システム、情報処理方法、コンピュータプログラム | |
| US8032670B2 (en) | Method and apparatus for generating DMA transfers to memory | |
| US8028103B2 (en) | Method and apparatus for generating secure DAM transfers | |
| JP4344576B2 (ja) | パケット通信装置 | |
| US11336297B2 (en) | DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium | |
| CN100592273C (zh) | 执行dma数据传输的设备和方法 | |
| US7707477B2 (en) | Checksum calculation | |
| JP5482230B2 (ja) | 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム | |
| US20250133136A1 (en) | Remote Memory Filling | |
| JP7145607B2 (ja) | Dma転送装置、dma転送装置の制御方法、および通信装置 | |
| JP4786575B2 (ja) | コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ | |
| CN102792638B (zh) | 以避免通信协议栈卷入的方式向设备发出至少一部分分组有效载荷的网络控制器电路 | |
| CN113422792A (zh) | 数据传输方法、装置、电子设备及计算机存储介质 | |
| CN1846424A (zh) | 校验和的确定 | |
| JP6938399B2 (ja) | 通信装置、通信方法およびプログラム | |
| CN121858391A (zh) | 数据处理的装置和方法 | |
| JP2004094931A (ja) | ネットワークシステムおよびネットワークにおける通信方法 | |
| JP2007329730A (ja) | 通信プロトコル処理装置 | |
| JP2021036630A (ja) | 通信装置、制御方法、およびプログラム | |
| JP6567476B2 (ja) | データ処理装置 | |
| JP4519090B2 (ja) | 送信装置、受信装置およびそれらの方法 | |
| JP7005303B2 (ja) | 通信装置、パケット生成装置およびそれらの制御方法 | |
| JP2020174322A (ja) | 通信装置、制御方法、およびプログラム | |
| HK40058773A (en) | Data transmission method and device, electronic equipment and computer storage medium | |
| JP2004227040A (ja) | ネットワークサーバ及びストレージデータ通信方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201202 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20210103 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210113 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210630 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210712 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210908 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220218 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220404 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220822 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220920 |
|
| R151 | Written notification of patent or utility model registration |
Ref document number: 7145607 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |