JP6614948B2 - 演算装置、演算方法、通信装置、及びプログラム - Google Patents

演算装置、演算方法、通信装置、及びプログラム Download PDF

Info

Publication number
JP6614948B2
JP6614948B2 JP2015236001A JP2015236001A JP6614948B2 JP 6614948 B2 JP6614948 B2 JP 6614948B2 JP 2015236001 A JP2015236001 A JP 2015236001A JP 2015236001 A JP2015236001 A JP 2015236001A JP 6614948 B2 JP6614948 B2 JP 6614948B2
Authority
JP
Japan
Prior art keywords
checksum
calculation
data
result
tcp
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
JP2015236001A
Other languages
English (en)
Other versions
JP2017103648A5 (ja
JP2017103648A (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 JP2015236001A priority Critical patent/JP6614948B2/ja
Publication of JP2017103648A publication Critical patent/JP2017103648A/ja
Publication of JP2017103648A5 publication Critical patent/JP2017103648A5/ja
Application granted granted Critical
Publication of JP6614948B2 publication Critical patent/JP6614948B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は演算装置及び演算方法、通信装置に関し、特に、チェックサム演算を行う技術に関する。
通信処理において行われるチェックサム演算は、一般にプロセッサへの負荷が大きいため、単純に実装すると通信のスループットが低下する可能性がある。そこで、チェックサム演算をハードウェアで、かつDMA(Direct Memory Access)転送中に行い、データ転送とチェックサム演算の処理を並列化させることが知られている。
また、TCP/IP通信において利用されるTCPヘッダを生成するには、TCPチェックサムを演算する必要がある。TCPチェックサムの演算においては、疑似ヘッダと呼ばれるデータに対してもチェックサム演算を実施する必要がある。そこで、疑似ヘッダに対するチェックサム演算をいかに効率的に行うかが課題となる。
特許文献1には、汎用のCPUの制御に基づき疑似ヘッダを作成し、作成した疑似ヘッダをチェックサム処理部へ送ることにより、この疑似ヘッダに基づくチェックサムを計算することが記載されている。
特許文献2には、IPヘッダ及びTCPヘッダに基づき疑似ヘッダを専用のハードウェアにより作成し、この疑似ヘッダに基づきチェックサムを計算することが記載されている。
特許文献3には、疑似ヘッダのチェックサム計算に必要な制御情報をチェックサムヘッダとしてネットワークアダプタ外で生成し、それをネットワークアダプタに転送することで、ネットワークアダプタ内でチェックサム演算を行うことが記載されている。
特開2013−102556号公報 特開2006−303765号公報 特開平6−78024号公報
特許文献1の構成のように、汎用のCPUの制御に基づき疑似ヘッダを外部で作成し、それをチェックサム演算器に転送する場合、その疑似ヘッダ作成と転送のそれぞれに処理時間が必要となる。このため、チェックサム演算の高速化が困難であるという課題があった。
特許文献2の構成のように、専用のハードウェアによりIPヘッダ及びTCPヘッダに基づき疑似ヘッダを作成する場合、TCPヘッダ及びIPヘッダを解析する処理をハードウェアにより実装する必要がある。このため、回路規模が大きくなり、LSIコストや消費電力コストの面で不利になるという課題があった。
特許文献3のように、疑似ヘッダのチェックサム演算のための制御情報を作成し、チェックサム演算器にその制御情報を転送する場合にも、同様に、制御情報の作成と転送とのそれぞれに処理時間が必要となる。このため、チェックサム演算の高速化が困難であるという課題があった。
本発明は上記課題に鑑みなされたものであり、大きなハードウェア資源を要せずに、高速にチェックサムを計算する技術を提供することを目的とする。
上記目的を達成するため、本発明による演算装置は以下の構成を備える。即ち、
パケットを構成するデータを入力する入力手段と、
前記入力手段に入力されたデータに含まれるチェックサム演算を行うべき複数の演算領域を指定する設定情報を保持する保持手段と、
前記設定情報により指定された複数の演算領域を占めるデータの各々に対して、演算を行う演算手段と、
前記演算手段による前記複数の演算領域を占めるデータの各々に対する演算結果と前記設定情報の一部のデータに基づいて、前記パケットのチェックサム演算の結果を取得する取得手段と、
前記チェックサム演算の結果を出力する出力手段と
を備え
前記設定情報の一部のデータとして、前記設定情報には前記入力手段に入力されるデータの長さの情報が含まれ、
前記取得手段は、前記複数の演算領域を占めるデータの各々に対する演算結果と前記長さの情報とを加算した結果をビット反転したものを、前記チェックサム演算の結果として取得する
本発明によれば、大きなハードウェア資源を要せずに、高速にチェックサムを計算する技術を提供することができる。
チェックサム演算装置を具備した通信装置の構成を示すブロック図。 通信装置における処理シーケンスを示す図。 チェックサム演算前のTCP/IPパケットの構成例を示す図。 レジスタの設定情報の構成例を示す図。 レジスタの設定情報の内容を説明する図。 TCP/IPパケットの演算領域と疑似ヘッダを示す図。 通信装置における処理シーケンスの詳細を示す図。
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
<実施形態1>
(通信装置の構成)
以下、本発明の一実施形態(実施形態1)を説明する。図1は、本実施形態に係るチェックサム演算装置100/160を具備した通信装置001の構成を示すブロック図である。図1のように、通信装置001は、インターフェース部143を介してネットワーク150との間でパケットデータを送受信する。本実施形態では、IPヘッダ、TCPヘッダ、及び、TCPペイロードを連結したデータであるTCP/IPパケットを対象データとしてチェックサム演算を行う構成例を説明する。
図1のように、通信装置001のシステムバス142には、CPU140、メモリ141、ライト転送装置120、チェックサム演算装置100/160、及び、リード転送装置130の6つのモジュールが接続されている。
CPU140は、通信装置001で実行される通信処理全般の処理・制御を担う。具体的には、CPU140が担う処理・制御には、TCP通信を行うためのプロトコル処理や、各種モジュールの制御が含まれる。
メモリ141は書き込み可能メモリであり、ネットワーク150と通信装置001との間で送受信されるパケットデータや、CPU140や各種モジュールが処理を行うために必要な一時データが格納される。
ライト転送装置120は、チェックサム演算装置160のデータ出力バス161から受信したデータをメモリ141へ転送する処理を担うモジュールである。ライト転送装置120は、ライト部121、ライト制御部122、及び、レジスタ部123を備える。ライト部121は、システムバス142とデータ出力バス161との間でデータの受け渡しを行う。レジスタ部123は、CPU140が、ライト転送装置120へ命令をセットしたり、ステータスを確認したりするために用いられる。ライト制御部122は、ライト転送装置120の全体制御を担う。
リード転送装置130は、メモリ141に格納されたデータをチェックサム演算装置100へ転送する処理を担うモジュールである。リード転送装置130は、リード部131、リード制御部132、及び、レジスタ部133を備える。リード部131は、システムバス142とデータ入力バス103との間でデータの受け渡しを行う。レジスタ部133は、CPU140が、リード転送装置130へ命令をセットしたり、ステータスを確認したりするために用いられる。リード制御部132は、リード転送装置130の全体制御を担う。
インターフェース部143は、通信装置001におけるネットワーク150とのインターフェースである。
チェックサム演算装置100は、以下の機能を持つ。すなわち、データ入力バス103から入力されたTCP/IPパケットについてTCPチェックサムを計算し、TCPヘッダの所定の場所に格納する。そして、TCPチェックサムを格納したTCP/IPパケットをインターフェース部143へ送信する機能を持つ。このような機能を実現するために、チェックサム演算装置100は、チェックサム制御部104、加算器105、レジスタ部106、バッファ部107、演算器1(108)、演算器2(109)、及び、演算器3(110)を備える。さらに、チェックサム演算装置100は、チェックサム演算装置100内外の機能要素間でデータを送受信するために、データ出力バス101、レジスタアクセスバス102、及び、データ入力バス103を備える。
データ出力バス101は、インターフェース部143と接続され、チェックサム演算装置100が、TCP/IPパケットを出力する際に使用するバスである。レジスタ部106は、CPU140が、チェックサム演算装置100へ命令をセットしたり、ステータスを確認したりするためのレジスタである。レジスタ部106にセットされたデータが、設定信号116により、チェックサム制御部104に通知される。また、チェックサム制御部104から、チェックサム演算装置100のステータスや処理結果が、通知信号117を使用してレジスタ部に通知される。CPU140のレジスタ部106へのアクセスの際には、レジスタアクセスバス102が使用される。
チェックサム制御部104は、チェックサム演算装置100の全体の制御を担う。チェックサム制御部104は、その全体をハードウェアの構成により実現してもよいし、あるいは、CPUとそのCPUが実行する処理コード等を含む構成により実現してもよい。
加算器105は、入力A113、入力B114をもとに、加算結果115を出力する。入力A113が16ビットの信号で、入力Bも16ビットの信号である場合に、加算結果115は、以下のように算出される。

(1)入力A113と入力B114を加算する。
(2)加算結果115の17ビット目が‘1’になった場合は、加算結果の17ビット目を‘0’にし、加算結果に‘1’を足す。

バッファ部107は、リード転送装置130からデータを受信した際や、チェックサム制御部104からのデータをネットワークへ送信する際に、一時的にデータを保持するものである。チェックサム制御部104からのバッファ制御信号113により、チェックサム出力バス118と、データ入力バス103とのどちらのバスからのデータをバッファリングするのかを特定する制御情報が送信される。また、バッファの状態(例えば、Full/Empty)情報がチェックサム制御部104へ送られる。
演算器1(108)、演算器2(109)、演算器3(110)は、チェックサム演算の処理部になる。各演算器内部には、16ビットのデータが記憶されている(演算器に記憶されているデータを、以下、「記憶値」という)。各演算器は以下の計算を行う。

(1)記憶値とデータ入力バスの所定データ(16ビット)を加算し、記憶値を上書きする。
(2)上記上書きされた記憶値の17ビット目が‘1’になった場合は、17ビット目を‘0’にし、記憶値に‘1’を足したものを新たな記憶値とする。

これは、TCPヘッダのチェックサム演算においては、演算対象のデータを所定のビット長(16ビット)のブロックに分割し、各ブロックを加算する演算をすることに対応したものである。上記記憶値が、演算結果信号112により、チェックサム制御部104へ送られる。また、チェックサム制御部104から、記憶値の初期化要求や、演算データ範囲等の制御情報が各演算値について送信される。制御情報の送信には、演算制御信号111が使用される。以上がチェックサム演算装置100の機能概要である。
チェックサム演算装置160は、チェックサム演算装置100と同一の機能構成を有するが、データの送受信の向きが異なる。
(データ送信処理)
次に、通信装置001のデータ送信時における処理について、図2を用いて説明する。図2は、通信装置001内部の各モジュール間におけるデータ/制御情報の送受信におけるフローを表している。
まず、CPU140は、メモリ141へ送信するパケットを生成する(S201)。TCP/IPv4を使用した場合における、CPU140によるパケット作成の一例について図3を参照して説明する。図3は1500Bytesからなる、TCP/IPv4パケットの構成を示したものである。IPv4ヘッダ300は20Bytes、TCPヘッダは20Bytes、ペイロードは1460Bytesで構成される。ここで、TCPヘッダに含まれるChecksumフィールド(チェックサム領域)303は空、つまり、ゼロ(0)データでよい。これは、チェックサム演算装置100で、チェックサム演算を実行し、結果を本フィールドに上書きするためである。このようなパケットをCPU140は、メモリ141に作成しておく。
パケットを作成したCPU140は、チェックサム演算装置100に対して、チェックサム演算のための命令をセット(設定)する(S202)。ここでチェックサム演算装置100のレジスタ部106の詳細について、図4を用いて説明する。レジスタ部106は全8個のフィールドを備えている。各フィールドそれぞれについて説明する。

・F_START401…CPU140は、本フィールド以外の全てのフィールドの設定が終了した際に、本フィールドに開始トリガーとしてあらかじめ定められた値をセットする。チェックサム演算装置100は、そのセットにおけるライト(書込み)を検知し、演算を開始する。
・F_PKT_LEN402…データ入力バスから入力されるパケット長を指定するフィールド
・F_A1_HEAD403…演算領域1の開始位置をセットするフィールド。
・F_A1_LEN404…演算領域1の範囲をセットするフィールド。
・F_A2_HEAD405…演算領域2の開始位置をセットするフィールド。
・F_A2_LEN406…演算領域2の範囲をセットするフィールド。
・F_A3_HEAD407…演算領域3の開始位置をセットするフィールド。
・F_A3_LEN408…演算領域3の範囲をセットするフィールド。
・F_CHECKSUM409…TCPフィールドのCHACKSUMフィールドの位置を指定するフィールド。

CPU140は、チェックサム演算装置100に対し上記の各フィールド401〜408のセットを行い、その後、開始をセットする(S203)。これは、F_START401に所定の値をライトすることにより行われる。開始をセットされたチェックサム演算装置100は、データ入力バス103からのデータ待ち続ける状態になる(S204)。
CPU140は、リード転送装置130にパケット転送命令をセットする(S205)。詳細については割愛するが、メモリ141に用意されたTCP/IPv4パケットをチェックサム演算装置100へ転送するように制御情報をセットする。その後、開始をセットする(S206)。開始をセットされたリード転送装置130は、メモリ141からTCP/IPv4パケットをリードし(S207)、チェックサム演算装置100への送信を開始する(S208)。
TCP/IPv4パケットを受信したチェックサム演算装置100は、先にS202でセットされた内容に従って、チェックサム処理を実行する(S209)。チェックサム処理が完了すると(S210)、インターフェース部143に対し、TCPヘッダのCHECKSUMフィールドに正しい値の格納されたTCP/IPv4パケットを送信する(S211)。
リード転送装置130、チェックサム演算装置100は、各々処理が完了したら、CPU140に対し割り込み信号などを利用して完了通知(それぞれ、S212、S213)を行ってもよい。以上が、大まかな処理フローである。
次に、チェックサム演算装置100の内部処理フローについて、図3のパケットを送信する場合を例に詳細に説明する。まず、レジスタ部106にセットする値について図5を用いて説明する。
F_PKT_LEN402には、パケット長をセットする。図3の例では、パケット長1500Bytesであるので、‘1500’をセットする。F_A1_HEAD403には、IPv4ヘッダのProtocolフィールドの位置をセットする。パケット先頭から数えて、先頭データを0Byte目とすると、9Bytes目にあるので、‘9’を入力する。
F_A1_LEN404には、上記Protocolフィールドの長さである‘1’(Byte)を設定する。F_A2_HEAD405には、IPv4ヘッダのSource IP Addressフィールドの位置(‘12’)をセットする。F_A2_LEN406には、Source IP Address フィールド(4Bytes)と、Destination IP Addressフィールド(4Bytes)を足し合わせた長さ(‘8’Bytes)をセットする。Source IP Addressフィールドは送信元IPアドレスフィールドであり、Destination IP Addressフィールドは宛先IPアドレスフィールドである。
F_A3_HEAD407には、TCPヘッダの位置(‘20’)をセットする。F_A3_LEN408には、TCPヘッダの長さ(20Bytes)とペイロードの長さ(1460Bytes)の合計(‘1480’Bytes)をセットする。F_CHECKSUM409には、TCPチェックサムの位置である‘36’をセットする。
各パケットのフィールドの詳細は、RFC791、および、RFC793に記載されている。各演算領域を図3のパケット上に示すと、図6の(A)ようになる。また、図6の(B)にIPv4を使用したTCP通信における疑似ヘッダフォーマットを示す。演算領域1(601)は、疑似ヘッダのProtocol(607)フィールド(プロトコル番号を示す領域)に該当する。演算領域2(602)は、Source Address(604)フィールド(送信元アドレスフィールド)と、Destination Address(605)フィールド(宛先アドレスフィールド)に該当する。演算領域3(603)は、TCPヘッダ及びTCPペイロードを連結した領域にあたる。したがって、演算領域1(601)と演算領域2(602)を図6の(A)のようにセットすることにより、疑似ヘッダの一部が計算できることになる。以上が、レジスタ部106にセットする値に関する説明である。
図3のパケットがメモリ141に配置され、図5の値がレジスタ部106セットされた場合のチェックサム演算装置100の詳細処理フローについて、図7を用いて説明する。なお、図7では、メモリ141にTCPヘッダのチェックサムフィールドのみ未完成のパケットがすでに用意されている場合の例について説明する。
まず、CPU140は、レジスタ部106にチェックサム演算命令をセットする(S202,図2のS202と同様)。チェックサム制御部104は、レジスタ部から演算命令を受け取り(S601)、演算器1(108)、演算器2(109)、演算器3(110)のそれぞれに対し、演算制御情報をセットする(S602)。ここで、演算器1(108)には演算領域1(601)、演算器2(109)には演算領域2(602)、演算器3(110)には演算領域3(603)がそれぞれ割り当てられる。演算命令セット後、CPU140はレジスタ部106に開始をセットする(S203)。具体的には、F_START(401)にライトアクセスを実行する。これにより、チェックサム制御部104に伝わった開始指示(S603)が、各演算器まで通知され(S604)、各演算器はデータの待機状態となる(S605)。
次に、CPU140は、リード転送装置130に対し、パケット転送命令のセット(S205)と開始(S206)指示を行う。それにより、リード転送装置130は、チェックサム演算装置100に対し、図3に示したパケットの転送を実行する(S207)。チェックサム演算装置100へ送られたパケットデータは、各演算器(108〜110)とバッファ部107へ送られる。
演算領域1(601)のデータが到着すると、演算器1(108)は、該当領域のデータをもとに演算を実行し、結果をチェックサム制御部104へ出力する。同様に演算器2(109)も演算領域2(602)に対する演算結果をチェックサム制御部104へ出力し(S607)、演算器3(110)も演算領域3(603)に対する演算結果をチェックサム制御部104へ出力する(S609)。演算器1〜3(108〜110)の演算結果を受信したチェックサム制御部104は、まず演算器1、2(108、109)の出力した演算領域1、2(601、602)についての演算結果を送信し(S610)、中間演算結果1を得る(S611)。次に、中間演算結果1と演算器3(110)が出力した演算領域3(603)に対する演算結果を加算器105へ送信し(S612)、中間演算結果2を得る(S613)。そして、中間演算結果2とF_A3_LEN408にセットされた値を送信し(S614)、中間演算結果3を得る(S615)。
ここで、F_A3_LEN408の値を加算器105へ送信する理由について説明する。図6の(B)で、IPv4を使用した時のTCP疑似ヘッダについて説明したが、TCP疑似ヘッダには、Length608が含まれる。この情報は、TCPヘッダの長さとTCPのペイロード長を足した値、すなわち、TCPヘッダ及びTCPペイロードを連結した領域の長さを示す値がセットされる。チェックサム演算装置100を適切に使用すると、Length608とF_A3_LEN408にセットされた値が一致する。よって、F_A3_LEN408の値を演算対象とすることにより疑似ヘッダに対する演算が可能となる。これは、チェックサム演算装置100内に、Length608に相当する値をパケットから計算するための処理(ロジック)を必要としないことを示す。一方、CPU140はプロトコル処理を担っているので、F_A3_LEN408の値を、プロトコル処理を行う上で容易にセットできる。以上がF_A3_LEN408を演算に含む理由である。
中間演算結果3を得たチェックサム制御部104は、中間演算結果3の各々のビット情報をビット反転し、F_CHECKSUM409に示された場所に値を上書きする(S616)。チェックサムにかかる処理が全て完了したので、バッファ部107から、インターフェース部143へ完成されたTCP/IPパケットを送信する(S211)。パケット中のデータを全て送ったことを例えばバッファ部107のステータスで確認後、チェックサム制御部104は、レジスタ部106に完了ステータスを示す情報を送信する。以上が、チェックサム処理の詳細である。
上記のように、本実施形態では、チェックサム演算の対象データに含まれるチェックサム演算を行うべき複数の演算領域を指定する設定情報をレジスタ部106に保持する。そして、設定情報により指定された複数の演算領域を占めるデータの各々に対して、演算部が部分的なチェックサム演算を行う。さらに、各演算領域についての演算結果に基づいて、チェックサム制御部104の制御に基づき対象データの全体のチェックサム演算の結果を取得する。
このように、本実施形態では、汎用的なCPUの制御に基づくのではなく、専用のハードウェアによりチェックサム演算を行うことにより、処理を高速化することが可能である。また、本実施形態では、レジスタ部106に設定された演算領域についての演算結果を集めることで、疑似ヘッダを直接生成することなく、TCP/IPパケット全体のチェックサムを計算している。本実施形態では、ヘッダ解析を一般的に行うための汎用的な構成は不要であるため、不必要に過大なハードウェア資源は不要である。したがって、大きなハードウェア資源を要せずに、高速にチェックサムを計算することが可能である。
また、ペイロードサイズが一定であれば、チェックサム演算の対象となる領域に変化はないため、レジスタ部106の設定情報をパケットごとに変更する必要がない。したがって、ペイロードサイズが一定の間は設定情報を書き換えることなく、高速にチェックサム演算を行うことが可能である。
<実施形態2>
実施形態1では、演算領域毎に独立した演算器1〜3(108、109、110)を用いる構成について説明したが、演算器1つでも機能は実現できる。この場合、ゲート規模を削減することができる。
実施形態1では、IPv4を用いた例を示したが、IPv6でも実現できる。IPv6では、IPヘッダのフォーマットとTCP疑似ヘッダのフォーマットが異なるが、チェックサム演算装置100へのセット手順を変更するのみでチェックサム演算が可能である。すなわち、IPv6を用いてTCP/IPパケットを構成する場合には、そのパケット構成においてチェックサム演算を行うべき領域を設定情報に設定することで、同様の処理によりチェックサムを計算することができる。
また、実施形態1では、TCPチェックサムについて記載したが、UDPチェックサムにおいても演算可能である。UDPチェックサムを計算する場合は、中間演算結果3の値が、0xFFFF(10進数で65535)であった場合にビット反転せずに書き込む必要がある。そこで、レジスタ部106に、TCPかUDPをセットするフィールドを用意し、CPU140がそのフィールドに指示を設定するようにすれば、TCPとUDPとの間で処理を切り替えることができる。
また、実施形態1では、パケット送信時におけるチェックサム演算装置100の処理について説明したが、パケット受信時も基本的には同等の機能を持つチェックサム演算装置160を利用し、効率的なチェックサム演算ができる。ただし、送信時と異なり、受信時は一般的にどのようなパケットが到着したかわからない。そのため受信パケットを予測したチェックサム演算装置160が求められる。また、予測が異なる場合があるのであれば、CPU140による再計算処理等を実装しておくとよい。
チェックサム演算装置100におけるチェックサム演算処理を無効にできる、すなわち、リード転送装置130から受信したパケットをそのままインターフェース部143へ送信するモードを具備してもよい。その場合、パケット毎に有効無効情報をセット可能な方式でも、処理する全パケットに対し一括で有効モード/無効モードを切り替える方式にしてもよい。
パケットサイズが小さく、CPU140でチェックサム演算処理を実行しても処理時間が性能的に許容できるのであれば、チェックサム演算装置100のチェックサム演算処理を無効とする等の切り替えを行ってもよい。受信時(チェックサム演算装置160)も同様である。
また、実施形態1では、チェックサム処理の終了後(S616)、インターフェース部143からデータを出力している(S211)。しかし、F_CHECKSUM409の位置より前のデータに対してはチェックサム処理の終了前に出力することが可能である。すなわち、チェックサム処理の開始前に、F_CHECKSUM409の解析をチェックサム制御部104で実施し、解析結果をもとにバッファ部107を制御することにより実現できる。
また、レジスタ部106の設定情報は、チェックサム演算の結果を出力する出力先を示す出力先情報を含み、インターフェース部143はこの出力先に対して結果を出力するようにしてもよい。これにより、CPU140からレジスタ部106の設定情報を設定するだけで、チェックサムの出力先を切り替えることが可能となる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100:チェックサム演算装置、106:レジスタ部、108,109,110:演算器、130:リード転送装置、143:インターフェース部、160:チェックサム演算装置、120:ライト転送装置、140:CPU、141:メモリ

Claims (8)

  1. パケットを構成するデータを入力する入力手段と、
    前記入力手段に入力されたデータに含まれるチェックサム演算を行うべき複数の演算領域を指定する設定情報を保持する保持手段と、
    前記設定情報により指定された複数の演算領域を占めるデータの各々に対して、演算を行う演算手段と、
    前記演算手段による前記複数の演算領域を占めるデータの各々に対する演算結果と前記設定情報の一部のデータに基づいて、前記パケットのチェックサム演算の結果を取得する取得手段と、
    前記チェックサム演算の結果を出力する出力手段と
    を備え
    前記設定情報の一部のデータとして、前記設定情報には前記入力手段に入力されるデータの長さの情報が含まれ、
    前記取得手段は、前記複数の演算領域を占めるデータの各々に対する演算結果と前記長さの情報とを加算した結果をビット反転したものを、前記チェックサム演算の結果として取得することを特徴とする演算装置。
  2. 前記演算手段は、前記入力手段に入力されたデータを所定のビット長のブロックに分割し、各ブロックを加算する演算を行うことを特徴とする請求項に記載の演算装置。
  3. 前記入力手段に入力されたデータは、IPヘッダ、及び、チェックサム領域が0に設定されたTCPヘッダ、及び、TCPペイロードを連結したデータであり、
    前記設定情報は、前記IPヘッダに含まれるプロトコル番号を示す領域と、前記IPヘッダに含まれる送信元IPアドレス及び宛先IPアドレスを示す領域と、前記TCPヘッダ及び前記TCPペイロードを連結した領域と、を前記複数の演算領域として設定し、
    前記ータの長さは、前記TCPヘッダ及び前記TCPペイロードを連結した領域の長さを示し、
    前記取得手段は、前記チェックサム演算の結果としてTCPチェックサムを取得する
    ことを特徴とする請求項に記載の演算装置。
  4. 前記出力手段は、IPヘッダ、前記取得手段により取得されたTCPチェックサムが設定されたTCPヘッダ、及び、TCPペイロードを出力することを特徴とする請求項に記載の演算装置。
  5. 前記演算手段は、前記複数の演算領域に対応する複数の演算器を備えることを特徴とする請求項1からのいずれか1項に記載の演算装置。
  6. 請求項1からのいずれか1項に記載の演算装置を備えることを特徴とする通信装置。
  7. 演算装置の演算方法であって、
    パケットを構成するデータを入力する入力工程と、
    入力されたデータに含まれるチェックサム演算を行うべき複数の演算領域を指定する設定情報を保持する保持工程と、
    前記設定情報により指定された複数の演算領域を占めるデータの各々に対して、演算を行う演算工程と、
    前記複数の演算領域を占めるデータの各々に対する演算結果と前記設定情報の一部のデータに基づいて、前記パケットのチェックサム演算の結果を取得する取得工程と、
    前記チェックサム演算の結果を出力する出力工程と
    を備え
    前記設定情報の一部のデータとして、前記設定情報には前記入力工程において入力されるデータの長さの情報が含まれ、
    前記取得工程では、前記複数の演算領域を占めるデータの各々に対する演算結果と前記長さの情報とを加算した結果をビット反転したものを、前記チェックサム演算の結果として取得することを特徴とする演算方法。
  8. コンピュータに、請求項に記載の各工程を実行させるプログラム。
JP2015236001A 2015-12-02 2015-12-02 演算装置、演算方法、通信装置、及びプログラム Active JP6614948B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015236001A JP6614948B2 (ja) 2015-12-02 2015-12-02 演算装置、演算方法、通信装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015236001A JP6614948B2 (ja) 2015-12-02 2015-12-02 演算装置、演算方法、通信装置、及びプログラム

Publications (3)

Publication Number Publication Date
JP2017103648A JP2017103648A (ja) 2017-06-08
JP2017103648A5 JP2017103648A5 (ja) 2019-01-10
JP6614948B2 true JP6614948B2 (ja) 2019-12-04

Family

ID=59017098

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015236001A Active JP6614948B2 (ja) 2015-12-02 2015-12-02 演算装置、演算方法、通信装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP6614948B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430842A (en) * 1992-05-29 1995-07-04 Hewlett-Packard Company Insertion of network data checksums by a network adapter
US6637007B1 (en) * 2000-04-28 2003-10-21 Network Appliance, Inc. System to limit memory access when calculating network data checksums
JP4344576B2 (ja) * 2003-09-26 2009-10-14 株式会社ルネサステクノロジ パケット通信装置
JP4612821B2 (ja) * 2004-09-10 2011-01-12 キヤノン株式会社 通信制御装置及び方法
JP2006303765A (ja) * 2005-04-19 2006-11-02 Seiko Epson Corp Tcp/ip送信処理回路及びそれを具備する半導体集積回路

Also Published As

Publication number Publication date
JP2017103648A (ja) 2017-06-08

Similar Documents

Publication Publication Date Title
JP6433146B2 (ja) 情報処理装置、システム、情報処理方法、コンピュータプログラム
JP7137430B2 (ja) データ記憶装置及びブリッジ装置
JP5269610B2 (ja) ユーザレベル命令に応じた巡回冗長検査演算の実行
US10819633B2 (en) Data-plane stateful processing units in packet processing pipelines
US7249202B2 (en) System and method for DMA transfer of data in scatter/gather mode
US10523764B2 (en) Data-plane stateful processing units in packet processing pipelines
US7864806B2 (en) Method and system for transmission control packet (TCP) segmentation offload
US6976205B1 (en) Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources
JP6600241B2 (ja) 演算装置及び演算方法、通信装置
JP4446373B2 (ja) プロセッサ、データ共有装置
Kunze et al. Investigating the applicability of in-network computing to industrial scenarios
US20060059221A1 (en) Multiply instructions for modular exponentiation
EP4080839A1 (en) Pcie-based data transmission method and apparatus
US11082318B2 (en) Network interface controller
EP4080840A1 (en) Data transmission method and apparatus based on pcie
US10554548B2 (en) Partially deferred packet access
JP6614948B2 (ja) 演算装置、演算方法、通信装置、及びプログラム
JPWO2008068937A1 (ja) データ転送制御装置およびコンピュータシステム
CN116775544A (zh) 一种协处理器和计算机设备
US11386029B2 (en) Direct memory access controller
US9948756B1 (en) Automated pipeline generation
US10237378B1 (en) Low-latency metadata-based packet rewriter
WO2015176646A1 (zh) 片上网络的Flit传输方法及装置
US8904076B2 (en) Coder with snoop mode
JP6570046B2 (ja) Dmaコントローラ、実現方法及びコンピュータ記憶媒体

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190816

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191002

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: 20191007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191105

R151 Written notification of patent or utility model registration

Ref document number: 6614948

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151