정의
상태 레지스터(status register)는 중앙처리장치(CPU) 내부에 존재하는 특수 목적 레지스터로, 현재 실행 중인 프로그램이나 프로세서의 상태 정보를 비트 형태로 저장한다. 일반적으로 연산 결과에 대한 플래그(조건 코드)와 제어 플래그를 포함한다.
주요 구성 요소
| 플래그 종류 | 의미 | 사용 예시 |
|---|---|---|
| Zero Flag (Z) | 연산 결과가 0인 경우 1 | 조건 분기 JZ(Zero) 등 |
| Sign Flag (S) / Negative Flag (N) | 연산 결과가 음수인지 여부 | 부호 연산 및 부호 비교 |
| Carry Flag (C) | 연산에서 발생한 캐리(또는 차 borrow) | 다중 정밀도 연산, 산술 시프트 |
| Overflow Flag (V) / O | 부호가 있는 연산에서 오버플로 발생 여부 | 부호가 있는 정수 연산의 정확성 판단 |
| Interrupt Enable Flag (IE) | 인터럽트 허용 여부 | 인터럽트 마스크 제어 |
| Mode Bits | 현재 실행 모드(예: 사용자 모드, 커널 모드) | 보호 모드 전환 등 |
대표적인 구현例
| 아키텍처 | 레지스터 명칭 | 주요 플래그 |
|---|---|---|
| x86 | FLAGS / EFLAGS / RFLAGS | CF, PF, AF, ZF, SF, TF, IF, DF, OF 등 |
| ARM | CPSR (Current Program Status Register) | N, Z, C, V, Q, J, GE, IT 등 |
| MIPS | CP0 Status Register | IE, EXL, ERL, IM 등 |
| PowerPC | SR (Status Register) | XER, CR 등 |
동작 방식
- 연산 후 플래그 자동 설정
산술·논리 연산(ALU) 수행 시 연산 결과에 따라 해당 플래그 비트가 자동으로 업데이트된다. 예를 들어,ADD명령이 0을 반환하면 Z 플래그가 1이 된다. - 조건 분기와 연계
분기 명령은 상태 레지스터의 플래그 값을 검사하여 흐름을 제어한다.JZ(Zero Jump)는 Z 플래그가 1일 때만 분기한다. - 시스템 제어
인터럽트 마스크, 프로세서 모드 전환 등 시스템 수준 제어 정보도 상태 레지스터에 포함된다.
역사적 배경
상태 레지스터는 초기 메인프레임 컴퓨터와 마이크로프로세서 설계에서부터 사용되어 왔다. 1970년대의 인텔 8080, MOS 6502 등에서 플래그 레지스터 형태로 구현되었으며, 현대 CPU에서는 보다 복잡하고 확장된 형태의 상태 레지스터가 제공된다.
참고
- David A. Patterson, John L. Hennessy, Computer Organization and Design, 5th Edition, Morgan Kaufmann, 2013.
- ARM Architecture Reference Manual, ARM Limited, 2022.
- Intel 64 and IA-32 Architectures Software Developer’s Manual, Intel Corporation, 2021.