美文网首页
PCIe Overveiw

PCIe Overveiw

作者: 1哥 | 来源:发表于2023-06-22 01:37 被阅读0次

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

相关文章

网友评论

      本文标题:PCIe Overveiw

      本文链接:https://www.haomeiwen.com/subject/tfiahrtx.html