컴퓨터 공학 기초/컴퓨터 구조
명령어 사이클과 인터럽트
jjjjjjyun
2025. 4. 22. 21:34
- 명령어 사이클: CPU는 명령어를 수행하는데 일정 주기를 반복한다. 이를 명령어 사이클이라고 한다.
- 메모리에 저장된 명령어를 실행하려면? 메모리에 저장된 명령어를 인출해 CPU로 가져온다. (인출 사이클) - 인출한 것을 실행한다. (실행 사이클) 이 과정을 반복한다.
인터럽트의 종류에는 동기 인터럽트, 비동기 인터럽트가 있다.
비동기, 하드웨어 인터럽트
- 비동기 인터럽트가 없다면 작업이 완료되었는지 계속해서 확인을 해주어야 한다.
입출력장치가 CPU에 인터럽트 요청 신호를 보낸다.
항상 실행사이클이 끝나고 플래그 레지스터에서 인터럽트 플래그를 확인한다. 하지만 모든 인터럽트를 인터럽트 플래그로 막을 수 있는 것은 아니다. 하드웨어 고장이나 정전 같은 경우가 있을 수 있기 때문이다.
- Maskable interrupt: 막을 수 있는 인터럽트
- Non maskable interrupt: 막을 수 없는 인터럽트
인터럽트 요청 신호
인터럽트 서비스 루틴
- 인터럽트 서비스 루틴도 프로그램이기 때문에 메모리에 저장된다.
- 인터럽트를 수행한다 = CPU가 명령을 수행하며 인터럽트가 있으면 인터럽트 서비스 루틴을 실행 후 다시 명령을 재개한다. 인터럽트의 시작 주소는 인터럽트 벡터를 통해 알 수 있다.
비동기, 하드웨어 인터럽트의 처리 순서
- 인터럽트 벡터를 통해 인터럽트 서비스 루틴의 시작점을 알 수 있다.
1500번지 프로그램을 수행하다 인터럽트 서비스 루틴으로 인해 10번지 프로그램을 수행해야 할 경우 진행하던 것을 저장해야 한다. 이는 스택에 저장하고 이후 프로그램 카운터는 서비스 루틴에서 수행할 것을 받아 진행한다.