본문 바로가기
CS

[혼공컴운] 레지스터

by 데브겸 2023. 3. 28.

프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됨. 메모리 계층구조의 최상위에 위치하면서 어떤 다른 메모리보다도 데이터를 가장 빠르게 다룰 수 있음.

 

레지스터의 종류

  • 프로그램 카운터(PC; Program Counter): 다음에 실행할 명령어의 주소, 즉 메모리에서 읽을 명령의 주소를 저장. 명령을 가져오면 IP(Instruction Pointer)의 값이 증가. 즉, 프로그램 카운터는 항상 가져올 다음 명령의 주소를 가리키거나 현재 명령의 주소를 나타내고 있음.
    • 프로그램 카운터는 꾸준히 증가하며 프로그램을 차례대로 실행. 하지만 JUMP, CONDITIONAL JUMP등의 명령어를 통해 명령의 실행이 순차가 아닌 다른 방향으로 변경될 수 있음
  • 명령어 레지스터(IR; Instruction Register): 메모리에서 읽은 명령어를 저장하는 레지스터(현재 실행 중인 명령어 저장). 제어장치가 명령어 레지스터 속 명령어를 해석해서 제어 신호를 내보내는 구조
  • 메모리 주소 레지스터(MAR; Memory Address Register): 메모리의 주로를 저장하는 레지스터. 주소버스와 연결되어 있음
  • 메모리 버퍼 레지스터(MBR; Memory Buffer Register): 메모리와 주고받을 값(데이터와 명령어)을 저자아는 레지스터. 데이터 버스와 연결되어 있음
  • 범용 레지스터(General purpose register): 일반적인 상황에서 유연하고 자유롭게 사용될 수 있는 레지스터
  • 플래그 레지스터(Flag register): ALU 연산결과 혹은 CPU 상태에 대한 추가 정보 저장

 

특정 레지스터를 이용한 주소 지정방식

  • 스택 주소 지정 방식: 스택 포인터를 이용해서 메모리 내의 스택 영역 중 가장 위에 있는 곳에 있는 데이터를 찾기
  • 변위 주소 지정 방식: 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 산출
  • 상대 주소 지정 방식: 오퍼랜드와 프로그램 카운터 값을 더하여 유효 주소를 산출
  • 베이스 레지스터 주소 지정 방식: 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 산출