前言本文主要講述PCIe熱插拔機制,通過圖形方式方便讀者快速掌握。
一、概述
如果在PCIe設備不支持熱插拔的條件下,在不斷電的情況下插拔一塊PCIe SSD時,很可能會對主板或PCIe插槽造成損毀。
為了防止意外的發生,PCIe Spec設計了一種“No Surprise”熱插拔機制,即,當用戶要插拔PCIe設備時,必須先通知系統軟件做好準備,然后通過指示燈告知用戶熱插拔的狀態。
二、原理詳解
2.1 熱插拔原理總結
PCIe總線的熱插拔主要指的是PCIe卡設備的熱插拔以及相關的實現機制等。
如圖所示,上方部分PCIe卡有兩個用于熱插拔機制的引腳——PRSNT1#和PRSNT2#。PCIe卡設備上的這兩個信號之間是短路的,下方部分PCIe插槽的PRSNT1#被固定地連接到地,PRSNT2#則被上拉。且PCIe卡上的這兩個信號的金手指長度要比其他的信號的金手指長度要短一點。當PCIe卡設備未被完全插入插槽時,插槽的PRSNT2#信號由于上拉的作用,將一直處于高電平狀態。當PCIe卡設備被完全插入插槽后,PRSNT1#與插槽上接地的PRSNT1#連接,同時插槽上的PRSNT2#信號則會被PCIe卡設備的短路線連接到地,從而使得其變為低電平。換句話說,從插槽的角度看,當PRSNT2#位高電平時,則認為PCIe卡設備未能正確插入或者無PCIe卡設備;當PRSNT2#位低電平時,表明PCIe卡設備被正確地插入插槽中。
2.2 熱插拔軟硬件要求
熱插拔不僅僅是硬件的事,其需要軟硬件協同實現。要想實現熱插拔功能,操作系統、主板熱插拔驅動器、PCIe卡設備驅動以及PCIe卡硬件功能都必須支持熱插拔,缺一不可。從PCIe卡設備硬件功能的角度來看,其需要支持Quiesce命令、Pause命令(可選)、Start命令和Resume命令。
PCIe環境下的熱插拔需要軟件與硬件的通力合作。紅色框內屬于軟件方面的需求,綠色框內是硬件方面的需求。
軟件方面主要包括:
1、User Interface: 這部分由系統OS提供。主要允許用戶可以請求插拔PCIe設備。
2、Hot-Plug Service: 這部分也是由系統OS提供。主要負責處理用戶插拔PCIe設備的請求。
3、Standardized Hot Plug System Driver: 這部分驅動可以由系統OS或者主板提供。
4、Device Driver: 這部分主要有適配卡提供。
硬件方面主要包括:
1、Hot-Plug Controller: 主要負責接收和處理來自Hot Plug System Driver的指令。
2、Card Slot Power Switching Logic: 主要被Hot Plug Controller控制,用于turn-on/off電源。
3、Card Reset Logic: 按照Hot-plug System Driver的指示,Hot Plug Controller向需要插拔PCIe設備的插槽(Slot)傳送PERST#信號。
4、Power Indicator: 主要負責指示設備連接器上面的電源狀態。
5、Attention Indicator: 這個是警示燈,提醒用戶熱插拔失敗狀態,所以一般情況下處于關閉狀態。
6、Card Present Detect Pins: PCIe設計了兩個用于檢測PCIe設備是否存在的信號PRSNT1#和PRSNT2#。PRSNT#1接地,當PCIe設備存在時,PRSNT#2拉高。
橋設備(Switch等)中還需要支持熱插拔控制器(Hot Plug Controller)。
注:PCIe總線除了有一個Base Spec之外,還有一個關于PCIe卡設備的Spec——PCIe Card ElectroMechanical Spec(CEM)。
與PCI總線不同,PCIe總線采用的是點到點的連接(Point-to-Point Connections),因此其并不像PCI總線那樣需要用于卡設備的隔離邏輯(Isolation Logic),但是每個端口(橋設備中的,如Root和Switch)都必須包含一個獨立的熱插拔控制器(Hot Plug Controller),如下圖所示:
配置空間中,與熱插拔相關的寄存器如下圖所示:
-
熱插拔
+關注
關注
2文章
224瀏覽量
37314 -
硬件
+關注
關注
11文章
3312瀏覽量
66200 -
PCIe
+關注
關注
15文章
1234瀏覽量
82579
原文標題:PCIe熱插拔機制(詳細)總結
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論