博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PCIE背景知识学习(3)

Posted on 2022-09-26 16:49  沉默改良者  阅读(425)  评论(0编辑  收藏  举报

PCIE背景知识学习(3)

PCI-X特性(PCI-X Features)

拆分事务模型(Split-Transaction Model)

在传统的PCI读事务中,总线Master向总线上某个设备发起读取。如前面的内容所述,若Target设备未准备好,无法完成事务,那么它既可以选择在获取数据的同时让总线保持等待态,也可以发起Retry来推迟事务。

PCI-X则不同,它使用拆分事务的方法来处理这些情况。

 

 

 我们现在将例子中发起读取操作的一方称为Requester(请求方),将完成读取请求提供数据的一方称为Completer(完成方)。

如果Completer无法马上对请求做出相应的服务,它将把这个事务的相关信息存储起来(地址、事务类型、总数据量、Requester ID),并发出拆分响应信号。

这就告诉Requester可以将这个事务先放置在队列中,并结束当前的总线时序周期,释放总线使之回到空闲状态。

这样,在Completer等待所请求的数据这段时间里,总线上可以执行其他的事务。Requester在这段时间里也可以自由的做其他事情,比如发起另一个请求,甚至是向此前的那个Completer发起请求都可以。

一旦Completer收集到了所请求的数据,它将会申请总线占用仲裁,当获取到总线的使用权后,它将发起一个拆分完成(Split Completion)来返回此前Requester所请求的数据。Requester将会响应并参与拆分完成这个事务的总线时序周期,在这个过程中接收来自Completer的数据。

对于系统来说,拆分完成事务其实与写事务非常相似。这种拆分事务模型(Split Transaction Model)的可行性在于,在请求发起时就通过属性阶段(Attribute Phase)指出了总共需要传输多少数据,并且也告诉了Completer是谁发起了这个请求(通过提供Requester自己的Bus:Device:Function号码),这使得Completer在发起拆分完成事务时能够找到正确的目标。

Requester不需要重复的轮询设备来检查数据是否已经准备好。Completer只需要简单的申请总线占用仲裁,然后在能使用总线时将被请求的数据返回给Requester即可。就总线利用率而言,这样的操作流程使得事务模型更加高效。

PCI-X 2.0源同步模型(PCI-X 2.0 Source-Synchronous Model)

源同步”这个术语的意思是,设备在传输数据的同时,还提供了额外一个与数据信号基本传输路径相同的信号。

如图 1‑19所示,在PCI-X 2.0中,那个“额外”的信号被称为“strobe(脉冲选通)”,接收方使用它来锁存发来的数据。

 

 

 发送方可以分配data与strobe信号之间的时序关系,只要data与strobe信号的传输路径长度相近且其他会影响传输延迟的条件也相近,那么当信号到达接收方时,这种信号间的时序关系也将不会发生变化。