(57)【特許請求の範囲】
【請求項１】
リンク・パートナ間のスペア・レーンの使用を調整するための方法であって、
リンク・パートナからのデータを分析して、破損レーンを識別するステップと、
前記破損レーンを前記リンク・パートナに通信するステップであって、
前記破損レーンに対応する送信レーンを識別するステップと、
スペア・データ・レーンを使用して、前記対応する送信レーンに意図されるデータの組を送信するステップと、
前記対応する送信レーンを使用して、不良データを前記リンク・パートナに送信するステップと、
を含む、前記リンク・パートナに通信するステップと、
を含む方法。
【請求項２】
前記不良データは、前記リンク・パートナに対する前記破損レーンを識別する、請求項１に記載の方法。
【請求項３】
前記破損レーンおよび前記スペア・データ・レーンは、ハイブリッド・メモリ・キューブ・プロトコルを使用して、データを送信する、請求項１に記載の方法。
【請求項４】
初期化フェーズ中、既知のデータ値を前記リンク・パートナに送信するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記破損レーンは、前記既知のデータ値が送信中に変更される、データ・レーンを含む、請求項４に記載の方法。
【請求項６】
前記スペア・データ・レーンは、最初はデータを送信しないデータ・レーンを含む、請求項１に記載の方法。
【請求項７】
リンク・パートナ間のスペア・レーンの使用を調整するための方法であって、
複数のデータ・レーンにおいて、リンク・パートナから第１の組のデータを受信するステップと、
前記複数のデータ・レーンにおける破損受信レーンを検出するステップと、
前記複数のデータ・レーンを使用して、前記リンク・パートナに対する前記破損受信レーンを識別するステップであって、
前記破損受信レーンに対応する送信レーンを識別するステップと、
スペア・データ・レーンを使用して、前記対応する送信レーンに意図されるデータの組を送信するステップと、
前記対応する送信レーンを使用して、破損されたデータを前記リンク・パートナに送信するステップと、
を含む、前記破損受信レーンを識別するステップと、
を含む、方法。
【請求項８】
前記複数のデータ・レーンは、方向性のあるデータ・レーンの整合した組を含む、請求項７に記載の方法。
【請求項９】
前記複数のデータ・レーンは、ハイブリッド・メモリ・キューブ・プロトコルを使用して、データを送信する、請求項８に記載の方法。
【請求項１０】
前記破損受信レーンは、データ値が送信中に変更される、データ・レーンを含む、請求項７に記載の方法。
【請求項１１】
前記スペア・データ・レーンは、最初はデータを送信しないデータ・レーンを含む、請求項７に記載の方法。
【請求項１２】
システムであって、
要求モジュールと、
複数のデータ・レーンによって前記要求モジュールに通信可能に連結された応答モジュールとを備え、
前記要求モジュールおよび前記応答モジュールは、
前記複数のデータ・レーンにおいて信号を分析して、破損レーンを識別し、
前記識別に応答して、
前記破損レーンに対応する送信レーンを識別し、
スペア・データ・レーンを使用して、前記対応する送信レーンに意図されるデータの組を送信し、
前記対応する送信レーンを使用して、不良データを送信する
ようにさらになされている、システム。
【請求項１３】
前記破損レーンおよび前記スペア・データ・レーンは、ハイブリッド・メモリ・キューブ・プロトコルを使用して、データを送信する、請求項１２に記載のシステム。
【請求項１４】
前記破損レーンは、側波帯通信チャンネルを使用することなく、前記要求モジュールおよび前記応答モジュールに通信される、請求項１２に記載のシステム。
【請求項１５】
前記破損レーンは、データ値が送信中に変更される、データ・レーンを含む、請求項１２に記載のシステム。
【請求項１６】
側波帯通信チャンネルを使用することなく、リンク・パートナ間のスペア・レーンの使用を調整するための方法であって、
初期化データを一方のリンク・パートナから受信するステップと、
前記受信した初期化データを所定の値と比較することによって、破損レーンを識別するステップと、
前記破損レーンに対応する送信レーンを識別するステップと、
前記識別された対応する送信レーンからスペア・データ・レーンにデータを迂回させるステップと、
前記識別された対応する送信レーンを使用して、不良データを前記リンク・パートナに送信して、前記破損レーンを前記リンク・パートナに通信するステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許は、その全体を参照して本明細書に組み込まれる米国特許仮出願第６１／８７６，６３６号の利益を主張する。
【０００２】
本発明は、破損データ・レーンの識別に関し、より詳細には、それに限定されないが、側波帯通信チャンネルを使用することなく、リンク・パートナ間のスペア・レーンの使用を調整することに関する。
【背景技術】
【０００３】
いくつかの例では、リンク・パートナは、Ｈｙｂｒｉｄ  Ｍｅｍｏｒｙ  Ｃｕｂｅ（本明細書では「ＨＭＣ」とも呼ばれる）からデータを送信することができる。Ｈｙｂｒｉｄ  Ｍｅｍｏｒｙ  Ｃｕｂｅは、高速論理プロセス技術とシリコン貫通ビア（ＴＳＶ：through-silicon-via）結合のメモリ・ダイの積層とを組み合わせるダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）のメモリ・アーキテクチャである。ＨＭＣは、性能および帯域幅の改良、ならびに電力効率の向上のために設計された。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許仮出願第６１／８７６，６３６号
【非特許文献】
【０００５】
【非特許文献１】Ｈｙｂｒｉｄ  Ｍｅｍｏｒｙ  Ｃｕｂｅ仕様  バージョン１．０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、リンク・パートナ間のスペア・レーンの使用を調整するための方法、システム、および設計構造体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の態様は、リンク・パートナ間のスペア・レーンの使用を調整するための方法である。方法の１つの実施形態は、リンク・パートナからのデータを分析して、破損レーンを識別するステップと、破損レーンをこのリンク・パートナに通信するステップとを含み、この通信には、側波帯通信チャンネルが必要でない。いくつかの実施形態では、破損レーンをリンク・パートナに通信するステップは、破損レーンに対応する送信レーンを識別するステップと、スペア・データ・レーンを使用して、対応する送信レーンに意図されるデータの組を送信するステップと、対応する送信レーンを使用して、不良データをリンク・パートナに送信するステップとを含む。
【０００８】
本発明の別の態様は、リンク・パートナ間のスペア・レーンの使用を調整するための方法である。方法の１つの実施形態は、複数のデータ・レーンにおいて、データ・リンク・パートナから第１の組のデータを受信するステップと、複数のデータ・レーンにおける破損受信ラインを検出するステップと、複数のデータ・ラインを使用して、このデータ・リンク・パートナに対する破損受信ラインを識別するステップとを含む。いくつかの実施形態では、データ・リンク・パートナに対する破損受信ラインを識別するステップは、破損データ・ラインに対応する送信レーンを識別するステップと、スペア・データ・ラインを使用して、対応する送信レーンに意図されるデータの組を送信するステップと、対応する送信ラインを使用して、破損されたデータをデータ・リンク・パートナに送信するステップとを含む。
【０００９】
本発明の別の態様は、要求モジュールと、複数のデータ・ラインによって要求モジュールに通信可能なように連結された応答モジュールとを備えるシステムである。いくつかの実施形態では、要求モジュールおよび応答モジュールは、複数のデータ・ラインにおいて信号を分析して、破損受信レーンを識別し、識別に応答して、スペア・データ・レーンを使用して、破損レーンに意図されるデータの組を送信し、破損レーンを使用して、不良データを送信するようにさらになされている。
【００１０】
本発明の別の態様は、第２のリンク・パートナに通信可能なように連結された第１のリンク・パートナを備えるシステムである。いくつかの実施形態では、第１のリンク・パートナは、第２のリンク・パートナから受信したデータを分析して、破損受信レーンを識別し、破損受信レーンを第２のリンク・パートナに通信するようになされ、通信には、側波帯通信チャンネルが必要でない。別の実施形態は、このシステムを設計し、製造し、または試験するための、マシン可読媒体に有形に実装される設計構造体を含む。
【００１１】
本発明の別の態様は、第２のリンク・パートナに通信可能なように連結された第１のリンク・パートナを備えるシステムである。いくつかの実施形態では、第１のリンク・パートナは、複数のデータ・レーンにおいて、第２のデータ・リンク・パートナから第１の組のデータを受信し、複数のデータ・レーンにおける破損ラインを検出し、複数のデータ・ラインを使用して、第２のデータ・リンク・パートナに対する破損ラインを識別するようになされている。別の実施形態は、このシステムを設計し、製造し、または試験するための、マシン可読媒体に有形に実装される設計構造体を含む。
【図面の簡単な説明】
【００１２】
【図１】破損データ・レーンを識別し、スペア・データ・レーンを使用することができるコンピューティング・デバイスの例である。
【図２】要求モジュールおよび応答モジュールが使用するデータ・レーンの例示図である。
【図３】破損データ・レーンを識別することができる方法の例示的なプロセス・フロー図である。
【図４】破損データ・レーンをリンク・パートナに通信する方法の例示的なプロセス・フロー図である。
【図５】図４の方法の、動作に際しての例示図である。
【図６】図４の方法の、動作に際しての例示図である。
【図７】図４の方法の、動作に際しての例示図である。
【図８】死んでいるデータ・ラインを識別し、補償するために、図４〜図７におけるハンドシェイクを使用する方法の例示的なプロセス・フロー図である。
【図９】半導体の設計、製造、または試験、あるいはそれらのすべてで使用される設計プロセスのフロー図である。
【発明を実施するための形態】
【００１３】
多くのコンピューティング・デバイスは、様々なハードウェア・コンポーネント間で送信されるデータ・パケットが信頼できるかどうかを判定するのに初期化プロセスを使用する。例えば、コンピューティング・デバイスの要求ハードウェア・コンポーネントが、ある時間期間、同じ値を伴うビットの組を送信することができる。コンピューティング・デバイス内の応答ハードウェア・コンポーネントが、要求ハードウェア・コンポーネントからそのビットの組を受信することができる。応答ハードウェア・コンポーネントは、受信したビットの組が同じ値を有すると判定し、ビットを送信するのに使用されるシステム相互接続が信頼できると判定することができる。受信側ハードウェア・コンポーネントと、送出側ハードウェア・コンポーネントとの間で送信されるビットのうちの１つまたは複数が、異なる値を有する場合、受信側ハードウェア・コンポーネントは、システム相互接続が破損（ｃｏｒｒｕｐｔ）していると決定することができる。
【００１４】
ここに示されるとおり、一般に、破損データ・レーンは、少なくとも時々、送信中に少なくとも１ビットの値を変更する任意の適切なデータ・レーンを任意の適切なシステム相互接続内に含む。例えば、破損データ・レーンは、「ゼロ」値を伴うビットを「１」値を伴うビットに変更し、または「１」値を伴うビットを「ゼロ」値を伴うビットに変更するデータ・レーンを含む場合がある。したがって、破損データ・レーンから受信したデータは、信頼できない場合がある。
【００１５】
いくつかの実施形態では、システムに堅牢性を付加するために、各通信方向に（すなわち、単方向リンクごとに）スペア・レーン（ｓｐａｒｅ  ｌａｎｅ）が設けられる。本明細書に示されるスペア・データ・レーンは、概して、データを送信することは可能であるが、デフォルトによってデータを送信することはできない任意の適切なシステム相互接続内の任意の適切なデータ・レーンを示す。例えば、スペア・データ・レーンは、データ・プロトコルを使用して、データを送信するのに使用可能であり、または破損データ・レーンの検出に応答して、データを送信するのに使用可能である。本明細書に説明されるいくつかの実施形態によれば、コンピューティング・デバイスは、破損データ・レーンを検出することに応答して、スペア・データ・レーンが存在することを検出し、次いで、そのスペア・レーンに通信をシフトすることができる。その後は、コンピューティング・デバイスは、このスペア・データ・レーンを使用して、動作を継続することができる。
【００１６】
動作中に、あるリンク・パートナが破損レーンを識別すると、このリンク・パートナは、そのデータをスペア・レーンにシフトすることができる。しかし、この切替えはまた、そのリンク・パートナにも通信可能であり、それにより、当該パートナは受信するデータを適正に解釈することができる。したがって、いくつかの実施形態は、破損されたリンクを識別するリンク・パートナが、もう一方の側にスペア・レーン構成を信号伝達することを可能にするハンドシェイクをリンク立上げ中のリンク・パートナ間に規定する。より具体的には、リンク・パートナは、いったん死んでいるレシーバ（本明細書ではＲＸとも呼ばれる）レーンを識別すると、それ自体のトランスミッタ（本明細書ではＴＸとも呼ばれる）スペア・レーンの利用を開始することと、死んでいるレーンに相当するＴＸレーンにおいて、有効データの送信を中止することとを両方行うことができる。このことにより、ひいては、リンクのもう一方の側のＮＵＬＬ識別論理部は、死んでいるレーンに相当するそれのＲＸレーンにおける同期から、突然、外れることが可能になり、そのことは、そのパーティに、やはりそれのＴＸおよびＲＸ論理部をスペア・レーンにシフトさせることになる。このようにして、両方の側は、それらのスペア・レーンを利用し、死んでいるレーンの閉鎖を開始することができる。有利には、これらの実施形態は、Ｉ２Ｃなどの側波帯（ｓｉｄｅ  ｂａｎｄ）通信チャンネルを使用することなく、このハンドシェイクを行うことができる。
【００１７】
図面を参照すると、ここでは、同様の数字がいくつかの図全体を通じて同様の部分を表しているが、図１は、破損データ・レーンを識別し、スペア・データ・レーンの使用を調整することが可能なコンピュータ・システム実施形態１００の高レベル・ブロック図を表現したものを描写している。しかし、本明細書に説明される実施形態の機構および装置は、とりわけ、サーバ・コンピュータ、コンピューティング・フォン、ラップトップ・コンピュータ、デスクトップ・コンピュータ、またはタブレット・コンピュータなど、任意の適したコンピューティング・システムに等しく適用される。コンピュータ・システム１００のコンポーネントは、１つまたは複数のプロセッサ１０１、メモリ１０２、端末インターフェース・ユニット１１１、ストレージ・インターフェース・ユニット１１２、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス・インターフェース・ユニット１１３、およびネットワーク・インターフェース・ユニット１１４を備え、これらはすべて、メモリ・バス１０３、Ｉ／Ｏバス１０４、およびＩ／Ｏバス・インターフェース・ユニット１０５を介して、コンポーネント相互間の通信のために、直接または間接的に通信可能なように連結される。いくつかの実施形態では、プロセッサ１０１、またはメモリ１０２、あるいはその両方は、ダウンストリーム・データ・リンク１５６およびアップストリーム・データ・リンク１５８によって、応答モジュール１４２に連結された要求モジュール１４０を含む。
【００１８】
いくつかの実施形態では、プロセッサ１０１およびメモリ１０２は、ダウンストリーム・データ・リンク１５６およびアップストリーム・データ・リンク１５８を使用して、パケットにカプセル化されたデータを送信することができる。ダウンストリーム・データ・リンク１５６およびアップストリーム・データ・リンク１５８は、任意の適切な数のデータ・レーンを含むことができ、データを同時に送信することができる。例えば、ダウンストリーム・データ・リンク１５６およびアップストリーム・データ・リンク１５８はそれぞれ、１６本のデータ・レーンを含むことができ、各データ・レーンは、データを同時に送信することができる。ダウンストリーム・データ・リンク１５６およびアップストリーム・データ・リンク１５８のデータ・レーンは、さらに詳細に後述される。いくつかの例では、プロセッサ１０１は、要求モジュール１４０を通じて、データをメモリ１０２に送信することができ、この要求モジュール１４０は、データ、またはデータを求める要求をパケットに分離し、このパケットをダウンストリーム・データ・リンク１５６におけるデータ・レーンを通じて送出することができる。メモリ１０２は、応答モジュール１４２においてデータ・パケットを受信することができ、この応答モジュール１４２は、要求モジュール１４０から受信したデータ・パケットを解析し、評価することができる。いくつかの例では、応答モジュール１４２はまた、アップストリーム・データ・リンク１５８を通じて、要求されたデータを要求モジュール１４０に返すこともできる。いくつかの実施形態では、アップストリーム・データ・リンク１５８およびダウンストリーム・データ・リンク１５６は、とりわけ、ハイブリッド・メモリ・キューブ仕様などの任意の適切なシステム相互接続プロトコルを使用することができる。
【００１９】
コンピュータ・システム１００は、本明細書では、プロセッサ１０１と総称される１つまたは複数の汎用プログラマブル中央処理ユニット（ＣＰＵ）１０１Ａ、１０１Ｂ、１０１Ｃ、および１０１Ｄを備える。ある実施形態では、コンピュータ・システム１００は、比較的大型のシステムの典型的な複数のプロセッサを備えるが、別の実施形態では、代替として、コンピュータ・システム１００は、単一のＣＰＵシステムであってもよい。各プロセッサ１０１は、メモリ１０２に記憶される命令を実行し、１つまたは複数のレベルのオンボード・キャッシュを含むことができる。
【００２０】
ある実施形態では、メモリ１０２は、データおよびプログラムを記憶する、または符号化するためのランダムアクセス半導体メモリ、ストレージ・デバイス、またはストレージ媒体（揮発性または不揮発性のいずれか）を含むことができる。別の実施形態では、メモリ１０２は、コンピュータ・システム１００の仮想メモリ全体を表し、またコンピュータ・システム１００に連結された、またはネットワーク１３０を介して接続された他のコンピュータ・システムの仮想メモリを含んでもよい。メモリ１０２は、単一のモノリシック・エンティティであってよいが、他の実施形態では、メモリ１０２は、キャッシュ階層および他のメモリ・デバイスなど、より複雑な構成である。例えば、メモリは、複数のレベルのキャッシュに存在することができ、これらのキャッシュは、１つのキャッシュが命令を保持し、別のキャッシュが、プロセッサ１０１、すなわちプロセッサ１０１Ａ、１０１Ｂ、１０１Ｃ、および１０１Ｄによって使用される非命令データを保持するように、機能によってさらに分類可能である。メモリ１０２は、様々な、いわゆる不均等メモリ・アクセス（ＮＵＭＡ：non-uniform memory access）コンピュータ・アーキテクチャのうちのいずれかで知られているように、さらに分散され、種々のＣＰＵまたはＣＰＵの組と関連付けされ得る。
【００２１】
要求モジュール１４０および応答モジュール１４２は、プロセッサ１０１およびメモリ１０２に一体化されているように例示されている。しかし、他の実施形態では、要求モジュール１４０、または応答モジュール１４２、あるいはその両方は、システム１００において、または要求モジュール１４０および応答モジュール１４２がリモートから、例えば、ネットワーク１３０を介してアクセスされる種々のコンピュータ・システムにおいても記憶されるソフトウェア・コンポーネントとして、全体的に、または部分的に、分離した個別のハードウェア・コンポーネントとして実装され得る。したがって、要求モジュール１４０および応答モジュール１４２は、プロセッサ１０１およびメモリ１０２に常駐しているように例示されているが、これらの素子が、同じコンポーネントに、必ずしもすべて完全に含まれているとは限らない。
【００２２】
ある実施形態では、要求モジュール１４０および応答モジュール１４２は、ＨＭＣ仕様  １．０に適合する論理ゲート、半導体デバイス、チップ、回路、回路カード、または他の物理的ハードウェア・デバイス、あるいはそれらのすべてを介して、ハードウェアで実装される。他の実施形態では、要求モジュール１４０および応答モジュール１４２は、マイクロコード、すなわちファームウェアで、またはプロセッサ１０１において実行される命令として、もしくはさらに後述される機能を行うようにプロセッサ１０１において実行される命令によって解釈されるステートメントとして、あるいはその両方で、実装され得る。さらなる他の実施形態では、機能は、とりわけ、メモリ・デバイスに実装された論理部、または埋込み式コントローラに実装された論理部で、特定用途向け集積回路により実装され得る。
【００２３】
メモリ・バス１０３は、プロセッサ１０１、メモリ１０２、およびＩ／Ｏバス・インターフェース・ユニット１０５の中でデータを転送するためのデータ通信パスまたは通信ファブリックを提供する。Ｉ／Ｏバス・インターフェース・ユニット１０５は、Ｉ／Ｏバス１０４にさらに連結されて、様々なＩ／Ｏユニットとの間でデータを転送する。Ｉ／Ｏバス・インターフェース・ユニット１０５は、Ｉ／Ｏバス１０４を通じて、複数のＩ／Ｏインターフェース・ユニット１１１、１１２、１１３、および１１４と通信し、この複数のＩ／Ｏインターフェース・ユニット１１１、１１２、１１３、および１１４は、Ｉ／Ｏプロセッサ（ＩＯＰ）、またはＩ／Ｏアダプタ（ＩＯＡ）としても知られている。
【００２４】
Ｉ／Ｏインターフェース・ユニットは、多様なストレージ・デバイス、およびＩ／Ｏデバイスとの通信をサポートする。例えば、端末インターフェース・ユニット１１１は、１つまたは複数のユーザＩ／Ｏデバイスのアタッチメントをサポートし、この１つまたは複数のユーザＩ／Ｏデバイスは、ユーザ出力デバイス（ビデオ・ディスプレイ・デバイス、プロジェクタ、スピーカ、またはテレビジョン・セット、あるいはそれらのすべてなど）と、ユーザ入力デバイス（マイクロフォンおよび音声認識デバイス、ジェスチャ検出デバイス、カメラ、キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  Ｉｄｅｎｔｉｆｉｅｒ  Ｔａｇ、ライト・ペン、フィンガー、スタイラス、または他のポインティング・デバイスなど）とを含むことができる。ユーザは、ユーザ・インターフェースを使用するユーザ入力デバイスを操作して、入力データおよびコマンドをユーザＩ／Ｏデバイス１２１、およびコンピュータ・システム１００に提供することができ、ユーザ出力デバイスを介して、出力データを受信することができる。例えば、ディスプレイ・デバイスに表示されるなど、ユーザ・インターフェースが、ユーザＩ／Ｏデバイス１２１を介して表され得る。ユーザＩ／Ｏデバイス１２１は、任意のサイズであってよく、ディスプレイ・デバイスを複数のユーザが同時に、または共同で、眺め、触れることに対応することができ、ある実施形態では、いずれのユーザも、ディスプレイ・デバイスの任意の場所に触れることができる。
【００２５】
ストレージ・インターフェース・ユニット１１２は、１つまたは複数のディスク・ドライブ、あるいはダイレクト・アクセス・ストレージ・デバイス１２５（代替として、それらは、ホスト・コンピュータには単一の大型ストレージ・デバイスとして見えるように構成されている一連のディスク・ドライブを含んだ、他のストレージ・デバイスとすることも可能になるが、典型的には、回転磁気ディスク・ドライブ・ストレージ・デバイスである）のアタッチメントをサポートする。別の実施形態では、ストレージ・デバイス１２５は、任意のタイプの二次ストレージ・デバイスを介して実装可能である。メモリ１０２の内容、またはそのいずれの部分も、必要に応じて、ストレージ・デバイス１２５に記憶され、ストレージ・デバイス１２５から検索され得る。Ｉ／Ｏデバイス・インターフェース・ユニット１１３は、様々な他の入力／出力デバイス、またはプリンタ、もしくはファックス・マシンなど、他のタイプのデバイスのいずれにもインターフェースを提供する。ネットワーク・インターフェース・ユニット１１４は、コンピュータ・システム１００から他のデジタル・デバイスおよびコンピュータ・システム、例えば、コンピュータ・システム１３２への１つまたは複数の通信パスを提供し、そのようなパスは、例えば、１つまたは複数のネットワーク１３０を含むことができる。
【００２６】
メモリ・バス１０３およびＩ／Ｏバス１０４は、それらのリンク・パートナの間で直接通信パスを提供する比較的単純な構造体として図１に示されているが、実際には、バス１０３、１０４は、階層構成、星形構成、もしくはウェブ構成、複数の階層バス、並列パスおよび冗長パス、または任意の適したタイプの構成でのポイントツーポイント・リンクなど、様々な形態のいずれかで構成され得る複数の種々のバス、または通信パスを含むことができる。
【００２７】
様々な実施形態では、コンピュータ・システム１００は、マルチユーザ・メインフレーム・コンピュータ・システム、シングルユーザ・システム、あるいはほとんど、もしくは全くダイレクト・ユーザ・インターフェースを有してはいないが、他のコンピュータ・システム（クライアント）からの要求を受信するサーバ・コンピュータ、または類似のデバイスである。他の実施形態では、コンピュータ・システム１００は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマート・フォン、ページャ、自動車、電話会議システム、電化製品、または任意の他の適したタイプの電子デバイスとして実装される。
【００２８】
ネットワーク１３０は、任意の適切なバス、ネットワーク、または任意の複数の、もしくはそれらの組合せであってよく、コンピュータ・システム１００およびコンピュータ・システム１３２への／からのデータ、またはコード、あるいはその両方の通信に適切な任意の適したプロトコルをサポートすることができる。様々な実施形態では、ネットワーク１３０は、コンピュータ・システム１００およびコンピュータ・システム１３２に直接または間接的のいずれかで接続されたストレージ・デバイス、またはストレージ・デバイスの組合せを表すことができる。別の実施形態では、ネットワーク１３０は、ワイヤレス通信をサポートすることができる。別の実施形態では、ネットワーク１３０は、電話線、すなわち電話ケーブルなど、ハードワイヤードの通信をサポートすることができる。別の実施形態では、ネットワーク１３０は、Ｉｎｔｅｒｎｅｔであってよく、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）をサポートすることができる。別の実施形態では、ネットワーク１３０は、ローカル・エリア・ネットワーク（ＬＡＮ）、または広域ネットワーク（ＷＡＮ）として実装される。別の実施形態では、ネットワーク１３０は、ホットスポット・サービス・プロバイダ・ネットワークとして実装される。別の実施形態では、ネットワーク１３０は、イントラネットとして実装される。別の実施形態では、ネットワーク１３０は、任意の適したセルラ・データ・ネットワーク、セル方式無線ネットワーク技術、またはワイヤレス・ネットワークとして実装される。別の実施形態では、ネットワーク１３０は、任意の適切なバス、ネットワーク、または任意の複数の、もしくはそれらの組合せとして実装される。いくつかの実施形態では、コンピュータ・システム１３２は、コンピュータ・システム１００のハードウェアおよびプログラム・コンポーネントの一部またはすべてを含むことができる。
【００２９】
図１は、コンピュータ・システム１００、ネットワーク１３０、およびコンピュータ・システム１３２という代表的なコンポーネントを描写するように意図されている。しかしながら、個々のコンポーネントは、図１に表されたものより複雑であってよく、図１に示されるもの以外の、または図１に示されるものに加えてコンポーネントが存在してよく、そのようなコンポーネントの数、タイプ、および構成は、変わることがある（例えば、追加のメモリ・コンポーネント、埋込み式コントローラ、追加のモジュール、追加のネットワーク・インターフェースなど）。そのような追加の複雑さ、または追加の変形形態のいくつかの具体的な例は、本明細書に開示されているが、これらは、ほんの一例にすぎず、必ずしも単なるそのような変形形態とは限らない。その上、図１に例示される様々なプログラム・コンポーネントは、様々なコンピュータ・アプリケーション、ルーチン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造体などの使用を含んだ、いくつかのやり方で実装可能であり、本明細書では以降、「コンピュータ・プログラム」、または簡単に「プログラム」と呼ばれる。
【００３０】
コンピュータ・プログラムは、コンピュータ・システム１００における様々なメモリおよびストレージ・デバイスに様々な時に常駐し、かつコンピュータ・システム１００における１つまたは複数のプロセッサによって読み取られ、実行されるとき、あるいは１つまたは複数のプロセッサによって実行される命令によって解釈されるとき、コンピュータ・システム１００に、本発明の実施形態の様々な態様を含むステップまたは要素を実行させるのに必要なアクションを行わせる、１つまたは複数の命令もしくはステートメントを含む。本発明の実施形態の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の実施形態の態様は、全体的なハードウェア実施形態、全体的なプログラム実施形態（ストレージ・デバイスに記憶されるファームウェア、常駐プログラム、マイクロコードなどを含む）、または本明細書において「回路」、「モジュール」、もしくは「システム」とすべて総称されることもあるプログラム態様とハードウェア態様とを組み合わせた実施形態の形態を取ることができる。さらには、本発明の実施形態は、コンピュータ可読プログラム・コードが具現化される１つまたは複数のコンピュータ可読媒体（複数可）で具現化されるコンピュータ・プログラム製品の形態を取ることもできる。
【００３１】
１つまたは複数のコンピュータ可読媒体（複数可）の任意の組合せが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、もしくはデバイス、あるいは前述の任意の適切な組合せとすることができるが、それらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例（包括的でないリスト）は、１本または複数本のワイヤを有する電気接続部、ポータブル・コンピュータ・ディスケット、ハード・ディスク（例えば、ストレージ・デバイス１２５）、ランダム・アクセス・メモリ（ＲＡＭ）（例えば、メモリ１０２）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭ）またはＦｌａｓｈメモリ、光ファイバ、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、あるいは前述の任意の適切な組合せを含むことができる。本文献の文脈では、コンピュータ可読ストレージ媒体は、命令実行のシステム、装置、もしくはデバイスによって、または命令実行のシステム、装置、もしくはデバイスに関連して、使用するためのプログラムを含んでいる、または記憶することができる任意の有形の媒体であってよい。
【００３２】
コンピュータ可読信号媒体は、例えば、ベースバンドで、または搬送波の一部として、コンピュータ可読プログラム・コードが具現化される伝播データ信号を含むことができる。そのような伝播信号は、電磁気、光学、またはそれらの任意の適した組合せを含むが、それらに限定されない多様な形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではない、かつ命令実行のシステム、装置、またはデバイスによって、あるいは命令実行のシステム、装置、またはデバイスに関連して使用するためのプログラムを通信し、伝播し、または輸送する、任意のコンピュータ可読媒体とすることができる。コンピュータ可読媒体において具現化されるプログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ、または前述の任意の適切な組合せを含むが、それらに限定されない任意の適切な媒体を使用して送信され得る。
【００３３】
本発明の実施形態の態様の動作を遂行するためのコンピュータ・プログラム・コードは、オブジェクト指向のプログラミング言語および従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書込み可能である。プログラム・コードは、ユーザのコンピュータにおいて全体的に、リモート・コンピュータにおいて部分的に、またはリモート・コンピュータもしくはサーバにおいて全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）、もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じて、ユーザ・コンピュータに接続可能であり、または接続は、外部コンピュータに（例えば、Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒを使用してＩｎｔｅｒｎｅｔを通じて）なされてもよい。
【００３４】
本発明の実施形態の態様は、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図、またはブロック図、あるいはその両方を参照して後述される。フローチャート図、またはブロック図、あるいはその両方の各ブロック、およびフローチャート図、またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読媒体において具現化されるコンピュータ・プログラム命令によって実装され得る。これらのコンピュータ・プログラム命令は、コンピュータ、または他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャート、またはブロック図、あるいはその両方の１つまたは複数のブロックによって指定される機能／行為を実装するための手段を創出するように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すことができる。これらのコンピュータ・プログラム命令はまた、コンピュータ可読媒体に記憶された命令が、フローチャート、またはブロック図、あるいはその両方の１つまたは複数のブロックによって指定される機能／行為を実装する命令を含んだ製造品を生み出すように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の形で機能するように指示することができる。
【００３５】
本発明の様々な実施形態の機能を規定するコンピュータ・プログラムは、プロセッサまたは複数のプロセッサに（直接または間接的に）動作可能なように、または通信可能なように接続され得る多様な有形のコンピュータ可読ストレージ媒体を介して、コンピュータ・システムに送達され得る。コンピュータ・プログラム命令はまた、コンピュータ、または他のプログラマブル装置において実行される命令が、フローチャート、またはブロック図、あるいはその両方の１つまたは複数のブロックにおいて指定される機能／行為を実装するためのプロセスを提供するように、コンピュータ実装プロセスを生み出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイスにおいて一連の動作ステップが行われるようにすることができる。
【００３６】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を例示している。この点で、フローチャートまたはブロック図における各ブロックは、特定の論理機能（複数可）を実装するための１つまたは複数の実行可能な命令を含むコード・モジュール、コード・セグメント、またはコードの一部分を表すことができる。いくつかの実施形態では、ブロックに注記される機能は、図に注記される順序から外れて行われてもよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはブロックは、時として、関与の機能に応じて、逆の順序で実行されてもよい。ブロック図、またはフローチャート図、あるいはその両方の各ブロック、およびブロック図、またはフローチャート図、あるいはその両方におけるブロックの組合せは、専用のハードウェアとコンピュータ命令との組合せで、指定された機能または行為を行う専用のハードウェアベースのシステムによって実装され得る。
【００３７】
本発明の実施形態はまた、取引先企業、非営利団体、政府機関、または内部組織構造体とのサービス契約の一部としても供給され得る。これらの実施形態の態様は、本明細書に説明される方法の一部またはすべてを実装するコンピューティング・サービス（例えば、コンピュータ可読コード、ハードウェア、およびウェブ・サービス）を行うようにコンピュータ・システムを構成すること、およびこのコンピューティング・サービスを展開することを含むことができる。これらの実施形態の態様はまた、取引先会社を分析すること、この分析に応答する推奨を作成すること、推奨の一部分を実装するコンピュータ可読コードを作成すること、コンピュータ可読コードを既存のプロセス、コンピュータ・システム、およびコンピューティング・インフラストラクチャに統合すること、本明細書に説明される方法およびシステムの使用を測定すること、ユーザに費用を割り当てること、ならびにこれらの方法およびシステムのユーザの使用についてユーザに課金することを含むことができる。加えて、本明細書に以降、説明される様々なプログラムは、それらが本発明の特定の実施形態で実装されることを目的とするアプリケーションに基づいて識別され得る。しかし、以下に続く任意の具体的なプログラム名称は、単に便宜上、使用されるにすぎず、したがって、本発明の実施形態は、そのような名称によって識別される、または示唆される、あるいはその両方である何らかの特別なアプリケーションにおいてのみ使用することに限定されない。図１に示される例示的な環境は、本発明を限定するように意図されていない。実際、他の代替のハードウェア環境、またはプログラム環境、あるいはその両方が、本発明の実施形態の範囲から逸脱することなく使用され得る。
【００３８】
図２は、本発明の１つの実施形態による、要求モジュール１４０と応答モジュール１４２との間で通信するために使用される例示的なデータ・レーンを示している。この実施形態では、各方向に１６本のデータ・レーンと１本のスペア・レーン、計３４本のデータ・レーンがある（明瞭にするために、ほんの一部しか図示されていない）。要求モジュール１４０は、要求ＴＸデータ・レーン、すなわち、「ＴＸ０」２０２ａ、「ＴＸ１」２０２ｂ…「ＴＸ１５」２０２ｏ（まとめてデータ・ライン２０２）を使用して、データを応答モジュール１４２に送信する。本明細書では「ＳｐａｒｅＴＸ」とも呼ばれる、要求のスペアＴＸデータ・レーン２０８は、任意の適切な数のデータ値を送信し、他の要求ＴＸライン２０２のうちのいずれか１本と置き換わることができる。同様に、応答モジュール１４２は、応答ＴＸデータ・レーン「ＴＸ０」２１８ａ、「ＴＸ１」２１８ｂ…「ＴＸ１５」２１８ｏ（まとめてデータ・ライン２１８）を使用して、データを要求モジュール１４０に送信することができる。応答のスペアＴＸデータ・レーン２２４は、任意の適切な数の異なるデータ値を送信し、他の応答ＴＸライン２１８のうちのいずれか１本と置き換わることができる。
【００３９】
図３は、リンク・トレーニング中に使用するのに適切なパワーオンおよび初期化方法の１つの実施形態を例示している。この実施形態により、応答１４０および要求１４２は、データ・リンク２０２、２１８のうちのいずれかが破損しているかどうかを判定することが可能になる。動作中に、データ・レーン２０２および２１８は、タイムアウト値以下の時間期間、初期化フェーズ中にＮＵＬＬ値など、既知の値を送信する。このＮＵＬＬ値の成功裏の受信は、データ・レーン２０２および２１８が破損していないと判定するために使用され得る。例えば、ＮＵＬＬ値ゼロは、結果的に、要求モジュール１４０が、ゼロ値を伴うビットの組を応答モジュール１４２に送出することをもたらし得る。応答モジュール１４２は、そのＮＵＬＬ値以外の値を受信する場合には、送信中にエラーが生じたことを検出することができる。
【００４０】
より具体的には、この実施形態では、ブロック３１０において、応答１４２は、それのスタート状態に入り、次いで、ＮＵＬＬでない擬似ランダム・バイナリ・ストリーム（pseudo-random binary stream）（本明細書ではＰＲＢＳとも呼ばれる）など、信号を要求１４０に送信することを開始する。この初期のストリームは、要求１４０がデスクランブラ同期を得ることを禁止するように意図されている。ブロック３２０において、応答１４２のデスクランブラを初期化するために、要求１４０は、それのアイドル状態に入り、連続的にスクランブルされたＮＵＬＬ１２８ビット・パケット（本明細書ではＦＬＩＴとも呼ばれる）を応答１４２に発行する。いくつかの実施形態では、要求１４０は、任意の適切なサイズの連続的なＮＵＬＬパケットを応答１４２に発行することができる。デスクランブラ同期と同時に、応答１４２も、ＩＤＬＥ状態に入り、ブロック３３０において、やはり、スクランブルされたＮＵＬＬのＦＬＩＴを送信することを開始することができる。デスクランブラがロックを達成する（すなわち、ＮＵＬＬのフリットをデスクランブルする）ことができない場合があるので、死んでいるレーンが識別され得るのは、これらの２つのＮＵＬＬ状態中、すなわち、ブロック３２０および３３０中である。
【００４１】
次に、ブロック３４０および３５０において、要求１４０および応答１４２は、スクランブルされたトレーニング・シーケンス（本明細書ではＴＳ１とも呼ばれる）を発行することを開始することができる。ブロック３６０において、要求１４０は、要求１４０がリンク・ロックを達成した後にトレーニング・シーケンスを応答１４２に送出することを中止し、アクティブ状態に入り、スクランブルされたＮＵＬＬのＦＬＩＴを送出することを始める。またブロック３６０においては、応答１４２は、要求１４０がもはやＴＳ１シーケンスを送出していないことを理解すると同時に、ＴＳ１シーケンスを送出することを中止し、アクティブ状態に入り、やはり、スクランブルされたＮＵＬＬのＦＬＩＴを要求１４０に送り返す。システムは、ブロック３７０において、動作パケットについての準備ができている。このパワーオンおよび初期化方法についてのより多くの情報は、以下に見出され得る。
【００４２】
図４は、リンク・パートナ間のスペア・レーンの使用法を通信する１つの方法を例示している。いくつかの実施形態では、破損レーンではなくてスペア・レーンを利用するためには、リンク・パートナ１４０、１４２はともに、同じスペア・レーン構成を有していなくてはならない。その上で、破損レーンのレシーバ１４０、１４２は問題があることを識別することができるので、死んでいるレーンをディスエーブルにし、データをスペア・レーンに転送するという決定が、送信側リンク・パートナ１４０、１４２に通信される。その情報を通信する１つの適切な方法は、レシーバ１４０、１４２が、リンク初期化フローのＮＵＬＬ状態中に死んでいるレーンを識別するときに、レシーバ１４０、１４２が、それの送信されたデータを、ＲＸの死んでいるレーンの数に基づいてスペア・レーンにシフトし、元のレーンにおいて、ＮＵＬＬでない信号を送信することを開始することである。
【００４３】
より具体的には、ブロック４１０において、リンク・パートナ「Ａ」１４０、１４２における受信論理部が、受信レーンＲＸ（ｘ）を破損レーンであるとして識別する。１つの適切な識別試験は、そのレーンが、規定された閾値より高いビット誤り率（ＢＥＲ：bit error rate）を有するかどうかである。破損レーンの検出に応答して、受信側リンク・パートナ「Ａ」１４０、１４２は、破損受信レーンに対応する、それの送信レーンＴＸ（ｘ）を「死んでいる」として設定し、対応する送信レーンのデータをスペア・レーンにシフトし、破損受信レーンに対応する送信レーンＴＸ（ｘ）を通じて、不良データ（例えば、ＮＵＬＬでない信号）をリンク・パートナ「Ｂ」に意図的に送信することをブロック４２０においてすべて行う。ブロック４３０において、リンク・パートナ「Ｂ」１４０、１４２における受信論理部は、ＮＵＬＬでない信号を検出し、したがって、それの受信レーンＲＸ（ｘ）（すなわち、リンク・パートナ「Ａ」１４０、１４２についての対応する送信レーン）を死んでいるレーンとして識別する。それに応答して、リンク・パートナ「Ｂ」１４０、１４２は、それの送信レーンＴＸ（ｘ）を死んでいる（すなわち、元の破損レーン）として設定し、やはり、それの送信データをスペア・レーンにシフトする。これらのブロックの結果として、次に、両方の側は、レーン「ｘ」を死んでいるとして識別し、スペア・レーンを使用することを開始している。
【００４４】
図５〜図７は、１本のスペア・レーンとともに例示的な３レーン・リンクを参照して、図４における方法をまとめて例示している。この例では、応答１４２によって送信され、要求１４０によって受信されるレーン１は、適正に機能していない（すなわち、レーン２１８ｂ）。図５では、要求１４０および応答１４２は、それぞれがデータ・ライン２０２および２１８を経由してＮＵＬＬ信号を送信することによって、それらの初期化プロセスを開始する。応答のＴＸ１ライン（すなわち、２１８ｂ）が適正に機能していないという理由から、要求１４０のデスクランブリング論理部は、規定されたタイムアウト期間中にＮＵＬＬデータに対するロックを達成しない。要求１４０は、レーン１を死んでいるとして識別することによって応答する。
【００４５】
図６では、要求１４０は、それのデータ送信をスペア・レーンにシフトし、それのＴＸレーン１（すなわち２０２ｂ）において良好（例えば、ＮＵＬＬ）データを供給しない。ひいては、次に、応答１４２は、それのＲＸレーン１（すなわち、２０２ｂ）が破損データ・レーン（本明細書では死んでいるレーンとも呼ばれる）であることを識別する。これは、両方向（すなわち、２０２ｂおよび２１８ｂの両方）で、レーン１を効果的に「殺す（kill）」。例えば、要求１４０および応答１４２は、もはや、レーン１から信頼できるデータを検出しようと試みない。
【００４６】
図７では、応答１４２は、それ自体のデータの送信を破損レーン２１８ｂからスペア・レーン２２４に迂回させることによって、レーン１において、不良データ（例えば、ＮＵＬＬでないデータ）に反応する。次に、要求１４０および応答１４２は、レーン１ではなくてスペア・レーンを使用して、完全なリンク・ロックを達成する。描写されているように、スペア・レーン２０８、２２４が利用されるとき、識別されたスペア・レーンより高い識別子を有する各レーンは、１つの数、上にシフトされ、最も高い識別子を有する有効レーンがスペア・レーンになる。例えば、レーン１３が死んでいる場合には、レーン１３データは、レーン１４を介して送信され、レーン１４データは、レーン１５において送信され、レーン１５データは、スペア・レーンにおいて送信される。しかし、他の実施形態では、スペア・レーン２０８、２２４は、死んでいるレーンと直接、置き換わることが可能になる。
【００４７】
図８は、死んでいるデータ・ラインを識別し、補償するために、図４〜図７におけるハンドシェイクを使用する方法の例示的なプロセス・フロー図である。方法６００は、図１のコンピューティング・デバイス１００など、任意の適切なコンピューティング・デバイスを用いて実装され得る。ブロック６０２において、リンク・パートナ１４０、１４２のうちの一方が、タイムアウト値およびヌル値に部分的に基づいて、破損データ・レーンを識別する。上記で論じられたように、いくつかの実施形態では、既知の値、典型的には、ＮＵＬＬを伴うビットの組が、タイムアウト値を超えない時間期間内に送信される。送信されたビットの組がそれらの既知の値を伴って受信されない場合、他方のリンク・パートナ１４０、１４２における受領側論理部は、信号に対してロックすることができない。受領側リンク・パートナ１４０、１４２は、データ・ラインに対してロックすることに失敗した場合、そのデータ・レーンを破損としてマーク付けすることができる。
【００４８】
ブロック６０４において、破損リンクを識別したリンク・パートナ１４０、１４２は、スペア・データ・レーンが存在することを検出することができる。いくつかの実施形態では、そのリンク・パートナは、任意の適切な数のデータ・レーンを使用して、データをもう一方のリンク・パートナ１４０、１４２に送信することができる。リンク・パートナ１４０、１４２が、スペア・レーンが存在することを検出する場合、プロセス・フローは、ブロック６０６において継続する。リンク・パートナ１４０、１４２が、スペア・レーンが存在しないことを検出する場合、プロセス・フローは、ブロック６０８において終了する。
【００４９】
ブロック６０６において、破損レーンを識別したリンク・パートナ１４０、１４２は、破損データ・レーンではなくてスペア・データ・レーンを使用して、データを送出することを開始することができる。このようにして、リンク・パートナ１４０、１４２は、要求モジュール１４０と応答モジュール１４２との間の信頼できるデータ送信を可能にすることができる。
【００５０】
図９は、例えば、半導体ＩＣ論理設計、シミュレーション、試験、レイアウト、および製造で使用される例示的な設計フロー７００のブロック図を示している。設計フロー７００は、設計構造体またはデバイスを処理して、上記で説明され、本明細書に添付の図に示された設計構造体、またはデバイス、あるいはその両方を論理的に、またはそうでなければ機能的に等価に表現したものを生成するためのプロセス、マシン、または機構、あるいはそれらのすべてを含む。設計フロー７００によって処理される、または生成される、あるいはその両方である設計構造体は、データ処理システムにおいて実行される、またはそうでなければ処理されるとき、ハードウェア・コンポーネント、回路、デバイス、またはシステムを論理的に、構造的に、機械的に、またはそうでなければ機能的に等価に表現したものを生成するデータ、または命令、あるいはその両方を含むようにマシン可読送信媒体もしくはストレージ媒体において符号化可能である。マシンは、回路、コンポーネント、デバイス、またはシステムを設計する、製造する、またはシミュレーションするなど、ＩＣ設計プロセスで使用される任意のマシンを含むが、それに限定されない。例えば、マシンは、リソグラフィ・マシン、マスクを生成するためのマシン、もしくは設備、またはその両方（例えば、ｅビーム・ライタ）、設計構造体をシミュレーションするためのコンピュータ、または設備、製造、または試験プロセスで使用される任意の装置、あるいは設計構造体を機能的に等価に表現したものを任意の媒体にプログラミングするための任意のマシン（例えば、プログラマブル・ゲート、アレイをプログラミングするためのマシン）を含めることができる。
【００５１】
設計フロー７００は、設計されている表現したもののタイプに応じて変わることがある。例えば、特定用途向けＩＣ（ＡＳＩＣ）を構築するための設計フロー７００は、標準的なコンポーネントを設計するための設計フロー７００、またはプログラマブル・アレイ、例えば、Ａｌｔｅｒａ（Ｒ）Ｉｎｃ．もしくはＸｉｌｉｎｘ（Ｒ）Ｉｎｃ．によって提供されるプログラマブル・ゲート・アレイ（ＰＧＡ）もしくはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）に設計をインスタンス化するための設計フロー７００とは異なっていてもよい。
【００５２】
図９は、好ましくは設計プロセス７１０によって処理される入力設計構造体７２０を含む複数のそのような設計構造体を例示している。設計構造体７２０は、ハードウェア・デバイスを論理的に等価に機能表現したものを生み出すために、設計プロセス７１０によって生成され、処理される論理シミュレーション設計構造体とすることができる。設計構造体７２０は、やはり、または代替として、設計プロセス７１０によって処理されるときにハードウェア・デバイスの物理的構造体を機能表現したものを生成するデータ、またはプログラム命令、あるいはその両方を含むことができる。機能的、または構造的、あるいはその両方の設計特徴を表しているかどうかにかかわらず、設計構造体７２０は、コア開発者／設計者によって実装されるなどの電子的コンピュータ支援設計（ＥＣＡＤ：electronic computer-aided design）を使用して、生成され得る。マシン可読データ送信、ゲート・アレイ、またはストレージ媒体において符号化されるとき、設計構造体７２０は、設計プロセス７１０内の１つもしくは複数のハードウェア・モジュール、またはソフトウェア・モジュール、あるいはその両方によってアクセスされ、処理されて、本明細書に添付の図に示されたものなど、電子コンポーネント、回路、電子モジュールもしくは論理モジュール、装置、デバイス、またはシステムをシミュレーションし、またはそうでなければ機能的に表すことができる。そのため、設計構造体７２０は、設計またはシミュレーションのデータ処理システムによって処理されるときに回路、または他のレベルのハードウェア論理設計を機能的にシミュレーションし、またはそうでなければ表す人間可読、またはマシン可読、あるいはその両方のソース・コード、コンパイルされた構造体、およびコンピュータ実行可能コード構造体を含む、ファイル、あるいは他のデータ構造体を含むことができる。そのようなデータ構造体は、ハードウェア記述言語（ＨＤＬ：hardware-description language）設計エンティティ、あるいはＶｅｒｉｌｏｇおよびＶＨＤＬなどのより低いレベルのＨＤＬ設計言語、またはＣ、もしくはＣ＋＋などのより高いレベルの設計言語、あるいはその両方と適合する、または対応する、あるいはその両方である他のデータ構造体を含むことができる。
【００５３】
設計プロセス７１０は、好ましくは、本明細書に添付の図に示されたコンポーネント、回路、デバイス、または論理構造体の設計／シミュレーションの機能的等価物を合成し、翻訳し、またはそうでなければ処理するためのハードウェア・モジュール、またはソフトウェア・モジュール、あるいはその両方を採用し、組み込んで、設計構造体７２０などの設計構造体を含んでいることが可能なネットリスト７８０を生成する。ネットリスト７８０は、例えば、集積回路設計において、他の素子および回路への接続について記述するワイヤ、個別のコンポーネント、論理ゲート、制御回路、Ｉ／Ｏデバイス、モデルなどのリストを表す、コンパイルされた、またはそうでなければ処理されたデータ構造体を含むことができる。ネットリスト７８０は、ネットリスト７８０がデバイス向けの設計仕様およびパラメータに応じて、１回または複数回、再合成される繰返しプロセスを使用して合成され得る。本明細書に説明される他の設計構造体タイプと同様に、ネットリスト７８０は、マシン可読データ・ストレージ媒体において記録され、またはプログラマブル・ゲート・アレイにプログラミングされ得る。媒体は、磁気ディスク・ドライブもしくは光ディスク・ドライブ、プログラマブル・ゲート・アレイ、コンパクト・フラッシュ、または他のフラッシュ・メモリなど、不揮発性ストレージ媒体とすることができる。加えて、または代替として、媒体は、Ｉｎｔｅｒｎｅｔ、または他のネットワーキングの適切な手段を介して、データ・パケットがそれにおいて送信され、中間で記憶され得るシステムもしくはキャッシュ・メモリ、バッファ領域、または電気的もしくは光学的に伝導性のデバイス、および材料とすることができる。
【００５４】
設計プロセス７１０は、ネットリスト７８０を含む多様な入力データ構造体タイプを処理するためのハードウェア・モジュール、およびソフトウェア・モジュールを含むことができる。そのようなデータ構造体タイプは、例えば、ライブラリ素子７３０内に常駐し、所与の製造技術（例えば、異なる技術ノード、３２ｎｍ、４５ｎｍ、９０ｎｍなど）向けのモデル、レイアウト、および記号表現したものを含めた、一般に使用される素子、回路、およびデバイスの組を含むことができる。データ構造体タイプは、設計仕様７４０、特徴データ７５０、検証データ７６０、設計規則７７０、ならびに入力試験パターン、出力試験結果、および他の試験用情報を含むことができる試験データ・ファイル７８５をさらに含むことができる。設計プロセス７１０は、例えば、応力分析、熱分析、機械事象シミュレーション、キャスティング、モールディングおよびダイ・プレス成形などの工程についてのプロセス・シミュレーションなどの標準的な機械設計プロセスをさらに含むことができる。機械設計の当業者は、本発明の範囲および趣旨から逸脱することなく、設計プロセス７１０で使用される可能な機械設計ツールおよび適用例の範囲を認識することができる。設計プロセス７１０はまた、タイミング分析、検証、設計規則確認、配置および経路指定の工程などの標準的な回路設計プロセスを行うためのモジュールも含むことができる。
【００５５】
設計プロセス７１０は、第２の設計構造体７９０を生成するために、ＨＤＬコンパイラ、およびシミュレーション・モデル構築ツールなどの論理的および物理的な設計ツールを採用し、組み込んで、設計構造体７２０を、描写された支持データ構造体の一部、またはすべてと一緒に、任意の追加の機械設計またはデータ（適用可能な場合）と併せて処理する。設計構造体７９０は、機械的なデバイスおよび構造体のデータ交換に使用されるデータ形式（例えば、そのような機械的な設計構造体を記憶し、もしくはレンダリングするためのＩＧＥＳ、ＤＸＦ、ＰａｒａｓｏｌｉｄのＸＴ、ＪＴ、ＤＲＧ、または任意の他の適切な形式で記憶される情報）で、ストレージ媒体、またはプログラマブル・ゲート・アレイにおいて常駐する。設計構造体７２０と同様に、設計構造体７９０は、好ましくは、送信媒体、またはデータ・ストレージ媒体において常駐する、かつＥＣＡＤシステムによって処理されるときに本明細書に添付の図に示された本発明の実施形態のうちの１つまたは複数の論理的に、あるいはそうでなければ機能的に等価な形態を作成する、１つまたは複数のファイル、データ構造体、あるいは他のコンピュータで符号化されたデータ、または命令を含む。１つの実施形態では、設計構造体７９０は、本明細書に添付の図に示されたデバイスを機能的にシミュレーションする、コンパイルされた実行可能なＨＤＬシミュレーション・モデルを含むことができる。
【００５６】
設計構造体７９０はまた、集積回路のレイアウト・データ交換に使用されるデータ形式、または記号データ形式、あるいはその両方（例えば、そのような設計データ構造体を記憶するためのＧＤＳＩＩ（ＧＤＳ２）、ＧＬ１、ＯＡＳＩＳ、マップ・ファイル、または任意の他の適切な形式で記憶される情報）を採用することができる。設計構造体７９０は、例えば、記号データ、マップ・ファイル、試験データ・ファイル、設計コンテンツ・ファイル、製造用データ、レイアウト・パラメータ、ワイヤ、金属のレベル、ビア、形状、製造用ラインを経路選択するためのデータ、ならびに上記で説明され、本明細書に添付の図に示されたデバイス、または構造体を生み出すために、製造者、または他の設計者／開発者に必要な任意の他のデータなどの情報を含むことができる。次いで、設計構造体７９０は、例えば、設計構造体７９０が、テープアウトに進む、製造にリリースされる、マスク会社にリリースされる、別の設計会社に送られる、顧客に送り返されるなど、ステージ７９５に進むことができる。
【００５７】
本発明のいくつかの実施形態は、Ｈｙｂｒｉｄ  Ｍｅｍｏｒｙ  Ｃｕｂｅ仕様  バージョン１．０と適合するデバイスの一部として実装され得る。例えば、本明細書に説明されるいくつかの実施形態は、「architecture includes 17 data lanes (including one spare) and thesingle forwarded clock.（アーキテクチャは、１７本のデータ・レーン（１本のスペアを含む）と、単一の転送されたクロックとを含む）」と部分的に記載するＨｙｂｒｉｄ  Ｍｅｍｏｒｙ  Ｃｕｂｅ仕様の一部分と適合することができる。いくつかの実施形態では、本明細書に説明される技法は、任意の適切な数のデータ・レーンおよびスペア・データ・レーンを含むアーキテクチャにより実装され得る。
【００５８】
本発明の様々な実施形態の説明は、例示の目的で表されており、開示される実施形態に対して包括的にも、または限定するようにも意図されていない。多くの修正形態および変形形態が、説明された実施形態の範囲および趣旨から逸脱することなく、当業者には明らかとなるであろう。本明細書に使用される専門用語は、実施形態の原理、市場に見られる技術に対する実践的な適用例、もしくは技術的な改良について最良に説明するために、または本明細書に開示される実施形態を当業者が理解することを可能にするために選択されたものである。
【００５９】
そのため、本明細書に説明される実施形態は、すべての点で、例示的であり、限定的ではないと見なし、添付の特許請求の範囲を参照して本発明の範囲を決定することが望ましい。
【図１】
0006452705.tif 000002
【図２】
0006452705.tif 000003
【図３】
0006452705.tif 000004
【図４】
0006452705.tif 000005
【図５】
0006452705.tif 000006
【図６】
0006452705.tif 000007
【図７】
0006452705.tif 000008
【図８】
0006452705.tif 000009
【図９】
0006452705.tif 000010