학교강의/컴퓨터구조
7주차 컴퓨터구조
Fel.Forest
2024. 4. 25. 17:18
명령어 사이클
- 명령어 사이클
- 수많은 명령어들로 이루어진 프로그램을 CPU는 일정한 주기로 반복하여 실행
- 인출 사이클
- 메모리에 있는 명령어를 CPU로 가지고 오는 단계
- 실행 사이클
- CPU로 가져온 명령어를 실행하는 단계
- 제어 장치가 명령어 레지스터에 담긴 값을 해석
- 제어 신호를 발생시키는 단계
- BUT, CPU로 명령어를 가지고 와도 바로 실행이 불가능 한 경우있음
- 불러온 데이터 안에 값이 있는게 아님 주소가 들어있는경우
- 명령어를 실행하기 위해서는 메모리 접근을 한번 더 해야함
- 이를 간접 사이클이라고 함
인터럽트
- 방해하다, 중단 시키다
- CPU가 수행중인 작업을 방해하는 신호
- CPU가 꼭 주목해야할 때 or CPU가 얼른 처리해야 할 다른 작업이 생겼을때 발생
종류
- 동기 : 예외
- 비동기 : 하드웨워 인터럽트
동기인터럽트(예외)
- CPU에의해 발생하는 인터럽트
- CPU가 명령어들을 수행하가다 예상치 못한 상황을 마주쳤을때 발생하는 인터럽트
- 예외 발생시
- CPU는 하던 일을 중단
- 해당 예외를 처리
- CPU는 본래 하던 작업으로 되돌아와 실행을 재개
- 종류
- 폴트 : 예외를 처리한 직후 예외가 발생한 명령어부터 실행에 재개
- 트랩 : 예외를 처리한 직후 예외가 발생한 명령어의 다음 명령어부터 실행을 재개 , 주로 디버깅용
- 중단 : CUP가 실행 중인 프로그램을 강제로 중단시킬 수 밖에 없는 심각한 오류를 발견했을때 발생하는 예외
- 소프트웨어 인터럽트 : 시스템 호출이 발생할 때 나타남
비동기 인터럽트(하드웨워적 인터럽트)
- 주로 입출력 장치에서 일어남
하드웨어 인터럽트
- 알림과 같은 인터럽트
- 입출력 작업 도중에도 효율적으로 명령어를 처이하기 위해사용
- 입출력 장치는 CPU에 비해 느리다
- 하드웨워 인터럽트를 이용하면 CPU는 입출력 작업 동안 다른 일을 할 수 있음
- 하드웨워 인터럽트 처리 순서
- 입출력장치는 CPU에 인터럽트 요청 신호를 보냄
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인
- CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업
- CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행
- 인터럽트 서비스 루틴 실행이 끝나면 4에서 백업해 둔 작업을 복구하여 실행을 재개
인터럽트 플래그
- 하드웨어 인터럽트를 받아들일지,무시할지를 결정하는 플래그
- 불가능
- CPU가 중요한 작업을 처리해야 하거나 어떤 방해도 받지 않아야 할때
- CPU는 인터럽트 요청이 오더라도 해당 요청을 무시
- 가능
- CPU는 인터럽트 요청 신호를 받아들이고 인터럽트를 처리
- 막을 수 없는 인터럽트
- 인터럽트 플래그가 불가능으로 설정되어 있을지라도 무시할 수 없는 인터럽트 요청
- 가장 우넌 순위가 높은 인터럽트 -> 정전 or 하드웨워 고장
인터럽트 서비스 루틴
- 인터럽트 발생시 해당 인터럽트를 어떻게 처리하기 위한 프로그램
- 인터럽트 서비스 루틴도 프로그램이기에 메모리에 저장
- 언터럽트 벡터
- 인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴의 식별정보