CPU Work(cpu 동작 방식)

CPU는 메모리에 저장된 명령어를 순차적으로 읽어들이고(Fetch), 해석하고(Decode), 실행(Execute)하는 과정을 반복하며 프로그램을 수행한다.

명령어 처리 주기(Instruction Cycle)

CPU가 하나의 명령어를 처리하는 과정은 다음과 같이 반복된다.

  1. 인출(Fetch): 메모리상의 주소에서 명령어를 읽어 CPU 레지스터로 가져오는 단계

  2. 해독(Decode): 가져온 명령어가 어떤 동작을 요구하는지 제어 장치가 해석하는 단계

  3. 실행(Execute): 해석된 명령어에 따라 산술 논리 장치(ALU)가 연산하거나 데이터를 이동시키는 단계

  4. 저장(Store): 연산 결과를 레지스터나 메모리에 기록하는 단계

주요 레지스터

CPU 내부에서 데이터를 일시적으로 저장하는 초고속 메모리다.

레지스터
영문명
설명

PC

Program Counter

다음에 실행할 명령어의 메모리 주소를 저장

IR

Instruction Register

현재 실행 중인 명령어를 저장

MAR

Memory Address Register

읽거나 쓸 메모리의 주소를 저장

MDR

Memory Data Register

메모리에서 읽어온 데이터나 메모리에 쓸 데이터를 저장 (MBR이라고도 함)

AC

Accumulator

연산 결과를 일시적으로 저장하는 누산기

Program Counter(PC)

CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터로 다음에 실행할 명령을 메모리에서 찾아 주소를 알려주는 역할을 한다.

  1. 프로그램 카운터에는 다음 실행할 명령어의 주소가 존재

  2. 해당 주소에서 명령어를 가져옴

  3. 프로그램 카운터를 증가시켜 그 다음 실행할 명령어 주소 대입

  4. 가져온 명령어 실행

CPU 실행 상세 과정

제시된 시나리오(A=3, B=4, A+B 결과를 저장)를 바탕으로 명령어 단위별 레지스터 상태 변화를 정리하면 다음과 같다.

초기 상태

  • 메모리 10번지: 3 (A)

  • 메모리 11번지: 4 (B)

  • 메모리 100번지: LOAD 10

  • 메모리 101번지: ADD 11

  • 메모리 102번지: STORE 12

  • PC: 100 (시작 지점)

1. LOAD 10 (메모리 10번지 값을 누산기로 적재)

구분
PC
MAR
MDR
IR
AC
설명

인출

100

-

-

-

-

PC가 가리키는 100번지 명령어 인출 준비

인출

100

100

LOAD 10

-

-

MAR에 주소 전달, 메모리에서 명령어 읽어 MDR 저장

인출

100

100

LOAD 10

LOAD 10

-

MDR 내용을 IR로 이동

인출

101

100

LOAD 10

LOAD 10

-

다음 명령 실행을 위해 PC 1 증가

실행

101

10

LOAD 10

LOAD 10

-

명령어 해독 결과, 10번지 데이터 필요. MAR에 10 저장

실행

101

10

3

LOAD 10

3

메모리 10번지의 값(3)을 읽어 AC에 저장

2. ADD 11 (누산기 값과 메모리 11번지 값을 더함)

구분
PC
MAR
MDR
IR
AC
설명

인출

101

-

-

-

3

PC가 가리키는 101번지 명령어 인출 준비

인출

101

101

ADD 11

-

3

MAR을 통해 101번지 명령어 읽어 MDR 저장

인출

101

101

ADD 11

ADD 11

3

MDR 내용을 IR로 이동

인출

102

101

ADD 11

ADD 11

3

다음 명령 실행을 위해 PC 1 증가

실행

102

11

ADD 11

ADD 11

3

명령어 해독. 피연산자 주소 11을 MAR에 저장

실행

102

11

4

ADD 11

3

메모리 11번지의 값(4)을 읽어 MDR 저장

실행

102

11

4

ADD 11

7

ALU가 AC(3)와 MDR(4)을 더해 결과(7)를 AC에 저장

3. STORE 12 (누산기 값을 메모리 12번지에 저장)

구분
PC
MAR
MDR
IR
AC
설명

인출

102

-

-

-

7

PC가 가리키는 102번지 명령어 인출 준비

인출

102

102

STORE 12

-

7

MAR을 통해 102번지 명령어 읽어 MDR 저장

인출

102

102

STORE 12

STORE 12

7

MDR 내용을 IR로 이동

인출

103

102

STORE 12

STORE 12

7

다음 명령 실행을 위해 PC 1 증가

실행

103

12

STORE 12

STORE 12

7

명령어 해독. 저장할 주소 12를 MAR에 저장

실행

103

12

7

STORE 12

7

저장할 데이터(AC값 7)를 MDR로 이동

실행

103

12

7

STORE 12

7

MDR의 값을 메모리 12번지에 저장 (쓰기)

참고자료

Last updated