PCIeの話/PCIe-20150606
by
wataken44
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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