JP7145607B2 - Dma転送装置、dma転送装置の制御方法、および通信装置 - Google Patents

Dma転送装置、dma転送装置の制御方法、および通信装置 Download PDF

Info

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
Application number
JP2017238920A
Other languages
English (en)
Other versions
JP2019106063A (ja
Inventor
大輔 堀尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017238920A priority Critical patent/JP7145607B2/ja
Priority to US16/213,024 priority patent/US10833703B2/en
Publication of JP2019106063A publication Critical patent/JP2019106063A/ja
Priority to US17/029,248 priority patent/US11336297B2/en
Application granted granted Critical
Publication of JP7145607B2 publication Critical patent/JP7145607B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本発明は、チェックサム演算を行うことが可能なDMA転送装置に関する。
インターネットやイントラネット上でデータ通信を行う際に最も多く利用されている通信プロトコルとして、TCP/IPやUDP/IPがある。TCP/IPは、通信パケットの順序保証とパケット紛失時の再送制御を規定する通信プロトコルである。一方、UDP/IPは、通信パケットの順序保証や紛失に対するリカバリ処理を規定しない通信プロトコルである。なお、TCP/IPは、Transmission Control Protocol/Internet Protocolを示す。また、UDP/IPは、User Datagram Protocol/Internet Protocolを示す。
これらの通信プロトコルでは、通信パケットの整合性を検査するために、チェックサムが利用される。チェックサムとは、単純には、送信側で演算されるデータ列の総和である。送信側は、チェックサムを送信データに添付して送信し、受信側は、受信データ列の総和を演算して、当該総和が添付されたチェックサムと不一致の場合に、エラーと判定する。
上記各通信プロトコルでは、チェックサムとして、IPヘッダとTCP/UDPヘッダの特定フィールドと、ペイロードとを利用して演算されるインターネットチェックサムが利用されている。PC(Personal Computer)や組込み機器におけるインターネットチェックサム演算は、CPU(Central Processing Unit)によるソフトウェア処理や、NIC(Network Interface Card)やチップ内通信部のハードウェアにより実現化される。
チェックサム演算は処理負荷が大きいため、CPUの処理能力が低い組込み機器により演算される場合は、通信速度が低下してしまう可能性がある。そのため、以前より、通信処理専用のNPU(Network Processing Unit)やハードウェア演算器がチェックサムを演算することが提案されている。これにより、CPUの処理負荷の低減と演算処理の高速化が図られる。また、PCにおいても、CPUへの負荷低減を目的に、NIC等のハードウェアによりチェックサムが演算されてきた。例えば、特許文献1には、ネットワークパケットを記憶装置からネットワークアダプタ中のパケットバッファへ転送する際にチェックサムを計算することで、システムにおけるプロセッサへの負荷低減を実現する方法が提案されている。
また、チェックサム演算器とDMA(Direct Memory Access)転送装置を組み合わせ、DMAデータ転送中にチェックサムを演算することで、機器内部のシステム全体を通じて通信処理を高速化させる技術が提案されている。例えば、特許文献2には、アプリケーション層からのデータグラムを格納するバッファと通信部のバッファとの間でDMA転送を行う際に、2つのチェックサムを計算する方法が提案されている。ここで、2つのチェックサムは、IPのヘッダ・チェックサム、および、UDPまたはTCPのチェックサムである。
特開平6-78024号公報 特開2006-303765号公報
アプリケーション層からのデータグラム(ペイロード)をDMA転送中に、当該ペイロードの総和(ペイローサム)を演算することにより、当該ペイロードサムを利用したインターネットチェックサムを演算できることから、通信速度の高速化が図れる。しかしながら、DMA転送中にペイロード長が変更される場合には、インターネットチェックサムを演算する際に当該ペイロードサムを利用することができず、通信速度が低下するという課題がある。
本発明は上記課題に鑑みてなされたものであり、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データ転送中にチェックサムを演算する場合に通信速度が低下することを防ぐことが可能となる。
通信装置100の概略構成図である。 第1のチェックサム演算部112使用時のDMA転送例を示す。 第2のチェックサム演算部113使用時のDMA転送例を示す。 第1の実施形態におけるCPU101の処理フローチャートである。 第1の実施形態におけるDMA転送部110の処理フローチャートである。 第1の実施形態におけるペイロード長の変更無しの場合の各処理ブロックのシーケンスチャートを示す。 第1の実施形態におけるペイロード長の変更有りの場合の各処理ブロックのシーケンスチャートを示す。 第2の実施形態におけるCPU101の処理フローチャートである。 第2の実施形態におけるペイロード変更有りの場合の各処理ブロックのシーケンスチャートを示す。
以下、添付の図面を参照して、本発明をその実施形態の一例に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
[第1の実施形態]
(通信装置100の構成)
図1に、以下に説明する実施形態における通信装置100の概略構成図を示す。CPU101は、通信装置100に含まれる各機能ブロック、各ソフトウェア、各ハードウェアを制御する。本実施形態では、CPU101は、アプリケーションとプロトコルスタックの2つのソフトウェアを制御する。アプリケーションは、通信装置100としてカメラやカムコーダを想定する場合に、撮像した画像や動画像のデータをインターネットやメディアサーバにアップロードする際に動作するソフトウェアである。プロトコルスタックは、TCP(UDP)/IP等の通信プロトコル処理を行うソフトウェアである。具体的には、プロトコルスタックは、TCP(UDP)/IP通信における再送制御やパケットの順序保証、チェックサムを使用した通信パケットの整合性検査を行う。また、プロトコルスタックは、これらの機能を実現するための通信ヘッダであるTCP(UDP)ヘッダ、IPヘッダを生成する。
メモリ106は、アプリケーションが利用するメモリ領域である。メモリ106には、例えば、アプリケーションから出力される動画像等のデータが格納される。一方、メモリ107はプロトコルスタックが利用するメモリ領域である。メモリ107は、例えば、プロトコルスタックが動画像データからパケットを生成するための一時的なデータコピー領域や、通信ヘッダを生成する領域として使用される。なお、図1ではメモリ106とメモリ107は別々に構成されているが、これらのメモリは同一のメモリで構成され、メモリアドレスで各ソフトウェアの利用領域が管理されても良い。
アプリケーションが利用もしくは出力するデータは、システムバス102を介してメモリ106へ入出力される。また、各記憶領域(メモリ106、メモリ107、シーケンサ103内の内部メモリ105、通信部108内の送信バッファ109)間のデータのやり取り(データの転送/コピー)は、システムバス102を介して、CPU101、または、DMA転送部110内のDMAコントローラ111により実行される。また、通信装置100内の各ハードウェアブロック間のデータのやり取りは、システムバス102を介して行われるものとする。
DMA転送部110は、第1のチェックサム演算部112と、第2のチェックサム演算部113と、DMAコントローラ111から構成される。第1のチェックサム演算部112は、データグラムの総和(以下、ペイロードサム)を演算する。また、第2のチェックサム演算部113は、インターネットチェックサムを演算する。ペイロードサムの計算に伴う計算量は、インターネットチェックサムの計算に伴う計算量より少ない。具体的には、ペイロードサムとは、入力されたデータグラムの16ビットワードごとの1の補数和である。インターネットチェックサムとは、IETF(Internet Engineering Task Force)で規定されるRFC (Request for Comments)791、RFC793、RFC2460およびRFC1071における16ビットワードごとの1の補数和の1の補数である。より詳細には、本実施形態におけるインターネットチェックサムは、疑似ヘッダとTCPヘッダとペイロード(すべてのヘッダとテキスト)の合計(16のビットワードの1の補数合計)の反転(16ビットの1の補数)である。ここで、疑似ヘッダは、SRC(送信元)アドレス、DST(宛先)アドレス、プロトコルNo.(番号)、TCP長から構成され得る。
DMA転送部110は、このような構成を有することにより、DMA転送中にペイロードサムとインターネットチェックサムを演算することが可能となる。また、DMA転送部110は、チェックサム演算を行わずに、単純にDMA転送器としても動作することも可能である。
DMA転送部110は、CPU101またはシーケンサ103から設定されるレジスタの値等に基づいて、第1のチェックサム演算部112または第2のチェックサム演算部113のいずれかを選択する。また、DMA転送部110は、当該レジスタの値により指定されるメモリ領域からデスクリプタを読み出し、当該デスクリプタに基づいてDMA転送またはチェックサム演算を伴うDMA転送を行う。なお、以下の説明において、DMA転送を行うためのレジスタ設定を転送命令といい、チェックサム演算を伴うDMA転送を演算転送命令という。DMA転送部110に設定されるレジスタの値には、メモリの領域が指定される。DMA転送部110は、当該指定されたメモリの領域に格納されるデスクリプタにしたがって動作する。デスクリプタとは、DMA転送部110においてDMA転送を行う際に必要な情報であり、少なくとも転送元アドレス、転送先アドレス、データ長が含まれる。すなわち、DMA転送部は、受信した演算転送命令または転送命令に基づいて、転送元アドレスと転送先アドレスを含む情報を取得する。
シーケンサ103は、後述するように、演算転送命令の代行の依頼と共に所定の指示を受けたことに応じて、データ連結またはデータ分割を行うことが可能な制御ハードウェアである。例えば、シーケンサ103は、演算転送命令の代行の依頼と共に、データ分割を行う指示を受けた場合、データグラムをMSS(Maximum Segment Size)に分割する。なお、MSSとは、アプリケーションが出力するデータグラムを通信パケット化する際に通信プロトコル上で伝送可能であるサイズに分割する際の最大データサイズである。続いて、シーケンサ103内のヘッダ生成ロジック104が、分割/連結データの各々に対する通信ヘッダを生成する。シーケンサ103は、分割/連結データの各々に対する通信ヘッダを生成後、各分割/連結データと生成した通信ヘッダを送信バッファ109にDMA転送して通信パケット化するためのデスクリプタを生成する。生成したデスクリプタは、メモリ106に格納される。シーケンサ103は、デスクリプタをメモリ106に格納後、転送命令をDMA転送部110に対して発行する。
通信部108は、外部機器と通信を行う。具体的には、通信部108は、通信に必要なMAC(Media Access Contorol)層およびPHY層の処理を行う。
(第1のチェックサム演算部112使用時のDMA転送動作)
図2に、本実施形態における第1のチェックサム演算部112使用時のDMA転送例を示す。以下、DMA転送部110が、アプリケーションがメモリ106に出力したデータグラムをプロトコルスタックが使用するメモリ107へDMA転送する際に、第1のチェックサム演算部112を利用してペイロードサムを計算することを含む動作について説明する。
CPU101では、アプリケーションがメモリ106にデータグラム201を出力した後、プロトコルスタックへタスクが切り替わる。プロトコルスタックは、メモリ106に格納されたデータグラム201をDMA転送するためにデスクリプタ202を生成する。データグラムがMSSよりも小さい場合は、プロトコルスタックは、デスクリプタ202として、転送長がデータグラム201と同じサイズのデスクリプタと、ペイロードサム用に転送長が2バイトのデスクリプタを生成する。プロトコルスタックは、生成したデスクリプタ202をメモリ106に格納する。
一方、データグラム201がMSSよりも大きい場合は、MSS毎にペイロードサムを計算する必要があるため、プロトコルスタックはMSS毎にデータグラムを分割する。続いて、プロトコルスタックは、デスクリプタ202として、転送長がMSSである複数のデスクリプタと、転送長がMSSで分割した余りのデータサイズであるデスクリプタ、各分割データのペイロードサム用のデスクリプタを生成する。プロトコルスタックは、生成したデスクリプタ202をメモリ106に格納する。
なお、プロトコルスタックは、読み込み用のデスクリプタ202と書き込み用のデスクリプタ202を別々に生成してもよい。例えば、プロトコルスタックは、読み込み用のデスクリプタ202として、上記分割データ用のデスクリプタを生成してもよい。また、プロトコルスタックは、書き込み用のデスクリプタ202として、上記分割用のデスクリプタとペイロードサム用のデスクリプタを生成してもよい。ここで、プロトコルスタックは、書き込み用のデスクリプタ202として、分割データ用のデスクリプタとペイロードサム用のデスクリプタの転送長を加算して、1つのデスクリプタとしてまとめてもよい。
プロトコルスタックは、デスクリプタ202の生成後、演算転送命令をDMA転送部110に対して発行する。すなわち、プロトコルスタックは、第1のチェックサム演算部112を使用すること、および、デスクリプタを格納するメモリ領域、を示した値を、DMA転送部110のレジスタに設定する。DMA転送部110は、レジスタに設定された値に応じて、第1のチェックサム演算部112を使用することを決定する。なお、レジスタに設定された値を判定する以外の手法で、DMA転送部110が第1のチェックサム演算部112を使用することを決定してもよい。例えば、DMA転送部110は、システムバス102におけるトランザクションIDやレジスタアクセス元のアドレス等により、プロトコルスタックからの演算転送命令であることを検出して、第1のチェックサム演算部112を使用することを決定してもよい。また、DMA転送部110は、デスクリプタ202の転送元アドレスと転送先アドレスの組み合わせから、第1のチェックサム演算部112を使用することを判断してもよい。
CPU101(プロトコルスタック)から演算転送命令を受けたDMA転送部110において、内部のDMAコントローラ111は、レジスタに設定された値から、メモリ106に格納されているデスクリプタ202を読み込む。続いて、DMAコントローラ111は、デスクリプタ202に記載される転送長の分割データ203を、メモリ106からを読み出す。第1のチェックサム演算部112は、読み出された分割データのペイロードサム204を計算する。ペイロードサム204は、分割データ203の後ろに付加され、DMA転送部110は、デスクリプタ202に従って、これをメモリ107に書き込む。
次に、プロトコルスタックは、メモリ107に格納されるペイロードサム204からインターネットチェックサムを計算する。その後、プロトコルスタックは、各分割データ203に対応するインターネットチェックサムを含む通信ヘッダ205を生成し、メモリ107に格納する。さらに、プロトコルスタックは、メモリ107から送信バッファ109へ、分割データ203と通信ヘッダ205をDMA転送するためのデスクリプタを生成する。デスクリプタを生成後、プロトコルスタックは、転送命令をDMA転送部110に対して発行する。これに応じて、DMA転送部110は、分割データ203と通信ヘッダ205を通信部108の送信バッファ109に転送する。
通信部108は、送信バッファ109に書き込まれた分割データ203と通信ヘッダ205からなる通信パケット121を、外部機器へ送信する。
(第2のチェックサム演算部113使用時のDMA転送動作)
図3に、本実施形態における第2のチェックサム演算部113使用時のDMA転送例を示す。ここでは、アプリケーションからのデータグラムが、メモリ106からメモリ107へペイロードサム演算を伴ってDMA転送された後、プロトコルスタック(CPU101)がペイロード長を変更すると判断する場合を想定する。この場合、当該ペイロードサムを用いてインターネットチェックサムを計算することができなくなる。ペイロード長が変更される場合とは、例えば、データグラムを連結する場合や、MSSが変更される場合である。このような場合に、DMA転送部110が第2のチェックサム演算部113を利用してインターネットチェックサムを演算する動作について説明する。
まず、アプリケーションからのデータグラムが、メモリ106からメモリ107へDMA転送された後、プロトコルスタックは、ペイロード長を変更すると判断した場合に、演算転送命令の代行をシーケンサ103に通知する。プロトコルスタックは、演算転送命令の代行の依頼と共に、データ分割/連結に関する指示を、シーケンサ103に対して通知する。例えば、プロトコルスタックは、アプリケーションからのデータグラムがMSSよりも小さい場合に、次データと連結可能か否かを判断する。連結可能と判断した場合は、プロトコルスタックは、シーケンサ103に対して、データ連結の指示を、演算転送命令の代行の依頼と共に通知する。また、アプリケーションからデータグラムを転送した時点からMSSが変更になった場合に、プロトコルスタックは、シーケンサ103に対して、新たなMSSでのデータ分割を行うための指示を、演算転送命令の代行の依頼と共に通知する。
シーケンサ103は、プロトコルスタックからの通知に応じて、データの連結またはデータ分割を行う。続いて、シーケンサ103は、ヘッダ生成ロジック104において、インターネットチェックサム303のフィールドが未計算の通信ヘッダ120を生成し、内部メモリ105に格納する。シーケンサ103はさらに、通信ヘッダ120と、メモリ107に格納されるペイロード302および(第2のチェックサム演算部113により生成される)インターネットチェックサム303を送信バッファへDMA転送するためのデスクリプタ301を生成する。ここで、インターネットチェックサム303に対する転送先アドレスは、DMA転送後の通信ヘッダにおけるチェックサムフィールドを参照させ、通信部108の送信バッファ109への転送完了時に通信パケット121が完成するように設定される。
プロトコルスタックは、デスクリプタ301の生成後、演算転送命令をDMA転送部110に対して発行する。すなわち、プロトコルスタックは、第2のチェックサム演算部113を使用すること、および、デスクリプタ301を格納するメモリ領域、を示した値をDMA転送部110のレジスタに設定する。DMA転送部110は、レジスタに設定された値に応じて、第2のチェックサム演算部113を使用することを決定する。ここで、第1のチェックサム演算部112の使用時と同様に、DMA転送部110は、システムバスにおけるトランザクションIDやレジスタアクセス元のアドレス等により、シーケンサ103からの演算転送命令であることを検出して、第2のチェックサム演算部113を使用することを決定しても良い。また、DMA転送部110が、デスクリプタ301の転送元アドレスと転送先アドレスの組み合わせにより、第2のチェックサム演算部113を使用することを判断してもよい。
通信部108は、送信バッファ109に書き込まれたインターネットチェックサム303を含む通信ヘッダ120と、ペイロード302からなる通信パケット121を、外部機器へ送信する。
(CPU101の動作)
図4に、本実施形態におけるCPU101(プロトコルスタック)の処理フローチャートを示す。ここでは、アプリケーションからのデータグラムが、メモリ106からメモリ107へペイロードサム演算を伴ってDMA転送された後、ペイロード長を変更するか否かに応じて動作を切り替えるフローチャートに関して説明を行う。
S400では、プロトコルスタックは、アプリケーションからのデータグラムを、メモリ106から、プロトコルスタックが利用するメモリ107へ、ペイロードサム演算を伴って転送(コピー)する演算転送命令を、DMA転送部110に対して発行する。データグラムの転送時に、データサイズがMSS以上である場合は、MSS単位で分割してDMA転送が行われるものとする。すなわち、MSS単位で分割された分割データに各々に対して、ペイロードサムが計算される。データサイズがMSS以下の場合には、アプリケーションから通知されるデータグラムのサイズで転送が行われる。
S401では、プロトコルスタックは、S400で発行した演算転送命令に対する、DMA転送部110からの演算転送完了の通知を待つ。例えば、プロトコルスタックは、DMA転送部110からの割りこみを待つ。なお、プロトコルスタックは、演算転送完了を、DMAコントローラ111のレジスタをポーリングすることにより、判断してもよい。
S402では、プロトコルスタックは、アプリケーションからのデータグラムの長さとMSSを比較し、データグラムの長さがMSS以下である場合に、アプリケーションからの次のデータグラムと連結可能か否かを判断する。次のデータグラムと連結してもMSS以下である場合には、プロトコルスタックは、連結可能と判断し(S402でYes)、S406の処理に進む。データグラムの長さがMSSと等しい、もしくは、データグラムの長さがMSS以下であるが次データグラムと連結した場合MSS以上となる場合には、プロトコルスタックは、連結不可と判断して(S402でNo)、S403の処理に進む。
S403では、プロトコルスタックは、通信状況が変化し、アプリケーションからのデータグラム転送前とMSSに変更があるか否かを判断する。例えば、プロトコルスタックは、受信したSYN(同期)パケットにおいて、TCPでMSSの変更があるか否かを判断する。MSSの変更があった場合には(S403でYes)、S407の処理に進み、MSSの変更が無い場合には(S403でNo)、S404の処理に進む。
S404では、図2で説明したように、プロトコルスタックは、メモリ106からのデータ転送時に第1のチェックサム演算部112により計算されたペイロードサムを利用して、通信ヘッダ上の各フィールド値を参照して、インターネットチェックサムを計算する。また、プロトコルスタックは、インターネットチェックサムを計算後、通信ヘッダのチェックサムフィールドに書き戻す。S405では、プロトコルスタックは、DMA転送部110に対して、転送命令を発行する。続いて、S408では、プロトコルスタックは、転送命令に対する、DMA転送部110からの転送完了通知を待つ。ここで、プロトコルスタックは、転送完了を、割り込み、ポーリングのいずれにより検出してもよい。
一方、S402でデータグラムが連結可能と判断された場合(S402でYes)、および、MSSに変更がある場合(S403でYes)、プロトコルスタックは、インターネットチェックサムを計算するために、計算されたペイロードサムが利用できない。これらの場合、プロトコルスタックは、シーケンサ103に対して代行を通知する(S406、S407)。すなわち、プロトコルスタックは、シーケンサ103に対して、演算転送命令の代行を依頼し、第2のチェックサム演算部113を利用して、インターネットチェックサムを演算させる。S406またはS407からのS408では、プロトコルスタックは、シーケンサ103からの転送演算命令に対する、DMA転送部110からの演算転送完了の通知を待つ。ここで、プロトコルスタックは、演算転送完了を、割り込み、ポーリングのいずれにより検出してもよい。
(DMA転送部110の動作)
図5に、本実施形態におけるDMA転送部110の処理フローチャートを示す。図5は、DMA転送部110が、CPU101(プロトコルスタック)もしくはシーケンサ103から、演算転送命令または転送命令を受信した場合の処理を示すフローチャートである。
S500では、DMA転送部110は、受信した命令が演算転送命令か転送命令かを判断する。例えば、DMA転送部110は、第1のチェックサム演算部112と第2のチェックサム演算部113をバイパス設定するレジスタをもち、レジスタに設定された設定値から転送命令か演算転送命令かを判断する。ここで、DMA転送部110は、読み込みのデスクリプタおよび書き込みのデスクリプタにおいて、転送長が2バイト異なる場合に演算転送命令とし、転送長が同じ場合に転送命令と判断してもよい。また、DMA転送部110は、第1のチェックサム演算部112と第2のチェックサム演算部113に対して設定される演算サイズが0となっている場合に、転送命令と判断しても良い。
転送命令の場合には(S500でNo)、DMA転送部110は、デスクリプタに基づいて各メモリ領域(メモリ106、メモリ107、シーケンサ103内の内部メモリ105、通信部108内の送信バッファ109)間でDMA転送を行う(S501)。一方、演算転送命令の場合には(S500でYes)、S502において、DMA転送部110は、プロトコルスタックまたはシーケンサ103のいずれからの演算転送命令であるか(すなわち、演算転送命令の発行元)を判断する。DMA転送部110は、例えば、レジスタ設定値、システムバスにおけるトランザクションIDやレジスタアクセス元のアドレス、デスクリプタの転送元、転送先アドレスの組み合わせから、演算転送命令の発行元を判断する。シーケンサ103が演算転送命令の発行元である場合には(S502でNo)、S503において、DMA転送部110は、第2のチェックサム演算部113を使用して、インターネットチェックサムを計算する。続いて、S504では、DMA転送部110は、通信ヘッダ、ペイロード、および、計算したインターネットチェックサムを送信バッファ109へ転送する。一方、プロトコルスタックが演算転送命令の発行元である場合には(S502でYes)、S505において、DMA転送部110は、第1のチェックサム演算部112を使用して、ペイロードサムを計算する。続くS506では、DMA転送部110は、ペイロードとペイロードサムを、プロトコルスタックが利用するメモリ107へ転送する。S507において、DMA転送部110は、転送命令または演算転送命令の発行元に対して、転送完了または演算転送完了を通知する。
(各処理ブロックのシーケンスチャート(ペイロード長の変更無しの場合))
図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に対して、演算転送命令に対する演算タ転送完了を通知する。
S607では、プロトコルスタックは、ペイロード長が変更しないことを確認する。すなわち、プロトコルスタックは、インターネットチェックサムを計算するためにペイロードサムが利用可能であることを判断し、S607、S608において、ペイロードサムをメモリ107から読み込む。プロトコルスタックは、S609において、読み込んだペイロードサムから通信ヘッダ上の各フィールド値を参照してインターネットチェックサムを計算する。続いて、プロトコルスタックは、S610において、計算したインターネットチェックサムを通信ヘッダのチェックサムフィールドに挿入し、S611において、通信パケットをメモリ107へ書き込む。さらに、プロトコルスタックは、S612において、通信パケットを、通信部108の送信バッファ109に転送するためのデスクリプタを生成し、メモリ106に格納する。デスクリプタを生成後、プロトコルスタックは、S614において、DMA転送部110に対して転送命令を発行する。S615において、転送命令を受信したDMA転送部110は、S616において、デスクリプタをメモリ106より読み込む。続いて、DMA転送部110は、S617において、デスクリプタに従いメモリ107からから通信パケットを読み込み、S618において、通信部108内の送信バッファ109に通信パケットを書き込む。最後に、S619において、DMA転送部110は、CPU101(プロトコルスタック)に対して、転送完了を通知する。
(各処理ブロックのシーケンスチャート(ペイロード長の変更有りの場合))
図7に、ペイロード長の変更有りの場合の各処理ブロックのシーケンスチャートを示す。S700~S706の処理シーケンスは、図6におけるS600~S606と同様であるため、説明を省略する。すなわち、S700~S706において、第1のチェックサム演算部112により、ペイロードサムが演算される。
S707において、プロトコルスタックは、アプリケーションからの複数のデータグラムが連結できるか否かを判断する。複数データグラムの連結が可能な場合に、プロトコルスタックは、S708において、シーケンサ103に対して演算転送命令の代行の依頼と共に、データ連結の指示を通知する。S709において、シーケンサ103はデータ連結の指示を含む演算代行通知を受信し、通信ヘッダを内部メモリ105に生成する。続いて、シーケンサ103は、S710において、生成した通信ヘッダとメモリ107にS705において格納されたペイロードからインターネットチェックサムを演算しつつ、DMA転送するためのデスクリプタを生成する。S711において、シーケンサ103は、生成したデスクリプタをメモリ106に格納する。
S712において、シーケンサ103は、DMA転送部110に対して、演算転送命令を発行する。S713では、DMA転送部110は、演算転送命令により、チェックサム演算、および、メモリ106に格納されたデスクリプタのアドレス、および、DMA転送の開始が指示される。DMA転送部110は、S714において、メモリ106に対してアクセスし、S715において、メモリ106からデスクリプタを読み込む。DMA転送部110は、S715において、読み込んだデスクリプタに従って、DMA転送を開始する。DMA転送部110は、S717において、シーケンサ103の内部メモリ105に格納された通信ヘッダを読み込み、S716において、メモリ107に格納されたデータを読み込む。DMA転送部110は、読み込んだ通信ヘッダとデータから、インターネットチェックサムを計算する。
S718では、DMA転送部110は、通信パケットとして、通信ヘッダ、データ(ペイロード)、および、インターネットチェックサムを、通信部108内の送信バッファ109に書き込む。この際、DMA転送部110は、インターネットチェックサムを、通信ヘッダ内のチェックサムフィールドに挿入した後に、送信バッファ109に書き込んでもよい。または、DMA転送部110は、送信バッファ109上で、通信ヘッダが書き込まれた後にインターネットチェックサムをチェックサムフィールドに上書きしても良い。
S718の書き込み処理の完了後、DMA転送部110は、シーケンサ103に対して、演算転送完了を通知し、S719において、シーケンサ103が当該通知を受信する。さらに、シーケンサ103は、演算転送完了の通知の受信に伴い、CPU101に対して、演算転送命令の代行完了を通知する。最後に、S720において、CPU101は、演算転送命令の代行完了の通知を受信する。
このように、本実施形態によれば、ペイロード長が変更される場合であっても、ハードウェアでインターネットチェックサムの計算を代行することができ、DMA転送中における通信速度の低下を防ぐことが可能となる。
[第2の実施形態]
第1の実施形態では、ペイロード長がプロトコルスタックの処理時に変更される場合に、シーケンサ103がインターネットチェックサムの演算をCPU101に代わって行うことを説明した。第2の実施形態では、ペイロード長がプロトコルスタックの処理時に変更される場合に加えて、通信パケットの再送時にも変更され得る場合について説明する。以下、第1の実施形態と異なる点について説明する。
(CPU101の動作)
図8に、本実施形態におけるCPU101(プロトコルスタック)の処理フローチャートを示す。S800において、プロトコルスタックは、通信パケット送信後の通信パケット再送時のペイロード変更があるかどうかを判断する。ペイロード変更が発生する場合は、送信時のペイロードの途中までは正しく受信されており、送信時のペイロードの途中から再送パケット(最初に送信した通信パケットの一部を含む通信パケット)を生成する場合である。この場合、ペイロードが変更となるため、送信時に計算したペイロードサムは利用できなくなる。ここで、再送発生時にどこまで正しく受信できたかは、送信先からの確認応答パケットのACK番号を解析すること等により確認することができる。
S800において、ペイロードに変更がある場合には(S800でYes)S801に進む。S801において、プロトコルスタックは、シーケンサ103に対して、演算転送命令の代行を通知し、インターネットチェックサムをDMA転送部110における第2のチェックサム演算部113で演算させる。一方、再送時に送信時と同じペイロードを含む通信パケットを送信する場合には(S800でNo)、ペイロードサムが利用可能であるため、プロトコルスタックは、S404において、ペイロードサムを利用してインターネットチェックサムを計算する。続くS405では、プロトコルスタックは、通信パケットを送信バッファ109へDMA転送するための転送命令を発行する。
(各処理ブロックのシーケンスチャート(ペイロードの変更有りの場合))
図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に対して、演算転送命令を発行する。
DMA転送部110は、S908において、演算転送命令を受信する。DMA転送部110は、S910において、メモリ106に対してアクセスし、S911において、メモリ106からデスクリプタを読み込む。DMA転送部110は、S912において。読み込んだデスクリプタに従って、DMA転送を開始する。DMA転送部110は、S912において、シーケンサ103の内部メモリ105に格納された通信ヘッダを読み込み、S913において、メモリ107にペイロードを読み込む。ここで、デスクリプタにより指定されるペイロードの読み込みを開始するアドレスは、通信相手先において、正しく受信できなかった途中のデータの開始アドレスである。DMA転送部110の第2のチェックサム演算部113は、読み込んだ通信ヘッダとペイロードから、演算転送命令の発行時のレジスタ設定に従い、インターネットチェックサムを計算する。
S913では、DMA転送部110は、通信パケットとして、通信ヘッダ、データ(ペイロード)、および、インターネットチェックサムを、通信部108内の送信バッファ109に書き込む。S913の書き込み処理の完了後、DMA転送部110は、シーケンサ103に対して、演算転送命令の完了を通知し、S914において、シーケンサ103が当該通知を受信する。さらに、シーケンサ103は、演算転送命令の通知の受信に伴い、CPU101に対して、演算転送命令の代行完了を通知する。最後に、S915において、CPU101は、演算転送命令の代行完了の通知を受信する。
このように、本実施形態では、再送時にペイロードの変更があった場合に、DMA転送部110がインターネットチェックサムを演算し、再送パケットを生成することにより、DMA転送中における通信速度の低下を防ぐことが可能となる。なお、DMA転送部110に替えて、プロトコルスタックがインターネットチェックサムを計算して再送パケットを生成するように構成することも可能である。
[第3の実施形態]
第1の実施形態では、メモリ106からメモリ107にデータをDMA転送する際に、ペイロードサムを演算することを前提として説明を行った。しかしながら、再送を伴わないUDPプロトコルにおいては、DMA転送部110が、メモリ106から送信バッファ109にDMA転送を行う際に、第2のチェックサム演算部113を用いてインターネットチェックサムを計算し、通信パケットを生成してもよい。また、TCPプロトコルにおいては、アプリケーションとプロトコルスタック間におけるメモリ領域の管理により、メモリ106において再送のためのデータ管理が行える場合には、メモリ107への転送(コピー)なしに通信パケットを構成してもよい。また、データ転送が必要なアプリケーションか否かの種別に応じて、通信パケットを送信バッファ109に生成する(第1の実施形態)か、上記のようにメモリ107へのデータコピーなしに通信パケットを生成するかを切り替えてもよい。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100 通信装置、101 CPU、102 システムバス、103 シーケンサ、104 ヘッダ生成ロジック、105 内部メモリ、106 メモリ、107 メモリ、108 通信部、109 送信バッファ

Claims (11)

  1. プロトコルスタックを実行可能な少なくとも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. 前記第2のチェックサムの演算は、前記プロセッサが前記第1のデータと前記第2のデータの連結が不要であると判断した場合、前記プロセッサが前記第1のチェックサムをメモリから読み込み、読み込んだ前記第1のチェックサムを用いて前記プロセッサによって行われることを特徴とする請求項1に記載のDMA転送装置。
  3. 受信した転送命令に基づいて転送元アドレスと前記転送先アドレスとを含む情報を取得する取得手段と、
    前記第1の演算手段または前記第2の演算手段を選択する選択手段と、をさらに備え、
    前記第1の演算手段は、前記転送元アドレスに応じたメモリの領域からのデータに対して、前記第1のチェックサムの演算を行い、
    前記第2の演算手段は、前記転送元アドレスに応じたメモリの領域からのデータに対して、前記第2のチェックサムの演算を行う
    ことを特徴とする請求項1又は2に記載のDMA転送装置。
  4. 前記選択手段は、前記転送命令の発行元に基づいて、前記第1の演算手段または前記第2の演算手段を選択することを特徴とする請求項3に記載のDMA転送装置。
  5. 前記第1のチェックサムの演算は、前記第2のチェックサムの演算より計算量が少ないことを特徴とする請求項3又は4に記載のDMA転送装置。
  6. 前記第1のチェックサムの演算は、16ビットワードごとの1の補数和であり、前記第2のチェックサムの演算は、16ビットワードごとの1の補数和の1の補数であることを特徴とする請求項3からのいずれか1項に記載のDMA転送装置。
  7. 請求項1乃至のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
    前記プロセッサにより前記第1のデータと前記第2のデータ結が不要であると判断された場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、前記プロセッサにより前記第1のデータと前記第2のデータ結が必要であると判断された場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。
  8. 請求項1乃至のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
    前記プロセッサにより前記アプリケーションからのデータをパケット化して伝送可能な最大データサイズが変更されていないと判断された場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、前記プロセッサにより前記最大データサイズが変更されていると判断された場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。
  9. 請求項1乃至のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
    前記アプリケーションからのデータがパケット化された通信パケット送信後において、
    前記プロセッサにより当該通信パケットを再送すると判断された場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、前記プロセッサにより当該通信パケットの一部を再送すると判断された場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。
  10. 請求項1乃至のいずれか1項に記載のDMA転送装置と、前記少なくとも1つのプロセッサと、前記制御ハードウェアとを備える前記通信装置であって、
    前記アプリケーションからのデータを、前記転送手段が前記転送先アドレスに応じたメモリの領域にコピーする必要がある場合、前記プロセッサが前記転送命令を前記DMA転送装置に対して発行し、当該コピーの必要が無い場合、前記制御ハードウェアが前記転送命令を前記DMA転送装置に対して発行することを特徴とする通信装置。
  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転送装置の制御方法。
JP2017238920A 2017-12-13 2017-12-13 Dma転送装置、dma転送装置の制御方法、および通信装置 Active JP7145607B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102866045B1 (ko) * 2020-11-06 2025-09-26 삼성전자주식회사 직접 메모리 억세스 엔진을 포함하는 메모리 장치, 이를 포함하는 시스템 및 메모리 장치의 동작방법

Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11126181A (ja) * 1997-10-22 1999-05-11 Mitsubishi Electric Corp 演算機能付き情報転送装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
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