詳細なPCIおよびPCIeone:ハードウェアの記事

最近、学習主導型の開発の過程でPCI関連の知識を取り入れました。インターネットで多くの記事を読みました。良い点と悪い点が混在しています。より良い記事をまとめて共有し、ソースから始めます。


PCIバスとデバイスツリーは、X86ハードウェアシステムの非常に重要なコンポーネントです。ほとんどすべての周辺ハードウェアは、何らかの方法でPCIデバイスツリーに接続されています。IntelはさまざまなIPへのアクセスを容易にするためにIOSFバスを提案しましたが、そのプライマリインターフェイスは依然としてPCIeの形式です。PCIとその後継のPCIe(PCI Express)を以下の2つの部分で紹介します。最初の部分は歴史的な進化とハードウェアアーキテクチャであり、2番目の部分はUEFIのソフトウェアインターフェイスとPCI / PCeです。

PCが1981年にIBMによって発明されて以来、コンピューター機能を拡張するための拡張スロットがマザーボード上にありました。現在、最も一般的な拡張スロットはPCIeスロットです。実際、見えないコンピューターのマザーボードチップ内では、さまざまなハードウェア制御モジュールのほとんどがPCIeデバイスの形式で1つまたは複数のPCI / PCIeデバイスツリーにマウントされています。 。ファームウェアとオペレーティングシステムは、デバイスツリーを列挙することにより、ほとんどのプラグアンドプレイ(PNP)デバイスを見つけることができます。では、PCIとは正確には何ですか?

PCI / PCIeの歴史

PCIeとは何かを見る前に、PCIeの祖先を理解して、PCIeの設計のいくつかをより深く理解し、コンピューター技術の急速な発展とエンジニアの絶え間ない努力を嘆く必要があります。

1. ISA(業界標準アーキテクチャ)

2. MCA(マイクロチャネルアーキテクチャ)

3. EISA(拡張業界標準アーキテクチャ)

4. VLB(VESAローカルバス)

5. PCI(Peripheral Component Interconnect)

6. PCI-X(Peripheral Component Interconnect eXtended)

7. AGP(Accelerated Graphics Port)

8. PCI Express(Peripheral Component Interconnect Express)

科学技術の一歩前進は、前世代の問題を解決することです。ここでの問題はスピードです。拡張インターフェースとしては、主に周辺機器の接続や拡張に使用されており、周辺機器のスループットが上がると、インターフェース速度の向上が遅れることがよくあります。第1世代のISAスロットは第1世代のIBMPC XTモデル(1981)に登場しました。最新のPCとして、8ビットISAは4.77MB /秒の帯域幅(または転送速度)を提供します。1984年までに、IBMはPC ATの帯域幅をほぼ2倍にし、第2世代の16ビットISAは8MB /秒の転送速度を提供しました。しかし、それでも画像のようなデータを転送するためのバケツのドロップです。

IBMは、独自の巧妙さを利用してMCAバスをPS / 2製品ラインに導入し、他のいくつかのPC互換マシンメーカーを統合してEISAを作成することを余儀なくされました。どちらもISAとの互換性を期待しているため、速度はそれほど向上していません。実際の高速バスはVLBから始まり、VLBはそれ自体の周波数を当時の486CPUの内部バス周波数である33MHzに制限していました。Pentiumの時代には、内部バスが66MHzに増加したため、VLBに深刻な互換性の問題が発生し、致命的な打撃が発生しました。

Intelは1992年にPCI(Peripheral Component Interconnect)バスプロトコルを提案し、他の小規模パートナーを招集してPCI-SIG(PCI Special Interest Group)(PCI Special Interest Group J)と呼ばれる企業アライアンスを形成しました。それ以来、この組織は、PCIとその後継(PCI-XおよびPCIe)の標準的な策定と推進を担当してきました。

この種のオープンな振る舞いを称賛する必要があります。当時のIBMのクローズドでウィンウィンの考え方と比較して、PCI標準は広く宣伝され使用されています。雷と火があり、統一された規格が周辺機器メーカーの革新に影響を与えました。それ以来、さまざまなPCIデバイスが登場し、PCの生態環境全体を豊かにしました。

PCIバス規格の初期テストでは、133MB /秒の帯域幅が提供されます(33MHzクロック、32ビット/クロック伝送)。これは、当時の通常のデスクトップコンピュータではすでに超高速でしたが、サーバーやビデオでは十分ではありませんでした。そのため、AGPはノースブリッジとグラフィックカードを接続するために特別に発明され、PCI-Xはサーバーが高速デバイスを接続するために提案されました。

2004年、Intelは再び小さなパートナーを率いてPCIに革命をもたらしました。PCI Express(PCIe、正式な表現はPCIEやPCI-Eではなく、このようなものであることに注意してください)が誕生し、さらに2世代を経て、現在は第3世代(gen3、3.0)になっています。Gen4は2017年にリリースされる予定ですが、gen5は製図はすでに始まっています。

次の大きな表は、すべての速度比較を示しています。x8とx16の概念のいくつかは、後の詳細で紹介されます。


以下の主な周波数変化チャートから、更新速度がどんどん速くなっていることに気付くかもしれません。


PCIおよびPCIeアーキテクチャ

1.1。PCIアーキテクチャ

一般的なデスクトップシステムのPCIアーキテクチャは次のとおりです。


図に示すように、デスクトップシステムには通常、プロセッサシステムのメモリドメインをPCIバスドメインから分離し、プロセッサとPCIデバイス間のデータ交換を完了するために使用されるホストブリッジが1つだけあります。各ホストブリッジは、PCIバス、PCI I / O、PCIメモリ、PCI
プリフェッチ可能メモリスペースなどの独立したバススペースを個別に管理します。デスクトップシステムには通常、ルートブリッジが1つだけあり、各ルートブリッジはローカルバススペースを管理します。PCIバスツリーはその下にマウントされます。同じPCIバスツリー上のすべてのPCIデバイスは、同じPCIバスドメインに属します。典型的なPCIバスツリーを図に示します。


この図から、PCIバスは主に次の3つの部分に分かれていることがわかります。

1.PCIデバイス。PCIバス規格に準拠するデバイスはPCIデバイスと呼ばれ、PCIバスアーキテクチャには複数のPCIデバイスを含めることができます。図のオーディオとLANはどちらもPCIデバイスです。PCIデバイスも、メインデバイスとターゲットデバイスの2つのタイプに分けられます。メインデバイスはアクセス操作のイニシエーターであり、ターゲットデバイスは訪問者です。

2.PCIバス。拡張用のツリー構造と同様に、システムには複数のPCIバスが存在する可能性があり、各PCIバスは複数のPCIデバイス/ブリッジを接続できます。上の写真には2つのPCIバスがあります。

3.PCIブリッジ。PCIバスの搬送容量が不足している場合は、新しいPCIバスを使用して拡張でき、PCIブリッジがPCIバス間のリンクになります。

サーバーの状況はもう少し複雑です。たとえば、Intel Zhiqiangの第3世代4ソケットサーバーには合計4つのCPUがあります。各CPUは、共有されているが分離されたバス、PCI I / O、およびPCIメモリ範囲に分割されています。その構成は次の図のように表すことができます。


ホストブリッジは1つだけですが、ルートブリッジは4つあり、4つの別々のPCIツリーを管理し、バスなどのPCIスペースはツリー間で共有されていることがわかります。

サーバーが多数のPCIブリッジやPCIeデバイスに接続されている場合、バスの数がすぐに収まらない場合がありますが、その際、PCIバスの数を増やすためにセグメントの概念を導入する必要があります。次の例:


図に示すように、2つのセグメントがあり、それぞれに独自のバススペースがあるため、512のバスを割り当てることができますが、ホストブリッジが1つしかないため、他のPCIスペースは共有されます。より複雑な状況はありますか?一部の大規模なサーバーでは、複数のホストブリッジが存在するため、ここでは拡張しません。

PCI規格の特徴はありますか?

1.パラレルバスです。1クロックサイクルで、32ビット(後で64に拡張)が同時に送信されます。ピンの定義は次のとおりです。


アドレスとデータは、プロトコルに従って1クロックサイクルで1回送信されます。

2.PCIスペースはプロセッサスペースから分離されています。PCIデバイスには、独立したアドレススペース、つまり、ホストブリッジによってメモリアドレススペースから分離されたPCIバスアドレススペースがあります。プロセッサはPCIデバイスにアクセスするためにホストブリッジを通過する必要があり、PCIデバイスはメインメモリになるためにホストブリッジを通過する必要があります。ホストブリッジには多くのバッファがあり、プロセッサバスとPCIバスをそれぞれのクロック周波数で動作させ、相互に干渉しません。ホストブリッジの存在により、PCIデバイスとプロセッサがメインメモリリソースを簡単に共有することもできます。プロセッサがPCIデバイスにアクセスするときは、ホストブリッジを介してアドレス変換を実行する必要があります。PCIデバイスがメインメモリにアクセスするときは、ホストブリッジを介してアドレス変換も実行する必要があります。

PCIスペースとプロセッサスペースの違いを深く理解することは、PCIを理解して使用するための基礎です。

3.強力なスケーラビリティ。PCIバスは強力なスケーラビリティを備えています。PCIバスでは、ルートブリッジはPCIバスに直接接続できます。このバスは、ルートブリッジによって管理される最初のPCIバスでもあります。バスは、PCIブリッジを介して一連のPCIバスを拡張することもでき、ルートブリッジはルートノードはPCIバスツリーを形成します。同じPCIバス上のデバイスは、他のPCIバス上のデバイス間のデータ通信に影響を与えることなく直接通信できます。同じPCIバスツリーに属するPCIデバイスも直接通信できますが、PCIブリッジを介してデータを転送する必要があります。

2.2。PCIeアーキテクチャ

PCI-XとAGPは、PCIの後期に2つのわずかに異なるパスを取り、PCI-Xはクロック周波数を上げ続けましたが、AGPは1クロックサイクルで複数回データを送信できます。スピードアップ。周波数の増加に伴い、PCI並列伝送は干渉の問題に直面しました。高速伝送では、並列接続の直接干渉は非常に深刻であり、周波数の増加に伴い、干渉(EMI)はますます交差できなくなります。

トピックに入ると、友人は、なぜますます多くの通信プロトコルがシリアル、SATA / SAS、PCIe、USB、QPIなどに変更されるのかとよく尋ねます。古典的な理論は並列で高速ではありませんか?一度に複数のビットを送信する方が効率的ではありませんか?PCIからPCIeまで、その理由がわかります。

図に示すように、PCIeとPCIの最大の変更点は、差動伝送(差動伝送)を使用したパラレルからシリアルへの変更です。


同じ内容が順方向と逆方向のミラーイメージを介して送信され、干渉をすばやく見つけて修正できるため、送信頻度が大幅に増加する可能性があります。さらに、PCIは基本的に半二重です(アドレス/データラインが多すぎるため、ラインを多重化する必要があります)が、シリアルは全二重にすることができます。まとめると、周波数を上げることで得られるメリットが、一度に複数のビットを送信するメリットよりも大きい場合、この選択は妥当です。簡単な計算をしてみましょう:

PCI伝送:33MHz x 4B = 133MB / s

PCIe 1.0 x1:2.5GHz x 1b = 250MB / s(2500M / 8 = 312.5MBではない理由を知っていますか?)

速度が2倍になります。また、配線が簡単で、ラインを長くすることができ(シャーシから接続するケーブルにさえ!)、複数のレーンをより高い帯域幅のラインに統合することもできます。

PCIeは、多くの点でPCIとも大きく異なります。

1. PCIはバス構造であり、PCIeはポイントツーポイント構造です。一般的なPCIeシステムのブロック図は次のとおりです。


一般的な構造では、ルートポートとエンドポイントが直接ポイントツーポイント接続ペアを形成し、スイッチは同時に複数のエンドポイントに接続できます。ルートポートとエンドポイントのペアには、個別のPCIバスが必要です。PCIでは、同じバス上のデバイスは同じバス番号を共有します。以前は、マザーボードのPCIスロットがPCIバスを共有していましたが、現在、PCIeスロットはチップセットの異なるルートポートに接続されています。

2. PCIe接続は異なるレーンで接続されており、これらを組み合わせてより高い帯域幅を提供できます。たとえば、2つの1レーンを2レーン接続に結合して、x2と書くことができます。2つのx2はx4、最大x16になる可能性があります。これは、帯域幅の需要が最も大きいグラフィックカードでよく使用されます。

3. PCI構成スペースが256Bから4kに拡張され、PCIeメモリマップアクセス方法が提供されます。これについては、ソフトウェアのセクションで詳しく説明します。

4. PCIeは、Complete Timeout(CTO)、MaxPayloadなどの多数の機能など、多くの特別な機能を提供します。PCIeバージョンの進化に伴い、電力管理用に別の状態(L0 / L0)も提案されます。 / L1など)。これらについては、PCIe 3.0仕様を参照してください。これについては、この記事では詳しく説明しません。

5.他のVCの内容は、ファームウェアの理解とは関係がないため、この記事では説明しません。INTからMSIまでの部分については、今後PC割り込みシステムを導入する際に詳しく説明します。


PCIe1.0および2.0は8b / 10bエンコーディングを使用します。つまり、各バイト(8b)は10ビットで送信されます。これが、2.5GHzおよび5GHzクロック、クロックあたり1bデータ、結果が312.5MB / sおよび625MB /ではない理由です。 sは250MB / sおよび500MB / sです。PCIe3.0および4.0は128b / 130bエンコーディングを使用するため、オーバーヘッドが削減されるため、帯域幅は8GHzクロックで1000MB / s(800MB / sではなく)に達することができます。今年リリースされるPCIe4.0も、周波数を2倍の16GHzに、帯域幅をレーンあたり2GB / sに引き上げます。


追記

平均的なユーザーにとって、ユーザーに見えるPCIeの部分は、マザーボード上の大小のPCIeスロットです。PCIスロットと混ざり合って、特定の混乱を引き起こすことがあります。実際、次のことも非常に簡単に区別できます。


図に示すように、PCIスロットはすべて同じ長さであり、誰にでもできるポートはより高い位置にあり、そのほとんどは真っ白です。PCIeスロットは大きくも小さくも、最小のx1、最大のx16であり、絶対確実なポートは低くなっています。さまざまなPCIeスロットサイズは次のとおりです。


一般的な問題:

Q:マザーボードにx1スロットがありません.x1シリアルカードをx4スロットに挿入できますか?

A:はい、まったく問題ありません。少し無駄になることに加えて、シリアルポートカードはx1モードでも動作します。

Q:マザーボードにはx16スロットが1つしかなく、グラフィックカードが使用されています。x8スロットに挿入できるx16RAIDカードをまだ持っていますか?

A:驚かれるかもしれませんが、私の答えも:はい!RAIDカードはx8モードで動作します。実際、任意のPCIeカードを任意のPCIeスロットに挿入できます。PCIeは、リンクトレーニング中に両方の当事者が許容できる幅を動的に調整します。最後に、小さな問題があります。まったく挿入できません。一部のマザーボードメーカーは、この動作を容易にするためにPCIeスロットのテールを開きますが、多くの場合、そうではありません。今何をする?ええと。

Q:グラフィックカードはPCIe 3.0で、マザーボードはPCIe 2.0です。動作しますか?

A:はい、2.0で動作します。逆に。

Q:x16グラフィックカードをマザーボードの最長のx16スロットに挿入しましたが、ベンチマークではx8で動作すると表示されています。どうしたのですか。

A:マザーボードスロットx16は、必ずしもx16をサポートするルートポートに接続されているとは限りません。マザーボードのマニュアルを詳しく読むことをお勧めします。一部のマザーボードは実際にはx8です。マザーボードの概略図があると便利です。

Q:購入した新しいSSDはミニPCIeですが、ミニPCIeとは何ですか?

A:ミニPCIeインターフェースはノートブックによく見られ、54ピンスロットです。これは主にwifiネットワークカードとSSDを接続するために使用されます。mSATAと混同しないように注意してください。2つは互いに接続できますが、ほとんどの場合、それらを混在させることはできません(特別に処理されたいくつかのマザーボードを除く)。マザーボード設計の絶対確実な設計はどこに行きますか?アップ!マザーボードのマニュアルをよくお読みください。また、m.2(NGFF)と混同しないように注意してください。幸い、カードスロットのサイズが異なります。





から転載; https://zhuanlan.zhihu.com/p/26172972

おすすめ

転載: blog.csdn.net/u014470361/article/details/95310011