레지스터

bebrain·2023년 6월 9일
0

컴퓨터구조

목록 보기
7/8

레지스터

: CPU 내부의 작은 임시 저장 장치로 프로그램을 실행하는데 필요한 값들을 임시로 저장한다.

프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장된다.

레지스터의 종류 8가지

※ 레지스터는 CPU마다 이름, 크기, 종류가 다르다

프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터, 플래그 레지스터, 범용 레지스터, 스택 포인터, 베이스 레지스터 등이 있다.

① 프로그램 카운터(=명령어 포인터)

  • 메모리에서 가져올 명령어의 주소(메모리로부터 읽어들일 명령어의 주소)를 저장한다.

② 명령어 레지스터

  • 방금 메모리에서 읽어들인 명령어(해석해야할 명령어)를 저장한다.
*제어장치는 이 명령어 레지스터 안에 저장된 명령어를 해석하여 제어신호를 내보낸다.

③ 메모리 주소 레지스터

  • 메모리의 주소를 저장한다.
*CPU가 읽고자 하는 주소값을 주소버스로 내보낼때 이 메모리 주소 레지스터를 거친다.

④ 메모리 버퍼 레지스터

  • 메모리와 주고받을 값을 저장한다.
*CPU가 메모리에 전달할 값이나 메모리로부터 전달받은 값(데이터 or 명령어)을 데이터버스로 내보낼때
이 메모리 버퍼 레지스터를 거친다.

※ 순차적인 실행흐름이 바뀌는 경우

① JUMP, CONDITIONAL JUMP, CALL, RET 등 특정 메모리 주소로 실행흐름을 이동시키는 명령어 실행
▶ 이 경우에는 프로그램 카운터에 변경된 명령어의 주소가 저장된다.

② 인터럽트가 발생했을 때

⑤ 범용 레지스터

  • 다양하게 사용할 수 있는 레지스터
  • 메모리 버퍼 레지스터는 데이터 버스로 주고받을 값만 저장하고 메모리 주소 레지스터는 주소 버스로 내보낼 주소값만 저장하지만, 범용 레지스터는 데이터와 주소 모두 저장 가능.

⑥ 플래그 레지스터

  • 연산 결과 or CPU 상태에 대한 부가적인 정보 저장.

⑦스택 포인터와 ⑧베이스 레지스터는 주소 지정에 사용될 수 있는 특별한 레지스터이다.

스택 포인터는 스택 주소 지정방식에 사용되며,
프로그램 카운터와 베이스 레지스터는 변위 주소 지정방식에 사용된다.

스택 주소 지정방식

스택과 스택 포인터를 이용한 주소 지정 방식.

  • 스택 : 메모리 안에 스택으로 사용할 영역이 지정되어 있다.
    (=스택영역)

  • 스택은 한쪽 끝이 막혀있는 저장공간으로 후입선출구조
    (LIFO : Last In Frist Out)

  • 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터
    (스택에 마지막으로 저장한 값의 위치를 저장)

변위 주소 지정방식

: 오퍼랜드 필드의 값(변위) + 특정 레지스터의 값
→ 유효 주소 GET

명령어는 연산 코드 + 오퍼랜드 구조로 이루어져 있는데 이 오퍼랜드 필드에는 메모리 주소가 담길 때도 있다. 변위주소지정방식은 오퍼랜드 필드의 값과 특정 레지스터의 값으로 유효 주소를 얻어내는 주소 지정 방식이다.

상대주소 지정방식과 베이스레지스터 지정방식 두 가지가 있다.

1. 상대 주소 지정 방식

  • 오퍼랜드 + 프로그램 카운터의 값으로 유효주소 get

2. 베이스 레지스터 주소 지정 방식

  • 오퍼랜드 + 베이스 레지스터의 값으로 유효주소 get
  • 베이스 레지스터 = 기준 주소
  • 오퍼랜드 = 기준 주소로부터 떨어진 거리

0개의 댓글