CPU Work(cpu 동작 방식)
함수 / 프로시저 / 서브루틴
코드를 재사용하는 주요 수단으로 중복된 코드를 줄여 코드가 차지하는 메모리를 절약할 수 있다. 프로그램에서의 함수를 호출하는 과정은 아래와 같다.
메인 함수에서 실행을 시작해 다른 함수를 호출
CPU가 메인 함수 코드를 수행하다가 다른 함수의 코드로 수행 위치 이동
이동 하기 전에 돌아와야 할 지점을 저장
호출한 함수로 이동해 그 함수의 내용을 실행하고 완료 후에 원래 호출 했던 위치로 복귀
컴퓨터 시스템 동작 개요
CPU는 매 순간(일정 주기에 의해 동작) 메모리에 특정 주소에 존재하는 명령을 하나씩 읽어와 실행하게되는데,
이 때 실행해야할 메모리 주소를 담고 있는 레지스터를 Program Counter
라고 하며, CPU는 매 번 프로그램 카운터가 가리키는 메모리 위치의 명령어만 수행한다.
Program Counter(PC)
CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터로 다음에 실행할 명령을 메모리에서 찾아 주소를 알려주는 역할을 한다.
프로그램 카운터에는 다음 실행할 명령어의 주소가 존재
해당 주소에서 명령어를 가져옴
프로그램 카운터를 증가시켜 그 다음 실행할 명령어 주소 대입
가져온 명령어 실행
레지스터
CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시저장소
빠른 속도가 장점
프로그램 카운터(Program Counter)
다음 번에 실행 될 명령어의 번지를 기억하는 레지스터, 명령어 포인터라고 부르는 CPU도 존재
명령어 레지스터(Instruction Register)
현재 실행중인 명령어의 내용을 기억하는 레지스터
누산기(Accumulator)
연산의 결과를 일시적으로 기억하는 레지스터
상태 레지스터(Program Status Word)
시스템 내부의 순간 상태가 기록된 정보를 저장하는 레지스터
메모리 주소 레지스터(Memory Address Register)
메모리 주소를 저장하는 레지스터
메모리 데이터 레지스터(Memory Data Register)
메모리와 주고 받을 값(데이터와 명령어)을 저장하는 레지스터, 메모리 버퍼 레레지스터라고도 부름
CPU 실행 과정
고수준 프로그래밍 언어
어셈블리 언어
기계어(예시)
메모리 상태
8
0
9
0
10
3
11
4
...
...
100
LOAD 10
101
ADD 11
102
STORE 12
103
0
제어 장치와 레지스터 상태
제어 장치
산술 논리 장치
프로그램 카운터
명령어 레지스터
메모리 주소 레지스터
메모리 데이터 레지스터
누산기
프로그램 카운터에 프로그램의 첫 번째 명령어의 주소 전달(프로그램 카운터에는 CPU가 실행 시켜야 할 다음 번 명령어 주소를 지니고 있음)
제어 장치
산술 논리 장치
프로그램 카운터
100
명령어 레지스터
메모리 주소 레지스터
메모리 데이터 레지스터
누산기
프로그램 카운터에 있는 주소를 메모리 주소 레지스터에 저장
제어 장치
산술 논리 장치
프로그램 카운터
100
명령어 레지스터
메모리 주소 레지스터
100
메모리 데이터 레지스터
누산기
메모리 주소 레지스터에 있는 주소에 접근해서 메모리 데이터 레지스터에 저장
제어 장치
산술 논리 장치
프로그램 카운터
100
명령어 레지스터
메모리 주소 레지스터
100
메모리 데이터 레지스터
LOAD 10
누산기
읽어 온 명령어를 명령어 레지스터로 저장
제어 장치
산술 논리 장치
프로그램 카운터
100
명령어 레지스터
LOAD 10
메모리 주소 레지스터
100
메모리 데이터 레지스터
LOAD 10
누산기
프로그램 카운터 1 증가
제어 장치
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
LOAD 10
메모리 주소 레지스터
100
메모리 데이터 레지스터
LOAD 10
누산기
명령어 레지스터에 있는 명령어를 제어장치에 이동 시켜 명령어 해독(Decode)
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
LOAD 10
메모리 주소 레지스터
100
메모리 데이터 레지스터
LOAD 10
누산기
제어장치에서 해독한 명령어를 해독해 메모리 주소 레지스터에 실행 할 메모리 주소를 저장
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
LOAD 10
메모리 주소 레지스터
10
메모리 데이터 레지스터
LOAD 10
누산기
메모리 데이터 레지스터에 주소에 있는 데이터를 저장
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
LOAD 10
메모리 주소 레지스터
10
메모리 데이터 레지스터
3
누산기
메모리 데이터 레지스터의 데이터를 누산기로 저장
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
LOAD 10
메모리 주소 레지스터
10
메모리 데이터 레지스터
3
누산기
3
명령어가 종료 됐으므로 프로그램 카운터에 있는 주소를 메모리 주소 레지스터에 전달
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
LOAD 10
메모리 주소 레지스터
101
메모리 데이터 레지스터
3
누산기
3
메모리 데이터 레지스터에 데이터 저장
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
LOAD 10
메모리 주소 레지스터
101
메모리 데이터 레지스터
ADD 11
누산기
3
명령어 레지스터로 전달
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
101
명령어 레지스터
ADD 11
메모리 주소 레지스터
101
메모리 데이터 레지스터
ADD 11
누산기
3
프로그램 카운터 1 증가
제어 장치
LOAD 10
산술 논리 장치
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
101
메모리 데이터 레지스터
ADD 11
누산기
3
명령어를 제어 장치로 전달 후 제어 장치가 명령어 해독
제어 장치
ADD 11
산술 논리 장치
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
101
메모리 데이터 레지스터
ADD 11
누산기
3
ADD 명령어를 수행하기 위해 누산기에 있는 데이터를 산술 논리 장치에 저장(ADD 명령어를 수행한다는 것은 누산기에 무엇인가 있겠다고 판단하여 해당 동작을 실행하는 것으로 보인다.)
제어 장치
ADD 11
산술 논리 장치
3
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
101
메모리 데이터 레지스터
ADD 11
누산기
3
메모리 주소 레지스터에 실행 할 주소 저장
제어 장치
ADD 11
산술 논리 장치
3
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
11
메모리 데이터 레지스터
ADD 11
누산기
3
메모리 데이터 레지스터에 주소의 메모리 저장
제어 장치
ADD 11
산술 논리 장치
3
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
11
메모리 데이터 레지스터
4
누산기
3
해당 데이터를 누산기로 저장
제어 장치
ADD 11
산술 논리 장치
3
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
11
메모리 데이터 레지스터
4
누산기
4
산술 논리 장치에 전달하여 기존에 있던 데이터를 합산
제어 장치
ADD 11
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
11
메모리 데이터 레지스터
4
누산기
4
다시 데이터를 누산기에 저장
제어 장치
ADD 11
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
11
메모리 데이터 레지스터
4
누산기
7
한 명령어가 종료 됐으므로 프로그램 카운터의 값을 메모리 주소 레지스터에 저장
제어 장치
ADD 11
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
102
메모리 데이터 레지스터
4
누산기
7
메모리 데이터 레지스터에 명령어를 저장
제어 장치
ADD 11
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
ADD 11
메모리 주소 레지스터
102
메모리 데이터 레지스터
STORE 12
누산기
7
명령어를 명령어 레지스터로 저장
제어 장치
ADD 11
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
STORE 12
메모리 주소 레지스터
102
메모리 데이터 레지스터
STORE 12
누산기
7
프로그램 카운터를 1증가, 하지만 메모리에 아무 것도 없으므로(0) 프로그램이 종료될 예정
제어 장치
ADD 11
산술 논리 장치
3+4=7
프로그램 카운터
103
명령어 레지스터
STORE 12
메모리 주소 레지스터
102
메모리 데이터 레지스터
STORE 12
누산기
7
명령어를 제어 장치에 전달
제어 장치
STORE 12
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
STORE 12
메모리 주소 레지스터
102
메모리 데이터 레지스터
STORE 12
누산기
7
메모리 주소 레지스터에 실행 할 주소 저장
제어 장치
STORE 12
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
STORE 12
메모리 주소 레지스터
12
메모리 데이터 레지스터
STORE 12
누산기
7
누산기의 데이터(계산 결과)를 메모리 데이터 레지스터에 저장
제어 장치
STORE 12
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
STORE 12
메모리 주소 레지스터
12
메모리 데이터 레지스터
7
누산기
7
저장 명령어이므로 메모리 데이터 레지스터의 값을 메모리에 저장
제어 장치
STORE 12
산술 논리 장치
3+4=7
프로그램 카운터
102
명령어 레지스터
STORE 12
메모리 주소 레지스터
12
메모리 데이터 레지스터
7
누산기
7
8
0
9
0
10
3
11
4
12
7
...
...
100
LOAD 10
101
ADD 11
102
STORE 12
103
0
참고자료
Last updated
Was this helpful?