의문점
CS에 대한 팀 스터디 첫 시간으로 컴퓨터의 구조와
컴퓨터를 구성하는 장치에 대해 간단히 공부해 보았는데
CPU에 대해 모르는 부분이 많았고, 동작 과정 또한
사실상 이번 학습을 통해 새로 알게 된 부분이 있어서
간단하게 정리할 내용을 작성해 볼까 한다.
CPU는 뭘까?
CPU: 메모리에 있는 데이터와 명령어를 가져와서
무슨 뜻인지 해석하고, 실행하는 일련의 과정을 반복하는 장치
| 구분 | 명칭 | 핵심 역할 |
|---|---|---|
| 제어장치 (CU) | Control Unit | 모든 장치에게 동작을 지시하는 장치 (각 장치들을 제어). |
| 산술논리장치 (ALU) | Arithmetic Logic Unit | 7 + 3과 같은 산술 연산이나 논리 연산을 실제로 수행함. |
| 레지스터 | Register | 임시 저장소. CPU 내부에서 데이터를 아주 빠르게 잠깐 저장하는 공간. |
| 주소 버스 | Address Bus | 위치 정보. CPU가 메모리의 어느 주소를 참조할지 전달함 (단방향: CPU → 메모리). |
| 데이터 버스 | Data Bus | 데이터 통로. 실제 명령어 정보나 연산에 필요한 숫자를 실어 나름 (양방향). |
| 제어 버스 | Control Bus | 상태 신호. "읽기", "쓰기"와 같이 현재 어떤 작업을 수행할지 신호를 보냄. |
CPU의 동작 과정
0. 준비 단계

주소 100번지: "7과 3을 더하라"는 명령어
제어장치(CU): 명령어 사이클을 관리
레지스터(PC): 현재 실행할 주소인 100을 가리킴
1. 명령어 인출

주소 전달: PC(프로그램 카운터)에 저장된 100이라는 주소가 MAR(메모리 주소 레지스터)로 복사된다.
주소 버스: MAR에 있는 100이라는 신호가
주소 버스를 타고 메모리로 전달된다.
"100번지 데이터를 찾으러 간다"는 의미
제어 버스: 제어장치가 제어 버스를 통해
메모리에 "읽기(Read)" 신호를 보낸다.

데이터 버스: 메모리는 100번지에 있던
명령어("7과 3을 더하라")를 데이터 버스에 실어 보낸다.
명령어 저장: 이 명령어는 CPU 내부의
MDR(메모리 데이터 레지스터)를 거쳐
IR(명령어 레지스터)에 저장된다.
2. 명령어 해석

해석: 제어장치가 명령어 레지스트에 있는 명령어를 분석.
준비: 제어장치는 산술논리장치에게 곧 더하기
연산 할 테니 준비하라고 신호를 보낸다.
3. 데이터 인출

명령어 안에 숫자 7과 3이 직접 들어있다면
밑의 단계는 생략 or 매우 빠르게 처리된다.
만약 7과 3이 메모리의 다른 번지에 있으면, 1단계의 인출과정을
똑같이 거쳐서 데이터 버스를 통해 숫자들을 가져와 CPU 내부의
범용 레지스터에 각각 저장한다.
(범용 레지스터: 말 그대로 특정한 목적없이 다양한 작업에 사용,
연산에 필요한 데이터, 주소, 중간 결과 등을 임시 보관)
(예: Register A = 7, Register B = 3)
4. 실행

값 전달: 레지스터에 저장된 7과 3이 산술논리장치로 들어간다.
연산 수행: 제어장치의 제어 신호에 따라
산술논리장치가 두 숫자를 더한다.
결과: 연산 결과인 10이 나오고, 이 값은 일시적으로
누산기 or 결과 레지스터에 저장된다.
5. 결과 저장
메모리 전송: 만약 결과를 메모리에 저장하라는 명령이면
다시 주소 버스에 저장할 주소를, 데이터 버스에 결과값인
10을 실어서 보낸다.
당연히 제어 버스에는 이 결과값을 쓰라는 쓰기 신호를 보낸다.
프로그램 카운터의 값이 101로 증가한다.
-> 다음 명령어를 읽을 준비를 마친 것이다.