CH04. CPU의 작동 원리
ALU와 제어장치
ALU
- Input : 피연산자 from 레지스터, 제어신호 from 제어장치
- Output : 연산 결괏값 to 레지스터, 플래그 to 플래그 레지스터
- 플래그(flag) : ALU의 연산 결과에 대한 추가적인 상태 정보
- 플래그 레지스터(flag register) : 플래그를 저장하는 레지스터
- 부호 플래그 : 음수 여부
- 제로 플래그 : 0 여부
- 캐리 플래그 : 올림수 발생 여부
- 오버플로우 플래그 : 오버플로우 발생 여부
- 오버플로우(overflow) : 연산 결과가 연산 결과를 저장할 레지스터 크기보다 큰 상황
- 인터럽트 플래그 : 인터럽트 가능 여부
- 슈퍼바이저 플래그 : 1이면 커널 모드, 0이면 사용자 모드 실행 중
제어장치
- Input
- 클럭
- 플래그 from 플래그 레지스터
- 명령어 from 명령어 레지스터
- 제어신호 from 외부 입출력장치
- Output
- 제어신호
- to CPU 내부(ALU, 레지스터)
- to CPU 외부(메모리, 입출력장치)
레지스터
레지스터 종류
- 프로그램 카운터(PC; Program Counter) : 메모리에서 읽어들일 명령어의 주소 저장
- 명령어 레지스터(IR; Instruction Register) : 메모리에서 읽어들인 명령어 저장
- 메모리 주소 레지스터(MAR; Memory Address Register) : 메모리에로 보낼 읽어들일 주소 저장
- 메모리 버퍼 레지스터(MBR; Memory Buffer Register) : 메모리에서 읽어온 데이터 저장
- 범용 레지스터(general purpose register) : 명령어와 데이터 및 주소를 제한 없이 저장
- 플래그 레지스터(flag register) : ALU 연산 결과 발생하는 플래그(부가 정보) 저장
- 스택 포인터(SP; Stack Pointer) : 스택 메모리 최상단 데이터 주소값 저장
- 베이스 레지스터(base register) : 기준 주소 저장