T1) 명령어 사이클
- 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클이라고 한다.
- 인출 사이클 : 실행할 내용을 가장 먼저 CPU로 갖고와야한다
- 실행 사이클 : 갖고 온 내용을 바탕으로 실행한다.
- 간접 사이클 : 간접 주소 지정 방식 같이 메모리 접근이 더 필요한 경우 발생하는 사이클이다.
※ 어떤 명령어는 인출과 실행 사이클 만으로 실행되고, 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행된다.
T2 ) 인터럽트
- 인터럽트(interrupt) ; 방해하다, 중단시키다.
- CPU가 정해진 흐름대로 프로그램을 처리하고 있는 과정 중 흐름을 끊어버리는 것이 인터럽트이다.
- CPU가 꼭 주목해야할 때 혹은 CPU가 얼른 처리해야할 다른 작업이 생겼을 때 발생한다.
T2_sub1) 인터럽트의 종류
인터럽트 | 동기 인터럽트(예외) | 폴트 |
트랩 | ||
중단 | ||
소프트웨어 인터럽트 | ||
비동기 인터럽트 (하드웨어 인터럽트) |
막을 수 있는 인터럽트 | |
막을 수 없는 인터럽트 |
- 동기 인터럽트(예외) : CPU가 예기치 못한 상황을 접했을 때 발생한다.
- 비동기 인터럽트(하드웨어 인터럽트) :
- 주로 입 · 출력장치에 의해 발생한다. (ex 세탁기 완료알림, 전자레인지 조리 알림)과 같은 역할이다.
- 입·출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트를 사용한다. ( 인터럽트가 없다면 CPU는 프린트 완료 여부를 확인하기 위해 주기적으로 확인해야하기때문이다. )
- 결론적으로 입·출력장치는 CPU에 비해 느리기때문에 인터럽트가 있다면 입출력 작업 동안 CPU는 다른 일을 할 수 있다.
- 하드웨어 인터럽트(비동기 인터럽트)의 처리 순서
- 입출력 장치는 CPU에 *인터럽트 요청 신호를 보낸다.
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인한다.
- CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는 지 여부를 확인한다.
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업한다.
- CPU는 인터럽트 백터를 참조하여 인터럽트 서비스 루틴을 실행한다.
- 인터럽트 서비스 루틴이 실행이 끝나면 4.에서 백업해둔 작업을 복구하여 실행을 재개한다.
- 인터럽트 요청 신호 : 인터럽트는 CPU의 정상적인 실행 사이클을 멈추는 것이기 떄문에 요청신호를 보낸다.
- CPU가 인터럽트 요청을 받아들이려면?
- CPU가 실행 사이클이 끝난 후 인터럽트 플래그를 확인하여 수용여부를 확인한다.
- 모든 인터럽트를 인터럽트 플래그로 막을 수는 없다. (ex 정전, 하드웨어 고장)
- 인터럽트 서비스 루틴이란?
- 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하기위한 프로그램
- ex) 키보드가 or 마우스가 인터럽트 요청을 보내면 이렇게 행동해야한다.
- CPU가 인터럽트를 받아들이기로 했다면 인터럽트 서비스 루틴을 실행한다.
- 인터럽트 서비스루틴도 프로그램이기에 메모리에 저장되어있다.
- 정상적으로 메모리에 있는 프로그램을 실행하다가 인터럽트가 발생하면 정해진 인터럽트 서비스 루틴을 수행하고 기존에 수행하던 프로그램 지점으로 되돌아가서 수행을 재개한다.
- 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하기위한 프로그램
- 인터럽트 벡터
- 각각의 인터럽트를 구현하기 위한 정보(인터럽트를 실행하기 위한 시작 주소를 갖고있음)
결론 :
- " CPU가 인터럽트를 처리한다. " → ;인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 되돌아온다.'
- CPU가 인터럽트 서비스 루틴을 실행하려면 CPU내부의 레지스터를 사용해야하는데 이미 실행 중이었던 프로그램에 대한 정보가 레지스터에 있었을 것이기 때문에 이 정보또한 보존되어야하기때문에 이 정보들은 메모리 스택영역에 저장된다.
출처: 인프런-개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터 (1) | 2023.10.29 |
---|---|
[CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치 (0) | 2023.10.28 |
[CS : 컴퓨터 구조] C 언어의 컴파일 과정 (1) | 2023.10.25 |
[CS : 컴퓨터 구조] 03-2 명령어의 구조 (1) | 2023.10.24 |
[CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어 (0) | 2023.10.23 |