명령어 사이클
프로그램 속 명령어들은 일정한 주기가 반복되며 실행하는데 이 주기를 명령어 사이클이라고 한다.
- 인출 사이클 : CPU가 메모리 안에 있는 프로그램을 실행하기 위해서 메모리에 저장된 값을 CPU 내부로 갖고 오는 작업
- 실행 사이클 : 인출 사이클로 들어온 값으로 실행한다. 일반적으로 CPU는 인출과 실행을 반복하면서 프로그램을 실행한다.
그런데 CPU로 명령어를 가지고 와도 바로 실행이 불가능한 경우도 있다.
위 그림과 같이 간접 주소지정 방식의 경우에 인출을 했다고 바로 실행이 불가능하고 몇 번 더 메모리에 접근해야 하는 경우를 위해서 간접 사이클이 추가될 수 있다.
인터럽트
CPU가 꼭 주목해야 할 때 또는 CPU가 빨리 처리해야 할 다른 작업이 생겼을 때 인터럽트가 발생한다.
인터럽트의 종류에는 예외_동기 인터럽트와 하드웨어 인터럽트_비동기 인터럽트가 있다.
- 예외_동기 인터럽트 : CPU가 예기치 못한 상황을 접했을 때 발생
- 하드웨어 인터럽트_비동기 인터럽트 : 주로 입출력장치에 의해 발생
하드웨어 인터럽트
알림과 같은 인터럽트로 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트를 사용한다.
입출력장치는 CPU에 비해 처리속도가 느리기 때문에 인터럽트가 없다면 CPU는 주기적으로 입출력장치의 완료 여부를 확인하기 위해 주기적으로 확인해야 한다. 인터럽트가 있다면 입출력 작업 동안 CPU는 다른 일을 할 수 있기 때문에 효율적으로 운용할 수 있다.
하드웨어 인터럽트의 처리순서
- 입출력장치는 CPU에 인터럽트 요청 신호를 보낸다.
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인한다.
- CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아 들일 수 있는지 여부를 확인한다.
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업한다.
- CPU는 인터럽트 백터를 참조하여 인터럽트 서비스 루틴을 실행한다.
- 인터럽트 서비스 루틴 실행이 끝나면 4에 백업해 둔 작업을 복구하여 실행을 재개한다.
- 인터럽트 요청 신호 : CPU의 작업을 방해하는 인터럽트에 대한 요청
- 인터럽트 플래그 : 인터럽트 요청 신호를 받아들일지 무시할지를 결정하는 비트
다만, 모든 인터럽트를 인터럽트 플래그로 막을 수 있는 건 아니다. - 인터럽트 벡터 : 각가의 인터럽트를 구분하기 위한 정보
인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴의 식별 정보 - 인터럽트 서비스 루틴 : 인터럽트가 발생했을 때 해당 인터럽트를 처리하는 프로그램.
- CPU가 인터럽트를 받아들이기로 했다면 인터럽트 서비스 루틴을 실행한다. 인터럽트 서비스 루틴도 메모리에 저장되어 있다.
- 입출력장치마다 고유한 인터럽트 서비스 루틴의 시작 주소를 가지고 있다.
명령어 사이클과 인터럽트
'컴퓨터공학' 카테고리의 다른 글
10. 명령어 병렬 처리 기법 (0) | 2024.10.06 |
---|---|
9. 빠른 CPU을 위한 설계 기법 (0) | 2024.10.05 |
7. 레지스터 (0) | 2024.10.02 |
5. CPU의 작동원리 : ALU와 제어장치 (0) | 2024.10.01 |
4. 소스코드와 명령어 (0) | 2024.09.30 |