PCTarget Initiated Termination

一、背景

PCI传输都是主设备发起,然后从设备相应。但是当某些时候从设备发现自己忙着暂时来不及处理、或者处理一半时候发现后边req来得太快了暂时不能处理、或者从设备遇到了一个致命的错误不能完成这个req,就需要报告给主设备,让主设备稍后重传或者放弃传输。

二、3种Termination方式

1. Retry

(1)定义:在cmd周期结束后的第一个数据周期,收到命令的从设备发现自己忙着,暂时没办法处理,则向主设备报告。

(2)触发方式:STOP# assert,TRDY# deassert。

(3)处理方式:主设备在等待一定时间(时间应该遵从spec)后会重新发起这一笔相同的req(比如地址相同)。

PCTarget Initiated Termination_第1张图片

2. Disconnect

(1)定义:在数据周期开始数据已经burst传递了若干比,此时从设备来不及处理后续的req,则向主设备报告。

(2)触发方式:

  • Disconnect with data:在从设备assert STOP#信号后,还能再传输最后一笔data:assert TRDY#,assert STOP#。
  • Disconnect without data:在从设备assert STOP#信号后,不能再传输data:deassert TRDY#,assert STOP#。

    PS:为什么要区分这两种方式:为了方便硬件设计灵活,某些状态机能很快结束掉,具体使用哪种这是由硬件决定的。

(3)处理方式:主设备等待一定时间(时间应该遵从spec)后会继续进行data传输,但是地址是从上一次req结束的位置,主设备会记录这一位置,不需要重新传输已经传输的内容。

PCTarget Initiated Termination_第2张图片

3. Target Abort

(1)定义:从设备遇到了严重错误,认为不能继续处理,就终止。

(2)触发方式:deassert DEVSEL#,assert STOP#。

(3)处理方式:主设备不会再发这一笔给从设备。

PCTarget Initiated Termination_第3张图片PCTarget Initiated Termination_第4张图片

三、几个重要疑问:

1.Retry和Disconnect有什么区别?

答:Retry不进行数据传递而Disconnect会进行,都支持重新传输,但Disconnect会从断点处续传而Retry重新开始。

2. Retry和Disconnect后是否释放总线占用权?

答:按照正常的仲裁进行,但是下一次重新占用后,会重新进行上一次的传输。

3. Termination后支持中断吗?

答:Retry和Disconnect不需要中断,因为有机制处理,但是Target Abort有可能需要,这根据硬件的设计而决定,如果需要让软件知道就触发中断,如果硬件自己处理不需要让软件知道则不需要触发。

 

你可能感兴趣的:(PCI)