PCIe
文章平均质量分 79
本专栏主要用于记录PCIe协议介绍
bendandawugui
不积跬步无以至千里
展开
-
PCIe专题学习——7.0(PCIe热插拔)
为了防止意外的发生,PCIe spec设计了一种“No Surprise”热插拔机制,即,当用户要热插拔PCIe设备时,必须先通知系统软件做好准备,然后通过指示灯告知用户热插拔的状态。当你准备在不断电的情况下插拔一块PCIe SSD时,你可要小心了,如果在PCIe设备不支持热插拔的条件下,很可能会对主板或者PCIe插槽造成损毁。PCIe环境下的热插拔需要软件与硬件的通力合作,先来看一张示意图,红色框内属于软件方面的需求,绿色框内是硬件方面的需求。主要负责处理用户插拔PCIe设备的请求。转载 2023-08-24 19:33:57 · 828 阅读 · 0 评论 -
PCIe专题学习——6.0(PCIe系统复位方式)
这是PCIe最基本的复位方式,主要通过硬件实现,效果是重置整个设备,对每个状态机,所有硬件逻辑,端口状态和配置寄存器重新初始化。Nots:但是,也会有例外的情况:在某些寄存器中的字段只有在全部电源(包括VCC电源和Vaux备用电源)切断的情况下才会被重置,PCIe Spec给这些估值的字段起了个外号“Sticky Bits”一般来说,Funcdamental Reset是针对整个系统做Reset,但是有时候也可以针对某个单一设备进行重置。转载 2023-08-24 19:10:23 · 368 阅读 · 0 评论 -
PCIe专题学习——5.0(总线电源管理)
之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)一:电源管理PCIe总线的电源管理包括两方面的内容:一是基于软件控制的电源管理机制,这部分与PCI总线兼容;二是基于硬件控制的电源管理机制, 不需要Host端软件口控制,PCIe链路自主管理。转载 2023-08-24 18:09:04 · 975 阅读 · 0 评论 -
PCIe专题学习——4.1(物理层数据流解析)
由于Gen1&Gen2 (8b/10b编码)与Gen3 (128b/130b编码)在物理层中的数据编码原理不同,物理层对Gen1&Gen2 与Gen3定义的控制字符也不同。同样,不同数据编码也造就了不同的数据流格式。之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)。转载 2023-08-22 15:18:18 · 307 阅读 · 0 评论 -
PCIe专题学习——4.0(物理层结构解析)
之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)。转载 2023-08-22 14:49:47 · 281 阅读 · 0 评论 -
PCIe专题学习——3.2(数据链路层Ack/Nak机制解析)
之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)。转载 2023-08-22 14:01:54 · 603 阅读 · 0 评论 -
PCIe专题学习——3.1(数据链路层DLLP结构及类型)
附录:DLLP详细列表。转载 2023-08-21 15:04:33 · 412 阅读 · 0 评论 -
PCIe专题学习——3.0(数据链路层概述)
之前的文章中,我们提到在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后技工该设备的事务层(Transaction Layer),数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去,而接收端的数据也需要通过物理层,数据链路层和事务层,并最终到达Device Core;从上图中,我们也可以看到,Data Link Layer在PCIe总线中处于承上启下的作用,保证来自事务层的TLPs在PCIe总线中正常的传递;转载 2023-08-21 14:40:59 · 191 阅读 · 0 评论 -
PCIe专题学习——2.7(事务排序机制)
之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer);转载 2023-08-21 14:22:49 · 270 阅读 · 0 评论 -
PCIe专题学习——2.6(Flow control的实现过程)
在这里例子中,我们假设VC buffer大小为2KB,之前的文章介绍过Non-posted Header的信用大小为5DW,也就是20Bytes,所以Flow control单元数目最大为2KB/20Bytes=102d=66h。CC-CR = 66h-67h = 66h+99h = FFh不满足判断公式。发送端:CC = CL =66h,CR = CC + PTLP = 66h+01h=67h。CrRcv=00h;同时,CL更新为69和,CC=66h,CR=66h+01h = 67h。转载 2023-08-21 13:53:35 · 296 阅读 · 0 评论 -
PCIe专题学习——2.5(Flow control缓存架构及信用积分)
之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer);转载 2023-08-21 13:27:52 · 216 阅读 · 0 评论 -
PCIe专题学习——2.4
接收端通过发送DLLP(Data Link Layer Packets)来告知发送端VC buffer的信用积分(也就是告知VC buffer可用空间),当缓存空间快满的时候,发送端会停止发送TLP,以防止VC buffer容量不足而造成发送端传输的数据被丢失,从而避免要求发送端重新发送刚才发送的数据,最终达到更加有效利用网络带宽。在PCIe协议中,如果要发送以恶搞TLP,就必须要保证接收端有足够的缓存(buffer)来接收,为了实现这一功能,接收端回随时回报可用的缓存空间。转载 2023-08-21 13:18:16 · 74 阅读 · 0 评论 -
PCIe专题学习——2.3
顾名思义可以定义理解为交通等级,比如在生活中我们遇到救护车或者消防车时,由于救护车和消防车是跟时间赛跑,那么交通等级就高,一般的私家车(可以认为没有交通等级)就必须给救护车或者消防车让行,可能这个比喻不是很恰当,不过大致意思是这样的~这个就是我们本文的重点;:1bit,Byte1,bit0,如果TH=1,就代表在TLP中添加了TLP处理提示,可以告知系统以更有效的措施处理这个TLP。:1bit,Byte1,bit2,这个bit的功能就是是否对TLP进行排序(IDO,ID-based Ordering)转载 2023-08-20 23:51:51 · 215 阅读 · 0 评论 -
PCIe专题学习——2.2
上篇我们对PCIe的一些基础概念做了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-nased layered protocol),主要包括事务层(Transcation layer),数据链路层(Data link layer)和物理层(physical layer)不需要完成回报(completion)虽然可以加速事务处理的速度,从而提高系统性能,但是,如果在设备端出现error,具体内容也不会回报给Root,而是回给Root发送一条信息让其告诉软件有error需要处理;转载 2023-08-20 22:58:44 · 154 阅读 · 0 评论 -
PCIe专题学习——2.1
2:事务层根据Device Core的请求,生成TLP Header,加上Device Core提供的data,最后加上ECRC(end to end crc),此时TLP会放入事务层缓存(Virtual Channel Buffer)之中;PCIe总线使用的数据报文首先在事务层中形成,这个数据报文也被称为事务层数据报文,即TLP(Transaction Layer packet),TLP在经过数据链路层时被加上sequence number前缀和crc后缀,然后发向物理层。一:事务层TLP的前世今生。转载 2023-08-20 21:59:05 · 161 阅读 · 0 评论 -
PCIe专题学习——2.0
在PCIe总线中,Non-Posted总线事务分两部分进行,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(completion)报文,PCIe总线使用Splite传送方式处理所有Non-posted总线事务,存储器读,I/O读写和配置读写这些Non-Posted总线事务都使用Splite传送方式。在PCIe总线中,不同的总线事务采用的路由方式不相同,PCIe总线使用的数据报文首先在事务层中形成,这个数据报文也被称为事务层数据报文,即。转载 2023-08-20 21:35:54 · 285 阅读 · 0 评论 -
PCIE专题学习——1.0
PCIe是一种全双工,差分,端对端,串行告诉接口协议,PCI是并行处理的机制,差分可以提高传输的稳定性,全双工意味着发送端在发送的同时,也可以接收,问题在于串行会比并行处理快吗?:应用层提出一个需求(data),将数据打包(packet)发送给设备A的事务层(TLP),然后将TLP扩充为DLLP发送给设备A的数据链路层,最后扩充为PLP发送到设备A的物理层,然后发送到设备B的物理层,将其解包变成DLLP,然后发送至设备B的数据链路层,最后解包变成TLP发送至设备B的事务层。3:PCIe的层结构。转载 2023-08-20 20:30:37 · 284 阅读 · 0 评论