機器檢查異常
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
機器檢查異常(英語:Machine Check Exception,簡稱MCE)是計算機的中央處理器檢測到一個硬件問題發生的計算機硬件錯誤。
現代版本的Microsoft Windows通過Windows硬件錯誤架構處理機器檢查異常。當該架構檢測到機器檢查異常(MCE)時,它會以藍屏死機顯示該錯誤,附以下列參數(數值可能變化,但機器檢查異常導致的首個參數始終為0x0):[1]
*** STOP: 0x00000124 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000)
在Linux上,進程(例如klogd
[2])會向內核日誌和/或控制台屏幕寫入消息(通常僅在錯誤不可恢復且機器因此崩潰時,消息才會發送到控制台):
CPU 0: Machine Check Exception: 0000000000000004 Bank 2: f200200000000863 Kernel panic: CPU context corrupt
該錯誤通常是由於硬件組件的故障或過負載而發生,其中的錯誤不能用更具體的錯誤消息來識別。診斷其錯誤消息可能很困難,儘管英特爾奔騰處理器確實生成更具體的代碼,可以聯繫製造商進行解碼。[來源請求]
大多數機器檢查異常需要重啟系統才能繼續為用戶正常運行。[來源請求]
問題類型
這些錯誤大多明確與奔騰處理器家族有關[來源請求]。其他處理器上也可能出現類似的錯誤以及導致類似的問題。
導致機器檢查異常的一些主要的硬件問題包括:
可能的原因
機器檢查異常的一般原因包括系統過熱、硬件安裝不正確。具體的因操作引起的原因有:
計算機軟件也可能導致機器檢查異常錯誤(通常因為程序讀取或寫入了損壞的數據)。例如,軟件讀或寫不存在的內存區域可能導致處理器或系統總線的失措。[來源請求]訪問被UEFI標記為限制的內存也可能機器檢查異常錯誤。[3]
解碼MCE
如前所述,機器檢查錯誤的準確解碼存在難度。通常來說,製造商(尤其是中央處理器的製造商)能夠提供有關特定代碼的信息。參閱「Intel 64和IA-32架構軟件開發人員手冊」[4]第14章(機器檢查架構),或微軟知識庫文章 - Windows 異常。[5]
解碼MCE的程序
- mcat:AMD的一個Windows命令行程序,可解碼AMD K8,家族0x10和0x11的處理器的MCE。
- mcelog[6]:Andi Kleen製作的一個Linux守護進程,它處理現代x86處理器的MCE。mcelog也可解碼機器檢查。
- parsemce[7]:Dave Jones製作的一個Linux程序,解碼AMD K7處理器的MCE。
- mced[8]:Tim Hockin製作的一個Linux程序,從內核收集MCE並提醒感興趣的應用程序。它不會嘗試解釋MCE數據,只是提醒其他程序。
參見
參考資料
- ^ Bug Check 0x124: WHEA_UNCORRECTABLE_ERROR. MSDN. 2016-09-29 [2016-10-26]. (原始內容存檔於2016-12-23).
- ^ Steve Lord, Greg Wettstein. klogd(8) - Linux man page. [2016-10-26]. (原始內容存檔於2019-10-24).
klogd is a system daemon which intercepts and logs Linux kernel messages.
- ^ Bug 47121: UEFI boot panics on a new Samsung Series 9 laptop throwing a machine check exception. Linux kernel bug tracker. 2012-10-13 [2016-10-26]. (原始內容存檔於2019-04-04).
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual: Volume 3A: System Programming Guide, Part 1 (PDF). Intel. May 2011 [2016-10-26]. (原始內容 (PDF)存檔於2008-12-21).
- ^ Stop error message in Windows XP that you may receive: "0x0000009C (0x00000004, 0x00000000, 0xb2000000, 0x00020151)". MSDN. 2015-12-07 [2016-10-26]. (原始內容存檔於2017-01-08).
- ^ mcelog: Advanced hardware error handling for x86 Linux. 2015-04-20 [2016-10-26]. (原始內容存檔於2021-02-25).
- ^ parsemce: Linux Machine check exception handler parser.. 2003-07-22 [2016-10-26]. (原始內容存檔於2013-06-22).
- ^ GitHub上的mcedaemon頁面