PCIeの話/PCIe-20150606

3d064dadf6c4e5025252c693d094c4dc?s=47 wataken44
June 06, 2015
1.1k

 PCIeの話/PCIe-20150606

20150606 Kernel/VM用資料 /

3d064dadf6c4e5025252c693d094c4dc?s=128

wataken44

June 06, 2015
Tweet

Transcript

  1. PCIeの話 2015-06-06 wataken44

  2. 自己紹介 所属 某電機メーカDMM.comラボ one of ツチノコブログの中の人 仕事内容 LSIとかクラウドとか ID twitter.com/wataken44

    2
  3. Agenda 1. イントロ 2. 周辺事情 3. PCI 4. PCIe 3

  4. 1-1. PCIって何? 辞書的な意味 Peripheral Component Interconnect =周辺機器の相互接続 仕様としてのPCIの話は後述 PCI-DSSの話は無し Payment

    Card Industry Data Security Standard 柚子胡椒の話も無し google: PCI柚子胡椒 4 https://twitter.com/yojiro/status/607065492969263104
  5. 1-2. PCI Express(PCIe)って何? 周辺機器の相互接続のための仕様 Point-to-PointなLink シリアルIO etc., 「PCIeのデバイス」=「PCIe仕様に準拠したデバイス」 5

  6. 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
  7. 2-2. 歴史 PCI Expressに至るまで色々な規格がありました ISA PCI PCI-X AGP PCI Express

    詳細は割愛 PCIからPCIeに至る話は後述 7
  8. 3-1. 従来のPCI 周辺機器の相互接続のための仕様 バスアーキテクチャ パラレルIO 8 CC BY 2.5 http://en.wikipedia.org/wiki/Conventional_PCI#/media/File:32-bit_PCI_card.JPG

  9. 3-2. バスアーキテクチャ 1つの信号路に複数(3~)個のデバイスが接続されていること 例: I2Cバス PCIバス Bus Master Bus Slave

    Bus Slave Bus Slave Bus Master 9 Bus
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 4-7. アドレスの種類とレジスタ Configuration PCIe仕様で定義されているレジスタ OSがPCIeの機能を管理するためのレジスタ群はこっち Memory デバイスごとにデザインされる、いわゆるMMIOレジスタ NICなどの機能を実現するためのレジスタ群はこっち I/O 互換性のため残っている

    17
  18. 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
  19. おしまい 今日話してないことがたくさん! Bus, Dev, Func パケットのフォーマット・ルーティング システム的なうごき 初期化 Configuration Register

    lspci の読み方、くらいまでいきたかった・・・ 入らなかった 19