PCIバスの効率的な使用

PCIバ
バスの効率的な使用
i
Platform Architecture Labs
Intel Corporation
04/22/97
概要
スループット(M ビット/秒)
多くの場合、PCIバスを効率的に使用するPCI周辺デバイスを選ぶだけで、システム・パフォーマンスを
ii
飛躍的に向上させることができます。図1 は、簡単なベンチマークであるTTCP*のネットワーク・スル
ープットを、5つの異なったPCIネットワー
ク・インタフェース・カード(NIC)ごとに示
140
したものです。システムは一定の状態に保た
120
れているため、PCIカード・デザインの結果
100
がご覧のように大きな性能の違いとなって
います。このようにパフォーマンスに大きな
80
違いの出ることが分かれば、システム・イン
60
テグレータはPCIカードの選択を慎重に行い
40
ます。また、この差はデザイナが効率的なPCI
デザインのための規則に従う動機ともなり
20
ます。本書は、システム・インテグレータや
0
PCIカード・デザイナに適切なPCIカード・デ
A
B
C
D
E
ザインの重要性を認識させ、効率的なPCIデ
NIC
ザインの規則を紹介するためのものです。
図1 PCIネットワーク・インタフェース・カードの
効率的なPCIデザインを確実に行うために
ネットワーク・スループット
は、最低限の規則を守る必要があります。主
要な市販のNICを調査した結果では、多くの
場合、この規則は守られていません。本書では、最初に効率的なPCIデザインの規則を紹介します。次に、
PCIのパフォーマンスを詳しく説明するために用いたメトリックスやチャートを定義します。最後のセク
ションでは、それぞれの規則について、その規則の通り設計をすれば避けられるパフォーマンスに関わ
る間違いやすい例を添えて、詳しく説明します。
*TTCP : LANを介してメモリからメモリへコピーした時のスループットを測定するパフォーマンス・ユーティリティ。
効率的なデザインのガイドライン
概要で述べた通り、システム・パフォーマンスの決定における最も重要な事柄はPCIカードの選択です。
観察された性能差の大部分が、PCIのインプリメンテーションの差に起因します。効率的なパフォーマン
スのPCIデザインを行うためには、数多くの規則を守らなければなりません。この規則をまず以下に紹介
し、最後のセクションで再度詳細に説明します。
1) アドバンスドPCIコマンドの実行
iii
n データが5バイト以上の(この場合はMRを使用します)、1キャッシュライン内におさめら
®
れている場合は、Memory Read Line (MRL)を使用してリードします。Pentium Processor
®
およびPentium Pro Processorでは、キャッシュ・ライン・サイズは32バイト(8 ダブル・
ワード)です。
n 2つ以上のキャッシュ・ラインにまたがるデータのリードには、Memory Read Multiple
(MRM)を使用します。
n 複数のキャッシュ・ラインの書き込み(アライメントが必要)には、Memory Write Invalidate
(MWI) を使用します。MWIコマンドを開始するために、長いMemory Write (MW)コマンド
INTEL CORPORATION
1
を切り離してはいけません。
2) 長いバースト転送の使用
n リードの場合、良好なパフォーマンスを得るために、プラットフォームによっては少なく
とも64 ダブル・ワード(32ビット/ダブル・ワード)のバーストが必要です。
n ライトの場合、バーストは少なくともキャッシュ・ライン・サイズと同じ大きさが必要で
す。
3) I/Oコマンドではなく、メモリ・コマンドを使用します。
4) レイテンシを最小限に抑えます。スレーブ・アクセスにできるだけ迅速に応答して、ブロック転送に
待ち状態が挿入するのを避けます。
5) 従来の経験ではなく、これらの規則に従います。現在のシステムは規則を守らなくても良好なパフォ
ーマンスを示しているかもしれませんが、将来のプラットフォーム上でもそうとは限りません。
ここにあげた規則はすべて、PCIカードのデザイナに有益なものばかりです。この規則を守れば、どのチ
ップセット(プロセッサ、メモリ、およびPCIに接続されるチップ)においても良好に機能するPCIデザ
インが実現できます。また、システム・インテグレータも、周辺デバイスを選択する際に、この規則に
基づいてカード・ベンダに対する質問を行うことができます。PCIのインプリメンテーションは、システ
ム・インテグレータが考慮するべきファクタの1つにすぎませんが、多くの場合、上記の規則を守る事が
最も高いパフォーマンス/最良のシステムを実現するPCIカードとなります。最後のセクションに示す通
り、上記の規則から大きくはずれるだけでシステム・パフォーマンスが低下する結果となります。
PCIパ
パフォーマンスの評価
PCIパフォーマンスの評価には、2つのタイプの情報が必要です。まず1つ目は、異なったシステムのパ
フォーマンスを比較するのに使用できる一連のPCIパフォーマンス・メトリックスです。2つ目は、観察
されたパフォーマンスの基本的な要因を理解するのに役立つPCIパフォーマンスの詳しい記述です。この
詳しい記述は、項目別のPCIパフォーマンス・チャートとして表示がされ、非常に便利に使用する事がで
きます。
PCIパフォーマンスのメトリックス
PCIパフォーマンスの記述に役立つメトリックスは、バス使用率とスループットの2つです。このセクシ
ョンでは、よく使われるこの2つのメトリックスを、3つ目のメトリックスであるPCI効率と共に定義し
ます。
n
PCI使用率 - PCIバス使用率は、PCIバスの使用される期間中のクロック数をPCIクロックの合計数
で割ったものです。Frame#、Irdy#、またはTrdy#のいずれかがアサートされている間の、PCIクロ
ック数がPCIバスが使用されている期間のクロックとして使用されます。
n
PCIスループット - スループットの標準的な定義は、単位時間当たりに転送されたデータ数です。
このメトリックスは、次の2つの部分、Thrptdata - 単位時間当たりに転送されたアプリケーション・
データ量と、Thrptcontrol - 観察されたThrptdataを達成するために必要なコントロール・オーバヘッド
の量に分けられます。本書では、スループットという用語は通常、アプリケーションごとに観察さ
れるスループット、すなわちThrptdataを意味します。
n
PCI効率 - PCIカードによるThrptdataの最大化とPCI使用率の最小化がどの程度うまく行われている
かを表します。PCI効率が1に近い場合は、PCIバス上で無駄に消費されるクロックがほとんど無い
ことを表しています。アドレス・サイクル、コントロール・データ・サイクル、ターゲット・ウェ
イト・サイクル、およびイニシエータ・ウェイト・サイクルはすべて、PCI効率を0への低下に近づ
ける原因となります。PCI効率は、PCIのバス・サイズのワードで規定されたThrptdataをPCI使用率で
割った値に等しくなります。他の2つのメトリックスと違って、PCI効率はPCIバスの使用されてい
る割合から独立しています。このため、PCIトラヒックの生成に使用されるベンチマークの性能が
システムの非PCI部分により制約を受けるような場合でも、2つのカードのPCIインプリメンテーシ
INTEL CORPORATION
2
ョンを比較することができます。このメトリックスはまた、システム・スケーリング(つまり、さ
らにカードが追加された場合のシステムの性能の程度)を理解するためのキーともなります。
PCI
PCI 効 率
図2に、以前にスループットを紹介したのと同じ一
連のNICのPCI効率を示します。図に示す通り、現
在のNICのPCI効率には大きなばらつきがありま
す。PCI効率はNICスループットを判断する際の唯
一のファクタですが、スループット(図1)とPCI効率
(図2)の強い相関関係から、重要なファクタでもあ
ることがわかります。
PCIパフォーマンスのチャート
下記の3つのPCIパフォーマンス・メトリックス
は、パフォーマンス全体の比較には便利ですが、
観察されたパフォーマンスの根本的な原因を説明
するのには役に立ちません。この目的は、以下に
説明する一連の3つのチャートで達成されます。
0.5
0.45
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
A
B
C
D
E
ネットワーク・インタフェース・カード
図2. PCIインターフェース・カードのPCI効率
PCI使用率
0.7
0.6
0.5
0.4
PCI
PCI ス ル ー プ ッ ト
0.3
0.2
9%
2%
0.1
Int Ack
IO Wr
IO Rd
Mem Wr Inv
Mem Wr
Mem Rd Mlt
Mem Rd Ln
0
Mem Rd
下側の円グラフは、起こりう
るPCIスループットの合計を
表しています。この図では、
明青色のThrptdataと茶色の
Thrptcontrol、および黄色の未実
現のPCIスループットの分割
状況を表しています。PCI効率
は、明青色部分(9%)をPCI使用
率チャートの暗青色部分
(11%)と赤色部分(11%)の合計
で割った値に等しくなりま
す。
使用されたサイクルのフラクション
図3のPCI使用率チャートは、PCIパフォーマンスの概要を表示するためのものです。図3の右側にある円
グラフは、観察されたパフォーマンスの最上位レベルを抽象化し示されています。上側の円グラフ、PCI
使用率は、一連のすべてのPCIバス・サイクルが3つの異なった状態にどのように分割されるかを示して
います。黄色は未使用またはアイドル状態のサイクル、暗青色はデータの転送に必要なサイクル、赤色
はオーバヘッド・サイクル(ア
ドレス・サイクル、ウェイト・
サイクル、および4バイト未満
1
PCI
PCI 使 用 率
のデータを搬送するデータ・
0.9
11%
サイクルの無効のデータ分)
0.8
を表しています。
11%
PCI 効率 = 0.42
コマンド名
図3. PCI使用率チャート
図3の左側にあるヒストグラ
ムは、各PCIコマンドの相対アクティビティと効率を示しています。バスがアクティブであった間のPCI
クロックだけが積算され表示されています。各バーの最高地点は、指定されたコマンドごとにPCIバスが
保持(非アイドル)される時間のフラクションを表しています。赤色および暗青色は、PCI使用率チャー
トと同様に、各コマンドごとにオーバヘッド・クロックとデータ・クロックを表しています。
INTEL CORPORATION
3
PCIバースト使用率
図4のPCIバースト使用率チャートを使って、バースト・サイズごとのPCIアクティビティを解析できま
す。バースト・サイズは、ダブル・
ワード単位で示されます。青色ラ
1
インは、各サイズの転送ごとに移
データ・フラクション
0.9
動したデータのフラクションを
バス・フラクション
表し、紫色ラインは、各サイズの
0.8
効率
転送ごとに使用された非アイド
0.7
ルPCIクロックのフラクションに
0.6
対応しています。
0.5
0.4
0.3
0.2
0.1
55
52
49
46
43
バ ー ス ト ・ サ イ ズ (ダ
ダブル・ワード単位)
図4. PCIバーストの使用率
Int Ack
IO W r
IO Rd
Mem W r
Mem W r Inval
Mem Rd
Mem Rd Ln
Mem Rd Mult
12000
10000
45
41
37
29
25
21
17
9
1
5
13
33
53
6000
図5に示す最後のチャートは、コ
4000
マンドの使用頻度をコマンド名
2000
とバースト・サイズの両方をプロ
ットしたもので、これを使ってコ
0
マンドとバースト・サイズの混ざ
った解析が行えます。このチャー
トから、コマンドがどの程度正し
バ ー ス ト ・ サ イ ズ (ダ
ダブル・ワード単位)
く使用されているかを判断する
ことができます。たとえば、図5
に示されたカードは、Memory
Read MultipleとMemory Read
図5. PCIコマンドの使用頻度
Lineの両方を使って4個のダブ
ル・ワード転送を行い、Memory
Read LineとMemory Readの両方を使って1個のダブル・ワード転送を行っています。
49
時間数
8000
PCIコマンド使用頻度
40
37
34
31
28
25
22
19
16
13
7
10
4
0
1
青色ラインと紫色ラインの差に
より、赤色ラインでプロットされ
た特定のバースト・サイズの転送
のPCI効率が示されます。効率1
は、バスの占有期間中にクロック
ごとに4バイトのデータをパスす
る転送と定義されています。すべ
てのサイクルで最低1つのアドレ
ス・サイクルが必要なため、効率
1に近い値は達成できますが、効
率1自体を達成することはできま
せん。効率値は各バースト・サイ
ズごとにプロットされますが、効
率データは実際非常に大量の転
送が行われた場合には正確なも
のとなります。
規則の遵守によるパフォーマンスの向上
メトリックスとチャートの定義が終わったら、次はそれぞれの規則がPCIパフォーマンスに及ぼす影響を
調べます。ここでは、それぞれの規則をさらに詳しく説明します。規則の多くは、当該規則を守ること
で達成できるPCI効率の向上が調べられます。
INTEL CORPORATION
4
経験ではなく、規則の遵守
最小限のコストで最大限のパフォーマンスを達成するために、多くの場合、PCIカードの設計者は経験を
頼りに必要な一連のパフォーマンス特性を決定します。過去においては、このアプローチの結果、設計
者が一部の規則をパフォーマンスにはそれほど重要ではないと結論づけたこともあります。上記の方法
でデザインされたカードはたいてい、テストが行われたプラットフォームでは極めて良好に機能しま
す。しかし新しいプラットフォームになると、その同じカードがうまく機能しません。規則を無視する
と、カードの耐用寿命スパンが著しく短縮されてしまうのです
規則ではなく経験に基づいたデザインがなぜ悪いかの例を図6に示します.
Int Ack
IO Wr
IO Rd
Mem Wr
Mem Wr Inval
Mem Rd
Mem Rd Ln
Mem Rd Mult
チップセット A
12000
10000
6000
100000
4000
80000
時間 数
時間 数
8000
チップセット B
2000
40000
53
49
41
1 2 3
4 5 6
7 8 9
57
バ ース ト ・ サイ ズ(ダ
ダ ブル・ ワー ド)
45
33
37
25
0
29
17
21
9
13
20000
5
1
0
60000
バ ース ト・ サイ ズ(ダ
ダ ブル ・ ワー ド)
図6. チップセットによるバースト長の制約
この図では、同じベンチマークを実行する2つの異なったプラットフォーム上の特定のNICに対するPCI
コマンドの使用状況が、表されています。チップセットBのバーストはわずか8ダブル・ワードに制約さ
れていますが、チップセットAではテストされるNICのフル・バースト・サイズ、つまり60ダブル・ワー
ド近くが使用可能です。チップセットBの最適化を行う場合、設計者は規則を無視してすべてのバースト
長を最大8ダブル・ワードに制約することで、費用の節約を図ることがあります。チップセットAを装備
したプラットフォームでは、規則に従ってデザインされたNICは上記の図に示すようなロング・バースト
でデータを転送し、効率が大幅に向上します。チップセットBに対応してデザインされたNICでは、わず
か8バイトのバーストが続けて使用され、効率の向上は見られません。
本書にのべる規則のすべてに、上記と同じシナリオが発生すると思われます。チップセット・デザイナ
は、必要なだけの数のPCI規則に従ってパフォーマンスの最適化を実現します。PCIカード・デザイナが、
PCI規則に従ってデザインしたカードが将来のプラットフォームでもうまく機能することを保証できる
ただ1つの方法なのです。
ロング・バーストの使用
PCIカードは、X個のダブル・ワードの転送をイニシエートするたびに、転送が開始されるまでにL個の
クロックを待つ必要があります。いったん転送が開始されると、多くの場合、転送はPCIクロック当たり
1ダブル・ワードの速度で行われ、転送効率X/(X+L)が実現されます。PCIカードはLの値を完全には制御
できないため(この値の大部分は、プラットフォームが決定します)、効率の高い転送を達成するため
にバースト・サイズXを最大化する必要があります。リード・コマンドの場合、PCIカードは良好なPCI
効率を達成するために、最低64ダブル・ワードのバーストを使用できなければなりません。ライト・コ
マンドの場合は、最低1キャッシュ・ラインのバーストが使用できなければなりません。このバースト・
サイズは、プラットフォームの全レンジに渡って良好なPCI効率を提供するのには十分ですが、デザイナ
INTEL CORPORATION
5
はさらに長いバーストを使って改善されたPCI効率をなおも向上させるかどうかを決めることができま
す。
PCI 効率
さまざまなNIC、プラットフォー
0.6
ム、オペレーティング・システム、
0.5
およびPCIのリード・パフォーマン
スのストレス・テストを行うネッ
0.4
トワーキング・ベンチマークを使
0.3
って一連の実験を実行した場合の
平均バースト長の関数として、図7
0.2
にPCI効率を示します。PCIバス上
で行われるすべての転送に対し
0.1
て、平均バースト長が算出されま
0
す。転送には、NICがロング転送
0
5
10
15
20
を使用するデータ転送、かなりの
短縮化が必要なNICコントロール
平均 PCI バースト・サイズ(ダブル・ワード単位)
転送、NICが長さを制御できない
上位レベル・プロトコル転送
図7. バースト長に大きく影響されるPCI効率
(TCP/IPアクノリッジなど)があ
ります。上記の図から、PCI効率が
バースト長だけに左右されるのではなく、高いPCI効率を得るためにはロング・バーストも必要であるこ
とがわかります。
アドバンスドPCIコマンドの実行
普及度の高いネットワーク・インタフェース・カードの中には、MRとMWしか実行しないものがありま
す。この場合、カードはたいてい短いバースト長に制約され、良好なパフォーマンスは得られません。
アドバンスドPCIコマンドを実行することで避けられるパフォーマンスの間違いやすい点を、PCIリー
ド、PCIライトの順に説明します。
INTEL CORPORATION
6
アドバンスド・リード・コマンド
PCI 使 用 率
4% 3%
0.8
0.7
0.6
NIC B:
効率 57%
0.5
0.4
PCI ス ル ー プ ッ ト
0.3
4% 0%
0.2
0.1
Int Ack
PCI 使 用 率
0.9
4% 3%
0.8
0.6
0.5
PCI ス ル ー プ ッ ト
0.4
4% 0%
0.3
0.2
Int Ack
IO Wr
IO Rd
Mem Wr
0
Mem Wr Inv
0.1
Mem Rd Mlt
NIC A:
効率 57%
0.7
Mem Rd Ln
コマンド名
Mem Rd
使用したサイクルのフラクション
IO Wr
IO Rd
Mem Wr Inv
Mem Wr
Mem Rd Ln
Mem Rd Mlt
1
0
Mem Rd
使用したサイクルのフラクション
1
0.9
コマンド名
図8. チップセットAのリード・パフォーマンス
1
PCI 使 用 率
7%
0.8
0.7
42%
0.6
NIC B:
効率 42%
0.5
PCI ス ル ー プ ッ ト
7%
1%
0.4
0.3
0.2
0.8
15%
0.7
0.6
0.5
PCI ス ル ー プ ッ ト
11%
1%
0.4
0.3
0.2
IO Wr
Int Ack
IO Rd
Mem Wr Inv
Mem Wr
0
Mem Rd Mlt
0.1
Mem Rd Ln
Int Ack
IO Wr
PCI 効率
= 0.14
Mem Rd
NIC A:
効率 14%
PCI 使 用 率
12%
0.9
使用 したサイ クルの フラク ション
コマ ンド名
1
IO Rd
Mem Wr Inv
Mem Wr
Mem Rd Mlt
0
Mem Rd Ln
0.1
Mem Rd
使用 したサイ クルの フラク ション
0.9
PCI 効率 = 0.42
コマ ンド名
図9. チップセットBのリード・パフォーマンス
メイン・メモリのプリフェッチ可能領域からのPCIマスタ・メモリ・リードを行う際に正しいアドバンス
ド・コマンドを使用することで、性能を著しく向上させることができます。チップセットは多くの場合、
PCIリード・コマンドの類を手がかりとして使用して、メイン・メモリからリードするデータのブロック・
サイズの制御と、データをプリフェッチするべきかどうかの判断を行います。MRコマンドの使用時のよ
INTEL CORPORATION
7
うにデータを小さいブロックでリードし、プリフェッチしない場合は、チップセットは転送された連続
するダブル・ワードの間にウェイト・ステートを挿入する必要があるか、ロング・バーストを維持でき
ないかのどちらかです。
1つのPCIダブルワード(4バイト)データという少量のデータのリードには、MRコマンドを使用します。1
つのキャッシュ・ライン内のデータのリードには、MRLコマンドを使用します。
2つ以上のキャッシュ・ラインに保有されたデータの読み取りには、MRMコマンドを使用します。チッ
プセットの多くは、MR、エイリアスMRL、MRMに対処するためにキャッシュ・ライン全体をフェッチ
しますが、すべてのチップセットが上記のような簡素化を行うわけではないので、コマンドは推奨され
た通りに使用するのが良いでしょう。
図1と図2で最もパフォーマンスの差が大きかった2つのNIC、NIC AとNIC Bを使って、以下にアドバンス
ド・リード・コマンドの使用の重要性を示します。図8に示すように、NIC BはMRLは実行しますが、MRM
は実行しません。ここでは、たまたまMRMコマンドがなくてもNIC Bのパフォーマンスに影響は出ませ
んが、どこか他ではパフォーマンスが低下する可能性もあります。NIC AはMRコマンドしか使用しませ
ん。
この2つのNICのパフォーマンスは、アドバンスド・コマンドやそれほど長いバーストを必要としない旧
タイプのチップセット、すなわちチップセットAと、アドバンストコマンドを使用する事で最適化される
チップセット、すなわちチップセットBの両方の場合が表示されています。図8から、PCIコマンドに基
づいた最適化を行わない、バースト長に無関係なチップセットでは、上記の2つのNICの機能は非常によ
く似ていることがわかります。図9のように、PCIコマンドに基づいてパフォーマンスが最適化されてい
るチップセットでは、NIC AでMRコマンドだけを使用すると、パフォーマンスがPCI効率14%という許さ
れないレベルに下がります。NIC Bでは、PCI効率は42%に下がるだけです
INTEL CORPORATION
8
図11に、NIC Aで見られる大幅なパフォーマンスの低下の理由を示します。チップセットAでは、ほとん
どのデータの移動は16個のダブル・ワード転送で行われます。チップセットBでは、わずか8、4、また
は1ダブル・ワード・バーストで重要な転送フラクションが行われるため、バースト・サイズが大幅に減
少します。
図10に示すように、NIC Aのバースト長の低下は必要のないものです。アドバンスド・リード・コマンド
を使用すると、NIC Bでは平均バースト長の維持はもちろん、その増加も可能で、PCI効率は42%という
かなりの値に保たれます。
チップセット A -効 率 57%
ラー ジ MRL
チップセット B -効 率 42%
ヒュー ジ MRL
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.2
0.2
0.1
0.1
0
1
45
89
133
177
221
265
309
353
397
441
485
529
573
617
661
705
749
793
837
881
925
89
85
81
77
73
69
65
61
57
53
45
49
41
37
33
25
29
17
21
9
13
0
5
1
Data Frac.
Bus Frac.
Efficiency
0.3
バ ー スト・サイズ(ダ ブル ・ワ ー ド単
バ ー スト・サイズ(ダ ブル ・ワ ー ド単
図10チップセットによるNIC Bのパフォーマンス
チップセット A - 効 率 57%
チップセット B - 効 率 14%
- 8 ダ ブル ・ワ ー ド
- 16 ダ ブル ・ワ ー ド
17
16
15
14
13
0
12
0.1
0
11
0.2
0.1
10
0.3
0.2
9
0.4
0.3
8
0.5
0.4
7
0.6
0.5
6
0.7
0.6
5
0.8
0.7
4
0.9
0.8
3
0.9
2
1
1
1
1
2
3
4
5
6
7
バースト・サイズ(ダブル・ワード)
図11. チップセットによるNIC Aのパフォーマンス
INTEL CORPORATION
9
8
9
アドバンスド・ライト・コマンド
アドバンスド・ライト・コマンドMWIの使用も、すべてのチップセットにおいてハイ・パフォーマンスを
達成するのに重要なことです。MWIは、大きさが1キャッシュ・ライン以上で、始まりと終わりがキャッシ
ュ・ラインの境界上にあるデータのブロックを転送するのに使用します。ブロックがキャッシュ・ライン
に整合されていない場合、MWIコマンドではなくMWコマンドが強制的に開始されるPCIカードでは、MWI
を開始するためのMWの切断は行われません。チップセットがMWIに最適化されている場合は、キャッシ
ュ・ラインの境界でMW転送を切断し、NICがMWIを開始するのに最適なキャッシュラインの境界エリアを
提供します。
MWIの使用の重要性のあらましを示すケース・スタディを、以下に示します。リード・コマンドのケース・
スタディで使用したのと同じ2つのカードを、ここでも使用します。NIC AはMWしか実行しませんが、NIC
BはMWとMWIの両方を実行します。図12に、MWとMWIの区別をしない旧タイプのチップセット(チップ
セットA)を装備したプラットフォームでの,2つのNICのパフォーマンスを示します。また、図13に、MWI
に最適化したチップセットに対するこの同じ2つのNICのパフォーマンスを示します。チップセットBへの
変更は、NIC Aが36%の効率しか維持できないため、両方のNICでPCI効率の低下を招いています。NIC Aは、
チップセットAではデータの移動はほとんど10 ダブル・ワードMWで行われますが、チップセットBでは4
ダブル・ワードMWしか使用できません。NIC BはMWIを使用しているため、チップセットBでは16、24、
および32 ダブル・ワードのもっと長いバーストを保持でき、53%のPCI効率を保持するこができます。
PCI 使 用 率
4% 2%
0.8
0.7
NIC B:
効 率 66%
0.6
0.5
PCI ス ル ー プ ッ ト
0.4
3% 1%
0.3
0.2
0.7
0.6
0.5
PCI ス ル ー プ ッ ト
4%
0%
0.4
0.3
0.2
Int Ack
IO Wr
IO Rd
Mem Wr Inv
Mem Wr
Mem Rd Mlt
0
Mem Rd Ln
0.1
Mem Rd
NIC A:
効 率 50%
Int Ack
IO Wr
PCI 使 用 率
4% 2%
0.8
使用されたサイクルのフラクション
コマンド名
IO Rd
Mem Wr
Mem Wr Inv
0.9
Mem Rd Mlt
1
0
Mem Rd Ln
0.1
Mem Rd
使用されたサイクルのフラクション
1
0.9
コマンド名
図12. ライト・コマンドPCIのパフォーマンス(チップセットA)
INTEL CORPORATION
10
1
PCI 使 用 率
8%
0.8
13%
0.7
0.6
NIC B:
効 率 53%
0.5
PCI ス ル ー プ ッ ト
8%
1%
0.4
0.3
0.2
0.1
0.8
9%
0.7
0.6
78%
0.5
PCI ス ル ー プ ッ ト
12%
1%
0.4
0.3
0.2
Int Ack
IO Wr
IO Rd
Mem Wr
Mem Wr Inv
0
Mem Rd Mlt
0.1
Mem Rd Ln
Int Ack
IO Wr
IO Rd
PCI 効率
= 0.36
Mem Rd
NIC A:
効 率 36%
PCI 使 用 率
13%
0.9
使用されたサイクルのフラクション
コマンド名
Mem Wr Inv
Mem Wr
Mem Rd Mlt
Mem Rd Ln
1
0
Mem Rd
使用されたサイクルのフラクション
0.9
87%
PCI 効率 = 0.53
コマンド名
図13. ライト・コマンドPCIのパフォーマンス(チップセットB)
アドバンスドPCIコマンドMRL、MRM、およびMWIの使用は、すべてのPCIプラットフォームにおいてハイ・
パフォーマンスを達成するのに重要なものです。
レイテンシの最小化
PCI転送中に、PCIカードがクロックを追加することがよくあります。ここでは、これらの追加クロックは
すべて、レイテンシという名前で呼びます。レイテンシが追加されるのは、カードが別のPCIマスタによる
リードに応答し、要求されたデータを返すために多数のクロックを使用する場合です。また、Frame#の立
ち下がりエッジからIdry#が真になるまでの間の長い遅延がカードに発生した場合は、転送の開始時にレイ
テンシが追加されます。PCIカードがレディ・ラインをデアサートした場合は、個々のダブル・ワード転送
の間にレイテンシが追加されることもあります。これらのレイテンシはすべて、バースト長セクション、L
/ (X+L)で示された等式に従って、PCI効率の低下の原因となります。ここで、Lはすべてのカードレイテン
シとチップセット・レイテンシの合計、Xはバースト長を表します。PCIカードのレイテンシを最小化する
ことで、PCI効率が最適化されます。
I/Oコマンドではなくメモリ・コマンドの使用
I/Oリードおよびライト・コマンドは通常、PCIカードのI/Oスペースをアドレス指定するためにCPUが発行
します。I/Oコマンドは多くの場合、チップセット内およびCPU内のオペレーションをシリアル化します。
このシリアル化は、PCI効率の低下という形では現れませんが、CPU使用量の増加によってパフォーマンス
を低下させます。PCIカード・デザイナは、システムのシリアル化が必要なそれらのロケーション専用のI/O
スペースを使って、上記の影響を最小限に抑えることができます。それは、それらのロケーションはすべ
て、PCIメモリ・スペースに置くことです。
システムの測定
ここで使用した高速なLANカード/グラフィカルカードの様なパフォーマンス指向のPCI解析は、Intel社の
Platform Architecture Labsで開発されたものです。このツールは、システム・パフォーマンスの解明と改善
に非常に有用であることが判明しました。これがPCIカード・デザイナやシステム・インテグレータに便利
なツールだということは、図を見た人からよく聞かれる「どうやったら、こんな図が描けるのですか」と
いう質問で一層明らかになりました。この質問に答えるために、IntelのPlatform Architecture Labsと
Computing Enhancement Groupは、Hewlett Packard Boeblingen Instrument Divisionと協力し、Intel社が開
発したPCIパフォーマンス解析技術、コンセプト、およびメトリックスに基づいた新しい機能を使って、HP
社が自社のPCIバス解析ツール(PCIエクセサイザ)を強化しました。その結果、PCI製品の開発から評価
INTEL CORPORATION
11
に携わるエンジニアが簡単にPCIパフォーマンスの比較、改善を行えるフルセットのPCIデザイン・ガイド
ライン、パフォーマンス測定メトリックス、解析ツールHP E2972A PCIバス・パフォーマンス・アナライ
ザが生まれました。
結論
PCIバスを適切に使用することで、最大限のシステム・パフォーマンスを引き出す一方、PCIバスとCPUに
かかる負荷を最小限に抑えることができます。PCIバス効率は、本書に示す規則を守ることで大幅に強化さ
れます。PCIカード・デザイナは、本規則のリストを念頭に置いてデザインを行います。システム・インテ
グレータは、ある程度はシステムが本規則のリストに適合しているかどうかを基準にして、システムに含
めるべきカードを選択し、よりよいパフォーマンスを得ることができるでしょう。Intel社とHP社の協力に
より、システムのPCI効率の測定と解明が簡単に行えるようになりました。
i
本報告書は、www.intel.comから入手できます。"Efficient Use of PCI"で検索してください(あるいは、
http://support.intel.com/oem_developer/chipsets/pci/general/pci001.htmから入手できます)。
ii
本報告書の中の図のデータはすべてIntel社、Platform Architecture Labsによる社内テストで得られたもの
です。
iii
本書の旧版では、2キャッシュラインにまたがるデータにはMRL、3キャッシュライン以上にまたがるデ
ータにはMRMの使用をお勧めしました。この推奨に従ってもパフォーマンスはほんのわずか向上するだ
けで、PCI仕様と異なった使用法を勧めるには値しません。本報告書は、PCI仕様に準拠するよう変更さ
れています。
INTEL CORPORATION
12