note title

레지스터

레지스터는 cpu에서 가장 중요한 부품이다. CPU가 처리하는 과정의 모든 중간 값들이 이 곳에 저장되기 때문이다. 레지스터는 프로세서 레지스터라고 쉽게 볼 수 있는데, CPU의 빠른 데이터 처리를 돕기 위해 사용되는 임시 저장 공간이라고 생각하면 편하다.

레지스터의 종류

레지스터는 CPU에서 다양한 이름과 역할로 분리되어 있는데, 대표적으로 프로그램, 명령어, 범용, 플래그 레지스터가 있다.

  1. 프로그램 카운터 프로그램 카운터는 메모리에서 다음으로 읽어 들일 명령어의 주소를 저장한다. (명령어 포인트라고 부르기도 함).

  2. 명령어 레지스터 해석할 명령어를 저장하는 레지스터를 의미한다.
    CPU는 명령어 레지스터 속 명령어를 해석한 뒤, ALU, 산술 논리 연산 장치로 하여금 연산하도록 하거나 제어 신호를 전송한다.

  3. 범용 레지스터 일반적인 상황에서 사용할 수 있는 레지스터다. 데이터와 명령어, 주소를 모두 저장할 수 있다.

  4. 플래그 레지스터 연산의 결과 혹은 CPU 상태에 대한 부가 정보, 플래그 값을 저장한다.
    플래그는 CPU가 명령어를 처리하는 과정에서 반드시 참조해야 할 상태 정보를 의미한다.
플래그 레지스터
부호 플래그연산 결과의 부호
제로 플래그연산 결과가 0인지
캐리 플래그연산 결과에 올림수나 빌림수가 발생했는지
오버플로우 플래그오버플로우 발생 여부
인터럽트 플래그인터럽트 가능 여부
슈퍼바이저 플래그커널 모드로 실행 중인지, 사용자 모드로 실행 중인지
  1. 스택 포인터 메모리에서는 실행 중인 프로그램이 적재되어 있다. 메모리 내 스택 영역의 최상단 스택 데이터 위치를 가르키는 레지스터가 바로 스택 포인터다.




참고자료

※ 이 글은 『이것이 컴퓨터 과학이다』 책을 기반으로, 다양한 자료를 참고해 작성했습니다.