개요
임시적로 필요한 데이터를 메모리에 저장하기엔 비효율적입니다. 때문에 CPU 내부에 임시적으로 데이터를 저장할 수 있는 메모리가 있으며, 이곳이 바로 레지스터(Register)입니다.
주로 연산을 하기 위해 메모리에서 가져온 데이터나 데이터를 임시로 보관하거나, 주소를 저장하기 위해 쓰입니다. 데이터 임시 보관만 하는건 아닌데, 여러가지 레지스터의 종류에 대해 알아보겠습니다.
아래에서 설명하는 레지스터는 통상적으로 불리는 이름들이며, 각각의 아키텍처에 따라 EAX (Extended Accumulator Register)와 같이 다른 이름으로 불릴 수 있습니다.
데이터 레지스터 (DR, Data Register)
위에서 설명한대로 메모리에서 가져온 데이터를 임시적으로 저장할때 쓰이는 레지스터입니다.
아래의 주소 레지스터와 더불어 일반 레지스터라 부릅니다.
프로그램 카운터 (PC, Program Counter)
CPU가 다음 명령어를 실행하기 위해, 다음 명령어의 주소를 기억하고, 명령어의 흐름을 제어하는 레지스터입니다.
CPU는 이 레지스터에 저장된 주소를 참조하여 다음 명령어를 실행합니다.
명렁어 포인터(Instruction Pointer)라고도 불립니다.
명령어 레지스터 (IR, Instruction Register)
현재 실행중인 명령어를 임시적으로 저장하는 용도입니다. 제어장치가 이 레지스터에 저장된 명령어를 해석하고 처리합니다.
메모리 주소 레지스터 (MAR, Memory Address Register)
CPU가 메모리에 접근하기 위해, 메모리 주소를 임시적으로 저장하는 용도입니다.
CPU와 메모리 간의 상호작용을 위해 쓰입니다.
메모리 버퍼 레지스터 (MBR, Memory Buffer Register)
메모리와 CPU 간의 데이터 전송을 담당하는 레지스터입니다. 메모리로 부터 읽은 데이터를 임시적으로 저장하거나, 메모리에 쓰기 위해 CPU에서 데이터를 임시적으로 저장하는 용도로 쓰입니다.
때문에 성능에 영향을 미치는 레지스터입니다.
프로그램 상태 레지스터 (PSR, Program Status Register)
프로세서의 실행 상태 등을 저장하는 레지스터입니다.
프로세서를 제어하기 위한 레지스터로, 이또한 중요한 레지스터입니다.
누산기 레지스터 (AC, Accumulator Register)
ALU는 덧셈, 뺄셈, 곱셈 등의 연산을 수행하는 연산 장치인데, 이 레지스터는 ALU의 연산 결과를 임시적으로 저장하는 용도입니다.
AC는 CPU에서 매우 중요한 역할을 하며, CPU의 성능을 결정하는 요소 중 하나입니다.
범용 레지스터
데이터와 주소 모두 저장 가능한 레지스터로, 이름 그대로 범용적으로 사용할 수 있는 레지스터입니다.
DR, MAR 등이 여기에 포함됩니다.
특수 레지스터
프로그램의 상태 등을 저장하는 레지스터로, PC, PSR 등이 여기에 포함됩니다.
이밖에도 IO 주소 레지스터(입출력 장치의 주소), IO 버퍼 레지스터(입출력 장치에 대한 버퍼) 등의 레지스터가 존재하지만, 이는 나중에 따로 설명하겠습니다.