0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

扒一扒PCIe中的Flow Control

Spinal FPGA ? 來源:Spinal FPGA ? 2023-07-03 09:20 ? 次閱讀

編 者 按

續(xù)接上文,接續(xù)扒一扒PCIe中的Flow Control

鏈路層把TLP分為幾類?

在處理TLP報文時,根據(jù)Fmt字段以及Type字段可以將TLP報文分為二十多種,當(dāng)TLP報文送至數(shù)據(jù)鏈路層時,數(shù)據(jù)鏈路層在進(jìn)行流量控制處理時則不會考慮這么多種情況。數(shù)據(jù)鏈路層里面的Flow Control,則會將報文分為三類:

Post:不需要Target端返回響應(yīng)報文的TLP請求。

Non-Post:需要Target端返回響應(yīng)報文的TLP請求。

Cmpl:響應(yīng)TLP報文。

而同時,數(shù)據(jù)鏈路層在進(jìn)行流量管理時會將TLP的數(shù)據(jù)報文頭、數(shù)據(jù)負(fù)載分開進(jìn)行流量控制。也就意味著數(shù)據(jù)鏈路層的流量控制每個VC分為了六個通道:

Post Header

Post Data

Non-Post Header

Non-Post Data

Cmpl Header

Cmpl Data

這在cocotb-ext中的FcChannelState中可以看出:

23f421b6-18b7-11ee-962d-dac502259ad0.png

Flow Control初始化

Flow Control的初始化在DL_INIT中:

241eac4c-18b7-11ee-962d-dac502259ad0.jpg

所用到的DLLP報文為:

2434498a-18b7-11ee-962d-dac502259ad0.jpg

按照Spec里面的規(guī)定,F(xiàn)low Control的初始化順序?yàn)椋?/p>

InitFC1-P (first)

InitFC1-NP (second)

InitFC1-Cpl (third)

無論是InitFC1、InitFC2,其報文格式定義基本相同。InitFC1、InitFC2所做的事情也基本相同,就是告知發(fā)送端Header、Data的令牌數(shù)??吹揭欢尉W(wǎng)上的解釋:“FC_Init1和FC_Init2干的活不是差不多嘛,為什么還需要FC_Init2呢?原因是,不同的設(shè)備完成FC_Init1的時間可能是不同的,增加FC_Init2是為了保證每個設(shè)備都能收到FC初始化DLLP。”

如果FC為0,則表示該通道不受令牌限制,即無流量控制(EP設(shè)備以及不支持P2P的RC的Cmpl常設(shè)為0,故建議在涉及時對于Cmpl時建議仔細(xì)考慮。像Xilinx PCIe IP EP模式的的RC接口,不建議做反壓)。

這里著重看下 Scale和FC域,F(xiàn)C域?yàn)?2bit,隨著PCIe鏈路速度的提升,Spec規(guī)定了Scale域以擴(kuò)大令牌數(shù):

2458ecb8-18b7-11ee-962d-dac502259ad0.jpg

按照協(xié)議里,最大可以支持到16bit。而FC域僅有12bit,協(xié)議里規(guī)定了FC的定義:

2472be7c-18b7-11ee-962d-dac502259ad0.jpg

在cocotbext-pcie里,關(guān)于FC位寬的定義,Header、Data采用12、16bits:

24906094-18b7-11ee-962d-dac502259ad0.png

24aefd56-18b7-11ee-962d-dac502259ad0.png

Flow Control的初始化在cocotbext-pcie中也很明了簡單:

24d250bc-18b7-11ee-962d-dac502259ad0.png

可以看到,由于FC_INIT1、FC_INIT2內(nèi)容基本一致,F(xiàn)C2基本沒有做什么處理(具體真實(shí)的實(shí)現(xiàn)不了解)。

》令牌消耗

發(fā)送端發(fā)送一個TLP報文,在數(shù)據(jù)鏈路層需消耗Header、Data令牌。每一個TLP報文需消耗一個TLP,而如果有數(shù)據(jù)負(fù)載則每四個DW消耗一個Data令牌:

2507735a-18b7-11ee-962d-dac502259ad0.png

數(shù)據(jù)鏈路層進(jìn)行判定是否能發(fā)送該數(shù)據(jù)出去:

25304ffa-18b7-11ee-962d-dac502259ad0.png

》令牌更新

令牌周期性的更新所用到的DLLP格式為:

2552500a-18b7-11ee-962d-dac502259ad0.jpg

接收端按照HdrFC、DataFC中的內(nèi)容更新其令牌:

256662fc-18b7-11ee-962d-dac502259ad0.png

這里面看起來有一點(diǎn)不太合適的地方就是沒有考慮Scale,按照DLLP里面的報文解析:

25974034-18b7-11ee-962d-dac502259ad0.png

由于FC只有12bit,這里對于16bit的場景支持欠妥。

更新周期

無論是Flow Control還是之前所說到的ACK/NAK,協(xié)議中都規(guī)定了最大發(fā)送間隔時間。在cocotbext-pcie中的計(jì)算方式如下:

25bfa84e-18b7-11ee-962d-dac502259ad0.png

這里面的計(jì)算單位是Symbol Time(物理層發(fā)送1Byte數(shù)據(jù)的時間)。這里面可能乍看懵逼,這部分在PCIe Spec 5.0里對應(yīng)Appendixes H里:

Flow Control Latency:

26029280-18b7-11ee-962d-dac502259ad0.jpg

ACK Latency:

2638349e-18b7-11ee-962d-dac502259ad0.jpg

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601232
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1200

    瀏覽量

    82352
  • TLP
    TLP
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    15592
  • Flow
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    8826
  • 報文
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    4012

原文標(biāo)題:原來如此—PCIe的Flow Control

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    與無線網(wǎng)絡(luò)相關(guān)的那些事

    ,體驗(yàn)上網(wǎng)帶來的愉悅(ps:天下沒有免費(fèi)的午餐,認(rèn)證登陸界面的廣告以及商戶提供產(chǎn)品內(nèi)容,也能接受這樣的廣告植入形式)在上菜時,而不是先吃而是拍照片發(fā)微博\微信到朋友圈內(nèi),這也間接的為商戶進(jìn)行口碑宣傳。你與無線網(wǎng)絡(luò)都有哪些趣
    發(fā)表于 05-27 11:40

    我看過的那些Linux相關(guān)的書籍

    來北京工作已經(jīng)個多月,大都市的生活比起讀大學(xué)要忙碌得多,尤其是出行,基本以小時為基本的計(jì)時單位。有時茫然看著窗外車水馬龍,會有些迷茫自己選擇的是對還是錯?! ☆}外話不多說,回歸這次的主題,
    發(fā)表于 07-04 06:39

    渣機(jī)產(chǎn)品有哪些參數(shù)

     銑挖機(jī)履帶式挖掘裝載機(jī)(俗名:渣機(jī))是種連續(xù)生產(chǎn)的高效率出礦設(shè)備,主要用于礦山巖巷、半煤巖巷掘進(jìn),也可以用于引水洞、鐵路隧道施工和國防洞窟施工的裝載作業(yè),渣機(jī)與我公司生產(chǎn)的煤
    發(fā)表于 09-02 08:00

    C語言hello world背后的內(nèi)幕

    行時,它在內(nèi)存是什么樣子的?程序的執(zhí)行入口為什么是 main 函數(shù)?可執(zhí)行文件的內(nèi)部結(jié)構(gòu)是怎么樣的?閑話少說,讓我們進(jìn)入正題, hello world 背后的內(nèi)幕。注:本文是在
    發(fā)表于 09-30 10:31

    采用Flow Control機(jī)制的PCIe總線

    PCIe總線為了解決這問題,提出了Flow Control的概念,如下圖所示。PCIe總線
    的頭像 發(fā)表于 04-26 08:54 ?5799次閱讀
    采用<b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>機(jī)制的<b class='flag-5'>PCIe</b>總線

    Flow Control機(jī)制可以顯著地提高總線的傳輸效率

    PCIe Spec規(guī)定,PCIe設(shè)備的每個端口(Ports)都必須支持Flow Control機(jī)制,在發(fā)送TLP之前,
    的頭像 發(fā)表于 05-24 09:26 ?7099次閱讀
    <b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>機(jī)制可以顯著地提高總線的傳輸效率

    美容儀哪個牌子好?來令人眼花繚亂的日本美容儀

    獲得了大眾的喜愛。美容儀哪個牌子好?小編給你日本的美容儀神器品牌。 我們都知道,日本是個科技大國,不管是電器類還是美容儀類,都收獲了世界大批粉絲的追捧,市面上的美容儀品牌多種多樣,價格相差也大,各大美容儀從洗臉到瘦臉
    發(fā)表于 04-16 19:50 ?9845次閱讀
    美容儀哪個牌子好?來<b class='flag-5'>扒</b><b class='flag-5'>一</b><b class='flag-5'>扒</b>令人眼花繚亂的日本美容儀

    好用的日本家用美容儀品牌,讓你享受清潔肌膚的樂趣

    了,很多人都愿意嘗試美容儀帶來的護(hù)膚體驗(yàn)。美容儀真的有用嗎?它的價格相比較于去美容院會劃算很多,但是卻比般的護(hù)膚保養(yǎng)品昂貴,是真的物有所值還是商家的噱頭?今天就來日本好用的家用
    發(fā)表于 06-04 21:03 ?834次閱讀

    店saas系統(tǒng)創(chuàng)新性服務(wù)平臺的優(yōu)勢是什么

    也在不斷升級換代,比如目前新代的店智能數(shù)字店鋪系統(tǒng)。 前沿科技讓店鋪數(shù)字化管理趨于精準(zhǔn),店數(shù)字店鋪系統(tǒng)除了常規(guī)的收銀支付等最基本的功能外,結(jié)合當(dāng)前最前沿的人工智能、5G、大數(shù)據(jù)等技術(shù)于
    的頭像 發(fā)表于 10-15 10:14 ?2018次閱讀

    中斷為什么不能調(diào)printf?

    前面說會寫下Modbus-RTU的實(shí)現(xiàn),寫了1000多字了,有興趣的稍等下哈。前面在個群里看到個朋友在個串口接收中斷里打印遇到了問
    發(fā)表于 12-04 12:21 ?0次下載
    <b class='flag-5'>扒</b><b class='flag-5'>一</b><b class='flag-5'>扒</b>中斷為什么不能調(diào)printf?

    個超棒的stm32的開源usb-can項(xiàng)目,canable及PCAN固件

    個超棒的stm32的開源usb-can項(xiàng)目,canable及PCAN固件
    發(fā)表于 12-20 18:55 ?36次下載
    <b class='flag-5'>扒</b><b class='flag-5'>一</b>個超棒的stm32的開源usb-can項(xiàng)目,canable及PCAN固件

    PCIeFlow Control

    在處理TLP報文時,根據(jù)Fmt字段以及Type字段可以將TLP報文分為二十多種,當(dāng)TLP報文送至數(shù)據(jù)鏈路層時,數(shù)據(jù)鏈路層在進(jìn)行流量控制處理時則不會考慮這么多種情況。
    發(fā)表于 07-12 15:16 ?1254次閱讀
    <b class='flag-5'>扒</b><b class='flag-5'>一</b><b class='flag-5'>扒</b><b class='flag-5'>PCIe</b><b class='flag-5'>中</b>的<b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>

    雕銑機(jī)、雕刻機(jī)和加工中心之間的區(qū)別

    中心、雕銑機(jī)、雕刻機(jī),之間有什么區(qū)別?相信這句話很多剛剛加入這個圈的朋友都會問,然后在買機(jī)械設(shè)備的時候不太懂,不知道怎么區(qū)分,到底應(yīng)該買什么樣的設(shè)備,才能達(dá)到自己的需求,今天小編就為大家他們?nèi)咧g的區(qū)別。
    的頭像 發(fā)表于 01-15 09:48 ?663次閱讀

    晶振頻率漂移的原因

    晶振頻率漂移的原因? 晶振頻率漂移是指晶振器輸出頻率在長時間使用逐漸偏離其標(biāo)稱頻率的現(xiàn)象。晶振頻率漂移是種晶振器的固有性能,其原因
    的頭像 發(fā)表于 01-26 14:20 ?885次閱讀

    折疊屏手機(jī)背后的“黑科技”

    折疊屏手機(jī)似乎正成為各大品牌下步推新的產(chǎn)品,那么今天,就讓我們這里面到底有什么“黑科技”。
    的頭像 發(fā)表于 02-26 10:34 ?1180次閱讀
    <b class='flag-5'>扒</b><b class='flag-5'>一</b><b class='flag-5'>扒</b>折疊屏手機(jī)背后的“黑科技”