拡張性とマルチホスト | 第2回 - PCI Expressについて 入門編
........
- 更新日
- 2023.05.09
- 公開日
- 2021.10.26
前回は「PCI Expressについて 入門編」の第1回として、PCI Expressとはどういったものか、その成り立ちや特徴、そしてGenerationにおけるレーン数と転送速度について解説致しました。
第2回の今回は、PCI Expressの強みである拡張性、及びマルチホスト対応について解説します。特にマルチホスト対応は図と共に解説しているので必見です。
1. 拡張性
PCI Expressでは、デバイスはPeer-to-Peer(1対1)で接続されるため、接続デバイスを増やためにはスイッチデバイスが必要です。スイッチデバイスは複数のポートを持ち、各ポートにEP(End Point)デバイスを接続してデバイス間通信を行います。Ethernetの接続に利用されているスイッチングハブとよく似ています。
2. マルチホスト対応
PCI Expressでは、スイッチデバイスにNTB(Non Transparent Bridge)機能を持たせることにより、マルチホスト構成に対応出来ます。
ホストデバイスとは
CPUとRC(Root Complex)の組み合わせをホストデバイスと呼び、接続される配下のデバイスを管理します。現在は、CPUとRCの機能がワンチップにインテグレートされたSoC(System on Chip)デバイスが一般的です。
マルチホスト構成例
スイッチデバイスに接続された複数のEPデバイスは、1つのホストデバイスによって管理されますが、スイッチデバイスがNTB(Non Transparent Bridge)機能をサポートすることで、HOST①とHOST②によるマルチホスト構成を実現出来ます。マルチホスト構成をとることによって、負荷分散やデータのパイプライン処理、ホストの冗長化を図ることが出来ます。
NTB機能非対応スイッチではマルチホスト構成が機能しない理由
ホストデバイスは、配下にあるスイッチデバイス、EPデバイスの初期化・管理を行いますが、スイッチデバイスのNTB機能により、ホストデバイスが対象とする初期化・管理区域を分離することが出来ます。NTB機能がない場合は、複数のホストデバイスが各EPデバイスに対して重複して初期化・管理を実施してしまうため、システムとして正常動作させることが出来ません。
PCI Expressの代表的なトランザクション
PCI Expressのデバイスアクセスには、以下のトランザクションが用意されています。
・メモリトランザクション:
データ転送に使用(メモリアドレス空間上でのRead/Write動作)
・コンフィグレーショントランザクション:
デバイスの初期化、状態監視などに使用
・I/Oトランザクション:
データ転送に使用(I/Oアドレス空間上でのRead/Write動作)
・メッセージトランザクション:
事象(イベント)の通知などに使用
トランザクションとは、アクセスを要求するデバイス(リクエスタ)とアクセスを受け付け完了させるデバイス(コンプリータ)の間で情報を転送するための、パケットのやり取りを指します。例えば、ホストデバイスであるHOST①がEPデバイスであるSSDに対して初期化を行う場合、HOST①がリクエスタ、SSDがコンプリータとなり、コンフィグレーショントランザクションを使用してSSDの初期化を行います。
PCI Expressのトランザクションに対するNTBの振る舞い
各トランザクションにおいて、NTB機能は以下のようにアクセスを制限します。
・メモリトランザクション:
データ転送に使用(メモリアドレス空間上でのRead/Write動作)
設定次第でNTBを通過出来る
・コンフィグレーショントランザクション:
デバイスの初期化、状態監視などに使用
NTBを通過出来ない
・I/Oトランザクション:
データ転送に使用(I/Oアドレス空間上でのRead/Write動作)
設定次第でNTBを通過出来る
・メッセージトランザクション:
事象(イベント)の通知などに使用
NTBを通過出来ない
表2-1. 各トランザクションのNTBの振る舞い
トランザクション名 | NTB通過 |
---|---|
メモリトランザクション | 〇 |
コンフィグレーショントランザクション | ✕ |
I/Oトランザクション | 〇 |
メッセージトランザクション | ✕ |
NTBの役割 その1(コンフィグレーショントランザクション 及び メッセージトランザクションをブロック)
NTB機能は、コンフィグレーショントランザクション及びメッセージトランザクションを通過させないことにより、HOST②がEPデバイス(SSD、GPU)を初期化・管理するためのアクセスをブロックします。その結果両EPデバイスに対しては、HOST①からのみ初期化・管理が行われます。
NTBの役割 その2(メモリトランザクション、I/Oトランザクションに対する振る舞い)
NTB機能は、メモリトランザクションやI/Oトランザクションの通過を制御できます。NTB機能を適切に設定することで、HOST①だけでなくHOST②からのSSD・GPUに対するメモリトランザクション・I/Oトランザクションを通過させることが出来ます。図2-7の構成でHOST①が可能な以下の動作を、図2-8のようにHOST②からも行うことが出来ます。
・SSDへのデータ書込み、SSDからのデータ読出し
・GPUへのデータ転送、GPUからのデータ転送
NTBの役割 その3(ホスト間データ通信)
NTB機能を使用することで、ホストデバイス間のデータ転送も可能です。NTB機能を適切に設定することにより、 ホストデバイス間で双方向のメモリトランザクション、I/Oトランザクションを通過させる事が出来ます。
NTBの役割 その4(MailBoxによるホスト間通信)
NTB機能にMail Box機能が付加されている場合、ホストデバイス間でメッセージのやりとりを行うことが出来ます。Mail Box機能は割込みを持ち、一方のホストデバイスから他方のホストデバイスのMail Boxにデータを書込むことで送付先のホストデバイスに割込みがかかり、データをスムーズに渡すことが可能です。
3. まとめと次回の内容
第2回では、PCI Expressの拡張性とマルチホストについて説明致しました。
PCI Express接続デバイス間でデータ処理の負荷分散やパイプライン処理を行うには、マルチホスト構成が最適です。この構成を実現するためには、スイッチデバイスがNTB機能を持つ必要があります。またマルチホスト構成にすることによって、ホストデバイスの冗長化も可能になるなど、多くのメリットを享受出来ます。
次回の第3回は、PCI Expressの信頼性の高い接続について説明します。