1. 程式人生 > >熱拔插和

熱拔插和

本文主要講述PCI Express熱拔插模型,為所有支援熱拔插功能的各種規格的裝置定義了一個標準用法模型。在熱拔插設計中,功耗也是需要慎重考慮的問題,當在系統執行時,新增一張新卡時,必須保證新卡的功耗需求不超過系統能提供功耗的極限。在允許新卡工作前需要一種機制查詢裝置的功耗要求,這可以從Power Budgeting暫存器中讀取。

背景

使用PCIe的系統通常需要高的可用性或者non-stop工作,線上服務供應商需要計算機系統一年中僅僅有幾分鐘的空閒時間。構建這樣系統可能受到多方面因素的影響,但是裝置可靠性顯然是很重要的。為了便於達成這樣的目標,PCIe使用三個重要的功能來支援add-in卡的熱拔插/熱交換:

  1. 在不關閉系統的情況下,替換失效的擴充套件卡.
  2. 在修復過程之中保持OS和其他服務不間斷執行.
  3. 關閉和重啟與失效裝置相關的軟體.

在PCI廣泛普及前,已經開發許多熱拔插解決方案專利來支援擴充套件卡的移除和替代。PCI實現最初的實現並不支援卡的熱移除和插入,但是已經有兩個標準解決方案可以支援PCI中的這個功能。第一個就是PC伺服器主機板和擴充套件Chassis中所用的熱拔插PCI卡;第二個就是所謂的熱交換,該技術主要用於基於無源PCI背板實現的CompactPCI系統中。

在兩種解決方案中,都使用控制邏輯從電氣上把卡邏輯與共享PCI匯流排隔離開來。通過控制電源,時鐘和復位來確保當卡被移除,替代時,可以有序的掉電和有序上電,卡的狀態和電源LED用於通知使用者何時可以安全的移除和替代卡。

擴充套件熱拔插支援PCI Express卡是一個顯著的提升,設計人員也增加了許多原生的熱拔插特徵到PCIe。在規範中定義了配置暫存器,熱拔插訊息和支援熱拔插解決方案的流程。

PCIe環境下的熱拔插

PCIe熱拔插源自於PCI標準Hot-Plug控制器規範1.0版本。PCI Express熱拔插的目標如下:

  1. 支援標準熱拔插控制器規範中定義的標準使用模型. 這確保了從使用者角度PCI Express熱拔插與SHPC 1.0規範保持一致性.
  2. 支援現有作業系統實現的軟體模型. 然而,對於PCI Express熱拔插控制器,使用服從SHPC 1.0規範規範的作業系統是不能工作的,這是由於程式設計介面的差異造成的。

支援熱拔插控制器的必要暫存器整合到了單個Root和Switch埠。在熱拔插軟體控制下,這些控制器和相關的埠介面必須卡的介面訊號確保在卡發生變化時保證有序的掉電和上電。為了達到這樣的目的,那麼需要:
3. 可以斷言和去斷言PCI Express裝置聯結器的PERST_N訊號.
4.

Surprise移除通知

按照PCIe Card CEM規範設計的卡在聯結器上實現了卡在位檢測引腳(PRSNT1_N和PRSNT2_N),這兩引腳比聯結器上其他引腳要短一些,因此,當PCIe卡被移除時,這些引腳首先脫離接觸,這種機制可以在訊號脫離接觸前通知軟體surprise移除,允許軟體有時間移除裝置電源。

PCI和PCI Express熱拔插存在的差異

PCI和PCI Express熱拔插解決方案支援熱拔插所需要的要素本質上是相同的。下圖顯示了PCI支援熱拔插所需要的硬體和軟體要素。PCI解決方案實現了系統板卡上的標準熱拔插控制器,用來處理總線上所有的熱拔插槽。在PCI環境下需要隔離邏輯在PCI卡變化之前從電氣上斷開卡到共享匯流排的連線,以避免active總線上訊號產生抖動。

PCIe使用點對點連線,也就不需要邏輯隔離,但是每個埠需要一個單獨的熱拔插控制器,每個Root和Switch埠定義的標準化軟體介面控制著熱拔插操作。

PCI熱拔插要素
在這裡插入圖片描述

PCI Express熱拔插要素

在這裡插入圖片描述

支援熱拔插所需要的要素

如上圖所示,構建熱拔插支援環境需要要素協同工作,我們大致從軟體和硬體兩層面進行闡述。

軟體要素

下面描述了支援熱拔插功能的主要軟體要素:

  1. 軟體介面:由OS廠商提供,OS提供的工具允許使用者請求聯結器掉電,移除板卡,或者給已安裝的板卡供電.
  2. 熱拔插服務:OS廠商提供,一項處理OS發出的請求的服務。主要包括:
    2.1 提供槽位識別符號
    2.2 開啟或關閉板卡電源
    2.3 開啟或關閉Attention指示
    2.4 讀當前槽位的電源狀態
    熱拔插服務與熱拔插系統驅動互動來滿足OS發出的請求,與熱拔插系統驅動的介面由OS廠商定義。
  3. 標準化熱拔插系統驅動:由系統板卡廠商提供或者OS廠商提供,接受OS中熱拔插服務的請求。與硬體熱拔插控制器互動來實現請求.
  4. 裝置驅動:適配卡廠商,一些特定的熱拔插功能必須包含在支援熱拔插裝置驅動中。主要包括:
    4.1 支援靜默命令
    4.2 可選支援暫停命令
    4.3 支援啟動命令或者可選支援恢復命令

支援熱拔插功能的系統可以使用不支援熱拔插功能的OS。在這種情況下,儘管系統BIOS可能包含了熱拔插相關的軟體,但是熱拔插服務可能並不存在。假定使用者不進行板卡的熱拔插,那麼系統作為一個標準非熱拔插系統使用:
1.