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