[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터
Computer Science/컴퓨터 구조

[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터

T1 ) 레지스터란?

  • CPU 내부의 작은 임시 저장 장치이다.
  • 프로그램 속 명령어와 데이터는 실행 전·후로 레지스터에 저장된다.
  • CPU 내부에는 다양한 레지스터들이 있고, 각기 다른 역할을 가진다.

 

T2) 레지스터의 종류 ( CPU마다 종류가 다름 )

프로그램 카운터(Instruction Pointerl; 명령어 포인터) 메모리에서 가져올 명령어의 주소( 메모리에서 읽어들일 명령어의 주소 )
명령어 레지스터 해석할 명령어( 방금 메모리에서 읽어들인 명령어 ) → 제어장치가 해석함
메모리 주소 레지스터 메모리의 주소( CPU가 읽어들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터 )
메모리 버퍼 레지스터 메모리와 주고 받을 값( 데이터와 명령어 )   CPU가 데이터 버스로 정보를 주고 받을 때 거치는 레지스터
플래그 레지스터 연산 결과 또는 CPU상태에 대한 부가적인 정보
범용 레지스터 다양하고 일반적인 상황에서 자유롭게 사용
스택 포인터 스택의 꼭대기를 가리키는 레지스터( 스택이 어디까지 차있는지에 대한 표시 )
베이스 레지스터  
더보기

프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터가 어떻게 작동하는가

 

· 프로그램을 이루고 있는 명령어들은 각각 하나의 메모리 번지를 차지하고 있다고 가정한다.

· CPU가 실행하고자 하는 프로그램은 1000번지부터 1500번지까지 메모리에 저장되어있다.

· 명령어를 첫번째부터 실행한다고 가정한다.

 

· 프로그램 카운터에  메모리에서 가져올 명령어의 주소( 메모리에서 읽어들일 명령어의 주소 )인 1000이 저장된다.

· 프로그램 카운터에 담긴 1000번지 명령어를 메모리로부터 읽어와야하기 때문에 주소버스를 통해서 읽고자하는 주소를 메모리로 쏴줘야한다. 그러기위해서 메모리 주소 레지스터를 거치게된다.

· 메모리에게 (제어장치를 통한) 메모리 읽기 신호와 함께 몇 번지 주소를 읽고 싶은지를 쏴주게 된다.

· 메모리는 1000번지에 저장된 값을 메모리 버퍼레지스터로 데이터버스를 통해서 전달해준다. 그 후 프로그램 카운터는 1이 증가된다.(프로그램 카운터에는 다음에 메모리에서 가져올 명령어의 주소가 담기기때문에)

· 명령어 레지스터에는 해석할 명령어( 방금 메모리에서 읽어들인 명령어 )이 담기기때문에 메모리 1000번지에 있던 값 1101이 명령어 레지스터에 담기게 된다.

 

 

※ 프로그램 카운터가 1씩 증가하면서 순차적인 흐름을 가지면서 프로그램이 실행되지만 순차적인 실행 흐름이 끊기는 경우가 있다.

  • 특정 메모리 주소로 실행 흐름을 이동하는 명령어 실행 시 (e.g. JUMP, CONDITIONAL JUMP, CALL, RET)
  • 인터럽트 발생 시
  • ETC...

 

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

T3-Sub1) 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식

스택 주소 지정 방식
스택은 어디에 존재하는가

 

* 스택은 메모리안에 스택처럼 쓸 수 있는 공간이 미리 지정된 구역에 있다.

 

T3-Sub2) 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)와 특정 레지스터(프로그램 카운터, 베이스 레지스터)의 값을 더하여 유효주소얻기

변위 주소 지정 방식
변위 주소 지정 방식의 명령어 형태

 

  • 상대주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 프로그램 카운터의 값을 더하여 유효주소 얻기

 

  • 베이스 레지스터 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 베이스 레지스터의 값을 더하여 유효주소얻기

▶ 베이스 레지스터는 일종의 기준 주소 역할을 한다.

기준 주소 프로그램의 시작점 같은 것들이 담긴다.

▶ ex) 베이스 레지스터가 200, 오퍼랜드 필드의 값 50을 더하면 200번지로부터 50번지 떨어진 주소에 접근하라는 뜻이 된다.

 

 

 

 

 

출처: 인프런-개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard