国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • 1. 什么是PCIe熱插拔
    • 2. PCIe熱插拔的組成和結(jié)構(gòu)
    • 3. PCIe熱插拔的具體流程
    • 4. PCIe熱插拔控制器的編程接口
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

一文詳解PCIe熱插拔原理

05/19 10:35
1108
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1. 什么是PCIe熱插拔

PCIe熱插拔(Hot Plug)是指允許在系統(tǒng)運(yùn)行時(shí)不關(guān)閉電源即可安全插入或拔出PCIe設(shè)備,其廣泛應(yīng)用于服務(wù)器數(shù)據(jù)中心等場景。PCIe熱插拔是提升系統(tǒng)RAS能力的重要手段。

熱插拔控制器所需的寄存器集成到了Root和Switch port中。在熱插拔軟件控制下,這些控制器和port接口必須控制PCIe卡的接口信號(hào),以確保在熱插拔時(shí)有序上電和下電。
PCIe熱插拔是一種“no surprise”(非暴力)的熱插拔方法,即需要事先通知系統(tǒng),然后軟件準(zhǔn)備卡和插槽,并向用戶表明熱插拔過程的狀態(tài),通知用戶現(xiàn)在可以進(jìn)行熱插拔。

暴力移除(Surprise Removal)注意:PCle CEM規(guī)定了PCIe設(shè)備存在檢測引腳PRSNT1# 和 PRSNT2#,如下圖,PRSNT#1固定接地,而PRSNT#2拉高(pull up)。這兩個(gè)引腳(金手指)比其他引腳短,以便它們先斷開連接(從插槽中移除PCIe卡時(shí)),可以提前通知軟件“surprise” removal,從而有時(shí)間在斷開接觸之前移除電源。

2. PCIe熱插拔的組成和結(jié)構(gòu)

如下圖所示,PCIe采用點(diǎn)到點(diǎn)的連接,每個(gè)跟連接器相連的port都需要一個(gè)hot plug控制器。為每個(gè)Root port和Switch port定義的標(biāo)準(zhǔn)軟件接口控制熱插拔操作。

熱插拔所需的元素分為軟件元素和硬件元素。

軟件元素包括以下內(nèi)容:

    User接口:由OS vendor提供。Hot Plug service:由OS vendor提供。標(biāo)準(zhǔn)的Hot Plug系統(tǒng)驅(qū)動(dòng):由system board vendor或OS vendor提供。device驅(qū)動(dòng):由Adapter card vendor提供。

硬件元素包括以下內(nèi)容:

    Hot Plug控制器:負(fù)責(zé)接收和處理來自熱插拔系統(tǒng)驅(qū)動(dòng)的指令。
    Card Reset邏輯:Hot Plug控制器向指定Slot傳送PERST#信號(hào)。
    Power Indicator:指示連接器上的電源狀態(tài)。
    Attention Indicator:警示燈,提示用戶熱插拔失敗狀態(tài),一般處于關(guān)閉狀態(tài)。
    Attention Button:由用戶按下,通知熱插拔軟件要更換PCIe設(shè)備。
    Card Present Detect Pins:有兩個(gè)檢測PCIe設(shè)備是否存在的信號(hào)PRSNT1#和PRSNT2#。
    PRSNT#1固定接地,當(dāng)PCIe設(shè)備未插入插槽時(shí),PRSNT#2為高電平,插入插槽后,PRSNT#2變?yōu)榈碗娖健?/ul>

    3. PCIe熱插拔的具體流程

    接下來分別介紹PCIe設(shè)備的移除和插入的具體流程。

    PCIe設(shè)備移除的流程:

    正常運(yùn)行時(shí)的指示狀態(tài)如下:

      Attention Indicator為黃色 - OffPower Indicator為綠色 - On
      用戶通過按下Attention按鈕或在軟件界面告知系統(tǒng)要移除PCIe設(shè)備。按下Attention按鈕,Hot-Plug控制器檢測到后,會(huì)發(fā)送中斷給RC。然后Hot-Plug Service調(diào)用Hot-Plug驅(qū)動(dòng)去讀取slot狀態(tài)信息并檢測Attention按鈕的狀態(tài)。
      Hot-Plug驅(qū)動(dòng)讓Power指示燈閃爍5s給用戶作指示,用戶可以在這5s內(nèi)再次按該按鈕以取消請(qǐng)求。熱插拔軟件確認(rèn)請(qǐng)求時(shí),Power指示燈繼續(xù)閃爍。如果PCIe設(shè)備當(dāng)前處于關(guān)鍵的系統(tǒng)操作,軟件可能會(huì)拒絕該請(qǐng)求。這種情況下,它會(huì)向熱插拔控制器發(fā)出命令,重新打開電源指示燈。
      如果請(qǐng)求有效,設(shè)備驅(qū)動(dòng)會(huì)停止(quiesce)該設(shè)備。即禁止其生成新請(qǐng)求,并完成或終止所有outstanding的Root或Switch端口請(qǐng)求。軟件通過Link Control寄存器關(guān)閉PCIe鏈路。
      軟件命令Hot-Plug控制器關(guān)閉slot。成功下電后,軟件發(fā)請(qǐng)求關(guān)閉Power指示燈,以告知用戶。用戶釋放機(jī)械鎖(如果有的話),從而使熱插拔控制器從slot中移除所有switched信號(hào)(例如SMBus和JTAG信號(hào))。
      現(xiàn)在PCIe設(shè)備可以移除了。OS釋放分配給該設(shè)備的memory空間、IO空間、中斷線等。

    PCIe設(shè)備插入的流程:

      用戶插入PCIe設(shè)備,并鎖定MRL機(jī)械鎖(如果有的話)。用戶按下Attention按鈕或者在軟件界面告知系統(tǒng)已插入PCIe設(shè)備。
      按鈕按下后,導(dǎo)致狀態(tài)寄存器位被置位,并發(fā)送中斷給RC。然后軟件從該端口讀取slot狀態(tài)并識(shí)別該請(qǐng)求。驅(qū)動(dòng)程序命令控制器閃爍slot電源指示燈,通知用戶不能移除設(shè)備。(從指示燈閃爍開始,用戶在5s內(nèi)再次按下按鈕可以中止請(qǐng)求)。
      驅(qū)動(dòng)程序命令Hot Plug控制器將slot打開。電源接通后,軟件發(fā)出命令打開電源指示燈。鏈路訓(xùn)練完成后,軟件通過分配必要的資源來配置PCIe function。OS為PCIe設(shè)備尋找對(duì)應(yīng)的驅(qū)動(dòng),并將驅(qū)動(dòng)加載到內(nèi)存中。
      OS調(diào)用驅(qū)動(dòng)完成對(duì)PCIe設(shè)備的初始化,并使能PCIe設(shè)備。

    4. PCIe熱插拔控制器的編程接口

    PCIe熱插拔控制器的編程接口是通過PCIe capability寄存器提供的,即下圖紅框里的寄存器。

    slot capability寄存器如下圖。這個(gè)寄存器的各域段是硬件負(fù)責(zé)初始化的,以反映這個(gè)port的特性,例如是否存在Attention按鈕、是否支持Hot Plug能力(Capable)、是否支持暴力插拔(Surprise)等特性。

    slot control寄存器如下圖。軟件通過slot control寄存器來控制Hot Plug event和相關(guān)操作,還有中斷使能等。

    slot status寄存器如下圖。熱插拔控制器監(jiān)控各種event,并向驅(qū)動(dòng)程序報(bào)告這些event。軟件可以使用status位來確定發(fā)生了什么event。這些事件是否通過中斷報(bào)告給系統(tǒng),由slot control寄存器中相關(guān)的enable bit決定。

    PCIe支持以下Hot Plug event,這些event都有一個(gè)status字段和一個(gè)enable字段。status表示事件發(fā)生了但是還沒有被軟件處理。enable表示是否使能通知軟件。

      • Slot Event

    Attention Button Pressed

    Power Fault Detected

    MRL Sensor Changed

    Presence Detect Changed

    Command Completed EventData Link Layer State Changed Event

    參考:

      PCI Express Base SpecificationPCI Express Card Electromechanical SpecificationMindshare?PCI Express Technology

相關(guān)推薦

彩票| 蓝山县| 元氏县| 黑河市| 疏附县| 云林县| 红安县| 文水县| 章丘市| 株洲县| 潞西市| 盐边县| 山西省| 牟定县| 鹿邑县| 湄潭县| 隆化县| 大石桥市| 桐柏县| 郴州市| 万山特区| 鄄城县| 温泉县| 衡东县| 桓台县| 沁源县| 南木林县| 和平县| 荆门市| 新源县| 上蔡县| 甘德县| 泰安市| 垦利县| 尼玛县| 左云县| 太康县| 大丰市| 铁岭市| 湾仔区| 乌苏市|