《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(13)

2023-12-29 13:33:33

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(12)

1.3?PCI总线的存储器读写总线事务

1.3.3 HOST处理器访问PCI设备

前文已提到,由于本节内容较长,因此将后一部分内容放在本文中。

为了便于理解,再次贴出图1-1:

处理器对PCI设备11进行I/O读写操作和存储器读操作只能采用Nosted-Posted方式进行。与Posted方式相比,使用Non-Posted方式,当数据到达目标设备后,目标设备需要向主设备发出“回应”(如果是存储器、I/O读或者配置读总线事务,这个回应包含数据;如果是I/O写或者配置写,这个回应不包含数据);主设备收到这个“回应”后,才能结束整个总线事务。本节不再讲述处理器如何对PCI设备进行I/O写操作,请读者思考这个过程。

处理器对PCI设备11进行存储器读时,这个读请求需要首先通过HOST主桥x和PCI桥x1到达PCI设备;之后PCI设备将读取的数据再次通过PCI桥x1和HOST主桥x传递给HOST处理器,其步骤如下所示(假设PCI总线没有使用Delayed传送方式处理Non-Posted总线事务,而是使用纯粹的Non-Posted方式):

(1)首先,处理器准备接收数据使用的通用寄存器,之后向PCI设备11映射到的存储器域的地址进行读操作;

(2)HOST主桥x接收来自处理器的存储器读请求。HOST主桥x进行存储器地址到PCI总线地址的转换,之后向PCI总线x0发起存储器读总线事务;

(3)PCI总线x0上PCI设备01、PCI设备02和PCI桥x1将监听这个存储器读请求,之后PCI桥x1接收这个存储器读请求。然后PCI桥x1向PCI总线x1发起新的PCI总线读写请求;

(4)PCI总线x1上的PCI设备11和PCI设备12监听这个PCI读请求总线事务。最后,PCI设备11接收这个存储器读请求总线事务,并将这个读请求总线事务转换为存储器读完成总线事务,之后将数据传送到PCI桥x1,并结束来自PCI总线x1上的PCI总线事务;

(5)PCI桥x1将接收到的数据通过PCI总线x0,继续上传到HOST主桥x,并结束PCI总线x0上的PCI总线事务;

(6)HOST主桥x将数据传递给处理器,最终结束处理器的存储器读操作。

以上就是完整过程。显然,这种方式与Posted传送方式相比,PCI总线的利用率较低。因为只要HOST处理器没有收到来自目标设备的“回应”,那么HOST处理器到目标设备的传送路径上使用的所有PCI总线都将被阻塞,因而PCI总线x0和x1并没有被充分利用

由以上示例可以发现,只有“读完成”依次通过PCI总线x1和PCI总线x0之后,存储器读总线事务才不继续占用PCI总线x1和x0的资源,显然这种数据传送方式并不合理。因此,PCI总线使用Delayed传送方式解决这个总线拥塞问题。

更多内容请看下回。

文章来源:https://blog.csdn.net/phmatthaus/article/details/135272332
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。