(57)【特許請求の範囲】
【請求項１】
複数のポート（４０８−４１４）のそれぞれにおける単一ビットデータを、各ポートに含まれるそれぞれのデータアライナ（４０２）を介してそれぞれのパラレルビットデータに変換するステップと、
単一の論理チャネルとして前記複数のポートで受信されたデータを処理するために前記複数のポートを結合するステップとを含み、
前記複数のポートを結合するステップは、各データアライナ（４０２）に対して、前記データアライナがポートアライナ（４０６）から制御信号（５２４）を受信する場合には、前記データアライナが、前記複数のポートで受信されたデータ間のスキューを補償するために前記制御信号に基づいて前記データアライナを含む前記ポートで受信されたデータに遅延を挿入することを含む方法。
【請求項２】
各ポートで受信された前記データのフレーム境界情報を検出し、チャネルセットアップ期間中に前記検出されたフレーム境界情報を使用して各ポートで受信された前記データのフレーム整列をするステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記フレーム境界情報に基づくポートアライナ（４０６）における前記制御信号をさらに含む請求項２に記載の方法。
【請求項４】
前記フレーム境界情報が、各ポートで受信された前記データの開始位置を含む、請求項２に記載の方法。
【請求項５】
複数のポート（４０８−４１４）で受信されたデータ間のスキューを補償する機構であって、ポートアライナ（４０６）及び複数のポートを含み、各ポートが、それぞれのデータアライナ（４０２）を含む前記機構を備え、
前記機構は、前記複数のポートの各々でそれぞれに受信された単一ビットデータを各ポートに含まれるそれぞれのデータアライナを介してそれぞれのパラレルビットに変換し、単一の論理チャネルとして前記複数のポートで受信されたデータを処理するために前記複数のポートを結合するように構成されており、
前記複数のポートの結合は、各データアライナ（４０２）に対して、前記データアライナがポートアライナ（４０６）から制御信号（５２４）を受信する場合には、前記データアライナが、前記複数のポートで受信されたデータ間のスキューを補償するために前記制御信号に基づいて前記データアライナを含む前記ポートで受信されたデータに遅延を挿入することを含む装置。
【請求項６】
前記機構は、各ポートで受信された前記データのフレーム境界情報を検出し、チャネルセットアップ期間中に前記検出されたフレーム境界情報を使用して各ポートで受信された前記データのフレーム整列をするようにさらに構成されている、請求項５に記載の装置。
【請求項７】
前記ポートアライナは、前記フレーム境界情報に基づいて前記制御信号を生成するように構成される、請求項６に記載の装置。
【請求項８】
前記フレーム境界情報が、各ポートで受信された前記データの開始位置を含む、請求項５に記載の装置。
【請求項９】
プロセッサ（１５００）と前記プロセッサに結合されたメモリ（１５２６）とを有するコンピュータシステム（１５００）であって、複数のポート（４０８−４１４）で受信されたデータ間のスキューを補償する機構を有し、前記機構が、ポートアライナ（４０６）及び複数のポートを有し、各ポートが、それぞれのデータアライナ（４０２）を含む前記コンピュータシステムを備えたシステムであって、
前記機構は、
前記複数のポートの各々でそれぞれに受信された単一ビットデータを各ポートに含まれるそれぞれのデータアライナを介してそれぞれのパラレルビットデータに変換し、
単一の論理チャネルとして前記複数のポートで受信されたデータを処理するために前記複数のポートを結合するように構成されており、
前記複数のポートの結合は、各データアライナ（４０２）に対して、前記データアライナがポートアライナから制御信号（５２４）を受信する場合には、前記データアライナが、前記複数のポートで受信されたデータ間のスキューを補償するために前記制御信号に基づいて前記データアライナを含む前記ポートで受信されたデータに遅延を挿入することを含むシステム。
【請求項１０】
前記機構は、各ポートで受信された前記データのフレーム境界情報を検出し、チャネルセットアップ期間中に前記検出されたフレーム境界情報を使用して各ポートで受信された前記データのフレーム整列をするようにさらに構成されている、請求項９に記載のシステム。
【請求項１１】
前記ポートアライナは、前記フレーム境界情報に基づいて前記制御信号を生成するように構成される、請求項１０に記載のシステム。
【請求項１２】
前記フレーム境界情報が、各ポートで受信された前記データの開始位置を含む、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概して、ネットワークの分野に関し、より詳細には、シリアルリンク技術における複数のシリアルレシーバ用の自動データアライナに関する。
【背景技術】
【０００２】
シリアルポートメモリテクノロジー（Ｓｅｒｉａｌ  Ｐｏｒｔ  Ｍｅｍｏｒｙ  Ｔｅｃｈｎｏｌｏｇｙ）（ＳＰＭＴ）は、メモリ領域においてさえも高速シリアルリンク技術を使用する。このシリアルリンクは、低電力およびピン数の低減を含むいくつかの利益を提供し、ホストとメモリとの間を接続する。１つのシリアルリンクが、数Ｇｂｐｓの帯域幅をサポートすることができるが、メモリ帯域幅要件が、単一シリアルラインによってサポートされるものより高くなる場合、追加の帯域幅要件をサポートするために複数のシリアルリンクを使用しなければならない。
【０００３】
たとえば、ここで、従来のフレーム整列（ａｌｉｇｎｉｎｇ）を示す図１Ａを参照すると、コマンド１０８は、複数ビット１１０に符号化され、第２信号シリアルデータ１０２によって示すように、ビット毎に高速リンク１０２を介して送信される。このシリアル化データ１０２がレシーバ側に到着すると、これらのデータビット１１０は再びパラレル化され、第３信号逆シリアル化データ１０４によって示すように２０ビットパケット１１２等のビットパケットに格納される。しかしながら、コマンド１０８がこの受信データの中間で開始する可能性があるため、この「逆シリアル化」２０ビットデータ１０４を使用して復号することはできない。たとえば、ホストが「ａｂｃｄｅｆｇｈ」１１８を送信しても、レシーバ側の逆シリアル化データ１０４は、「ｆｇｈａｂｃｄｅ」１１６として受信される。言い換えれば、コマンド１０８の開始位置（またはヘッダ）を特定する必要があり、一方で、ホストデータ１００は、ホストにより、事前に定義されたパターンで送信される。たとえば、この場合、事前に定義されたパターンは、「ａｂｃｄｅｆｇｈ」１１８に設定されている。開始位置を見つけた後、２つの隣接する逆シリアル化データ１０４をシフトさせることにより、正しいコマンド１１４が得られる。この技法を「フレーム整列」と呼び、この整列に使用される事前に定義されたパターン１１８を「ＳＹＮＣ」キャラクタと呼ぶ。
【０００４】
しかしながら、ホストが、大量のデータを送信しなければならない場合、データは従来のフレーム及びポート整列を示す図１Ｂにおいて参照するように、複数のシリアルリンク１５２〜１６２を介して転送されることになる。複数の高速リンクの特性は互いに異なる。通常、サンプリングフロントエンドブロック（たとえばクロックデータリカバリ（ＣＤＲ））は、入来するシリアルデータ１０２をサンプリングし、それを所与のクロックでデシリアライザブロックに渡す。また、各チャネルに対するホストからレシーバまでの飛行時間は、正確に同じではない。たとえば、ホストは、データのセットを同時に送信するが、１つのレシーバはデータを第１クロックでサンプリングし、他のレシーバは、第２クロックでそれをサンプリングする。この飛行時間差または経路差を補償するために、データが後に到着するチャネル１６２よりデータが早く到着するチャネル１５８に、それぞれ、１サイクル遅延１６４を追加する必要がある。このプロセスを、コンピュータ拡張カードに対し「仮想レーン整列」１６４と呼ぶ。各データセグメントのヘッダを探し整列させる別の整列プロセス１６６もまた、仮想レーン整列のプロセスとともに行われる。
【０００５】
ここで、経路差を測定し補償する従来のプロセスを示す図２を参照すると、経路差を特定するために、識別可能な事前定義されたパターンが確定され、かつさまざまなチャネルに通信される。たとえば、図２は、コンピュータ拡張カードに対するさまざまなチャネルに関して、経路差を測定し必要なデータ整列を行う方法を示している。たとえば、処理ブロック２０２において、データストリーム内のデータを送信し、処理ブロック２０４において、ホストはデータストリーム内に２つのＣＯＭＭＡパターンを挿入し、処理ブロック２０６においてそのデータを送信する。レシーバは、ブロック２０８において、このパターンを精査する時、ブロック２１０において、各チャネルまたはポートにおけるＣＯＭＭＡキャラクタの到着時刻を検査する。レシーバは、判断ブロック２１２において、同じＣＯＭＭＡキャラクタが別のチャネルにおいて先に現れたか否かをさらに確定する。そうであり、かつＣＯＭＭＡキャラクタをまだ有していないチャネルがある場合、レシーバは、ブロック２１４において、そのチャネルを流れているデータに対して１サイクル遅延を挿入する。そうでない場合、プロセスは遅延を継続する。
【０００６】
図３は、仮想レーン整列（たとえばフレーム整列及びポート整列）を提供する従来のアーキテクチャ３００を示す。データは、シリアルリンクを介して受信されると、サンプリングエラーを最小限にするように入来するデータからクロック（ｒｃｋ）を抽出するクロックデータリカバリ（ＣＤＲ）ブロックによって、サンプリングされる。そして、ＣＤＲブロックは、その結果を、４ビットを結合してアライナブロックに渡す。アライナブロックの第１コンポーネントはデシリアライザ３０２であり、それは、５つのシフトレジスタ３０８の深さを使用して５つの逐次入来する４ビットデータを２０ビットデータに結合する。第２コンポーネントは、出力を正しい位置で開始させるフレームアライナ３０４である。デシリアライザ３０２が回復クロック（ｒｃｋ）で実行しており、フレームアライナ３０４がシステムクロック（ｃｌｋ）で実行しているため、５つのレジスタ３０８のうちの２つのレジスタは、クロックドメインを交差しながら問題を解決するように配置される。組合せは、レジスタ及びシフタを含むことができる。第３コンポーネントはポートアライナ３０６である。１サイクル遅延が必要である場合、フレームアライナ３０４から来るデータの代りに、ポートアライナ３０６に位置するレジスタからの出力が選択される。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一般に、データの整列（たとえばフレーム整列、ポート整列）または複数のチャネル間のスキューの補償は、ＰＣＩ−Ｅｘｐｒｅｓｓ等のさまざまなシリアルリンク技術で使用されている。しかしながら、ＳＰＭＴは、他のシリアル技術に比較してホストとメモリとの間の相互接続が幾分か短く、それは、チャネルにおけるデータスキューを比較的短い量に制限することができることを意味する。その差は、ホストクロックサイクルにおいて０または１となる。それは、一種のＳＹＮＣキャラクタを使用して送出チャネルおよび入来チャネルをセットアップし、データスキューを測定するために識別可能なまたは特別なキャラクタを送信しない。したがって、たとえば、チャネルがセットアップ期間にある間にデータスキューを補償するために、従来の巨大なファーストインファーストアウト（ＦＩＦＯ）ベース技法を採用することができない。
【課題を解決するための手段】
【０００８】
シリアルリンク技術における複数のシリアルレシーバ（たとえばコンピュータ拡張カード）用の自動データアライナを採用する方法、装置およびシステムを提供する。
【０００９】
一実施形態では、方法は、単一ビットの伝送データパスを、データアライナを介してパラレルビットに変換するステップであって、データが１つまたは複数のポートを介して伝送される、ステップと、データ伝送チャネルを結合してデータの伝送時のレイテンシを低減するステップであって、データ伝送チャネルの結合が、１つまたは複数のポートを介してレイテンシを整合するように遅延を挿入することをさらに含む、ステップと、を含む。
【００１０】
一実施形態では、装置は、複数のシリアルレシーバ用のデータ整列機構を有し、機構は、データアライナを有し、それにより、を介して、単一ビットの伝送データパスをパラレルビットに変換し、データは１つまたは複数のポートを介して伝送され、かつ、データ伝送チャネルを結合してデータの伝送時のレイテンシを低減し、データ伝送チャネルの結合は、１つまたは複数のポートを介してレイテンシを整合するように遅延を挿入することをさらに含む。
【００１１】
一実施形態では、システムは、プロセッサとプロセッサに結合されたメモリとを有するコンピュータシステムを有し、コンピュータシステムは、複数のシリアルレシーバ用のデータ整列機構を有し、機構は、データアライナを有し、それにより、データアライナを介して単一ビットの伝送データパスをパラレルビットに変換し、データは１つまたは複数のポートを介して伝送され、かつ、データ伝送チャネルを結合してデータの伝送時のレイテンシを低減し、データ伝送チャネルの結合は、１つまたは複数のポートを介してレイテンシを整合するように遅延を挿入することをさらに含む。
【００１２】
本発明の実施形態を、同様の参照数字が同様の要素を指している添付図面の図に、限定としてではなく例として示す。
【図面の簡単な説明】
【００１３】
【図１Ａ】従来のフレーム整列を示す。
【図１Ｂ】従来のフレームおよびポート整列を示す。
【図２】経路差を測定し補償する従来のプロセスを示す。
【図３】仮想レーン整列を提供する従来のアーキテクチャ３００を示す。
【図４】レイテンシを低減するように整列システムを提供する整列アーキテクチャの実施形態を示す。
【図５】４−２０アライナの実施形態を示す。
【図６】４−２０ビットアライナを使用して整列させるプロセスの実施形態を示す。
【図７】比較器アレイの実施形態を示す。
【図８】データパスの実施形態を示す。
【図９】フレーム整列した２０ビットデータストリームを取得する実施形態を示す。
【図１０】クロックドメイン交差問題を回避するように内部クロック信号を有する制御信号発生器の実施形態を示す。
【図１１】４−２０ポートアライナにおけるレイテンシとポインタとの間の関係の実施形態を示す。
【図１２】複数のポートにわたるポインタ値に基づくポート整列の実施形態を示す。
【図１３】ｊｍｐ信号に関連するプロセスの実施形態を示す。
【図１４】複数のデータ伝送チャネルに対して自動データ整列を行うプロセスの実施形態を示す。
【図１５】本発明の実施形態を実装することができるコンピュータシステムを示す。
【発明を実施するための形態】
【００１４】
本発明の実施形態は、概して、ポートマルチプライヤの拡張に関する。
【００１５】
ＳＰＭＴは、最初は、現行のメモリ技術で一般に見られるようなパラレルインタフェースアーキテクチャとは対照的にシリアルインタフェースアーキテクチャを採用する、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップを対象とした、新しいメモリインタフェースアーキテクチャとみなされている。ＳＰＭＴは、通常、メモリ領域においてさえも高速シリアルリンク技術を使用し、ホストとメモリとを接続する時に、低電力およびピン数の低減という利益を提供する。しかしながら、メモリ帯域幅要件が、高速リンクがサポートすることができる帯域幅（たとえば数Ｇｂｐｓ）より高くなった場合、複数のシリアルリンクを使用しなければならない。したがって、ホストが一度に大量のデータ（たとえば、読出しデータ、書込みデータ）を送信しなければならない時、メモリには、複数のシリアルリンクまたはシリアルチャネルを介して大量のデータを渡すために十分な帯域幅が提供されなければならない。物理的には複数のリンクまたはチャネルが使用されるが、通過するデータは、単一の大きい論理チャネルとして扱われ、ホストまたはメモリのシリアルポートがより大きい帯域幅を提供するように制限されるため、「ポート結合（ｂｉｎｄｉｎｇ）」と呼ばれる。
【００１６】
本発明の実施形態は、ＳＭＰＴを改良し、かつ、帯域幅の柔軟性を向上させ、ピン数を大幅に低減し、電力需要を低下させ、システム費用全体を節約することを可能にする。この技法は、特に携帯機器に対し、システム費用全体を維持するかまたは低減しながら、機能性の増大に役立つために重要であり、それは、メモリシステムのタイプが、携帯機器を設計する時に非常に重要な考慮事項であるためである。
【００１７】
単一チャネルの場合、レシーバ側におけるいかなるシリアル化データも「フレーム境界」または「ヘッダ」に整列しなければならない。また、複数チャネルの場合、各フレーム整列データは同じレイテンシを提供するように整列し、それは「チャネル間整列」と呼ばれる。一般に、フレーム境界およびヘッダは、レシーバにより、ＳＹＮＣパターン（たとえば８Ｂ１０Ｂ符号化におけるＫ２８．５）を用いて検査される。しかしながら、チャネル間整列は、ＰＨＹ層の外側で行われ、それは、長い遅延を処理するＦＩＦＯを用いて実装される。ポート結合の技法は、受信データが１つのホストからの同じデータを有することになるように、レシーバ側において同じレイテンシを有する複数のチャネルからのデータを整列させること（チャネル間整列）を指す。チャネル（またはシリアルリンク）が他のものとは異なるレイテンシを有する場合、受信データは整列しているとはみなされない。
【００１８】
データを整列させるかまたは複数のチャネル間のスキューを補償する技法は、一般に、高品位マルチメディアインタフェース（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）（ＨＤＭＩ）およびＰＣＩ−Ｅｘｐｒｅｓｓ等の他のシリアルリンク技術で使用されている。たとえば、ＨＤＭＩで使用される遷移時間最短差動信号（Ｔｒａｎｓｉｔｉｏｎ  Ｍｉｎｉｍｉｚｅｄ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｓｉｇｎａｌ）（ＴＭＤＳ）技術は、３つの赤緑青（ＲＧＢ）チャネルにおけるデータを、ピクセルデータストリーム内に現れる検出ＳＹＮＣパターン７０２と整列させる。ＦＩＦＯは、各チャネルにおいてＰＨＹおよびデータの後に配置され、ＳＹＮＣキャラクタの測定位置と整列する。複数のチャネルにわたって大きい経路差がある場合であっても、データは複数チャネル上で整列する。ＰＣＩ−Ｅｘｐｒｅｓｓの場合、複数チャネル上にデータを配置する技術を「データストライピング」と呼び、２つのＳＹＮＣキャラクタが、チャネル間のデータスキューを測定するために定期的に現れる。
【００１９】
しかしながら、ＳＰＭＴは、他のシリアル技術に比較してホストとメモリとの間の相互接続が比較的短く、それは、チャネル上のデータスキューが比較的短い量に制限されることを意味する。結果としての差は、通常、ホストクロックサイクルにおいて０または１である。一種のＳＹＣＮキャラクタを使用して、送出チャネルおよび入来チャネルがセットアップされ、データスキューを測定するために識別可能なまたは特別なキャラクタは送信されない。これは、チャネルがセットアップ期間にある間、データスキューを補償するために従来の巨大なＦＩＦＯベース技術が採用されないことを意味する。
【００２０】
図４は、レイテンシを低減するように整列システムを提供する整列アーキテクチャ４００の実施形態を示す。整列アーキテクチャ４００は、アライナ４０２、ＣＤＲ４０４、ポートアライナ４０６およびデシリアライザ４０８〜４１４を有している。一実施形態では、整列アーキテクチャ４００を使用することにより、レイテンシを低減するためにさまざまな技法が採用される。たとえば、従来は、４ビットＣＤＲ出力から、フレームアライナ内部のシフタに対する入力として準備するために、少なくとも３サイクルかかる。アーキテクチャ４００を使用して、これら３サイクルを単一サイクルまで低減することにより、このレイテンシが最小限になる。一実施形態では、４ビットＣＤＲ出力は、図３に示すようにシフトレジスタを使用する代りに単一レジスタ（図６参照）を使用して、ここでは、大きい４０ビットシフタの代りに比較的小さい８ビットシフタを用いて、正しい位置に入れられる。別の実施形態では、２つのクロック、ｒｃｋおよびｃｌｋ（たとえば図３の３１２、３１２）から、新たな動作クロック（たとえばｒｃｋ２０、ｓｃｋ４１６等）が生成され、かつそれらに取って代わることにより、２つのクロックｒｃｋおよびｃｌｋが採用される場合にもたらされるいかなるクロックドメイン交差問題も除去される。適切な制御信号を採用するこれら２つの実施形態により、フレーム整列のためのクロックサイクルが、４サイクルから２サイクルに短縮される。
【００２１】
さらに別の実施形態では、ポートアライナブロックに単一サイクル遅延がある代りに、データの入力ストリームにわずかな遅延が挿入される。たとえば、目標システムはアンダーライン（ｕｎｄｅｒｌｉｎｅ）メモリであり、ホストおよびレシーバが１つの基板に位置するため、経路差はわずかな量として維持される。さらに、この場合、フレーム整列に使用されるポインタ値を検査している間に、レシーバ側にサイクル不整合が発生する可能性があるか否かについて判断が行われ、これはさらなるサイクルを低減するのに役立つことができる。これら技法を使用して、いかなる特別なキャラクタ（たとえばＰＣＩ−ＥｘｐｒｅｓｓにおけるＣＯＭＭＡ）もなしにポート整列が行われる。
【００２２】
一実施形態では、特別なキャラクタ（たとえばＳＹＮＣ、ＣＯＭＭＡ）をなくすことにより、（１）関連するプロトコルを単純なまま維持しながらアンダーラインハードウェアが簡略化し、（２）チャネルに対してセットアップするために必要な時間（たとえばトレーニング時間）が低減する。たとえば、「チャネルセットアップ時間」内に、データパケットの開始位置が検出され見つけられる。さらに、チャネルセットアップ期間は、チャネル間データを整列させるとともにフレーム境界またはヘッダを見つけるものである。
【００２３】
一実施形態では、データの同期が、特別なキャラクタを使用することなく、チャネルセットアップ期間内に複数のチャネルに対して行われ、一方で、複数チャネル間のデータスキューが、通常のホストクロック期間の半分より短く維持される。たとえば、従来のアーキテクチャを使用することからもたらされる６クロックサイクルのレイテンシを、一実施形態による新規の技術を使用して、３サイクルのみにまで低減することができる。
【００２４】
各チャネルに割り当てられるデシリアライザ４０８〜４１４の４つのポートと、チャネルの遅延を制御する１つの制御ブロックとからなるＳＰＭＴレシーバＰＨＹを有するアーキテクチャ４００。各ポート４０８〜４１４がＣＤＲ４０４に関連することにより、所与のクロック信号ｐｃｋ４２４で、差動対（たとえばＲＸ０  ４１６）における１ビットシリアルデータが検出され、そのデータが結合されて４ビットデータとなり、回復クロック信号（ｒｃｋ）を使用して４−２０アライナ４０２に渡される。そして、４−２０アライナ４０２は、入来する４ビットデータストリームを使用して２０ビットデータを生成し、チャネルがチャネルセットアップ期間またはトレーニング時間にある間に開始ビット位置を検出し、その後、データを、記憶された位置と整列させる。ポートアライナ４０６は、４−２０アライナに与えられる信号を生成する役割を担い、その信号によって４−２０アライナがそのタスクを実行する。
【００２５】
図５は、４−２０アライナ４０２の実施形態を示す。４−２０アライナ４０２の図示する実施形態は、データパス５０８および制御パス５１０等、アライナ４０２のさまざまなコンポーネントおよび要素を提供する。データパス５０８はさまざまなレジスタマルチプレクサを含み、一方、制御パスは、制御信号発生器５０２、比較器アレイ５０４および有限状態機械（ＦＳＭ）５０８を有している。実施形態では、制御パス５１０およびそのコンポーネントは、データパス５０８に対して適当な制御信号を生成し、ＦＳＭ５０８を介して外部コンポーネントおよび機械と相互作用することにより、データパス５０８の動作を制御するものである。ＦＳＭ５０８は、外部コンポーネントおよび機械との相互作用を可能にする。
【００２６】
入来する４ビットデータストリーム（ｄ［３：０］）５１２は、２０ビットストリーム５１４にアセンブルされ、外部制御信号とフレームおよびポートが整列する。制御信号発生器５０２は、ｒｃｋ２０  ５１８とともに制御信号５１６をデータパス５０８に渡し、回復クロック（ｒｃｋ）５２２と同期しているシステムクロック（ｓｃｋ）５２０と周波数が同じである中間クロック（たとえばｒｃｋ２０）を通信する。これら信号５１６を使用して、フレーム境界内にデータを整列させる。さらに、制御信号、ｊｍｐ５２４が外部ポートアライナから受け取られることにより、各ポートが全体で整列する。これについては、図１０を参照して説明する。
【００２７】
図６は、４−２０ビットアライナを使用して整列させるプロセスの実施形態を示す。一実施形態では、２０ビットデータストリームを、４−２０アライナを使用して、たとえばこのアライナを動作させるようにＳｅａｒｃｈＦｒａｍｅ信号を発行することによって整列させる。さらに、ＦＳＭは、アライナを全体的に管理し、外部ハードウェアと通信する。
【００２８】
判断ブロック６０２において、４−２０ビットアライナに信号が受信されると、フレームを整列させるべきかについて判断を行う。整列させるべきでないと判断した場合、プロセスは判断ブロック６０２に戻って継続する。整列させるべきであると判断した場合、４−２０ビットアライナは、処理ブロック６０４において、まずポインタをクリアし、データパスが新たなポインタ値で満たされるようにし（たとえばポインタを０に設定し）、処理ブロック６０６において整列した２０ビットデータを得るために３サイクル待機する。ポインタ「０」の新たな整列データを比較器アレイが検査することにより、ＳＹＮＣパターンの最初の４ビットが、整列していない２０ビットデータ内に存在するか否かを検出し、４ビットパターンの見つかった位置を用いてポインタ値を計算する（たとえばｐｔｒ［４：０］／ｗｐｔｒ［２：０］）。これは、チャネルセットアップ期間の前半段階を表わしている。
【００２９】
判断ブロック６０８において、整列したデータ内にヘッダが見つかったか否かについて判断する。ヘッダが見つからない場合、プロセスは、プロセッサブロック６０４に戻る。ヘッダが見つかった場合、プロセスは処理ブロック６１０に進む。たとえば、各ポートからのｗｐｔｒ値は、４−２０アライナブロックに結合されたポートアライナに渡される。これらの値を検査することにより、ポートアライナは、処理ブロック６１０において、各ポート内に８ユーザインタフェース（ＵＩ）遅延を挿入すべきであるか否かを判断した。ポートアライナブロックは、この命令をｊｍｐ信号として、４−２０アライナに接続されているすべてのコンポーネントに送信する。このｊｍｐ信号およびすでに見つかっているヘッダ位置により、ブロック６１２において、比較器アレイは、ヘッダ位置に応じてポインタ値を計算する。そして、ポインタ値をレジスタに格納する。ポインタが確定すると、処理ブロック６１４において、３サイクル待機してデータパスが新たなポインタ値で満たされるようにする。これは、チャネルセットアップ期間の後半段階とみなされる。
【００３０】
判断ブロック６１６において、整列した２０ビットデータがＳＹＮＣであるか否かを確定する。そうでない場合、プロセスは処理ブロック６０４を継続する。そうである場合、処理ブロック６１８において、フレーム整列フラグをアサートする。たとえば、整列した２０ビットデータは、後半段階後に、データパスの出力（たとえばｒｘｄａｔａ［１９：０］）として配置される。４−２０アライナは、整列した２０ビットデータがＳＹＮＣである場合、フレーム境界が見つかったことを示す信号（たとえばＦｒａｍｅＬｏｃｋｅｄ信号）を発生する。整列した２０ビットデータがＳＹＮＣでない場合、４−２０アライナは、整列した２０ビットデータに関連するＳＹＮＣが見つかるまで、プロセス全体を再び実行する。
【００３１】
図７は、比較器アレイ５０４の実施形態を示す。一実施形態では、比較器アレイ５０４は、図示するように２０個の４ビット比較器７０２（たとえば４ｂ  ｃｍｐ［０］〜４ｂ  ｃｍｐ［１９］）等、任意の数の比較器を有している。４ビット抽出器７０４が、入来する２０ビットデータストリームから４ビット抽出器７０４を介して２０個の連続した４ビットデータストリームを抽出し、これら２０個の４ビット抽出データストリームは、対応する比較器７０２に渡される。各比較器は、２０個の入来する４ビットデータストリームの各々を、４ビットＳＹＮＣキャラクタの開始をトリガする４ビット定数７０６（たとえば００１０）と比較する。これら比較器のうちの１つが、チャネルセットアップ期間において「整合」を報告する可能性がある。そして、これら比較の結果は、２０−５ビット符号器７０８によって５ビットディジットに符号化され、ｓｅｔが１（たとえばｓｅｔｐｔｒ）７１２である場合、出力レジスタ７１０によってラッチされる。その間、ラッチされない信号の上位３ビットが、出力信号（たとえばｗｐｔｒ）７１４として渡され、外部ポートアライナによって使用される。
【００３２】
図８は、データパス５０８の実施形態を示す。図示するように、データパス５０８は５つの段８１０〜８１８からなる。第１段８１０は、データパス５０８に結合された外部ポートアライナから受け取られるｊｍｐ信号値８０２に応じて、２サイクル遅延を挿入することを含み、これがオンである時、２ｒｃｋサイクル（または８ＵＩ）８２０を挿入する。この段の機能については、この文書の別の場所でさらに説明する。第２段８１２は、２つの連続した４ビットデータストリームと結合される８ビット入力データストリームから、４ビットデータストリームを選択するシフタを有している。シフタは、大きい従来の４０−２０シフタに置き換わる８−４シフタを含む。この８−４シフタの機能は、２ビットｍｓｅｌ信号値８０４によって決まり得る。データパス５０８の第３段８１４は、精密にシフトしたデータを適当な順序に配置しまたは整列させることを含む。受信したパケットのヘッダが第１レジスタにおいてラッチされるようにする、関連する制御信号８０６（たとえばＩｄｅｎ）が適当に生成される。言い換えれば、データは２段で、すなわち一旦微細レベルで、その後再び粗レベルで整列する。
【００３３】
データビットストリームは、第２段８１２および第３段８１４で適当にシフトするが、整列したデータのいくつかの部分が、先のパケットから受け取られている場合もある。この１サイクル遅延を補償するために、４ビットの整列したデータが選択され、第４段８１６において、複数のマルチプレクサ８０８（たとえば４つの図示するマルチプレクサ）を使用して、上記データの前に１サイクル遅延がラッチされる。第５および最終段８１８は、整列した２０ビットデータを保持するために使用される２つのレジスタのみを有している。
【００３４】
さらに、ｊｍｐ信号８０２がトリガされる度にレイテンシが変化する。フレームアライナがフレーム整列を行う必要がない場合、代りにポートアライナがポート整列を行う。こうした状況では、ポートアライナによって検出されるように、ｊｍｐ信号８０２が生成され、第２段８１２において入力データストリーム内に２サイクル遅延が挿入される。この遅延がｒｃｋドメイン８２０で行われるため、一実施形態では、不利益は、従来のシステムで課されるものに比較して小さい。さらに、単一チャネルのみが採用される場合、これは必要でない可能性がある。しかしながら、データが複数のチャネルで到着する時、適当なｊｍｐ値８０２を選択することによりデータを整列させることができる。これについては、図１２を参照してさらに説明する。
【００３５】
図９は、フレームが整列した２０ビットデータストリームを取得する実施形態を示す。処理ブロック９０２において、整列していない４ビットデータストリームを受け取る。処理ブロック９０４において、最近の８ビットデータストリームから、整列した下位４ビットストリームを抽出する。処理ブロック９０６において、整列していない４ビットデータを格納する。判断ブロック９０８において、ループが５回実行されたか否かを判断する。実行された場合、処理ブロック９１４において、整列した２０ビットデータストリームを生成する。処理ブロック９１６において、上位１６ビットデータをｒｃｋ２０で格納し、処理ブロック９１８において、整列した２０ビットデータストリームを提供する。
【００３６】
図１０は、クロックドメイン交差問題を回避するために内部クロック信号（たとえばｒｃｋ２０  １００６）を有する制御信号発生器５０２の実施形態を示す。一実施形態では、制御信号発生器５０２では、２つのクロック、ｓｃｋ１００２およびｒｃｋ１００４が採用される。クロックｓｃｋ１００２はシステムクロックを表わし、ＦＳＭはこのクロックで動作する。クロックｓｋ１００２は２０キャラクタシンボル（たとえば２０ＵＩ）の期間を含み、一方でクロックｒｃｋ１００４は、ＣＤＲからの回復クロックを表わし、５ＵＩの期間を含む。さらに、入来するデータストリームはクロックｒｃｋ５０２で到着する。データパス５０８（図５に示すように）がデータストリームから２０ビットデータを抽出するために、２０ＵＩクロック期間を有する中間クロックが使用され、クロックｒｃｋ１００４を使用することによって生成される。このクロック信号をｒｃｋ２０  １００６と呼び、それは、制御信号発生器１００４において生成される。また、たとえば、クロック信号ｒｃｋ２０  １００６は、クロックｓｃｋ１００２から約１８０°の位相差であるような特性を有している。制御信号発生器５０２の別の役割は、比較器アレイ５０４（図５に示す）から来る所与のポインタ値（ｐｔｒ）を用いてデータパス５０８に対する制御信号を生成することである。
【００３７】
さらに、電力消費量を低減する秘訣が採用される。たとえば、チャネルが設定された後、比較器アレイは不要であり、したがって、信号（たとえばｆｌａｍｅｌｏｃｅｄ信号）がオンとなった時、整列した２０ビットデータストリームはマスクされて比較器アレイに渡され、電力消費量が低減する。
【００３８】
図１１は、４−２０ポートアライナ４０２におけるレイテンシ１１０２とポインタ１１０４との間の関係の実施形態を示す。一実施形態では、４−２０ポートアライナ４０２は、高速信号からパラレルデータを生成し、その結果をシステムクロックドメインに渡す。言い換えれば、システムクロックドメインにおけるレイテンシ１１０２は、高速チャネルの通信遅延の増大を反映して、位置１１０６、１１０８等、いくつかの位置で増大する。その間、高速チャネルにおける遅延がフレーム境界の位置に影響を与え、この情報を、ポインタ１１０４のポインタ値として得ることができる。レイテンシ１１０２とポインタ１１０４との図示するグラフィカルな関係を使用して、いくつかの本質的な点が検出され、こうした各レイテンシの増大１１０６、１１０８は、不連続点を反映している。この場合、レイテンシ１１０２は、位置１１０６、１１０８で（ｐｔｒ８、ｗｐｔｒ２で）増大する。
【００３９】
図１２は、複数のポートにわたるポインタ値に基づくポート整列の実施形態を示す。図示する実施形態は、レイテンシ１２０２とポインタ１２０４（およびｗｐｔｒ１２０６）との関係を提供し、さまざまなバー１２０８〜１２２０が、各ポートから受け取られているさまざまなｐｔｒ値１２０４およびｗｐｔｒ値１２０６を反映している。たとえば、ケース１  １２０８、１２１８に関して、バー１２０８の第１ポート１２２２は０のｗｐｔｒ値を有し、バー１２１８の第２ポート１２２４は２のｗｐｔｒ値を有し、それは、これら２つのポートに対するレイテンシが互いに異なることを示す。しかしながら、これら２つのバー１２０８、１２１８は、セーフゾーンまで右にシフトした場合、ｗｐｔｒ０の第１値はｗｐｔｒ２になり、一方でｗｐｔｒ２の第２値はｗｐｔｒ４になり、ともに同じレイテンシを生じる。２つのバー１２０８、１２１８を２つの新たなｗｐｔｒ値にシフトさせるために必要な量には、２クロックのｒｃｋすなわち８ＵＩ１２２６が必要であり、これは、２つのレジスタをデータパス５０８の第１段に配置するための１つの目的である。
【００４０】
同様に、ケース２  １２１０、１２２０の場合、バー１２１０の第１ポート１２２８はｗｐｔｒ１にあり、一方でバー１２２０の第２ポート１２３０はｗｐｔｒ３にある。２つのバー１２１０、１２２０をセーフゾーンの２つの新たなｗｐｔｒ値にシフトさせるために必要な量には、２クロックのｒｃｋすなわち８ＵＩ１２３２が必要である可能性がある。しかしながら、ケース３  １２１２、ケース４  １２１４およびケース５  １２１６の残りの図は、すでにセーフゾーンに配置されており、それらをシフトさせる必要はない。ケース１  １２０８、１２１８およびケース４  １２１４を比較すると、ポインタシフトを、１つのｗｐｔｒが０の値を有している場合であっても、他のポートからのｗｐｔｒ値に応じて判断することができる。
【００４１】
図１３は、信号（たとえばｊｍｐ信号）に関連するプロセスの実施形態を示す。図示するプロセス実施形態を使用して、ｊｍｐ信号値を決定する。ブロック１３０２において、ポートからのｗｐｔｒが有効である場合、たとえば１つのポートにおいてｗｐｔｒの用意ができると、ポートはまた、図５に示すようなｓｔａｂｌｅ信号を発生する。判断ブロック１３１０において、ポートからのすべてのｓｔａｂｌｅ信号が１である場合、ｊｍｐ値を確定する。図示する判断図には２つの経路がある。すなわち、たとえば、判断ブロック１３０４においてｗｐｔｒの１つが０である場合、かつ判断ブロック１３０６において他のｗｐｔｒ値が１または２に等しい場合、ブロック１３０８においてｊｍｐ値は１に等しい。そうでない場合、ブロック１３１４においてｊｍｐ値は０に等しい。一方、判断ブロック１３１０においてｗｐｔｒの１つの値が１である場合、かつ判断ブロック１３１２において他のｗｐｔｒが２または３に設定されている場合、ブロック１３０８においてｊｍｐ値を１に設定する。そうでない場合、ブロック１３１４においてｊｍｐ値を０に設定する。この決定を、単一サイクルにおいて同時に計算することができる。それによりまた、図５に示すように、ｊｍｐが決定したことを示すａｌｌｓｔａｂｌｅ信号が発生し、接続された４−２０アライナはそれに気づく。
【００４２】
図１４は、複数のデータ伝送チャネルに対して自動データ整列を行うプロセスの実施形態を示す。処理ブロック１４０２において、デシリアライザをオンにし、オンになった後に、フレーム境界を検出し通常動作の準備ができるように構成する。処理ブロック１４０４において、デバイスがオンになり、初期状態でホストにＳＹＮＣ２パターンを送信する。処理ブロック１４０６において、デバイスに結合されているホストがＳＹＮＣパターンを送信する。デバイスは、（デバイスの内部の）アライナに対して、フレーム境界を見つけるようにアサートし（たとえばＳｅａｒｃｈＦｒａｍｅ）、それにより、アライナは、処理ブロック１４０８において、入来するデータストリーム内のＳＹＮＣパターンの事前定義されたシーケンスを見つけようとする。処理ブロック１４１０において、アライナは、ポートアライナと相互作用して、フレーム境界を見つけ、ポート間の同期を達成する。
【００４３】
判断ブロック１４１２において、アライナの各々の出力においてＳＹＮＣパターンが見つかるか否かを確定する。見つからない場合、プロセスは処理ブロック１４１０を継続する。見つかった場合、プロセスは処理ブロック１４１４に進み、そこでアライナは、ＦｒａｍｅＬｏｃｋｅｄ信号を発生してデバイスに通知する。そして、デバイスは、処理ブロック１４１６において、ホストに通信するように、ＳＹＮＣパターンをホストに送信し始める。処理ブロック１４１８において、ホストは、チャネルセットアップの後に通常動作開始を送信する。
【００４４】
図１５は、本発明の実施形態を実装することができるコンピュータシステム１５００を示す。コンピュータシステム１５００は、情報を通信するシステムバス１５２０と、情報を処理する、バス１５２０に結合されたプロセッサ１５１０とを有している。一実施形態によれば、プロセッサ１５１０は、多数のマイクロプロセッサのうちの１つを使用して実装される。しかしながら、当業者は、他のプロセッサを使用することができることを理解するであろう。
【００４５】
コンピュータシステム１５００は、情報およびプロセッサ１５１０が実行する命令を格納する、バス１５２０に結合されたランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置１５２５（本明細書ではメインメモリと呼ぶ）をさらに備えている。メインメモリ１５２５を、プロセッサ１５１０による命令の実行中に一時変数または他の中間情報を格納するために使用することも可能である。コンピュータシステム１５００はまた、プロセッサ１５１０によって使用される静的情報および命令を格納する、バス１５２０に結合されたリードオンリメモリ（ＲＯＭ）および／または他の静的記憶装置１５２６を有することも可能である。
【００４６】
磁気ディスクまたは光ディスクおよびその対応するドライブ等のデータ記憶装置１５２５を、情報および命令を格納するためにコンピュータシステム１５００に結合することも可能である。コンピュータシステム１５００を、第２入出力（Ｉ／Ｏ）バス１５５０にＩ／Ｏインタフェース１５３０を介して結合することも可能である。表示装置１５２４、入力装置（たとえば、英数字入力装置１５２３および／またはカーソル制御装置１５２２）を含む複数のＩ／Ｏ装置を、Ｉ／Ｏバス１５５０に結合することができる。通信装置１５２１は、外部データネットワークを介して他のコンピュータ（サーバまたはクライアント）にアクセスするためのものである。通信装置１５２１は、モデム、ネットワークインタフェースカード、またはイーサネット（登録商標）、トークンリングまたは他のタイプのネットワークに接続するために使用されるもの等、他の周知のインタフェースデバイスを含むことができる。コンピュータシステム１５００は、限定されないが、ネットワークコンピュータデバイス、携帯電話、携帯情報端末（ＰＤＡ）等を含む。
【００４７】
コンピュータシステム１５００を、クライアント／サーバネットワークシステムにおいて相互接続することができる。ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、イントラネット、インターネット等を含むことができる。本文書の別の場所で述べたように、任意の数のネットワークデバイスをカスケード構造にして、ネットワーク内にネットワーク化機構を形成するポートマルチプライヤと接続されるようにすることができる。ネットワークを介して任意の数のデバイスを接続することができることが考えられる。デバイスは、ストリーミングメディアデータ等のデータストリームを、本文書で説明するプロトコルを含む、複数の標準プロトコルおよび非標準プロトコルを介して、ネットワークシステムの他のデバイスに転送することができる。
【００４８】
上記説明では、説明の目的で、本発明が完全に理解されるように、多数の特定の詳細を示している。しかしながら、当業者には、これら特定の詳細のいくつかなしに本発明を実施し得ることが理解されよう。他の場合では、周知の構造及び装置をブロック図形態で示している。図示する構成要素の間に介在する構造がある場合もある。本明細書で説明しまたは図示した構成要素は、図示または説明していないさらなる入力または出力を有している場合もある。
【００４９】
本発明のさまざまな実施形態は、さまざまなプロセスを含むことができる。これらプロセスを、ハードウェアコンポーネントによって実行することができ、またはコンピュータプログラムまたは機械実行可能命令で具現化することができ、コンピュータプログラムまたは機械実行可能命令を使用して、それら命令を用いてプログラムされた汎用または専用プロセッサあるいは論理回路に対してプロセスを実行させることができる。別法として、プロセスを、ハードウェアおよびソフトウェアの組合せによって実行することができる。
【００５０】
ポートマルチプライヤ拡張機構の実施形態内に示しまたはそれに関連するもの等、本文書を通して説明した１つまたは複数のモジュール、構成要素または要素は、ハードウェア、ソフトウェアおよび／またはそれらの組合せを含むことができる。モジュールが、ソフトウェアを含む場合、ソフトウェアデータ、命令および／または構成を、機械／電子デバイス／ハードウェアにより製造品を介して提供することができる。製造品には、命令、データ等を提供する内容を有する機械アクセス可能／可読媒体が含まれ得る。その内容により、電子デバイス、たとえば本明細書で述べたようなファイラ、ディスクまたはディスクコントローラ等の電子デバイスが、説明したさまざまな動作または命令を実行することが可能になる。
【００５１】
本発明のさまざまな実施形態の一部を、コンピュータプログラム製品として提供することができ、それは、コンピュータプログラム命令が格納されているコンピュータ可読媒体を含むことができ、コンピュータプログラム命令を使用して、コンピュータ（または他の電子デバイス）を、本発明の実施形態に従ってプロセスを実行するようにプログラムすることができる。機械可読媒体には、限定されないが、フロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）および光磁気ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能リードオンリメモリ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、または電子命令を格納するのに適している他のタイプの媒体／機械可読媒体が含まれ得る。さらに、本発明を、コンピュータプログラム製品としてダウンロードすることも可能であり、その場合、プログラムを、リモートコンピュータから要求しているコンピュータに転送することができる。
【００５２】
方法の多くを、それらの最も基本的な形態で説明しているが、本発明の基本的な範囲から逸脱することなく、方法の任意のものにプロセスを追加するかまたは任意のものから削除することができ、かつ説明したメッセージの任意のものに情報を追加するかまたは任意のものから減じることができる。当業者には、多くのさらなる変更および改変を行うことができることが明らかとなろう。特定の実施形態を、本発明を限定するためではなく例示するために提供している。本発明の実施形態の範囲は、上述した特定の例によるのではなく以下の特許請求の範囲によってのみ確定されるべきである。
【００５３】
要素「Ａ」が要素「Ｂ」にまたは要素「Ｂ」と結合されると言う場合、要素Ａを、要素Ｂに直接結合してもよく、またはたとえば要素Ｃを介して間接的に結合してもよい。明細書または特許請求の範囲が、構成要素、特徴、構造、プロセスまたは特性Ａによって、構成要素、特徴、構造、プロセスまたは特性Ｂがもたらされると述べる場合、それは、「Ａ」が少なくとも「Ｂ」の部分的な要因であるが、「Ｂ」をもたらすのに役立つ、少なくとも１つの他の構成要素、特徴、構造、プロセスまたは特性もあり得ることを意味する。明細書が、ある構成要素、特徴、構造、プロセスまたは特性が、含まれ「てもよい」、含まれる「可能性がある」または含まれ「得る」ことを示す場合、その特定の構成要素、特徴、構造、プロセスまたは特性は、含まれることが必須ではない。明細書または特許請求の範囲が「１つの」要素について言及する場合、これは、説明する要素の１つしかないことを意味するものではない。
【００５４】
実施形態は、本発明の実施態様または例である。明細書において「ある実施形態」、「一実施形態」、「いくつかの実施形態」または「他の実施形態」と言及する場合、それは、その実施形態に関して説明する特定の機能、構造または特性が、必ずしもすべての実施形態ではなく、少なくともいくつかの実施形態に含まれることを意味する。「ある実施形態」、「一実施形態」または「いくつかの実施形態」がさまざまに現れる場合、それは、必ずしも同じ実施形態を指しているとは限らない。本発明の例示的な実施形態の上述した説明において、本開示を簡素化し、かつさまざまな発明の態様のうちの１つまたは複数の理解に役立つ目的で、さまざまな特徴を単一の実施形態、図またはその説明にまとめている場合があることが理解されるべきである。しかしながら、この開示方法は、請求項に記載した発明が、各請求項において明示的に列挙されている以外の特徴を必要とするという意図を反映しているものと解釈されるべきではない。そうではなく、以下の特許請求項が反映しているように、本発明の態様は、単一の上述した実施形態のすべての特徴のうちの一部にある。したがって、特許請求の範囲は、本明細書に明示的に組み込まれ、各請求項は、本発明の別個の実施形態として独立している。
【図１Ａ】
0005568089.tif 000002
【図１Ｂ】
0005568089.tif 000003
【図２】
0005568089.tif 000004
【図３】
0005568089.tif 000005
【図４】
0005568089.tif 000006
【図５】
0005568089.tif 000007
【図６】
0005568089.tif 000008
【図７】
0005568089.tif 000009
【図８】
0005568089.tif 000010
【図９】
0005568089.tif 000011
【図１０】
0005568089.tif 000012
【図１１】
0005568089.tif 000013
【図１２】
0005568089.tif 000014
【図１３】
0005568089.tif 000015
【図１４】
0005568089.tif 000016
【図１５】
0005568089.tif 000017