美文网首页
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