레지스터 (Register)
- 프로세서(CPU) 에 위치한 고속의 메모리 이다. 특수한 값 하나를 저장하는 기억공간.
※레지스터의 종류
- 사용의 용도에따른 레지스터 분류
- 전용 레지스터
- 범용 레지스터
- 정보의 종류에 따른 레지스터 분류
- 데이터 레지스터
- 주소레지스터
- 상태 레지스터
- 사용자가 저장한 정보의 사용여부에 따른 분류
- 사용자 가시 레지스터 ( User-Visible register)
- 사용자 불가시 레지스터 (User-Invisible register)
함수연산에 필요한 데이터를 저장하는 레지스터 , 연산결과를 플레그(Flag) 값으로 저장한다.
- 주소 레지스터 ( Address Register)
주소, 유효주소 계산에 필요한 주소 일부를 저장하는 레지스터, 주소레지스터의 종류는 아래와 같다.
- 기본주소 레지스터 : 프로그램 실행에 필요한 기준 주소값을 저장하는 주소 레지스터.( 프로그램 경로 주소를 저장함)
- 인덱스 레지스터 : 유효주소를 계산하는데 사용되는 주소정보를 저장.
- 스택포인터 레지스터 : 메모리에 프로세서 스택을 구현하는데 사용한다, ( 프로그램 언어를 사용할때 스택영역을 뜻함.) 많은 프로세서와 주소레지스터가 데이터 스택 포인터, 큐 포인터로 사용된다. 보통 일반적으로 반환주소, 프로세서 상태 정보, 서브루틴* 의 임시변수를 저장한다.
* 서브루틴 (subroutine ) : C 언어에서 function 과 같은의미다.
- 프로그램 카운터 ( Program counter , PC) : 프로그램 카운터는 명령어의 실행순서를 담는다. 다음 실행할 명령어의 주소 를 저장. (계수기로 되어있어, 명령어를 읽으면서 카운트함.)
- 명령어 레지스터( Instruction Register, IR) : 현재 실행(수행) 하고있는 명령어를 저장.명령어 레지스터는 메모리 내부에서만 전달되어 속도가 빠르다. ( 메모리 버퍼 레지스터 와 명령어 레지스터 사이에 직접전달)
- 프로그램 상태 레지스터( Program status Register, PSR) : 프로그램 상태 프래그같은 상태값을 저장한다. 플래그 외, 프로그램 카운터에 저장된 주소정보도 저장한다.
- 메모리 주소 레지스터 ( Memory Address Register , MAR) : 메모리 주소에 접근하려 하는 메모리 주소를 저장한다. (주소 레지스터, 프로그램 카운터로부터 주소정보를 받는다)
- 메모리 버퍼 레지스터 ( Memory Buffer Register , MBR) : 메모리에서 정보를 읽을때 나 정보를 저장할때 사용된다.
프로세서의 기본 레지스터 구성
- IR (Instruction Register) : 명령어 레지스터
- MAR (Memory Address Register) : 메모리 주소 레지스터
- PSR (Program status Register ) : 프로그램 상태 레지스터
- MBR ( Memory Buffer Register ) : 메모리 버퍼 레지스터
- PC( Program Counter ) : 프로그램 카운터
- DR (Data Register ) : 데이터 레지스터
- AC ( Accumulator) : 누산기
- MQR( Multiplier Quotient Register) : 곱수 몫 레지스터
- MM ( Main Memory ) : 메인 메모리.