컴퓨터 구조 ‐ CPU 작동 원리 - dnwls16071/Backend_Study_TIL GitHub Wiki
📚 ALU
- 산술연산과 논리연산 수행
- 연산에 필요한 데이터를 레지스터에서 가져오고 연산 결과를 다시 레지스터로 보낸다.
📚제어장치
- 명령어를 순서대로 실행할 수 있도록 제어하는 장치
- 주기억장치에서 명령어와 데이터를 꺼내 실행하고 결과를 기억장치, 연산장치, 입출력장치로 보낸다.
📚 레지스터
- CPU 내부의 고속 기억장치
- 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장한다.
- 용도에 따라 범용 레지스터와 특수목적 레지스터로 구분된다.
- 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장
- 특수목적 레지스터 : 특별한 용도로 사용되는 레지스터
특수목적 레지스터
프로그램 카운터(PC)
: 다음에 수행할 명령어 주소 저장명령어 레지스터(IR)
: 현재 실행 중인 명령어 저장메모리 주소 레지스터(MAR)
: 읽기와 쓰기 연산을 수행할 주기억장치 주소 저장메모리 버퍼 레지스터(MBR)
: 주기억장치에서 읽어온 데이터 or 저장할 데이터를 임시 저장가산기(AC)
: 연산 결과 임시 저장
📚 명령어 사이클과 인터럽트⭐
- 동기 인터럽트(예외) : CPU가 예기치 못한 상황을 접했을 때 발생
- 비동기 인터럽트(하드웨어 인터럽트) : 주로 입출력장치에 의해 발생 → CPU가 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 사용
(1). 입출력장치는 CPU에 인터럽트 요청 신호를 보낸다. (2). CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인한다. (3). CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지를 확인한다. (4). 인터럽트를 받아들일 수 있다면 CPU는 지금까지 작업을 백업한다. (5). CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행한다. (6). 인터럽트 서비스 루틴이 끝나면 백업해둔 작업을 복구하여 실행을 재개한다.