Comments
Description
Transcript
第2章
第 2章 PCI バスの基本から各信号の意味,タイミングまで PCI バスの概要 滝 誠一 力を削減するパワー・マネジメント機能としても使用 2.1 PCI バスの特徴 できます. ● PCI は CMOS 素子が前提 ここでは,PCI バスの特徴を簡単に説明し,PCI が PCI 上の信号線の電圧の定義には 5V 系と 3.3V 系の どのようなバスであるのか,把握できるようにしてみ 2 種類あります.5V 系では,TTL と互換性のある定 たいと思います. 義となっていますが,3.3V 系では当然 CMOS の特性 ● PCI は完全同期型バス を前提としています. PCI バスは,高速かつ安定したバスの動作を保証す いずれの電圧定義においても,ドライバとレシーバ るために,ほとんどすべての信号線の動作タイミング の素子は CMOS であることを想定しています.もっと をバス上の CLK 信号を基準として統一的に規定して も注意を要するのは,ドライバの AC スイッチング特 います.例外的に CLK 信号と非同期に動作するのは 性です.ドライバ単体のドライブ能力では必要な電圧 リセット信号(RST#)とインタラプト信号(INTA#, 変化を起こせないことを仮定し,信号線上の反射波の INTB#,INTC#,INTD#)だけです.たとえば ISA 影響を加えても必要な電圧変化が得られるように,タ バスでは,場合場合ごとのタイミング・チャートとそ イミング仕様などもできています.ドライバの DC ド れに伴うタイミング・パラメータだけで 1 冊の本がで ライブ能力も考慮に入れて,プルアップ抵抗による負 きてしまうほどの複雑な仕様となっています. しかし, 荷などが重くなりすぎないようにする注意が必要です. PCI バスでは,三つのタイミング・チャートと 16 個 ● ワイヤード OR はなるべく排除 のタイミング・パラメータだけですべての信号線の動 作が統一的に規定されています. なお信号名の最後に#が付く信号は,負論理信号を 従来のバスでは,オープン・ドレイン(またはオー プン・コレクタ)ドライバを使用したワイヤード OR の信号線が多用されていました.しかし,この方式で 示します. は,信号線をアクティブ(アサート=“L”)の状態か ● クロックは可変 らインアクティブ(ディアサート=“H”)の状態に戻 クロック信号 CLK は最高周波数が 33MHz または 66 すために,プルアップ抵抗に頼ることになり,状態変 MHz と規定されているだけです.CLK 信号のための 化に時間がかかるため,高速のバスには適しません. 四つのタイミング・パラメータの条件が合っているか そこで,PCI バスでは,ほとんどの信号線について ぎり,33MHz または 66MHz より低いどのような周波 「サステインド・トライステート」(Sustained Tri- 数で動作させてもかまいません.動作の途中で周波数 State,以下,s/t/s と略す)という方式が用いられて を変更してもかまいませんし,極端な場合は,クロッ います. クを止めてしまっても問題はありません. システムの都合で 33MHz または 66MHz より低い周 波数のバスを設計することができます.また,ハード ウェアを動かす必要がないときには,クロック周波数 を落としたり,クロックを止めることによって消費電 12 図 1 に s/t/s の動作を示します. 1)クロック①の立ち上がりエッジでは,ドライバ A が信号線を“L”にドライブしています 2)クロック②の立ち上がりエッジで,ドライバ A は信号線を“H”にドライブします 第 2 章 PCI バスの概要 3)クロック③の立ち上がりエッジで,ドライバ A はトライステート(ハイ・インピーダンス)に切 り替えます 4)その後,クロック④の立ち上がりエッジまでは, プルアップ抵抗によって信号線の“H”状態が 保たれます 5)ドライバ B は,クロック③の時点で信号線が“H” であったことを確認し,そのひとつ後のクロッ 図 1 サステインド・トライステートの動作 ク④から信号線のドライブを開始します.これ より前にドライブを開始すると,ドライブ A と ります.大量のデータを連続的に送る場合には,その B の出力どうしが衝突する可能性があります アドレスは固定であるか,連続的に変化するかのいず オープン・ドレインを使用する信号線は,SERR#, れかしか考えられません.したがって,アドレス情報 IRQA#,IRQB#,IRQC#,IRQD# の 5 本だけです. を送るのは最初の 1 回だけで,あとはデータの転送の これらの信号線では,同時に複数のドライバが信号線 みを行う(バースト転送) とすれば,データ線とは別に をドライブする可能性があり,s/t/s は使用できませ アドレス線を用意しておくことはむだというものでし ん.また,高速に状態をスイッチングする必要性もあ ょう. りません. ● 統一されたデバイスの初期化手段 ● PCI は完全 32 ビット・バス PCI デバイスにはコンフィグレーション・レジスタ 16 ビットの ISA バスでは,8 ビット・デバイスの存 と呼ばれるレジスタ群が実装されていなくてはなりま 在を許していました.同様に,32 ビットの EISA バス せん.この中には次のようなレジスタが含まれてい やマイクロチャネルでは,8 ビット・デバイスや 16 ビ ます. ット・デバイスが存在することを認めていました.こ 1)デバイスの種類を示す ID レジスタ群 れらのバスでは,バス幅の異なるデバイスの間で正し 2)PCI バス上の動作のルールやシステムの特徴(たと くデータ転送を行えるように,マザーボードの上に複 えば,主記憶 RAM に対するキャッシュ・メモリ 雑なデータ・バス切り替え回路が存在していました. のライン・サイズ)を設定するためのレジスタ群 このバス切り替え回路の存在が,バスの動作タイミン 3)PCI の動作に関するデバイスのステータスを示す グを複雑にする要因のひとつでもありました. レジスタ群 しかし,PCI バスでは,すべてのデバイスが少なく 4)デバイスが使用するメモリ・アドレスや I/O アド とも 32 ビットのデータ・バス幅をもち,オプション レスなどのハードウェア・リソースを設定するた として 64 ビット・バス幅のデバイスが定義されてい めのレジスタ群 ます.32 ビット・デバイスと 64 ビット・デバイスの 5)その他のデバイスに固有のレジスタ群 間のデータ・バスの調整は当事者どうしで行うことに EISA,マイクロチャネル,PCMCIA でも同様な働 なっており,システムはこの調整のための特別な回路 きをするレジスタが定義されています.このレジスタ をもっていません. 群にアクセスすることによって,システムの初期化を ● アドレス・バスとデータ・バスは時分割 行う ROM 内蔵のプログラム,あるいは,システムの 従来のバスでは,多くの場合,アドレス・バス用と ハードウェア構成を管理するコンフィグレーション・ データ・バス用に別々の信号線のセットが用意されて ユーティリティは,統一的な方法によって各 PCI デバ いましたが,PCI バスでは,アドレス・バスとデー イスを初期化することができます. タ・バスに同じ 32 本の信号線を使用します.まず, 一つの物理的なデバイス(マザーボード上の LSI ま アドレスでデータ転送の相手を指定し,つぎにデータ たはアドイン・ボード)の中に独立した複数のファン の転送を行うと考えれば,アドレス線とデータ線が クションが実装されている場合(マルチファンクショ 別々にある必然性は低いといえます. ン・デバイス)には,各ファンクションごとに独立し さらに,PCI の高速性が意味をもってくるのは大量 のデータをまとめて転送するときであるとの考えがあ たコンフィグレーション・レジスタのセットを用意し ます. 13 図 2 に PCI バスを搭載したシステムの構成例を示し メイン・メモリ ます.一般的な PC/AT 互換機はホスト-PCI ブリッジ ホスト CPU メモリ・コントローラ および ISA バス・ブリッジが搭載されています. ホスト・ ローカル・バス ホスト-PCIブリッジ ● 複数バスの同時動作 ブリッジ回路を経由してのデータ転送は,ときとし て PCI バスの高速性をそこなうおそれがあります.し ISAデバイス ISAデバイス PCIデバイス かし,ブリッジによって隔てられた二つのバスが,同 時に別々のデータ転送を実行できるとすれば,ブリッ PCI-ISA ブリッジ ISAバス・ コネクタ ジの欠点を捕えるばかりでなく,より高いシステム・ スループットを実現する可能性もあります. PCI コネクタ さまざまなケースが考えられるでしょうが,既に実 現されている簡単な例として,ポスティッド・ライト PCIバス ISAバス 図 2 PCI バスを搭載したシステムの構成例 (Posted Write)と呼ばれる手法があります. 例えば,CPU が大量のデータを主記憶 RAM から読 み出し,それを VRAM に書き込む場合を考えてみま コンフィグレーション・レジスタにアクセスするた しょう.VRAM にデータを書き終わるまで CPU のラ めのアドレス空間をコンフィグレーション空間と呼 イト・サイクルは終了しないものとすると,この間, び,メモリ・アドレス,I/O アドレス空間とは区別さ CPU はほかの処理ができなくなってしまいます.こ れています.また,バス上の動作としては,コンフィ のようなときに,ブリッジの中にバッファを用意して グレーション・レジスタに対するリード/ライトのた おき,このバッファにデータを書き込んだ時点で めにメモリ・サイクル,I/O サイクルとは別にコンフ CPU のライト・サイクルを終了させてしまうのがポ ィグレーション・サイクルが定義されています. スティッド・ライトです.ブリッジがバッファの中の コンフィグレーション空間の定義によれば,一つの データを VRAM に向けて転送している間,CPU もホ PCI バスに接続可能なデバイスの数は最大 32 個,一 スト・ローカル・バスも自由ですから,この間に つのデバイスの中に実装できるファンクションの数は CPU は新しいデータをメモリからリードすることが 最大 8 個,そして,一つのファンクションに割り当て 可能になります.また,ブリッジは,後続のデータが られるコンフィグレーション空間のサイズは 256 バイ バッファにたまっていることを検知できれば,前述の ト(64 ダブル・ワード) となります. バースト転送が簡単に実行できるようになります. ● ブリッジによるバスの拡張 ● イニシエータ/ターゲット/エージェント 理論上,デバイスは最大で 32 個とのことですが, 一般にコンピュータのバス上でデータ転送を行う場 実際には電気的な負荷や安定性の観点から,10 個程 合には,データの送り手と受け手の間に,「マスタ」 度が限界となります.それでは,もっと多くのデバイ と「スレーブ」の関係があります.「マスタ」とはア スを接続したい場合にはどうするのでしょうか.その ドレス線をドライブしてデータ転送の相手を指定し, 場合には,システム内に複数の PCI バスを用意し,バ メモリ・リードや I/O ライトなどのアクセス要求を送 ス間を PCI-PCI ブリッジ回路で接続します. るデバイスです.反対に「スレーブ」はアドレスやア PCI アーキテクチャでは,ブリッジ回路によって複 数のバスを接続することを最初から考慮しています. クセス要求を受け取り,それをデコードしてアクセス 要求に応答するデバイスです. 具体的には次のようなブリッジ回路が考えられます. PCI バスにおいては,「マスタ」と「スレーブ」に 1)PCI バスを CPU のローカル・バスに接続するホス 該当する言葉として,「イニシエータ」および「ター ト-PCI ブリッジ ゲット」という用語が多く使われます.「スレーブ」 2)PCI バスを拡張するための PCI-PCI ブリッジ という言葉はほとんど使われず,つねに「ターゲット」 3)PCI バスとそのほかの拡張バス(ISA,EISA,マイ という言葉が使用されます. 「マスタ」と「イニシエー クロチャネル,PCMCIA,CardBus など)を接続す タ」はどちらも使いますが,一応の使い分けがあるよ るためのブリッジ うです.ある特定のデータ転送動作について論じると 14 第 2 章 PCI バスの概要 PCIデバイス0 PCIデバイス3は バスの制御権を 要求してバス・ アービタから制 御権を得た ホストPCI ブリッジ バス・アービタ PCIデバイス1 PCIデバイス3 PCIデバイス10 PCIデバイス11 ▲ PCIデバイス0, 1, 3, 11はマスタ・デバイス (ホスト-PCIブリッジもマスタになる) PCIデバイス10はターゲット・デバイス PCIデバイス3はイニシエータ PCIデバイス11はターゲット PCIデバイス3と11はエージェント ▲▲▲▲ PCI デバイス10 はバス の制御権はいっさい要求 しない 図 4 ポイント・ツー・ポイント信号とサイドバンド信号 図 3 デバイスとエージェントの関係 つかの例外があります. きには,その転送を制御しているデバイスのことを その一つが,図 4 の中にある P1 から P4 のような, 「イニシエータ」と呼び, 「イニシエータ」として動作 ポイント・ツー・ポイント信号線と呼ばれるもので しうるデバイスのことを「マスタ・デバイス」と呼ぶ す.各 PCI デバイス(またはコネクタ)の同じ名前のピ のが普通です. ンは,互いに接続されるのではなく,それぞれ別々に SCSI でも「マスタ」,「イニシエータ」という言葉 を使いますが,少し意味合いは異なっています. また,「マスタ」あるいは「イニシエータ」として システム回路に接続されています.例としては, INTA# から INTD# のインタラプト要求線や REQ#, GNT# 線があります. PCI バス上のデータ転送に参加するデバイスのことを もう一つ,サイドバンド信号というものが定義され 総称して,その PCI バスの「エージェント」と呼びま ています.これは,マザーボード上のデバイスは,必 す(図 3). 要があれば,PCI の仕様書に定義されている以外の特 ● DMA の代わりにバス・マスタ 殊な信号線を用意して,独自のバス制御を行ってもよ バスを経由したブロック・データ転送は,I/O デバ いということです.典型的な例としては,PCI バスの イスとメイン・メモリとの間で行われることが多いで 使用権を調停するためのアービトレーション・プロト しょう.この場合,データ転送の方法には大きく 3 通 コルがあります.アドイン・バス・マスタ・ボードは りの方法があります. 仕様書で規定している REQ#,GNT# を用いたプロト 1)CPU がプログラムによってデータ転送を実行する コルでしかアービトレーションに参加できません.し 2)DMA によるデータ転送 かし,バス・ブリッジなどのマザーボード上のデバイ 3)I/O デバイスがバス・マスタとしてバスを制御し, スはサイドバンド信号を使った裏取引によって特権的 直接メイン・メモリにアクセスする 1)の方法は状況によっては,簡単でかつ効果的な方 にアービトレーションに参加することが認められてい るのです. 法です.PCI バスでは,2)の DMA 転送は定義されて いません.CPU に負担をかけずにデータ転送を行う 2.2 アドイン・ボードとコネクタ ためには,3)のバス・マスタによる転送が必要となり ます. ● アドイン・ボードと形状とスロット ● ポイント・ツー・ポイント信号とサイドバンド信号 写真 1 に PCI アドイン・ボード(拡張ボード)の外観 バスというと,信号線の結線は一般に図 4 の信号線 を,図 5 にアドイン・ボードの寸法を示します.PCI A から D のようなものを想像するでしょう.もちろん バスには,データ・バス幅が 32 ビットのものと,64 PCI バスにおいてもほとんどの信号線は,これと同様 ビットのものが存在します.アドイン・ボードのカー のいわゆるバス状結線となっています.しかし,いく ドエッジ部分は,下位の 32 ビット分はどちらも共通 15 A AGP 1 3 2 54 PCI 2 写真 1 PCI アドイン・ボードの例(32 ビット) ISA 図6 共用スロットのようす のピン配置になっています. 1 またボードの形状としては,フル・サイズとショー ト・サイズ,そして高さの低いロー・プロファイルの ピッチのコンタクトを採用しています. もう一つの違いは,部品面とはんだ面の関係が ISA 寸法規定があります. PCI アドイン・ボードと ISA バスのアドイン・ボー ボードの場合と逆になっていることです.これは,共 ドとの違いの一つは,エッジ・コネクタにあります. 用スロット(Shared Slot)と呼ばれるものを実現する ISA ボードのコンタクトは 100 ミル(2.54mm)ピッチ ためです.図 6 はシステムの共用スロットの図です. です.しかし,PCI ボードのほうは 50 ミル(1.27mm) 共用スロット用の窓が A で,このスロットに ISA ボー 312 167.64 16.45 20゜ フル・サイズ 1.6 1.8 64.41 ロー・プロファイル 8.26 7.5 4.83 106.68 ショート・サイズ 0.25 15 40.77 部品面:B面 はんだ面:A面 79.14 122.32 (32ビット)(64ビット) (c)カードエッジ・コネクタ断面 (a)基板寸法 0.477 0.463 0.32 4.83 8.26 1.27 15 0.25 1.27 40.77 0.473 0.473 1.27 C1 1.27 0.318 1.27 1.27 8.26 7.5 0.25 15.44 1.85 48.26 1.85 15.44 79.14 (32ビット) 2.14 122.32 (64ビット) 単位:mm (b)カードエッジ・コネクタ部分(ユニバーサル・キー) 図 5 PCI アドイン・ボードの寸法 16 第 2 章 PCI バスの概要 ドを設置する場合には,1 の ISA コネクタに差し込み ます.また,同じスロットに PCI ボードを設置する場 合には,5 の PCI コネクタに差し込みます. 5V系システム用 アドイン・ボード (32ビット用) 5Vキー ● コネクタのピン配置 すでに説明したように,PCI アドイン・ボードのカー ドエッジ部分は,下位の 32 ビット分はどちらも共通 のピン配置になっていて,64 ビットに拡張された部 5V系システム・スロット (32ビット用) 分はスペーサ分の隙間をあけてコネクタが並ぶ形にな ります. もう一つ PCI バスには,信号線の電圧として 5V TTL 互換の 5V 系システムと,3.3V CMOS の 3.3V 系 5V/3.3V両対応 アドイン・ボード (32ビット用) ユニバーサル・キー システムの 2 種類あります.電気的にこの二つは区別 する必要があります.ちなみに最新の PCI Rev.3.0 で は 5V 系システムの規定は廃止されましたが,市場で は依然として 5V 系システムも数多く存在しているた 3.3V系システム・スロット (32ビット用) め,ここでは 5V 系システムについても解説します. 表 1 に PCI バスのピン配置を示します.5V 系システ ムと 3.3V 系システムの大きな違いは,(I/O)と書かれ たピンに,5V 系システムでは 5V,3.3V 系システムで は 3.3V の電源が供給されている点です.また,5V 系 3.3Vキー システムでは 50 番と 51 番ピンに,3.3V 系システムで 3.3V系システム用 アドイン・ボード (32ビット用) は 12 番,13 番ピンにキー・ウェイがあります.キー・ ウェイとはスロットにボードを差し込めないようにす る出っ張り部分のことで,5V 系システムを想定して 図 7 コネクタ・キーによる 5V モード/3.3V ボード共用の 仕組み 設計されたアドイン・ボードを,3.3V 系システムのマ ザーボードに差し込めないようにするためのものです. なお,クロック周波数 66MHz は,3.3V 系システム ただしアドイン・ボードの設計によっては,5V ト の場合にのみ規定されています.よって M66EN とい レラントな PCI デバイスを採用するなどして,5V 系 う信号ピンも,3.3V 系システムにしか定義されてい システムでも 3.3V 系システムでも,どちらのマザー ません. ボード上でも動作するカードを実現することもできま す.このようなアドイン・カードの場合,3.3V キー 2.3 PCI バスの信号線 と 5V キーの両方を空けておきます (図 7). 図 5 に示したアドイン・ボードのカードエッジ・コ ● 信号線の分類 ネクタ部分は,3.3V/5V 系両対応のため,3.3V キーと PCI の信号線は,その機能・目的,必須かオプショ 5V キーの両方が空いているカードということになりま ンか,信号の方向やドライバの種類によって分類する す.しかも 64 ビット対応のため,64 ビット・スペー ことができます.これらの分類を表 2 にまとめておき サの分の隙間も空いています. ます. 以上をまとめると,次のようになります. 1)コネクタは 32 ビットの基本部分と 64 ビットの拡張 部分に分けられる 2)コネクタには 5V 系システム用と 3.3V 系システム 用の 2 種類がある 3)アドイン・ボードには 5V 系システム用,3.3V 系シ ステム用とユニバーサル用の 3 種類がある ● システム信号 sCLK RST# とインタラプト線を除くすべての PCI 信号 は,CLK 信号線に同期して動作します. sRST# 電源投入時,およびシステムのリセットのときにア サート (assert ;アクティブにする) されます.RST# が 17