CS

[CS] 실행 흐름을 파악할 수 있는 레지스터의 종류

chandlerxx 2024. 4. 14. 14:37

레지스터가 중요한 이유

  • CPU와 메모리 간, 데이터/명령어 송수신할때 반드시 `레지스터`에 저장됨
  • 레지스터의 값만 잘 트래킹해도 프로그램 실행 흐름을 파악할 수 있음

 

레지스터 종류

  • 프로그램 카운터(`PC`) : 메모리에서 가져올 명령어의 주소
  • 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장
    → 제어장치가 명령어 레지스터의 명령어를 해석하여, 제어 신호를 발생시킴
  • 메모리 주소 레지스터(`MAR`) : 메모리의 주소를 저장 (@주소 버스)
  • 메모리 버퍼 레지스터(`MBR` or `MDR`) : 메모리와 주고받을 값을 저장 (@데이터 버스)
  • 범용 레지스터 : 메모리 주소와 데이터 모두를 저장 (MAR + MBR 모두 커버)
  • 플래그 레지스터 : CPU 상태에 대한 부가적인 정보 저장
  • 스택 포인터(`SC`) : 메모리의 스택 영역 내, 데이터의 최상단 위치를 저장

 

그림으로 살펴보면

 

1. x001 이라는 메모리 주소에 해당되는 명령어를 가져와야 합니다.

▶ PC : x001

step : 1

 

 

2. 시스템버스를 통해서 데이터를 가져와야하니, 메모리 주소 레지스터에 해당 값을 넘김

▶ 메모리 주소 레지스터 : x001

3. 제어장치의 메모리읽기 신호를 통해서, 해당 메모리의 명령어를 읽는다

step : 2, 3

 

 

4. 시스템버스를 통해 메모리와 주고 받은 명령어 또는 데이터를 저장한다 

▶ 메모리 버퍼 레지스터 : data1

5. 동시에 다음 프로그램 명령어를 읽어들일 준비

▶ 프로그램 카운터 : x002 (+1)

 

step : 4, 5

 

 

 

6. 메모리로부터 읽은 들인 명령어를 명령어 레지스터에 저장

step : 6

 

7. 이후 제어장치에서 명령어를 해석하고, 처리

8. x001 명령어 처리 이후, x002순으로 순차적으로 처리 진행

 

알아두면 좋은

  • `Fetch` cycle : 메모리에 있는 명령어를 CPU로 가져오는 단계 (2~6번)

 

 

출처

교보문고 혼공컴운