JP2022095198A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2022095198A JP2022095198A JP2020208379A JP2020208379A JP2022095198A JP 2022095198 A JP2022095198 A JP 2022095198A JP 2020208379 A JP2020208379 A JP 2020208379A JP 2020208379 A JP2020208379 A JP 2020208379A JP 2022095198 A JP2022095198 A JP 2022095198A
- Authority
- JP
- Japan
- Prior art keywords
- divided data
- output
- relay
- data
- packet
- 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.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 18
- 238000001514 detection method Methods 0.000 claims abstract description 24
- 238000004891 communication Methods 0.000 claims description 47
- 230000005540 biological transmission Effects 0.000 claims description 42
- 238000003672 processing method Methods 0.000 claims 1
- 238000012546 transfer Methods 0.000 description 51
- 238000012545 processing Methods 0.000 description 42
- 238000000034 method Methods 0.000 description 33
- 238000012544 monitoring process Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 30
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 25
- 230000006870 function Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Detection And Correction Of Errors (AREA)
- Communication Control (AREA)
Abstract
【課題】データ出力部とデータ中継部の間で発生したデータロスをデータの解析なしで検知できる情報処理装置を提供すること。【解決手段】情報処理装置は、パケットを複数の分割データとして出力する出力手段と、前記出力手段から出力された分割データを中継する中継手段と、前記中継手段から出力された前記分割データを受け取る受取手段と、前記出力手段から出力される前記分割データが、前記パケットの複数の分割データのうちの最後の分割データであること検出する第1の検出手段と、前記出力手段から出力される前記分割データが前記中継手段によって格納されなかったことを検出する第2の検出手段と、前記第2の検出手段が前記中継手段による前記分割データの未格納を検出した場合、前記第1の検出手段が前記最後の分割データを検出するまでの間に前記中継手段に入力された前記分割データのうちの最後の分割データに、エラー情報を付与する付与手段と、を有する。【選択図】図2
Description
本発明は情報処理装置に関する。
システムLSIの内部においてハードウェアモジュール間でデータの送受信を行う技術として、ARM(登録商標)が提供するAMBA(登録商標)AXI4-Streamプロトコルと呼ばれるバス規格がある。AXI4-Streamプロトコルでは、データの送信要求であるTVALID信号と、データ受信可能な状態を示すTREADY信号とを用いてマスターデバイスとスレーブデバイスの間でハンドシェークを行いデータの送受信を行う。LSIはLarge-Scale Integrationの略である。
データの送受信中に発生する異常に関するリカバリ技術として、特許文献1の技術がある。特許文献1の異常検出回路は、バスの信号を監視して転送が正常に行われたか否かを検出し、異常発生時に対応するスレーブモジュールのみに再起動を実施する。これにより、システム全体の初期化を実施せずに初期化・再起動が可能となる。
マスターデバイスに十分なデータバッファが無い場合は、AXI4-Streamプロトコルのようにスレーブデバイスの状態を確認してからデータを逐次送信することはできない。すなわち、マスターデバイスは、データ発生と同時に相手(スレーブデバイス)の状態によらずデータを送信することになる。一方、スレーブデバイスにおいても常時データの受け取りが可能な構成になっていなければ、TREADY信号を下げて(1から0にして)マスターデバイス側に送信を保留させる必要がある。このようなマスターデバイスとスレーブデバイスを接続してデータの送受信を行うと、マスターデバイスがスレーブデバイスのTREADY信号に応じてデータ送信を待たせる機能を有していないため、データロスが発生し得る。
データロスを軽減または回避するためにスレーブデバイスとマスターデバイスの間にバッファを置くことが考えられる。スレーブデバイスとマスターデバイスの間にバッファを置くことにより、スレーブデバイスが受信準備できていない状態でマスターデバイスのデータ送信が発生しても、その間はバッファにデータを格納することでデータロスを軽減または回避させることができる。しかし、バッファがフル状態でマスターデバイスがデータ送信を実施した場合は、データロスが発生する。その際、バッファを介したことによりスレーブデバイスがマスターデバイス/バッファ間で発生したデータロスを検知するには、データ解析が必要になる。
そこで、本発明は、データ出力部とデータ中継部の間で発生したデータロスを簡易に検知できる情報処理装置を提供することを目的とする。
そこで、本発明は、データ出力部とデータ中継部の間で発生したデータロスを簡易に検知できる情報処理装置を提供することを目的とする。
上記課題を解決するために、本発明の1つの態様にかかる情報処理装置は、パケットを複数の分割データとして出力する出力手段と、前記出力手段から出力された分割データを中継する中継手段と、前記中継手段から出力された前記分割データを受け取る受取手段と、前記出力手段から出力される前記分割データが、前記パケットの複数の分割データのうちの最後の分割データであること検出する第1の検出手段と、前記出力手段から出力される前記分割データが前記中継手段によって格納されなかったことを検出する第2の検出手段と、前記第2の検出手段が前記中継手段による前記分割データの未格納を検出した場合、前記第1の検出手段が前記最後の分割データを検出するまでの間に前記中継手段に入力された前記分割データのうちの最後の分割データに、エラー情報を付与する付与手段と、を有する。
本発明によれば、データ出力部とデータ中継部の間で発生したデータロスを簡易に検知することができる。
図1Aは本発明の実施形態に係る通信装置100を含むシステム10を示している。システム10は、ファイルサーバ150、通信装置100、通信装置T1および通信装置T2を有する。通信装置100は、例えば、通信機能を備えるプリンタ、カメラ、複写機、パーソナルコンピュータ、タブレット、スマートフォン、ウエラブルウォッチなどである。
ファイルサーバ150は、通信装置100、通信装置T1および通信装置T2からデータを受信して保存する。
ファイルサーバ150は、通信装置100、通信装置T1および通信装置T2からデータを受信して保存する。
通信装置100は、通信装置100内部で発生するパケットロスを検知し、適切な通知を行うことができる装置である。通信装置100は、通信装置T1および通信装置T2とともに、デイジーチェーンネットワークを構成する。なお、通信装置T2に他の通信装置を接続してもよい。
通信装置100、T1およびT2は、ファイルサーバ105に、第1のケーブル154により接続されている。また、通信装置100は、通信装置T1に、第2のケーブル155により接続されている。通信装置T1は、通信装置T2に、第3のケーブル156により接続されている。
本実施形態では、第1のケーブル154、第2のーブル155および第3のケーブル156は、Ethernet(登録商標)ケーブルであり、各機器はEhternetで接続されている。
通信装置100、T1およびT2は、ファイルサーバ105に、第1のケーブル154により接続されている。また、通信装置100は、通信装置T1に、第2のケーブル155により接続されている。通信装置T1は、通信装置T2に、第3のケーブル156により接続されている。
本実施形態では、第1のケーブル154、第2のーブル155および第3のケーブル156は、Ethernet(登録商標)ケーブルであり、各機器はEhternetで接続されている。
なお、システム10は、複数のレーンから構成されていてもよい。その場合、図1Cに示すように、ファイルサーバ150と通信装置100の間に、スイッチングハブ151を設ける。スイッチングハブ151を用いることにより、複数のレーンからファイルサーバ150へのアクセスが可能となる。図1Bでは、第2のレーンが、スイッチングハブ151から右に出る線により示されている。
次に通信装置100の詳細について、図1Cを参照して説明する。通信装置100は、CPU101、メモリ102、送信DMAC103、送信バッファ104および送信インターフェース105を有する。DMACはDirect Memory Access Controllerの略である。また、通信装置100は、受信DMAC106、受信バッファ107、受信インターフェース108およびパケットロス処理部200を有する。
CPU101は、通信装置100全体を制御するモジュールである。メモリ102はCPU101が実行するプログラムを格納する。また、メモリ102は、他機器(通信装置T1)から受信したパケットおよびファイルサーバ105へ送信するためのパケットを格納する。
CPU101は、通信装置100全体を制御するモジュールである。メモリ102はCPU101が実行するプログラムを格納する。また、メモリ102は、他機器(通信装置T1)から受信したパケットおよびファイルサーバ105へ送信するためのパケットを格納する。
送信DMAC103は、CPU101からの指示のもと、メモリ102からパケットを読み出し、送信バッファ104に転送する。送信バッファ104は、送信DMAC103から送られてくる送信パケットを一次的に格納し、送信インターフェース105に送信する。送信インターフェース105は、送信バッファ104から受け取った送信パケットを、ネットワーク(第1のケーブル154)を介してファイルサーバ105に送信する。
受信インターフェース108は、ネットワーク(第2のケーブル155)から受信した受信パケットを受信バッファ107に格納する。受信バッファ107は、受信インターフェース108から送られてくる受信パケットを一次的に格納し、受信DMAC106からの要求に応じて、受信パケットを受信DMAC106に送信する。受信DMAC106は受信バッファ107、または、パケットロス処理部200から読み出したデータをメモリ102に転送する。
受信インターフェース108は、ネットワーク(第2のケーブル155)から受信した受信パケットを受信バッファ107に格納する。受信バッファ107は、受信インターフェース108から送られてくる受信パケットを一次的に格納し、受信DMAC106からの要求に応じて、受信パケットを受信DMAC106に送信する。受信DMAC106は受信バッファ107、または、パケットロス処理部200から読み出したデータをメモリ102に転送する。
パケットロス処理部200は、受信インターフェース108が受信バッファ107に受信パケットを出力した際に、正常に受信パケットが受信バッファ107に格納されたか否かについて監視を行う。そして、受信バッファ107に正常にパケットが格納されなかった場合(未格納の場合)、パケットロス処理部200は、受信バッファ107から受信DMAC106へ出力されるパケットに対してエラー情報を付与する。パケットロス処理部200による監視は、スヌープバス109を介して実施する。なお、本実施形態では、エラー情報の付与は、データに含まれているエラー情報を変更する(0から1にする)ことにより行われる。
受信インターフェース108をパケット(データ)出力部と考え、受信バッファ107を中継部と考え、受信DMAC106をパケット受取部と考えると、パケットロス処理部200は、パケットに関するデータロスを当該パケットの解析なしで検知する。
受信インターフェース108をパケット(データ)出力部と考え、受信バッファ107を中継部と考え、受信DMAC106をパケット受取部と考えると、パケットロス処理部200は、パケットに関するデータロスを当該パケットの解析なしで検知する。
次にパケットロス処理部200の詳細について図2を用いて説明する。なお、パケットロス処理部200の説明にあたり必要となる周辺モジュール(受信インターフェース108、受信バッファ107、受信DMAC106)より入出力される各種信号についても説明する。パケットロス処理部200は、種々の情報(信号を含む)を処理するので、情報処理装置と称することができる。
パケットロス処理部200は、監視部201と処理部208を有する。また、パケットロス処理部200は、NOT回路215、AND回路216、OR回路217、218および219を有する。監視部201は、パケットロス検知部202と、送信回数カウント部203と、ラスト検知部204とを有する。処理部208は、送信回数カウント部209と、パケットロス印加部210と、転送印加部211とを有する。送信回数カウント部209は、カウンタtx_valid_cnt_B(220)を備えている。
パケットロス処理部200は、監視部201と処理部208を有する。また、パケットロス処理部200は、NOT回路215、AND回路216、OR回路217、218および219を有する。監視部201は、パケットロス検知部202と、送信回数カウント部203と、ラスト検知部204とを有する。処理部208は、送信回数カウント部209と、パケットロス印加部210と、転送印加部211とを有する。送信回数カウント部209は、カウンタtx_valid_cnt_B(220)を備えている。
受信インターフェース108と受信バッファ107の間のバスAは、以下の5つの信号線231~235により構成される。なお、信号線は信号と同義であると言えるので、以下の記載では、信号線231~235は単に信号と称する。バスAは、例えば、ARM(登録商標)が提供するAMBA(登録商標)AXI4-Streamプロトコルと呼ばれるバス規格に準拠したバスである。後述するバスBおよびバスCも同様なバス規格に準拠したバスである。
valid_A(231)は、受信インターフェース108がデータを出力する際に1にアサートされる信号である。信号231は、受信バッファ107のpushポートに接続されている。pushポートに1が入力されると、受信バッファ107がフル(full)状態である場合を除き、data_A(233)、last_A(234)およびerror_A(235)の3つのデータ(信号)が受信バッファ107に格納される。
valid_A(231)は、受信インターフェース108がデータを出力する際に1にアサートされる信号である。信号231は、受信バッファ107のpushポートに接続されている。pushポートに1が入力されると、受信バッファ107がフル(full)状態である場合を除き、data_A(233)、last_A(234)およびerror_A(235)の3つのデータ(信号)が受信バッファ107に格納される。
ready_A(232)は、受信バッファ107がデータ受信可能であるか否かの状態を示す信号である。信号232の出力元は受信バッファ107のnot_fullポートである。すなわち、受信バッファ107がフル状態ではない場合に、信号232が1となり受信可能状態を示す。data_A(233)は、受信バッファ107に転送する受信パケットの先頭から適宜所定バイト数ずつ出力されるデータである(例えば、1パケットは16回に分けて、分割データとして転送される)。last_A(234)は、data_A(233)に出力されるデータ(分割データ)がパケットの最後のデータであるとき、そのデータと同時に出力(1にアサート)されるラスト情報である。
error_A(235)は、受信インターフェース108から出力されたパケットがエラーを含む場合に、通知されるエラー情報である。last_A(234)が1にアサートされるのと同時にerror_A(235)は1にアサートされる。
error_A(235)は、受信インターフェース108から出力されたパケットがエラーを含む場合に、通知されるエラー情報である。last_A(234)が1にアサートされるのと同時にerror_A(235)は1にアサートされる。
受信バッファ107とパケットロス処理部200の間のバスBを構成する5つ信号241~245の基本的な意味は、バスAの信号231~235と同じである。なお、受信バッファ107が空でない場合に、not_emptyポートが1にアサートされる。そして、この情報をvalid_B(241)として使用し、パケットロス処理部200に対しての送信要求とする。また、パケット処理部200からのパケット受信準備完了信号であるready_B(242)は、受信バッファ107のpopポートに接続されており、受信バッファ107にデータが存在する場合は、受信バッファ107からデータが出力される。パケットロス処理部200と受信DMAC106の間のバスCを構成する5つの信号251~255の基本的な意味は、バスAおよびバスBと同じあるため、説明は省略する。
次にパケットロス処理部200の内部について説明する。
監視部201のパケットロス検知部202は、受信インターフェース108と受信バッファ107の間でのデータ転送においてパケットロスが発生したことを検知する。具体的には、受信バッファ107がフル(すなわち、ready_A(232)が0)で、且つ、受信インターフェース108からパケット出力がされる(すなわちvalid_A(231)が1である)ことを検知する。パケットロス検知部202は、パケットロス(分割データの未格納)を検知すると、pkt_loss_detect(205)を1にして、パケットロスが発生したことを処理部208へ通知する。
監視部201のパケットロス検知部202は、受信インターフェース108と受信バッファ107の間でのデータ転送においてパケットロスが発生したことを検知する。具体的には、受信バッファ107がフル(すなわち、ready_A(232)が0)で、且つ、受信インターフェース108からパケット出力がされる(すなわちvalid_A(231)が1である)ことを検知する。パケットロス検知部202は、パケットロス(分割データの未格納)を検知すると、pkt_loss_detect(205)を1にして、パケットロスが発生したことを処理部208へ通知する。
監視部201の送信回数カウント部203は、受信インターフェース108からの1パケットを構成する分割データの転送(トランザクション)が、正常に受信バッファ107に格納された回数をカウントする。具体的は、送信回数カウント部203は、valid_A(231)=ready_A(232)=1が発生した回数をカウントする。カウント数は、受信インターフェース108からパケットの先頭が出力される前に0にセットされて、送信回数カウント部203は、パケットの最後を示すlast_A(234)までに正常に転送された回数をカウントする。カウント結果は適宜tx_valid_cnt_A(206)により、送信回数カウント部203から処理部208に通知(送信)される。
監視部201のラスト検知部204は、受信インターフェース108から出力されパケットの最後の転送を示すlast_A(234)を検知する。当該検知結果は、適宜last_detect(207)により、ラスト検知部204から処理部208に通知される。
処理部208の送信回数カウント部209は、受信DMAC106に分割データが転送された回数をカウントする。送信回数カウント部209内のカウンタであるtx_valid_cnt_B(220)にカウント数が蓄積される。送信回数カウント部209は、valid_C(251)とready_C(252)を監視して、ともに1になっているときにインクリメントを行う(カウント数を1だけ増加する)。
パケットロス印加部210は、パケットロス検知部202からパケットロスを通知された場合、set_pkt_loss(212)により、受信バッファ107から出力されるパケットに対してエラー情報を付与する。具体的にはerror_B(245)信号と、set_pkt_loss(212)の値とが、OR回路218によりOR処理され、OR回路218の出力が受信DMAC106に送信される。
パケットロス印加部210は、パケットロス検知部202からパケットロスを通知された場合、set_pkt_loss(212)により、受信バッファ107から出力されるパケットに対してエラー情報を付与する。具体的にはerror_B(245)信号と、set_pkt_loss(212)の値とが、OR回路218によりOR処理され、OR回路218の出力が受信DMAC106に送信される。
また、last_B(244)と、error_B(245)のアサートされるタイミングは同一である。したがって、OR回路217により、last_B(244)とset_pkt_loss(212)をOR処理して、OR回路217の出力を受信DMAC106に送信することにより、ラスト情報を通知することも可能である。この構成にすることにより、受信インターフェース108と受信バッファ107の間でのデータ転送においてラスト情報をロス(lost)しても受信DMAC106に対してラスト情報を通知することができる。このラスト情報の通知は、後述する。
転送印加部211は、パケットロス処理部200がエラー情報を付与したデータを転送する必要がある際に、受信バッファ107に転送するべきデータが存在しない場合、代理転送要求を生成する(分割データを追加するため)。転送要求は、oneshot_valid(213)を用いて実施する。代理転送は、oneshot_valid(213)とvalid_B(241)を、OR回路219によりOR処理して、OR回路219の出力をvalid_C(251)として受信DMAC106に入力することにより実現できる。また、oneshot_valid(213)が転送印加部211から出力されている間は、受信DMAC106のready_C(252)は上記の代理転送に利用されるため、受信バッファ107に対するready_B(242)は0にしておく必要がある。そのため、oneshot_valid(213)のNOT回路215による反転信号と、ready_C(252)とをAND回路216によりAND処理して、AND回路216からready_B(242)として出力することが好ましい。
なお、図2に示す各機能部は、ASICやプログラマブルロジックアレイ(PLA)等の専用のハードウェア又はソフトウェアとして通信装置100に実装される。ハードウェアとして実装される場合は、各機能部それぞれ又はいくつかをまとめた専用のハードウェアモジュールとして実装してもよい。ソフトウェアとして実装される場合には、各機能部を実行するためのプログラムがメモリ102に記憶され、CPU101により適宜読み出されて実行される。ASICは、Application Specific Integrated Circuit(特定用途向け集積回路)の略である。
次に、パケットロス処理部200の動作に用いて図3および図4のフローチャートを用いて説明する。まず、監視部201の動作について、図3を参照して説明する。フローチャート中のSはStepの略である。
S301において、監視部201は、last_detect(207)、pkt_loss_detect(205)およびtx_valid_cnt_A(206)を全て0にする。
そして、S302において、監視部201は、受信インターフェース108の転送要求の監視を行う。すなわち、監視部201は、valid_A(231)=1であるか否かを判定する。受信インターフェース108から転送要求が発生しない場合(S302:No)、監視部201は監視を継続する(S303)。
S301において、監視部201は、last_detect(207)、pkt_loss_detect(205)およびtx_valid_cnt_A(206)を全て0にする。
そして、S302において、監視部201は、受信インターフェース108の転送要求の監視を行う。すなわち、監視部201は、valid_A(231)=1であるか否かを判定する。受信インターフェース108から転送要求が発生しない場合(S302:No)、監視部201は監視を継続する(S303)。
受信インターフェース108から転送要求が発生した場合(S302:Yes)、監視部201は、S304およびS307に進む。
S304において、監視部201は、転送要求時に受信バッファ107の受信準備ができているかを判定する。すなわち、監視部201は、ready_A(232)=1であるか否かを判定する。
S304の判定結果がYesの場合(受信準備ができている場合)、S305において、監視部201は、tx_valid_cnt_A(206)をインクリメントする。
一方、ready_A(232)=0である場合(S304:No)、受信バッファ107にデータが格納されないので、S306において、監視部201は、pkt_loss_detect(205)=1をセットする。
S304において、監視部201は、転送要求時に受信バッファ107の受信準備ができているかを判定する。すなわち、監視部201は、ready_A(232)=1であるか否かを判定する。
S304の判定結果がYesの場合(受信準備ができている場合)、S305において、監視部201は、tx_valid_cnt_A(206)をインクリメントする。
一方、ready_A(232)=0である場合(S304:No)、受信バッファ107にデータが格納されないので、S306において、監視部201は、pkt_loss_detect(205)=1をセットする。
S307において、監視部201は、受信インターフェース108からのデータにラスト情報が含まれているかを判定する。すなわち、監視部201は、last_A(234)=1であるか否かを判定する。last_A(234)=1である場合(S307:Yes)、S308において監視部201は、last_detect(207)=1をセットする。S307の判定結果がNoの場合、S309に進む。
S309において、監視部201は、監視を完了するか否かを判定する。監視を完了する条件はlast_detect(207)=1である。S309の判定結果がYesの場合、監視部201は監視を終了する。S309の判定結果がNoの場合、S302に戻り、監視部201は、上記した処理を実行する(監視処理を継続する)。
S309において、監視部201は、監視を完了するか否かを判定する。監視を完了する条件はlast_detect(207)=1である。S309の判定結果がYesの場合、監視部201は監視を終了する。S309の判定結果がNoの場合、S302に戻り、監視部201は、上記した処理を実行する(監視処理を継続する)。
次に、処理部208の処理について図4を参照して説明する。
S401において、処理部208は、oneshot_valid(213)、set_pkt_loss(212)およびtx_valid_cnt_B(220)を0にセットする。S401の後、送信回数カウント部209の処理(S430)と、転送印加部211の処理(S431)と、パケットロス印加部210の処理(S432)の処理が並行して実行される。
S401において、処理部208は、oneshot_valid(213)、set_pkt_loss(212)およびtx_valid_cnt_B(220)を0にセットする。S401の後、送信回数カウント部209の処理(S430)と、転送印加部211の処理(S431)と、パケットロス印加部210の処理(S432)の処理が並行して実行される。
まず、送信回数カウント部209の処理(S430)について説明する。
送信回数カウント部209は、バスCの監視を行う。具体的には、S402において、送信回数カウント部209は、valid_C(251)=ready_C(252)=1であるかを判定する。S402の判定結果がYesの場合、S404に進み、送信回数カウント部209は、last_C(254)=1であるかを判定する。
送信回数カウント部209は、バスCの監視を行う。具体的には、S402において、送信回数カウント部209は、valid_C(251)=ready_C(252)=1であるかを判定する。S402の判定結果がYesの場合、S404に進み、送信回数カウント部209は、last_C(254)=1であるかを判定する。
S404の判定結果がNoの場合、S405に進み、送信回数カウント部209は、tx_valid_cnt_B(220)をインクリメントする。S405の後、S402に戻る。
データ転送が発生しない場合(S402:No)は、S403に進み、監視を継続する。
S404の判定結果がYesの場合、つまり、データ転送において、last_C=1であった場合、S406に進み、送信回数カウント部209は、tx_valid_cnt_B(220)=0とする。そして、送信回数カウント部209は、転送回数(送信回数)のカウントを終了する。
データ転送が発生しない場合(S402:No)は、S403に進み、監視を継続する。
S404の判定結果がYesの場合、つまり、データ転送において、last_C=1であった場合、S406に進み、送信回数カウント部209は、tx_valid_cnt_B(220)=0とする。そして、送信回数カウント部209は、転送回数(送信回数)のカウントを終了する。
次に、転送印加部211の処理(S431)について説明する。
S407において、転送印加部211は、last_detect(207)=1が発生しているか否かを判定する。S407の判定結果がNoの場合、S408に進み、転送印加部211は、last_detect(207)=1の発生を検知するまで待機する。
S407の判定結果がYesの場合、S409に進み、転送印加部211は、pkt_loss_detect(205)=1であるか否かを判定する。パケットロスが発生していなかった場合は、S409の判定結果がNoとなり、転送印加部211は、処理を終了する。
S407において、転送印加部211は、last_detect(207)=1が発生しているか否かを判定する。S407の判定結果がNoの場合、S408に進み、転送印加部211は、last_detect(207)=1の発生を検知するまで待機する。
S407の判定結果がYesの場合、S409に進み、転送印加部211は、pkt_loss_detect(205)=1であるか否かを判定する。パケットロスが発生していなかった場合は、S409の判定結果がNoとなり、転送印加部211は、処理を終了する。
パケットロス(受信バッファ107による分割データの未格納)が発生していた場合(S409:Yes)、S410に進み、転送印加部211は、すでにoneshot_valid(213)を1にしているか否かを判定する。oneshot_valid(213)をすでに1にしていた場合(S410:Yes)、S411に進み、転送印加部211は、ready_C(252)=1であるかを判定する。
S411の判定結果がYesの場合、S412に進み、転送印加部211は、oneshot_valid(213)=0とする。ready_C(252)=1を検知できない場合(S411:No)、S408に進み、転送印加部211は処理を継続する。
oneshot_valid(213)が0の場合は、S410の判定結果がNoとなり、S413に進む。
oneshot_valid(213)が0の場合は、S410の判定結果がNoとなり、S413に進む。
S413において、転送印加部211は、oneshot_valid(213)を出力する(oneshot_valid(213)を1にする)条件が満たされているかを判定する。つまり転送印加部211は、oneshot_valid(213)=1をセットすべきか否かを監視する。oneshot_valid(213)を出力しなければいけない条件は、受信バッファ107に、処理部208がエラー情報を付与可能なデータが残っていないことである。これを数式で表すと、以下のようになる。
tx_valid_cnt_A(206)-tx_valid_cnt_B(220)≦1
この条件が満たされる場合(S413:Yes)、S414に進み、転送印加部211はoneshot_valid(213)=1にセットする。oneshot_valid(213)=1になると、転送印加部211は代理転送要求を行う。S413の条件が満たされない限り、oneshot_valid(213)=1のセットは行われない。本実施形態では、S413の判定結果がNoの場合、転送印加部211は処理を終了する。
tx_valid_cnt_A(206)-tx_valid_cnt_B(220)≦1
この条件が満たされる場合(S413:Yes)、S414に進み、転送印加部211はoneshot_valid(213)=1にセットする。oneshot_valid(213)=1になると、転送印加部211は代理転送要求を行う。S413の条件が満たされない限り、oneshot_valid(213)=1のセットは行われない。本実施形態では、S413の判定結果がNoの場合、転送印加部211は処理を終了する。
次にパケットロス印加部210の処理(S432)について説明する。
S415において、パケットロス印加部210はlast_detect(207)=1が発生しているかを判定する。S415の判定結果がNoの場合、S416に進み、パケットロス印加部210はlast_detect(207)=1を検知するまで待機する。S415の判定結果がYesの場合、S417に進む。
S415において、パケットロス印加部210はlast_detect(207)=1が発生しているかを判定する。S415の判定結果がNoの場合、S416に進み、パケットロス印加部210はlast_detect(207)=1を検知するまで待機する。S415の判定結果がYesの場合、S417に進む。
S417において、パケットロス印加部210はpkt_loss_detect(205)=1か否かを判定する。S417の判定結果がNoの場合、つまり、パケットロスが発生していなかった場合は、パケットロス印加部210は処理を終了する。パケットロスが発生していた場合(S417:Yes)、S418に進む。
S418において、パケットロス印加部210は、すでにset_pkt_loss(212)を1にしているか否かを判定する。set_pkt_loss(212)をすでに1にしていた場合(S418:Yes)、S419に進む。
S418において、パケットロス印加部210は、すでにset_pkt_loss(212)を1にしているか否かを判定する。set_pkt_loss(212)をすでに1にしていた場合(S418:Yes)、S419に進む。
S419において、パケットロス印加部210は、ready_C(252)=1であるかを判定する。ready_C(252)=1であることを検知した場合(S411:Yes)、パケットロス印加部210は、S420に進み、set_pkt_loss(212)=0とする。
ready_C(252)=1を検知できない場合(S419:No)、パケットロス印加部210は、S416に進み(待機)、処理を継続する。
ready_C(252)=1を検知できない場合(S419:No)、パケットロス印加部210は、S416に進み(待機)、処理を継続する。
set_pkt_loss(212)が0(S418:No)の場合は、S421に進む。S421において、パケットロス印加部210は、set_pkt_loss(212)=1を出力する条件が満たされるか否かを判定する。set_pkt_loss(212)=1を出力しなければいけない条件は、受信バッファ107に処理部208がエラー情報を付与可能なデータが残っていない、または、受信バッファ107から最後のデータが出力されようとしているときである。これを数式で表すと、以下のようになる。
tx_valid_cnt_A(206)-tx_valid_cnt_B(220)≦2
この条件が満たされる場合(S421:Yes)、パケットロス印加部210は、S422に進み、set_pkt_loss(212)=1にセットする。set_pkt_loss(212)=1になると、last_C(254)とerror_C(255)が受信DMAC106に送信される。S422の後、S418に戻る。
S421の条件が満たされない限り、set_pkt_loss(212)のセットは行われない。本実施形態では、S421の判定結果がNoの場合、転送印加部211はS432(待機)に進み、その後、S418に戻る。
tx_valid_cnt_A(206)-tx_valid_cnt_B(220)≦2
この条件が満たされる場合(S421:Yes)、パケットロス印加部210は、S422に進み、set_pkt_loss(212)=1にセットする。set_pkt_loss(212)=1になると、last_C(254)とerror_C(255)が受信DMAC106に送信される。S422の後、S418に戻る。
S421の条件が満たされない限り、set_pkt_loss(212)のセットは行われない。本実施形態では、S421の判定結果がNoの場合、転送印加部211はS432(待機)に進み、その後、S418に戻る。
次にパケットロス処理部200および、その周辺モジュール(受信DMAC106、受信バッファ107、受信インターフェース108)の各信号のタイミングチャートについて説明する。図5および図6は、それぞれ、パケットロスが発生した場合の図である。図5は転送印加部211が活性化しない(oneshot_valid(213)が1にアサートされない)例を示しており、図6は転送印加部211が活性化する例を示している。まず図5について説明する。
図5は、受信DMAC106が受信バッファ107を介して受信インターフェース108から、16回の転送により(16個の分割データにより)1パケットを受信する処理を図示している。図5では、data_A(233)が16個の分割データD0~Dfで転送されている。図5は、受信パケットにエラー情報が含まれない(last_A(234)=1のときのerror_A(235)=0)例を示す。
受信バッファ107から出力されるready_A(232)がT18から4サイクル分0となり、4回分のデータがロスしているとする(S501)。パケットロス検知部202は、T19のタイミングで、パケットロスを検知する(S502)。また、ラスト検知部204は、T22のタイミングでlast_A(234)を検知する(S503)。一方、tx_valid_cnt_A(206)が送信回数カウント部203でカウントされ、tx_valid_cnt_B(220)が送信回数カウント部209でカウントされる。そして、T27のタイミングで、set_pkt_loss(212)がアサートされる条件を満たす(図4のS421の左辺が12-10なので≦2となる)ため、set_pkt_loss(212)=1となる(S504)。これにより、受信バッファ107からラスト情報およびエラー情報が出力されなくても(S505)、受信DMAC106に対して、ラスト情報(last_C)およびエラー情報(error_C)が通知される(S506)。
受信バッファ107から出力されるready_A(232)がT18から4サイクル分0となり、4回分のデータがロスしているとする(S501)。パケットロス検知部202は、T19のタイミングで、パケットロスを検知する(S502)。また、ラスト検知部204は、T22のタイミングでlast_A(234)を検知する(S503)。一方、tx_valid_cnt_A(206)が送信回数カウント部203でカウントされ、tx_valid_cnt_B(220)が送信回数カウント部209でカウントされる。そして、T27のタイミングで、set_pkt_loss(212)がアサートされる条件を満たす(図4のS421の左辺が12-10なので≦2となる)ため、set_pkt_loss(212)=1となる(S504)。これにより、受信バッファ107からラスト情報およびエラー情報が出力されなくても(S505)、受信DMAC106に対して、ラスト情報(last_C)およびエラー情報(error_C)が通知される(S506)。
次に転送印加部211が活性化する例について図6を用いて説明する。図6は、図5と同様に、受信インターフェース108から、16回の転送により1パケットを受信する受信処理を図示している。また、受信インターフェース108と受信バッファ107の間でのパケットロスの状況も図5の例と同一である。
図6の例では、ラスト検知部204がラスト情報を検知した時(T22、S601)には、すでに受信バッファ107には、ラスト情報、および、エラー情報の付加が可能なデータが残っていない。したがって、T23のタイミングで(図4のS413がYes)、oneshot_valid(213)が1にアサートされる(S602)。これにより、受信バッファ107からの転送要求がなくても(valid_B(241)=0)、受信DMAC106に転送要求(valid_C(251)=1)が送信される(S603)。この時、転送印加部211により分割データdata_C(253)が追加される(図6では、分割データDbの右側にハッチングで示されている)。ラスト情報とエラー情報は、追加された分割データに付与される。
図6の例では、ラスト検知部204がラスト情報を検知した時(T22、S601)には、すでに受信バッファ107には、ラスト情報、および、エラー情報の付加が可能なデータが残っていない。したがって、T23のタイミングで(図4のS413がYes)、oneshot_valid(213)が1にアサートされる(S602)。これにより、受信バッファ107からの転送要求がなくても(valid_B(241)=0)、受信DMAC106に転送要求(valid_C(251)=1)が送信される(S603)。この時、転送印加部211により分割データdata_C(253)が追加される(図6では、分割データDbの右側にハッチングで示されている)。ラスト情報とエラー情報は、追加された分割データに付与される。
また、set_pkt_loss(212)=1より、last_C=error_C=1も併せてセットされる(S604)。
なお、data_C(253)の値は、基本的にはどのようにしてもよい。本パケットはerror_C=1となっている時点で、エラーパケットとして破棄されるためである。例えば、data_C(253)に0データを入力してもよいし、data_B(243)が出力しているデータをそのまま図2のように直接data_C(253)に渡してもよい。
なお、data_C(253)の値は、基本的にはどのようにしてもよい。本パケットはerror_C=1となっている時点で、エラーパケットとして破棄されるためである。例えば、data_C(253)に0データを入力してもよいし、data_B(243)が出力しているデータをそのまま図2のように直接data_C(253)に渡してもよい。
上記したように、本実施形態によれば、通信装置100内部でパケットロスを検出した場合に、パケットの終わりを示すラスト情報とパケットロスの有無を示すエラー情報を付与して後段のモジュール(受信DMAC106)にパケットを転送することができる。
従って、受信インターフェース108と受信DMAC106との間に受信バッファ107を設けてデータ転送を行う場合、受信DMAC106は受信インターフェース108/受信DMAC106間で発生したデータロスをデータの解析なしで検知できる。
通信装置100内部で発生したパケットロスに関して適切に通知を行わないと、後段のモジュール(受信DMAC106)は当該パケットの解析をすることなしにパケットロスの発生に気づかない。本実施形態では、このような不都合は生じない。
従って、受信インターフェース108と受信DMAC106との間に受信バッファ107を設けてデータ転送を行う場合、受信DMAC106は受信インターフェース108/受信DMAC106間で発生したデータロスをデータの解析なしで検知できる。
通信装置100内部で発生したパケットロスに関して適切に通知を行わないと、後段のモジュール(受信DMAC106)は当該パケットの解析をすることなしにパケットロスの発生に気づかない。本実施形態では、このような不都合は生じない。
なお、本発明は上記した実施形態に限定されない。例えば、valid/ready信号によりハンドシェークを行うバスであれば、実施形態で説明したバスA、B、C以外のバスでも本発明は適用可能である。
また、パケット情報に付与する情報はエラー情報とラスト情報であるとしたが、他の情報を付与してもよい。例えば、data_A(233)、data_B(243)、data_C(253)のデータ幅(例えば、8ビット、16ビット、32ビット)のうち、有効なデータが格納されていることを示すバイトイネーブル情報をパケット情報に付与してもよい。
上記した実施形態では、通信装置100が通信装置T1から受信したパケットにエラー情報を付与する場合を説明したが、ファイルサーバ105が通信装置100から受信するパケットにエラー情報を付与する場合にも上記した実施形態を適用することができる。また、通信装置T1が通信装置T2から受信するパケットにエラー情報を付与する場合にも上記した実施形態を適用することができる。
上記した実施形態では、ファイルサーバ150、通信装置100、T1、T2をEthernet(登録商標)ケーブルで繋ぐとしたが、その他のケーブル(有線)で繋いでもよい。また、ファイルサーバ150、通信装置100、T1、T2を無線で繋いでもよい。
また、パケット情報に付与する情報はエラー情報とラスト情報であるとしたが、他の情報を付与してもよい。例えば、data_A(233)、data_B(243)、data_C(253)のデータ幅(例えば、8ビット、16ビット、32ビット)のうち、有効なデータが格納されていることを示すバイトイネーブル情報をパケット情報に付与してもよい。
上記した実施形態では、通信装置100が通信装置T1から受信したパケットにエラー情報を付与する場合を説明したが、ファイルサーバ105が通信装置100から受信するパケットにエラー情報を付与する場合にも上記した実施形態を適用することができる。また、通信装置T1が通信装置T2から受信するパケットにエラー情報を付与する場合にも上記した実施形態を適用することができる。
上記した実施形態では、ファイルサーバ150、通信装置100、T1、T2をEthernet(登録商標)ケーブルで繋ぐとしたが、その他のケーブル(有線)で繋いでもよい。また、ファイルサーバ150、通信装置100、T1、T2を無線で繋いでもよい。
本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体(記憶媒体)等としての実施態様をとることが可能である。
また、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
また、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100…通信装置、106…受信DMAC、107…受信バッファ、108…受信インターフェース、200…パケットロス処理部、201…監視部、202…パケットロス検知部、203…送信回数カウント部、204…ラスト検知部、208…処理部、209…送信回数カウント部、210…パケットロス印加部、211…転送印加部
Claims (10)
- パケットを複数の分割データとして出力する出力手段と、
前記出力手段から出力された分割データを中継する中継手段と、
前記中継手段から出力された前記分割データを受け取る受取手段と、
前記出力手段から出力される前記分割データが、前記パケットの複数の分割データのうちの最後の分割データであること検出する第1の検出手段と、
前記出力手段から出力される前記分割データが前記中継手段によって格納されなかったことを検出する第2の検出手段と、
前記第2の検出手段が前記中継手段による前記分割データの未格納を検出した場合、前記第1の検出手段が前記最後の分割データを検出するまでの間に前記中継手段に入力された前記分割データのうちの最後の分割データに、エラー情報を付与する付与手段と、
を有することを特徴とする情報処理装置。 - 前記付与手段は、前記分割データに含まれている情報を変更することにより前記分割データに前記エラー情報を付与することを特徴とする請求項1に記載の情報処理装置。
- 前記付与手段は、前記分割データが前記中継手段によって格納された回数と、前記分割データが前記中継手段から前記受取手段に出力された回数とに基づいて、前記エラー情報を付与することを特徴とする請求項1または2に記載の情報処理装置。
- 前記エラー情報を付与すべき分割データが前記中継手段に存在しない場合に分割データを追加する追加手段をさらに有し、
前記付与手段は、追加された前記分割データに前記エラー情報を付与することを特徴とする請求項1~3のいずれか1項に記載の情報処理装置。 - 前記第1の検出手段は、前記出力手段と前記中継手段をつなぐバスの信号に基づいて、前記分割データが、前記パケットの最後の分割データであること検出することを特徴とする請求項1~4のいずれか1項に記載の情報処理装置。
- 前記第2の検出手段は、前記出力手段と前記中継手段をつなぐバスの信号と、前記中継手段から得られる信号とに基づいて、前記中継手段による前記分割データの未格納を検出することを特徴とする請求項1~5のいずれか1項に記載の情報処理装置。
- 前記中継手段はバッファであり、前記第2の検出手段は、前記バッファがフル状態であり、且つ、前記出力手段から前記分割データが出力されたことを検出した場合、前記中継手段による前記分割データの未格納を検出することを特徴とする請求項1~6のいずれか1項に記載の情報処理装置。
- 請求項1~7のいずれか1項に記載の情報処理装置と、
前記パケットを第1の他の通信装置から受信する受信手段と、
前記受取手段が受け取った分割データで構成される新しいパケットを第2の他の通信装置に送信する送信手段と、を有する通信装置であって、
前記出力手段は、前記受信手段が受信した前記パケットを前記複数の分割データとして出力することを特徴とする通信装置。 - 出力部からパケットを複数の分割データとして出力するステップと、
前記出力部から出力された分割データを中継部で中継するステップと、
前記中継部から出力された前記分割データを受取部で受け取るステップと、
前記出力部から出力される前記分割データが、前記パケットの複数の分割データのうちの最後の分割データであること検出するステップと、
前記出力部から出力される前記分割データが前記中継部によって格納されなかったことを検出するステップと、
前記中継部による前記分割データの未格納が検出された場合、前記最後の分割データを検出するまでの間に前記中継部に入力された前記分割データのうちの最後の分割データに、エラー情報を付与するステップと、
を有することを特徴とする情報処理方法。 - コンピュータを、請求項1から7のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020208379A JP2022095198A (ja) | 2020-12-16 | 2020-12-16 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020208379A JP2022095198A (ja) | 2020-12-16 | 2020-12-16 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022095198A true JP2022095198A (ja) | 2022-06-28 |
Family
ID=82163017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020208379A Pending JP2022095198A (ja) | 2020-12-16 | 2020-12-16 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022095198A (ja) |
-
2020
- 2020-12-16 JP JP2020208379A patent/JP2022095198A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8385333B2 (en) | Mechanism for clock synchronization | |
CN109597782B (zh) | 用于通过扩展介质来扩展usb 3.0兼容通信的方法和设备 | |
EP2312457B1 (en) | Data processing apparatus, data processing method and computer-readable medium | |
US20090006711A1 (en) | Device, System and Method of Utilizing PCI Express Packets Having Modified Headers | |
CN110661725A (zh) | 用于对出口上的网络分组进行重排序的技术 | |
EP4080839B1 (en) | Pcie-based data transmission method and apparatus | |
JPH0793273A (ja) | 障害監視機構を具備したマルチcpuシステム | |
WO2017143857A1 (zh) | 数据传输的方法、扩展装置、外围设备及系统 | |
JP2018524703A (ja) | データ処理 | |
US8230137B2 (en) | Network processor, reception controller and data reception processing method performing direct memory access transfer | |
JP2022095198A (ja) | 情報処理装置 | |
EP4080840A1 (en) | Data transmission method and apparatus based on pcie | |
JP5432587B2 (ja) | データ処理装置、その制御方法およびプログラム | |
EP1971923B1 (en) | Method for managing under-runs and a device having under-run management capabilities | |
JP2008502977A (ja) | バス・コントローラのための割り込み方式 | |
CN114615106A (zh) | 环形数据处理系统、方法以及网络设备 | |
WO2012015273A2 (en) | Direct memory access device for multi-core system and operating method of the same | |
WO2022124083A1 (ja) | 通信装置、通信方法、およびプログラム | |
JP2004334840A (ja) | システムバスの制御方法及び関連装置 | |
US20240004816A1 (en) | Interface method for transmitting and recieving data between functional blocks in system on chip, and system on chip using same | |
JP3791433B2 (ja) | システム、制御処理装置、およびシステム制御方法 | |
WO2021035398A1 (zh) | 同步电路和同步芯片 | |
JP4032948B2 (ja) | Scsiインタフェース制御装置、プログラム | |
WO2024092188A1 (en) | Firmware broadcast in a multi-chip module | |
JP2008250496A (ja) | エンジン・プロセッサ連携システム及び連携方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231211 |