본문 바로가기

혼공컴운

Chapter 04-2 레지스터

메모리에 저장된 프로그램을 실행하는 과정에서 프로그램 카운터, 명령어 레지스터,

메모리 주소 레지스터, 메모리 버퍼 레지스터에 어떤 값이 저장되는지.

 

1)

CPU로 실행할 프로그램이 1000번지부터 1500번지까지 저장되어 있다고 가정한다. 

그리고 1000번지에는 1101(2)이 저장되어 있다고 가정한다.

 

2)

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

 

3) 

1000번지를 읽어 들이기 위해서는 주소 버스로 1000번지를 내보내야 한다. 이를 위해 메모리 

주소 레지스터에는 1000이 저장된다.

 

4) 

‘메모리 읽기’ 제어 신호와 메모리 주소 레지스터 값이 각각 제어 버스와 주소 버스를 통해 메모리로 보내진다.

 

5)

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

 

6)

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

 

7)

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

 

 

+) CPU가 메모리 속 프로그램을 순차적으로 읽어 들이고 실행해 나갈 수 있는 이유는

    CPU 속 프로그램 카운터가 꾸준히 증가하기 때문이다. (위의 5번 참고) 

프로그램 카운터의 증가 !

 

 

+) 순차적인 실행 흐름이 끊기는 경우

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