服務(wù)器可靠性,、可用性和可維護(hù)性(RAS)已經(jīng)成為商務(wù)活動(dòng)中不可或缺的因素,同時(shí),,隨著RAS承諾正??捎霉ぷ鲿r(shí)間接近99.999%,即“5個(gè)9”,,運(yùn)行中更換或添加元件已經(jīng)變得很關(guān)鍵,。PCI Express(PCIe)作為一串行通信接口標(biāo)準(zhǔn)而被引入到PC和服務(wù)器環(huán)境,此后,,該標(biāo)準(zhǔn)發(fā)揮了引導(dǎo)作用,,如今發(fā)展為服務(wù)器互連領(lǐng)域選擇的協(xié)議之一。這些服務(wù)器上的PCIe插槽要求為快速熱插拔這一點(diǎn)變得極為重要,,這在下一代設(shè)計(jì)中顯然也很重要,。要使服務(wù)器系統(tǒng)維持在“高可用性”,熱插拔功能非常關(guān)鍵,。
熱插拔功能的基本目的是,,允許電路板和外殼進(jìn)行有序地活插拔,而不影響系統(tǒng)的運(yùn)行,。維修或更換有故障器件時(shí)通常要這么做,,因?yàn)橐才藕梅?wù)器停機(jī)時(shí)間以更換或者安裝外設(shè)卡通常很難,,當(dāng)然也不是不可能。具有以這種方式插入或更換I/O設(shè)備的能力可避免系統(tǒng)停機(jī)或者至少可將系統(tǒng)停機(jī)時(shí)間縮到最短,。該技術(shù)也可用于為系統(tǒng)的重新配置而增加新功能,。膝上型電腦用戶(hù)也需要熱插拔能力來(lái)更換有I/O功能的卡,如裝在對(duì)接站的硬驅(qū)和通信口,。
PCI規(guī)范2.1原來(lái)未計(jì)劃提供熱插拔應(yīng)用功能,,但是后來(lái)在1997年,推出了PCI熱插拔規(guī)范1.0,,定義了基本的平臺(tái),、附加卡和軟件要求。不過(guò),,在解釋和執(zhí)行規(guī)范方面,,卻給系統(tǒng)開(kāi)發(fā)者和系統(tǒng)用戶(hù)預(yù)留了很大的靈活性。另外,,未定義軟件可見(jiàn)寄存器組,。2001年,推出了一套新規(guī)范:PCI標(biāo)準(zhǔn)熱插拔控制器(SHPC)1.0和PCI熱插拔1.1,。這些規(guī)范更嚴(yán)格了用戶(hù)接口,,并定義了標(biāo)準(zhǔn)寄存器組,極大地提高了熱插拔軟件開(kāi)發(fā)的兼容性,。
然而,,由于PCI是多點(diǎn)共享總線(xiàn),用反射波開(kāi)關(guān),,所以硬件有局限性,。總線(xiàn)不隔離而插入器件是不可能的,。要解決這一問(wèn)題,,有兩種可能的選擇:依靠平臺(tái)實(shí)現(xiàn)可插入要求,即熱插拔,,或依靠附加卡實(shí)現(xiàn)可插入的要求,,即熱交換。
兩種方法都有缺點(diǎn),,可采用一些創(chuàng)新性的方法,,如在卡插入系統(tǒng)前,對(duì)PCI引腳預(yù)加電,,來(lái)避免如產(chǎn)生假信號(hào)這樣的問(wèn)題,,以保持?jǐn)?shù)據(jù)的完整性。標(biāo)準(zhǔn)的PCI連接器引腳長(zhǎng)度相同,,因此熱交換環(huán)境下,,附加卡的加電順序無(wú)法達(dá)到。為引腳,?錯(cuò)方案的“緊湊型PCI”定義了一組新的連接器,。這樣絕大多數(shù)限制解除了,但是因?yàn)镻CI是并行總線(xiàn),,性能成了一個(gè)瓶頸,。總線(xiàn)工作的頻率取決于總線(xiàn)負(fù)載,,總線(xiàn)上器件越多,,總線(xiàn)速度就越慢。最后,,由于PCI總線(xiàn)具有共享的特點(diǎn),,經(jīng)受不住元件故障,這是因?yàn)榭偩€(xiàn)上任何不穩(wěn)定的行為都會(huì)使總線(xiàn)上所有器件無(wú)法通信,。
PCI Express一開(kāi)始就設(shè)計(jì)為具有熱插拔功能,。同樣,熱插拔寄存器也是PCIe功能的構(gòu)成部分,,使操作系統(tǒng)具有標(biāo)準(zhǔn)的熱插拔硬件寄存器接口,,該接口可通過(guò)PCIe總線(xiàn)的配置接入來(lái)存取。PCI Express也通過(guò)定義基本架構(gòu)水平的硬件要求的熱插拔功能,,而定義了一個(gè)標(biāo)準(zhǔn)的使用模型,。有了熱插拔控制的固有支持,就能使創(chuàng)新的服務(wù)器模塊形狀在加電狀態(tài)下就可插入或拔掉,,不用打開(kāi)機(jī)箱,。
在基于PCIe的服務(wù)器系統(tǒng)中,熱插拔插槽既可由芯片組也可由開(kāi)關(guān)的下游口提供,。由于PCIe是點(diǎn)對(duì)點(diǎn)總線(xiàn),,根組件端口數(shù)有限,通常要有開(kāi)關(guān),,以進(jìn)行插槽擴(kuò)展和創(chuàng)建,。對(duì)軟件而言,這些開(kāi)關(guān)表現(xiàn)為PCI-PCI橋,,每個(gè)完成熱插拔插槽的口在橋結(jié)構(gòu)的空間都有各自的熱插拔寄存器組,。這些寄存器向軟件報(bào)告有無(wú)已定義的熱插拔機(jī)制,包含電源控制,、插槽指示器以及卡插入/移去,、閉鎖打開(kāi)/閉合和注意按鈕摁下的標(biāo)志。把中斷上行數(shù)據(jù)流發(fā)送給根組件,,以此來(lái)通知軟件,。通知選項(xiàng)是實(shí)現(xiàn)依賴(lài)型,。
PCIe開(kāi)關(guān)開(kāi)發(fā)者采用了兩種方法提供熱插拔支持,選擇片上(圖1)或者選擇片外SHPC支持,。第一種方法是把控制器邏輯和信令接口嵌入在開(kāi)關(guān)中,,器件和插槽功能寄存器也在開(kāi)關(guān)中實(shí)現(xiàn)。在片外SHPC方案中,,沒(méi)有信令接口,,要求系統(tǒng)硬件設(shè)計(jì)師在電路板上加上附加電路,通過(guò)FPGA或支持I2C的I/O擴(kuò)展器來(lái)模擬熱插拔控制器,。這樣會(huì)增加材料成本,,增大電路板空間,同時(shí)增加設(shè)計(jì)的復(fù)雜性,。PLX技術(shù)PCIe開(kāi)關(guān)就是一個(gè)片上SHPC方案的例子,,所有需要的熱插拔狀態(tài)寄存器都集成在片上,同時(shí)也給出了熱插拔方案要求的所有信號(hào),。PLX開(kāi)關(guān)支持3~8個(gè)熱插拔功能口,,樣充分降低了實(shí)現(xiàn)需要SHPC功能的系統(tǒng)的成本和復(fù)雜性。
PCI Express熱插拔軟件支持功能取決于3個(gè)基本因素:固件支持,、器件驅(qū)動(dòng)器支持和操作系統(tǒng)支持,。這3個(gè)因素都必須支持熱插拔規(guī)范,以使系統(tǒng)能完成附加卡插入和拔出,。
在上電自測(cè)試(POST)期間,,加電時(shí),固件創(chuàng)建和加載某些程序和表格,。這些程序和表格的實(shí)現(xiàn)在“高級(jí)配置與電源接口固件規(guī)范”中已作了定義,。固件也負(fù)責(zé)配置操作系統(tǒng)的系統(tǒng)地址空間。固件將系統(tǒng)地址劃分為許多專(zhuān)用區(qū)域,,包括用于系統(tǒng)存儲(chǔ)器,、系統(tǒng)I/O和PCI配置空間的區(qū)域,這些都是PCI器件要求的,。固件地址映射通過(guò)操作系統(tǒng)支配這些映射的使用,。
當(dāng)把PCIe端點(diǎn)插入PCIe開(kāi)關(guān)插槽時(shí),開(kāi)關(guān)產(chǎn)生激活中斷,,如“出現(xiàn)檢測(cè)改變的中斷”,。根組件把中斷傳給總線(xiàn)驅(qū)動(dòng)器、Windows即插即用(PnP)管理程序和Windows電源管理程序,。Windows PnP管理程序依次請(qǐng)求PCI總線(xiàn)驅(qū)動(dòng)器重新列舉PCI總線(xiàn)器件,,這可能導(dǎo)致資源重新分配。當(dāng)發(fā)現(xiàn)新設(shè)備時(shí),,給相應(yīng)驅(qū)動(dòng)器加載,,然后初始化該設(shè)備并準(zhǔn)備處理I/O(如圖2所示),。
所有在Windows 2000和Windows XP上的熱插拔事件,如插入,、彈出和拔出都可能通過(guò)ACPI 1.0b處理,。Windows XP支持一種附加對(duì)象,,是在ACPI 2.0(the _HPP object)中引入的,。這些操作系統(tǒng)僅限在單個(gè)總線(xiàn)段分配資源,在運(yùn)行時(shí)不能重新分配資源((I/O和存儲(chǔ)器孔),。因此,,橋或開(kāi)關(guān)的插入要求為開(kāi)關(guān)及開(kāi)關(guān)后設(shè)備分配多級(jí)資源。
只有當(dāng)預(yù)分配的資源足夠供給新設(shè)備時(shí),,操作系統(tǒng)才能正確啟動(dòng)器件,。如果要分配的資源不夠,特別是如果插入一個(gè)橋時(shí),,操作系統(tǒng)通常不能在運(yùn)行時(shí)間重新配置PCI-PCI橋,,以處理設(shè)備資源要求。
“固件ACPI規(guī)范3.0”通過(guò)提供支持操作系統(tǒng)能力(_OSC)方法和設(shè)備特定方法(_DSM)來(lái)解決此問(wèn)題,。_OSC方法是一種機(jī)制,,用來(lái)定義硬件的父子依存關(guān)系,把這些關(guān)系傳送給操作系統(tǒng),,而_DSM是一種可選的ACPI控制方法,,能實(shí)現(xiàn)專(zhuān)用器件控制功能并允許OS忽略PCI設(shè)備引導(dǎo)配置。
Windows Vista是一種能發(fā)現(xiàn)PCI Express的OS,,支持多級(jí)重平衡,。多級(jí)重平衡能根據(jù)其后設(shè)備的資源要求來(lái)動(dòng)態(tài)調(diào)節(jié)PCI橋窗口的大小。像_DSM這樣的方法允許平臺(tái)固件高負(fù)荷地為Windows XP和Server 2003引導(dǎo)配置設(shè)備,,而給Windows Vista提供了忽略引導(dǎo)配置資源的自由,,因此資源分配的靈活性更大。這樣能使操作系統(tǒng)重新定位和/或擴(kuò)展PCI橋資源窗口,,以適應(yīng)設(shè)備要求,,否則這將是不可能,這是由于引導(dǎo)設(shè)備要求的限制引起的,。因?yàn)閃indows Vista中的多級(jí)重平衡代碼不再受必須維持系統(tǒng)引導(dǎo)配置資源的限制,,所以運(yùn)行更有效。
總之,,PCIe在事務(wù)處理,、數(shù)據(jù)鏈接和物理層方面具有很大的彈性,加之其點(diǎn)對(duì)點(diǎn)的特性,,有助于基于PCIe的設(shè)計(jì)避免單點(diǎn)故障,。所有這些特點(diǎn),,加上PCIe固有的在硬件和OS級(jí)支持熱插拔的特性,所有這些都表明PCIe正在進(jìn)入RAS的新紀(jì)元,。