PCI Express - Teledyne LeCroy

PCI Expressの概要
Copyright © Lattice Semiconductor 2007
Slide Ref -1
PCIとPCI Expressの比較 – バス・アーキテクチャ
PCI Express Based
PCI Based
SDR
SDRAM
CPU
CPU
FSB
Card
Slots
Chipset
Chipset
AGP
Video
DDR1/2
SDRAM
PCI
IDE
Hard
Drive
・1つのバスを複数のデバイスで共有
・パラレルデータを転送する完全同期バス
・一度に2つのデバイス間でのみ通信(一方向のみ)
Copyright © Lattice Semiconductor 2007
Slide Ref -2
CPU
CPU
FSB
x1, x4, x8
PCI Express
Card
Slots
Chipset
Chipset
x16 PCI Express
Video
SATA
Hard
Drive
・デバイス間の接続はPeer to Peer
・シリアルデータにクロックを埋め込み送受信
・双方向通信(全二重)
PCIとPCI Expressの比較 – 内部構造
PCI Expressでは階層構造を採用。PCIよりネットワーク機器に
近いアーキテクチャ。
階層構造のメリットは、レイヤ単位でのアップグレードが容易なこと。
仕様がバージョンアップしても、変更は各レイヤ内に限られる。
Copyright © Lattice Semiconductor 2007
Slide Ref -3
PCIとPCI Expressの比較 – 送受信プロトコル
・PCIではペイロードを直接転送。コマンドタイプはC/BE信号で指示。
・PCI Expressでは、データをパケット化して転送。コマンドタイプは
パケット内に埋め込み。
PCI
PCI Express
Copyright © Lattice Semiconductor 2007
Slide Ref -4
◆ PCI Expressの概要とPCIとの違い
◆ PCIからPCI Expressへの移行の必要性およびメリット
◆ Transaction Layerの機能
◆ Data Link Layerの機能
◆ Lattice FPGAによるPCI Expressソリューション
Copyright © Lattice Semiconductor 2007
Slide Ref -5
現行のPCI規格が抱える問題点
・CPUおよびシステムが要求するバンド幅の高速化に対応できない
これまではバス幅やクロック周波数の高速化で対応。
しかし、この方法ではこれ以上はデバイスおよびボード設計が困難になる。
Copyright © Lattice Semiconductor 2007
Slide Ref -6
PCI/PCI-Xのバンド幅確保の方法
PCIおよびPCI-X規格ではバス幅を広げクロック周波数を
高めることでバンド幅を上げてきた。
PCI-X266/533ではデータフェイズをDDR/QDRにしてバンド幅を確保。
PCI-X533 Burst Write Transaction
Copyright © Lattice Semiconductor 2007
Slide Ref -7
PCI/PCI-Xのバンド幅を大きく出来ない理由
これまでの方法ではこれ以上のバンド幅を大きく出来ない。
理由1
クロックを高速にできない。これ以上周波数が高くなると、十分な Setup/Hold-timeを確保することが難しくなる。
理由2
バス幅を広げられない。これ以上バス幅を広げると、ボード上の 配線が困難になる。また各データ信号間のスキューが問題になり
低価格で高い周波数を実現することが難しい。
Copyright © Lattice Semiconductor 2007
Slide Ref -8
PCI Expressでの解決策
PCI Expressでは差動高速シリアルI/Oを使用。
・小振幅のためデータレートの高速化が容易。チャネル当たり2.5Gbps(Gen1)。
全二重(full Duplex)なので最大バンド幅はこの倍。これはPCI(64bit 66MHz)相当。
最大32チャネルまでをまとめて使用できる。
・ CDR(Clock Data Recovery)を用い、クロックを伝送しないためSetup/Hold-timeの制約 が無い。
・ チャネル間のスキューは受信側で20nsまで許容される。スキューはロジックで吸収。
・同程度のバンド幅を得るための信号線が極端に少なくなるため、配線が容易。
PCI(64bit 66MHz) : 64本(データ線のみ)
PCI Express x1 : 4本
このため、十分なバンド幅を確保でき、かつボード上の配線も容易になる。
Copyright © Lattice Semiconductor 2007
Slide Ref -9
もう一つの問題点
・デバイスの耐圧低下
プロセスの微細化が進むと3.3V動作のための耐圧確保が難しくなる。
例 : プロセッサの推奨動作電圧
Copyright © Lattice Semiconductor 2007
Slide Ref -10
PCIからPCI Expressへの移行の障害
・回路の複雑化およびゲート規模/設計工数の増大。
LatticeのFPGAでの実現例
レジスタ数 LUT数
PCI Target(64bit 66MHz) 569
1219
PCI Express x1
3727
5631
・PHYレイヤの設計/製造
SERDESは機能は単純だが、高速動作の必要があるため安定動作させる
ための設計は容易ではない。
Copyright © Lattice Semiconductor 2007
Slide Ref -11
アジェンダ
◆ PCI Expressの概要とPCIとの違い
◆ PCIからPCI Expressへの移行の必要性およびメリット
◆ Transaction Layerの機能
◆ Data Link Layerの機能
◆ Lattice FPGAによるPCI Expressソリューション
Copyright © Lattice Semiconductor 2007
Slide Ref -12
PCI Express トランザクションレイヤ概要
トランザクションレイヤの主な機能
・ソフトウエアレイヤからの要求に応じてTLP(Transaction Layer Packet)を生成。
データリンクレイヤに渡す(送信側)
・データリンクレイヤから受け取ったデータを解析し、コマンドタイプに応じてデータを
ソフトウエアレイヤに渡す(受信側)
・コンフィグレーションレジスタの管理
・バーチャル・チャネルの管理
ソフトウエアレイヤ
ペイロード
・・・・・
VC0 VC1 ・・・・・ VC7
トランザクションレイヤ
コンフィグレーションレジスタ
TLP Header内にコマンドタイプやアドレス等が格納される。
TLP
データリンクレイヤ
Copyright © Lattice Semiconductor 2007
Slide Ref -13
TLP – リクエストとコンプリージョン
・メモリやI/Oのリード/ライト処理ごとに、リクエストと処理の終了を示す
コンプリージョンの2種類がある。
・リード・リクエストに対するコンプリージョンにはリード・データが着いてくる。
・コンプリージョンを必要とするリクエストと必要としないリクエストがある。
・コンプリージョンを必要とする処理をNon-Posted、必要としない処理を
Postedという。
Copyright © Lattice Semiconductor 2007
Slide Ref -14
TLP の種類
・メモリ・トランザクション
リード・リクエストとコンプリージョン
ライト・リクエスト
・I/Oトランザクション
リード・リクエストとコンプリージョン
ライト・リクエストとコンプリージョン
・コンフィグレーション・トランザクション
リード・リクエストとコンプリージョン
ライト・リクエストとコンプリージョン
・メッセージ・トランザクション
イベントの通知 Copyright © Lattice Semiconductor 2007
Slide Ref -15
TLP ヘッダフォーマット
初めの4byteのみが各TLPで共通。
FmtおよびTypeの値で、どのようなTLPかが決まる。
ヘッダだけのTLPもある。
Copyright © Lattice Semiconductor 2007
Slide Ref -16
リクエストとコンプリージョン
リクエストTLPは、ヘッダにどのデバイスからのリスエストかを示す“Requester ID”と、
リクエスト固有の“Tag”を含む(コンプリージョンが必要ないリクエストでの処理は未定義)。
処理の完了通知であるコンプリージョンは、処理を行ったデバイスを示す“Completer ID”と
リクエスト元を示す“Requester ID”および完了させたリクエストの“Tag”を含む。
これによりリクエスタは、どのリクエストに対するコンプリージョンなのかを知ることが出来る。
リクエストTLPヘッダ
コンプリージョンTLPヘッダ
コンプリージョンは“Status”でリクエストの処理結果を通知する。
Copyright © Lattice Semiconductor 2007
Slide Ref -17
TLP のECRC
TLPヘッダの“TD”が‘1’の場合のみ、TLPの末尾4byteにCRCが付加される。
ただし、CRCの付加はオプション。
例えば、Root complexとEndpoint間の通信で、間にSwitchがあったとしても、
Switch内でこのCRCが再計算されることはない。
これによりデータの信頼性を高める。
ただし、システムとしてみた場合、このCRC分のスループットが下がる。
Copyright © Lattice Semiconductor 2007
Slide Ref -18
Virtual Channel
トランザクション・レイヤは、ソフトウエア・レイヤとのインターフェイスとして
Virtual Channel(以下VC)を持つ。
VCはVC0~VC7まで最大8つまで実装できる。デフォルトでVC0は必ず実装/使用される。
各VCごとに独立したバッファを持つ。
VCのバッファには、以下の種類がある。
PH
PD
NPH
NPD
CPLH
CPLD
: Postedリクエストのヘッダ
: Postedリクエストのデータ
: Non-Postedリクエストのヘッダ
: Non-Postedリクエストのデータ
: コンプリージョンのヘッダ
: コンプリージョンのデータ
※各VCの残りバッファ容量を確認しながら送受信が行われる(フローコントロール)。
リンクの両端で、データの送受信を行うのは同じVC。
VC0
VC1
Copyright © Lattice Semiconductor 2007
Slide Ref -19
リンク
VC0
VC1
Virtual ChannelとTraffic Class
TLPがどのVirtual Channelのパケットかは、TLP内のTC(Traffic Class)の
値で知ることが出来る。
TCは3bitで表され、TC0~TC7までがある。
TCとVCの対応は、コンフィグレーション・レジスタ(TC/VC Mapレジスタ[7:0])に設定される。
TC/VC Mapレジスタは各VCごとに用意されている。 TC/VC Mapレジスタの各bitはTC[7:0]に
対応しており‘1’が設定されたTCがそのVCに割り当てられる。
例 :
VC1のTC/VC Mapレジスタ[7:0] = “0000 1100” : VC1にTC2/TC3を割り当て
一つのVCに複数のTCを割り当てることが出来る。
一つのTCを複数のVCで使用することは出来ない。
Linkの両端で、TC/VCの対応は一致していなければならない。
VC0には必ずTC0が割り当てられる。後は任意。VC0にTC0以外を割り当てることも出来る。
Copyright © Lattice Semiconductor 2007
Slide Ref -20
割り込み
PCI Expressでは2種類の割り込みをサポート。
・MSI(Message Signaled Interrupt) -- 特殊なフォーマットによるメモリ・ライト
・INTx Emulation
-- Message TLPによる割り込み
MSIはメッセージTLPではなく、特定アドレスへのメモリライトTLP。使用されるアドレスは
コンフィグレーションレジスタに設定される。
INITx messageは、PCI/PCI-Xでのサイドバンドによる割り込みのエミュレーション。
PCI/PCI-Xとソフトウエアの互換性がある。
Message TLPヘッダ・フォーマット
Assert INTA
INTA
Copyright © Lattice Semiconductor 2007
Slide Ref -21
割り込みのメッセージ・コード
De-assert INTA
エラー・ハンドリング
PCI ExpressではエラーもMessage TLPで通知される。
エラーはいくつかに分類される。
・Correctable Error : ハードウエアで対処可能なエラー
・Uncorrectable Error : ハードウエアで対処不可能なエラー
--Non Fatal Error : パケットは破棄 / ソフトウエアでエラーリカバリ
--Fatal Error : パケットは破棄 / ソフトウエアでリセット
Copyright © Lattice Semiconductor 2007
Slide Ref -22
アジェンダ
◆ PCI Expressの概要とPCIとの違い
◆ PCIからPCI Expressへの移行の必要性およびメリット
◆ Transaction Layerの機能
◆ Data Link Layerの機能
◆ Lattice FPGAによるPCI Expressソリューション
Copyright © Lattice Semiconductor 2007
Slide Ref -23
PCI Express データリンクレイヤ概要
データリンクレイヤの主な機能
・トランザクションレイヤから受け取ったパケット(TLP)にシーケンスナンバーと
LCRCを付けてPHYレイヤに渡す(送信側)。
・PHYレイヤから受け取ったパケットのシーケンスナンバーとLCRCの確認(受信側)。
・DLLP(Data Link Layer Packet)を生成し、以下の処理を行う
・フローコントロール。
・TLPの送達確認。
・パワーマネージメント。
・リトライ(再送信)に備えてデータをバッファリング。
PHYレイヤへ データリンクレイヤでのパケット生成
Copyright © Lattice Semiconductor 2007
Slide Ref -24
送信側のTLP処理
Transactionレイヤから受け取ったTLPの先頭に12bitのシーケンス番号、
末尾に32bitのLCRCを付加して、PHYレイヤに渡す。
シーケンス番号はTLP送信ごとにインクリメントされ、送達確認およびリトライのために
必要。
Copyright © Lattice Semiconductor 2007
Slide Ref -25
受信側のTLP処理
PHYレイヤから受け取ったパケットのシーケンス番号とCRCを計算。
シーケンス番号が正しく、受信側で計算したCRCと受信したCRCが一致すれば
“ACK” DLPを生成して該当するシーケンス番号のTLPまでを正常に受信した
ことを、送信側に通知。
想定外のシーケンス番号を受信、もしくは受信したLCRCが計算したCRCと一致
しなかった場合は、“NAK”DLPを生成して、送信側に該当するTLPの再送信を
要求。 Copyright © Lattice Semiconductor 2007
Slide Ref -26
DLLPフォーマットおよび種類
DLLP(Data Link Layer Packet)は、すべて6byteで構成される。
DLLPタイプ
Copyright © Lattice Semiconductor 2007
Slide Ref -27
DLLPを使用して実現する機能(1)
送達確認
TLPの受信側が、正常に受信できたTLPおよび正常に受信できなかったTLPの
シーケンス番号を専用のDLPで送信側に通知する。
正常に受信できなかったTLPは再送される。
一定時間内に正常に受信できたことが通知されなかったTLPは再送される。
Copyright © Lattice Semiconductor 2007
Slide Ref -28
送達確認のためのDLLP(1) -- Ack
Ack
“Ack”はTLPを正常に受信できたことを示すDLLP.
“Ack”DLPはシーケンス番号を含み、これはシーケンス番号のTLPまでが正常に
受信されたことを表す。
TLPごとにAckを送信する必要は無い。受信したAckに含まれるシーケンス番号のまでの
すべてのTLPが正常に受信されたことを表す。ただし、ためすぎると送信側がタイムアウトを
起こし、自動的に再送信を始める。
リトライ・バッファ
7
6
5
4
3
Ack
5
Copyright © Lattice Semiconductor 2007
Slide Ref -29
Ack/Nak
Generatot
3
4
5
OK
OK
OK
送達確認のためのDLLP(2) -- Nak
Nak
“Nak”は正常に受信できなかったTLPがあることを示すDLLP.
“Nak”DLPはシーケンス番号を含み、これはシーケンス番号のTLPまでが正常に
受信され、次のTLPが正常に受信できなかったことを表す。
Nakを受信したTLPの送信側デバイスは、Nakのシーケンス番号以降のTLPを
再送信。
リトライ・バッファ
7
6
5
4
3
Nak
5
TLP6/7が再送信される
Copyright © Lattice Semiconductor 2007
Slide Ref -30
Ack/Nak
Generatot
3
4
5
6
OK
OK
OK
NG
DLLPを使用して実現する機能(2)
フロー・コントロール
PCI Expressでは、事前に受信側バッファの空き容量を確認し、
十分な空き容量が確保できている場合のみ、パケットを送信する。
フローコントロールはV.C.ごとに行われる。
フローコントロールは、ヘッダ/データ別々に行われる。
フローコントロールは、TLPタイプ(Posted, Non-posted, Completion)ごとに行われる。
空き容量の確認は、専用のDLLPで行われる。
Copyright © Lattice Semiconductor 2007
Slide Ref -31
フロー・コントロールの必要性
一般的には、“とりあえず送っておいて受信側で問題が発生したら再送要求する“
方法がとられている。事前確認はオーバーヘッドが生じる。
ではなぜPCI Expressでは事前確認をおこなうのか?
PCI Expressでは複数V.C.の実装を前提にしている。あるV.C.から問題が発生するかも
しれないパケットを送信するより、確実に送受信できる他のV.C.からのパケットを送信した
方が、システムとしてみたオーバーヘッドは小さくなる。
Copyright © Lattice Semiconductor 2007
Slide Ref -32
フロー・コントロールのためのDLLP
フローコントロール用DLLPフォーマット
Hdr FC/Data FCの値から、バッファがどれくらい余っているかを知ることが出来る。
下位3bitはV.C.を表す
Copyright © Lattice Semiconductor 2007
Slide Ref -33
フロー・コントロール用DLLPの使用方法
クレジット値情報初期化
InitFC1-*/InitFC2-*を使用。
リセット解除後に必ずV.C.0の初期化を行う。
V.C.[7:1]はソフトウエアからイネーブル設定された場合に初期化。
初期化手順
・まずInitFC1を双方で送受信。
・受信したInitFC1内のクレジット値を内部のクレジットカウンタにセットしたら
InitFC2を送信。
・双方がInitFC2を送受信したら初期化完了。
クレジット値のアップデート
UpdateFC-*を使用。
クレジット値が更新(TLPを受信)され次第、可能な限り早く送信する。
※ InitFC*およびUpdate*は-P/-NP/-Cplが必ず1セット。
Copyright © Lattice Semiconductor 2007
Slide Ref -34
アジェンダ
◆ PCI Expressの概要とPCIとの違い
◆ PCIからPCI Expressへの移行の必要性およびメリット
◆ Transaction Layerの機能
◆ Data Link Layerの機能
◆ Lattice FPGAによるPCI Expressソリューション
Copyright © Lattice Semiconductor 2007
Slide Ref -35
LatticeECP2Mのご紹介
•
•
•
•
•
•
•
低コスト、LUT ベースの FPGA
– 19K~ 95K LUT4
– 144 ~ 601 ユーザーI/O
TM
自由度の高い sysIO バッファ
– LVCMOS 33/25/18/15/12, PCI
– SSTL3/2/18、HSTL15、HSTL18
– Bus-LVDS, MLVDS, LVPECL & LVDS
TM
sysDSP 高性能 演算回路
– 24 ~ 168 個の 18x18 乗算器
TM
sysMEM ブロックメモリ容量
– 1.2Mb ~ 5.3Mb
TM
sysCLOCK PLL と DLL
コンフィグレーション対応を充実
– SPIフラッシュメモリのサポート
– デュアルブート機能をサポート
組み込み SERDES
– 最大 16 channels
– 270Mbps~3.4Gbpsまでをサポート
Copyright © Lattice Semiconductor 2007
Slide Ref -36
LatticeECP2Mファミリ ラインアップ
ECP2M
機能
LUT 数 (K)
18x18 乗算器数
分散メモリ (Kbits)
EBR メモリ ブロック数
EBR メモリ総サイズ (Kbits)
PLL数 / DLL数
20
19
24
41
66
1217
35
34
32
71
114
2101
50
48
88
101
225
4147
70
67
96
145
246
4534
100
95
168
202
288
5308
8/2
8/2
8/2
SERDES/IO
8/2
8/2
4/301
4/411
4/287
8/387
8/457
16/449
16/457
パッケージ
256-ball fpBGA (17x17mm)
484-ball fpBGA (23x23mm)
672-ball fpBGA (27x27mm)
900-ball fpBGA (31x31mm)
1156-ball fpBGA (35x35mm)
Copyright © Lattice Semiconductor 2007
Slide Ref -37
4/144
4/301
16/601
LatticeECP2M SERDESの特徴
Jitter特性 (PRBS 27-1で測定)
・Tx Jitter : 0.24UI (Typical @ 2.5 Gbps)
・Rx Jitter耐性 : 0.8UI (Typical @ 2.5Gbps)
低消費電力
・ チャネル当り90mW (Typical @ 2.5Gbps)
送信プリエンファシス機能(デエンファシスと等価)
・4段階設定(0%, 16%, 32%, 48%)
受信イコライザ機能
・3段階設定(short, medium, long)
レシーバ検出機能内蔵
Copyright © Lattice Semiconductor 2007
Slide Ref -38
内蔵PCSでのPCI Express PHYレイヤサポート
ハードウエアでサポートされる機能
・シリアライザ / デシリアライザ
・極性選択
・8B10Bエンコード/デコード
・クロックトレランス(SKIPオーダーセットの処理)
Copyright © Lattice Semiconductor 2007
Slide Ref -39
Thank You!
より詳細な情報などは下記を参照下さい
– 弊社ホームページ…
• http://www.latticesemi.co.jp
Copyright © Lattice Semiconductor 2007
Slide Ref -40
Copyright © Lattice Semiconductor 2007
Slide Ref -41
Copyright © Lattice Semiconductor 2007
Slide Ref -42
Copyright © Lattice Semiconductor 2007
Slide Ref -43