PCIe学习笔记(7)

First/Last DW Byte使能规则

Byte Enables包含在Memory、I/O 和Configuration Requests中。

字节使能,当出现在请求报头中时,位于报头的字节7。对于设置TH位的内存读请求,字节启用字段被重新用于承载ST[7:0]字段,并且字节启用的值隐含如下定义。当可以接受完成这些请求时,TH位必须只在内存读请求中设置,就好像请求数据的所有字节都已启用。

•对于设置TH位的内存读请求,以下值隐含在Byte enable中。

◦如果此请求的Length字段表示长度为1 DW,则First DW Byte enable的值暗示为1111b, Last DW Byte enable的值暗示为0000b

◦如果此请求的Length字段表示长度大于1 DW,则First DW Byte enable和Last DW Byte enable的值暗示为1111b

First DW BE[3:0]字段包含Byte为请求引用的第一个(或唯一)DW启用。

◦如果Request的Length字段显示的长度大于1dw,该字段不能等于0000b。

Last DW BE[3:0]字段包含Byte enable,表示请求的最后DW。

◦如果Request的Length字段表示长度为1dw,则该字段必须等于0000b

◦如果Request的Length字段显示的长度大于1dw,该字段不能等于0000b

•对于Byte enable字段的每一位:

◦值为0b表示对应的数据字节不能被写入,如果不可预取,则不能在Completer上读取。

◦值为1b,则必须在Completer上写入或读取相应字节的数据

•对于所有长度为1dw的请求,允许在First DW BE字段中启用非连续字节(已启用的字节由未启用的字节分隔)。

◦非连续字节启用示例:1010b, 0101b, 1001b, 1011b, 1101b

•对于长度为2dw (1qw)的Quad Word (QW)对齐内存请求,在Byte Enable字段中允许非连续字节启用。

•所有长度为2dw (1qw)的非QW对齐内存请求和长度为3dw或以上的内存请求必须只启用与请求的第一个DW和最后一个DW之间的数据连续的字节。

◦连续字节启用示例:

First DW BE:1100b,Last DW BE:0011b

First DW BE:1000b,Last DW BE:0111b

表中相当于前4bit对应数据的前四个字节,后4bit对应数据的最后四个字节。

假设引用的数据长度为N字节(字节0到字节N-1)。注意,仅当数据长度大于一个DW时才使用last DW Byte enable

•如果1 DW的Read Request指定不允许读取字节(First DW be [3:0] field = 0000b),则相应的Completion必须指定长度为1 DW,并且包含1 DW的数据负载。Completion报文中数据负载的内容未指定,可以是任何值。

•对于违反本节中指定的Byte enable规则的TLP,未定义Receiver/Completer行为。

•接收方可以选择检查是否违反Byte enable规则。如果执行这种检查的接收器确定TLP违反了一条或多条Byte enable规则,则该TLP是畸形TLP。这些检查是独立可选的。

◦如果Byte enable规则被检查,违规是与接收端口相关的报告错误

Last DATA BE与First DATA BE的使用规则

1、 传输的数据长度小于1个DW,则仅使用First DATA BE,Last Data BE为全0。First Data BE内允许有不连续的0、1位,PCIe总线允许发送一个DW的第1、3字节或者0,2字节。

2、 传输的数据长度在2DW内时,允许有不连续的0、1位。

3、 传输的数据长度大于等于3DW时,First Data BE和Last Data BE不允许有不连续的0、1位。

注意: “zero-length”的引入是为了实现“读刷新”操作,该操作的主要目的是为了保证之前的存储器写请求报文,到达最终的目的地,与“zero-length”对应的读完成包文中不含有任何数据负载 ,从而提高了PCIe链路的利用率。

  • 30
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCIE-DMA是一种基于PCIe接口的直接内存访问技术,能够实现高速数据传输。在我的学习笔记中,我详细记录了与PCIE-DMA相关的知识和学习心得。 首先,我了解到PCIE-DMA技术的基本原理和作用。PCIE-DMA可以通过PCIe总线直接访问系统内存中的数据,而不需要过多的CPU干预,提高数据传输的速度和效率。这种技术在需要大量数据传输的场景下非常有效,比如高性能计算、数据采集等。 其次,我深入学习PCIE-DMA的工作原理。PCIE-DMA的核心是DMA控制器,它负责管理和控制数据传输的流程。当设备需要读写内存中的数据时,它通过DMA控制器发送请求,然后DMA控制器生成一个事务,将数据直接传输到或从内存中。这样就大大减少了CPU的参与,提高了数据传输的效率。 另外,我还学习PCIE-DMA的配置和编程方法。PCIE-DMA的配置主要包括硬件配置和软件配置两个部分。硬件配置通常涉及到DMA控制器和PCIe接口的初始化和配置,软件配置则需要编写驱动程序来驱动DMA控制器和处理数据传输过程中的事件和异常。这部分内容对于我来说还比较新颖,需要更多的实践和实践。 最后,我总结了PCIE-DMA的应用场景和发展前景。PCIE-DMA在高性能计算、数据采集等领域具有广阔的应用前景。随着数据量的不断增加和传输速度的要求越来越高,PCIE-DMA技术的需求也将越来越大。因此,对于我来说,学习掌握PCIE-DMA技术非常有价值。 通过学习和记录PCIE-DMA的相关知识和经验,我对这项技术有了更深入的理解和掌握。希望将来能通过应用PCIE-DMA技术解决实际问题,为科研和工程项目的顺利进行做出贡献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值