JP2016059012A - 受信装置、送信装置およびデータ転送システム - Google Patents

受信装置、送信装置およびデータ転送システム Download PDF

Info

Publication number
JP2016059012A
JP2016059012A JP2014186448A JP2014186448A JP2016059012A JP 2016059012 A JP2016059012 A JP 2016059012A JP 2014186448 A JP2014186448 A JP 2014186448A JP 2014186448 A JP2014186448 A JP 2014186448A JP 2016059012 A JP2016059012 A JP 2016059012A
Authority
JP
Japan
Prior art keywords
data
block
blocks
group
parity
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.)
Withdrawn
Application number
JP2014186448A
Other languages
English (en)
Inventor
繁幸 前田
Shigeyuki Maeda
繁幸 前田
孝典 石井
Takanori Ishii
孝典 石井
友幸 金山
Tomoyuki Kanayama
友幸 金山
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014186448A priority Critical patent/JP2016059012A/ja
Priority to US14/826,570 priority patent/US20160080111A1/en
Publication of JP2016059012A publication Critical patent/JP2016059012A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes

Abstract

【課題】データ再送の頻度を低減すること。【解決手段】受信装置2は、受信部2aおよび制御部2bを有する。受信部2aは、送信データXを一定サイズに分割して得られたデータブロックX1〜X3と、データブロックX1〜X3に基づいて生成されたパリティブロックPXとを、送信装置1から受信する。制御部2bは、データブロックX1〜X3のうちデータブロックX2の受信処理に失敗した場合に、データブロックX1〜X3のうち受信処理に成功したデータブロックX1,X3と、受信処理に成功したパリティブロックPXとに基づいて、データブロックX2を復元する。【選択図】図1

Description

本発明は受信装置、送信装置およびデータ転送システムに関する。
バスやネットワークを介したデータ伝送の技術分野では、データ伝送の信頼性を向上させるための様々な技術が知られている。例えば、送信側が、データにCRC(Cyclic Redundancy Check)コードを付加して送信し、受信側が、CRCを用いて受信したデータの誤りを検出する技術がある。また、例えば、送信側がパケットにシーケンス番号を付加して送信し、受信側が受信に成功したパケットのシーケンス番号を返信する、あるいは受信に成功したパケットのシーケンス番号に基づいて受信していないパケットのシーケンス番号を返信するという技術もある。
データ伝送に関する技術としては、次のような提案もある。例えば、データグラムの大きさを示すヘッダを付加した複数の不定長データグラムを、PCI(Peripheral Components Interconnect)バスを用いて拡張ボードに転送する技術が提案されている。また、送信データをブロック単位に分割し、各ブロックデータを構成する複数の分割データのそれぞれに、誤り検出用のパリティビットを付与する技術も提案されている。
特開平10−293741号公報 特開2011−103509号公報
データにCRCコードを付加する、あるいは、パケットにシーケンス番号を付加するという上記の技術では、データの受信処理に失敗した場合に、そのデータを送信側に再送させる必要があるという問題がある。分割データのそれぞれにパリティビットを付与するという上記の技術についても同様である。受信処理に失敗したデータの再送が必要な技術では、例えば、データの伝送路が混雑し、伝送速度が低下する、あるいは、データの伝送が組み込まれた処理全体の処理時間が長くなる等の問題がある。
1つの側面では、本発明は、データ再送の頻度を低減することが可能な受信装置、送信装置およびデータ転送システムを提供することを目的とする。
1つの態様では、受信装置が提供される。この受信装置は、受信部と制御部を有する。受信部は、送信データを一定サイズに分割して得られた複数のデータブロックと、複数のデータブロックに基づいて生成されたパリティブロックとを、送信装置から受信する。制御部は、複数のデータブロックのうち一のデータブロックの受信処理に失敗した場合に、複数のデータブロックのうち受信処理に成功した他のデータブロックと、受信処理に成功したパリティブロックとに基づいて、一のデータブロックを復元する。
また、1つの態様では、送信装置が提供される。この送信装置は、記憶部と制御部を有する。記憶部は、受信装置へ送信する複数の送信データを一時的に記憶する。制御部は、記憶部に記憶された複数の送信データのそれぞれを一定サイズに分割して複数のデータブロックを生成するとともに、複数のデータブロックのうち同一の送信データに対応するデータブロックに基づいてパリティブロックを生成し、複数のデータブロックおよびパリティブロックのうち、同一の送信データに対応するデータブロックおよびパリティブロックに対して、同一のグループに属することを示すグループ識別情報を付加して受信装置へ送信する。
また、1つの態様では、データ転送システムが提供される。このデータ転送システムは、送信装置と受信装置を有する。送信装置は、送信データを一定サイズに分割して得られた複数のデータブロックと、複数のデータブロックに基づいて生成されたパリティブロックとを送信する。受信装置は、複数のデータブロックのうち一のデータブロックの受信処理に失敗した場合に、複数のデータブロックのうち受信処理に成功した他のデータブロックと、受信処理に成功したパリティブロックとに基づいて、一のデータブロックを復元する。
1つの側面では、データ再送の頻度を低減できる。
第1の実施の形態のデータ転送システムを示す図である。 第2の実施の形態のストレージシステムを示す図である。 CMのハードウェア例を示す図である。 通信回路のハードウェア例を示す図である。 統合したデータの再分割および付加情報についての比較例を示す図である。 ブロック受信処理の比較例を示す図である。 第2の実施の形態で使用される付加情報を示す図である。 符号による判定処理の具体例を示す図である。 送信側の通信回路の機能例を示す図である。 受信側の通信回路の機能例を示す図である。 送信テーブルの例を示す図である。 符号管理テーブルの例を示す図である。 仕掛中テーブルの例を示す図である。 保留テーブルの例を示す図である。 送信処理の例を示すフローチャートである。 受信処理の例(その1)を示すフローチャートである。 受信処理の例(その2)を示すフローチャートである。 受信処理の例(その3)を示すフローチャートである。 監視処理の例を示すフローチャートである。 受信処理の具体例(その1)を示す図である。 受信処理の具体例(その2)を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のデータ転送システムを示す図である。データ転送システムは、送信装置1および受信装置2を含む。送信装置1と受信装置2とは、バスやネットワークを介して接続される。
送信装置1は、記憶部1aと制御部1bを有する。受信装置2は、受信部2aと制御部2bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。制御部1b,2bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。なお、受信装置2も揮発性記憶装置、不揮発性記憶装置を有する。
送信装置1において、記憶部1aは、受信装置2に送信される複数の送信データを記憶する。記憶部1aは、例えば、送信される送信データを一時的に記憶する送信バッファとして実現される。
制御部1bは、記憶部1aに記憶されている送信データを一定サイズのデータブロックに分割する。制御部1bは、送信データ毎に1つ以上のデータブロックを生成する。また、制御部1bは、生成された複数のデータブロックのうち、同一の送信データに対応するデータブロックに基づいてパリティブロックを生成する。制御部1bは、送信データ毎に、生成された1つ以上のデータブロックとパリティブロックとを受信装置2へ送信する。
一方、受信装置2において、受信部2aは、送信装置1から送信されたデータブロックおよびパリティブロックを受信する。
制御部2bは、同一の送信データに対応するデータブロックおよびパリティブロックのうち、1つのデータブロックの受信処理に失敗した場合には、同じ送信データに対応する、受信処理に成功した他のデータブロックと受信処理に成功したパリティブロックとに基づいて、受信処理に失敗したデータブロックを復元する。
なお、受信部2aが受信したデータブロックおよびパリティブロックの中から、制御部2bが同一の送信データに対応するデータブロックおよびパリティブロックを判別できるようにする方法としては、次のような方法がある。例えば、送信装置1の制御部1bは、同一の送信データに対応するデータブロックおよびパリティブロックに対して、それらが同一のグループに属することを示すグループ識別情報を付加し、グループ識別情報が付加されたデータブロックおよびパリティブロックを受信装置2へ送信する。受信装置2の受信部2aは、送信されたデータブロックおよびパリティブロックを受信する。受信装置2の制御部2bは、受信部2aが受信したデータブロックおよびパリティブロックに付加されたグループ識別情報に基づいて、同一の送信データに対応するデータブロックおよびパリティブロックを判別する。
以下、図1を参照しながら具体的な処理例について説明する。図1は、送信装置1から受信装置2へデータXが送信される場合を例示している。
送信装置1の制御部1bは、データXをデータブロックX1〜X3に分割する(ステップS1)。また、制御部1bは、データブロックX1〜X3に基づいて、パリティブロックPXを生成する(ステップS2)。制御部1bは、データブロックX1〜X3およびパリティブロックPXを受信装置2へ送信する(ステップS3)。
ここで、受信装置2は、データブロックX1,X3とパリティブロックPXの受信処理には成功したものの、データブロックX2の受信処理に失敗したものとする(ステップS4)。受信処理に失敗するケースとしては、例えば、伝送路上等においてデータブロックX2が失われた場合や、受信装置2がデータブロックX2を受信したものの、受信装置2が有する記憶装置への格納に失敗した場合等がある。
データブロックX2の受信処理に失敗した場合、受信装置2の制御部2bは、受信処理に成功したデータブロックX1,X3およびパリティブロックPXを用いて、受信処理に失敗したデータブロックX2を復元する(ステップS5)。これにより、実質的にデータXの受信に成功したことになり、送信装置1からデータXを再送させる必要がなくなる。
以上の第1の実施の形態によれば、送信装置1において、送信データが複数のデータブロックに分割されるとともに、それらの複数のデータブロックに基づいてパリティブロックが生成される。そして、分割された複数のデータブロックとそれらに基づくパリティブロックとが、送信装置1から受信装置2へ送信される。これにより、受信装置2は、1つの送信データに対応するデータブロックのうちの1つの受信処理に失敗した場合でも、当該送信データに対応する、受信処理に成功した他のデータブロックおよびパリティブロックを用いて、受信処理に失敗したデータブロックを復元できる。受信処理に失敗したデータブロックを復元できた場合、対応する送信データを送信装置1に再送させる必要はない。
したがって、第1の実施の形態によれば、送信装置1から受信装置2へ送信データが再送される頻度を低減することができる。データ再送の頻度が低減されることで、例えば、送信装置1と受信装置2との間の通信トラフィックを緩和し、伝送速度を向上させることができる。また、送信データの送信処理を含む送信装置1の所定情報処理全体の処理時間を短縮できる。
[第2の実施の形態]
次に、第1の実施の形態の送信装置1および受信装置2を含むシステムとして、ストレージシステムを例示する。
図2は、第2の実施の形態のストレージシステムを示す図である。第2の実施の形態のストレージシステムは、ストレージ装置100およびホスト装置400,400aを含む。
ストレージ装置100とホスト装置400,400aとの間は、SAS(Serial Attached SCSI)やファイバチャネル(FC:Fibre Channel)などのケーブルを用いて接続されている。このような接続構成をDAS(Direct Attached Storage)と呼ぶこともある。ただし、ストレージ装置100とホスト装置400,400aとをファイバチャネルやiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続してもよい。ストレージ装置100をNAS(Network Attached Storage)として用いることもできる。
ストレージ装置100は、CE(Controller Enclosure)110およびDE(Drive Enclosure)120を有する。CE110は、CM(Controller Module)200,200aを有する。
CM200,200aは、ホスト装置400,400aからの要求に応じたDE120に対するデータアクセス、ストレージ装置100内のハードウェアモジュールの動作などを制御する。同様の機能を有するCM200,200aが冗長化されていることにより、ホスト装置400,400aからDE120へのアクセス動作の信頼性が高められている。
また、CM200,200aは互いに接続されており、例えばキャッシュされたデータや所定の設定データなど、一方のCMに記憶された情報が他方のCMにも記憶されるようになっている。なお、このようにCM200とCM200aとの間でデータが送受信される状態において、CM200,200aのうち、一方が第1の実施の形態の送信装置1の一例となり、他方が受信装置2の一例となる。
DE120は、HDD300,300a,300bを有する。なお、DE120に搭載されるHDDの数は、3台に限定されるものではない。
ホスト装置400,400aは、ユーザが利用するクライアントコンピュータである。ホスト装置400,400aは、ストレージ装置100に対して、ストレージ装置100のDE120に搭載されたHDD300〜300bに対するアクセスを要求する。
図3は、CMのハードウェア例を示す図である。CM200は、CPU201、RAM205、PCH(Platform Controller Hub)206、SSD(Solid State Drive)207、PCIe(Peripheral Components Interconnect Express)スイッチ208、CA209,209a、SASコントローラ210,210aおよび通信回路500を有する。
CPU201には、RAM205が接続されている。CPU201には、PCH206を介して、SSD207が接続されている。CPU201には、PCIeスイッチ208を介して、CA209,209aおよびSASコントローラ210,210aが接続されている。CPU201には、通信回路500を介して、CM200aが接続されている。
CPU201は、CPUコア202、PCIe制御部203およびメモリ制御部204を含む。CPUコア202は、CM200の情報処理を制御する。PCIe制御部203は、PCH206、PCIeスイッチ208、通信回路500との通信をPCIeのプロトコルを用いて行う。例えば、PCIe制御部203は、PCIeヘッダを付加したデータを通信回路500に送信する。メモリ制御部204は、RAM205に記憶されているデータの読み込みまたは書き込みを行う。
RAM205は、CM200の主記憶装置である。RAM205は、揮発性の半導体メモリである。RAM205は、CPUコア202に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM205は、CPUコア202による処理に用いる各種データを記憶する。
PCH206は、CPU201とSSD207との間で、データを送受信する。また、PCH206には、LAN(Local Area Network)インタフェースが接続されていてもよい。
SSD207は、CM200の補助記憶装置である。SSD207は、不揮発性の半導体メモリである。SSD207には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、CM200は、補助記憶装置として、SSD207の代わりにHDDを備えていてもよい。
PCIeスイッチ208は、CPU201とCA209,209aおよびSASコントローラ210,210aとの間で、データを送受信する。CA209は、ホスト装置400と通信するためのインタフェースであり、CA209aは、ホスト装置400aと通信するためのインタフェースである。SASコントローラ210,210aは、DE120内のHDDと通信するためのインタフェースである。
通信回路500は、CM200aと通信するためのインタフェースである。通信回路500は、CPU201とCM200aとの間で、データを送受信する。通信回路500と、CPU201およびCM200aとの間は、それぞれPCIeバスによって接続されている。通信回路500は、例えば、CM200のRAM205に記憶されたデータをCM200aへ送信し、CM200aのRAM(図示せず)へのコピーを要求する処理や、CM200aのRAMに記憶されたデータを受信してCM200のRAM205にコピーする処理などを行う。
なお、CM200aもCM200と同様のハードウェアにより実現できる。
図4は、通信回路のハードウェア例を示す図である。図4は、CM200とCM200aにそれぞれ含まれる通信回路500,500aのハードウェア例を示している。通信回路500aは、通信回路500に対応するハードウェアであり、通信回路500と通信回路500aとはPCIeバスを介して接続されている。また、図4は、CM200のCPU201およびRAM205と、CM200aのCPU201aおよびRAM205aも、通信回路500,500aとともに示している。CPU201aおよびRAM205aは、それぞれCPU201およびRAM205に対応するハードウェアである。
通信回路500は、制御回路501、メモリ502および送受信回路503,504を有する。通信回路500aは、制御回路501a、メモリ502aおよび送受信回路503a,504aを有する。CPU201とCPU201aは、通信回路500および通信回路500aを介してデータの送受信を行う。
制御回路501は、データの分割、付加情報の付加、受信したデータのエラー検出やエラー訂正等の通信回路500の情報処理を制御する回路である。メモリ502は、揮発性の半導体メモリである。例えば、メモリ502は、RAMなどである。メモリ502は、制御回路501による処理に用いる各種データを記憶する。メモリ502は、送信データや受信データを一時的に格納するバッファとしても使用される。送受信回路503は、CPU201との間のデータ送受信を制御する通信インタフェース回路である。送受信回路504は、CM200aとの間のデータ送受信を制御する通信インタフェース回路である。
制御回路501aは、データの分割、付加情報の付加、受信したデータのエラー検出やエラー訂正等の通信回路500aの情報処理を制御する回路である。メモリ502aは、揮発性の半導体メモリである。例えば、メモリ502aは、RAMなどである。メモリ502aは、制御回路501aによる処理に用いる各種データを記憶する。メモリ502aは、送信データや受信データを一時的に格納するバッファとしても使用される。送受信回路503aは、CPU201aとの間のデータ送受信を制御する通信インタフェース回路である。送受信回路504aは、CM200aとの間のデータ送受信を制御する通信インタフェース回路である。
上記の通信回路500,500aによって実行されるデータ転送処理は、主として、RAM205,205aに記憶された所定のデータを、他方のRAMに転送してバックアップするための処理である。バックアップの対象となるRAM上のデータとしては、例えば、ホスト装置400,400aからの要求に応じたデータアクセス処理においてRAM上にキャッシュされたデータや、対応するCMの動作に関する各種の設定データ等がある。
ここで、RAM205に記憶されているデータが、制御回路501,501aにより転送されて、RAM205aに格納されるまでの流れを説明する。
制御回路501は、CPUコア202から送受信回路503を介してRAM205上のデータの転送要求を受信する。転送要求には、転送対象のデータが格納されている先頭位置を示すRAM205のアドレス、転送対象のデータのデータ長および転送先であるRAM205aのアドレスなどが含まれる。
制御回路501は、受信した情報に基づいて、転送対象のデータの読み出し要求を送受信回路503を介して送信する。読み出し要求は、PCIe制御部203を介してメモリ制御部204に送信され、メモリ制御部204は、要求されたデータをRAM205から読み出して、PCIe制御部203を介して通信回路500に送信する。送信されたデータは、送受信回路503によって受信され、メモリ502のバッファ領域に格納される。
ここで、読み出し要求に応じてPCIe制御部203から通信回路500へ送信されるデータは、実際には、PCIeパケットのペイロードに分割して格納される。通信回路500においては、受信されたPCIeパケットのペイロードのデータがメモリ502に格納されることで、これらのデータが一旦統合される。
制御回路501は、統合されたデータを一定サイズのデータブロックに再分割する。この再分割は、統合されたデータを通信回路500aへPCIeパケットによって送信する際に、ペイロードの中に、再分割されたデータブロックに加えて後述する付加情報を付加するために行われる。このため、再分割されたデータブロックのサイズは、ペイロードのサイズより付加情報のサイズ分だけ小さい。また、制御回路501は、統合されたデータから再分割された各データブロックに基づいて、パリティブロックを生成する。
制御回路501は、再分割された各データブロックおよびパリティブロックを、RAM205aへの書き込み要求を示すPCIeパケットとして、送受信回路504を介して通信回路500aに送信する。各PCIeパケットのペイロードには、データブロックまたはパリティブロックと、付加情報とが格納される。
送信されたPCIeパケットは、通信回路500aの送受信回路504aによって受信され、メモリ502aのバッファ領域に格納される。制御回路501aは、付加情報に基づいて、転送対象とされた同一のデータに対応するデータブロックおよびパリティブロックを判別するとともに、受信処理に失敗したデータブロックの有無を判定する。すべてのデータブロックの受信処理に成功した場合、転送対象のデータを正常に受信したことになる。また、例えば、1つのデータブロックの受信処理に失敗した場合、制御回路501aは、受信処理に成功した他のデータブロックおよびパリティブロックを用いて、受信処理に失敗したデータブロックを復元する。この場合にも、転送対象のデータを正常に受信できたことになる。このように、転送対象のデータに対応する1つのデータブロックの受信処理に失敗した場合には、そのデータブロックを復元でき、転送対象のデータをCM200から再送信させる必要がない。
転送対象のデータを正常に受信できた場合、制御回路501aは、送受信回路503aを介して、このデータのRAM205aへの書き込み要求を出力する。書き込み要求は、PCIe制御部203aを介してメモリ制御部204aに送信され、メモリ制御部204aは、書き込みが要求されたデータをRAM205aに書き込む。なお、実際には、正常に受信された転送対象のデータは、制御回路501aによって再分割され、PCIeパケットに格納されてPCIe制御部203aに送信される。
ここで、図5は、統合したデータの再分割および付加情報についての比較例を示す図である。なお、これ以後の説明では、データブロックとパリティブロックとを特に区別せずに表す場合には、「ブロック」と記載する場合がある。
図5の例では、CPUコア202から、RAM205上のデータYの転送が要求されたものとする。前述の手順により、RAM205から読み出されたデータYは、PCIeパケットによってPCIe制御部203から通信回路500へ送信され、通信回路500のメモリ502において一旦統合される。
制御回路501は、統合されたデータYを一定サイズのデータブロックに再分割する。図5の例では、再分割により4つのデータブロックY1〜Y4が生成されたものとする。また、制御回路501は、データブロックY1〜Y4に基づいて、パリティブロックPYを生成する。なお、パリティブロックPYは、例えば、“Y1 XOR Y2 XOR Y3 XOR Y4”という式により算出される。“XOR”は、ビット毎に排他的論理和を演算することを示す。
制御回路501は、データブロックY1〜Y4およびパリティブロックPYのそれぞれに付加情報を付加する。ここで、付加情報には、送信されたデータブロックY1〜Y4およびパリティブロックPYが同一のデータ(ここではデータY)に対応する同一のグループに属することを受信側が識別できるようにするためのグループ識別情報が含められる。グループ毎に異なる数値がグループ識別情報に設定されることで、受信側は受信したブロックが属するグループを識別できる。
このようなグループ識別情報の一例として、図5に示すような「先頭転送先アドレス」が考えられる。先頭転送先アドレスは、対応するデータYのRAM205aにおける格納先領域の先頭アドレスであり、同一グループに属するすべてのブロックについて共通の値となる。図5の例では、先頭転送先アドレスは“Ya”であるとする。先頭転送先アドレスとしては、データYの転送が要求される際にCPUコア202から指定されるアドレスをそのまま利用できる。このため、制御回路501は、グループ識別情報を生成するための別の処理を行う必要がなく、付加情報にグループ識別情報を簡易な処理で付加できる。
さらに、グループ識別情報に対して、図5に示すような「ブロック数」を含める方法も考えられる。ブロック数は、同一グループに属するブロックの総数であり、同一グループに属するすべてのブロックについて共通の値となる。図5の例では、ブロック数は“5”となる。なお、ブロック数は、同一グループに属するデータブロックの総数であってもよい。
受信側は、付加情報内のブロック数を、同一グループに属するブロックを識別するだけでなく、同一グループに属するブロックの数を認識するためにも使用することができる。このように、他の目的で利用可能な情報をグループ識別情報に含めることで、付加情報のサイズを小さくすることができ、送信の際のオーバヘッドを小さくすることができる。
また、付加情報にはさらに、図5に示すような「ブロック番号」を含めることが考えられる。ブロック番号は、同一グループに属するブロックそれぞれの通し番号を示す。したがって、ブロック番号については、同一グループに属するブロック毎に異なる。なお、パリティブロックに付加されるブロック番号は、通し番号でなく、例えば、予め決められた値(例えば“0”)であってもよい。
以上のような付加情報は、PCIeパケットのペイロードに、データブロックY1〜Y4のいずれか、またはパリティブロックPYとともに格納される。制御回路501は、付加情報とブロックとを含む各PCIeパケットを通信回路500aに送信する。なお、データブロックが格納されたPCIeパケットのPCIeヘッダには、書き込み先の先頭アドレスとして、転送先のRAM205aにおける、格納されたデータブロックの書き込み先領域の先頭アドレスが記述される。
上記のようなPCIeパケットは、通信回路500aの送受信回路504aによって受信され、メモリ502aのバッファ領域へ格納される。通信回路500aの制御回路501aは、付加情報を参照し、先頭転送先アドレス“アドレスYa”、ブロック数“5”が設定された5つのブロックがメモリ502aに書き込まれているかを判定する。
5つのブロックが書き込まれている場合、制御回路501aは、データYを正常に受信できたと判定する。一方、例えば、4つのブロックしか書き込まれていない場合、制御回路501aは、付加情報のブロック番号を参照し、ブロック番号を順に確認することで受信処理に失敗したブロックを特定できる。このとき、例えば、データブロックY3の受信処理に失敗していた場合、制御回路501aは、受信済みのデータブロックY1,Y2,Y4とパリティブロックPYとを用いてデータブロックY3を復元できる。このように、制御回路501aは、グループ内の1つのデータブロックの受信処理に失敗した場合でも、そのデータブロックを復元することができる。
しかしながら、次の図6に示すように、制御回路501aがデータブロックの受信処理に失敗したことを正しく判別できないケースがある。そのケースは、RAM205a上の同一の記憶領域に対するデータの転送が連続して要求されたときに発生する可能性がある。
図6は、ブロック受信処理の比較例を示す図である。図6の例では、CM200の通信回路500からCM200aの通信回路500aに対して、データYに対応するデータブロックY1〜Y4およびパリティブロックPYが転送されたものとする。そして、通信回路500aの送受信回路504aは、受信したデータブロックY1〜Y4およびパリティブロックPYを、付加情報とともにメモリ502aのバッファ領域へ正しく格納できたものとする。
データブロックY1〜Y4およびパリティブロックPYのそれぞれに付加された付加情報のうち、グループ識別情報には、先頭転送先アドレス“YZ”、ブロック数“5”が設定されている。また、例えば、データブロックY3に付加された付加情報には、ブロック番号“3”が設定されている。
制御回路501aは、メモリ502aに格納された各ブロックに付加された付加情報を順次読み出す。制御回路501aは、データブロックY1〜Y4およびパリティブロックPYのそれぞれに付加された付加情報から、グループ識別情報に先頭転送先アドレス“YZ”、ブロック数“5”が設定された4つのデータブロックY1〜Y4が全て揃っていると判定する。この場合、制御回路501aは、データブロックY1〜Y4をRAM205aへ転送する。
次に、CM200のCPUコア202から通信回路500に対して、データZ(図示せず)の転送が要求されたとする。データZの転送先の記憶領域は、直前に転送が要求されたデータYと同一であるとする。すなわち、CPUコア202から指定されたデータZの転送先領域の先頭アドレス(“YZ”)およびデータ長は、データYと同じであるとする。
この場合、通信回路500の制御回路501は、データZをデータブロックZ1〜Z4に分割するとともに、データブロックZ1〜Z4を用いてパリティブロックPZを生成する。制御回路501は、データブロックZ1〜Z4およびパリティブロックPZのそれぞれに付加情報を付加し、通信回路500aへ送信する。この場合、各ブロックに付加される付加情報のうち、グループ識別情報には先頭転送先アドレス“YZ”、ブロック数“5”が設定される。通信回路500aの送受信回路504aは、受信したデータブロックZ1〜Z4およびパリティブロックPZを付加情報とともにメモリ502aのバッファ領域に格納する。
ここで、送受信回路504aが、データブロックZ1〜Z4およびパリティブロックPZを、メモリ502aにおけるデータブロックY1〜Y4およびパリティブロックPYと同じ記憶領域に書き込む場合がある。このような書き込みが行われる原因としては、メモリ502aの記憶容量が小さいことが挙げられる。特に、メモリ502aは、ブロックの送信と受信の両方で使用され、さらに制御回路501aの処理に必要なデータの記憶領域としても使用される。このため、通信回路500から受信したデータの受信バッファとして使用可能な記憶領域の容量は、小さくなることが考えられる。
図6の例では、メモリ502a上のデータブロックY1〜Y4およびパリティブロックPYと同じ記憶領域に、データブロックZ1〜Z4およびパリティブロックPZが書き込まれる事態が発生したとする。ただし、送受信回路504aは、これらのブロックのうち、例えばデータブロックZ3の書き込みに失敗し、メモリ502aに対するデータブロックZ3の書き込みが行われなかったとする。しかも、制御回路501aは、このような送受信回路504aでの書き込み失敗の発生を認識できず、データブロックZ3の書き込みに成功したと認識しているものとする。このような書き込みエラーの発生原因としては、例えば、送受信回路504aでノイズが発生した場合や送受信回路504aの回路自体に異常がある場合がある。
このようなデータブロックZ3の書き込みエラーが発生した場合、メモリ502a上では、データブロックY1,Y2,Y4およびパリティブロックPYが、それぞれデータブロックZ1,Z2,Z4およびパリティブロックPZによってそれぞれ上書きされる。また、各ブロックに付加された付加情報も、新たな付加情報によって上書きされる。しかし、データブロックY3とその付加情報は、上書きされずにメモリ502aにそのまま残る。
この状態から、制御回路501aは、データブロックZ1の付加情報から先頭転送先アドレス“YZ”およびブロック数“5”を検出する。制御回路501aは、各データブロックおよびパリティブロックPZの付加情報を参照し、付加情報の先頭転送先アドレスに“YZ”が設定されたブロックが5つ存在するか否かを判定する。制御回路501aは、データブロックZ3の書き込みエラーを認識していないので、データブロックZ2,Y3,Z4、パリティブロックPZの順に付加情報を読み出す。
メモリ502aに記憶されたままのデータブロックY3の付加情報の内容は、上書きに失敗したデータブロックZ3の付加情報の内容と同じである。このため、データブロックZ1,Z2,Y3,Z4およびパリティブロックPZの付加情報においては、いずれも先頭転送先アドレス“YZ”およびブロック数“5”が設定されている。したがって、制御回路501aは、先頭転送先アドレス“YZ”およびブロック数“5”が付加されたブロックが5つ存在すると間違って判定してしまう。
そして、制御回路501aは、RAM205a上のデータブロックY1,Y2,Y3,Y4がそれぞれ記憶された領域に、データブロックZ1,Z2,Y3,Z4を格納する。すると、RAM205aのデータブロックY3の記憶領域だけ、データブロックZ3による更新がされないという事態が起こる。
このように、RAM205a上の同じ記憶領域に対するデータの転送要求が連続して発生し、かつ、通信回路500aのメモリ502a上の同じ記憶領域に後続のデータに対応するブロックおよび付加情報が書き込まれた場合、メモリ502aへの書き込みが誤ってスキップされたデータブロックを上記の付加情報から特定することができない。そのため、RAM205aの一部(データブロックY3の記憶領域)が更新されないという事態が起こり得る。
そこで、本実施の形態では、上記のような付加情報に符号の項目を追加することで、RAM205aの一部が更新されないという事態を防ぐ。
図7は、第2の実施の形態で使用される付加情報を示す図である。図7では、図5,図6に例示した付加情報のグループ識別情報に符号の項目が追加されたことを示している。符号の項目には、“0”または“1”が設定される。なお、符号の項目に設定される値は、予め決められた2通りの値のいずれかであれば“0”,“1”に限らない。
符号の値は、1つの転送データが通信回路500から通信回路500aに送信される度に変更される。例えば、制御回路501は、データYを分割したデータブロックY1〜Y4およびパリティブロックPYそれぞれに、符号“0”が設定された付加情報を付加して、通信回路500aに送信する。次に、制御回路501は、データZを分割したデータブロックZ1〜Z4およびパリティブロックPZそれぞれに、符号“1”が設定された付加情報を付加して、通信回路500aに送信する。このように、制御回路501は、転送データが変わる度に付加情報の符号を変更する。
図8は、符号による判定処理の具体例を示す図である。図8は、図6の例と同様、データYの転送が要求された後、RAM205a上のデータYと同一の記憶領域に対して同じデータサイズのデータZの転送が要求されたケースを示す。また、通信回路500の制御回路501は、データYに対応するブロックの付加情報に符号“0”を設定し、次のデータZに対応するブロックの付加情報に符号“1”を設定したとする。
図8の左側の状態では、データYの転送要求に応じて、通信回路500aのメモリ502aには、データブロックY1,Y2,Y3,Y4およびパリティブロックPYが付加情報とともに正常に記憶されている。この状態から、データZの転送が要求され、通信回路500の制御回路501は、データブロックZ1,Z2,Z3,Z4およびパリティブロックPZを付加情報とともに通信回路500aへ送信する。
通信回路200aでは、図6の例と同様に、メモリ502a上のデータブロックY1,Y2,Y3,Y4およびパリティブロックPYと同じ領域に、受信したデータブロックZ1,Z2,Z3,Z4およびパリティブロックPZが格納されるとする。ただし、図6の例と同様に、送受信回路504aは、データブロックZ3の書き込みに失敗し、図8の中央に示すように、データブロックY3とその付加情報とがメモリ502aにそのまま残ったとする。また、制御回路501aは、データブロックZ3の書き込みに失敗したことを検知できなかったものとする。
制御回路501aは、各ブロックの付加情報をメモリ502aから順に読み出す。このとき、データブロックZ1,Z2,Z4およびパリティブロックPZについては、対応する付加情報における符号、アドレスおよびブロック数の値が同じである。そのため、制御回路501aは、データブロックZ1,Z2,Z4およびパリティブロックPZが同じグループに属すると判定する。しかし、データブロックY3については、対応する付加情報におけるアドレスおよびブロック数の値はデータブロックZ1,Z2,Z4およびパリティブロックPZと同じであるものの、符号の値はデータブロックZ1,Z2,Z4およびパリティブロックPZとは異なる。そのため、制御回路501aは、データブロックY3は、データブロックZ1,Z2,Z4およびパリティブロックPZとは異なるグループに属すると判定する。そして、制御回路501aは、データブロックZ1,Z2,Z4およびパリティブロックPZの付加情報に設定されたブロック数およびブロック番号から、ブロック番号“3”が付加されたデータブロックZ3の受信処理に失敗したことを正しく判定することができる。
これにより、制御回路501aは、受信処理に成功したデータブロックZ1,Z2,Z4およびパリティブロックPZを用いてデータブロックZ3を復元し、データブロックZ1〜Z4をRAM205aに書き込むことができる。データブロックZ3の受信処理に失敗したにもかかわらず、データZ全体がRAM205aに正常に書き込まれるので、データZのCM200からの再送が必要にならない。
このように、付加情報の符号と先頭転送先アドレスとブロック数とで1つのグループに属する全てのブロックが揃っていることの確認を行うことで、受信処理を失敗したことを判定できる。制御回路501aにより、受信処理を失敗した状態でデータブロックをRAM205aに送信しないように制御するので、RAM205aの一部が更新されないという事態を防ぐことができる。
なお、送信側の制御回路501は、符号が一方の値である場合のみ、符号以外の付加情報の各ビットの値を反転させてもよい。例えば、制御回路501は、符号が“1”の場合に、符号以外の付加情報の各ビットの値を反転させる。この場合、受信側の制御回路501aは、付加情報の符号の値に基づいて、符号以外の付加情報の各ビットが反転されているかを判定する。反転されていると判定した場合、制御回路501aは、同一グループに属するブロックの受信数を判定する際に、少なくともブロック数およびブロック番号の各ビットを反転させてから利用する。
このようなビット反転が施される場合、受信側の制御回路501aは、同一グループに属するブロックを判別する際に、符号が“1”であっても、グループ識別情報の各ビットを反転させないままグループ識別情報の比較処理を行うことができる。例えば、図8のケースで上記のようなビット反転が施されない場合、データブロックZ1,Z2,Z4およびパリティブロックPZに付加されたグループ識別情報と、データブロックY3に付加されたグループ識別情報との間では、符号の値のみが異なることになる。これに対して、上記のようなビット反転が施された場合、データブロックZ1,Z2,Z4およびパリティブロックPZに付加されたグループ識別情報と、データブロックY3に付加されたグループ識別情報との間では、グループ識別情報全体が異なる。このため、例えば、グループ識別情報のうち符号の部分のみ、伝送路上の伝送時やメモリ502aへの書き込み時等でエラーが発生して値が変化してしまった場合でも、データブロックZ1,Z2,Z4およびパリティブロックPZが属するグループにデータブロックY3が属さないことを判定できる。換言すると、グループ識別情報全体が符号と同等の役割を果たすようになる。これにより、エラー判定の精度が向上する。
次に、図9および図10を用いて、通信回路500,500aの機能について説明する。通信回路500,500aは、実際にはともに同じ機能を備える。しかしながら、図9および図10では、説明を簡単にするために、通信回路500を送信側、通信回路500aを受信側として説明し、通信回路500の受信側としての機能と通信回路500aの送信側としての機能とを省略する。
図9は、送信側の通信回路の機能例を示す図である。通信回路500は、記憶部510、転送制御部520およびブロック生成部530を有する。記憶部510は、例えば、メモリ502に確保した記憶領域として実装される。転送制御部520およびブロック生成部530の処理は、例えば、制御回路501が備えるプロセッサが所定のファームウェアプログラムを実行することで実現される。また、転送制御部520およびブロック生成部530の少なくとも一方は、専用の回路として実装されてもよい。
記憶部510は、転送制御部520およびブロック生成部530の処理に用いられる情報を記憶する。記憶部510は、バッファ記憶部511およびテーブル記憶部512を有する。バッファ記憶部511は、RAM205から取得したデータブロックなどを一時的に記憶する。テーブル記憶部512は、送信テーブルを記憶する。送信テーブルには、転送サイズ、付加情報のサイズを示す情報および符号など、付加情報を生成するために用いられる情報が登録される。転送サイズは、通信回路500から通信回路500aへPCIeパケットにより1回に送信できるデータのサイズである。転送サイズおよび付加情報のサイズは、予め送信テーブルに登録されている。また、符号は、送信側の通信回路500で管理される符号である。
転送制御部520は、CPU201からデータの転送要求を受信する。転送制御部520は、受信した転送要求に基づいて、送信テーブルに転送元アドレスと先頭転送先アドレスを登録する。これとともに、転送制御部520は、転送が要求されたデータの読み出しを、PCIe制御部203を介してメモリ制御部204に要求する。この読み出し要求に応じて、RAM205からデータが読み出され、メモリ制御部204およびPCIe制御部203を介して通信回路500へ送信される。このデータは、PCIeパケットに分割して送信され、分割されたデータブロックがメモリ502に格納されることで一旦統合される。
転送制御部520は、送信テーブルを参照して付加情報を作成し、後述するブロック生成部530が作成した複数のデータブロックおよびパリティブロックのそれぞれに付加情報を付加する。転送制御部520は、送受信回路504を介して、付加情報を付加した複数のデータブロックおよびパリティブロックそれぞれを通信回路500aに送信する。転送制御部520は、複数のデータブロックおよびパリティブロックそれぞれの送信を完了したら、送信テーブルに登録されている符号を更新する。例えば、転送制御部520は、符号が“0”の場合は符号を“1”に更新する。転送制御部520は、符号が“1”の場合は符号を“0”に更新する。
ブロック生成部530は、送信テーブルに登録されている転送サイズおよび付加情報のサイズに基づいて、バッファ記憶部511で統合されたデータを再度分割し、複数のデータブロックを作成する。ブロック生成部530は、作成された複数のデータブロックに基づいてパリティブロックを生成する。
図10は、受信側の通信回路の機能例を示す図である。通信回路500aは、記憶部510a、転送制御部520a、解析部530a、監視部540aおよび復元部550aを有する。転送制御部520a、解析部530a、監視部540aおよび復元部550aは、互いに通信可能である。
記憶部510aは、例えば、メモリ502aに確保した記憶領域として実装される。転送制御部520a、解析部530a、監視部540aおよび復元部550aの処理は、例えば、制御回路501aが備えるプロセッサが所定のファームウェアプログラムを実行することで実現される。また、転送制御部520a、解析部530a、監視部540aおよび復元部550aの少なくとも1つは、専用の回路のモジュールとして実装されてもよい。
記憶部510aは、転送制御部520a、解析部530a、監視部540aおよび復元部550aの処理に用いられる情報を記憶する。記憶部510aは、バッファ記憶部511aおよびテーブル記憶部512aを有する。バッファ記憶部511aは、通信回路500から送信されたデータブロックおよびパリティブロックを付加情報とともに一時的に記憶する。テーブル記憶部512aは、符号管理テーブル、仕掛中テーブルおよび保留テーブルを記憶する。符号管理テーブルには、受信側の通信回路500aで管理される符号を示す情報が登録される。仕掛中テーブルには、解析部530aが1つのグループに属する全てのデータブロックが揃っているかを確認している処理対象のグループに関する情報が登録される。保留テーブルには、上記の処理対象以外のグループに関する情報が登録される。
通信回路500から送信されたデータブロックおよびパリティブロックは、付加情報とともにバッファ記憶部511aに格納される。転送制御部520aは、バッファ記憶部511aに格納された各ブロックの負荷情報に基づいて、データのエラー検出およびエラー訂正を行う。
転送制御部520aは、1つのグループに属する全てのデータブロックが揃っている場合、送受信回路503aに当該全てのデータブロックを転送するように指示する。送受信回路503aは、PCIe制御部203a、メモリ制御部204aを介して、1つのグループに属する全てのデータブロックをRAM205aに送信する。また、転送制御部520aは、1つのグループに属するデータブロックの1つの受信処理に失敗した場合、そのデータブロックを復元したブロックを復元部550aから取得し、送受信回路503aを介して、受信処理に成功したデータブロックとともにRAM205aに送信する。
解析部530aは、データブロックおよびパリティブロックに付加されている付加情報が示す符号を確認する。解析部530aは、符号管理テーブルに登録されている符号と確認した符号とが異なる場合は、データブロックまたはパリティブロックに関する情報を仕掛中テーブルに登録する。一方、解析部530aは、符号管理テーブルに登録されている符号と確認した符号とが同じ場合は、データブロックまたはパリティブロックに関する情報を保留テーブルに登録する。
解析部530aは、転送制御部520aがPCIe制御部203a、メモリ制御部204aを介してRAM205aに1つのグループに属する全てのデータブロックを送信した場合、符号管理テーブルに登録されている符号を更新する。例えば、解析部530aは、符号が“0”の場合は符号を“1”に更新する。解析部530aは、符号が“1”の場合は符号を“0”に更新する。
監視部540aは、仕掛中テーブルにデータブロックまたはパリティブロックに関する情報が最初に登録されたら、所定の時間内に該当グループに属する全てのブロックがバッファ記憶部511aに揃うか否かを監視する。所定の時間内に該当グループに属する全てのブロックが揃わない場合(タイムアウト)、監視部540aは、バッファ記憶部511aに格納されていないデータブロックを復元するように復元部550aに指示する。
復元部550aは、バッファ記憶部511aに格納されている1つのグループに属するデータブロックと当該グループに属するパリティブロックを用いて、バッファ記憶部511aに格納されていない当該グループに属するデータブロックを復元する。
図11は、送信テーブルの例を示す図である。送信テーブル513は、テーブル記憶部512に格納される。送信テーブル513は、転送サイズ、付加情報のサイズ、符号、転送元アドレス、先頭転送先アドレス、データサイズ、ブロック数の項目を含む。
転送サイズの項目には、転送サイズを示す情報が登録される。転送サイズとは、1つのPCIeパケットで転送可能なデータのサイズ、すなわちPCIeパケットのペイロードのサイズを示す。付加情報のサイズの項目には、付加情報のサイズを示す情報が登録される。符号の項目には、“0”または“1”が登録される。転送元アドレスの項目には、転送元のアドレスが登録される。先頭転送先アドレスの項目には、転送対象のデータに対応するブロックのうち、先頭のデータブロックが格納される転送先のアドレスが登録される。データサイズの項目には、転送対象のデータのサイズが登録される。ブロック数の項目には、転送対象のデータに対応するブロックの数が登録される。
図12は、符号管理テーブルの例を示す図である。符号管理テーブル514は、テーブル記憶部512aに格納される。符号管理テーブル514は、符号の項目を含む。符号の項目には、“0”または“1”が登録される。
図13は、仕掛中テーブルの例を示す図である。仕掛中テーブル515は、テーブル記憶部512aに格納される。仕掛中テーブル515は、先頭転送先アドレス、受信予定ブロック数、受信済みブロック番号の項目を含む。
先頭転送先アドレスの項目には、先頭のデータブロックが格納される転送先のアドレスが登録される。受信予定ブロック数の項目には、受信する予定のブロック数が登録される。受信済みブロック番号の項目には、転送制御部520aがバッファ記憶部511aに格納したブロックの番号が登録される。
具体的には、先頭転送先アドレスの項目には、付加情報の先頭転送先アドレスが登録される。受信予定ブロック数の項目には、付加情報のブロック数が登録される。受信済みブロック番号の項目には、受信済みブロックの付加情報のブロック番号が登録される。
図14は、保留テーブルの例を示す図である。保留テーブル516は、テーブル記憶部512aに格納される。保留テーブル516は、先頭転送先アドレス、受信予定ブロック数、受信済みブロック番号の項目を含む。
先頭転送先アドレスの項目には、先頭のデータブロックが格納される転送先のアドレスが登録される。受信予定ブロック数の項目には、受信する予定のブロック数が登録される。受信済みブロック番号の項目には、転送制御部520aがバッファ記憶部511aに格納したブロックの番号が登録される。
具体的には、先頭転送先アドレスの項目には、付加情報の先頭転送先アドレスが登録される。受信予定ブロック数の項目には、付加情報のブロック数が登録される。受信済みブロック番号の項目には、付加情報のブロック番号が登録される。
保留テーブル516には、仕掛かり中テーブル515に登録されている、処理対象のあるグループに属するブロックを受信中に、別のグループに属するブロックを受信した場合に、後者のブロックに関する情報が登録される。保留テーブル516は、登録された情報に対応するブロックが、メモリ502aに記憶された誤ったブロックか、または仕掛かり中テーブル515に登録された情報に対応するグループの次に送信されたグループに属するブロックかが判別可能になるまで、該当ブロックに関する情報を一時的に保持する。
図15は、送信処理の例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(S11)転送制御部520は、CPU201のCPUコア202からデータの転送要求を受信する。転送制御部520は、受信した転送要求に設定された、RAM205における転送元アドレス、RAM205aにおける先頭転送先アドレス、およびデータサイズを、送信テーブル513の転送元アドレス、先頭転送先アドレスおよびデータサイズにそれぞれ登録する。
(S12)転送制御部520は、転送が要求されたデータの読み出しを、PCIe制御部203を介してメモリ制御部204に要求する。送受信回路503は、メモリ制御部204によってRAM205から読み出されたデータを、PCIe制御部203を介して1つ以上のPCIeパケットとして取得する。
送受信回路503は、取得したPCIeパケットをバッファ記憶部511に格納する。送受信回路503は、PCIeパケットをバッファ記憶部511に格納した旨を転送制御部520に通知する。転送制御部520は、各PCIeパケットに格納されたデータブロックを統合する。転送制御部520は、ブロック生成部530に転送対象のデータをバッファ記憶部511に格納した旨の通知を行う。
(S13)ブロック生成部530は、送信テーブル513の転送サイズと付加情報のサイズとデータサイズに基づいて、ブロック数を算出する。ブロック数は、“データサイズ/(転送サイズ−付加情報のサイズ)”という式により算出される。ブロック生成部530は、算出したブロック数を送信テーブル513に登録する。
(S14)ブロック生成部530は、送信テーブル513の転送サイズと付加情報のサイズに基づいて、統合したデータブロックを再分割して、複数のデータブロックを作成する。すなわち、再分割後のデータブロックのサイズは、“転送サイズ−付加情報のサイズ”となる。
(S15)ブロック生成部530は、作成された複数のデータブロックに基づいてパリティブロックを生成する。ブロック生成部530は、送信テーブル513のブロック数をインクリメントする。すなわち、送信テーブル513のブロック数には、データブロックとパリティブロックとの数を合算した数が登録される。ブロック生成部530は、転送制御部520にブロックの生成が完了した旨を通知する。
(S16)転送制御部520は、生成されたブロックの中から、1つのデータブロックまたはパリティブロックを選択する。転送制御部520は、送信テーブル513の符号、先頭転送先アドレス、ブロック数を、それぞれ符号、先頭転送先アドレス、ブロック数の欄に設定した付加情報を生成する。また、転送制御部520は、付加情報のブロック番号の欄に、ステップS14,S15で生成されたブロックのうち、ステップS16で選択した選択順を示す番号を設定する。転送制御部520は、選択したデータブロックまたはパリティブロックに、生成した付加情報を付加する。
(S17)転送制御部520は、送受信回路504を介して付加情報を付加したデータブロックまたはパリティブロックをPCIeパケットのペイロードに格納し、当該PCIeパケットを通信回路500aに送信する。
(S18)転送制御部520は、ステップS14,S15で生成された全てのデータブロックおよびパリティブロックを送信済みであるか否かを判定する。送信済みの場合、処理をステップS19に進める。送信済みでない場合、処理をステップS16に進める。
(S19)転送制御部520は、送信テーブル513の符号を更新する。例えば、転送制御部520は、現在の符号が“0”の場合は符号を“1”に更新する。転送制御部520は、現在の符号が“1”の場合は符号を“0”に更新する。そして、処理を終了する。
これにより、1つのグループに属する全てのデータブロックおよびパリティブロックのそれぞれを通信回路500aに送信することができる。
また、データブロックまたはパリティブロックを送信する順番は、全てのデータブロックを送信した後にパリティブロックを送信してもよいし、パリティブロックを送信した後に全てのデータブロックを送信してもよい。
図16は、受信処理の例(その1)を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
(S21)送受信回路504aは、1つのデータブロックまたはパリティブロックを受信する。送受信回路504aは、1つのデータブロックまたはパリティブロックを、付加されていた付加情報とともにバッファ記憶部511aに格納する。送受信回路504aは、1つのデータブロックまたはパリティブロックを受信した旨を解析部530aに通知する。
以下、解析部530aは、送受信回路504aがバッファ記憶部511aに格納した1つのブロック(データブロックまたはパリティブロック)に対する処理を行う。
(S22)解析部530aは、ブロックに付加されている付加情報に設定された符号を確認する。
(S23)解析部530aは、符号管理テーブル514に登録されている符号とステップS22で確認した符号とが異なるか否かを判定する。符号が異なる場合、処理をステップS24に進める。符号が同じ場合、処理をステップS31に進める。
(S24)解析部530aは、仕掛中テーブル515にデータが登録されているか否かを判定する。すなわち、解析部530aは、仕掛中テーブル515にデータが登録されているか、または、全く登録されていないかを判定する。データが登録されている場合、処理をステップS26に進める。データが登録されていない場合、処理をステップS25に進める。
(S25)解析部530aは、ブロックに付加されている付加情報に設定された先頭転送先アドレス、ブロック数、ブロック番号を、仕掛中テーブル515の先頭転送先アドレス、受信予定ブロック数、受信済みブロック番号にそれぞれ登録する。解析部530aは、監視部540aに対して、仕掛中テーブル515に登録された1つのグループに属する全てのブロックが所定の時間内にバッファ記憶部511aに揃うか否かを監視するように指示する。これにより、以降の処理は、解析部530aと監視部540aとの処理が並行して実行される。そして、処理をステップS54に進める。
(S26)解析部530aは、ブロックに付加されている付加情報に設定された先頭転送先アドレス、ブロック数が、仕掛中テーブル515に登録されている先頭転送先アドレス、受信予定ブロック数と同じであるか否かの判定を行う。同じ場合、処理をステップS27に進める。異なる場合、処理をステップS54に進める。
なお、異なる場合、処理対象のブロックは異常なブロックである可能性が高い。このため、解析部530aは、判定で用いたブロック、すなわち、ステップS21でバッファ記憶部511aに格納したブロックを廃棄してもよい。また、解析部530aは、異常が発生したことを通知する情報を通信回路500に出力してもよい。
(S27)解析部530aは、仕掛中テーブル515の受信済みブロック番号に、ブロックに付加されている付加情報に設定されたブロック番号を登録する。
(S28)解析部530aは、仕掛中テーブル515に登録された1つのグループに属する全てのブロックを受信しているか否かの判定を行う。具体的には、解析部530aは、仕掛中テーブル515に登録されている受信予定ブロック数と受信済みブロック番号の数とが一致するか否かの判定を行う。例えば、仕掛中テーブル515に登録されている受信予定ブロック数が“5”、仕掛中テーブル515に登録されている受信済みブロック番号が“1”〜“5”の場合、解析部530aは、1つのグループに属する全てのブロックを受信していると判定する。全てのブロックを受信している場合、解析部530aは、その旨を監視部540aに通知する。そして、処理をステップS51に進める。一部のブロックの受信が完了していない場合、処理をステップS54に進める。
図17は、受信処理の例(その2)を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(S31)解析部530aは、保留テーブル516にデータが登録されているか否かを判定する。データが登録されている場合、処理をステップS33に進める。データが登録されていない場合、処理をステップS32に進める。
(S32)解析部530aは、ブロックに付加されている付加情報に設定された先頭転送先アドレス、ブロック数、ブロック番号を、保留テーブル516の先頭転送先アドレス、受信予定ブロック数、受信済みブロック番号に登録する。そして、処理をステップS54に進める。
ここで、ステップS31で“No”と判定される場合とは、直近に仕掛中テーブル5151に登録されたグループとは別のグループに属するブロックが1つ検出された場合である。この場合、検出されたブロックが、送信側から次に送信されたデータに対応する正当なブロックなのか、あるいは、書き込みエラー等によってバッファ記憶部511aに残ったままになっている不要なブロックなのかを確定できない。そこで、解析部530aは、ステップS32において、検出されたブロックに関する情報を保留テーブル516に一時的に保持させる。検出されたブロックに関する情報は、そのブロックの正否が確定するまでの間、保留テーブル516に保持される。
(S33)解析部530aは、ブロックに付加されている付加情報に設定された先頭転送先アドレス、ブロック数が、保留テーブル516に登録されている先頭転送先アドレス、受信予定ブロック数と同じであるか否かの判定を行う。同じ場合、解析部530aは、ステップS21でバッファ記憶部511aに格納したブロックに付加されている付加情報に設定されているブロック番号を、保留テーブル516の受信済みブロック番号に登録する。そして、処理をステップS34に進める。異なる場合、処理をステップS39に進める。
(S34)解析部530aは、仕掛中テーブル515にデータが登録されているか否かを判定する。データが登録されている場合、処理をステップS35に進める。データが登録されていない場合、そして、処理をステップS38に進める。
ここで、ステップS33で“Yes”、ステップS34で“Yes”と判定された場合、仕掛中テーブル515に登録されているグループとは別のグループに属するブロックを連続して受信したことになる。この場合、保留テーブル516に登録されているブロックは、次に送信されたデータに対応するブロックであり、廃棄してはいけない正しいブロックであると判定される。このため、ステップS35以降の処理で、仕掛中テーブル515に登録されたグループについての受信処理を完了させるための処理が行われる。
(S35)解析部530aは、仕掛中テーブル515を参照して、仕掛中テーブル515に登録されているグループに属するデータブロックのうち、受信済みでないデータブロックを復元できるか否かの判定を行う。具体的には、(1)解析部530aは、仕掛中テーブル515に登録されている受信予定ブロック数と仕掛中テーブル515に登録されている受信済みブロック番号の数との差分が1つであるか確認する。(2)差分が1つである場合、解析部530aは、受信済みブロック番号に基づいて、受信済みでないブロックがデータブロックであるかを判定する。解析部530aは、受信済みでないブロックがデータブロックである場合に、そのデータブロックを復元できると判断する。復元できる場合、解析部530aは、その旨を復元部550aに通知する。そして、処理をステップS37に進める。復元できない場合、処理をステップS36に進める。
また、(1)において差分が1つであり、受信済みでないブロックがパリティブロックの場合、解析部530aは、全てのデータブロックが揃っている旨を転送制御部520aに通知する。転送制御部520aは、PCIe制御部203aおよびメモリ制御部204aを介して、全てのデータブロックをRAM205aに送信する。解析部530aは、仕掛中テーブル515に登録されているデータをリセット(消去)する。そして、処理を終了する。
(S36)解析部530aは、転送制御部520aを介して、通信回路500に対して、仕掛中テーブル515に登録されたグループに対応する送信データを再送するように要求する。解析部530aは、仕掛中テーブル515に登録されているデータをリセットする。そして、処理をステップS54に進める。
(S37)復元部550aは、仕掛中テーブル515に登録された受信済みのデータブロックおよびパリティブロックを用いて、受信済みでないデータブロックを復元する。復元部550aは、データブロックを復元した旨を転送制御部520aに通知する。転送制御部520aは、仕掛中テーブル515に登録されたグループに属する全てのデータブロックをRAM205aに転送するように、送受信回路503aに指示する。これらのデータブロックの全体は、送受信回路503aによってPCIeパケットに再分割されて、PCIe制御部203aおよびメモリ制御部204aを介してRAM205aに送信される。これにより、全てのデータブロックが、RAM205aに格納され、仕掛中テーブル515に登録されているグループに関するデータ転送処理が完了する。
(S38)解析部530aは、保留テーブル516に登録されているデータによって、仕掛中テーブル515の情報を更新する。また、解析部530aは、監視部540aに対して、仕掛中テーブル515に登録されたグループに属する全てのブロックが所定の時間内にバッファ記憶部511aに揃うか否かを監視するように指示を行う。これにより、以降の処理は、解析部530aと監視部540aとの処理が並行して実行される。そして、処理をステップS41に進める。
(S39)解析部530aは、仕掛中テーブル515にデータが登録されているか否かを判定する。データが登録されている場合、処理をステップS42に進める。データが登録されていない場合、処理をステップS40に進める。
(S40)解析部530aは、ステップS21でバッファ記憶部511aに格納したブロックに付加された付加情報に設定されている先頭転送先アドレス、ブロック数、ブロック番号を、仕掛中テーブル515に登録する。また、解析部530aは、監視部540aに対して、仕掛中テーブル515に登録された1つのグループに属する全てのブロックが所定の時間内にバッファ記憶部511aに揃うか否かを監視するように指示を行う。これにより、以降の処理は、解析部530aと監視部540aとの処理が並行して実行される。
(S41)解析部530aは、符号管理テーブル514に登録されている符号を別の値に更新する。また、解析部530aは、保留テーブル516に登録されているデータをリセットする。そして、処理をステップS54に進める。
(S42)解析部530aは、ステップS21でバッファ記憶部511aに格納したブロックに付加された付加情報に設定されている先頭転送先アドレス、ブロック数、ブロック番号によって、保留テーブル516の情報を更新する。そして、処理をステップS54に進める。
図18は、受信処理の例(その3)を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
(S51)転送制御部520aは、仕掛中テーブル515に登録されたグループに属する全てのデータブロックをRAM205aに転送するように、送受信回路503aに指示する。これらのデータブロックの全体は、送受信回路503aによってPCIeパケットに再分割されて、PCIe制御部203aおよびメモリ制御部204aを介してRAM205aに送信される。これにより、全てのデータブロックが、RAM205aに格納される。転送制御部520aは、全てのデータブロックを送信した旨を解析部530aに通知する。
(S52)解析部530aは、仕掛中テーブル515に登録されているデータをリセットする。
(S53)解析部530aは、符号管理テーブル514に登録されている符号を別の値に更新する。
(S54)解析部530aは、次のデータブロックを待つ。そして、処理を終了する。
図19は、監視処理の例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。監視処理は、解析部530aから監視部540aに対して、仕掛中テーブル515に登録されたグループに属する全てのブロックが所定の時間内にバッファ記憶部511aに揃うか否かを監視する旨の指示を受けてから処理が始まる。
(S61)監視部540aは、タイマのカウントを開始する。
監視部540aは、以下のステップS62,S63を所定の時間間隔で行う。
(S62)監視部540aは、仕掛中テーブル515に登録されたグループに属する全てのブロックを受信済みか否かの判定を行う。監視部540aは、解析部530aから仕掛中テーブル515に登録されたグループに属する全てのブロックを受信した旨の通知(図16のステップS28参照)を受けることにより判定できる。全てのブロックを受信している場合、処理を終了する。全てのブロックを受信していない場合、処理をステップS63に進める。
(S63)監視部540aは、タイマのカウントを開始してから所定時間が経過しているか否かを判定する。すなわち、監視部540aは、タイムアウトであるか否かを判定する。タイムアウトの場合、処理をステップS64に進める。タイムアウトでない場合、処理をステップS62に進める。
(S64)監視部540aは、仕掛中テーブル515を参照して、受信済みでないデータブロックを復元できるか否かの判定を行う。この判定処理は、図17のステップS35での解析部530aによる判定処理と同様の処理が、監視部540aによって行われる。復元できる場合、監視部540aは、その旨を復元部550aに通知する。そして、処理をステップS66に進める。復元できない場合、処理をステップS65に進める。
また、該当グループに属する全てのデータブロックを受信済みの場合、監視部540aは、その旨を転送制御部520aに通知する。転送制御部520aは、PCIe制御部203aおよびメモリ制御部204aを介して、全てのデータブロックをRAM205aに送信する。監視部540aは、仕掛中テーブル515に登録されているデータをリセットする。そして、処理を終了する。
(S65)監視部540aは、転送制御部520aを介して、通信回路500に仕掛中テーブル515に登録されたグループに対応する送信データを再送するように要求する。そして、処理を終了する。
(S66)復元部550aは、仕掛中テーブル515に登録された受信済みのデータブロックおよびパリティブロックを用いて、受信済みでないデータブロックを復元する。復元部550aは、データブロックを復元した旨を転送制御部520aに通知する。転送制御部520aは、仕掛中テーブル515に登録されたグループに属する全てのデータブロックをRAM205aに転送するように、送受信回路503aに指示する。これらのデータブロックの全体は、送受信回路503aによってPCIeパケットに再分割されて、PCIe制御部203aおよびメモリ制御部204aを介してRAM205aに送信される。これにより、全てのデータブロックが、RAM205aに格納され、仕掛中テーブル515に登録されているグループに関するデータ転送処理が完了する。
(S67)監視部540aは、仕掛中テーブル515に登録されているデータをリセットする。そして、処理を終了する。
図20は、受信処理の具体例(その1)を示す図である。図20は、図6、図8で説明したようなバッファ領域への書き込みエラーが発生したケースを示す。
図20では、まず、データAの転送が要求され、データAを分割して得られたデータブロックA1〜A4と、データブロックA1〜A4に基づくパリティブロックPAとが、バッファ記憶部511aに記憶されたとする。なお、データA、データブロックA1,A2,A4およびパリティブロックPAは図示しない。これらのブロックに付加される付加情報には、符号“1”、先頭転送先アドレス“ADD1”、ブロック数“5”が設定されるものとする。
この状態から、データAと同じ転送先でデータサイズも同じデータBの転送が要求されたとする。データBはデータブロックB1〜B4に分割され、データブロックB1〜B4に基づいてパリティブロックPBが生成される。これらのブロックに付加される付加情報には、符号“0”、先頭転送先アドレス“ADD1”、ブロック数“5”が設定される。なお、データブロックB3については図示しない。また、これらのデータブロックB1〜B4およびパリティブロックPBが、バッファ記憶部511aにおけるデータブロックA1〜A4およびパリティブロックPAと同じ記憶領域に書き込まれるものとする。
まず、データブロックA1,A2は、それぞれデータブロックB1,B2によって上書きされたとする。この時点で、符号管理テーブル514には“1”が登録され、仕掛中テーブル515には、先頭転送先アドレス“ADD1”、受信予定ブロック数“5”、受信済みブロック番号“1”,“2”が登録されている。
ここで、転送制御部520aは、データブロックB3の書き込みに失敗し、データブロックA3がバッファ記憶部511aにそのまま残ったものとする。このとき、データブロックA3の付加情報が読み出されるが、符号が“1”であることから、データブロックA3に関する情報は保留テーブル516に登録される(図17のステップS32に対応)。
次に、データブロックB4とパリティブロックPBの書き込みに成功すると、仕掛中テーブル515の受信済みブロックには、さらにデータブロックB4とパリティブロックPBとが登録される。しかし、データBに対応する受信済みのブロック数は“4”であるので、データBに対応する全てのブロックが受信済みとは判定されない(図16のステップS28“No”に対応)。
次に、データC(図示せず)から生成されたデータブロックC1を受信したとする。データブロックC1の付加情報には、符号“1”、先頭転送先アドレス“ADD2”、ブロック数“5”が設定されている。この場合、保留テーブル516に登録されていたデータブロックA3は無効なデータであると判定され、データブロックC1の付加情報によって保留テーブル516が更新される(図17のステップS42に対応)。
また、パリティブロックPBの受信処理から一定時間内にデータBに対応するブロックを受信できず、データBについてタイムアウトとなった場合、受信済みになっていない(すなわち、書き込みに失敗した)データブロックB3が復元される(図19のステップS66に対応)。
以上の処理により、データブロックB3の書き込みに失敗した場合でも、データBの転送を正常に完了することができる。また、書き込み失敗によりバッファ記憶部511aに残っていたデータブロックA3を、不要なデータと判定して破棄することができる。
図21は、受信処理の具体例(その2)を示す図である。図21は、伝送路上でのパケットロス等によってブロックの受信抜けが発生したケースを示す。
図21では、まず、データCの転送が要求され、データCを分割して得られたデータブロックC1〜C4と、データブロックC1〜C4に基づくパリティブロックPCとが、通信回路500から通信回路500aへ送信されたものとする。これらのブロックの付加情報には、符号“1”、先頭転送先アドレス“ADD2”、ブロック数“5”が設定されている。
しかし、伝送の過程でデータブロックC3が失われ、通信回路500aのバッファ記憶部511aには、データブロックC1,C2,C4、パリティブロックPCの順にブロックが格納されたとする。この状態では、例えば、符号管理テーブル514には“0”が登録され、仕掛中テーブル515には、先頭転送先アドレス“ADD2”、受信予定ブロック数“5”、受信済みブロック番号“1”,“2”,“4”,“5”が登録されている。なお、データCおよびデータブロックC3については図示しない。
さらに、データD(図示せず)の転送が要求され、データDを分割して得られたデータブロックD1がバッファ記憶部511aに格納されたとする。データブロックD1の付加情報には、符号“0”、先頭転送先アドレス“ADD3”、ブロック数“4”が設定されている。この場合、データブロックD1に関する情報が保留テーブル516に登録される(図17のステップS32に対応)。
ここで、次に、データDを分割して得られたデータブロックD2がバッファ記憶部511aに格納されたとする。この場合、データブロックD2の付加情報に設定されたブロック番号が、受信済みブロック番号として保留テーブル516に追加登録される。また、この場合、仕掛中テーブル515に登録されたもの以外のグループに属するブロックが2つ受信されたことになる。このため、仕掛中テーブル515に登録されたグループの受信処理を終了するための処理が実行される(図17のステップS34“Yes”に対応)。
図21のケースでは、データブロックC3が復元され、データブロックC1〜C4がRAM205aに書き込まれて、データCの転送が正常に終了する(図17のステップS37に対応)。そして、保留テーブル516に登録されていたデータブロックD1,D2に関する情報によって、仕掛中テーブル515の情報が更新される(図17のS38に対応)。
以上の処理により、データブロックC3が失われ、データCに対応するブロックの中に受信済みでないブロックがある状況で、次のデータDに対応するブロックが送信された場合に、データブロックC3が失われたことを推定し、その復元を行うことができる。また、データブロックD1,D2を、後続のデータDに対応する正当なブロックであると判定することができる。
なお、バッファ記憶部511aにデータブロックC1,C2,C4、パリティブロックPC、データブロックD1が格納された状態で、データCについてのタイムアウトが発生した場合には、次のような処理が実行される。まず、仕掛中テーブル515に登録されたグループの受信処理を終了するための処理が実行される(図19のステップS63“Yes”に対応)。図21のケースでは、データブロックC3が復元され、データブロックC1〜C4がRAM205aに書き込まれて、データCの転送が正常に終了する(図19のステップS66に対応)。次に、仕掛中テーブル515の情報がリセットされる(図19のS67に対応)。
これにより、データブロックC3が失われ、データCに対応するブロックの中に受信済みでないブロックがある状況で、次のデータDに対応するブロックが送信された場合に、データブロックC3が失われたことを推定し、その復元を行うことができる。なお、保留テーブル516にはデータブロックD1に関する情報が登録されたままになるが、例えば、次のデータブロックD2が受信されると、データブロックD1,D2に関する情報が保留テーブル516から仕掛中テーブル515に移動される(図17のS34“No”,S38に対応)。これにより、後続のデータに対応する正当なブロックの受信が行われていることが判定される。
なお、以上の第2の実施の形態では、通信回路500から通信回路500aへのデータ送信において、1つのPCIeパケットに1つのブロック(データブロックまたはパリティブロック)を格納するものとした。しかしながら、“付加情報+ブロック”のサイズを、必ずしもPCIeパケットのペイロードのサイズと一致させる必要はなく、このサイズをペイロードより大きくすることもできる。ただし、ブロック単位で伝送路上の受信エラーを検出できるようにするためには、PCIeパケットのペイロードに複数のブロックが含まれることは望ましくない。このため、“付加情報+ブロック”のサイズが、ペイロードと同じか、またはペイロードの2倍以上となるように、ブロックサイズが決められることが望ましい。
なお、上記各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
また、以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 送信データを一定サイズに分割して得られた複数のデータブロックと、前記複数のデータブロックに基づいて生成されたパリティブロックとを、送信装置から受信する受信部と、
前記複数のデータブロックのうち一のデータブロックの受信処理に失敗した場合に、前記複数のデータブロックのうち受信処理に成功した他のデータブロックと、受信処理に成功した前記パリティブロックとに基づいて、前記一のデータブロックを復元する制御部と、
を有することを特徴とする受信装置。
(付記2) 前記送信装置から複数の送信データが送信され、前記複数の送信データのうち同一の送信データを前記一定サイズに分割して得られたデータブロックのそれぞれと当該データブロックに基づいて生成されたパリティブロックとに対して、同一に属することを示すグループ識別情報が付加され、
前記制御部は、前記送信装置から前記受信部が受信した受信データブロックおよび受信パリティブロックにそれぞれ付加された前記グループ識別情報に基づいて、前記受信データブロックおよび前記受信パリティブロックの中から一のグループに属するデータブロックおよびパリティブロックを判別し、前記送信装置から送信された前記一のグループに属するデータブロックのうち第1のデータブロックの受信処理に失敗した場合に、前記受信データブロックのうち前記一のグループに属する第2のデータブロックと前記受信パリティブロックのうち前記一のグループに属するパリティブロックとに基づいて前記第1のデータブロックを復元する、
ことを特徴とする付記1記載の受信装置。
(付記3) 前記送信装置から送信されたデータブロックおよびパリティブロックには、付加された前記グループ識別情報が示すグループに属するデータブロックの数を示すブロック数情報がさらに付加されるとともに、前記送信装置から送信されたデータブロックには、前記グループ識別情報が示すグループ内の通し番号を示すブロック番号情報がさらに付加され、
前記制御部は、前記受信データブロックおよび前記受信パリティブロックにそれぞれ付加された前記グループ識別情報に基づいて、前記受信データブロックおよび前記受信パリティブロックの中から一のグループに属するデータブロックおよびパリティブロックを判別し、前記受信データブロックのうち前記一のグループに属するデータブロックに付加された前記ブロック数情報および前記ブロック番号情報に基づいて、前記一のグループに属するデータブロックのうち受信処理に失敗したデータブロックを判定する、
ことを特徴とする付記2記載の受信装置。
(付記4) 記憶部をさらに有し、
前記送信装置から送信されるデータブロックおよびパリティブロックのそれぞれには、第1の値と第2の値のいずれかが設定されるグループ切り替え情報がさらに付加され、送信されるデータブロックおよびパリティブロックが属するグループが切り替わるたびに、前記グループ切り替え情報に設定される値が前記第1の値と前記第2の値のうちの一方から他方へ切り替えられ、
前記受信部は、前記送信装置から受信したデータブロックおよびパリティブロックを、それぞれに付加された前記グループ識別情報および前記グループ切り替え情報とともに前記記憶部に一時的に格納し、
前記制御部は、前記記憶部に格納されたデータブロックおよびパリティブロックのうち、付加された前記グループ識別情報および前記グループ切り替え情報の両方が互いに同一であるデータブロックおよびパリティブロックを、同一のグループに属するデータブロックおよびパリティブロックと判別する、
ことを特徴とする付記3記載の受信装置。
(付記5) 前記複数の送信データは、記憶装置への書き込みが要求されたデータであり、
前記送信装置から送信されるデータブロックおよびパリティブロックのうち、同一の送信データに対応するデータブロックおよびパリティブロックに付加される前記グループ識別情報として、対応する送信データの前記記憶装置における書き込み先領域の先頭アドレスが付加される、
ことを特徴とする付記2乃至4のいずれか1つに記載の受信装置。
(付記6) 前記受信装置は、前記記憶装置へのアクセスを制御するストレージ制御装置であり、
前記送信装置から前記受信装置へ送信される送信データは、前記受信装置が備えるメモリに対する書き込みが要求された、前記送信装置が備えるメモリ内のデータである、
ことを特徴とする付記5記載の受信装置。
(付記7) 受信装置へ送信する複数の送信データを一時的に記憶する記憶部と、
前記記憶部に記憶された前記複数の送信データのそれぞれを一定サイズに分割して複数のデータブロックを生成するとともに、前記複数のデータブロックのうち同一の送信データに対応するデータブロックに基づいてパリティブロックを生成し、前記複数のデータブロックおよびパリティブロックのうち、同一の送信データに対応するデータブロックおよびパリティブロックに対して、同一のグループに属することを示すグループ識別情報を付加して前記受信装置へ送信する制御部と、
を有することを特徴とする送信装置。
(付記8) 前記制御部は、同一の送信データに基づいて生成したデータブロックのそれぞれと当該データブロックに基づいて生成したパリティブロックとに対して同一のグループに属するデータブロックの数を示すブロック数情報をさらに付加するとともに、同一のグループに属するデータブロックのそれぞれに対してグループ内の通し番号を示すブロック番号情報をさらに付加して送信することを特徴とする付記7記載の送信装置。
(付記9) 前記制御部は、前記受信装置へ送信するデータブロックおよびパリティブロックのそれぞれに対して、第1の値と第2の値のいずれかが設定されるグループ切り替え情報をさらに付加し、送信されるデータブロックおよびパリティブロックが切り替わるたびに、前記グループ切り替え情報に設定する値を前記第1の値と前記第2の値のうちの一方から他方へ切り替えることを特徴とする付記7または8記載の送信装置。
(付記10) 前記複数の送信データのそれぞれは、記憶装置への書き込みが要求されたデータであり、
前記制御部は、同一の送信データに対応するデータブロックおよびパリティブロックに付加する前記グループ識別情報として、対応する送信データの前記記憶装置における書き込み先領域の先頭アドレスを付加する、
ことを特徴とする付記7または8記載の送信装置。
(付記11) 前記送信装置は、前記送信装置が備える記憶装置へのアクセスを制御するストレージ制御装置であり、
前記送信装置から前記受信装置へ送信される送信データは、前記送信装置が備えるメモリ内のデータである、
ことを特徴とする付記10記載の送信装置。
(付記12) 送信データを一定サイズに分割して得られた複数のデータブロックと、前記複数のデータブロックに基づいて生成されたパリティブロックとを送信する送信装置と、
前記複数のデータブロックのうち一のデータブロックの受信処理に失敗した場合に、前記複数のデータブロックのうち受信処理に成功した他のデータブロックと、受信処理に成功した前記パリティブロックとに基づいて、前記一のデータブロックを復元する受信装置と、
を有することを特徴とするデータ転送システム。
(付記13) 前記送信装置は、複数の送信データを前記受信装置へ送信する際に、前記複数の送信データのうち同一の送信データを前記一定サイズに分割して得られたデータブロックのそれぞれと当該データブロックに基づいて生成したパリティブロックとに対して、同一のグループに属することを示すグループ識別情報を付加して送信し、
前記受信装置は、前記送信装置から受信した受信データブロックおよび受信パリティブロックにそれぞれ付加された前記グループ識別情報に基づいて、前記受信データブロックおよび前記受信パリティブロックの中から一のグループに属するデータブロックおよびパリティブロックを判別し、前記送信装置から送信された前記一のグループに属するデータブロックのうち第1のデータブロックの受信処理に失敗した場合に、前記受信データブロックのうち前記一のグループに属する第2のデータブロックと前記受信パリティブロックのうち前記一のグループに属するパリティブロックとに基づいて前記第1のデータブロックを復元する、
ことを特徴とする付記12記載のデータ転送システム。
(付記14) 前記送信装置は、同一の送信データに基づいて生成したデータブロックのそれぞれと当該データブロックに基づいて生成したパリティブロックとに対して同一のグループに属するデータブロックの数を示すブロック数情報をさらに付加するとともに、同一のグループに属するデータブロックのそれぞれに対してグループ内の通し番号を示すブロック番号情報をさらに付加して送信し、
前記受信装置は、前記受信データブロックおよび前記受信パリティブロックにそれぞれ付加された前記グループ識別情報に基づいて、前記受信データブロックおよび前記受信パリティブロックの中から一のグループに属するデータブロックおよびパリティブロックを判別し、前記受信データブロックのうち前記一のグループに属するデータブロックに付加された前記ブロック数情報および前記ブロック番号情報に基づいて、前記一のグループに属するデータブロックのうち受信処理に失敗したデータブロックを判定する、
ことを特徴とする付記13記載のデータ転送システム。
(付記15) 前記送信装置は、前記受信装置へ送信するデータブロックおよびパリティブロックのそれぞれに対して、第1の値と第2の値のいずれかが設定されるグループ切り替え情報をさらに付加し、送信されるデータブロックおよびパリティブロックが属するグループが切り替わるたびに、前記グループ切り替え情報に設定する値を前記第1の値と前記第2の値のうちの一方から他方へ切り替え、
前記受信装置は、受信バッファを備え、前記送信装置から受信したデータブロックおよびパリティブロックを、それぞれに付加された前記グループ識別情報および前記グループ切り替え情報とともに前記受信バッファに格納し、前記受信バッファに格納されたデータブロックおよびパリティブロックのうち、付加された前記グループ識別情報および前記グループ切り替え情報の両方が互いに同一であるデータブロックおよびパリティブロックを、同一のグループに属するデータブロックおよびパリティブロックと判別する、
ことを特徴とする付記13または14記載のデータ転送システム。
(付記16) 前記送信装置から送信される送信データは、記憶装置への書き込みが要求されたデータであり、
前記送信装置は、同一の送信データに対応するデータブロックおよびパリティブロックに付加する前記グループ識別情報として、対応する送信データの前記記憶装置における書き込み先領域の先頭アドレスを付加する、
ことを特徴とする付記13乃至15のいずれか1つに記載のデータ転送システム。
(付記17) 前記送信装置は、第1の記憶装置へのアクセスを制御する第1のストレージ制御装置であり、
前記受信装置は、第2の記憶装置へのアクセスを制御する第2のストレージ制御装置であり、
前記送信装置から前記受信装置へ送信される送信データは、前記受信装置が備える第2のメモリに対する書き込みが要求された、前記送信装置が備える第1のメモリ内のデータである、
ことを特徴とする付記16記載のデータ転送システム。
1 送信装置
1a 記憶部
1b,2b 制御部
2 受信装置
2a 受信部
S1,S2,S3,S4,S5 ステップ

Claims (8)

  1. 送信データを一定サイズに分割して得られた複数のデータブロックと、前記複数のデータブロックに基づいて生成されたパリティブロックとを、送信装置から受信する受信部と、
    前記複数のデータブロックのうち一のデータブロックの受信処理に失敗した場合に、前記複数のデータブロックのうち受信処理に成功した他のデータブロックと、受信処理に成功した前記パリティブロックとに基づいて、前記一のデータブロックを復元する制御部と、
    を有することを特徴とする受信装置。
  2. 前記送信装置から複数の送信データが送信され、前記複数の送信データのうち同一の送信データを前記一定サイズに分割して得られたデータブロックのそれぞれと当該データブロックに基づいて生成されたパリティブロックとに対して、同一に属することを示すグループ識別情報が付加され、
    前記制御部は、前記送信装置から前記受信部が受信した受信データブロックおよび受信パリティブロックにそれぞれ付加された前記グループ識別情報に基づいて、前記受信データブロックおよび前記受信パリティブロックの中から一のグループに属するデータブロックおよびパリティブロックを判別し、前記送信装置から送信された前記一のグループに属するデータブロックのうち第1のデータブロックの受信処理に失敗した場合に、前記受信データブロックのうち前記一のグループに属する第2のデータブロックと前記受信パリティブロックのうち前記一のグループに属するパリティブロックとに基づいて前記第1のデータブロックを復元する、
    ことを特徴とする請求項1記載の受信装置。
  3. 前記送信装置から送信されたデータブロックおよびパリティブロックには、付加された前記グループ識別情報が示すグループに属するデータブロックの数を示すブロック数情報がさらに付加されるとともに、前記送信装置から送信されたデータブロックには、前記グループ識別情報が示すグループ内の通し番号を示すブロック番号情報がさらに付加され、
    前記制御部は、前記受信データブロックおよび前記受信パリティブロックにそれぞれ付加された前記グループ識別情報に基づいて、前記受信データブロックおよび前記受信パリティブロックの中から一のグループに属するデータブロックおよびパリティブロックを判別し、前記受信データブロックのうち前記一のグループに属するデータブロックに付加された前記ブロック数情報および前記ブロック番号情報に基づいて、前記一のグループに属するデータブロックのうち受信処理に失敗したデータブロックを判定する、
    ことを特徴とする請求項2記載の受信装置。
  4. 記憶部をさらに有し、
    前記送信装置から送信されるデータブロックおよびパリティブロックのそれぞれには、第1の値と第2の値のいずれかが設定されるグループ切り替え情報がさらに付加され、送信されるデータブロックおよびパリティブロックが属するグループが切り替わるたびに、前記グループ切り替え情報に設定される値が前記第1の値と前記第2の値のうちの一方から他方へ切り替えられ、
    前記受信部は、前記送信装置から受信したデータブロックおよびパリティブロックを、それぞれに付加された前記グループ識別情報および前記グループ切り替え情報とともに前記記憶部に一時的に格納し、
    前記制御部は、前記記憶部に格納されたデータブロックおよびパリティブロックのうち、付加された前記グループ識別情報および前記グループ切り替え情報の両方が互いに同一であるデータブロックおよびパリティブロックを、同一のグループに属するデータブロックおよびパリティブロックと判別する、
    ことを特徴とする請求項3記載の受信装置。
  5. 受信装置へ送信する複数の送信データを一時的に記憶する記憶部と、
    前記記憶部に記憶された前記複数の送信データのそれぞれを一定サイズに分割して複数のデータブロックを生成するとともに、前記複数のデータブロックのうち同一の送信データに対応するデータブロックに基づいてパリティブロックを生成し、前記複数のデータブロックおよびパリティブロックのうち、同一の送信データに対応するデータブロックおよびパリティブロックに対して、同一のグループに属することを示すグループ識別情報を付加して前記受信装置へ送信する制御部と、
    を有することを特徴とする送信装置。
  6. 前記制御部は、同一の送信データに基づいて生成したデータブロックのそれぞれと当該データブロックに基づいて生成したパリティブロックとに対して同一のグループに属するデータブロックの数を示すブロック数情報をさらに付加するとともに、同一のグループに属するデータブロックのそれぞれに対してグループ内の通し番号を示すブロック番号情報をさらに付加して送信することを特徴とする請求項5記載の送信装置。
  7. 前記制御部は、前記受信装置へ送信するデータブロックおよびパリティブロックのそれぞれに対して、第1の値と第2の値のいずれかが設定されるグループ切り替え情報をさらに付加し、送信されるデータブロックおよびパリティブロックが切り替わるたびに、前記グループ切り替え情報に設定する値を前記第1の値と前記第2の値のうちの一方から他方へ切り替えることを特徴とする請求項5または6記載の送信装置。
  8. 送信データを一定サイズに分割して得られた複数のデータブロックと、前記複数のデータブロックに基づいて生成されたパリティブロックとを送信する送信装置と、
    前記複数のデータブロックのうち一のデータブロックの受信処理に失敗した場合に、前記複数のデータブロックのうち受信処理に成功した他のデータブロックと、受信処理に成功した前記パリティブロックとに基づいて、前記一のデータブロックを復元する受信装置と、
    を有することを特徴とするデータ転送システム。
JP2014186448A 2014-09-12 2014-09-12 受信装置、送信装置およびデータ転送システム Withdrawn JP2016059012A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014186448A JP2016059012A (ja) 2014-09-12 2014-09-12 受信装置、送信装置およびデータ転送システム
US14/826,570 US20160080111A1 (en) 2014-09-12 2015-08-14 Receiver, transmitter and data transmission system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014186448A JP2016059012A (ja) 2014-09-12 2014-09-12 受信装置、送信装置およびデータ転送システム

Publications (1)

Publication Number Publication Date
JP2016059012A true JP2016059012A (ja) 2016-04-21

Family

ID=55455878

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014186448A Withdrawn JP2016059012A (ja) 2014-09-12 2014-09-12 受信装置、送信装置およびデータ転送システム

Country Status (2)

Country Link
US (1) US20160080111A1 (ja)
JP (1) JP2016059012A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327239A (zh) * 2020-09-27 2022-04-12 伊姆西Ip控股有限责任公司 存储和访问数据的方法、电子设备和计算机程序产品
CN115878548A (zh) * 2021-09-27 2023-03-31 超威半导体(上海)有限公司 用于相机使能装置的低延迟增强现实架构
CN116366206B (zh) * 2023-06-01 2023-08-25 三未信安科技股份有限公司 一种增强密码卡可靠性的方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070091860A1 (en) * 2005-10-26 2007-04-26 Lery Scott A Wireless remote control device and method
US20070113162A1 (en) * 2005-10-26 2007-05-17 Lery Scott A Error code for wireless remote control device and method
JP2008065546A (ja) * 2006-09-06 2008-03-21 Sony Computer Entertainment Inc データ転送システム、データ転送装置、ファイル形式変換装置、およびデータ転送方法
JP2012015752A (ja) * 2010-06-30 2012-01-19 Fujitsu Ltd 伝送装置、伝送プログラム及び伝送方法
WO2013081414A1 (en) * 2011-11-30 2013-06-06 Samsung Electronics Co., Ltd. Apparatus and method of transmiting/receiving broadcast data

Also Published As

Publication number Publication date
US20160080111A1 (en) 2016-03-17

Similar Documents

Publication Publication Date Title
US8255562B2 (en) Adaptive data throttling for storage controllers
US9734028B2 (en) Reverse resynchronization by a secondary data source when a data destination has more recent data
US7725805B2 (en) Method and information apparatus for improving data reliability
JP2008046986A (ja) ストレージシステム
JP2007300619A (ja) 異なるデータ保護方法間で切換えにおいてデータの完全性を維持する方法、装置及びプログラム
WO2013084571A1 (ja) 情報機器間のデータ転送のデータ欠落を検出する方法
KR101983208B1 (ko) 데이터 관리 방법, 노드, 그리고 데이터베이스 클러스터를 위한 시스템
US20190158126A1 (en) Use of multiple cyclic redundancy codes for optimized fail isolation
US20190179719A1 (en) Generating a health condition message on a health condition detected at a server to send to a host system accessing the server
CN104750428A (zh) 块储存存取和网关模块、储存系统和方法与内容递送装置
US7890715B2 (en) Suspension of an asynchronous remote copy pair system having a primary controller and a remote controller
US9891992B2 (en) Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media
US10430264B2 (en) Monitoring correctable errors on a bus interface to determine whether to redirect input/output (I/O) traffic from a first processing unit to a second processing unit
JP2016059012A (ja) 受信装置、送信装置およびデータ転送システム
US7996712B2 (en) Data transfer controller, data consistency determination method and storage controller
US20180349237A1 (en) Monitoring correctable errors on a bus interface to determine whether to redirect input/output request (i/o) traffic to another bus interface
US9146685B2 (en) Marking local regions and providing a snapshot thereof for asynchronous mirroring
JPWO2009050761A1 (ja) ストレージシステム、ストレージ制御装置、ストレージシステムの制御方法及びそのプログラム
JP4394533B2 (ja) ディスクアレイシステム
JP2020021313A (ja) データ処理装置および診断方法
JP5381109B2 (ja) 通信装置及びその制御プログラム
US10014983B2 (en) System, receiving device, and method
KR101511841B1 (ko) 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법
KR20170108739A (ko) DIX (Data Integrity Extension )모드의 NVMe(Non-Volatile Memory Express) 인터페이스에서 데이터를 전송하기 위한 방법 및 시스템
JP5145860B2 (ja) メモリ二重化システム及び情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170605

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20171127