PCIe Overveiw

PCIe Overveiw

1. Background

1.1 PCI (1992/1993)

提供一种处理器连接IO外设的方案
并行接口

革命性的变化

(1) 配置空间-允许软件可以获取device 需要的memory 和IO 空间,并为对应的设备分配空间地址空间以保证地址之间不冲突
(2) 前所未有的带宽
32bit/33MHz -- 133MB/s
64bit/66MHz --533MB/s
(3) bus master

进化的变化

BIOS 映射devices, OS boot 启动运行不需要知道PCI
PCI-aware OS
PCI 2.1 带宽double, 66MHZ mode

1.2 PCI-X (1999)

革命性的变化

(1) 前所未有的带宽
64bit/133MHz --1066MB/s
(2) bus protocol
(3) 引入split transactions
(4) 要求MSI

进化的变化

(1)硬件和软件层面兼容PCI
(2)PCI-X 2.0(2003) 带宽double
PCI-X 266 条件下2133MB/s
PCI-X 533 条件下4266MB/s

1.3 PCI express (2002)

革命性的变化

(1) 前所未有的带宽
x1:高达1GB/s in EACH direction
x16:高达16GB/s in EACH direction
(2) 与pci,pci-x 并行接口不同,串行总线架构,Relaxed 电子信号
点对点,低电压,双工

进化的变化

(1)兼容PCI软件
配置空间,电源管理等等
感知pcie的OS 可以获得更多功能
(2) Transaction layer
(3) 系统拓扑匹配PCI/PCI-X
(4)PCIe 2.0(2006) per-lane 带宽double: 250MB/s - 500MB/s
(5)PCIe 3.0(2010) per-lane 带宽double: 1GB/s/lane
Pcie 4.0 达到2GB/s/lane!

2. PCI 概念

2.1 地址空间

PCI Memory 地址空间

映射到CPU语义的memory 空间
32bits 地址空间
64 bits 地址空间(dual-Address cycles)
burstable

PCI IO地址空间

映射到CPU语义的memory 空间
32bit 地址空间
Non-burstable

配置空间

(0) x86 CPU通过IO 0xCF8 地址寄存器(指定BDF和配置空间DW),0xCFB 数据寄存器间接访问配置空间(PCIe 将配置空间映射到memory 地址空间),提供的一种标准的方式来查看和控制device 的memory 和 IO 资源。
image.png
(1) BDF(bus/device/function)构建层级地址(pcie 3.0 称之为路由ID)

function 允许一个物理设备 有多个逻辑独立的单元
pci/pcix 使用bridges 构建层级结构
pcie 使用switches 构建层级结果- 类似pci-pci bridges

(2)Type 0 / Type 1 配置cycle

type 0 -- 对应同一总线


image.png

type 1 -- 对于另一总线


image.png
(3) 设备ID

VendorID - DeviceID
Subsystem VendorID - Subsystem DeviceID

地址解码控制

软件读写BARs 以确定要求的size 并映射到合适的host 空
使能 Memory , IO , 和 Bus master

配置空间-capabilities List

capabilities 通过链表结构连接
沿着链表确定所有feature
feature 包含:PCI-X, Pcie, PCI power management


image.png
配置空间-extended capabilities List

extended capabilities List (Pcie Only) 也是 链表结构
第一个entry 总是在0x100h


image.png
PCI 数据传输的三种Transaction mode 模型

数据传输的双方,发起者Initiator 亦为bus master,另一方为target.
(1)Programmed IO
cpu负责数据传输 target <--->register <--> memory
(2)DMA
DMA engine 负责数据传输 target <--> memory
(3)peer-to-peer
DMA engine 负责数据传输 peer device<--> peer device


image.png
Interrupts

PCI 引入 INTA#,INTB#,INTC#,INTD# -统称为INTx
电平敏感
将device 和CPU interrupt 解耦
系统通过控制INTx-CPU 直接的中断mapping
配置寄存器
-- report A/B/C/D
-- CPU中断号
PCIe 通过虚拟线Messages 模仿 INA
Assert_INTx message and Deassert_INTx message

MSI - MSI- X

使用Memory Write 代替以前的中断语义
(1)一旦MSI or MSI-X enable, 则PCI/PCI-X 不asset INTA/B/C/D,Pcie 不 send Assert_INTx messages.
(2)MSI 使用一个地址,和 一个可变的数值来指示哪个vector 在assert
(3)MSI-X 使用一个table 的独立地址和数值标识每个vector

Split Transactions
image.png

(1)PCI command 不包含length 信息
bus 允许 disconnects 和 retries
target device数据管理困难
writes 使得buffers 溢出
read 需要prefetch, prefetch 多少,什么时候discard
(2)PCI command 不包含initiator 信息
无法让target device和 initiator 通信
peer-to-peer 需要知道系统分配的地址
(3)PCI- X command 增加length 和 initiator 信息(Routing ID)
writes: 允许target device分配buffers
read: 允许prefetch
(4)PCI- X 在retry 和disconnect 基础上增加 split


image.png

3.Pcie 概念

3.1. pcie特征

(1)双工,点对点, 串行连接的用于连接外设的高速接口
(2)可扩展的Link widths: x1,x2,x4,x8,x16
Link widths: the number of lanes
一个 lane: 包含2 pair of wires, 一对差分信号线用于Tx,一对用于Rx


image.png

a link with link width 4 lane.


image.png

(3)可扩展的Link speeds: 2.5, 5.0, 8.0GT/, 16GT/s
(4)基于Packet Based Transaction 协议,传输信息
image.png

PCIe 带宽
image.png

额外的features

error handle

DLLP layer - LCRC
DLL layer - ACK/NAK
TL layer -ECRC

Credit-based Flow control
MSI/MSI-X 中断处理

3.2 Four types of TLP Transaction Types

(1)Mem Rd, Mem Wr 用于传输数据Memory位置-- 地址路由
(2)IO Rd, IO Wr 用于传输数据到一个IO 位置,局限于传统的EP设备使用 -- 地址路由
(3)Config Rd, Config Wr 用于4K pcie 配置空间discover devices capabilities, program features, check status -- ID 路由
(4)Messages 像posted writes 那样处理,用于event 发送信号,通用的发消息

3.3 三种Packet 路由方式

地址路由 -- Memory/IO request 使用地址路由
ID 路由 -- completions 和 Configuration 使用 ID 利用
隐式路由 --Messages 使用隐式路由

3.4 PCIe 分层结构

image.png
image.png

(1)physical layer
可扩展的speed
Gen 1: 2.5GT/s
Gen 2: 5.0GT/s
Gen 3: 8.0GT/s
Gen 4: 16GT/s
可扩展的link 宽度
x1,x4,x8,x16
编码:8b/10b Gen1/2; 128b/130b for Gen 3


image.png

image.png

(2) Data link layer
主要功能:保证一个link 上的TLP的可靠传输
其次:link training,Power management,Track and report link state to transaction layer
ACK/NAK packets 点对点


image.png

Flow Contril packets (FC)
(3)Transaction layer
主要功能:组装TLP

3.5 function 和 configuration space

(1)function --配置空间中的可寻址实体


image.png

(2)Type 0 / Type 1 function


image.png

(3)Function Config. Space Registers


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容