Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PCIeの話/PCIe-20150606
Search
wataken44
June 06, 2015
1
1.5k
PCIeの話/PCIe-20150606
20150606 Kernel/VM用資料 /
wataken44
June 06, 2015
Tweet
Share
More Decks by wataken44
See All by wataken44
Hyper-Vを使おー/Hyper-V
wataken44
0
150
Featured
See All Featured
Faster Mobile Websites
deanohume
305
30k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
A better future with KSS
kneath
238
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Navigating Team Friction
lara
183
15k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
How GitHub (no longer) Works
holman
311
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Scaling GitHub
holman
458
140k
The Cult of Friendly URLs
andyhume
78
6.1k
For a Future-Friendly Web
brad_frost
175
9.4k
Transcript
PCIeの話 2015-06-06 wataken44
自己紹介 所属 某電機メーカDMM.comラボ one of ツチノコブログの中の人 仕事内容 LSIとかクラウドとか ID twitter.com/wataken44
2
Agenda 1. イントロ 2. 周辺事情 3. PCI 4. PCIe 3
1-1. PCIって何? 辞書的な意味 Peripheral Component Interconnect =周辺機器の相互接続 仕様としてのPCIの話は後述 PCI-DSSの話は無し Payment
Card Industry Data Security Standard 柚子胡椒の話も無し google: PCI柚子胡椒 4 https://twitter.com/yojiro/status/607065492969263104
1-2. PCI Express(PCIe)って何? 周辺機器の相互接続のための仕様 Point-to-PointなLink シリアルIO etc., 「PCIeのデバイス」=「PCIe仕様に準拠したデバイス」 5
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
2-2. 歴史 PCI Expressに至るまで色々な規格がありました ISA PCI PCI-X AGP PCI Express
詳細は割愛 PCIからPCIeに至る話は後述 7
3-1. 従来のPCI 周辺機器の相互接続のための仕様 バスアーキテクチャ パラレルIO 8 CC BY 2.5 http://en.wikipedia.org/wiki/Conventional_PCI#/media/File:32-bit_PCI_card.JPG
3-2. バスアーキテクチャ 1つの信号路に複数(3~)個のデバイスが接続されていること 例: I2Cバス PCIバス Bus Master Bus Slave
Bus Slave Bus Slave Bus Master 9 Bus
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
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
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
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
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
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
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
4-7. アドレスの種類とレジスタ Configuration PCIe仕様で定義されているレジスタ OSがPCIeの機能を管理するためのレジスタ群はこっち Memory デバイスごとにデザインされる、いわゆるMMIOレジスタ NICなどの機能を実現するためのレジスタ群はこっち I/O 互換性のため残っている
17
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
おしまい 今日話してないことがたくさん! Bus, Dev, Func パケットのフォーマット・ルーティング システム的なうごき 初期化 Configuration Register
lspci の読み方、くらいまでいきたかった・・・ 入らなかった 19