首页>>科技 >>内容

nvme协议pcie 4.0 x4什么意思,详解PCIe总线协议

发布时间:2023-08-17 21:58:38编辑:温柔的背包来源:

很多朋友对nvme协议pcie 4.0 x4什么意思,详解PCIe总线协议不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

nvme协议pcie 4.0 x4什么意思,详解PCIe总线协议

1.PCIe基础知识PCI-Express(外设部件快速互连)是一种高速串行计算机扩展总线标准。它的原名是“3GIO”,由Intel在2001年提出,用来取代旧的PCI、PCI-X和AGP总线标准。

像大多数总线一样,PCIe总线包括两部分:电气属性和协议。完整的理解PCIe是相对复杂的,所以从应用的角度,我先从基本协议入手,对PCIe有一个初步的了解。扩展学习可以参考官方协议规范文档《PCI Express Base Specification》。PCIe规范对设备的设计采用分层结构,由事务层、数据链路层和物理层组成,每层又分为发送和接收两个功能块。

在发送端,应用(设备核A)在事务层形成事务层包(TLP——),存储在发送缓冲区,等待推送到下层。在数据链路层,在TLP分组上串接一些附加信息,在接收TLP分组时被对方用于错误校验,形成数据链路层分组(DLLP ——);在物理层,DLLP数据包被编码,占用链路中的可用信道,并从发射机发送出去。

在接收端,实际上是发送端的“逆”过程。如果说发送方在不断组装包,那么接收方也在不断拆包,最终为B设备的应用程序提取有用的数据信息。其实整个过程和以太网很像,数据是分层次展开的。在FPGA开发过程中,实际上是将事务层和物理层封装在一起,形成一个标准的IP核。用户通过IP核要求的总线协议(如AXI4-Stream)与IP核交换数据。

2.事务层协议2.1包结构有了IP核之后,我们最关心的其实是事务层包的数据格式。事务层数据包(TLP)主要由一个或多个可选前缀、帧头、数据有效载荷和可选摘要组成。以下是各部分的简要介绍。前缀(TLP前缀)

介绍了PCIe V2.1通用规范,主要起到扩展帧头的作用。如果不使用,该字段可以省略。TLP报头)TLP报头是TLP最重要的标志,对于不同的TLP,其报头的定义是不同的。TLP头长3或4 DWs(DW=双字——,32位),格式和内容随事物类型而异;数据有效载荷(数据有效载荷)

即要由主设备传输的数据。数据的最小长度为0,最大长度为1024DW,视具体情况而定。该字段也是可选的,因为一些TLP不需要传输数据,例如存储器读取请求、配置和I/O写入完成TLP。TLP尊严是一个选项,长度为1DW。TLP是否需要诊断取决于报头中的TD字段。如果接收设备支持ECRC校验功能,该字段用于防止数据校验码ECRC进入TLP。2.2帧头的详细含义

TLP报头有3 DW或4 DW长,其格式和内容因不同的交易类型而异。但是,所有TLP头都有相同的第一个DW定义,如下图所示(r: reserved,0)。TLP FMT的Fmt ([31: 29]) ——格式是关于报头长度和TLP是否有数据(字段)的信息,如下图所示。实际是3 DW还是4 DW取决于要访问的目标的地址位宽。键入([28:24])

类型的5位数代码与Fmt字段一起用于指定交易类型、标题长度以及是否有数据加载。如下图所示,仅列出部分常用类型,完整版本可查阅官方协议规范。Tc ([22: 20])流量类,传输类型也代表优先级,高优先级先获得服务。这里是3位,表示可以分为8级,0-7,TC默认为0。数字越大,优先级越高。属性([18]、[13:12])

该字段表示TLP的属性,由3位组成,不连续。具体含义见说明书。th ([16])位1表示当前TLP包含TPH(TLP处理提示)信息,这是由PCIe V2.1总线规范引入的一个重要功能。TLP的发送方可以使用TPH信息通知接收方要访问的数据的特征,以便接收方合理地读取和管理数据。TD([15])

指示TLP中的TLP摘要(ECRC可选)是否有效。如果将该位放在一起,则意味着TLP包含ECRC,接收方应该进行CRC校验。EP ([14])表示当前TLP中的数据是否有效,1表示无效,0表示有效。At ([11: 10])地址类型,与PCIe总线的地址转换有关,暂时可以忽略。长度([9:0])

用于描述TLP的数据有效载荷大小。在PCIe总线上设置长度字段的目的是为了提高总线的传输效率。长度字段以DW为单位,其最小单位为1 DW。3.消息的例子由于PICe中的消息种类繁多,所以只举两个例子来说明。3.1寄存器读取报文,如下图所示,是一个32位寻址寄存器读取的完整报文(上一节只介绍了第一个DW)。首先,解释几个额外字段的含义。申请人ID

该字段包含生成TLP消息的PCIe设备的总线号、设备号和功能号。找到目标设备的唯一方法是因为不同的端点设备空间将被映射到主机内存空间中的不同位置。标签请求者ID和标签一起构成了一个事务ID。在同一时间段内,由PCIe设备发送的每个非投递式数据请求TLP必须具有唯一的事务ID。也就是说,标签必须是唯一的。最后的DW BE和第一个DW BE

在PCIe总线中,数据以字节为基本单位传输,但长度字段以DW为最小单位。对于此TLP,最后一个DW BE和第一个DW BE用于返回两个字段以启用字节,因此在TLP中,有效数据以字节为单位。对于PCIe设备,它向主机开放的设备空间将首先映射到主机的内存空间。如果主机想要访问设备的某个空间,则应该将TLP报头中的地址设置为主机存储器中的访问空间的映射地址。

值得注意的是,消息是用DW描述的,但实际上顶层应用是用64位数据通过AXI4与PCIe IP核进行通信,所以在发送TLP要求的现场数据时,主要存在大小和末端的问题。3.2完成信息

有一个非张贴请求TLP,并有一个完成TLP。有因必有果。正如我前面看到的,在请求者的TLP中有请求者ID和标记来告诉接收者谁是发起者。那么响应方的目标地址就很简单了,复制发起方的源地址即可。因此,完成TLP的标题如下:完成状态完成指示。000-成功完成;001-不支持该请求。其余请参考说明书。字节计数

是指还剩下多少字节的数据需要读取。其余字段可自行查阅规范。

4. 机制简述

4.1 Non-Posted和Posted

PCIe总线规定了两类数据传送方式,分别是Non-Posted和Posted数据传送方式。

在PCIe总线中,Non-Posted总线事务分两部分进行,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(Completion)报文。PCIe总线使用Split传送方式处理所有Non-Posted总线事务,存储器读、I/O读写和配置读写这些Non-Posted总线事务都使用Split传送方式。简单的说就是“一问一答”的方式。

而Posted总线事务,是只向终端发送报文,而终端无需反馈完成报文,所以是一种“单向发送”的机制。

以上知识分享希望能够帮助到大家!