説明

データ転送方式およびデータ転送方法

【課題】 定期的なDLL調整の影響による、スループット、レイテンシについての性能低下を招くことなく、信頼性を確保するためのデータ転送の高速化方式を提供する。
【解決手段】 分割リンク410〜413は本来の転送データを分割して転送し、分割リンク414は冗長データを転送し、送信制御部220は分割リンク410〜414のクロック位相調整をタイミングをずらして実行し、受信制御部150は分割リンク410〜分割リンク413の何れかでデータ転送ができない場合に、転送できない分割リンクの本来の転送データを、転送できる分割リンクの本来の転送データ及び前記冗長データを用いて補完生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ転送方式およびデータ転送方法に関し、特に、クロック位相調整の定期的な実行を必要する場合のスループット及びレイテンシの低下を防止できるデータ転送方式およびデータ転送方法に関する。
【背景技術】
【0002】
高速なシリアル通信を行うインタフェースにおいて、送信側クロックと受信側クロックは、同周波数ではあるが別ソースのため誤差のあるクロックを使用する。このため、動作開始の初期化にて、送信側と受信側のクロック位相調整が行われる。しかし、こうして動作を開始しても、時間が経つと送信側と受信側のクロック誤差のために位相がずれてくるため、一定間隔で再クロック位相調整が必要となる。クロック位相調整期間中はデータ転送を止めなければならないため、レイテンシ及びスループットが低下するという問題があった。
【0003】
これらの課題を解決するための従来のデータの転送方式およびデータ転送方法としては、クロック位相調整に要する時間を短縮するものがある(例えば特許文献1参照。)。
【0004】
【特許文献1】特開平11−88162
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、これら従来のデータ転送方式およびデータ転送方法では、クロック位相調整期間中のデータ転送の中断を完全に回避することはできず、クロック位相調整の影響による、スループット、レイテンシについての性能低下が発生することは避けられないという問題があった。
【0006】
本発明の目的は、上述した従来の課題であるクロック位相調整による性能低下を解決するデータ転送方式およびデータ転送方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明の第1のデータ転送方式は、1以上の伝送路を有するデータ転送方式であって、前記1以上の伝送路の何れかでデータ転送が出来ない場合に受信側で転送データの生成をするための冗長データを転送する1以上の冗長伝送路と、前記1以上の伝送路および前記1以上の冗長伝送路のクロック位相調整を、前記1以上の伝送路および前記1以上の冗長伝送路毎にタイミングをずらして実行する手段を有する。
【0008】
本発明の第2のデータ転送方式は、前記第1のデータ転送方式に於いて、1以上の伝送路を有するデータ転送方式であって、前記1以上の伝送路の何れかの伝送路のクロック位相調整実行時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をする受信手段を有する。
【0009】
本発明の第3のデータ転送方式は、前記第1、または、第2のデータ転送方式に於いて、1以上の伝送路を有するデータ転送方式であって、前記1以上の伝送路の何れかの伝送路の故障検出時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をする受信手段を有する。
【0010】
本発明の第4のデータ転送方式は、前記第1、第2、または、第3のデータ転送方式に於いて、前記冗長データは、前記1以上の伝送路の転送データのパリティデータであり、前記転送データの前記生成は、前記データ転送ができないいずれかの前記伝送路を除く前記伝送路の前記転送データと前記冗長データとの排他的論理和を取ることによって得る。
【0011】
本発明の第1のデータ転送方法は、1以上の伝送路を有するインタフェースのデータ転送方法であって、前記1以上の伝送路の何れかでデータ転送が出来ない場合に、1以上の冗長伝送路で転送された冗長データを利用して受信側で転送データの生成を行い、前記1以上の伝送路および前記1以上の冗長伝送路のクロック位相調整を、前記1以上の伝送路および前記1以上の冗長伝送路毎にタイミングをずらして実行する。
【0012】
本発明の第2のデータ転送方法は、前記第1のデータ転送方法に於いて、1以上の伝送路を有するインタフェースのデータ転送方法であって、前記1以上の伝送路の何れかの伝送路のクロック位相調整実行時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をする。
【0013】
本発明の第3のデータ転送方法は、前記第1、または、第2のデータ転送方法に於いて、1以上の伝送路を有するインタフェースのデータ転送方法であって、前記1以上の伝送路の何れかの伝送路の故障検出時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をする。
【0014】
本発明の第4のデータ転送方法は、前記第1、第2、または、第3のデータ転送方法に於いて、前記冗長データは、前記1以上の伝送路の転送データのパリティデータであり、前記転送データの前記生成は、前記データ転送ができないいずれかの前記伝送路を除く前記伝送路の前記転送データと前記冗長データとの排他的論理和を取ることによって得る。
【発明の効果】
【0015】
本発明は、クロック位相調整による性能低下を防止することが可能であるという効果を有している。その理由は、転送データを補完可能な冗長データを転送し、伝送路毎のクロック調整タイミングをずらすことによって、いずれかの伝送路上でデータを転送できない場合でも受信側で転送データを生成可能としたためである。
【発明を実施するための最良の形態】
【0016】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【0017】
図1を参照すると、本発明の第1の実施の形態は、同じ構造を持つLSI200とLSI100と、LSI200とLSI100を接続する転送方向毎に、伝送路4本および冗長伝送路1本として、計5本のSERDESインタフェースから成るリンク400(LSI200からLSI100方向)と、リンク300(LSI100からLSI200方向)とから構成される。
【0018】
LSI200には送受信するデータを処理するプロセッサ210、送信データの分割およびパリティデータの生成を行う機能、および伝送路のクロック位相調整であるDLL調整のタイミングを制御する機能を有する送信制御部220、送信データをシリアル変換してリンク400へ出力する機能を有する5個の送信マクロ(図1ではSM)230〜234、リンク300からシリアルデータを受信し、バイトデータへ変換する機能を有する5個の受信マクロ(図1ではRM)240〜244、受信データをプロセッサ210が使用できる形式に復元し、プロセッサ210へ出力する機能を有する受信制御部250から構成される。尚、マクロとは回路の単位である。
【0019】
各送信マクロ230〜234は、送信制御部220からDLL調整指示信号がアサートされると、分割リンク410〜414上でDLL調整シーケンスを開始する機能を有する。
【0020】
LSI200の受信マクロ240〜244は、LSI100からDLL調整シーケンスが開始されたことを認識し、受信制御部250に対しデータ無効信号をアサートする機能を有する。受信制御部250は、受信マクロ240〜243の何れかからのデータ無効信号を受信すると、該受信マクロからの入力データを無効と見なし、プロセッサ210に出力するデータの生成に、該受信マクロからの入力データを使用しなくなる。DLL調整は、両方向の対応する分割リンク410〜414で送信マクロ230〜234及び受信マクロ140〜144間で実施され、一連のシーケンスの完了には、数10から数100クロックの時間を要する。尚、DLL調整の動作に関しては既存の技術であるため、特に説明しない。DLL調整の間、受信マクロ240〜244は受信制御部250に対しデータ無効信号をアサートし続ける。
【0021】
受信マクロ140〜144は、対応する分割リンク410〜414のエラーを監視し、エラーを検出すると、受信制御部150に対し、データ無効信号をアサートする機能を有し、また、エラーした分割リンク410〜414の復旧を試みる。尚、リンクエラーの検出方式および復旧方式については、既存の技術であるため、特に説明しない。分割リンク410〜414の復旧が成功して、データ転送が再開できる状態になった場合は、受信マクロ140〜144はデータ無効信号をディアサートするが、分割リンク410〜414の復旧が失敗した場合は、データ無効信号をアサートし続ける。
【0022】
リンク400は、分割リンク410〜414の、5本のSERDESインタフェースで構成される。各SERDESインタフェースは2byte/クロックでデータ転送できる能力を有する。分割リンク410〜413は、データ転送用の伝送路(計8byte/クロック)である。分割リンク414は、冗長データとして分割リンク410〜413のビット対応のパリティ値を転送するための、冗長伝送路である。
【0023】
LSI100は、LSI200と同じ構成であるため説明は省略する。リンク300は、リンク400と同等の構成であるため、説明は省略する。分割リンク310〜314は、分割リンク410〜414と同等の構成であるため、説明は省略する。送信制御部120は、送信制御部220と同等の構成であるため、説明は省略する。送信マクロ130〜134は、送信マクロ230〜234と同等の構成であるため、説明は省略する。
【0024】
次に、本発明を実施するための最良の形態の動作について図面を参照して説明する。
【0025】
まず、通常動作時のデータ転送動作について説明する。図2は本発明の通常動作時のデータ処理フローを表している。
【0026】
プロセッサ210はLSI100へデータを出力する場合、送信制御部220に対し、8byte/クロックの転送能力でデータを出力する(図2項番1)。送信制御部220は8byte幅のデータを、2byte×4本に分割し、データ用送信マクロ230〜233へ出力する。また、送信制御部220は、出力データからパリティデータ2byteを生成し、パリティ用送信マクロ234へ出力する(図2項番2)。各送信マクロ230〜234は、送信制御部220から受信した2byteのデータをシリアル変換し、リンク400の各SERDESインタフェースへ出力する(図2項番3)。LSI100の各受信マクロ140〜144は、それぞれリンク400からシリアルデータを受信し、データを復元、2byetデータとして、受信制御部150へ出力する(図2項番5)。受信制御部150は各受信マクロ140〜144から受信した対応する2byteデータを結合し8byteデータに復元してプロセッサ110へ出力する(図2項番6)。8byteデータを受信したプロセッサ110は任意の処理を実行する(図2項番7)。
【0027】
次に、リンク調整動作について説明する。本実施例では、高速にシリアル転送を行うSERDESインタフェースを使用する。一般的に、SERDESインタフェースでは、受信側と送信側のクロック位相ずれ改善のためのDLL調整や、温度、電圧環境の変化に対応するためにインピーダンス調整を定期的に行う必要がある。以下では、LSI200からLSI100方向のDLL調整動作を例にあげて説明する。
【0028】
LSI200の送信制御部220は、各送信マクロ230〜234へ個別にDLL調整指示信号を出力する。DLL調整は、分割リンク410〜414毎に一定間隔で実施する必要があるが、送信制御部220は、DLL調整が2以上の分割リンク410〜分割リンク413で同時に行われないように、各送信マクロ230〜234に対し順番に前記DLL調整指示信号を出力する。尚、DLL調整時間はDLL調整開始から一定時間内に完了するため、送信制御部220は前記DLL調整指示信号出力時点から、カウンタ回路等を使用して一定時間待つことにより、DLL調整が完了したことを認識する。
【0029】
図3のタイミング1〜6は本発明におけるリンク400のDLL調整動作を示している。図3ではリンク400の状態、各受信マクロ140〜144の出力データ、受信制御部150で生成したデータを、縦を時間軸(下方向が時間が進む方向)として表している。リンク400の分割リンク410〜414の状態が「通常動作」である場合は、該分割リンク410〜414はデータ転送中または、IDLE状態であることを示している。リンク400の分割リンク410〜414の状態が「DLL調整」状態であるときは、データ転送は行われず、DLL調整パターンが一定期間出力されている。各受信マクロ140〜144の出力データが、「RM140受信DATA〜RM144受信DATA」である場合は、受信制御部150に対して2byte/クロックで、対応する分割リンク410〜414から受信したデータを転送中、または、IDLE状態であることを示している。各受信マクロ140〜144の出力データが、「無効」である場合は、受信制御部150に対して有効なデータを出力していないことを示している。
【0030】
図3のタイミング1で、送信制御部220は送信マクロ230に対し、DLL調整指示信号を出力する。送信制御部220から前記DLL調整指示信号を受けた送信マクロ230は分割リンク410でDLL調整シーケンスを開始する。受信側のLSI100では、受信マクロ140が、DLL調整状態移入を検出すると、受信制御部150に対し、データが無効であることを信号により通知する。受信制御部150は、DLL調整状態になっている受信マクロ140から受信するデータを無効として扱う。DLL調整中の分割リンク410はデータ用のリンクであるので、受信制御部150は、残りの3本のデータ用分割リンク411〜413の受信マクロ141〜143及びパリティ用受信マクロ144から受信した各2byteのデータを、排他的論理和(XOR)を行うことにより、DLL調整中の分割リンク410分のデータを生成する。受信制御部150は、生成されたデータを受信マクロ140から受信したデータとして扱い、他の受信マクロ141〜143から受信したデータとマージし、8byteデータに復元して、プロセッサ110へ出力する。受信制御部150は、分割リンク410がDLL調整中である期間中は、上記のように、他の分割リンク411〜414から分割リンク410のデータを生成して動作し続ける。分割リンク410のDLL調整が終了した場合、分割リンク410の受信マクロ140は受信制御部150に対して出力していたデータ無効信号をディアサートし、データ転送を再開する。
【0031】
分割リンク410のDLL調整が終了すると、LSI200の送信制御部220は、次に分割リンク411の送信マクロ231に対してDLL調整指示信号を出力する(図3タイミング2)。同様に分割リンク411のDLL調整が終了すると、LSI200の送信制御部220は、次に分割リンク412の送信マクロ232に対してDLL調整指示信号を出力する(図3タイミング3)。
【0032】
尚、パリティ用の分割リンク414がDLL調整中である場合(図3タイミング5のケース)は、他の4本の分割リンク410〜413の受信マクロ140〜143から受信した各2byteのデータを用いてパリティを生成することは出来るが、元々冗長なデータであるため、データを補完する必要は無い。
【0033】
以上述べたように、伝送路毎のクロック位相調整を、タイミングをずらして実施し、冗長データにより転送データを補完するようにしたことにより、データ転送を止めることなく、クロック位相調整を行うことが出来るという効果を有している。
【0034】
次にエラーリカバリ動作について説明する。
【0035】
図3のエラータイミング1は分割リンク410上での間欠エラーが発生した場合の動作を示している。分割リンク410でエラーが発生した場合、受信側のLSI100の、受信マクロ140が、エラーを検出し、受信制御部150に対し、データが無効であることを信号により通知する。受信マクロ140は、送信マクロ230を介し、LSI200に対して、分割リンク410上でリンク復旧シーケンスを実行するよう指示する。リンク復旧シーケンスの実行中は、分割リンク410ではデータ転送を行えないため、受信マクロ140は受信制御部150に対し、データ無効信号を出力し続ける。尚、リンク復旧シーケンスは数10から数100クロックの時間を要する場合がある。
【0036】
分割リンク410がデータ無効状態の間は、受信制御部150は残りの分割リンク411〜414から分割リンク410のデータを生成し動作を継続する。データの生成の方法は、分割リンク410がDLL調整中の場合と同じであるため説明は省略する。リンク復旧シーケンスの実行が、他の分割リンク411〜414のリンク復旧シーケンス、または、DLL調整シーケンスのタイミングと一致しなければ、データ転送を止めることなくリンク復旧シーケンスを実施することが出来る。
【0037】
分割リンク410上でリンク復旧シーケンスを実施してもエラーが発生する場合、固定故障と考えられるため、分割リンク410を閉塞する場合がある。その場合、受信マクロ140は、受信制御部150に対し、データ無効信号を出力し続ける。そのため、他の分割リンク411〜414で、DLL調整または復旧シーケンスが動作した場合、データ転送を止めなくてはならないが、データ転送不可とはならないので、コンピュータシステムは停止する必要は無い。
【0038】
以上述べたように、伝送路毎のクロック位相調整をタイミングをずらして実施し、冗長データにより転送データを補完するようにしたことにより、リンク上の間欠エラーや、固定エラーをリカバリすることができるという効果がある。
【0039】
尚、LSI100、LSI200は、単一のLSIである必要はなく複数に別れていても良く、またボードや装置あるいは情報処理システムであっても良い。
【産業上の利用可能性】
【0040】
本発明は、高性能かつ高信頼性が要求される、サーバー等のコンピュータシステムにおいて、有効である。
【図面の簡単な説明】
【0041】
【図1】本発明の最良の実施の形態の構成を示すブロック図である。
【図2】本発明の通常動作時のデータ処理フローの図である。
【図3】本発明の伝送路の時間軸上での動作を説明する図である。
【符号の説明】
【0042】
100 LSI
200 LSI
110 プロセッサ
210 プロセッサ
120 送信制御部
220 送信制御部
130〜134 送信マクロ
230〜234 送信マクロ
140〜144 受信マクロ
240〜244 受信マクロ
150 受信制御部
250 受信制御部
300 リンク
400 リンク
310〜314 分割リンク
410〜414 分割リンク

【特許請求の範囲】
【請求項1】
1以上の伝送路を有するデータ転送方式であって、前記1以上の伝送路の何れかでデータ転送が出来ない場合に受信側で転送データの生成をするための冗長データを転送する1以上の冗長伝送路と、前記1以上の伝送路および前記1以上の冗長伝送路のクロック位相調整を、前記1以上の伝送路および前記1以上の冗長伝送路毎にタイミングをずらして実行する手段を有することを特徴とするデータ転送方式。
【請求項2】
1以上の伝送路を有するデータ転送方式であって、前記1以上の伝送路の何れかの伝送路のクロック位相調整実行時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をする受信手段を有することを特徴とする請求項1記載のデータ転送方式。
【請求項3】
1以上の伝送路を有するデータ転送方式であって、前記1以上の伝送路の何れかの伝送路の故障検出時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をする受信手段を有することを特徴とする請求項1、または、2記載のデータ転送方式。
【請求項4】
前記冗長データは、前記1以上の伝送路の転送データのパリティデータであり、前記転送データの前記生成は、前記データ転送ができないいずれかの前記伝送路を除く前記伝送路の前記転送データと前記冗長データとの排他的論理和を取ることによって得ることを特徴とする請求項1、2、または、3記載のデータ転送方式。
【請求項5】
1以上の伝送路を有するインタフェースのデータ転送方法であって、前記1以上の伝送路の何れかでデータ転送が出来ない場合に、1以上の冗長伝送路で転送された冗長データを利用して受信側で転送データの生成を行い、前記1以上の伝送路および前記1以上の冗長伝送路のクロック位相調整を、前記1以上の伝送路および前記1以上の冗長伝送路毎にタイミングをずらして実行することを特徴とするデータ転送方法。
【請求項6】
1以上の伝送路を有するインタフェースのデータ転送方法であって、前記1以上の伝送路の何れかの伝送路のクロック位相調整実行時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をすることを特徴とする請求項5記載のデータ転送方法。
【請求項7】
1以上の伝送路を有するインタフェースのデータ転送方法であって、前記1以上の伝送路の何れかの伝送路の故障検出時は前記冗長伝送路の前記冗長データで補完することにより前記転送データの生成をすることを特徴とする請求項5、または、6記載のデータ転送方法。
【請求項8】
前記冗長データは、前記1以上の伝送路の転送データのパリティデータであり、前記転送データの前記生成は、前記データ転送ができないいずれかの前記伝送路を除く前記伝送路の前記転送データと前記冗長データとの排他的論理和を取ることによって得ることを特徴とする請求項5、6、または、7記載のデータ転送方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2008−59134(P2008−59134A)
【公開日】平成20年3月13日(2008.3.13)
【国際特許分類】
【出願番号】特願2006−233526(P2006−233526)
【出願日】平成18年8月30日(2006.8.30)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】