북 스터디/혼자 공부하는 컴퓨터구조 + 운영체제

레지스터

EnoughTT 2023. 10. 17. 15:35

레지스터

 

알아야할 레지스터

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

 

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

메모리에서 읽어 들일 명령어의 주소를 저장

 

명령어 레지스터

메모리에서 읽어 들인 명령어를 저장

 

메모리 주소 레지스터

메모리의 주소를 저장

CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 거치게 됨

 

메모리 버퍼 레지스터 (메모리 데이터 레지스터)

메모리와 주고받을 값 (데이터와 명령어)을 저장

CPU가 주소 버스로 내보낼 값이 메모리 주소 레지스터를 거친다면, 데이터 버스로 주고받을 값을 메모리 버퍼 레지스터를 거침

 

 

1. 1000번지부터 1500번지까지 저장되어 있다고 가정

 

2. 프로그램을 실행하기 위해 프로그램 카운터에는 1000이 저장됨, 메모리에서 가져올 명령어가 1000번지에 있다는 걸 의미

 

3. 1000번지를 읽어 들이기 위해서 주소 버스로 1000번지를 내보내야함 ➡️ 메모리 주소 레지스터에는 1000이 저장됨

 

4. '메모리 읽기' 제어 신호와 메모리 주소 레지슽 값이 각각 제어 버스와 주소 버스를 통해 메모리로 보내짐

 

5. 메모리 1000번지에 저장된 값은 데이터 버스를 통해 메모리 버퍼 레지스터로 전달되고, 프로그램 카운터는 증가되어 다음 명령어를 읽어 들일 준비를 함

 

6. 메모리 버퍼 레지스터에 저장된 값은 명령어 레지스터로 이동함

 

7. 제어장치는 명령어 레지스터의 명령어를 해석하고 제어 신호를 발생시킴

 

 

범용 레지스터

일반적인 상황에서 자유롭게 사용, 데이터와 주소를 모두 저장할 수 있음

 

플래그 레지스터

연산결과 또는 CPU 상태에 대한 부가적인 정보를 저장

 

 

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

스택 포인터: 스택 주소 지정 방식이라는 주소 지정 방식에 사용됨, 프로그램 카운터와 베이스 레지스터는 변위 주소 지정 방식이라는 주소 지정방식에 사용됨

 

스택 주소 지정 방식: 스택과 스택 포인터를 이용한 주소 지정 방식, 가장 최근에 저장하는 값부터 꺼낼 수 있음

스택 영역: 메모리 안에 스택처럼 사용할 영역이 정해져 있음, 다른 주소 공간과는 다르게 스택처럼 사용하기로 암묵적으로 약속된 영역

 

 

특정 레지스터를 이용한 주소 지정방식 (2): 변위 주소 지정 방식

오퍼랜드 필드의 값 (변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식

연산 코드 필드, 어떤 레지스터의 값과 더할지를 나타내는 레지스터 필드, 그리고 주소를 담고 있는 오퍼랜드 필드가 있음

변위 주소 지정 방식은 오퍼랜드 필드의 주소와 어떤 레지스터를 더하는지에 따라 상대 주소 지정 방식, 베이스 레지스터 주소 지정 방식 등으로 나뉨

 

상대 주소 지정 방식

오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식

오퍼래드가 -3이었다면 CPU는 읽어 들이기로 한 명령어로부터 '세 번째 이전' 번지로 접근함

 

 

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

오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식

베이스 레지스터에 200이라는 값이 있고 오퍼랜드가 50이라면 250번지로 접근함