專利名稱:檢測以及校正掛起i2c總線的i2c總線監(jiān)視器和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字系統(tǒng)可靠性和健康監(jiān)視的領(lǐng)域。更具體地,本發(fā)明涉及清除掛起總線和復(fù)位I2C總線上從設(shè)備。
技術(shù)背景許多不同類型的計算系統(tǒng)在全世界已獲得了廣泛應(yīng)用。這些計算系統(tǒng)包括個人計算機、服務(wù)器、大型機以及多種獨立和嵌入式的計算設(shè)備。散亂的客戶-服務(wù)器系統(tǒng)連同應(yīng)用程序和信息遍布存在于許多個人計算機網(wǎng)絡(luò)、大型機和小型機中。在由網(wǎng)絡(luò)連接的分布式系統(tǒng)中,用戶可訪問許多應(yīng)用程序、數(shù)據(jù)庫、網(wǎng)絡(luò)系統(tǒng)、操作系統(tǒng)和大型機應(yīng)用程序。計算機為個人和企業(yè)提供了包括字處理、電子表格和會計在內(nèi)的大量軟件應(yīng)用。進(jìn)一步地,網(wǎng)絡(luò)使不同地點的人們之間通過電子郵件、網(wǎng)站、即時消息以及網(wǎng)絡(luò)會議能夠高速通信。
網(wǎng)絡(luò)中的每個計算機和服務(wù)器的核心是能執(zhí)行計算機指令的微處理器。在適合于執(zhí)行特定指令的執(zhí)行單元執(zhí)行這些指令。在超標(biāo)量體系結(jié)構(gòu)中,這些執(zhí)行單元通常包括加載/存儲單元、整數(shù)運算/邏輯單元、浮點運算/邏輯單元以及并行運行的圖形邏輯單元。在處理器體系結(jié)構(gòu)中,操作系統(tǒng)控制處理器與處理器外圍部件的操作??蓤?zhí)行應(yīng)用程序被存儲在計算機的硬盤驅(qū)動器中。計算機的處理器使應(yīng)用程序運行以響應(yīng)用戶輸入。
當(dāng)今,無數(shù)人經(jīng)由連接到因特網(wǎng)的計算機通信和交換信息。通過因特網(wǎng),網(wǎng)站使用戶能夠訪問由其他用戶、機構(gòu)、制造公司、服務(wù)供應(yīng)商、新聞媒介等投放的網(wǎng)頁。諸如那些由Yahoo和Google提供的搜索引擎使用戶通過利用關(guān)鍵字能夠搜索出涵蓋任何主題的信息。因特網(wǎng)服務(wù)供應(yīng)商(ISP)提供了成百上千的服務(wù)器使數(shù)不清的用戶能夠經(jīng)由網(wǎng)絡(luò)通信。這些服務(wù)器被互連并且顯示出冗余,使得如果一個服務(wù)器出故障,一個或多個其它的被分配來代替它。因此,大量服務(wù)器處于運行中并且必須被維護。
無疑地,為監(jiān)視和維護數(shù)以百計的服務(wù)器的系統(tǒng),必須提供服務(wù)器內(nèi)的電子系統(tǒng)來提供服務(wù)器電子基礎(chǔ)結(jié)構(gòu)的監(jiān)視與控制(個人服務(wù)的供電質(zhì)量、溫度、錯誤處理、控制LED等)。這通過控制以及監(jiān)視諸如發(fā)光二極管(LED)、溫度傳感器以及風(fēng)扇的設(shè)備來實現(xiàn)。其他此類設(shè)備可包括存儲器、電源調(diào)節(jié)器以及輸入/輸出(I/O)槽。連接這些設(shè)備的常用并且節(jié)約成本的方法是通過集成電路間(I2C)總線。I2C總線提供了與其所連接的不同電子設(shè)備接口的簡單且成本低廉的方法。I2C總線包括兩個有源線。有源線為雙向串行數(shù)據(jù)線Sda以及雙向串行時鐘線。連接到I2C總線的每個設(shè)備都具有唯一地址并且可作為接收方和/或發(fā)送方。許多設(shè)備可被連接到單一I2C總線。為了與總線上的設(shè)備通信,總線主設(shè)備通常發(fā)送跟隨有數(shù)據(jù)方向位的開始(或重復(fù)開始)條件,7位從設(shè)備地址。作為響應(yīng),其地址被驅(qū)動到總線上的設(shè)備發(fā)送接收方確認(rèn)位。在接收方確認(rèn)位之后,主設(shè)備(在寫情況下)或從設(shè)備(在讀情況下)發(fā)送一個或多個數(shù)據(jù)字節(jié)傳送,每個都跟隨有接收方確認(rèn)位。然后利用停止條件終止通信。
服務(wù)器中通常有許多I2C設(shè)備。電氣布線考慮、I2C中斷等待問題以及I2C總線性能問題導(dǎo)致服務(wù)器將其所有I2C設(shè)備遍布于若干分立I2C總線上。在服務(wù)器內(nèi)提供了連接到所有這些I2C總線的底板管理控制器(BMC)以執(zhí)行系統(tǒng)監(jiān)視以及維護功能。例如,BMC將從溫度傳感器讀取溫度值。如果溫度超過預(yù)定值,BMC可使風(fēng)扇接通或轉(zhuǎn)得更快來將更多的熱量從服務(wù)器的內(nèi)部部件移去。作為另一個例子,BMC可檢測到錯誤的調(diào)節(jié)器電壓并且作為響應(yīng),點亮LED以指示該情況。BMC也可檢測到存儲器中或I/O適配器中的錯誤。I2C設(shè)備可以是主設(shè)備或從設(shè)備。當(dāng)設(shè)備有提供給BMC的新信息時,一些從設(shè)備可發(fā)送中斷信號到BMC。沒有提供中斷的從設(shè)備具有寄存器,其可由BMC查詢以確定其是否有要提供的新信息。例如,BMC可查詢電源調(diào)節(jié)器以確定調(diào)節(jié)器給系統(tǒng)提供多少功率。
因此,I2C系統(tǒng)通常提供環(huán)境控制、健康監(jiān)視、錯誤檢測、電源管理以及系統(tǒng)重要產(chǎn)品數(shù)據(jù)獲取。I2C技術(shù)規(guī)范說明了多總線主設(shè)備和從設(shè)備如何能夠被連接到相同I2C總線以及如何以可靠方式互操作。然而,實際經(jīng)驗表明I2C總線存在多種掛起條件。這些掛起最典型地起因于I2C總線與I2C多路復(fù)用器設(shè)備的交換出現(xiàn)的各種問題,以及I2C設(shè)備進(jìn)入導(dǎo)致其未能完成I2C處理的壞邏輯狀態(tài)并且因此將I2C總線掛起在不能繼續(xù)進(jìn)一步的總線操作的狀態(tài)。當(dāng)總線掛起發(fā)生時,總線必須被清除。目前,這要求連接于BMC的所有I2C總線上的所有I2C設(shè)備的復(fù)位以及BMC本身的復(fù)位。需要一種更好的方法來處理I2C總線掛起情況。
發(fā)明內(nèi)容如此處所揭示的,上面所認(rèn)識到的問題大部分由用于監(jiān)視和復(fù)位I2C總線設(shè)備的系統(tǒng)、方法以及介質(zhì)來解決。一個實施例是I2C總線監(jiān)視器,包括監(jiān)視I2C總線的線路的狀態(tài)的電路。監(jiān)視器還包括有選擇地復(fù)位連接到I2C總線的各個從設(shè)備以及復(fù)位連接到I2C總線的總線主設(shè)備的電路。定時裝置確定最大事務(wù)期間。附加電路確定在最大事務(wù)期間是否已發(fā)生掛起總線條件。如果在整個最大事務(wù)期間掛起總線條件發(fā)生,則I2C總線保持穩(wěn)定狀態(tài)并且I2C總線的數(shù)據(jù)線和時鐘線二者不都等于一。如果在I2C開始條件發(fā)生之后I2C重新啟動或在整個最大事務(wù)期間I2C停止不發(fā)生,則掛起總線條件也發(fā)生。監(jiān)視器可進(jìn)一步包括從底板管理控制器接收信號以使監(jiān)視器的軟件控制能有選擇地復(fù)位從設(shè)備和總線主設(shè)備的電路。
實施例包括具有I2C總線系統(tǒng)的服務(wù)器,包括監(jiān)視I2C總線的數(shù)據(jù)線和時鐘線并且檢測總線是否被掛起的總線監(jiān)視器。監(jiān)視器單獨復(fù)位連接到I2C總線的從設(shè)備。服務(wù)器進(jìn)一步地包括監(jiān)視與控制從設(shè)備并且指示總線監(jiān)視器有選擇地復(fù)位連接到I2C總線的各個從設(shè)備的底板管理控制器??偩€監(jiān)視器可進(jìn)一步地包括提供一個數(shù)以對最大事務(wù)期間進(jìn)行計時的超時寄存器。如果在整個最大事務(wù)期間,I2C總線保持穩(wěn)定狀態(tài)并且I2C總線的數(shù)據(jù)線和時鐘線二者不都等于一,則監(jiān)視器檢測到掛起總線。或者如果在I2C開始條件發(fā)生之后I2C重新啟動或在整個最大事務(wù)期間I2C停止不發(fā)生,則監(jiān)視器也可檢測到掛起總線。監(jiān)視器可進(jìn)一步包括復(fù)位寄存器,其每個位連接到與不同從設(shè)備或主設(shè)備相連的線路,以便有選擇地復(fù)位從設(shè)備或主設(shè)備。
實施例進(jìn)一步地包括用于檢測并且校正掛起I2C總線的方法和系統(tǒng),包括監(jiān)視I2C總線的線路的狀態(tài)。系統(tǒng)對總線上分組事務(wù)進(jìn)行計時并且確定最大事務(wù)時間是否已過去。如果掛起總線條件在最大事務(wù)時間的最后成立,則表明掛起總線。系統(tǒng)確定I2C總線的哪些從設(shè)備以及I2C總線的哪些主設(shè)備復(fù)位,以便校正掛起總線條件。然后系統(tǒng)復(fù)位如此確定的從設(shè)備和總線主設(shè)備。方法可進(jìn)一步包括從底板管理控制器接收信號以使處理的軟件控制能有選擇地復(fù)位從設(shè)備和總線主設(shè)備。
通過閱讀下面的詳細(xì)描述并且通過參考附圖,其中類似參考可指示類似單元,本發(fā)明的優(yōu)點將變得顯而易見。
圖1描述了網(wǎng)絡(luò)內(nèi)服務(wù)器的實施例;服務(wù)器內(nèi)是底板管理控制器、I2C監(jiān)視器、I2C主設(shè)備和從設(shè)備。
圖1A描述了執(zhí)行I2C功能并且向遠(yuǎn)程操作者報告的多個服務(wù)器的實施例的方框圖。
圖2A描述了與I2C總線通信的死鎖監(jiān)視器。
圖2B描述了底板管理控制器以及與I2C總線通信的監(jiān)視器。
圖2描述了可被配置成執(zhí)行底板管理控制功能的處理器的實施例。
圖3描述了用來執(zhí)行I2C總線監(jiān)視和復(fù)位的實施例的流程圖。
具體實施方式下面是附圖中所描述的本發(fā)明的示例實施例的詳細(xì)描述。示例實施例是如此詳細(xì)以便清楚地傳達(dá)本發(fā)明。然而,所提供的詳細(xì)度不意欲限制實施例的預(yù)期變化;相反,目的卻是涵蓋屬于如所附權(quán)利要求
所定義的本發(fā)明的精神和范圍的所有修改、等效方式以及可選方法。以下詳細(xì)描述被設(shè)計成使此類實施例對于本領(lǐng)域普通技術(shù)人員來說顯而易見。
揭示了用于清除掛起I2C總線的系統(tǒng)、方法以及介質(zhì)。在一個實施例中,監(jiān)視器監(jiān)視I2C總線數(shù)據(jù)和時鐘線,并檢測掛起總線是否發(fā)生。監(jiān)視器對總線上分組事務(wù)進(jìn)行計時以確定當(dāng)線路處于掛起狀態(tài)時最大事務(wù)時間是否已過去。監(jiān)視器允許各個從設(shè)備和總線主設(shè)備的選擇性復(fù)位以清除掛起總線。
參考服務(wù)器以及服務(wù)器的系統(tǒng)來討論本發(fā)明。然而,本發(fā)明不限于此。本發(fā)明可在采用I2C的任何數(shù)量不同系統(tǒng)中的I2C系統(tǒng)中實現(xiàn)。那么,舉例來說,圖1示出了根據(jù)本發(fā)明的一個實施例所實現(xiàn)的具有I2C部件的服務(wù)器116。服務(wù)器116具有根據(jù)BIOS(基本輸入/輸出系統(tǒng))代碼104和操作系統(tǒng)(OS)代碼106運行的處理器100。BIOS和OS代碼被存儲在存儲器108中。BIOS代碼通常被存儲在只讀存儲器(ROM)上而OS代碼通常被存儲在系統(tǒng)116的硬盤驅(qū)動器上。服務(wù)器116還包括底板管理控制器2500、I2C監(jiān)視器2010、總線主設(shè)備2002和I2C從設(shè)備2004。
服務(wù)器116包括物理上位置接近于處理器100和底板管理控制器(BMC)2500的2級(L2)高速緩沖存儲器102。存儲器108存儲程序以便由處理器100執(zhí)行,并且進(jìn)一步地存儲底板管理控制程序以便由BMC 2500執(zhí)行。因此,在實施例中,如此處將被描述的,存儲器108存儲計算機代碼以執(zhí)行底板管理控制功能。處理器100包括芯片內(nèi)一級(L1)高速緩沖存儲器190、取指裝置130、控制電路160以及執(zhí)行單元150。1級高速緩沖存儲器190接收并且存儲接近執(zhí)行的時間的指令。在處理器100中,取指裝置從存儲器取指令。執(zhí)行單元150執(zhí)行由指令所要求的操作。執(zhí)行單元150包括用于執(zhí)行由取指裝置130所取的指令的執(zhí)行中的步驟的級段??刂齐娐?60控制取指裝置130和執(zhí)行單元150??刂齐娐?60還從執(zhí)行單元150接收與控制決策有關(guān)的信息。
服務(wù)器116通常還包括未示出的其他部件和子系統(tǒng),例如可信平臺模塊、存儲器控制器、隨機存取存儲器(RAM)、外圍驅(qū)動器、系統(tǒng)監(jiān)視器、鍵盤、彩色視頻監(jiān)視器、一個或多個軟盤驅(qū)動器、一個或多個諸如固定硬盤驅(qū)動器的可移動非易失性介質(zhì)驅(qū)動器、CD和DVD驅(qū)動器、諸如鼠標(biāo)的指示設(shè)備以及網(wǎng)絡(luò)接口適配器等。服務(wù)器116可連接個人計算機、工作站、服務(wù)器、大型計算機、筆記本或便攜式計算機、臺式計算機等。因此,通過輸入/輸出設(shè)備110,處理器100也可與其他服務(wù)器以及計算機114通信。因此,服務(wù)器116可以在諸如因特網(wǎng)和/或本地內(nèi)部網(wǎng)的計算機網(wǎng)絡(luò)中。進(jìn)一步地,服務(wù)器116可訪問數(shù)據(jù)庫112以及包括磁帶驅(qū)動器存儲、硬盤陣列、RAM、ROM等的其他存儲器。
在服務(wù)器116的一個運行方式中,L2高速緩沖存儲器102從存儲器108接收預(yù)計在處理器100的處理器流水線中將被處理的數(shù)據(jù)和指令。L2高速緩沖存儲器102是物理上位置接近處理器100以便達(dá)到更快速度的快速存儲器。L2高速緩沖存儲器從存儲器108接收多個指令線程的指令。L1高速緩沖存儲器190位于處理器中并且包含優(yōu)選地接收自L2高速緩沖存儲器102的數(shù)據(jù)和指令。理論上,隨著程序指令將被執(zhí)行的時間的接近,指令隨其數(shù)據(jù)(如果有)被傳遞,首先到L2高速緩沖存儲器,然后隨著執(zhí)行時間接近急迫,到L1高速緩沖存儲器。執(zhí)行單元150執(zhí)行接收自L1高速緩沖存儲器190的指令。執(zhí)行單元150可包括加載/存儲單元、整數(shù)運算/邏輯單元、浮點運算/邏輯單元以及圖形邏輯單元。每個單元可適合于執(zhí)行特定的指令組。指令可被提交給不同的執(zhí)行單元以便并行執(zhí)行。由執(zhí)行單元150處理的數(shù)據(jù)可儲存在整數(shù)寄存器堆和浮點寄存器堆(未示出)中以及可從整數(shù)寄存器堆和浮點寄存器堆(未示出)訪問。存儲在這些寄存器堆中的數(shù)據(jù)也可來自或被傳送到板上L1高速緩沖存儲器190或外部高速緩沖存儲器或存儲器。
服務(wù)器116還包括底板管理控制器2500以及I2C監(jiān)視器2010、總線主設(shè)備2002和I2C從設(shè)備2004。底板管理控制器(BMC)2500為獨立于處理器100運行的處理器。BMC 2500控制I2C從設(shè)備2004和總線主設(shè)備2002并與之通信。從設(shè)備包括諸如發(fā)光二極管(LED)、溫度傳感器和風(fēng)扇的部件。其他從設(shè)備可包括存儲器、電源調(diào)節(jié)器以及輸入/輸出(I/O)槽。每個總線主設(shè)備和從設(shè)備具有其自己的唯一地址。多個主設(shè)備可被接線到相同I2C總線。I2C標(biāo)準(zhǔn)為其提供了手段以便仲裁總線控制。檢測到其已失去總線仲裁的主設(shè)備沒有更進(jìn)一步驅(qū)動總線就立即終止其處理,并且在再次嘗試其事務(wù)之前等待總線成為空閑。
BMC 2500將執(zhí)行各種功能。例如,BMC 2500將從溫度傳感器讀取溫度值。如果溫度超過預(yù)定值,BMC 2500可使風(fēng)扇接通或轉(zhuǎn)得更快來將更多的熱量從服務(wù)器的內(nèi)部部件移去。作為另一個例子,BMC2500可檢測到錯誤的調(diào)節(jié)器電壓并且作為響應(yīng),點亮LED以指示該情況。BMC 2500也可檢測到例如存儲器中或I/O槽中的錯誤。當(dāng)此類從設(shè)備中發(fā)生錯誤時,一些從設(shè)備可發(fā)送中斷信號到BMC 2500。同樣地,BMC 2500可查詢多個從設(shè)備的每一個的內(nèi)部寄存器以確定什么錯誤(如果有)存在。例如,BMC 2500可查詢電源調(diào)節(jié)器以確定電源調(diào)節(jié)器是否輸出不適當(dāng)?shù)碾妷骸?br> I2C監(jiān)視器2010是多個監(jiān)視器,每個監(jiān)視不同的I2C總線。在一個實施例中,服務(wù)器可具有多至10個不同的I2C總線,每個具有其自己的監(jiān)視器、主設(shè)備和從設(shè)備。因此,多個I2C總線的每個被連接到一個或多個總線主設(shè)備2002和從設(shè)備2004。所有I2C設(shè)備可分類為主設(shè)備或從設(shè)備。主設(shè)備是發(fā)起消息的設(shè)備。從設(shè)備是響應(yīng)由主設(shè)備發(fā)起的消息的設(shè)備。因此,從設(shè)備可包括由總線主設(shè)備尋址并寫入的多個設(shè)備。
在系統(tǒng)操作的過程中,I2C總線可變?yōu)閽炱?。?dāng)在總線主設(shè)備和從設(shè)備之間傳送數(shù)據(jù)的過程中應(yīng)該發(fā)生的事件未能發(fā)生時,或當(dāng)不應(yīng)該發(fā)生的事件發(fā)生了時,掛起總線產(chǎn)生。例如,因為從設(shè)備未能將停止符傳遞給總線主設(shè)備,總線可被掛起。每個監(jiān)視器2010可檢測其總線是否是掛起總線。監(jiān)視器2010允許在掛起總線被聲明時某個時間量得知。該時間量可由BMC中的編程來指定。因此,監(jiān)視器2010監(jiān)視其被連接到的I2C總線的線路以確定總線是否被掛起。響應(yīng)于掛起總線的檢測,監(jiān)視器2010可發(fā)出復(fù)位信號到一個或多個具體從設(shè)備的每個并且還可發(fā)出復(fù)位信號到一個或多個總線主設(shè)備的每個。
圖1A示出了可由遠(yuǎn)程操作者1000監(jiān)視的服務(wù)器116的網(wǎng)絡(luò)。遠(yuǎn)程操作者1000通過以太網(wǎng)交換機1010被連接到各種服務(wù)器116上。服務(wù)器116通過總線1020被連接到計算機網(wǎng)絡(luò)以及彼此相連。如此處將被說明的,通過I2C系統(tǒng),遠(yuǎn)程操作者1000可監(jiān)視服務(wù)器116的系統(tǒng)的健康并且可發(fā)出命令到服務(wù)器。I2C系統(tǒng)從溫度傳感器接收信息并發(fā)送通/斷信號到發(fā)光二極管(LED)。同樣地,I2C系統(tǒng)監(jiān)視服務(wù)器內(nèi)各種從設(shè)備的狀態(tài)位。這些狀態(tài)位指示相應(yīng)的從設(shè)備的狀態(tài)。例如,系統(tǒng)可監(jiān)視多個電源調(diào)節(jié)器以確定電源調(diào)節(jié)器是否有故障。例如,如果服務(wù)器的電源調(diào)節(jié)器有故障,則系統(tǒng)可將有故障的服務(wù)器的通信轉(zhuǎn)移到具有可使用的電源供給的另一個服務(wù)器。因此系統(tǒng)提供了電源管理和系統(tǒng)健康監(jiān)視。
因此,每個服務(wù)器包括底板管理控制器(BMC)2500,至少一個監(jiān)視器2010以監(jiān)視其被連接到的I2C總線以及連接到I2C總線的至少一個其他從設(shè)備2004。遠(yuǎn)程操作者1000可因此監(jiān)視服務(wù)器116的整個系統(tǒng)的各種設(shè)備的狀態(tài)。為此,遠(yuǎn)程操作者1000通??砂ň哂刑幚砥?、視頻監(jiān)視器、鍵盤和鼠標(biāo)的計算機。這使人們能夠通過觀察和改變系統(tǒng)狀態(tài)來與系統(tǒng)相互作用。遠(yuǎn)程操作者1000可使以太網(wǎng)交換機1010選擇連接到以太網(wǎng)交換機1010的多個服務(wù)器的任何一個。每個服務(wù)器可被依次選擇以獲悉服務(wù)器116的整個系統(tǒng)的狀態(tài)。除監(jiān)視設(shè)備的狀態(tài)之外,例如,遠(yuǎn)程操作者1010可啟動服務(wù)器的開機序列或關(guān)機序列。
圖2A示出了諸如服務(wù)器116的服務(wù)器內(nèi)的I2C系統(tǒng)2000。I2C系統(tǒng)2000包括多個I2C總線主設(shè)備2002。每個總線主設(shè)備被連接到兩個結(jié)構(gòu)線數(shù)據(jù)線Sda和時鐘線Scl。這些線被連接到多個I2C從設(shè)備2004,包括將多個I2C從設(shè)備2008連接到總線的I2C多路復(fù)用器2006。因此,數(shù)據(jù)可被設(shè)置到總線上并且提供時鐘線以驅(qū)送數(shù)據(jù)到從設(shè)備中或從從設(shè)備驅(qū)出。在總線主設(shè)備寫數(shù)據(jù)到從設(shè)備的寫周期中,總線主設(shè)備將設(shè)置地址到數(shù)據(jù)線Sda上。每個所連接的從設(shè)備將接收該地址。當(dāng)從設(shè)備收到地址時,其確定所接收的地址是否匹配其自己的內(nèi)部地址。如果是,從設(shè)備必須聲明地址確認(rèn)信號到總線主設(shè)備。然后總線主設(shè)備可利用SDA和SCL線路寫數(shù)據(jù)到從設(shè)備。對于其成功收到的數(shù)據(jù)的每個字節(jié),從設(shè)備聲明確認(rèn)信號到總線主設(shè)備。當(dāng)總線主設(shè)備已發(fā)送了所有預(yù)定的數(shù)據(jù)時,總線主設(shè)備利用停止信號釋放總線的控制。在總線主設(shè)備從從設(shè)備讀取數(shù)據(jù)的讀周期中,總線主設(shè)備將利用SDA和SCL線路聲明地址。每個所連接的從設(shè)備將接收該地址。當(dāng)從設(shè)備收到地址時,其確定所接收的地址是否匹配其自己的內(nèi)部地址。如果是,針對主設(shè)備在SCL線路上聲明的每個時鐘脈沖,從設(shè)備必須聲明地址確認(rèn)信號,并在SDA線路上提供數(shù)據(jù)位或確認(rèn)位。在主設(shè)備已結(jié)束讀取其所期望的所有數(shù)據(jù)之后,主設(shè)備聲明將I2C總線返回空閑狀態(tài)的停止符。
總線可由于若干原因變?yōu)椤版i定”、“卡住”或“掛起”。一個例子是其中總線上電氣條件(例如電路板缺少I2C上拉電阻)或總線上設(shè)備將總線保持在使I2C停止信號不被發(fā)送或不可被發(fā)送的狀態(tài)。另一個例子是I2C從設(shè)備通過保持SCL線路的狀態(tài)試圖降低事務(wù)的速度,但最終沒消除使其減速的情況并使總線永久地卡住。作為另一個例子,設(shè)備可在保持Sda或Scl為零的壞狀態(tài)中,因此阻止總線進(jìn)入空閑狀態(tài),因此更多的處理可開始。因此,死鎖監(jiān)視器2010監(jiān)視線路Sda和Scl以確定總線是否處于掛起狀態(tài)。利用可編程邏輯設(shè)備(PLD)可簡單地實現(xiàn)死鎖監(jiān)視器2010。如果監(jiān)視器2010判定I2C總線被掛起,其可發(fā)出復(fù)位信號Srst來復(fù)位從設(shè)備2004、2006、2008或總線主設(shè)備2002、2003或兩者。
圖2A示出了標(biāo)記為Srst1到Srst8的這些復(fù)位線。因此,響應(yīng)于線路Sda和Scl上的某些信號,死鎖監(jiān)視器2010可復(fù)位具體的設(shè)備或設(shè)備集并且清除總線。通過重新初始化其內(nèi)部寄存器來復(fù)位I2C從設(shè)備。只有作為問題的來源的從設(shè)備需要被復(fù)位。包括沒有掛起總線的所有從設(shè)備的完全復(fù)位通常是不必要的。同時注意到,監(jiān)視器可從服務(wù)器的BIOS接收低引腳數(shù)(LPC)連接以使BIOS可清除總線,如果其懷疑其已失去與系統(tǒng)管理功能的通信的話。因此,監(jiān)視器可在服務(wù)器的BIOS控制下運行和/或可在底板管理控制器的控制下運行。
總線主設(shè)備2003和2004也從監(jiān)視器接收攜帶信號的單個共享總線主設(shè)備再同步線(此處稱作BRST信號)。BRST信號將重新啟動所給的I2C總線上的所有總線主設(shè)備。注意到這與服務(wù)器中所有系統(tǒng)管理功能的完全復(fù)位不相同。更確切些,總線主設(shè)備實施者可選擇在BRST信號發(fā)生之后重試硬件中排隊的操作。因此,BRST信號將總線主設(shè)備帶到如總線掛起之前可繼續(xù)其功能的執(zhí)行的初始狀態(tài)。
注意到監(jiān)視器2010以及多路復(fù)用器2006在主I2C徑向(radial)上。這樣,僅利用一個死鎖監(jiān)視器就可消除所有副徑向(sub-radial)上的潛在掛起。如果副徑向被掛起,則復(fù)位多路復(fù)用器2006將通過其SRST線路斷開有問題的徑向并允許主徑向重新開始正常操作。如以下所討論的,由底板管理控制器所執(zhí)行的軟件應(yīng)該避免重新連接復(fù)位后繼續(xù)掛起的I2C總線的副徑向。
圖2B示出了底板管理控制器(BMC)2500,其為執(zhí)行指令以完成電源管理和健康監(jiān)視功能的處理器。BMC 2500與監(jiān)視器2010接口。BMC和監(jiān)視器兩者都被連接到總線。監(jiān)視器2010監(jiān)視線路Sda和Scl并且可發(fā)送復(fù)位信號給如上所述的從設(shè)備和總線主設(shè)備。當(dāng)總線被掛起時,監(jiān)視器2010通知BMC 2500。BMC 2500與監(jiān)視器2010通信以確定哪個I2C總線被掛起。利用監(jiān)視器2010,BMC軟件知道系統(tǒng)I2C拓?fù)浣Y(jié)構(gòu)并且因此能確定其希望進(jìn)行什么復(fù)位。因此,BMC 2500可維護狀態(tài)寄存器以接收并存儲從設(shè)備的狀態(tài)以及總線是否被掛起的指示。BMC 2500執(zhí)行控制功能2520以指示監(jiān)視器復(fù)位從設(shè)備或再啟動總線主設(shè)備。BMC 2500還完成控制連接到總線的各種從設(shè)備的功能。這些功能包括改變LED的開/關(guān)狀態(tài)、讀溫度傳感器以及控制更復(fù)雜的從設(shè)備的狀態(tài)。
監(jiān)視器2010包括三個寄存器控制寄存器2020、目標(biāo)復(fù)位寄存器2040以及監(jiān)視超時寄存器2060??刂萍拇嫫?020具有可被分別設(shè)置的8個位??刂萍拇嫫?020具有啟用監(jiān)視位7,當(dāng)該位被設(shè)置時啟用監(jiān)視而當(dāng)該位不被設(shè)置時禁止監(jiān)視。BMC將根據(jù)系統(tǒng)健康的控制和監(jiān)視程序設(shè)置該位。通常將啟用監(jiān)視器??刂萍拇嫫?020還具有總線主設(shè)備復(fù)位位6。該位通常被取消,并且當(dāng)聲明時反轉(zhuǎn)。即,當(dāng)BMC在監(jiān)視器中置位該位時,其將被作為脈沖傳遞給I2C總線上的總線主設(shè)備。脈沖具有相對短的時延,長度剛好夠確??偩€主設(shè)備的復(fù)位。控制寄存器2020的保持位可被用于其他功能或可未被使用。
目標(biāo)復(fù)位寄存器2040包括各個位,每位相應(yīng)于不同從設(shè)備。當(dāng)BMC 2500置位目標(biāo)復(fù)位寄存器2040的位時,相應(yīng)于該位的從設(shè)備被復(fù)位。該寄存器的長度將由系統(tǒng)設(shè)計員期望針對被監(jiān)視I2C總線進(jìn)行的分立I2C復(fù)位的數(shù)量決定。例如,8位寄存器可擁有相應(yīng)于8個不同從設(shè)備的位,包括多路復(fù)用器在內(nèi),如果期望每個設(shè)備單獨復(fù)位的話。因此,目標(biāo)復(fù)位寄存器2040的位通常是未聲明的。監(jiān)視器2010將總線的狀態(tài)傳遞給BMC 2500。BMC 2500根據(jù)其對受影響的總線上的各種I2C設(shè)備的知識確定采取什么行動,如果有的話。這可包括將從設(shè)備的狀態(tài)復(fù)位到巳知的初始狀態(tài)。從該初始狀態(tài),BMC 2500可將從設(shè)備帶到任何其他所期望的狀態(tài)。
監(jiān)視器超時寄存器2060包括等于超時單元的數(shù)目的二進(jìn)制值以允許總線在其通知BMC 2500前保持掛起。超時單元的值在監(jiān)視器硬件中被設(shè)置。例如,超時單元可被設(shè)置為4毫秒,并且在掛起總線將被聲明之前等于超時單元數(shù)目的二進(jìn)制值可被設(shè)置成等于十進(jìn)制128。這導(dǎo)致512毫秒的延遲,期間總線可變成掛起。在512毫秒的結(jié)尾,如果總線被掛起,BMC 2500將被告知并且通常其將通過聲明從設(shè)備的SRST線路以及聲明BRST線路來復(fù)位受影響的從設(shè)備和總線主設(shè)備。在超時周期的結(jié)尾,如果下面兩個條件的任何一個成立,監(jiān)視器將確定總線掛起1)對于整個超時周期,I2C總線保持于穩(wěn)定狀態(tài),但不是Sda=1并且Scl=1;或2)超時周期內(nèi),I2C起始條件發(fā)生,并且I2C重新啟動或I2C停止沒有發(fā)生。
監(jiān)視器2010包括計數(shù)器2070,在有效停止符或總線重新啟動發(fā)生之后每當(dāng)I2C總線回到空閑狀態(tài)(sda=1以及scl=1)時,其就被復(fù)位。如果BMC 2500使得監(jiān)視器2010執(zhí)行I2C復(fù)位,則監(jiān)視器復(fù)位計數(shù)器2070。
圖2示出了處理器200的實施例,如此處所描述的,其可在諸如服務(wù)器116的服務(wù)器中被實現(xiàn)來執(zhí)行底板管理控制軟件。圖2的處理器200被配置成執(zhí)行底板管理控制指令以提供針對BMC 2500所描述的功能。在一個實施例中,處理器200為相對簡單的可編程8位處理器或微控制器。1級指令高速緩沖存儲器210從處理器外部的存儲器216,例如2級高速緩沖存儲器接收底板管理控制指令。因此,底板管理控制軟件作為應(yīng)用程序可被存儲在存儲器108中。BMC軟件的順序指令組可被傳送到L2高速緩沖存儲器,而這些指令的子組可被傳送到L1高速緩沖存儲器210。
取指裝置212維護程序計數(shù)器并且從L1指令高速緩沖存儲器210取底板管理控制指令。取指裝置212的程序計數(shù)器包括將被執(zhí)行的下一個指令的地址。取指裝置212也可完成預(yù)取操作。因此,取指裝置212與存儲器控制器214通信以發(fā)起從存儲器216到指令高速緩沖存儲器210的底板管理控制指令的傳送。高速緩沖存儲器中從系統(tǒng)存儲器216傳送指令所到的位置通過從系統(tǒng)存儲器地址中獲得的索引來確定。
從系統(tǒng)存儲器216傳送指令序列到指令高速緩沖存儲器210以實現(xiàn)底板管理控制功能。例如,指令序列可指示處理器200從監(jiān)視器將有關(guān)總線是否被掛起的指示器的值裝到處理器寄存器中。指令進(jìn)一步指示處理器200發(fā)送信號給監(jiān)視器2010的寄存器。因此,在一個例子中,處理器200將發(fā)送啟用信號給監(jiān)視的控制寄存器來啟用總線條件的檢測。如果監(jiān)視器向處理器指示總線被掛起,則處理器200可使得監(jiān)視器發(fā)送SRST信號來復(fù)位從設(shè)備以及BRST信號來復(fù)位總線主設(shè)備。軟件還指示處理器200讀溫度監(jiān)測器以及其他從設(shè)備的狀態(tài)。例如,軟件可進(jìn)一步指示處理器200發(fā)送信號來點亮LED,或設(shè)置從設(shè)備為不同狀態(tài),或改變風(fēng)扇的速度。
取指裝置212取得傳遞到指令高速緩沖存儲器210的底板管理控制指令并將其傳遞給指令譯碼器220。指令譯碼器220接收并解碼由取指裝置212取的指令。指令緩沖器230從指令譯碼器220接收已解碼的指令。指令緩沖器230包括多個指令的存儲器位置。指令緩沖器230可重排接收自指令譯碼器220的指令的執(zhí)行順序。指令緩沖器230因此包括指令隊列來提供指令被發(fā)送給分配單元240的順序。
分配單元240發(fā)送接收自指令緩沖器230的底板管理控制指令到執(zhí)行單元250。執(zhí)行單元250可包括加載/存儲單元、整數(shù)運算/邏輯單元、浮點運算/邏輯單元以及圖形邏輯單元,全部并行操作。分配單元240因此將指令發(fā)送給一些或所有執(zhí)行單元來同時執(zhí)行指令。執(zhí)行單元250包括執(zhí)行從分配單元240所接收的指令的步驟的級段。由執(zhí)行單元250處理的數(shù)據(jù)可儲存在未示出的整數(shù)寄存器堆和浮點寄存器堆中并可從其訪問。因此,指令被順序地并且并行地執(zhí)行。
圖2示出了具有多個執(zhí)行單元的處理器的第一執(zhí)行單元(XU1)270和第二執(zhí)行單元(XU2)280。每個執(zhí)行單元250的每個級段能夠執(zhí)行不同底板管理控制指令的執(zhí)行中的步驟。在處理器200的每個周期中,指令的執(zhí)行通過執(zhí)行單元250內(nèi)的處理器流水線進(jìn)行到下一個級段。本領(lǐng)域技術(shù)人員將認(rèn)識到,處理器”流水線″的級段可包括其他級段以及圖2中未示出的電路。此外,通過多線程處理,多個底板管理控制處理可同時運行。例如,通過執(zhí)行不同線程的指令,處理器可從死鎖監(jiān)視器裝載并估算總線掛起指示器,同時完成其他I2C功能,例如遞增總線被掛起的次數(shù)。因此,多個指令可被順序并且并行地執(zhí)行以完成底板管理控制功能。
圖2還示出了完成控制處理器200的操作的各種功能的控制電路260。例如,控制電路260內(nèi)的操作控制器解釋包含于指令中的OPCode并且引導(dǎo)合適的執(zhí)行單元執(zhí)行所指示的操作。此外,控制電路260可包括分支重定向單元,其當(dāng)分支被確定為已被錯誤預(yù)測時重定向取指裝置212。控制電路260可進(jìn)一步地包括刷新控制器來刷新比錯誤預(yù)測的分支指令更新的指令。分支指令可起因于執(zhí)行多個底板管理控制功能的任何一個。例如,確定是否聲明掛起總線涉及分支指令。如果聲明掛起總線,則執(zhí)行指令序列來清除總線。如果沒有聲明掛起總線,則操作正常繼續(xù)。因此通過控制電路260提供了執(zhí)行這些以及其他分支指令的控制邏輯。
圖3示出了用于監(jiān)視并清除總線掛起的實施例的流程圖300。在正常操作中,I2C總線的總線監(jiān)視器將監(jiān)視I2C總線的Sda和Scl線(單元302)。例如,監(jiān)視器可檢測何時總線保持穩(wěn)定狀態(tài)而不是Sda=1以及Scl=1。例如,監(jiān)視器將檢測線是否滿足條件Sda=0以及Scl=0。監(jiān)視器也可以檢測到何時I2C起始條件發(fā)生以及I2C重新啟動或I2C停止沒發(fā)生。監(jiān)視總線的同時,系統(tǒng)對總線主設(shè)備和從設(shè)備之間的分組事務(wù)進(jìn)行計時(單元306)。指定的時間單元被存儲在監(jiān)視器的硬件中而用戶指定的數(shù)被存儲在監(jiān)視器超時寄存器中。最大事務(wù)期間為指定時間單元乘以超時寄存器中的數(shù)。當(dāng)事務(wù)開始時,監(jiān)視器開始對事務(wù)計時并且當(dāng)監(jiān)視器繼續(xù)監(jiān)視總線時,將持續(xù)地事務(wù)計時,直到超過最大事務(wù)期間。
直到超過最大事務(wù)期間(單元308),監(jiān)視器繼續(xù)監(jiān)視上面的條件1或2。如果超過最大事務(wù)期間(單元308),監(jiān)視器確定條件1是否成立(單元310)。即對于整個最大事務(wù)期間,I2C總線保持穩(wěn)定狀態(tài)(而不是Sda=1,Scl=1)。如果條件1成立(單元310),底板管理控制器根據(jù)需要將通過復(fù)位從設(shè)備(單元314)和總線主設(shè)備(單元316)來嘗試清除總線。如果條件1不成立(單元310),則監(jiān)視器判斷條件2是否成立(單元312)。即,在最大事務(wù)期間內(nèi)在沒有I2C重新啟動或I2C停止的情況下發(fā)生I2C起始條件。如果條件2成立(單元310),底板管理控制器根據(jù)需要將通過復(fù)位從設(shè)備(單元314)和總線主設(shè)備(單元316)來嘗試清除總線。最大事務(wù)期間內(nèi)發(fā)生的任何成功I2C總線事務(wù)將使得在停止信號之后I2C總線回到空閑狀態(tài)(sda=1以及scl=1)。I2C總線空閑狀態(tài)期間監(jiān)視器停止并且當(dāng)下一個I2C總線處理開始時再開始。
雖然本發(fā)明以及其一些優(yōu)點已針對一些實施例做了詳細(xì)描述,然而應(yīng)該理解,在沒有背離如所附權(quán)利要求
所定義的本發(fā)明的精神和范圍的情況下,此處可產(chǎn)生各種變化、替換以及變更。雖然本發(fā)明的實施例可達(dá)到多個目的,然而不是屬于所附權(quán)利要求
范圍內(nèi)的每個實施例都將達(dá)到每個目的。此外,本應(yīng)用的范圍不意欲受限于說明書中所描述的處理、機器、廠商、事情的構(gòu)成、手段、方法以及步驟的具體實施例。因為本領(lǐng)域一名普通技術(shù)人員從本發(fā)明的揭示、處理、機器、廠商、事件的構(gòu)成、手段、方法或步驟將容易地理解,根據(jù)本發(fā)明,可利用與此處所描述的相應(yīng)實施例基本上完成相同功能或基本上達(dá)到相同結(jié)果的當(dāng)前存在的或稍后將被開發(fā)的方式。因此,在其范圍內(nèi)所附權(quán)利要求
意圖包括此類處理、機器、廠商、構(gòu)成的事件、手段、方法,或步驟。
權(quán)利要求
1.一種集成電路間(I2C)總線監(jiān)視器,包括監(jiān)視I2C總線的線路的狀態(tài)的電路;有選擇地復(fù)位連接到I2C總線的各個從設(shè)備以及復(fù)位連接到I2C總線的總線主設(shè)備的電路;用于確定最大事務(wù)期間的定時裝置;以及確定在最大事務(wù)期間內(nèi)掛起總線條件是否已發(fā)生的電路。
2.根據(jù)權(quán)利要求
1的監(jiān)視器,其中如果在整個最大事務(wù)期間內(nèi)掛起總線條件發(fā)生,則I2C總線保持穩(wěn)定狀態(tài)并且I2C總線的數(shù)據(jù)線和時鐘線二者不都等于一。
3.根據(jù)權(quán)利要求
1的監(jiān)視器,其中如果在I2C開始條件發(fā)生之后I2C重新啟動或在整個最大事務(wù)期間內(nèi)I2C停止不發(fā)生,則掛起總線條件發(fā)生。
4.根據(jù)權(quán)利要求
1的監(jiān)視器,進(jìn)一步包括從底板管理控制器接收信號以使監(jiān)視器的軟件控制能有選擇地復(fù)位從設(shè)備和總線主設(shè)備的電路。
5.根據(jù)權(quán)利要求
4監(jiān)視器,進(jìn)一步地包括將總線的狀態(tài)從監(jiān)視器傳遞到底板管理控制器的電路。
6.根據(jù)權(quán)利要求
1的監(jiān)視器,進(jìn)一步地包括來自包括該監(jiān)視器的服務(wù)器的基本輸入輸出系統(tǒng)(BIOS)的監(jiān)視器的低引腳數(shù)(LPC)輸入。
7.根據(jù)權(quán)利要求
1的監(jiān)視器,進(jìn)一步包括復(fù)位寄存器,其每個位連接到與不同從設(shè)備或主設(shè)備相連的線路,以有選擇地復(fù)位從設(shè)備或主設(shè)備。
8.根據(jù)權(quán)利要求
1的監(jiān)視器,進(jìn)一步地包括包含基本時間單元的數(shù)目的超時寄存器,以對最大事務(wù)期間計時。
9.一種用于檢測并校正掛起集成電路間(I2C)總線的方法,包括監(jiān)視I2C總線的線路的狀態(tài);對總線上分組事務(wù)計時并確定最大事務(wù)時間是否已過去;如果在最大事務(wù)時間的結(jié)束時掛起總線條件成立,則聲明掛起總線;確定I2C總線的多個從設(shè)備的哪個從設(shè)備要復(fù)位以便校正掛起總線條件;以及復(fù)位所確定的從設(shè)備。
10.根據(jù)權(quán)利要求
9的方法,其中如果在整個最大事務(wù)期間內(nèi)掛起總線條件發(fā)生,則I2C總線保持穩(wěn)定狀態(tài)并且I2C總線的數(shù)據(jù)線和時鐘線二者不都等于一。
11.根據(jù)權(quán)利要求
9的方法,其中如果在I2C開始條件發(fā)生之后I2C重新啟動或在整個最大事務(wù)期間內(nèi)I2C停止不發(fā)生,則掛起總線條件發(fā)生。
12.根據(jù)權(quán)利要求
9的方法,進(jìn)一步包括從底板管理控制器接收信號以使處理的軟件控制能有選擇地復(fù)位從設(shè)備。
13.根據(jù)權(quán)利要求
9的方法,進(jìn)一步包括復(fù)位寄存器,其每個位連接到與不同從設(shè)備或主設(shè)備相連的線路,以有選擇地復(fù)位從設(shè)備或主設(shè)備。
14.根據(jù)權(quán)利要求
9的方法,進(jìn)一步地包括包含基本時間單元的數(shù)目的超時寄存器,以對最大事務(wù)期間計時。
15.一種具有集成電路間(I2C)總線系統(tǒng)的服務(wù)器,包括總線監(jiān)視器,用于監(jiān)視I2C總線的數(shù)據(jù)線和時鐘線并且檢測總線是否被掛起,以及分別復(fù)位連接到I2C總線的從設(shè)備;以及底板管理控制器,用于監(jiān)視與控制從設(shè)備并且指示總線監(jiān)視器有選擇地復(fù)位連接到I2C總線的各個從設(shè)備。
16.根據(jù)權(quán)利要求
15的服務(wù)器,其中總線監(jiān)視器包括超時寄存器,其提供一個數(shù)以對最大事務(wù)期間計時。
17.根據(jù)權(quán)利要求
16的服務(wù)器,其中如果在整個最大事務(wù)期間內(nèi)I2C總線保持穩(wěn)定狀態(tài)并且I2C總線的數(shù)據(jù)線和時鐘線二者不都等于一,則檢測到掛起總線。
18.根據(jù)權(quán)利要求
16的系統(tǒng),其中如果在I2C開始條件發(fā)生之后I2C重新啟動或在整個最大事務(wù)期間內(nèi)I2C停止不發(fā)生,則檢測到掛起總線。
19.根據(jù)權(quán)利要求
15的服務(wù)器,進(jìn)一步地包括超時監(jiān)視器,用于確定掛起總線條件是否存在。
20.根據(jù)權(quán)利要求
15的服務(wù)器,進(jìn)一步包括復(fù)位寄存器,其每個位連接到與不同從設(shè)備或主設(shè)備相連的線路,以有選擇地復(fù)位從設(shè)備或主設(shè)備。
專利摘要
揭示了用于清除掛起I2C總線的系統(tǒng)、方法以及介質(zhì)。在一個實施例中,監(jiān)視器監(jiān)視I2C總線數(shù)據(jù)和時鐘線并檢測掛起總線是否發(fā)生。監(jiān)視器對總線上分組事務(wù)計時以確定當(dāng)線路處于掛起狀態(tài)時最大事務(wù)時間是否已過去了。監(jiān)視器允許各個從設(shè)備和總線主設(shè)備的選擇性復(fù)位來清除掛起總線。
文檔編號G06F11/34GK1991783SQ200610137312
公開日2007年7月4日 申請日期2006年10月17日
發(fā)明者帕特里克·D.·布拉迪, 文赫·B.·盧, 李·H.·威爾森, 丹尼爾·E.·哈利曼, 科比·L.·沃特森 申請人:國際商業(yè)機器公司導(dǎo)出引文BiBTeX, EndNote, RefMan