JP2014017006A - PCIExpressでのIDベースストリームを可能にする方法及び装置 - Google Patents

PCIExpressでのIDベースストリームを可能にする方法及び装置 Download PDF

Info

Publication number
JP2014017006A
JP2014017006A JP2013188640A JP2013188640A JP2014017006A JP 2014017006 A JP2014017006 A JP 2014017006A JP 2013188640 A JP2013188640 A JP 2013188640A JP 2013188640 A JP2013188640 A JP 2013188640A JP 2014017006 A JP2014017006 A JP 2014017006A
Authority
JP
Japan
Prior art keywords
packet
request
queue
posted
port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013188640A
Other languages
English (en)
Other versions
JP5897524B2 (ja
Inventor
Singhal Abhishek
サインハル、アブヒシェク
David Harriman
ハリマン、デイビット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014017006A publication Critical patent/JP2014017006A/ja
Application granted granted Critical
Publication of JP5897524B2 publication Critical patent/JP5897524B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】Peripheral Component Interconnect Express(PCIe)上でIDベースのストリームを可能とする。
【解決手段】装置は、シリアルポイント・ツー・ポイント接続ポートで送信されるパケットの順序を付けるメモリ順序付けロジックであって、第1パケットの後に到着した第2パケットを使用して、第2パケットが、第2パケットが順序に依存しないことを示す属性フラグ及び第1パケットに含まれるIDとは異なるIDを含む場合に、ストールした第1パケットをバイパスするメモリ順序付けロジックを備える。
【選択図】図1

Description

本発明は、接続の分野に関し、特に、PCI Express(ピーシーアイ・エクスプレス)上のIDベースのストリームを可能にすることに関する。
コンピュータシステムは、数多くの部品及び要素を含む。これらの構成要素は、多くの場合、バス又は配線を介して接続される。従来は、複数の入出力(I/O)デバイスは、Peripheral Component Interconnect(PCI)と称される周知のマルチドロップ並列バス構造を介して、共に接続されていた。最近では、シリアル物理層通信プロトコルを使用するデバイス間の高速接続を容易にするために、PCI−Express(PCIe)と称される新しい世代のI/Oバスが使用されている。
PCIEアーキテクチャは、デバイス間の通信のための階層プロトコルを含む。例えば、物理層、リンク層及びトランザクション層で、PCIEプロトコルスタックが構成されている。PCIeリンクは、レーンと称される専用一方向の組のシリアルポイント・ツー・ポイント接続の周辺に構築される。デバイス間のリンクは、1、2、16、32等の数のレーンを含む。現在のPCIE規格の基本仕様2.0は、http://www.pcisigcom/specifications/pciexpress/にて参照可能である。
従来のPCIeにおける順序付け規則は、製造者‐消費者プログラミングモデルを可能とするべく作成されていた。このモデルでは、特定のデバイスからの読み出しは、それ以前に生成されていた書き込みを押し出す必要がある。このようなプログラミングモデルでは、メモリロケーションXの読み出しは、常に、そのメモリ位置に書き込まれた最新のデータを取得する。
しかしながら、この順序付け規則によると、1の要求ストリーム(同じ要求デバイスからの同じ目的デバイスに対する読み出し又は書き込み処理のシーケンス)からの要求が、別の独立した要求ストリームと干渉を起こしてしまう。この干渉は、性能における大きなボトルネックとなっている。ポストしていない要求が、ポスト済み要求の背後でブロックされてしまうと、読み出し要求は、遅延の影響を大きく受けることから、この干渉が特に問題となる。
本発明が以下に例示され、本発明は添付の図面によって限定されることを意図していない。
コンピュータシステムにおけるI/Oデバイスを接続するシリアルポイント・ツー・ポイント接続を含むシステムの一実施形態を示した図である。 階層プロトコルスタックの一実施形態を示した図である。 メモリ順序付けロジックの一実施形態を示した図である。 IDベースの順序付けフラグを含むパケットの一実施形態を示した図である。 順序付けテーブルの一実施形態を示した図である。 デバイスIDベースのストリームを可能とするフローチャートの一実施形態を示した図である。
以下、数多くの詳細事項が記載されるが、特定の接続、特定のパケット/メッセージ、パケット/メッセージ内の特定のフィールド及びロケーション、ロジック/キャッシュの特定のロケーション等は、本発明の完全な理解を提供するべく記載されているものである。当業者であれば、これらの特定の詳細事項がなくとも、本発明を実施可能であることは明らかである。また、キャッシュロジック/実装、Peripheral Component Interconnect Express(PCIe)メッセージプロトコル、トランザクションにおけるPCIフィールド/パケット、及びその他のPCIeの基本的な実装等の周知の構成又は方法については、本発明を不必要に曖昧にしない目的から、記載していない。
本明細書に記載する方法及び装置は、PCIe上での、IDベースのストリームを可能とする。特に、(クレジット又はページ失敗等のその他のイベントによって)ストールしたポスト済み要求に関して、スイッチにおける待ち要求のバイパスについて説明する。しかしながら、IDベースのストリームを可能とする方法及び装置はこれに限定されず、あらゆる入出力デバイス又はその他のコンピュータ構成要素のようなICデバイスと関連付けて、又はその他のシリアルポイント・ツー・ポイント接続と関連付けて、本方法及び装置を実装することができる。
[シリアルポイント・ツー・ポイント階層プロトコルリンク/接続]システム100は、コントローラハブ775に接続されたプロセッサ105及びシステムメモリ110を含む。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ、又はその他のプロセッサを含む。プロセッサ105は、フロントサイドバス(FSB)106を介してコントローラハブ775に接続される。一実施形態において、FSB106は、以下に記載するような、シリアルポイント・ツー・ポイント接続である。
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、又はシステム100におけるデバイスがアクセス可能なその他のメモリといったあらゆるメモリを含む。システムメモリ110は、メモリインターフェース776を介してコントローラハブ775と接続される。メモリインターフェースの例としては、ダブルデータレート(DDR)メモリインターフェース、デュアルチャネルDDRメモリインターフェース、及びダイナミックRAM(DRAM)メモリインターフェースが含まれる。
一実施形態において、コントローラハブ775は、Peripheral Component Interconnect Express(PCIe又はPCIE)接続階層におけるルートハブ又はルートコントローラである。コントローラハブ775の例には、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、接続制御ハブ(ICH)、サウスブリッジ、及びルートコントローラ/ハブが含まれる。チップセットという言葉は、多くの場合、物理的に別々の2つの制御ハブを指す、すなわち、接続制御ハブ(ICH)に接続されたメモリ制御ハブ(MCH)を指す。
制御ハブ775は、シリアルリンク779を介してスイッチ/ブリッジ120と接続されている。インターフェース/ポート777及び727とも称される入出力モジュール777及び727は、制御ハブ775とスイッチ120との間の通信を提供する階層プロトコルスタックを含む/実装する。モジュール777、118、121、122、124、126、129及び737のようなモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせに実装されてもよい。さらに、共通に変化し機能するモジュールの境界は、本実施形態では、一緒に実装され、異なる実施形態では、別々に実装される。一実施形態において、複数のデバイスは、スイッチ120と接続する機能を有する。
スイッチ120は、デバイス725及び128からのパケット/メッセージを、アップストリームへと送る、すなわち、階層上部のルートコントローラへと送り、また、制御ハブ775及びダウンストリームへと送る、すなわち、階層においてルートコントローラ、プロセッサ105又はシステムメモリ110から離れたデバイス725及び128へと送る。デバイス725及び128は、電子システムと接続されるあらゆる内部又は外部デバイス又は構成要素を含み、例えば、I/Oデバイス、ネットワークインターフェースコントローラ(NIC)、拡張カード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、Firewireデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ、及びその他の入出力デバイスを含む。スイッチ120は、いかに詳細に説明するメモリ順序付けロジック140を含む、デバイスIDベースのストリームを可能とする。
グラフィックアクセラレータ130も、シリアルリンク732を介して制御ハブ775に接続される。一実施形態において、グラフィックアクセラレータ130は、ICHと接続されたMCHに接続される。スイッチ120、並びにI/Oデバイス725及び128は、ICHに接続される。グラフィックアクセラレータ130と制御ハブ775との間の通信を行うべく階層プロトコルスタックを実装するために、I/Oモジュール131及び118が設けられる。
図2には、階層プロトコルスタックの一実施形態が示されている。階層プロトコルスタック200は、quick path interconnect(QPI)スタック、PCIeスタック、又はその他のプロトコルスタックのようなあらゆる階層通信スタックを含む。一実施形態において、プロトコルスタック200は、トランザクション層205、リンク層210及び物理層220を含むPCIeプロトコルスタックである。図1におけるインターフェース777、118、121、122、124、126、129及び737のようなインターフェースは、通信プロトコルスタック200で表されてもよい。通信プロトコルスタックとしての表現は、プロトコルスタックを実装する/含むインターフェース又はモジュールと称されてもよい。
[トランザクション層]
一実施形態において、トランザクション層205は、デバイスのプロセッシングコアとデータリンク層210及び物理層220のような接続構造との間のインターフェースを提供する。この点において、トランザクション層205の主な役割は、パケット(すなわち、トランザクション層パケット(TLP))の組み立て及び分解である。PCIeは、分割トランザクション、すなわち、要求と応答のトランザクションが時間的に分かれている構成を実装し、目的のデバイスが応答のためのデータを収集している間に、リンクがその他のトラフィックを実行できるようにしている。
また、PCIeは、クレジットベースのフロー制御を利用する。この技術では、デバイスは、トランザクション層205の受信バッファそれぞれに対するクレジットの初期量を通知する。図1の制御ハブ775のようなリンクの反対端における外部デバイスは、各TLPが消費したクレジットの数を数える。トランザクションが、クレジット制限を超えない場合には、トランザクションを送信してもよい。応答を受信すると、クレジットの量が回復する。このクレジットスキームの利点は、クレジット限界に達しない限り、クレジット回復の遅延が、性能に影響を与えることがないことである。
一実施形態において、4つのアドレス空間は、設定アドレス空間、メモリアドレス空間、入出力アドレス空間及びメッセージアドレス空間を含む。メモリ空間トランザクションは、データを、メモリがマップされたロケーションから/へと転送するための1以上の読み出し要求及び書き込み要求を含む。一実施形態において、メモリ空間トランザクションは、例えば、32ビットアドレスといったような短いアドレス形式、及び、64ビットアドレスといった長いアドレス形式の2つの異なるアドレス形式を使用可能である。設定空間トランザクションは、PCIeデバイスの設定空間にアクセスするのに使用される。設定空間に対するトランザクションは、読み出し要求及び書き込み要求を含む。メッセージ空間トランザクション(又は、単純に、メッセージ)は、PCIeエージェント間の帯域内通信をサポートするように規定されている。
したがって、一実施形態において、トランザクション層205は、パケットヘッダ/ペイロード206を組み立てる。パケットヘッダ/ペイロードの形式は、リンク層において使用可能なPCIe規格、すなわち、PCIe基本仕様2.0に記載されている。
データリンク層210とも称されるリンク層210は、トランザクション層205と物理層220との間の中間段階として作用する。一実施形態において、データリンク層210の役割は、2つの構成要素間でのトランザクション層パケット(TLP)を交換する信頼性の高いメカニズムを、リンクに提供することである。データリンク層210の一方は、トランザクション層205によって組み立てられたTLPを受け取り、パケットシーケンス識別子211、すなわち、ID番号又はパケット番号を適用し、エラー検出コード、すなわち、CRC212を計算及び適用して、修正されたTLPを物理層220に提示して、物理層から外部デバイスへの送信に使用する。
[物理層]
一実施形態において、物理層220は、外部デバイスへと物理的にパケットを送信する論理的サブブロック221及び電気的サブブロック222を含む。ここで、論理的サブブロック221は、物理層221の"デジタル的"機能の役割を担う。この点に関して、論理的サブブロックは、物理サブブロック222による送信のための出力を準備する送信部分と、受信された情報をリンク層210に渡す前に、その情報を特定及び準備する受信部分とを有する。
物理ブロック222は、送信機及び受信機を含む。送信機には、論理的サブブロック221によって符号が供給され、送信機は、符号をシリアル化して、外部デバイスに送信する。受信機には、外部デバイスからシリアル化された符号が供給されて、受信機は受信した信号をビットストリームへと変換する。ビットストリームのシリアル化が解除されて、論理的サブブロック221に供給される。一実施形態では、8b/10b送信コードが採用され、10ビット符号が、送受信される。ここでは、フレーム223を有するパケットをフレームするのに、特別な符号が使用される。また、一例では、受信機は、入力されるシリアルストリームから回復された符号クロックを供給する。
上記したように、トランザクション層205、リンク層210及び物理層220が、PCIeプロトコルスタックの特定の実施形態を参照して説明されたが、階層プロトコルスタックはこれに限定されない。実際には、あらゆる階層プロトコルを含める又は実装してもよい。例えば、階層プロトコルで表されるポート/インターフェースには、(1)パケットを組み立てる第1層、すなわちトランザクション層、パケットを順番付けする第2層、すなわちリンク層、及び、パケットを送信する第3層、すなわち物理層が含まれる。
次に図3を参照して、メモリ順序付けロジックの一実施形態を説明する。図に示すように、インテリジェントスイッチ300は、メモリ順序付けロジック305、(ポスト済み要求310A−Nを含む)ポスト済み要求キュー308及びポインタ322、(ポストされていない要求316A−Nを含む)ポストされていない要求キュー314及びポインタ324、(完了320A−Nを含む)完了キュー318及びポインタ326、及び(アップストリーム又はダウンストリームポートである)ポート350を含む。
メモリ順序付けロジック305は、例えば、図6を参照して上記で説明したようなデバイスのIDベースのストリームを可能とする方法を実装し、IDベース順序付けアクティベータ(activator)332、キュー選択部334、ポインタハンドラ336、要求側/完了側ID比較部338、及びIDOフラグチェック部340を含んでもよい。
図4は、IDベースの順序付けフラグを含むパケットの一実施形態が示されている。パケットとは、あらゆる要求、メッセージ、アクセス、又はバス/接続上で送信されるべき情報のグループを指す。図示した実施形態において、パケット400は、その他の情報フィールド405を含む。その他の情報405の例としては、予備フィールド、形式フィールド、種類フィールド、属性フィールド、長さフィールド、PCIe規定のフィールド、及び、その他のプロトコル規定のフィールドが含まれる。また、パケット400は、要求を行うエージェント/デバイスを指す要求側ID415(バイト4及び5)を含み、要求側IDは、グローバルID/トランザクション記述子の一部であってもよく、又は、グローバルID/トランザクションID、及びアドレスロケーションを指すアドレスフィールド420を含んでもよい。
属性ビット402及び404は、図示するような順序モデル450、455、460及び465を可能としてもよい。現時点で確保されているバイト1の予備ビット2を使用してもよい属性ビット402は、要求側又は完了側によって設定され、要求又は完了が順番依存であり、ポスト済み要求をバイパスしてもよいことを示すIDベースの順序付けフラグを表してもよい。
図5には、順序付け表の一実施形態が示されている。表500は、PCIe規格の表2−24と同様なものであるが、先に待ち行列に入れられ、ストールした、ポスト済みメモリ書き込み要求又はメッセージ要求を、あるインスタンスの独立した要求ストリームへとバイパス可能なように表を修正(2列目)している。
セル505に記載するように、緩い順序付け(relaxed ordering)属性ビット404がクリア及びID順序付けビット402もクリアであるメモリ書き込み又はメッセージ要求は、通させない(a)、緩い順序付け属性ビット404が設定されている及びID順序付けビット402がクリアであるメモリ書き込み又はメッセージ要求は、通すことを許可する(b)、緩い順序付け属性ビット404がクリア及びID順序付けビット402が設定されているメモリ書き込み又はメッセージ要求は、要求側ID415が異なる場合には、別のメモリ書き込み又はメッセージ要求を通すのを許可する(c)。
セル510に記載するように、緩い順序付け属性ビット404がクリア及びID順序付けビット402もクリアである読み出し要求は、通させない(a)、緩い順序付け属性ビット404が設定されている及びID順序付けビット402がクリアである読み出し要求は、通させない(b)、緩い順序付け属性ビット404がクリア又は設定されており、及び、ID順序付けビット402が設定されている読み出し要求は、要求側ID415が異なる場合には、別のメモリ書き込み又はメッセージ要求を通すべく、通すのを許可する(c)。
セル515に記載するように、入出力又は設定書き込み要求は、メモリ書き込み又はメッセージ要求を通すことができない。これにより、生産者/消費者利用モデルをサポートするのに必要な強い書き込み順序付けを維持する。
セル520に記載するように、緩い順序付け属性ビット404がクリア及びID順序付けビット402もクリアである読み出し完了は、通させない(a)、緩い順序付け属性ビット404が設定されている及びID順序付けビット402がクリアである読み出し完了は、通すのを許可する(b)、緩い順序付け属性ビット404がクリア及びID順序付けビット402が設定されている読み出し完了は、完了側IDがメモリ書き込みの要求側ID415と異なる場合には、別のメモリ書き込み又はメッセージ要求を通すべく、通すのを許可する(c)。
最後に、セル525に記載するように、入出力又は設定書き込み完了が、メモリ書き込み及びメッセージ要求によってブロックされる又はこれら要求を通すことが許可される。このようなトランザクションは、実際に、反対の方向に動作するため、順序付けの関係が発生しない。
図6は、デバイスIDベースのストリームを可能とするフローチャートの一実施形態を示した図である。フロー605において、IDベース順序付けアクティベータ332は、ポスト済み要求をバイパスする機会が存在するかを判断する。一実施形態において、ポスト済み要求がストールしていると判断された場合には、アクティベータ332は、フロー610に進む。
そして、キュー選択部334は、フロー610において、替わりに送信するべきパケットを探すべくキューを選択する。一実施形態において、選択部334は、どのキューが最も多いエントリを有しているかに基づいて、ポスト済み要求キュー308、ポストされていない要求キュー314、又は完了キュー318を選択する。別の実施形態では、選択部334は常に、替わりのパケットを探すべく、先ずポストされていない要求キュー314を選択する。フロー615において、ポインタハンドラ336は、例えば、一つ前の可能性のある替わりのパケットの通過が許可されなかった場合(すなわち、独立したストリームからでなかった場合、又は、ID順序付けビット402のセットを有していない場合)には、ポインタ322、324、326の1以上をインクリメントしてもよい。
次に、フロー620において、要求側/完了側ID比較部338は、替わりとなる候補のパケットの要求側/完了側IDが、ポスト済み要求キュー308における先に受信されたポスト済み要求のうちの何れかと異なっているかを判断する。一実施形態において、比較部338は、ポストされていない要求及び完了それぞれと共に格納されたポスト済み要求ポインタを使用して、ポスト済みキュー308におけるポスト済み要求の何れが、替わりとなる候補のパケットの前に、受信されたかを判断する。替わりとなる候補のパケットが、先に受信されポストされている要求とは独立したストリームであると判断された場合には、フロー625に進む。そうでない場合には、プロセスは、フロー605に戻る。
フロー625において、IDOフラグチェック部340は、ID順序付けビット402が、可能性のある替わりのパケットに設定されているかを確認し、そうであった場合には、フロー630において、替わりのパケットがポート350を介して送信される。そうでなかった場合には、フロー605に戻る。
上記の方法、ソフトウェア、ファームウェア又はコードの実施形態は、処理要素によって実行される機械アクセス可能媒体又は機械可読媒体に格納された命令又はコードを使用して実装されてもよい。機械アクセス可能媒体又は機械可読媒体としては、コンピュータ又は電子システムのような機械が読み出し可能な形式の情報を提供する(例えば、格納及び/又は送信する)あらゆる機械を含む。例えば、機械アクセス可能媒体には、スタティックランダムアクセスメモリ(SRAM)又はダイナミックRAM(DRAM)のようなRAM、ROM、磁気又は光記憶媒体、フラッシュメモリデバイス、電気、光、音又はその他の形式の伝送信号(例えば、搬送波、赤外線信号、デジタル信号)等が含まれる。
本明細書において、本発明の「一実施形態」又は「ある実施形態」と呼ぶものは、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態において」という表現は、必ずしも同一の実施形態を示していない。また、特定の特徴、構造及び特性は、1以上の実施形態において好適なあらゆる態様で組み合わせられてもよい。
以上、特定の例示的実施形態を参照して詳細な説明が記載された。しかしながら、添付の特許請求の範囲に記載された発明の広範な範囲及び精神の範囲から逸脱することなく、例示された実施形態及び本発明の特徴の他の実施形態に対して様々な改良を加えることが可能であることは当業者にとって明らかである。したがって、明細書及び図面は、本発明を限定するのではなく、例示すると見なされるべきである。更に、上記で使用された"実施形態"及び損他の同様な文言は、必ずしも同じ実施形態及び実施例を指しているわけではなく、異なる実施形態を指している場合も、同じ実施形態を指している場合も含む。
[シリアルポイント・ツー・ポイント階層プロトコルリンク/接続]システム100は、コントローラハブ115に接続されたプロセッサ105及びシステムメモリ110を含む。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ、又はその他のプロセッサを含む。プロセッサ105は、フロントサイドバス(FSB)106を介してコントローラハブ115に接続される。一実施形態において、FSB106は、以下に記載するような、シリアルポイント・ツー・ポイント接続である。
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、又はシステム100におけるデバイスがアクセス可能なその他のメモリといったあらゆるメモリを含む。システムメモリ110は、メモリインターフェース116を介してコントローラハブ115と接続される。メモリインターフェースの例としては、ダブルデータレート(DDR)メモリインターフェース、デュアルチャネルDDRメモリインターフェース、及びダイナミックRAM(DRAM)メモリインターフェースが含まれる。
一実施形態において、コントローラハブ775は、Peripheral Component Interconnect Express(PCIe又はPCIE)接続階層におけるルートハブ又はルートコントローラである。コントローラハブ115の例には、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、接続制御ハブ(ICH)、サウスブリッジ、及びルートコントローラ/ハブが含まれる。チップセットという言葉は、多くの場合、物理的に別々の2つの制御ハブを指す、すなわち、接続制御ハブ(ICH)に接続されたメモリ制御ハブ(MCH)を指す。
制御ハブ115は、シリアルリンク119を介してスイッチ/ブリッジ120と接続されている。インターフェース/ポート117及びとも称される入出力モジュール117及びは、制御ハブ115とスイッチ120との間の通信を提供する階層プロトコルスタックを含む/実装する。モジュール117、118、121、122、124、126、129及びのようなモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせに実装されてもよい。さらに、共通に変化し機能するモジュールの境界は、本実施形態では、一緒に実装され、異なる実施形態では、別々に実装される。一実施形態において、複数のデバイスは、スイッチ120と接続する機能を有する。
スイッチ120は、デバイス25及び128からのパケット/メッセージを、アップストリームへと送る、すなわち、階層上部のルートコントローラへと送り、また、制御ハブ115及びダウンストリームへと送る、すなわち、階層においてルートコントローラ、プロセッサ105又はシステムメモリ110から離れたデバイス25及び128へと送る。デバイス25及び128は、電子システムと接続されるあらゆる内部又は外部デバイス又は構成要素を含み、例えば、I/Oデバイス、ネットワークインターフェースコントローラ(NIC)、拡張カード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、Firewireデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ、及びその他の入出力デバイスを含む。スイッチ120は、いかに詳細に説明するメモリ順序付けロジック140を含む、デバイスIDベースのストリームを可能とする。
グラフィックアクセラレータ130も、シリアルリンク32を介して制御ハブ115に接続される。一実施形態において、グラフィックアクセラレータ130は、ICHと接続されたMCHに接続される。スイッチ120、並びにI/Oデバイス725及び128は、ICHに接続される。グラフィックアクセラレータ130と制御ハブ115との間の通信を行うべく階層プロトコルスタックを実装するために、I/Oモジュール131及び118が設けられる。
図2には、階層プロトコルスタックの一実施形態が示されている。階層プロトコルスタック200は、quick path interconnect(QPI)スタック、PCIeスタック、又はその他のプロトコルスタックのようなあらゆる階層通信スタックを含む。一実施形態において、プロトコルスタック200は、トランザクション層205、リンク層210及び物理層220を含むPCIeプロトコルスタックである。図1におけるインターフェース117、118、121、122、124、126、129及びのようなインターフェースは、通信プロトコルスタック200で表されてもよい。通信プロトコルスタックとしての表現は、プロトコルスタックを実装する/含むインターフェース又はモジュールと称されてもよい。
また、PCIeは、クレジットベースのフロー制御を利用する。この技術では、デバイスは、トランザクション層205の受信バッファそれぞれに対するクレジットの初期量を通知する。図1の制御ハブ115のようなリンクの反対端における外部デバイスは、各TLPが消費したクレジットの数を数える。トランザクションが、クレジット制限を超えない場合には、トランザクションを送信してもよい。応答を受信すると、クレジットの量が回復する。このクレジットスキームの利点は、クレジット限界に達しない限り、クレジット回復の遅延が、性能に影響を与えることがないことである。
属性ビット402及び404は、図示するような順序モデル450、455、460及び465を可能としてもよい。現時点で確保されているバイト1の予備ビット2を使用してもよい属性ビット402は、要求又は完了が順序に依存しないことを示すべく要求側又は完了側によって設定され、ポスト済み要求をバイパスしてもよいことを示すIDベースの順序付けフラグを表してもよい。

Claims (20)

  1. シリアルポイント・ツー・ポイント接続ポートで送信されるパケットの順序を付けるメモリ順序付けロジックであって、
    第1パケットの後に到着した第2パケットを使用して、前記第2パケットが、前記第2パケットが順序に依存しないことを示すべく設定される属性フラグ及び前記第1パケットに含まれるIDとは異なるIDを含む場合に、ストールした前記第1パケットをバイパスする前記メモリ順序付けロジックを備える装置。
  2. 第1パケットの後に到着した第2パケットを使用して、前記第2パケットが、先に受信され送信のためにキューに入れられたパケットの各々に含まれるIDとは異なるIDを含む場合に、ストールした前記第1パケットをバイパスする前記メモリ順序付けロジックを更に備える請求項1に記載の装置。
  3. 前記第2パケットは、ポストされていない要求パケットを含み、前記第2パケットのIDは、要求側IDを含む請求項1に記載の装置。
  4. 前記第2パケットは、完了パケットを含み、前記第2パケットのIDは、完了側IDを含む請求項1に記載の装置。
  5. 前記IDは、前記パケットのヘッダのバイト4及び5を含む請求項1に記載の装置。
  6. 前記第1パケット及び前記第2パケットの両方が、ポスト済み要求キュー内に書き込み要求を含む請求項1に記載の装置。
  7. 前記シリアルポイント・ツー・ポイント接続は、Peripheral Component Interconnect Express(PCIE)リンクであって、
    前記装置は、
    プロセッサと、
    システムメモリと、
    前記PCIEリンクと通信可能に接続されたグラフィックアクセラレータとを更に備える請求項1に記載の装置。
  8. 前記ポートは、ダウンストリームポートである請求項1に記載の装置。
  9. シリアルポイント・ツー・ポイントリンクに沿ってパケットを送信するポートと、
    前記ポートを介して送信されるポスト済み要求のパケットを格納する第1キューと、
    前記ポートを介して送信されるポストされていない要求のパケットを格納する第2キューと、
    ストールした前記第1キューからのポスト済み要求を選択的にバイパスして、前記ストールしたポスト済み要求の後に受信された前記第2キューからのポストされていない要求を前記ポートを介して送信するロジックであって、前記ポストされていない要求のヘッダが前記要求が順序に依存しないことを示しており、且つ、前記ポストされていない要求の前記ヘッダが、前に受信された前記第1キュー内のポスト済み要求の要求側IDとは異なる要求側IDを含む場合に、前記第2キューからの前記ポストされていない要求を送信する前記ロジックと
    を備える装置。
  10. 前記ポートを介して送信される完了のパケットを格納する第3キューを更に備え、
    前記ロジックは、ストールした前記第1キューからのポスト済み要求を選択的にバイパスして、前記ストールしたポスト済み要求の後に受信された前記第3キューからの完了を前記ポートを介して送信するロジックであって、前記完了のヘッダが前記要求が順序に依存しないことを示しており、且つ、前記完了の前記ヘッダが、前に受信された前記第1キュー内のポスト済み要求の要求側IDとは異なる要求側IDを含む場合に、前記第3キューからの完了を送信する請求項9に記載の装置。
  11. 前記ロジックは、ストールした前記第1キューからのポスト済み要求を選択的にバイパスして、前記ストールしたポスト済み要求の後に受信された前記第1キューからのポスト済み要求を、前記ポートを介して送信するロジックであって、前記ポスト済み要求のヘッダが前記要求が順序に依存しないことを示しており、且つ、前記ポスト済み要求の前記ヘッダが、前記ストールしたポスト済み要求の要求側IDからの要求側IDを含む場合に、前記第1キューからのポスト済み要求を送信する請求項9に記載の装置。
  12. 前記ポートは、アップストリームポートである請求項9に記載の装置。
  13. プロセッサと、
    システムメモリと、
    前記シリアルポイント・ツー・ポイントリンクと通信可能に接続されたグラフィックスアクセラレータと
    を更に備える請求項9に記載の装置。
  14. 前記第1キュー内のどのポスト済み要求が、前記ポストされていない要求パケットの各々よりも前に受信されたかを示すべく、前記ポストされていない要求パケットの各々と関連付けられたポスト済み要求ポインタを格納する前記第2キューを更に備える請求項9に記載の装置。
  15. 属性フラグは、前記パケットのヘッダのバイト1のビット2を含む請求項9に記載の装置。
  16. プロトコルスタックを含む入出力(I/O)モジュールを有するデバイスを備える装置であって、
    前記プロトコルスタックは、物理層、リンク層及びトランザクション層を含み、
    前記プロトコルスタックは、シリアルポイント・ツー・ポイントリンクを介してパケットを送信し、
    前記パケットは、オペレーションが順序に依存しないことを示すべく設定されるフラグを含む装置。
  17. 前記オペレーションが順序に依存することを示すべく設定される前記フラグは、前記パケットのヘッダのバイト1のビット2を含む請求項16に記載の装置。
  18. 前記オペレーションは、メモリ書き込み又はメッセージ要求、読み出し要求、入出力又は設定書き込み要求、読み出し完了、及び入出力又は設定書き込み完了からなる群から選択される請求項16に記載の装置。
  19. 前記デバイスは、アクセラレータ、入出力デバイス、コントローラハブ、ルートコントローラ、スイッチ及びプロセッサからなる群から選択される請求項16に記載の装置。
  20. システムメモリと通信可能に接続された前記デバイスと、
    システムを構成する更なる複数のデバイスとを更に備える請求項19に記載の装置。
JP2013188640A 2009-05-29 2013-09-11 PCIExpressでのIDベースストリームを可能にする方法及び装置 Active JP5897524B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/474,480 US8199759B2 (en) 2009-05-29 2009-05-29 Method and apparatus for enabling ID based streams over PCI express
US12/474,480 2009-05-29

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012510805A Division JP2012527036A (ja) 2009-05-29 2010-03-10 PCIExpressでのIDベースストリームを可能にする方法及び装置

Publications (2)

Publication Number Publication Date
JP2014017006A true JP2014017006A (ja) 2014-01-30
JP5897524B2 JP5897524B2 (ja) 2016-03-30

Family

ID=43220157

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012510805A Pending JP2012527036A (ja) 2009-05-29 2010-03-10 PCIExpressでのIDベースストリームを可能にする方法及び装置
JP2013188640A Active JP5897524B2 (ja) 2009-05-29 2013-09-11 PCIExpressでのIDベースストリームを可能にする方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012510805A Pending JP2012527036A (ja) 2009-05-29 2010-03-10 PCIExpressでのIDベースストリームを可能にする方法及び装置

Country Status (8)

Country Link
US (1) US8199759B2 (ja)
JP (2) JP2012527036A (ja)
KR (1) KR101298862B1 (ja)
CN (2) CN101901205B (ja)
DE (2) DE112010002178T5 (ja)
RU (2) RU2559727C2 (ja)
TW (2) TWI633442B (ja)
WO (1) WO2010138230A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8199759B2 (en) 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
EP2577936A2 (en) * 2010-05-28 2013-04-10 Lawrence A. Laurich Accelerator system for use with secure data storage
WO2013105978A1 (en) * 2012-01-13 2013-07-18 Intel Corporation Allocation of flow control credits for high performance devices
KR101828756B1 (ko) * 2012-10-22 2018-02-12 인텔 코포레이션 고성능 인터커넥트 코히어런스 프로토콜
US9600431B2 (en) 2012-10-22 2017-03-21 Intel Corporation High performance interconnect physical layer
US9558143B2 (en) * 2014-05-09 2017-01-31 Micron Technology, Inc. Interconnect systems and methods using hybrid memory cube links to send packetized data over different endpoints of a data handling device
US9602464B2 (en) 2014-12-12 2017-03-21 Intel Corporation Apparatus, system and method for allocating identifiers to components of a control system
US10176126B1 (en) * 2015-06-29 2019-01-08 Cadence Design Systems, Inc. Methods, systems, and computer program product for a PCI implementation handling multiple packets
US11216396B2 (en) * 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
US10353833B2 (en) 2017-07-11 2019-07-16 International Business Machines Corporation Configurable ordering controller for coupling transactions
CN108471384B (zh) * 2018-07-02 2020-07-28 北京百度网讯科技有限公司 用于端到端通信的报文转发的方法和装置
US11477049B2 (en) * 2018-08-02 2022-10-18 Xilinx, Inc. Logical transport over a fixed PCIE physical transport network
CN110580202A (zh) * 2019-06-04 2019-12-17 阿里巴巴集团控股有限公司 服务器系统内消息的处理方法、装置及系统
US11748285B1 (en) * 2019-06-25 2023-09-05 Amazon Technologies, Inc. Transaction ordering management
KR102529761B1 (ko) 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102496994B1 (ko) * 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10301893A (ja) * 1996-12-31 1998-11-13 Compaq Computer Corp コンピュータシステムにおけるデータバス間の送達トランザクション
JP2005518578A (ja) * 2001-10-15 2005-06-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム
JP2009514065A (ja) * 2005-08-11 2009-04-02 ピイ・エイ・セミ・インコーポレーテッド 浅いエージェント毎のキューを伴うブロックしないアドレス・スイッチ

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3505728B2 (ja) * 1993-01-13 2004-03-15 株式会社日立製作所 記憶制御装置
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6691192B2 (en) * 2001-08-24 2004-02-10 Intel Corporation Enhanced general input/output architecture and related methods for establishing virtual channels therein
CN100409606C (zh) * 2001-08-24 2008-08-06 英特尔公司 管理数据完整性的通用输入/输出体系结构、协议和方法
US6912612B2 (en) * 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
DE10234934A1 (de) * 2002-07-31 2004-03-18 Advanced Micro Devices, Inc., Sunnyvale Antwortreihenwiederherstellungsmechanismus
US7443869B2 (en) * 2003-08-04 2008-10-28 Intel Corporation Deadlock avoidance queuing mechanism
US7444558B2 (en) * 2003-12-31 2008-10-28 Intel Corporation Programmable measurement mode for a serial point to point link
US7165131B2 (en) * 2004-04-27 2007-01-16 Intel Corporation Separating transactions into different virtual channels
US7957428B2 (en) * 2004-05-21 2011-06-07 Intel Corporation Methods and apparatuses to effect a variable-width link
US20050289306A1 (en) * 2004-06-28 2005-12-29 Sridhar Muthrasanallur Memory read requests passing memory writes
CN100456273C (zh) * 2005-03-24 2009-01-28 富士通株式会社 PCI-Express通信系统及其通信方法
US7664904B2 (en) * 2006-03-10 2010-02-16 Ricoh Company, Limited High speed serial switch fabric performing mapping of traffic classes onto virtual channels
US20080005484A1 (en) * 2006-06-30 2008-01-03 Joshi Chandra P Cache coherency controller management
US7836220B2 (en) * 2006-08-17 2010-11-16 Apple Inc. Network direct memory access
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US8050290B2 (en) * 2007-05-16 2011-11-01 Wilocity, Ltd. Wireless peripheral interconnect bus
US7904629B2 (en) * 2007-10-02 2011-03-08 NVON, Inc. Virtualized bus device
US8199759B2 (en) 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10301893A (ja) * 1996-12-31 1998-11-13 Compaq Computer Corp コンピュータシステムにおけるデータバス間の送達トランザクション
JP2005518578A (ja) * 2001-10-15 2005-06-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム
JP2009514065A (ja) * 2005-08-11 2009-04-02 ピイ・エイ・セミ・インコーポレーテッド 浅いエージェント毎のキューを伴うブロックしないアドレス・スイッチ

Also Published As

Publication number Publication date
US8199759B2 (en) 2012-06-12
RU2509348C2 (ru) 2014-03-10
WO2010138230A2 (en) 2010-12-02
TW201101044A (en) 2011-01-01
KR20120024669A (ko) 2012-03-14
CN101901205A (zh) 2010-12-01
RU2011153260A (ru) 2013-07-10
CN101901205B (zh) 2014-07-30
JP5897524B2 (ja) 2016-03-30
CN104123262A (zh) 2014-10-29
US20100303079A1 (en) 2010-12-02
RU2559727C2 (ru) 2015-08-10
TWI633442B (zh) 2018-08-21
WO2010138230A3 (en) 2011-01-20
KR101298862B1 (ko) 2013-08-21
CN104123262B (zh) 2018-03-30
JP2012527036A (ja) 2012-11-01
RU2013146508A (ru) 2015-04-27
TW201636865A (zh) 2016-10-16
TWI568220B (zh) 2017-01-21
DE112010002178T5 (de) 2012-09-20
DE202010018100U1 (de) 2014-04-09

Similar Documents

Publication Publication Date Title
JP5897524B2 (ja) PCIExpressでのIDベースストリームを可能にする方法及び装置
US11726939B2 (en) Flex bus protocol negotiation and enabling sequence
KR101861312B1 (ko) 다중슬롯 링크 계층 플릿에서의 제어 메시징
JP4954330B2 (ja) Pciエクスプレス・パケット・ダイジェストの変更のデバイス、システムおよび方法
US11366773B2 (en) High bandwidth link layer for coherent messages
JP2015109679A (ja) 拡張ヘッダを用いたパケット送信
KR20040037215A (ko) 가상 채널 설정을 위한 강화된 일반 입출력 아키텍처 및관련 방법
CN101819562B (zh) 通信方法及装置
JP6273010B2 (ja) 入出力データアライメント
US6557060B1 (en) Data transfer in host expansion bridge
CN116795763B (zh) 基于axi协议的数据分组传输的方法、片上系统和芯片
TWI240859B (en) Error forwarding in an enhanced general input/output architecture and related methods
TWI246651B (en) An enhanced general input/output architecture and related methods for establishing virtual channels therein
Curd PCI Express for the 7 Series FPGAs

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150623

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160302

R150 Certificate of patent or registration of utility model

Ref document number: 5897524

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250