<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何實(shí)現PCI Express的熱插拔功能

如何實(shí)現PCI Express的熱插拔功能

作者: 時(shí)間:2011-05-23 來(lái)源:網(wǎng)絡(luò ) 收藏
  服務(wù)器可靠性、可用性和可維護性(RAS)已經(jīng)成為商務(wù)活動(dòng)中不可或缺的因素,同時(shí),隨著(zhù)RAS承諾正??捎霉ぷ鲿r(shí)間接近99.999%,即“5個(gè)9”,運行中更換或添加元件已經(jīng)變得很關(guān)鍵。 (e)作為一串行通信接口標準而被引入到PC和服務(wù)器環(huán)境,此后,該標準發(fā)揮了引導作用,如今發(fā)展為服務(wù)器互連領(lǐng)域選擇的協(xié)議之一。這些服務(wù)器上的e插槽要求為快速這一點(diǎn)變得極為重要,這在下一代設計中顯然也很重要。要使服務(wù)器系統維持在“高可用性”,功能非常關(guān)鍵。

  功能的基本目的是,允許電路板和外殼進(jìn)行有序地活插拔,而不影響系統的運行。維修或更換有故障器件時(shí)通常要這么做,因為要安排好服務(wù)器停機時(shí)間以更換或者安裝外設卡通常很難,當然也不是不可能。具有以這種方式插入或更換I/O設備的能力可避免系統停機或者至少可將系統停機時(shí)間縮到最短。該技術(shù)也可用于為系統的重新配置而增加新功能。膝上型電腦用戶(hù)也需要熱插拔能力來(lái)更換有I/O功能的卡,如裝在對接站的硬驅和通信口。

  PCI規范2.1原來(lái)未計劃提供熱插拔應用功能,但是后來(lái)在1997年,推出了PCI熱插拔規范1.0,定義了基本的平臺、附加卡和軟件要求。不過(guò),在解釋和執行規范方面,卻給系統開(kāi)發(fā)者和系統用戶(hù)預留了很大的靈活性。另外,未定義軟件可見(jiàn)寄存器組。2001年,推出了一套新規范:PCI標準熱插拔控制器(SHPC)1.0和PCI熱插拔1.1。這些規范更嚴格了用戶(hù)接口,并定義了標準寄存器組,極大地提高了熱插拔軟件開(kāi)發(fā)的兼容性。

  然而,由于PCI是多點(diǎn)共享總線(xiàn),用反射波開(kāi)關(guān),所以硬件有局限性??偩€(xiàn)不隔離而插入器件是不可能的。要解決這一問(wèn)題,有兩種可能的選擇:依靠平臺實(shí)現可插入要求,即熱插拔,或依靠附加卡實(shí)現可插入的要求,即熱交換。

  兩種方法都有缺點(diǎn),可采用一些創(chuàng )新性的方法,如在卡插入系統前,對PCI引腳預加電,來(lái)避免如產(chǎn)生假信號這樣的問(wèn)題,以保持數據的完整性。標準的PCI連接器引腳長(cháng)度相同,因此熱交換環(huán)境下,附加卡的加電順序無(wú)法達到。為引腳?錯方案的“緊湊型PCI”定義了一組新的連接器。這樣絕大多數限制解除了,但是因為PCI是并行總線(xiàn),性能成了一個(gè)瓶頸??偩€(xiàn)工作的頻率取決于總線(xiàn)負載,總線(xiàn)上器件越多,總線(xiàn)速度就越慢。最后,由于PCI總線(xiàn)具有共享的特點(diǎn),經(jīng)受不住元件故障,這是因為總線(xiàn)上任何不穩定的行為都會(huì )使總線(xiàn)上所有器件無(wú)法通信。

  PCI 一開(kāi)始就設計為具有熱插拔功能。同樣,熱插拔寄存器也是PCIe功能的構成部分,使操作系統具有標準的熱插拔硬件寄存器接口,該接口可通過(guò)PCIe總線(xiàn)的配置接入來(lái)存取。PCI 也通過(guò)定義基本架構水平的硬件要求的熱插拔功能,而定義了一個(gè)標準的使用模型。有了熱插拔控制的固有支持,就能使創(chuàng )新的服務(wù)器模塊形狀在加電狀態(tài)下就可插入或拔掉,不用打開(kāi)機箱。

  在基于PCIe的服務(wù)器系統中,熱插拔插槽既可由芯片組也可由開(kāi)關(guān)的下游口提供。由于PCIe是點(diǎn)對點(diǎn)總線(xiàn),根組件端口數有限,通常要有開(kāi)關(guān),以進(jìn)行插槽擴展和創(chuàng )建。對軟件而言,這些開(kāi)關(guān)表現為PCI-PCI橋,每個(gè)完成熱插拔插槽的口在橋結構的空間都有各自的熱插拔寄存器組。這些寄存器向軟件報告有無(wú)已定義的熱插拔機制,包含電源控制、插槽指示器以及卡插入/移去、閉鎖打開(kāi)/閉合和注意按鈕摁下的標志。把中斷上行數據流發(fā)送給根組件,以此來(lái)通知軟件。通知選項是實(shí)現依賴(lài)型。

  PCIe開(kāi)關(guān)開(kāi)發(fā)者采用了兩種方法提供熱插拔支持,選擇片上(圖1)或者選擇片外SHPC支持。第一種方法是把控制器邏輯和信令接口嵌入在開(kāi)關(guān)中,器件和插槽功能寄存器也在開(kāi)關(guān)中實(shí)現。在片外SHPC方案中,沒(méi)有信令接口,要求系統硬件設計師在電路板上加上附加電路,通過(guò)FPGA或支持I2C的I/O擴展器來(lái)模擬熱插拔控制器。這樣會(huì )增加材料成本,增大電路板空間,同時(shí)增加設計的復雜性。PLX技術(shù)PCIe開(kāi)關(guān)就是一個(gè)片上SHPC方案的例子,所有需要的熱插拔狀態(tài)寄存器都集成在片上,同時(shí)也給出了熱插拔方案要求的所有信號。PLX開(kāi)關(guān)支持3~8個(gè)熱插拔功能口,樣充分降低了實(shí)現需要SHPC功能的系統的成本和復雜性。


  PCI Express熱插拔軟件支持功能取決于3個(gè)基本因素:固件支持、器件驅動(dòng)器支持和操作系統支持。這3個(gè)因素都必須支持熱插拔規范,以使系統能完成附加卡插入和拔出。

  在上電自測試(POST)期間,加電時(shí),固件創(chuàng )建和加載某些程序和表格。這些程序和表格的實(shí)現在“高級配置與電源接口固件規范”中已作了定義。固件也負責配置操作系統的系統地址空間。固件將系統地址劃分為許多專(zhuān)用區域,包括用于系統存儲器、系統I/O和PCI配置空間的區域,這些都是PCI器件要求的。固件地址映射通過(guò)操作系統支配這些映射的使用。

  當把PCIe端點(diǎn)插入PCIe開(kāi)關(guān)插槽時(shí),開(kāi)關(guān)產(chǎn)生激活中斷,如“出現檢測改變的中斷”。根組件把中斷傳給總線(xiàn)驅動(dòng)器、Windows即插即用(PnP)管理程序和Windows電源管理程序。Windows PnP管理程序依次請求PCI總線(xiàn)驅動(dòng)器重新列舉PCI總線(xiàn)器件,這可能導致資源重新分配。當發(fā)現新設備時(shí),給相應驅動(dòng)器加載,然后初始化該設備并準備處理I/O(如圖2所示)。


  所有在Windows 2000和Windows XP上的熱插拔事件,如插入、彈出和拔出都可能通過(guò)ACPI 1.0b處理。Windows XP支持一種附加對象,是在A(yíng)CPI 2.0(the _HPP object)中引入的。這些操作系統僅限在單個(gè)總線(xiàn)段分配資源,在運行時(shí)不能重新分配資源((I/O和存儲器孔)。因此,橋或開(kāi)關(guān)的插入要求為開(kāi)關(guān)及開(kāi)關(guān)后設備分配多級資源。

  只有當預分配的資源足夠供給新設備時(shí),操作系統才能正確啟動(dòng)器件。如果要分配的資源不夠,特別是如果插入一個(gè)橋時(shí),操作系統通常不能在運行時(shí)間重新配置PCI-PCI橋,以處理設備資源要求。

  “固件ACPI規范3.0”通過(guò)提供支持操作系統能力(_OSC)方法和設備特定方法(_DSM)來(lái)解決此問(wèn)題。_OSC方法是一種機制,用來(lái)定義硬件的父子依存關(guān)系,把這些關(guān)系傳送給操作系統,而_DSM是一種可選的ACPI控制方法,能實(shí)現專(zhuān)用器件控制功能并允許OS忽略PCI設備引導配置。

  Windows Vista是一種能發(fā)現PCI Express的OS,支持多級重平衡。多級重平衡能根據其后設備的資源要求來(lái)動(dòng)態(tài)調節PCI橋窗口的大小。像_DSM這樣的方法允許平臺固件高負荷地為Windows XP和Server 2003引導配置設備,而給Windows Vista提供了忽略引導配置資源的自由,因此資源分配的靈活性更大。這樣能使操作系統重新定位和/或擴展PCI橋資源窗口,以適應設備要求,否則這將是不可能,這是由于引導設備要求的限制引起的。因為Windows Vista中的多級重平衡代碼不再受必須維持系統引導配置資源的限制,所以運行更有效。

  總之,PCIe在事務(wù)處理、數據鏈接和物理層方面具有很大的彈性,加之其點(diǎn)對點(diǎn)的特性,有助于基于PCIe的設計避免單點(diǎn)故障。所有這些特點(diǎn),加上PCIe固有的在硬件和OS級支持熱插拔的特性,所有這些都表明PCIe正在進(jìn)入RAS的新紀元。



關(guān)鍵詞: PCI Express 熱插拔

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>