PCIe扫盲系列附目录
PCIe(Peripheral Component Interconnect Express),即外设组件互连标准,是一种高速串行计算机扩展总线标准,用于计算机内部链接主要的组件。文章“PCIe扫盲系列附目录”是对PCIe标准的一个基础介绍,而部分内容主要通过一个Memory Read操作的例子,对PCIe总线的数据传输过程进行了详细说明。 ### PCIe总线的结构 PCIe总线结构主要分为三层:事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。 1. **事务层**:负责生成和解析事务层包(TLP,Transaction Layer Packet),处理请求和完成信息,例如读取和写入请求。事务层负责确保数据按照请求的顺序正确传输。 2. **数据链路层**:负责确保数据完整性,通过添加序列号和链路校验码(LCRC)对TLP进行封装,生成数据链路层包(DLLP,Data Link Layer Packet)。此外,还管理流量控制和错误检测、重传等功能。 3. **物理层**:负责将DLLP转换为可以在物理介质上传输的信号,并在接收端做相反的转换。物理层包括了串行/解串行器(SerDes)、8b/10b编码、时钟恢复等技术。 ### PCIe事务层包(TLP) 在事务层中,一个Memory Read操作的事务层包包含以下信息: - Memory地址:32位或64位地址,用于定位内存中的数据位置。 - 事务类型:指示TLP的类型,例如Memory Read。 - 数据量:以DW(Double Word,即4字节)为单位,指定要传输的数据量。 - TC(Traffic Class):优先级,用于区分不同事务的优先级。 - 字节使能:指示哪些字节需要被读取。 - 属性信息:包含了事务的额外属性,如缓存类型等。 ### PCIe数据链路层(DLLP) 在数据链路层中,DLLP会添加序列号和LCRC: - 序列号:用于确认DLLP的顺序,确保无序或重复包的检测。 - LCRC(链路循环冗余校验码):用于检测数据传输中的错误。 ### PCIe物理层 物理层负责信号的传输,包括: - 起始字符(Start & End Characters):标记包的开始和结束。 - 解字节(Strip Byte):移除特定字节来减少传输数据。 - 扰码(Scramble):对数据进行随机化处理,确保信号的随机性。 - 8b/10b编码:确保数据在传输过程中具有足够的边沿变化。 - 串行化:将数据转换为串行信号,通过PCIe连接线进行传输。 ### PCIe传输过程 整个PCIe的数据传输过程可以概括为以下几个步骤: 1. **发送端**:事务层生成TLP并包含相关信息,TLP随后被送往数据链路层添加序列号和LCRC,形成DLLP。 2. **发送端物理层**:将DLLP进行串行化,添加起始字符,并进行扰码和8b/10b编码,最终通过物理介质传输。 3. **接收端物理层**:接收信号并进行解码,恢复DLLP,并将其发送至数据链路层。 4. **接收端数据链路层**:检查LCRC,如果正确,则发送Ack确认消息,反之发送Nak请求重发。正确接收的数据包会被丢弃,错误的数据包会被重传。 5. **接收端事务层**:接收到DLLP后进行解析,并将请求的数据信息送往应用层处理。处理完成的数据将回传至事务层,生成完成事务层包(CplD)并发送至发送端。 6. **完成传输**:发送端收到CplD包后,表示数据传输完成。 ### PCIe错误处理 在传输过程中可能会发生错误,PCIe总线有相应的机制进行错误处理。如果数据链路层发现LCRC错误,它会通知发送端重新发送数据。如果接收端不能返回有效数据或者发生其他错误,它会返回一个不带数据的完成包(Cpl),发送端应用层根据这个信息进行错误处理。 ### 结语 通过以上内容,我们能够了解到PCIe总线在计算机通信中扮演的角色,以及数据是如何在PCIe总线上传输的。整个过程涉及多个层的协作,包括事务层、数据链路层和物理层,每个层次都有其特定的功能和协议。了解PCIe的工作原理对于深入计算机硬件和网络通信领域是非常有帮助的。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
评论3