일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Machine Learning
- 오블완
- gpt
- 분류
- Classification
- OpenAI
- LG Aimers 4th
- deep learning
- PCA
- regression
- 딥러닝
- 지도학습
- AI
- 회귀
- LG
- ChatGPT
- GPT-4
- 해커톤
- 티스토리챌린지
- 머신러닝
- supervised learning
- LG Aimers
- LLM
Archives
- Today
- Total
SYDev
Chapter 04-3 : 명령어 사이클과 인터럽트 본문
Computer Architecture + Operating System/Computer Architecture
Chapter 04-3 : 명령어 사이클과 인터럽트
시데브 2023. 8. 1. 01:23학습 목표
- CPU가 하나의 명령어를 처리하는 흐름인 명령어 사이클과 그 흐름을 방해하는 인터럽트에 대해 학습
명령어 사이클
- 명령어 사이클(instruction cycle): 하나의 명령어를 처리하는 정형화된 흐름, 프로그램 속 각각의 명령어들은 명령어 사이클이 반복되며 실행된다.
- 인출 사이클(fetch cycle): 메모리에 저장된 명령어를 CPU로 가져오는 단계
- 실행 사이클(execution cycle): CPU로 가져온 명령어를 실행하는 단계, 제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생시키는 단계
- 간접 사이클(indirect cycle): 명령어의 주소를 CPU로 가져왔을 때, 해당 명령어 주소에 저장된 명령어를 인출하기 위해 메모리에 다시 접근하는 단계
인터럽트
- 인터럽트(interrupt): CPU의 작업을 방해하여 중단시키는 신호
- 동기 인터럽트(synchronous interrupts) 혹은 예외(exception): CPU가 명령어들을 수행하다가 예상치 못한 상황(프로그래밍상의 오류, 예외적 상황 등)에 마주쳤을 때 발생하는 인터럽트
- 비동기 인터럽트(asynchronous interrupts) 혹은 하드웨어 인터럽트: CPU가 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 사용하는 알림과 같은 인터럽트
비동기 인터럽트
CPU가 하드웨어 인터럽트를 처리하는 순서는 다음과 같다.
- 입출력 장치가 CPU에 인터럽트 요청 신호 전송
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인
- CPU가 인터럽으 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업
- CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행
- 인터럽트 서비스 루틴이 끝나면 백업해 둔 작업을 복구하여 실행을 재개
- CPU가 인터럽트 요청 신호를 수용하기 위해서는 플래그 레지스터의 인터럽트 플래그(인터럽트를 받아들일지, 무시할지 결정)가 활성화되어 있어야 함 -> CPU가 어떤 방해도 받지 말아야 한다면 인터럽트 플래그가 '불가능'으로 설정
- 막을 수 있는 인터럽트(maskable Interrupt): 인터럽트 플래그가 불가능으로 설정돼있을 때, 수용되지 않는 인터럽트
- 막을 수 있는 인터럽트(non maskable Interrupt): 인터럽트 플래그로 막을 수 없는 인터럽트, 정전이나 하드웨어 고장으로 인한 인터럽트가 이에 해당
인터럽트 서비스 루틴
- 인터럽트 서비스 루틴(ISR; Interrupt Service Routine) 혹은 인터럽트 핸들러: 인터럽트를 처리하기 위한 프로그램, 인터럽트를 어떻게 처리하고 작동해야 할지에 대한 정보로 이루어진 프로그램
- 인터럽트 벡터(interrupt vector): 인터럽트 서비스 루틴을 식별하기 위한 정보, 각기 다른 인터럽트 서비스 루틴을 구분하기 위해 사용하며 인터럽트 서비스 루틴의 시작 주소를 알 수 있음(데이터 버스로부터 전달받음)
참고자료
- 강민철, <혼자 공부하는 컴퓨터구조 + 운영체제>, 한빛미디어(주), 2022.08.16
'Computer Architecture + Operating System > Computer Architecture' 카테고리의 다른 글
Chapter 05-2 : 명령어 병렬 처리 기법 (0) | 2023.08.04 |
---|---|
Chapter 05-1: 빠른 CPU를 위한 설계 기법 (0) | 2023.08.04 |
Chapter 04-2 : 레지스터 (0) | 2023.07.25 |
Chapter 04-1 : ALU와 제어장치 (0) | 2023.07.23 |
Chapter 03-2 : 명령어의 구조 (0) | 2023.07.21 |