728x90
CPU는 메모리로부터 명령어나 데이터들을 갖고 와서 실행하고, 필요하다면 값을 저장할 수도 있다.
CPU는 메모리에 저장되어 있는 프로그램을 일정한 패턴(정해진 흐름)대로 실행한다.
간혹 그 정해진 흐름을 방해하는 신호가 CPU에게 올 수 있는데, 그 신호를 인터럽트라고 부른다.
명령어 사이클
- 프로그램 속 명령어들은 일정한 주기가 반복되며 실행
- 이 주기를 명령어 사이클이라고 함
메모리에 저장된 명령어를 실행하려면 메모리에 있는 값을 CPU의 레지스터로 갖고 와야한다.(인출)
그리고 이런식으로 인출을 하는 주기를 인출사이클
갖고 온 메모리를 실행시키는 것을 실행사이클
인출-실행-인출-실행 ...
그런데 CPU로 명령어를 갖고 와도 바로 실행이 불가능한 경우가 있음 (명령어 주소지정 방식)
몇번 더 인출을 해와야 하는 상황에서는 간접사이클이 추가될 수 있다.
인터럽트
CPU가 꼭 주목해야 할 때, CPU가 얼른 처리해야 할 다른 작업이 생겼을 때 발생
- 동기 인터럽트(예외) : CPU가 예기치 못한 상황을 접했을 때 발생 (exception)
- fault, trap, abort
- 비동기 인터럽트(하드웨어 인터럽트) : 주로 입출력장치에 의해 발생
- 세탁기 완료 알림, 전자레인지 조리 알림과 같은 역할
- 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트 사용
- 입출력장치는 CPU에 비해 느리다
- 인터럽트가 없다면 CPU는 프린트 완료 여부를 주기적으로 확인해야 안다
- 하드웨어 인터럽트의 처리 순서
- 입출력 장치는 CPU에 인터럽트 요청 신호를 보냄
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트의 여부를 확인
- CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업
- CPU는 인터럽트 백터를 참조하여 인터럽트 서비스 루틴을 실행
- 인터럽트 백터 : 각각의 인터럽트를 구분하기 위한 정보 - 인터럽트 서비스 루틴 실행이 끝나면 백업해 둔 작업을 복구하여 실행을 재개
728x90
'△ > Computer Engineering' 카테고리의 다른 글
명령어 병렬 처리 기법 (1) | 2024.04.03 |
---|---|
빠른 CPU를 위한 설계 기법 (코어, 클럭) (0) | 2024.04.02 |
ALU와 제어장치 / 레지스터 (0) | 2024.03.27 |
명령어 (0) | 2024.01.22 |
컴퓨터로 숫자 문자 표현하는 방법 (이진수, 십육진수, 아스키코드) (1) | 2024.01.19 |
댓글