[初见]什么是PCI Express?

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

作者:李大虾

 

PCIe2001年立春发芽,2002年出生,在Intel这颗大树下,必然不同凡响,就如主角降世。局部总线领域正在逐步取代PCI的地位,硬件上它继承了PCI的设计思路,软件上兼容PCI总线(但是硬件实现上完全不同,只是系统软件上看起来相同)。基于提高总线频率和带宽,高速串行总线逐渐替代了并行总线,这也是大势所趋。这时的限制在于传输介质,目前普遍是铜线路,传输极限是10GbpsPCIe 3.0支持总线频率达到4GHz,信号频率可达到8GT/s(每个时钟周期传输2位),编码方案128b/130b,支持虚通路VCVirtual Channel),每个虚通路有独自的缓冲区,分配给不同优先级的报文,更好的支持服务质量(QoS),数据传输方式与TCP/IP类似,包括事物层、数据链路层和物理层,区别在于PCIe用硬件逻辑而非软件实现协议栈。PCIe采用高速差分总线(要求等长等宽贴近、同层),点对点传输不被干扰,包括发送端(Tx)和接收端(Rx),因此共4根信号线,电气特性要求发送端接一个AC耦合电容。虽然PCIe链路是串行数据传输,但是芯片内部数据总线仍然是并行传输。

PCIe链路支持12*18=36pin)、242*32=64pin)、82*49=98pin)、12162*82=164pin)、32Lane,每个Lane的总线频率与PCIe版本有关,相当于位宽,比如:
PCIe 1.x
,总线频率1.25GHz,单Lane峰值2.5GT/s8/10b编码 
PCIe 2.x
,总线频率2.50GHz,单Lane峰值5.0GT/s8/10b编码
PCIe 3.x
,总线频率4.00GHz,单Lane峰值8.0GT/s128/130b编码
PCIe 4.0
,总线频率8.00GHz,单Lane峰值16GT/s128/130b编码
然而多见的是1 Lane链路。
8/10b
编码:将连续的8位数据分成3位和5位两组,经过编码分别生成4位和6位两组,可保证DC平衡,连续的“1”“0”不超过5位。
功耗情况如下:
x1
卡:0.5A 12V 6W 10W组合
x4
卡:2.1A 12V (25W) 25W组合
x16
卡:5.2A 12V (66W) 75W组合

PCIe信号:
Vcc
Vaux额定电压3.3V,主要逻辑模块Vcc供电,电源管理和特殊寄存器(如Sticky Register)使用Vaux供电;Vcc可能被移除,降低功耗,而Vaux多数情况下不会,这样电源逻辑和特殊寄存器状态不会改变,缩短系统恢复时间。
PERST#
全局复位信号,复位方式有Cold ResetWarm Reset
REFCLK+
REFCLK-与处理器系统同步,通常信号的传播速度接近光速,约6英寸/ns,不同PCIe插槽的REFCLK传输延时差约2.5ns,接入PCIe设备后可以用REFCLK也可以用独立时钟。Link Control RegisterCommon Clock Configuration位,为1表示设备与PCIe链路对端设备使用同相位参考时钟,为0则为异步的,默认值为0
WAKE#
(可选信号)休眠状态,PCIe设备向处理器系统发出唤醒请求,重新启动VccPERST#将进行复位操作,复位正常,WAKE#信号无效。
Beacon
信号(差分信号D+D-)也可实现唤醒。
SMCLK
SMDATSMBus有关,便于PCIe设备与处理器系统交互。
JTAG
国际标准测试协议,由TRST#TCKTDITDOTMS信号组成,实现在线编程ISP功能。
PRSNT1#
PRSNT2#热插拨信号,在PCIe总线的Add-in卡中,PRSNT1# PRSNT2#直接相连,处理器主板系统中,PRSNT1#接地,PRSNT2#通过上拉电阻接为高,插入时PRSNT2#为低来判断热插拨。该信号pin为短针结构。

硬件协议:
数据包传输,经历事物层、数据链路层和物理层
Device Core
(核心层):产生数据报文
Transaction Layer
(事务层):接收/发送核心层的数据报文,封装/解封事务层数据包(TLP),转发/接收到数据链路层。包括流量控制、报文乱序管理等。
TLP
的一般格式如下:
TLP Prefix
可以是一个或多个;TLP Head包含总线事务类型、路由信息等一系列信息;Data Palyload数据大小可变,0~1024DWord,比如存储器读请求、配置和IO写完成TLP就不需要PayloadTLP Digest,可选项,是否需要由TLP Head决定。
TLP
报文格式类型有:
存储器读请求TLP和读完成TLP、存储器写请求TLP、原子操作请求和完成报文、I/O读写请求TLP和读写完成TLP、配置读写请求TLP和配置读写完成TLP、消息报文。
消息报文类型包括:INTx中断消息报文(INTx Interrupt Signaling)、电源管理消息报文(Power Management)、错误消息报文(Error Signaling)、锁定事务消息报文(Locked Transaction Support)、插槽电源限制消息报文(Slot Power Limit Support)、厂商自定义消息报文(Vendor-Defined Messages)
Data Link Layer
(数据链路层):封装或解封数据链路层数据包DLLP,包含Sequence Number前缀、CRC后缀等,并使用ACK/NACK握手协议保证报文可靠完整传输。


Physical Layer
(物理层):传输数据序列(PLP),物理层包含逻辑和电气子模块,逻辑的进一步被划分为MACPCS,电气的包含单向LVDS(低电压差分信号)对。



Intel的物理层进一步划分如下:

 

分类目录 金士顿SSD评测.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。