(57)【要約】【課題】データ転送速度の高速化に伴い、ＬＳＩ内や伝送線路で発生するデータ間および、クロックとデータ間のスキューが無視できなくなってきている。また、最悪スキューが大きいケースでは所望が受信側ＬＳＩで受信できず、データ化けを起こす可能性もある。したがって、いかにスキューに対処するかが重要な課題となる。【解決手段】クロックおよびデータ各々１ｂｉｔ毎に、データを受信するレシーバと最初にデータをラッチするフリップフロップの間に可変なディレイ回路を設け、データ転送を実施する前に受信データの安定領域を検出する検出パターンを繰り返し送信し、データの始点と終点がクロックの立ち上がりエッジに合う可変なディレイ回路のディレイ値を求め、そこから転送データが安定して受信できるディレイ値に設定する。【選択図】　図２
2004127147.tif 000002
【特許請求の範囲】
【請求項１】
ホストＣＰＵとのインタフェースを制御するチャネルアダプタボードと、ディスクドライブとのインタフェースを制御するディスクアダプタボードと、チャネルアダプタボードとディスクアダプタボードとのデータをスイッチング制御するスイッチボードおよび、キャッシュメモリを搭載したメモリボードを有し、前記チャネルアダプタボードと前記スイッチボード、前記ディスクアダプタボードと前記スイッチボードまたは、前記メモリボードと前記スイッチボードの間が、パラレルデータバスとクロックを並送してデータ転送するように接続されており、データ受信側のボードに前記クロックの可変ディレイ回路と前記データバスの各ビット毎に設けられた可変ディレイ回路とを有するデスキュー回路を備えたことを特徴とするディスクアレイ制御装置。
【請求項２】
前記デスキュー回路は前記データバスの各ビットについて、データを受信するレシーバと最初にデータをラッチするフリップフロップとの間に前記可変ディレイ回路を有することを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項３】
前記チャネルアダプタボードと前記ディスクアダプタボードと前記スイッチボードと前記キャッシュボードは同一のバックプレーンに実装されていることを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項４】
複数ビットからなるデータバスの各ビットについて設けられデータを受信する第１のレシーバと、前記第１のレシーバの出力が与えられる第１の可変ディレイ回路と、データと並行して転送されたクロックを受信する第２のレシーバと、前記第２のレシーバの出力が与えられる第２の可変ディレイ回路と、前記第１の可変ディレイ回路の出力をデータとし前記第２の可変ディレイ回路の出力から作られたタイミングでデータをラッチするフリップフロップと、データ転送を実施する前にスキューを補正するための繰り返しパターンを受信するとこれに基づきデータの中間となる前記第１の可変ディレイ回路のディレイ値を求める第１の手段とを備えたことを特徴とするデスキュー回路。
【請求項５】
前記繰り返しパターンは１クロックの範囲でデータの立ち上がりエッジと立下りエッジを持つものであって、前記第１の手段はデータの立ち上がりエッジと立ち下がりエッジがそれぞれ前記第２の可変ディレイ回路の出力から作られたクロックの立ち上がりエッジと合う前記第１の可変ディレイ回路のディレイ値を求め、これらの中間点のディレイ値を前記第１の可変ディレイ回路に設定することを特徴とする請求項４記載のデスキュー回路。
【請求項６】
前記第１の手段は前記第２の可変ディレイ回路のディレイ値を前記データバスの複数のデータビットの内最も遅延の大きいデータビットの立下りエッジよりクロックの立ち上がりエッジの遅延が大きいように設定することを特徴とする請求項４記載のデスキュー回路。
【請求項７】
前記第１の手段は前記第２の可変ディレイ回路のディレイ値を前記データバスの複数のデータビットの内最も遅延の大きいデータビットの立下りエッジよりクロックの立ち上がりエッジの遅延が大きいように設定した後、データビットに関し前記第１の可変ディレイ回路のディレイ値を増加させながらデータビットの立下りのときのディレイ値と立ち上がりのときのディレイ値とをそれぞれ求めることを特徴とする請求項４記載のデスキュー回路。
【請求項８】
複数ビットからなるデータバスの各ビットについて設けられデータを受信する第１のレシーバと、前記第１のレシーバの出力が与えられる第１の可変ディレイ回路と、データと並行して転送されたクロックを受信する第２のレシーバと、前記第２のレシーバの出力が与えられる第２の可変ディレイ回路と、第２の可変ディレイ回路の出力に第１のディレイを与える第１のディレイ回路と、第２の可変ディレイ回路の出力に第１のディレイより大きいディレイを与える第２のディレイ回路と、前記第１の可変ディレイ回路の出力をデータとし前記第２の可変ディレイ回路の出力のタイミングでデータをラッチする第１のフリップフロップと、前記第１の可変ディレイ回路の出力をデータとし前記第１のディレイ回路の出力のタイミングでデータをラッチする第２のフリップフロップと、前記第１の可変ディレイ回路の出力をデータとし前記第２のディレイ回路の出力のタイミングでデータをラッチする第３のフリップフロップと、前記第１のフリップフロップの出力と前記第２のフリップフロップの出力を排他的論理和演算する第１の排他的論理和回路と、前記第２のフリップフロップの出力と前記第３のフリップフロップの出力を排他的論理和演算する第２の排他的論理和回路と、前記第１又は第２の排他的論理和の出力がハイレベルであるとき前記第１の可変ディレイ回路の設定値を調整する第２の手段とを備えたことを特徴とするデスキュー回路。
【請求項９】
前記第２の可変ディレイ回路の出力のタイミングと、前記第１のディレイ回路のタイミングと、前記第２のディレイ回路のタイミングは初期調整時にはウィンドウ時間内に入っていることを特徴とする請求項８記載のデスキュー回路。
【請求項１０】
前記第１の可変ディレイ回路の設定値の調整はパケット転送終了を確認してから行われることを特徴とする請求項８記載のデスキュー回路。
【請求項１１】
複数ビットからなるデータバスの各ビットについて設けられデータを受信する第１のレシーバと、前記第１のレシーバの出力が与えられる複数の第１の可変ディレイ回路と、データと並行して転送された互いに位相が異なりサイクルがデータと同じである複数のクロックを受信する複数の第２のレシーバと、前記第２のレシーバの出力がそれぞれ与えられる複数の第２の可変ディレイ回路と、前記第１の可変ディレイ回路の出力をデータとしそれぞれ前記複数の第２の可変ディレイ回路の出力から作られたタイミングでデータをラッチする複数のフリップフロップと、前記複数のフリップフロップの一つの出力を他のフリップフロップをラッチするクロック信号でラッチするフリップフロップと、データ転送を実施する前にスキューを補正するための繰り返しパターンを受信するとこれに基づきデータの中間となる前記複数の第１の可変ディレイ回路のそれぞれのディレイ値を求める第１の手段とを備えたことを特徴とするデスキュー回路。
【請求項１２】
複数ビットからなるデータバスの各ビットについて設けられデータを受信する第１のレシーバと、前記第１のレシーバの出力が与えられる第１の可変ディレイ回路と、データと並行して転送されたクロックを受信する第２のレシーバと、前記第２のレシーバの出力が与えられる第２の可変ディレイ回路と、前記第１の可変ディレイ回路の出力をデータとし前記第２の可変ディレイ回路の出力から作られたタイミングでデータをラッチする第１のフリップフロップと、前記第１のフリップフロップに直列に接続され前記タイミングと同一のタイミングで前段のフリップフロップの出力をラッチする少なくとも１段の第２のフリップフロップと、前記第１、第２のフリップフロップの出力の内１つを選択するセレクタと、前記データ転送を実施する前にスキューを補正するための繰り返しパターンを受信するとこれに基づきデータの中間となる前記第１の可変ディレイ回路のディレイ値を求める第１の手段とを備えたことを特徴とするデスキュー回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は大量データをパッケージ間で高速に転送し且つ、クロックとデータを並行して転送するデータ転送において、クロックとデータ間および、データバスのデータ間のスキューを補正するデスキュー回路に関する。
【０００２】
【従来の技術】
従来、データのスキューを考慮しながら、データの伝送を高速なものにするという技術が示されていた。例えば、特許文献１の特開２０００−１９６５７１号公報には位相調整用パターンを使用して受信側でデータの１ビット毎に遅延量を調整しているものが開示されている。しかしながら、位相を合わせる対象が送受信側に共通に供給されている外部クロックであり、クロックとデータの並送方式ではない。
【０００３】
【特許文献１】
特開２０００−１９６５７１号公報
【０００４】
【発明が解決しようとする課題】
従来技術はディスクアレイ制御装置のようにパッケージ枚数が多いためバックプレーンでのスキューが大きく、低消費電力のためにクロックとデータ（バスデータ）を並列転送するデータ転送方式で高速転送を実施しなければならない装置において、クロックのみを調整する方式である。このため、転送速度が遅くデータのパルス幅が広い場合には有効であるが、転送速度が速くデータのパルス幅が狭い場合には、全てのデータを正しく読み取れる位置にクロックを補正することは困難である。そのような回路を内蔵したＬＳＩのジャンクション温度変動、電源電圧変動、フリップフロップのセットアップ時間、ホールド時間を考慮するとさらに困難となる。また、同一基板（パッケージ）内で送受信するような送受信間の距離が短い（１０ｃｍ〜２０ｃｍ程度）場合はスキューも小さくクロック補正可能であるが、バックプレーンのように送受信間の距離が長い（数１０ｃｍ〜１００ｃｍ程度）場合、スキューも大きくクロックを補正することは非常に困難である。以上述べたようにバックプレーンのような送受信間の距離が長い場合でのスキュー調整が難しく、そのために、転送速度にも限界があり、高速転送できない問題点があった。本発明の目的はデータとクロックを並列転送し、且つ、バックプレーンを経由するなどのように伝送路が長くスキューが大きな場合において、高速転送が可能なデスキュー制御方式を提供することにある。
【０００５】
【課題を解決するための手段】
上記の目的を達成するためクロックおよびデータ各々１ｂｉｔ毎に、データを受信するレシーバと最初にデータをラッチするフリップフロップの間に可変なディレイ回路を設け、データ転送を実施する前に受信データの安定領域を検出する検出パターンを繰り返し送信し、各可変なディレイ回路をデータを確実に読み取れるディレイ値に設定する。
【０００６】
【発明の実施の形態】
以下、本発明の実施形態に関し図面を用いて詳細に説明する。
図１は本発明の一実施形態であるディスクアレイ制御装置の構成図である。ディスクアレイ制御装置は、ホストコンピュータ１１０とのインタフェースを制御する複数のチャネルアダプタボード１３０と、ハードディスクドライブ１２０とのインタフェースを制御する複数のディスクアダプタボード１４０と、各ボード間のデータ転送をスイッチング制御する複数のスイッチパッケージ１６０と、データの一時保持を行うキャッシュメモリとのインタフェースを制御するキャッシュボード１７０とで構成され，バックプレーン１５０を経由してスイッチパッケージ１６０とチャネルアダプタボード１３０、スイッチパッケージ１６０とディスクアダプタボード１４０および、スイッチパッケージ１６０とキャッシュボード１７０間を、それぞれクロック信号１８１、１８３、１８５とコマンド・データバス１８２、１８４、１８６とで接続する。チャネルアダプタボード１３０は、チャネルインタフェース制御ＬＳＩ１３１、ブリッジＬＳＩ１３２、制御ＣＰＵ部１３３およびメモリ１３４とで構成され、ディスクアダプタボード１４０は、ディスクインタフェース制御ＬＳＩ１４１、ブリッジＬＳＩ１４２、制御ＣＰＵ部１４３およびメモリ１４４とで構成され、スイッチボード１６０はスイッチ制御ＬＳＩで構成され、キャッシュボード１７０はキャッシュメモリＩ／Ｆ制御ＬＳＩ１７１とキャッシュメモリ１７２で構成される。このディスクアレイ制御装置では冗長性を持たせるためパッケージが複数枚で構成され多くなっており、バックプレーン１５０の配線距離が長くなるためスキューが大きくなる問題がある。
【０００７】
このような装置においては、消費電力の低減のため必要なときだけデータと一緒にクロック信号が転送される。また、高速なデータ転送では、今まで、クロックのマージンでカバー出来たような比較的短距離でのデータとクロックのスキューでも問題となっている。
【０００８】
そこでバックプレーン１５０でのデータ転送するブリッジＬＳＩ１３２，１４２、スイッチ制御ＬＳＩ１６１内部および、キャッシュメモリＩ／Ｆ制御ＬＳＩ１７１に各々デスキュー回路１０１を設ける。
【０００９】
図２は本発明の一実施形態であるデスキュー回路１０１の回路図である。本実施例ではデータバス５０の内の１回線（１ビット分）を示している。データについての他の回線に関しては同一のため図示が省略されている。データバス５０からのデータとクロック信号線からのクロック信号７１は送信側から一緒に出力される。受信側では受信したデータ信号とクロック信号からデータの読み取りを行う。このとき、データ信号同士、およびデータ信号とクロック信号の遅延時間に差が出来、スキューが生じる。本発明はこのスキューを調整するものである。
【００１０】
この回路の概略の動作を先ず説明する。本来のデータの転送に先立って、初期のスキュー補正が行われる。初期のスキュー補正時には、予め定められた図５に示すようなテストパターンを含むスキュー補正用のデータが転送される。始めに、全てのデータ線のデータについてクロックの立ち上がりエッジがデータの立下りエッジより遅くなるよう繰り返し調整する。即ち、最も遅延の大きいデータビットの立下りエッジよりクロックの立ち上がりエッジの遅延が大きくなるよう調整する。これは、後述するようにデータの立ち上がりと立下りの位置を検知することが出来るようにするためである。このようにして可変ディレイ回路２２の初期ディレイ値、即ちクロックのディレイ値を確定する。　データバスの１ビット分がデータ入力用バッファ１を通り、内部データ入力信号５１として可変ディレイ回路２に与えられる。一方、クロック信号７１はクロック用入力バッファ２１を通り、内部クロック入力信号７２として可変ディレイ回路２２に与えられる。
【００１１】
先ほどの可変ディレイ回路２２の初期ディレイ値確定後、データの各信号線のビット毎にデータに少しずつ（ディレイ調整最小単位ずつ、またはそれ以上のディレイ量ずつ）ディレイを加え、データの立下りと、立ち上がりのエッジとがクロックの立ち上がりエッジに合うディレイ量を求める。具体的には、最初に‘１’を検出するサイクルとディレイ値が明確になったところでフリップフロップ８の出力がメタステーブルでないことおよび、クロック等のジッタの影響を受けない遅延値か確認するため複数回安定して‘１’が検出できるかを確認する。安定して受信できない場合はディレイ値を増減させ、安定して受信できるディレイ値ＲＥＧＤ１を確定させる。これはディレイ制御回路３０から調整値が出力され、カウンタ兼レジスタ３にこの値を積算して可変ディレイ回路２を制御する。　次に、送信側はパターン２の繰返しデータ２とクロックを送信する。ディレイ制御回路▲１▼　３０はパターン２の送信を確認後、ディレイ値信号５３をディレイ値ＲＥＧＤ１に設定して該当サイクルで‘０’を安定して検出できるか確認する。‘０’が検出できない場合はディレイ値を増加させ‘０’が安定して受信できるディレイ値を探し、ディレイ値ＲＥＧＤ１を変更し確定させる。以上でまず始点のエッジ検出が完了となる。
【００１２】
次に、終点のエッジを検出するため、引き続き送信側はパターン２の繰り返しデータとクロックを送信する。データの可変ディレイ値を増加させて‘１’検出するサイクルを探す。最初に‘１’検出するサイクルとディレイ値が明確になったところでＦ／Ｆ１３の出力がメタステーブルでないことおよびクロック等のジッタの影響を受けないディレイ値か確認するため複数回安定して‘０’が検出出来るかを確認する。安定して受信できない場合はディレイ値を増減させ、安定して受信できるディレイ値ＲＥＧＤ２を確定させる。
【００１３】
次に、送信側は再度パターン１の繰返しデータ１とクロックを送信する。ディレイ制御回路▲１▼　１はパターン１の送信を確認後、ディレイ値信号５３をディレイ値ＲＥＧＤ２に設定して該当サイクルで‘１’を安定して検出できるか確認する。‘１’が検出できない場合はディレイ値を増加させ‘１’が安定して受信できるディレイ値を探し、ディレイ値ＲＥＧＤ２を変更し確定させる。以上で終点のエッジ検出が完了となる。
【００１４】
次に上記で検出した始点エッジのディレイ値ＲＥＧＤ１と終点エッジのディレイ値ＲＥＧＤ２より始点と終点の中間点のディレイ値を演算により算出する。この中間のディレイ値をディレイ信号５３に設定する。次に送信側にランダムパターンの転送要求をし、送信パターンと受信パターンが一致し、安定して正しくデータが受信可能なことを確認する。これにより、該当ディレイ値で安定してデータを受信できることが分かり、マージンの確保ができるディレイ値にディレイ値信号５３を設定する。これにより、ディレイ調整が完了し、データ信号５６とクロック５８が同期できるのでディレイ調整完了信号８７を有効にする。これにより、一方向のディレイ調整が完了する。
【００１５】
この結果から、Ｆ／Ｆ８からの出力６７であるデータの立下り位置と立ち上がり位置の中央がクロックの立ち上がりに一致するようにデータに可変ディレイ回路２によってデータにディレイを加える。このディレイ量はデータの立下りがクロックの立ち上がりに合ったディレイ量とデータの立ち上がりがクロックに合ったディレイ量の平均値である。以上により初期のスキュー調整が実現される。
【００１６】
この後、送信側はスキュー調整開始信号８１を無効にし、デスキュー制御回路は正常に終了している場合は最初に受信した側がスキュー調整開始信号８１を有効にして逆方向のデスキュー調整を行う。また、スキュー調整ができない場合はスキュー調整開始信号８１を無効のままとしてデスキューが正常終了していないことを最初に送信した側に知らせる。
【００１７】
次に、動作中に温度変動、電源電圧変動があってスキュー状態が変化したときの対応について説明する。フリップフロップ（以下Ｆ／Ｆと表す）９には可変ディレイ回路２２の出力７３がそのまま与えられ、Ｆ／Ｆ８にはディレイ６が加えられたクロック信号が、Ｆ／Ｆ７には更にディレイ５が加えられたクロック信号がそれぞれ与えられている。従って、Ｆ／Ｆ９，８，７の出力６２，６１，６０はそれぞれ図３のａ，ｂ，ｃのような関係になる。
【００１８】
ここで、ＥＯＲ（排他的論理和回路）１１にはＦ／Ｆ９の出力６２（ａ）とＦ／Ｆ８の出力６１（ｂ）が与えられている。ａが“０”、ｂが“１”の関係になるとＥＯＲ１１の出力が“１”となり、Ｆ／Ｆ１４の出力が“１”となるので、クロックに対してデータの位相が遅れていることが分かる。このときは、データのディレイ量を増やすよう可変ディレイ回路２を調整する。
【００１９】
一方、ＥＯＲ１０にはＦ／Ｆ７の出力６０とＦ／Ｆ８の出力６１が与えられている。ｃが“０”、ｂが“１”の関係になるとＥＯＲ１０の出力が“１”となり、Ｆ／Ｆ１２の出力が“１”となるので、クロックに対してデータの位相が進んでいることが分かる。このときは、データのディレイ量を減らすよう可変ディレイ回路２を調整する。
【００２０】
以上が図２に示した回路構成とその動作の概略の説明である。次に、主要なポイントについて更に説明する。
【００２１】
入力バッファ１と最初にデータをラッチするフリップフロップ７、８、９の間に可変ディレイ回路２を入れ、Ｆ／Ｆ８からスキュー調整されたデータ６１が出力される。Ｆ／Ｆ８はディレイ制御回路▲１▼　３０が正しいディレイ値信号５３を出力するまで入力データ５６と入力クロック５８が非同期になるため出力信号６１がメタステーブルの状態（データがハイレベルかローレベルかを特定出来ない不安定な状態）になる。そこで、出力が安定しているＦ／Ｆ１３の出力６５をディレイ制御回路▲１▼　３０に入力し、スキュー調整制御時にそのデータよりディレイ制御回路▲１▼　３０は正しいディレイ値信号５３を確定させる。
【００２２】
次にこのデスキュー回路のディレイ制御回路▲１▼　３０によるクロック７１とコマンド・データバス５０のスキュー調整の制御について説明する。図３はレシーバ・バッファ１に入力されるコマンド・データバス５０の受信波形をデータ転送単位で繰り返し重ねたアイ波形である。ノイズ等により、ジッタを持った波形であり、ウインドウ時間Ｔｗだけ安定して信号を受信できる。図４は可変ディレイにより安定して受信できるために必要なタイミング波形図である。スキュー調整時間と実際のデータ転送におけるウインドウ時間の差だけマージン確保する必要があり、最低限に必要なウインドウ時間Ｔｗはデータを受け取れるディレイ値が、図３にあるａ、ｂ、ｃの３値必要となるため可変ディレイ回路の調整最小単位の最大ディレイ値ＴｄとＦ／Ｆ８のセットアップタイム（クロックが来るまでデータが確定していなければならない時間）Ｔｓｅｔとホールドタイム（あるレベルを維持しておかなければならない時間）Ｔｈｏｌｄにより、下記式で計算できる。
Ｔｗ＞　３Ｔｄ＋Ｔｓｅｔ＋Ｔｈｏｌｄ
したがって、可変ディレイ回路のディレイ調整最小単位の最大ディレイ値Ｔｄはウインドウ時間Ｔｗの約１／３より小さくなければならない。
【００２３】
この可変ディレイのディレイ値を検出するためのパターンを図５に、制御のフローを図６に示す。送信側は図５のパターン１を繰り返し送信するのと同時に、図２のスキュー調整開始信号８１を有効にする。ディレイ制御回路３０はスキュー調整開始信号８１が有効になると図６のフローの制御を実施する。
【００２４】
次に図６のディレイ制御回路３０のフローについて説明する。最初にクロックディレイをデータのデューティの約半分ほどに設定する（６０１）。これはクロックの立ち上がりエッジをおおよそデータの立下りエッジの近くに設定するためである。送信側から図５に示すパターン１の繰返しデータ１とクロックを送信し‘１’を検出できるか確認する。検出した場合は始点と終点の間にクロックの立ち上がりエッジがあるため、該当サイクルの繰返しデータ１の始点エッジを検出ができない。‘０’を検出すればクロックの立ち上がりエッジがデータより位相が進んでいることを示す。データビットの全てについてクロックの立ち上がりエッジがデータより位相が進んでいる状態となる、即ち、全てのビットについて‘０’が検出されればクロックのディレイ値を固定にしたままで、データのディレイ値を変えるだけでデータの立ち上がりエッジと立下りエッジの位置が検出され得る。
【００２５】
全てのデータビットの検出値のＯＲを取る（６０２）。この結果、１ビットでも‘０’でないデータがあれば（６０３Ｎｏ）、更に、クロックにディレイを増加させる（６０４）。このように、次のサイクルでクロックの可変ディレイ回路２２のディレイ値を増加しながら‘１’検出を行い、‘１’を検出しなくなるまで繰り返す。こうして先に概略を述べたようにクロックのディレイ値を設定する（６０３）。図６の破線で示したところでクロックのディレイ値が決定の処理が終わる。
【００２６】
次に、図５のパターン１を連続して転送することを送信元に要求する（６０５）。例えば、２００ｐｓだけ可変ディレイ回路２のディレイ値を増加させてデータのディレイ値を増加する（６０６）。データの繰り返しサイクル内で‘１’を検出するかどうかを判定する（６０７）。‘１’を検出しなければ、まだ、データの始点がクロックの立ち上がりに達していないのでディレイ値が最大でなければ（６０８Ｎｏ）、ステップ６０６へ戻る。ディレイ値が最大であれば（６０８Ｙｅｓ）エラー表示をする（６０９）。
【００２７】
‘１’を検出すれば（６０７Ｙｅｓ）、該当１サイクル内で‘１’を検出するかどうかを判定する（６１０）。検出しなければステップ６０６へ戻る。検出すればデータの位相が進み過ぎている可能性があるので、例えば、５０ｐｓ（ここでは最小ディレイ調整単位）だけデータディレイ値を減少させる（６１１）。そして、これを‘１’を検出しなくなるまで繰り返す（６１１，６１２）。‘１’を検出しなくなることはデータのディレイを少なくしすぎたことを意味するので、５０ｐｓデータディレイを増加し（６１３）、これで‘１’を検出するようになれば（６１４）、データの始点エッジにクロックエッジが合うようになったとし、ここで、データの始点のディレイ値としてこのディレイ値を保持する（６１５）。
【００２８】
次に図５のパターン２のデータの転送を要求する（６１６）。そして、‘０’を検出しない場合は５０ｐｓデータディレイを増加し（６１８）、検出した場合はその時のデータディレイ値を保持する（６１９）。この値が始点エッジの位置として設定される（６２０）。以上で始点の検出は終了する。
【００２９】
次に、終点の検出の処理に入る。図５のパターン２のデータを受信しながら、２００ｐｓだけデータのディレイ値を増加させる（６１９）。繰り返しサイクル内で‘１’を検出しなければ（６２２Ｎｏ）ディレイ値が最大にならない限り（６２３）、ステップ６２１に戻る。ディレイ値が、可変ディレイ回路２の可能なディレイ量の最大であればデスキュー調整エラー処理を行う（６２４）。‘１’を検出すると、該当サイクル内で‘１’を検出するかを判定し（６２５）、検出している限りは、５０ｐｓずつデータディレイ値を減少させる（６２６）。‘１’が検出されなくなると５０ｐｓだけデータディレイ値を増加させる（６２７）。そして、該当サイクルで‘１’が検出されればそれはパターン２のデータの終点である（６２８）。
【００３０】
その後更に、図５パターン１のデータの転送を要求する（６２９）。５０ｐｓだけデータディレイ値を減少させ（６３０）、該当サイクルに‘０’を検出すると、ステップ６３０に戻る（６３１Ｙｅｓ）。‘０’を検出しないと、若干クロックの方が位相が進んでいることになるので５０ｐｓだけデータディレイ値を増加させ、データの位相の方を進ませる（６３２）。これで‘１’を検出すれば（６３３Ｙｅｓ）、そこが終点エッジとしてそのときのデータのディレイ値を保持する（６３４）。そして、それが終点エッジの位置（ＲＥＧＤ２）として設定される（６３５）。ステップ６３３で‘１’が検出されなければステップ６３２に戻る。ここで、始点エッジと終点エッジとの中間点演算要求が出され（６３６）、中間点のデータディレイ値が求められる（６３７）。中間点のデータディレイ値を求めることはデータの中央にクロックの立ち上がりエッジが来るような関係にデータとクロックを位置付けるデータディレイ値を定めるということである。
【００３１】
以上でデータバスの１ビットについてのデータディレイ値が求まるので、図６の▲３▼に戻って次のデータビットについて同様の処理を行う。なお、説明の都合上各データビットについてシリアルに処理が行われるように表したが、一部または全部の処理が並行して実行されても良い。全部のビットについて中間点演算が終了すれば中間点設定が完了する（６３８）。すると、上記で述べた図５のような繰り返しパターンのデータではなく、ランダムパターンのデータの転送を要求する（６３９）。ここでランダムパターンのデータといってもデスキューのためのテストパターンであるため、送信されるパターンは予め決められたものである。従って、送信パターンと受信したパターンが一致しているかを判断できる（６４０）。一致すればデスキューが完了したものとみなす（６４１）。一致しなければデスキューエラーであり、エラー処理が行われる（６４２）。
【００３２】
ディスクアレイ制御装置図１ではチャネルアダプタボード１３０とスイッチボード１６０、ディスクアダプタボード１４０とスイッチボード１６０または、キャシュボード１７０とスイッチボード１６０との間でデータ転送が行われ、最初にチャネルアダプタボード１３０、ディスクアダプタボード１４０および、キャッシュボード１７０からスイッチボード１６０へのデータ転送のスキュー調整を行う。次にスイッチボード１６０からチャネルアダプタボード１３０、ディスクアダプタボード１４０および、キャッシュボード１７０へのデータ転送のスキュー調整を行う。
【００３３】
このスキュー調整はパワーオンリセット解除後（パワーオン時にＦ／Ｆやレジスタがリセットされる、その処理が終わったとき）およびチャネルアダプタボード内のＣＰＵ１３３またはディスクアダプタボードのＣＰＵ１４３の指示により行う。ＣＰＵが正常終了しない場合のリトライまたは、温度や電源などの時間経過等の環境が変化した場合にスキューを再調整し、スキュー調整時と実際のデータ転送におけるウインドウ時間の差のマージンを超えないように制御する。
【００３４】
また、ＬＳＩのジャンクション温度変動および、電源電圧変動などにより転送データが正しく受信できない恐れがある場合、それを自動で検出し補正を実施することも可能である。自動検出および補正は、ディレイ制御回路▲２▼４によって制御される。
【００３５】
次にディレイ制御回路▲２▼４の制御方法について説明する。
図２に示すフリップフロップ７、８、９にはそれぞれ５７、５８、７３のクロック信号が入力されている。このクロック信号５８は７３よりディレイ６の分遅く、５７はさらにディレイ５の分遅い信号が入力される。その位相関係は図３に示すａ、ｂ、ｃのようになる。つまり、クロック信号７３がａ、クロック信号５８がｂ、クロック信号５７がｃに相当する。ディレイ調整が完了したデータ信号５６がクロック信号５７、５８、７３によってそれぞれフリップフロップ７、８、９でラッチされ、それぞれフリップフロップの出力信号６０、６１、６２に出力される。その出力信号６０と６１とを排他的論理和した信号６８を、フリップフロップ１２でクロック信号５８によってラッチされ出力信号６４が生成される。同様に出力信号６１と６２とからフリップフロップの出力信号６６が生成される。信号６４と６６はディレイ制御回路▲２▼４に入力され、信号６４が‘１’の場合、つまり図３のａとｂの位置でデータ波形の値が異なる場合（ａの位置でのデータが‘１’でｂの位置でのデータが‘０’または、ａの位置でのデータが‘０’でｂの位置でのデータが‘１’）は、クロック信号５８の位相がデ−タ信号５６の位相に対して遅れつつあり最悪の場合データを正しく受信できなくなる可能性がある。そのため、クロック信号５８を可変ディレイ回路２２を用いて遅くする（位相を進める）。または、データ信号５６をディレイ回路２を用いて早くする（ディレイを少なくする）。同様に信号６６が‘１’の場合、つまり図３のｂとｃの位置でデータ波形の値が異なる場合（ａの位置でのデータが‘１’でｂの位置でのデータが‘０’または、ａの位置でのデータが‘０’でｂの位置でのデータが‘１’）は、クロック信号の位相５８がデ−タ信号５６に対して進みつつあり最悪の場合データを正しく受信できなくなる可能性がある。そのため、クロック信号５８を可変ディレイ回路２２を用いて早くする（ディレイ量を少なくする）。または、データ信号５６を可変ディレイ回路２を用いて遅くする（ディレイ量を大きくする）。上記処理は、常時実施した場合、スキュー補正時に発生するグリッチノイズなどの影響で転送データに悪影響を及ぼす可能性がある。従って、パケット転送終了を確認して、転送が行われていない状態で、スキューの微調整の制御が可能である。もちろん転送途中であっても、上記悪影響が無い場合には転送に支障が無いため、スキューの微調整の制御が可能である。また、信号６４と６６が共に‘１’の場合、転送データが正しく受信できていないため、転送のリトライなど、エラー処理を実施する。
【００３６】
図２では簡易的に１相クロックに対しデータが１信号の場合を例にとり説明したが、データが複数ビットのバス構成の場合、同様の回路を複数組み合わせることで実現可能である。
【００３７】
図９は本発明における２相クロックの場合の一実施形態であるデスキュー回路の回路図を示す。以下、図９の実施形態について説明する。図２で説明した実施形態の場合、クロック７１の転送速度はデータ５０の転送速度に対し２倍の速度が必要となる。そのため高速でクロックとデータを並送する場合、クロックの転送速度の高速化が必要になりバックプレーンでの転送が大変困難となる。そこで、クロックを２相化してデータ転送と同一の転送速度になるようにして転送を行う。この場合に図９で示すようにクロック７１ａ，７１ｂに対応して図２の可変ディレイ回路，カウンタ兼レジスタ、フリップフロップ、ディレイ、ＥＯＲおよびディレイ制御回路（スキュー補正）をそれぞれ２つ設ける。また、２相クロックで受けた場合に出力データの位相が異なるので、フリップフロップ８ａの出力信号６１ａをフリップフロップ１５ａにより同一クロック２１ｂでラッチし直すことにより出力データの位相をクロック２１ｂに合わせる。
【００３８】
図９におけるスキュー調整時のパターンとデータ転送時の波形を図１０に示す。スキュー調整時はクロック２１ａとクロック２１ｂは同相で転送し、同時にスキュー調整を実施する。通常のデータ転送時はクロック２１ａとクロック２１ｂを逆相で転送する。
【００３９】
図２および図９におけるデータ転送方式は、並送するクロックと転送するデータおよびコマンドの数が同一の場合の一実施形態である。
【００４０】
図１１に本発明のデータ転送時にクロックを並走するデータ転送で転送するコマンドおよびデータよりクロックが多い場合の一実施形態であるデスキュー回路の回路図を示す。図１１はコマンド・データ転送を開始する前にクロック信号を数サイクル送信し、クロックのパターン依存によるジッタを除く。また、転送終了後、スキュー調整のフリックフロップ７，８，９，１５，１６，１７のラッチを正常に実施するまでクロックを数サイクル追加して転送する。このようにデータ転送時にクロックを並送するデータ転送で転送するコマンドおよびデータよりクロックを多くしている。図２および図９に示すデスキュー回路は転送するコマンドおよびデータとクロックの数が同一で動作する回路であるため、転送するコマンド、データおよびクロック間のスキュー調整の範囲がせまくなる。したがって、クロックの１サイクル以上のスキュー調整は不可能である。一方図１１で示すデスキュー回路はフリップフロップ７，８，９の後段にシリアルにフリップフロップ１５，１６，１７を接続し、セレクタ回路により前段と後段のフリップフロップを選択することにより、クロックの２サイクルまでのスキュー調整が可能となる。即ち、１サイクル以内のスキューであれば、信号線６０、６１、６２が選択され、２サイクル以内のスキューであれば、信号線９１、９２、９３が選択される。図１１ではフリップフロップ７，８，９の後段にシリアル１段のみフリップフロップを接続したが、そのシリアルに接続するフリップフロップの段数を増加することにより、クロックの２サイクル以上のスキュー調整が可能となる。これにより、より高速なデータ転送が可能となる。
【００４１】
本実施例のように、データを受信するレシーバと最初にデータをラッチするＦ／Ｆとの間に可変ディレイ回路を設けたことにより、調整後はＦ／Ｆには取り込み可能なデータが与えられ初段のＦ／Ｆがメタステーブルな状態にならない。
【００４２】
以上のべた本発明の実施例では、データ転送が必要な場合にのみ並送クロックを供給するだけでよく、クロックの２サイクル以上のスキュー補正も可能であり、多相クロックにも対応可能である。さらに、１パケット転送完了後のスキューの微調整が可能であり、従来の上記方式より優れている。
【００４３】
【発明の効果】
以上説明したように、ディスクアレイ装置の様な高速なデータ転送が必要な装置に関して、本発明ではクロック並走のデータ転送において、デスキュー調整を行うことで、転送周波数の向上により高速なデータ転送が実現できるという効果がある。
【図面の簡単な説明】
【図１】本発明の一実施例であるディスクアレイ装置の構成図。
【図２】本発明の一実施例である単相クロック並送型デスキュー回路図。
【図３】本発明の一実施例である受信波形図。
【図４】本発明の一実施例におけるクロックとデータの動作タイミング図。
【図５】本発明の一実施例である単相クロック用デスキュー調整用パターン図。
【図６】本発明の一実施例であるデスキュー調整の制御フローチャート図。
【図７】本発明の一実施例であるデスキュー調整の制御フローチャート図。
【図８】本発明の一実施例であるデスキュー調整の制御フローチャート図。
【図９】本発明の一実施例である２相クロック並送型デスキュー回路図。
【図１０】本発明の一実施例における２相クロック用デスキュー調整用パターン図。
【図１１】本発明の一実施例であるクロック２サイクル以上のスキュー調整可能なデスキュー回路図。
【符号の説明】
１，１ａ　…　　データ用入力バッファ
２，２ａ，２ｂ，２２，２２ａ，２２ｂ…　　可変ディレイ回路
３，３ａ，３ｂ　…　　カウンタ　兼　レジスタ
４，４ａ，４ｂ　…　　スキュー補正用ディレイ制御回路
７，７ａ，７ｂ，８，８ａ，８ｂ，９，９ａ，９ｂ，１２，１２ａ，１２ｂ，１３，１３ａ，１３ｂ，１４，１４ａ，１４ｂ，１５，１５ａ，１６，１７　…　　フリップフロップ
１０，１０ａ，１０ｂ，１１，１１ａ，１１ｂ　…　　排他的論理和回路
２１，２１ａ，２１ｂ　…　　クロック用入力バッファ
２３，２３ａ，２３ｂ　…　　レジスタ
３０　…　　初期デスキュー調整用ディレイ制御回路
３１　…　　デスキュー制御信号
５０，５０ａ　…　　データ入力信号
５１，５１ａ　…　　内部データ入力信号
５２，５２ａ，５２ｂ　…　　データの可変ディレイ回路制御信号
５３，５３ａ，５３ｂ　…　　データ用ディレイ制御初期設定値ロード信号
５４，５４ａ，５４ｂ　…　　カウンタ兼レジスタのディクリメント信号
５５，５５ａ，５５ｂ　…　　カウンタ兼レジスタのインクリメント信号
５６，５６ａ，５６ｂ　…　　ディレイ挿入後のデータ信号
５７，５７ａ，５７ｂ　…　　ディレイ調整後の標準＋αディレイ付加クロック信号
５８，５８ａ，５８ｂ　…　　ディレイ調整後の標準クロック信号
５９，５９ａ，５９ｂ　…　　ディレイ調整後の標準−αディレイ削減クロック信号
６０，６０ａ，６０ｂ，９１　…　　５７，５７ａ，５７ｂのクロックでラッチされたデータ信号
６１，６１ａ，６１ｂ，９２　…　　５８，５８ａ，５８ｂのクロックでラッチされたデータ信号
６２，６２ａ，６２ｂ，９３　…　　５９，５９ａ，５９ｂのクロックでラッチされたデータ信号
６３，６３ａ，６３ｂ　…　　ディレイ進み検出信号
６４，６４ａ，６４ｂ　…　　ラッチ後のディレイ遅れ検出信号
６５，６５ａ，６５ｂ　…　　ディレイ制御回路用の調整データ信号
６６，６６ａ，６６ｂ　…　　ラッチ後のディレイ進み検出信号
６７，６７ａ　…　　ディレイ調整後データ信号
６８，６８ａ，６８ｂ　…　　ディレイ遅れ検出信号
７１，７１ａ，７１ｂ　…　　クロック入力信号
７２，７２ａ，７２ｂ　…　　内部クロック入力信号
７３，７３ａ，７３ｂ　…　　ディレイ挿入後のクロック信号
７４，７４ａ，７４ｂ　…　　クロックの可変ディレイ回路制御信号
８１　…　　ディレイ制御回路用の制御信号
８２　…　　ディレイ制御回路用の内部制御信号
８３，８４　…　　クロック用ディレイ初期設定値ロード信号
８５，８６　…　　データ用ディレイ制御初期設定値ロード信号
８７　…　ディレイ制御完了信号
８８，８９，９０　…　　セレクタ制御信号
９４，９５，９６　…　　セレクタ出力信号
１０１　…　　デスキュー回路
１１０　…　　ホストコンピュータ
１２０　…　　ハードディスクドライブ
１３０　…　　チャネルアダプタボード
１３１　…　　チャネル・インタフェース制御ＬＳＩ
１３２，１４２　…　　ブリッジＬＳＩ
１３３，１４３　…　　制御ＣＰＵ
１３４，１４４　…　　メモリ
１３５，１３６　…　　ホストコンピュータとチャネルアダプタボード間のインタフェース信号
１４１　…　　ディスク・インタフェース制御ＬＳＩ
１４５，１４６　…　　ハードディスクドライブとディスクアダプタボード間のインタフェース信号
１３７　…　　チャネル・インタフェース制御ＬＳＩとブリッジＬＳＩ間のインタフェース信号
１３８，１４８　…　　ブリッジＬＳＩと制御ＣＰＵ間のインタフェース信号
１３９，１４９　…　　制御ＣＰＵとメモリ間のインタフェース信号
１４７　…　　ディスク・インタフェース制御ＬＳＩとブリッジＬＳＩ間のインタフェース信号
１５０　…　　バックプレーン
１６０　…　　スイッチボード
１６１　…　　スイッチ制御ＬＳＩ
１７０　…　　キャッシュボード
１７１　…　　キャッシュメモリ・インタフェース制御ＬＳＩ
１７２　…　　キャッシュメモリ
１７３　…　　キャッシュメモリ・インタフェース制御ＬＳＩとキャッシュメモリ間のインタフェース信号
１８１　…　　チャネルアダプタボードとスイッチボード間インタフェース用クロック信号
１８２　…　チャネルアダプタボードとスイッチボード間インタフェース用データ信号
１８３　…　　ディスクアダプタボードとスイッチボード間インタフェース用クロック信号
１８４　…　ディスクアダプタボードとスイッチボード間インタフェース用データ信号
１８５　…　　スイッチボードとキャッシュボード間インタフェース用クロック信号
１８６　…　スイッチボードとキャッシュボード間インタフェース用データ信号
【図１】
2004127147.tif 000003
【図２】
2004127147.tif 000004
【図３】
2004127147.tif 000005
【図４】
2004127147.tif 000006
【図５】
2004127147.tif 000007
【図６】
2004127147.tif 000008
【図７】
2004127147.tif 000009
【図８】
2004127147.tif 000010
【図９】
2004127147.tif 000011
【図１０】
2004127147.tif 000012
【図１１】
2004127147.tif 000013