理論グループのミーティングの報告
日時:97/05/13
場所:斉藤理一郎助教授教官室西5-517
PCIバスの動作原理(グェンが説明しました)
PCI(Peripheral Component Interconnect)バスはもともとマザーボード上のLSIを
相互に接続するために考えられたシステム内部のバスです。データ転送は基本的に
イニシエータ(Initiator)とターゲット(Target)の間で行なわれます。バスの使用権を
得たイニシエータは転送方向(リードかまたはライト)を指定し、コマンド、アドレス
等を出力し、相手のターゲットを指定します。ターゲットがこれらの情報をデコード
した結果、自分がターゲットとして指定されたと判断し、データ転送に参加します。
PCIバスの基本的なプロトコル
(PCIバスの特徴、各信号線等はこちらを参照して下さい
アービトレーション
PCI上の各デバイスからセントラルアービタに2本の信号線 REQ#とGNT#が継っています。
バスを使用したいデバイスが自分とセントラルアービタの間のREQ#をアクティブにし、
バスの使用権を要求します。各デバイスからのREQ#を受け取ったセントラルアービタは
独自のアルゴリズム(このアルゴリズムは特に規定されていません)に基づいてどのデバ
イスにバスの使用を許可するか決定し、そのデバイスのGNT#をアクティブにします。
データ転送
リードサイクル
/home2/students/nguyen/tex/pict/pcibus/rcycle.xfigを参照
- 使用権を得たイニシエータがFRAME#をactiveにし、バスサイクルを開始します。
- イニシエータがアドレスをアドレス/データバスAD[31〜0]に,コマンドをC/BE[3〜0]に出力します。
- イニシエータが出力した情報をデコードし、自分がターゲットとして指定されたと
判断したデバイスがDEVSEL#をアクティブに駆動し応答ます。
- クロック2でアドレスフェーズが終了します。以後、アドレスバスの駆動はイニシエ
ータからターゲットに移るので、ここでドライバ衝突を避けるために1クロック(turn
around clock) が余分に入ります。
- データを準備できた時、ターゲットがデータをアドレス・データバスに出力する
と同時にTRDY#をアクティブにします。この時、イニシエータがデータを受け取る状態に
ある場合は、IRDY#をアクティブにしてデータを受け取り、バスが次のデータフェーズ
に入ります。TRDY#とIRDY#のいずれか1つでもアクティブでない場合はそのフェーズ
はウェトサイクルと見なされ、データが転送されずターゲットによって保持され続けま
す。また、データフェーズの全期間に渡って、イニシエータはC/BE[3〜0]にbyte enable
情報を出力し、使用するデータバスのバイト・レーンを指定します。1つのデータフェーズが
終わるとメモリアドレスが自動的に4つ(32ビット転送の場合)加算されます。
- バスサイクルを終了する前に、イニシエータがFLAME#をインアクティブにします。
FLAME#がインアクティブの状態で実行されるデータフェーズがそのバスサイクルの最後
のデータフェーズとなります。このデータフェーズが終るとイニシエータがIRDY#を、
ターゲットがTRDY#をインアクティブにし、バスを開放します。
-
ライトサイクル
-
アドレス・データバスが全期間に渡ってイニシエータによって駆動されるので turn
around clock がない点を除けば、リードサイクルと同じです。
バスサイクルの終了
上記の通常の終了の他にいくつかの例外があります。
- マスタアボート
-
TRDY#が規定された時間以内にアクティブされない場合です。
- タイムアウト
-
1つのイニシエータがバスを占有しないように、一定の時間が経過した時、まだ転送すべ
きデータが残っても一旦バスを開放しなければなりません。
- ターゲットアボート
-
ターゲットが要求されたデータ転送を行なえない場合です。
- etc
コンフィギュレーション
PCIバス上のすべてのデバイスには256バイトのコンフィギュレーション空間がありま
す。その内、先頭の64バイトのフォーマットはコンフィギュレーション空間のヘッダ
として定義されています。残りの192バイトはデバイス固有で、自由に使えます。
ヘッダには、ソフトウェアで製造メーカ、デバイスの種別などを識別できるように、
ベンダID、デバイスID、バージョンID等を表すレジスタが割り当てられます(これら
のID番号は PCI SIG (PCI Special Interested Group)という組織が発行します)。更に、システムによって割り当てられるアドレスや割り込みなどを記憶するためのレジスタもあります。
RST#がアクティブになるとコンフィギュレーションサイクルが開始されます(通常、
RST#はシステムのホストバス(CPUのバス)とPCIを接続するブリッジ回路がドライブしま
す)。リード/ライトサイクルと同じように設定用のデータがそれぞれのデバイスに
リード/ライトされます。ここで、どのデバイスが対象のターゲットになるか指定する
ためにIDSEL#が使われます。
参考:
-
PCIバス関連のホームページ
- http://www.pcisig.com
メモリチップとGL,GSなどの配置(松尾が説明しました)
- SIMM,EDO DRAM,SDRAM
-
ページモード:連続なメモリ領域に対してデータを読み出し/書き込みすること
により転送速度を上げる。このモードは、アドレスビットを上位と下位のビットグルー
プに分け、最初の転送フェーズで上位(ROW)をメモリチップに送り、以後のフェーズ
で下位(COL)を変えながら、データを転送する。
-
DRAM :プリチャージ時間が長いため転送速度には限界がある。
-
EDO RAM: プリチャージ時間を緩和することにより速度を上げる。
-
SDRAM: データの転送をクロックに同期させる。バーストモードでは、1つのデータフェーズで複数のデータを転送すること
により速度を上げる。
- GL,GSなどの配置
-
配置図は /home2/student/ryouma/tex/chip-layout.fig にある。
バージョンに比べて、以下のような変更がある。
各GSにメモリを持たせ、計算する行列の列ベクトルを分けてそれぞれのメモリ
に入れる。GL は各GSの計算に必要な共通のデータを保存するための比較的小さいメモリ
を持つ。GSは主にベクトルの内積などの計算を実行し、GLは各GSの計算結果を集めたり
、比較的回数の少ない計算を行なう。各GSが並行に計算を行なえるため計算時間は大幅
に短縮できる(計算時間はほぼGSの数に反比例すると考えて良い)。
戻る