專利名稱:防止lpc總線死鎖的方法和裝置的制作方法
技術領域:
本發(fā)明涉及LPC (Low Pin Count,低腳數(shù))總線技術領域,尤其涉及一 種防止LPC總線死鎖的方法和裝置。LPC是Intel (英特爾)公司定義的一種總線,因管腳數(shù)少而得名。LPC 總線的典型應用如圖1所示-主機(Host)與設備(Peripheral)通過LPC總 線通信,由控制器對LPC總線進行控制,LPC總線控制器由主機的南橋接管。 其中,設備包括連接在超級輸入/輸出(Super I/O )接口上的鼠標(Mouse )、 鍵盤(Keyboard)和軟盤驅(qū)動器(Floppy Drive )等。LPC總線規(guī)范中規(guī)定,IPC總線交易有很多個域組成,包括傳輸類型(讀 或?qū)?、地址、數(shù)據(jù)和同步(SYNC)等不同的域。在LPC設備將總線權(quán)限交 還給主機之前,可以驅(qū)動的LPC總線同步域狀態(tài)有四種,分別是(1) 就緒(ready):設備已準備好,可立即將總線權(quán)限交還給主機;(2) 短等待(short wait):設備未準備好,需要主機等待四至八個總線 時鐘周期,才能將總線權(quán)限交還給主機;(3) 長等待(long wait):設備未準備好,需要主機長期等待;直到設備 準備好之后,才能將總線權(quán)限交還給主機;(4 )錯誤(error ):設備出錯,可立即將總線權(quán)限交還給主機,并通過該error值和主機《換錯誤信息。 LPC總線規(guī)范中還規(guī)定,若設備驅(qū)動總線為long wait值,則主機會無限 期等待下去,不會主動中止總線傳輸,這就相當于LPC總線鎖定在長等待狀 態(tài),也即LPC總線"死鎖"。當某設備驅(qū)動LPC總線為long wait值且長期不釋放,就會造成其它LPC 設備無法通過LPC總線與南橋通信,最典型的表現(xiàn)為,鼠標、鍵盤等設備無 法工作。而且,當?shù)却龝r間過長、超過主積4喿作系統(tǒng)(OS , Operating System ) 能容忍的響應周期,就會引起OS重啟,為主機使用者帶來嚴重問題。
背景技術:
美國申請?zhí)?,292,910 B1 、名為《Method and Apparatus for Detecting a Bus Deadlock in an Electronic System》的專利中,公開了 一種檢測總線死鎖的裝置 和方法,該專利采用總線跟蹤電路監(jiān)聽總線交易,當檢測到那些會導致總線 死鎖的狀態(tài)時,啟動計數(shù)器電路記錄這些狀態(tài)發(fā)生的次數(shù),以實現(xiàn)檢測總線 死鎖,并記錄總線死鎖時的總線信息。但是,該專利只是被動地監(jiān)聽總線狀 態(tài),并沒有從根本上解決LPC總線死鎖的問題,也就是沒有提供解除LPC總 線死鎖的方法。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種防止LPC總線死鎖的方法和裝置,以實現(xiàn)控制 I .PC總線從長等待狀態(tài)恢復到正常的總線交易狀態(tài)。 為此,本發(fā)明采用如下沖支術方案 一種防止低腳數(shù)總線LPC死鎖的方法,包括步驟 監(jiān)聽LPC總線進入長等待狀態(tài);
確定LPC總線處于長等待狀態(tài)的時間到達或超過預設的報警門限值后, 驅(qū)動LPC總線進入正常的交易狀態(tài)。
所述確定LPC總線處于長等待狀態(tài)的時間到達或超過預設的報警門限 值,包括
在監(jiān)聽到LPC總線進入長等待狀態(tài)時刻起,開始正計時; 判斷計時時間是否等于或大于預設的報警門限值,若是,則確定LPC總
線處于長等待狀態(tài)的時間到達或超過預設的報警門限值。
所述確定LPC總線處于長等待狀態(tài)的時間到達或超過預設的報警門限
值,包括
在監(jiān)聽到LPC總線進入長等待狀態(tài)時刻起,從預設的報警門限值開始倒
計時;
判斷計時是否溢出,若是,則確定LPC總線處于長等待狀態(tài)的時間到達 或超過預設的報警門限值。 所述方法還包括
監(jiān)聽LPC總線是否退出長等待狀態(tài),若是,將計時時間復位。所述預設的報警門限值,,包括硬件復位或軟件設定得到的默認值。所述方法還包括記錄LPC總線交易信息;記錄LPC總線處于長等待狀態(tài)的時間;根據(jù)所述交易信息,對已記錄的各次LPC總線處于長等待狀態(tài)的時間進行統(tǒng)計;根據(jù)所述統(tǒng)計的結(jié)果,更新報警門限值。所述正常的交易狀態(tài),包括LPC總線的就緒狀態(tài)或錯誤狀態(tài)。 在所述驅(qū)動LPC總線進入正常的交易狀態(tài)的同時,所述方法還包括 判斷正常的交易狀態(tài)是否是LPC總線的錯誤狀態(tài),若是,LPC總線與其 連接的主機進行錯誤信息交互。一種防止LPC總線死鎖的裝置,包括狀態(tài)監(jiān)聽電路、計時電路和死鎖 恢復電路;所述狀態(tài)監(jiān)聽電路,用于監(jiān)聽LPC總線進入長等待狀態(tài)后,通知計時電路開始計時;所述計時電路,用于計時,并在確定LPC總線處于長等待狀態(tài)的時間到 達或超過預設的報警門限值時,產(chǎn)生報警信號;所述死鎖恢復電路,由所述計時電路產(chǎn)生的報警信號觸發(fā),驅(qū)動LPC總 線進入正常的交易狀態(tài)。所述裝置還包括計時優(yōu)化電路,所述計時優(yōu)化電路,用于記錄LPC總線的交易信息,并記錄所述計時電 路提供的LPC總線處于長等待狀態(tài)的時間;根據(jù)所述交易信息對各次LPC總 線處于長等待狀態(tài)的時間進行統(tǒng)計,利用統(tǒng)計結(jié)果更新所述報警門限值。所述狀態(tài)監(jiān)聽電路,還用于監(jiān)聽LPC總線是否退出長等待狀態(tài),并將監(jiān) 聽結(jié)果告知計時電路;所述計時電路,根據(jù)來自狀態(tài)監(jiān)聽電路的LPC總線退出長等待狀態(tài)的監(jiān) 聽結(jié)果對自身進行復位。本發(fā)明通過監(jiān)聽LPC總線的長等待狀態(tài),在長等待超時的情況下,控制 LPC總線從長等待狀態(tài)恢復到正常的總線交易狀態(tài),防止了 LPC總線出現(xiàn)死6 鎖、.
而且,本發(fā)明動態(tài)調(diào)整報警的時間,充分考慮了實際應用中主機對LPC 總線長等待的忍耐程度,減少了不必要的總線開銷。
圖1為現(xiàn)有技術中LPC總線應用示意圖; 圖2為LPC總線應用流程圖; 圖3為本發(fā)明中實施例 一的流程圖; 圖4為本發(fā)明中實施例二的流程圖; 圖5為本發(fā)明中裝置的結(jié)構(gòu)示意圖。
具體實施例方式
首先,對LPC總線同步域各狀態(tài)的工作情況進行簡單的介紹。 如圖2所示,LPC總線應用流程包括
步驟201:主機通過LPC總線向LPC設備發(fā)起數(shù)據(jù)傳輸請求; 步驟202: LPC設備接收到主機的傳輸請求后,根據(jù)自身狀況,在LPC 總線同步域下驅(qū)動LPC總線進入不同的工作狀態(tài); 其中,LPC設備自身狀況包括 ①就緒;②需要短等待;③需要長等待;④出錯。 步驟203: IPC設備處于狀況①,驅(qū)動LPC總線進入就緒狀態(tài); 步驟204:數(shù)據(jù)傳輸;
步驟205: LPC設備處于狀況②,驅(qū)動LPC總線進入短等待狀態(tài); 步驟206: LPC設備是否在LPC工作時鐘的八個周期內(nèi)準備就緒,若是, 執(zhí)行步驟204,否則,執(zhí)行步驟207; 步驟207:主機中止LPC總線傳輸;
步驟208: LPC設備處于狀況③,驅(qū)動LPC總線進入長等待狀態(tài); 步驟209: LPC設備處于狀況④,驅(qū)動LPC總線進入錯誤狀態(tài); 步驟210: LPC設備與主機進行錯誤信息交互。
可見,LPC總線在就緒、短等待和錯誤的狀態(tài)下,都能順利退出,唯獨 在長等待狀態(tài)下,沒有方法退出,這樣,各種LPC設備以及主機都在被動的 等待,不利于系統(tǒng)的整體運行。為此,本發(fā)明通過設計--個LPC總線控制裝置,對LPC總線的長等待狀 態(tài)進行監(jiān)聽,當LPC總線在長等待狀態(tài)的時間超過預設的值時,驅(qū)動LPC總 線退出長等待狀態(tài),恢復總線正常的交易狀態(tài)。下面詳細介紹本發(fā)明實施例一。 如圖3所示,實施例一包括 步驟301:預設報警門限值;其中,報警門限值是本發(fā)明中增加的,此報警門限值用來作為是否驅(qū)動 LPC總線退出長等待狀態(tài)的標準,它可以是硬件復位或軟件設定而得的默認值。歩驟302:監(jiān)聽LPC總線同步域狀態(tài);實時監(jiān)聽LPC總線同步域狀態(tài),特別是監(jiān)聽LPC總線進入長等待狀態(tài)。 步驟303: LPC總線進入長等待狀態(tài)時,開始計時;并判斷是否出現(xiàn)以下 兩種情況之一1 )計時時間大于或等于報警門限值,并且監(jiān)聽到LPC總線仍然處于長等 待狀態(tài),執(zhí)行步驟304;2)計時時間小于報警門限值時,監(jiān)聽到LPC總線已退出長等待狀態(tài),執(zhí) 行步驟305;其中,計時包4舌正計時和倒計時。正計時,是從零開始計時,當計時時間等于或大于預設的報警門限值時,產(chǎn)生報警信號。倒計時,是從預設的報警門限值開始倒計時,當產(chǎn)生溢出時,例如計時 到零時,產(chǎn)生報警信號。步驟304:報警,同時驅(qū)動LPC總線退出長等待狀態(tài),進入正常的交易狀態(tài);其中,正常的交易狀態(tài)包括LPC總線的就緒狀態(tài)和錯誤狀態(tài)。 當是就緒狀態(tài)時,LPC設備通過LPC總線和主機進行數(shù)據(jù)傳輸;
當是錯誤狀態(tài)時,LPC設備和主機進行錯誤信息交互,以查明產(chǎn)生錯誤的原因。步驟305:將計時時間復位。 下面介紹本發(fā)明實施例二在實施例一的基礎上,本實施例增加了對報警門限值的動態(tài)調(diào)整。 如圖4所示,實施例二包括如下步驟 步驟401:預設報警門限值; 步驟402:記錄LPC總線交易信息;其中,LPC總線交易信息包括LPC總線交易類型,交易類型可以是對數(shù) 據(jù)的讀操作,或者是寫操作;交易信息還包括LPC總線交易地址,可以是控 制寄存器地址,或是數(shù)據(jù)寄存器地址。步驟403:監(jiān)聽LPC總線同步域狀態(tài);步驟404: LPC總線進入長等待狀態(tài)時,開始計時;并判斷是否出現(xiàn)以下 兩種情況之一1 )計時時間大于或等于報警門限值,并且監(jiān)聽到LPC總線仍然處于長等 待狀態(tài),執(zhí)行步驟405;2)計時時間小于報警門限值時,監(jiān)聽到LPC總線已退出長等待狀態(tài),執(zhí) 行步驟406;步驟405:報警,同時驅(qū)動LPC總線退出長等待狀態(tài),進入正常的交易 狀態(tài);步驟406:記錄計時時間,之后對計時時間進行復位; 其中,記錄的計時時間也就是LPC總線處于長等待狀態(tài)的時間。 步驟407:根據(jù)LPC總線交易信息,統(tǒng)計歷史記錄的計時時間; 步驟408:根據(jù)統(tǒng)計的結(jié)果更新報警門限值。其中,對于統(tǒng)計歷史記錄的計時時間,可以采用統(tǒng)計學中的統(tǒng)計方法。 例如平均值法、加權(quán)法等。在得到計時時間的統(tǒng)計值后,用此統(tǒng)計值替換原報警門限值。對于實施例二,在產(chǎn)生報警的情況下,也可以認為對報警門限值進行了
更新,只不過是原值覆蓋而已。本發(fā)明還公開了一種防止LPC總線死鎖的裝置,如圖5所示,此裝置包 括狀態(tài)監(jiān)聽電路501、計時電路502和死鎖恢復電路503。狀態(tài)監(jiān)聽電路501,主要用于監(jiān)聽LPC總線同步域狀態(tài)。特別是監(jiān)聽到 LPC總線進入長等待狀態(tài)時,通知計時電路502開始計時;在監(jiān)聽到LPC總 線退出長等待狀態(tài)時,通知計時電路502對計時時間進行復位。計時電路502,主要用于計時,以確定LPC總線處于長等待狀態(tài)的時間 是否到達或超過預設的報警門限值。在狀態(tài)監(jiān)聽電路501告知其監(jiān)聽到的LPC 總線狀態(tài)仍然是長等待、且計時顯示長等待狀態(tài)的時間到達或超過預設的報 警門限值時,計時電路502產(chǎn)生報警信號,此報警信號會觸發(fā)死鎖恢復電路 503開始工作。在得到狀態(tài)監(jiān)聽電路501告知的LPC總線已退出長等待狀態(tài) 時,計時電路502對自身的計時時間進行復位。死鎖恢復電路503,主要用于驅(qū)動LPC總線退出長等待狀態(tài)。它由計時 電路502產(chǎn)生的報警信號觸發(fā),驅(qū)動LPC總線進入就緒狀態(tài)或錯誤狀態(tài)。如圖5所示,防止LPC總線死鎖的裝置還包括計時優(yōu)化電路504。計時優(yōu)化電路504主要用于動態(tài)調(diào)整計時電路502的報警門限值。它負 責記錄:LPC總線每次交易的交易信息,以及每次LPC總線處于長等待狀態(tài)的 時間,并根據(jù)交易信息統(tǒng)計LPC總線處于長等待狀態(tài)時間的歷史信息,利用 統(tǒng)計結(jié)果更新報警門限值。其中,LPC總線處于長等待狀態(tài)的時間,是從計時電路502讀取到的, 特別的,當狀態(tài)監(jiān)聽電路501監(jiān)聽到LPC總線退出長等待狀態(tài)、計時電路502 的計時時間小于報警門限值的情況下,從計時電路502讀取得到的計時時間 值 以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通 技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾, 這些改進和潤飾也應視為本發(fā)明的保護范圍。
權(quán)利要求
1、一種防止低腳數(shù)總線LPC死鎖的方法,其特征在于,所述方法包括監(jiān)聽LPC總線進入長等待狀態(tài);確定LPC總線處于長等待狀態(tài)的時間到達或超過預設的報警門限值后,驅(qū)動LPC總線進入正常的交易狀態(tài)。
2、 根據(jù)權(quán)利要求1所述的防止LPC總線死鎖的方法,其特征在于,所述 確定LPC總線處于長等待狀態(tài)的時間到達或超過預設的報警門限值,包括在監(jiān)聽到LPC總線進入長等待狀態(tài)時刻起,開始正計時; 判斷計時時間是否等于或大于預設的報警門限值,若是,則確定LPC總 線處于長等待狀態(tài)的時間到達或超過預設的報警門限值。
3、 根據(jù)權(quán)利要求1所述的防止LPC總線死鎖的方法,其特征在于,所述 確定LPC總線處于長等待狀態(tài)的時間到達或超過預設的報警門限值,包括在監(jiān)聽到LPC總線進入長等待狀態(tài)時刻起,從預設的報警門限值開始倒 計時;判斷計時是否溢出,若是,則確定LPC總線處于長等待狀態(tài)的時間到達 或超過預設的報警門限值。
4、 根據(jù)權(quán)利要求2或3所述的防止LPC總線死鎖的方法,其特征在于, 所述方法還包括監(jiān)聽LPC總線是否退出長等待狀態(tài),若是,將計時時間復位。
5、 根據(jù)權(quán)利要求l、 2或3所述的防止LPC總線死鎖的方法,其特征在 于,所述預設的報警門限值,包括硬件復位或軟件設定得到的默認值。
6、 根據(jù)權(quán)利要求l、 2或3所述的防止LPC總線死鎖的方法,其特征在 于,所述方法還包括記錄LPC總線交易信息;記錄LPC總線處于長等待狀態(tài)的時間;根據(jù)所述交易信息,對已記錄的各次LPC總線處于長等待狀態(tài)的時間進 行統(tǒng)計;根據(jù)所述統(tǒng)計的結(jié)果,更新報警門限值。
7、 根據(jù)權(quán)利要求l、 2或3所述的防止LPC總線死鎖的方法,其特征 在于,所述正常的交易狀態(tài),包括LPC總線的就緒狀態(tài)或鋯誤狀態(tài)。
8、 根據(jù)權(quán)利要求7所述的防止LPC總線死鎖的方法,其特征在于,在所 述驅(qū)動LPC總線進入正常的交易狀態(tài)的同時,所述方法還包括判斷正常的交易狀態(tài)是否是LPC總線的錯誤狀態(tài),若是,LPC總線與其 連接的主機進行錯誤信息交互。
9、 一種防止LPC總線死鎖的裝置,其特征在于,所述裝置包括狀態(tài) 監(jiān)聽電路、計時電i 各和死鎖恢復電5各;所述狀態(tài)監(jiān)聽電路,用于監(jiān)聽LPC總線進入長等待狀態(tài)后,通知計時電 路開始計時;所述計時電路,用于計時,并在確定LPC總線處于長等待狀態(tài)的時間到 達或超過預設的報警門限值時,產(chǎn)生報警信號;所述死鎖恢復電路,由所述計時電路產(chǎn)生的報警信號觸發(fā),驅(qū)動LPC總 線進入正常的交易狀態(tài)。
10、 根據(jù)權(quán)利要求9所述的防止LPC總線死鎖的裝置,其特征在于,所 述裝置還包括計時優(yōu)化電路,所述計時優(yōu)化電路,用于記錄LPC總線的交易信息,并記錄所述計時電 路提供的LPC總線處于長等待狀態(tài)的時間;根據(jù)所述交易信息對各次LPC總 線處于長等待狀態(tài)的時間進行統(tǒng)計,利用統(tǒng)計結(jié)果更新所述報警門限值。
11 、根據(jù)權(quán)利要求9或10所述的防止LPC總線死鎖的裝置,其特征在于,所述狀態(tài)監(jiān)聽電路,還用于監(jiān)聽LPC總線是否退出長等待狀態(tài),并將監(jiān) 聽結(jié)果告知計時電路;所述計時電路,根據(jù)來自狀態(tài)監(jiān)聽電路的LPC總線退出長等待狀態(tài)的監(jiān) 聽結(jié)果對自身進行復位.
全文摘要
本發(fā)明公開了一種防止LPC總線死鎖的方法,該方法包括步驟監(jiān)聽LPC總線進入長等待狀態(tài);確定LPC總線處于長等待狀態(tài)的時間到達或超過預設的報警門限值后,驅(qū)動LPC總線進入正常的交易狀態(tài)。本發(fā)明通過監(jiān)聽LPC總線的長等待狀態(tài),在長等待超時的情況下,控制LPC總線從長等待狀態(tài)恢復到正常的總線交易狀態(tài),防止了LPC總線出現(xiàn)死鎖。而且,本發(fā)明動態(tài)調(diào)整報警的時間,充分考慮了實際應用中主機對LPC總線長等待的忍耐程度,減少了不必要的總線開銷。本發(fā)明還公開了一種防止LPC總線死鎖的裝置。
文檔編號G06F13/42GK101154210SQ20061012708
公開日2008年4月2日 申請日期2006年9月26日 優(yōu)先權(quán)日2006年9月26日
發(fā)明者淵 呂, 嵩 成, 毛興中 申請人:聯(lián)想(北京)有限公司