はじめに
PCIeとはコンピュータに利用される拡張スロットの規格ですが、インターネットの世界にて採用されるTCP/IPの4層構造のように、PCIeにもレイヤ構造は存在します。
本記事ではPCIeの階層構造について簡単に説明しました。
PCIeのレイヤ構造
具体的には以下です。
- ソフトウェア層
- トランザクション層
- データリンク層
- 物理層
- メカニカル層
以下、それぞれの階層の役割です。
ソフトウェア層
ドライバやアプリケーションソフトとの接続部分です。
この部分はPCIと互換性があるため、PCIで動作したソフトウェアはPCIeでも動作します。
トランザクション層
トランザクション層では「トランザクション層パケット(TLP:Transaction Layer Packet)」の処理を行います。
具体的なパケットは以下です。
TLPヘッダ | データ | TLPダイジェスト |
---|
ヘッダではデータ長やTLPの種類が格納されており、TLPの種類は、「メモリへのリクエスト」「I/Oへのリクエスト」「コンフィグレーションへのリクエスト」「メッセージへのリクエスト」..等があります。
データリンク層
上記のTLPをシーケンス番号とLCRCで挟みます。LCRCはいわゆるエラー検出用のビットで、それによる再送処理によってエラーが回復する機構になっています。このパケットをTLPに対してDLLP(Data Link Layer Packet)と言います。
物理層
データを電気信号に変換する部分です。
同じ極性のビットが続く時(00や11のように)、2ビット目以降は最初のビットよりも低い振幅で送るデエンファシス(De-emphasis)という仕組みが採用されています。このように、PCIeでは受信側で判別しやすい信号波形となるように送信側で処理を行っています。
メカニカル層
接続に使用されるコネクタやボード部分の要件を規定しています。
終わりに
PCIeはPCI-SIGと呼ばれる団体にて規格が規定されています。
ノートPCだけでなくサーバやワークステーションでも利用される規格なので、仕事で関わる可能性のある人はこのあたりの話も頭の片隅に入れておくと役立つと思います。