説明

PCIエクスプレス・パケット・ダイジェストの変更のデバイス、システムおよび方法

【課題】PCIエクスプレス・パケット・ダイジェストの変更のデバイス、システムおよび方法を提供する。
【解決手段】例えば、装置は、ダイジェスト部の1つ以上のビットが非ECRCデータを搬送するクレジット・ベース・フロー制御相互接続トランザクション層パケットを生成する、クレジット・ベース・フロー制御相互接続デバイスを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明のいくつかの実施形態は、周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)エクスプレス(PCIe:PCI Express)を使用する通信の分野に関する。
【背景技術】
【0002】
コンピュータ・システムは、例えば、プロセッサと、グラフィックス・カード、メモリ・ユニットおよび同様のものなどの他のユニットとの間など、デバイス間を接続することができるPCIエクスプレス(PCIe)ホスト・ブリッジを含むことがある。PCIeは、クレジット・ベース・フロー制御(credit−based flow control)を用い、高速シリアル相互接続を通してパケット化データを転送することを可能にする、入出力(I/O:Input/Output)プロトコルである。PCIe通信は、階層プロトコルを利用するものであり、物理層(デバイス間のリンクを提供する)、データ・リンク層(パケット順序制御、データ保護および確認信号を提供する)、およびトランザクション層を含む。トランザクション層において、PCIeトランザクション層パケット(TLP:Transaction Layer Packet)は、パケット・ヘッダ、データ・ペイロードおよび任意選択のパケット・ダイジェストを含むことがある。パケット・ダイジェストは、エンド・ツー・エンド巡回冗長検査(ECRC:End−to−End Cyclic Redundancy Check)情報を含むことができ、フロー制御のためのヘッダ・クレジット下に含まれる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
残念ながら、小さなデータ・ペイロードを有するPCIeパケットが大きなリンク・オーバーヘッドをもたらすこともある。例えば、小さなデータ・ペイロードを有するPCIeパケットは、データ・クレジットを十分に利用することなくヘッダ・クレジットおよびデータ・クレジット両方を消費し、その結果リンク・オーバーヘッドの一因となる。
【課題を解決するための手段】
【0004】
本発明のいくつかの実施形態は、例えば、PCIエクスプレス(PCIe)パケット・ダイジェストの変更のデバイス、システムおよび方法を含む。
【0005】
いくつかの実施形態では、装置は、非ECRCデータをダイジェスト部の1つ以上のビットが搬送するクレジット・ベース・フロー制御相互接続トランザクション層パケット(credit−based flow control interconnect Transaction Layer Packet)を生成する、クレジット・ベース・フロー制御相互接続デバイスを含む。
【0006】
いくつかの実施形態では、非ECRCデータは特定用途向けデータを含む。
【0007】
いくつかの実施形態では、トランザクション層パケットのヘッダは、ダイジェストが非ECRCデータを搬送するということのインジケーションを含む。
【0008】
いくつかの実施形態では、トランザクション層パケットのヘッダは、ダイジェストが特定用途向けデータを搬送するということのインジケーションを含む。
【0009】
いくつかの実施形態では、トランザクション層パケットのヘッダは、受信デバイスはダイジェスト内で搬送される非ECRCを復号するべきであるということのインジケーションを含む。
【0010】
いくつかの実施形態では、トランザクション層パケットのヘッダは、中間にあるデバイスはトランザクション層パケットのECRC検査の結果を無視するべきであるということのインジケーションを含む。
【0011】
いくつかの実施形態では、クレジット・ベース・フロー制御相互接続デバイスは、PCIエクスプレス・デバイスを含み、クレジット・ベース・フロー制御相互接続トランザクション層パケットは、PCIエクスプレス・トランザクション層パケットを含む。
【0012】
いくつかの実施形態では、方法は、非ECRCデータをダイジェスト部の1つ以上のビットが搬送するクレジット・ベース・フロー制御相互接続トランザクション層パケットを生成することを含む。
【0013】
いくつかの実施形態では、この生成は、非ECRCデータをECRCデータに対応するダイジェスト・スペースに入れることを含む。
【0014】
いくつかの実施形態では、この生成は、前記ダイジェストは非ECRCデータを搬送するということのインジケーションを、トランザクション層パケットのヘッダに入れることを含む。
【0015】
いくつかの実施形態では、この生成は、前記ダイジェストは特定用途向けデータを搬送するということのインジケーションを、トランザクション層パケットのヘッダに入れることを含む。
【0016】
いくつかの実施形態では、この生成は、受信デバイスはダイジェスト内で搬送される非ECRCを復号するべきであるということのインジケーションを、トランザクション層パケットのヘッダに入れることを含む。
【0017】
いくつかの実施形態では、この生成は、中間にあるデバイスは前記トランザクション層パケットのECRC検査の結果を無視してトランザクション層パケットを転送するべきであるということのインジケーションを、トランザクション層パケットのヘッダに入れることを含む。
【0018】
いくつかの実施形態では、クレジット・ベース・フロー制御相互接続トランザクション層パケットを生成することは、PCIエクスプレス・トランザクション層パケットを生成することを含む。
【0019】
いくつかの実施形態では、この生成は、ヘッダ・クレジットを使用して特定用途向けデータを送信することを含む。
【0020】
いくつかの実施形態では、システムは、非ECRCデータをダイジェスト部の1つ以上のビットが搬送するクレジット・ベース・フロー制御相互接続トランザクション層パケットを生成する、クレジット・ベース・フロー制御相互接続デバイスと、トランザクション層パケットを転送するクレジット・ベース・フロー制御相互接続リンクとを含む。
【0021】
いくつかの実施形態では、トランザクション層パケットのヘッダ内のインジケーションに基づき、クレジット・ベース・フロー制御相互接続リンクは、前記トランザクション層パケットのECRC検査の結果を無視する。
【0022】
いくつかの実施形態では、システムはさらに、トランザクション層パケットを受信してダイジェストから非ECRCデータを抽出する、さらなるクレジット・ベース・フロー制御相互接続デバイスを含む。
【0023】
いくつかの実施形態では、トランザクション層パケットのヘッダ内のインジケーションに基づき、さらなるクレジット・ベース・フロー制御相互接続リンクは、前記トランザクション層パケットのECRC検査の実行を回避する。
【0024】
いくつかの実施形態では、クレジット・ベース・フロー制御相互接続デバイスはPCIエクスプレス・デバイスを含み、クレジット・ベース・フロー制御相互接続トランザクション層パケットはPCIエクスプレス・トランザクション層パケットを含み、クレジット・ベース・フロー制御相互接続リンクはPCIエクスプレス・リンクを含む。
【0025】
いくつかの実施形態は、例えば、コンピュータ可読プログラムを含むコンピュータ使用可能媒体を含んだコンピュータ・プログラム製品を含み、このコンピュータ可読プログラムは、コンピュータ上で実行されると本発明のいくつかの実施形態に従った方法をそのコンピュータに実行させる。
【0026】
本発明のいくつかの実施形態は、その他および追加の、あるいはそのいずれかの利益および利点あるいはそのいずれかを提供すると考えられる。
【0027】
説明が平易かつ明瞭となるよう、図面に示されている構成要素は、必ずしも原寸に比例して示されていない。例えば、明瞭に示すために、一部の構成要素の寸法を他の構成要素と比べて大きくしていることもある。さらに、参照番号は、対応する構成要素または類似の構成要素を示すために、複数の図面の間で繰り返されることもある。さらに、図面に示される複数ブロックのうちの一部が、単一の機能に組み合わされてもよい。以下に図面について記載する。
【図面の簡単な説明】
【0028】
【図1】本発明の例証となる実施形態による、変更されたPCIエクスプレス・パケット・ダイジェストを利用できるシステムの概略ブロック図である。
【図2】本発明の例証となる実施形態による、変更されたPCIエクスプレス・パケットの構造の概略ブロック図である。
【図3】本発明の例証となる実施形態による、変更されたPCIエクスプレス・パケット・ダイジェストを利用する方法の概略流れ図である。
【発明を実施するための形態】
【0029】
本発明のいくつかの実施形態が完全に理解されるよう、以下の詳細な説明には多数の具体的な詳細事項が記載されている。しかし、当業者には当然のことながら、本発明の実施形態はこれらの具体的な詳細事項を用いずに実践されてもよい。他の場合には、説明が不明瞭にならないよう、周知の方法、手順、コンポーネント、ユニットおよび回路、あるいはそのいずれかは詳細には記載されていない。本願明細書で開示される実施形態および図面は、制限的なものではなく実例であると見なされるものとする。
【0030】
「処理」、「演算」、「計算」、「判断」または同様のものなどの用語を用いる本願明細書の説明の各部分は、コンピューティング・システムのレジスタおよびメモリあるいはそのいずれかの内部で電子などの物理量として表されるデータを、コンピューティング・システムのメモリ、レジスタまたはその他そのような情報ストレージ、伝送デバイスもしくは表示デバイスの内部で同じように物理量として表される他のデータへと操作および変換あるいはそのいずれかを行う、コンピュータもしくはコンピューティング・システムの、または同様の電子コンピューティング・デバイスの動作およびプロセス、あるいはそのいずれかを指す。さらに、本願明細書において、「複数の」という用語は、2つ以上のアイテムを表現するために使用され得る。例えば、複数のアイテムは2つ以上のアイテムを含む。
【0031】
本願明細書の説明の各部分は、例証のために、有線リンクおよび有線通信、あるいはそのいずれかに関する場合もあるが、本発明の実施形態はこの点で制限されず、1つ以上の有線または無線リンクを含んでも、ワイヤレス通信の1つ以上のコンポーネントを利用しても、無線通信の1つ以上の方法またはプロトコル、または同様のものを利用してもよい。本発明のいくつかの実施形態は、有線通信および無線通信あるいはそのいずれかを利用するとよい。
【0032】
本願明細書で使用される「送信デバイス」または「送信エンドポイント」または「送信ポート」という用語は、例えば、PCIeデータ、パケットおよび他の情報あるいはそのいずれかを送信または転送することができる、PCIeデバイス、PCIeエンドポイント、PCIeポート、またはその他のPCIeユニットもしくはPCIe互換のユニットを含む。本願明細書で使用される「受信デバイス」または「受信エンドポイント」または「受信ポート」という用語は、例えば、PCIeデータ、パケットおよび他の情報あるいはそのいずれかを受信すること、またはそれが転送されてくることが可能な、PCIeデバイス、PCIeエンドポイント、PCIeポート、またはその他のPCIeユニットもしくはPCIe互換のユニットを含む。
【0033】
本願明細書で使用される「データ・ペイロード」という用語は、例えば、実データ(substantive data)もしくは特定用途向けデータもしくは同様のものを含むPCIeトランザクション層パケット(TLP)の部分もしくは内容、メタ・データ、構造情報、制御情報を含まないTLP部分もしくはTLP内容、非ヘッダのTLP部分もしくはTLP内容、非ダイジェストのTLP部分もしくはTLP内容、TLPの非ヘッダもしくは非ダイジェスト部、または、特定用途向けデータもしくは実データを格納する、もしくは格納することができる、もしくは格納もしくは搬送するよう指定されているTLPの他の部分、セグメント、フィールドもしくはスペースを含む。
【0034】
本願明細書で使用される「ダイジェスト」または「パケット・ダイジェスト」または「PCIeパケット・ダイジェスト」または「PCIe TLPダイジェスト」または「ダイジェスト部」または「ダイジェスト・フィールド」または「ダイジェスト・セグメント」という用語は、例えば、任意選択でTLPに付加されるPCIe TLPの部分もしくは内容、全体もしくは一部分においてECRC、CRC、もしくは他のデータ保護メカニズム、もしくはデータ点検メカニズム、もしくはデータ保全メカニズム、もしくはデータ検証メカニズムに使用されるTLP部分もしくはTLP内容、TLPの最後にある、もしくはTLPに付加されている、もしくはTLPデータ・ペイロードに付加されている、32ビットの部分もしくは内容もしくは他のサイズの部分もしくは内容、TLPの最後の32ビットに該当するスペース、または、例えばヘッダ・フロー制御クレジットを利用する、TLPの任意の非ヘッダおよび非データ・ペイロード部分もしくは内容を含み得る。
【0035】
本願明細書で使用される「ダブル・ワード」または「D(Double)ワード」または「DW(Double Word)」という用語は、例えば、4バイト、すなわち32ビットのサイズのデータ・ユニットを含む。
【0036】
本願明細書で使用される、「非ECRCデータ」または「非ECRC情報」または「非CRCデータ」または「非CRC情報」という用語は、例えば、ECRC目的にもCRC目的にも使用されないデータもしくは情報、ECRCもしくはCRCデータ以外のデータもしくは情報、実データ、特定用途向けデータ、または同様のものを含む。
【0037】
例証のために、本願明細書の説明の各部分はPCIe通信またはデバイスに関するが、本発明の実施形態は、他の種類の通信またはデバイスと共に使用されてもよい。例えば、パケット化データの高速シリアル相互接続を通した転送を利用する通信もしくはデバイス、フロー制御ベースのリンク管理を利用する通信もしくはデバイス、クレジット・ベース・フロー制御を利用する通信またはデバイス、完全シリアル・インターフェースを利用する通信もしくはデバイス、属性付きパケットと共に実装されるスプリット・トランザクション・プロトコルを利用する通信もしくはデバイス、改良されたパケット転送もしくは最適なパケット転送のためにパケットに優先順位をつける通信もしくはデバイス、1つ以上のレーンを有するスケーラブル・リンク(例えばポイント・ツー・ポイント接続)を利用する通信もしくはデバイス、高速シリアル相互接続を利用する通信もしくはデバイス、種々のトラフィック・タイプの区別を利用する通信またはデバイス、高信頼性のデータ転送メカニズムを利用する(例えば、シーケンス番号およびエンド・ツー・エンド巡回冗長検査(ECRC)あるいはそのいずれかを使用する)通信もしくはデバイス、転送データの保全性を実現するためにリンク層を利用する通信もしくはデバイス、2つの低電圧差動駆動信号ペア(例えば送信ペアおよび受信ペア)の物理層を利用する通信もしくはデバイス、レーン幅および動作周波数のネゴシエーションを含むリンク初期化を利用する通信もしくはデバイス、受信側で受信バッファがパケットを受信できることが既知であるときのみデータ・パケットの伝送を許可する通信もしくはデバイス、リクエスト・パケットおよびレスポンス・パケットあるいはそのいずれかを利用する通信もしくはデバイス、メッセージ・スペース、メッセージ信号割り込み(MSI:Message Signaled Interrupt)およびインバンド・メッセージあるいはそのいずれかを利用する通信もしくはデバイス、ソフトウェア層コンフィグレーション・スペースを利用する通信もしくはデバイス、最大ペイロード・サイズ(MPS:Maximum Payload Size)パラメータを利用する通信もしくはデバイス、または同様のものなどである。
【0038】
概説として、本発明のいくつかの実施形態は、変更されたPCIeプロトコルを提供し、例えばデータ・クレジットを消費することなくデータ・ペイロードを搬送するためなど、TLPダイジェストの変更された使用法を可能にする。変更されたPCIeプロトコルは、ECRCに関するTLPダイジェストの従来の使用法の代わりに、またはそれに加えて、変更されたTLPダイジェストの(またはそのTLPダイジェストに対応するスペースもしくは通信部の)種々の利用モデルを可能にする。いくつかの実施形態は、1Dワードまたは1Dワード以下の一般的内容(generic content)、例えば、データ・クレジットもしくは他のデータ・リソースを消費してはならない実情報もしくはデータ、制御情報もしくはデータ、およびデータ・ペイロード、あるいはそのいずれかを搬送または転送または格納するために、TLPダイジェストに対応するパケット・スペースを利用する。変更されたTLPダイジェストを使用して搬送できる適切に小さなデータ・ペイロード伝送の例証となるいくつかの例には、状態インジケーション(status indication)、レジスタ・データ、保護キーなどがある。いくつかの実施形態では、小さなデータ・ペイロードを有するPCIe TLPは、例えばパケット・ダイジェストに対応するスペース内でデータを伝送してヘッダ・フロー制御クレジットのみを消費することによって、実質的にデータ・リソースを消費することなく送信、輸送および受信される。
【0039】
本願明細書の説明の各部分は、例証のために、PCIeプロトコルを利用する通信に関することもあるが、本発明の実施形態は、例えば、ECRCが任意であるかもしくは重要でない通信システムもしくはプロトコル、信頼できるリンクを利用する通信システムもしくはプロトコル、または同様のものにおいてなど、他の適切な通信システム、デバイス、方法およびプロトコル、あるいはそのいずれかと共に使用することもできる。一例として、PCIエクスプレス・リンクは、リンク層CRC(LCRC:link layer CRC)をサポートしてPCIeパケットに関しデータ・リンク層での誤り検出を提供しており、トランザクション層では、TLPダイジェスト内などのさらなるECRC保護は任意選択である。さらに、PCIeホストに直接結合されている複数デバイスのPCIエクスプレス・システムにおいて、ならびに中間にあるコンポーネントが実質的にTLP内容の保存および転送あるいはそのいずれかを行うのに信頼できる場合、あるいはそのいずれかで、ECRCは重要でないこともある。
【0040】
いくつかの実施形態では、トランザクション・イニシエータまたは送信デバイスが、変更されたPCIeプロトコルに従ってTLPを構成、作成または生成し、例えばTLPヘッダ内のインジケーション・ビットまたはフラグまたはパラメータを使用して、特定用途向けパケット・ダイジェストの存在を示す。受信エンドポイントまたは受信デバイスは、TLPヘッダのインジケーションに基づき、パケット・ダイジェストを復号する。中間にあるPCIeデバイス(例えばPCIeスイッチ)は、PCIeプロトコルおよび変更されたPCIeプロトコルあるいはそのいずれかに従って、特定用途向けダイジェストを含むTLPの中継、ルーティングおよび転送あるいはそのいずれかを行う。
【0041】
図1は、本発明の例証となるいくつかの実施形態による、PCIeパケット・ダイジェストを利用できるシステム100のブロック図を概略的に示す。システム100は、例えば、コンピューティング・デバイス、コンピュータ、パーソナル・コンピュータ(PC:personal computer)、サーバ・コンピュータ、クライアント/サーバ・システム、モバイル・コンピュータ、ポータブル・コンピュータ、ラップトップ・コンピュータ、ノートブック型コンピュータ、タブレット・コンピュータ、相互接続された複数のデバイスのネットワーク、または同様のものであっても、もしくはそれらを含んでもよい。
【0042】
システム100は、例えばプロセッサ111、入力ユニット112、出力ユニット113、メモリ・ユニット114、ストレージ・ユニット115、通信ユニット116およびグラフィックス・カード117を含むとよい。システム100は、任意選択で、他の適切なハードウェア・コンポーネントおよびソフトウェア・コンポーネント、あるいはそのいずれかを含んでもよい。
【0043】
プロセッサ111は、例えば、中央処理ユニット(CPU:central processing unit)、デジタル・シグナル・プロセッサ(DSP:digital signal processor)、マイクロプロセッサ、ホスト・プロセッサ、制御器、複数のプロセッサもしくは制御器、チップ、マイクロチップ、1つ以上の回路、電気回路、論理ユニット、集積回路(IC:integrated circuit)、特定用途向け集積回路(ASIC:application−specific integrated circuit)またはその他任意の適切な多目的もしくは特定プロセッサもしくは制御器を含めばよい。プロセッサ111は、例えばシステム100のオペレーティング・システム(OS:operating system)171の、または1つ以上のソフトウェア・アプリケーション172の命令を実行するとよい。
【0044】
入力ユニット112は、例えば、キーボード、キーパッド、マウス、タッチ・パッド、スタイラス、マイクロホン、またはその他適切なポインティング・デバイスもしくは入力デバイスを含めばよい。出力ユニット113は、例えば、陰極線管(CRT:cathode ray tube)モニタもしくはディスプレイ・ユニット、液晶ディスプレイ(LCD:liquid crystal display)モニタもしくはディスプレイ・ユニット、スクリーン、モニタ、スピーカ、またはその他適切なディスプレイ・ユニットもしくは出力デバイスを含めばよい。グラフィックス・カード117は、例えば、グラフィックスもしくはビデオ・プロセッサ、アダプタ、制御器またはアクセラレータを含めばよい。
【0045】
メモリ・ユニット114は、例えば、ランダム・アクセス・メモリ(RAM:random access memory)、読み出し専用メモリ(ROM:read only memory)、ダイナミックRAM(DRAM:dynamic RAM)、シンクロナスDRAM(SD−RAM:synchronous DRAM)、フラッシュ・メモリ、揮発性メモリ、不揮発性メモリ、キャッシュ・メモリ、バッファ、短期メモリ・ユニット、長期メモリ・ユニット、またはその他適切なメモリ・ユニットもしくはストレージ・ユニットを含めばよい。ストレージ・ユニット115は、例えば、ハード・ディスク・ドライブ、フレキシブル・ディスク・ドライブ、コンパクト・ディスク(CD:compact disk)ドライブ、CD−ROMドライブ、デジタル多用途ディスク(DVD:digital versatile disk)ドライブ、またはその他適切な取り外し可能なストレージ・ユニットもしくは取り外し不可能なストレージ・ユニットを含めばよい。メモリ・ユニット114およびストレージ・ユニット115あるいはそのいずれかは、例えば、システム100により処理されたデータを格納するとよい。
【0046】
通信ユニット116は、例えば、有線もしくは無線のネットワーク・インターフェース・カード(NIC:network interface card)、有線もしくは無線のモデム、有線もしくは無線の受信機および送信機あるいはそのいずれか、有線もしくは無線の送受信装置およびトランシーバあるいはそのいずれか、無線周波数(RF:radio frequency)通信ユニットもしくはトランシーバ、または信号、ブロック、フレーム、送信ストリーム、パケット、メッセージおよびデータあるいはそのいずれかの送信および受信あるいはそのいずれかを行うことができる他のユニットを含めばよい。通信ユニット116は、例えば、ダイポール・アンテナ、モノポール・アンテナ、全方向性アンテナ、エンド・フェッド・アンテナ(end fed antenna)、円偏波アンテナ、マイクロ・ストリップ・アンテナ、ダイバーシチ・アンテナ、または同様のものなどの1つ以上のアンテナを任意選択で含むか、またはそれと任意選択で関連していてもよい。
【0047】
いくつかの実施形態では、システム100のコンポーネントは、例えば、共通の筐体、パッケージ、または同様のものに入れられるとよく、1つ以上の有線または無線リンクを使用して相互接続されるか、または動作可能に関連させられるとよい。他の実施形態では、例えば、システム100のコンポーネントは、複数または別々のデバイス間に分布してもよく、クライアント/サーバ構成もしくはシステムを使用して実装されてもよく、リモート・アクセス方法を使用して通信してもよく、または同様のことも可能である。
【0048】
システム100はさらに、システム100の複数コンポーネント間、例えば複数のPCIeエンドポイント間またはデバイス間を接続することができるPCIeホスト・ブリッジ120を含むとよい。PCIeホスト・ブリッジ120は、メモリ・ブリッジ121またはその他のメモリ制御器を含むとよく、それに対してメモリ・ユニット114およびグラフィックス・カード117あるいはそのいずれかが接続されているとよい。PCIeホスト・ブリッジ120はさらに、入出力(I/O)ブリッジ122を含むとよく、それに対して入力ユニット112、出力ユニット113、ストレージ・ユニット115、通信ユニット116、および1つ以上のユニバーサル・シリアル・バス(USB:universal serial bus)デバイス118が接続されるとよい。
【0049】
システム100はさらに、複数のPCIeエンドポイントまたはPCIeデバイス間を相互接続することができるPCIeスイッチ125を含むとよい。いくつかの実施形態では、PCIeスイッチ125は、別個またはスタンド・アロンのユニットまたはコンポーネントとして実装されてもよい。他の実施形態では、PCIeスイッチ125は、PCIeホスト・ブリッジ120またはその他適切なコンポーネントに統合されても、それと共に組み込まれても、またはそれを使用して他の方法で実装されてもよい。
【0050】
図1のトポロジまたはアーキテクチャは、例証のために示されており、本発明の実施形態は、その他適切なトポロジまたはアーキテクチャと共に使用されてもよい。例えば、いくつかの実施形態では、メモリ・ブリッジ121は、メモリ制御器として実装され、PCIeホスト・ブリッジ120に含まれるかまたは組み込まれる。いくつかの実施形態では、「ノース・ブリッジ」または「サウス・ブリッジ」が使用され、任意選択で、PCIeホスト・ブリッジ120および同様のPCIeホスト・コンポーネントあるいはそのいずれかを含む。いくつかの実施形態では、メモリ・ブリッジ121およびPCIeホスト・ブリッジ120(および任意選択でプロセッサ111)は、単一または共通の集積回路(IC)を使用して、または複数のICを使用して実装される。その他適切なトポロジまたはアーキテクチャが使用されてもよい。
【0051】
PCIeホスト・ブリッジ120およびPCIeスイッチ125あるいはそのいずれかは、複数のPCIeエンドポイント間またはPCIeデバイス間、例えばエンドポイント141〜145を相互接続するとよい。いくつかのPCIeデバイスまたはエンドポイント(例えばPCIeエンドポイント141および142)が、PCIeホスト・ブリッジ120によって直接接続され、その一方で、他のPCIeエンドポイント(例えばPCIeエンドポイント143〜145)はPCIeスイッチ125を使用して間接的に接続される。例証のために、エンドポイント141は、データをメモリ・ブリッジ121へ送信するとよい。したがって、エンドポイント141は、本願明細書では「送信エンドポイント」または「送信デバイス」と呼ばれ、その一方で、メモリ・ブリッジ121は、本願明細書では「受信エンドポイント」または「受信デバイス」と呼ばれる。
【0052】
その他のコンポーネントは、送信デバイスおよび受信デバイスあるいはそのいずれかとして動作するとよい。例えば、プロセッサ111が送信デバイスであって、メモリ・ユニット114が受信デバイスであってもよく、USBデバイス118が送信デバイスであって、ストレージ・ユニット115が受信デバイスであってもよく、メモリ・ブリッジ121が受信デバイス(例えば第1のエンドポイントまたはコンポーネントに対する)および送信デバイス(例えば第2のエンドポイントまたはコンポーネントに対する)あるいはそのいずれかとして動作してもよく、または同様のことも可能である。いくつかの実施形態では、受信デバイスは、データまたは制御データを送信デバイスに送り返すことができ、またはその逆も可能である。例えば、送信デバイスと受信デバイスとの間の通信は、一方向または双方向であればよい。
【0053】
任意選択で、送信デバイスはデバイス・ドライバを利用して動作してもよく、受信デバイスはデバイス・ドライバを利用して動作してもよい。いくつかの実施形態では、デバイス・ドライバ、ならびにPCIeホスト・ブリッジ120およびPCIeスイッチ125は、本発明のいくつかの実施形態による、変更されたPCIeプロトコル175をサポートするとよい。送信デバイスは、PCIeポート151(「アップストリーム・ポート」または「ダウンストリーム・フェイシング・ポート(downstream−facing port)」)に接続されている(またはそれを含む)。受信デバイスは、PCIeポート152、例えばPCIeホスト・ブリッジ120のPCIeポート(「ダウンストリーム・ポート」または「アップストリーム・フェイシング・ポート(upstream−facing port)」)に接続されている(またはそれを含む)。
【0054】
いくつかの実施形態では、パケット191は、送信デバイスと受信デバイスとの間の、中間にあるPCIeデバイスを通過するか、またはそれによって中継されるとよい。例えば、エンドポイント145が送信デバイスであってメモリ・ブリッジ121が受信デバイスである場合、PCIeスイッチ125は、送信エンドポイント145と受信メモリ・ブリッジ121との中間にあるデバイスである。
【0055】
いくつかの実施形態では、送信デバイスは、変更されたPCIeプロトコル175を使用して、すなわち、データ・フロー制御クレジットまたは追加のデータ・フロー制御クレジットを消費することなくデータ・ペイロードを輸送するために共通または特定用途向けパケット・ダイジェストを利用して、データを受信デバイスへ転送する。例えば、変更されたPCIeプロトコルに従って、非ECRCデータが、TLPダイジェストに含まれ、ヘッダ・フロー制御クレジットのみを使用して送信されるとよい。送信デバイスは、ダイジェストがパケットに付加されていることを示すため、ダイジェストがECRCデータを含まないことを示すため、およびCRC検査が無視されるべきであることを示すため、またはそのいずれかのための1つ以上のインジケーションをパケット・ヘッダ内に有する、変更されたTLP191を構成する。
【0056】
いくつかの実施形態では、TLPダイジェストに対応するスペースは、例えば状態ベクトル(status vector)(例えば、ノンポステッド・リクエスト(non−posted request)へのレスポンスと共に搬送される)、保護キー、エンド・ツー・エンド・フロー制御、またはその他任意の特定用途向け単一DWペイロードなど、種々のタイプの情報を格納または搬送するために使用されるとよい。各実施形態は、例えば、拡張されたECRC保護を必要としないデータを、通常のデータ・ペイロードの代わりにパケット・ダイジェスト内で送信することで、データ保全性を損なうことなく、ダイジェスト・リソースのより最適な利用を可能にすることができる。
【0057】
いくつかの実施形態は、特定用途向けデータまたはタスクにダイジェスト・スペース(例えばTLP毎に4バイト)を利用することを可能にし、その用途が当該のデータ・タスクにデータ・ペイロードを利用することを求めない。したがって、いくつかの実施形態は、特定用途向けデータ・ペイロードの使用を減らす。この特定用途向けデータ・ペイロードの使用は、追加のデータ・バッファおよび関連したクレジットあるいはそのいずれかの割り当てを必要とし、さらに理論上のリンク帯域幅の約20パーセント以下のパケット・オーバーヘッドをもたらす(例えば短いパケット・トラフィックに関して)。本発明の実施形態は、他の利点または利益を提供し得る。
【0058】
いくつかの実施形態では、変更されたPCIeプロトコル175は、リンクに接続されているデバイス間の効率的なデータ転送のために、フロー制御ベースのリンク管理を利用する。例えば、実質的に各PCIeデバイスが、例えば「クレジット」または他の受信バッファ単位の規定を使用して、他のPCIeデバイス(単数または複数)に、その受信バッファの能力を通知する。伝送される各パケットは、いくらかのクレジットを消費する。時折、受信PCIeデバイスは、新たなパケットに利用可能となる(例えば受信バッファからの古いデータの除去によって)バッファ・スペースの追加量(例えば解放されたクレジット)について送信PCIeデバイスに最新情報を与える。送信PCIeデバイスは、遠隔の受信側によって通知された利用可能なクレジットを累算していき、それと、送信デバイスがそれまでにパケットを送信して消費したクレジットの総数とを比較する。送信デバイスは、受信デバイス側に利用可能なクレジットが十分ある場合に限り、新たなパケットを送信することができる。クレジットの不足は、伝送の停滞を招き、パフォーマンスの低下につながる。いくつかの実施形態に従い、変更されたPCIeプロトコル175は、送信PCIeデバイスが、特定用途向けデータをTLPダイジェストに対応するスペースまたはその一部(例えばECRC部)に格納できるようにし、その結果、TLP内でさらなる量の実データを送信して、利用可能なクレジットをより効率的に利用できるようにする。
【0059】
変更されたPCIeプロトコル175は、PCIe TLPヘッダ(例えばヘッダ単位)およびPCIe TLPデータ(例えば16バイト単位)の別々のクレジットの規定を利用する。PCIe TLPは、ヘッダのみを含み、したがって1つのヘッダ・クレジットのみを消費してもよい。または、データ・ペイロードを有するPCIe TLPが、1つのヘッダ・クレジットおよびデータ・ペイロード・サイズに等しいいくつかのデータ・クレジットを消費してもよい。PCIe TLPダイジェスト(例えばECRCに使用される1DW)は、ヘッダ・クレジットに収まり、データ・クレジットの消費は必要としない。したがって、いくつかの実施形態では、特定用途向けデータを搬送および転送するためにTLPダイジェストを使用することで、データ・クレジットが節約される。このように、いくつかの実施形態は、データ・バッファ消費およびクレジット消費あるいはそのいずれかを軽減するために、ヘッダ・クレジットとデータ・クレジットとを分ける、または区別するPCIeメカニズムを利用する。これは例えば特定用途向けデータ(例えば非ECRCデータ)をヘッダ・クレジット(単数または複数)に含まれるPCIe TLPの一部に(例えばダイジェストまたはダイジェストの一部に)格納して搬送することによる。
【0060】
図2は、本発明の例証となるいくつかの実施形態による、変更されたTLPダイジェストを含むPCIeパケット210の構造を概略的に示す。本願明細書の説明の各部分は、例証のために、64ビット・アドレッシングを利用するPCIe TLP構造に関するが、本発明の実施形態はこの点で制限されず、他のPCIe TLP構造、例えば32ビット・アドレッシングを利用する構造またはその他適切な構造もしくはサイズと共に使用されてもよい。
【0061】
パケット210は、4ダブル・ワードの構造であり、ヘッダ部220、データ部230およびダイジェスト部240を含む。第1の行211は、バイト・オフセット(例えば+0、+1、+2および+3)を示し、第2の行212は、ビット数(例えば0〜7まで番号付けされた8ビット)を示す。ヘッダ220は、行213および214に示されているように、8バイトを占有する制御情報のフィールド(例えば、フォーマット・フィールド、タイプ・フィールド、長さフィールド、IDフィールド、タグ・フィールドおよび同様のものを含む)を含む。行215および216は、64ビット・アドレス、例えば、予約されている下位2ビットを有するリクエスト・アドレスを含む。行213〜216は、パケット210のヘッダ部220に当たる。
【0062】
適切であれば、TLP210のデータ部230は、ペイロード・データを搬送するために使用される。いくつかのTLPは、データ・ペイロード部230を含むことがあり、その一方で、他のTLPは、データ・ペイロード部230を含まないこともある。クレジット・ベース・フロー制御プロトコルに従い、TLPのデータ部230をデータ転送に利用するにはデータ・フロー制御クレジットが必要であり、非常に小さなデータ・ペイロードには効率的でないと考えられる。
【0063】
ダイジェスト部240は、TLPに付加されてもよい任意選択のTLPダイジェストを含む。いくつかの実施形態では、パケット210は、追加の実データまたは非ECRCデータを含み、その格納および搬送あるいはそのいずれかが、TLPダイジェストに対応するスペースにおいて行われる。ダイジェスト240内の追加スペースは、ECRC情報を格納せず、代わりに、他の情報または代わりの情報、例えば特定用途向けデータまたは非ECRCデータを格納する。
【0064】
いくつかの実施形態では、変更されたTLP210のヘッダは、特定用途向けデータまたは非ECRCデータを有するTLPダイジェストの存在を示す1つ以上のインジケーション・ビットまたはフラグまたはフィールドを含む。例えば、TLPダイジェスト(TD:TLP Digest)インジケーション・ビット299がダイジェストの存在を示すとよい。例えば、ダイジェストが特定用途向けデータもしくは非ECRCデータを含むことを示すため、ダイジェストがECRC情報を含まないことを示すため、ECRC検査が無視されるべきであることを示すため、およびTLPダイジェストに対応するスペースもしくはそのスペースの定義済み部分から実データもしくは非ECRCデータが読み取りまたは収集されるべきである(例えば受信デバイスによって)ことを示すため、あるいはそのいずれかのために、ヘッダ220の指定された1つ以上のビットまたはフラグもしくはフィールド、例えば予約されているビット297および予約されているフィールド298あるいはそのいずれかが使用されてもよい。
【0065】
図3は、本発明の例証となるいくつかの実施形態による、変更されたPCIエクスプレス・パケット・ダイジェストを利用する方法300の概略流れ図である。本方法の各工程は、例えば、図1のシステム100によって、またはその他適切なユニット、デバイスおよびシステムあるいはそのいずれかによって、あるいはシステム100と、その他適切なユニット、デバイスおよびシステムあるいはそのいずれかとの両方によって、使用されればよい。
【0066】
いくつかの実施形態において、本方法は、特定用途向けダイジェストを有するPCIe TLPを構成または生成することを含む(ブロック310)。例えば、特定用途向けダイジェストは、パケットのダイジェスト部に対応するスペース内で搬送される非ECRCデータまたは一般的データまたは特定用途向けデータを含めばよい。例えば、非ECRCデータは、ECRCデータに対応する(またはそれにあらかじめ割り当てられた)ダイジェスト・スペースに入れられるか、または格納されるとよい。
【0067】
ブロック312に示されているように、本方法は、特定用途向けダイジェストをTLPのヘッダ内で示すことを含む。例えば、TDインジケーション・ビットまたはフィールド、および予約されている、もしくは特定用途向けのインジケーション・ビットまたはフィールド、あるいはそのいずれかが、ダイジェスト内に特定用途向けデータが存在することをパケット・ヘッダ内で示すよう使用される。いくつかの実施形態では、TDインジケーション・ビット内の「1」という値が、ダイジェストの存在を示すとよく、特定用途向けインジケーション・ビットまたはフラグまたはフィールドがさらに、ダイジェスト・タイプまたはダイジェスト長を示すとよい。他の実施形態では、TDインジケーション・ビットにおける「ゼロ」という値は非ECRCダイジェストを示すとよい。その他適切な値またはインジケーションが使用されてもよい。
【0068】
ブロック314に示されているように、本方法は、特定用途向けダイジェストに含まれるデータを、ヘッダ・フロー制御クレジットを使用して送信することを含むとよい。TLPダイジェストに対応するスペースに特定用途向けデータが含まれれば、そのようなデータはヘッダ・クレジットに含まれ、データ・クレジットを消費しない。それに対して、特定用途向けデータがデータ・ペイロードとして規則どおりに送信されると、1つ以上のデータ・クレジットが消費される(例えば、ダイジェストの存在にかかわらずTLPヘッダにより消費されるヘッダ・クレジットに加えて)。
【0069】
ブロック316で示されているように、TLPダイジェストの処理は、例えばPCIeデバイスが受信デバイス(ブロック318)または中間にあるデバイス(ブロック320)であるか否かによって、異なるとよい。
【0070】
ブロック318に示されているように、受信デバイスは、特定用途向けデータを、変更されたTLPダイジェストから読み取って抽出する。受信デバイスは、例えばTDインジケーション・ビットおよび別の指定されたインジケーション・ビットもしくはフィールドによって、あるいはそのいずれかによって示される、TLPがデータ・ペイロードをメッセージ・ダイジェスト内に含むこと、およびTLPはECRCをメッセージ・ダイジェスト内に含まないこと、あるいはそのいずれかの、変更されたTLPのヘッダ内のインジケーションを受信し、復号するとよい。例えば、変更されていないTLPに対してECRC検査が実行される場合には、TDビットにより示されるように、変更されたTLPに対するECRC検査を受信デバイスが無視し(例えば、ECRCメカニズムを省略もしくは回避もしくは無効化することによって、またはECRCプロセスの結果を無視することによって)、変更されたTLPダイジェストから特定用途向けデータを抽出または復号する。
【0071】
ブロック320で示されているように、中間にあるデバイス(例えば、PCIeスイッチまたは目標の受信デバイスではない他のPCIeデバイス)は、実質的にメッセージ・ダイジェストにアクセスすることまたは変更を加えることなく、TLPを中継または転送する。中間にあるデバイスがECRC検査をサポートする場合、中間にあるそのデバイスは、例えば変更されたTLPヘッダ内の指定のビットもしくはフラグもしくはフィールド内のインジケーションによって、またはECRCを無効にするシステム構成によって、ECRC検査を実行しないよう(またはECRC検査結果を無視するよう)命令されるとよい。
【0072】
その他適切な動作または複数セットの動作が、本発明の実施形態に従って使用されればよい。
【0073】
本発明のいくつかの実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素およびソフトウェア要素両方を含んだ実施形態という形をとってよい。いくつかの実施形態はソフトウェアにおいて実装されてもよく、このソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードまたは同様のものを含むがこれに限定されるものではない。
【0074】
さらに、本発明のいくつかの実施形態は、コンピュータまたは任意の命令実行システムにより使用される、またはそれに関連して使用されるプログラム・コードを提供するコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能な、コンピュータ・プログラム製品という形をとることができる。例えば、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置もしくはデバイスにより使用される、またはこれらに関連して使用されるプログラムを、含むこと、格納すること、伝達すること、伝播させること、または転送することができる任意の装置であっても、またはそれを含んでもよい。
【0075】
いくつかの実施形態では、媒体は、電子、磁気、光学、電磁気、赤外線または半導体のシステム(もしくは装置もしくはデバイス)、または伝播媒質とすることができる。コンピュータ可読媒体の例証となるいくつかの例には、半導体または固体メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、剛体磁気ディスクおよび光ディスクがある。光ディスクの例証となるいくつかの例には、コンパクト・ディスク−読み取り専用メモリ(CD−ROM:compact disk−read only memory)、コンパクト・ディスク−リード/ライト(CD−R/W:compact disk−read/write)およびDVDがある。
【0076】
いくつかの実施形態では、プログラム・コードの格納および実行あるいはそのいずれかを行うのに適したデータ処理システムは、例えばシステム・バスを介して、直接的または間接的にメモリ要素に結合された、少なくとも1つのプロセッサを含むとよい。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリと、大容量ストレージと、実行中に大容量ストレージからコードを読み出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的なストレージとなることができるキャッシュ・メモリとを含み得る。
【0077】
いくつかの実施形態では、入出力すなわちI/Oデバイス(限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む)を、直接、または介在するI/O制御装置を介してシステムに結合可能である。いくつかの実施形態では、データ処理システムを、例えば介在するプライベート・ネットワークまたはパブリック・ネットワークを介して他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるよう、ネットワーク・アダプタがシステムに結合されているとよい。モデム、ケーブル・モデムおよびイーサネット(R)カードが、本発明のいくつかの実施形態におけるネットワーク・アダプタのタイプの例証となる例である。その他適切なコンポーネントが使用されてもよい。
【0078】
本発明の特定の特徴が、本願明細書において説明および記載されてきたが、当業者には、多数の改良、置換、変更および等価物が想起される可能性がある。

【特許請求の範囲】
【請求項1】
周辺コンポーネント相互接続(PCI)エクスプレス・パケット・ダイジェストを変更する装置であって、
非エンド・ツー・エンド巡回冗長検査(ECRC)データをダイジェスト部の1つ以上のビットが搬送するクレジット・ベース・フロー制御相互接続トランザクション層パケットを生成する、クレジット・ベース・フロー制御相互接続デバイス
を含む装置。
【請求項2】
前記非ECRCデータは、特定用途向けデータを含む、請求項1に記載の装置。
【請求項3】
前記トランザクション層パケットのヘッダは、前記ダイジェスト部は非ECRCデータを搬送するということのインジケーションを含む、請求項1に記載の装置。
【請求項4】
前記トランザクション層パケットのヘッダは、前記ダイジェスト部は特定用途向けデータを搬送するということのインジケーションを含む、請求項1に記載の装置。
【請求項5】
前記トランザクション層パケットのヘッダは、受信デバイスは前記ダイジェスト部において搬送される前記非ECRCデータを復号するべきであるということのインジケーションを含む、請求項1に記載の装置。
【請求項6】
前記トランザクション層パケットのヘッダは、中間にあるデバイスは前記トランザクション層パケットのECRC検査の結果を無視するべきであるということのインジケーションを含む、請求項1に記載の装置。
【請求項7】
前記クレジット・ベース・フロー制御相互接続デバイスは、PCIエクスプレス・デバイスを含み、前記クレジット・ベース・フロー制御相互接続トランザクション層パケットは、PCIエクスプレス・トランザクション層パケットを含む、請求項1に記載の装置。
【請求項8】
周辺コンポーネント相互接続(PCI)エクスプレス・パケット・ダイジェストを変更する方法であって、
非ECRCデータをダイジェスト部の1つ以上のビットが搬送するクレジット・ベース・フロー制御相互接続トランザクション層パケットを生成するステップ
を含む方法。
【請求項9】
前記生成するステップは、
前記非ECRCデータを、ECRCデータに対応するダイジェスト・スペースに入れるステップ
を含む、請求項8に記載の方法。
【請求項10】
前記生成するステップは、
前記ダイジェスト部は非ECRCデータを搬送するということのインジケーションを、前記トランザクション層パケットのヘッダに入れるステップ
を含む、請求項8に記載の方法。
【請求項11】
前記生成するステップは、
前記ダイジェスト部は特定用途向けデータを搬送するということのインジケーションを、前記トランザクション層パケットのヘッダに入れるステップ
を含む、請求項8に記載の方法。
【請求項12】
前記生成するステップは、
受信デバイスは前記ダイジェスト部において搬送される前記非ECRCデータを復号するべきであるということのインジケーションを、前記トランザクション層パケットのヘッダに入れるステップ
を含む、請求項8に記載の方法。
【請求項13】
前記生成するステップは、
中間にあるデバイスは前記トランザクション層パケットのECRC検査の結果を無視して前記トランザクション層パケットを転送するべきであるということのインジケーションを、前記トランザクション層パケットのヘッダに入れるステップ
を含む、請求項8に記載の方法。
【請求項14】
前記クレジット・ベース・フロー制御相互接続トランザクション層パケットを前記生成するステップは、PCIエクスプレス・トランザクション層パケットを生成するステップを含む、請求項8に記載の方法。
【請求項15】
特定用途向けデータを、ヘッダ・クレジットを使用して送信するステップ
を含む、請求項8に記載の方法。
【請求項16】
周辺コンポーネント相互接続(PCI)エクスプレス・パケット・ダイジェストを変更するシステムであって、
非ECRCデータをダイジェスト部の1つ以上のビットが搬送するクレジット・ベース・フロー制御相互接続トランザクション層パケットを生成する、クレジット・ベース・フロー制御相互接続デバイスと、
前記トランザクション層パケットを転送するクレジット・ベース・フロー制御相互接続リンクと、
を含むシステム。
【請求項17】
前記トランザクション層パケットのヘッダ内のインジケーションに基づき、前記クレジット・ベース・フロー制御相互接続リンクは、前記トランザクション層パケットのECRC検査の結果を無視する、請求項16に記載のシステム。
【請求項18】
前記トランザクション層パケットを受信して前記ダイジェスト部から前記非ECRCデータを抽出する、さらなるクレジット・ベース・フロー制御相互接続デバイス
をさらに含む、請求項16に記載のシステム。
【請求項19】
前記トランザクション層パケットのヘッダ内のインジケーションに基づき、さらなるクレジット・ベース・フロー制御相互接続リンクは、前記トランザクション層パケットのECRC検査の実行を回避する、請求項18に記載のシステム。
【請求項20】
前記クレジット・ベース・フロー制御相互接続デバイスは、PCIエクスプレス・デバイスを含み、前記クレジット・ベース・フロー制御相互接続トランザクション層パケットは、PCIエクスプレス・トランザクション層パケットを含み、前記クレジット・ベース・フロー制御相互接続リンクは、PCIエクスプレス・リンクを含む、請求項16に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公表番号】特表2010−532607(P2010−532607A)
【公表日】平成22年10月7日(2010.10.7)
【国際特許分類】
【出願番号】特願2010−513824(P2010−513824)
【出願日】平成20年6月5日(2008.6.5)
【国際出願番号】PCT/EP2008/056990
【国際公開番号】WO2009/003786
【国際公開日】平成21年1月8日(2009.1.8)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】