本書では、PCI の主な機能と、それに対応する SBus の機能との比較情報を提供します。また、PCI のみが持つ機能についても説明します。
以下の表は、電気、ファームウェア、ハードウェア、ソフトウェア、通常のトランザクションの各機能について、SBus と PCI の機能を比較したものです。
表 1-1 電気的な機能の比較
機能 |
SBus |
PCI |
違い |
---|---|---|---|
消費電力 |
P = VI |
25W (5V × 5A) |
なし |
供給電力 |
5V +/-.25V 最大 2A/コネクタ 12V +/-.75V 最大 30mA/コネクタ |
5V +/-5% 最大 5A/コネクタ 3.3V +/-0.3V 最大 0.6A/コネクタ 12V +/-5% 500mA/コネクタ -12V +/-10% 100mA/コネクタ |
なし |
表 1-2 ファームウェアの機能比較
機能 |
SBus |
PCI |
違い |
---|---|---|---|
FCode が必要 |
すべての装置 |
起動装置とコンソール装置 |
なし |
表 1-3 ハードウェアの機能比較
機能 |
SBus |
PCI |
違い |
---|---|---|---|
アドレス割り当て |
静的割り当て。スロットは既知の開始アドレスと長さを持ちます。 |
入出力およびメモリーアドレス空間用には動的割り当て。スロットは、設定空間のヘッダーのアドレスによってのみ区別されます。 |
なし |
アドレス指定モード |
仮想アドレスを指定します。SBus コントローラとアドレスの変換に MMU が必要となります。 マスターには 32 ビットの仮想アドレスを使用し、1 スレーブあたり 28 ビットの物理アドレス空間を使用します。 |
通常アドレスモード |
なし |
アドレス空間 |
メモリーに割り当てられた標準の空間 (28 ビット/スロット) |
3 つの物理アドレス空間 (メモリー、入出力、設定) |
なし |
自動設定 |
|
|
|
バースト転送モードの 大きさ |
使用可能。最大 64 バイトで、大きさは SIZ[2:0] で事前に宣言されます。 |
あり。大きさは可変で、制限はありません。PCI 装置と PCI ブリッジによって判定されます。 |
なし |
バス帯域幅 (データ転送速度) |
最大 25MHz/32 ビット。 32 ビットでは 100 MB/秒。 64 ビットでは 200 MB/秒。 |
PCI/66 では 33 MHz (バージョン 2.0) または 66 MHz。32/64 ビット。最大速度 132 MB/秒 (33MHz/32 ビット) 〜 528 MB/秒 (66MHz/64 ビットおよび 66MHz)。 |
なし |
バス パーキング |
なし |
あり。バスがアイドル状態でマスターがバスに対する要求を出していない場合に、アービタは、マスターにバスを与えることができます。 |
なし |
バス幅 |
|
|
× 32 〜 64 ビット |
クロック周波数/ バス速度 |
最大 CLK 25 MHz CLK 出力: 22 ns 入力設定: 15 ns |
最大 CLK 33 MHz CLK 出力: 22 ns 入力設定: 7 ns |
同期。信号は立ち上がりクロックエッジを基準とします。 |
コネクタ |
コネクタの種類は 1 つ |
5 V または 3.3 V の 32 ビットおよび 64 ビットコネクタ。64 ビットコネクタは 32 ビットコネクタを拡張したものです。 |
なし |
データパス |
32 ビット。拡張転送にかぎり 64 ビット |
32/64 ビット |
なし |
動的バスサイズ変更 |
あり。非バースト転送で受け取るデータ幅をスレーブが制御することができます。 |
なし。ただし、データフェーズでのバイトの有効化設定によって同様の機能が実行されます。 |
なし |
フォームファクタ |
1 フォームファクタ/1 スロット (2 倍または 3 倍幅のスロットを共有可能) |
短、長、可変高短の 3 つのフォームファクタ |
なし |
割り込み |
7 レベル |
4 レベル (INT A-D) |
なし |
1 バスあたりの最大装置数 |
通常は、電気負荷によって制限されます。 |
32 スロット |
|
1 バスあたりの最大マスター数 |
8 |
32 |
|
装置あたりの最大演算数 |
1 |
8 |
|
ピン数 (コネクタ) |
96 |
32 ビットおよび 64 ビットコネクタの両方について 96 ピン |
|
表 1-4 ソフトウェアの機能比較
機能 |
SBus |
PCI |
違い |
---|---|---|---|
パリティー |
コントローラとインストール済みのマスターおよびスレーブにパリティーの生成と検査が実装されている場合は、データと仮想アドレスの転送について選択可能です。 |
アドレスフェーズとデータフェーズではデフォルトです。PCI に準拠したすべての装置で実行する必要があります。 |
なし |
表 1-5 標準のトランザクションサイクル
機能 |
SBus |
PCI |
---|---|---|
アドレスのデコード |
スレーブは、コントローラからデコードによって選択されます。 |
各ターゲットは完全な 32 ビットデコードを実行し、選択されている場合は DEVSEL# を駆動します。 |
バーストの大きさ |
32 ワード |
制限なし |
バスの駆動と送受反転 |
なし |
バスを駆動するエージェントが信号を転送する場合は、複数のエージェントによって駆動された信号について競合を避けるために、送受反転サイクルが必要になります。 |
バイトの配置 |
バイトレーンのスワッピング |
DWORD スワッピングによって、バイトがバイトアドレスに正しく配置されます。 |
バイトの順序 |
ビッグエンディアン |
リトルエンディアン |
サイクルに参加するプログラム |
コントローラ、マスター、スレーブ |
PCI エージェント (マスター/イニシエータ、ターゲット) |
サイクルの用語と構成 |
転送 = 1. 調停フェーズ 2. 変換フェーズ 3. 拡張転送情報フェーズ 4. 転送フェーズ (スレーブサイクル) |
転送 = 1 つ以上のクロックサイクル フェーズ = 1 つ以上の読み取りまたは書き込み転送で、現在のイニシエータがデータ転送を実行している間の (隠し) 調停も含まれます。
読み取りまたは書き込みトランザクション = 1 アドレスフェーズ + 1 つ以上のデータフェーズ |
バスのトランザクションの要素には、SBus コントローラ、PCI アービタ、SBus および PCI マスター、SBus および PCI ターゲットが含まれます。
SBus コントローラは、調停フェーズにおいて、バスマスター間の競合の調停を行います。
また、SBus コントローラは以下を行います。
アドレスのストローブ
バスの調停
バスの時間切れ
データ転送のカウント
SBus システムクロック
スレーブの選択
仮想アドレスを変換し、ページサイズを制限する
PCI アービタは本当の意味でのコントローラを持っていませんが、バスマスター間の調停を行うための機能は、コントローラと同様に持っています。バスマスターは、完了時または時間切れ時にトランザクションを終了することができます。また、ターゲットがトランザクションを終了することもできます。通常、アービタはホスト/PCI または PCI/拡張バスブリッジチップに統合されています。
SBus マスターは、マスターとスレーブ間でエラーがないデータの読み取りおよび書き込みタスクの生成処理を制御します。
マスターが起動するトランザクションの種類は以下のとおりです。
調停
変換
デフォルト転送
拡張転送
PCI マスターは、PCI バスについて、調停を行い、アクセスを獲得したときにイニシエータになります。イニシエータは転送を開始しますが、中止、終了、または時間切れにすることもできます。
また、PCI マスターは以下を行います。
アドレスフェーズを開始する
データ転送時に待ち状態を挿入する
トランザクションを終了する
SBus スレーブ/ターゲットは以下を行います。
SBus を監視して、マスターがデータ転送を要求しているかどうかを判定する
SBus のスレーブは、転送フェーズで、要求されたデータを SBus のマスターに提供する
アドレスの復号化は行わない。マスターがこれを行う
バースト転送、動的バスサイズ変更、拡張転送フェーズに参加する
スレーブは、データ確認速度を制御することによってデータ転送速度を制御する
トランザクションを終了する
PCI ターゲットは以下を行います。
トランザクションのターゲットであることを判定する
イニシエータからデータオブジェクトを受け取る
アドレスの復号化を行う
特殊サイクルに参加する
データ転送時に待ち状態を挿入する (データ転送速度を制御する)
トランザクションを終了する
プロトコルには、バスおよびバス調停ごとに、SBus および PCI 基本トランザクションサイクルがあります。
各バスの SBus 基本トランザクションサイクルの定義を以下に示します。
調停フェーズ — このフェーズでは、マスターがバスアクセスを要求します。マスター間で競合がある場合は、コントローラが次の転送を行うマスターを決定します。調停後は、コントローラが転送を監視します。
変換フェーズ — マスターとコントローラが、仮想アドレスを物理アドレスに変換し、選択信号を変換します。選択信号は、マスターとスレーブによって使用されます。
拡張転送情報フェーズ — このフェーズは、マスターが要求したサイクルで、拡張転送の値が SIZ[2:0] の場合のみ使用されます。
転送フェーズ — 転送フェーズ (スレーブサイクル) では、データはスレーブへ、またはスレーブから移動します。
動的バスサイズ変更 — この機能によって、マスターが可変幅のスレーブと容易に通信できるようになります。
バースト転送 — SBus のバースト転送プロトコルは、SBus の基本トランザクションと同じです。ただし、複数のワードが転送されます。動的バスサイズ変更と可変幅のスレーブを使用することはできません。
拡張転送モード — 64 ビット転送によって性能が向上します。データパスの幅が 2 倍であるため、最大で 2 倍の帯域幅が可能です。
各バスの PCI 基本データトランザクションサイクルを以下に示します。
アドレスフェーズ — すべての PCI トランザクションは、このフェーズから開始されます。このフェーズは並行隠れ調停を含みます。
イニシエータが、ターゲットの装置とトランザクションの種類を識別します。
データフェーズ — アドレスフェーズの後、アドレス/データバスが 1 つ以上のデータフェーズでデータを転送します。アドレスフェーズの直後のクロックが、データフェーズを開始します。
データフェーズでは、PCI バスクロックのすべての立ち上がりエッジの間にイニシエータとターゲットの間でデータオブジェクトが転送されます。
バスのアイドル状態 — 最後のデータ転送が終了したら、イニシエータはバスをアイドル状態に戻します。アイドル状態とは、バス上でトランザクションが行われていない状態です。
SBus によるバスの調停では、調停と転送を並行して実行することができます。PCI によるバスの調停は、アクセスの応答時間を最小限にするために、タイムスロット単位ではなく、アクセス単位になっています。
複数の SBus のマスターがバスアクセスを要求した場合は、コントローラがいずれかの要求元にアクセスを許可します。マスターがデータ転送を実行している間に、並行して行われる調停は、隠れ調停と呼ばれます。
PCI の調停では、バスマスターがそれぞれのバスアクセスの調停を行う必要があります。
PCI の仕様では、PCI のバス調停方式が定義されていません。アービタは任意の方式を使用することができます。ただし、2.1 の仕様では、アービタが「公平な」アルゴリズムを実装し、デッドロックを防ぐことを義務付けています。
SBus と PCI バスの応答時間に関する特徴は似ています。両方とも応答時間が短く、スループットが高いバスです。ターゲットやマスターがトランザクションに追加することができる待ち状態の数は制限されています。また、マスターにはプログラム可能なタイマーがあり、トラフィックが多いときにバスを使用することができる時間が制限されます。これらの制限と、バス調停の順序によって、任意のバスマスターがバスを獲得するための待ち時間を正確に予測することができます。
PCI および SBus の応答時間には、以下の要素が影響します。
バスマスターの数
調停方法とオーバーヘッドの時間
SBus 変換フェーズまたは PCI データフェーズの長さ
スレーブまたはターゲットが転送を終了するまでの時間
再試行やエラーの発生
表 1–6 は、バスアクセスの応答時間の構成要素を示しています。バスアクセスの応答時間は、バスマスターがバスアクセスを要求してから、トランザクションの最初のデータ転送が終了するまでの時間です。表 1–6 に、バスアクセスの応答時間の構成要素を示します。
表 1-6 PCI バスアクセスの応答時間の構成要素
構成要素 |
説明 |
---|---|
バスアクセスの応答時間 |
マスターがバスアクセスを要求してから、トランザクションの最初のデータ転送が終了するまでの時間 |
調停の応答時間 |
マスターが要求を発行してから、アービタがマスターの許可を表明するまでの時間 |
バス獲得の応答時間 |
要求を行ったマスターが許可を受信してから、現在のマスターがバスを解放するまでの時間 |
ターゲットの応答時間 |
トランザクションの開始から、現在のターゲットがトランザクションの最初のデータ転送を終了する準備ができるまでの時間 |
この節では、PCI ブリッジ装置の PCI の特徴について説明します。バスタイプ A とバスタイプ B の詳細な項目分けについては、表 1–7 を参照してください。
Sun™ SPARC™ プラットフォームにおけるキャッシュラインの大きさは 64 バイトです。SPARC プラットフォーム用の PCI 装置は、キャッシュラインの大きさが 64 バイトで最高の性能を発揮します。
機能 |
バス A |
バス B |
---|---|---|
データ転送幅 |
64 ビット |
64 ビット |
クロック周波数 |
33/66 MHz |
33 MHz |
バーストの大きさ |
64 バイト |
64 バイト |
読み取りバッファーの数 |
DMA 用に 64 バイトが 1 つ |
DMA 用に 64 バイトが 1 つ |
書き込みバッファーの数 |
DMA 用に 64 バイトが 2 つ PIO 用に 64 バイトが 1 つ |
DMA 用に 64 バイトが 2 つ PIO 用に 64 バイトが 1 つ |
二重アドレスサイクル |
DMA のみ省略 |
DMA のみ省略 |
高速背面間接続装置 |
ターゲットモードのみ |
ターゲットモードのみ |
バイトスワッピング |
DMA についてはあり |
DMA についてはあり |
割り込み応答時間 |
IDU 内部で 6 サイクル |
IDU 内部で 6 サイクル |
キャッシュラインの大きさ |
64 バイト |
64 バイト |
キャッシュラインの数 |
16 |
16 |
キャッシュラインでの切断 |
ターゲットモード (DMA) のみ |
ターゲットモード (DMA) のみ |
設定機構 (PCI 2.1 仕様の 3.7.4 節) |
設定機構 #2 |
設定機構 #2 |
設定空間 |
物理アドレスの 1FE.0101.0000 から始まる 256 バイト |
物理アドレスの 1FE.0100.0000 から始まる 256 バイト |
入出力空間 |
物理アドレスの 1FE.0200.0000 から始まる 8 K |
物理アドレスの 1FE.0201.0000 から始まる 8 K |
記憶空間 |
物理アドレスの 1FF.0000.0000 から始まる 2 G |
物理アドレスの 1FF.8000.0000 から始まる 2 G |
設定サイクル |
マスターモードのみ |
マスターモードのみ |
特殊サイクル |
マスターモードのみ |
マスターモードのみ |
任意のバイトの使用 |
一貫性 DMA のみ |
一貫性 DMA のみ |
同列間 DMA |
単一セグメントにおいて |
単一セグメントにおいて |
割り込み |
PCI 装置は 4 つの割り込みを共用します。 |
PCI 装置は 4 つの割り込みを共用します。 |
IOMMU ページの大きさ |
8 K および 64 K。STC では 8 K のページサイズのみが使用されます。 |
8 K および 64 K。STC では 8 K のページサイズのみが使用されます。 |
DVMA アドレス指定空間 (pci nexus ドライバによって設定) |
Solaris 2.5.1 では 64 MB。以降のリリースでは変更される可能性があります。 |
Solaris 2.5.1 では 64 MB。以降のリリースでは変更される可能性があります。 |
PIO 読み取りの大きさ |
メモリーサイクルでは 1、2、4、8、16、64 バイト。入出力サイクルまたは設定サイクルでは 1、2、4 バイト。 |
メモリーサイクルでは 1、2、4、8、16、64 バイト。入出力サイクルまたは設定サイクルでは 1、2、4 バイト。 |
PIO 書き込みの大きさ |
メモリーサイクルでは任意の 0-16 バイトと境界割り当てされた 64 バイト。入出力サイクルまたは設定サイクルでは任意の 0-4 バイト。 |
メモリーサイクルでは任意の 0-16 バイトと境界割り当てされた 64 バイト。入出力サイクルまたは設定サイクルでは任意の 0-4 バイト。 |
キャッシュラインの折り返しアドレス指定モード |
サポートなし |
サポートなし |
ローカル (PCI 上) キャッシュ |
サポートなし |
サポートなし |
主記憶への排他的アクセス |
LOCK# 信号の接続なし |
LOCK# 信号の接続なし |
アドレス/データステップ |
サポートなし |
サポートなし |
DOS 互換穴 |
サポートなし |
サポートなし |
外部アービタ |
サポートなし |
サポートなし |
消去法的デコード |
サポートなし |
サポートなし |