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
网友评论