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

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

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

PCIE數(shù)據(jù)鏈路層架構(gòu)解析

路科驗(yàn)證 ? 來源:LPIoT ? 2024-11-05 17:06 ? 次閱讀

以下文章來源于LPIoT,作者水鳥LPIoT

Pcie數(shù)據(jù)鏈路層

PCIe的數(shù)據(jù)鏈路層在事務(wù)層和物理層之間,用來負(fù)責(zé)鏈路管理,其主要功能是保證來自事務(wù)層的TLP在PCIe鏈路中的正確傳輸,為此數(shù)據(jù)鏈路層定義了一系列的DLLP報(bào)文,數(shù)據(jù)鏈路層使用了容錯(cuò)和重傳機(jī)制保證數(shù)據(jù)傳輸?shù)耐暾院鸵恢滦裕═LP ACK/NAK),此外數(shù)據(jù)鏈路層還需要對(duì)PCIe鏈路進(jìn)行管理(電源管理)和監(jiān)控(流量控制)。

與事務(wù)層不同的是,數(shù)據(jù)鏈路層主要處理端到端(同一條PCIe物理鏈路相鄰兩端設(shè)備的發(fā)送端和接收端)的數(shù)據(jù)傳輸;而事務(wù)層是源設(shè)備和目標(biāo)設(shè)備之間的數(shù)據(jù)傳輸(源設(shè)備與目標(biāo)設(shè)備之間傳輸距離更長(zhǎng),可能經(jīng)過多個(gè)Switch并有多條PCIe物理鏈路)。此處類似于網(wǎng)絡(luò)通訊的概念,鏈路層通訊在直接物理相連的設(shè)備端口進(jìn)行,網(wǎng)絡(luò)層通訊可以跨過多個(gè)設(shè)備進(jìn)行。

數(shù)據(jù)鏈路層結(jié)構(gòu)

數(shù)據(jù)鏈路層使用ACK/NAK協(xié)議發(fā)送和接收TLP(事務(wù)層報(bào)文),由發(fā)送部件和接收部件組成(每個(gè)PCIe設(shè)備的數(shù)據(jù)鏈路層包含了這兩部分,而兩個(gè)PCIe設(shè)備間的通信是發(fā)送部件和接收部件成對(duì)實(shí)現(xiàn)的),如下圖所示;

發(fā)送部件由1.Replay Buffer、2.ACK/NAK DLLP接收邏輯和3.TLP接收邏輯組成;

接收部件由1.“Error Check”邏輯、2.ACK/NAK DLLP發(fā)送邏輯和3.TLP發(fā)送邏輯組成。

e3682e04-90b4-11ef-a511-92fbcf53809c.png

PCIe總線數(shù)據(jù)鏈路層使用Replay Buffer和Error Check部件共通保證數(shù)據(jù)傳輸?shù)目煽啃院屯暾?;來自事?wù)層的TLP先暫存在Replay Buffer中,然后發(fā)送到目標(biāo)設(shè)備;源設(shè)備的數(shù)據(jù)鏈路層根據(jù)來自目標(biāo)設(shè)備的ACK/NAK DLLP報(bào)文來決定是重發(fā)這些TLP,還是清除存放在Replay Buffer中的TLP。

1.Replay Buffer的大小決定過了事務(wù)層可以暫存在數(shù)據(jù)鏈路層的報(bào)文數(shù)量;

2.PCIe設(shè)備使用Error Check檢查接收到的TLP,并決定如何向?qū)Χ嗽O(shè)備進(jìn)行報(bào)文回應(yīng);

數(shù)據(jù)鏈路層狀態(tài)

數(shù)據(jù)鏈路層需要通過物理層來監(jiān)控PCIe鏈路狀態(tài),并維護(hù)數(shù)據(jù)鏈路層的“控制與管理狀態(tài)機(jī)”(Data Link Control and Management State Machine,DLCMSM),可以從物理層獲得與當(dāng)前PCIe鏈路相關(guān)的狀態(tài),如下圖所示:

e38f67d0-90b4-11ef-a511-92fbcf53809c.png

DLCMSM主要包含三個(gè)狀態(tài):DL_Inactive、DL_Iinit、DL_Active

DL_Inactive狀態(tài):物理層通知數(shù)據(jù)鏈路層當(dāng)前PCIe鏈路狀態(tài)不可用,沒有檢測(cè)到PCIe鏈路的對(duì)端連接了PCIe設(shè)備;PCIe設(shè)備從復(fù)位狀態(tài)進(jìn)入DL_Inactive狀態(tài)時(shí),進(jìn)行如下操作:

(1)對(duì)PCIe數(shù)據(jù)鏈路層進(jìn)行徹底復(fù)位:將與PCIe鏈路相關(guān)的寄存器置為復(fù)位值,并丟棄在Replay Buffer中保存的所有報(bào)文;

(2)數(shù)據(jù)鏈路層向事務(wù)層提交DL_Down狀態(tài)信息;

(3)丟棄來自數(shù)據(jù)鏈路層和物理層的所有TLP,不再接收對(duì)端設(shè)備發(fā)送的DLLP;

(4)如果PCIe鏈路對(duì)端有PCIe設(shè)備相連,則物理層的LinkUp狀態(tài)位為1,且事務(wù)層并未禁止當(dāng)前PCIe鏈路時(shí),數(shù)據(jù)鏈路層將從DL_Inactive狀態(tài)遷移到DL_Init狀態(tài)。

(5)如果PCIe鏈路對(duì)端不存在PCIe設(shè)備,則物理層的LinkUp狀態(tài)位為0,此時(shí)數(shù)據(jù)鏈路層一直處于DL_Inactive狀態(tài)。

2.DL_Iinit狀態(tài):物理層通知數(shù)據(jù)鏈路層當(dāng)前PCIe鏈路可用(LinkUp = 1),且物理層正處理鏈路初始化狀態(tài),此時(shí)數(shù)據(jù)鏈路層不能接收或發(fā)送TLP和DLLP;

3.DL_Active狀態(tài):當(dāng)前PCIe鏈路處于正常工作模式,物理層已完成PCIe鏈路訓(xùn)練(LTSSM);此時(shí)數(shù)據(jù)鏈路層可以從事務(wù)層和物理層正常接收和發(fā)送TLP,并處理DLLP。在多數(shù)情況下數(shù)據(jù)鏈路層從DL_Active狀態(tài)遷移到DL_Init狀態(tài),意味著處理器系統(tǒng)出現(xiàn)了異常,系統(tǒng)軟件需要處理這些異常;但如下情況的狀態(tài)遷移不會(huì)引發(fā)異常。

e3b1977e-90b4-11ef-a511-92fbcf53809c.png

DLCMSM除了從物理層獲得當(dāng)前PCIe鏈路狀態(tài)外,還可以使用狀態(tài)位向事務(wù)層報(bào)告數(shù)據(jù)鏈路層所處的狀態(tài);如上圖所示,當(dāng)數(shù)據(jù)鏈路層收到物理層的狀態(tài)信息后,DLCMSM狀態(tài)機(jī)將進(jìn)行狀態(tài)轉(zhuǎn)換,并向事務(wù)層通知PCIe鏈路的狀態(tài)。

1.DL_Down:數(shù)據(jù)鏈路層處于該狀態(tài)時(shí),表示PCIe鏈路暫時(shí)沒有檢測(cè)到對(duì)端連接設(shè)備(并非對(duì)端不存在物理設(shè)備);當(dāng)數(shù)據(jù)鏈路層處于DL_Inactive時(shí),該狀態(tài)位有效;

2.DL_Up:數(shù)據(jù)鏈路層處于該狀態(tài)時(shí),表示PCIe鏈路的對(duì)端連接了設(shè)備;當(dāng)數(shù)據(jù)鏈路層處于DL_Acive狀態(tài)時(shí),該狀態(tài)位有效。

事務(wù)層對(duì)DL_Down/Up狀態(tài)的處理

當(dāng)事務(wù)層收到數(shù)據(jù)鏈路層的DL_Down狀態(tài)信息時(shí),則說明出現(xiàn)了如下狀況:

1.PCIe鏈路的對(duì)端沒有連接設(shè)備;

2.PCIe鏈路丟失了對(duì)端設(shè)備的連接;

3.數(shù)據(jù)鏈路層和物理層出現(xiàn)了某種錯(cuò)誤,PCIe鏈路不能正常工作;

4.系統(tǒng)軟件禁用PCIe鏈路。

事務(wù)層受到DL_Down狀態(tài)信息后:

1.將不再?gòu)臄?shù)據(jù)鏈路層中接收TLP,除了已經(jīng)使用ACK/NAK報(bào)文確認(rèn)過的TLP;

2.RC或Switch的下游端口將復(fù)位與鏈路相關(guān)的內(nèi)部邏輯和狀態(tài);

3.Switch和Bridge的上游端口將復(fù)位相關(guān)的內(nèi)部邏輯和狀態(tài),并丟棄正在處理的TLP;

——此時(shí)Switch和PCIe橋使用Hot Reset方式復(fù)位所有下游端口。

以上是《PCIE數(shù)據(jù)鏈路層整體架構(gòu)》,敬請(qǐng)關(guān)注后續(xù)內(nèi)容

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

    關(guān)注

    15

    文章

    1200

    瀏覽量

    82344
  • 數(shù)據(jù)鏈路層

    關(guān)注

    0

    文章

    54

    瀏覽量

    11979
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    491

    瀏覽量

    27452
  • 網(wǎng)絡(luò)通訊
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    11239

原文標(biāo)題:PCIE數(shù)據(jù)鏈路層整體架構(gòu)

文章出處:【微信號(hào):Rocker-IC,微信公眾號(hào):路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)據(jù)鏈路層組幀

    數(shù)據(jù)鏈路層怎么根據(jù)協(xié)議組幀,本人沒有寫過類似程序,大家有寫過的可否貼下簡(jiǎn)單的程序 啟發(fā)一下。感激不盡。謝謝。
    發(fā)表于 01-17 11:48

    TLP的數(shù)據(jù)鏈路層組成與操作

      本章將著重講述TLP的數(shù)據(jù)鏈路層組成與操作,上一篇更新應(yīng)該為第五講,數(shù)據(jù)鏈路層位于事務(wù)層和物理層之間,使用容錯(cuò)和重傳機(jī)制保證了數(shù)據(jù)傳輸?shù)耐暾院鸵恢滦裕送猓?b class='flag-5'>數(shù)據(jù)鏈路層還需要對(duì)
    發(fā)表于 01-08 17:25

    數(shù)據(jù)鏈路層.ppt

    數(shù)據(jù)鏈路層*3.1  數(shù)據(jù)鏈路層的基本概念*3.2  停止等待協(xié)議  3.2.1 完全理想化的數(shù)據(jù)傳輸  3.2.2 具有最簡(jiǎn)單流量控制的
    發(fā)表于 10-23 16:41 ?0次下載
    <b class='flag-5'>數(shù)據(jù)鏈路層</b>.ppt

    數(shù)據(jù)鏈路層的作用

    數(shù)據(jù)鏈路層的作用:通過一些數(shù)據(jù)鏈路層協(xié)議和鏈路控制規(guī)程,在不太可靠的物理鏈路上實(shí)現(xiàn)可靠的數(shù)據(jù)傳輸。 “鏈路(Link)”和“數(shù)據(jù)鏈路”是不
    發(fā)表于 07-22 16:04 ?7010次閱讀

    數(shù)據(jù)鏈路層的功能

     數(shù)據(jù)鏈路層的功能        數(shù)據(jù)鏈路層要完成許多特定的功能。這些功能包括為網(wǎng)絡(luò)層提供設(shè)計(jì)良好的服務(wù)接口,處理幀同步,處理傳輸差錯(cuò),調(diào)整幀
    發(fā)表于 07-22 16:04 ?3312次閱讀

    數(shù)據(jù)鏈路層的定義

    數(shù)據(jù)鏈路層的定義 一、設(shè)計(jì)數(shù)據(jù)鏈路層的原因
    發(fā)表于 07-22 17:13 ?2545次閱讀
    <b class='flag-5'>數(shù)據(jù)鏈路層</b>的定義

    什么是OSI模型數(shù)據(jù)鏈路層

    什么是OSI模型數(shù)據(jù)鏈路層 數(shù)據(jù)鏈路層最基本的服務(wù)是將源機(jī)網(wǎng)絡(luò)層來的數(shù)據(jù)可靠地傳輸?shù)较噜徆?jié)點(diǎn)的目標(biāo)機(jī)網(wǎng)絡(luò)層。為達(dá)到這一目的,數(shù)據(jù)鏈路層
    發(fā)表于 03-18 15:11 ?2220次閱讀

    數(shù)據(jù)鏈路層到底是什么_數(shù)據(jù)鏈路層工作原理是怎樣的

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

    數(shù)據(jù)鏈路層常用成紙法有哪些_數(shù)據(jù)鏈路層的作用

    本文開始闡述了數(shù)據(jù)鏈路層的概念與數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層的功能或作用,其次闡述了數(shù)據(jù)鏈路層的主要協(xié)議,最后分析了數(shù)據(jù)鏈路層常用成紙法有哪些。
    發(fā)表于 03-14 14:44 ?2126次閱讀
    <b class='flag-5'>數(shù)據(jù)鏈路層</b>常用成紙法有哪些_<b class='flag-5'>數(shù)據(jù)鏈路層</b>的作用

    數(shù)據(jù)鏈路層和傳輸層的區(qū)別是什么

    本文開始介紹了傳輸層的概念、傳輸層的基本功能以及傳輸層服務(wù)類型,其次介紹了數(shù)據(jù)鏈路層功能與工作過程,最后闡述了數(shù)據(jù)鏈路層和傳輸層的區(qū)別。
    發(fā)表于 03-14 15:03 ?2.6w次閱讀
    <b class='flag-5'>數(shù)據(jù)鏈路層</b>和傳輸層的區(qū)別是什么

    數(shù)據(jù)鏈路層設(shè)備有哪些

    數(shù)據(jù)鏈路層的設(shè)備與組件是指那些同時(shí)具有物理層和數(shù)據(jù)鏈路層功能的設(shè)備或組件。數(shù)據(jù)鏈路層的設(shè)備與組件主要有網(wǎng)卡、網(wǎng)橋和交換機(jī)。
    發(fā)表于 03-14 15:20 ?2.5w次閱讀

    一文看懂數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層的區(qū)別

    本文開始介紹了網(wǎng)絡(luò)層的概念及網(wǎng)絡(luò)層的主要功能,其次闡述了數(shù)據(jù)鏈路層的概念和數(shù)據(jù)鏈路層的功能,最后介紹了數(shù)據(jù)鏈路層的作用以及數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層的區(qū)別。
    發(fā)表于 03-14 15:38 ?7.2w次閱讀
    一文看懂<b class='flag-5'>數(shù)據(jù)鏈路層</b>和網(wǎng)絡(luò)層的區(qū)別

    數(shù)據(jù)鏈路層的任務(wù)

    數(shù)據(jù)鏈路層的主要任務(wù)是使網(wǎng)絡(luò)層無需了解物理層的特征而獲得可靠的傳輸。數(shù)據(jù)鏈路層將通過鏈路層數(shù)據(jù)進(jìn)行打包和解包、差錯(cuò)檢測(cè)和校正,并協(xié)調(diào)共享介質(zhì)。
    的頭像 發(fā)表于 02-27 15:08 ?7268次閱讀

    數(shù)據(jù)鏈路層設(shè)備有哪些

    數(shù)據(jù)鏈路層的設(shè)備與組件是指那些同時(shí)具有物理層和數(shù)據(jù)鏈路層功能的設(shè)備或組件。數(shù)據(jù)鏈路層的設(shè)備與組件主要有網(wǎng)卡、網(wǎng)橋和交換機(jī)。
    的頭像 發(fā)表于 02-27 15:17 ?6w次閱讀

    PCIe鏈路層里的ACK/NAK介紹

    ??編 者 按? ? ????讀cocotbext-pcie源碼,有部分牽涉到數(shù)據(jù)鏈路層。雖然自工作以來接觸到PCIe還是蠻多的,但一般往往專注在TLP層,對(duì)于數(shù)據(jù)鏈路層還是接觸的比較
    的頭像 發(fā)表于 06-25 10:31 ?2694次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>鏈路層</b>里的ACK/NAK介紹