CPU Work(cpu 동작 방식)
CPU는 메모리에 저장된 명령어를 순차적으로 읽어들이고(Fetch), 해석하고(Decode), 실행(Execute)하는 과정을 반복하며 프로그램을 수행한다.
명령어 처리 주기(Instruction Cycle)
CPU가 하나의 명령어를 처리하는 과정은 다음과 같이 반복된다.
인출(Fetch): 메모리상의 주소에서 명령어를 읽어 CPU 레지스터로 가져오는 단계
해독(Decode): 가져온 명령어가 어떤 동작을 요구하는지 제어 장치가 해석하는 단계
실행(Execute): 해석된 명령어에 따라 산술 논리 장치(ALU)가 연산하거나 데이터를 이동시키는 단계
저장(Store): 연산 결과를 레지스터나 메모리에 기록하는 단계
주요 레지스터
CPU 내부에서 데이터를 일시적으로 저장하는 초고속 메모리다.
PC
Program Counter
다음에 실행할 명령어의 메모리 주소를 저장
IR
Instruction Register
현재 실행 중인 명령어를 저장
MAR
Memory Address Register
읽거나 쓸 메모리의 주소를 저장
MDR
Memory Data Register
메모리에서 읽어온 데이터나 메모리에 쓸 데이터를 저장 (MBR이라고도 함)
AC
Accumulator
연산 결과를 일시적으로 저장하는 누산기
Program Counter(PC)
CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터로 다음에 실행할 명령을 메모리에서 찾아 주소를 알려주는 역할을 한다.
프로그램 카운터에는 다음 실행할 명령어의 주소가 존재
해당 주소에서 명령어를 가져옴
프로그램 카운터를 증가시켜 그 다음 실행할 명령어 주소 대입
가져온 명령어 실행
CPU 실행 상세 과정
제시된 시나리오(A=3, B=4, A+B 결과를 저장)를 바탕으로 명령어 단위별 레지스터 상태 변화를 정리하면 다음과 같다.
초기 상태
메모리 10번지:
3(A)메모리 11번지:
4(B)메모리 100번지:
LOAD 10메모리 101번지:
ADD 11메모리 102번지:
STORE 12PC: 100 (시작 지점)
1. LOAD 10 (메모리 10번지 값을 누산기로 적재)
인출
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번지 값을 더함)
인출
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번지에 저장)
인출
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