一種計算機的溫度異常處理方法及系統與流程
2023-06-10 22:24:41 1
本發明屬於計算機散熱領域,尤其涉及一種計算機的溫度異常處理方法及系統。
背景技術:
在現有技術中,通常都是由計算機的ec(embeddedcontroller,嵌入式控制器)通過smbus(systemmanagementbus,系統管理總線)讀取溫度傳感器所檢測到的溫度值,並根據所述溫度值的高低來控制計算機的內部散熱風扇的轉速,以達到對計算機進行散熱的目的。
然而,由於溫度傳感器老化或存在質量問題等原因,導致其無法準確的檢測計算機的當前溫度,嚴重影響散熱風扇的正常散熱,從而降低了計算機的工作性能。
技術實現要素:
本發明的目的在於提供一種計算機的溫度異常處理方法及系統,旨在解決由於溫度傳感器老化或存在質量問題等原因,導致其無法準確的檢測計算機的當前溫度,嚴重影響散熱風扇的正常散熱,從而降低了計算機的工作性能的問題。
本發明是這樣實現的,一種計算機的溫度異常處理方法,所述方法包括:
獲取dts溫度值和溫度傳感器的溫度值;
監測所述dts溫度值是否更新;
若是,則獲取更新後的dts溫度值和溫度傳感器的最新溫度值;
比較所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差是否 大於預設閾值;
若是,則判定所述溫度傳感器不正常,並根據所述dts溫度值、所述溫度傳感器的溫度值和所述溫度傳感器的最新溫度值,計算得到計算機的當前溫度值。
優選的,所述比較所述更新後的dts溫度值和所述溫度傳感器的最新溫度值之差是否大於預設閾值之後,還包括:
若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差不大於預設閾值,則判定所述溫度傳感器正常;
直接輸出所述溫度傳感器的最新溫度值,作為所述計算機的當前溫度值。
本發明還提供一種計算機的溫度異常處理系統,所述系統包括:
第一獲取模塊,用於獲取dts溫度值和溫度傳感器的溫度值;
監測模塊,用於監測所述dts溫度值是否更新;
第二獲取模塊,用於若所述dts溫度值更新,則獲取更新後的dts溫度值和溫度傳感器的最新溫度值;
比較模塊,用於比較所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差是否大於預設閾值;
判定修正模塊,用於若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差大於預設閾值,則判定所述溫度傳感器不正常,並根據所述dts溫度值、所述溫度傳感器的溫度值和所述溫度傳感器的最新溫度值,計算得到計算機的當前溫度值。
優選的,所述監測模塊,具體包括:
所述判定修正模塊,還用於若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差不大於預設閾值,則判定所述溫度傳感器正常。本發明與現有技術相比,其有益效果在於:
通過將更新後的dts溫度值與溫度傳感器的最新溫度值進行比較,來判斷溫度傳感器是否正常,可在溫度傳感器不正常導致其檢測的溫度值不準確時, 通過計算得到正確的計算機的當前溫度值,以保證計算機的正常散熱;
通過將獲取到的所述dts溫度值寫入第一存儲地址,同時在第二存儲地址設置標誌位,以通過查看所述標誌位是否被置位來判斷所述dts溫度值是否更新,可簡單方便且快速有效的獲取更新後的dts溫度值,以在不降低系統性能的前提下保證系統的數據更新效率。
附圖說明
圖1是本發明實施例提供的計算機的溫度異常處理方法的基本流程框圖;
圖2是本發明實施例提供的dts溫度值的更新監測方法的基本流程框圖;
圖3是本發明實施例提供的計算機的溫度異常處理系統的基本結構框圖;
圖4是本發明實施例提供的dts溫度值的更新監測系統的基本流程框圖;
圖5是本發明另一實施例提供的計算機的溫度檢測系統的基本結構框圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,並不用於限定本發明。
圖1是本發明實施例提供的計算機的溫度異常處理方法的基本流程框圖。
如圖1所示,本實施例提供的計算機的溫度異常處理方法,包括:
步驟s101:獲取dts溫度值和溫度傳感器的溫度值。
在具體應用中,步驟s101具體包括:
計算機的bios(basicinputoutputsystem,基本輸入輸出系統)通過cpu(centralprocessingunit,中央處理器)讀取dts(digitaltemperaturesensor,數字式溫度傳感器)的dts溫度值;
計算機的ec通過smbus向溫度傳感器發送數據讀取命令,以獲得溫度傳感器的溫度值。
在一優選實施例中,步驟s101之前還包括:
進行系統初始化。
在具體應用中,在計算機系統每次開始啟動之前需要對系統進行初始化,本發明中,在對計算機系統進行初始化時,通過bios對dts進行初始化。
步驟s102:監測所述dts溫度值是否更新。
在具體應用中,可以通過ec來監測dts溫度值是否更新;也可以通過向bios實時發送sci(serialcommunicationinterface,串行通信接口)事件來顯示dts溫度值的更新情況。sci事件是指通過串行通信接口在固定時間內,定時發送文檔、數據、程序等信息。
本實施例中,優選通過ec來監測dts溫度值是否更新的方法。
步驟s103:若是(即,若所述dts溫度值更新),則獲取更新後的dts溫度值和溫度傳感器的最新溫度值。
在具體應用中,步驟s103具體包括:
當ec監測到dts溫度值更新後,獲取所述更新後的dts溫度值,與此同時,立即通過smbus向溫度傳感器發送數據讀取命令,以獲取溫度傳感器的最新溫度值。
步驟s104:比較所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差是否大於預設閾值。
在具體應用中,步驟s104由計算機的ec來執行。
所述預設閾值,可以根據計算機的dts、溫度傳感器以及計算機自身的性能好壞進行設置。
在本實施例中,所述預設閾值優選為±7℃,即,在同一時刻。溫度傳感器檢測到溫度值與dts檢測到的dts溫度值的差值的正偏差為7℃、負偏差為-7℃。
步驟s105:若是(即,若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差大於預設閾值),則判定所述溫度傳感器不正常,並根據所述 dts溫度值、所述溫度傳感器的溫度值和所述溫度傳感器的最新溫度值,計算得到計算機的當前溫度值。
在具體應用中,步驟s105由計算機的ec來執行。
在一優選實施例中,步驟s105具體包括:
若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差大於預設閾值,則判定所述溫度傳感器不正常;
計算所述溫度傳感器的溫度值與其最新溫度值之間的差值;
對所述dts溫度值與所述差值進行加運算,得到計算機的當前溫度值。
在實際應用中,當溫度傳感器老化或者存在質量問題時,會導致溫度傳感器檢測到的溫度值不準確,然而,根據溫度傳感器的工作原理,雖然溫度傳感器老化或存在質量問題會導致溫度傳感器單次讀取的溫度值不準確,但是其前後兩次所檢測到的溫度值的變化是準確的。因此,通過將dts溫度值作為基準值,將溫度傳感器前後兩次檢測到的溫度值的差值作為溫度的變化量,來增減所述基準值,所得到的最終值,可以作為實際的計算機的當前溫度值。
在一優選實施例中,步驟s105之後還包括:輸出所述計算機的當前溫度值。
在具體應用中,輸出所述計算機的當前溫度值的操作由bios來執行。
在本實施例中,步驟s105具體還包括:
若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差不大於預設閾值,則判定所述溫度傳感器正常;
對應的,在一優選實施例中,步驟s105之後還包括:直接輸出所述溫度傳感器的最新溫度值,作為所述計算機的當前溫度值。
在具體應用中,直接輸出所述溫度傳感器的最新溫度值,作為所述計算機的當前溫度值由bios來執行。
由於客觀的環境因素的影響,以及測量精度和檢測方式的影響,溫度傳感器所檢測到的溫度值必然與通過dts獲取的dts溫度值有偏差,當兩者之間的溫度值偏差在可接受的誤差範圍內時(即,若所述更新後的dts溫度值與所 述溫度傳感器的最新溫度值之差不大於預設閾值),則認為溫度傳感器正常,溫度傳感器所檢測到的最新溫度值,即可以作為實際的計算機的當前溫度值。
圖2是本發明實施例提供的dts溫度值的更新監測方法的基本流程框圖。
如圖2所示,本實施例提供的dts溫度值的更新檢測方法是對圖1所示的步驟s102的具體擴展,具體包括:
步驟s201:將獲取到的所述dts溫度值寫入第一存儲地址,同時在第二存儲地址設置標誌位。
在具體應用中,所述步驟s201由bios執行。
在一優選實施例中,步驟s201具體包括:
bios通過acpi(advancedconfigurationandpowermanagementinterface,高級配置和電源管理接口)的預設埠向ec的第一存儲地址寫入獲取到的所述dts溫度值,同時在ec的第二存儲地址設置標誌位。
在具體應用中,所述預設埠具體為acpi的6226埠;第一存儲地址為ec的內存空間0x440;第二存儲地址為ec的內存空間0x441。
步驟s202:每間隔預設時間段查看所述標誌位是否被置位。
在具體應用中,所述預設時間段可以結合計算機的具體工作狀態和實際的散熱需要進行設定。本實施例中優選所述預設時間段為1s(秒)。
步驟s203:若被置位,則判定所述dts溫度值有更新並清除所述標誌位的數據。
在具體應中,步驟s202和s203由ec來執行。
在本實施例中,所述標誌位為狀態標誌位。
通過查看標誌位是否被置位來判斷dts溫度值是否有更新的原理為:
設標誌位的初始狀態值為0,當dts溫度值有更新且新的dts溫度值被寫入所述第一存儲地址時,所述第二存儲地址的所述標誌位被置位,其狀態值由0變為1,通過查看標誌位的狀態值是0還是1(即查看標誌位是否被置位),可以判斷dts溫度值是否有更新;當標誌位的數據被清除(即狀態值1被清除) 之後,所述標誌位的狀態值再次變為0,當下一次dts溫度值有更新時,所述標誌位會再一次被置位,狀態值再次由0變為1,如此循環往復。
圖3是本發明實施例提供的計算機的溫度異常處理系統的基本結構框圖。
如圖3所示,本實施例提供的計算機的溫度異常處理系統,包括:
第一獲取模塊101,用於獲取dts溫度值和溫度傳感器的溫度值。
在具體應用中,所述第一獲取模塊101為計算機的bios和ec,bios向cpu讀取dts溫度值,ec通過smbus向溫度傳感器發送數據讀取命令獲取溫度傳感器的溫度值。
在一優選實施例中,所述系統還包括初始化模塊,用於進行系統初始化。
在計算機系統每次開始啟動的時候,計算機的bios會對dts進行初始化,然後向cpu讀取dts溫度值。
監測模塊102,用於監測所述dts溫度值是否更新。
在具體應用中,所述監測模塊102為計算機的ec;也可以是計算機的bios;bios通過實時發送sci(serialcommunicationinterface,串行通信接口)事件來顯示dts溫度值的更新情況。sci事件是指通過串行通信接口在固定時間內,定時發送文檔、數據、程序等信息。
第二獲取模塊103,用於若所述dts溫度值更新,則獲取更新後的dts溫度值和溫度傳感器的最新溫度值。
在具體應用中,第二獲取模塊103為計算機的ec,當ec監測到dts溫度值更新後,獲取所述更新後的dts溫度值,與此同時,立即通過smbus向溫度傳感器發送數據讀取命令,以獲取溫度傳感器的最新溫度值。
比較模塊104,用於比較所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差是否大於預設閾值。
在具體應用中,比較模塊104為計算機的ec。
判定修正模塊105,用於若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差大於預設閾值,則判定所述溫度傳感器不正常,並根據所述dts 溫度值、所述更新後的dts溫度值和所述溫度傳感器的最新溫度值,計算得到計算機的當前溫度值。
在具體應用中,判定修正模塊105為計算機的ec。
在一優選實施例中,所述判定修正模塊105,具體包括:
判定單元,用於若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差大於預設閾值,則判定所述溫度傳感器不正常;
計算單元,用於計算所述溫度傳感器的溫度值與其最新溫度值之間的差值;
修正單元,用於對所述dts溫度值與所述差值進行加運算,得到計算機的當前溫度值。
在一優選實施例中,所述系統還包括輸出模塊,用於輸出所述計算機的當前溫度值。
在具體應用中,輸出模塊為計算機的bios。
在一優選實施例中,所述判定修正模塊105,還用於若所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差不大於預設閾值,則判定所述溫度傳感器正常;
對應的,所述輸出模塊,還用於直接輸出所述溫度傳感器的最新溫度值,作為所述計算機的當前溫度值。
圖4是本發明實施例提供的dts溫度值的更新監測系統的基本流程框圖。
如圖4所示,本實施例提供的dts溫度值的更新檢測系統是對圖3所示的監測模塊102的具體擴展,具體包括:
存儲置位單元201,用於將獲取到的所述dts溫度值寫入第一存儲地址,同時在第二存儲地址設置標誌位。
在具體應用中,存儲置位單元201為計算機的bios。
在一優選實施例中,存儲置位單元201具體用於:
通過acpi(advancedconfigurationandpowermanagementinterface,高級配置和電源管理接口)的預設埠向ec的第一存儲地址寫入獲取到的所述dts 溫度值,同時在ec的第二存儲地址設置標誌位。
在具體應用中,所述預設埠具體為acpi的6226埠;第一存儲地址為ec的內存空間0x440;第二存儲地址為ec的內存空間0x441。
查詢單元202,用於每間隔預設時間段查看所述標誌位是否被置位。
在具體應用中,所述預設時間段可以結合計算機的具體工作狀態和實際的散熱需要進行設定。本實施例中優選所述預設時間段為1s(秒)。
清除單元203,用於若所述標誌位被置位,則判定所述dts溫度值有更新並清除所述標誌位的數據。
在具體應中,查詢單元202和清除單元203為計算機的ec。
圖5是本發明另一實施例提供的計算機的溫度檢測系統的基本結構框圖。
本發明實施例提供一種計算機的溫度檢測方法,通過如圖5所示的計算機的溫度檢測系統來實現。
如圖5所示,所述系統包括計算機的cpu、通過lpc(lowpincount)與所述cpu連接的ec、通過smbus與所述ec連接的溫度傳感器,所述cpu包括bios和與所述bios連接的dts。
所述計算機的溫度檢測方法具體包括:
在對計算機系統進行初始化時,同時初始化計算機的dts;
bios向cpu讀取dts溫度值,並通過acpi的6266埠向ec的內存空間0x440寫入所述dts溫度值,與此同時在ec的內存空間0x441置標誌位;
ec每間隔1秒鐘查看所述標誌位是否被置位,若被置位,則讀取所述內存空間0x440中寫入的更新後的dts溫度值,清除所述標誌位的置位數據;與此同時,ec立刻通過smbus發送數據讀取命令到溫度傳感器,獲取所述溫度傳感器的最新溫度值;
ec比較所述更新後的dts溫度值與所述溫度傳感器的最新溫度值之差是否在±7℃以內(包括等於±7℃的情況);
若是,則判定所述溫度傳感器正常,溫度傳感器所檢測到的溫度值正確, 通過bios直接輸出所述溫度傳感器的最新溫度值,作為計算機的當前溫度值;
若否,則判定所述溫度傳感器不正常,其所檢測到的溫度值錯誤,計算所述溫度傳感器的溫度值與其最新溫度值之間的差值,對所述dts溫度值與所述差值進行加運算,得到計算機的當前溫度值,通過bios輸出所述計算機的當前溫度值。
以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。