기계 검사 예외
Machine-check exceptionMCE(머신 체크 예외)는 컴퓨터의 중앙 처리 장치가 프로세서 자체, 메모리, I/O 장치 또는 시스템 버스에서 하드웨어 오류를 검출할 때 발생하는 일종의 컴퓨터 하드웨어 오류입니다. 아키텍처에 따라[a] MCE는 복구할 수 없는 오류에 대해서만 발생합니다.x86 아키텍처에서는 머신 체크 예외가 소프트웨어에 의해 발생하지 않습니다.단, PowerPC 등의 다른 아키텍처에서는 비활성 메모리 액세스 등의 특정 소프트웨어 버그로 인해 머신 체크 예외가 발생할 수 있습니다.일반적으로 이 오류는 컴포넌트의 장애 또는 하드웨어 컴포넌트의 과열 또는 오버클럭으로 인해 발생합니다.대부분의 기계 검사 예외는 운영 체제를 중지하고 사용자가 정상 [dubious ]작업을 계속하기 전에 재시작해야 합니다.오류 발생 시 문제의 원인에 대한 정보가 거의 캡처되지 않기 때문에 오류 진단이 어려울 수 있습니다.
IA-32 및 x86-64 프로세서에 탑재된 최신 버전의 Microsoft Windows는 Windows 하드웨어 오류 아키텍처를 통해 머신 체크 예외를 처리합니다.WHEA가 수정할 수 없는 머신체크 예외를 검출하면 다음 파라미터와 함께 블루스크린에 오류를 표시합니다(머신체크 [1]예외의 경우 첫 번째 파라미터는 항상 0x0입니다).
*** STOP: 0x00000124 (0x00000000, 0x00000000, 0x0000000000, 0x000000000000)
이전 버전의 Windows는 머신 체크 아키텍처를 통해 유사한 예외를 처리합니다.이 경우 죽음의 블루 스크린에 다음과 [2]같은 오류가 표시됩니다.
STOP: 0x00009C (0x000030, 0x00000002, 0x00000001, 0x80003CBA)
리눅스에서는 프로세스(예:klogd
[3])는 커널 로그 및 콘솔 화면에 메시지를 기록합니다(보통은 오류가 발생할 수 없고 그 결과 머신이 크래쉬 했을 경우에만 콘솔에 메시지를 기록합니다).
CPU 0: 머신체크 예외: 00000000000004 뱅크2: f2000000863 커널 패닉: CPU 컨텍스트 손상
문제 유형
이러한 오류의 대부분은 Pentium 프로세서 패밀리와 관련되어 있습니다.다른 CPU에서도 같은 에러가 발생해, 같은 문제가 발생할 가능성이 있습니다.
MCE를 일으키는 주요 하드웨어 문제는 다음과 같습니다.
- 시스템 버스 오류: (CPU와 메인보드 간의 통신 오류)
- 메모리 에러:패리티 체크는, 메모리 에러가 발생했을 때를 검출합니다.ECC(Error Correction Code)는 처리를 계속할 수 있도록 제한된 메모리 오류를 수정할 수 있습니다.
- 프로세서의 CPU 캐시 오류입니다.
생각할 수 있는 원인
머신 체크는 하드웨어 문제이지 소프트웨어 문제가 아닙니다.대부분의 경우 오버클럭 또는 과열로 인해 발생합니다.경우에 따라서는, 온도 제한을 넘으면 CPU가 자동적으로 셧다운 되어 영구적인 손상을 회피할 수 있습니다.그러나 메모리나 I/O 디바이스와 같은 다른 장애가 있는 컴포넌트로 인해 버스 오류가 발생할 수도 있습니다.생각할 수 있는 원인은 다음과 같습니다.
- CPU 히트 싱크와 케이스 팬(또는 필터)이 먼지로 막히거나 느슨해져 있기 때문에 CPU 냉각이 불충분합니다.
- CPU의 신뢰성이 여전히 높은 클럭 레이트를 넘는 오버클럭.
- 메인보드에 문제가 있다.
- CPU에 문제가 있다.
- 메모리 장애
- 메인보드 또는 다른 카드 중 하나의 I/O컨트롤러에서 장애가 발생.
- I/O 디바이스 장애
- PSU가 불충분하거나 장애가 있다.
냉각 문제는 일반적으로 검사 시 명백합니다.문제가 있는 메인보드 또는 CPU를 기능하는 부품과 교환함으로써 특정할 수 있습니다.메모리는 memtest86 등의 진단 도구로 부팅하여 확인할 수 있습니다.문제가 발생하지 않는 I/O 디바이스와 컨트롤러는 가능하면 플러그를 뽑거나 디바이스를 비활성화하여 문제가 해소되었는지 여부를 확인할 수 있습니다.통상, OS 가 기동한 직후에, 또는 전혀 기동하지 않거나, 며칠간 또는 기동하지 않는 경우, 전원 유닛(PSU)의 문제를 생각할 수 있습니다.PSU에 문제가 있는 경우 OS가 외부 디바이스를 기동하여 사용할 때 전력 수요가 최고조에 달할 때 장애가 자주 발생합니다.
MCE 디코딩
IA-32 및 인텔 64 프로세서의 경우 인텔 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼[4] 제15장 (Machine-Check Architecture)또는 Windows [5]예외에 관한 Microsoft Knowledgebase 문서를 참조하십시오.
인텔 및 AMD MCE 디코딩 프로그램
- mcat: AMD K8, 패밀리 0x10 및 0x11 프로세서에서 MCE를 디코딩하는 AMD의 Windows 명령줄 프로그램.
- mcelog[6] 최신 x86 프로세서의 MCE를 처리하기 위한 Andi Kleen의 Linux 데몬입니다.mcelog는 머신 체크도 디코딩할 수 있습니다.
- AMD[7] K7 프로세서에서 MCE를 디코딩하기 위해 Dave Jones의 Linux 프로그램을 해석합니다.
- 커널에서[8] MCE를 수집하여 관심 있는 응용 프로그램에 경고하기 위해 팀 호킨이 Linux 프로그램을 MCE했습니다.MCE 데이터의 해석은 시도하지 않고, 다른 프로그램에 경고하는 것에 주의해당하는 것에 주의해 주세요.
「 」를 참조해 주세요.
메모들
- ^ 다른 아키텍처에서는 예를 들어 ECC에 의해 수정된 메모리를 기록하기 위해 MCE가 발생할 수 있습니다.
레퍼런스
- ^ "Bug Check 0x124: WHEA_UNCORRECTABLE_ERROR". MSDN. 2016-09-29. Retrieved 2017-07-13.
- ^ "Bug Check 0x9C: MACHINE_CHECK_EXCPETION". Microsoft Support. 2018-03-31. Retrieved 2018-03-31.
- ^ Steve Lord, Greg Wettstein. "klogd(8) - Linux man page". Retrieved 2017-07-13.
klogd is a system daemon which intercepts and logs Linux kernel messages.
- ^ "Machine Check Architecture". Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide, Part 2. Intel Corporation. November 2018.
- ^ "Stop error message in Windows XP that you may receive: "0x0000009C (0x00000004, 0x00000000, 0xb2000000, 0x00020151)"". MSDN. 2015-12-07. Retrieved 2017-07-13.
- ^ "mcelog: Advanced hardware error handling for x86 Linux". 2015-04-20. Retrieved 2017-07-13.
- ^ "parsemce: Linux Machine check exception handler parser". 2003-07-22. Retrieved 2017-07-13.
- ^ GitHub의 mcedaemon