The operation of a CPU
CPU 작동원리
Mar 28, 2024
CPU 구성
ALU
IN
- 레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어 신호를 받아들임
OUT
- 받아들인 데이터의 결과값을 레지스터에 저장
- 연산 결과값에 대한 부가 정보 플래그를 플래그 레지스터에 저장
- 플래그 종류: 부호, 제로, 캐리(올림/빌림수), 오버플로우, 인터럽트(인터럽트 가능여부), 슈퍼바이저(커널/사용자 모드)
제어장치
IN
- 클럭: 컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위
- 명령어 레지스터(해석할 명령어)
- 플래그 레지스터(플래그)
- 제어 신호
OUT
- 제어 신호(CPU 내부-레지스터, ALU- 전달, CPU 외부-메모리, 입출력장치- 전달)
레지스터
- CPU 내부 작고 빠른 임시 저장 장치
- 프로그램속 명령어/데이터는 실행 전후로 레지스터에 저장
- CPU 내부에서 직접적으로 접근할 수 있는 가장 빠른 메모리 유형
프로그램 카운터
- 다음에 실행할 명령어의 주소를 가지고 있음
- 명령어가 실행될 때마다 자동으로 다음 명령어의 주소로 업데이트됨
- 프로그램의 흐름 제어와 순차적인 명령어 실행
명령어 레지스터
- 현재 실행 중인 명령어를 저장
- 저장된 명령어는 CPU 내부에서 디코딩되어 실행됨
- 명령어를 가져와 해독하여 실행하는 프로세스에서 중요한 역할
메모리 주소 레지스터
- 현재 CPU가 접근하고자 하는 메모리의 위치(주소)를 저장
- 저장된 주소를 기반으로 메모리에서 데이터를 읽거나 씀
- 메모리와의 상호 작용을 통제하고 데이터의 위치를 추적하는 데 사용됨
메모리 버퍼 레지스터
- CPU와 메모리 간 데이터 전송에 사용되는 레지스터
- 메모리와 CPU 간 데이터의 임시 저장소로 작동
- 데이터의 안정적인 전송을 보장하는 데 기여
플래그 레지스터
- 연산 결과 또는 CPU 상태에 대한 부가적인 정보
- 명령어 실행 중에 발생하는 여러 상태 정보를 저장
- 제로, 사인(음수), 캐리(캐리, 빌로우), 오버플로우...
범용 레지스터
- 여러 목적으로 사용할 수 있는 레지스터
- 주요 목적은 데이터의 일시적인 보관 및 연산을 위함
- 범용 레지스터의 수와 크기는 CPU의 성능과 효율성에 영향을 미침
스택 포인터
- 현재 스택의 최상단을 가리키는 레지스터
- 스택 메모리 영역에 접근하는 데 필수적이며, 스택의 상태를 관리하고 제어
베이스 레지스터
- 주소 지정 방식(Addressing Mode) 중 하나인 베이스 주소 지정(Base Addressing)에서 사용되는 레지스터
- 베이스 주소 지정은 주소를 계산할 때 상대적인 위치에 따라 베이스 레지스터에 저장된 주소를 기준으로 하는 방식
- 데이터 블록이나 배열의 시작 위치를 가리키는 데 사용됨
- 프로그램이 메모리의 다른 위치로 이동해도 상대적인 주소 계산이 그대로 유지될 수 있음
명령어 사이클
- 인출-실행 사이클 또는 인출-간접-실행 사이클 실행
인터럽트
- CPU가 먼저 처리해야 할 다른 작업이 생겼을 때 발생
동기 인터럽트(예외 Exception)
- CPU가 예기치 못한 상황을 접했을 때 발생
비동기 인터럽트(하드웨어 인터럽트)
- 입출력 장치에 의해 발생
- 입출력 작업 도중에 CPU가 다른 작업을 함으로써 효율적으로 명령어를 처리하기 위해 사용
- 막을 수 있는 인터럽트(maskable Interrupt)와 막을 수 없는 인터럽트(non maskable interrupt)가 있음
비동기 인터럽트 처리 순서
- 입출력 장치가 CPU에 인터럽트 요청 신호를 보냄
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부 확인
- CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 형재 인터럽트를 받아들일 수 있는지 여부 확인
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업 백업
- CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행
- 인터럽트 서비스 루틴 실행이 끝나면 백업해둔 작업을 복구하여 실행 재개
Go toor?