一,、故事前傳 前面的文章針對(duì)PCIe的一部分內(nèi)容已經(jīng)做了解析,。 較為詳細(xì)解釋請(qǐng)見之前的文章: 1. PCIe技術(shù)概述; 2.0~2.8 PCIe事務(wù)層詳細(xì)解析,; 3.0~3.2 PCIe數(shù)據(jù)鏈路層詳細(xì)解析,; 4.0~4.1 PCIe物理層解析; 5. PCIe電源管理,; 6. PCIe系統(tǒng)復(fù)位方式,;
二、熱插拔(Hot-Plug) 當(dāng)你準(zhǔn)備在不斷電的情況下插拔一塊PCIe SSD時(shí),,你要小心了,。如果在PCIe設(shè)備不支持熱插拔的條件下,很可能會(huì)對(duì)主板或PCIe插槽造成損毀。 為了放置意外的發(fā)生,,PCIe Spec設(shè)計(jì)了一種"No Surprise"熱插拔機(jī)制,,即,當(dāng)用戶要插拔PCIe設(shè)備時(shí),,必須先通知系統(tǒng)軟件做好準(zhǔn)備,,然后通過指示燈告知用戶熱插拔的狀態(tài)。 PCIe環(huán)境下的熱插拔需要軟件與硬件的通力合作,。先來看一張示意圖,,紅色框內(nèi)屬于軟件方面的需求,綠色框內(nèi)是硬件方面的需求,。 軟件方面主要包括: User Interface: 這部分由系統(tǒng)OS提供,。主要允許用戶可以請(qǐng)求插拔PCIe設(shè)備。 Hot-Plug Service: 這部分也是由系統(tǒng)OS提供,。主要負(fù)責(zé)處理用戶插拔PCIe設(shè)備的請(qǐng)求,。 Standardized Hot Plug System Driver: 這部分驅(qū)動(dòng)可以由系統(tǒng)OS或者主板提供。 Device Driver: 這部分主要有適配卡提供,。
硬件方面主要包括: Hot-Plug Controller: 主要負(fù)責(zé)接收和處理來自Hot Plug System Driver的指令,。 Card Slot Power Switching Logic: 主要被Hot Plug Controller控制,用于turn-on/off電源,。 Card Reset Logic: 按照Hot-plug System Driver的指示,,Hot Plug Controller向需要插拔PCIe設(shè)備的插槽(Slot)傳送PERST#信號(hào)。 Power Indicator: 主要負(fù)責(zé)指示設(shè)備連接器上面的電源狀態(tài)。 Attention Indicator: 這個(gè)是警示燈,提醒用戶熱插拔失敗狀態(tài),,所以一般情況下處于關(guān)閉狀態(tài),。 Card Present Detect Pins: PCIe設(shè)計(jì)了兩個(gè)用于檢測(cè)PCIe設(shè)備是否存在的信號(hào)PRSNT1#和PRSNT2#。 PRSNT#1接地,,當(dāng)PCIe設(shè)備存在時(shí),PRSNT#2拉高。
在介紹PCIe設(shè)備插拔的過程前,,我們先了解一下PCIe插槽的On/Off狀態(tài):
PCIe Slot ON: PCIe Slot OFF:
斷電,; RefClk參考時(shí)鐘關(guān)閉,; PCIe鏈路是關(guān)閉狀態(tài)或; PERST#信號(hào)處于有效狀態(tài),。
如果要調(diào)整Slot上的狀態(tài),,步驟如下: PCIe Slot ON轉(zhuǎn)為OFF: 先關(guān)停PCIe鏈路。主要發(fā)送EIOS序列進(jìn)入高阻態(tài); 其次,,向slot發(fā)送PERST#信號(hào),; 然后,關(guān)掉RefClk參考時(shí)鐘,; 最后,,給slot斷電。
PCIe Slot OFF轉(zhuǎn)為ON:
在PCIe slot上面插拔PCIe設(shè)備的步驟是什么呢? 移除PCIe設(shè)備:
初始狀態(tài)是:Attention Indicator(Yellow)-Off,,Power Indicator(Green)-On
步驟是: 用戶通過壓下Attention按鈕或者在軟件界面告知系統(tǒng)移除PCIe設(shè)備的消息,。當(dāng)按下Attention按鈕之后,Hot-Plug Controller檢查到這個(gè)訊息之后,,會(huì)發(fā)送中斷給Root Complex,。之后,Hot-Plug Service會(huì)調(diào)用Hot-Plug System Driver去讀取slot的狀態(tài)信息并且偵測(cè)到Attention按鈕的狀態(tài),; Hot-Plug Service調(diào)用Hot-Plug System Driver讓Power指示燈開始閃爍5s并通過狀態(tài)寄存器來驗(yàn)證熱插拔的請(qǐng)求,; Hot-Plug Service命令Device Driver停用PCIe設(shè)備; 軟件通過Link Control Register關(guān)閉PCIe鏈路,; 軟件命令Hot-Plug Controller關(guān)閉slot,; 斷電后,Power指示燈處于OFF狀態(tài),; 系統(tǒng)為PCIe設(shè)備尋找對(duì)應(yīng)的驅(qū)動(dòng),,并將驅(qū)動(dòng)放入內(nèi)存; 系統(tǒng)取消對(duì)Slot的配置資源,。
插入PCIe設(shè)備: 初始狀態(tài)是:Attention Indicator(Yellow)-Off,,Power Indicator(Green)-Off
步驟是: 用戶安裝PCIe設(shè)備,并且壓下Attention按鈕或者在軟件界面告知系統(tǒng)安裝PCIe設(shè)備的信息,。主要通過發(fā)送中斷的形式告知系統(tǒng)熱插拔信息; 熱插拔軟件通過狀態(tài)寄存器來驗(yàn)證熱插拔的請(qǐng)求,; 軟件命令Power指示燈開始閃爍,; 軟件命令Hot-Plug Controller將Slot打開,讓Slot處于ON狀態(tài),; 上電后,,Power指示燈處于ON狀態(tài); 系統(tǒng)為PCIe設(shè)備尋找對(duì)應(yīng)的驅(qū)動(dòng),并將驅(qū)動(dòng)放入內(nèi)存,; 系統(tǒng)調(diào)用驅(qū)動(dòng)完成對(duì)PCIe設(shè)備的初始化,。
|