본문 바로가기

TIL/잡다한

[컴퓨터구조]How does CPU execute program

반응형

대학때 컴퓨터 구조를 제대로 공부안해서 다시 영상을 보면서 정리해본다.


영상은 다음 링크와 같다 : https://www.youtube.com/watch?v=42KTvGYQYnA


1. 프로그램 실행과정


프로그램 로드:


하드 디스크 드라이버 --> RAM(Random Access Memory) --> CPU 로 전송


프로그램 실행과정(명령어 처리)에는 4개의 중요 Operation이 있다


각각 사이클 역할을 살펴보면:


Fetch (Instruction Fetch) : 메모리에서 명령어를 가져온다.

메모리를 읽어오는 것은 프로그램 내장방식이기 때문에 프로그램은 모두 메모리상에 올라와야 함.

그래서 프로그램이 차지하고 있는 각각의 메모리 영역(Code, Data, Stack, Heap)에 접근하여 명령어를 가져와야 하는것.


Decode (Instruction Decode) : 명령어 해독 및 레지스터 파일 읽기.

Fetch단계에서 명령어를 가져오고, 명령어가 무엇을 할려는지 파악해야함.

무엇을 할려는지 파악을 했다면 수행할려는 자료들을 각각 레지스터에 할당을 해줘야한다.


Execute (Instruction Execution) : 실행 또는 주소를 계산

WriteBack에 가기전에 사실 Memory라는 단계가 있다.

해독된 명령어를 가지고 실행을 하여, 데이터 메모리(Memory)에 있는 피 연산자에 접근한다.


WriteBack : 연산 결과를 타겟 레지스터에 저장

연산이 끝나고 메모리에 접근해서 결과를 저장한다.


2. RAM과 CPU사이에서 무슨 일이 일어날까?


영상에서는 다음과 같은 그림으로 예를 들었다.



순서를 설명하면

1. 먼저 LOAD A, 2000 [주소값==>100]

주소 값을 CPU에 있는 Program Counter에 넣어주고

Instruction Register안에 명령어를 넣어준다


2. 메모리 로케이션[여기선 2000이라고 할때]에 있는 값을 레지스터 A로 가져온다.


이러한 방식으로 CPU와 RAM사이에서 프로그램이 실행됨




반응형