JP2012085244A - シリアル伝送装置、情報処理装置、及びシリアル伝送方法 - Google Patents

シリアル伝送装置、情報処理装置、及びシリアル伝送方法 Download PDF

Info

Publication number
JP2012085244A
JP2012085244A JP2010232105A JP2010232105A JP2012085244A JP 2012085244 A JP2012085244 A JP 2012085244A JP 2010232105 A JP2010232105 A JP 2010232105A JP 2010232105 A JP2010232105 A JP 2010232105A JP 2012085244 A JP2012085244 A JP 2012085244A
Authority
JP
Japan
Prior art keywords
transmission
data
tlp
communication line
unit
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.)
Ceased
Application number
JP2010232105A
Other languages
English (en)
Inventor
Shogo Ogami
省吾 大神
Kenji Shirase
健二 白瀬
Tatsuhiko Negishi
達彦 根岸
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 JP2010232105A priority Critical patent/JP2012085244A/ja
Priority to US13/270,292 priority patent/US8880972B2/en
Priority to EP20110184786 priority patent/EP2442502A1/en
Publication of JP2012085244A publication Critical patent/JP2012085244A/ja
Ceased 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/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0093Point-to-multipoint

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Dc Digital Transmission (AREA)

Abstract

【課題】
シリアル通信回線の障害が発生した場合に、物理レイヤにおける回線復帰処理後のタイムアウト検出をさせない時点で、データの送信を早期に完了させることを課題とする。
【解決手段】
上記課題を解決するシリアル伝送装置は、タイムアウト検出部42がタイムアウトを検出した場合に加えて、リカバリー状態検出部47が通信回線の回線復帰処理中である状態を検出した場合に、再送信要求部43に送信データバッファ48に格納されている送信済みデータの再送信を指示する。
【選択図】図2

Description

本発明は、シリアル通信回線を介してデータを送受信するシリアル伝送装置、情報処理装置、及びシリアル伝送方法に関するものである。
図10は、シリアル伝送を行う一般的なシリアル伝送装置のシステム構成例及びレイヤ構造の例を示した図である。図10において、装置110と装置210は、互いにシリアル通信回線310で接続され、シリアル通信回線310を介してデータの送受信を行う。
シリアル伝送を行う方式には、3つのレイヤ構造を持つものがある。図10の例では、装置110と装置210の各々は、物理レイヤ、リンクレイヤ、上位レイヤの各レイヤを有する。ここで、物理レイヤは、シリアル通信回線310を介した通信パケットの送受信の制御を行う。リンクレイヤは、シリアル通信回線310を介したデータの送受信を論理的に制御する。上位レイヤは通信パケットの生成やソフトウェアに対して通信データの受け渡しを行う。3つのレイヤ構造を持つ転送方式の具体例の一つとして、例えば、PCI Expressによるデータ転送方式では、物理レイヤ(PL)、データリンクレイヤ(DLL)、トランザクションレイヤ(TL)を有する。
物理レイヤは、リンクレイヤとシリアル通信回線との間のデータ転送を行うほか、シリアル通信回線の接続を確立するための制御も行う。シリアル通信回線の制御としては、シリアル通信回線上で障害が発生した場合の回線復帰処理も含まれる。
リンクレイヤは、対向する装置間のデータ伝送を保証するための制御を行う。リンクレイヤは、上位レイヤからトランザクションレイヤパケット(TLP)を受け取り、受け取ったTLPにシーケンス番号(SEQ)を付加する。シーケンス番号が付加されたTLPデータは、物理レイヤを介して、対向する装置に送信される。
リンクレイヤは、データ送信機能として、TLPの伝送を行う機能の他に、正常/異常通知により送信完了を判断する機能、タイムアウトを検出する機能、データの再送信機能を有する。また、リンクレイヤは、データ受信機能として、データを受信する機能の他に、受信したデータが正常化異常かを判断し、判断結果を正常/異常通知として対向装置へ送信する機能を有する。各装置はデータの送信側にも受信側にもなり得るため、各装置ごとのリンクレイヤが、これらのデータ送信機能とデータ受信機能の両方の機能を持つ。これらのリンクレイヤのデータ送信機能及びデータ受信機能により、データ伝送がより確実に行われる。このリンクレイヤのデータ送信機能およびデータ受信機能の内容について、以下、具体的に説明する。
リンクレイヤが生成する正常/異常通知は、伝送路(リンク)を管理するためのデータリンクレイヤパケット(DLLP)を用いて対向装置に送信される。正常通知、すなわち、1つ又は複数のTLPを正常に受信したことを通知する肯定応答として、ACK DLLPが使用される。異常通知、すなわち、TLPの再送を要求するための否定応答として、NAK DLLPが使用される。
受信側装置は受信したTLPが正常かどうかを判定し、判定結果をACK/NAK DLLPにより送信側装置に通知する。受信側装置がTLPを正常に受信した場合、ACK DLLPに、受信側装置が最後に正常受信したTLPのシーケンス番号を付加して送信側装置に送信する。
送信側装置では、物理レイヤを介して送信されたTLPは、受信側装置からのACK/NAK DLLPによる送達確認がされるまでは、リトライバッファあるいは送信バッファ等に保存される。リトライバッファに保存されたTLPは、受信側装置でTLPを正常受信できなかった場合のTLPの再送信に使用される。
受信側装置からACK DLLPが届いた場合、送信側装置ではリトライバッファに保存してあるTLPのうち、ACK DLLPにより送達が確認されたTLPが廃棄される。具体的には、ACK DLLPで通知されたシーケンス番号及びそれ以前のシーケンス番号を持つTLPが廃棄される。受信側装置からNAK DLLPが届いた場合、送信側装置では送達確認されたTLPがリトライバッファから廃棄されるとともに、送達確認されなかったTLP、つまりリトライバッファに残っているTLPが再度送信される。送信済みのTLPがリトライバッファから廃棄されると、廃棄されたTLPに相当する分だけリトライバッファのバッファ領域が開放される。
送信側装置では、TLP送信後、送信先の装置から一定時間内に送達確認が返送されなかった場合、リトライバッファに保存されている送達確認されていないTLPを一番古いものから順に全て再送信する。
送信側装置において、複数回TLPの再送信が行われても送信先の装置から送達確認が送付されてこない場合には、リンクが正常に動作していないものとみなされる。この場合、送信側装置のリンクレイヤは、物理レイヤにリンクの再トレーニング処理を指示する。再トレーニング指示を受けた物理レイヤは、リンク状態を管理しているステートマシンをリカバリステートに遷移させ、リンクを正常復帰させるための回線復帰処理を行う。
受信側装置では、物理レイヤがエラーを検出した場合や、CRC(Cyclic Redundancy Check)エラーが検出された場合に、NAK DLLPを送信する。受信したTLPのシーケンス番号が次に受信すべきシーケンス番号に一致するか、または次に受信すべきシーケンス番号よりも小さい番号の場合、受信側装置は、ACK DLLPを送信する。受信したTLPのシーケンス番号が次に受信すべきシーケンス番号よりも小さい場合、受信したTLPは、重複受信したTLPであるとして廃棄される。受信したTLPのシーケンス番号が次に受信すべきシーケンス番号以下の番号ではない場合、受信側装置は、NAK DLLPを送信する。
上述のような送信側装置と受信側装置におけるDLLP応答処理やTLPの再送処理等によって、より確実なデータ送信が行われる。以下、図11〜13を用いて具体的に説明する。
図11は、データ送信が正常に行われた場合の処理フローの例を示した図である。図11において、上位レイヤは「TL」で、リンクレイヤは「DLL」で、物理レイヤは「PL」で示されている(以下、同様)。図11は、送信側の装置Aと受信側の装置Bの各TL,DLL,PLを示すとともに、横軸に時間軸を設けて、データ伝送と応答がどのように行われていくかを示した図である。
図11において、装置Aは、時刻T1にTLでデータ(TLP)を生成し、生成したTLPにシーケンス番号(SEQ)「10」をDLLで付加し、PLを介して装置Bへ送信する。装置Bは、時刻T2に装置Aから送信されたTLPを正常に受信し、受信結果が正常であることを示すACK DLLP応答をシーケンス番号「10」と共に装置Aへ送信する。装置Aは、時刻T3に装置BからのACK DLLP応答を受信することにより、シーケンス番号「10」のデータ送信処理が正常に行われたことを知る。その後、装置Aは、時刻T4に次の送信TLPにシーケンス番号「11」を付加して装置Bへ送信する。同様の手順により、時刻T6に装置BからのACK DLLP応答を装置Aが受信し、シーケンス番号「11」のデータ送信処理が完了する。

図12は、データ送信で異常が発生した場合の処理フローの例を示した図である。装置Aは、時刻T1に送信TLPにシーケンス番号「10」を付加して装置Bへ送信する。しかし、伝送路上の何らかの理由によってCRCエラーが発生したような場合には、時刻T2において装置Bが装置Aから送付されたデータを正常に受信できないことがあり得る。この場合、装置BはTLPを正常に受信できなかったことを示すNAK DLLP応答を装置Aへ送信する。NAK DLLP応答には、装置Bが最後に正常受信したTLPのシーケンス番号「9」が付加される。
装置Aは、時刻T3においてNAK DLLP応答を受信し、シーケンス番号「10」のTLP送信が正常に行われなかったことを知り、リトライバッファに格納されているTLPを時刻T4に再送信する。時刻T4に再送信されたTLPは、時刻T5に装置Bに正常に受信され、装置Bから装置Aに対してACK DLLP応答が送信される。その後、時刻T6に装置BからのACK DLLP応答を装置Aが受信し、シーケンス番号「10」のデータ送信処理が完了する。

図13は、データ送信でタイムアウトが発生した場合の処理フローの例を示した図である。装置Aは、時刻T1に送信TLPにシーケンス番号「10」を付加して装置Bへ送信する。装置Bは、時刻T2に装置AからのTLPを正常受信し、時刻T3に装置Aに対してACK DLLP応答を送信する。しかし、装置Bから送信されたACK DLLP応答がリンク経路上において何らかの理由により消失してしまう場合があり得る。この場合、装置Aでは、タイマカウンタ等により一定時間が経過したことを知ると、タイムアウト(T.O.)が発生する(時刻T4)。
装置Aにおいてタイムアウトが発生した場合、すなわち、装置Bから一定期間内に送達確認が送付されてこない場合、装置Aは、リトライバッファに保存されているTLPを再送信する(時刻T5)。時刻T5に再送信されたTLPは、時刻T6に装置Bに正常に受信され、装置Bから装置Aに対してACK DLLP応答が送信される。その後、時刻T7に装置BからのACK DLLP応答を装置Aが受信し、シーケンス番号「10」のデータ送信処理が完了する。
特開平02−285752号公報
シリアル通信回線の障害発生時に、通信回線の回線復帰処理により、送信側装置のリンクレイヤから送信したTLPが喪失することがある。このような場合、送信側装置のリンクレイヤがタイムアウトを検出することによりデータの送信を完了するので、回線復帰処理後のデータ送信完了にタイムアウト期間以上の時間を要していた。以下、リンクレイヤのタイムアウトを「RTO」と略記する。
物理レイヤは、通信回線で障害が発生した場合、回線復帰処理を行う。回線復帰処理を行っている間、物理レイヤはリンクレイヤからのデータ送信を停止させる。ここで、リンクレイヤは物理レイヤから独立しているため、物理レイヤが回線復帰処理を行う前にリンクレイヤから物理レイヤに対してデータの送信が行われることがある。このような場合、物理レイヤの回線復帰処理中にリンクレイヤから転送されたデータは物理レイヤで破棄される。
このように、物理レイヤでの回線復帰処理のタイミングとリンクレイヤからのデータ送信タイミングとが競合する場合には、リンクレイヤから送信されたデータが喪失することがある。リンクレイヤから送信されたデータが喪失した場合には、リンクレイヤのタイムアウト検出により、タイムアウト時間経過後にデータが再送信されることになる。

図14は、送信TLPが喪失した場合の処理フローの例を示した図である。図14の例では、装置Aから時刻T1にシーケンス番号「10」が付加されたTLPが物理レイヤに送信される。その際、時刻T1の直後の時刻T2において、物理レイヤが通信回線の回線復帰処理を開始している。物理レイヤの回線復帰処理では、装置Aの物理レイヤと装置Bの物理レイヤとがそれぞれ回線復帰処理を行うためのトレーニングシーケンス・パケット(TSパケット)の送受信を行う。TSパケットは、物理レイヤどうしの通信を行うための物理レイヤパケット(PLP:Physical Layer Packet)により送受信される。
図14では、装置Aのリンクレイヤから送信されたTLPは、物理レイヤが回線復帰処理中であるために、物理レイヤにおいて破棄されてしまう。そのため、装置Aのリンクレイヤでタイムアウト(RTO)が発生する(時刻T4)。タイムアウト(RTO)が発生すると、装置Aのリンクレイヤはシーケンス番号「10」のTLPがうまく送信できなかったことを知り、時刻T5にリトライバッファに格納されているTLPデータを再送信する。再送信されたTLPは、時刻T6に装置Bに受信され、装置BからのACK DLLP応答が時刻T7で装置Aに受信されて、シーケンス番号「10」の送信処理が完了する。
図14の例において、物理レイヤが回線復帰処理を行っている時刻T2から時刻T3までの間は、通信回線が使用できないため、TLPの再送信を待たせる必要がある。しかし、時刻T3から時刻T4までのタイムアウト検出までの期間については、TLPの再送信を待たせる必要はないので、この期間、TLPの再送信を待たせるのは余分な時間を使ってしまうことになる。

図15は、正常/異常通知(DLLP)が喪失した場合の処理フローの例を示した図である。図15の例では、時刻T1に装置Bから装置Aに対してTLPが送信され、時刻T2に装置AがTLPを正常受信した後、装置Aのリンクレイヤは、ACK DLLPを装置Bに対して送信する。しかし、時刻T2の直後の時刻T3において、物理レイヤが通信回線の回線復帰処理を開始しており、装置Aのリンクレイヤが送信したACK DLLPは装置Aの物理レイヤにおいて破棄されてしまう。この場合、装置Bのリンクレイヤは、装置Aからの送達確認の応答を受信できないため、時刻T5にタイムアウト(RTO)が発生する。
時刻T5のタイムアウトを検出した装置Bは、TLPを正常に送信できなかったと判断して、リトライバッファに格納されているTLPデータを再送信する。この場合、装置Aではシーケンス番号「10」のTLPを既に受信しているので、時刻T6に受信したTLPを破棄するとともに、装置Bに対して再度、シーケンス番号「10」のACK DLLPを送信する。
図15の例においても、物理レイヤの回線復帰処理を行うための時刻T3から時刻T4までの間は、通信回線が使用できないため、TLPの再送信を待たせる必要がある。しかし、時刻T4から時刻T5までのタイムアウト検出までの期間については、TLPの再送信を待たせる必要はないので、この期間、TLPの再送信を待たせるのは余分な時間を使ってしまうことになる。
図14、図15の例で説明したように、従来、リンクレイヤが送信したデータを物理レイヤが回線復帰処理期間中に破棄した場合には、リンクレイヤが送信データの喪失を知る手段はタイムアウト(RTO)の検出しかなかった。すなわち、リンクレイヤが送信したデータが喪失した場合、データ送信の完了は、原理的にタイムアウト(RTO)時間以下にはできないという問題があった。そのため、本発明では、通信回線の障害が発生した場合に、物理レイヤにおける回線復帰処理後のタイムアウト検出をさせない時点で、データの送信を早期に完了させることを課題とする。
本実施例におけるシリアル通信回線を介してデータの送信及び受信を行うシリアル伝送装置は、前記シリアル通信回線を介して送信されてきたデータを受信するデータ受信部と、送信データバッファに保持された送信データを送信する送信部と、送信データに対する応答が所定の期間内に来なかった場合にタイムアウトを検出するタイムアウト検出部と、前記シリアル通信回線の回線復帰処理中であることを示すリカバリー状態を検出するリカバリー状態検出部と、前記シリアル通信回線を介してデータの送信を行う際に、前記タイムアウト検出部でタイムアウトを検出した場合、又は、前記リカバリー状態検出回路でシリアル通信回線のリカバリー状態を検出した場合に、前記送信データバッファに格納されている送信済みデータの再送信を前記送信部に要求する再送要求部と、を有する。
通信回線の障害が発生した場合に、物理レイヤにおける回線復帰処理後のタイムアウト検出を待たないで、データの送信を早期に完了させることが可能となる。また、余分なタイムアウトの検出を防止することが可能となる。
図1は、実施例を適用したサーバ装置の(概略)構成図を示す。 図2は、実施例に係るシリアル伝送装置のデータリンクレイヤ及び物理レイヤのブロック図を示す。 図3は、実施例に係るTLP再送信処理に関連する回路を説明する図である。 図4は、実施例に係るDLLP再送信処理に関連する回路を説明する図である。 図5は、データ送信の制御フローを示すフローチャートである。 図6は、データ受信の制御フローを示すフローチャートである。 図7は、実施例に係る送信データ(TLP)が喪失したときの処理フローを示す。 図8は、実施例に係る正常/異常通知(DLLP)が喪失したときの処理フローを示す。 図9は、データリンクレイヤ(DLL)と物理レイヤ(PL)を別チップとした場合のシリアル伝送装置のブロック図を示す。 図10は、一般的なシリアル伝送方式におけるシステム構成及びレイヤ構造を示す。 図11は、データ送信が正常に行われた場合のフローを示す。 図12は、データ送信で異常が発生した場合のフローを示す。 図13は、データ送信でタイムアウトが発生した場合のフローを示す。 図15は、送信データ(TLP)が喪失した場合のフローを示す。 図16は、正常/異常通知(DLLP)が喪失した場合のフローを示す。
以下、本発明を実施するための形態について詳細に説明する。
図1は、実施例を適用したサーバ装置の構成例を示した図である。図1に示すサーバ装置100は、プロセッサ10とメモリ12とを有する。また、サーバ装置100は、外部I/Oデバイス200との通信を行うためのシリアル・インタフェース20も有する。プロセッサ10、メモリ12、シリアル・インタフェース20の各々は、バス14を介して相互に接続される。図1において、サーバ装置を構成する他の要素は、説明の便宜上記載を省略する。
図1のサーバ装置の構成例において、サーバ装置100と外部I/Oデバイス200との通信には、PCI Expressインタフェースが使用されるものとする。シリアル・インタフェース20と外部I/Oデバイス200のそれぞれにおいて、PCI Expressインタフェースを構成する3階層のレイヤ(TL、DLL、PL)と、その上位に位置するソフトウェアレイヤとを有する。シリアル・インタフェース20でのソフトウェアレイヤは、サーバ装置100のサーバシステムの制御を行うレイヤ(Server System core)の機能を司る。外部I/Oデバイスでのソフトウェアレイヤは、PCI Expressインタフェース300を介したデータ送受信の制御を行うデバイスドライバ・ソフトウェア(PCI Express Device core)の機能を司る。
各トランザクションレイヤ(TL)は、上位のソフトウェアレイヤに対してPCI Expressプロトコルに従ったデータ送受信の機能と提供するとともに、対向装置とのデータの送受信を行うためのトランザクションレイヤパケット(TLP)の生成等を行う。
データリンクレイヤ(DLL)は、対向する装置間のデータ伝送を保証するための制御を行う。物理レイヤ(PL)は、対向する装置間の通信回線(リンク)の接続を確立する制御や、通信回線を介したデータの送受信、及び、通信回線上で障害が発生した場合の回線復帰処理等を行う。データリンクレイヤ(DLL)及び物理レイヤ(PL)の詳細については、図2を用いて後述する。

図2は、実施例に係るシリアル伝送装置のデータリンクレイヤ及び物理レイヤのブロック図を示す。図2は、シリアル・インタフェース20の構成要素のうち、特に実施例に関連するデータリンクレイヤ(DLL部)40と物理レイヤ(PL部)60に着目して説明する図である。
データリンクレイヤ(DLL)の機能を司るDLL部40は、トランザクションレイヤ(TL部)30から転送されてくるTLPの整形処理を行う。具体的には、DLL部40は、TL部30から転送されてくるTLPにシーケンス番号(SEQ)やCRC情報を付加してPL部60に渡したり、TLP送信が正常に終了しなかった場合のTLP再送信処理等を行う。また、DLL部40は、対向装置から受信TLPに含まれるシーケンス番号やCRC情報等に基づいて受信結果の確認処理を行い、確認結果をデータリンクレイヤパケット(DLLP)を用いて対向装置に返信する処理を行う。
DLL部40は送信するデータ(パケット)を選択し、物理レイヤ(PL部60)に転送する。その際、DLL部40は通信回線の状態(リンク状態)に応じて、PL部60へのデータ送信を制御する。DLL部40は、一旦データ送信を開始すると、パケットデータが終了するまでデータを送信する。
さらに、DLL部40は、通信回線のリカバリー状態の検出、すなわち、PL部60が通信回線の回線復帰処理を行っている状態の検出を行う。TLP又はDLLPデータを送信中にリカバリー状態を検出すると、DLL部40は、送信中のTLP又はDLLPが装置間の通信回線上で喪失したものとみなして、TLP又はDLLPの再送信を予約する。そして、PL部60からの通信回線のリンク状態を通知する「LINK状態」の信号を介して通信回線がリカバリー状態、すなわち回線復帰処理を行っている状態から復帰したことを認識すると、再送信すべきTLP又はDLLPをPL部60に再送信する。
DLL部40が通信回線のリカバリー状態を検出して、TLP又はDLLPを再送信する機構を設けることで、DLL部40がTLP又はDLLPの再送信の必要性を早期に認識することができる。その結果、PL部60における回線復帰処理後のタイムアウト検出を待たずに、データの送信を早期に完了させることが可能となる。また、余分なタイムアウトの検出も防止することが可能となる。以下、図2のDLL部40の各構成部について詳細に説明する。
受信データ処理部41は、データ受信側のデータリンクレイヤとして機能する場合、PL部60を介して受信したTLPデータに基づいて、TL部30へ出力するTLPデータを生成する。その際、受信TLPに含まれるCRC情報に基づいて、データを正しく受信できたか否かを判定する。TLPデータを正常に受信できた場合には、受信データ処理部41は後述の正常通知送信部45にACK DLLP応答を送信するように指示するとともに、SEQ番号保持・更新部44に次に受信するTLPの受信SEQ番号の更新を指示する。
一方、CRCエラー等によりTLPデータを正常に受信できなかった場合、受信データ処理部41は異常通知送信部46にNAK DLLP応答を送信するように指示する。合わせて、受信データ処理部41は、受信SEQ番号を更新しないようSEQ番号保持・更新部44に指示する。この場合、受信データ処理部41がSEQ番号保持・更新部44に何も指示しないようにして、受信SEQ番号が更新されないようにしてもよい。
受信データ部41は、データ送信側のデータリンクレイヤとして機能する場合、PL部60を介して受信したDLLPに基づいて、送信先装置に送信したTLPが正しく送達されたか否かを判定する。ACK DLLPを受信した場合、受信データ部41は、SEQ番号保持・更新部44に対して、送信SEQ番号の更新を指示する。また、受信したACK DLLPに対応する送信済みのTLPデータは不要となるため、受信データ処理部41は、送信データバッファ48へ、不要となったTLPデータの廃棄を指示する(不図示)。
一方、受信データ部41がNAK DLLPを受信した場合、送信TLPが送信先の装置で正常に受信されていないため、NAK DLLPに基づくTLPの再送信の指示が再送信要求部43に入力される。この再送信要求部43へのTLPの再送信の指示は、図2に示すように、受信したDLLPを特定の回路(不図示)で直接デコードして再送信要求部43に指示を行ってもよいし、同様の処理を受信データ処理部41から行ってもよい。NAK DLLPを受信した場合には、受信SEQ番号の更新及び送信済みTLPデータの廃棄は行われない。
タイムアウト検出部42は、送信TLPに対するDLLP応答が一定期間内に送信先装置から返送されて来ない場合のタイムアウトを検出する。具体的には、タイムアウト検出部42は、TLPを送信してから送信したTLPに対応するDLLP応答が送信先装置から返送されるまでの期間を計時するタイマカウンタ等を有する。タイムアウト検出部42のタイマカウンタは、TLP送信によりカウントを開始し、DLLP受信によりカウンタを停止又はリセットできればよい。
リカバリー状態検出部47は、PL部60からの通信回線のリンク状態を示す情報である「LINK状態」の信号に基づいて、通信回線のリカバリー状態、すなわち通信回線の回線復帰処理が行なわれている状態にあるか否かを検出する。通信回線のリカバリー状態が検出された場合、リカバリー状態検出部は、後述の再送信要求部43、異常通知送信部46のそれぞれに対して、通信回線のリカバリー状態が発生したことを通知する。
再送信要求部43は、TLPデータ再送要求が発生した場合に、送信バッファ48に格納されている送信済みのTLPを送信先装置に再送信させる指示を行う。TLPデータ再送要求としては、まず、タイムアウト検出部42によりタイムアウトが検出された場合のTLP再送要求がある。また、NAK DLLP応答を受信した場合、すなわち、送信先装置でTLPを正常受信できなかった場合のTLP再送要求がある。さらに、リカバリー状態検出部47で通信回線のリカバリー状態を検出した場合にも、通信回線の回線復帰処理中にTLP送信データが消失している可能性があるため、TLP再送要求を発生させる。再送信要求部43の詳細については、図3を用いて後述する。
SEQ番号保持・更新部44は、送信TLPに付加する送信シーケンス番号やDLLPに付加する受信シーケンス番号を保持すると共に、TLPやDLLPの受信結果に基づいて、保持しているシーケンス番号の更新を行う。
正常通知送信部45は、受信データ処理部41で送信元装置からのTLPを正常に受信できた場合に、ACK DLLPを生成して送信元装置に送信する。異常通知送信部46は、受信データ処理部41で送信元装置からのTLPを正常に受信できなかった場合に、NAK DLLPを生成して送信元装置に送信する。リカバリー状態検出部47で通信回線のリカバリー状態を検出した場合、通信回線の回線復帰処理中にACK/NAK DLLPデータが消失している可能性がある。従って、リカバリー状態検出部47は異常通知送信部46にNAK DLLPを再送信させる。正常通知送信部45及び異常通知送信部46の詳細については、図4を用いて後述する。
送信データバッファ48は、TL部30から送られてくる送信TLPを格納すると共に、TLP送信後のリトライバッファとしても機能するバッファである。再送信要求部43からの再送信要求があった場合には、送信データバッファ48は、格納している送信済みTLPを再送信する。送信済みのTLPに対する送信先装置からのACK DLLPを受信データ処理部41が受信した場合、ACK DLLPで通知されたシーケンス番号以前のシーケンス番号に対応するTLPデータが送信データバッファ48から廃棄される。ここでいうTLPデータの廃棄は、該当するTLPデータが格納されていたバッファ領域を開放することをいう。従って、その制御方法としては、該当するバッファ領域に対するバリッド信号がある場合には、該当するバリッド信号をディスエーブルにするように制御すればよい。また、単に該当するバッファ領域を上書き可能な領域として取り扱うようにしてもよく、その他の適切な方法により不要となったTLPデータを廃棄する処理を行えばよい。
TLP整形部49は、送信データバッファ48からの送信TLPに、SEQ番号保持・更新部44で保持している送信シーケンス番号を付加する。そして、TLP整形部49は、送信シーケンス番号を付加した送信TLPに対して、データチェックを行うためのCRC情報を生成して付加する。
送信バスアービタ50は、TLP整形部49からの送信TLPの送信要求と、正常通知送信部45からのACK DLLPの送信要求と、異常通知送信部46からのNAK DLLPの送信要求とを調停してPL部60へ送信する処理を行う。その際、PL部60から通知される通信回線の状態(LINK状態)が送信可能な状態であれば、送信バスアービタ50はパケット送信を開始する。PL部60から通知されるLINK状態の信号が送信不可能な状態を示す場合、通信回線が送信可能な状態となるまで、データの送信を保留する。例えば、通信回線がリカバリー状態にある場合には、データ送信できないため、送信バスアービタ50は通信回線が復帰するまでデータの送信を保留する。
PL部60は、データリンクレイヤから受け取った送信TLP/DLLPをシリアル信号に変換して、シリアル通信回線に送信する。また、PL部60は、通信回線を介して受信したシリアル信号をパラレル信号に変換して、受信TLP/DLLPとしてデータリンクレイヤに渡す。PL部60は、通信回線の状態を監視するとともに、通信回線の状態を「LINK状態」の情報として、信号線66を介してデータリンクレイヤに通知する。
図2において、送信側の通信回線はTxで、受信側の通信回線はRxで示される。Tx,Rxのそれぞれは、一対の差動信号対で構成され、これらの信号はPL部60で生成される。Tx及びRxの差動信号を介してシリアル信号の送受信が行われる。
PL部60は、シリアルデータ受信部61とシリアルデータ送信部62とマルチプレクサ63とPL制御部64とLINK状態レジスタ65とを有する。
シリアルデータ受信部61は、Rx回線を介して受信したシリアルデータをパラレルデータに変換し、受信データがTLP、DLLPであるか否か等を判別する。受信データがTLP、DLLPである場合、パラレルデータに変換された受信データをDLL部40に転送する。
受信データがトレーニングシーケンス・パケット(TSパケット)の場合、DLL部40には転送せずに、受信したTSパケット(受信TS)をPL制御部64に転送する。ここで、TSパケットとは、物理レイヤ自身で生成するLINK確立用に送信するパケットをいう。TSパケットは、装置の初期化時や通信回線のリカバリー状態における回線復帰処理時などの通信回線の制御を行う際に送信される。TSパケットを受信したPL制御部64は、送信TSパケット(送信TS)を生成して、マルチプレクサ63を介して対向装置へ送信する。
シリアルデータ送信部62は、マルチプレクサ63で選択されたDLL部40からのTLP/DLLPデータ又は送信TSパケットデータを、パラレル・シリアル変換し、Tx回線を介して送信先装置に送信する。
マルチプレクサ63は、LINK状態に基づいてTLP、DLLPを送信するかTSパケットを送信するかを選択する。LINK状態がデータの送受信が可能な通常状態を示す場合、マルチプレクサ63は、TLP、DLLPを選択して出力する。通信回線を介してシリアルデータの送受信ができない場合、例えばLINK状態が不安定な状態においては、マルチプレクサ63はTSパケットを選択して出力する。マルチプレクサ63がTSパケットを選択している場合には、DLL部40から転送される送信TLP、DLLPはPL部60で破棄される。
PL制御部64は、物理レイヤの制御ステートの管理を行い、シリアル通信回線の接続制御を行う。物理レイヤの制御ステートが前述のリカバリー状態になる条件としては、TLP送信で複数回タイムアウトが発生した場合、対向装置からTSパケットを受信した場合、プロセッサから直接制御された場合等がある。
LINK状態レジスタ65は、通信回線のLINK状態を表示するレジスタであり、PL制御部64によりリンク状態が設定される。LINK状態レジスタ65は、例えば4ビットのレジスタにより構成され、LINK状態レジスタ65に格納された情報は、プロセッサ10から所定のバス(不図示)を介してアクセスされる。また、LINK状態レジスタ65に格納された値は、図2に示す制御信号線66を介してDLL部40へ通知される。

図3は、実施例に係るDLL部40におけるTLP再送信処理に関連する回路を説明する図である。図3において、図2で示した処理ブロックについては同じ番号を付している。また、TLP再送信処理に関係しない回路は記載を省略している。
リカバリー状態検出部47は、物理レイヤの処理を行うPL部60から通知されるLINK状態通知信号から、通信回線がリカバリー状態にあるか否かを検出する。具体的には、PL部60からのLINK状態通知信号とリカバリー状態を示すコード値とを比較器47−1で比較する。比較器47−1が、LINK状態を検出した場合には、本実施例での比較器47−1は「1」を出力する。
タイムアウト検出部42は、タイムアウトを検出すると、本実施例でのタイムアウト信号(RTO)として「1」を出力する。また、受信データ処理部41は、NAK DLLPを受信すると、本実施例での異常通知信号(NAK)として「1」を出力する。
再送信要求部43は、タイムアウトの発生、対向装置からの異常通知(NAK DLLP)の受信、リカバリー状態の検出のいずれかの事象が発生した場合に、送信TLPバッファ48に格納されたTLPを再送信する。
再送信要求部43のORゲート43−1は、タイムアウト検出部42が出力したタイムアウト信号(RTO)、受信データ処理部41が出力した異常通知信号(NAK)、リカバリー状態検出部47が出力したリカバリー状態の検出結果信号を入力し、いずれかの入力信号が「1」になると、「1」を出力する。
ORゲート43−1出力が「1」であり、かつ、SEQ番号保持・更新部44からの、正常通知(ACK)待ちをしているTLPがあるか否かを示す信号が「1」である場合に、ANDゲート43−2は「1」を出力する。この時点で、TLP再送要求信号を生成するFF43−5出力が、TLP再送要求がないことを示す「0」になっているとすれば、ORゲート43−3の一方の入力は「0」のままである。従って、ANDゲート43−2の出力が「1」になると、ORゲート43−3の出力も「1」となる。
この時点で、ANDゲート43−4の一方の端子に反転して入力される後述の再送Flag信号の値が「0」であれば、ORゲート43−3出力が「1」になると、ANDゲート43−4の出力も「1」となる。その結果、次のクロックサイクルで、FF43−5出力が「1」にセットされる。FF43−5出力が1にセットされると、送信TLPバッファ48に対するTLP再送要求信号が「1」にセットされる。
送信TLPバッファ48は、TLP再送要求信号として1が入力されると、送信すべきTLPをTLP整形部49に再送信する。送信TLPバッファ48は、送信TLPバッファ48におけるTLP再送信処理の実行が開始されると、TLP再送信処理の実行中であることを示す再送Flag信号に「1」を設定する。TLP整形部49へのTLP再送処理が完了すると、送信TLPバッファ48は再送Flag信号を「0」に戻す。送信TLPバッファ48は、再送Flag信号を再送信要求部43に通知する。送信TLPバッファ48からの再送Flag信号が1に設定されると、AND43−4の出力は0となり、次のクロックエッジをトリガとして、FF43−5の出力が0となる。
送信TLPバッファ48からのTLPには、TLP整形部49で、送信シーケンス番号が付加される。送信シーケンス番号が付加されたTLPは、送信バスアービタ50へ渡され、物理レイヤへ送信される。

図4は、実施例に係るDLL部40におけるDLLP再送信処理に関連する回路を説明する図である。図4において、図2で示した処理ブロックについては同じ番号を付している。また、DLLP再送信処理に関係しない回路は記載を省略している。
図4において、正常通知送信部45は、受信データ処理部41による受信TLPのチェック結果が正常(OK)だった場合、TLP送信元に対して、ACK DLLP(ACK)を送信する。
具体的には、受信データ処理部41からの、TLP受信結果を示す信号が正常(OK)であったことを示す値1に設定されると、ORゲート45−1の片方の入力端子に1が入力される。この時点で、ACK DLLPの送信を制御するFF45−3の出力が、ACK送信要求がないことを示す「0」になっているとすれば、ORゲート45−1の他方の入力端子の値は「0」のままである。従って、TLP受信結果を示す信号が「1」に設定されると、ORゲート45−1の出力端子の値は「1」となる。
この時点で、ANDゲート45−2の一方の端子に反転して入力される後述のACK Flag信号が「0」であれば、ORゲート45−1出力が「1」になると、ANDゲート45−2の出力も「1」となる。その結果、次のクロックサイクルで、FF45−3出力が「1」にセットされる。
FF45−3出力が「1」になると、正常通知送信部45は、SEQ番号保持・更新部44から入力される受信SEQ番号を付加したACK DLLP(ACK)を生成し、送信バスアービタ50へ送信する。送信バスアービタ50は、ACK DLLPを受け付けると、ACK DLLPの送信要求があることを示すACK Flagを「1」にセットする。そして、実際にACK DLLPを物理レイヤに送信すると、送信バスアービタ50はACK Flagを「0」にもどす。ACK Flagが「1」にセットされた後、何らかの理由により送信バスアービタ50が物理レイヤへのACK DLLPの送信を待たされている間は、ACK Flagは「1」のままとなる。
ACK Flagは送信バスアービタ50から正常通知送信部45に通知され、ACK Flagが「1」になると、ANDゲート45−2の出力が「0」となり、FF45−3出力は「0」に戻される。ACK Flagが「1」の間は、ANDゲート45−2の出力は「0」のままとなり、ACK Flagが「0」になった後、受信データ処理部41からの次の入力が受け付けられる。
次に、異常通知送信部46の動作を説明する。異常通知送信部46は、受信データ処理部41による受信TLPのチェック結果が異常(NG)だった場合、又はリカバリー状態検出部47がリカバリー状態を検出した場合に、TLP送信元に対して、NAK DLLP(NAK)を送信する。
具体的には、リカバリー状態検出部47からのリカバリー状態を示す信号及び受信データ処理部41からのTLP受信結果が異常だった場合に値1となる信号のいずれかが「1」になると、異常通知送信部46のORゲート46−1の出力端子の値は「1」となる。この時点で、NAK DLLPの送信を制御するFF46−4の出力が、NAK送信要求がないことを示す「0」になっているとすれば、ORゲート46−2の一方の入力端子の値は「0」のままとなる。そのため、ORゲート46−1の出力が「1」になると、ORゲート46−2の出力も「1」となる。
この時点で、ANDゲート46−3の一方の端子に反転して入力される後述のNAK Flag信号が「0」であれば、ORゲート46−2出力が「1」になると、ANDゲート46−3の出力も「1」となる。その結果、次のクロックサイクルで、FF46−4出力が「1」にセットされる。
FF46−4出力が「1」になると、異常通知送信部46は、SEQ番号保持・更新部44から入力される受信SEQ番号を付加したNAK DLLP(NAK)を生成し、送信バスアービタ50へ送信する。送信バスアービタ50は、NAK DLLPを受け付けると、NAK DLLPの送信要求があることを示すNAK Flagを「1」にセットする。そして、実際にNAK DLLPを物理レイヤに送信すると、送信バスアービタ50はNAK Flagを「0」にもどす。NAK Flagが「1」にセットされた後、送信バスアービタ50が実際にNAK DLLPを送信するまでの間は、NAK Flagは「1」のままとなる。
NAK Flagは送信バスアービタ50から異常通知送信部46に通知され、NAK Flagが「1」になると、ANDゲート46−3の出力が「0」となり、FF46−4出力は「0」に戻される。NAK Flagが「1」の間は、ANDゲート46−3の出力は「0」のままとなり、NAK Flagが「0」になった後、受信データ処理部41又はリカバリー状態検出部47からの次の入力が受け付けられる。

図5は、データリンクレイヤのデータ送信機構に関する制御フローを示すフローチャートである。データ(TLP)の送信は、最終的に正常通知、すなわちACK DLLPを送信先装置から受信することにより完了する。TLP送信後に送信先装置が正常に送信TLPを受信できなかったと想定される場合には、送信済みのTLPを再送信する。TLPの再送信は、TLP送信後に、タイムアウトが発生するか否か、異常通知(NAK DLLP)を受信したか否か、リカバリー状態を検出したか否かにより判定する。
図5において、TL部30からDLL部40に新規に送信データ(TLP)送られてきた場合、DLL部40は、送信シーケンス番号を付加したTLPを送信先の装置へ送信する(S101)。具体的には、TL部30から送られてきたTLPは、まず送信データバッファ48に格納される。その後、TLPはTLP整形部49で送信シーケンス番号を付加され、送信バスアービタ50を介してPL部60へ渡され、シリアル通信回線へ送信される。
TLPが送信されると、正常通知(ACK DLLP)を送信先装置から受信するまで送信済みのTLPを送信データバッファ48に保存しておく。また、合わせて、DLL部40のタイムアウト検出部42が、一定時間内に送信先装置からACK DLLPが返送されてくるか否かについてタイマによる計測を開始する。その後、送信先の装置からACK DLLPが返送されて来るまで、以下の一連の処理を繰り返す。
S101でTLPを送信した後、まず、タイムアウト検出部42によりタイムアウトが検出されたか否かが判定される(S102)。タイムアウトが発生していなければ(S102 No)、次に異常通知(NAK DLLP)を受信したか否かを判定する(S103)。異常通知(NAK DLLP)を受信していなければ(S103 No)、次にリカバリー状態検出部47が通信回線のリカバリー状態を検出したか否かを判定する(S104)。リカバリー状態を検出していなければ(S104 No)、次に正常通知(ACK DLLP)を送信先装置から受信したか否かを判定する(S105)。
S105の判定において、まだ正常通知を送信先装置から受信していないと判定された場合(S105 No)、タイムアウト検出部42のタイマを更新する(S108)。ここで、タイムアウト検出部42のタイマが自動的に更新されるタイマであれば、S108のタイマ更新処理は飛ばして、再度S102の判定に戻る。このように、基本的には、S101でTLPを送信した後、一定時間内に正常通知を受信するまで、S102〜S105の処理を繰り返すことになる。
S102〜S105の処理を繰り返すなかで、タイムアウトの検出(S102 Yes)、異常通知の受信(S103 Yes)、リカバリー状態の検出(S104 Yes)のいずれかの事象が発生した場合、TLPが正常に送信できなかったことになる。従って、S107で再送信要求部43から送信データバッファ48に再送信要求が出され、送信データバッファ48に保存してあった送信済みのTLPが送信先装置に再送信される。なお、S107のTLP再送処理時に、例えば通信回線の回線復帰処理中の状態にある場合には、TLPの送信が待たされる。その後、通信回線が復帰した後、TLPが再送信され、S107の処理が完了する。S107においてTLPが再送された後、タイムアウト検出部42のタイマをリセットして、再度、S102〜S105の処理を繰り返す。
複数回連続してタイムアウトが検出され(S102 Yes)、データの再送(S107)が行われた場合には、通信回線が正常に動作していない可能性があるため、PL部60が回線復帰処理を行うのが望ましい(不図示)。また、PL部60が独自に通信回線の異常を検出した場合等においても、PL部60が通信回線の回線復帰処理を行う。通信回線の回線復帰処理が行われている場合には、S104でリカバリー状態検出部47がリカバリー状態を検出する(S104 Yes)。リカバリー状態検出部47で検出された結果は再送信要求部43へ通知され、前述と同様の処理によりTLPデータの再送信が行われる(S107)。そして、再送信したTLPに対応する正常通知を送信先装置から受信すると、TLPデータの送信が完了することになる。
S105において、送信先装置から正常通知(ACK DLLP)を受信したと判定された場合(S105 Yes)、送信TLPが送信先の装置に正常に受信されたことになる(S106)。従って、送信データバッファ48に保存している送信済みTLPデータは不要となるため、S106において、ACK DLLPに含まれるシーケンス番号以前のTLPデータを送信データバッファ48から廃棄し、TLP送信処理が完了する。
尚、図5のフローにおいて、S102、S103、S104の各処理は順番を入れ替えて行っても良い。また、S102〜S105の各処理は、DLL部40内部の動作クロックサイクル時間ごとに各処理を順次行うようにしてもよいし、シリアル通信回線のデータ転送クロックの整数倍のクロックを用いて処理してもよい。
上述のように、TLPを送信した後の正常通知の受信を待つ間に、リカバリー状態検出の判定処理を行うことで、通信回線がリカバリー状態にある場合でも、タイムアウトを待つことなくTLPの送信を完了させることが可能となる。

図6は、データリンクレイヤのデータ受信機構に関する制御フローを示すフローチャートである。TLPデータを受信した場合、受信TLPデータに含まれるCRC情報に基づくCRCチェックと受信TLPのシーケンス番号のチェックを行い、正常にTLPを受信できたか否かを判定する。そして、TLPを正常に受信できたか否かの判定結果に基づいて、正常/異常通知(ACK/NAK DLLP)をTLP送信元へ返送するとともに、受信したTLPデータの受理及び廃棄処理を行う。以下、図6のフローチャートに従って説明する。
DLL部40の受信データ処理部41は、PL部60から転送されてきた、送信元装置からのTLPデータを受信すると(S111)、受信データに含まれるCRC情報に基づいてTLPを正常に受信できたか否かをチェックする(S112)。
S112のチェックの結果、CRCエラーを検出して正常にTLPを受信できていないと判定されると(S112 No)、受信したTLPデータを破棄する(S120)。そして、受信データ処理部41は、チェック結果が異常(NG)であったことを異常通知送信部46へ知らせる。NGの知らせを受けた異常通知送信部46は、TLP送信元へ異常通知(NAK DLLP)を送信する(S121)。
S112のCRCチェックの結果が正常であった場合(S112 Yes)、受信TLPに含まれるシーケンス番号が期待されるシーケンス番号の値と一致するか否かを判定する(S113)。
受信TLPに含まれるシーケンス番号が期待されるシーケンス番号の値と一致しなかった場合(S113 No)、受信TLPのシーケンス番号と期待されるシーケンス番号との大小関係を比較する(S117)。受信TLPのシーケンス番号が期待値よりも小さい場合(S117 Yes)、受信TLPは過去に受信済みのTLPと重複する。従って、受信データ処理部41は、受信したTLPを破棄し(S118)、TLP送信元に正常通知(ACK DLLP)を返送するよう正常通知送信部45に指示する。指示を受けた正常通知送信部45は、TLP送信元へ正常通知を送信し(S119)、TLPの受信処理が終了する。
受信TLPのシーケンス番号が期待値よりも大きい場合(S117 No)、期待されるシーケンス番号に対するTLPを正常に受信できておらず、当該TLPを再送信させる必要がある。従って、受信データ処理部41は、受信したTLPを破棄し(S120)、異常通知送信部46に異常通知(NAK DLLP)を送信するように指示する。指示を受けた異常通知送信部46は、TLP送信元に対して、最後に正常受信した受信シーケンス番号を付加して異常通知を送信する(S121)。
受信TLPに含まれるシーケンス番号が期待されるシーケンス番号の値と一致する場合(S113 Yes)、TLPを正常に受信できたことになるので、受信したTLPをTL部30に転送する(S114)。その後、受信データ処理部41は、正常通知送信部45に正常通知(ACK DLLP)を送信するよう指示し、正常通知送信部45がTLP送信元へ正常通知を送信する(S115)。また、受信データ処理部41は、SEQ番号保持・更新部41に対して受信SEQ番号の更新処理を指示し(S116)、TLPの受信処理が終了する。
ところで、TLPデータの受信とほぼ同じ時期にPL部60での回線復帰処理が行われた場合には、前述したとおり、送信元装置に送信した正常/異常通知(ACK/NAK DLLP)が喪失する可能性がある。本実施例では、このような場合においてもタイムアウトを発生させることなく、リカバリー状態から復帰後にデータ送受信を完了させるために、リカバリー状態検出部47がPL部60からのLINK状態を監視する。図6のフローでは、スタートの直後に、S111以降のデータ受信処理とは並行して、S122で通信回線のリカバリー状態の検出を行う。リカバリー状態が検出されない場合(S122 No)、S122の条件判定が繰り返し行われる。
リカバリー状態検出部47は、TLPデータの受信制御とは独立に通信回線のリカバリー状態を検出した場合(S122 Yes)、異常通知送信部46に対して異常通知(NAK DLLP)を送信するよう指示する。リカバリー状態検出部47からの指示を受けた異常通知送信部46は、最後に正常受信した受信シーケンス番号を付加した異常通知を対向する装置に送信する(S123)。
S122でリカバリー状態が検出された場合の異常通知(S123)は、TLPデータの受信制御とは独立に行われるため、冗長に異常通知を送信する場合があり得る。また、正常通知と、リカバリー状態検出による異常通知がほぼ同時に送信される可能性もある。しかし、正常通知及び異常通知は、最後に受信データ処理部41が正常に受信できたシーケンス番号が付加された状態で送信されるため、特に問題とはならない。すなわち、TLP送信元の装置は、たとえ異常通知を受信した場合でも、異常通知に付加されているシーケンス番号が送信したTLPのシーケンス番号に一致する場合には、送信したTLPが正常に送達されたことを知ることができる。この場合、TLP送信元の装置は、異常通知を受信したとしても、TLPが正常に送達されたと判断してTLP送信処理を完了させることができる。
図6のS115の正常通知が送信された後に、S123の異常通知が送信されたような場合においても、異常通知を受信する対向装置が異常通知に付加されたシーケンス番号を確認することにより、冗長な異常通知を無視あるいは破棄するようにすればよい。具体的には、通信回線がリカバリー状態になったときに正常通知(ACK DLLP)の喪失がなかった場合、対向装置は正常通知を受信できている。この場合、S123で送信されるNAK DLLPには、先に送信されたACK DLLPと同じシーケンス番号が付加される。従って、S123で送信されたNAK DLLPを受信した対向装置は、NAK DLLPに付加されたシーケンス番号が既に送信完了済みのシーケンス番号と判断して、当該NAK DLLPを無視すればよい。
通信回線がリカバリー状態になったときに正常/異常通知(DLLP)の喪失があった場合には、対向装置は、通信回線がリカバリー状態から復帰した後に受信するNAK DLLPのシーケンス番号を確認する。NAK DLLPに付加されたシーケンス番号が送信したTLPのシーケンス番号に一致する場合、TLPが正常に送達されたと判断して送信処理を完了する。NAK DLLPに付加されたシーケンス番号が送信したTLPのシーケンス番号よりも小さい場合、TLPデータを再送信する。
上述の図5及び図6のようにデータ送受信とは独立にリカバリー状態を検出し、TLPデータ又は異常通知(NAK DLLP)を再送信することで、リカバリー状態に起因するデータ喪失が発生しても、タイムアウトを検出することなく送受信処理を完了させることが可能となる。
なお、図5に示すデータ送信フローの処理と図6に示すデータ受信フローの処理とは、それぞれ別方向のシリアル通信回線(Tx,Rx)を使った送信、受信処理である。従って、これらのデータ送信制御とデータ受信制御とは独立して行われる制御である。

次に、図7、図8を用いて上記実施例により課題が解決されることを説明する。
図7は、実施例に係る送信TLPが喪失したときの処理フローの例を示す。図14の場合と同様、装置Aから時刻T1にシーケンス番号「10」が付加されたTLPが装置AのPL部60に送信される。その際、時刻T1の直後の時刻T2において、装置Aと装置Bの各々のPL部60が通信回線の回線復帰処理を開始しており、装置AのDLLから送信されたTLPが装置AのPL部60で破棄されてしまう。
しかし、時刻T2にPL部60が回線復帰処理を開始すると、装置Aのリカバリー状態検出部47が、通信回線のリカバリー状態を検出し、装置Aの再送信要求部43にTLPデータの再送信を指示する。再送信要求部43がTLPの再送信を送信データバッファ48に指示すると、送信データバッファ48に格納されているTLPデータがTLP整形部49に渡される。TLP整形部49は、前回TLPを送信したときと同じシーケンス番号をTLPに付加して、送信バスアービタ50へ渡す。
送信バスアービタ50は、PL部60からのLINK状態の情報に基づいてデータを送信可能か否かを判断するので、通信回線がリカバリー状態にある時刻T2から時刻T3の間は、TLPの再送信を保留する。そして、時刻T3に通信回線がリカバリー状態から復帰した後、PL部60からのLINK状態の情報が送信可能な状態を示す情報となるので、送信バスアービタ50はTLPを再送信する。装置Aから再送信されたTLPデータは時刻T4に装置Bに受信され、装置Bからの正常通知(ACK DLLP)が時刻T5に装置Aに受信されて、一連のTLP送信処理が完了する。
このように、時刻T2〜T3の通信回線の回線復帰処理中に送信TLPが喪失した場合でも、通信回線のリカバリー状態を検出し、通信回線がリカバリー状態から復帰したことを判別した後にTLPデータを再送信させることで、タイムアウトを発生させることなくTLPデータの再送信を完了させることが可能となる。

図8は、実施例に係る正常/異常通知(DLLP)が喪失したときの処理フローの例を示す。図15の場合と同様、時刻T1に装置Bから装置Aに対してシーケンス番号「10」を付したTLPが送信される。時刻T2に装置AがTLPを正常受信した後、装置Aは、シーケンス番号「10」の正常通知(ACK DLLP)を装置Bに対して送信する。ここで、時刻T2の直後の時刻T3において、PL部60が通信回線の回線復帰処理を開始しており、装置Aのデータリンクレイヤが送信した正常通知はPL部60で破棄されてしまう。
しかし、時刻T3にPL部60が回線復帰処理を開始すると、装置Aのリカバリー状態検出部47が、通信回線のリカバリー状態を検出し、異常通知送信部46に異常通知を送信するよう指示する。リカバリー状態検出部47からの指示を受けた異常通知送信部46は、最後に正常受信したTLPのシーケンス番号「10」を付加した異常通知(NAK DLLP)を送信バスアービタ50へ送る。
送信バスアービタ50はPL部60からのLINK状態を参照して、通信回線がリカバリー状態にあるT3〜T4の間、異常通知の送信を保留する。そして、時刻T4に通信回線がリカバリー状態から復帰したことを検出した後、バスアービタ50は異常通知を送信し、装置Bは、時刻T5に異常通知を受信する。ここで、装置Bが受信した異常通知には、装置Aが最後に正常に受信したTLPのシーケンス番号「10」が付加されている。従って、装置Bは、シーケンス番号「10」のTLPについては装置Aに正常に受信されたことを知ることができ、TLPの再送は不要であると判断することができる。こうして、シーケンス番号「10」が付されたTLPの送信処理が完了する。
仮に、時刻T3で送信された正常通知(ACK DLLP)が装置Bに受信された後に通信回線の回線復帰処理が行なわれた場合にも、通信回線のリカバリー状態からの復帰後に装置Aから装置Bへの異常通知がなされることになる。しかし、この場合、装置Bがシーケンス番号「10」の正常通知を既に受信済みのため、その後に同じシーケンス番号「10」の異常通知を受信したとしても、後の異常通知は無視すればよい。
このように、時刻T3〜T4の通信回線の回線復帰処理中に正常/異常通知(DLLP)が喪失した場合でも、通信回線のリカバリー状態を検出して、通信回線がリカバリー状態から復帰した場合に異常通知を送信させることで、タイムアウトを発生させることなくデータ送信処理を完了させることが可能となる。
以上に述べた実施例では、通信回線のリカバリー状態を検出した場合に、異常通知を送信することで、通信回線が復帰した後の送受信処理を早期に完了させている。リカバリー状態検出時に異常通知をTLP受信側からTLP送信元へ送信しておけば、TLP受信直後にDLLPが喪失されたとしても、通信回線復帰後の安定した回線の状態でTLPを再送させ、確実なデータ送信を図ることができる。
ここで、リカバリー状態検出時に、異常通知を送信する代わりに、直前に送信した正常通知又は異常通知のDLLPを送信する実施態様としてもよい。リカバリー状態検出時に、直前に送信したDLLPを送信するには、リカバリー状態検出部47の検出結果を受信データ処理部41に通知し、受信データ処理部41が、直前に送信したDLLPの再送を正常通知送信部45又は異常通知送信部46に指示すればよい。この実施態様にした場合、図8の例では時刻T4の後に「ACK、SEQ=10」の正常通知が再送信され、時刻T5に一連のTLP送信処理を完了させることができる。

図9は、データリンクレイヤ(DLL)と物理レイヤ(PL)を別チップとした場合のシリアル伝送装置の構成例を示す。図9の例では、図2におけるDLL部40をチップ70とし、PL部60をチップ80としている。チップ70及びチップ80中の各サブブロックで、図2の例での各サブブロックと同じ機能を有するものは、同じ番号で示す。
物理レイヤの処理を行うチップ80は、さらにシリアル・パラレル変換等のデータ変換や制御ステート等のロジック回路を1つのチップとし、Tx、Rx等の差動信号を生成するアナログ回路を別のチップとする構成としてもよい。チップ70(DLL)とチップ80(PL)との間のTLPやDLLP信号の受け渡しは図示していないバスインタフェース等を用いて受け渡せばよい。LINK状態の情報についてもバスインタフェースを介して受け渡してもよいし、専用のバス信号線を介して受け渡してもよい。
図9におけるチップ70において、リカバリー状態検出部47を設け、リカバリー状態の検出結果を再送信要求部43及び異常通知送信部46に通知する。通信回線のリカバリー状態を検出した場合に、TLPやNAK DLLPの再送信を行わせることで、通信データ喪失時においてもタイムアウトを待つことなくデータ送信処理を完了させることが可能となる。

以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
本発明は、シリアル通信回線を介したデータの送受信に利用することができる。特に、シリアル通信回線の制御を行う物理レイヤが通信回線の回線復帰処理を行った場合の送信データ喪失時のデータ再送信処理に利用することができる。
10 プロセッサ
12 メモリ
14 バス
20 シリアル・インタフェース
30 トランザクションレイヤ(TL)部
40 データリンクレイヤ(DLL)部
41 送信データ処理部
42 タイムアウト検出部
43 再送信要求部
44 SEQ番号保持・更新部
45 正常通知送信部
46 異常通知送信部
47 リカバリー状態検出部
48 送信データバッファ
49 TLP整形部
50 送信バスアービタ
60 物理レイヤ(PL)部
61 シリアルデータ受信部
62 シリアルデータ送信部
63 マルチプレクサ
64 PL制御部
65 LINK状態レジスタ
66 LINK状態を通知する制御信号線
100 サーバ装置
200 外部I/Oデバイス
300 PCI Expressインタフェース

Claims (6)

  1. シリアル通信回線を介してデータの伝送を行うシリアル伝送装置であって、
    送信データバッファに格納されたデータを送信先装置に送信する送信部と、
    送信したデータに対する応答を所定の期間内に送信先装置から受信しなかった場合にタイムアウトを検出するタイムアウト検出部と、
    前記シリアル通信回線の回線復帰処理中であることを示すリカバリー状態を検出するリカバリー状態検出部と、
    前記シリアル通信回線を介してデータの送信を行う際に、前記タイムアウト検出部でタイムアウトを検出した場合、又は、前記リカバリー状態検出回路でシリアル通信回線のリカバリー状態を検出した場合に、前記送信データバッファに格納されている送信済みデータの再送信を前記送信部に要求する再送要求部と
    を有することを特徴とするシリアル伝送装置。
  2. 請求項1に記載のシリアル伝送装置であって、さらに
    前記リカバリー状態検出部で前記シリアル通信回線のリカバリー状態を検出した場合に、前記他の伝送装置に通知する異常通知を生成するとともに前記送信部に送信させる異常通知送信部
    を有することを特徴とするシリアル伝送装置。
  3. 請求項1に記載のシリアル伝送装置であって、
    前記リカバリー状態検出回路は、前記シリアル通信回線のリンク状態を示す信号がリカバリー状態を示す場合にリカバリー状態を検出する
    ことを特徴とするシリアル伝送装置。
  4. バスにより相互に接続されるプロセッサと、メモリと、シリアル通信回線を介して他の装置との間のデータの伝送を行うシリアル・インタフェースとを有する情報処理装置であって、
    前記シリアル・インタフェースは、
    送信データバッファに格納されたデータを送信先装置に送信する送信部と、
    送信したデータに対する応答を所定の期間内に前記送信先装置から受信しなかった場合にタイムアウトを検出するタイムアウト検出部と、
    前記シリアル通信回線の回線復帰処理中であることを示すリカバリー状態を検出するリカバリー状態検出部と、
    前記シリアル通信回線を介してデータの送信を行う際に、前記タイムアウト検出部でタイムアウトを検出した場合、又は、前記リカバリー状態検出回路でシリアル通信回線のリカバリー状態を検出した場合に、前記送信データバッファに格納されている送信済みデータの再送信を前記送信部に要求する再送要求部とを有する
    ことを特徴とする情報処理装置。
  5. シリアル通信回線を介してデータの伝送をシリアル伝送装置により行うシリアル伝送方法であって、
    送信データバッファに格納されたデータを送信先装置に送信する送信工程と、
    送信したデータに対する応答を所定の期間内に前記送信先装置から受信しなかった場合にタイムアウトを検出するタイムアウト検出工程と、
    前記シリアル通信回線の回線復帰処理中であることを示すリカバリー状態を検出するリカバリー状態検出工程と、
    前記シリアル通信回線を介してデータの送信を行う際に、前記タイムアウト検出工程でタイムアウトを検出した場合、又は、前記リカバリー状態検出工程でシリアル通信回線のリカバリー状態を検出した場合に、前記送信データバッファに格納されている送信済みデータの再送信を前記送信データバッファに要求する再送要求工程と
    を有することを特徴とするシリアル伝送方法。
  6. シリアル通信回線を介してデータの伝送をシリアル伝送装置により行うシリアル伝送方法であって、
    前記シリアル通信回線を介して送信されてきたデータを受信するデータ受信工程と、
    前記シリアル通信回線の回線復帰処理中であることを示すリカバリー状態を検出するリカバリー状態検出工程と、
    前記シリアル通信回線を介して送信されてきたデータの受信を行う際に、前記データ受信工程で正常にデータを受信できなかった場合、又は、前記リカバリー状態検出工程で前記シリアル通信回線のリカバリー状態を検出した場合に、前記他の伝送装置に通知する異常通知を生成するとともに送信処理を行う送信部に送信させる異常通知送信工程と
    を有することを特徴とするシリアル伝送方法。

JP2010232105A 2010-10-15 2010-10-15 シリアル伝送装置、情報処理装置、及びシリアル伝送方法 Ceased JP2012085244A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010232105A JP2012085244A (ja) 2010-10-15 2010-10-15 シリアル伝送装置、情報処理装置、及びシリアル伝送方法
US13/270,292 US8880972B2 (en) 2010-10-15 2011-10-11 Serial transmission apparatus, information processing apparatus, and serial transmission method
EP20110184786 EP2442502A1 (en) 2010-10-15 2011-10-12 Serial transmission apparatus, information processing apparatus, and serial transmission method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010232105A JP2012085244A (ja) 2010-10-15 2010-10-15 シリアル伝送装置、情報処理装置、及びシリアル伝送方法

Publications (1)

Publication Number Publication Date
JP2012085244A true JP2012085244A (ja) 2012-04-26

Family

ID=44772910

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010232105A Ceased JP2012085244A (ja) 2010-10-15 2010-10-15 シリアル伝送装置、情報処理装置、及びシリアル伝送方法

Country Status (3)

Country Link
US (1) US8880972B2 (ja)
EP (1) EP2442502A1 (ja)
JP (1) JP2012085244A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014022835A (ja) * 2012-07-13 2014-02-03 Fujitsu Ltd 電子装置および送信制御方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9991993B2 (en) 2016-04-01 2018-06-05 Intel Corporation Time offset validation of components with independent silicon clocks
US11593294B2 (en) * 2021-05-20 2023-02-28 Pensando Systems Inc. Methods and systems for loosely coupled PCIe service proxy over an IP network
CN113572582B (zh) * 2021-07-15 2022-11-22 中国科学院计算技术研究所 数据发送、重传控制方法及***、存储介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214829A (ja) * 1985-03-20 1986-09-24 Fujitsu Ltd 系間通信制御方式
JPS61248637A (ja) * 1985-04-26 1986-11-05 Hitachi Ltd デ−タリンク制御における応答監視タイマ管理方法
JPH02285752A (ja) * 1989-04-26 1990-11-26 Mitsubishi Electric Corp Hdlc手順を用いた通信制御装置
JPH10336274A (ja) * 1997-05-29 1998-12-18 Mitsubishi Electric Corp データ通信システム及びデータ通信方法
JPH1174946A (ja) * 1997-08-27 1999-03-16 Nippon Denki Ido Tsushin Kk データ送信方式

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2250897A (en) * 1990-12-04 1992-06-17 Ibm Error recovery in data communication systems.
US6473399B1 (en) * 1998-11-30 2002-10-29 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for determining an optimum timeout under varying data rates in an RLC wireless system which uses a PDU counter
US7068619B2 (en) * 2000-08-07 2006-06-27 Lucent Technologies Inc. Radio link control with limited retransmissions for streaming services
US7898962B2 (en) * 2005-03-14 2011-03-01 Agere Systems Inc. Communications systems with retransmission request budgets
JP5497319B2 (ja) 2009-03-27 2014-05-21 伊藤忠商事株式会社 電池組立装置、及び電池組立方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214829A (ja) * 1985-03-20 1986-09-24 Fujitsu Ltd 系間通信制御方式
JPS61248637A (ja) * 1985-04-26 1986-11-05 Hitachi Ltd デ−タリンク制御における応答監視タイマ管理方法
JPH02285752A (ja) * 1989-04-26 1990-11-26 Mitsubishi Electric Corp Hdlc手順を用いた通信制御装置
JPH10336274A (ja) * 1997-05-29 1998-12-18 Mitsubishi Electric Corp データ通信システム及びデータ通信方法
JPH1174946A (ja) * 1997-08-27 1999-03-16 Nippon Denki Ido Tsushin Kk データ送信方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014022835A (ja) * 2012-07-13 2014-02-03 Fujitsu Ltd 電子装置および送信制御方法

Also Published As

Publication number Publication date
US8880972B2 (en) 2014-11-04
EP2442502A1 (en) 2012-04-18
US20120093211A1 (en) 2012-04-19

Similar Documents

Publication Publication Date Title
JP2013513269A (ja) 信頼性のあるパケットカットスルー
KR101283482B1 (ko) Pci 익스프레스 프로토콜 처리 장치
CN114520711B (zh) 数据包的选择性重传
WO2011046056A1 (ja) パケット通信の伝送制御方法及びパケット通信システム
EP2157723B1 (en) Data retransmission method and system
US20160255008A1 (en) Separable transport layer in cache coherent multiple component microelectronic systems
US9973216B2 (en) Efficient error handling on a link using ARQ and multiple nacks associated with multiple error thresholds
US10516789B2 (en) Information processing apparatus and image processing apparatus that perform transmission and reception of data, and method of controlling information processing apparatus
JP2012085244A (ja) シリアル伝送装置、情報処理装置、及びシリアル伝送方法
US20120328038A1 (en) Transmission system, transmission device and method for controlling transmission device
JP5250767B2 (ja) 冗長3ワイヤ通信システムおよび方法
JP4807828B2 (ja) ブロードバンド・エンジンのためのエンベロープ・パケット・アーキテクチュア
US10789115B2 (en) Transmitter that does not resend a packet despite receipt of a message to resend the packet
WO2010027064A1 (ja) データ伝送方法、データ伝送システム、データ送信装置、データ受信装置、及び制御プログラム
JP2011039897A (ja) データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体
WO2010103602A1 (ja) 伝送データのエラーチェック装置および方法
JP2011040965A (ja) データリンク層処理回路および通信回路
JP2008219551A (ja) 伝送システム、通信装置、伝送制御方法及びプログラム
JPH02135831A (ja) 通信プロトコールの冗長化方式
JP2000253098A (ja) 信号処理装置及び信号処理システム
JP3616606B2 (ja) データ伝送装置およびデータ伝送方法
JP2008205899A (ja) 送受信システムの伝送異常回避方法
JP2005217487A (ja) パケット伝送システムおよびパケット伝送装置
JP2005277552A (ja) バスリトライ制御方式及びデータ通信装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140821

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150203

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20150630