2.2.2 PCIe控制器——事务层——总线传输事务

PCIe中有多种总线传输类型,以下根据不同类型来详述。

一、总线事务类型——功能划分

按功能划分有如下五大类事务

1.1 配置读写总线事务

由于PCI配置空间和内存空间是分离的。因此访问配置空间不能直接使用load/store指令,PCIe spec规定访问配置空间为配置读写总线事务。
系统软件需要初始化PCIe设备的BAR0~5寄存器和PCI桥的Base、limit寄存器,系统软件使用DFS算法对PCI总线遍历时,完成对这些寄存器的初始化,即分配这些设备在PCI总线域的地址空间。当这些寄存器初始化完毕后PCI设备就可以使用PCI总线地址进行数据传递。

2.2.2 PCIe控制器——事务层——总线传输事务_第1张图片
对于PCIe总线树上Bridge接终端设备的配置空间访问,采用Type1请求;对于直接接ep设备,采用Type0配置请求。

1.1.1 Type0请求

1.1.2 Type1请求

在PCI总线中,只有bridge设备能够接收Type1请求,bridge接收该请求后,转换为type0请求再发送给终端设备;若该级bridge设备向下又接了bridge设备,则由上级bridge设备再转换为type1设备继续发向下级bridge设备。

1.2 存储器读写事务

1.3 原子操作事务

参考链接:PCIe原子操作(Atomic Operation)

1.4 IO读写事务

1.5 消息报文

二、总线事务类型——传送方式划分

根据PCIe总线上数据的传送方式可以划分为posted方式和Non-posted方式。
2.2.2 PCIe控制器——事务层——总线传输事务_第2张图片

  • posted
    Posted总线事务指PCI主设备向PCI目标设备进行数据传递时,当数据到达PCI桥后,即由PCI桥接管来自上游总线的总线事务,并将其转发到下游总线。采用这种数据传送方式,在数据还没有到达最终的目的地之前,PCI总线就可以结束当前总线事务,从而在一定程度上解决了PCI总线的拥塞。
    即发出去无需等待返回报文即可进行下一次总线事务。

posted事务通过ACK/NAK协议进行事务的应答。

  • Non-posted
    Non-Posted总线事务是指PCI主设备向PCI目标设备进行数据传递时,数据必须到达最终目的地之后,才能结束当前总线事务的一种数据传递方式。
    即发出去需要等待接收方返回完成报文才能进行下一次总线事务。

你可能感兴趣的:(PCIe,pcie)