레지스터
레지스터는 cpu에서 가장 중요한 부품이다. CPU가 처리하는 과정의 모든 중간 값들이 이 곳에 저장되기 때문이다. 레지스터는 프로세서 레지스터라고 쉽게 볼 수 있는데, CPU의 빠른 데이터 처리를 돕기 위해 사용되는 임시 저장 공간이라고 생각하면 편하다.
레지스터의 종류
레지스터는 CPU에서 다양한 이름과 역할로 분리되어 있는데, 대표적으로 프로그램, 명령어, 범용, 플래그 레지스터가 있다.
- 프로그램 카운터
프로그램 카운터는 메모리에서 다음으로 읽어 들일 명령어의 주소를 저장한다. (명령어 포인트라고 부르기도 함).
- 명령어 레지스터
해석할 명령어를 저장하는 레지스터를 의미한다.
CPU는 명령어 레지스터 속 명령어를 해석한 뒤, ALU, 산술 논리 연산 장치로 하여금 연산하도록 하거나 제어 신호를 전송한다. - 범용 레지스터
일반적인 상황에서 사용할 수 있는 레지스터다. 데이터와 명령어, 주소를 모두 저장할 수 있다.
- 플래그 레지스터
연산의 결과 혹은 CPU 상태에 대한 부가 정보, 플래그 값을 저장한다.
플래그는 CPU가 명령어를 처리하는 과정에서 반드시 참조해야 할 상태 정보를 의미한다.
플래그 레지스터 | |
---|---|
부호 플래그 | 연산 결과의 부호 |
제로 플래그 | 연산 결과가 0인지 |
캐리 플래그 | 연산 결과에 올림수나 빌림수가 발생했는지 |
오버플로우 플래그 | 오버플로우 발생 여부 |
인터럽트 플래그 | 인터럽트 가능 여부 |
슈퍼바이저 플래그 | 커널 모드로 실행 중인지, 사용자 모드로 실행 중인지 |
- 스택 포인터 메모리에서는 실행 중인 프로그램이 적재되어 있다. 메모리 내 스택 영역의 최상단 스택 데이터 위치를 가르키는 레지스터가 바로 스택 포인터다.
참고자료
※ 이 글은 『이것이 컴퓨터 과학이다』 책을 기반으로, 다양한 자료를 참고해 작성했습니다.