본문 바로가기

컴퓨터구조

컴퓨터구조: 레지스터

728x90
반응형

레지스터 동작

레지스터는 CPU가 사용하는 데이터와 명령어를 신속하게 읽어 오고 저장하는 용도로 사용된다. 메모리 계층의 최상위에 있으며 시스템에서 가장 빠른 메모리다. 고속 멀티 포트 메모리 셀로 구성된다.

레지스터는 시스템에서 작업을 수행하는 동안 사용되는데 주기억 장치에서 데이터를 읽어와 레지스터에 저장하고, 처리를 마치면 주기억 장치에 그 결과를 다시 저장한다.

레지스터 종류

용도에 따른 종류로는 누산기(AC), 프로그램 카운터(PC), 명령 레지스터(IR), 인덱스 레지스터(IR), 스택 포인터(SP), 메모리 데이터 레지스터(MDR), 메모리 주소 레지스터(MAR) 등이 있다.

a) 누산기(ACcummulator register, AC)

ALU 내부에 위치하며, ALU의 산술 연산과 논리 연산 과정에 사용된다.

제어 장치는 주기억 장치에서 인출된 데이터 값을 산술 연산 또는 논리 연산을 위해 누산기에 저장한다. 이 레지스터는 연산할 초기 데이터, 중간 결과 및 최종 연산 결과를 저장한다. 최종 결과는 목적지 레지스터나 MBR을 이용하여 주기억 장치로 전송된다.

b) 프로그램 카운터(PC)

명령 포인터 레지스터라고도 하며, 실행을 위해 인출(fetch)하려는 다음 명령의 주소를 저장한데 사용된다.

명령어가 인출되면 PC값이 명령 크기(단위 길이)만큼 증가한다.

이 레지스터는 다음 명령의 주소를 가리키거나 유지한다.

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

주기억 장치에서 인출한 명령어를 저장한다.

제어 장치는 IR에서 명령어를 읽어 와서 해독하고 명령을 수행하기 위해 컴퓨터의 각 장치에 제어 신호를 전송한다.

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

CPU가 읽고 쓰기 위한 데이터의 메모리 주소를 저장한다.

CPU는 메모리에 데이터를 저장하거나 메모리에서 데이터를 읽을 때 필요한 메모리 위치의 주소를 MAR로 보낸다.

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

메모리 데이터 레지스터(MDR)이라고도 하며, 메모리에서 데이터를 읽거나 메모리에 저장될 명령의 데이터를 일시적으로 가지고 있다.

이 레지스터는 메모리에서 가져오거나 메모리에 저장할 데이터 ㄸ는 명령어를 저장하는 용도로 사용된다.

g) 입출력 주소 레지스터(I/O Address Register, I/O AR)

특정 I/O장치의 주소를 지정하는 데 사용된다.

h) 입출력 버퍼 레지스터(I/O Buffer Register, I/O BR)

I/O 모듈과 프로세서 간에 데이터를 교환하는데 사용된다.

i) 스택 제어 레지스터

메모리 스택을 관리하는 데 사용되고 크기는 2 또는 4 바이트이다.

스택은 메모리 블록 세트를 나타내며 데이터는 이 블록에 저장되고, 이것에서 순서대로 후입 선출(LIFO)로 검색된다.

j) 플래그 레지스터(Flag Register, FR)

CPU가 작동하는 동안 특정 조건의 발생을 표시하는 용도로 사용된다.

크기가 1바이트 또는 2바이트인 특수 목적 레지스터이다.

플래그 레지스터의 각 비트는 플래그(또는 알람)를 구성하여 명ㄹ령을 실행하는 동안 지정된 조건이 발생했는지 여부를 표시한다.

다른 용어로 상태 레지스터(Status Register, SR) 또는 프로그램 상태 워드(Program Status Word, PSW)라고 부르기도 한다.

k) 데이터 레지스터(Data Register, DR)

주변 장치로, 또는 주변 장치로부터 전송되는 데이터를 일시적으로 저장하기 위해 사용되는 레지스터이다.

 

레지스터 전송

LOAD, STORE, MOVE라는 세 가지로 분류할 수 있다.

LOAD: 주기억 장치에서 레지스터로 데이터를 읽어오기

STORE: 레지스터에서 주기억 장치로 데이터를 저장하기

MOVE: 레지스터에서 레지스터로 데이터를 이동하기

전송 명령에는 무조건 전송과 조건 전송이 있다.

인텔 계열 프로세서는 리틀 엔디안(little endian)을 사용, IRSC 프로세서 계열과 자바는 빅 엔디안(big endian)을 사용한다.

 

이동 명령은 데이터형 변환에도 사용된다. 크기가 작은 레지스터에 저장된 정수를 큰 레지스터로 이동하여 데이터형을 변환다.

부호 확장: 데이터형이 바뀌어도 값의 변화 없이 부호만 확장하는 것

명령어를 주기억 장치에서 명령 레지스터로 읽어 오는 것을 명령어 인출이라고 하며, 주기억 장치에서 오퍼랜드(피연산자)를 읽어 오는 것을 오퍼랜드 인출이라고 한다.

 

반응형