女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PCIe鏈路層里的ACK/NAK介紹

Spinal FPGA ? 來源:Spinal FPGA ? 作者:玉騏 ? 2023-06-25 10:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編 者 按

讀cocotbext-pcie源碼,有部分牽涉到數據鏈路層。雖然自工作以來接觸到PCIe還是蠻多的,但一般往往專注在TLP層,對于數據鏈路層還是接觸的比較少的。PCIe Spec洋洋灑灑數千頁,也不會從頭到尾去通讀整個協議。對于cocotbext-pcie里面牽涉到的鏈路層的ACK/NAK,牽涉到的PCIe背景,聊做記錄。

本文僅結合PCIe Spce與cocotbext-pcie做記錄。

》ACK/NAK

與TCP協議般,PCIe協議在數據鏈路層采用滑動窗口ACK/NAK協議來保證數據傳輸。對于傳輸層下發的TLP報文,數據鏈路層會做一次封裝:

47234cbc-1181-11ee-962d-dac502259ad0.jpg

ACK/NAK報文格式定義如下:

474c2cf4-1181-11ee-962d-dac502259ad0.jpg

關于滑動窗口機制,往上隨便搜下還是蠻多的,不做過多啰嗦。鏈路層的滑動窗口正是基于TLP Sequence Number。

TLP Sequence Number定義為12 bits。對于發送端而言,其會維護兩個變量:

NEXT_TRANSMIT_SEQ:用于存儲下一個待發送TLP報文所使用的TLP Sequence Number。初始化時賦值為0.

ACKD_SEQ: 記錄從ACK、NAK中返回的 Sequence Number。初始化時賦值為0xfff。對于發送端,規定:(NEXT_TRANSMIT_SEQ - ACKD_SEQ) mod 4096 >= 2048

若上面的條件滿足則停止從傳輸層接收TLP,等待該條件不再成立。

也就意味著在pending中的報文不超過2048(牽涉到報文重傳)。

那么由此發送端對于收到的ACK/NAK中協議牽涉到的處理流程Spec定義為:

47654b94-1181-11ee-962d-dac502259ad0.jpg

由于發送端窗口中pending待確認的報文不會超過2048,故若上面1式不成立,那么則意味著用到了尚未使用到的sequence,表示為錯誤的TLP報文,同樣單次增加的ACKD也不會超過2048,否則也應標為錯誤的TLP。

在式3中,如果條件不成立,則意味著可以窗口前移,可以從replay buffer中移出已發送成功的數據,設置ACKD_SEQ等變量。在cocotbext-pcie中關于dllp的處理也和spec保持一致:

4785ba50-1181-11ee-962d-dac502259ad0.png

而對于接收端,其定義了:

NEXT_RCV_SEQ:下一個待接收TLP的Sequence Number。

其處理流程為:

47a54046-1181-11ee-962d-dac502259ad0.jpg

這里可以看到,僅當收到的TLP報文的Sequence Number等于NEXT_REC_SEQ時,才會被接收。注意紅框中,若條件滿足則認為是重復的報文,此時則應發送ACK DLLP報文,否則認為是錯誤的報文,則應發送NAK。

來看cocotbext-pcie中的處理:

47c7a32a-1181-11ee-962d-dac502259ad0.png

這里在563行取了<而非<=,或可有誤。當收到的是期望的報文時(555行),則會更新next_recv_seq、清除nak_scheduled,拉起ack_latency_timer(不必每個TLP均發起一個ACK,但又要確保按照Spec中規定的間隔時間來發送ACK)。而如果收到的是一個重復的TLP(563行),此時將send_ack觸發條件拉起,表示要立即發送ACK,而同時關掉ack_latency_timer,避免超時條件觸發后多發ACK。否則(567行)將會發送NAK報文。

》One More Thing

關于接收端的ack_latency,協議中有詳細的規定,其與flow control定義有相似之處,放在后面結合cocotbext-pcie進行梳理。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接收機
    +關注

    關注

    8

    文章

    1223

    瀏覽量

    54464
  • 觸發器
    +關注

    關注

    14

    文章

    2039

    瀏覽量

    62076
  • TLP
    TLP
    +關注

    關注

    0

    文章

    34

    瀏覽量

    16009
  • PCIe接口
    +關注

    關注

    0

    文章

    121

    瀏覽量

    10108

原文標題:有點兒東西—PCIe鏈路層里的ACK/NAK

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PCIe引腳定義和PCIe協議層介紹

    本文我們將向大家介紹PCIe引腳定義以及PCIe協議層。
    發表于 09-26 11:39 ?2.3w次閱讀
    <b class='flag-5'>PCIe</b>引腳定義和<b class='flag-5'>PCIe</b>協議層<b class='flag-5'>介紹</b>

    CY7C65215A作為從站,在主站寫入時響應NAK是怎么回事?

    設備寫入數據時,總是在主設備向從設備寫入的每個字節上響應 ACK。 我遇到的問題是,當我的微控制器作為主站向作為從站的賽普拉斯寫入數據時,賽普拉斯對最后一個字節的響應是 NAK,而不是 ACK
    發表于 07-04 06:30

    nvme IP開發之PCIe

    ,獲取其它設備的響應。 PCIe層次結構 PCIe 總線是一種分層協議總線,采用數據包進行數據傳輸。數據包在收發過程中需要經過事務層、數據鏈路層和物理層三個層次的處理和轉發。PCIe
    發表于 05-17 14:54

    BLE中的ACK機制

    ACK
    橙群微電子
    發布于 :2023年03月31日 09:52:36

    TLP的數據鏈路層組成與操作

    、 Vendor_Defined DLLPs:廠商自定義DLLP。  ACK/NAK協議  ACK/NAK是一種滑動窗口協議,PCIe設備數
    發表于 01-08 17:25

    【每日一知識點】在STM32F4上OTG 主機庫在 BULK 傳輸上對 NAK 的處理

    數據后,不再回復 NAK 握手,而是回復主機要獲取的數據,然后主機硬件回復 ACK 來結束本次 transfer。BULK IN通道對 NAK的處理和 CTRL IN通道對 NAK的處
    發表于 06-02 15:22

    介紹車用CAN通訊的基礎知識,數據鏈路層部分

    本博文主要介紹了車用CAN通訊的基礎知識,數據鏈路層部分,主要包括幀類型、幀起始&幀結束、仲裁段、控制段、數據段、CRC段&ACK段和錯誤幀等。
    發表于 01-07 06:16

    一文詳解CXL鏈路層格式的定義

    4.1 CXL.io鏈路層CXL.io鏈路層充當CXL.io事務層和Flex Bus物理層之間的中間層。其主要職責是提供可靠的機制,用于在鏈路上的兩個組件之間交換事務層數據包(TLP)。PCIe
    發表于 02-21 14:27

    什么是ACK (ACKnowledge Character)

    什么是ACK (ACKnowledge Character)  英文縮寫: ACK (ACKnowledge Character) 中文譯名: 確認字符 分  類: 傳輸與接入
    發表于 02-22 10:12 ?1976次閱讀

    數據鏈路層到底是什么_數據鏈路層工作原理是怎樣的

    本文開始闡述了什么是數據鏈路層,其次闡述了數據鏈路層的分類和數據鏈路層的工作原理,最后介紹了常用的數據鏈路層
    發表于 03-14 14:10 ?3.1w次閱讀
    數據<b class='flag-5'>鏈路層</b>到底是什么_數據<b class='flag-5'>鏈路層</b>工作原理是怎樣的

    PCIe總線的通信機制

    那么為什么要分為Non-Posted和Posted兩種類型呢?對于Memory Writes來說,對效率要求較高,因此采用了Posted的方式。但是這并不意味著Posted類型的操作不需要Completer進行應答,只是此時Completer采用了另一種應答機制——Ack/Nak
    的頭像 發表于 04-24 09:41 ?1.2w次閱讀
    <b class='flag-5'>PCIe</b>總線的通信機制

    Ack/Nak機制詳細介紹

    Ack/Nak是一種由硬件實現的,完全自動的機制,目的是保證TLP有效可靠地傳輸。Ack DLLP用于確認TLP被成功接收,Nak DLLP則用于表明TLP傳輸中遇到了錯誤。
    的頭像 發表于 05-29 14:46 ?1.6w次閱讀
    <b class='flag-5'>Ack</b>/<b class='flag-5'>Nak</b>機制詳細<b class='flag-5'>介紹</b>

    簡單地分析幾個Ack/Nak機制的例子

    設備B接收到了TLP4095,但是該TLP并未通過CRC校檢(即存在錯誤)。此時無論AckNak_LATENCY_TIMER處于何種狀態,設備B都會立即向設備A返回Ack4094(注意返回的Ack
    的頭像 發表于 05-30 09:16 ?6655次閱讀
    簡單地分析幾個<b class='flag-5'>Ack</b>/<b class='flag-5'>Nak</b>機制的例子

    什么是PCIe

    PCIe是一種高速串行計算機擴展總線標準,自2003年推出以來,已經成為服務器(Server)和PC上的重要接口。今天為大家簡單介紹一下PCIe的發展歷史以及它的工作原理。 一、PCIe
    的頭像 發表于 07-04 18:15 ?2.2w次閱讀

    PCIE數據鏈路層架構解析

    數據傳輸的完整性和一致性(TLP ACK/NAK),此外數據鏈路層還需要對PCIe鏈路進行管理(電源管理)和監控(流量控制)。
    的頭像 發表于 11-05 17:06 ?948次閱讀
    <b class='flag-5'>PCIE</b>數據<b class='flag-5'>鏈路層</b>架構解析
    主站蜘蛛池模板: 绵阳市| 朔州市| 乌兰县| 千阳县| 安泽县| 五指山市| 五莲县| 栾川县| 楚雄市| 区。| 昌平区| 建昌县| 乐陵市| 诸暨市| 上饶市| 商水县| 河南省| 莱西市| 高淳县| 铜山县| 荃湾区| 探索| 新平| 策勒县| 清涧县| 嘉定区| 泰来县| 伊吾县| 桑植县| 惠安县| 晋城| 江达县| 南宁市| 嘉善县| 泽库县| 社旗县| 洮南市| 佛学| 宜黄县| 大同市| 岐山县|