pcie的ack/nak机制
當(dāng)receiver接收到TLP之后,判斷TLP是否完整,如果有錯誤,則返回ACK給發(fā)送端,如果正確的話,則返回ACK。
當(dāng)發(fā)送端收到NAK,則通過retry buffer重發(fā)該TLP。如果收到ACK,則將該TLP從rery buffer中刪掉。
需要注意的是,接收端在收到正確的TLP之后,不會馬上發(fā)送ACK,而是要等一個叫ACKNAK_LATENCY_TIMER的計數(shù)器計數(shù),計數(shù)到了之后才會發(fā)送ACK。在等待發(fā)送ACK的期間,接收端可能會收到多個TLP。如果計數(shù)到點的時候,收到了多個TLP,則只要發(fā)送帶有最后TLP序號的ACK就行。發(fā)送端在接收到這個ACK之后,會將retry buffer中這個ACK序號對應(yīng)的TLP以及小于這個序號的TLP全部清除。
注意NAK中的序號是上一個成功接收的TLP序號。存在這樣的情況,就是在接收端收到一個錯誤TLP時,已經(jīng)收到了多個正確的TLP,但由于timer的原因,還未返回ACK,這時接收端需要立刻返回帶有最后一個正確TLP的NAK給發(fā)送端。發(fā)送端收到這個NAK后,會將retry buffer中對應(yīng)序號及之前的TLP清理掉,并重發(fā)下一個序號的TLP。
轉(zhuǎn)載于:https://www.cnblogs.com/lybinger/p/10763814.html
總結(jié)
以上是生活随笔為你收集整理的pcie的ack/nak机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 影响solr性能的一些因素(附使用经验)
- 下一篇: 并发编程(三)原子操作CAS