마스크할 수 없는 인터럽트

Non-maskable interrupt

컴퓨팅에서 NMI(Non-maskable interrupt)는 시스템의 표준 인터럽트 마스킹 기법을 무시할 수 없는 하드웨어 인터럽트다.복구 불가능한 하드웨어 오류에 대한 주의 신호를 보낼 때 일반적으로 발생한다.일부 NMI는 마스킹될 수 있지만 특정 NMI에 특정한 독점적 방법을 사용해야만 한다.

NMI는 응답 시간이 중요하거나 정상적인 시스템 작동 중에 인터럽트가 비활성화되어서는 안 될 때 자주 사용된다.이러한 용도에는 복구할 수 없는 하드웨어 오류 보고, 시스템 디버깅 및 프로파일링, 시스템 재설정과 같은 특수 사례 처리가 포함된다.

현대의 컴퓨터 아키텍처는 일반적으로 즉각적인 주의가 필요한 복구 불가능한 오류를 처리하기 위해 NMI를 사용한다.따라서 이러한 중단은 시스템의 정상적인 작동에서 가려지지 않아야 한다.복구할 수 없는 내부 시스템 칩셋 오류, 패리티ECC 오류와 같은 시스템 메모리 손상, 시스템 및 주변 버스에서 감지된 데이터 손상 등이 이러한 오류들이다.

일부 시스템에서는 컴퓨터 사용자가 하드웨어 및 소프트웨어 디버깅 인터페이스와 시스템 재설정 버튼을 통해 NMI를 트리거할 수 있다.

프로그래머들은 일반적으로 결함이 있는 코드를 진단하고 수정하기 위해 디버깅 NMI를 사용한다.이러한 경우 NMI는 제어권을 특수 모니터 프로그램으로 전송하는 인터럽트 핸들러를 실행할 수 있다.개발자는 이 프로그램을 통해 기계의 메모리를 검사할 수 있으며 프로그램 중단 순간의 내부 상태를 검사할 수 있다.이것은 또한 걸려있는 것처럼 보이는 컴퓨터의 디버깅이나 진단을 가능하게 한다.

역사

구형 아키텍처에서, NMI는 일반적으로 필요한 응답 시간 때문에 비활성화되지 않았던 인터럽트에 사용되었다.그것들은 숨겨진 신호였다.예를 들어 Amstraad PCW플로피 디스크 컨트롤러, IBM PC 또는 그 호환성에 사용될 때 x868087 코프로세서(Intel이 이를 정상적인 인터럽트에[1] 연결하도록 권장했음에도 불구하고), HP 95LX의 Low Battery 신호를 포함한다.

원본 IBM PC에서 시스템 메모리에서 패리티 오류가 감지되거나 외부 장치에 의해 보고된 경우 NMI가 트리거되었다.두 경우 모두 PC에 오류 메시지가 표시되고 중지된다.일부 후기 PC 클론에서는 NMI를 사용하여 표준 PC와의 하드웨어 차이를 숨겼다.그러한 컴퓨터에서는 프로그램이 호환되지 않는 하드웨어에 액세스를 시도할 때 NMI가 생성될 것이다.그러면 BIOS 인터럽트 핸들러는 실제로 존재하는 하드웨어와 일치하도록 프로그램의 요청을 변환한다.386SLSMM은 이를 위한 더 좋은 방법이다.

일부 8비트 가정용 컴퓨터는 NMI 라인을 사용하여 시스템이 잠겼을 경우 "따뜻한 시작"을 허용했다.일반적으로 이것은 사용자가 현재 로드했을 수 있는 모든 데이터를 파괴하지 않고 ROM에 저장된 알려진 양호한 값으로 제어 레지스터를 복원한다.코모도어 8비트 기계에서는 복원 키는 6502 시리즈 CPU의 NMI 라인에 직접 또는 간접적으로 연결되었지만, ROM의 NMI 핸들러 루틴에서 RUN/STOPRESTOR를 칠 때 억제되고 있음을 감지한 경우에만 재설정(이 조합은 세 손가락 경례코모도어 버전)이 수행된다.Commodore또한 C64와 C128의 MOS Technology6526 CIA #2를 프로세서의 NMI 라인에 연결했는데, 이 NMI 라인은 6551 ACIA의 소프트웨어 에뮬레이션을 수행하는 수단의 일부였다.아타리의 8비트 라인은 이와 같은 목적으로 SYSTEM RESET 버튼을 사용했다.

디버깅 NMI는 Apple Macintosh의 "프로그래머스의 버튼"과 Sun 워크스테이션의 특정 키 조합을 포함한 여러 형태로 나타났다.윈도우 2000의 도입으로 마이크로소프트는 NMI를 사용하여 시스템이 디버거에 침입하거나 메모리의 내용을 디스크에 덤프하고 재부팅할 수 있도록 허용했다.[2]

NMI 디버깅은 레저 사용자와 게이머가 실행 중인 프로그램을 조작할 수 있는 장치에서도 사용되어 왔다.로맨틱 로봇의 멀티페이스와 같이 NMI를 생성하기 위해 버튼을 추가한 장치는 1980년대 8비트, 16비트 가정용 컴퓨터의 인기 액세서리였다.이 주변 장치들은 소량의 ROM과 NMI 버튼을 가지고 있었다.버튼을 누르면 정지된 프로그램을 디스크에 저장(디스크 지원이 없는 테이프 기반 게임에도 매우 유용함), 스크린샷을 저장하거나 인쇄하거나 메모리 값을 조작할 수 있는 부정행위 기술(추가 생명을 얻기 위한 부정행위 기술, for의 예

모든 컴퓨터가 NMI를 트리거하는 메커니즘을 제공하는 것은 아니지만, 많은 컴퓨터(일반적으로 랙마운트 서버)는 이러한 목적을 위해 특별히 물리적 버튼을 제공한다.다른 기계는 확장 카드를 통해 이 기능을 노출시킬 수 있다.[3]

마일즈 고든 테크놀로지ZX 스펙트럼용 DISCIPLE+D 제품은 NMI를 생성하는 "매직 버튼"을 특징으로 했다.

닌텐도 엔터테인먼트 시스템에서는 각 수직 블랭킹 간격 동안 NMI가 생성된다.이러한 NMI(종종 "빈 인터럽트"라고 함)는 빈번하고 규칙적인 간격으로 발생하기 때문에, 게임 그래픽과 오디오를 조작하는 코드는 NMI 핸들러 루틴 내에서 실행되는 경우가 많다.PPU의 $2000 레지스터 중 7번째 비트를 지우면 vblank 인터럽트가 비활성화되며, 이를 설정하면 인터럽트가 활성화된다.

참고 항목

메모들

  1. ^ "8.7.2: MS-DOS* Compatibility Sub-mode". Intel® 64 and IA-32 Architectures Software Developer's Manual. Vol. 1. Intel Corporation. June 2013. p. 8–31.
  2. ^ "How to generate a complete crash dump file or a kernel crash dump file by using an NMI on a Windows-based system". Microsoft. 2011-06-08. Retrieved 2013-08-31.
  3. ^ "PCI Dump Switch Card". Connect Tech Inc. Retrieved 2013-08-31.

외부 링크