본문 바로가기
CS/Computer Architecture

[컴퓨터구조] 레지스터(Register)

by 테리는당근을좋아해 2020. 7. 14.

레지스터(Register)

- 명령어를 실행하기 위해 필요한 데이터와 상태, 명령어를 저장하는 기억 소자

- CPU 내부에 존재하며, 기억 장치 중 가장 빠르며 용량이 작음

- 데이터 레지스터와 제어용 레지스터로 구분

 

 

데이터 레지스터

- CPU가 명령어를 처리하는 과정에서 임시로 처리할 데이터를 저장하거나 메모리의 주소를 저장할 목적으로 사용

- 데이터 레지스터(Data Register), 주소 레지스터(Address Register), 범용 레지스터(General Register)로 구분

 

1) 주소 레지스터

(1) 스택 포인터(SP, Stack Pointer)

- CPU는 현재 실행하고 있는 프로그램의 메모리 영역을 스택으로 관리

- SP는 현재 스택 영역에서 가장 마지막 부분(가장 최근에 저장된)을 가르킴

 

(2) 베이스 포인터(BP, Base Potiner)

- BP는 스택 영역에서 각 메모리 영역의 경계선을 가르킴

- 즉, 서브루틴 호출 시에 Caller의 SP는 BP가 됨

- 서브루틴의 실행이 완료되면 BP는 다시 SP가 됨

 

(3) 인덱스 레지스터(IX, Index Register)

- 배열에 순차적으로 접근하기 위한 레지스터

 

 

제어용 레지스터

- CPU가 프로그램의 실행 흐름을 제어하거나 상태를 저장하기 위해 사용되는 레지스터

- 프로그램 카운터(PC), 명령어 레지스터(IR), 상태 레지스터(SR), 명령어 주소 레지스터(MAR), 명령어 버퍼 레지스터(MBR)로 구성

 

1) 프로그램 카운터(PC, Program Counter)

- 다음에 실행할 명령어의 주소 저장

 

2) 명령어 레지스터(IR, Instruction Register)

- 현재 실행중인 명령어 저장

 

3) 메모리 주소 레지스터(MAR, Memory Address Register)

- 액세스할 메모리의 주소 저장

- 주소 버스에 연결

 

4) 메모리 버퍼 레지스터(MBR, Memory Buffer Register)

- 메모리에 접근 시에 해당 주소에 저장/적재할 데이터를 임시 저장

- 데이터 버스에 연결

 

5) 상태 레지스터(SR, Status Register)

- 조건 혹은 이벤트를 검사해 프로그램의 흐름을 제어

- 각 비트에 플래그 값을 가짐

- 연산 결과를 나타내는 조건 플래그(Conditional Flags)와 CPU를 제어하기 위한 제어 플래그(Control Falgs)로 구성

 

(1) 조건 플래그(Conditional Flags)

a. 부호 플래그(S)

- 산술 연산 결과의 부호비트 저장

 

b. 제로 플래그(Z)

- 연산 결과가 0인지 표시

 

c. 자리 올림수 플래그(C)

- 자리 올림수 발생 시 표시

 

e. 패리티 비트(P)

- 패리티 체크를 통해 연산 결과의 유효성 체크

 

f. 오버플로우(OV)

- 오버플로우 발생 여부

 

(2) 제어 플래그(Control Flags)

a. 인터럽트 플래그(IE)

- CPU가 외부 인터럽트의 요청을 수락할지에 대한 여부

 

b. 관리자 모드 플래그(SV)

- 해당 명령어가 관리자 모드에서 실행되고 있는지에 대한 여부

 

 

댓글