(57)【特許請求の範囲】
【請求項１】
計算システムにおいてアライメントされていないデータを処理する方法であって、
入出力（Ｉ／Ｏ）デバイスからＩ／Ｏインタフェースを通してデータを受け取るステップと、
前記データが前記計算システムのキャッシュとアライメントされていないとき、前記Ｉ／Ｏデバイスに関連する前記計算システムのドライバが付加された値を無視するように、前記Ｉ／Ｏインタフェースにおいて前記データに前記値を付加することにより前記データをパディングするステップとを有する、
方法。
【請求項２】
前記パディングするステップは、前記アライメントされていないデータに対してリードモディファイライトオペレーションを実行することなく行われる、
請求項１に記載の方法。
【請求項３】
前記データは、前記Ｉ／Ｏインタフェースにおいて、ヘッダを有するパケットで受け取られるものであり、
前記方法は、アライメントされていないデータが前記Ｉ／Ｏインタフェースにおいてパディングされていることを前記ヘッダに表示するステップを有し、前記パディングは前記ヘッダにおける前記表示に応じて行われる、
請求項１に記載の方法。
【請求項４】
前記パケットのヘッダは、アライメントされていないデータはパディングされていることを表示するように、前記Ｉ／Ｏデバイスにおいて構成される、
請求項３に記載の方法。
【請求項５】
前記ドライバは、前記ドライバと前記Ｉ／Ｏインタフェースとの間の所定のコントラクトに基づき、前記付加された値を無視する、請求項１に記載の方法。
【請求項６】
前記データの長さフィールドに基づき、前記受け取ったデータの有効バイトを決定するステップを有する、
請求項１に記載の方法。
【請求項７】
前記キャッシュは、
キャッシュラインバウンダリ粒度、
ページバウンダリ粒度、
構成可能粒度、または
これらの任意の組み合わせを含むアライメント粒度に関連する、
請求項１に記載の方法。
【請求項８】
論理回路とそれに結びついたコードとを有する計算システムであって、前記コードは実行されると前記論理回路に、
入出力（Ｉ／Ｏ）インタフェースにおいて、Ｉ／Ｏデバイスへのデータを受け取らせ、
前記データが前記計算システムのキャッシュとアライメントされていないとき、前記Ｉ／Ｏデバイスに関連する前記計算システムのドライバが付加された値を無視するように、前記Ｉ／Ｏインタフェースにおいて前記データに付加された値により前記データをパディングさせる、
システム。
【請求項９】
前記パディングするステップは、前記アライメントされていないデータに対してリードモディファイライトオペレーションを実行することなく行われる、
請求項８に記載のシステム。
【請求項１０】
前記データは前記Ｉ／Ｏインタフェースにおいてヘッダを有するパケットとして受け取られ、
前記システムは、少なくとも部分的にハードウェアを含む前記Ｉ／Ｏデバイスの論理回路を含み、
前記論理回路はアライメントされていないデータが前記Ｉ／Ｏインタフェースにおいてパディングされていることを前記ヘッダに表示し、前記パディングは前記ヘッダの前記表示に応じて行われる、
請求項８に記載のシステム。
【請求項１１】
前記パケットのヘッダは、アライメントされていないデータはパディングされていることを表示するように、前記Ｉ／Ｏデバイスにおいて構成される、請求項１０に記載のシステム。
【請求項１２】
前記ドライバは、前記ドライバと前記Ｉ／Ｏインタフェースとの間の所定のコントラクトに基づき、前記付加された値を無視する、請求項８に記載のシステム。
【請求項１３】
前記Ｉ／Ｏデバイスに関連するドライバは、前記データの長さフィールドに基づき、前記受け取ったデータの有効バイトを決定する、
請求項８に記載のシステム。
【請求項１４】
前記キャッシュは、
キャッシュラインバウンダリ粒度、
ページバウンダリ粒度と、
構成可能粒度、または
これらの任意の組み合わせを含むアライメント粒度に関連する、
請求項８に記載のシステム。
【請求項１５】
論理回路を有する装置であって、前記論理回路は、
入出力（Ｉ／Ｏ）インタフェースにおいて、Ｉ／Ｏデバイスから、前記装置のキャッシュとアライメントされていないデータを受け取り、
前記Ｉ／Ｏデバイスに関連する計算デバイスのドライバが、付加された値を無視するように、前記Ｉ／Ｏインタフェースにおいて前記アライメントされていないデータに前記値を付加する、
装置。
【請求項１６】
前記Ｉ／Ｏデバイスは処理のため前記装置にデータを転送する、
請求項１５に記載の装置。
【請求項１７】
前記アライメントされていないデータに対してリードモディファイライトオペレーションを実行することなく、前記値が付加される、請求項１５に記載の装置。
【請求項１８】
少なくとも部分的にハードウェア論理回路を含むＩ／Ｏデバイス論理回路を有し、前記論理回路は、
前記Ｉ／Ｏインタフェースにデータパケットを供給し、
前記データパケットのヘッダに、アライメントされていないデータが前記Ｉ／Ｏインタフェースにおいてパディングされることを表示し、前記値は前記ヘッダにおける表示に応じて付加される、
請求項１５に記載の装置。
【請求項１９】
前記ドライバは、前記ドライバと前記Ｉ／Ｏインタフェースとの間の所定のコントラクトに基づき、前記付加された値を無視する、請求項１５に記載の装置。
【請求項２０】
前記Ｉ／Ｏデバイスに関連するドライバは、ヘッダの長さフィールドに基づき、前記受け取ったデータの有効バイトを決定する、
請求項１５に記載の装置。
【請求項２１】
前記キャッシュは、
キャッシュラインバウンダリ粒度、
ページバウンダリ粒度と、
構成可能粒度、または
これらの任意の組み合わせを含むアライメント粒度に関連する、
請求項１５に記載の装置。
【請求項２２】
処理デバイスに、計算システムにおいてアライメントされていないデータを処理する方法を実行させるコンピュータプログラムであって、入出力（Ｉ／Ｏ）デバイスからＩ／Ｏインタフェースを通してデータを受け取るステップと、
前記データが前記計算システムのキャッシュとアライメントされていないとき、前記Ｉ／Ｏデバイスに関連する前記計算システムのドライバが付加された値を無視するように、前記Ｉ／Ｏインタフェースにおいて前記データに前記値を付加することにより前記データをパディングするステップとを実行させるコンピュータプログラム。
【請求項２３】
前記パディングするステップは、前記アライメントされていないデータに対してリードモディファイライトオペレーションを実行することなく行われる、
請求項２２に記載のコンピュータプログラム。
【請求項２４】
前記データは、前記Ｉ／Ｏインタフェースにおいて、ヘッダを有するパケットで受け取られるものであり、
アライメントされていないデータが前記Ｉ／Ｏインタフェースにおいてパディングされていることを前記ヘッダに表示するステップをさらに実行させ、前記パディングは前記ヘッダにおける前記表示に応じて行われる、
請求項２２に記載のコンピュータプログラム。
【請求項２５】
前記ドライバは、前記ドライバと前記Ｉ／Ｏインタフェースとの間の所定のコントラクトに基づき、前記付加された値を無視する、請求項２２に記載のコンピュータプログラム。
【請求項２６】
請求項２２ないし２５いずれか一項に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、アライメントされていないデータを処理する手法に関する。具体的に、本開示は、計算デバイスに宛てられた、入出力インタフェースで受け取られた、入出力デバイスからのアライメントされていないデータの処理に関する。
【背景技術】
【０００２】
計算デバイスは入出力（Ｉ／Ｏ）デバイスなどのデバイスからデータを受け取るように構成されていてもよい。Ｉ／Ｏデバイスは、計算デバイスプロセッサ、メモリなどの計算デバイスのプラットフォームと、Ｉ／Ｏインタフェースを介して通信できるデバイスである。Ｉ／Ｏデバイスはキーボード、マウス、ディスプレイ、ネットワークインタフェースコントローラ（ＮＩＣ）、グラフィクス処理ユニット（ＧＰＵ）などを含んでいてもよい。Ｉ／Ｏデバイスから受け取るデータは、計算システムにより処理されることになる。計算デバイスは、データを一様サイズのセグメントまたは「ライン」に分割する構造を実装（ｉｍｐｌｅｍｅｎｔ  ａ  ｓｔｒｕｃｔｕｒｅ）することにより自分のメモリ階層を最適化してもよい。各「ライン」は、計算デバイスにより処理できるデータの単位である。計算システムは、Ｉ／Ｏデバイスからのデータを、データセグメントのアドレスとサイズを、ラインの構造とアライメントすることにより、最適化してもよい。幾つかのシナリオでは、Ｉ／Ｏデバイスから受け取るデータは、計算デバイスメモリのバッファに送られても良い。そのメモリは、最近使われたメモリのセグメントへの高性能アクセスを提供するキャッシュにより最適化されてもよい。これはキャッシュラインとして知られている。Ｉ／Ｏデバイスからのデータはキャッシュラインバウンダリ上になくてもよく、そのデータは各ラインサイズの倍数でなくてもよい。このデータは「アライメントされてない（ｕｎａｌｉｇｎｅｄ）」データと呼ばれる。例えば、アライメントされてないデータは、所与のキャッシュラインサイズより小さい受け取りデータを含んでいてもよい。Ｉ／Ｏデバイスから受け取るアライメントされてないデータ（ｕｎａｌｉｇｎｅｄ  ｄａｔａ）により、新しい入来データをメモリ中のデータとマージするｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅオペレーションなどの追加的なオペレーションを実行しなければならず、計算デバイスのレイテンシが増加することがある。
【図面の簡単な説明】
【０００３】
【図１】アライメントロジックを含む計算システムを示すブロック図である。
【図２】アライメントロジックを含むＩ／Ｏインタフェースを介してシステムプラットフォームに接続されたＩ／Ｏデバイスを示すブロック図である。
【図３】パケットヘッダ中にアライメント表示を含むＩ／Ｏインタフェースを介してシステムプラットフォームに接続されたＩ／Ｏデバイスを示すブロック図である。
【図４】アライメントされていないデータを処理する方法を示すブロック図である。
【図５】アライメントされていないデータを処理する別の方法を示すブロック図である。
【０００４】
本開示と図面を通して同じ番号を用いて同じコンポーネントとフィーチャを参照する。１００番台の数字は最初に図１に現れるフィーチャを指し、２００番台の数字は最初に図２に現れるフィーチャを指し、以下同様である。
【発明を実施するための形態】
【０００５】
本開示は概して、計算システムにおいてアライメントされていないデータを処理する手法に関する。計算システムは様々な入出力（Ｉ／Ｏ）デバイスからデータを受け取れる。例えば、ネットワークインタフェースコントローラ（ＮＩＣ）は、ネットワークからデータを受け取り、永続的メモリユニット、処理ユニットなどを含む計算システムのプラットフォームに、Ｉ／Ｏインタフェースを介してそのデータを供給する。幾つかのシナリオでは、Ｉ／Ｏデバイスからのデータは、Ｉ／Ｏインタフェースに受け取られた時に、計算システムのメモリシステムに対してアライメントされる。例えば、計算システムは、キャッシュラインバウンダリが６４バイトであるＩ／Ｏデバイスからデータを受け取ってもよい。しかし、Ｉ／Ｏデバイスからのデータが６５バイト長であるとき、データは２つのセグメント、すなわち６４バイトのフルラインリクエストと１バイトのパーシャルラインリクエストとに書き込まれなければならない。ここで、アライメントされていないデータとは、フルラインリクエストではなく、各ラインの６４バイトデータアライメント構造などの、所与の計算システムに関連するデータアライメント構造に基づくパーシャルラインリクエストであるデータである。パーシャルリクエストは、キャッシュがパーシャルラインリクエストを計算システム中のメモリとマージする必要があるｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ（ＲＭＷ）などの追加的オペレーションの実行を必要とし得る。
【０００６】
ここに説明する手法はアライメントされていないデータを受け取る。ＲＭＷを実行せずに、本手法は、アライメントされていない時に、そのデータに値を付加することにより、そのデータをパディング（ｐａｄｄｉｎｇ）するステップを含む。Ｉ／Ｏデバイスに関連するソフトウェアドライバは、キャッシュ内のアライメントされていないデータを読む時、付加された値を無視するように構成されており、それによりＲＭＷオペレーションとそれに関連するレイテンシの増加を回避する。デバイスソフトウェアとＩ／Ｏデバイスとを含む計算システム間のサービスコントラクトにより、計算システムはパディングデータ（ｐａｄｄｅｄ  ｄａｔａ）を効率的に付加及び無視することができる。計算システムは、Ｉ／Ｏデバイスにより送られたデータのコンシューマであり、Ｉ／Ｏデバイスはプロデューサとして機能している。
【０００７】
図１は、アライメントロジックを含む計算システムを示すブロック図である。計算システム１００は、プロセッサ１０２と、非一時的コンピュータ読み取り可能媒体を含むストレージデバイス１０４と、メモリデバイス１０６とを有する計算デバイス１０１を含む。計算デバイス１０１は、デバイスドライバ１０８と、Ｉ／Ｏインタフェース１１０と、Ｉ／Ｏデバイス１１２、１１４、１１６とを含む。
【０００８】
Ｉ／Ｏデバイス１１２、１１４、１１６は、グラフィックス処理ユニットを含むグラフィックスデバイス、ディスクドライブ、ネットワークインタフェースコントローラ（ＮＩＣ）などの、Ｉ／Ｏインタフェース１１０にデータを供給するように構成されたさまざまなデバイスを含んでいてもよい。幾つかの実施形態では、Ｉ／Ｏデバイス１１２などのＩ／Ｏデバイスは、図１に示したように、ネットワーク１２０を介してリモートデバイス１１８に接続されている。
【０００９】
Ｉ／Ｏデバイス１１２、１１４、１１６は、Ｉ／Ｏインタフェース１１０にデータを供給するように構成されている。上記の通り、Ｉ／Ｏデバイスから供給されるデータは、計算デバイス１０１のキャッシュ構成とはアライメントされていないかも知れない。ここで、キャッシュアライメント構成とは、コンピュータメモリのキャッシュにおいてデータが構成され、アクセスされる方式であり、システムごとに異なり得る。さまざまなタイプのキャッシュアライメント構成は、６４バイトキャッシュアライメント構成、１２８バイトキャッシュアライメント構成、その他のキャッシュアライメント構成を含み得る。例えば、計算デバイス１０１のメモリデバイス１０６のキャッシュは、６４バイトキャッシュアライメント構成で構成されていてもよい。図１に示したように、メモリ１０６は、メモリデバイス１０６に含まれたデータとコヒーレント（ｃｏｈｅｒｅｎｔ）である、複数ビット長のキャッシュラインを有するキャッシュ１２２を含む。
【００１０】
幾つかの実施形態では、Ｉ／Ｏインタフェース１１０は、Ｉ／Ｏデバイス１１２、１１４、１１６から受け取ったアライメントされていないデータを処理するように構成された、点線のボックス１２４で示したアライメントロジックを含む。幾つかの実施形態では、Ｉ／Ｏデバイス１１２の点線のボックス１２６で示すように、アライメントロジック１２６はＩ／Ｏデバイス内に配置され、アライメントロジック１２６は、後でより詳しく説明するように、Ｉ／Ｏインタフェース１１０において実行されるアライメントされていないデータのパディング（ｐａｄｄｉｎｇ）に関する命令を有するデータのパケットを構成する。どの実施形態であっても、アライメントロジック１２４または１２６は、少なくとも部分的に、アライメントされていないデータを処理するハードウェアロジックを含む。幾つかの実施形態では、ハードウェアロジックはＩ／Ｏデバイスから受け取ったアライメントされていないデータを処理するように構成された集積回路である。幾つかの実施形態では、アライメントロジックは、プロセッサ、マイクロコントローラなどにより実行可能なプログラムコードなど、他のタイプのハードウェアロジックを含み、プログラムコードは非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）コンピュータ読み取り可能媒体に格納される。アライメントされていないデータの処理は、アライメントされていないデータに値を付加することによる、アライメントされていないデータのパディング（ｐａｄｄｉｎｇ）を含む。パディングされたデータ内の有効なデータは、計算システムコンポーネントにより読まれるが、付加された値は、ドライバ１０８などの計算システムコンポーネントにより無視される。Ｉ／Ｏインタフェース１１０は、図１に１３０で示した、相互接続のルーティング機能を用いて、アライメントを要するＩ／Ｏデバイスからのデータトラフィックを分類してもよい。ここで、相互接続とは、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）やその他の相互接続ファブリック技術などの、幅広い将来の計算及び通信プラットフォームに対して定義された通信結合である。ここに説明する手法において、相互接続１３０は、例えば一意的物理的リンク、仮想チャネル、デバイスＩＤ、またはデータストリームＩＤにより、データトラフィックを分類し、一意的に識別されたソースから受け取ったデータにＩ／Ｏインタフェース１１０においてアライメントロジックを実行しなければならないことを示す。Ｉ／Ｏインタフェース１１０は、計算デバイス１０１とＩ／Ｏデバイス１１２との間のサービスコントラクトがいつ確立されるかを識別する一意的識別器で構成され得る。
【００１１】
計算デバイス１０１のプロセッサ１０２は、格納された命令を実行するように適応されたメインプロセッサであってもよい。プロセッサ１０２は、シングルコアプロセッサ、マルチコアプロセッサ、計算クラスタ、又はその他の構成であり得る。プロセッサ１０２は、複数命令セットコンピュータ（ＣＩＳＣ）プロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、ｘ８６命令セット互換プロセッサ、マルチコア、またはその他の任意のマイクロプロセッサまたは中央処理装置（ＣＰＵ）として実装できる。
【００１２】
メモリデバイス１０６は、ランダムアクセスメモリ（ＲＡＭ）（例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ゼロキャパシタＲＡＭ、Ｓｉｌｉｃｏｎ−Ｏｘｉｄｅ−Ｎｉｔｒｉｄｅ−Ｏｘｉｄｅ−Ｓｉｌｉｃｏｎ  ＳＯＮＯＳ、エンベディッドＤＲＡＭ、ｅｘｔｅｎｄｅｄ  ｄａｔａ  ｏｕｔ  ＲＡＭ、ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ（ＤＤＲ）  ＲＡＭ、ｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＲＲＡＭ）、ｐａｒａｍｅｔｅｒ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＰＲＡＭ）など）、リードオンリーメモリ（ＲＯＭ）（例えば、Ｍａｓｋ  ＲＯＭ，  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ（ＰＲＯＭ），  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＰＲＯＭ），  ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＥＰＲＯＭ）など）、フラッシュメモリ、またはその他の好適なメモリシステムを含み得る。メインプロセッサ１０２は、メモリ１０６、ストレージデバイス１０４、ドライバ１０８、Ｉ／Ｏインタフェース１１０、及びＩ／Ｏデバイス１１２、１１４、１１６を含むコンポーネントに、（例えば、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ），  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ），  ＰＣＩ−Ｅｘｐｒｅｓｓ，  ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標），  ＮｕＢｕｓなどの）システムバス１２８を通して、接続されてもよい。
【００１３】
図１のブロック図は、計算デバイス１０１が図１に示したすべてのコンポーネントを含むことを示すことを意図したものではない。さらに、計算デバイス１０１は、具体的な実装の詳細に応じて、図１に示していない別のコンポーネントをいくつ含んでいてもよい。
【００１４】
図２は、アライメントロジックを含むＩ／Ｏインタフェースを介してシステムプラットフォームに接続されたＩ／Ｏデバイスを示すブロック図である。システムプラットフォーム２０２は、図１を参照して上で説明したように、メモリユニット、ストレージデバイス、プロセッサ、デバイスドライバを含むシステムソフトウェアなどを含んでいてもよい。システムプラットフォーム２０２は、メモリキャッシュ１２２を通したコヒーレントなメモリオペレーションを用いるように構成されている。図２の点線のボックス２０４は、メモリのデータがシステムプラットフォーム２０２のデータアライメント構成に応じてアライメントされた、コヒーレントなメモリ空間を表す。説明を目的として、図２のシステムプラットフォーム２０２は、６４バイトのデータアライメント構成を有すると仮定するが、他のデータアライメント構成を有していてもよい。点線のボックス２０６は、システムプラットフォーム２０２と関連した、図１のＩ／Ｏインタフェース１１０などのＩ／Ｏインタフェースへの接続を表す。Ｉ／Ｏデバイスとの間のデータ転送は、プラットフォームメモリキャッシュ１２２に対してアライメントされていないアドレスとの間である。
【００１５】
上記の通り、Ｉ／Ｏインタフェース１１０は、図２に示したネットワークインタフェースコントローラ（ＮＩＣ）２０８などのＩ／Ｏデバイスから、アライメントされていないデータを受け取り得る。ＮＩＣ２０８からのアライメントされていないデータが、Ｉ／Ｏインタフェース１１０のアライメントロジック１２４で受け取られる。Ｉ／Ｏインタフェース１１０は、図２のＮＩＣ２０８などのＩ／Ｏデバイスのバスデバイス機能（ＢＤＦ）などの一意的ＩＤを認識するように構成され、キャッシュ１２２にアライメントされていないデータを格納する前に、システムプラットフォーム２０２のメモリキャッシュ１２２のデータアライメント構成に従うように、値を付加することによりアライメントされていないデータにパディングをするようにアライメントロジック１２４に命令してもよい。この例では、キャッシュ１２２は、６４バイトデータアライメント構成を有するキャッシュラインを含む。一意的ＩＤを用いるのは、Ｉ／ＯデバイスをＩ／Ｏインタフェースとレジスタ（ｒｅｇｉｓｔｅｒ）する一メカニズムである。ＮＩＣ２０８などのＩ／ＯデバイスをＩ／Ｏインタフェース１１０とレジスタするのは、図１を参照して上で説明したアライメントサービスコントラクトの確立の一部である。
【００１６】
アライメントロジック１２４によるアライメントされていないデータのパディングは、図２のＮＩＣデバイスドライバ２１０などの、計算プラットフォーム上で実行されているシステムソフトウェアが、アライメントされていないデータを読み、付加された値を無視するように構成されるようになっている。実施形態では、ドライバは、アライメントされていないデータを読み、Ｉ／Ｏインタフェース１１０とＮＩＣドライバ２１０などのデバイスドライバとの間の所定のアグリーメントに基づき、付加された値を無視する。例えば、ＮＩＣ２０８はＩ／Ｏインタフェース１１０に６５バイトのデータを供給してもよい。この例ではキャッシュ１２２のデータアライメント構成により、キャッシュラインが６４バイト長なので、最初の６４バイトのデータは、キャッシュ１２２に格納される。余分な１バイトのデータは、アライメントロジックにより、６３バイトのデータを埋めるゼロなどの付加の値でパディングされる。ＮＩＣドライバ２１０とＩ／Ｏインタフェース１１０との間のアグリーメントにより、ＮＩＣドライバ２１０は、ＲＭＷオペレーションを実行してキャッシュをメモリ１０６と同期しなくても、データの最初のバイトを読み、６３バイトの付加された値を無視できる。
【００１７】
留意点として、アライメントはキャッシュラインサイズには限定されない。実施形態では、アライメントロジック１２４は、キャッシュラインサイズ粒度、ページサイズ粒度などのシステムプラットフォームのデータアライメント構成の最大許容アライメント粒度により、データをパディングする。
【００１８】
図３は、パケットヘッダ中にアライメント表示を含むＩ／Ｏインタフェースを介してシステムプラットフォームに接続されたＩ／Ｏデバイスを示すブロック図である。図２を参照して説明したように、システムプラットフォーム２０２は、６４バイトキャッシュアライメント構成を有するコヒーレントなメモリ空間２０４内に構成されていてもよいが、他のデータアライメント構成を実装してもよい。点線のボックス２０６は、システムプラットフォーム２０２と関連した、図１のＩ／Ｏインタフェース１１０などのＩ／Ｏインタフェースへの接続を表す。Ｉ／Ｏデバイスとの間のデータ転送は、プラットフォームメモリキャッシュ１２２に対してアライメントされていないアドレスとの間である。
【００１９】
幾つかの実施形態では、図３に示したＮＩＣ３０２などのＩ／Ｏデバイスは、データパケット３０４のヘッダにアライメントデータを供給する。パケット３０４は、制御ヘッダブロック３０６、アドレスブロック３０８、及びデータブロック３１０などのブロックを含む。一般的には、パケットヘッダは、アライメントにかかわらず、データの有効長さを識別するネットワークヘッダを含む。ここに説明する実施形態では、制御ヘッダブロック３０６は図３に示すようなアライメントデータ３１２を含む。この実施形態では、ＮＩＣ３０２などのＩ／Ｏデバイスは、制御ヘッダブロック３０６内にアライメントデータ３１２を含むように構成されたアライメントロジック１２６を含む。アライメントデータ３１２は、データパケット３０４がアライメントされていないデータを含むことを、Ｉ／Ｏインタフェース１１０に示し、Ｉ／Ｏインタフェース１１０がアライメントロジック１２４によりデータにパディングをする。このシナリオでは、アライメントデータ３１２は、データパケット３０４内に組み込まれ、アライメントデータ３１２がＩ／Ｏインタフェース１１０により処理され、パディングが行われ得ること及び所望のアライメントを推定するようになっている。幾つかの実施形態では、パケット３０４内のアライメントデータ３１２の実装は、アライメントデータ３１２を解釈するＩ／Ｏインタフェース１１０の適当な構成により、アライメントロジック１２４無しに、Ｉ／Ｏインタフェース１１０において処理される。
【００２０】
図４は、アライメントされていないデータを処理する方法を示すブロック図である。ブロック４０２において、Ｉ／Ｏインタフェースのキャッシュにおいて、入出力（Ｉ／Ｏ）デバイスからデータを受け取る。ブロック４０４において、アライメントされていないデータにパディングするが、Ｉ／Ｏデバイスに関連するドライバが付加された値を無視するようにする。
【００２１】
幾つかの実施形態では、パディングはＲＭＷオペレーションを実行せずに行われる。言い換えると、アライメントされていないデータを受け取り、アライメントされていないデータに対してＲＭＷを実行するのではなく、Ｉ／Ｏインタフェースは、Ｉ／Ｏデバイスに関連するドライバ及びパディングされたデータにアクセスする計算システムのソフトウェアにより無視される値で、データをパディング（ｐａｄ）する。幾つかの実施形態では、付加される値は、Ｉ／Ｏデバイスとドライバとの間に確立されるコントラクトに基づき、無視される。コントラクトは、ハードウェアロジック、ファームウェア、ソフトウェア、またはこれらの任意の組み合わせを少なくとも一部に含むロジックであって、付加値によりパディングされている時、アライメントされていないデータのうち有効バイトが読み出され、付加値は無視されるロジックとして実装されてもよい。幾つかの実施形態では、受け取ったデータの有効バイトは、Ｉ／Ｏデバイスから提供されるパケットヘッダ中の長さフィールド（ｌｅｎｇｔｈ  ｆｉｅｌｄ）に示される。
【００２２】
図５は、アライメントされていないデータを処理する別の方法を示すブロック図である。図３を参照して説明したように、幾つかの実施形態では、ブロック５０２において、データを一連のパケットとして転送する相互接続（ｉｎｔｅｒｃｏｎｎｅｃｔ）を通してＩ／Ｏインタフェースがデータを受け取る。各パケットはヘッダセグメントとデータセグメントよりなる。ブロック５０４において、ヘッダはアライメントされていないデータがＩ／Ｏインタフェースでパディングされていることを示し、ブロック５０６において、ヘッダの表示に応じてパディングが実行される。この実施形態では、パケットヘッダはＩ／Ｏデバイスで構成され、その後パケットがＩ／Ｏインタフェースに供給される。
【００２３】
ここに説明する実施形態では、データはＩ／ＯインタフェースとＩ／Ｏデバイスとの間で、相互接続ファブリックアーキテクチャを介して供給される。一相互接続ファブリックアーキテクチャは、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）アーキテクチャを含む。ＰＣＩｅの主な目標は、異なるベンダーのコンポーネントでデバイスが、複数のマーケットセグメントであるクライアント（デスクトップ及びモバイル）、サーバ（標準的及び企業の）、及び組み込み及び通信デバイスに広がるオープンアーキテクチャで相互動作（ｉｎｔｅｒ−ｏｐｅｒａｔｅ）できるようにすることである。ＰＣＩ  Ｅｘｐｒｅｓｓは、いろいろな将来の計算及び通信プラットフォームのために確定された高性能、汎用相互接続である。使用モデル、ロードストア（ｌｏａｄ−ｓｔｏｒｅ）アーキテクチャ、及びソフトウェアインタフェースなどのＰＣＩ属性は、改訂されても維持されてきた。しかし、以前のパラレルバスによる実装は非常にスケーラブルなシリアルバスに完全に置き換えられた。より新しいバージョンのＰＣＩ  Ｅｘｐｒｅｓｓは、ポイントツーポイント相互接続、スイッチベース技術、及びパケット化プロトコルにおける進歩を利用して、新しいレベルの性能及び機能を提供する。パワーマネジメント、サービス品質（ＱｏＳ）、ホットプラグ／ホットスワップサポート、データインテグリティ、及びエラー処理は、ＰＣＩ  Ｅｘｐｒｅｓｓによりサポートされた高度機能の一部である。
【００２４】
図６を参照して、一組のコンポーネントを相互接続するポイントツーポイントリンクよりなるファブリック（ｆａｂｒｉｃ）の一実施形態を示した。システム６００は、コントローラハブ６１５に結合した、プロセッサ６０５及びシステムメモリ６１０を含む。プロセッサ６０５は、マイクロプロセッサ、ホストプロセッサ、組み込みプロセッサ、コ・プロセッサ、またはその他のプロセッサなどの任意の処理要素を含む。プロセッサ６０５は、フロントサイドバス（ＦＳＢ）６０６を通してコントローラハブ６１５と結合している。一実施形態では、ＦＳＢ６０６は、後で説明するように、シリアルポイントツーポイント相互接続である。他の一実施形態では、リンク６０６は、異なる相互接続標準に準拠したシリアル差分相互接続アーキテクチャを含む。
【００２５】
システムメモリ６１０は、ランダムアクセスメモリ（ＲＡＭ）、不揮発性（ＮＶ）メモリ、またはその他のシステム６００中のデバイスがアクセス可能なメモリを含む。システムメモリ６１０はメモリインタフェース６１６を通してコントローラハブ６１５に結合している。メモリインタフェースの例には、ダブルデータレート（ＤＤＲ）メモリインタフェース、デュアルチャネルＤＤＲメモリインタフェース、及びダイナミックＲＡＭ（ＤＲＡＭ）メモリインタフェースが含まれる。
【００２６】
一実施形態では、コントローラハブ６１５は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ  ｏｒ  ＰＣＩＥ）相互接続ヒエラルキーにおけるルートハブ、ルートコンプレックス、またはルートコントローラである。コントローラハブ６１５の例には、シップセット、メモリコントローラハブ（ＭＣＨ）、ノースブリッジ、相互接続コントローラハブ（ＩＣＨ）、サウスブリッジ、及びルートコントローラ／ハブが含まれる。チップセットという用語は多くの場合、２つの物理的に分離したコントローラハブ、すなわち相互接続コントローラハブ（ＩＣＨ）に結合したメモリコントローラハブ（ＭＣＨ）を指す。留意点として、今日のシステムは多くの場合、プロセッサ６０５に組み込まれたＭＣＨを含み、一方、コントローラ６１５は後で説明するのと同様の方法でＩ／Ｏデバイスと通信する。幾つかの実施形態では、ピアツーピアルーティングはルートコンプレックス６１５を通して任意的にサポートされている。
【００２７】
ここで、コントローラハブ６１５はシリアルリンク６１９を通してスイッチ／ブリッジ６２０に結合している。入出力モジュール６１７と６２１は、インタフェース／ポート６１７と６２１とも呼ばれるが、コントローラハブ６１５とスイッチ６２０との間に通信を提供するレイヤードプロトコルスタック（ｌａｙｅｒｅｄ  ｐｒｏｔｏｃｏｌ  ｓｔａｃｋ）を含む／実装する。一実施形態では、複数のデバイスがスイッチ６２０に結合され得る。
【００２８】
スイッチ／ブリッジ６２０は、アップストリーム、すなわちデバイス６２５から、ルートコンプレックスに向けてコントローラハブ６１５まで階層を上がる、またはダウンストリーム、すなわちルートコントローラから、プロセッサ６０５から、またはシステムメモリ６１０から、デバイス６２５まで階層を下がるように、パケット／メッセージをルーティング（ｒｏｕｔｅ）する。スイッチ６２０は、一実施形態では、複数の仮想的ＰＣＩツーＰＣＩブリッジデバイスの論理アセンブリと呼ばれる。デバイス６２５は、Ｉ／Ｏデバイス、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ（ＮＩＣ）、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、ＣＤ／ＤＶＤ  ＲＯＭ、モニター、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、Ｆｉｒｅｗｉｒｅデバイス、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）デバイス、スキャナ、その他の入出力デバイスなどの電子システムに結合される内部または外部のデバイスまたはコンポーネントを含む。ＰＣＩｅの用語では多くの場合、デバイスはエンドポイントと呼ばれる。具体的には示していないが、デバイス６２５は、レガシーその他のバージョンのＰＣＩデバイスをサポートするＰＣＩｅツーＰＣＩ／ＰＣＩ−Ｘブリッジを含んでいてもよい。ＰＣＩｅのエンドポイントデバイスは多くの場合、レガシー、ＰＣＩｅ、またはルートコンプレックス組み込みエンドポイントと分類される。
【００２９】
グラフィックスアクセラレータ６３０も、シリアルリンク６３２を通してコントローラハブ６１５に結合している。一実施形態では、グラフィックスアクセラレータ６３０はＭＣＨに結合し、ＭＣＨはＩＣＨに結合している。スイッチ６２０、及びＩ／Ｏデバイス６２５はＩＣＨに結合している。Ｉ／Ｏモジュール６３１と６１８も、グラフィックスアクセラレータ６３０とコントローラハブ６１５との間で通信するレイヤードプロトコルスタックを実装している。上記のＭＣＨと同様に、グラフィックスコントローラまたはグラフィックスアクセラレータ６３０そのものは、プロセッサ６０５に集積されていてもよい。
【００３０】
図７を参照して、レイヤードプロトコルスタック（ｌａｙｅｒｅｄ  ｐｒｏｔｏｃｏｌ  ｓｔａｃｋ）の一実施形態を示す。レイヤードプロトコルスタック７００は、Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）スタック、ＰＣＩｅスタック、次世代高性能計算相互接続スタック、その他のレイヤードスタックなどの任意の形式のレイヤ化された通信スタックを含む。図６ないし図９を参照する以下の説明はＰＣＩｅスタックに関するものであるが、同じコンセプトはその他の相互接続スタックに適用することもできる。一実施形態では、プロトコルスタック７００は、トランザクションレイヤ７０５、リンクレイヤ７１０、及び物理レイヤ７２０を含むＰＣＩｅスタックである。図６のインタフェース６１７、６１８、６２１、６２２、６２６、及び６３１などのインタフェースは、通信プロトコルスタック７００として表し得る。通信プロトコルスタックとしての表現は、プロトコルスタックを実装する／含むモジュールまたはインタフェースと呼んでも良い。
【００３１】
ＰＣＩ  Ｅｘｐｒｅｓｓはパケットを用いてコンポーネント間で情報を通信する。パケットは、トランザクションレイヤ７０５とデータリンクレイヤ７１０で構成され、送信コンポーネントから受信コンポーネントに情報を運ぶ。送信されたパケットは、他のレイヤを通る時、そのレイヤでパケットを処理するのに必要な付加的情報で拡張される。受信側では、受信プロセスが行われ、パケットが物理レイヤ７２０表現からデータリンクレイヤ７１０表現に変換され、最後に（トランザクションレイヤパケットの場合）受信デバイスのトランザクションレイヤ７０５により処理できる形式に変換される。
【００３２】
トランザクションレイヤ
一実施形態では、トランザクションレイヤ７０５は、データリンクレイヤ７１０と物理レイヤ７２０などの、デバイスの処理コアと相互接続アーキテクチャとの間のインタフェースを提供する。この点、トランザクションレイヤ７０５の主な役割は、パケット（すなわち、トランザクションレイヤパケットまたはＴＬＰ）の組み立て及び分解である。トランザクションレイヤ７０５は一般的には、ＴＬＰに対してクレジットベース（ｃｒｅｄｉｔ−ｂａｓｅ）のフロー制御を管理する。ＰＣＩｅは、スプリットトランザクションを、すなわち要求と応答が時間的に分離されたトランザクションを実装し、ターゲットデバイスが応答のためデータを集める間に、リンクが他のトラフックを送れるようにしている。
【００３３】
また、ＰＣＩｅはクレジットベースのフロー制御を利用する。この方式では、デバイスは、トランザクションレイヤ７０５の受信バッファの各々の初期クレジット量をアドバタイズ（ａｄｖｅｒｔｉｓｅ）する。リンクの反対端の外部デバイスである、例えば図６のコントローラハブ６１５などは、各ＴＬＰにより消費されるクレジット数をカウントする。トランザクションは、クレジットリミットを越えなければ、送信され得る。応答を受信すると、クレジット量は回復する。クレジット方式の利点は、クレジットリミットに至らなければ、クレジットリターンのレイテンシが性能に影響しないことである。
【００３４】
４つのトランザクションアドレス空間は、コンフィギュレーションアドレス空間、メモリアドレス空間、入出力アドレス空間、及びメッセージアドレス空間を含む。メモリスペーストランザクションは、メモリマップされた場所との間でデータを転送するリード要求（ｒｅａｄ  ｒｅｑｕｅｓｔｓ）及びライト要求（ｗｒｉｔｅ  ｒｅｑｕｅｓｔｓ）のうち一方を含む。一実施形態では、メモリスペーストランザクションは、２つの異なるアドレスフォーマット、例えば３２ビットアドレスなどの短いアドレスフォーマットと、６４ビットアドレスなどの長いアドレスフォーマットとを使うことができる。コンフィギュレーション空間トランザクションを用いてＰＣＩｅデバイスのコンフィギュレーション空間にアクセスする。コンフィギュレーション空間に対するトランザクションは、リード要求とライト要求とを含む。メッセージ空間トランザクション（または、単にメッセージ）は、ＰＣＩｅエージェント間のインバンド通信（ｉｎ−ｂａｎｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）をサポートするように定義される。
【００３５】
それゆえ、一実施形態では、トランザクションレイヤ７０５はパケットヘッダ／ペイロード７０６をアセンブルする。現在のパケットヘッダ／ペイロードのフォーマットは、ＰＣＩｅ仕様書ウェブサイトのＰＣＩｅ仕様書で見つかる。上記の通り、一実施形態では、パケットヘッダは、パケット内のデータがアライメントされておらず、Ｉ／Ｏインタフェースでパディングされるように、コンフィギュレーション命令で構成される。
【００３６】
手早く図８を参照するに、ＰＣＩｅトランザクション記述子の一実施形態が示されている。一実施形態では、トランザクション記述子８００はトランザクション情報を運ぶメカニズムである。この点、トランザクション記述子８００はシステム中のトランザクションの識別をサポートする。その他の潜在的な使用法としては、デフォルトのトランザクション順序付けやトランザクションのチャネルとの関連付けの修正のトラッキングが含まれる。
【００３７】
トランザクション記述子８００は、グローバル識別子フィールド８０２と、属性フィールド８０４と、チャネル識別子フィールド８０６とを含む。図示した例では、グローバル識別子フィールド８０２は、ローカルトランザクション識別子フィールド８０８とソース識別子フィールド８１０とを含むように図示されている。一実施形態では、グローバルトランザクション識別子８０２はすべての未処理要求（ｏｕｔｓｔａｎｄｉｎｇ  ｒｅｑｕｅｓｔｓ）に対して一意的である。
【００３８】
一実施形態によると、ローカルトランザクション記述子フィールド８０８は、要求エージェントにより生成されるフィールドであり、その要求エージェントの完了を要する残りのすべての要求に対して一意的である。さらにまた、この例では、ソース識別子８１０はＰＣＩ階層内の要求エージェントを一意的に特定する。したがって、ソースＩＤ８１０と共に、ローカルトランザクション識別子８０８フィールドは、階層ドメインにおけるトランザクションのグローバルな識別情報を提供する。
【００３９】
属性フィールド８０４はトランザクションの特徴と関係を指定する。この点、属性フィールド８０４は、トランザクションのデフォルト処理を修正できるようにする付加的情報を提供するのに潜在的に用いられる。一実施形態では、属性フィールド８０４は優先フィールド８１２、予約フィールド８１４、順序付けフィールド８１６、及びノースヌープ（ｎｏ−ｓｎｏｏｐ）フィールド８１８を含む。ここで、優先サブフィールド８１２はトランザクションに優先度を割り当てるイニシエータ（ｉｎｉｔｉａｔｏｒ）により修正され得る。予約属性フィールド８１４は将来の利用またはベンダーが決める利用法のために予約されている。優先属性またはセキュリティ属性を用いる、可能性のある利用モデルは、予約された属性フィールドを用いて実装し得る。
【００４０】
この例では、順序付け属性フィールド８１６を用いて、デフォルトの順序付け規則を変更できるタイプの順序付けを運ぶ任意的情報を供給する。一例では、順序属性が「０」であることは、デフォルトの順序付け規則が適用されることを示し、順序属性が「１」であることは、順序付けの緩和を示し、ライト（ｗｒｉｔｅｓ）は同方向のライトを通すことができ、リード完了（ｒｅａｄ  ｃｏｍｐｌｅｔｉｏｎｓ）は同方向のライトを通すことができる。スヌープ属性フィールド８１８を利用して、トランザクションがスヌープされるか決定する。図示したように、チャネルＩＤフィールド８０６はトランザクションが関連するチャネルを特定する。
【００４１】
リンクレイヤ
リンクレイヤ７１０は、データリンクレイヤ７１０とも呼ぶが、トランザクションレイヤ７０５と物理レイヤ７２０との間の中間段階として機能する。一実施形態では、データリンクレイヤ７１０の役割は、２つのコンポーネント間でトランザクションレイヤパケット（ＴＬＰｓ）を交換する信頼できるメカニズムをリンクに提供することである。データリンクレイヤ７１０の一方の側は、トランザクションレイヤ７０５によりアセンブルされたＴＬＰを受け入れ、パケットシーケンス識別子７１１すなわち識別番号またはパケット番号を適用し、エラー検出コードすなわちＣＲＣ７１２を計算及び適用し、物理から外部デバイスにわたるトランザクションのため、修正されたＴＬＰを物理レイヤ７２０に送る。
【００４２】
物理レイヤ
一実施形態では、物理レイヤ７２０は、論理サブブロック７２１と、パケットを外部デバイスに物理的に送信する電気的サブブロック７２２を含む。ここで、論理サブブロック７２１は物理レイヤ７２１の「デジタル」機能を果たす。この点、論理サブブロックは、物理サブブロック７２２による送信のため出力情報を準備する送信セクションと、受信情報を識別し準備してリンクレイヤ７１０にそれを渡す受信セクションとを含む。
【００４３】
物理ブロック７２２は送信器と受信器とを含む。送信器は論理サブブロック７２１によりシンボルを供給される。シンボルは送信器がシリアル化して、外部デバイスに送信する。受信器は、外部デバイスからシリアル化されたシンボルを供給され、受信された信号をビットストリームに変換する。ビットストリームは、逆シリアル化（ｄｅ−ｓｅｒｉａｌｉｚｅｄ）され、論理サブブロック７２１に供給される。一実施形態では、８ｂ／１０ｂ送信コードが用いられる。この場合、１０ビットシンボルが送受信される。ここで、特殊なシンボルを用いてパケットをフレーム７２３でフレーム化する。また、一例では、受信器は入来シリアルストリームから受信したシンボルクロックも提供する。
【００４４】
上記の通り、トランザクションレイヤ７０５、リンクレイヤ７１０、及び物理レイヤ７２０を、ＰＣＩｅプロトコルスタックの具体的な実施形態を参照して説明したが、レイヤ化プロトコルスタックはこれには限定されない。事実、いかなるレイヤ化プロトコルを含めても／実装してもよい。一例として、レイヤ化プロトコルとして表されるポート／インタフェースは、（１）パケットをアセンブルする第１のレイヤ（すなわちトランザクションレイヤ）と、パケットを配列（ｓｅｑｕｅｎｃｅ）する第２のレイヤ（すなわち、リンクレイヤ）と、パケットを送信する第３のレイヤ（すなわち、物理レイヤ）とを含む。具体的な一例として、コモンスタンダードインタフェース（ＣＳＩ）レイヤ化されたプロトコルが用いられる。
【００４５】
次に図９を参照して、ＰＣＩｅシリアルポイントツーポイントファブリックの一実施形態を示す。ＰＣＩｅシリアルポイントツーポイントリンクの一実施形態を示したが、シリアルポイントツーポイントリンクはこれに限定されず、シリアルデータを送信するいかなる送信経路を含んでいてもよいからである。図示した実施形態では、基本的なＰＣＩｅリンクは２つの低電圧差動信号ペアである送信ペア９０６／９１１と受信ペア９１２／９０７とを含む。したがって、デバイス９０５は、データをデバイス９１０に送信する送信ロジック９０６と、データをデバイス９１０から受信する受信ロジック９０７とを含む。言い換えると、２つの送信パスすなわちパス９１６と９１７、及び２つの受信パスすなわちパス９１８と９１９がＰＣＩｅリンクに含まれる。
【００４６】
送信パスとは、データを送信する任意のパスを指し、例えば、送信ライン、銅ライン、光ライン、無線通信チャネル、赤外線通信リンク、その他の通信パスを含む。デバイス９０５とデバイス９１０など２つのデバイス間の接続は、リンク４１５などのリンクと呼ばれる。リンクは１つのレーンをサポートしてもよい。各レーン（ｌａｎｅ）は一組の差動信号ペア（送信用の１ペアと受信用の１ペア）を表す。バンド幅をスケールするため、リンクは、ｘＮで示す複数のレーンをアグリゲーション（ａｇｇｒｅｇａｔｅ）してもよい。ここで、Ｎは任意のサポートされたリンク幅であり、例えば１，２，４，８，１２，１６，３２，６４またはより広くてもよい。
【００４７】
差動ペアとは、差動信号を送信するレーン４１６と４１７などの２つの送信パスである。一例として、ライン４１６が低電圧レベルから高電圧レベルにトグルされると、すなわち立ち上がりエッジでは、ライン４１７が高ロジックレベルから低ロジックレベルに駆動される、すなわち立ち下がりエッジとなる。差動信号は潜在的に電気的特性がよく、信号インテグリティすなわちクロスカップリング、電圧オーバーシュート／アンダーシュート、立ち上がりなどがよい。これによりタイミングウィンドウがよくなり、送信周波数を速くできる。
【００４８】
実施形態は実装又は実施例である。本明細書において「一実施形態」、「ある実施形態」、「さまざまな実施形態」、「他の実施形態」とは、その実施形態に関して説明する機能、構造、特徴が、本手法の少なくともある実施形態に含まれるが、必ずしもすべての実施形態には含まれないことを意味している。「一実施形態」や「ある実施形態」と言っても、必ずしも同じ実施形態を指しているとは限らない。
【００４９】
ここに説明し図示したコンポーネント、フィーチャ、構造、特徴などのすべてが、ある具体的な実施形態に含まれる必要はない。例えば、明細書において、コンポーネント、フィーチャ、構造又は特徴が、含まれ「得る」、含まれることが「できる」と言った場合、その具体的なコンポーネント、フィーチャ、構造又は特徴が含まれることは要しない。明細書又は特許請求の範囲で「一」要素と言う場合、これはその要素が１つだけあることを意味するのではない。明細書又は特許請求の範囲で「一付加」要素と言う場合、これはその付加要素が１つより多くあることを排除するものではない。
【００５０】
留意点として、具体的なインプリメンテーションを参照して実施形態を説明したが、ある実施形態では他のインプリメンテーションが可能である。また、図面に示し及び／又はここに説明した、回路要素の構成及び／又は順序、又はその他の特徴は、図示して説明した具体的な方法で構成する必要はない。ある実施形態では、他の多くの構成が可能である。
【００５１】
図に示した各システムでは、ある場合の要素は、それぞれ同じ参照番号又は異なる参照番号を有し、表示された要素が異なる及び／又は同じことを示唆している。しかし、要素は、フレキシブルであり、異なるインプリメンテーションを有し、ここに示し説明したシステムの一部又は全部と機能する。図面に示した様々な要素は同じもの又は違うものである。どれを第１の要素と呼び、どれを第２の要素と呼ぶかは任意的である。
【００５２】
言うまでもなく、上記実施例の細目は一以上の実施形態のどこで用いても良い。例えば、上記の計算デバイスのすべての任意的フィーチャは、ここに説明した方法やコンピュータ読み取り可能媒体に対して実装されてもよい。さらに、ここで実施形態を説明するためにフロー図及び／又は状態図を使ったが、本手法はこれらの図や対応するここでの説明に限定されない。例えば、フローは、例示された各ボックスや状態を通って、図示し説明したのと同じ順序で動く必要はない。
【００５３】
本手法は、ここに列記した具体的な詳細事項に限定されない。実際、本開示の利益を享受する当業者には、上記の説明と図面から、本手法の範囲内で、多数の変形を行うことができるだろう。したがって、本手法の範囲を画定するのは、補正も含めた以下の請求項である。
【図１】
0006273010.tif 000002
【図２】
0006273010.tif 000003
【図３】
0006273010.tif 000004
【図４】
0006273010.tif 000005
【図５】
0006273010.tif 000006
【図６】
0006273010.tif 000007
【図７】
0006273010.tif 000008
【図８】
0006273010.tif 000009
【図９】
0006273010.tif 000010