명령어 사이클을 통해 CPU 동작 원리 및 뼈대 잡기

2023. 9. 10. 15:55컴퓨터구조와 운영체제

728x90

저번 포스팅에서는 컴퓨터 구조의 큰 그림을 그려봤다.

 

명령어 사이클을 통해, CPU의 동작 원리와 흐름을 알아보려고 한다.

 

명령어 사이클이란?

CPU의 정해진 동작 흐름으로, 프로그램 속에서 명령어가 실행되는 주기는 반복된다.

 

명령어 사이클


[인터럽트가 발생하면 이야기가 다르긴 하지만, 이에 대해서는 다음 포스팅에서 다뤄보려고 한다.]

 

명령어 사이클



명령어 사이클은 크게 2+1단계이다.

 

인출 사이클 - 실행 사이클

 

 

메모리로부터 필요한 데이터를 인출한다!

 

그리고, 바로 실행한다!




하지만, 메모리의 데이터가 유효주소라면 바로 실행이 불가능하다!

 

유효주소란?

연산에 사용될 데이터를 나타낸 메모리의 주소를 가지고 있는 메모리 주소

 

이 경우에는 아래와 같은 사이클을 탄다.

 

간접 사이클


 

 

다음으로, 간접 사이클에서 CPU의 부품들은 어떤 일을 하고 있는 지 좀 더 구체적으로 알아보자!

 


 

인출 - 실행 사이클에서 CPU는 기억장치로부터 명령어를 읽어와야 하고, 이를 실행해야한다.

 

 

인출 사이클

 

1. PC(Program Counter)에서 다음에 인출할 명령어의 주소를 가져온다.



2. 이를 MAR(Memory Address Register)에 일시적으로 저정한다.

 



3. 제어장치에서 MAR에 담긴 정보를 사용해서 "메모리를 읽어!"라는 제어 신호를 보낸다.



4. 읽어온 데이터를 MBR(Memory Buffer Register)에 저장한다. 그리고 이를 명령어 레지스터에 복사한다.

 

PC ++ 는 프로그램을 순차적으로 실행할 수 있는 원리이다.

하지만, 인터럽트가 발생하면, PC ++ 즉 순차적 흐름이 끊기는 경우가 있다.
이 경우를 인터럽트 사이클이라고 한다.



실행 사이클




1. 제어 장치가 명령어 레지스터에서 해석할 명령어를 가져온다.
2. 클럭, 플래그에 대한 정보를 바탕으로 해석한다.
3. 연산을 하기 위해, 데이터가 필요한 경우 메모리로부터 데이터를 가져온다. (메모리로 제어신호 보냄)

4. 데이터를 처리하기 위해 ALU에게 제어신호를 보낸다.



5. ALU에서 연산을 한 후 연산의 결과를 레지스터에 저장한다.



지금까지, 인출 - 실행 사이클에 대해서 알아보았습니다. 감사합니다!

 



다음 포스팅 : 인터럽트와 인터럽트 사이클

728x90