0
PCIe的官网是: www.pci-sig.com
1 introduction
Tx和Rx都是由一对差分信号组成的。
Lane : 1个Tx加1个Rx组成1 Lane。
Link : 两个组建之间的连接叫做Link,可能包含1 Lane或者多个Lane。
Link支持的Lane数量有 : x1, x2, x4, x8, x16, x32
拓扑结构: 以RC为中心。 RC可以与EP连接,可以与Switch连接,还可以连接Bridge。
RC的作用:
configuration请求总是从RC发起。
EP的作用:
- 响应配置请求。
- 响应IO请求。
- 响应Memory请求。
- 发起Memory请求。
根据行为要求的不同,EP分三类:
- Legacy EP
- PCIe EP
- RC Integrated EP
Switch
Switch类似于多个Bridge的结合体。
两种配置模式:
- PCI compitable
- PCI express enhanced
协议分层:
PCIe协议分为三层
* Transaction Layer
* Data Link Layer
* Physical Layer
Physical层又分为:
* Logical sub-block
* Electrical sub-block
最上层是Transaction Layer。 Transaction Layer使用的数据结构是TLP(Transaction Layer Packet)。 Transaction Layer的主要职责就是组装和拆解TLP。
TLP支持4种地址类型的请求:
- Configuration
- I/O
- Memory
- Message
Transaction Layer支持4种地址空间,对应地,也是: - Memory
- I/O
- Configuration
- Message
中间层是Data Link Layer。
Data Link Layer使用的数据结构是DLLP (Data LInk Layer Packet)。
2 transaction layer
Transaction Layer的作用
- 处理TLP
- Flow Control
- Virtual Channel管理
Transaction Layer使用4种Address spaces:
- memory
- IO
- configuration
- Message
前面3种都分别包括read和write。 Message类型的请求不区分read、write。
在读协议过程中有requester、completer两个感念,分别表示一个请求的发起者和响应者。
TLP的组成有以下几个部分,依次为:
- TLP prefixes
- TLP header
- TLP payload
- TLP digest
其中TLP prefixes是可选的。实际上,特殊的场景才需要TLP prefix。
TLP Header的第一个字节包含Type和Format。 Type占0~4 bit, Format占5~7 bit 。
因Type和Format的不同,TLP Header后面的内容也不尽相同。
TD : Transaction Descripter
TD实际是TLP Header中的4~7字节。包含三部分内容:
* Transaction ID
* Attrributes
* Traffic Class
其中Transaction ID又由Requester ID和Tag组成。
Memory、I/O、Configuration 传输有相似之处。
他们的TD都包含Requester ID、Tag、Last DW BE、1st DW BE。
TLP Header中TD的后面是Address。
Mesage与前面几种传输不同,它的TLP Header中的TD中不包含Last DW BE、1st DW BE,而是包含了Message Code。另外Message 的TLP Header中不包含Address。
根据Messages Code不同,有如下几种Message:
* INTx interrupt signalling(A, B, C, D)
* Power Management
* Error Signalling
* Locked Transation
* Slot Power Limit Support
* Vendor-defined Messages (VDM)
* LTR Messages (Latency Tolerance Reporttings)
* OBFF Messages (optimized buffer flush/fill)
* DRS Messages
* FRS Messages
* PTM Messages (precison time messurement)
TLP Prefixes:
有2种:
- Local —— 与MR-IOV有关
- End to End
关于Vritual channel:
* VC: Virtual Channel
* TC: Traffic Class
TC就是TD中的那个Traffic Class。 TLP中会根据TC的不同而进行不同的处理,具体怎么处理还不太清楚。
不同的TC有不同的优先级, TC0的优先级最高。TC1~7优先级按照Weighted Round-Robin进行仲裁。
VC会映射到TC上,VC0会固定映射到TC0上, VC1~7与TC的映射是软件配置的。
不同的VC有独立的资源,包括队列、buffer、控制逻辑等。
3 Data Link Layer
Data Link Control
* DL_Inactive
* DL_Init
* DL_Active
* DL_Down
* DL_Up
DLLP:
* Data Link Layer Packets
* ACK
* NAK
* InitFC1, InitFC2, UpdataFC
4 Physical Layer
2.5GT/s – 8b/10b encoding
8GT/s – 128/130b encoding
LTSSM (Link Training and Status State Machine):
* Detect
* Polling
* Configuration
* Recovery
* L0
* L0s
* L1
* L2
* Disable
* Loopback
* Hot Reset
5 Power Management
低功耗状态有如下几种。
- L0
- L0s
- L1
- L1.1
- L1.2
- L2
- L3
其中L3是需要软件处理的,其余都完全由硬件处理。
在PCIe协议的4.2.6节有一个状态机图。
PME: Power Management Event
这是一种Message,是Message类型的TLP, 用于协商功耗管理。
ASPM: Active State Power Management
前面L0 ~ L3是指Link状态, 设备有自己的状态。
Device power management states:
D0, D1, D2, D3
6 System Architecture
待补充。
7 System
PCIe支持2种配置机制:
- CAM: Configuration Access Mechanism
- ECAM: Enhanced Configuration Access Mechanism
PCIe的配置空间4096字节。 其中0~255字节是PCI Configuration Space。 0x100 ~ 0xFFF是PCIe Configuration Space。
不同的设备地址空间不同, RC、EP分别有自己的配置空间。当然不同类型的设备的配置空间中的内容也不相同。
RC的配置空间叫做RCRB。
配置空间的地址是用bus number、device number、Function number组合出来的。