Post

명령어 사이클과 인터럽트

명령어 사이클

컴퓨터 중앙 처리 장치(CPU)의 기본 작동 프로세스로서, 이 주기는 컴퓨터가 프로그램의 단일 명령을 처리하는 방식이다.
컴퓨터가 다양한 작업을 수행하기 위해 일련의 명령을 실행하는 방법을 이해해 보자. 😉

명령어 사이클 단계

instruction-cycles

  1. 프로그램 카운터(PC): 실행될 다음 명령의 메모리 주소를 보유한다. 메모리의 후속 명령어를 가리키도록 각 페치 사이클 후에 증가한다.
  2. Fetch: PC가 가리키는 메모리 주소에서 명령어를 읽는 작업을 한다. 이 주소의 명령어는 명령어 레지스터(IR)에 저장된다.
  3. 명령 레지스터(IR): 디코드 및 실행 단계 동안 현재 가져온 명령을 보유한다. 이는 CPU가 작업 중인 현재 명령을 임시로 보관하는 장소이다.
  4. Decode: 디코드 단계에는 IR에서 가져온 명령어를 해석한다. 이는 opcode를 디코딩하여 어떤 작업이 필요한지 결정하고 명령어에 포함된 레지스터 또는 메모리 주소를 식별하는 작업도 포함한다.
  5. Register: 데이터를 임시로 보관하는 데 사용되는 CPU의 작은 저장 영역이다.
  6. Execute: 이 단계에서는 CPU가 명령에 필요한 작업을 수행한다. 이는 산술 계산, 한 레지스터에서 다른 레지스터로 데이터 이동 또는 메모리와의 상호 작용일 수 있으며, 연산에 산술이나 논리가 포함되는 경우 ALU(산술 논리 장치)에 의해 수행된다.
  7. Memory: 명령어에 RAM 읽기 또는 쓰기가 필요한 경우 실행 단계에 해당 작업이 포함된다.
  8. Writeback: 실행 단계의 결과가 레지스터나 메모리 위치에 다시 기록된다. 예를 들어, 명령어가 산술 연산일 때 결과는 지정된 레지스터에 저장된다.

인터럽트

CPU가 긴급 작업을 수행하기 위해 현재 활동을 일시적으로 중단한 다음 원래 작업을 재개할 수 있게 해준다.

인터럽트 유형

  • 하드웨어 인터럽트: 하드웨어 장치(예: 키보드, 마우스 또는 네트워크 어댑터)에 의해 생성되어 CPU의 주의가 필요하다는 신호를 보낸다.
  • 소프트웨어 인터럽트: 이는 종종 시스템 호출을 통해 프로그램이나 운영 체제에 의해 생성된다. 파일 액세스 또는 메모리 할당과 같은 운영 체제의 서비스를 요청하는 데 사용된다.

인터럽트 작동 방식

interrupt-handler

  1. 프로그램 명령의 순차적 실행: CPU는 프로그램을 실행하고 해당 명령을 순서대로 실행한다.
  2. 하드웨어 인터럽트: 프로그램 실행 중에 하드웨어 인터럽트 신호가 발생했다.
  3. 프로그램 제어가 ISR로 이동: 인터럽트 신호가 발생하는 즉시 프로그램의 정상적인 실행이 중단되고 CPU는 현재 프로그램의 명령 실행을 일시 중지한다. 그런 다음 CPU는 이 특정 인터럽트를 처리하도록 지정된 ISR(인터럽트 서비스 루틴)이 포함된 메모리의 특정 위치로 이동한다.
  4. ISR 실행: ISR은 인터럽트를 관리하는 코드가 포함된 특수 함수이다. ISR은 I/O 처리 또는 긴급 데이터 처리와 같은 인터럽트의 즉각적인 요구를 처리한다.
  5. 중단된 프로그램으로 복귀: ISR 실행이 완료된 후 CPU는 다시 진행중이었던 프로그램으로 복귀한다.
  6. 중단된 부분부터 순차적으로 명령을 실행한다.

인터럽트 특성

  • 선점형 멀티태스킹: 인터럽트를 사용하면 운영 체제가 실행 중인 프로세스를 중단하고, 다른 프로세스의 시간을 제공해 시스템의 전반적인 효율성과 응답성을 향상할 수 있는 선점형 멀티태스킹이 가능하다.
  • 비동기 이벤트: 인터럽트를 사용하면 CPU가 비동기 이벤트에 응답할 수 있다. 즉, CPU의 주요 활동과 관계없이 언제든지 발생할 수 있는 이벤트를 의미한다.
  • 우선순위 처리: 일부 시스템에는 인터럽트에 대한 우선순위 수준이 있어 더 중요한 인터럽트를 덜 중요한 인터럽트보다 먼저 처리할 수 있다.
  • 효율성: 인터럽트가 없으면 CPU는 주의가 필요한지 확인하기 위해 모든 장치를 지속해서 확인(폴링)해야 하는데 이는 매우 비효율적이다. 인터럽트를 사용하면 필요할 때만 CPU에 주위를 줄 수 있다.
This post is licensed under CC BY 4.0 by the author.