專利名稱:計算機系統(tǒng)錯誤偵測系統(tǒng)及方法
技術領域:
本發(fā)明涉及一種計算機系統(tǒng)檢測系統(tǒng)及方法,特別是關于一種計算機系統(tǒng)錯誤偵測系統(tǒng)及方法。
背景技術:
目前,在高階的計算機系統(tǒng)(例如服務器)中出現了集成北橋功能的中央處理器 (Central Processing Unit,CPU),將內存控制與連接的功能從北橋移到了 CPU內部。若是在這種類型的計算機系統(tǒng)發(fā)生錯誤時,例如CPU內部錯誤(Inter Error, IERR)和內存多位錯誤(Multi-Bit Error), CPU都會因此而停止工作。然而,這兩種類型的系統(tǒng)錯誤都是由 CPU用相同的一根管腳向外部設備傳遞信息,這樣會造成外部設備獲取CPU錯誤信號的混亂,而且會降低服務器自我監(jiān)測能力,使得用戶無法詳細的辨清錯誤根源,增加了維護的難度。
發(fā)明內容
鑒于以上內容,有必要提供一種計算機系統(tǒng)錯誤偵測系統(tǒng)及方法,利用基板管理控制器自動偵測出計算機系統(tǒng)發(fā)生的錯誤是CPU的內部錯誤還是內存的多位字節(jié)錯誤。所述的計算機系統(tǒng)錯誤偵測系統(tǒng),安裝并運行于基板管理控制器中。該計算機系統(tǒng)包括CPU以及內存,該基板管理控制器通過CPU的GPIO端口與計算機系統(tǒng)相連接。所述的計算機系統(tǒng)錯誤偵測系統(tǒng)包括參數設置模塊,用于設置一個中斷全局標志位,以及初始化該中斷全局標志位為零;信號監(jiān)測模塊,用于在計算機系統(tǒng)運行過程中實時地監(jiān)測由 CPU通過GPIO端口輸出的GPIO信號,以及在一段延遲時間內檢測CPU輸出的GPIO信號是否由高電平信號轉化為低電平信號;中斷服務模塊,用于當所述GPIO信號由高電平信號轉化為低電平信號時,啟動中斷服務程式觸發(fā)一次中斷服務將中斷全局標志位加一,以及在所述延遲時間后檢測中斷全局標志位是否大于等于一;錯誤處理模塊,用于當中斷全局標志位等于一時確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為CPU內部錯誤,以及當中斷全局標志位大于一時確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為內存多位字節(jié)錯誤。所述的計算機系統(tǒng)錯誤偵測方法,該計算機系統(tǒng)包括CPU以及內存,并通過CPU的 GPIO端口與基板管理控制器相連接。該方法包括步驟設置一個中斷全局標志位,并初始化該中斷全局標志位為零;在計算機系統(tǒng)運行過程中實時地監(jiān)測由CPU通過GPIO端口輸出的GPIO信號;判斷所述CPU輸出的GPIO信號是否為高電平信號;當所述CPU輸出的GPIO 信號為低電平信號時,啟動中斷服務程式觸發(fā)一次中斷服務將中斷全局標志位加一;在一段延遲時間內檢測CPU輸出的GPIO信號是否由低電平信號轉化為高電平信號;當GPIO信號由低電平信號轉化為高電平信號時,啟動中斷服務程式觸發(fā)一次中斷服務將中斷全局標志位加一;在延遲時間后判斷中斷全局標志位是否大于等于一;若中斷全局標志位等于一,則確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為CPU內部錯誤;若中斷全局標志位大于一,則確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為內存多位字節(jié)錯誤。
相較于現有技術,本發(fā)明所述的計算機系統(tǒng)錯誤偵測系統(tǒng)及方法,利用基板管理控制器能夠自動偵測出計算機系統(tǒng)發(fā)生的錯誤是CPU的內部錯誤還是內存的多位字節(jié)錯誤,并提示用戶計算機系統(tǒng)發(fā)生的錯誤類型,從而使用戶方便對計算機系統(tǒng)發(fā)生的錯誤進行處理。
圖1是本發(fā)明計算機系統(tǒng)錯誤偵測系統(tǒng)較佳實施例的架構圖。圖2是本發(fā)明計算機系統(tǒng)錯誤偵測方法較佳實施例的流程圖。圖3是由計算機系統(tǒng)的CPU輸出的GPIO信號的示意圖。主要元件符號說明基板管理控制器1微處理器11存儲單元12參數設置模塊101信號監(jiān)測模塊102中斷服務模塊103錯誤處理模塊104計算機系統(tǒng)2CPU20內存21顯示器2具體實施例方式如圖1所示,是本發(fā)明計算機系統(tǒng)錯誤偵測系統(tǒng)10較佳實施例的架構圖。在本實施例中,該計算機系統(tǒng)錯誤偵測系統(tǒng)10安裝并運行于基板管理控制器(Baseboard Management Controller, BMC) 1中,能夠在計算機系統(tǒng)2發(fā)生系統(tǒng)錯誤時,例如計算機系統(tǒng)2的中央處理器(CentralProcessing Unit, CPU) 20本身發(fā)生內部錯誤(Inter Error, IERR)或者計算機系統(tǒng)2的內存21發(fā)生多位字節(jié)錯誤(Multi-Bit Error),偵測出所述系統(tǒng)錯誤是CPU 20的內部錯誤還是內存21的多位字節(jié)錯誤。所述的CPU20內部錯誤包括, 但不僅限于,CPU 20處理數據時發(fā)生的數據運算錯誤或者是邏輯控制錯誤。所述的內存21 的多位字節(jié)錯誤包括,但不僅限于,內存21中的數據損壞錯誤或者是讀寫數據時發(fā)生字節(jié)錯位錯誤。所述的基板管理控制器1通過CPU 20的通用輸入輸出端口(GeneralPurpose Input Output,GPI0)與計算機系統(tǒng)2相連接。所述的計算機系統(tǒng)2可以為桌上型計算機、 筆記本計算機、服務器或者工作站計算機之一種。在本實施例中,所述的基板管理控制器1 包括,但不僅限于,微處理器11以及存儲單元12。所述的計算機系統(tǒng)2包括,但不僅限于, CPU 20、內存21以及顯示器22。所述的計算機系統(tǒng)錯誤偵測系統(tǒng)10包括參數設置模塊101、信號監(jiān)測模塊102、中斷服務模塊103以及錯誤處理模塊104。本發(fā)明所稱的模塊是一種能夠被微處理器11所執(zhí)行并且能夠完成固定功能的一系列計算機程序段,其存儲在基板管理控制器1的存儲單元 12中。所述的參數設置模塊101用于設置一個中斷全局標志位(例如標志為tag),并初始化該中斷全局標志位tag為零,即令中斷全局標志位tag = 0。所述的中斷全局標志位 tag用于標示微處理器11啟動中斷服務程式觸發(fā)中斷服務的次數,當微處理器11每啟動一次中斷服務,將中斷全局標志位tag作加一運算,即作tag = tag+1運算。所述的信號監(jiān)測模塊102用于在計算機系統(tǒng)1運行過程中實時地監(jiān)測由CPU 20 通過GPIO端口輸出的GPIO信號,以及判斷GPIO信號是否為高電平信號。在本實施例中, 當計算機系統(tǒng)1正常運行時,CPU 20輸出的GPIO信號始終為高電平信號,其用二進制數字 “1”表示,參考圖3(a)所示。當計算機系統(tǒng)1運行時CPU 20本身發(fā)生內部錯誤,CPU 20 輸出的GPIO信號則由高電平信號“ 1”變化為低電平信號,其用二進制數字“0”表示,而后 GPIO信號一直為低電平信號“0”,參考圖3(b)所示。當計算機系統(tǒng)1運行時內存21發(fā)生多位字節(jié)錯誤,則CPU 20輸出的GPIO信號在高低電平信號之間上下波動,亦即由高電平信號“ 1”變化為低電平信號“0”,再由低電平信號“0”變化為高電平信號“ 1”,而后一直為低電平信號“0”。參考圖3(c)所示。當內存21發(fā)生多位字節(jié)錯誤,GPIO信號一般經過18個 CPU時鐘周期的高低電平信號上下波動后,而后一直為低電平信號“0”。所述的信號監(jiān)測模塊102還用于在一段延遲時間內判斷CPU 20輸出的GPIO信號是否由高電平信號轉化為低電平信號。在本實施例中,所述的延遲時間的長短取決于CPU 20的工作頻率,假如CPU 20的工作頻率為1000Hz,則所述的延遲時間為3秒鐘。所述的中斷服務模塊103用于當所述的延遲時間內GPIO信號由高電平信號“1”轉化為低電平信號“0”時,啟動中斷服務程式觸發(fā)一次中斷服務并將中斷全局標志位tag加一,即作tag = tag+1運算。該中斷服務模塊103還用于在所述的延遲時間后檢測中斷全局標志位tag并判斷該中斷全局標志位tag是否等于一。所述的錯誤處理模塊104用于當中斷全局標志位tag等于一時確定計算機系統(tǒng)1 發(fā)生的系統(tǒng)錯誤為CPU 20的內部錯誤,當中斷全局標志位tag大于一時確定計算機1發(fā)生的系統(tǒng)錯誤為內存21的多位字節(jié)錯誤,例如內存21發(fā)生2,4,8,. . . 2n位字節(jié)錯誤,其中η 為大于1的自然數。所述的錯誤處理模塊104還用于判斷計算機系統(tǒng)1是否發(fā)生死機。當信號監(jiān)測模塊102沒有監(jiān)測到CPU 20輸出的GPIO信號時,即說明計算機系統(tǒng)1發(fā)生死機, 錯誤處理模塊104將中斷全局標志位tag清零,并關閉或重起計算機系統(tǒng)1對發(fā)生的系統(tǒng)錯誤進行處理。在本實施例中,當計算機系統(tǒng)1發(fā)生系統(tǒng)錯誤,錯誤處理模塊104將系統(tǒng)錯誤(例如CPU 20的內部錯誤或者內存21的多位字節(jié)錯誤)顯示在計算機1的顯示器22中,以提示用戶計算機系統(tǒng)1發(fā)生的系統(tǒng)錯誤的類型,從而使用戶方便對計算機系統(tǒng)1發(fā)生的錯誤進行處理。如圖2所示,是本發(fā)明計算機系統(tǒng)錯誤偵測系統(tǒng)10方法較佳實施例的流程圖。在本實施例中,該方法能夠在計算機系統(tǒng)2發(fā)生系統(tǒng)錯誤時,利用基板管理控制器1偵測出該系統(tǒng)錯誤是計算機系統(tǒng)2的CPU 20的內部錯誤還是內存21的多位字節(jié)錯誤。步驟S20,參數設置模塊101設置一個中斷全局標志位(例如標志為tag),并初始化該中斷全局標志位tag為零,即令中斷全局標志位tag = 0。
步驟S21,信號監(jiān)測模塊102在計算機系統(tǒng)1運行過程中實時地檢測由CPU 20通過GPIO端口輸出的GPIO信號。當計算機系統(tǒng)1正常運行時,則所述的GPIO信號始終為高電平信號“1”,參考圖3 (a)所示。當計算機系統(tǒng)1運行時CPU 20本身發(fā)生內部錯誤,所述的GPIO信號則由高電平信號“1”變化為低電平信號“0”,而后GPIO信號一直為低電平信號 “0”,參考圖3(b)所示。當計算機系統(tǒng)1運行時內存21發(fā)生多位字節(jié)錯誤,所述的GPIO信號則由高電平信號“1”變化為低電平信號“0”,再由低電平信號“0”變化為高電平信號“1”。 參考圖3(c)所示,當內存21發(fā)生多位字節(jié)錯誤時,GPIO信號一般經過18個CPU時鐘周期的高低電平信號上下波動后,而后一直為低電平信號“0”。步驟S22,信號監(jiān)測模塊102判斷CPU 20輸出的GPIO信號是否為高電平信號“ 1 ”。 若所述的GPIO信號為高電平信號“1”,則返回步驟S21 ;若所述的GPIO信號為低電平信號 “0”,則執(zhí)行步驟S23。步驟S23,中斷服務模塊103啟動中斷服務程式觸發(fā)一次中斷服務并將中斷全局標志位tag加一,即作tag = tag+1運算。步驟S24,信號監(jiān)測模塊102在一段延遲時間內判斷所述GPIO信號是否由低電平信號“0”轉化為高電平信號“1”。在本實施例中,所述的延遲時間的長短取決于CPU 20的工作頻率,假如CPU 20的工作頻率為1000Hz,則所述的延遲時間為3秒鐘。若在所述延遲時間內GPIO信號由低電平信號“0”轉化為高電平信號“ 1 ”,則返回步驟S23。若在所述延遲時間內GPIO信號沒有從低電平信號“0”轉化為高電平信號“1”, 步驟S25,中斷服務模塊103在所述延遲時間后判斷中斷全局標志位tag是否等于一。若中斷全局標志位tag等于一,步驟S26,錯誤處理模塊104則確定計算機系統(tǒng)1 發(fā)生的系統(tǒng)錯誤為CPU 20的內部錯誤;若中斷全局標志位tag大于一,步驟S27,錯誤處理模塊104則確定計算機1發(fā)生的系統(tǒng)錯誤為內存21的多位字節(jié)錯誤。步驟S28,錯誤處理模塊104判斷計算機系統(tǒng)1是否發(fā)生死機。在本實施例中,當信號監(jiān)測模塊102沒有監(jiān)測到CPU 20輸出的GPIO信號時,錯誤處理模塊104判斷即計算機系統(tǒng)1發(fā)生死機。若計算機系統(tǒng)1沒有發(fā)生死機,則流程返回步驟S21,信號監(jiān)測模塊102 則繼續(xù)監(jiān)測CPU 20輸出的GPIO信號。若計算機系統(tǒng)1發(fā)生死機,步驟S29,錯誤處理模塊 104則將中斷全局標志位tag清零,并關閉或重起計算機系統(tǒng)1對發(fā)生的系統(tǒng)錯誤進行處理。當計算機系統(tǒng)1發(fā)生系統(tǒng)錯誤,所述的錯誤處理模塊104將系統(tǒng)錯誤(例如CPU 20的內部錯誤或者內存21的多位字節(jié)錯誤)顯示在計算機1的顯示器22中,以提示用戶計算機系統(tǒng)1發(fā)生的系統(tǒng)錯誤的類型,從而使用戶方便對計算機系統(tǒng)1發(fā)生的錯誤進行處理。以上實施例僅用以說明本發(fā)明的技術方案而非限制,盡管參照以上較佳實施例對本發(fā)明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發(fā)明的技術方案進行修改或等同替換都不應脫離本發(fā)明技術方案的精神和范圍。
權利要求
1.一種計算機系統(tǒng)錯誤偵測系統(tǒng),安裝并運行于基板管理控制器中,該計算機系統(tǒng)包括CPU以及內存,該基板管理控制器通過CPU的GPIO端口與計算機系統(tǒng)相連接,其特征在于,該計算機系統(tǒng)錯誤偵測系統(tǒng)包括參數設置模塊,用于設置一個中斷全局標志位,以及初始化該中斷全局標志位為零; 信號監(jiān)測模塊,用于在計算機系統(tǒng)運行過程中實時地監(jiān)測由CPU通過GPIO端口輸出的 GPIO信號,以及在一段延遲時間內檢測CPU輸出的GPIO信號是否由高電平信號轉化為低電平信號;中斷服務模塊,用于當所述GPIO信號由高電平信號轉化為低電平信號時,啟動中斷服務程式觸發(fā)一次中斷服務將中斷全局標志位加一,以及在所述延遲時間后檢測中斷全局標志位是否大于等于一;錯誤處理模塊,用于當中斷全局標志位等于一時確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為 CPU內部錯誤,以及當中斷全局標志位大于一時確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為內存多位字節(jié)錯誤。
2.如權利要求1所述的計算機系統(tǒng)錯誤偵測系統(tǒng),其特征在于,所述的錯誤處理模塊還用于當計算機系統(tǒng)發(fā)生系統(tǒng)錯誤時將所述系統(tǒng)錯誤顯示在計算機的顯示器上。
3.如權利要求1所述的計算機系統(tǒng)錯誤偵測系統(tǒng),其特征在于,所述的錯誤處理模塊還用于判斷計算機系統(tǒng)是否發(fā)生死機,當計算機系統(tǒng)發(fā)生死機時,將中斷全局標志位清零, 并關閉或重起計算機系統(tǒng)對所述系統(tǒng)錯誤進行處理。
4.如權利要求1所述的計算機系統(tǒng)錯誤偵測系統(tǒng),其特征在于,當計算機系統(tǒng)正常運行時CPU輸出的GPIO信號始終為高電平信號,當CPU發(fā)生內部錯誤時CPU輸出的GPIO信號由高電平信號變化為低電平信號,而后一直為低電平信號,當內存發(fā)生多位字節(jié)錯誤時CPU 輸出的GPIO信號在高電平信號與低電平信號之間上下波動。
5.如權利要求1所述的計算機系統(tǒng)錯誤偵測系統(tǒng),其特征在于,所述的延遲時間長短取決于CPU的工作頻率。
6.一種計算機系統(tǒng)錯誤偵測方法,該計算機系統(tǒng)包括CPU以及內存,并通過CPU的 GPIO端口與基板管理控制器相連接,其特征在于,該方法包括步驟設置一個中斷全局標志位,并初始化該中斷全局標志位為零;在計算機系統(tǒng)運行過程中實時地監(jiān)測由CPU通過GPIO端口輸出的GPIO信號;判斷所述CPU輸出的GPIO信號是否為高電平信號;當所述CPU輸出的GPIO信號為低電平信號時,啟動中斷服務程式觸發(fā)一次中斷服務將中斷全局標志位加一;在一段延遲時間內檢測CPU輸出的GPIO信號是否由低電平信號轉化為高電平信號; 當所述GPIO信號由低電平信號轉化為高電平信號時,啟動中斷服務程式觸發(fā)一次中斷服務將中斷全局標志位加一;在所述延遲時間后判斷中斷全局標志位是否大于等于一; 若中斷全局標志位等于一,則確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為CPU內部錯誤; 若中斷全局標志位大于一,則確定計算機系統(tǒng)發(fā)生的系統(tǒng)錯誤為內存多位字節(jié)錯誤。
7.如權利要求6所述的計算機系統(tǒng)錯誤偵測方法,其特征在于,該方法還包括步驟當計算機系統(tǒng)發(fā)生系統(tǒng)錯誤時,將所述的系統(tǒng)錯誤顯示在計算機的顯示器上。
8.如權利要求6所述的計算機系統(tǒng)錯誤偵測方法,其特征在于,該方法還包括步驟 判斷計算機系統(tǒng)是否發(fā)生死機;若計算機系統(tǒng)沒有發(fā)生死機,則繼續(xù)監(jiān)測CPU輸出的GPIO信號; 若計算機系統(tǒng)發(fā)生死機,則將中斷全局標志位清零并關閉或重起計算機系統(tǒng)對所述的系統(tǒng)錯誤進行處理。
9.如權利要求6所述的計算機系統(tǒng)錯誤偵測方法,其特征在于,當計算機系統(tǒng)正常運行時CPU輸出的GPIO信號始終為高電平信號,當CPU發(fā)生內部錯誤時CPU輸出的GPIO信號由高電平信號變化為低電平信號,而后一直為低電平信號,當內存發(fā)生多位字節(jié)錯誤時CPU 輸出的GPIO信號在高電平信號與低電平信號之間上下波動。
10.如權利要求6所述的計算機系統(tǒng)錯誤偵測方法,其特征在于,所述的延遲時間長短取決于CPU的工作頻率。
全文摘要
一種計算機系統(tǒng)錯誤偵測系統(tǒng)及方法,該方法包括步驟設置一個中斷全局標志位,并初始化該中斷全局標志位為零;在計算機系統(tǒng)運行過程中實時地監(jiān)測由CPU通過GPIO端口輸出的GPIO信號;判斷GPIO信號是否為高電平信號;當在一段延遲時間內GPIO信號由高電平信號轉化為低電平信號時,啟動中斷服務程式觸發(fā)一次中斷服務并將中斷全局標志位加一;在所述延遲時間后檢測中斷全局標志位是否大于等于一;若中斷全局標志位等于一,則確定計算機系統(tǒng)發(fā)生的錯誤為CPU內部錯誤;若中斷全局標志位大于一,則確定計算機系統(tǒng)發(fā)生的錯誤為內存多位字節(jié)錯誤。實施本發(fā)明,能夠利用基板管理控制器自動偵測出計算機系統(tǒng)發(fā)生的錯誤類型。
文檔編號G06F11/32GK102567177SQ201010606848
公開日2012年7月11日 申請日期2010年12月25日 優(yōu)先權日2010年12月25日
發(fā)明者張玉崗 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司