➘ 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들임
➚ 연산 결과와 플래그를 내보냄
결과값은 일시적으로 레지스터에 저장됨
제어 신호를 내보내고 명령어를 해석하는 부품
1) 클럭 신호를 받아들인다
클럭 - 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위
2) 명령어 레지스터로부터 해석해야 할 명령어를 받아들인다.
3) 플래그 레지스터 속 플래그 값을 받아들인다.
4) 시스템 버스 중 제어버스로 전달된 제어 신호를 받아들인다.
➚ CPU 내부와 외부로 제어신호를 내보낸다.
- 프로그램 카운터 - 메모리에서 가져올 명령어의 주소 저장
- 메모리 주소 레지스터 - 메모리의 주소를 저장
주소 버스로 내보낼 주소값 저장- 메모리 버퍼 레지스터 - 메모리와 주고받을 값(데이터와 명령어)을 저장
데이터 버스로 주고받을 값 저장- 명령어 레지스터 - 메모리에서 읽어들인 명령어(해석할 명령어)를 저장
프로그램 카운터(PC)
현재 실행할 명령어의 주소를 가지고 있음.
PC = 100
(100번지의 명령어 실행 예정)
메모리 주소 레지스터(MAR) ← PC
MAR에 PC 값을 복사하여 메모리에서 해당 주소를 읽을 준비를 함.
주소버스로 메모, 제어버스로 제어신호(메모리 읽기) 내보냄
MAR = 100
메모리 버퍼 레지스터(MBR) ← 메모리[MAR]
100번지의 메모리에서 명령어(ADD R1, R2)를 읽어 MBR에 저장
데이터 버스로 메모리에 저장된 값이 전달됨
MBR = ADD R1, R2
명령어 레지스터(IR) ← MBR
MBR에 있는 명령어를 IR에 저장하여 CPU가 해석할 수 있도록 준비
IR = ADD R1, R2
PC ← PC + 1
다음 명령어 실행을 위해 PC 증가
PC = 101
- 범용 레지스터 - 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터
- 플래그 레지스터 - 연산 결과 또는 CPU 상태에 대한 부가적인 정보 저장
- 스택 포인터 - 스택의 꼭대기를 가리키는 레지스터
(스택영역은 메모리 안에 있음)- 베이스 레지스터 - 프로그램이 실행될 때 특정 기준이 되는 메모리 주소를 저장하는 레지스터
스택 주소 지정 방식 - 스택과 스택 포인터를 이용한 주소 지정 방식
변위 주소 지정 방식 - 오퍼랜드 필드 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식
명령어 사이클 - 하나의 명령어를 처리하는 정형화된 흐름
인출, 실행, 간접, 인터럽트 사이클이 있음
인터럽트 - 흐름이 끊어지는 상황, CPU의 작업을 방해하는 신호
1) 동기 인터럽트(예외) - CPU에 의해 발생
2) 비동기 인터럽트(하드웨어 인터럽트) - 입출력 장치에 의해 발생