PCIeの話/PCIe-20150606
by
wataken44
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
PCIeの話 2015-06-06 wataken44
Slide 2
Slide 2 text
自己紹介 所属 某電機メーカDMM.comラボ one of ツチノコブログの中の人 仕事内容 LSIとかクラウドとか ID twitter.com/wataken44 2
Slide 3
Slide 3 text
Agenda 1. イントロ 2. 周辺事情 3. PCI 4. PCIe 3
Slide 4
Slide 4 text
1-1. PCIって何? 辞書的な意味 Peripheral Component Interconnect =周辺機器の相互接続 仕様としてのPCIの話は後述 PCI-DSSの話は無し Payment Card Industry Data Security Standard 柚子胡椒の話も無し google: PCI柚子胡椒 4 https://twitter.com/yojiro/status/607065492969263104
Slide 5
Slide 5 text
1-2. PCI Express(PCIe)って何? 周辺機器の相互接続のための仕様 Point-to-PointなLink シリアルIO etc., 「PCIeのデバイス」=「PCIe仕様に準拠したデバイス」 5
Slide 6
Slide 6 text
2-1. PCI-SIG PCI-SIG: PCI仕様や関連仕様を策定している業界団体 https://www.pcisig.com/membership/about_us/ 800社程度の参加 9人のBoard of Directors PCI-SIGの役割 仕様の策定 カンファレンスの開催 Vendor ID(2byte)の割り当て https://pci-ids.ucw.cz/v2.2/pci.ids Intel:0x8086 IBM: 0x1014 6
Slide 7
Slide 7 text
2-2. 歴史 PCI Expressに至るまで色々な規格がありました ISA PCI PCI-X AGP PCI Express 詳細は割愛 PCIからPCIeに至る話は後述 7
Slide 8
Slide 8 text
3-1. 従来のPCI 周辺機器の相互接続のための仕様 バスアーキテクチャ パラレルIO 8 CC BY 2.5 http://en.wikipedia.org/wiki/Conventional_PCI#/media/File:32-bit_PCI_card.JPG
Slide 9
Slide 9 text
3-2. バスアーキテクチャ 1つの信号路に複数(3~)個のデバイスが接続されていること 例: I2Cバス PCIバス Bus Master Bus Slave Bus Slave Bus Slave Bus Master 9 Bus
Slide 10
Slide 10 text
3-3. PCIの限界 データ転送速度を伸ばせなかった(64bit*66MHz=533MB/s) バスアーキテクチャ: 電気的なノイズが発生しやすい パラレルIO: skewが発生しやすい Bus Masterの出力 Bus Slaveの入力 CLK Data[0] Data[1] Data[n-2] Data[n-1] 信号路を 通過 10
Slide 11
Slide 11 text
4-1. PCI Express概要 周辺機器の相互接続のための仕様 バスアーキテクチャ Point-to-PointなLink パラレルIO シリアルIO ソフトウェアはPCIと互換性を保持 2002年 Intelが開発していた3GIOを標準化 複数の仕様が存在 PCI Express Base Specification 今日の話はこれ PCI Express Card Electromechanical Specification etc., 11
Slide 12
Slide 12 text
4-2. Point-to-PointなLink 1対1で対向のComponentと通信 電気的に安定 N個のComponentと通信する時は、N本のLink 1本のLinkは複数(x32, x16, x8, x4, x2, x1)のLaneからなる 12 Component Component Link Component Lane
Slide 13
Slide 13 text
4-3. シリアルI/O 送信時にクロックとデータを混ぜる 受信時にクロックとデータを分離する skewに対処 8b/10b変換(Gen1, Gen2), 128b/130b変換(Gen3) 13 CLK Data[0] Data[n-1] 8cycle Lane 0 Lane n-1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 10cycle serialize deserialize
Slide 14
Slide 14 text
4-4. Linkの帯域 Linkの帯域 = Lane数 * Laneあたりの帯域 Lane数は前述 Laneあたりの帯域 14 世代 Signaling rate エンコード 帯域 Gen1 2.5 GT/s 8b/10b 2 Gbps Gen2 5.0 GT/s 8b/10b 4 Gbps Gen3 8.0 GT/s 128b/130b 7.88 Gbps ≒ 8 Gbps Gen4(策定中) 16.0 GT/s ? 128b/130b ? 15.8 Gbps ≒ 16 Gbps
Slide 15
Slide 15 text
4-5. Componentとトポロジ PCIeの主要Componentは3つ Root Complex : CPUとIOの接続 Switch : PCI bridgeの集合体(省略) Endpoint : いわゆるIOデバイス Root Complexを頂点としたツリー 15 Root Complex Switch Endpoint Endpoint Endpoint CPU Link
Slide 16
Slide 16 text
4-6. レイヤ Transaction Layer Read/WriteやErrorなどのパケット(TLP) 各種レジスタ Data Link Layer: Linkの状態管理やデータのintegrity check Physical Layer: 電気的な部分 + α 16 Physical Layer Data Link Layer Transaction Layer Physical Layer Data Link Layer Transaction Layer Component Component Link
Slide 17
Slide 17 text
4-7. アドレスの種類とレジスタ Configuration PCIe仕様で定義されているレジスタ OSがPCIeの機能を管理するためのレジスタ群はこっち Memory デバイスごとにデザインされる、いわゆるMMIOレジスタ NICなどの機能を実現するためのレジスタ群はこっち I/O 互換性のため残っている 17
Slide 18
Slide 18 text
4-8. Transaction Layer Packet(TLP) CfgRd0/CfgWr0/CfgRd1/CfgWr1 Configuration空間を読み書きするTLP lspciすると発行されるのがCfgRd0/1 MRd/MWr/MRd64/MWr64 Memory空間を読み書きするTLP IORd/IOWr IO空間を読み書きするTLP Message Errorなど特殊なイベントを通知するためのTLP Cpl/CplD IOXX/CfgXX/MRdに対する応答 18
Slide 19
Slide 19 text
おしまい 今日話してないことがたくさん! Bus, Dev, Func パケットのフォーマット・ルーティング システム的なうごき 初期化 Configuration Register lspci の読み方、くらいまでいきたかった・・・ 入らなかった 19